Home » 2015 » October (Page 2)

IPFS 分散式 Web 服務,以及 ipfspics 圖片儲存

IPFS (InterPlanetary File System),或是被稱作 The Permanent Web。

起因在於目前 HTTP (Web) 在設計時是 1990 年代的想法,許多威脅在當時並不明顯。而到了現在,來自攻擊者的威脅與政府監控的威脅使得必須在 HTTP (Web) 上架構許多 workaround。

最知名的 workaround 就是 HTTPS 以及對應的 CA 架構了,前者因為 HTTPS 協定本身高度複雜,實作的單位經常出錯而產生安全漏洞。而後者靠著大量的稽核檢查來避免出問題,不過畢竟還是 workaround,常常會有一堆「誤發」的狀況發生。

另外 HTTP 發展到現在其實是去中心化「Decenteralized」的架構,政府單位可以抓著其中幾個結點就可以大量監控,而 IPFS 想要做到真正的分散式「Distributed」:

前陣子 IPFS 在 GitHub 上放出了 prototype 讓大家玩:「ipfs implementation in go.」,而最近有人把這個點子實作成 image hosting:「ipfs.pics」(一樣是放在 GitHub 上),並且提供對應的網頁上傳介面:「Decentralized picture hosting in ipfs」。

我試著丟一張圖片上 ipfs.pics 後,得到的 hash 值是 QmRpNqK33gDDKdu8y6Wx5DQsuiJbsnwojNzH5nUwCpwoS9,也可以在 IPFS 看到這張圖:

來玩看看好了 :o

PHP 7 與 PHP 5.6 的不相容改變

在「Migrating To PHP 7」這邊看到十一月 PHP 就要發行 7.0.0 了...

最主要的還是不相容性的問題,從「Backward incompatible changes」這邊可以看到官方列出來的說明。

在「Changes to the handling of indirect variables, properties, and methods」這邊看起來好刺激啊,整個解讀的方法完全不一樣了... 不過我記得這是最近的 PHP 才有的功能?而且這樣寫真的很不容易讀懂...

然後「list() no longer assigns variables in reverse order」這種寫法的 code 就臭臭的,是在示範各種 side effect 嗎 XDDD

而「Hexadecimal strings are no longer considered numeric」則是往好的方向改?原來 is_numeric('0x1234') 在 PHP 5.6 是 true 啊...

大概又要檢查再確認才能升級了 :o

CloudFlare 對 Brotli 的測試

之前有提過這件事情,由於 Firefox 已經支援 Brotli 了 (Google 推出 Brotli 無損壓縮法),所以 CloudFlare 的人整理了目前的效能比較:「Results of experimenting with Brotli for dynamic web content」。

主要還是 Brotli 拿了不少資源來換壓縮率,對於 static content 由於可以事先算好而大勝不少 (大約可以再榨出 15% 的壓縮率,從 zlib 9 的 27.7% 降到 brotli 10 的 23.3%):

The current state of Brotli gives us some mixed impressions. There is no yes/no answer to the question "Is Brotli better than gzip?". It definitely looks like a big win for static content compression, but on the web where the content is dynamic we also need to consider on-the-fly compression.

另外對於大檔案、網路速度不快的連線來說也頗有幫助,但對於 on-the-fly 的壓縮反而會比較慢。

DigitalOcean 提供 Floating IP 功能

DigitalOcean 推出的新功能,可以註冊 IP 並且動態掛到某個 droplet 上:「Floating IPs: Start Architecting Your Applications for High Availability」。

如果沒有掛到 droplet 上會收取 USD$0.006/hour 的費用,以一個月 720 小時來計算,大約是 USD$4.32/month。另外也限制在同一個 data center 內才能換來換去。

類似的功能在 Linode 很久前就有了 (2007 年底),雖然不是完全一樣:「Support for High Availability / IP Failover」,但 Amazon EC2 的 Elastic IP 功能幾乎就相同了,在 2008 年初開放:「New EC2 Features: Static IP Addresses, Availability Zones, and User Selectable Kernels」,所以只能算是補產品線,把大家都有的功能實作出來...

以往只能用 DNS 做 High Availability 的,現在可以用這種方法做,使得 downtime 可以更低。另外這樣做也可以架設 proxy server,使得對外的 IP 不變,讓 firewall 設定變得單純。

改用沒有 FairShare 版本的 JavaScript Errors Notifier

在「Chrome Devtools Tips & Tricks」這邊看到介紹 Google Chrome 的 DevTools 用法說明,但讓我注意到文章最下面提到的兩個工具,其中提到了 JavaScript Errors Notifier 這個工具:

JS Error Notifier (non-“spyware” version) creates a popup each time a Javascript error is printed to the console. Unfortunately, the main version of this extension submits private “usage data” to a third-party service (see discussion in issue #28). But at any rate, this extension has helped me notice and fix several bugs.

找資料時可以發現 Hacker News 上面也有些討論:「Malware alert: JavaScript Errors Notification extension for Chrome (86k users)」。

馬上換掉...

CloudFront Price Class 100 奇怪的現象

剛剛發現奇怪的現象,晚點來問問看好了... 手上的 test-priceclass100.gslin.org 設定為 Only Use US and Europe:

但在 SmokePing 上卻看到極低的 latency 而覺得納悶:

動手查了一些資料發現是被導到台灣的點... 可以看到先問 168.95.192.1 (HiNet 光世代預設的 DNS) 後得到了這些 IP:

gslin@GSLIN-HOME1404 [~] [02:43/W4] dig test-priceclass100.gslin.org @168.95.192.1

; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> test-priceclass100.gslin.org @168.95.192.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48453
;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 3072
;; QUESTION SECTION:
;test-priceclass100.gslin.org.  IN      A

;; ANSWER SECTION:
test-priceclass100.gslin.org. 300 IN    CNAME   d265g70k07is7o.cloudfront.net.
d265g70k07is7o.cloudfront.net. 60 IN    A       54.192.215.203
d265g70k07is7o.cloudfront.net. 60 IN    A       54.192.215.98
d265g70k07is7o.cloudfront.net. 60 IN    A       54.239.176.96
d265g70k07is7o.cloudfront.net. 60 IN    A       54.192.214.40
d265g70k07is7o.cloudfront.net. 60 IN    A       54.239.176.216
d265g70k07is7o.cloudfront.net. 60 IN    A       54.192.212.118
d265g70k07is7o.cloudfront.net. 60 IN    A       54.239.176.223
d265g70k07is7o.cloudfront.net. 60 IN    A       54.239.176.56

;; Query time: 178 msec
;; SERVER: 168.95.192.1#53(168.95.192.1)
;; WHEN: Thu Oct 22 02:43:24 CST 2015
;; MSG SIZE  rcvd: 228

接下來跑 mtr 看,發現是台灣的節點:

gslin@GSLIN-HOME1404 [~] [02:43/W4] mtr --report -n 54.239.176.56
Start: Thu Oct 22 02:43:37 2015
HOST: GSLIN-HOME1404              Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 168.95.98.254              0.0%    10    8.6   9.1   8.4   9.9   0.3
  2.|-- 168.95.25.50               0.0%    10    8.1   9.0   8.0   9.9   0.3
  3.|-- 220.128.11.226             0.0%    10    9.3  11.8   8.1  31.7   7.1
  4.|-- 220.128.5.94               0.0%    10   12.9  13.9   9.6  17.9   2.9
  5.|-- 220.128.4.177              0.0%    10    8.7  13.1   8.7  35.3   8.0
  6.|-- 203.75.228.29              0.0%    10    9.9  10.1   9.3  10.9   0.3
  7.|-- 223.26.65.19               0.0%    10    9.4  10.3   9.4  11.4   0.3
  8.|-- 202.133.255.122            0.0%    10   11.0  10.8   9.5  13.5   1.0
  9.|-- 54.239.176.56              0.0%    10   10.7   9.4   8.4  10.7   0.7

這是哪招呢...

Archives