顯示具有 software 標籤的文章。 顯示所有文章
顯示具有 software 標籤的文章。 顯示所有文章

2013年4月9日 星期二

Foxit Reader for amd64 Linux

Foxit Reader is my favorite pdf reader when I was a Windows XP user. It has superior performance and much lighter than Adobe Reader. I wouldn't say Adobe Reader for Linux is worse, but most of the time I just want to read my pdf document without any special functions, therefore, I would definitely choose Foxit Reader on my Linux.

Foxit Reader for Linux provides three types of binries: bz2, rpm and deb. Though the rpm and deb files are for i386 only, they can still be installed on amd64(x86_64). Debian users may find it not that direct to install i386 deb, the complaint message is architecture conflicting. To resolve this issue for Debian, a force option is a must:

dpkg --force-architecture -i FoxitReader_1.1.0_i386.deb
However, followed by launching FoxitReader is an error message:
error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
No need to be panic. Let's check if we really miss this library:
locate libgtk-x11-2.0.so.0
and my Ubuntu did have this library:
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.10
The root reason for the missing-shared-object message is that the FoxitReader was built for i386 Linux thus it needs i386 version of libgtk-x11. What you gotta do is to install libs for i386:
aptitude install libgtk2.0-0:i386 libstdc++6:i386
For Debian amd64 users, some obstacles may be encountered. Debian amd64 will not allow users to install an i386 deb, therefore you need to let dpkg search i386 packages by executing:
dpkg --add-architecture i386 && apt-get update
to let Debian amd64 aware i386 repository. For other distributions, the package name will be similar libgtk2.0.i386 or something like that. The command of it is FoxitReader, now you may feel free to use Foxit Reader on your Linux.

Share

2013年2月27日 星期三

File differencing/comparison on Linux

某天我為了比較RHEL6.1與6.3在我們lab裡開機訊息的不同,驚見Mars大師用了一套叫WinMerge的軟體,可以分析兩個檔案的相異之處,而且還可以分析、合併資料夾,而且是用GPL發布的喔,建議在windows底下可以用這款WinMerge來作差異辨識。

Fig1. WinMerge Logo。

Fig2. 比較的對象可以是兩個檔案,也可以是兩個資料夾。

Fig3. 如果某些檔案指出現在某個目錄,WinMerge用『僅左邊』『僅右邊』來表示,雖然我個人不習慣這樣表示,但左右兩邊的路徑表示算清楚,不至於搞混。

Fig4. RHEL6.3與RHEL6.1開機訊息的比較。WinMerge貼心的用灰色代表沒有重複過的字串,黃色區域代表有重複但是數值不同的相似區域。沒錯,開啟RHEL6.3的時候產生Call Trace,系統就開不起來了。

在Linux底下其實也有許多選擇,不過我還蠻推一個輕便的gtk小程式:Meld:

Fig5. 別小看Meld,他可是很神的!

Fig6. 與WinMerge不同,他利用漏斗表示某些內容是顯示在對比檔案的哪個區塊內。可以用滑鼠在左有兩邊檔案自由滾動。

Fig7. 用Meld的好處是我可以很輕易的以某一行訊息為基準,比較上下內容的差異性。對我只看log的需求來說,已經綽綽有餘了。

或許你有想過diff就是最傳統比較檔案異同的指令,不過我承認我從來沒看懂過,特別是當兩個檔案差距很大的時候。看看下圖各位看不看得懂:

Fig8. 遇到複雜一點的檔案,diff會讓人看得更困擾。

如果你不喜歡meld的話,可能需要參考這篇:WinMerge Alternatives.

Share

2011年2月21日 星期一

GNOME動態桌布 (Wallpaper Slideshow)

上上禮拜重灌了我的Macbook Pro,也順便重灌了ubuntu 10.10。來澳洲很久沒有動腦筋寫程式了,我想寫寫簡單的shell script或許能提神醒腦一下;剛好email收到台南二寮的一些美麗照片,gnome從2.28以後(好像??)就可以動態變更桌布啦,只是他會去讀取某一個.xml檔。所以理論上就是準備好圖片,準備好讓gnome讀取的xml就搞定了。

雖然網路上已經有許多同好也寫了一些script或是程式,不過總覺得沒有自己寫來來得爽快。我的這隻程式功能非常簡單,就是只會在當前工作目錄找所有的jpg以及png檔,然後在當前目錄下建立一個xml,這個xml可以放置在任何地方,唯有圖片本身路徑不能任意移動(這好像是廢話@_@)。

  1. #!/bin/bash
  2. #############################################################
  3. # Filename: makeGnomeBackground.sh
  4. # Date: 2011/02/20
  5. # Purpose: changing background dynamically
  6. # Usage:
  7. #
  8. # Description:
  9. # Author: maxsolar(Jim T. Tang@IES, Academia Sinica)
  10. #############################################################
  11.  
  12. ###########################
  13. ## pre-defined variables
  14. ###########################
  15. # check if there are jpg or png files in current working dir.
  16. find `pwd -P` -maxdepth 1 -name "*jpg" -o -name "*JPG" > filelist.txt 2>/dev/null
  17. find `pwd -P` -maxdepth 1 -name "*png" -o -name "*PNG" >> filelist.txt 2>/dev/null
  18. [ $(cat filelist.txt | wc -l) -eq 0 ]  && {
  19.     echo "****************************************"
  20.     echo "No .jpg nor .png files found. Try other dirs. "
  21.     echo "****************************************"
  22.     exit 1;
  23. } || {
  24.     cat filelist.txt
  25.     echo "-------------------------------"
  26.     echo "$(cat filelist.txt | wc -l) Pictures were found."
  27. }
  28. year=$(date +"%Y" )
  29. month=$(date +"%m")
  30. day=$(date +"%d")
  31. output=$(basename "`pwd`" /).xml
  32.  
  33. ##main method
  34. read -p "Duration time between pictures?  (default=5) " duration1
  35. [ -z $duration1 ] && {
  36.     duration1=5
  37. }
  38.  
  39. read -p "Duration time within a picture?  (default=600) " duration2
  40. [ -z $duration2 ] && {
  41.     duration2=600
  42. }
  43.  
  44. ## part 1
  45. cat <<HERE > $output
  46. <background>
  47.   <starttime>
  48.     <year>$year</year>
  49.     <month>$month</month>
  50.     <day>$day</day>
  51.     <hour>00</hour>
  52.     <minute>00</minute>
  53.     <second>00</second>
  54.   </starttime>
  55. <!-- This animation will start at midnight. -->
  56. HERE
  57. ## part 2
  58. declare -a picArray=(`cat filelist.txt`)
  59. declare -i loops=$(cat filelist.txt | wc -l)
  60. for (( i=1; i<="$loops"; i++ )) ; do
  61.     ##The Last Loop
  62.     if [ $i -eq $loops ]; then 
  63.         cat <<HERE >>$output
  64.   <static>
  65.     <duration>$duration2</duration>
  66.     <file>${picArray[$i-1]}</file>
  67.   </static>
  68.   <transition>
  69.     <duration>$duration1</duration>
  70.     <from>${picArray[$i-1]}</from>
  71.     <to>${picArray[0]}</to>
  72.   </transition>
  73. HERE
  74.     else
  75.     ## in formal loops
  76.         cat << HERE >>$output
  77.  <static>
  78.     <duration>$duration2</duration>
  79.     <file>${picArray[$i-1]}</file>
  80.   </static>
  81.   <transition>
  82.     <duration>$duration1</duration>
  83.     <from>${picArray[$i-1]}</from>
  84.     <to>${picArray[$i]}</to>
  85.   </transition>
  86. HERE
  87.     fi
  88. done
  89. echo "</background>" >> $output
  90.  
  91. echo \"$output\" is made.
  92.  
  93. ## remove temparary file
  94. rm filelist.txt

這個script會讀取當前目錄下的所有jpg/png檔(不分大小寫),然後提問:
1.圖片間切換時間,直接按下enter預設5秒;
2.每張圖片的時間,直接按下enter預設600秒。輸出的xml檔名預設就是該目錄的名稱,建立成功會有提示出現。

在桌面空白處按右鍵->Change Desktop Background->Add

切換到想要gnome讀取的那個資料夾之後,選擇All Files,就可以看到該xml檔。

選取剛剛做好的xml檔之後,就可以在桌布預覽的地方看到我們剛剛的作品。

網路上也有幾篇好玩的可以看看:
Create Your Own GNOME Background Slideshow
[分享] Gnome動態桌布
自動換桌布的shell script

2011年1月30日 星期日

StarCraft II on Linux

星海爭霸II:自由之翼 其實本來在我的MacOSX上跑得好好的。但不知道為什麼,在Perth某一天更新之後,明明已經更新完成了,但是更新小視窗就消失了。點了桌面上的啟動圖示也沒用,又開啟了更新小視窗,然後又顯示下載更新,下載還沒結束小視窗又自動關閉;最後重新安裝StarCraft II也是一樣的下場。

後來,我把她安裝到我的WindowsXP上。不知道為什麼,效率其差無比,但是為了玩,只好將就。到了Adelaide之後,我的xp完全不能開機;塞了光碟片修復之後,雖然可以開了,但是windows的音效卡會自動消失偵測不到混音裝置。我再也沒有興趣跟力氣搞windows這種天生殘障的問題,所以我把腦筋動到wine:我可以輕易的在linux上安裝Office 2003以及CorelDraw 12,為何不試試看裝星海II呢?

在網路上找找StarCraft II on Linux這些關鍵字,看來許多人都成功的在linux上面快樂的玩StarCraft II,我怎麼能例外呢?於是塞進光碟片,就開使用wine來安裝啦!

安裝的過程有點音爆,後來就沒聲音了;字體也有些問題。其實我最不喜歡二代的地方是:她實在是太中文化了,一點fu也沒有。
執行遊戲之前一定要更新實在是很討厭的事情。我這裡網路很貴,安裝玩大約又下載了快400mb的更新程式來安裝,我這禮拜不用上網了。不用上網表示也不能玩SCII了...
不知道為什麼,取截圖總是會有空白的部份...這是在啟動compiz的時候截圖的,剛好截到我女友美麗的眼睛,真是過份...
我等這幕等了好久!真的不知道要更新到何年何月...
終於可以連進去玩了!所有音效、字體、設定等都完全正常,當然必須把compiz關掉,然後把遊戲的特效都切到最低,但還是沒辦法擷取完整的圖,很奇怪;我唯一不肯退讓的是解析度,所以進行遊戲時,我的MacBook風扇瘋狂的運轉,但跑起來並不會停頓,比我在xp上效能還好,果然是我鍾愛的Linux,強而有力,從沒讓我失望!

我是完全沒有遇到任何遊戲上的問題,但是聽說有些人遇到音效上的問題,或許可以參考這兩篇文章:

2011年1月8日 星期六

Ultraedit For Linux(UEX)釋出

UltraEdit For Linux/Mac版其實去年八月底就釋出了,截至目前為止(2011.01.08)在MacOS上的最新版本是2.0.0.2,在Linux上則是1.2.0.12,針對Ubuntu/Debian, OpenSuSE, Redhat, Fedora四大類Linux發行版本提供32及64bits版本的安裝程式。對於非上述Linux的版本則提供以編譯好的tarball,解壓縮之後就可以直接使用。

試用版提供30天的試用期,不管這30天你用多少次,30天之後就會強迫要求輸入註冊碼,否則就會自動關閉。

我們來試用看看吧:

  1. Download UltraEdit Linux 1.2.0.12 patch。如果連結失效的話,試試看這裡
  2. 到UltraEdit Linux下載頁面根據你的作業系統下載相對應的版本。
    除了下載deb或rpm檔之外,請再額外下載最下面的tarball檔。
  3. 將uex的tarball解壓縮,假設解在桌面,然後先進到/home/maxsolar/Desktop/uex/bin裡。
  4. 再將剛剛下載的patch解壓縮,複製其中的UltraEdit_1_2_0_12_Patch_by_Pesymista到/home/maxsolar/Desktop/uex/bin裡。在這個目錄裡執行:
    ./UltraEdit_1_2_0_12_Patch_by_Pesymista
    執行如果有成功,應該再輸入./uex &就可以正常試用UEX。
  5. 到此為止只是先取得一個uex可以執行的環境,設個PATH環境變數就可以正常執行了。可是我希望系統開啟文字文件可以自動辨識有uex可以使用,因此我們現在來安裝他:
  6. 以Debian/Ubuntu為例:
    dpkg -i uex_1.2.0.12_i386.deb || apt-get install -f
    以Fedora 13為例:
    yum localinstall --nogpgcheck UltraEdit-1.2-0.12.fc13.i686.rpm
  7. 接下來,只要複製剛剛patch好的二進位檔就可以了:
    cp /home/maxsolar/Desktop/uex/bin/uex /usr/bin
    rm -r ~maxsolar/Desktop/uex

如果你一開始就安裝deb/rpm到系統上,使用patch並不會成功,或是雖然顯示成功但執行時卻警告segmentation fault;這個方法是個迂迴的方式,讓使用者可以方便的試用UEX。最便宜的單人使用是49.95美元(還說省了10元...)至於有沒有那麼棒的經濟效益就看個人使用需求再選購囉!

2010年5月3日 星期一

[轉載]Steve Jobs的公開信談Apple拒絕flash

全文轉載自:Steve Jobs談為何蘋果討厭吃Flash(完整公開信,中文版),ZDnet Taiwan


蘋果跟Adobe有很深的關係,我們還曾在他們草創的車庫裡跟Adobe創辦人見過面,蘋果是他們第一個大客戶,把他們的Postcript語言用在我們新的Laserwriter印表機中。蘋果曾經投資過Adobe,也曾一度擁有Adobe 20%股權多年。我們曾密切合作創新推出桌面出版,雙方都有過許多甜蜜時光,但過了那段蜜月期後,我們就漸行漸遠了,蘋果歷經瀕死經驗,Adobe則以Acrobat產品打入企業市場。今日,我們依然共同服務雙方共有的創意客戶群,Mac用戶大概買了半數Adobe的Creative Suite產品,但除此之外,雙方已經殊少交集了。

我之前很想寫出我對Adobe Flash產品的想法,好讓大家能更瞭解為何我們不想讓Flash進到iPhones、iPods與iPads。Adobe一直認為我們的決定是出於商業考量,他們說我們這麼做是要保護App Store,但其實這一切都只是出於技術考量而已。Adobe說我們是封閉系統,而Flash是開放的,但事實根本相反,我在此解釋一下。

首先是開放問題。

Adobe的Flash產品是100%專屬的,僅能由Adobe提供,未來怎麼發展、價格等也全看Adobe自己的決定。雖然Adobe的Flash產品廣為使用,但這不代表他們是開放的,因為這個技術由Adobe自家掌控,從任何角度來看,Flash都是封閉系統。

蘋果自己也有很多專屬產品,不過iPhone、iPod與iPad雖然是封閉的,但十分相信所有跟Web有關的標準都應該公開。蘋果捨棄Flash,改用HTML5、CSS與JavaScript,這些都是公開標準。蘋果的行動裝置要用最高性能、最低耗電的部署方式推出。HTML5(蘋果、Google等都已經採用此一新標準)可讓Web開發者建立更先進的繪圖、字型、動畫與轉換,完全不需仰賴第三方瀏覽器外掛(不像Flash那樣)。HTML5完全開放,由標準委員會控制,蘋果也在其中。

蘋果甚至也自創Web的開放標準,比如,蘋果弄了一個小的開放原始碼計畫稱為WebKit,這是一個完整開放原始碼HTML5呈現引擎,是Safari網頁瀏覽器的核心。WebKit目前已經廣為採用,Google在Android的瀏覽器也有採用,Palm也是,Nokia也有用,RIM(BlackBerry)則已經宣布未來會採用。現在幾乎除了微軟以外,其他主要智慧手機瀏覽器都是使用WebKit。蘋果把WebKit技術開放出來,讓行動網路瀏覽器立下了標準。

Adobe也不斷說蘋果行動裝置無法存取完整的Web,因為75%的網路影片都是以Flash製作。但他們沒說的是,這些影片同時也都有提供更現代的格式:H.264,可在iPhone、iPod與iPad上觀看。YouTube(佔了網路影片40%市佔率)便可用在一款蘋果行動裝置都有搭配的應用程式中,iPad所提供的YouTube觀看經驗看是無與倫比。若再加入Vimeo、 Netflix、 Facebook、 ABC、 CBS、 CNN、 MSNBC、 Fox News、 ESPN、 NPR、 Time、 The New York Times、 The Wall Street Journal、 Sports Illustrated、 People、 National Geographic、等等的影片,則iPhone、iPod與iPad用戶並沒有少看太多影片。

Adobe還宣稱蘋果機器無法玩Flash遊戲,這點說得沒錯,但還好我們的App Store有超過5萬種遊戲程式,其中還有許多都是免費的,事實上,iPhone、iPod與iPad可用的遊戲比其他任何平台都還要來得多。

第三,我們看中穩定性、安全性與效能

賽門鐵克最近特別指出Flash是2009年安全性最差的軟體之一,我們也一手深知,Mac當機的頭號理由都是出在Flash。我們曾跟Adobe合作修正這些問題,但這些狀況多年下來依然存在,我們不想因為加入Flash而降低iPhone、iPod與iPad的穩定性與安全性。

此外,Flash在行動裝置上的效能不佳,我們多年來多次要求Adobe提出一個可在行動裝置上擁有良好效能的Flash版本,但我們從來沒看過。Adobe曾公開表示Flash會在2009年初用在一款智慧手機上,之後改口說是2009年下半,之後又延至2010年上半,現在則已經變成2010年下半年了。我們相信最終他們還是會推出,但還好我們不需癡癡等待,誰曉得屆時效能如何?

第四點,電池效能問題

播放影片若要達成電池長效,則手機必須能在硬體中進行影片解碼,若用軟體解碼會耗費太多電力,許多新一代行動裝置中所使用的晶片都含有H.264解碼器,這是一種產業標準,用在每一台藍光DVD播放機中,包括蘋果、Google(YouTube)、Vimeo、Netflix等大廠也都有採用。Flash最近雖然也加入支援H.264,但目前所有Flash網站的影片則必須使用較舊版本的解碼器,無法用在行動晶片中,且必須用軟體來執行,這兩者的差異十分顯著,比如在iPhone上,H.264影片可播放10小時,但若用軟體解碼,則只能播放5小時電池就沒電了。

網站若以H.264來重新編碼影片,則不需使用Flash就能提供出來,他們可在所有瀏覽器播放,比如蘋果的Safari或Google Chrome,不需外掛,而在iPhone、iPod與iPad上觀看效果都很好。

第五,觸控問題

Flash主要是提供給使用滑鼠的PC,而非給使用手指的觸控螢幕,比如許多Flash網站都都使用所謂的「rollovers」(滑鼠移過去會有動作),但蘋果的多重觸控介面不使用滑鼠,也沒有rollover概念。多數Flash網站都得重新改寫才能支援觸控裝置。若開發者需要重寫Flash網站,那何不乾脆使用更現代的技術,如HTML5、CSS與JavaScript?

就算我們真的支援Flash好了,這也無法解決多數Flash網站都必須改寫才能支援觸控裝置的事實。

第六,最重要的理由

除了上述缺點外,我們不允許Flash進入我們的行動裝置還有個最重要的理由:Adobe希望開發者使用Flash來開發可在我們行動裝置上可使用的應用程式。

我們從過去慘痛的經驗得知,讓一個第三方軟體層介入平台與開發者之間,則最終出現的都是次等程式,阻礙平台的創新與進步。若開發者變得很仰賴第三方開發資料庫與工具,則若第三方不提供新功能,他們就無法享受到平台更新的好處,我們不可能讓第三方來決定他們何時會把更新提供給我們的開發者。

若第三方還提供跨平台開發工具,情況則變得更糟,第三方有可能會等到所有平台的更新版本都準備就緒了才會推出,不必然會為單一平台推出更新,結果開發者僅能使用最大公約數的功能。我們無法接受這種結果,開發者竟然是因為其他平台還沒準備好,所以無法使用我們的創新功能。

Flash是跨平台開發工具,Adobe的目標並非協助開發者撰寫最好的iPhone、iPod與iPad程式,他們的目標是協助開發者撰寫跨平台程式。而Adobe向來對於蘋果平台的更新十分緩慢,比如,Mac OS X已經推出快10年了,Adobe才剛在兩週前推出的CS5才完整採用。Adobe是所有主要第三方開發者中,最慢完整採用Mac OS X的。

我們的出發點很簡單,我們希望提供最先進創新的平台給我們的開發者,我們希望他們是直接站在我們的平台肩膀上,寫出全世界最好的程式。我們會持續強化平台,好讓開發者寫出更棒、更強大、更好玩、更實用的程式。這是三贏局面,我們可賣出更多機器,因為我們有最好的程式、而開發者也可接觸更多的客戶,而使用者則可享受到最多的程式選擇性。

結論

Flash是PC與滑鼠時代的產物,Flash的確是Adobe的成功之作,也因此我們能理解為何他們想把Flash延伸至PC之外,但行動時代講究的是低耗電、觸控介面與開放Web標準,Flash在這幾個方面都是不及格的。

這麼多媒體爭相提供內容讓我們放在蘋果行動裝置,顯示Flash已經成了觀看影片或任何Web內容的雞肋。而蘋果App Store超過20萬種應用程式證明開發者不需要Flash一樣可寫出圖像十分豐富的程式,包括遊戲。

行動時代所新推出的開放標準(如HTML5)將在行動裝置上勝出(PC亦然)。或許Adobe應該多花一點時間專心在未來推出好用的HTML5工具,而不是不斷批評蘋果太不念舊。
Steve Jobs

April, 2010


全文轉載自:Steve Jobs談為何蘋果討厭吃Flash(完整公開信,中文版),ZDnet Taiwan

(陳奭璁譯)

2010年2月12日 星期五

[轉載] 追求神乎其技的程式設計之道

追求神乎其技的程式設計之道是vgod大在部落格發表的一系列文章,並計畫出版成書。點閱了vgod是誰?才赫然發現原來vgod也是台中一中校友,算算畢業年份也是我學弟呢!學弟現在都在美國唸博班了,我竟然還在這裡不知何時才能出去...

哈,言歸正傳,雖然一直到退伍半年後才開始學寫程式,但是卻激起了對程式設計無比的熱愛。當然,一個好的程式設計師跟優秀的程式設計師其實是差十萬八千里,骨子裡是完全不同面向的東西;我可以寫出一個互動良好,功能完善的小程式,卻無法寫出效能優異的程式,原因在於我們沒有受過好的資料結構及演算法的訓練。作者vgod也參加過國際奧林匹亞資訊組競賽,哈哈,我以前參加地科組連校內資格都沒過呢!

vgod大有很非常值得程式設計師一讀的好文章,也不乏有很多跟我相同的成長經驗(vgod應該小我兩屆^_^),請各位參觀vgod's blog,也可以訂閱他的文章

追求神乎其技的程式設計之道(一)

追求神乎其技的程式設計之道(二)

追求神乎其技的程式設計之道(三)

追求神乎其技的程式設計之道(四)

追求神乎其技的程式設計之道(五)

追求神乎其技的程式設計之道(六)

追求神乎其技的程式設計之道(七)

追求神乎其技的程式設計之道(八)

追求神乎其技的程式設計之道(九)

追求神乎其技的程式設計之道(十)

qing大的程式設計的兩個觀點(1/2)程式設計的兩個觀點(1/2),也是非常好的文章。

當然,JosephJ大也針對vgod大的文章法表了自己的感想,也很值得一讀喔!
吃你自己的狗食、工程師當自強

我們做科學研究的,不可能有時間去把一個程式寫得讓資工背景的專家也能肯定的程式;但是對於我們必須靠撰寫程式來解決問題的人而言,越了解程式語法、進而了解資料結構、演算法的問題,就越能夠讓你的問題在短時間內得到解決。希望有越來越多人一起走入程式設計的美麗世界!

2009年12月22日 星期二

XP theme for GNOME

最近再討論版上看到有網友分享一個XP theme for GNOME環境的套件,看起來很方便,點兩下script就可以變成XP主題,另外也還有還原的script,看起來真的很屌,真的可以魚目混珠呢!
請參考這個網站:
http://ubuntu.online02.com/node/14

不過我沒有去嘗試這個就是了,因為我一點也不覺得XP的佈景好看@_@
不過喜歡XP佈景的朋友可以試試看,順便告訴人家這是一個不會中毒的XP@_@

2009年12月21日 星期一

Gantt chart(甘特圖) on Linux

甘特圖(Gantt chart)是一種描述各項目隨時間開始與結束的一種表達方式,專案管理方面的人可能對於這個東西比較熟悉。我第一次聽過甘特圖是幫老闆修改氣象局計畫細節的時候用的。
很幸運瀏覽Wekey-wiki時發現原來甘特圖已經被透過GanttProject計畫用java寫成一個跨平台的軟體。他是自由軟體,但並不是用GPL來宣告;她上面也聲明可以修改他的原始碼,也可以修改後作商業用途,不過找了一下還是沒看到source code。如果只關心binary的話,我們可以到這裡下載便於安裝GanntProject的版本,或是直接下載最新的版本(2.0.10):
wget -c http://ganttproject.googlecode.com/files/ganttproject-2.0.10.zip
壓縮後放到任何地方都可以,可以發現他是靠著script來啟動ganttproject的。由於java執行的方式跟環境比較特殊,用script來幫助執行java程式是非常常見的手法。我們來看看他的script:

這已經算是寫得很棒的script了!不過我還是想作一些修改:

我只是簡化了一些變數的宣告以及java環境的測試。不過很可惜的,由於作者啟動main方法需要讀取一個xml檔,這種呼叫方式我無法不切換目錄(cd $GP_HOME那行)來完成啟動Main class,而這也是我當初要改這個script的最主要原因。倘若所有環境都包在jar裡面,就不用額外宣告classpath,其實是減輕使用者許多負擔的。
作個軟連結,這個程式就可以上線啦!
chmod +x /opt/ganttproject-2.0.10/ganttproject.sh
ln -s /opt/ganttproject-2.0.10/ganttproject.sh /usr/bin/Ganttproject
這樣就可以直接呼叫Ganttproject來使用囉!
啟動GanttProject!!
新增一個專案來玩玩(其實我根本不知道怎麼用!!)
設定一些可以參考的資訊在上面。
拖曳以設定duration。
可以拖曳進度(黑色的bar)
也可以設定milestone以得知進度狀況。
上面的flash教學是用比較舊版的ganttproject所錄製下來的,我照著教學步驟去作,發現新版根本無法像舊版這樣快樂的使用拖曳來變化duration。
照著flash範例教學所做出來的甘特圖!(真不是普通的醜@_@)
把辛苦的成果匯出看看!(果然是WYSIWYG的醜!!!)

2009年12月9日 星期三

Google Chrome beta release!!!

等待已久的Chrome for Linux終於釋出beta版了!!先前使用open source的chromine仍然還有許多問題,其中最為人詬病的就是flash支援的極差。Google釋出beta版大家可是睜大了眼睛在看呢!請各位看官到http://tools.google.com/chrome/?hl=zh-TW下載,或是到http://www.google.com/chrome/intl/zh-TW/w00t.html欣賞一下世界各地勞苦功高的開發人員開發chrome for linux的經過~

假設你常用的是firefox,第一次啟動chrome時會匯入firefox的所有設定,包含書籤、密碼、cache等等,非常貼心。

我迫不及待的想拿他來測試flash!!最好的方法就是拿一個swf來測試啦!玩起音速小子,真是超順暢的啦!!

那麼能不能偵測到我的JRE呢?測試看看便知道!

可以偵測到耶!真是方便!

如果預設的字型跟locale以及coding都不適合的話,也很方便做細部調整!

等待各位去發覺的extension!!

還有很多佈景主題喔!不過,當然沒有firefox多就是了!

目前為止還沒發現太多問題,我想請大家依起共襄盛舉測試beta版的chrome for linux,畢竟大家真的等了好久好久!!

我最常用的幾個extension!跟大家分享!!

我強力推薦使用chrome的原因是,chrome非常的輕巧,她可以一次開20多個分頁不會當機,然後關閉再開啟的這些分頁也很快的起來;相較之下,firefox就非常笨重且耗資源,光是開四個分頁cpu loading就超過50%!基於效率跟安全性,我會選擇google chrome。

延伸閱讀:
Chromium for Linux

2009年11月12日 星期四

linux上的pdf合併-刪除-旋轉-編輯-加密-破解密碼筆記

PDF檔案格式是目前最重要的檔案格式之一,因為她可以確實保留住檔案的格式,包含字型以及圖形顏色、比例,並且提供解析度極高的列印效果。本文僅就最常用的合併、拆解、旋轉、加解密,以及簡單的編輯功能作筆記。

pdftk(pdf toolkit)是一套可以拆解、合併pdf的超實用小工具,還可以進行加解密,頁面旋轉、解出metedata,書籤、資料欄位等非常多專業功能!解決了往常只有Adobe Acrobat Professional才能使用的功能。隨著pdf越來越普及,字型跟格式都越來越要求跟在不同平台下有完全相同的呈現方式,我們確實是需要學習這樣的實用工具。更棒的是,他是開放原始碼並且以GPL授權的軟體,在許多linux上都是可以直接安裝的,太方便了!
以下我僅翻譯網頁中的範例,在加上自己的註解作為筆記。

  1. 合併多個pdf檔:
    pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf
  2. 從數個pdf檔取出某幾頁並合併成另一個檔案:
    pdftk A=1.pdf B=2.pdf cat A1-7odd B2-endeven output combined.pdf
    取出1.pdf的1,3,5,7頁跟2.pdf的2~最末頁,合併成combined.pdf
  3. 頁面旋轉:
    pdftk src.pdf cat 1E 2-endoddW 2-endevenS output.pdf
    第一頁順時針旋轉90度,之後的奇數頁逆時針90度,偶數頁轉180度。
    其中,E=R(right), S=D(down), W=L(left),當然也可以ESW跟RDL混用。
  4. 整份文件上下顛倒:
    如上,其實就是使用D或S參數:
    pdftk src.pdf cat 1-endS output rotated.pdf
  5. 加密pdf檔案:
    pdftk預設的加密強度是128bits,範例如下:
    pdftk plane.pdf output encypt.pdf owner_pw 加密密碼
    另一個強度較小的為40bits,他可以節省不小檔案大小:
    pdftk plane.pdf output encrypt.pdf owner_pw 加密密碼 encrypt_40bit
  6. 加密檔案其實只是限制你不能修改某些受限的部份,如果要求輸入密碼才能開啟這份pdf檔:
    pdftk encrypt.pdf output lock-encrypt.pdf user_pw 使用者密碼
  7. 解密檔案:
    pdftk encrypt.pdf input_pw 加密密碼 output decrypt.pdf
  8. 檔案加密還為了防止他人複製、修改及列印內容。要允許使用者可以列印:
    pdftk plane.pdf output encrypt.pdf owner_pw 加密密碼 user_pw 使用者密碼 allow printing
    允許的動作如下:
    1. Printing

      高品質列印
    2. DegradedPrinting

      低品質列印
    3. ModifyContents

      允許修改內容(包含架構)
    4. Assembly

      僅允許修改架構
    5. CopyContents

      Also allows ScreenReaders
    6. ScreenReaders

      ...這個不是很懂
    7. ModifyAnnotations

      可修改註解
    8. FillIn

      ...這個不是很懂
    9. AllFeatures

      以上所有的options全都開放。
  9. 合併兩個檔案成一個為加密的檔;其中一個檔為加密檔案:
    pdftk A=encrypt.pdf B=plane.pdf input_pw A=加密密碼 cat A B output combined.pdf
  10. (少用)若pdf的page串流有經過壓縮,則會無法修改pdf code。利用uncompress來解壓縮:
    pdftk src.pdf output plane.pdf uncompress
    同理,你也可以下compress指令來壓縮。
  11. 將pdf檔每一頁獨立存成個別的pdf檔:利用burst指令
    pdftk large.pdf burst
    他會在當前目錄產生一個doc_data.txt的log檔作為紀錄。
  12. (少用)修復資料串流長度以及XREF table:
    pdftk broken.pdf output fixed.pdf
  13. (少用)加入浮水印:
    pdftk contents.pdf background Watermark.pdf output contents_WM.pdf
    pdftk contents.pdf stamp Watermark.pdf output contents_WM.pdf
    從指令上也能看出是否要讓浮水印蓋過圖片,細節上還請參考Lloyd神人的在 PDF 上加浮水印
  14. 印出pdf檔裡所有的metedata(就是書籤、頁籤、所有屬性等等):
    pdftk A.pdf dump_data output report.txt

事實上還有更多細節的功能,不過礙於自己也不是很懂,節錄這些常用的功能應該就非常足夠。另外,關於PDF密碼的一些概念,這裡作一些簡單的介紹。pdf的「密碼」大致兩種類型,一種叫Document-open password,另一種則是Permission password。Document-open password是開啟這個pdf檔所需要的密碼,跟使用者比較相關,也稱之為user_pw;Permission password比較像是administrator/owner的密碼,只有所有人才能修改裡面的內容以及關鍵屬性,又稱之為owner_pw。在pdf 1.4以及更早的時代(也就是acrobat 5.0),加密強度僅40bits;到了現在強度已經到128bits;到了Acrobat 9.0以後,導入了AES加密演算法之後,加密強度已經高達256bits,不過pdftk還不支援這麼高的強度;就算支援,做雜湊加密跟解密的時間也會很久。

其實你還可以找到pdftk的gui版本--GUI for pdftk,該作者也大方的提供了各種不同版本給各種作業系統使用,不過他所使用的函式庫實在是太舊了,就算我用軟連結仿造一個他要的版本給他,在執行上仍會有macro mismatch的錯誤,反正pdktk幾乎是無敵的,我也就不理會是否有圖形介面了。

在Windows下有著名的軟體:PDF password recovery--能破解pdf密碼的障礙,那麼在linux底下呢?

pdfcrack是一套基於GPL的開放原始碼的程式,她自動偵測加密長度,並且用內建字典逐個測試。破解密碼時間的長短仰賴於cpu的能力。sourseforge僅提供原始碼,不過別擔心,編譯一定會成功的,只要你有裝gcc的話。


另一個方法是使用wine去模擬windows下破解pdf密碼的軟體。我以pdf password remover做測試,並且利用pdftk隨便加密一個pdf來試驗,發現雖然她似乎能很快的
產生一個乾淨的pdf檔,但是我的pdf內容卻全部被清空!不知道是wine的原因還是如何,總是這看來不太成功。

另一個解決方案則是GuaPDF。GuaPDF這間公司提供了Demo, Local Quad, Distributed以及UNLIMITED四種版本,包含solaris,linux,windows,macos四種平台。Demo版本是免費使用的,如果你的顯示卡是nvidia的晶片且安裝了cuda驅動程式,解密速度可以比一般僅用cpu功能的電腦快上七倍。

linux Demo
MacOS Demo(Intel)
Solaris Demo
Solaris x86 Demo



利用GuaPDF能快速的產生一個未經加密的pdf檔,解密之後用Acrobat reader可能會有一些錯誤訊息,這是很正常的。


但是畢竟是demo版,您可能會遇到下列錯訊息:

  Guaranteed PDF Decrypter v. 3.1 (freeware DEMO version) - CPU version
 (c) PSW-soft, 2000-09, by P. Semjanov, S. Lysak. http://www.guapdf.com
 This product includes software developed by the OpenSSL Project
 for use in the OpenSSL Toolkit. (http://www.openssl.org/)

'Corring, Kay, JP 2001, slab window Argentina.pdf' is the uncompressed document with 40-bit RC4 encryption
This document has no user password, only restrictions present

Key found! (exact value is  7F 7A AC E3 FC)
Would you like to decrypt it now?y
Decryption in progress, please wait...
  0% complete
Warning: Demo limitation reached in line 430
Your file is 100% supported by GuaPDF and decryption is guaranteed, but
demo limitation was reached and file was not fully decrypted and saved as
'Corring, Kay, JP 2001, slab window Argentina.decrypted.pdf'.
It may contain only few (or zero) readable pages and/or produce any error messages.
Please get the full version to correctly decrypt this file.
這是因為demo版限制只能用在430行以內的pdf檔,只好依照需求去跟他買羅~

所以現在我可以用pdftk來任意整理我的pdf文件,GuaPDF來克服某些學術檔案無法列印或複製的問題。

如果要編輯pdf檔案本身,除了要有好工具之外,還需要會一些pdf的語法,這就超過了筆者的能力範圍;不過簡易的修改pdf,仍然可以透過pdfedit這個小程式來幫忙:


pdfedit可以從套件庫裡直接安裝喔!建議閱讀官方網站提供的閱讀文件。如此一來,編修pdf檔時就不需要用vbox開一個windows又使用盜版軟體了!

2009年8月7日 星期五

Chromium for Linux

當我們談到Chrome for Linux時,就不免會看到Chromium這個字。實際上,這兩者是不同的東西:Google Chrome乃是根據Chromium這個開放原始碼的計畫去實做的。Chromium這個計畫並非以GPL授權,反之是以更自由的BSD的許可方式授權。詳細介紹可以參閱WikiPedia;版本上,Chromium每隔幾小時就會有一個更新,當測試後確定為穩定版本後,就會被Google納入Google Chrome裡,因此可以說Chrome是Chromium的穩定版本。然而,Google並沒有發布Chrome for Linux的穩定版,因此我們在linux所使用的都是Chromium for Linux,或是Google所打包的Google Chrome for Linux不穩定版(還是Chromium,只是灌上了Google的名字罷了),請特別注意。

Google Chrome Chromium

我們可以從Chromium開發者文件找到適合各種平台跟版本的Chromium來安裝。

Mac userGoogle Chrome.dmg
Debian-lile Linux(i386)google-chrome-unstable_current_i386.deb
Debian-lile Linux(amd64)google-chrome-unstable_current_amd64.deb

如果您是Debian的使用者,甚至可以加入google repository到/etc/apt/soutces.list裡:

deb http://dl.google.com/linux/deb/ stable non-free

如果您並非Debian-like的linux,可以到build.chromium.org下載每幾小時更新的「免安裝」版本:相較於以上是由Google官方所打包,這個版本就是最純的Chromium For Linux的版本了。

小結:
1. Chromium For Linux一開始就會偵測系統其他的瀏覽器,並且詢問是否要自動匯入到Chromium裡,很方便也很貼心。
2. 我所安裝的Chromium for Linux(from build.chromium.org)還是無法顯示含flash以及java的網頁,除非啟動時加入--enable-plugins。可以參考Google Chrome Linux 已經堪用了一文,裡面有網友熱心提供的一些建議參數可以使用。
3. Chromium for Linux還沒有實做出privacy feature,因此不建議一般人使用。
4. 尚未支援列印功能。

延伸閱讀:最友善IE版本!

the picture is cited from DeadDog.