為什麼還不升級PHP5
jaceju 於《PHP5 將滿 4 歲》一文中說了一些他碰到的原因。
我的經驗,應用軟體的問題還好,大部份 PHP4 的軟體在 PHP5 的環境上一樣可以跑,只是語法 notice 多了點。再者,在 PHP4 的軟體中混雜 PHP5 的語法也不會影嚮程式運作。
jaceju 於《PHP5 將滿 4 歲》一文中說了一些他碰到的原因。
我的經驗,應用軟體的問題還好,大部份 PHP4 的軟體在 PHP5 的環境上一樣可以跑,只是語法 notice 多了點。再者,在 PHP4 的軟體中混雜 PHP5 的語法也不會影嚮程式運作。
喔,各位沒看錯,陳教授確實把資料結構與演算法列入他規劃的敏捷方法 (myAgile) 條目中。我看到這一點是非常 Orz
陳教授有提到理由,台灣的程式設計教育重視計算與解題,而不重視思考與建構。所以程序員常常學了資料結構與演算法之後,卻不會運用在實際的編程工作上。故此他特別把這一點列入 myAgile 條目中。
雖然我們總是說著動態語言(dynamic language)、靜態語言(static language),但區分方式並不是語法,而是運行環境。
如果程式影像在載入前便確立並儲存,那麼是靜態語言[If the image of program which including op code and data is static in disk before loaded, we call it 'static language'.]。這句話對學過作業系統概論或組合語言的人比較容易理解。因為在組合語言中,要求程序員設置 code 節區, data 節區等內容載入記憶體的位置。所以我們很容易聯想記憶體中的程式影像儲存在檔案系統中的情形。與之相對的是,若程式影像在載入後才建立,則是動態語言。
測試驅動開發 (Test Driven Development, TDD) 的觀念由來以久。寫程式時會順便寫測試碼,幾乎是所有有經驗的程序員在不自覺下養成的習慣。例如我在《運用訊息溝通網絡及軟體工程方法建立開放源碼專案之個人淺見》一文中,提到我以前用 C 語言寫程式時順手寫測試碼的習慣。不過那個時候,xUnit 這類測試工具還不普遍。當時看其他人寫的開放源碼程式,幾乎是人人各有一套測試碼的撰寫風格。但是隨著 xUnit 工具的普及,測試碼的撰寫方式也愈來愈一致了。同時,也改變了程序員編程時的習慣,帶動了先寫測試碼的「測試驅動開發」觀念。
TDD 的好處,基本用不著我多加說明。 Robert C. Martin 在《敏捷軟體開發-原則、樣式及實務》中寫的再明白不過了。儘管如此,在研討會中,我還是針對 TDD 提了一個問題。我的問題是:能不能藉由測試案例建立更準確的工作時程量測指標,以便掌握確切的工作時程。
雖然每本敏捷方法的書,都會提到測試驅動開發(TDD) 及反覆式開發過程(或稱迭代式開發) ,然而它們並不是敏捷方法獨有的要素。這兩者都是存在已久的編程實務。XP 並沒有新的觀念,它的觀念與程式設計的歷史一樣老
(Kent Beck)。但敏捷方法確實把這兩者發揚光大,讓人們注意到這兩種實務作法所蘊涵的強大威力。
陳教授在會中也一再強調反覆式開發過程。但對陳教授解說的內容,我持有兩點不同看法。雖然當時提問了,奈何時間有限,並沒有足夠的時間討論。
敏捷方法強調溝通,且溝通行為不僅發生在負責軟體開發工作的程序員之間,也要包含使用者。所以敏捷方法的實踐作法中,重視並要求「使用者參與」。陳教授在會中使用「駐廠使用專家 (On-site usage expert)」表示在敏捷開發過程中的使用者代表。一般則稱為「駐點客戶(On-site customer)」。
中央大學資工系在6月15日舉辦了一場「台灣敏捷方法實務研討會」,由陳振炎教授主講。我將聽到的內容與自己的感想做了一番整理。
敏捷方法的特色與重點,絕對是「人際溝通」。 Ivar Jacobson 說「敏捷是一門社會科學。它關注的是如何讓大家像一個團隊般工作、如何激勵成員、如何相互合作等等
」(CSDN《程序員》2007年4月刊)。
最近在《不存在時間的世界》一書中,看到了哥德爾的不完備定理,其中也有提到不完備定理的的計算機形式,即圖靈的停機問題(Halting problem)。但不知是書籍翻譯還是哪裡的問題,我覺得我看不懂它的說明。
看了書中的說明後,我的程式設計經驗直接告訴我兩件事: 一、程式不具可計算性。編譯器會明確告訴我變量未定義。二、這是無窮遞迴。程式實際執行時,會發生遞迴深度超出限制或堆疊滿溢的錯誤。我總覺得書中的說明怪怪的。
日前在《寫程式需不需要懂數學》一文的討論中,一位回應者引用了維根斯坦(Ludwig Wittgenstein)在《邏輯哲學論》中的名言: 凡是不能說的事情,就應該沉默 (Whereof one cannot speak, thereof one must be silent)
。當對方的回應中出現這句話時,我剎時感到非常地錯愕。當時為了避免離題扯到研究方法論上,我只是輕輕提示這句話是維根斯坦說的,並沒有指出這句話是斷章取義,引用失當。
根據對方的回應內容 - 箇中奧秘,學數學的學生都懂,但是是只能意會,不能言傳
- ,他似乎是想表達數學之中,有些內容是不可言的。然而,維根斯坦口中所稱不可言之事,並不是數學。就我所知,不論是在前期的邏輯實證主義時期,或是後期的分析哲學時期,維根斯坦從未認為面對數學時應當保持沈默。
我們多數人使用的鍵盤是美式鍵盤(101/104鍵),安裝微軟的日文輸入法後會發現轉換輸入法狀態很麻煩,常常要用滑鼠點來點去。因為微軟日文輸入法提供的使用說明,是針對日本特殊鍵盤的使用者,沒提到美式鍵盤的轉換快速鍵。
常常看到有新手問這問題,我也不藏私。在此提供我個人經過多次嘗試後找出的美式鍵盤轉換快速鍵的對照表。
she96965 問: 我想要過三秒後執行一次函數,再過三秒在執行一次,一直反覆一直反覆
。
答: 用 sleep() 。另一方面, PHP 有一個最大執行時間的限制,故尚須配合 set_time_limit() 重置最大執行時間的計時。
我們一般對 PHP 的印象是:寫 Web 應用程式的工具。其實它也可以作為單純的解譯器運行一般的本地程式, PHP 稱此運行模式為 CLI mode。若進一步結合 PHP-GTK 擴充模組 (關於 PHP-GTK 的安裝,請參考《Glade/GTK2 for Windows with PHP5 and Ruby 快速安裝指南》) ,我們仍然可以使用 PHP 設計具有圖形使用者介面的桌面應用程式。
本文不只單純地說明如何利用 PHP-GTK + Glade 設計桌面應用程式,更要混合現成的 Web 應用程式,一併為各位展示 MVC 架構所帶來的高度彈性與可用性。
喲哪桑的《管理者的工作時數》引述了一個評量管理者能力的方法,即「優秀的管理者,其工作時數必然長;因此,我們可以把管理者的工作時數,當做其績效衡量的指標之一」。
我說這個指數不準。當你要量自己的身高時,怎麼可以拿自己的手臂去比呢?要拿別的基準物才準。我說把工作時數的對象換一下才對。我評量的方法是,看管理者底下的工作者的平均工作時數來決定管理者的績效。
假設同一批員工,先後在2位主管手下做同樣的事。在第1位主管手下,每個員工天天都準時下班,還能提早整理桌面、聊天打屁(平均工時<8hr)。在第2位主管手下,每個員工天天「基於工作責任」多做1~2小時工作,連喝下午茶的時間都沒有。
不必計算什麼東西,我們就能評量哪位主管的管理績效好。把員工當成管理者的 reflection ,觀察員工,我們就能評量管理者的績效了。
原問題見: SESSION怎麼釋放不掉。在 PHP 中使用 Session 前,請務必閱讀: PHP Manual::Session Handling Functions。
PHP Manual::session_register:
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered(), and session_unregister()
.
$_SESSION 已經是一個 superglobal variable (全系統域變數),使用 $_SESSION['yourKey'] 的寫法就可以了。