2009/07/07

有趣的 MIS 大大

剛剛 MIS 大大寄來一封停機公告,重點在那張圖:

各位辛苦的系統開發大大們,

這件事情已經拖了一個多月了,實在不一在拖下去了…

知道各位都相當的忙碌,不過一個多月的時間應該也足夠才對。

剛剛看過黃曆,7/18 是個好日子,我們會設定在 7/18 子時系統自動關機,之後就不再提供服務了!

如果各位還有資料沒有轉到新的測試主機 xx.xxx.xx.xxx 的,請利用這兩週趕快轉移。

感謝您的配合!!

yellow calendar.png

2009/07/04

Firefox 小技巧--將收藏庫開啟於分頁標籤中

Open Firefox Library in a Tab

不曉得有沒有人曾想過,把 Firefox 內的收藏庫 (Library, 管理書籤跟歷史的使用界面),開啟於分頁標籤中,而不是獨立視窗中。

如果你也曾想這麼做,那就這麼做吧 -- 在網址列中輸入以下 URL:

chrome://browser/content/places/places.xul

噹噹…

現在收藏庫便開啟於分頁標籤之中了:

Firefox Library in a Tab

Technorati : , , , ,

2009/06/05

JavaFX 與 TIOBE Programming Community Index

TIOBE Programming Community Index 是一個用來評量程式語言受歡迎程度的指標,其排名方式,在頁面上說明如下:

The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, Wikipedia and YouTube are used to calculate the ratings.

我大概每個月初都會略微的瞄一下,了解一下目前各主要程式語言的排名狀況。昨天在檢視的時候,發現了 Sun 推了一陣子的 JavaFX 語言,並沒有在排名裡面。可能原因是 JavaFX 並沒有在百大排名裡面,或者是 TIOBE 並沒注意到這個程式語言。而我發現網頁上有這一行字:

If you have the impression there is a programming language lacking, please notify us at tpci@tiobe.com.

也就是說,如果你發現 TIOBE 可能漏掉某個程式語言的排名,可以寫信告訴他們。因此,我想先確定一下,JavaFX 目前是否有資格擠進百大。我用了一個「比較法」來確認,也就是,如果某語言在 Top 100 或 Top 50,而 JavaFX 的熱門程式與該語言相當,那麼 JavaFX 也該在 Top 100 或 Top 50 左右。

這個用來做比較的語言,最好不要有一字多義的傾向。例如,Ruby、Python、Groovy、Alice 等就都不適合,因為他們不是一字多義,就是菜市場名字。後來我決定以 Erlang 來做比較,比較結果如下:

就查詢量來看,javafx 有超越 erlang 的趨勢。有了這個發現,我便動筆寫了信給 TIOBE 的成員,而沒想到昨天才寄的信,今早就收到回信。而 TIOBE 也把 JavaFX 納入排名,目前排名第 72。另一個值得小小高興一下的是,TIOBE 的回信者 Paul 在信中說道,為了感謝我的建議,他會在最近一期的排名中公提到我的名字。看看 6 月份的排名,哇,真的有提到我耶 ^_^!

2009/05/05

有趣的 Ruby 字串操作

irb(main):025:0> a= "abc def"
=> "abc def"
irb(main):026:0> a["def"] = "abc"
=> "abc"
irb(main):027:0> a
=> "abc abc"
irb(main):028:0> a["abc"] = "xyz"
=> "xyz"
irb(main):029:0> a
=> "xyz abc"
irb(main):030:0> a["abc"]
=> "abc"
irb(main):031:0> a["def"]
=> nil
irb(main):032:0>

date = "2009/12/12"
month, day, year = date.split('/')

Technorati : ,

2009/04/23

C # 裡面 ?? (雙問號)運算子的妙用

?? 運算子是在 2.0 版後新增的,至今我在別人的程式中還很少看到有在使用。
它的使用方式如下:

a = b ?? c;

上式的意思是,如果 b != null,那就把 b 的值指定給 a,否則就把 c 的值指定給 a。
照理講,?? 的功能完全可以由 ?: 運算子替代,如上式可以改寫如下:

a = b != null ? b : c;

不過,?? 對於簡化程式碼很有幫助,我相信許多 one liner 會很喜歡它,例如:

if (Session["WEB_TYPE"] == null)
{
Session.Add("WEB_TYPE", "");
}

可以改寫為:

Session["WEB_TYPE"] = Session["WEB_TYPE"] as string ?? "";

?? 的另一個特點是使用上可以串連,例如:

string a = null;
string b = null;
string c = "c";
string d = a ?? b ?? c;

這樣的意思,也就是由左到右,找到第一個非 null 值的變數,指定給 d。

於是,如果有一段程式如下 (抓取系統中的舊程式碼舉個例子):

if (Session["WEB_TYPE"] == null)
{
Session.Add("WEB_TYPE", "");
}

//接收 Web_type
if (!IsPostBack)
{
if (Request.QueryString["WEB_TYPE"] != null)
{
webtype = Request.QueryString["WEB_TYPE"].ToString();
Session["WEB_TYPE"] = webtype;
}
}

可以用 ?? 運算子改寫成以下版本:

Session["WEB_TYPE"] = Session["WEB_TYPE"] as string ?? Request.QueryString["WEB_TYPE"] ?? "";

這樣程式就精簡許多,也更好理解與維護了。

2009/04/22

在麥當勞看了一場戲

一個皮膚黝黑的男子,兩眼無神的呆坐在餐飲區的一角。
一個體格壯碩的男子帶著一個清瘦的女生走了進來,坐在黝
黑男子的身旁,對他交待了幾句,拍拍了那女生的肩,便走
開了。

那男的哭喪著臉,哀求的詢問著那女生,那女生正顏厲色的
反過來詰問那個男的… 那男的無言以對,熱淚涔涔而下,
這種狀況來回幾次,那男的奪門而出。

那個壯碩的男子回來,再度拍拍那女生的肩,安慰她幾句,
再度離去把那女生留在現場。

最後,另一個面容白晰的男生走了進來,拉著那女生的手,
摟了摟那女生的肩,聊了幾句。那女生嘆了口氣,如釋重負
般的站了起來,那男生也跟著站了起來,兩個人牽著手,漫
步離開現場。

2009/03/15

老筆電擺脫 Windows 大復活

4、5 年前買了一台華宇的 Fox F35 11 吋 "小" 筆電,至今跑起來仍是嚇嚇叫,就一款跑了 4、5 年的老筆電而言,現在還能使用它,算是相當值回票價了。不過畢竟服役年資已深,系統內已裝了太多奇奇怪怪的程式,在重灌之際,我便想為 F35 換上 Linux,讓它從 Windows 世界中解放出來,而我也可以多了一台可以跑 Linux 的玩具。

我為 F35 裝上 Fedora 最新版,大抵上安裝程序相當簡便,約不操過 20 分鐘,即可安裝完成。稍經調校設定後,即可使用無線上網,一切看似美好。然而就在我想試著播放 MP3 之際,卻發現 F35 竟變成了啞巴! 明明有抓到音效卡,可是就是不出聲。在 Google 上以 "Fedora 音效" 等關鍵字找了幾天,沒找到解決方案,想說我還好其他很多事要忙,就先把這事擺一邊。

今晚回到家後,心想趁著一點空檔,換派 Ubuntu 上場,看是否能解決這個問題。Ubuntu 安裝好之後,最讓我感動的是,它直接就抓到 WiFi 無線網路連線,一切簡直是 too good to be true。然而我知道不能高興的太早,因為真正的挑戰,還在於讓我這 F35 發出聲來。果然,進入「音效設備設定」畫面,點選測試按鈕,Ubuntu 也是無聲以對,是哪裡出了問題? 這次改以 "Ubuntu 音效" 為關鍵字進行查詢,資料看起來比 Fedora 多了一些,經過各種資料的參照及測試後,終於讓 F35 可以奏出悠揚的樂章…

其實使 F35 電腦出聲的關鍵,說出來可能會讓人搖頭嘆惜…因為,那根本不是 Linux 的音效支援不足的問題,而是 Linux 的音效設定太強,導致可能在某些機器上,不調整預設設定,你的 Linux 機器就會變成啞巴! 以我的狀況為例,我就是改了 External Amplifier 設定,將它 disable 後,就發出聲音來了。

稍微說明一下 disable External Amplifier 的方式。

  1. 以右鍵點選視窗右上角的 "喇叭" 圖示
  2. 在選單中點選 "啟動音效控制程式"
  3. 在開啟的 "音量控制" 視窗中,點選 "偏好設定" 按鈕
  4. 在出現的 "音量控制偏好設定" 清單中,將 "External Amplifier" 前面的 check box 把勾
  5. 然後點選 "關關",回到 "音量控制" 視窗
  6. 切換到 "開關" 頁籤
  7. 將 "External Amplifier" 後面的 check box 打勾取消

就這樣。要注意的是,雖然我前面一直在說 F35 的狀況,但就我查到的資料,其他人在別台機器上,也遇到同樣的問題,也是透過把這個選項 disable 掉就得以解決。所以如果你也遇到相同的狀況,也許也可以用這方式試試看。另外,如果你的 Linux 是 Fedora,這個程序也應該適用。