Archive for 'Programming'
WordPress 2.8試用報告
Posted on 12. 六月, 2009 by HungJai.
Matt在WordCamp提到WordPress 2.8的新功能時,HungJai已經覺得很吸引,今早在Twitter看到@wordpress發佈2.8版本,便急不及待為「鴻仔記事簿」作升級。
WP 2.8,又有Chet Baker (美國小號手及歌手)之稱,加強了theme及widget管理功能,並修正了近800個漏動及提升了運作速度(的確快了)。重點加強如下:
- 拖放式widget管理 (drag-and-drop很方便)
- Theme及plugin編輯器加入syntax highlight (還是用慣用的text editor吧)
- 內建theme搜尋及安裝功能 (很吸引的功能,但…)
- 自訂dashboard介面 (最多4欄)
- 自訂資料欄位 (posts、media、links、pages及comments也有此功能)
拖放式widget管理 快速方便

這是HungJai覺得Baker最强的更新,比起以前的WP,少了點擊"add"的步驟,直接拖放便能選擇使用那些widget,十分方便,為網誌添加功能易如反掌。
Syntax highlight編輯器 未能對症下藥

看來,Matt想WP用戶無須再用FTP也能全面管理網誌,在內建theme及plugin編輯器中加入syntax highlight,的確再提升了修改theme或plugin的效能。但是,要用內建編輯器作修改的話,資料匣及檔案的使用權必須放寬,做成很大的安全問題。若每次也去修改權限,那一點也不方便。編輯器的加強似乎未能對症下藥。
內建theme搜尋及安裝 很棒但只會用一次


這毫無疑問是一個很user friendly的功能 (最愛user friendly的科技),但每個blog只會用它一次。搜尋器提供顏色、欄數、闊度、特殊功能及blog類型搜尋,例如,用戶可搜尋一個紫色、2欄、固定闊度、可自定顏色及有置頂文章的相片blog theme。很細心的搜尋器,顧及了不同用戶的需要。看中了那一個theme更可以即時安裝,方便得不得了。用戶無須再以Google搜尋theme,其他的提供WP theme的網站這下了頭痛了。方便是方便,但每一個網誌一但開站後,很少會常常更換theme,加上很多用戶都自行修改了theme (如加入Google Ads),更換theme便要進行多一次修改,所以用這功能的機會只有1,2次。
自訂dashboard介面 剔除多餘widget

Dashboard是WP admin的第一版,常看到數據及常用的功能都齊集在這一版,這一版能夠因用戶的使用習慣修改,便用WP便會更得心應手。Baker內,用戶可自訂顯示的widgets及分多少欄顯示 (最多四欄),設定後便可跟2.7.1一樣拖放擺位。原本可放在dashboard的widgets不多,若要dashboard有更多功能,要借助一下plugin的力量了。
自訂資料欄位 簡化管理介面

HungJai最怕是介面上出現十分少用的資料,所以很喜歡這個功能。Posts、media、links、pages及comments的列表,用戶也可以自訂當中的欄目,減去無謂的資料。個人網誌的話,Author一欄應該可以被剔除吧!
其他新功能
- theme刪除 – 以前要刪除多餘的theme非用FTP不可,現在多了delete功能,但須小心使用,因為一但錯誤刪除,將和重要的主題說永別。

- 插頁分類 – 以前只有All及Published,現在多了分類,若以WP當CMS,會更易管理。

- 首次登入改密碼提示 – 這一個功能是從其他網站得知的,是HungJai應為必須的貼心功能

- 以選擇城市設定時區 – 這看來是意義不大的更新

雖說除了790個漏洞,但使用了半天,及跟幾位朋友討論過後,發現Baker還是頗多bugs。幾個明顯的bugs都是來自browser的兼容問題,如Firefox未能顯示WYSIWYG編輯器、Chrome未能顯示theme及plugin編輯器的syntax highlight等。相信很快便會有更新版,所以不用急著由2.7升上2.8。
還記得Matt在WordCamp中提到taxonomies的更新,那時我覺得這個很吸引,應為blog的應用彈性會提升,WP 2.8官方文件亦有列出這項更新,可是安裝Baker後,HungJai暫時還未找到這個features,難道這是API的更新?再找找吧!
另外,HungJai還在Baker的HTML code內發現了些XHTML 2的編碼,難免要學習新的HTML tag了。
WP 2.8的確是很好的一個版本,加入了不少細心的修改,提升了可用性,唯獨有些漏洞太過明顯,有待更新。由WP 1.5到現在2.8,WP都向著非技術人員可用的方向進發,HungJai也期待有日Matt可做到人人也會用WP。
Continue Reading
為何WordPress內建的外掛安裝失效?
Posted on 04. 五月, 2009 by HungJai.
剛剛建立了一個新的blog,跟鴻仔記事簿一樣都是以WordPress搭建的。出奇地在安裝外掛時出現了狀況,輸入FTP資料後,系統竟然給我下面的回應。
Download failed: Could not create Temporary file
外掛資料匣使用權限問題
HungJai當然第一時間Google一下這問題,得出的解決方案就是更改外掛資料匣的使用者權限,將權限由755改至777,安裝完之後改回為755。這個動作就是告訴伺服器所有使用者都可以讀取、寫入及執行該資料匣。但是這方案並不能解決我遇到的問題,我又怎會給777難到呢!
PHP設定中的safe_mode問題
因為Google不給我解決方案,我只好自己想,想了很久,終於想到是PHP設定的問題。HungJai在一開始建立那台伺服器時,啟動了safe_mode,當safe_mode是on的時候,就算權限為777,都會出現上面的錯誤訊息。safe_mode本為解決共享伺服器(shared-server)安全問題而設立的,內建的外掛安裝乃一跨伺服器活動,當然受管制。很簡單,在php.ini中找到safe_mode,off了它便行。(如果沒有php.ini的管理權,那還可以用.htaccess解決,但這裡不提了;如果沒有設定PHP的知識,HungJai建議還是向技師朋友求救,因為php.ini亂了的話,很可能連其他的網頁也運作不了。)
下圖才是真正的safe mode!哈哈!

Continue Reading
Apple聯Stanford免費教開發iPhone軟件
Posted on 04. 四月, 2009 by HungJai.

想開發iPhone軟件的人有福了,Apple聯同Stanford免費開班教你如何開發iPhone軟件。對,是免費的!
有興趣的朋友只雖要到http://itunes.stanford.edu/,再按Open Stanford on iTunes U,iTunes便會開啟並進入Stanford University,下圖那icon便是你要找的入口。課程是一段段的教學影片,下載後便可觀看。

這課程由兩位Apple的工程師負責授課,課程為期10星期。除了影片,上課用的slide show亦可下載。第一課的影片已可下載,快去上課啊,朋友!
Apple此舉的確了不起,是一個四贏的project。Nokia的Ovi、Blackberry的App World、Microsoft的MarketPlace及Google的Android Market將陸續開鋪,明顯直接影響AppStore的軟件平台市場,加上iPhone在手機市場仍是新丁,佔有率並不如其他手機老牌,AppStore要站穩的確不易。公開教授開發技術,可增加開發人員數目,軟件公司開發iPhone軟件的機會亦相對增加。對於開發者或公司而言,AppStore是一間愈來愈多訪客的店舖,能夠開發產品並在那裡上架,樂事也。Stanford雖已鼎鼎大名,但開此班亦為她帶來一個很好的marketing edge,及鋪了一條光明大道,誰知Stanford將來會不會開辦專利課程。對於我們這班用戶,當然將來可用的軟件會更多樣化,更具創意。Win-win-win-win,爽!
HungJai也不會錯過這個課程呢!
[Update]
1. Introduction to Mac OS X and CoCoa Touch | 7:15
"The iPhone development tool is not available on Windows or Linux."
Continue Reading
WordPress的Spam-stopper阻止你留comment?
Posted on 13. 三月, 2009 by HungJai.
對!用了Spam-stopper好一段日子,以為能夠解決spam comment的問題,但原來連一般訪客回應也阻擋了!
Spam-stopper是一個Wordpress的外掛,它在訪客comment的表格內加入一題簡單的問題 (如Is Fire hot or cold?),避免了由機器自動產生的comment。

前兩天我才知道那一句間單的問題是怎樣也答不了的,系統會不斷說「Incorrect anti-spam answer. Please re-answer the question!」。經查看這外掛的PHP source後,發覺有個叫$aspamq的object內的變數不能被存取 (到了javascript後變了null),令訪客的答案永遠都是和null作比較。解決方法很簡單,只要於WPcommentSpam_head()這個function內把$aspamq定義一次。首先在source內找出 global $user_ID; 這一行,再在下一行加入 global $aspamq; 即可。以下是更改後的WPcommentSpam_head()。
function WPcommentSpam_head() {
?>
<link href="<?php echo get_bloginfo('wpurl'); ?>/wp-content/plugins/spam-stopper/spam-stopper.css" rel="stylesheet" type="text/css" />
<?php
global $user_ID;
global $aspamq; //就是這行
if (!isset($user_ID)) {
?>
<script type="text/javascript" src="<?php echo get_bloginfo('wpurl'); ?>/wp-includes/js/jquery/jquery.js"></script><script type="text/javascript">
<!--
jQuery(function(){
jQuery('#commentform').submit(function(){
if (jQuery('#author').val()=="") {
alert("Please input your name");
return false;
}
var email_field = jQuery('#email');
var emailFilter=/^.+@.+..{2,3}$/;
if (!emailFilter.test(email_field.val())) {
alert("Please input a valid email");
return false;
}
if (jQuery('#spamq').val()=="") {
alert("Please answer the anti-spam question");
return false;
}
if (jQuery('#comment').val()=="") {
alert("Please input a comment");
return false;
}
var spamq = jQuery('#spamq').val();
if (spamq.toUpperCase()!='<?php echo strtoupper($aspamq->spam_answer); ?>') {
alert("Incorrect anti-spam answer. Please re-answer the question!");
return false;
}
return true;
});
});
-->
</script>
<?php
}
}
