Composer 的版本選擇方式

Composer 是目前 PHP 世界裡比較紅的套件管理工具,內建了一些 autoload 模組,以及 Packagist 這個巨大的 ecosystem。

在「Installing Composer Packages」這篇文章裡提到要如何在 Composer 裡指定套件的版本。在這之前,你需要先知道什麼是 Semantic Versioning,然後再來看作者的論述。

直接講結論,文章裡推薦用 ~ 的方式指定版本,這通常會是你要的結果:用 ~1.2 表示 >=1.2.0,<2.0.0;而用 ~1.2.3 則可以表示 >=1.2.3, <1.3

在對付 compatibility 問題時還蠻常見的情況。

Hjson:the Human JSON

前幾天看到「Hjson, the Human JSON」這東西,想要在 JSON 上面提出拓展,讓人更好維護。

有幾個設計是大家已經想很久了。

首先是允許註解:

{
  # specify rate in requests/second
  "rate": 1000
}

再來是允許 ending trailing comma,這點在新的 JavaScript Engine 裡面是允許的,但在 JSON 規格裡是不允許的,對於 copy-paste 時就得很小心有沒有中獎:

{
  one: 1,
  two: 2,
}

另外幾個特點就還好。

object 的 key 沒有特殊情況時可以省略 double quote:

{
  key: "value"
}

甚至 value 是 single line 時也可以省略:

{
  text: look ma, no quotes!
}

而且當沒有 double quote 時不需要處理 escape 問題:

{
  path: c:\windows
  inject: <div class="important"></div>

  # escapes work inside quotes
  escape: "c:\\windows"
}

然後逗點可以省略,給的範例也突顯出對腦袋不直覺的問題 (ambiguous),這邊的 1 是 integer 還是 string?

{
  one: 1
  two: 2
}

多行,用 ''' 應該是借用了 Python 的想法?

{
  haiku:
    '''
    JSON I love you.
    But strangled is my data.
    This, so much better.
    '''
}

規格後面有提到 syntax,可以看到定義。

Hjson 算是一個開始吧,YAML 的設計需要極長的 training 時間才能正確使用,不知道 SaltStack 會不會有人馬上寫 adapter 出來接?(因為 SaltStack 已經可以接 JSON 與 YAML,只要有人把該接的接上去就可以了)

jQuery.com 九月的安全事件報告

jQuery.com 在九月時被攻陷的事情的報告出爐了:「jQuery.com September 2014 Security Retrospective」。

除了 ShellShock 的問題外,還包括了不少既有的漏洞沒修,所以最後也不太輕處到底是從哪個洞進來的,不過看起來最像的是 ShellShock?不過報告上沒有發現 CDN 的部份有被攻陷 (code.jquery.com 的部份),所以看起來只有主站受到影響?

而因為受到 DDoS 攻擊,所以把非 CDN 部份的服務丟上 CloudFlare 了,由 CloudFlare 的人贊助 Enterprise 版的服務給 jQuery.com 使用,讓 CloudFlare 幫忙擋掉攻擊的部份...

偵測信用卡交易是否為盜刷的服務

翻資料的時候發現 Sift Science 這家公司,直接看官網提供的範例程式碼會比較清楚,PHP code 長這樣:(在 single quote 裡面放變數,看起來不會動 XDDD)

require 'sift-php/lib/Services_JSON-1.0.3/JSON.php';
require 'sift-php/lib/SiftRequest.php';
require 'sift-php/lib/SiftResponse.php';
require 'sift-php/lib/SiftClient.php';

$sift = new SiftClient('my_api_key');
$response = $sift->track('$transaction', array(
  '$user_id' => '$billy_jones_301',
  '$user_email' => '$bill@gmail.com',
  '$transaction_type' => '$sale',
  '$transaction_status' => '$success',
  '$amount' => '100000000',
  '$currency_code' => 'USD',
  '$billing_address' => array(
    '$name'         => 'Bill Jones',
    '$phone'        => '1-415-555-6041',
    '$address_1'    => '2100 Main Street',
    '$address_2'    => 'Apt 3B',
    '$city'         => 'New London',
    '$region'       => 'New Hampshire',
    '$country'      => 'US',
    '$zipcode'      => '03257'
  ),
  '$payment_method' => array(
    '$payment_type'    => '$credit_card',
    '$payment_gateway' => '$braintree',
    '$card_bin'        => '542486',
    '$card_last4'      => '4444'
  )
));

https://packagist.org/search/?q=Sift 這邊也有看到一些東西,應該也可以用 Composer 掛起來用...

費用的部份,量夠大的時候,平均下來就是一筆 USD$0.01 (前一萬筆不用錢,接下來一萬筆 USD$0.02,然後都是 USD$0.01),約 NTD$0.3:

First 10,000 transactions per month Free!
Next 10,000 transactions 2¢ each
Every transaction above that 1¢ each

Shellshock,Windows 版

愈來愈噴飯了啦,有人發現 Windows 10 有類似的問題:

然後有人拿去 Windows 7 與 Windows 8.1 上面測試,發現也中獎:

這個世界到底怎麼了...

Update:我去...

這張太讚,弄一張過來:

Windows 10 都市傳說的佐證...

續上篇「Windows 10 的都市傳說...」,先不管微軟內部的 code 如何,以及跳過 Windows 9 的真正原因,但 open source 專案的確有不少人這樣判斷 Windows 95 與 Windows 98:

還有各種變形的:

		} else if (osName.startsWith("Windows")) {
 			if (osName.indexOf("9") != -1) {
 				jvm = WINDOWS_9x;

這該怎麼說呢...

關於 Shellshock (Bash) 問題

因為 Bash 太多人用,找到安全漏洞的成本效益太高,看起來最近會有大量的人力跳進去 code review,接下來應該是 CVE 滿天飛,跟當初 OpenSSL 的情況類似。

目前建議是直接看維基百科的說明:「Shellshock (software bug)」,裡面直接列出了目前發現的 CVE 以及 attack vector。

會讓管理者想要抱頭痛哭,無止盡的 patch...

WordPress 的安全性資訊

在「WPScan Vulnerability Database WordPress Security Resource」這邊看到「WPScan Vulnerability Database」這個站台,直接列出了 WordPress 相關的安全性漏洞。

列出的漏洞包括了 WordPress 本身以及 Plugin、Theme 的部份。不過 WordPress 在有更新時自己應該會提醒才對?

這樣看起來主要是確認一直沒更新的安全性漏洞?