2010年11月6日 星期六

Ubuntu warning: setlocale: LC_CTYPE: cannot change locale

今日發現使用Ubuntu Terminal 會一直出現下列警告訊息
使用版本: 10.04
 warning: setlocale: LC_CTYPE: cannot change locale (en_US)
最後求助google 大神才找到解決方法:


執行下列指令:
 $ sudo locale-gen en_US.UTF-8
 $ sudo update-locale LANG=en_US.UTF-8
就恢復正常。

參考:
locale problem threads on ubuntuforums

2010年8月5日 星期四

“語意” (Semantics) 與“程式設計”

最近重新看了 “語意”相關的資訊。
  清楚瞭解“語意” 在程式設計上非常重要。
  良好的語意可使程式:
  • 易於使用,不會被誤用
  • 易於維護,擴充
  • 提高程式碼重覆使用率
  • ...

例如:
今天寫了一個函式用來做計算,但給了一個不恰當的名稱,令人容易誤解。

int mysecret_fun(int a, int b)
{
    return a/b;
}

換成下列:


int divide(int dividend, int divisor)
{
    if (divisor == 0) {
         printf("error:divisor can not be zero.");
         return 0;
    }
    return dividend/divisor;

}


參考資訊:
http://en.wikipedia.org/wiki/Semantics
http://www.plsadventures.com/2010/02/what-are-semantics-of-your-favourite.html
http://boagworld.com/technology/semantic-code-what-why-how

2010年6月7日 星期一

存取Web Service Interface 使用 python SOAP 函式庫(1)


請先下載下列檔案


設定開發環境

  • 安裝 python-2.6.5.msi
  • 安裝 setuptools-0.6c11.win32-py2.6.exe
  • 安裝 python-suds-0.3.9.tar.gz

解壓縮 python-suds-0.3.9.tar.gz 到本機磁碟
Ex:
 C:\python-suds-0.3.9

cd  C:\python-suds-0.3.9
python setup.py install

2010年5月10日 星期一

Javascript 與 JSON 的範例


YAML 內嵌JSON 語法,故也可使用YAML 於 Javascript

  你可從此處得到相關資訊 http://yaml-javascript.sourceforge.net/


Javascript with JSON 




  


2010年4月21日 星期三

初探 YAML (1)

YAML的語法和其他高階語言類似,並且可以簡單表達清單、雜湊表,純量等資料形態。
因為其語言特性,可以讓人眼很容易且清楚的識別其資訊。


特色
  它使用空白符號縮排和大量依賴外觀的特色,特別適合用來表達或編輯

  • 資料結構
  • 各種設定檔
  • 傾印除錯內容
  • 文件大綱(例如:許多電子郵件標題格式和YAML非常接近)。
  • 儘管它比較適合用來表達階層式(hierarchical model)的資料結構,不過也有精緻的語法可以表示關聯性(relational model)的資料。
  • 由於YAML使用空白字元和分行來分隔資料,所以特別適用於script language (Ex: grepPythonPerlRuby)。
  • 其讓人最容易上手的特色是巧妙避開各種封閉符號 (EX: 引號、各種括號等,這些符號在巢狀結構時會變得複雜而難以辨認。
安裝:
2. 解壓至PyYMAL-3.09
3. cd PyYMAL-3.09
4. 執行下列指令
$ python setup.py install

範例:
# 筆者特別愛用 Python 來使用YAML. 因為資料結構可直接套用。
# yaml_test1.py
import yaml
document = """
  a: 1
  b:
    c: 3
    d: 4
"""
print yaml.dump(yaml.load(document))      
print yaml.dump({'name': "The Cloak 'Colluin'", 'depth': 5, 'rarity': 45, 'weight': 10, 'cost': 50000, 'flags': ['INT', 'WIS', 'SPEED', 'STEALTH']})
# end yaml_test1.py

$ python py_yaml_test.py 
a: 1
b: {c: 3, d: 4}

cost: 50000
depth: 5
flags: [INT, WIS, SPEED, STEALTH]
name: The Cloak 'Colluin'
rarity: 45
weight: 10




2010年4月3日 星期六

使用者介面自動化測試使用sikuli

MIT 的學生開發一個使用視窗截圖來代替程式碼的方法。
你可很容易使用它的圖形化介面來進行自動化的測試。
它可大幅簡化你重覆測試程式的時間。

例如: 

# jPython syntax
# 關閉 find 找不到圖示的錯誤

setThrowException(False)
# 設定搜尋圖示的時間 (ms)
setAutoWaitTimeout(3000)

# 找到桌面上的VIM的圖示

xs = find()
# 若圖示存在, 則以雙擊開啓
if xs:
    doubleClick(xs)

# 等待程式開啟到下列畫面
wait()
# 按'a' 進入編輯模式
type('a')
# 輸入'hello'
type('hello')
# 按ESC鍵, 回到命令模式
type(Key.ESC)
# 儲存檔案
type(':wq D:\hello.txt')
type(Key.ENTER)

以文字內容來看
# text openvim.py
setThrowException(False)
setAutoWaitTimeout(3000)
xs = find("1270226485109.png")
if xs:
  doubleClick(xs)
wait("1270227406546.png")
type('a')
type('hello')
type(Key.ESC)
type(':wq D:\hello.txt')
type(Key.ENTER)

Download
你可以從此處下載測試版:
http://groups.csail.mit.edu/uid/sikuli/

2010年3月15日 星期一

有效率 TCP/IP 程式設計

一本不錯的書,最近又重看Effective TCP/IP Programming。
此書提供44個提示來改進你的網路程式。

你可參考下列連結:
http://www.amazon.com/Effective-TCP-IP-Programming-Programs/dp/0201615894/ref=sr_1_1?ie=UTF8&s=books&qid=1268599171&sr=8-1

2010年2月20日 星期六

如何寫自己的作業系統使用開源軟體(一)?

此書中有描述了電腦的啟動及如何進入x86的保護模式。

非常有參考的價值。
你可從下列網址,下載電子書及範例檔。
http://code.google.com/p/writeos/downloads/list

2010年2月8日 星期一

在 MAC OS X中,使用msgget()

如果你使用 msgget() 函式時, 你必須清楚瞭解到預設值為40。
你可使用使用 'ipcs -q' 指令來查看目前message queue 的當前狀況。

假如沒有處理好使用完的queue之回收,你的msgget()將會回傳 ENOSPC錯誤
原文為 "message queue has to be created but the system limit for the maximum number of message queues would be exceeded"
意思是"已超過系統上限。"

你可使用 msqctl來移除未被正確移除的queue。

2010年2月4日 星期四

如何重設你的Mac OS X (Leopard)的密碼?

有時你可能忘記你系統密碼時,而你手邊卻沒有OS X 安裝 DVD. 我試了一下網路相關的資料,整理出下列步驟:


1.開機進入安全模式(single user mode) (請按 "Command-S"在開機之後,直到灰蘋果畫出現。)

2.Type fsck -fy

3.Type mount -uw /

4.Type launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServices.plist

5.Type dscl . -passwd /Users/username password

6.重新開機

請注意:
*這是一個利用安全漏洞的方法來重設密碼, 請確定你瞭解可能的風險再進這個步驟。
*如果你不希望任何人使用此方法登入你的電腦, 你可能必須結合使用File Vault, firmware password, 及外殼鎖。

2010年2月1日 星期一

影像擷取器(內含影片剪輯軟體)+VLC Player == 影音錄放機

源起,最近想在電腦上直接看MOD的節目,並儲存且編輯MOD節目。
去查一下,發現市面上UPMOST有出UPG306影像擷取器(編輯版),去敗了一個回來。
安裝之後,卻發現其內附的軟體,只適用於擷取及編輯,並不適合觀賞節目。
上網找了許多播放程式,都不能直接擷取裝置進行播放。
最後總算找到,那就是 VLC 一個強大的開放源碼的播放軟體。

  • 設定結果
記得一定要指定視訊大小(如352x240或640x40),否則下方會有奇怪的殘影。
另外,音訊裝置請設定為 Wdm 2863 Audio (此為UPG306驅動裝置名)。

之後,就可好好欣賞節目了。Enjoy!!!
(PS: 目前僅在Windows XP SP3 上測試過。)

2010年1月29日 星期五

How to connect VPN by Juniper Network Connect 6.0.0 on Snow Leopard 10.6.2?

Originally, I cannot connect VPN with Network 6.0.0 on Snow Leopard.

I’m working fine now on My Snow Leopard after following steps. (^.^)

1. remove the proxy settting
2. after I commanded the followings
sudo chmod 755 /usr/local/juniper/nc/6.0.0/
sudo mkdir '/Applications/Network Connect.app/Contents/Frameworks'
3. if you use the Network Connect 6.3.0, please remember to run following command
sudo chmod 4711 /usr/local/juniper/nc/6.0.0/ncproxyd

Issue for PAC

"Network Connect" is not supported the proxy configuration (Proxy Auto Config)
I found the root cause after I dug the logs of “Network Connect”.
reason = "Conversion to encoding 30 failed for string \"function FindProxyFo...\"";
“function FindProxyForURL(url, host)” is the function name in my PROXY.pac.

The ncproxyd seems to be not supported proxy configuration well.
I tried it without proxy setting via ADSL line. It worked well.

2010年1月28日 星期四

蘋果電腦硬體相關問題(1)使用nvram後,無法開機成功

有一次,曾遇到使用nvram 指令更改起動變數後,Leopard 10.5.8 無法正常開機。
只能使用[Command + Shift)進入保護模式。
開機使用偵錯模式,發現Mac 的驅動程式發生載入錯誤。

後來,聯絡Apple computer 的技術支援,回覆是先試用下列說明
 
重設Mac's PRAM and NVRAM
http://support.apple.com/kb/HT1379


(PS: 更換了Mac 的硬體後,也有可能發生。不妨試試這個方法。)

2010年1月27日 星期三

Jserv's CURT v1 ARM 精簡作業系統

以下是我設定作業環境來編繹CURT v1的心得 (rework 2011-04-14)


 A.編繹程式

1. 下載工具
 a. 原 Toolchain for CURT v1


 b. gcc 4.4.1 for  by cyt93cs 



2. 安裝工具 (from sourceryg)
$ md5sum sourceryg++-4.4-93-arm-none-linux-gnueabi.bin
e9b81d6288c29f992f4af3d7c1cbddda sourceryg++-4.4-93-arm-none-linux-gnueabi.bin
$ ./sourceryg++-4.4-93-arm-none-linux-gnueabi.bin
The installer has detected that your system uses the dash shell
as /bin/sh. This shell is not supported by the installer.

You can work around this problem by changing /bin/sh to be a
symbolic link to a supported shell such as bash.

For example, on Ubuntu systems, execute this shell command:
% sudo dpkg-reconfigure -plow dash

Install as /bin/sh? No

3. 接著回到X-window 啟動Sourcery整合作業環境
輸入從codesourcery所申請的試用 license

B. 環境設定

1. 重設一下shell 的執行環境
sudo dpkg-reconfigure -plow dash

2. 安裝qemu-arm-static, qemu-kvm-extras
使用ubuntu 內建的 Synaptic 安裝檔案管理員來進行安裝

 
3. 設定toolchain 所在位置
PATH="/opt/CodeSourcery/sourcery_G++/bin:${PATH}"
export PATH
可由此下載原始碼 (http://blog.linux.org.tw/~jserv/archives/002082.html)
感謝 Jserv 的資訊 http://code.google.com/p/curt-v1-rework/ 主要進一些修改several patches were landed.

C. 編繹 CURT v1
1. 解壓縮程式碼 curt-src-v1.tar.bz2

2. 修正程式碼 device/serial.c第39行 有toolchain 相容問題如下:
if (!xxx && 0x00000040)
correct it to
if ((!xxx) && 0x00000040)

3.編繹
$ cd CuRT_v1/app/shell
$ make
~/CuRT_v1/app/shell$ ./prepare-flash
16384+0 records in
16384+0 records out
16777216 bytes (17 MB) copied, 0.0454887 s, 369 MB/s
16+1 records in
16+1 records out
16980 bytes (17 kB) copied, 4.0371e-05 s, 421 MB/s

D. 執行

~/CuRT_v1/app/shell$ ./run-on-connex
 
 
 
備註:記得要在X-Window 下開啟終端機,才能正確執行qemu-system-arm.

 
參考資料

http://sites.google.com/site/embedded2009/introduction-to-curt-v1
http://blog.linux.org.tw/~jserv/archives/002082.html
http://code.google.com/p/curt-v1-rework/

更新2011-09-18:
 - 其他同好網友文章:CuRT porting到x86成功

更新2012-04-01 相關文章連結
 - http://ccckmit.wikidot.com/os:curtos

2010年1月25日 星期一

在蘋果電腦上執行 qemu (MAC OS X)

QEMU 為一開放源始碼的虛擬機器模擬器。

若是使用Snow leopard(MAC OS X 1.0) 以上的網友可考慮使用, homebrew.
   ==>請參考 把常用的UNIX 環境重建到MAC OS X 一文

如尚未安裝Darwin Ports, 請至  http://www.macports.org/  下載符合系統的版本進行安裝。


接著你可執行port 安裝qemu,過程如下述:
$ sudo port install qemu

Password:

You will then be prompted for your root password, which you should enter. You may have to wait for a few minutes while the software is retrieved from the network and installed for you. Y ou should see something that looks similar to:

---> Fetching qemu
---> Verifying checksum for qemu
---> Extracting qemu
---> Configuring qemu
---> Building qemu with target all
---> Staging qemu into destroot
---> Installing qemu

(註:當上述指令執行中,請勿關閉終端機(Terminal)。)
安裝完成後,你可用下述指令得到qemu 更詳細的資訊
$ man qemu
$ apropos qemu
$ which qemu
$ locate qemu

預設安裝好qemu, 並不包含 arm 的執行檔
若需要其他的處理器(processors)的支援可用下述指令進行安裝:

$ sudo port install +target_arm qemu

你可用 sudo port variants qemu 查詢可能目標處理器支援。
範例如下:
VMLeopard:~ ben$ port variants qemu

qemu has the variants:
target_arm: add arm target support
target_cris: add cris target support
target_m68k: add m68k target support
target_mips: add mips target support
target_mips64: add mips64 target support
target_mips64el: add mips64el target support
target_mipsel: add mipsel target support
target_ppcemb: add ppcemb target support
target_sh4: add sh4 target support
target_sh4eb: add sh4eb target support
target_sparc: add sparc target support
universal: Build for multiple architectures

參考資訊

2010年1月24日 星期日

User Mode Linux - CoLinux on Windows 使用心得

之前, 我習慣使用 VMWARE來執行 Ubuntu 或 Fedora來做。
也曾聽過 User Mode Linux, 但一直沒有玩看看。

最近稍微實驗了一下, Win32 平台的 coLinux (Cooperative Linux) 果然很容易使用!!!

分別下載 coLinux-0.7.5.exe 及 WinPcap_4_1_1.exe
因為 coLinux 使用 WinPcap來實現網路功能,  故需要個別安裝 WinPcap
另外需要下載FileSystem image, 我下載了 Ubuntu-9.04-1gb.7z

看了一下操作說明, 將 coLinux 安裝至 C:\coLinux,
且解壓Ubuntu-9.04-1gb.7z 中Ubuntu-9.04.ext3.1gb.fs 到同一目錄。

我建立一個命令批次檔 C:\coLinux\run_ubuntu.bat
 內容如下:
cmd /K "colinux-daemon kernel=vmlinux initrd=initrd.gz cobd0=Ubuntu-9.04.ext3.1gb.fs eth0=slirp root=/dev/cobd0"
 
執行後
 


接著執行C:\coLinux\colinux-console-nt.exe
 

緊接著在colinux login: 輸入 root 及密碼也是root
 
最後我完成一個精簡的User Mode Linux 的 Ubuntu 環境。

  • 其他可供參考內容, 使用 linux 環境
Jserv 演講:User-Mode Linux 應用簡介
http://blog.linux.org.tw/~jserv/archives/001871.html