2015年6月29日 星期一

[野人獻曝] 實作 Clef 的 2-factor 登入

Clef 是一套算是方便的簡單登入機制,宣稱只要三個步驟就能讓你簡單登入:

  • 點擊支援網站的登入按鍵,此時會出現 Clef 的登入畫面(其實就是一個 GIF 條碼而已)
  • 打開安裝在手機上的 Clef APP,掃描該 GIF。
  • 若是第一次造訪該網站可能會要求你填寫額外資料。這樣就完成登入作業了。
要在自家網站使用這個服務,得先去他們網站註冊,並開啟一個新 Application ,接著就是要改一下 Code 了。

以下是 PHP 使用 CI 所寫出的範例 Code(這裡只實作登入部份,登出部份之後再另寫一篇說明):
如果要玩玩看實際的操作流程,可以連到這裡看看。

2015年5月26日 星期二

[野人獻曝] 簡介 Orchestrate.io

Orchestrate.io 是一個把 NoSQL 和搜尋服務結合在一起的 DaaS(Database as a Service)。

對於想要用搜尋服務也想同時使用 NoSQL 服務,但是資源卻不夠多的人,他的免費方案讓你可以輕鬆使用,所以我非常推薦。

使用方法很簡單,初使用者可以直接看範例 Code,瞭解最基本的用法後就可以開始寫 Code 了。

2015年5月18日 星期一

[野人獻曝] 千萬不要在 MySQL 內有用到 auto_increment 的表下 INSERT ... ON DUPLICATE

原因很可怕,所以不要問!

最近開了一個有 auto_increment 欄位的資料表,
並且將該表中幾個欄位設為唯一值索引,
然後就下了以下的SQL塞資料:
INSERT INTO EXAMPLE (a, b, c) VALUES ('1', '2', '3') ON DUPLICATE KEY UPDATE d = '4'
結果發現 auto_increment 欄位中的值越變越大,
不過一千多筆的資料,流水號卻取到七萬多。

看了 MySQL 的說明
才發現下 INSERT ... ON DUPLICATE KEY 時碰到 auto_increment 欄位時,
流水號也會持續增加(只有 Update 時才不會增加),
所以下一次真的有新增資料時,流水號會跳得老遠去......

當下只好照 StackOverflow 上的一篇回覆修改程式碼解決這個不算大卻有點微妙的問題......

2015年1月25日 星期日

[野人獻曝] 救回使用 innodb 的 mySQL

因為一連串的原因(不要問很可怕),
導致我的 mySQL 整個重啟不能,
好死不死的又因為我資料庫裡面的資料表恰好都是 innoDB,
因此問題更難搞。

經過該死的 Google 和實驗後,
總算找到一個勉強算是救回資料的方法!

方法如下:

  1. 無論如何先把 mySQL 先停掉
  2. 停掉之後在你的 mySQL 設定檔中加上一行 innodb_force_recovery = 4 *
  3. 重新啟動 mySQL,試試看是否可以連進 mySQL,確定可以連進去後,先把所有會寫入 DB 的程式都先關掉,然後開始備份資料。
  4. 資料備份完後,請把有用到 innodb 的資料庫砍掉。接著移除上面那行 innodb_force_recovery,並且刪除 /var/lib/mysql 下所有 ib 開頭的檔案,然後重新啟動 mySQL。
  5. 接著重建資料庫,並把備份資料匯入應該就可以讓 mySQL 正常運作了。

2015年1月23日 星期五

[野人獻曝] 目前正在使用的雲端服務比較

算作個筆記兼騙發文數的紀錄好了......
比較項目 AWS EC2 Microsoft Azure DigitalOcean
價格 高,主機基本租金是最高的,而且還要另計流量和IO 中,其實價格勉強可以接受,而且可以開台灣發票 低,價格最低,開一台入門機一個月只要5鎂
特色 高擴充,其他周邊的支援服務超完善(發email、DNS Hosting,甚至搜尋服務都有) 看看那精美的管理介面......而且如果只是要放一個靜態網站的話也不用莫名其妙開一台主機,可以有效節省資源 價格低,而且機器都是用SSD的
問題 有錢的時候就都不是問題了,問題是沒錢啊 如果他的週邊支援服務能更多一些或許就更有價值了 系統管理菜鳥的話可能需要多花點心力調機器