星期一, 十月 11, 2010

教我姊機率~ probabiliy density function

姊:「為什麼從discrete變成continuous之後,機率函數就變成機率密度函數?」

我:「因為pdf ( probabiliy density function )是由 cumulative probility function 微分而得到的… 」

姊:「我把微積分忘光了呃。」

我:「好吧。想象,現在有一個球,球質量是十公斤,如果球是均勻質量,你就可以說,球的質心位於球的中心,且,重量是十公斤,質心這個點是 十公斤的質量。 ----> 這就是discrtete的描述。
然而,如果我問你,在這個球內部的某一個點(很小一塊體積的點)真實的質量是多少? 你是無法回答的,因為,除非我告訴你,這個點,它佔有的體積有多少,否則你無法算出這個點含有的質量。 -----> 這就是continuous的描述。 probability density function 就像這個case的密度。 」

星期五, 十月 08, 2010

轉換subnet mask的程式 => ipcalc

寫網路程式時,常常要處理和ip address有關的issue。這時候,遇到255.255.255.255 = 32的Mask還好,但是如果是IP address/31 或是 IP address/30呢?

還好,我找到了一個很好用的程式: ipcalc
ipcalc 192.168.0.1/24

下頭是輸出
Address: 192.168.0.1 11000000.10101000.00000000. 00000001
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.0.0/24 11000000.10101000.00000000. 00000000
HostMin: 192.168.0.1 11000000.10101000.00000000. 00000001
HostMax: 192.168.0.254 11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255 11000000.10101000.00000000. 11111111
Hosts/Net: 254 Class C, Private Internet

星期四, 十月 07, 2010

用gnuplot來畫圖

開會要準備投影片時,如果要畫圖,我心裡就一陣幹。
這兩天,決定用gnuplot來做,果然,順手多了。雖然一開始為了生出一個可以用的script,也磨了一陣子。

plot "./data.txt" using 1:2 title "single direction", "./data.txt" using 1:3 title "two direction"
set title "throughput"
set xlabel "packet size(Bytes)"
set ylabel "rate(Mbps)"
set style data lines
set grid
replot
set output "throughput.png" ; set term png ; replot

在linux的shell下,使用gettext來翻譯

(0)準備gettext的環境變數
TEXTDOMAINDIR
TEXTDOMAIN

(1) 先寫 zh_TW.po

(2) 用msgfmt指令生成 mo檔
msgfmt -o $TEXTDOMAIN.mo zh_TW.po

(3) 將mo檔放到正確的位置, /MO_DIR
其中,/MO_DIR 長成這樣: $TEXTDOMAINDIR/LC_MESSAGES/LC_MESSAGES

(4) 此時,mo檔和路徑,環境變數的關系應該是:
$TEXTDOMAINDIR/LC_MESSAGES/LC_MESSAGES/$TEXTDOMAIN.mo

(5) gettext -s "$msgid"

星期四, 九月 16, 2010

FirePHP

已經用firebug來debug javascript一段時間了,firebug真是超好用的。然而,javascript是 client side的東西。有時候,會希望,要是server-side的php也可以有簡單的方法來debug就好了。

這兩天找了FirePHP來用,雖然它不能做為一個像firebug一樣,是PHP的debugger。但是,它可以做為logger。在php的程式碼中,調用了FirePHP的程式碼之後, 可以用簡單的log function,將PHP執行時,輸出的東西,透過Http的header來回傳。回傳之後,被FirePHP 的程式收到,它就可以顯示。

使用方法:
(1) 下載 FirePHP的 php library, 放到網頁的根目錄
(2) 在php檔中,寫合適的程式碼。
下頭是一個example:
require_once('FirePHPCore/FirePHP.class.php');
ob_start();
$firephp = FirePHP::getInstance(true);
$var = array('i'=>10, 'j'=>20);
$firephp->log($var, 'Iterators');

(3) 在瀏覽器上,開啟firebug,再開啟FirePHP

星期一, 八月 16, 2010

原來網路上找到的noseeing檔是有被修改過的…

這是測試用的嘸蝦米輸入法表格,主要在測試 gcin 的 UTF-8 環境的運作
情形。如果要長期使用,請購買合法版權的嘸蝦米輸入法。這個表格內容
有可能和正式的嘸蝦米表格不一樣,因為這是我個人在使用的。

目前編入正式的 Unicode 編碼日文及簡體字。原來的輸入日文的方法只能
適用於 GNU/Linux 系統,因為他是對照 Unicode PUA 的對應,需要 GNU
libc 才能做正確的轉換,其他的系統並不一定支援。正式的 Unicode 編碼
日文,在輸入時請多加個 j,以便和原來的 Big5 日文區別:

a, => 原 Big5 編入 Unicode PUA 的日文『』
ja, => Unicode 標準編碼日文『あ』

簡體的部份依繁體的輸入方式,必需選字才能輸入。所以,正常的繁體中文
依以往的輸入方法即可,需要簡體時再來選字。

這裡是繁體中文。 => 依正常輸入即可
这里是简体中文。 => 依繁體的輸入方法,需要選字。

這是依我個人的使用習慣編入的,所以不一定會和正式嘸蝦米的輸入方式一
樣,也不一定會符合你的需求。

星期四, 四月 01, 2010

如何使用shunit2來做unit test

如何使用shunit2

(1) 下載 shunit2-2.1.3.tgz
tar zxvf shunit2-2.1.3.tgz


(2) 建議…
在.bashrc中,加上一個alias
alias get_shunit2='cp XXXX/shunit2-2.1.3/src/shell/shunit2 ./'

在 /tmp目錄下做實驗:
get_shunit2 // 這樣可以把需要的shunit2 拷貝到/tmp資料夾下。


(3) 寫一個test suite , 名稱是 test.sh
//////內容/////
#! /bin/sh

testEquality()
{
assertEquals 1 1
}

# load shunit2
. ./shunit2
/////////////

(4) sh test.sh

使用gtest來做Unit Test

非常簡單、非常好上手。

(1) 下載gtest-1.4.0.tar.bz2
tar jxvf gtest-1.4.0.tar.bz2

(2) ./configure
make
sudo make install
ldconfig // 因為它有灌library

(3) 準備要被測的檔案
for example: humorless.h
///////// 內容 ///////////
class Sample
{
public:
int return_100()
{
return 100;
}
};
/////////////////////////
(4) 準備好test suite
for example: tester.cpp
///////////// 內容 ///////////
#include
#include "humorless.h"

TEST(Sample, return_100) {
Sample c;

// EXPECT_EQ() evaluates its arguments exactly once, so they
// can have side effects.

EXPECT_EQ(0, c.return_100());
EXPECT_EQ(1, c.return_100());
EXPECT_EQ(2, c.return_100());
}

int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
//////////////////////////

(5) g++ -o tester tester.cpp -lgtest
./tester
// 記得要去link 啊…

星期日, 三月 28, 2010

道路駕駛課

2010年3月28日,道路駕駛班的課程,相當的有趣。教學內容重點放在市區和巷道。

(1) 市區行駛,快慢車道變換。
快車道和慢車道之間,有一個大大的安全島,切過去時,要注意後方來車,而且要慢慢地先卡位,再儘快開進去。

(2) 市區幹道左轉
在台北市的主要幹道,例如忠孝、敦化這種大路和大路之間的交岔口, 除非有設計好的交通號誌,基本上,是禁止左轉的。如果要左轉,但是又找不到迴轉道,其實是有替代方案的:通常在這種不能左轉的路口之後,第一個可以右轉的巷子,都是單行道。這個單行道的設計,往往就是可以連續做三個右轉。( 有的有例外,是四個右轉+ 一個左轉 )

// 媽的,我在台北市住了這麼久,終於明白,為什麼會有這麼多的單行道,這是因為它本身有迴轉道的功能嘛!

(3) 巷道之無號誌十字路口穿越
先開一半,確定左邊的來車不會撞上,
再開一半,確定右邊的來車也不會撞上。

(4) 巷道之無號誌十字路口左轉
概念上,也是慢慢開,跟(3)差不多

(5) 違反交通規則的大迴轉 ( 趕時間時使用… )
當附近的車不多時,先把車偏右開,取得空間,方向盤左打到底,做180度大迴轉。

///
然而,有趣的一件事是:
今天,我跟我姊講到這個開法時,她跟我說:
「喔,靠靠靠靠…
我坐過的那些車,那些開車的男人,常常都是遇到不能左轉時,就先罵,『怎麼不能左轉的路這麼多』,然後,先右轉,再 (雙黃線) 180度大迴轉 。還有,他們也常常罵,『單行道真是很多,這些管路的人不知道在想些什麼!』」

附註:其實我覺得我的這位教練,教的很用心,教練的連絡方式:
許家豪
0916-971248

星期二, 三月 09, 2010

讓qemu啟動時,可以不用加上sudo的改法

(1)先用 whereis qemu 找出系統上,qemu的執行檔在那個資料夾。


(2)為這個執行檔加上SetUID,這樣它就可以直接access /dev/net/tun
sudo chmod 4755 /usr/bin/qemu-system-i386

找出所有沒有被stripped的檔案

find . -type f | xargs file | awk '$0~"not stripped" {print $0}' | awk -F: '{print $1}'

解說:
(1) find . -type f (可以遞迴找出子目錄下所有的檔案 )
(2) xargs 可以將前一個指令的輸出,當作argument交給file指令
(3) file指令可以顯示這個檔案有沒有被strip
(4) 第一個awk 指令可以先 (*)比對 "not stripped" 這個字串
再 (*)把有被 strip的行印出
(5) 第二個awk可以取出檔案名稱

星期四, 一月 14, 2010

國標舞--摩登舞的背部肌肉使用


在摩登舞中,為了要讓holding能穩定,正確地理解背部肌肉的使用方式,是有必要的。



首先,力量只能通過「剛體」而傳遞,所以,豎背肌必須要收縮,使脊柱固定,力量才能順利地從足部,傳到上半身的軀幹。然而力量傳到上半身的軀幹,還不足以傳給舞伴,必須順利通過肩部的關節,才能傳達到手部。簡單的說,肩部的關節也必須固定,形成能夠導力的「剛體」。一旦力量已經可以傳到上臂了,那基本上,最困難的關卡已經過了,要把力量傳到指尖,相對是容易許多的。






在這個傳導力量的過程中,最困難的就是力量通過肩關節這一段:
(1) 力量從軀幹到肩胛骨:這需要斜方肌的下肌束收縮。( 注意:斜方肌的上肌束要放鬆)
(2) 三角肌胸大肌收縮後,手的上臂自然會抬起
(3) 收縮背闊肌後,手臂會微微向前旋轉,可以讓力量轉換方向,得以向前。且前臂可以因此抬高。