最近網路的連線品質有點慘,會莫名其妙在非維修期間斷線,透過官網上的數據機重置也沒效。
過年先拿手邊的玩具串一下功能,看看有沒有辦法遠端重新開機:
- 上方:TP-link Tapo P100 智慧插座,可以透過手機 app 操作
- 下方:D-Link 4G LTE 可攜式無線路由器 DWR-932
目前串起來以後,確定只要房東沒有忘記繳電費就可以重開數據機。
軟體開發、伺服器和生活瑣事
最近網路的連線品質有點慘,會莫名其妙在非維修期間斷線,透過官網上的數據機重置也沒效。
過年先拿手邊的玩具串一下功能,看看有沒有辦法遠端重新開機:
目前串起來以後,確定只要房東沒有忘記繳電費就可以重開數據機。
來推薦一本書:「地震 – 火環帶上的臺灣」
9789869804226
書籍從地震的成因、臺灣常見的地震災害,到如何加速地震警報的速度、災後重建復原的經驗談。用詞淺顯易懂,算是了解臺灣與地震二者關係的普科好書。以下分享一些筆記:
沒有耐震的「箍筋」方式,地震時,會因受力而變形 ( 攝於 921 地震教育園區 ):
也可參考獨立特派員的影片:
使用 symfony/polyfill-intl-idn 後發現有趣的事,不用特別去檢查 PHP extension 的 function 是否存在,只要 require symfony polyfill 以後,完全不需要進行任何設定就可以正常運作。
後來在 composer.json 看到 autoload 的寫法:
{ "autoload": { "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" }, "files": [ "bootstrap.php" ] }, }
以前以為 autoload 只能挑其中一種方法使用,沒想到可以指定多種方法同時使用。
上面的設定方式,namespace 會在 class 使用時才 require 進來,而 bootstrap.php
則是在一開始就 require 並執行,polyfill 就在當下偵測並處理掉 extension functions。所以使用者 composer require
以後程式並不需要做任何修改。
sudo umount -a -t cifs -l
-l
, --lazy
:unmount. Detach the filesystem from the file hierarchy now, and clean up all references to this filesystem as soon as it is not busy anymore.reference:Force Unmount a CIFS Share in Linux
假設有個 class:
class Woker { protected Queue $queue; public function run() { while (!$this->queue->isEmpty()) { $job = $this->queue->pop(); // do something } } }
用 PHPUnit 建立 stub 以後,必須使用 reflection 來自訂 $queue
property:
$worker = $this->getMockBuilder(Worker::class) ->disableOriginalConstructor() ->getMock(); $queue = $this->createMock(Queue::class); $queue->expected($this->atLeast(1)) ->method('isEmpty') ->willReturn(true); // PHP Reflection on $worker $refProperty = new \ReflectionProperty($worker, 'queue'); $refProperty->setAccessible(true); $refProperty->setValue($crawler, $queue);
這樣寫 test case 蠻髒的,有點想要換 test framework ….