Pages

Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

May 8, 2006

GC三兩事

參數式和演算法概念慢慢在幾位前衛建築師身上落實,從Gehry到Arup和KPF,愈來愈多學校也開始重視這種新設計方法。支援這類新設計的工具也慢慢浮現,例如CATIA、Bentley GC、到硬碰硬的程式撰寫。其中GC算是後起之秀,雖然也研發了十年左右,到目前還在測試版,最近兩三年總算媳婦熬成婆,愈來愈多建築師和學校開始採用它。

GC全名Generative Components,架構在Bentley MicroStation的Triforma的Structural上,至於為何如此繁複的層層相依,我也不暸,也許開發當初就這麼莫名奇妙開始、也許因為這些基礎架構功能豐富、也許Bentley希望大家愛用自家產品。

GC概念上不難,只要把玩過視覺化程式設計環境(如Lego MindStormsMax/MSP)就容易了解,只不過他處理的是幾何物件。GC把建模過程程序化、隨時可以回溯進行修改、它會紀錄修改過程、並可以把建模程序打包進行模組化(或函數化),在彈性、自由度與再利用上頗具吸引力。

然而GC缺點倒是一籮筐,首先視覺化設計環境挺糟、建模程序的管理十分繁複、絕大部份好用的功能還得依賴寫傳統程式碼來呼叫內建函數,最大的問題是系統介面一致性的問題。當然就測試版軟體來說還有很大改進空間,聽說Bentley計劃下半年GC就要上市,如果不大幅改進,我看這個具有理想性的工具終究得面臨殘酷現實的考驗--無比挑剔的使用者們。

因為知道AA和MIT都採用GC在設計運算教學,幾個月前滿懷熱忱的聯繫GC小組,希望獲得支援讓我在台灣進行教學,然而卻石沉大海。年初有個機會到倫敦參加GC Workshop,滿懷熱忱的報名,得知參與人數眾多,而他們只對有實際問題的建築案有興趣,所以我又無法獲邀成行。前兩個月回Boston時很幸運的碰到GC workshop在GSD舉辦,就順理成章的暗渡陳倉了,也終於和GC負責人面對面聊過,終於弄清楚GC的發展策略,很不幸不是我欣賞的方式。他們採取保守的閉門方式進行研發,一來研發人員少,二來他們希望維護品質與針對市場需求,所以GC很謹慎的選擇測試夥伴並針對特定實務問題進行改善,對於學校的支援僅止於市場推廣的興趣,而且仍然很保守的選擇合作學校,所以他們對於亞洲仍處於鞭長莫及的態度,十分保留,除非我能湊集亞洲地區對GC感興趣的學校或建築師,他們才會考慮來亞洲進行workshop。

不過有個雞生蛋、蛋生雞的問題,GC仍是測試版,雖不用錢但取得管道很有限,而且還要依附於三套Bentley重量級軟體上,也就是說我如果要幫忙推廣,首先要花大錢買軟體,然後我還要告訴感興趣的人說這些錢值回票價;再來,如果我沒有辦法展示,那怎麼推廣?

想想過去幾個月GC小組對我的詢問或亞洲市場興趣缺缺的態度,我都開始考慮幫他們做負面宣傳了(是有點酸葡萄)。衝著最近幾個著名案例都用到GC,一頭熱想接觸它,不料我雖然感興趣、卻無法得到Bentley支持,看來除了在課堂上拿來當案例研究、秀幾張圖逗逗大家胃口外,就只能看戲。當然,積極一點就是找個類似產品或自己開發一個來刺激Bentley,不過這是另外一回事了,往後再談。

註一:對建築設計,參數和演算法算是新東西,但就其他藝術領域來說,例如視覺設計和音樂作曲,這是十幾二十年的老東西了。
註二:我所指的Bentley或GC小組是英國總部,不是台灣分公司。

May 24, 2005

非主流數位工具

拿數位媒材研究來說,除了主流的 nVidia, ATI, Cg, Virtools, EON, Unreal Engine,... 之外,其實還有很多有趣的工具與技術,甚至更適合學術研究。這些工具與技術其說另類,倒不如說是非主流,因為他們真的比較少人用,或者說比較不流行。原因可能是比較新、門檻較高、與工業流程整合尚未成熟等,但是就技術層面與可能性也許更高。舉例來說,雖然 Lua 並台面上的非主流語言,卻是許多遊戲與網路設備裡的操控語言;具備 LISP 特質的高階自然語言 REBOL(讀音如反叛軍);德國公司 RADON Labs 發行的免費3D遊戲引擎 Nebula 不僅效果一流,還支援眾多腳本語言(包括 Lua)、等等。以後繼續補充。

May 16, 2005

Serialization 序列化

好多年前玩過電腦音樂,寫過 MIDI 程式、C-Sound、Max/MSP、以及玩錄音工程,學了一些皮毛的十二音列、準則作曲、和聲對位,至今對音樂序列化還有很強烈的興趣。幾個月後等 Winsor 教授的音像實驗中心(Center for Audio and Visual Experiment; CAVE)落成,或許又有機會重操舊業。當然序列化不是只有音樂可以這樣玩,只要能被轉化為序列資訊的都可以這樣玩,例如序列埠控制、網路封包都是,所以拿 MIDI 來控制非音樂設備也都是常見的應用。IT Revolution 系列小書中的"序列化"一書則是進一步將建築資訊序列化,很有趣的研究。

April 21, 2005

X10 家庭自動化套件 + AMX

X10 logo因為接觸 Sony VISCA 視訊設備控制協定的關係(跑 COM port),想起幾年前在美國買的 X10 FireCracker 套件,這些東西算是老東西了,也不支援新版軟體的排程規劃,我想應該升級到 USB 介面,以及買好一點的控制模組,這樣以後要玩家庭自動化才真的好玩。當然要徹底自動化、或者加上一些數位生活的整合,就應該要考慮 AMX 的東西,過去在 CDI 玩 AMX 也的確被它強大的整合性和自訂功能所折服。

前陣子老爸老媽被小舅勸敗,買了一套家庭劇院設備:最新款的頂級 Sony Wega KDE-P42HVX 42吋電漿電視(水貨,遙控器很酷)、BS/CS中耳朵、DVD player、Denon擴大機、高檔木質揚聲器,我們三兄弟號稱在新科技領域混的很熟,也被這套設備唬的一愣一愣(尤其看到 1080i 的超高解析度時眼睛都快脫窗了),每件設備都很優,但系統整合度卻非常不好,光從 BS/CS 切換到國內有線電視就要用三隻遙控器,不要說是老爸老媽,連我們三兄弟都大呼麻煩,這種狀況最需要像 AMX 這樣的系統。

當然我心裡真正想的是拿 Mac mini 來當自動化的核心,螢幕可以用 DVI-HDMI 轉接、所有遙控器功能全部集中到一個電腦控制紅外線發送器、...聽起來是很棒啦,但不知道何年何月才能有時間精力去實現∼

April 15, 2005

Sony EVI-D100 攝影機技術資料以及 VISCA 指令集

Sony EVI-D100 camera皇天不負苦心人,終於讓我找到 Sony EVI-D100 的技術手冊與 VISCA 指令集,厚厚的 48 頁(含英/日文版)純粹談技術資料,以一台 PTZ 攝影機來說可是相當豐富啊。這樣距離實際拿 D100 來應用的日子就不遠了,目前只缺一條 VISCA 訊號線,因為是標準的 RS-232C 跳線(miniDIN 8 pin to D-sub 9 pin),應該可以在電腦零件商店找到。

下載 Sony EVI-D100 技術手冊

April 13, 2005

VisualLISP 函數表

VisualLISP 函數數量之多,讓人在寫程式的時候非得經常翻閱線上手冊,或者要買一本參考手冊才行,尤其歷經 2000 到 2005 不同版本更替,哪一個版本究竟新增或刪除了什麼函數,也不能每次都只能看官方的版本異動表。我不管學什麼語言,習慣上都會整理一份作弊用的函數或指令表,所以幾年前我就整理了一份 VisualLISP 函數表,包括系統參數、常數等,裡面包括了 AutoCAD 2000/2002/2004 不同版本的新增函數,以及特別標注需要用 (vl-load-com) 載入延伸函式庫才能使用的函數,對於以 VisualLISP 維生的人應該很有用。需要的人請在此領取:下載 VisualLISP 函數表 (178k, PDF 格式)。未來只要我還寫 VisualLISP 就會持續更新這張表,而且目前我也在整理 AutoLISP 的 VBA/ActiveX 資料,完稿之後就會上線。

值得參考的 VisualLISP 範例檔

VisualLISP 除了線上文件豐富之外,最近看到一份範例集錦 vlsample.zip,裡面有很多範例檔,詳細展示了各種 VisualLISP 技巧和 ActiveX 物件的使用方式,尤其是 reactor 和 ActiveX 物件是參考價值最高的部份。相關文章和 zip 檔可以到 AfraLisp 網站閱讀及下載。壓縮檔展開之後有一堆 .lsp 程式檔還有 .prj 計畫檔,各個檔案的簡要說明如下:

afact.lsp: 階乘
blackboard.lsp: 如何使用黑板(blackboard)在不同文件之間共享資料、函數和物件
color-util.lsp: 在 AutoCAD 內使用全彩(true color)
doc_utils.lsp: 搭配 main_mdi.lsp 使用(sample-instrs, load-vlxfile)
drawline-with-errors.lsp: 錯誤示範(官方文件範例)
drawline.lsp: (官方文件範例)
grafun.lsp: 分別用 ActiveX 和 AutoLISP 函數建立 3D mesh
image.lsp: 用 ActiveX 函數插入一張影像
lispdata1.lsp: 將 AutoLISP 資料儲存在繪圖資料中(用 ldata & dictionary)
lispdata2.lsp: 將 AutoLISP 資料儲存在繪圖資料中(更好的方法)
main_mdi.lsp: 如何使用 variant 和 safearray 變數
Mouse Reactor.lsp: 用 ActiveX menu API 和 mouse reactor 建立右鍵跳出式選單
Obj-Props.lsp: 如何與物件屬性管理員溝通(透過選集和反應器傳送異動訊息)
propagate.lsp: 傳送 print-list 函數(依賴 s::startup 的執行)
regdump.lsp: 如何使用 registry-xxxx 函數以及使用者自訂登錄函數
timestamp.lsp: 使用 vlax-add-cmd 和 vlax-reg-cmd 建立原生命令(不用 c:)
tmatrix.lsp: 使用 vla-TransformBy 和變形矩陣
typelib.lsp: 如何匯入以及使用型別庫(type library)進行跨應用程式整合
vlx_app.prv: (計畫檔)
vlx_app.vlx: (binary code)
vlx_file.fas: (binary code)
vlx_file.lsp: 變數可在程式和文件名域之間、程式名域和執行期黑板之間交換
xdata_variants.lsp: 如何使用 variant 和 safearray 變數
xrecord.lsp: 使用 xrecord 和 dictionary
yinyang.lsp: (官方文件範例)

ActiveX
al-tst.lsp: (測速)用 AutoLISP 畫 2000 個圓
vla-tst.lsp: (測速)用 ActiveX 畫 2000 個圓
vla-tst.prj: (計畫檔)

RCTR-TST
app-reg.lsp: (起始檔)
getparm.dcl: 對話框定義(由 rctr.lsp 呼叫)
getparm.lsp: 對話框處理(由 rctr.lsp 呼叫)
rctr-tst.prj: (計畫檔)
rctr.lsp: 將圓等距排列在一條曲線上,並跟著曲線動
rsame.lsp: 讓不同物件共享一組屬性
rtie.lsp: 定義 reactor 輔助函數
rtrans.lsp: 定義 reactor 位移函數

REAC-TST
a-mtext.lsp: 圓與文字物件同步更動
acdbex.lsp: 測試 AcDbReactor 反應器
copyself.lsp: 定義 reactor 複製函數
ctie.lsp: 定義 reactor 輔助函數
dimex.lsp: 圓與文字物件同步更動
dumbells.lsp: 兩個圓掛在一條線段的兩端,會一起連動
editex.lsp: 在編輯器中新增/移除 reactor
linkex.lsp: 定義一些 reactor 測試函數
objex.lsp: 三個圓有不同顏色,但其半徑會同步更動
pipe.lsp: 利用一條曲線和圓做一條中空管,而且會跟著曲線更動
r-info.lsp: 用來顯示本範例函數的說明
r-init.lsp: 初使化全域變數
reac-tst.prj: (計畫檔)
rolls.lsp: 物件和編輯器 reactor 範例
rtransl.lsp: 定義 reactor 輔助函數
rutils.lsp: (輔助)建立全域變數
same-rcl.lsp: 讓三個圓同步更動
sel-reac.lsp: 如何選取綁在一個 vla 物件上的所有 reactor
toplevel.lsp: 一開始執行就顯示的求助訊息

February 25, 2005

變更 Windows XP 上非 unicode 程式的系統字

隨著下午和文禮討論使用何種文字編輯器搭配 Lua,聊到修改 Windows XP 系統字形。如果課程用 wxLua 來練習,它的迷你 IDE 雖然陽春卻也足夠,唯一可惜是在中文系統下它竟然用那可恨的新細明體來顯示程式碼,整個可讀性降到 approach to zero!後來誤打誤撞找到 Windows MUI 多國語文設定,稍讀一番,就在語言控制版中把未用 unicode 的應用程式改為英文字碼顯示,重新開機後竟然 OK 了!現在 wxLua 用漂亮的 Tahoma 顯示程式碼了!當然有得也有失,這樣一改也影響到其他應用程式,像 Dreamweaver MX 2004、Photoshop CS 裡面都出現醜陋的新細明體英文字或根本變成亂碼,哎喲,煩∼

January 13, 2005

TextWrangler, SubEthaEdit, Vim 和其他好東西

來看幾個 OS X 上很棒的、適用於程式開發的文字編輯器:
  • 不知從何時開始,TextWrangler 竟然變成免費下載(還是我腦筋不清楚?),這個繼承 BBEdit 優良血統的入門級文字編輯器即便沒有 HTML 和 CVS 支援也不減其魅力,光 SFTP, Regular Expression, Syntax coloring 和原本 BBEdit 的強大程式編輯功能,就已經讓人非用不可了。
  • SubEthaEdit 除了適合程式開發外,最棒的就是能透過 Rendezvous 進行跨網路即時合作、寫作、程式開發等,對於 team work 幫助非常大,當然前提是大家都用 OS X。唯一問題是 Regular Expression 用起來怪怪的,還是在 BBEdit 或 TextWrangler 下最順手。SubEthaEdit 非營利用途免費,商業使用才需要購買 USD$35 版權。它可以搭配眾多傳檔軟體變成預設文字編輯器,達成 TextWrangler 一樣的功能。
  • 噹噹噹,正宗老字號程式開發編輯器 Vim 出場,從純文字界面到圖形界面 gvim、再到可用滑鼠操控,但它仍舊維持古樸風格,功能強大不在話下,但對初學者來說稍有入門門檻,文字指令要知道夠多才能順手。我超愛用 vim,因為經常要遠端連線修改程式、改 shell script,根本不需要動到圖形界面。這個當然是免費的。
接著是一些好康、好用、必敗的東西:
  • 只要到 iCompositions 註冊為會員,207 段音效片段(loops)就免費大奉送,適用於 GarageBand 或 Soundtrack。
  • 微軟更新了 Entourage 2004 上的垃圾信過濾機制 Microsoft Entourage 2004 Junk E-mail Filter Update 1 (11.1.0),過去我的 Entourage 2004 垃圾信過濾一直保持在最高等級,效果還算不錯。
  • 羅技無限銀貂 V500 是隻又酷又炫又先進的好滑鼠,必敗,請參閱老地方冰果室的勸敗文章
  • 極簡造型的 iPod Shuffle 隨身聽兼快閃碟 500MB $99 美金、1GB $149 美金,必敗,參閱蘋果官網就夠了,如果還看其他新聞網,只會讓人心癢難耐。幾年前就有很多台製、韓製隨身碟都具備一樣的功能,為何同樣的功能換成蘋果出品就這樣轟動?關鍵就在 DESIGN。
  • 低價 Mac mini 已經打破一般消費者對價格的心理障礙,台幣一萬五到兩萬之間就可以擁有一台迷你 Mac,雖然價格和外型類似 PC 準系統,但內裝卻不陽春。如果過年還有紅包可領,湊一湊小朋友就可以買到了!對 PC 玩家的最佳搭配就是原有的 PC 加上一部 Mac mini 和一台 KVM switch,簡直是夢幻級的敗家聖品。

January 12, 2005

提高動態網頁生產力的工具

製作動態網頁時,只要有表單,表單檢查 (Form validation) 就是必要且痛苦的編寫過程,目前我採用的 VDaemon 就是一套專門用來作表單檢查的 PHP 函式庫,它最大優點是預設使用 JavaScript 作用戶端表單檢查,如此一來資料不需要送回 server 才檢查,當然它還有第二層伺服器端檢查,還可以做完整的表單問題整理與回報,並標示有問題的項目。

其次,樣板引擎 (template engine) 也是製作動態網頁(尤其大型網站)時十分重要的一環,與其自己花大量時間開發維護,我選擇採用 Smarty 這個強大的樣板引擎來協助工作,當然從自己的工作邏輯轉換到適應 Smarty 的邏輯需要一點時間,但我發覺它的擴充性強,可以讓使用者自行開發變數修正器 (variabel modifier) 和樣式函數 (template function),對於 PHP 程式概念熟悉的人可以說是幫助很大。

當然最重要的不外乎了解並運用資訊架構 (information architecture; IA) 設計方法,從流程與資料面妥善分析系統,並利用樣板引擎將工作邏輯 (working logic) 和視覺呈現 (visual representation) 分開,如此一來便可以降低維護成本、維持擴充彈性、以及增加實用性。

回過頭來小牢騷一番,提高生產力的前提是懂得正確的操作方法以及有完整的工作流程,對於初學者或者稍有經驗的人來說,歷經市面上各類電腦書籍和網路上快速入門祕訣的洗禮之後,往往面對案子或問題都是見招拆招,沒有正規的工作分析與製作流程,當然對小型網站系統可能沒問題,對只想把簡介和型錄一五一十放上網路的公司也沒什麼影響,但只要跨越一個門檻、真正面對大型商業或社群網站時,就知道問題的嚴重了。然而另一個問題是網站設計案幾乎沒見過合作、只有統包,台灣網站製作承包多單打獨鬥,一人軍隊或兩三人的工作室為大宗,工作內容包山包海,從美術設計、界面、操作流程、資料庫到程式設計樣樣都來,據我所知承包大型網站的國外設計團隊講求合作、溝通,視覺設計、系統規劃和資料庫通常是分開的兩組人,還另外要培訓客戶端的維護團隊一起加入,人人各有專長、各司其職,最後通常是形成長期合作關係,而不像台灣的快速反應部隊,成不了大氣候。台灣大型跨國企業網站多承襲自母公司,鮮少能自己設計規劃,大型本土企業也多委託具規模的設計團隊來規劃,而絕大多數的中小型企業網站就和滿街的網站設計生力軍混成一氣,廝殺出一片看不到風格的風格。

December 6, 2004

程式語言歷史

一個多月沒有寫東西了,顯然都在忙沒有建設性的事情(笑)。我兩年前研究過 Éric Lévénez 整理的程式語言歷史,現在 O'Reilly 也正式展開 The History of Programming Lnaguage 更新、增補工作,讓這個科技史上重要的一環更完整,當然最令我興奮的還是那張歷史圖表,我一定要把它印出來貼在牆上!我也正在構思網路動態呈現的方法,隨便想就覺得很酷。