最近幾天實在很熱,趁機跑到台中大雪山的橫嶺山步道避暑兼運動。
大雪山的橫嶺山步道路況
最後更新時間:2017/08/19
跑去大雪山的橫嶺山步道,順便記錄一下路況。
我是騎機車上山的,第一件事情就是不要完全按照 Google Maps 的建議路線行走,他會帶你去走私有土地 … (死)
從東勢沿著專一道晚上騎到恆嶺山比較上面的入口,柏油路僅有幾處破洞,大致上沒什麼安全疑慮,不過沿路有幾處有落石,建議小心行駛。
越往山上的路寬越窄,請留意會車問題,且大約中午 12 點過後便開始起霧,行駛時請務必開大燈,讓自己與對象來車都能保持行車安全!
puppeteer from Google Chrome
前幾天 Google 發布了 Puppeteer:一個可以控制 Chrome Headless 的 nodejs library。
透過 demo code 可以看到要產生 PDF 也好、要做 screen shot 也好,基本上都可以在數行以內解決:
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({path: 'example.png'});
browser.close();
})();
感覺就是拿來做壞事的好工具呀,也不用寫什麼 JavaScript emulator 去取得實際的網頁 DOM 狀態了 XD
官方文件已經有 Chrome Headless + Pupetteer 的網頁 debug demo:https://developers.google.com/web/updates/2017/04/headless-chrome
rpm 列出套件時不顯示套件版本號
一般在尋找 CentOS 上到底安裝哪一些套件時,指令大概會這樣下:
$ rpm -aq | grep php-fpm
php71-php-fpm-7.1.7-1.el7.remi.x86_64
不過如果是要用 diff 比對二台機器安裝的套件是否相同,這個時候多了套件版本號就頭大了。
查了一下資料,rpm 有提供「–qf」(query-format) 可以自行設定列表要輸出的內容。
若使希望看到套件名稱,而不想列出套件版本時,指令可以這樣下:
$ rpm -aq --qf "%{NAME}n" | grep php-fpm
php71-php-fpm
記得行尾要換行,不然就 GG 了 XD
PHP strict typing performance
聽說 PHP 使用 strict type hint 會讓速度變慢,於是來做了個簡單的測試,先來個沒有 type hint 的:
<?php
function repeat($str)
{
return $str;
}
$start = microtime(true);
for ($i = 0; $i < 100000000; $i++) {
repeat('test');
}
$end = microtime(true);
var_dump($end - $start);
使用 PHP 7.1.8 執行,大概會花費 3.7 秒左右:
$ php main.php
float(3.713329076767)
接下來改成 strict type 的寫法:
<?php
declare(strict_types=1);
function repeat(string $str): string
{
return $str;
}
$start = microtime(true);
for ($i = 0; $i < 100000000; $i++) {
repeat('test');
}
$end = microtime(true);
var_dump($end - $start);
執行時間大概變成 5.3 秒左右:
$ php main.php
float(5.3128638267517)
的確慢了不少,不過先別著急,不要因為慢了一些就打算放棄 strict type hint。
使用 PHP 5.6 去執行第一個測試 (沒有 strict type) 就大約需要 19 秒:
$ php5.6 main.php
float(19.477375030518)
其實把 PHP 版本升級上 7.x 才是正確的吧 XD