~尋找生活新鮮事~
-

Bookmark: Hashids, Generate short hashes from numbers
以前寫過自己的短網址服務,不過那時候很多計算,尤其是網址的編碼都是亂寫一通。跟朋友討論的時候才曉得用 base36 之類的方法編碼。 最近又碰到一個需求,需要將幾組參數編成較短的字串,在 StackOverflow 上亂逛找到了 Hashids 這個好東西。支援多種語言、可自訂 salt,可編多組參數,最重要是這是雙向的,可以解回來。完全符合需求。 ps. 其中 PHP 版的範例有用到 namespace,把源碼的 namespace 註解掉就可以在 PHP 5.3 以下使用。
-
MySQL: How To Count Rows But Still Show All The Rows?
之前寫過 MySQL: Displaying Rows With COUNT 0 With Group By,用於強制顯示 Count() 為 0 的資料。最近又看到另一種寫法,因為我自己很少這麼寫,所以留個筆記。 SELECT col1, (SELECT COUNT(*) FROM table1 t1 WHERE t1.id = t2.t1_id) as Total FROM table2 t2 GROUP BY t2.id; 把子查詢放在 SELECT 敘述。試了一下,這種寫法的查詢速度會比單純的 left join 慢上許多,實際應用要視資料筆數來決定。
-
Bookmark: Photoshop Plugin Logn Shadow Generator
近來因為 Flat Design 的流行,flat 風格常出現的元素也開始被重視,其中長長的斜 45 度陰影便是其中之一。這個 Photoshop plugin 可以方便地製作出長陰影的效果。 http://lab.rayps.com/lsg/
-
Git: How to count member's commits
在 Git 裡計算 commits 數量個人是覺得沒什麼意義,頂多就是看著數字,滿足一下虛榮心吧。跟看磁碟重組的小方塊差不多。 $ git shortlog -s -n 65 CQ 34 Robin 12 Diro 8 micky 類似這樣,參考參考。 [Updated: 12-11-2013] 如果想查詢全部共有多少 commits,可以用以下指令: $ git rev-list HEAD –count 119
-
Codeigniter: Check if libraries/helper/core files is loaded
使用 CodeIgniter 框架開發時,會透過 $this->load->library() 之類的方法來載入特定的檔案。在 CI 的 routing 規則中,同一個檔案只會被載入一次,因此多寫幾次 $this->load->library() 是不會發生什麼慘劇的。 不過有時候還是想確認到底某 class 有沒有載入過,而不想到處丟 $this->load->xxx() 的話,可以用以下方法來確認。 if (class_exists(‘Library’)) { $this->library->myMethod(); } 要注意的是 CI 有別名的規則,比如說有個 model 叫 ‘file_model’。使用別名載入時,會寫成以下 $this->load->model(‘file_model’, ‘file’); $this->file->do_something(); 這種情況下,若要檢查是否已載入,要用原名。如下: if (class_exists(‘File_model’)) { // do something }
-
Javascript: Repeat Character N Times
開發過中常碰到一種情況是希望某字串能重複出現數次。 以前端開發來說,希望用 JavaScript 來重複產生 HTML elements 的時候,覺得用 for 迴圈寫這個也太囉嗦。 有個比較簡單的 “語法” 來處理這個情況。 Array(11).join(“a”); 這樣就可以得到 11 – 1 個 a,aaaaaaaaaa。 產生重複 elements 就如法炮製, $(‘ul’).html(Array(5).join(‘<li class=”whatever”>list</li>’));
-

Bookmark: Jcrop
最近一個專案需求,要讓使用者可以在網站上選取照片、裁切,然後做為相簿封面。最重要的是前台讓使用者操作的畫面必須簡單好用,一樣是來自同事推薦的 jQuery 套件 Jcrop。可以簡單地呼叫出裁切畫面,設定與事件都很容易使用。 完成裁切後,呼叫 Jcrop 回傳座標,Ajax 傳回主機,接著我用 PHP image-moo 套件完成實際的影像處理,再把圖片回傳前端,使用者就能看到一張即時的封面圖片了,相當簡便。
-

Bookmark: FitText.js
FitText.js 可以根據 parent element 自動調整文字大小的 jQuery 套件。在開發網站時,常碰到標題文字過長的問題,但是標題不像內文可以被裁剪,比較合適的 solution 是折行或縮小字體,但是前者常會造成破版,而後者沒辦法用 CSS 直接處理。 懶得自己寫文字調整,就靠套件解決吧。
-
Mac OS X v10.4 and later: How to prevent .DS_Store file creation over network connections
Mac OS 會在資料夾寫入一個名為 .DS_Store 的隱藏檔,這個檔案是用來紀錄該資料夾的一些自定義屬性,像是檔案排列之類的。有點像 Windows 的 Thumbs.db,都是挺令人煩燥的檔案,儘管正常情況下是看不到的。 Mac OS 預設很奇妙地會在許多地方留下這個足跡,例如隨身碟或連線磁碟,留在本機就算了,留在非本機硬碟真的很惱人。 還好,這個設定是可以修改的,打開 Terminal 輸入以下指令: defaults write com.apple.desktopservices DSDontWriteNetworkStores true 如果要改回來,在 Terminal 輸入以下指令即可。 defaults delete com.apple.desktopservices DSDontWriteNetworkStores 適用的 Mac OS 版本:10.4 ~ 10.8。
-

Fix Sublime Text’s quirky PHP variable selection
Sublime Text 是近來相當受歡迎的文字編輯器,快速、方便的操作介面對程式開發有很大的助益。這也是我目前在 Mac 上主要的文字編輯器。 不過在開發 PHP 的時候,Sublime Text double click 選字卻不會選到 PHP 變數前的那個 $ 錢字號。一開始還蠻困擾的,但實際用起來好像不太影響我寫程式的流程,所以就放著不管了。 But! 我同事問了… 他說這個讓他很困擾,有沒有辦法在 double click 的時候連 $ 一起選起來。 Sublime Text 幾乎所有的參數都能改,這也是這個編輯器很妙的地方,可以高制客製化。 先開啟 Packages 路徑… Sublime Text > Preferences > Browse Packages… 打開後進入名為 User 的資料夾,新增一個純文字檔,命名 PHP.sublime-settings。 裡面貼上這段文字後存檔離開,Sublime Text 會馬上生效。 { “word_separators”: “./\\()\”‘-:,.;<>~!@#%^&*|+=[]{}`~?” } 這樣點兩下選取變數就會連 $ 一起選起來了。
-
Bookmark: CSS ARROW PLEASE!
CSS ARROW PLEASE! 是一個相當簡潔有力的服務,用 CSS 產生帶有箭頭的框框,可以省下自己刻的時間,方便啊。
-

PURE Tablet-Mate 702 鋁合金置放架
原文發表於 http://what30.blogspot.com/2013/08/pure-tablet-mate-702.html 上週買燒錄機的時候,順便買了個鋁合金架,想幫平板找個地方擺。我用平板電腦也頗長一段時間了,從 iPad 1、iPad 3 到尾牙抽到的 iPad mini…. 意外變成果粉了,單純是因為 Android 平板的介面很糟糕。 大部份時候平板都是在桌面上平放,或是用手拿著,使用上倒也沒什麼問題,不過就是覺得角度不夠好,而且 iPad 並不輕,看漫畫看一整晚也很有練臂力的效果 (囧。
-
Run a PHP script from the command line with MAMP
我在 Mac 上開發 PHP 一直是用 MAMP 這個好用的 App。不過如果碰到需要在 Terminal 下以指令方式執行 PHP 程式就有點麻煩。 MAMP 裡的 php 路徑頗長…. 像這樣… /Applications/MAMP/bin/php/php5.3.6/bin/php -v # 查詢 PHP 版本 所以還是來修改一下 ~/.bash_profile 吧。如果沒有這個檔案,自己建一個。 在裡面加入這一行… export PATH=/Applications/MAMP/bin/php/php5.3.6/bin/:$PATH 存檔後離開。 在 Terminal 下輸入 source ~/.bash_profile 會重讀設定檔,然後剛才的修改就生效了。這樣以後要執行 PHP script 直接輸入 php 就可以了,方便許多。
-
Using Static Context in CodeIgniter
前些時候在專案開發時寫了一支 API,其中大部份的方法是以 static 方式呼叫的。 最近想把這支程式放到 CodeIgniter 裡當 Library 用。第一次在 CI 呼叫 static method,用起來還挺簡潔的。 <?php $this->load->model(‘user’); $user = User::get_by_email_address(‘qoding@example.com’); // print all of the comments by the user echo “<h2>Comments by $user->name</h2>”; foreach ($user->comments() as $comment) { echo “<p>$comment->body</p>”; } ?>
-
Mac OS X: How to verify a Hash digest?
Mac OS 內建了一些校驗文字或檔案 Hash 值的指令,不過我常用的只有 md5。這天需要用 SHA1 的時候一整個想不起來要用什麼指令… XD 來彙整一下這些指令好了… 先從基本的 md5 開始。 計算檔案的 md5: $ md5 example.jpg MD5 (example.jpg) = e9f598ee0208e6757dc583303a05847a 計算字串的 md5: $ md5 -s “password” MD5 (“password”) = 5f4dcc3b5aa765d61d8327deb882cf99 計算檔案的 sha1: $ shasum example.jpg 61350660b5c4554d846cca893c09eb05e61cb223 example.jpg 其他雜湊公式: $ openssl sha1 –help
-
WordPress: Use Custom Fields As References
一直想在每篇文章的底下加個 Reference 的欄位,畢竟每篇文章的誕生都是參考了許多前人的經驗彙整而成,如果不能留下 References 來源實在是對不起這些樂於分享的前輩們,對於花時間找來的資料也無法留下蛛絲馬跡。 這天終於有空來思考一下怎麼做這個功能。 我以前有寫過 WordPress Theme 的經驗,打算用 WP 內建的 Custom Field 搭配 Theme 來實現這個功能。 WordPress 3.x 的文章編輯功能底下會一塊 Custom Fields 區域,可以讓使用者自行填入額外的資訊。這些資訊預設並不會出現在畫面上。 不過這些資訊可以透過 WP API 叫出來,這邊示範用 get_post_custom_values() 來達成。將以下程式碼貼在 theme 的 single.php 檔案中,位置就隨各人嘗試了,畢竟每個 theme 都長得不一樣。 <div data-role=”references”> <?php $refs = get_post_custom_values(‘reference’); ?> <h3>References:</h3> <ul> <?php foreach ($refs as $ref) { $arr_refs = explode(“\n”, $ref); foreach
-
Git .gitignore file for Xcode projects
最近才開始整理一些在寫 Obj-C 時當作測試用的範例程式碼,想丟去 GitHub 作個紀錄。 因為這樣才開始在 Xcode 裡使用 Git。雖然 Xcode 本身有整合 Git,但是那個整合還蠻陽春的,連 .gitignore 要怎麼設定都沒點提示。 .gitignore 是 Git 程式碼管理系統裡用來指定哪些檔案不需被追蹤用的文字檔。 看在 Xcode 專案裡的檔案分佈,哪些要忽略還真不容易分辨。一樣是在 StackOverflow 看到幾個解答,在這筆記一下。 # Xcode .DS_Store */build/* *.pbxuser !default.pbxuser *.mode1v3 !default.mode1v3 *.mode2v3 !default.mode2v3 *.perspectivev3 !default.perspectivev3 xcuserdata profile *.moved-aside DerivedData .idea/ *.hmap 這樣再看 Xcode projects 就清爽多了。 Update Jun 28, 2013 另一種寫法 # Exclude the build directory
-
How to undo a Git pull?
不經一事,不長一智啊…. 以前用 Git 幾乎都是一人專案,最近才開始有協同工作的專案。這天在 fetch 了新的進度後,就很順手 pull 了… 然後就爆了。 因為我忘記切換 branch 就 pull,結果被合併到別線上去了。還好只有我本機掛掉,大不了砍掉 repo 重建一次就好。 不過想想還是看一下怎麼回復上一動好了,StackOverflow 真是工程師的好朋友。 用此指令可以查 HEAD 變化的歷史紀錄。 $ git reflog show 結果如下 $ git reflog show cc7cb8e HEAD@{0}: pull pic3@dropbox user/auth: Merge made by the ‘recursive’ str 3686266 HEAD@{1}: commit: Database Schema ea26bdb HEAD@{2}: checkout: moving from ea26bdb27a04284e03a119207ade4602d78c06cf ea26bdb HEAD@{3}: checkout: moving
-
iOS: Disable Automatic Reference Counting for Some Files
開發 iOS 所使用的 Objective-C 語言隨著 APP 生態發展,也變成一門挺熱門的語言。相對地,其發展也進步許多。 Apple 於 2011 年才在 Objective-C 中導入了 Automatic Reference Counting (ARC) 機制,做為自動記憶體管理的解決方案。在 ARC 出現之前,Obj-C 中記憶體釋放完全是由開發者操作的,對於慣用 script 語言的我來說相當的不習慣,而且也覺得很囉嗦。我偏好 PHP, Python, Ruby 這類可以寫得很簡潔,專注在我要解決的問題與需求上的語言。從 C 演化來的 Obj-C 宛如火星文一般。 所以我是很習慣在開 Xcode 專案時使用 ARC 機制的,可以不用寫 release 方便許多。我連 @synthesize 都沒在寫的。 前面扯這麼多,當然是在鋪 ARC 的梗。開發過程中常會用到第三方的 Library 或 Example code 來加速開發或完成某些外部資源串接。這些第三方的 code 有許多仍是用 non-ARC 模式開發的 (就是手動管理記憶體)。但是專案開了 ARC 模式後編譯 non-ARC
- Announcements (2)
- Bookmarks (30)
- Database (17)
- Design (4)
- Fonts (1)
- User interface (1)
- Network (3)
- NodeJS (1)
- Office (1)
- Excel (1)
- Operating system (49)
- Programmers' Joke (1)
- Programming (90)
- CodeIgniter (9)
- HTML & CSS (12)
- Bootstrap (1)
- JavaScript (14)
- jQuery (6)
- Laravel (10)
- Object-C (9)
- PHP (30)
- Python (2)
- Regex (3)
- Software (11)
- Photoshop (1)
- Sublime Text 2 (4)
- Visual Studio Code (1)
- Tutorial (15)
- Uncategorized (2)
- Utility (10)
- Version Control (9)
- Git (7)
- Subversion (3)
- Wordpress (7)
- 勸敗株式會社 (29)
- 咬一口蘋果 (14)
- 文具控 (3)
- 旅行與出遊 (1)
- 日記 (20)
- 玩具與公仔 (12)
- 玩攝影 (10)
- 每日一照 (7)
- 生活品味 (5)
- 硬體玩物 (56)
- 美食 (2)
- 胡言亂語 (2)
- 軟體與 App (2)
- 這個 App 真有趣 (4)
- 開卷有益 (6)
- Kobo (1)
- Readmoo 讀墨 (2)
- 外文書籍 (1)
- 大眾科學 (1)
- 攝影繪畫 (1)
- 關於本格 (1)
- 電玩遊戲 (39)
- Android (6)
- iOS (6)
- Nintendo Switch (14)
- PC (11)
- PS4 (6)
- Xbox Series X|S (6)
- XboxOne (8)
- 電視電影音樂 (2)
