在網路上找來的,也找不到出處了…真是抱歉.
原來的材料有用到花椒與高湯,我利用手頭現有的材料,改為大蒜跟高湯粉調製的水。
材料: 白蘿蔔、茼蒿、大蒜、鹽、澱粉水(勾芡用)、高湯水、香油、黑醋。
方法:
1.蘿蔔切條。
2.大蒜爆香。
3.下白蘿蔔條稍煮片刻,再下高湯水。
4.接著再下茼蒿,加上調味料:鹽、味精、黑醋。
5.勾芡…
6.最後再加上香油。
收工。很簡單的一道菜,如果有香菜的話,應該也會不錯。
我們在家試了兩次,第一次沒加黑醋,味道差了點。第二次加了黑醋就好多了。
resize ntfs fail.
話說,在試過Ubuntu Linux之後,突然非常的想把 Linux 裝到 Notebook 上(不想用 virtual machine).
但是首先會遇到的就是硬碟問題,該怎麼多挖一塊空間出來安裝呢??
這方面,最老牌的當然是 Partition Magic, 不過我沒有這套軟體, 再者, 他也需要錢錢.
只好努力爬文找免費軟體來用,後來赫然發現,Ubuntu Live CD 本身就提供GParted這個強大的軟體了!!這裡有些有用的連結:
於是就照著步驟來作:
- 先磁碟重組
- 執行GParted
理論上至此,應該是收工了.
仔細研究以後,發現GParted底層用的是 ntfsresize 這個指令,而實際直接使用過 ntfsresize 之後,發現 resize 的確是成功的.但是需要你重新執行 fdisk 將 partition 刪除掉,再以新的 size 新建一個 ntfs partition.
而我,就錯在這裡,我砍掉了,我也重建了,但我在寫入前卻忘了指定 partition type 為原來的 ntfs,於是就這麼毀了……然後赫然忘了備份老婆的資料…
真是慘!!
Ubuntu live cd on Averatec 6200
前一陣子有想把 Linux 裝到我的 notebook – Averatec 6200 (其實是 MSI M630)上.
正巧Ubuntu Linux又挺紅的,就決定用他.所以就下載了Ubuntu Linux的 Live CD,先行嚐鮮.
可是,怎麼弄都無法從 Live CD 開機,這是一個警訊,表示 Notebook 可能有些麻煩需要克服.
這時候想到,之前有看過一個網站,有提供很多 Notebook 與 Linux 相容問題的網站.利用Google找了一下,很輕易就找到了,就是這裡 Linux on Laptops. 遺憾的是,裡面並沒有 Averatec 6200 的資訊.
時光荏苒,匆匆數周又過去.
今天晚上,再次用 Live CD 開機,並仔細看了一下開機選項 (按 F2, F3, F4, F5, F6, F7 都可以看到不同的選項), 然後輸入這行指令進行開機:
live vga=771 noapic nolapic gdth=disable:y
這次很順利就開起來囉~ 🙂
接下來就是無線網路問題啦~
Ubuntu Linux可以辨認到我的無線網路Driver, 所以接下來就是軟體設定問題.
摸索了一陣(會這麼久,其實有一部分也是因為我忘記我自己的 key index 與 key, :p ),最後在 /etc/network/interfaces 裡面作下列設定
iface ra0 inet dhcp
#
wireless-essid your_essid
# keys
wireless-key1 your_key_1
wireless-key2 your_key_2
wireless-key3 your_key_3
wireless-key4 your_key_4
# 請根據你的 key 索引值來調整
# adjust the value according your key index.
wireless-defaultkey 1
# 我用的是restricted(受限制的),如果沒用的話,把這行註解掉吧
# I use restricted, you can comment this line.
wireless-keymode restricted
auto ra0
再重新啟動 networking service 就可以了.
sudo /etc/init.d/networking restart
參考資料:
葡萄發芽了
How to Geotagg with Yuan.CC Maps
這是第二彈,剛剛發現薄荷大大再度推出新的 web application: Yuan.CC Maps.
這可說是要作 geotag 的終極武器啊…
他可以用 Google Maps / Yahoo Maps / UrMaps 來幫你找到座標定位,也可以順便登入 flickr 進行 geotag.
操作的方式,相當簡單,滑鼠按住,移動….你會看到右上角有座標會隨著你的移動而變化.

得知座標以後,就可以在 flickr 上傳照片的時候,加上 geotagged lat=nn.nnn lon=nnn.nnn 以註明此照片被 geotagg 過了.
此外,你也可以直接登入 flickr (註1),先把 filter tag 選成 None,選到你要作 geotagged 的照片,然後移動地圖到你拍照的地點,接著按下右下角照片下方的按鈕: “save location”,這樣就大功告成了.
然後就可以瀏覽照片在地圖的位置:


如何,很不錯吧~
🙂
備註:
1. 第一次登入 flickr, flickr會要求你允許 Yuan.CC Maps 可以操作 tag, 這時候要按下允許(Allow).
參考資料:
1. Blog of Flickr Hacks: Yuan.CC Maps
How to Geotagged with Google earth
太過肉麻的開場白就不介紹了.
薄荷的 blog介紹的很多,也很清楚,不妨直接參考這篇:歡迎加入 Geotagged: Taiwan 群組.
步驟:
- 下載Google earth,這裡有三種版本,後兩種是要付費的,選擇第一個免費的版本下載即可.然後進行安裝.
- 打開Google earth,進入 [tools][options] 依照下圖調整座標顯示方式.

- 尋找照片所在座標位置,找到以後,把左下角的位置抄起來.如下圖

- 接著上傳照片到flickr,上傳以後,加上 tag.
Geo Tags 的格式:- geotagged , 這個 tag 一定要加, 用來辨識這張相片有經緯度.
- geo:lat=25.011824, 這是北緯 25.011824
- geo:lon=121.527103, 這是東經 121.527103
- 大功告成
參考資料:
ANTLR 與 c#
ANTLR是一個用來將剖析語法轉換成語言的工具,如果你接觸過 lex/yacc 的話,就可以很容易瞭解.
這裡有一篇相當簡單的Introduction.
Step by step, 就可以做出一個計算運算式的小程式.
可是,產生出來的程式語言卻是 java, 如果要改用 c# 呢??
依照官方的說明, ANTLR 可以產出三種語言: C++, Java, c#.
所以該怎麼產生呢??需不需要另外寫甚麼??
官方網站同樣也提供了這麼一篇:Notes for using the ANTLR C# Code Generator.
這裡我們以Introduction裡面所提供的範例來作為例子,將他命名為 “expr.g.txt”:
class ExprParser extends Parser;
expr returns [int value=0]
{int x;}
: value=mexpr
( PLUS x=mexpr {value += x;}
| MINUS x=mexpr {value -= x;}
)*
;
mexpr returns [int value=0]
{int x;}
: value=atom ( STAR x=atom {value *= x;} )*
;
atom returns [int value=0]
: i:INT {value=Integer.parseInt(i.getText());}
| LPAREN value=expr RPAREN
;
class ExprLexer extends Lexer;
options {
k=2; // needed for newline junk
charVocabulary=’\u0000′..’\u007F’; // allow ascii
}
LPAREN: ‘(‘ ;
RPAREN: ‘)’ ;
PLUS : ‘+’ ;
MINUS : ‘-‘ ;
STAR : ‘*’ ;
INT : (‘0’..’9′)+ ;
WS : ( ‘ ‘
| ‘\r’ ‘\n’
| ‘\n’
| ‘\t’
)
{$setType(Token.SKIP);}
;
第一步你需要做的,就是在這份例子的最上頭加上
options {
language = “CSharp”;
namespace = “SmallCalc”; // encapsulate code in this namespace
//classHeaderPrefix = “protected”; // use to specify access level for generated class
}
表明我們要使用 c#, 並且 namespace 要命名為 SmallCalc.
接著使用下載到的 antlr, 來進行轉換
>antlr expr.g.txt
他會產出下列檔案:
- ExprLexer.cs
- ExprParser.cs
- ExprParserTokenTypes.cs
- ExprParserTokenTypes.txt
ok, 該有的都有啦,我們接下來需要的是主程式與必要的 antlr assembly(組件).
要取得 antlr assembly, 你必須先取得 antlr 的原始碼 (找 source distribution).
解開原始碼以後,在 lib/csharp/ 下,會有個 visual studio project 檔與 NAnt build 檔.
看你熟悉哪一個,就用哪一個.
總之你會得到 antlr.runtime.dll, 將他複製到剛剛程式所在的位置.
主程式的話,很簡單,就是使用剛剛產生出來的程式來進行剖析:
using System;
using System.IO;
using antlr;
namespace SmallCalc
{
public class Smallcalc {
public static void Main(String[] args)
{
ExprLexer lexer = new ExprLexer( Console.OpenStandardInput() );
ExprParser parser = new ExprParser(lexer);
int x = parser.expr();
Console.WriteLine(x);
}
}
}
然後編譯
>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc /target:exe /out:smallcalc.exe /r:system.dll /r:antlr.runtime.dll *.cs
你會發現有點小錯誤:
ExprParser.cs(156,11): error CS0246: 找不到型別或命名空間名稱 ‘Integer’ (您是否遺漏 using 指示詞或組件參考?)
稍微調整一下,從原來的
value=Integer.parseInt(i.getText());
修正為
value=Convert.ToInt32( i.getText() );
再重新編譯一次,就大功告成了.
試試看結果囉…
>smallcalc
1+3+5+7*100
709
🙂
參考資料:
- ANTLR Parser Generator
- An Introduction To ANTLR,這是以簡單的運算式為例.
- Notes for using the ANTLR C# Code Generator,如何產生 c# code, 並且編譯.以及一些選項說明.
cygwin 與 nxclient
今天碰到有趣的情況,cygwin 起不來,錯誤訊息是這樣的:
You have multiple copies of cygwin1.dll on your system.
Search for cygwin1.dll using the Windows Start->Find/Search facility
and delete all but the most recent version. The most recent version *should*
reside in x:\cygwin\bin, where ‘x’ is the drive on which you have
installed the cygwin distribution.
也就是說,有多份 cygwin1.dll, 要記得留這份喔(c:\cygwin\bin\cygwin1.dll)…
可是…我找遍整台電腦,也就兩個 cygwin1.dll
一份是 nxclient 用的,一份是 cygwin 用的,可是目錄完全不同,怎麼樣也不會搭到一起.
沒辦法,只能召請Google大神上身幫忙.
果然應驗如神,大神告訴我,有人遇到這種情況了…
原來是因為記憶體裡面有 cygwin1.dll 殘留而導致.
我打開”工作管理員”來查看,果然有這麼一個 Process: cygserver.exe
將他結束掉之後,就沒問題了.
可是,是誰把這個 Process launch 起來的呢?
是 nxclient, 他結束掉以後,並沒有將此 Process 也一併結束掉,所以才會有這問題發生.
如何帶新人?
昨天以前的同事小強用MSN問我跟老陳,要如何帶新人?
老實說,我自己是沒啥答案的.
以我的經驗是把他當朋友,盡量混熟.
老陳經驗豐富,提出比較好的準則:
該教甚麼就教甚麼,除非覺得他值得教或是他自己有心學,再額外教他,也不必特別去幫他.
至於其他人事加薪上,也不必特別去幫他安排,同樣也是讓他自己開口,這樣會比較好.
一方面是保護自己,一方面這樣也比較好帶人.
免得你對別人好,他還嫌你麻煩.
深有感悟,特此記下.
避免禿頭的小方法
昨天跟老陳閒聊,他分享了一個避免禿頭的方法.
那就是不要太過頻繁的洗頭.
案例1:
老陳的某位女性朋友頭髮稀少,經詢問,她一天洗兩次頭.(這真的很誇張)
於是老陳建議她兩天洗一次,後來,果然頭髮日益增多.
案例2:
是老陳自己,他家族有禿頭遺傳,他老爸25歲就開始有前禿現象.
所以他自己開始致力研究,發現不要經常洗頭的方法,並且努力實踐.
現在的確還沒有出現有禿頭的徵兆,但他的老姐,老弟已經開始有此現象發生.
原因:
因為過於頻繁的洗髮,容易造成毛囊受損.
結論,
1.避免頻繁地洗頭.
2.使用護套避免直接與安全帽接觸,使頭髮清爽.
3.使用適合自己髮質的洗髮精,讓自己頭髮清爽.
