Author: Johnny W.

  • Best practice to generate random token in PHP

    在 Stackoverflow 看到一篇超級實用的文:在 PHP 中產生隨機字串的最佳實踐。 產生隨機字串這個看似不起眼的議題實作起來還挺麻煩的,曾經為了如何產生字串跟同事討論了許久。 $length = 16; $token = bin2hex(openssl_random_pseudo_bytes($length)); # => e9bf18672b051619a3479ecbe1cb7d08 唯一的參數 $length 可以替換成任意整數,產生的字串長度就是 $length *2。 同場加映,Google Chrome 的亂數演算法也有改過。

  • How to Flatten a Multidimensional Array in PHP?

    How to Flatten a Multidimensional Array in PHP?

    最近碰到的小需求:如何將多維陣列攤平成一維陣列?…. 本來以為 PHP 那巨大的 Lib 會有一個神奇的 function 完成這任務,結果翻了一遍 php.net 的文件,沒有找到這神奇的功能。不過還是有另一個神妙的 function 可以拿來用,那就是 array_walk_recursive,這個 function 會有遞迴的方式走完整個 array,然後看使用者後續想幹嘛… 以攤平一維陣列為例,以下是只保留 value 的作法… function flatten(array $array) { $return = array(); array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; }); return $return; } 如此一來就可以將多維陣列轉為一維。若是要保留 key 與 value,要注意 key 名稱是否有重複 (isset)。

  • Firefox 50 Electrolysis multi-process 感想

    Firefox 在 version 48 將「Electrolysis」專案 (e10s) 多程序架構 (multi-process) 納入穩定版。我在 version 50 時才注意到有這個功能。因為我有裝較舊的 add-on,像是《新同文堂》這類久未更新,沒有支援新架構的 add-on,Firefox 會自動停用 e10s。 為了測試這功能,把所有的套件都停用了,因為原本裝的套件就只有個位數,因此沒有什麼不便。重啟一個乾淨的 Firefox 後,在網址列輸入 about:support,就可以進入 Troubleshooting Information 的頁面。 在表格裡看到 Multiprocess Windows 的值大於 0 就算是有啟用了。在 Activity Monitor 裡也可以看到 Firefox 的行程變成兩個。 啟用 e10s 後差異有很大嗎? 我在 8G RAM 的 Macbook Air 上覺得差很多,原本 tab 開太多,狂吃記憶體後,覺得 Firefox 就會變得緩慢。啟用 e10s 後,開很多 tab 也不會有什麼卡頓的感覺。 決定把所有的電腦的套件都整理下,通通啟用 e10s。其他電腦的 RAM…

  • 商品情報 Wacom Bamboo Stylus Solo 4th

    使用平板的頻率非常高,也很習慣用觸控筆操作,用筆玩遊戲比用手指順手很多。Wacom Bamboo Stylus 新款的四代看來又改回無筆蓋設計,搭配碳纖筆頭,整個打到我的點

  • 將 Sequel Pro 的表導出成 Laravel migration 文件

    在 Laravel 學院看到一篇有趣的文,筆記下。 将 Sequel Pro 中已存在的数据表导出为 Laravel 迁移文件 對於用 Mac 的開發者來說頗為實用。Sequel Pro 這款 MySQL GUI 也是我用過最好用、最順手的 DB 管理工具,沒有之一,輕巧高效,可惜支援的 DB 種類不多。

  • 入手兩盒 LEGO ideas: 21305 迷宮與 21307 跑車

    存錢是為了敗更多的家…. 自從敗了 LEGO Creator 10248 Ferrari F40 後,就好一陣子不敢再買 LEOG 套組了,這畢竟是非常奢侈的娛樂。 好死不死,LEGO 無良地宣佈 21305 迷宮要停產…. 只好出手了,然後一起手滑新出不久的 Caterham Seven 620R 黃色跑車,對車車實在很沒抵抗力。 第一次買 ideas 系列就一次收了兩盒。拍個盒子紀錄下,等哪天心血來潮再開箱。

  • EVGA GeForce GTX 1070 FTW GAMING ACX 3.0 開箱

    又到年底電玩大作連發的時節~ 拜微軟的 Xbox Play Anywhere (XPA) 之賜,買一次遊戲就可以得到雙平台實在太有吸引力了。所以就刷了數位版 Forza Horizon 3。 愉快地安裝完 PC 版發現我的舊顯卡 GTX 670 根本跑不動… 一直出現記憶體不足的訊息,然後閃退 @#$%^&* 就在這個氣餒的 moment,朋友開始勸敗 nVidia 1070….  因為現在買還送 XPA 的 Gears of War 4…. 為了這群戰友,荷包君只好犧牲了。

  • Using sftp on a non-standard port

    平常還蠻常用到 linux / mac 的 ftp, ssh 指令。今天有個 case 是要用 sftp 指令連去廠商的主機,雖然有用過這個指令,卻不知道怎麼指令 port… 一查才發現這用法跟其他指令差異還真大。 sftp -o “Port 3432” user@example.com 要用 -o 設定參數,筆記一下。

  • Xbox Wireless Controller – Gears of War 4 Crimson Omen Limited Edition 開箱

    還沒入手 Gears of War 4 遊戲,但先入手了同時發售的限量版手把。 今年初向朋友購入了尾牙抽到的 Xbox One 主機,終於一償 Forza Motosport 系列的心願。同時也苦苦等待 Gears of War 新作的發售。上禮拜網友提到 Xbox One 手把可以用藍牙連接 PC,查了一下才發現是新款 Xbox One S 主機搭配的手把才有此功能,舊版手把只能用 USB 線連接 PC。 然後又不小心看到這支腥紅色限定手把也是有對應藍牙的新款式,身為 Gears of War 粉就有點衝動地入手了。

  • iOS INKS. 色彩繽紛的彈珠臺

    在 TouchArcade 上看到 INKS. 特價 30 元,就買了。

  • 強制 fputcsv 所有欄位都加上雙引號

    公司跟一家新廠商展開合作,其中交換電文是用 CSV 格式。但對方要求所有的欄位都要用 ” 雙引號包起來。看起來就像下圖這樣。 但是很不巧的,PHP 內建產生 CSV 的指令 fputcsv 沒有提供強制的選項。做出來的檔案如下圖。 山不轉只好路轉… 在丟進 fputcsv 前就先用雙引號包一包。 比較特別是 fputcsv 原本的 enclosure 字元預設就是雙引號,無法替換成空白,只好用 chr(0) 來跳脫,不然每一筆資料會變成 “””aaa”””,三個引號… 這樣就可以交差了。

  • Connection could not be established with host

    最近重灌了工作用的筆電,把開發環境的 PHP 升級到 5.6.10,然後就各種狀況….. 其中一個問題是從本機連不上公司 mail server,所以寄信功能就掛掉了。Laravel log 的訊息如下 local.ERROR: 500 – Connection could not be established with host xxx.com.tw [ #0] @ / exception ‘Swift_TransportException’ with message ‘Connection could not be established with host xxx.com.tw [ #0]’ in laravel/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:270 原來是因為從 PHP 5.6 開始,變更了 SSL 認證的預設值,verify_peer 與 verify_peer_name 這兩項安全檢查都被改為預設,然後很多 SSL verification 就過不了。雖然提高安全性是好事,但開發環境卻造成一些困擾。 以上述的 swiftmailer 套件為例,它的…

  • The legend of Tarzan 泰山傳奇 (板橋大遠百威秀 IMAX 3D)

    週日下午老婆說想去看電影,手中還揮舞著兩張公司送的電影票。 但是五月和六月沒什麼想看的電影。上網查查老婆挑了《寵物當家》(The Secret Life of Pets) 和《泰山傳奇》(The Legend of Tarzan),我選了後者,看在 IMDB 分數比較高的份上,雖然投票人數當時還不到一萬。

  • 新鞋入手~ Sketchers Relaxed Fit with Gel-infused

    上週五的上班途中… 踏出捷運站的那一步,突然覺得腳底好像踩到了什麼。低頭一看,是我的鞋開口笑了…… 走到公司,立馬拿出膠帶把鞋底固定一下,就醬渡過了一天。下班後跟老婆直奔鞋店,尋找人生的下一雙鞋。 雖然自認對鞋子沒有品牌迷思,但穿了很多鞋,還是偏好買 Nike, New Balance, Merrell 這幾個品牌,舒適性、功能性,以及耐用度真是相當不錯。但最近買鞋的朋友不約而同地買了 Sketchers,連老婆都大力推薦,讓我開始注意到這牌子。 跑了幾家店,試穿了幾輪後,最終選了 Sketchers Relaxed Fit 系列。  

  • How to get length of integers in PHP?

    在寫 code 的時候想到這個無關緊要的問題… 如何得知一個數字有幾位數? 比較直覺的想法是這樣…. function digits($num) { return (int) strlen((string) abs($num)); } 在 stackoverflow 看到一個也不賴的寫法…. function digits($num) { return (int) log(abs($num), 10) + 1; } 筆記一下,都快忘了 log 怎麼算 XD

  • Forza Horizon 2 極限競速:地平線 2 開箱與心得

    年前購入了朋友在尾牙抽到的 Xbox One 主機。這個世代已經肯定是 Playstation 4 壓倒性勝出的時刻,入手 Xbox One 就只是三個字 – 因為愛。為了 Xbox 獨佔的 Forza Motorsport (極限競速) 系列和 Gears of War (戰爭機器) 系列。

  • 如何觸發 Chrome 瀏覽器的 autofill 功能

    好奇在開發網頁前端時,如何觸發 Chrome 自動填表單 (Autofill, Autocomplete) 的功能,找到一些說明,先記錄在本文下方的 Reference。 改天再來實測。

  • 戦場のヴァルキュリア リマスター Valkyria Chronicles Remaster ~ 戰場女武神 Remastered PS4

    年前入手了這款遊戲,回憶一下 PS3 時代的美好回憶。

  • Kingston HyperX FURY SSD 240GB ~ 幫 Mac mini 升級

    家裡的 Mac mini 轉眼也買了三年了,當時的選購的整新品是 i7 規格,加上自己安裝的 16GB RAM,規格上是很強悍的。唯獨硬碟一直是原廠配的 5400rpm 1TB HDD,沒有更新。因為 Mac mini 並不是每天都會用到的主力桌機,也就這麼將就下去了。 前幾天心血來潮,決定要升級一下,就訂了這顆 Kingston HyperX FURY SSD 240GB。

  • 更新 Let's Encrypt 憑證

    先隨手筆記一下,幾個月前在自己的主機上安裝了 Let’s Encrypt 的 SSL 憑證。他們家的憑證每隔一陣子就要 update 一次。 紀錄一下更新的步驟: $ service httpd stop # 停用原本的 http server $ cd /xxx # 切換到 lets encrypt 所在的路徑 $ ./letsencrypt-auto certonly -t -d your.domain.com -m user@email.com –renew-by-default –agree-tos –agree-dev-preview 紅字部分請自行取代。如果有出現以下訊息,可以輸入 2 How would you like to authenticate with the Let’s Encrypt CA? ——————————————————————————- 1: Apache Web Server -…

Exit mobile version