~尋找生活新鮮事~

  • CodeIgniter: Display ActiveRecord Generated SQL

    感覺在台灣用 CodeIgniter 開發的公司還不少,CodeIgniter (簡稱 CI) 是以 MVC 為基礎的 PHP framework,輕量以及容易上手是相當吸引人的特色。 CI 的 Database Library 中實作了 ActiveRecord 的功能,雖然它實際上是個 query builder,而不是真正的 ActiveRecord pattern,不過對於開發人員來說還是能有效地完成資料庫的存取動作,並減少自己組合 SQL 的麻煩。 在撰寫存取資料的 Model 時,經常需要查看 query string 來 debug,CI 提供了兩個方法來取得 query builder 產生出來的 query string。 一個是在 query 執行前用 $this->db->_compile_select(); 另一個是在 query 執行後用 $this->db->last_query(); 雖然不太清楚為什麼要分成執行前執行後,不過至少提供了 debug 的工具。 另外在成功 insert 資料後,也可以用下列方法取回自動增加 (auto increment) 的 id 值。…

    繼續閱讀全文…

  • jQuery Validation plugin: How to Use Regex as Rule?

    在網頁程式中,表單的處理一直是很繁瑣的一環,client 端要用 Javascript 先對使用者的輸入進行初步過濾,資料送到了 server 端還是要再過濾一次。「永遠不要信任使用者輸入的資料」是表單程式的準則。 為了網站的安全不可少的 SOP,結果便是程式設計師要為此付出許多時間撰寫過濾程式。為了減緩程式設計師的腦細胞死亡速度,借助第三方程式的功能也是很重要的課題。在網頁前端常會用 jQuery Validation plugin 來對使用者輸入的資料進行前處理,這個套件內建一些基本規則,像是必填 (required)、電子郵件 (email)、網址 (url)、數字 (digits) 等等,但偶爾還是需要自訂特殊規則。 還好 jQuery 這個套件提供開放的接口可以自訂功能,透過簡單的幾行程式就能用正規表達式 (regular expression, regex) 來指定規則。 // 建立名為 ‘regex’ 的自訂規則 $.validator.addMethod(“regex”, function(value, element, param) { // 強制加上 ^ 與 $ 符號限制整串文字都要符合      return value.match(new RegExp(“^” + param + “$”)); }); $(“#myForm”).validate({     rules: {// 定義規則       …

    繼續閱讀全文…

  • CSS 變更選取文字的背景色

    在 CSS3 的規範中,多了一些選擇器 ( selector ) 的定義,提供設計師更多元的元素操作方法。其中一項新增的選擇器是 ::selection,表示被選取的文字。 透過這項選擇器便能做出不同的選取區背景色。簡單的範例如下 <style> p.yellow::selection { background: #fff2a8; } p.yellow::-moz-selection { background: #fff2a8; } </style> 選取以下的文字試試 If you want a reason as to why this decision has been made, Blizzard is happy to provide you with two. The first is of course piracy, which they believe an always-connected game…

    繼續閱讀全文…

  • Windows 如何找到佔用 port 的程式?

    最近要在桌機上安裝 nginx for windows 時,發現一直啟動失敗,但是 config 測試是 OK 的。想說可能會是 port 80 被佔用了。在 Windows 上要查出 port 被哪支程式佔用並不難,只消兩行指令就可以了。 先進入命令提示列 (Command Prompt)。輸入 C:\>netstat -ano | findstr 0.0:80 得到如下的字串 TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       1860 其中 1860 就是佔用 port 的程式 PID,再輸入 C:\>tasklist | findstr 1860 得到如下的資訊 httpd.exe                  1860 Services                0      4,148 K 表示佔用的是 httpd.exe,也就是 Apache Server 還開著。關掉 httpd.exe 再啟動 nginx…

    繼續閱讀全文…

  • MySQL Reset Auto Increment Number

    Database 裡在開新 table 時,常會使用俱有自動增值屬性 (auto increment) 的欄位來當 primary key,而常見的命名也不外乎是 ID 或是 post_id 之類的。每當插入一筆新資料,ID 就會自動加一,是很方便的功能。不過在刪除資料時,ID 值並不會重設,留下很多空的序列,像是 1, 2, 4, 7, 12 這樣,尤其是系統開發階段更是如此。 除了將 table 刪除,重匯資料以外,MySQL 官網上也有提到如何重設 auto-increment 的指標值。只要輸入下列 query 就能指定指標值: ALTER TABLE tbl AUTO_INCREMENT = 1; 當然數字可以依需求更改。 若是要在插入資料時就指定數值,要輸入下列 query: SET insert_id = 40; INSERT INTO tbl VALUES (‘blah’, ‘…’); 馬上接著的 insert into 就會是指定的 ID 值了,這個語法是一次性的,並不會影響其他插入的資料。 或是先入插入資料,再用…

    繼續閱讀全文…

  • MySQL 字串連接 concat

    在 MySQL 資料庫中想產生一組獨一無二的 key,這樣可以做為比對的依據。打算直接在資料庫上操作新增欄位,至於 key 的產生是很直覺地想用 md5() 這個 function 來處理。但是因為要拿什麼資料來雜湊呢? 想說就用其他欄位加一加,再加上時間來湊。很直覺地寫下這樣的 query SELECT md5( id + name + now() ) 可惜這樣的結果會因為 id 是 int,而且 name 是 string 而產生非預期的結果。解決方法是把所有的欄位轉成 string 來處理,這時候需要 concat() 來組合字串。 SELECT md5( concat( id, name, now() ) ) 這樣就可以得到正確的 md5 值了。 deaf03c84d18a56b70e0b7d6438ada3e

    繼續閱讀全文…

  • PHP mail function 如何避免亂碼?

    又是一個工作上碰到的問題,需要寫一個簡單的 email 發送功能。雖然是基本功能,不過常見的作法還是藉由 PHPMailer Library 來達成。不過這個案子因為寄信頻率很低,想說用 PHP 內建的 mail() 就可以處理了。但是人算不如天算,怎知 mail() 成功了,但是卻是一堆亂碼,標題、寄件人欄位都是亂碼….. 囧 經過一番 Google Search 的奮戰,找到一個很 tricky 的解決方法。將會出現亂碼的文字用以下方式處理…. “=?UTF-8?B?”.base64_encode(” 會出現亂碼的文字 “).”?=” 這樣用 GMAIL 收到信的時候就可以看到正常的文字了。 mail function 範例如下… function sendMail($recipient){ $subject = “=?UTF-8?B?”.base64_encode(“信件標題”).”?=”; $headers = “MIME-Version: 1.0\r\n”; $headers .= “Content-type: text/html; charset=UTF-8\r\n”; $headers .= “From: “.”=?UTF-8?B?”.base64_encode(“寄件人 “).”?=”; $headers .= “<sender@email.com>”; $message = ‘<p><font size=”3″ face=”新細明體”>信件內文</font></p>…

    繼續閱讀全文…

  • [Excel] Convert Date and UNIX time

    這個問題是最近工作上碰到的,把 SQL 裡的 time 欄位輸出,整理成 Excel 給 PM,不過報表裡的時間都是 UNIX time 格式,除非有超強的心算,不然一般人是沒辦法直接看著 UNIX time 換成算時間日期的。 UNIX time 是以 1970 年 1 月 1 日零點 (UTC) 為起點,每過一秒加 1 的時間計算方式,更詳細的介紹請參考維基百科。根據這個公式,本文撰文時刻是 1306971424。 Excel 內部的時間計算方式和 UNIX time 有異曲同工之妙,不過起點是 1900 年 1 月 1 日,日期是整數,時間是小數,詳情請參考這篇如何在 Excel 中使用日期與時間。翻遍 Excel 2010 的 Help 也找不到和 UNIX 或 POSIX 相關的 function,看來只能土法轉換了。 轉換公式 =Unixtime / 86400…

    繼續閱讀全文…

  • [Guide] XName.org DNS settings

    很久以前寫過一篇[Guide] Google App 服務設定教學,沒有想到這篇教學後來的詢問度超級高,到現在還常有人留言詢問相關的問題。 文中是用 EveryDNS.net 完成 DNS 設定的,因為 xname.org 一直沒弄成功,不過隨著 EveryDNS 被收購了,還是趕緊研究 xname 如何設定。其實仔細看完說明後,發現設定跟 EveryDNS 其實沒兩樣,唯一的差別是這句話…. You have to use the full qualified name of the computer, with the trailing dot at the end. ex: mail.500cc.tw 之前一直沒設成功居然是因為沒注意到這行而自爆。最後在網址結尾多打一個點就收工結束了,就醬。下面是範例圖,請參考,我沒有設定 MX record。

    繼續閱讀全文…

  • MSI R6850 Cyclone 1GD5 POWER EDITION

    MSI R6850 Cyclone 1GD5 POWER EDITION

    原文發表於 https://what30.wordpress.com/2011/04/04/hardware-msi-r6850-cyclone-1gd5-power-edition/ 從去年開始就覺得打電動有點無力,2008 年入手的 HD4850 也漸漸無法應付 2010 年的遊戲了,不過去年沒有很吸引人的顯卡,就這麼拖著,最近看著顯卡價格開始跳水而心動… 上上週去了趟光華,本來想說帶張 6950 或 560 回家,最後卻是在 PCHome 分期付款買了一張便宜很多的 6850,PCHome 跟光華的價差不大,又送貨到府,還送一台網樂通 XD

    繼續閱讀全文…

  • Ducky DK1008-D 黑青軸機械鍵盤

    原文發表於 https://what30.wordpress.com/2011/02/28/ducky-dk1008d-cherry-mx-keyboard 上個月底看到特價的 Ducky 機械鍵盤,雖然手上沒缺鍵盤,但還是衝著價錢不貴的份上刷卡了,入手價 NT$1,999

    繼續閱讀全文…

  • 解決 Windows 7 捷徑清單與釘選項目消失的問題

    Windows 7 有一個 “捷徑清單” (Jump List) 的功能,可以快速地從軟體的右鍵選單選取最近使用過或釘選的檔案。我覺得這是很方便的設計,而且清單上只會出現跟這個軟體有關的選項,等於是有了第一層的檔案過濾功能,以 [記事本] 來說,就只會出現用記事本開過的檔案,不會有不相關的檔案混在裡面,清單上的項目也可以自由地刪除或釘選到上層,有 [我的最愛] 的味道。

    繼續閱讀全文…

  • Windows Vista / 7 檔案複製、移動、同步指令:robocopy

    最近在整理外接硬碟的檔案,想把整顆 500GB 硬碟的資料複製到另一顆新硬碟,想起以前看過 Windows 7 有個內建指令可以加速這個工作:robocopy。 這指令名字很好記,跟【機器戰警】RoboCop 只差了一個字 XD。實際上這個指令從 Windows Vista 就開始內建了,其他 Windows 作業系統則要另外安裝微軟提供的套件才有。

    繼續閱讀全文…

  • Linux 如何修改大量檔案名稱?

    客戶反應放在 Linux server 上的 flash 互動教材無法播放,FTP 登入後發現檔案都在,目錄及檔案權限也正常,但就是無法播放。還好 Google Chrome 瀏覽器 提供了非常完善的 debug 功能才讓我注意到那一長串檔名裡,有一個字母大小寫不一樣… Orz Linux 是大小寫不同 (case-sensitive) 的系統,所以大小寫不同視為不同的檔案,難怪會 404… 只要改檔名就解決問題了,但是客戶的檔案有好幾百個,一個一個改真是浪費人生啊 (茶)。還好 Linux 提供了可以批次改大量檔名的指令 rename。 rename 指令是這麼用的: $ rename oldname newname files 第一個參數是 “要被替換的字” 第二個參數是 “替換的字” 第三個參數是 “要被替換的檔案” 要改副檔名的話,可以下這樣的指令: $ rename .txt .html *.txt 如此一來,所有的 .txt 文字檔都會改成 .html。以此類推,也可以下 $ rename IMG img *.jpg 把照片的檔名改成小寫。這個指令也可以修改資料夾的名字,端看第三個指令怎麼篩選。 一個步驟就把客戶的檔案名字都改好了,收工。

    繼續閱讀全文…

  • 如何使用 nslookup 驗證 DNS 設定?

    每次要查 DNS 設定都會忘記那個指令叫啥? “那個不太常用,但有時候很實用的指令” 是 Windows Console 下的 nslookup。這篇寫作教學,實際上是給自己筆記的。 windows console 就是命令列,在 開始 » 執行 輸入 cmd 就可以進入 console 模式。

    繼續閱讀全文…

  • printf(“Hello world!”);

    開了新的部落格…. Qoding Style。 思考了許久才決定再開一個新的部落格。這裡打算記錄關於 IT、RD、MIS 方面的心得和筆記,也是個人擔任 攻城 工程師的一些點滴。也許還會亂入一些開箱文。 算起來脫離學生身份後已經換了三份工作了,從一個小小的翻譯編輯跨到 MIS,再換到 programmer,每次換跑道都是從頭學起。過去嘗試過興趣與工作結合,但興趣變成壓力後感覺就完全不一樣了,踏上 programmer 這條路是再一次挑戰興趣與職業的交融,冠上了「攻城師」的稱號。 我的另一個部落格 What 3.0 已經經營長達六年之久,雖然無法否認多少因為懶墮和噗浪的關係而讓發文頻率降低不少,但不論如何都不想讓它倒站,這種永續經營的念頭讓我對於「再開一個新部落格」有點反感,深怕達不到自己的期望與要求。思考了很多天後才拿出信用卡買下這個網域和空間,花錢給自己挖了個坑,還自願跳下去。 算算一年的網址和空間費用也要台票兩千多,本來想在 Google Blogger 無料開個新站就好了,也比較熟悉 Blogger 平台,不過對於 Google 一直擺爛 Blogger 感到無奈,尤其是不能自訂 Post URL 這點真的很囧,我想要兼顧中文標題和 SEO 啊! What 3.0 在 wordpress.com 本來就有個分站,但只有當作備份,這次決定換到 WordPress 平台裝認真。Bluehost 的後台真的蠻容易上手的,只花了幾分鐘就搞定 WP,相當無痛。Bluehost 也有支援 Ruby on Rails,有機會想學學。 昨天老爸才開玩笑地說要送我一台 MacBook Air 讓我開發 iPhone / iPad 程式,然後賺得錢他抽 50% 這樣,當然先說好啊…

    繼續閱讀全文…

  • 再見了,老迅 - 回顧山葉老迅光 (1993-2009?)

    隨著換機車的日子將近,默默服役多年的老迅光將退居備用車的職位。一向很重感情的我照慣例都要幫車車寫篇回憶的,之前已經寫過一系列再見了,高爾夫、小美、小黑,該是寫「再見了,老迅」的時候了 (?)

    繼續閱讀全文…

  • 米干基本教義派 !

    原文發表於 https://what30.wordpress.com/2005/01/14/%e7%b1%b3%e5%b9%b2%e5%9f%ba%e6%9c%ac%e6%95%99%e7%be%a9%e6%b4%be/ 這是一篇值得紀念的文章。這是我第一次去吃米干,從此之後我就上癮了。到現在已經吃了兩年了,看到這張照片,還是止不住口水。 今天早上起了個大早,五點半起床,六點跟朋友集合,冒著刺骨寒風與迷濛雨霧驅車前進… 車開了一陣子才到目的地,夜色仍然昏暗,空氣仍然冰冷,呼氣隨即變霧氣。 今天的目標是」米干「。就是為了它,為了它離開溫暖的被窩,走在黑暗冰冷的街道。停好車,步行一小段路,在黑暗的街道上有一家燈火通明的小店。心中驚呼」就是它了」! 時間清晨六點二十。 店裡人不多,跟老闆點了五碗米干,看著親切老闆娘的熟練動作,沒一會兒,五碗熱騰騰的米干就搬上桌了。據同行的朋友說,米干是雲南料理,一碗米干也沒有幾樣東西,溫熱的白色寬麵條、一些炒蛋及一顆半熟蛋,最後淋上滿滿的湯汁與辣渣,再隨個人喜好加點酸醋。(行文至此,我又餓了.. ><) 就這樣簡單到不行的材料,混合起來的美味卻是貨真價實的。微酸微辣的湯汁,配上不怎麼光滑的寬麵條,粗俗的口感,卻又意外的順口。卻讓人欲罷不能,一口接一口,明明點的是大碗的米干,沒兩下就解決了,還忍不住再跟老闆娘多要點湯汁,多喝兩口也過癮! (口水流滿桌了啦) 同行的朋友中只有我是第一次嚐到,其他人都早已是米干信徒了,連續吃上一個禮拜都不會膩….. 是一天三餐都吃哦~ 也許你會納悶,幹嘛挑這一大早吃?? 沒辦法,這店只開這時間,晚了就沒了………. Orz ….. 朋友都是吃個早餐,順便連中、晚餐的份都買好…. 標準的米干信徒啊~~!! 附上照片讓大家流口水~~

    繼續閱讀全文…


Exit mobile version