星期三, 6月 30, 2010

大家都做的事並不一定是對的

剛才MIS小姐的程式出現一個奇怪的Bug,在IE可以正常執行但是在Chrome完全沒有反應。我看了一下發現她用AJAX load一個完整的html進來塞在div裏,她認為這樣在第一頁有載入 jQuery,在這頁就不用再載入。

星期二, 6月 29, 2010

關於架站機的兩三事

2006年由於 蔡依林的部落格 一文意外讓廖大紅了,沒想到今天發表的總統府新網站也讓T客邦發表一篇介紹文

因為在下對敝公司的網站非常不滿意,所以之前評估過非常多的架站機,後來又因開發某專案的緣故,所以也對.Net的架站程式做過測試。
其實大家都在用架站機,重灌狂人、藍藍路等人也用Wordpress或Xoops、Drupal、Joomla等架站軟體,以方便維護。那問題出在哪兒呢?在價格。蔡依林的部落格號稱花500萬,實際上那種品質應該50萬都不到,但是總統府網站卻真的花了700萬去發包,所以被高手們用放大鏡檢視。700萬其實也不會有多好賺,公家機關的估價應該有一半是設備費,外加3年維護及保固;不過案子夠大,利潤保守估計也有100萬以上。(我真的很保守了)

先說一下這次的主角DotNetNuke好了,它是用Visual Basic所開發出來,最早是以微軟放出來的範例程式為藍本改寫出來的架站機,後來因為廣受好評,以功能上來說算是.Net架站機的翹楚,相當於Xoops在PHP架站機的地位,但問題也與Xoops相同。

早期的DotNetNuke有個令人討厭的缺點以至於敝公司開發專案不願意使用它,不是因為它用VB.Net不是C#,而是那時連到menu裏的每個項目都用名稱而不是id(正確地叫tabid)去連結,因此我們這種早期web開發者看到中文URL就吐血,決定放棄。當然還有這次本次令人髮指的XSS問題,這種架構性的缺點很難修改。

敝公司的網站用哪一套架站機呢?是一套商用軟體,所以並不多加介紹,但必須說明它是PHP+MySQL的架構。在我們買的當時以相同的硬體,執行LAMP與DotNetNuke比起來,速度真是天壤之別,只是要讓內容維護者使用而不自行加值,當然選擇後台功能強的架站機。那個廠商說他們有一套賣給種花電信某單位,由於流量很大,還客製化成為後台直接產生靜態頁面發布,在下覺得他們確實很了解狀況。

敝公司自己開發的專案使用Rainbow Portal,當時的選擇不夠多,事實也證明Rainbow Portal有點慢,但是開發模組很方便,也就硬著頭皮把案子做完,後來2005年之後它幾乎沒有再維護,所以在後續的案子也就不使用。用DotNetNuke開發總統府網站,就必須小心地檢視它的先天性弱點,由於DotNetNuke是Open Source,絕對會有不少人找出它的弱點來攻擊,開發廠商皮得繃緊點了。

目前的架站機或多或少都無法令所有的使用者滿意,最主要的問題還是在於後台管理不夠方便,好用的架站機都是商用程式,我想這也是商業化的價值。

如果現在要我選個內部使用的架站機,我應該會選Drupal或Joomla,但若要安全又快速也不考慮維護性的話,自己拉幾個網頁最快啦~

星期四, 6月 24, 2010

使用PHP 4.1.2+Apache 1.3.42+mod_ssl

敝公司幾年前買了套很舊的架站機,它用Zend 編碼PHP,因此只能用PHP 4.1.2+Apache 1.3.X,我只能默默的更新。

這兩天開始會神奇的無回應,檢查error_log發現是達到MaxClients,看了access_log似乎是Sogou web spider有些問題,而我也不想去擋偉大的祖國蜘蛛(誰知道還會有哪隻呢?),所以檢查httpd.conf,發現TimeOut居然被設成1800(秒),原本預設值是300,所以我改成100,這樣httpd的數量就維持在50左右。

因為每天都有不少試漏洞的robots,所以更新是必要的,在此記錄如何編譯Apache 1.3+PHP 4.1.2+mod_ssl

星期五, 6月 18, 2010

RT2870/RT3070在Linux的driver

由於舊的無線網卡故障,原本向朋友借了一支他不用的802.11b usb網卡;但實在收訊太差速度又慢,於是忍不住買了張便宜的EDIMAX EW-7711UMn USB無線網卡。由於什麼都不奇怪的網站上寫明支援Linux/Mac,所以才放心買下。
但是拿到手後在Windows沒問題,在Ubuntu和Mac使用內建的driver都抓不到,裏頭附的光碟有Linux及Mac的driver,但Linux版編譯不過,又到雷凌下載最新的driver,晶片組應該是RT3070,裏頭的Makefile有點小問題,而且修改安裝後仍然抓不到。

後來看到這篇才知道要disable RT2800 的module,仔細找找原來在Ubuntu 10.04已經內建 RT2800及更新版晶片的driver,所以不用像這位大哥或在下這麼費工,還不一定會成功。

重點:在 "/etc/modprobe.d/blacklist.conf" 加上 blacklist rt2800usb 就夠了。

還沒完咧,重開機後果然抓到driver,但是很怪異連不上WPA+WPA2 personal的新Wireless AP,只能連到WEP的舊AP,再google搜尋一下,發現這是Linux rt2800 driver的Bug,支援WPA2但不支援WPA,所以把AP設成WPA2 only就可以連線。

結論:Linux愈來愈好用,但因為driver的不完善,不想浪費時間的朋友還是選擇Mac/Windows比較方便;我想RT2870的問題在Ubuntu 10.10說不定就會解決,所以我還是會繼續用下去 ^_^

Update: 在Ubuntu 11.04上隨插即用!

星期二, 6月 15, 2010

神奇的Mac OS X

先聲明,我不是瘋狂的Apple Fans,也不是反微軟教派,但是這次真的讓我對OS X佩服得五體投地。

午休結束後,負責維修的同仁向主管報告遇到某幾個pdf印不出來,於是乎主管又叫我幫忙處理。一問之下,這幾個檔案是某政府單位做的pdf,乍看之下是用PowerPoint 2007直接另存成的,裏頭有90%都是精美的圖...(誰要去政府機關教高橋流簡報呀?花到不行的簡報誰知道重點在哪?)圖多並不是問題,這幾個檔最大的也不過五十幾Mega Bytes,還不到60頁;但真正的問題在於每印一頁都慢到不行,而且印到一半Adobe Reader就會當掉卡住,另存或是用Adobe Acrobat去修也沒用。

由於當時距離大老闆要的期限只剩2小時,我就不加思索拿出我的Macbook Pro,打開一試...有點慢,但是可以另存,表示可以印!於是用我的Mac印到Windows分享的印表機,但由於印表機太慢,要連別台印表機同步列印時居然因為機型太舊找不到Snow Leopard的driver!

當時我的確傻眼,沒想到台灣Xerox租借的DocuCentre-II 3005居然是過時的產品,沒有出新版Mac driver;後來看到官網寫可以用PS相容模式列印,於是用Generic postscript driver,就直接丟到DocuCentre-II 3005印出檔案,問題也就解決。

在下猜想,那幾個pdf檔不知是什麼原因造成格式錯誤,剛好Adobe使用的API會卡住(我用Foxit Reader測過,也印不出來);但Mac OS X的Preview(預覽程式) 就是沒問題,只能說好樣的Mac OS X,你真神!

Update:因為許多朋友猜測是driver等問題,後來又以Ubuntu 10.04測試,結果仍然是Adobe Reader在列印時會當掉,用xpdf則有破碎字問題且亦無法列印。後來發現那幾個pdf檔是以"DocuCom PDF Driver 6.03 for NT"製作,應是該轉檔程式之bug。

星期五, 6月 11, 2010

Visual Studio Express 切換語言

如同大家所知,下載 Visual Studio 2010 Express的中英文版並且都安裝後,就可以切換介面顯示的語言(語系),但我卻找不到 =.=

原來是從Visual Studio Express和要錢的Visual Studio不同,預設不會顯示所有的設定,必須要勾選 "顯示所有設定" 才能在 "環境"->"國際設定" 的 "語言" 裏去修改。



改完這裏後,在方案總管裏,right click aspx也出現 "瀏覽方式..." 的選項,就不用擔心更改預設瀏覽器而不能直接啟動 IE debug。

比沒錢又贏了

午休時和朋友msn聊天,再一次的又沒人能贏我。以下採用藍藍路的msn式對話:

=============================================
接受 說 (下午 01:00):
我想買Wii但是我身上前好少
[鳥毅] 說 (下午 01:01):
 你錢少?
 有沒有搞錯
接受 說 (下午 01:01):
 對阿
[鳥毅] 說 (下午 01:01):
工作十年,我戶頭剩不到60萬
接受 說 (下午 01:01):
 什麼
[鳥毅] 說 (下午 01:01):
 也沒股票等不動產
接受 說 (下午 01:01):
 好吧 我輸了
[鳥毅] 說 (下午 01:01):
 嗯,知道就好,哈
接受 說 (下午 01:01):
 哈
=====================================================

改版型了

其實早就想改版型,但因為沒有好的工具一直懶得改。

上個月被Google AD停權就一肚子鳥氣,今天剛好遇到Blogger提供Template工具,就直接按套用,也不放廣告了。

星期三, 6月 02, 2010

WinForm裏ToolBar/ToolStrip不會先Focus的Bug

同事遇到一個奇怪的Bug,她說用DateTimePicker手動改變時間,在儲存時卻不會生效。原本我以為是DateTimePicker的Bug,仔細一查卻發現是她用的ToolBar的Bug,這情形在較新的ToolStrip元件也會發生。

因為在下很久沒有寫WinForm,所以昨天特地下載Visual C# 2010 Express測試。先拉一個DateTimePicker元件、ButtonToolStrip元件,接著在ToolStrip增加一個Button,雙擊之,再加入兩行。

MessageBox.Show(dateTimePicker1.Text);
MessageBox.Show(dateTimePicker1.Text);

執行後去改dateTimePicker1的值,在日期仍反日時馬上按toolStripButton1,會發現第一次是今天的值,第二次才會更新;但若用button1則不會有這問題。

因此解決就是在toolStripButton1_Click() 加上
toolStrip1.Focus();
此處Focus在dateTimePicker1以外任何其他元件均可。
完整測試程式如下:
using System;
using System.Windows.Forms;

namespace TestDateTimePicker
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void MessageTwice()
        {
            MessageBox.Show(dateTimePicker1.Text);
            MessageBox.Show(dateTimePicker1.Text);
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            toolStrip1.Focus();
            MessageTwice();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageTwice();
        }
    }
}

執行畫面如下:

星期二, 6月 01, 2010

硬碟的容量,決定宅的力量

俗話說:『硬碟的容量,決定宅的力量』,最近 "影片"存量 VM過大,所以在下敝人小弟我就去買了一顆最便宜的eSATA外接式 1.5 TB 硬碟;這樣在公司的電腦裝Ubuntu也不會有罪惡感。
聽說有了這顆硬碟後,VM帶回家就可以繼續工作!(啥?是把和同事交換的謎片帶回家吧?)
因為也有USB,如果想要拿來當MacBook Pro的Time Machine也可以;不要亂搞的話,裝3~4個OS多重開機加上資料可攜是沒問題的。

差點忘了提價格,我在什麼都不奇怪的購物中心買,隔天早上送到花了NTD $4299,聽說有賣NTD$3999,懶得去找了。送到才發現沒有附eSATA的線,所以安裝Ubuntu得等我再去買eSATA線,下回待續...