YAML 的問題 (挪威問題)

Hacker News 首頁上看到的,YAML 寫多的人都遇過類似的問題:「The Norway Problem - why StrictYAML refuses to do implicit typing and so should you」,對應的討論「The Norway Problem (hitchdev.com)」也可以看一下。

第一個「經典」是字串不需要包起來就很容易出事,這邊提到的例子是因為保留字而中槍,挪威的簡碼 NO 變成 False 了:

countries:
- GB
- IE
- FR
- DE
- NO
>>> from pyyaml import load
>>> load(the_configuration)
{'countries': ['GB', 'IE', 'FR', 'DE', False]}

同樣的是字串問題,「看起來」是數字的就會變成數字:

python: 3.5.3
postgres: 9.3

然後還是字串,人名遇到保留字:

first name: Christopher
surname: Null

這種問題都是碰過一次學一次...

作者另外提到的 StrictYAML 改變了 YAML 規格,我會看看就好,能用 JSON 也許還是會偏好先用 JSON,不是完全解決,但踩雷的機率會少很多。

Google Chrome 88 的 Search Engine Keyword 功能失效恢復的方法

升級到 Google Chrome 88 以後又再次被 Google 姦了,這次是 Search Engine Keyword 的功能預設被關掉:「Chrome 88 disables space bar shortcut for custom search engines, but there's a fix」,在「Google Chrome keyword search is no longer working」這邊也有類似的問題冒出來。

文章裡面有提到解法,在 chrome://flags 裡面挑一個設為 Disabled 就可以了,我是用 #omnibox-keyword-search-button 這組:

設定完成後要重開瀏覽器才會生效。

RFC 裡面的 MUST/SHOULD/MAY

讀 RFC 文件時常看到會使用這組定義,甚至有些非 RFC 文件也會使用:

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

這邊提到的 RFC 2119 就是 1997 年訂的「Key words for use in RFCs to Indicate Requirement Levels」這篇,以 2020 年的現在來說,這組定義已經被人熟知,用這組定義可以讓閱讀的人很輕鬆的了解條件的強制性。

剛剛在讀新的文件時發現這段文字有更新,往回查發現是針對大小寫的差異提出更新:「Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words」,主要是這兩條:

  • The words have the meanings specified herein only when they are in all capitals.
  • When these words are not capitalized, they have their normal English meanings and are not affected by this document.

然後也更新了引用的部份:

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

不過就算是 2017 年之前應該也是這樣讀就是了...

對每個月一次的「Ask HN: Who is Hiring?」分析

timqian/hacker-job-trends 這個用 Node.js 開發的專案是針對 Hacker News 上的「Ask HN: Who is Hiring?」分析 (每個月一篇,拿來提供各家人馬留 comment 徵才的),把關鍵字丟進程式,程式就會分析每個月的出現數量,在 terminal 上產生趨勢圖表。而且支援加法或是減法計算,可以用在去掉重複的字 (像是 javajavascript)。

遠端工作的量慢慢增加:

而區塊練的量也在增加:

裝起來後看 php 的量好慘啊 XDDD

一路從 MySQL 5.5 升級到 MySQL 8.0 的故事...

在「Migrating to MySQL 8.0 without breaking old application」這邊看到這個有趣的故事 XD 這是作者的應用程式 DrupalMySQL 5.5 一路升級到 8.0 的過程記錄...

真正的問題發生在 5.7 到 8.0:

原因是 Drupal 用到關鍵字了:

In fact, this old Drupal, uses a table name that is now part of the reserved keywords. It’s always advised to verify what are the new keywords reserved for MySQL itself. New features can also mean new keywords sometimes.

修正後就好了:

話說依照「File:Drupal release timeline.png」這邊的資訊,Drupal 6.2 也十年左右了?應該是 PDO 剛開始要推廣的年代,不知道他跑哪個版本的 PHP...

另外 MySQL 的升級意外的順利?雖然是一步一步升,但沒遇到什麼大問題...

本來 Google Chrome 要繞過 HSTS 的 badidea 被換掉了...

先前在「在 Google Chrome 連上因 HSTS 而無法連線的網站」中提到的關鍵字 badideaGoogle Chrome 65 發現沒用了,找了一下發現是被換掉了:「Chrome 65 replaces the "badidea" bypass keyword with "thisisunsafe"」,這 Reddit 的標題就說明了換成什麼了 XDDD

而且從 source code 裡面可以看到,本來是明碼的 badidea,改用 window.atob 來存了:「Diff - d8fc089b62cd4f8d907acff6fb3f5ff58f168697^! - chromium/src - Git at Google」。

anyway,要記其他的字串了 XDDD

中國的關鍵字審查

Slashdot 的「New Compilation of Banned Chinese Search-Terms Reveals Curiosities」這篇引用了「Some curious search terms denied to the Chinese」這篇文章,在 GitHub 上面有個 repository 試著蒐集這些關鍵字:「jasonqng/chinese-keywords

不過看到報導第一件事情注意到的事情是他用的圖片:

還是說其實台灣已經高度審查了?hmmm...

Google 警告美國流感疫情提升...

Google 在很久前就發現可以利用「搜尋的關鍵字」推測流感疫情,而在 2008 年建立了 Google Flu Trends,利用關鍵字來推測可能的疫情:「Explore flu trends around the world」。

而今年 Google 發出警告,依照關鍵字觀察,美國的流感疫情比起歷年來都高出不少:「Google - Yes, Google - Warns Of "Intense" U.S. Flu Activity」。

這除了是 Google 的火力展示之外,也是在說明資料被適當應用時的威力。