How to use Borland C/C++ 5.5 Complier

Borland C/C++ 5.5 Compiler 是由 Inspire (前身是 Borland) 免費提供下載與使用的 C/C++ compiler 和相關工具 (我記得大約在 2000 年時就已經發佈這項免費下載的資訊)。檔案不大,下載包約 8.7MB ,但已包含了完整的 ANSI/ISO C/C++ 的核心,包括 STL (Standard Template Library) ,對 ANSI C++ 的支援涵蓋到 C99 的規範內容。就 C/C++ language and programming 教學用途而言,已是非常完整的工具。 如果要開發應用軟體,其實也足夠,只是要自行下載與安裝各式 SDK (Software Development Kits) 罷了。

Borland C++ 5.5 Compiler with PSPad

雖然 Borland C++ 5.5 Compiler 是一套純命令列工具,但配合適當的程式編輯器,我們仍然可以建置出一個方便的視窗整合開發環境 (IDE) 。我慣用的輕量級程式編輯器是 PSPad ,就用它來說明吧。關於 PSPad 的一般性設定請參考它的說明或其他人寫的文章。此處直接說明關於 compiler 的設定。

AJAX 入門參考

在 IBM developerWorks 中,有一系列 AJAX 入門文章,短短五篇並附上詳細範例以及參考資料,抵得上坊間數百頁的書籍。我個人就是從這學 AJAX 。

JavaScript 的個體繼承之成員的配置工作

當衍生類別 (derived class) 繼承了基底類別 (base class) 的成員時,常常忘了要初始 (配置) 那些成員,亦即呼叫基底類別的建構函數。這是 OOP 初學者,也是 JavaScript programmer 在實作繼承關係時易犯的毛病。

Comment~~該不該用 while 檢查 readyState

在 AJAX 中,用 while 檢查 readyState 是同步模式的做法。這將使整個程式陷在 while 迴圈中,直到 readyState 的狀態符合脫離迴圈的條件為止。最明顯的缺點是頻繁地執行檢查動作,造成程式負載提高。而且這實際上就是同步模式,實作上,還不如明確指定以同步模式執行,即指定 XmlHttpRequest.open() 的第三個參數為 false ,反而較有效率。

Comment~~「自由不一定多元」

在從事經濟學研究的過程中,最讓我困擾的問題在於,通俗著作中充斥了太多錯誤觀念和偏見。在這篇「自由不一定多元」文章中,作者對自由、多元、經濟理性和人的選擇等等內涵之理解皆非正確。經濟學的通識教育顯然出了問題。

軟體工程三大陣營, RUP, CMMI, Agile Method

日前我參加了 2006 IBM 開發者大會,有幸聽聞尖端軟體工程團隊成員介紹最新的軟體開發趨勢「議程:大師看未來-軟體開發趨勢展望」。原本安排由 Dr. Ivar Jacobson (UML 創始人之一) 主講,可惜因颱風作梗,改由陳博士 (從 Rational 時代就跟隨 Dr. Jacobson 的團隊成員) 主講。這樣也好,陳博士以中文講說,省去了現場翻譯的語言隔閡。

JavaScript~~DOM~~A bug about radio input and createElement in M$IE

根據 W3C 關於 HTML DOM 的建議,我使用下例的 ECMAScript 建立 Radio input element 。使用新版瀏覽器,如 Firefox 也得到了我需要的效果。但在舊版瀏覽器,即 M$IE6 中,卻出現了錯誤。 M$IE 會建立 Radio input element ,但是卻無法選取...

SQL~~Encoding-Based SQL Injection Exploit part 2

繼續第一部份內容。除了單引號 (') 外,允許使用反斜線 (\) 的字元編碼,也屬於遭受此 SQL injection 攻擊的高危險群。而且,由於部份 programmer 的不良習慣,提高了危險程度。這個不良習慣,就是不用標準的方法做 escaping ,而抄捷徑地直接使用字串替代函數。例如 PHP 的使用者,常常用 addslashes() 做 escaping 。前文中我提到的那位客戶,我在檢查他們的程式碼時,就發現到他們的 PHP 程式碼,全部都是用 addslashes() 做 escaping ,而不是用 PHP 建議的 pg_escape_string() 。該客戶的 CMS 系統是 Xoops 再加上額外的修訂以支援 PostgreSQL 。不過,當我進一步追查下去時,很驚訝地發現 Xoops 中,連 MySQL 部份的程式碼,也是用 addslashes() ,而不是用 mysql_escape_string() [Xoops 在 2006/6/26 發佈的最新版本中的 class/mysqldatabase.php 還是用 addslashes()。]。很久以前, PHP 就提供了 mysql_escape_string() 函數,甚至可能比 Xoops 的發展時間還早。儘管如此, Xoops 中仍然沒有使用 mysql_escape_string() ,真是令我無言。

SQL~~Encoding-Based SQL Injection Exploit

最近公司客戶網站的內容管理系統被惡意入侵,因為客戶是用 Linux + PostgreSQL 系統,而我恰好是公司中較熟悉這兩套系統的,公司就派我去處理。我查了一下,答案就在不遠處,我就在 PostgreSQL 的網站上找到了答案,這是一個新型態的 SQL injection 。

ASP.Net~~SqlParameter 和 Ad-Hoc 該用哪種方法?

回應「對SqlParameter的不求甚解」一文。SqlParameter 和 Ad-Hoc 這兩種用法的選擇,嚴格來說是 programmer 的態度與技術問題,而不是安全性問題。我的習慣是 Ad-Hoc ,但我同時強調,資料的驗證與查核是 programmer 的份內工作,所以我的程式風格如下。試問這種 Ad-Hoc 寫法的安全性,會比 SqlParameter 差嗎?

ASP.Net~~ 產生 XML Schema

基於工作需要,我翻了一下 .Net Framework 中對 XML Schema (XSD) 的支援,想找在程式中維護 XML Schema 的方法。找到了兩種方法,一種是使用 System.Xml.Schema 類別,另一種是透過 DataSet 。以下是分別用這兩種方法產生同一份 XML Schema 的程式。

JavaScript~ECMAScript/JavaScript toolkit

因工作需求,近日來專注於用 ECMAScript/JavaScript 強化 web application 的互動性。發現了幾套強力的 ECMAScript 工具,可以簡化不少常用功能的開發,更可讓 programmer 無需關注不同新、舊版瀏覽器的行為差異。說明一下,我所稱的「舊版瀏覽器」包含 M$ IE 6 。

SQL~~SQLXML data 的文章@developerWorks

看了一篇文章Using the SQLXML data type,這篇文章有幾個關鍵字吸引我的注意,其中之一是 SQL:2003 ,另一個是 XML 。想想,我不久之前還在看 SQL-99 的內容,突然之間 SQL:2003 就在我眼前冒出來了,而市面上許多 SQL 書籍的內容,連 SQL-92 都說不清楚。 SQL:2003 現在直接將 XML 視為內定資料型態,更為逼進 OO-RDBMS 的目標了。近期內,更是直接支援 O/R Map (個體/關係映射) 。