2013年6月17日 星期一

VirtualBox共用資料夾for Ubuntu

要讓VirtualBox(免費軟體)裡的Ubuntu可以存取Windows上的資料夾,
可以透過VirtualBox的共用資料夾來達成.
首先須先安裝VirtualBox的Additions.
底下是開啟VirtualBox Ubuntu OS, 無縫模式(很方便操作Windows與VirtualBox視窗),
可以在底下的toolbar看到.
跳出光碟選項, 選擇Autorun.
Run~
正在安裝.
設定VirtualBox共用資料夾.



在Ubuntu上掛載它吧~
先建一個work的目錄,
將共用資料夾掛載到work上~
哈哈, 看到它了~ YA!!!

讓Virtual Box可連線上網

簡單選擇Virtual Box NAT網卡設定
Virtual Box OS網路會自動獲得IP
透由NB Wi-Fi上網
瀏覽Google

煩, 又要重灌電腦. 我的電腦必裝軟體~

首先要先裝的當然是~~~ 作業系統啦! 哈!!!

雖然現在Linux介面也做得很不錯, 不過還是不習慣.
64bits OS現在好像很流行, 每台筆電都搶著搭, 不過好多軟體都不能用, 尤其工作用的.
所以還是裝了大家常用的windows 7 x86版本(32位元).
而且現在買筆腦好煩, 都買不到不含OS的, 所以自然而然OS就是windows 7正版啦! 哈哈!
(難道我不能選擇自己要用的OS =.=|||)

Windows 7

OS安裝了, 驅動程式也安裝完畢, 再來要安裝什麼呢?
Office? 不對!!! 瀏覽器? 不對!!!
當然是安裝防毒軟體啦!
在這動不動就中毒的世界, 當然不希望剛裝好OS就中毒吧!
就算沒有因為中毒而口吐白沫, 也會因為一直再重安裝而翻白眼吧! 哈!!!
不過要裝防毒, 當然要裝能定期自動更新病毒碼的囉!

雖然用過頗有名氣的小紅傘, 不過常常會跳出廣告視窗, 煩人啊!!! 不過免費的, 沒資格抱怨:)

小紅傘 下載

後來用了不會跳廣告的AVG, 雖然不錯用, 但是下載要輸入e-mail而且還是有使用期限的.

AVG 下載

最後覺得麻煩, 裝了微軟提供的防毒了.
純粹是因為免費, 無使用期限, 可定時更新病毒碼.
雖然會驗證作業系統是否為正版, 不過現在筆電也很難買到不含作業系統的了=.=

Microsoft Security Essentials 下載

再來就是安裝Office啦!

雖然有免費的Office, 但是與微軟的相容性還是有問題啊!!! 好可惜!!!
工作常用到, 所以還是放棄吧!

OpenOffice 下載

工作所需, 想辦法弄到微軟的Office吧! 當然當然要是正版的啦:)P
裝上最新版的Office 2010囉!

Office 2010

完成了, 上Windows Update更新一番吧! 唉! 裝到現在已經過好久了~
人生就是該浪費在一次又一次的重新安裝上. (天啊! 有誰能拯救我啊!)

好了, 不要再廢話了, 還是趕快把電腦用的軟體, 裝一裝:)

商業軟體聯盟(BSA)又開始查緝盜版了, 連電視都在廣告了.
我沒用盜版唷沒用唷!!!
還好現在有很多的免費軟體:)
不然都用正版, 就等於每天捧幾十萬的東西在身邊! 要是掉了, 就哭了!!!

瀏覽器 (要上網下載軟體, 當然要先有瀏覽器啦!)

IE8 (幾乎所有網頁都能上, 但是...)

Opera 下載 (自己喜歡用, 但是怎麼沒有繁體中文官網@@, 爭取繁體中文啦!)


Chrome 下載 (聽說是地表最速) 

Firefox 下載 (開放, 很多好用工具)

解壓縮軟體 (很多軟體下載下來都是壓縮檔, 當然要先裝解壓縮軟體囉!)

7-Zip 下載

虛擬光碟 (現在薄型筆電都沒有內建光碟, 使用ISO檔真方便)

Daemon 下載 (沒有繁體中文官網啦@@)


Virtual CloneDrive 下載

燒錄軟體 (將光碟轉成ISO來用吧!!!)

InfraRecorder 下載

讀Pdf檔

Adobe Reader 下載

轉Pdf檔

BullzipPDFPrinter 下載

常常要寫程式, 最習慣的還是UltraEdit, 可是要錢的啊!
公司有買, 不過自己還是用免費的囉!

Notepad++ 下載 (不錯用, 可是聽說不能另存成其他編碼)

PSPad 下載 (自己用的軟體)


gedit 下載 (Linux上有名的軟體)
 

比較資料夾與檔案

DiffMerge 下載

多媒體編解碼

K-Lite Codec Pack 下載

播放器

KMPlayer 下載


MPC-HC 下載 (輕量播放器)
 

轉碼軟體

Format Factory 下載

看圖軟體

FastStone Image Viewer 下載

繪圖軟體

GIMP 下載

檔案總管 (左右兩個視窗, 方便的搜尋功能)

FreeCommander 下載

Windows Live Messenger

Messenger 下載

FTP下載

FileZilla 下載

PPS (看網路電視, 電影???)

PPS 下載

虛擬機器 (需要安裝測試其他的OS嗎^^)

VirtualBox 下載

執行簡體程式

AppLocale 下載

Gavotte RAMDisk (32位元的OS不能使用到4GB的RAM啦! 多的只好拿來當虛擬記憶體囉!)

RAMDisk 下載

清理作業系統

CCleaner 下載

硬碟重組

Defraggler 下載

軟體移除工具

Software Removal Tool 下載

不習慣用備份軟體, 因為常常還原後, 某些軟體執行都會怪怪的, 總是會發生些問題.
也不習慣壓縮備份資料. 反正現在硬碟也不會太貴, 用了兩顆硬碟,
一顆備份電腦資料, 另一顆做第二備份, 以便貴重資料遺失~


備份很重要的, 之前朋友的硬碟掛了, 裡面都是小孩子珍貴的照片~
幫朋友花了好多時間, 試了幾款軟體, 還好大部分都救回來了...
不然不只我朋友難過, 他老婆也會哭吧!!! 備份很重要的~

好用的檔案總管FreeCommander

一直覺得windows自帶的檔案總管有很多不方便的地方~
後來找到FreeCommander, 好用, 已經用得很習慣了~
FreeCommander 下載
  1. 可以左右視窗對照, 比較資料夾, 移動跟複製.
  2. 很好用的搜尋功能, 而且也很快速.
  3. 可以設定網路磁碟, 及FTP資料夾.
  4. 壓縮相關工具.
  5. 截圖工具.
我最常用的是資料夾比對, 搬移, 網路磁碟, FTP及搜尋, 搜尋真的比windows自帶的好用多了~

Virtual Box透由固定IP連線

簡單設定Virtual Box為橋接至NB網卡
設定Virtual Box OS網路固定IP
設定NB網卡為固定IP

Virtual Box透由網路芳鄰分享檔案

簡單設定Virtual Box網路為僅限主機介面卡
分享Ubuntu資料夾
在NB存取Ubuntu分享的資料夾


2013年6月14日 星期五

Change Keyboard Layout

適用於 Windows Embedded CE 5.0 / 4.2

參考 Microsoft MSDN

http://msdn.microsoft.com/en-us/library/aa924326.aspx

實現步驟:

1. 使用 kbdgen KBDGR.dll -o dvorak -i 00000407 產生 dvorakIL.cpp, dvorakDL.cpp和dvorak.reg 檔案.

2. 建立 WINCEROOT\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\INPUTLANGS\0407 資料夾.

3. 將 0409 資料夾底下的檔案複製到 0407 (InputLang_0409.cpp 不需複製).

4. 將 dvorakIL.cpp 名稱改成 il_0407.cpp 並複製至 0407 資料夾.

5. 更改 sources 檔案內容. (TARGETNAME=InputLang_0407, SOURCES=il_0407.cpp).

6. 將 0407 加入至 WINCEROOT\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\INPUTLANGS\DIRS 檔案.

7. Rebuild driver 並將產生的檔案拷貝至 release 目錄.

8. 建立 WINCEROOT\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\DEVICELAYOUTS\PS2_AT\00000407 資料夾.

9. 將 00000409 資料夾底下的檔案複製到 00000407 (ps2_at_00000409.cpp 不需複製).

10. 將 dvorakDL.cpp 名稱改成 ps2_at_00000407.cpp 並複製至 00000407 資料夾.

11. 更改 sources 檔案內容. (TARGETNAME= PS2_AT_00000407, SOURCES= PS2_AT_00000407.cpp).

12. 將 00000407 加入至 WINCEROOT\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\DEVICELAYOUTS\PS_AT\
DIRS 檔案.

13. Rebuild driver 並將產生的檔案拷貝至 release 目錄.

14. 將 kbdus.def 名稱改成 kbdv.def 並複製至 WINCEROOT\PUBLIC\COMMON\OAK\INC 資料夾.

15. 更改 kbdv.def 檔案內容. (IL_00000407, PS_AT_00000407).

16. 更改 WINCEROOT\PLATFORM\EMULATOR\DRIVERS\KBDMOUSE\DLL\KBDEMULXTMSENGUS1\sources 檔案
內容.
DEFFILE=...................................Kbdv.def
SOURCELIBS=\
..............PS_AT_00000407.lib
..............InputLang_0407.lib

17. Rebuild driver 並將產生的檔案拷貝至 release 目錄.

18. 增加下面的 key 至 keybd.reg 檔案並將之拷貝至 release 目錄.
#elif $(LOCALE)==0409
"Keyboard Type"=dword:4
"Keyboard SubType"=dword:0
"Keyboard Function Keys"=dword:c
"Keyboard Layout"="00000407"

19. 增加下面的 key 至 laymgr.reg 檔案並將之拷貝至 release 目錄.
#elif $(LOCALE)==0409
#define input_locale 00000407
#define input_locale_text "US"

20. Make OS image, download and test.

Disable WinCE5.0 Fatal Error Dialog

參考Windows CE Base Team Blog Replacing a COREDLL component in CE 6.0

1. 建立取代原fatal error的library.

Type: Library Name: showerr

Code:

 extern "C" BOOL ShowErrThrd(DWORD dwExcpCode, DWORD dwExcpAddr)
{
    // TODO: Place code here.

   RETAILMSG(1, (TEXT("***A PROCESS CRASHED***\r\n")));

   MessageBox(NULL, L"Program Error", L"MsgBox", MB_OK);

   return 0;
}

 使用新的ShowErrThrd替代舊的ShowErrThrd function

2. 建立測試程式, 驗證是否成功disable fatal error dialog.

Code:

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
    // TODO: Place code here.
   RETAILMSG(1, (TEXT("CRASHER!\r\n")));

   /* crash here by writting 0 to NULL */
   *((unsigned long *)NULL) = 0;

   return 0;
}

3. Replace showerr.lib.

原WinCE5.0 project增加下列的動作:

Platform|Settings…|Custom Build Actions|Pre-Sysgen|

New Custom Build action輸入
%_PROJECTROOT%\..\..\mytest_showerr\presysgen.cmd

presysgen.cmd內容為:

@echo off

pushd %_PROJECTROOT%
md oak
pushd %_PROJECTROOT%\oak
md lib
pushd %_PROJECTROOT%\oak\lib
md %_TGTCPU%
pushd %_PROJECTROOT%\oak\lib\%_TGTCPU%
md %WINCEDEBUG%
pushd %_PROJECTROOT%\..\..\showerr
build -c
pushd obj\%_TGTCPU%\%WINCEDEBUG%
copy *.* %_PROJECTROOT%\oak\lib\%_TGTCPU%\%WINCEDEBUG%\*.*
popd

4. 重新Sysgen WinCE5.0 project, 成功改變原fatal error function到自己的function.

Windows Message Registrys

適用於 Windows Embedded CE 6.0

Windows Message setting Registrys.

參考MSDN.

http://msdn.microsoft.com/en-us/library/aa909278.aspx

DRM Testing

適用於 Windows Embedded CE 6.0

測試環境
SiRF Prima + CE 6 + DRM10 + 3G + USB ActiveSync

將DRM加入OS IMAGE內:
1. Add DRM components into OS Image.

Modify platform.reg file:
Add following

[HKEY_LOCAL_MACHINE\Software\Microsoft\WMDRMPD]
   "CertTemplatePath"="\\Windows\\"
   "CertPath"="\\ Windows \\"
[HKEY_LOCAL_MACHINE\Software\Microsoft\DRM]
   "DataPath"="\\ Windows \\drmstore.dat"

Modify platform.bib file:
Add following

MODULES
Wmdrm10pd.dll $(_FLATRELEASEDIR)\wmdrm10pd.dll NK SHD
FILES
devcerttemplate.dat $(_FLATRELEASEDIR)\devcerttemplate.dat NK SH
wmdrmpd.dat $(_FLATRELEASEDIR)\wmdrmpd.dat NK SH

測試: DLA (CE device透由USB ActiveSync連PC上網後, 透由網路測試DRM content).
1. PC與CE透由ActiveSync連線.
2. CE透由PC網路連上網站"wmtap.smdisp.net/janus/"並download DRM content.
3. CE播放DRM CONTENT時會連上網路ACQUIRING DRM LICENSE.
4. CE端可正常取得DRM LICENSE且播放.

測試: ILA (PC端連網download DRM content且已可在PC端播放後, 再透由Media Player Sync至CE上播放且CE device端沒有網路連線).
1. PC端: 已DOWNLOAD DRM CONTENT, 但尚未連線網路做DRM認證, 所以PC端無法播放此CONTENT.
2. PC端透由3G連上網路.
3. PC端播放DRM CONTENT時ACQUIRING DRM LICENSE.
4. PC端將網路功能移除, 斷線.
5. PC與CE 透由USB ACTIVESYC連線.
6. PC端透由MEDIA PLAYER將已可播放之DRM CONTENT SYNC至CE端.
7. CE端將ActiveSync移除後(亦即此時CE端已沒有任何網路連線能力), 仍可播放DRM CONTENT.

使用SNTP同步時間

適用於 Windows Embedded CE 6.0 / 5.0 / 4.2

1. 確定有連上網路.

2. Registry請先設為,
[HKEY_LOCAL_MACHINE\Services\TIMESVC]
"Dll"="timesvc.dll"
"Order"=dword:99
"Keep"=dword:1
"Prefix"="NTP"
"Index"=dword:0

[HKEY_LOCAL_MACHINE\Services\TIMESVC]
"server"=multi_sz:"tock.usno.navy.mil","time.windows.com"
"AutoUpdate"=dword:1
"ServerRole"=dword:1
"refresh"=dword:48190800
"recoveryrefresh"=dword:1B7740
"threshold"=dword:5265C00
"trustlocalclock"=dword:0

3. Code的寫法,
DWORD dwState = 0;
DWORD dwerr = 0;
WCHAR szControl[]=L"Sync";
DWORD dwLen=sizeof(szControl);
HANDLE hNTP=CreateFile(TEXT("NTP0:"),GENERIC_READ|GENERIC_WRITE, 0,NULL,OPEN_EXISTING,0,NULL);

if(hNTP == INVALID_HANDLE_VALUE)
{
_tprintf(TEXT("Open fail.\r\n"));
return 1;
}

_tprintf(TEXT("Open success.\r\n"));

if(!DeviceIoControl(hNTP, IOCTL_SERVICE_STOP, NULL, 0, NULL, 0, NULL, NULL))
{
dwerr = GetLastError();
_tprintf(TEXT("Error code is %d\r\n"), dwerr);
}

if(!DeviceIoControl(hNTP, IOCTL_SERVICE_STATUS, NULL, 0, &dwState, sizeof(DWORD), NULL,NULL))
{
dwerr = GetLastError();
_tprintf(TEXT("Error code is %d\r\n"), dwerr);
}

switch(dwState)
{
case 0:
_tprintf(TEXT("SERVICE_STATE_OFF\r\n"));
break;

case 1:
_tprintf(TEXT("SERVICE_STATE_ON\r\n"));
break;

case 2:
_tprintf(TEXT("SERVICE_STATE_STARTING_UP\r\n"));
break;

case 3:
_tprintf(TEXT("SERVICE_STATE_SHUTTING_DOWN\r\n"));
break;

case 4:
_tprintf(TEXT("SERVICE_STATE_UNLOADING\r\n"));
break;

case 5:
_tprintf(TEXT("SERVICE_STATE_UNINITIALIZED\r\n"));
break;

default:
_tprintf(TEXT("SERVICE_STATE_UNKNOWN\r\n"));
}

if(!DeviceIoControl(hNTP, IOCTL_SERVICE_START, NULL, 0, NULL, 0, NULL, NULL))
{
dwerr = GetLastError();
_tprintf(TEXT("Error code is %d\r\n"), dwerr);
}

if(!DeviceIoControl(hNTP, IOCTL_SERVICE_STATUS, NULL, 0, &dwState, sizeof(DWORD), NULL,NULL))
{
dwerr = GetLastError();
_tprintf(TEXT("Error code is %d\r\n"), dwerr);
}

switch(dwState)
{
case 0:
_tprintf(TEXT("SERVICE_STATE_OFF\r\n"));
break;

case 1:
_tprintf(TEXT("SERVICE_STATE_ON\r\n"));
break;

case 2:
_tprintf(TEXT("SERVICE_STATE_STARTING_UP\r\n"));
break;

case 3:
_tprintf(TEXT("SERVICE_STATE_SHUTTING_DOWN\r\n"));
break;

case 4:
_tprintf(TEXT("SERVICE_STATE_UNLOADING\r\n"));
break;

case 5:
_tprintf(TEXT("SERVICE_STATE_UNINITIALIZED\r\n"));
break;

default:
_tprintf(TEXT("SERVICE_STATE_UNKNOWN\r\n"));
}

if(!DeviceIoControl(hNTP, IOCTL_SERVICE_CONTROL, szControl, dwLen, NULL, 0, NULL, NULL))
{
dwerr = GetLastError();
_tprintf(TEXT("Error code is %d\r\n"), dwerr);
}
else
{
_tprintf(TEXT("Update success\r\n"));
}

if (!DeviceIoControl(hNTP, IOCTL_SERVICE_REFRESH, NULL, 0, NULL, 0, NULL, NULL))
{
dwerr = GetLastError();
_tprintf(TEXT("Error code is %d\r\n"), dwerr);
}
else
{
_tprintf(TEXT("Refresh success\r\n"));
}

CloseHandle(hNTP);
}
return 0;

How to access Hardware in WinCE6.0

由於WinCE6.0將driver放入kernel mode,不像WinCE5.0 driver及application都在 user mode執行,Application很容易就可以直接存取硬體。

WinCE6.0 application在存取上硬體上有先天的限制。

但是我們可以利用IO Control code, 透過這API呼叫kernel mode的driver,讓driver協助我們存取硬體。

我們可以利用BIB及REG檔讓driver載入至kernel mode。 但假使我們不是OS開發商,無法透由此方式載入呢?

我們可以透由API達到相同的功能。

 static BOOL loadDriver(void)
{
    HKEY hkResult;
    DWORD value;

    // 新增driver的registry key
    RegCreateKeyEx(HKEY_LOCAL_MACHINE, REG_PATH, 0, NULL, REG_OPTION_VOLATILE, 0, NULL, &hkResult, NULL);
    RegSetValueEx(hkResult, TEXT("Dll"), 0, REG_SZ, (const PBYTE)TEXT("SampleDriver.dll"), sizeof(TEXT("SampleDriver.dll")));
    RegSetValueEx(hkResult, TEXT("Prefix"), 0, REG_SZ, (const PBYTE)TEXT("SPD"), sizeof(TEXT("SPD")));
    value = 0x00;
    RegSetValueEx(hkResult, TEXT("Index"), 0, REG_DWORD, (const PBYTE)&value, sizeof(DWORD));

    // 將driver載入
    hdrv = ActivateDeviceEx(REG_PATH, NULL, 0, NULL);

    // Open driver來使用
    handle = CreateFile(
                        TEXT("SPD0:"),                                      // Pointer to the name of the port
                        GENERIC_READ | GENERIC_WRITE, // Access (read-write) mode
                        0,                                                           // Share mode
                        NULL,                                                    // Pointer to the security attribute
                        OPEN_EXISTING,                        // How to open the serial port
                        0,                                                    // Port attributes
                        NULL
                       );                                                      // Handle to port with attribute to copy

    if(handle == INVALID_HANDLE_VALUE)
    {
        RETAILMSG(1, (TEXT("Open sample driver fail!\r\n")));
        return FALSE;
    }

    RETAILMSG(1, (TEXT("Open sample driver success!\r\n")));

    return TRUE;
}

How to autorun program in WinCE

1. 在$(_WINCEROOT)\PLATFORM\BSP\FILES\PLATFORM.BIB檔案內加入
    FILES
    program_name.exe     $(_FLATRELEASEDIR)\program_name.exe      NK S

    在platform.dat檔案內加入
    Directory("\Windows\StartUp"):-File("program_name.exe","\Windows\program_name.exe")



2. 在$(_WINCEROOT)\PLATFORM\BSP\FILES\PLATFORM.BIB檔案內加入
    program_name.exe     $(_FLATRELEASEDIR)\program_name.exe      NK S

    在Platform.reg檔案內加入
    [HKEY_LOCAL_MACHINE\init]
       "Launchxx"="Touch_Cal.exe"
       "Dependxx"=hex:1e,00
       ; xx為40或80皆可, 也可測試其他數值.

How to autorun program when plug-in SD card on WinCE

1. 使用 notification API 製作呼叫程式,用來註冊當 SD card 插入時,要執行的程式。
    #include Notify.h
    void wmain(void)
    {
       // 預計執行的程式
       CeRunAppAtEvent(_T("\\windows\\peghelp.exe");
       // card detect even
       NOTIFICATION_EVENT_DEVICE_CHANGE);
    }
2. 當系統開機時執行此程式,用於註冊notification event。
3. 當插入SD card後,OS將自動執行"peghelp.exe"。

P.S. 此方式不適用於自動執行位於SD card內的程式。
       因為執行程式的動作會在將SD card mount到file system之前。

Stop IE scale Image function in WinCE

設定下面的registry key,
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
   Name: Enable AutoImageResize
   Type: REG_SZ (String Value)
   Value: Yes or No
P.S. 假如加入TV style component要修改TV style registry。

PDF Viewer Error in WinCE4.2

安裝QFE "Q326241"修正此問題。

How to save cookie in WinCE

設定底下的registry key,
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
   預設路徑為"Windows\Profiles\Guest\Cookies"

Set IE Home Page in WinCE

設定其下的registry key,
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]   
   "Start Page"="http://www.msn.com"   ; 以MSN Web Page做為首頁

Linux測試storage

lmbench

lmdd - move io for performance and debugging tests
copies a specified input file to a specified output with possible conversions. This program is primarily useful for timing I/O since it prints out the timing statistics after completing.

OPTIONS



if=nam
Input file is taken from nameinternal is the default. internal is a special file that acts like Sun's /dev/zero, i.e., it provides a buffer of zeros without doing a system call to get them.

The following file names are taken to mean the standard input: -0, or stdin.
of=nam
Output file is taken from nameinternal is the default. internal is a special file that acts like /dev/null, without doing a system call to get rid of the data.

The following file names are taken to mean the standard output: -1, or stdout.

The following file names are taken to mean the standard error: 2, or stderr.
bs=
Input and output block size n bytes (default 8192). Note that this is different from dd(1), it has a 512 byte default. Also note that the block size can be followed by 'k' or 'm' to indicate kilo bytes (*1024) or megabytes (*1024*1024), respectively.
fsync=
If n is non-zero, call fsync(2) on the output file before exiting or printing timing statistics.
count=
Copy only n"" input records.

lmdd of=internal if=/media/sda1/test count=50000
lmdd if=internal of=/media/sda1/test count=50000 fsync=1

Linux建置TFTP Server

  1. mkdir /tftpboot
  2. vi /etc/xinetd.d/tftp
    service tftp
    {
    socket_type = dgram
            protocol = udp
    wait = yes
    user = root
    server = /usr/sbin/in.tftpd
    server_args = -s /tftpboot
    disable = no
    per_source = 11
    cps = 100 2
    flags = IPv4
    }
  3. vi /etc/inetd.conf
    #tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd
  4. /etc/init.d/xinetd restart

Mac OS X 10.7 SAMBA 傳輸速度慢

參考了這個網頁,怎麼解決Mac OS X 10.7 SAMBA伺服過慢的問題?
才知道原來Apple針對SAMBA做了修改呀 ><

2013年6月10日 星期一

如何增加程式捷徑到lubuntu LXPanel的Available Applications裡

cd /usr/share/applications
新增.desktop檔案,如test.desktop
編輯test.desktop檔案,如下:

[Desktop Entry]
Name=test
Comment=test
Exec=/opt/test
Icon=serpentine
Terminal=false
Type=Application
Encoding=UTF-8
Categories=GTK;Utility;

然後可以在Accessories裡看到test

可參考其他.desktop檔案的寫法

也可放置在~/.local/share/applications/

在lubuntu上安裝Flash Plug-in

sudo apt-get install flashplugin-installer

在lubuntu上安裝Skype,發現Skype Chat Title Bar不見了

       今天在lubuntu上安裝Skype,想跟朋友聊天,發現Chat的title bar不見了,連移視窗位置都不行,在網上也找不到什麼好方法。
     
       結果在底下的工具列透過滑鼠右鍵,將Chat window放到最大,title bar就出現了。難不成要放到最大來聊天 ><

       好在透過右鍵按resize,重新拖拉大小與位置,有紀錄起來新的位置,再重開chat就正常了,還好還好,Lucky ^^