Month: November 2014

Laravel 4 all Bar-code generator

Posted by – November 18, 2014

Github 絕對對碼農們的好朋友。

Bar-code generator,這也是一個在 Github 上翻到的實用 Laravel 套件,用來產生 barcode 和 qrcode。

本套件支援的編碼格式相當多元,輸出格式也頗為豐富。

 

Laravel 4 Async Queue Driver

Posted by – November 18, 2014

在 Github 上找到一個有趣又實用的 Laravel 4 套件:Laravel 4 Async Queue Driver

162319-queues-at-apple-shop-in-glasgow-for-iphone-five

Laravel 4 有支援 Queue,但是對小型或是開發中的專案來說,特地去弄一套 Queue Worker 並不是很便利,但是用 Sync Mode 又很浪費時間,因為 Sync Mode 真的要等系統把排程跑完才會繼續執行之後的程式碼....

這時候 Async Driver 就派上用場了。這組 driver 會用子執行緒的方式在背景跑 Queue,雖然是立即執行式 (fire instantly),跟 "Queue" 的理念不太一樣,但已足以應付許多需求。

ps. 圖片與本文無關

Pointer Pointer by @StudioMoniker

Posted by – November 11, 2014

Pointer Pointer 這個網站還蠻有意思的,把滑鼠游標停在畫面的黑框中,系統就會找出一張有人指著游標的照片。

不曉得這背後處理的機制是怎麼做到的。

Screen Shot 2014-11-11 at 9.25.54 AM

LICEcap: Record screen as an animated GIF

Posted by – November 8, 2014

也許有人注意到在上一篇文章裡,我第一次放了 GIF 動畫作示意圖。

sublime_text_2_using_slugify

這個作法最近很流行,在許多網站的教程都可以看見這樣的 GIF 動畫圖示,所以我也想來試試看。但這需要一款夠簡單的軟體,我可不想大費周張地錄成影片,再用 Photoshop 轉成 GIF 之類的麻煩事。

很快地 Google 到 LICEcap 這款簡單實用,效果好的免費小軟體,而且同時支援 Windows 與 Mac 平台,真是佛心來著。

安裝完畢後,啟動會看到 LICEcap 的小視窗,可以移動與縮放,它的範圍就是錄影的範圍了,為了方便將動畫插在網頁上,建議不要錄太大太長的畫面。

Screen Shot 2014-11-08 at 10.19.52 AM

按下 Record... 會出現設定畫面,按照需求調整即可。倒是那個 Ctrl + Alt + P 的熱鍵我在 Mac 上按不出來....

Screen Shot 2014-11-08 at 10.23.04 AM

錄影完成後會自動轉成 .gif 動畫檔,省下了手動轉檔的麻煩事,讚啦。

 

Sublime Text: Slugify Plugin

Posted by – November 8, 2014

之前曾經寫過將文字轉換成 slug 形式的方法和用途。最近在要將一些程式碼中的文字改成 slug,但是要一段一段 copy 出來改也太麻煩了,身為一個懶墮的工程師,想當然會找一下有沒有 Sublime Text 用的轉換工具。

果不其然,已經有人寫出來了,這個名為 Slugify 的套件。

Slugify readme.md

這個名字有點可愛的套件,用法也很簡單,用 Sublime Text 的 Package Control 安裝即可。

sublime_text_2_install_slugify

使用方式是將要轉換成 slug 的文字選取起來,按下 shift + command + p,輸入 slugify,Enter。接下方會出現輸入框,詢問要使用的連字符號,預設是橫線 (-),有需要也可以換成底線 (_)。

sublime_text_2_using_slugify

很方便哦。要注意的是如果轉換的文字中包含中文與符號,轉換後可能會出現符號沒有刪除乾淨的小 bug。

Bookmark: PNotify, JavaScript notifications

Posted by – November 4, 2014

對 programmer 來說,Bootstrap 真的是一套非常便利前端框架,使用簡便、功能完整。但是一直覺得 Bootstrap 缺少了關於 notification 的解決方案。雖然有內建 alert 的效果,但這個 alert 是會佔據畫面空間的,我之前是透過擴充 CSS 的方式來實現 alert 浮空的效果。

最近用 Laravel + Bootstrap 的組合來修改個人網站,就順便找找有沒有現成的 notification 套件,結果不費吹灰之力就找到這個看起來功能超完整的 solution.... PNotify

PNotify website語法與設定都相當簡單,支援的效果和情境也夠豐富,就決定用它了。

Laravel Eloquent – Encrypt/Decrypt Data on call

Posted by – November 3, 2014

在開發商業網站的時候,對資料加密是必要的手段,尤其是資料庫中關於會員隱私,或是商業機密的部份都要特別處理。

在實務上通常不會用資料庫內建的加密功能,而是用後端語言來實現 encrypt 與 decrypt,資料庫只儲存加密後的訊息。

在 Laravel 裡加解密可以透過繼承 Eloquent,用 magic function 來達成自動化。

class BaseModel extends Eloquent {

    protected $encrypt = [];

    public function setAttribute($key, $value)
    {
        if (in_array($key, $this->encrypt))
        {
            $value = Crypt::encrypt($value);
        }

        return parent::setAttribute($key, $value);
    }

    public function getAttribute($key)
    {
        if (in_array($key, $this->encrypt))
        {
            return Crypt::decrypt($this->attributes[$key]);
        }

        return parent::getAttribute($key);
    }

    public function attributesToArray()
    {
        $attributes = parent::attributesToArray();

        foreach ($attributes as $key => $value)
        {
            if (in_array($key, $this->encrypt))
            {
                $attributes[$key] = Crypt::decrypt($value);
            }
        }

        return $attributes;
    }

而需要用到加解密的 Model 改繼承 BaseModel,並將需要加密的欄位寫在 $encrypt 陣列中即可。

需要搜尋加密欄位的時候,可以參考以下作法...

$match = User::all()->filter(function($record) use($email) {
            $field = $record->email['email'];

            if(Crypt::decrypt($field) == $email) return $record;
         });

這個作法會 scan table,效率應該會很糟。但 Laravel 預設的加密方式會自動加鹽,相同的明文配相同的金鑰也會產出不一樣的密文,暫時只想到這種解決。

for($i = 1; $i <= 10; $i++)
{
    // 會得到十種結果
    echo "\n". Crypt::encrypt('secret');
}

先醬,想到再補充。