2018/05/31

由網頁觸發、執行 PHPUnit

通常都是在 console 底下執行 PHPUnit 跑測試:
$ phpunit Test.php 
... Run by vendor/bin/phpunit ...
PHPUnit 7.1.5 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 30 ms, Memory: 4.00MB

OK (1 test, 1 assertion)

但若開發環境無法使用 console 的話,只能靠寫 PHP script 來 require PHPUnit library 來執行。在這邊發現其實 PHPUnit 有保留 interface 讓使用者可以不透過 console 來操作 PHPUnit,可以在 PHP script 裡面 require library 來使用。

先使用 composer 把 library 拉下來:
composer require 'phpunit/phpunit'

在 PHPUnut/TextUI 底下,有實作幾個 controller 來模擬 console 的操作。以下使用 Command 來執行 PHPUnit:
<?php

require __DIR__ . '/vendor/autoload.php';

use PHPUnit\TextUI\Command;

$cmd = new Command();

$cmd->run([
    'phpunit',  // 1st arg
    'Test.php', // 2nd arg
]);

如果執行上面這段 PHP script,會得到與在 console 執行 PHPUnit 一樣的結果。
不過要注意的是測試結果會直接輸出到 std out,若另外處理的話,記得用 output buffer 把資料拉回來,直接在瀏覽器看的話會破版。

備註:PHPUnit 不同版本的路徑不同,類別名稱也會不同。

2018/05/26

ZenPad 3 8.0 (8 吋) 使用心得

個人的手機一向偏好體積小、待機時間長的款式,主要是接電話、連或事情、收訊息 (instant messaging),好處是攜帶方便、外出不用帶行動電源。但這樣的硬體限制會造成看影片、看小說漫畫不方便,特別是目前大多的電子雜誌,並沒有特別設計給行動裝置使用,僅將頁面掃描成圖片直接出版給行動裝置,字體是不會隨著行動裝置大小不同而自行調整。因此決定買個平板用於一般休閒娛樂。

目前主流平板的大小好像在 10 吋,但這其實和小筆電沒什麼差別,特別是要拿著眨邊框平板時手指只能拿邊角,力矩產生的重量感不輸於小筆電,所以我最後挑了 ASUS ZenPad 3 8.0 的 8 吋平板。

我想開箱文在網路上已經不少了,我就不放照片,直接針對硬體、軟體列出優缺點供大家參考。

2018/05/24

PHP 7.1 的 Symmetric Array Destructuring

PHP 7.1 對 list() 語法做了一些調整,讓 list() 操作使用起來更簡便。

原本的 list() 語法:
list($a, $b) = [1, 2];
// $a = 1, $b = 2

在 7.1 以後可以使用陣列來表示:
[$a, $b] = [1, 2];

這個語法稱為 Symmetric Array Destructuring

有了這個 feature 以後,不用另外宣告暫存變數也可以對調變數 (swap):
[$b, $a] = [$a, $b];

2018/05/14

機車換輪胎

換機油時發現後輪有一部份已經磨平了,順便把輪胎換掉。這個輪胎總共騎了 7000 km (0 - 7000)。

和技師聊了一下,做個筆記:
  • 因為機車整體重量偏後,所以後輪磨的比前輪快
  • Yamaha 大概是日本設計師龜毛,所有規格抓的很剛好,所以零件 OOXX 難拆 XD
  • 有些人會把避震改高,但很容易因為位置移動,造成線材損壞 (反而比較危險)
  • 後鼓煞不是看煞車皮是否磨平,而是和用來調鬆緊的旋扭是否已經轉到底 (煞車線拉到最緊還煞不住就是開換了)

今天比較可惜的是沒有看到把輪胎裝到輪框的機器是怎麼運作,其他想問的問題都問好問滿。

技師這次推薦的是 Kenda 的晴雨胎,一是橡膠基部比較厚實,即使爆胎後還是一個人慢慢的騎到維修站;二是胎紋較深、雨天比較不怕打滑。



聽說另一個比較特別的是該款輪胎在轉彎時會比較「有感覺」,過幾天應該就知道是什麼感覺了 XD


2018/05/08

7zip 被發現安全漏洞,請進速更新至 18.05

CIS 原文:
Successful exploitation of this vulnerability could allow for arbitrary code execution. Depending on the privileges associated with the user, an attacker could then install programs; view, change, or delete data; or create new accounts with full user rights. Users whose accounts are configured to have fewer user rights on the system could be less impacted than those who operate with administrative user rights.
7zip 的漏洞可讓惡意使用者控制電腦,所有 18.05 以下的版本均受到影響。

請進訴將電腦中的 7zip 更新至最新版本

2018/05/07

PHP array 新增 element 的方法和效率

新增 element 到 PHP array 的寫法有二種,一種是用 array_push(),一種是使用 $list[] 直接新增。

跑個迴圈塞一千萬筆資料進 array,看看哪一種寫法的速度比較快。

這個是 array_push() 的:
$list = [];

$start = microtime(true);

for ($a = 0; $a < 10000000; $a++ ) {
    array_push($list, 1);
}

$end = microtime(true);

var_dump($end - $start);  // double(7.2292509078979)


同上,若將語法換掉的話:
$list = [];

$start = microtime(true);

for ($a = 0; $a < 10000000; $a++ ) {
    $list[] = 1;
}

$end = microtime(true);

var_dump($end - $start);  // double(2.0703480243683)


小量資料的話,其實二種作法在速度上不會差很多,但資料量變大時,速度差異就會變得很明顯。

2018/05/01

Gandi 的 .tw 網域資訊被隱藏

忘記從哪邊看到的,Gandi 欲呼因為歐盟的隱私法規範,目前 .tw 網域的 whois 資訊全部被拿掉了:
$ whois zeroplex.tw
Domain Name: zeroplex.tw
   Domain Status: clientTransferProhibited
   Registrant:
      
        
      
      
        
      , 
      

   Administrative Contact:
        
      
      

   Technical Contact:
        
      
      

   Record expires on 2019-11-03 (YYYY-MM-DD)
   Record created on 2013-11-03 (YYYY-MM-DD)

   Domain servers in listed order:
      ns1.cloudns.net      
      ns2.cloudns.net      
      ns3.cloudns.net      
      ns4.cloudns.net      

Registration Service Provider: GANDI SAS

想要買 .tw 網域的人趕快衝啊,連擁有者的聯絡方式都被拔掉了 XDDD