程式小心得

You are currently browsing the archive for the 程式小心得 category.

QuiXplorer 是一個 Web 介面的檔案管理軟體,是用 php 寫的。目前在網路上有流傳許多的中文化,不過都是 big5 編碼的。越來越多的 filesystem 語言編碼格式都選擇為 utf-8 ,所以將程式略為修改,讓他可以顯示 utf-8 編碼的檔案名稱,另外修改一些從簡體轉成繁體時使用語言習慣不同的部份。

你可以從下列三個位置下載原始碼、語系檔、和 Patch:

下載後將語系檔放入「 _lang 」目錄之中,然後再套用我所修改完成 Patch ,這樣就可以讓檔名為 utf-8 的檔案顯示了。並且在編輯、複製、和移動 Utf-8 編碼的檔案也不會發生問題,另外網頁編碼也會改成 utf-8 。

因為已經過了一段時間了,我也忘記上面的語系檔從哪得到的,如果有任何的問題,請在此留言。

其實我發現用 Jquery + JFeed 完成一個簡易型的新聞發布系統是很容易的。在後台的管理部份,利用 Wordpress 或是相關的 Blog 軟體來撰寫即可。前端就利用 jFeed 來抓取該 Wordpress 的 Rss 的部份,並且顯示出來。

另外其實可以稍加改變後,就可以改成留言板了。讓 jFeed 抓取 wordpress 某篇文章的 Comment 的 Rss 。如果使用者需要留言的話,再導到該篇文章即可。這樣也可以利用 WordPress 阻檔廣告留言系統,來輕易的阻檔廣告。

Jquery :下載 Jquery
jFeed : 下載 jFeed

此處可以看到 jFeed example,你可以直接觀看原始碼就可以知道如何撰寫的 。

不過因為在抓取外部的 Feed 時,對 browser 而言是不被允許的(當然你可以修改 Browser 的設定),所以此時必需要使用 Proxy 的功能來讓 Browser 誤認為是抓取和 java script 同樣的站台的位置 。下列為 php 的原始碼:

  1. <?php
  2.     $curl = curl_init("http://blog.twkang.net/feed");
  3.     header('Content-Type: text/xml');
  4.     $Result = curl_exec($curl);
  5.     $r = explode("\n",$Result);
  6.     array_pop($r);
  7.     echo implode("\n",$r);
  8.     curl_close($curl);
  9.  
  10. ?>

其實 Jquery 還有很多應用,如果有機會的話,再介紹給大家知道。

之前需要使用各種奇淫技巧的 min-height 的 hack ,在今天看到「Min-Height Fast Hack」這篇文章,有快速解決的方法(不過好像是 2005 年的文章了)。

在 IE 不支援 min-height 的情況下,同樣的方法在 firefox 下使用很輕鬆,為了讓萬惡的 IE 支援該方法,可以使用如下的技 巧:

  1. selector {
  2.   min-height:500px;
  3.   height:auto !important;
  4.   height:500px;
  5. }

快速方便瞬間解決!

我從「Tsung’s Blog」裡看到一個「javascript Variable Dump(var_dump)」的 java script ,他可以讓你印出 javascript 各種變數的內容。寫 php 的時候,很習慣的會使用 print_r 或是 var_dump 來作印出變數內容,來方便 debug 的功能。可是 java script 只會幫你印出 Object or Array 這種情況,如果 Debug 將會非常的麻煩,不過有了這個工具後,可以讓你容易的看到完整內容。

使用上非常的方便,直接用 dump(variables) 他就會彈出一個視窗來印出該變數的內容。

原始的網站在:JavaScript Variable Dump Method

我在「Parsing W3C’s ISO 8601 Date/Times in JavaScript」看到如下的程式碼,這段主要的功能把「2004-12-21 23:11:00」這個字串,拆解回去 java script 的 Date 物件。通常在 Mysql 裡存的資料顯示出來都是這種格式,如果 java script 收到這種格式的時候,除了自已用 substring 分析之外,下面是使用 regexp 作分析的方法。

  1. Date.prototype.setISO8601 = function (string) {
  2.     var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
  3.         "( ([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
  4.         "( |(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
  5.     var d = string.match(new RegExp(regexp));
  6.  
  7.     var offset = 0;
  8.     var date = new Date(d[1], 0, 1);
  9.  
  10.     if (d[3]) { date.setMonth(d[3] - 1); }
  11.     if (d[5]) { date.setDate(d[5]); }
  12.     if (d[7]) { date.setHours(d[7]); }
  13.     if (d[8]) { date.setMinutes(d[8]); }
  14.     if (d[10]) { date.setSeconds(d[10]); }
  15.     if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
  16.     if (d[14]) {
  17.         offset = (Number(d[16]) * 60) + Number(d[17]);
  18.         offset *= ((d[15] == '-') ? 1 : -1);
  19.     }
  20.  
  21.     offset -= date.getTimezoneOffset();
  22.     time = (Number(date) + (offset * 60 * 1000));
  23.     this.setTime(Number(time));
  24. }

我這個有作一些修改,所以其實已經不是標準的格式了。只是為了分析 php 的日期部分比較方便而已。

« Older entries

 

Jaiku Message

部落格觀察

統計

  • 文章數:197
  • 分類數:14
  • 評論數:360
  • 總字數:43887

誰來訪?