顯示具有 Tech related 標籤的文章。 顯示所有文章
顯示具有 Tech related 標籤的文章。 顯示所有文章

星期四, 8月 14, 2014

關於patch...

對於這些基本tool不熟實在是很不方便啊~~

------------

vi t1 t2
t1:
My Name is barry.
I am 20 years old.
Your name is tina.
How old are you?

t2:
My name is marry.
I am 20 years old.
You name is tom.
How old are you?

//產生diff檔,t1視為較舊的檔案,需要被更新
diff -Naur ./t1 ./t2 > t_patch

//patch t1
patch -p0 < t_patch

patch的參數-p0,-p1,-p2表示對於要處理的file/folder的階層。

參考:
Linux中 patch 的用法 @ 研究所學習筆記
Diff 和 Patch 的簡易操作使用筆記 - Tsung's Blog

星期一, 6月 13, 2011

Code Better -- 寫C常犯的錯

這是公司內部的訓練課程,提醒了一些C coding常犯的錯誤,所以做個筆記記錄下來(為何不提供電子檔下載呢?)。

星期三, 4月 14, 2010

利用Google App作為proxy

這一陣子公司對網路的管制越來越多,同事們莫不紛紛尋思如何獲得『海闊天空』。像是:

  • 如果網站support的話,將URL換成『https://』、web proxy
  • 試試web proxy;但是雖然可以google到一堆,卻得一個一個地試看看,看能夠通到什麼程度。若是在sceure link上的話,web proxy也沒法兒用,例如不公開的plurk。
  • 資本夠雄厚的話,用3G網卡或WiMax網卡上網。。。。
  • 想辦法走後門。。。。。


找了好久(公司為了不影響工作,還是開放google讓我們使用,但是一檔網路,大家的心思都在於如何破解。。。。),找到有人利用Google App執行proxy程式,防火牆之後再找一台PC跑proxy agent即可:

因為公司並非如狐狸一般,全面封鎖網路,還可以利用google的資源,所以最後我選擇了GAE+GAppProxy的方式(最上面兩個link是完全攻略)。基本上都可以滿足我對網路的需求:google search、plurk、...,但是對於會redirect很多次的網站卻可能無法配上用場,像是GMail。

另一個有趣的問題就是,我們還可以利用GAE做些什麼好玩的事呢?值得好好想想:)

星期三, 1月 27, 2010

Notes about GStreamer Plugin

Ref:
furseal's lair:gstreamer plugin

Note:
_base_init():
  • part of GObject system.
  • The element details are registered with the plugin here.
  • The _base_init () function should be set for this GObject in the function where
    you register the type with GLib.
  • It is meant to initialize class and child class properties during each new
    child class creation
  • In the element _init () function, you create the pad from the pad template that has been registered with the element class in the _base_init () function.

_init():
  • Pads are created from its templates in the element’s _init () function using gst_pad_new_from_template ().
  • It is used to initialise a specific instance of this type.
  • In the element _init () function, you create the pad from the pad template that has been registered with the element class in the _base_init () function.

_class_init():
  • It is used to initialise the class only once (specifying what signals, arguments and virtual functions the class has and setting up global state)

星期一, 1月 19, 2009

最近

雖然很久沒寫blog,不過生活依然忙碌地過著,要玩、要工作、要陪小孩。。。。

上一回逛誠品,把活船系列搬回家,幾週前突然心血來潮,一口氣把三部曲、六本書給K完。不得不說,還是『刺客學徒』最好看。雖然,我很喜歡她的idea,像是精技、活船、原智、古靈、...,但是,整個情節鋪陳卻讓人很有言情小說的感覺,特別是刺客後傳和活船系列的ending!不知是不是因為要由上述的ideas、刺客、私生子、海盜...等等去架構出一個世界,有歷史、有經濟、有文化,而想要把故事的前因後果交代清楚,而演變成如此?!感情部分的鋪陳是一大敗筆啊。

由於習慣在windows上工作,看project開發環境在linux下,使得工作很不順暢,上週一氣之下,把NB灌了Fedora 10,花了一天架環境及摸索,讓工作心情好多了;果然是工欲善其事,必先利其器啊!!目前最大的困擾是,不能在Linux上連上中文BBS,尚待努力中。其實,原本在window coding(NB)、Linux build code(PC,Ubuntu),本也相安無事,反正透過網芳、NFS,其實很OK的;但目前手頭上的工作卻得在封閉網路上測試,要一邊build code一邊debug就變得很麻煩。現在,只要帶著NB就可以遊走各式環境,不過,需要加強Linux技能和VI功力;目標是可以不用滑鼠就能順利使用VI!!

黃小弟越來越大,表達能力也越來越好。非常高興他沒有因為我們是假日父母,而跟我們變得越來越疏離(反而週末總愛黏著我)!但,也該是要考慮將他接回身邊的時候了,工作、生活的規劃就是個大題目了!!私心其實是很想在請個育嬰假,陪著黃小弟到三歲、上幼稚園~~

最後,雖然已經很少替黃小弟照相,但良心還是有那麼一丁點兒的,只是因為懶惰和忙碌,使得那為數不多的相片還躺在數位相機裡。。。。。目前,黃小弟身高已破90公分,體重不明,因為已經無法單手抱他持續五分鐘,所以估計應該有十四公斤的份量。愛笑、愛撒嬌、愛吃麵、愛喝湯、愛說話,具備了鸚鵡的基本功。

星期一, 12月 29, 2008

Building C libraries

Sample for shared libraries:
$> ls
a.c a.h lib.c
$> gcc -c -fPIC a.c -o a.o
$> gcc -shared -Wl,-soname,liba.so.1 -o liba.so a.o
$> gcc lib.c -o lib -L. -la
$> LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
$> export LD_LIBRARY_PATH

星期二, 12月 16, 2008

危險的gets()

今天在寫測試程式的時候,發現compiler給了各warning:
the `gets' function is dangerous and should not be used.

去google了一下,原來是因為它沒有做長度check,如果餵長一點的字串,就會overflow:
*** stack smashing detected ***: ./getstdin terminated
Aborted (core dumped)


除了自己check字串長度做保護外(但很麻煩),可以用fgets代替:
char *fgets(char *restrict s, int n, FILE *restrict stream);

說起來,由於歷史因素,許多好用的standard C functions到了現在這個越來越『先進』的時代,都變得dangerous,像是buffer的allocate和檢驗、是否可以reentrant、變數是否是library內static宣告...等。所以,使用一些有參數是pointer或是沒有限制buffer size的function,應該要提高警覺心,像是sprintf。有一些function有reentrant的版本,會命名為同名加上『_r』的方式。

sprintf --> snprintf
gets --> fgets
time系列functions(ex: asctime --> asctime_r)
search user DB系列functions(ex: getpwnam --> getpwnam_r)
string functions(ex: strerror --> strerror_r、strtok --> strtok)
...

星期四, 8月 07, 2008

創意思考

暫時沒時間整理,把當時課程的幾個重點summarize在這裡。那天上課最大的一個心得是,其實我也是個有創意的人,只是懶惰、懶得想,或者idea常常是晃過腦際、卻沒有keep下來去更驗證它或是更detailed去思索。

創意九式:
組合
消除
改變
反向
轉換
問問題
打破框框
圖像思考
學習孩子的眼光

How to generate ideas:
Brainstorming
Brainwriting 6-3-5
Picture Association
Mind Mapping

星期二, 10月 10, 2006

果然是鍵盤!

雖然待在家裡的時間多了,但總是沒有碰電腦的慾望,有時候覺得是因為自己懷孕的關係,有時候嫌棄小黃的小compaq難用,有時候又覺得Apple的中文輸入法用不慣,總想著趕快替自己買臺新NB;最近覺得,針對小黃的小compaq,問題是出在鍵盤和螢幕,因為它實在太小(10吋),不僅字小(常會忽略錯字),而且鍵盤小,常常讓我按錯鍵。今晚索性找了個PC鍵盤接上來,browser換成用慣了的火狐狸(一堆hotkey,ctrl+"+"就可以讓字放大許多,但又不是640*480的解析度),寫blog就順手許多。針對Apple,有空來survey看看,是否有更好用的中文輸入法可用。

說到鍵盤,實在是我使用PC或NB很重要的一個考量點。Key敲起來要簡潔有力(我反而不喜歡無聲鍵盤,會搞不清楚自己到底按到按鍵沒有?),而且按鍵分布不要太緊密,最好就是一個手掌就可以掌控『半邊天』。我的骨架很大,手掌也不例外,甚至比一些男孩子的手還要大,個性也不喜歡細細巧巧的動作,所以公司配的Acer TravelMate290雖然有不少缺點,但它的鍵盤卻是我用過最喜歡的(小黃就老嫌它像戰車一樣)。以前學中國結時,老師每看我做,就喜歡笑問我:『手不會扭到嗎?』因為我喜歡一股腦地一路做下來,但中國結是小巧的飾品,老師們主張要細細巧巧、慢慢地做;按我的方式,最後就是要花一些功夫做抽線、調整結型的動作。

最近在survey新的NB,看上了Toshiba,但對於它的鍵盤也是有一些顧慮呢。

星期二, 4月 18, 2006

CMMI

早在三年多前、還在念研究所時,我的指導教授就已經在系上推動CMMI(Capability Maturity Model Integrated),並協助系上請了客座教授開課。事隔三年後的現在,我已經踏入社會兩年多了,我們公司開始對CMMI感興趣,從去年底積極的到外頭上CMMMI的課程、到今年在公司內部開課、聘請顧問公司進行『Gap Analysis』。

業界和學界對於某些topic畢竟還是有落差;儘管公司目前對CMMI顯得積極,但態度還很保留,是否推行CMMI得看顧問公司的Gap Analysis的report、同仁額外增加的effort、導入CMMI之後能夠產生多少效益...等等,才做最後的決定。

很幸運的這一次Gap Analysis,我也能夠被選上參與顧問公司的interview(雖然也花了不少額外的時間),因此瞭解了不少CMMI的基本概念,也大概知道評估的過程。透過這次的interview,我也順便回顧了這兩年多做過的計畫。一般來說,RD都不大喜歡寫design documents,把想法付諸文字還不如把想法付諸程式,結果馬上可見。而且,寫document其實也是一種不斷review自己思路的過程,不斷的重複常常也會讓人覺得無趣。所以,有時候document就只是應付了事。

這一回,我由計畫一開始就參與,因此也就可以由design階段開始,往coding前進,其實是一個挺好的經驗。雖然說,我負責的module並非無中生有,但porting之前撰寫design document的時候,對整體架構思考過(HW、SW),對這個module的functionality就更為清楚;coding時,依照design的架構去implement,也方便許多。

但除去design document,撰寫其他文件對我而言,還是很痛苦的:P,例如user manual、test plan。所以上著CMMI的課時,我心裡浮現的最大問號就是:『CMMI會為我們增加多少overhead呢?!』

星期六, 3月 11, 2006

Test Again

This article is posted by DashBlog Widget. This widget seems better :)

測試文

測試文。

這篇文章是在我們家的新成員iMac G5上用Dashboard的blogger widget發表的。非常好奇呈現出來會是什麼樣子?奇怪的是,沒有標題欄和日期欄可供輸入;但一樣有粗體和斜體字的快速鍵可用。

星期日, 7月 03, 2005

突然到處都是blog~~~

突然到處都是blog,連M$都湊上一腳,開了Spaces,又開了一個提供M$工程師和外界溝通的Channel9;CNET一篇名為『微軟Blog強化社群交流』的文章提到:『微軟在星期二結合了網誌(blog)、論壇等技術,悄悄推出了改善開發人員溝通的網站。 』;之前M$也嘗試了一個以Flash為介面的blog『wallop』,不過實在用不順手,已經棄置;我在wallop的account已經被日積月累的email掩埋住,要想再登入它,還不大容易哩(因為wallop不僅採推薦制,而且還不能變更密碼,得先挖出舊信件才能夠登入.....說不定account也不是我自己設的,wallop真的被我丟到腦袋後頭了)!

雖然Spaces跟MSN密切的綁在一起(還用個小星星提醒使用者:『你有朋友在 Spaces 發表文章了』),算是對blog這個概念的推廣出了很大一份力量(相對地,這也是以商業力量很深地介入),不過,我還是不會在這兒落腳,一是沒有狡兔多窟的習慣(maintain兩個窩就很吃力了,常常都是隔一陣子才做sync哩~);另一方面,則沒得解釋,就是我對M$的偏見。

今天這篇文章以Spaces為第一個發表處,算是到此一遊的紀念囉!

星期五, 6月 24, 2005

Code Complete Ch.1

為了督促自己持之以恆地看完Code Complete,決定每看完一章就做一次摘要;雖然同事A已經對第一章做了摘要,但是為了有頭有尾,所以我也一樣由第一章開始,儘管內容大同小異。

第一章主要是強調一個軟體發展進行的過程中,construction(也就是coding)的重要性。這也是本書的發源,作者表示有許多相當好的技巧能enhance coding,但真正被實際運用的卻不多,如果能加以推廣,必能促進軟體發展的效能。這裡有一點,跟一般軟體工程不一樣,一般軟工強調完善的design(所以有design document)、測試...,本書作者當然並沒有否定;然而,書中有一句話,相信一定讓許多RD心有戚戚焉:『In many projects, the only documentation available to programmers is the code itself』。Design spec 或是requirement document總是跟不上coding的狀況,尤其計畫吃緊的時候,解bugs或maintain features都來不及,就很難將心力用來update這些文件。所以,coding做得好,就很利於之後的RD接手、理解,即使相關的文件不足。

在一個計畫中,construction的重要性有:

  1. Construction is a large part of software development
  2. Construction is the central activity in software development
  3. With a focus on construction, the individual programmer’s productivity can improve enormously
  4. Construction’s product, the source code, is often the only accurate description of the software
  5. Construction is the only activity that’s guaranteed to be done

星期四, 6月 16, 2005

回過頭來翻字典 & Code Complete

前一陣子,Ruby的blog上介紹了一本微軟出版的書籍『Code Complete』,我覺得是相當不錯的一本書籍,特別是對於我們這些以programming為工作的工程師。

昨天晚上開始『開讀』(請Ruby幫我買了有一、兩週了:P),這本書的作者Steve McConnell用詞遣字相當豐富,很多字和片語都不向一般教科書或是專業書籍很制式化,雖然增加了閱讀上的困難度,但卻也增加了文字上的樂趣,所以查字典是一定要的。打從大四開始用翻譯機、研究所用翻譯軟體開始,已經好多年沒有翻過字典了,昨晚不知怎麼的,開始想念起中學時代查字典的記憶,便也將書架塵封多年(真的有灰塵呢!)的文馨大字典撢一撢、搬下書架使用。其實使用字典查單字的感覺挺好的,很單純(現在的軟體都附加很多有的沒的功能)、很悠閒(使用軟體字典總有總快還要快的感覺,最好看到生字就馬上知道意思),而且解釋也詳盡豐富的多。

前一陣子同事們有倡議要為Code Complete組一個讀書會,大家認領章節、分享讀書心得,後來因為工作一忙也就不了了之(慚愧!我才剛開始看,之前有稍微翻一下,也只停留在第一章)。希望以這篇blog的文章為一個起點,能夠持續不斷地將這本書給看完!!加油!

單字分享!在Code Complete的序看到一個單字guru,覺得很有意思,首先是發音讓我想到魔戒裡的咕嚕,查了一下字典,意思是:『1.精神上的領導者 2.印度教的導師』。

Bookpool對Code Complete的介紹:http://www.bookpool.com/sm/0735619670

星期一, 5月 23, 2005

iPod Shuffle使用一週有感~Design Policy



使用iPod Shuffle一週以來,當然會發現不少缺點(特別是我完全沒survey就下訂單...),不過,這些不便並不因此掩蓋他的優點。

和一般市面上的MP3 player相較,iPod Shuffle最大的不同是,你一定得靠iTune才能夠使用『player』的功能,否則,他就真的只是一只512M的隨身碟。小黃家教的學生就complain說:『很不方便!』然而,我認為iPod的policy就是,讓音樂歸音樂,data歸data。

所以,透過iTune和iPod updater,他將整個iPod Shuffle的空間(或者說,是檔案系統)一分為二(可由user於iTune中決定大小);擺放音樂的空間就不是一般windows的FAT32,也無法辨識出一首一首的音樂。

音樂得透過iTune放入iPod中,雖然不若copy & past那麼方便,但是這卻也是他的好處。iTune將iPod視為他的一組播放清單,所以在上傳的同時,user也可以編排曲目的順序(一般的MP3 player都是讀檔、播放,因此是以檔名為播放順序),再加上iPod的size都很大(iPod Shuffle分512 M和1 G兩款),所以辛苦一次編輯好一份自己的音樂清單,就可以使用很久,自己編的清單也特別熟悉,所以找歌也很方便(當然,完全不care音樂播放順序的人,使用iPod Shuffle就很不適合,因為Shuffle連panel都沒有,只能靠聽覺辨別歌曲)。

Apple的多媒體產品總是以quality著稱,iPod也不例外。除了內附的耳機效果極佳,iTune在上傳歌曲時,會將歌曲的音量一致化,使得聽者在享受音樂的同時,無需為音量大小不一困擾,特別是音樂的來源是不同歌手、不同專輯。

另一個我認為是優點、但也被視為缺點的特性是,iPod Shuffle是透過USB充電。據說,美國不少玩家很不喜歡這一點,因為這個透過USB充電的電池大約只有兩年的壽命。而我,卻非常喜歡這個充電機制的方便性(而且電池很耐用,充電一次使用了一週還很夠的樣子),也算環保,因為不用一直換電池。以我家小白3300的身價,使用兩年,其實是差不多的。現在的科技日新月異,使用者也多半被慣得喜新厭舊(我當然不例外),兩年後天曉得我又會看上什麼新玩具,而且我也不大有把握,兩年內都不會把小白給fire掉:P

星期日, 3月 13, 2005

有意思的網頁resource

最近常常沿著朋友們的blog中的好站link一路往外連,拜訪了不少有意思的blog,也發現了一些滿好玩的網頁resource,挺有趣的。

  • Site Meter:一個滿有名的網站統計工具,不僅提供訪客數目而已,還根據訪客來源、domain、拜訪時間..等資訊,分析出訪客所在的時區、網站常被拜訪的尖峰時間...等資訊。
  • Fresco Workshops:利用java提供網頁訪客的前一個拜訪來源;簡單的說,就是列出訪客是由哪兒link到這一個頁面的,如google或kimo等入口網站。
  • 時鐘:提供網頁時間的資源就多了,我的blog上的時間來源是一個日本網站,是swf格式。
  • Weather Underground:這個網站不僅提供全球各地的氣象報導,也提供數種格式的Weather Sticker(我覺得還是有點兒少就是了)讓喜歡的人貼在網頁上;除了溫度,也有風向、濕度、日升日落時間等。以台灣來說,雖然許多許多都市的氣象報導都有提供,不過Weather Sticker就只有比較大的都市如台北、台南、高雄才有。

星期三, 2月 23, 2005

畢氏定理的證明

今天Ruby問我如何證明『畢氏定理』,曾經是數學系學生的我卻傻眼答不出來,因為很直覺的就想到要用代數的方式去證明,又想到這麼基本的定理一定很難證明,於是舉白旗投降。晚上小黃來家裡跟我拿東西,我隨口問了他一下,小黃先生居然說,似乎有上百種的證明方式!而且國中教師手冊就有!怎麼我一點印象都沒有?我的國中數學啊~

經小黃解釋,畢氏定理的證明方式真的是相當簡單。這裡列舉兩種。

  1. 利用正方形證明

    如圖,畫一正方形邊長為A+B,做出四個全等的直角三角形(藍色),則根據面積相等的觀念可得畢氏定理。
    4 x (0.5 x A x B) + C^2 = (A + B)^2
    => 2AB + C^2 = A^2 + 2AB + B^2
    => C^2 = A^2 + B^2
  2. 利用梯形證明(據說是某一美國總統所提出的)

    如圖,證明方式亦雷同。

星期五, 2月 18, 2005

Mac mini

昨天早上和部門的主管聊天,提到了一些電腦產品,主管立刻大力推薦Apple的iMac、iBook、和Mac mini,其中最吸引我的就是Mac mini!尺寸極小(16.51cm寬,5.08cm 高),大約是一個巴掌大,重量是1.32公斤(遠遠輕過我的Acer TravelMate 290),但配備卻並不遜色於一台NB,就差沒有螢幕、鍵盤和滑鼠,價格只有一萬七千多台幣。要挑毛病的話,就是在一本電腦雜誌上看到的,硬碟是5400轉、2.5吋的配備,但對於一般使用者是很夠了。



認識了Mac mini後,我想到的都是如何跟家庭生活、家電整合在一起。首先是,如果有電漿或液晶電視,便可以將Mac mini接上,在選配無線鍵盤、滑鼠(或藍芽也行)、無線網卡,就可以坐在客廳使用超大的電視螢幕做無敵多的事了:上網、多媒體欣賞、影音剪接....。如果再加上web cam、無線麥克風,還可以用來撥打VoIP電話或視訊電話;甚至設定好網路,裝上USB電話,不需要螢幕也沒關係。

因為MAC很穩,家裡的人也很少用電腦,操作MAC或window$對他們來說也沒有差別,當然更用不到很強悍的performance, Mac mini又便宜又好看,算是非常適合了;再加上不佔空間、接線也少,不會讓家裡的婆婆媽媽們看了很礙眼。有的人也認為拿他做server非常合適,系統穩定不需要螢幕,只要接上網路即可。

星期三, 2月 09, 2005

Blog的備份?

這一篇擺到技術類,真是不大好意思,因為這是我的疑問。

前一陣子,無名一直有狀況,雖然我也是挺擔心、也出了一些些力,不過怎麼備份這些資料就變成了我最近常想到的問題。好友Debby是採狡兔多窟的模式,我也試著在bloger落腳,但用了一陣子卻發現,儘管文章備份起來,不過朋友間的互動、留言版上的內容卻沒法兒複製過去。目前還想到一個方法,大概是最笨但最直接的方法,就是用 telport之類的軟體硬抓個人blog下的所有頁面。

不曉得各位朋友是否有更好的idea可以建議我呢?