2009年3月26日 星期四

從程式碼自動生成說明文件 - Doxygen

官方網站:Doxygen

可以生成HTML、LaTeX、Man Pages、RTF跟XML,不過我只有用HTML。
支援C/C++/Java/C#/PHP/Fortran/VHDL,
會將你的程式碼讀入,生成簡明易懂的說明文件,
並將交互參照的部份自動建立連結。
當然,沒有註解的話它並不會自己幫你生成註解,註解還是得你自己寫 XD
註解該怎麼寫才會被讀到,請參考官網文件

不確定其他版本狀況,不過Windows版有一個有GUI的Wizard,
可以經過簡單的設定之後就生成文件出來。
如果想要自己詳細設定的話,Expert Tab裡也可以調。

以下註記一些比較需要注意或是容易忘記的memo...

  • Source code directory可以有複數個。要在Expert→Input→INPUT調。
  • 對於某些source code不能寫成UTF-8的project,可以用它的轉碼功能。
    • 像部分C/C++ compiler不吃UTF-8原始檔,要轉碼成UTF-8再生成文件又大費周章
    • 但要注意有些狀況轉碼會失敗....比如說,我從big5轉UTF-8,內含「/」好像就會失敗。不確定為什麼。
  • 如果要顯示Static function或private method/member,要到Expert → Build → EXTRACT_PRIVATE / EXTRACT_STATIC調。
  • 要顯示目錄(比如說,如果文件包括好幾個小project,彼此是用目錄來區分的),要到Expert → Build → EXTRACT_PRIVATE/SHOW_DIRECTORIES調。
  • 原本是設計給英文語系用的,所以一部份地方要注意一下。比如說,他會自動將class name/file name等辨識並加連結,但是如果這些跟中文連在一起的話就不會識別出來(英文的字是以空格分開的嘛),所以最好這類名稱前後都各加空格格開。

2009年3月22日 星期日

協助HTML/JavaScript/CSS開發的Firefox擴充套件

之前搞Firefox擴充套件開發的survey時找到幾個不錯的,
連同之前在用的一併列出。

DOM Inspector
觀察DOM tree用的套件。原本是Fx內建,Firefox 3還哪時候開始變成額外擴充。
(變額外擴充也好,因為原本內建但是要在安裝時特地選起來,很容易漏過)
雖然說底下要介紹的Firebug比他強大些....

Firebug
同樣是觀察DOM tree用的,不同的是它有簡單明顯的UI,
當游標移到tree的某條敘述上,對應的顯示的部份會以遮罩突顯出來,
所以能很快的找到自己要的部份的code的位置。
必備套件。

JavaScript Debugger
這套強大的地方在於,他是個可以逐步執行並下中斷點的JavaScript Debugger。
就這樣,不過也夠強悍了。

Web Developer
可以進行很多網頁細部設定。比如說關掉Javascript、對Cookie的操縱、取得JavaScript內容等等。
很多項目不會很常用,不過需要時就會覺得蠻好用的。

Console²
將錯誤主控台的UI稍稍改裝。
老實講改的不多(而且稍微有點醜....),不過有比沒有好。

Extension Developer
很多輔助Extension開發用的功能,不過也有助於網頁開發。
比如說Extension的包裝、即時的Javascript command line、
即時的HTML Editor和Regular Expression Evaluator。

2009年3月19日 星期四

Firefox Add-on撰寫memo (2)

逐步建立Extension的教學
很好用所以重貼一遍。注意裡面只有講到XUL。整合JavaScript和CSS的部份請自己另外找。

另一個教學

XUL

XUL Explorer
輔助開發XUL的工具

XUL Overlays
講解XUL Overlays(整理大大小小XUL整合成UI的概念)

JavaScript的window.dump

Extension常用的程式碼片段

XPCOM

Plugins

2009年3月17日 星期二

Firefox Add-on撰寫memo (1)

因為工作有點相關所以順便survey。
東西太多了,不記點memo再看頭會痛....

官方相關主頁面

逐步建立Extension的教學

建立一個適合撰寫Extension的環境

Install.rdf的細節

XUL教學

iGoogle與Gadget (3)

因為工作關係大致試寫了一兩個純測試用的Gadget。
測試出來的重點大致如下:

  • Google提供給Gadget的API多半是介面相關的,也就是說如何控制Gadget呈現給使用者的樣貌。
  • Remote取得資訊的方式基本上是HTTP中的GET。POST跟https基本上不行(也許有辦法技術性躲開)。不可能另開socket。
  • 顯示「需要登入」的資訊會有問題。比如說,我想要用Gadget顯示pixiv的內容,所以事先在pixiv登入,然後把pixiv內嵌到Gadget中希望能看到我的pixiv頁面,但是失敗。失敗的原因其實也很簡單:因為不能跨domain存取cookie。這會造成安全性問題。

    目前想到的解法都不怎麼有效,因為使用者得讓Gadget「轉交」帳號密碼,會引發盜帳號的疑慮....。這應該是Web widget共通的限制了。無解。

    唯一能避開這個問題的只有平台提供者本身的widget,因為沒有domain問題-在iGoogle平台上就是Google自己。所以Google Reader跟GMail的內嵌能運作正常。

2009年3月10日 星期二

iGoogle與Gadget (2)

因為這樣跟那樣所以又研究了一下。算是暫時memo。

提交Google Gadget
提交gadget的網頁,有提醒最好有哪些東西,還有相關條款。

將 Google 小工具新增到您的網頁上
用JavaScript將gadget內嵌到網頁上。
可以在網頁上使用原本放在iGoogle的gadget。

Gadgets API Reference
往下拉是Google提供的JavaScript API

##ReadMore##

Google Gadget的相關條款:
  1. Google Gadgets and Themes API Terms of Service
  2. Google Gadget內嵌到網頁上時的服務條款
  3. Google官方Gadget內嵌到網頁上時的使用限制
第二點的重點歸結(個人memo用,要正式使用請去上述網址自己確認):
  • Gadget可商業使用,但需符合Gadget設計者的使用條款以及法律限制(Google官方寫的Gadget的使用條款即上面的第三點)
  • 不可移除「gadgets powered by Google」字樣以及「+Google」按鈕。如果你條列出眾多Gadget你必須註明來源。Google有權將「+Google」按鈕置換成廣告或其他東西。
  • Google不為Gadget做背書。製作Gadget的第三方有權隨時停止Gadget
  • 如果該小工具違反著作權法或其他法律,你同意將它移除。不管是你自己發現或Google如此告知你。
  • Google可隨時修改此條款。Google有權因為你違反使用條款或Google自行做的判斷來隨時停止此服務。
第三點的重點歸結:
  • Google News, Google Video跟Youtube的官方Gadget不得使用在商業網站
  • Google Maps的官方Gadget不能使用在需要付費才能閱讀網站內容的網站

2009年3月4日 星期三

PHP的小小抽象滲漏 2

最近有點累所以之前想寫的東西一直沒上來。先來寫個小的。

延續上次的抽象滲漏。一樣是在__get跟__set上的問題。
通常來說,你可以透過傳參考來讓function回傳內容,
比如說,function a(&$b, &$c)。
在a裡面把$b跟$c賦值,值就會存到外面(傳入)的變數裡面。

不過問題來了。使用__set跟__get「造」出來的member這樣做會有問題。
而且有些時候連警告訊息都不會出現。

聽起來很理所當然嗎?知道原理的話當然是啊。
不過光看表面的code有時不易分辨耶。

只是小小紀錄。