~尋找生活新鮮事~

  • SVN: How to get list of files changed between two revisions

    公司在更新客戶的程式碼時慣例上是只傳送有變動的程式碼。 老實說我覺得還挺麻煩的,不是每個 SVN Client 都有提供這方面的功能,目前我還只會手動處理,希望能有更方便的方法匯出特定版本區間的變動檔案。 列出 x 與 y 兩個版本區間的變動檔案列表 svn diff -r x:y –summarize 打包變動過的檔案 zip patch_vXXX.zip `svn diff -r x:y –summarize . | grep . | awk ‘{print $2}’ | grep -E -v ‘^\.$’` 列出資料夾裡的所有檔案 find . -type f 計算檔案數量 find . -type f | wc -l

    繼續閱讀全文…

  • IE9 JavaScript 註解之謎

    最近接手了一個不大的系統升級案,雖然是不大的案子,但客戶的 PM 對需求的描述有點不夠清晰,而我也不是原開發者,因此溝通的過程拖延了不少時間。不好容易完成了程式碼,在測試主機上持續修正調整了數週,客戶最終點頭 OK,佈署到正式主機的時候就爆炸了… 扣除一些交接時人為疏失所造成的錯誤外,處理到最後還是有一個奇妙的問題。在某個表單頁面上,客戶反應 IE 無法送出表單。不過因為公司主要開發機都是 Mac,僅有少數電腦是 Windows 平台,而且還被裝了剛出的 Windows 8,用 win8 內建的 IE10 切換相容性測試,7, 8 , 9 模式全部都沒有出現問題。 最後才又找了一台裝 Win7 的筆電,用純正血統的 IE9 做測試才重現了客戶反應的問題,看來是 JavaScript 出包了。出包點在這一段程式… function CheckForm1(inForm){ if( CheckA() && CheckB() && //CheckC() && CheckD() ){ return true; }else{ return false; } } 這是前人留下的程式,其中 CheckC() 因為不再用到而被我很直覺地加了兩條斜線註解。這個寫法在 Chrome, Firefox 以及 IE 的相容模式都正常執行,所以沒想到 IE9 無法處理…

    繼續閱讀全文…

  • Mac OS X: Fix Duplicate Items on「Open With…」List

    在 Mac OS X 的 Finder 中,對檔案按右鍵會有一個 Open With 的選單,選擇用哪一個軟體開啟檔案。隨著系統安裝的軟體越來越多,當然選擇也增加了。但 Mac 卻有個鳥問題,當這些軟體版本更新後,選單項目不會自動更新,而會一直增加…. 超瞎… 在一張 .JPG 圖片上 Open With 的選項居然有這麼多重複的,這其實是在催眠我該重灌 Mac 了吧? 其實是有解法的,打開 Terminal 輸入以下指令: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/\ LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local\ -domain system -domain user 執行需要幾秒的時間,然後在 Dock 上的 Finder 圖示上按下 Control + Option + 左鍵,選重新啟動 (Relaunch)。然後就會還你一個乾淨的 Open With 了,噢耶,又不用重灌了。

    繼續閱讀全文…

  • Objective-C: Use regular expression to replace string in NSString

    在寫一個關於字串處理的小作業時想到的,先留個紀錄。 NSString * strPNum2 = @”(886)02-3356873″; NSError *error = NULL; // regex 用 \ 做跳脫,但是在 C 裡斜線本身也要跳脫,所以寫成 \\( 來跳脫左括號 NSRegularExpression * regex = [NSRegularExpression regularExpressionWithPattern:@”[\\(\\)-]” options:NSRegularExpressionCaseInsensitive error:&error]; NSString *modifiedString = [regex stringByReplacingMatchesInString: strPNum2 options:0 range: NSMakeRange(0, [strPNum2 length]) withTemplate:@””]; NSLog(@”%@”, modifiedString); 電話號碼 (886)02-3356873 會改成 886023356873。

    繼續閱讀全文…

  • The correct meta viewport syntax

    根據 Apple Web Content Guide 的說明,在撰寫手機版或給特定裝置的網站時,可以在 <head> 中用 <meta> 標籤來設定 viewport 相關的設定。 不過通常這段設定都是 copy / paste,然後再根據需求調整參數。在開新專案的時候也貼了前人的 code,但是卻注意到 Chrome 裡會有錯誤訊息,無法識別這段設定。 Viewport argument value “device-width;” for key “width” not recognized. Content ignored. Viewport argument value “1.0;” for key “initial-scale” was truncated to its numeric prefix. Viewport argument value “1.0;” for key “maximum-scale” was truncated to its numeric…

    繼續閱讀全文…

  • Creating Retina Images for Website

    最近在撰寫一個給 iOS UIWebView 用的迷你網站,在等待設計師繪製網站圖片的時候,好奇地看起來了一些關於視網膜螢幕 (retina display) 的資料。順便找了些用 CSS 顯示 retina image 的資料。 感謝行動平台上的瀏覽器對 CSS3 的普遍支援性,透過 CSS3 的 media queries 來分辨平台就可以切換內容了。 .navbar { background-image: url(‘../img/button01.png’); background-size: 320px 49px; } /* — for Retina Display — */ @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio:…

    繼續閱讀全文…

  • WordPress: Stop changing the quotes

    WordPress 部落格系統有時候貼心過頭了,對於文章中出現的單引號、雙引號會自動轉換。一般文章中的引號被轉換不是什麼大不了的事情,而且往往看起來也比較美觀,但是在技術性文章中,單雙引號是有特別意義的,被自動轉換成別的符號,整串指令就不對盤了。例如…. 單引號…. 輸入 McDonald’s 會變成 McDonald’s

    繼續閱讀全文…

  • File type validation with Javascript

    前些時候寫的簡單版測試程式,在表單送出前用 JavaScript 檢查檔案副檔名。當然這只是第一步驗證,在 PHP 端還是要對 Content Type 做一次檢查。 <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /> <title>File Type Validation in JavaScript. ver 0.1</title> </head> <body> <form method=”post” enctype=”multipart/form-data” onsubmit=”return checkAllFile();”;> <input class=”file-selector” type=”file” name=”userfile1″ size=”20″/></br> <input class=”file-selector” type=”file” name=”userfile2″ size=”20″/></br> <input class=”file-selector” type=”file” name=”userfile3″ size=”20″/></br> <input class=”file-selector” type=”file” name=”userfile4″ size=”20″/></br> <input class=”file-selector” type=”file” name=”userfile5″ size=”20″/></br> <input…

    繼續閱讀全文…

  • [unfinished] CentOS Server Git Setup

    http://cse.csusb.edu/turner/wiki/CentOS_Server_Git_Setup http://netlog.jpn.org/r271-635/2008/01/apache_ssl_on_fedora_8_1.html http://memo-off.blogspot.tw/2012/03/centosgit.html http://www.bluevariant.com/2012/05/comprehensive-guide-git-gitolite-synology-diskstation/    

    繼續閱讀全文…

  • Sharpen an image using PHP and GD

    同事正在開發一個購物平台,店家可以上傳商品照片,由系統自動縮圖到適合版面的大小,不過 resize 後圖片品質明顯下降,於是同事問我有沒有解法。同事問我並不是因為我比較強,只是因為我的位子在他旁邊。 跟同事討論了一下,試用了 imagecopyresized 和 imagecopyresampled 兩個函式來縮圖,前者的細節比較好,但部份線條出現明顯的變形,後者圖形正確,但看起來比較模糊。所以先用後者縮圖,再想辦法銳化圖片。 印象中 PHP GD Library 並沒有直接提供 sharpen (銳化) 相關的函式,但是 Google 一下,發現有 imageconvolution 濾鏡可以用,真是有趣,沒想到可以自訂濾鏡,以前在學校修過影像處理課程的回憶…. 都忘光光了。還好不難找到幾組範例。 <?php // create the image resource from a file $i = imagecreatefromjpeg(‘otter.jpg’); // define the sharpen matrix $sharpen = array( array(0.0, -1.0, 0.0), array(-1.0, 5.0, -1.0), array(0.0, -1.0, 0.0) ); // calculate the sharpen…

    繼續閱讀全文…

  • How to use the MAMP Mysql command line client in a terminal

    這篇是寫給自己的筆記,因為我老忘了路徑…. Mac 用 Terminal 登入 MAMP MySQL 的路徑如下 /Applications/MAMP/Library/bin/mysql -uroot -p

    繼續閱讀全文…

  • How to disable the 「Please Install the Windows Live Device manager」 dialog?

    Please Install the Windows Live Device manager

    繼續閱讀全文…

  • CodeIgniter: How to get current page with pagination library

    CodeIgniter 內建了一套功能完整的分頁函式庫,不過有時候需要知道現在是第幾頁時,卻不知道從何取得。 雖然在文件上沒有寫,不過實際上有個內部變數在紀錄目前的頁數,只要使用 $this->pagination->cur_page 就能取得目前的頁數。 <?php echo ‘您正在閱讀第  ‘.$this->pagination->cur_page.’ 頁,共 ‘.ceil(($this->pagination->total_rows/$this->pagination->per_page)). ‘ 頁。’; ?>

    繼續閱讀全文…

  • Regular expression which matches a pattern, or is an empty string

    之前介紹過在 jQuery Validation Plugin 使用正規表達式 (Regular Expression) 的方法。 在某個專案中如常地用這個方法做表單欄位檢查,不過客戶提了一個需求,希望該欄位不是必填,但使用者有填資料時要驗證其內容。 原本的驗證條件是這樣的… regex : “[0-9]{4}-[0-9]{6}” 也就是使用者一定要輸入正確的手機號碼,如 0919-123456。要變成選填的話… 想了一下,改成下面這樣就可以了。 regex : “([0-9]{4}-[0-9]{6})?” 前後加上括號,然後用最未端的 問號 來表示 前面這串括號裡的文字可以不出現或出現一次。

    繼續閱讀全文…

  • 傳說中的 JavaScript parseInt('08')

    跟大部份的公司一樣,我服務的公司上下班也要打卡,但是身為軟體與網路服務公司,上下班時間是相對自由的,打卡只是計算週工時的依據,沒有遲到早退的罰則,每個月上交卡片的時候要先把週工時算好再給老闆過目。身為懶惰的工程師,自己寫了一個週工時計算程式也是理所當然的。(笑)

    繼續閱讀全文…

  • Enabling SSL on MAMP on OS X

    我習慣在本機上開發程式,做完初步測試後才會佈署到測試主機或正式主機。為此,有些要求使用 https 安全連線的頁面在本機就無法進入,所以才興起了在本機簽署一個憑證作為開發之用的念頭。因為步驟還蠻長的,做個筆記給未來的自己。

    繼續閱讀全文…

  • Bookmark: Google HTML/CSS Style Guide

    這是 Google 的 HTML / CSS 編寫指南,用以解決大型專案或多人開發情境下程式碼風格混亂的現象。內容淺顯易懂,部份寫法是針對 HTML5 最佳化。   updated on 2017/02/03 : 原連結已失效,更新為 https://google.github.io/styleguide/htmlcssguide.xml Google HTML/CSS Style Guide  

    繼續閱讀全文…

  • Remap windows and alt keys in Mac OS X

    原本在公司放了一把 Ducky 機械鍵盤,後來公司的開發機換成 Macbook Pro 後,這把鍵盤就英雄無用武之地,擺在旁邊積灰塵。今天在公司等待下午茶的時間,看著隔壁的同事光明正大地打起 Diablo3,我就把鍵盤接上 Macbook 試試,是可以用的 (這點我之前就試過了),只是 Alt 鍵和 Windows 鍵與 Mac OS 相反。 所以只要找個方法讓這兩個鍵相反,就跟原本的 Mac 排列相同了。 本來還以為又要靠 Terminal 還是第三方軟體才能達成,沒想到 System Preferences 裡就可以設定了。在 Keyboard 選項裡,點選 Modifier Keys…,接著照下圖設定即可。

    繼續閱讀全文…

  • Bookmark: Learning Object-C by Cocoa Dev Central

    學習 Apple APP 開發會經歷好幾個階段,像是如何使用 XCode 開發工具,如何撰寫 Object-C,以及如何使用 Cocoa。在學習 Object-C 的過程中逛到這個專門提供 iOS 程式開發教學的網站 Cocoa Dev Central,文章簡單易懂,排版也非常容易閱讀。其中關於 Object-C 的章節是我最近在閱讀的。 http://cocoadevcentral.com/d/learn_objectivec/

    繼續閱讀全文…

  • MySQL: 限制存取單一資料庫

    從客戶那邊拿到一份巨大的資料庫備份,解壓縮後的 .sql 文字檔接近  1GB。由於檔案很大,想要編輯或檢視內容都很不方便,就想說直接匯進測試用的資料庫。用了 source 指令後成功地匯入了,當下看起來也很正常。不過後來只要重開測試主機就會出現完全連不上資料庫的情況,而且屢試不爽,推測大概是客戶連同紀錄資料庫自身狀態的 information_schema 也一併匯出了。 問了客戶的工程師才知道他們匯入時會加指令來限制匯到哪個資料庫。語法如下: mysql -u USERNAME -p PASSWORD –force –one-database DATABASE 登入 mysql 後再使用 source 匯入,此時若是碰到操作非指定 DB 的 statements 都會被自動略過。 總算順利搞定資料庫,繼續開發工作。又學到了一課。 後來去翻閱 MySQL 官方文件,其實只要加個 -o 就可以了,參考這篇。

    繼續閱讀全文…