2013年1月31日 星期四

炎熱的花蓮

睽違二十五年後,再度來到花蓮,一下火車就感受到驕陽的熱度,趕緊把夾克塞回行李箱。
我是在1987年隨防炮部隊移防,駐防原防炮學校,其實是接受"整"訓啦, 呵呵,當過兵的都知道那是怎麼一回事啦。當年移防剛好輪到我值星官,要顧好槍炮武器,又要指揮部隊,擔心兵員安全,真是累垮我啦 ... 呵呵。
對花蓮印象早已模糊,只記得放假時常去市區的萬歲書坊買書,阿兵哥則常遊說我跟他們去看電影(限),呵呵。

花蓮之旅

早上05:30起床,搭07:10自強號到花蓮兆豐農場玩,呵呵,小狐狸們盼望好久囉。
每次出去玩前一晚都說要早一點睡,但通常是弄到很晚才睡,並不是太興奮了,而是搞相機電池,清記憶卡,整理麗麗扣扣的旅行用品,... 要不然就是躺在床上,嘿,備用眼鏡忘了帶,又爬起來 ... 挖咧。

2013年1月30日 星期三

面談

今天上司逐一約見面談 (打考績啦), 幹部優先. 我昨天就已將資料回傳上司, 因此下午 14:00 第一個進去, 一看我進來就說, 我就知道是你. 呵呵, 我該不會是第一個回傳面談資料的吧. 費時 30 分鐘, 氣氛 OK. 隨後的人越來越快, 有的三分鐘, 有的五分鐘, 可見凡事不要跑第一. 分數會影響獎金一些些, 說不在意有點矯情, 但我不是把這擺第一位, 我比較關心專案, 程式寫不出來的問題比較頭大, 呵呵. 完美地搞定一個系統最開心!

2013年1月29日 星期二

台灣人不怕死

現在的台灣人怕找不到工作, 怕 22K, 怕勞保破產, 也怕利息被抽 2 趴的健保補充費. 但其實並非我們一無是處, 至少, 至少我們不怕死.
證據就是我們對核四沒啥看法, 政府如果硬要運轉, 也還好啦, 政府不是掛保證嗎? 至少台電不會以廢核的代價為藉口來調漲電價. 如果反核四成功, 也不錯, 這樣就不會提心吊膽了. 反正核四又不是蓋在我家, 核廢料也不是倒在我們家後院, 要怎樣都可以啦. 這就是不怕死精神. 有這種精神的話, 還怕什麼勞保會不會破產?
其實我就是這樣模稜兩可的人. 雖然我是傾向反核, 但是卻不太清楚反核的真正原因是什麼. 直到上個月在商業周刊看了連續幾期何飛鵬先生關於反核的專欄, 這才真正明白, 反核不是什麼環保問題, 而是要不要命的問題.
我就不申論其中原委了, 我想引述今天在 Smart 雜誌上看到郝廣才先生的 "要錢? 要命" 最後一段, 比較能傳達我的體會 : "我們可以氣死, 恨死, 幹死, 但不可以找死! 不能一錯再錯! 核四越早停工, 未來浪費的錢越少, 核災可是絕對公平,  台灣這麼小, 任何一座核電廠出事, 不管富人, 窮人, 大官, 小民, 正妹, 宅男, 正宮, 小三, ... 沒有一個人, 沒有一寸土逃得掉! 到時錢有什麼用, 問題不是錢, 是命! 是孩子的命, 親人的命, 你的命, 我的命, 全台灣人的命!"
說得痛快呀! 但官員聽得進去嗎? 台灣人有感嗎? 如果對反核四的態度能夠像對反廢死那樣堅決的話, 核四早就停工了, 也就不會拖到現在捧在手裡怕碎, 丟了又可惜那樣騎虎難下了. 每年要丟幾百億進去這個危險的無底洞, 幾百億是多少中產階級薪水所貢獻啊~~~民脂民膏喔.
政府像這樣拿人民的錢亂搞的還不只核四, 中科四期也是一樣, 已經搞不起來了, 每天還要丟幾千萬進去, 沒有一個大官有擔當願意喊停, 你說我為啥要納稅?
核四大事記 (摘錄自 Wiki) :
  1. 1996 年立法院決議廢止所有核電廠興建計畫. 行政院覆議成功繼續施行.
  2. 1999 年動工.
  3. 2000 年陳水扁當選總統, 實踐反核諾言, 由行政院長張俊雄宣布核四停建.
  4. 2001 年大法官釋憲, 核四停建決策違憲, 張俊雄與王金平簽署協議書宣佈核四復工.
  5. 2003~2012 年不斷爆發施工不良, 圖利廠商, 擅自變更設計, 以不符規格次級品濫竽充數, 承辦官員接受賄賂遭監院彈劾 ,..... 這就是政府掛保證?
  6. 2013 年經濟部長施顏祥表示核四未來追加預算必然超過三千億.

存取網頁元素的三個方法

在 DOM 物件模型中, 我們可以透過 document 物件的三個方法來取得網頁元素 :
  1. document.getElmentById("myID")
    此方法傳回 ID 屬性值為 myID 的元素物件, 由於 ID 在整份文件中必須唯一, 因此傳回的是單一物件 (因此 Element 是單數, 不是 Elements).
  2. document.getElementsByName("myNAME")
    此方法傳回 NAME 屬性質為 myNAME 的元素物件陣列, 因為 NAME 在整份文件中可以有多個, 因此傳回的是物件的集合, 可以用陣列索引來取得集合中的各元素物件. 注意, 這裡用的是 Elements 而非 Element.
  3. document.getElementsByTagName("myTAG")
    此方法傳回標籤為 myTAG 的元素物件陣列, 因為同樣的標籤在整份文件中可以有多個, 因此傳回的是物件的集合, 可以用陣列索引來取得集合中的各元素物件. 注意, 這裡用的是 Elements 而非 Element. 例如 :
    var objs=document.getElementsByTagName("a");  //取得所有超連結 a 元素陣列
    for (var i in objs) {  //拜訪元素
          alert(objs[i].href);  //顯示連結位址
          }

2013年1月28日 星期一

模仿 jQuery 的 $ 工廠函數

Javascript 框架如 jQuery, prototype 等最吸引人的就是方便好用的工廠函數, 例如在 jQuery 中, $("#myID") 便可以取得 ID 為 myID 的 jQuery 包裹物件. 如果不使用框架的話, 就要使用 document 物件的 getElementById() 方法來取得 DOM 物件, 乖乖地重複打那又臭又長的 document.getElementById("myID").
其實, 我們也可以模仿 jQuery, 製作簡單的 $ 工廠函數 :

function $(id) {return document.getElementById(id);}

只要在網頁程式中多加一行這函數, 那麼就可以節省打字時間, 減少打錯機會囉.
跳出前先儲存
<input id="save_before_quit" type="checkbox" />跳出前先儲存
...
var obj=$("save_before_quit");  //取得 checkbox 物件
if (obj.checked) {save_data();}  //如果勾選就呼叫 save_data() 函數

今天尾牙

晚上在真寶舉辦尾牙,呵呵,終於脫離二樓餐廳那個寒酸地方啦. 好多同事抽中一萬元, 6000 元等等大獎, 本人則是兩串蕉空手而回, 呵呵.
今天已經把指令產生器程式寫好囉, 明日測試一下應該就可以上線了.

測試 GFW 阻擋

今天在 Tsung's Blog 看到這篇 "查詢 Domain 有沒有被 中國 GFW 擋掉的服務", 實際測試我的部落格, 發現竟然被阻擋, 呵呵, Google 在彼邦不吃香阿.

Expected value of DNS A records: 
74.125.228.74
74.125.228.75
74.125.228.76
blogspot.l.google.com.


LocationLookup ResultStatus
Beijing74.125.128.132
blogspot-china.l.google.com.
blogspot.l.google.com.
fail
Shenzen74.125.128.132
blogspot-china.l.google.com.
blogspot.l.google.com.
fail
Inner Mongolia74.125.128.132
blogspot-china.l.google.com.
blogspot.l.google.com.
fail
Heilongjiang Province74.125.128.132
blogspot-china.l.google.com.
blogspot.l.google.com.
fail
Yunnan Province74.125.128.132
blogspot-china.l.google.com.
blogspot.l.google.com.
fail

No servers were able to reach your site. This means that your site is most likely NOT accessible from within mainland China.

2013年1月25日 星期五

拔花生

這是上周日 1/20 在鄉下老家菜園幫菁菁拍的,她中午不見人影,原來跟阿嬤去菜園拔花生,摘了整整一桶。

2013年1月24日 星期四

WSH 的使用者溝通

我用 WSH 這麼久了, 事實上只用到 WScript.Echo() 這個使用者溝通方法, 而且只是在測試抓蟲的時候才用上 (輸出內部變數之狀態), 程式寫完了就去除啦. 因為 WSH 通常被用來做一些自動化的工作, 執行所需的環境變數或預設值早已定好, 或者程式會自動決定, 不需要使用者輸入, 因此類似瀏覽器 Javascript 的 window.confirm() 與 window.prompt() 功能都沒用到. 注意喔, alert/confirm/prompt 只能用在網頁中, 不能用在 WSH 中. 雖然同樣是使用 Javascript, 但環境 (宿主) 不同, 那麼所提供的方法或物件也不同. 例如在網頁中是用 window.alert(), 但在 ASP 裡就要用 Response.Write().
今天心血來潮, 突然想到, 在 WSH 中要如何做到 window.prompt() 與 window.confirm() 呢? 查了一下 WSH 的書, 發現 WSH 沒有提供像 Echo 那樣的方法, 難道是很少用到的關係嗎? 後來在這個網頁 : "WSH 编程中的 alert/confirm/prompt" 找到解法.
prompt() 要用 Popup 來做 :
function confirm(msg) {
   var shell = new ActiveXObject("WScript.Shell");
   return shell.Popup(msg, 0, "確認是窗", 33) == 1;
   }
而 prompt 則要借用 VBscript 的 InputBox 來做 :
function prompt(msg) {
   var scriptCtrl = new ActiveXObject("ScriptControl");
   msg = escape(msg + "");
   scriptCtrl.Language = "VBScript";
   var vbsCode = 'InputBox(Unescape("' + msg + '"), "輸入視窗")';
   return scriptCtrl.Eval(vbsCode);
}

2013年1月23日 星期三

PHP 學習筆記 (一) 變數

最近在整理 PHP 筆記, 免得每天上下班都要帶厚厚的電腦書, 只要記在 Google, 哪裡都能查詢.

變數
  1. 變數命名規則 :
    PHP 是弱型別語言, 變數不用事先指定資料型態, 是在執行時才決定型態的, PHP 解析器會依指定之內容來設定這變數的資料型態. PHP 同時也是動態語言, 變數可以隨時重新指定為另一種資料型態之值. 但唯一的例外是, $this 是一個特別變數, 用來表示 PHP 物件本身, 不可重新指定其值. 注意, 要避免在內部範圍 (例如迴圈或函數內) 使用與外部範圍同樣的名稱, 以免存取錯誤.
    • 變數必須以 $ 開頭, 後接任何數目的英數字或底線組合, 名稱中不能含有 $, 故 $va$r 為不合法.
    • $ 後第一個字元不可以是數字, 必須是英文字母或底線 _, 第二字元以後才可以用數字, 最好只用英數字與底線, 不可用 $, @ 等特殊符號. 故 $var@1 不合法, 但 ${1}, ${"變數"} 是合法變數名稱.
    • 變數有分大小寫, 故 $var 與 $Var 乃不同變數.
    • 不可以使用 PHP 保留字, 內建變數, 內建函數, 或內建物件名稱當變數名稱.
  2. 參照指派 (assign by reference) 取得變數之記憶體位址:
    所謂參照指派是用參照運算子 & 於變數 $var 前 (即 &$var), 這樣就會取得該變數之儲存位址, 對此變數賦值同時也會改變 $var 之值, 因為它們都指向相同位址. 例如 :
    $var1="Peter";
    $var2=&$var1;  //使用參照運算子 & 取得 $var1 之位址, 並將此位址指派給 $var2 (使得 $var1 與 $var2 指向相同位址)
    $var2="John";  //賦值 $var2 ($var1 也會同步被改)
    echo $var1;  //輸出 "John"
    echo $var2;  //輸出 "John"
  3. 可變變數 (variable variables) :
    PHP 的可變變數可以動態地設定變數名稱, 它是以另外一個變數的值來作為它的變數名稱. 它是在一個字串變數名稱 $var 前面再加一個 $, 即 $$var, 表示以 $var 之值作為其名稱的一個變數, 例如 :
    $x="hello";
    $$x="world";  //此指令等同於 $hello="world"
    echo "$x $$x";  //輸出 hello $hello (雙引號的變數解析功能只能用一次)
    echo "$x ${$x}";  //輸出 hello world
    echo "$x ${$x}";  //輸出 hello world
  4. 變數的有效範圍 (scope) :
    PHP 的變數依其有效範圍可以分成 3 種 :

    變數種類 說明範例 
    區域變數 (local variable)區域變數是在函式內宣告的變數 (包括函式的參數), 只能在函式內部使用, 在函式外無法存取. 當呼叫函式時, 區域變數會被建立, 函式執行完畢即被釋放, 即區域變數的值不會被保留.function myFunc() {
      $a=2; //宣告區域變數
      echo "函式內 a=$a";
      }
    myFunc();  //顯示 "函式內 a=2"
    echo "函式外 a=$a";  //顯示 "函式外 a=" (無法存取)
    全域變數 (global variable)全域變數是在函式外面宣告的變數, 在整個 PHP 檔案中都可以使用, 但是它不像 Javascript 一樣自動穿透到函式內部, PHP 全域變數有效範圍只限於主程式中, 不會影響到函式內同名的區域變數, 欲在函式內部存取全域變數時必須在變數前面加上 global 關鍵字. 在函式內存取全域變數的第二個方法是使用 PHP 特別定義的陣列 $GLOBAL["全域變數名"] :
    $a=2;
    function myFunc() {
      echo "函式內 a=".$GLOBAL["a"];
      }
    $a=2;  //宣告全域變數
    function myFunc() {
      global $a=3; //宣告 $a 為全域變數
      echo "函式內 a=$a";
      }
    myFunc();  //顯示 "函式內 a=2"
    echo "函式外 a=$a";  //顯示 "函式外 a=2"
    靜態變數 (static variable)靜態變數只能在函式內用 static 關鍵字宣告, 使宣告於函式內之變數在呼叫結束後, 仍然存在於記憶體, 不會被釋放, 下一次在呼叫此函數時, 會重新被存取到. 只要函式被呼叫一次, 函式內的靜態變數就會一直存在, 但是它與全域變數不同的是, 於函式外部是無法存取得到靜態變數的. 注意, 靜態變數不能與複合運算子同時使用 :
    static $msg += 1;  //syntax error
    應該分開來 :
    static $msg;
    $msg += 1;
    function myFunc() {
      static $msg;  //宣告靜態變數
      $msg += 1;
      echo $msg;
      }
    myFunc();  //顯示 1
    myFunc();  //顯示 2
    echo "函式外 msg=$msg";  //顯示  "函式外 msg="
  5. 變數的預設值 :
    每一種資料型態都有預設值, 整數與浮點數預設值為 0, 字串預設值為空字串, 布林值的預設值為 FALSE, 陣列預設值為空陣列. 例如 : echo "x=$x"; //輸出 x= (變數 $x 之前尚未賦值, 因為用於字串中, 預設值為空字串) echo $y += 10; //輸出 10 (變數 $y 之前尚未賦值, 因為用於算式中, 預設值為 0)
  6. 檢查變數是否為空的函數 : empty($var)
    可以使用 empty($var) 函數檢查變數是否為空變數. 空變數有六種 : 空字串 "", 0, 字串 "0", NULL, FALSE, 以及空陣列. 對於空變數 empty 會傳回 TRUE.

讀取 ACCESS 資料表欄位名稱


在 ASP+Javascript+ACCESS 的小型互動網頁環境中, 常常需要讀取某資料表的欄位名稱 (例如要作為表格的標頭), 總不能打開資料庫一一去抄出來吧! 以下程式碼利用掃描資料庫的 Schema 欄位, 就可以將全部欄位名稱讀出來, 放到陣列裡面.

var conn=Server.CreateObject("ADODB.Connection");  //建立 ADODB 物件
var str="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
            Server.MapPath("./db/MyDB.mdb";  //連線字串
conn.Open(str);  //開啟資料庫連線
var schema=conn.OpenSchema(4);  //取得 Schema 物件
var fieldnames=new Array();  //存放欄位名稱
while (!schema.EOF) {
         if (schema.Fields("TABLE_NAME").Value=="users") {  //比對資料表名稱
             fieldnames.push(schema.Fields("Column_Name").Value);  //放入陣列
             }
         schema.MoveNext();
         }
schema=null;
Response.Write(fieldnames.join());  //顯示欄位名稱
conn.Close();  //關閉連線
conn=null;

最常用的 SQL 指令

SQL 語法是我每天 WEB 開發工作中離不開的東西, 因此把這些最常用指令摘要如下, 以備忘記時查考 (記性越來越不好囉), 其實用來用去就是底下這些個, 沒啥大學問啦 :
  1. SELECT
    SELECT * FROM users WHERE gender='F' AND age < 40 ORDER BY name DESC, age ASC
    SELECT name AS 姓名, age AS 年齡 FROM users  (使用欄位別名)
    SELECT * FROM users WHERE (name LIKE 'T%' OR name LIKE '%R') AND gender='M'  (組合條件 : % 代表字串, _ 代表一個字元, # 代表 0-9 數字)
    SELECT * FROM users WHERE NOT name LIKE '%介%'  (否定條件)
    SELECT * FROM users WHERE age BETWEEN 20 AND 60  (數值範圍)
    SELECT * FROM users WHERE birthday BETWEEN #1966/1/1# AND #2012/1/23#   (日期範圍)
    SELECT * FROM users WHERE age IN (20,30,40,50)   (列舉)
    SELECT * FROM users WHERE city IN ('台北','桃園','高雄')   (列舉)
    SELECT TOP 50 * FROM users  (選取前 50 筆)
    SELECT TOP 20 PERCENT name,age FROM users  (選取前 20%)
    注意, MySQL 沒有 TOP 與 PERCENT 語法, TOP 必須改用 LIMIT  :
    SELECT * FROM users WHERE gender='F' ORDER BY age LIMIT 10
    SELECT * FROM users ORDER BY age LIMIT 3,10 (從第 3 筆開始抓 10 筆)
    而 PERCENT 必須用兩步驟模擬, 首先求出全部列數, 再乘以百分比得到筆數
     :
    $SQL="SELECT COUNT(*) FROM users";
    $RS=run_sql($SQL); //執行 SQL 操作
    $percent=20; //列出前百分比紀錄
    if (is_array($RS)) {
        $total=$RS[0][0]; //總筆數
        $limit=round($percent*$total/100); //將百分比換算成筆數
        $SQL="SELECT * FROM users LIMIT ".$limit;
        $RS=run_sql($SQL);
        ...
        }
    SELECT DISTINCT occupation FROM users  (群組 : 把相同值的合為一筆)
    SELECT occupation FROM users GROUP BY occupation (群組 : 功能同上)
    SELECT COUNT(*) FROM users   (計算總筆數)
    SELECT COUNT(age) FROM users  (計算指定欄位有值之總筆數)
  2. INSERT
    INSERT INTO users(name,age,gender) VALUES('武大郎',25,'M')
  3. UPDATE
    UPDATE users SET country='台灣'   (更新全部記錄)
    UPDATE users SET gender='F' WHERE name='崔鶯鶯'  (更新一欄)
    UPDATE users SET age=23,gender='F' WHERE name='崔鶯鶯'  (更新多欄)
  4. DELETE
    DELETE * FROM users   (刪除全部紀錄)
    DELETE * FROM users WHERE age > 30   (條件刪除)
    注意, ACCESS 才需要 *, 而 MySQL 不可用 * :
    DELETE FROM users   (刪除全部紀錄)
    DELETE FROM users WHERE age > 30   (條件刪除)
     

薯餅

我每週都會買馬鈴薯,主要是為了榨鮮汁來喝,剩下的渣就拿來煎餅,味道很不錯。
首先將馬鈴薯削皮,然後像一般刷蘿蔔絲那樣刷成一絲絲,再放到鋼質濾網上用湯匙稍壓,就會濾出鮮汁來,一顆大約可榨出 30-50 CC, 要馬上喝掉,否則很快會變黑,變黑就不要喝了。
然後在平底鍋放些薄鹽,把薯絲放下去,稍為微壓一下,我通常把它整成方形,用小火慢煎十分鐘再翻面續煎十分鐘即可。

關於債券

國泰的 SALES 來推銷 "國泰富利多變額壽險", 主要是債券, 據說月配息相當穩定 3~4%, 但壽險費用不便宜ㄚ, 上回就婉拒了, 這回又找我去聽說明會 (領獎品), 內容聽來 OK, 比傻傻存銀行好, 但是仍有些疑問. 參考 :
"月配息投資型保單,讓投資人每月多了一筆資金可彈性運用,但仍需留意投資型保單並無保證本金及配息率,投資績效須由個人承擔盈虧,因此投資人在購買前,應先檢視個人的風險承受能力,並充分了解商品內容後,再選擇適合的投資標的。"
  1. 國泰人壽富利多配息問題
  2. 國泰人壽富利多變額壽險
  3. 商品介紹
  4. 保單連結高收益債 日賣1億
  5. 歐債仍無解 投資難操作 連結債券保單正夯
  6. 用投資型保單 配息免繳補充保費
  7. 月配息與固定提解有何不同?
  8. 聯博全球高收益債券基金的配息....撐不住了

青春無悔中的大阿姨

我找 "青春無悔" 這部片子非常久了, 那是二十年前在台北的時候看的. 我甚至還打電話到中影詢問是否會發行 DVD, 說還要等看看. 想找這部片除了是年輕時的回憶外, 主要是當時電影看到一半, 突然發現~~~嘿, 片中那個抱孩子的不就是我大阿姨嗎? 那小娃兒就是我看著長大的劉繼芳ㄚ. 於是才想要收藏這部片子, 我想大阿姨看了一定很高興吧! (想要成為電影中人不簡單ㄚ). 還有, 這電影是在我家鄉拍攝的, 片頭那片菸田遠望不是有兩座山嗎? 哈, 那就是我家.


2013年1月22日 星期二

熊與美洲豹

前幾天收到朋友 E-MAIL 分享一個 YOUTUBE 影片, 題為 "這個特寫是如何拍到的?", 我看了之後也很納悶, 攝影師為什麼可以取這麼近的景? 難道是巧妙的剪接?


關於 blogger 時間錯誤問題

找到這篇文章談到 blogger 時間不正確問題, 但說的是無名匯入 (原來可以匯入ㄚ) 時時間錯誤問題, 不是我在意的發布時間不正確問題.
~~~~兇手找到了, 原來是我自己時區沒設啦! 要在後台的 "設定/語言與格式" 中, 設定時區為 "GMT+8 台北", 這樣發佈時才會打上正確的台灣時間. 還有, 發布前別忘了輸入右邊的標籤, 以利分類.
  1. blogger 試用報告
  2. 解決Blogger的Undefined未定義時間錯誤

麵包超人發威

整理 Google 帳號時發現了這個以前上傳到 Youtube 的影片, 那是當時被我稱為 "麵包超人" 的文文與菁菁 "比武" 的影片, 場景為園遊會 (誰辦的忘記了), 因宣翰他們的機器人班有擺攤, 所以文文他們也來看熱鬧, 時間是 2010 年 11 月 11 日 (菁菁二年級上), 以新買的天瀚小 DV 拍攝.



程式越學越多

最近工作重心放在ALU新機器的資料庫管理系統設計,基本上已完成資料擷取,剖析,以及ASP網頁呈現等主體程式撰寫,加上繪製了一張精美的資料庫結構圖,頗具美感,深感滿意,今天還回過頭幫舊GB系統重畫一張架構圖,更新後整個介面就一致了,漂亮啊.
我現在工作上最常用的就是我的老朋友 Javascript了,不但用來寫ASP,也用來寫WSH, 超好用,當年認真學果然功不唐捐啊.
另外為了寫軟體機器人 (主要是為了寫股票分析自動化程式), 還學了 PHP (寫後台) 與 Python (寫 GAE) 以及 jQuery, Autoit, 這就是我目前編程時主要使用的語言,我想這樣就夠了,不要再學新的了,腦力有限啊.

行蹤怪異的大咪

中午打電話回家時,媽說大咪早上有回來,一大早就在門外喵個不停,吃完飯又溜出去了. 有時候感到納悶,它兩三天不回家都在哪睡? 它都跑去哪兒? 幹哪些事? 真想給它掛個無線電追蹤器耶!
自從小咪離家不回失蹤後,大咪只要三天不回家我就會擔心,其實我已經把它當家人了.
怎樣? 大咪睡得很爽的樣子是不是會讓人覺得人不如貓啊!

夏天協奏曲

前幾天在 Yahoo 看到這一篇新聞, 才知道有這部國片 (可見我有多麼忙, 這是兩三年前的片子了), 本想找 DVD, 結果卻在 YOUTUBE 上找到了. 對於曾在金門當兵的我, 看完真的有股衝動想去金門看看, 離開那裏 20 多年了, 想回去看看我在小徑山壁碉堡的排長寢室還在否? 哈哈哈, 當年有眼不識泰山, 金防部司令突然視察時, 還搞不清楚原來金門最高階軍官是三顆星呢! 還好化險為夷順利退伍.

  1. 很像國片「夏天協奏曲」中每天到妻子墳前「聊天」的「阿輝伯」
  2. 夏天協奏曲 : http://www.youtube.com/watch?v=_nLKnYf4owc
  3. 林逸欣 blog : http://sharababy.pixnet.net/blog
  4. 金門旅遊行程推薦 : http://visitkinmen.pixnet.net/blog/category/252753

小狐狸事務所搬家了

因為手機是 Android 的, 用 Google 的 blogger app 隨時可以寫網誌, 所以決定搬家到 blogger 去囉 !

新家 : http://yhhuang1966.blogspot.tw/

暫別了 ! ExtJS

週二去文化中心還書時看到一本 ExtJS 開發的書, 我知道那是一個 Javascript 框架, 於是好奇地借回來, 看看跟 jQuery 有何不同. 看了兩三天, 先說結論 : 博大精深, 入門難, 但基礎打好後將如倒吃甘蔗. 它最吸引人的是標準化的各式元件, 像資料表格, 繪圖等等, 總之學通之後就不用花時間在網頁美工上, 而能專注於商業邏輯. 但是, 它借鏡 Java 的架構, 以類似 Java 的物件導向來開發, 所以, 對已有 Java/C#/C++ 基礎的人會比較容易入手, 但是新的玩意總還是有許多新的東西要熟悉, 學習曲線還蠻陡的哩, 所以即使考過 SCJP, 我別再妄想無痛入門啦. 本來想換 ExtJS 來開發, 我看還是暫緩, 繼續把 jQuery 搞熟再說吧! 因為還有更重要的事要做--PHP 專案.
只有專注與聚焦才能幹出一些事來.

小狐狸事務所搬家了


小狐狸事務所搬家了

自從換了 HTC Desire S 手機後, 我的日常生活與 Google 已經 "攬著著" 無法分開了, 所以就把無名小站的部落格搬過來啦! 這樣就可以跟 Google 服務完全整合, 不必記一大堆帳號密碼. 可惜的是 blogger 好像沒有辦法匯入無名的備份檔, 所以資料也搬不過來, 殘念 ~~~.
無名小站的小狐狸事務所 : http://www.wretch.cc/blog/yhhuang1966