preload
七月 29

Slash Dot Dash » Blog Archive » Create ISO CD/DVD image (.iso) with Mac OS X Tiger (10.4)

Tagged with:
七月 29

TTYtter Is A Complete Twitter Client Which Runs In a Console [Linux] ~ Web Upd8
Perl-y Tweets with TTYtter | The Linux Foundation Video Site

官方網站:TTYtter: an interactive console text-based command-line Twitter client and Perl platform (whew!)

Tagged with:
六月 24

一周前我和 Tinyfool 閒聊蘋果操作系統,都認為對於開發人員來說,蘋果操作系統(Mac OS)是上佳的選擇。 Tinyfool 筆頭很快,當即就寫了一篇長文章, 我則筆頭很慢,今天才全部碼好。 他的文章的主要切入點在於 Mac 平台作為目標開發平台的優勢,而我這篇的切入點主要是 Mac OS 作為一種開發工具的優勢。

開發人員的趁手工具
對於開發人員來說,所有的開發工具的最大的用途,就是最大限度的提高開發人員的生產率 (productivity) 和創造力(creativity)。在我們這個時代,使用 GUI (圖形界面) 是一個提高生產率的好手段。雖然上一代的那些 UNIX 開發人員的確不需要 GUI。一個屏幕,一個鍵盤,一個編輯器,在陋巷,人不堪其憂,也不改其樂的黑客比比皆是, 但二十多年過去了, 現如今開發環境發生了巨大的變化。 比如說,相比較於當年程序員使用的基於文本的環境,在 GUI 下格式豐富的文檔顯得更直觀,閱讀體驗更加好;就算工作中不需要開發任何 GUI 程序,現代開發人員也會使用 GUI 來完成網頁圖片和文檔閱覽等等。 因此,即使是最傳統的用命令行的開發人員,其實也能沾 GUI 的光。 比如說現在最好的終端程序,都是 X 下模擬的,因為這些模擬的終端的出現,一些復雜的可視化功能可以在這些終端中實現了,比如 Unicode 的顯示(rxvt-unicode)等等。

對於開發人員,擁有一組非常好用的,能夠最大程度的提高生產率的開發工具乃是一大人生夢想。那麼,這套開發工具從何而來呢? 大體來說,這些工具來自於三個方面: 1. 通過系統和單一的應用軟件提供的;2. 通過搭配使用各種應用軟件 3. 通過定制和改變現有的應用軟件。 這三點,對於 UNIX 開發人員是再熟悉不過的了, 無非就是寫腳本,走管道而已。 所以,在前 GUI 時代,這一套哲學非常盛行, 開發人員都知道,需要通過安裝腳本解析器,寫一些的腳本,配置一些環境等等,才能把剛出廠的 UNIX 系統,改造成自己使用起來得心應手的系統。 基本上任何一個使用 UNIX/Linux 系統多年的人,機器裡面都有各種各樣的「私藏」的腳本。離開了這些腳本,他的效率會大打折扣。

GUI 時代傳統的喪失

上世紀 80年代的時候,GUI 時代和個人計算機普及的時代降臨了。從此,計算機變成了個人電腦,歷史上第一次,計算機不是專為開發人員設計,而是為了普通用戶設計。普通用戶的需求就是完成一個一個的現實問題,軟件產業提供的解決辦法就是為用戶提供一個一個的應用軟件,而不是讓用戶自己一行一行的編程和寫腳本,巨大的軟件需求瞬間成就了一個巨大的軟件產業。 這樣的一個間接後果就是,對於普通用戶來說,讓一台計算機變成能夠幫助自己完成任務的「個人計算機」的唯一手段,就是疊床架屋的不斷的裝各種應用軟件。

我們可以用一個簡單的例子說明這種使用模式。 我們都知道,安裝 Windows 系統的一個經驗原則是把操作系統和應用程序分成兩個邏輯盤,一個在 C 盤,一個在 D 盤。這個磁盤分區的經驗原則不光網吧老板知道,連我大學裡面只會點鼠標的那些女同學都知道。為什麼有這個奇妙現象呢?其實,這是由 Windows 系統的用戶的典型使用模式決定的。 在 Windows 系統上, 應用程序和文檔是關鍵,操作系統只是一個隨時可以重裝的東西而已,所以干脆兩者分開,互不影響。在這樣的使用模式引導下,Windows 系統上格盤重裝是非常低成本的,只要文檔不丟,應用程序不丟就行。這種使用習慣,浪費了多少 geek 男美好的時光為人重裝系統,又促成了多少美妙的姻緣 :) 。 總之,在 GUI 時代,要解決一個問題,就裝一個應用程序。至於應用程序之間的通信,和用非鍵盤鼠標的方法控制應用程序等等,都不再是要考慮的問題,有這樣的需求的人成了非主流,非主流到以致於主流的操作系統和應用軟件都不讓你這麼干了。 操作系統把所有其他的路都封死,就是明擺著告訴你,要想某樣功能,請出門買軟件。

Smalltalk 的啟示


其實 GUI 時代原本不應該是這樣的。 我們都知道,GUI 原本是施樂的 Alan Kay 那一幫人做科研做出來的,Bill Gates 和 Steve Jobs 各自到施樂」抄襲」 了一部分過來,於是窗口啊按鈕啊就到處都是了。 他們都看到了圖形界面和面向對象的形, 看到了圖形界面就是把按鈕圖標等等對象放好,然後鼠標點擊拖動等等這些表面的東西。 因為所有的 GUI 界面都是從文字界面起步的,所以所有的 GUI 程序,其實就是原來的可執行程序的包裝。 C++ 這個語言的出現也很討巧,把 C 包裝成了一個面向對象的語言,包裝對包裝, C++ 很討巧的適應了把可執行程序 GUI 化的趨勢, 成了 GUI 時代的主流開發語言。從表面上看,只要運行這些可執行的程序,就能夠看到圖形界面,就能夠用鼠標點擊操作他們,可是這些東西的底層,都是一個編譯過了的可執行程序,原先 Smalltalk 中的那些運行時環境啊,對象容器啊,都統統不見了,所有的圖形界面程序,還是直接運行在計算機的 CPU 上,而不是一個虛擬的面向對象的容器上。而這個面向對象的容器(也叫做「運行時」或者「運行環境」),才是 Smalltalk 的神。 簡單的說,Smalltalk 本身具有一個面向對象的運行時,所以即使到了執行的時候,裡面所有的對象還是可以互聯互通的。 而 C++ 寫出來的程序,除了編譯之前是面向對象外,只要一編譯,就全部變成機器碼,和對象就再也沒有任何關系了,也就不存在運行時去動態的查看(inspect) 和改變(modify) 這些程序對象的說法。 總之,因為歷史的局限,這些 GUI 的平台,都是漸進的照貓畫虎的演變的,所以沒有一個平台像 Smalltalk 那樣細致地考量過對象的互相通信的問題,再加上我們上面說了,反正擴展系統的方法就是引入新的應用軟件而已,本身也沒有互聯互通的需求,所以這種拋棄運行時的,不讓對象被外部程序控制的實現方法也無所謂不好。

可是開發人員不是普通用戶啊,他們依然要改造計算機成為自己的工具的。在現有的現有工具不能解決問題的時候,要不然自己重新發明輪子,要不然就復用現有的一些工具,或者重新按自己的需求重新配置這些工具。 所以,和一般用戶不一樣,開發人員需要這些 GUI 的可配置性,也需要這些 GUI 程序之間的互聯互通。 用黑話來說,第一個問題關系到 GUI 應用程序的腳本化, 第二個問題關系到 GUI 程序之間的進程間通信。 這兩個問題,說起來簡單,但都牽扯到 GUI 系統的根本設計問題。 歷史在這裡開了一個不大不小的玩笑,把這個唯一的機會給了 Mac OS X。其他操作系統,都因為這樣那樣的原因,在這兩個問題上沒有很好的解決方案。 繼續閱讀 »

Tagged with:
五月 19

在終端機內輸入

sysctl -a hw

可得到硬體資訊,如CPU頻率、RAM大小等等。

Tagged with:
三月 20

wget 是在 *nix 下很好用的工具。有時候你想要把一個動態網站轉成靜態HTML,有時候你想要下載一個目錄下所有的 rpm、deb、iso 或 tgz 檔。有些時候你只是把檔案存下來,wget 都能做到。
這裡有些不錯的使用範例:

wget -r -np -nd http://example.com/packages/

這條命令可以下載 http://example.com 網站上 packages 目錄中的所有文件。其中,-np 的作用是不遍歷父目錄,-nd 表示不在本機重新創建目錄結構。

wget -r -np -nd --accept=iso http://example.com/centos-5/i386/

與上一條命令相似,但多加了一個 –accept=iso 選項,這指示 wget 僅下載 i386 目錄中所有擴展名為 iso 的文件。你也可以指定多個擴展名,只需用逗號分隔即可。

wget -i filename.txt

此命令常用於批量下載的情形,把所有需要下載文件的地址放到 filename.txt 中,然後 wget 就會自動為你下載所有文件了。

wget -c http://example.com/really-big-file.iso

這裡所指定的 -c 選項的作用為斷點續傳。

wget -m -k (-H) http://www.example.com/

該命令可用來鏡像一個網站,wget 將對鏈接進行轉換。如果網站中的圖像是放在另外的站點,那麼可以使用 -H 選項。

原文連結:wget: some quick tips | Tip o’ the Day
轉載來源:wget 使用技巧

Tagged with:
一月 20

想把某 iPhone App 的語系在地化,遇到 Localizable.strings 為編碼過的 binary 檔,沒辦法直接用文字編輯器修改。

找到方法把 Apple binary property list 轉成 XML。

plutil -convert xml1 path/to/preferences.plist

link: Convert a Binary Property List to XML – david winter

Tagged with:
十一月 12

Action

apt-get command

aptitude command

Install foo

apt-get install foo

aptitude install foo

Search foo

apt-cache search foo

aptitude search foo

Remove foo

apt-get remove foo

aptitude remove foo

List reverse dependencies

apt-cache rdepends foo

aptitude ~D foo

Print information on priorities for foo

apt-cache policy foo

?

Download foo’s sources and build a binary .deb package

apt-get source –compile foo

?

How to upgrade your distribution
Find out current version of Debian that you are running:

cat /etc/debian_version

Example for upgrading sarge to etch or etch 4.0r1 to 4.0r2 …etc

aptitude update
aptitude dist-upgrade

來源:Aptitude – Debian Wiki

Tagged with: