resize ntfs fail.

話說,在試過Ubuntu Linux之後,突然非常的想把 Linux 裝到 Notebook 上(不想用 virtual machine).
但是首先會遇到的就是硬碟問題,該怎麼多挖一塊空間出來安裝呢??
這方面,最老牌的當然是 Partition Magic, 不過我沒有這套軟體, 再者, 他也需要錢錢.
只好努力爬文找免費軟體來用,後來赫然發現,Ubuntu Live CD 本身就提供GParted這個強大的軟體了!!這裡有些有用的連結:

於是就照著步驟來作:

  1. 先磁碟重組
  2. 執行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

參考資料:

葡萄發芽了

過年的時候,將收集來的葡萄種子種到小盆栽之中,前幾天開始陸陸續續發芽了.
上網稍微找了資料,一般葡萄種下以後的第一年都是在成長,第二年才會開始結實.
真是令人高興,不過家裏是沒啥空間讓他們長到可以結實,到時候再說吧,看是要移到哪裡再繼續種.
下個挑戰的目標是橘子跟柳丁!!
grape(1)

How to Geotagg with Yuan.CC Maps

這是第二彈,剛剛發現薄荷大大再度推出新的 web application: Yuan.CC Maps.
這可說是要作 geotag 的終極武器啊…
他可以用 Google Maps / Yahoo Maps / UrMaps 來幫你找到座標定位,也可以順便登入 flickr 進行 geotag.
操作的方式,相當簡單,滑鼠按住,移動….你會看到右上角有座標會隨著你的移動而變化.
Yuan.CC Maps(3)
得知座標以後,就可以在 flickr 上傳照片的時候,加上 geotagged lat=nn.nnn lon=nnn.nnn 以註明此照片被 geotagg 過了.
此外,你也可以直接登入 flickr (註1),先把 filter tag 選成 None,選到你要作 geotagged 的照片,然後移動地圖到你拍照的地點,接著按下右下角照片下方的按鈕: “save location”,這樣就大功告成了.
然後就可以瀏覽照片在地圖的位置:
Yuan.CC Maps(1)Yuan.CC Maps(2)
如何,很不錯吧~
🙂
備註:
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 群組.
步驟:

  1. 下載Google earth,這裡有三種版本,後兩種是要付費的,選擇第一個免費的版本下載即可.然後進行安裝.
  2. 打開Google earth,進入 [tools][options] 依照下圖調整座標顯示方式.
    GoogleEarthOption
  3. 尋找照片所在座標位置,找到以後,把左下角的位置抄起來.如下圖
    GoogleEarthLocation
  4. 接著上傳照片到flickr,上傳以後,加上 tag.
    Geo Tags 的格式:
    1. geotagged , 這個 tag 一定要加, 用來辨識這張相片有經緯度.
    2. geo:lat=25.011824, 這是北緯 25.011824
    3. geo:lon=121.527103, 這是東經 121.527103
  5. 大功告成

參考資料:

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

🙂
參考資料:

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.使用適合自己髮質的洗髮精,讓自己頭髮清爽.

閒聊PMP

今天跟老陳聊天,聊到PMP的未來,基本上他是不看好的.
他問了我一些問題…
老陳:”假若有個網站,有很多影片,也都很便宜,DRM也普及了,一部片只要十元,那麼,你一個月會去下載幾次??”
我:” 一個月了不起兩三次吧~”
老陳:”ok, 那麼半年內,你會下載放到 PMP 上觀看幾次?”
我:”大略十次就很多了吧…”
問完,我真是恍然大悟.
原來我之前想的”內容”,”授權”都還不算是最大的問題.
最大的問題在於人的習慣.