~尋找生活新鮮事~
-
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
-
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 就可以了,參考這篇。
-
MySQL: Import large file using SOURCE command
在 MySQL 匯入 sql 資料大都時候都是用 phpMyAdmin 這個軟體來代勞,不過有時候碰到非常巨大的 sql 檔案,動輒數百 MB,甚至更大時就超過了 phpMyAdmin 處理能力。 這時候比較方便的做法是用命令列來匯入,指令是 SOURCE。 mysql> use exampledb; Database changed mysql> source C:\data.sql; 等待 MySQL 執行完畢就完工了,無痛匯入巨量的 sql 資料。
-
Disable Mac OS X mouse acceleration via the command line
2011 年夏購入了一台 Apple Macbook Pro,從此踏入 MacOS X 的世界,當初購入的目的是想學 Ruby, RoR 和 Object-C,不過工作上幾乎還是用 Windows 7。我覺得我跟 Mac 一直沒有很熟。換了工作後發現新同事們使用 Mac 做網站開發的比例非常高,老闆也不介意我帶自己的 Mac 上班,所以就開始逼著自己長時間用 Mac 來熟悉它。 MacOS X 預設是有滑鼠加速的,這點我很不習慣,滑鼠加速會讓滑鼠在長距離移動時,游標移動的速度以等比的方式增加。個人覺得這是一種介面上的不一致,總讓我摸不透滑鼠要移多快才能到預期的點。下圖左是關閉滑鼠加速度,不管使用者的手移動多快,滑鼠游標的加速度都不會改變,所以游標的速度跟手移動的速度一致。下圖右是開啟滑鼠加速 3.6 倍,使用者的手移動越快,游標會有額外的加速度,這種不一致的速度讓我老是找不到飛到螢幕外的游標。 經過一番 Google 後發現可以用指令的方式關閉滑鼠加速。加 terminal 輸入以下指令: defaults write .GlobalPreferences com.apple.mouse.scaling -1 修改完畢後重新開機,滑鼠游標就不會再輕功似亂飄了。
-
PHP: Constrains a value to not exceed a maximum and minimum value
幾年前在寫 Processing (P55) 的時候,有個方便的 function 叫 constrain。用法是 constrain(value, min, max) 例如 float mx = constrain(mouseX, 30, 70); 當 mouseX 大於 70 時就回傳 70,小於 30 時就回傳 30,將值限制在 30 ~ 70 這個區間。因為 Processing 大都是拿來寫互動、視覺方面的程式,所以用到此功能的頻率頗高。後來轉換跑道寫其他語言時,發現好像都沒有這個方便的函式。 最近又有 constrain 的需求,想起幾年前見過有人用 min, max 來代替,寫法如下。 <?php function constrain($value, $min, $max){ return max( min( $value, $max), $min); } echo constrain(29.3, 30, 60); ?>
-
Bookmark: PHP Markdown
PHP Markdown 是一款以 PHP 為基礎的 Markdown 語言轉換器。Markdown 是一種輕量級的標記語言,透過簡單易懂的語法來編寫文件,主要用於技術性文件,Markdown 轉換有多種語言的實作,這款便是以 PHP 來做轉換。 http://michelf.com/projects/php-markdown/ 這個套件分為標準和 Extra 版,後者多了更多功能。不過就實務上來說,筆者還在尋找 JavaScript 版本的 Markdown Engine,這樣才能做到所見所得的即時轉換。
-
Bookmark: Pixastic, a JavaScript Image Processing Library
Pixastic 是一款 JavaScript 影像處理函式庫,藉由 HTML5 對 Canvas 的像素操作能力來達到影像處理的機制。相當適合拿來做轉場特效,例如這個 HTML5 Canvas Slideshow 範例。 http://www.pixastic.com/lib/
-
Bookmark: MathJax
MathJax 是 OPEN SOURCE 的 JavaScript 顯示引擎,可以將 LaTeX 與 MathML 語法轉換成數學公式。 http://www.mathjax.org/
-
MySQL: Add time value to a date value
在改 MySQL 查詢時碰到需要設定未來時間的情況,翻了一下 MySQL 的文件找到指定的方法。 用 ADDDATE() 或 DATE_ADD() 來增加時間,像這樣… SELECT ADDDATE( NOW(), INTERVAL 15 HOUR); 就可以得到距離現在 15 個小時之後的時間。HOUR 可以替換成 YEAR、MONTH、DAY 等等,完整的單位列表可參考這裡。ADDDATE() 與 DATE_ADD() 的差別只有名稱不同,用法與效果相同。 如果是要減去時間,就用 SUBDATE() 或 DATE_SUB() 。
- Announcements (2)
- Bookmarks (30)
- Database (17)
- Design (4)
- Fonts (1)
- User interface (1)
- Network (3)
- NodeJS (1)
- Office (1)
- Excel (1)
- Operating system (48)
- 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 (14)
- Uncategorized (2)
- Utility (10)
- Version Control (9)
- Git (7)
- Subversion (3)
- Wordpress (7)
- 勸敗株式會社 (28)
- 咬一口蘋果 (12)
- 文具控 (3)
- 旅行與出遊 (1)
- 日記 (18)
- 玩具與公仔 (11)
- 玩攝影 (10)
- 每日一照 (7)
- 生活品味 (5)
- 硬體玩物 (50)
- 美食 (2)
- 胡言亂語 (2)
- 軟體與 App (2)
- 這個 App 真有趣 (4)
- 開卷有益 (6)
- Kobo (1)
- Readmoo 讀墨 (2)
- 外文書籍 (1)
- 大眾科學 (1)
- 攝影繪畫 (1)
- 關於本格 (1)
- 電玩遊戲 (35)
- Android (6)
- iOS (6)
- Nintendo Switch (11)
- PC (10)
- PS4 (6)
- Xbox Series X|S (6)
- XboxOne (8)
- 電視電影音樂 (2)