Chrome 10 週年

Chrome 10 Years

Chrome 10 週年 Google 真的是很精心的規劃要幫它慶祝啊,我猜大概是找了個很有狼性的 PM 來,最近一下就被發現兩個問題,第一個小一點點,就是 Clear browser data 的地方,全部清除的功能不會幫你清除 Google 的資料喔:

第二個問題比較大一點,灣區日報看到的Why I'm done with Chrome,問題就是 Chrome 69 開始,登入網頁版的 Google 服務會自動把 Chrome 瀏覽器端的 Google 帳號也登入,然後根據 Google 工程師所說,這樣還不會觸發同步備份密碼和 autofill 等隱私資料(包括密碼、信用卡資料),不過在這狀態下你很可能不小心就觸發了,由於這個機制官方沒說過,介面上也沒明顯提示,就只有大頭那邊的頭像會變,幾乎都會被使用者忽略,而會不會自動備份隱私資料只是一部份,比較嚴重的點還是這個行為是破壞使用者的信任,事情鬧出來之後 Google 有官方回應說下一版會有修改讓使用者可以關閉(不過預設還是開啟啦~~),登入後的介面也有相對應的修改讓狀態更清楚,另外就是刪除所有 Cookie 不會保留 Google 的了,以上這些修改都要等十月中的 Chrome 70。

最後就是,隨著這次事件才注意到有ungoogled-chromium這個專案啊。


保護專注力

SONY WH-1000XM3

前陣子 Ash Wu 寫了篇如何在 Context Switch 間維持自己的生產力,講他這陣子的經驗,所以我也來分享我這陣子的經驗,不過不是 Context Switch,而是底層工程師如何保護自己的專注力。

之前在開放式辦公室工作,雖然我已經面對牆壁了,還是覺得很容易受到干擾,不論是環境還是工作模式造成的都有,所以我逐步做了一些調整來減少心流被打斷的機會,首先,硬體設備最常見的就是抗噪耳機了,之前是買 SONY 的 WH-1000XM2,最近剛上市 Mark 3 也更新過去了,抗噪耳機一開始會有點不習慣,像是本來打鍵盤的聲音都聽不到了之類的,不過不用很久就會習慣了,這筆開銷是比較大,不過要是花的起的話,我建議直接買三代,舒適度比較好,二代我戴久耳朵還是會不舒服;除了聲音設備外,螢幕弄大一點把視野佔滿也是個不錯的方式,前陣子網路上不少人都買了 40 吋的大螢幕來用的樣子,我自己是只有用到 27 吋的,其實遮蔽效果也沒比 24 吋的好很多就是。

第二個是我現在工作時的電腦不登入 SNS 了,包括 Facebook 和 Twitter,所以我不會查資料或是看 Email 的時候發現有小紅點就順手點過去看,其實一開始是因為在用 Toggl 追蹤時間,注意到去看 SNS 會造成時間計算不準確,所以乾脆都不登入了,也是沒很久就習慣了,當專心時,其實完全不會注意到有 SNS 等著我去看。

第三個是我會把能關的提示音都關掉,不過這是因為我耳機音樂的訊源就是工作用的電腦,所以電腦的 IM、收信軟體的提示音都會過去,如果耳機可以弄獨立音源給它其實也沒這問題,這時候就有點懷念 iPod 了;如果提示音都關了,還會被 Dock 上的紅色數字或是訊息通知窗干擾,那我還會更進一步把 IM 的程式都關掉,即使那是工作用的 IM 我也是會不客氣的關掉,可能過兩個小時後你會發現其實你不在線上也沒關係的,真的很要緊的事,其它同事會透過各種方式找到你的(然後你還會發現有時候其實被這樣聯絡也不是很要緊的事)。

除了電腦提示外,手機我也會關到完全靜音,完全靜音是指連震動都沒有,所以如果有來電的話就只有螢幕會亮而已,也因此我常常沒接到推銷電話,其實平常會打電話給我的人很少,大部分都是我事前會知道的。

以上的部分主要在於減少干擾,其實還有一些其它工作方式的細節可以幫助,不過還沒有太多想法整理出來,所以這次就先不提了。最後補充一下,Ash 也有提到的workflowy(這是我的推薦連結)我也覺得很不錯,大概是遇到這個服務之前,有認真考慮過自己做一個這種東西自用,不過後來發現這個服務之後就再也沒想過這回事了。


Homebrew rollback to MySQL 5.7

最近 Mac 的 homebrew 預設的 MySQL 已經改到 8,然後產生了些相容性問題,像是 GUI 不支援之類的,所以提供一下方法回到 5.7

brew uninstall mysql
brew install mysql@5.7
brew link --force mysql@5.7

然後清空舊資料重建新的

rm -rf /usr/local/var/mysql/
mysqld --initialize

其中第二個步驟會產生新的 root 密碼,先複製下來,啟動服務並修改密碼:

brew services start mysql@5.7
mysqladmin -u root -p password

照指令操作,應該是先填前一步產生的密碼,然後輸入新密碼、再次輸入新密碼,這樣就 ok 了,剩下就是找個 GUI 或是匯入資料之類的。

參考資料:


Intrinsic Size 媒體寬高比

HTML 文件在編寫插入<img>時,通常都會順便加上寬高的資訊,早期這樣做除了指定圖片呈現時的大小外,還有一個好處是提升頁面繪製的速度,不用在圖片讀取好、知道實際寬高時,又重新排版重畫版面,不過這個狀況在用 CSS 設定動態寬度時,就又回到原點了,像是設定width: 100%;這種,因為沒辦法設定相對於圖片寬度的高度值,所以瀏覽器只能自己先隨便決定一個高度,等圖片抓好再重排一次。

一直以來這問題都沒好的方案處理,在排版上比較多人採用的是外面多一層 block 元素然後用padding-top來把空間先佔好,不過這也只算是個替代方案,真的要處理應該還是要從 HTML 或是 CSS 下手,然後前兩天才終於看到有個不錯的方案 Chrome 要來實做了,叫做Intrinsic Size

<img intrinsicsize="250 x 200" src="cat.jpg">

就是一個長乘寬的概念,中間那個乘號其實是小寫的x,然後提供的長寬資訊其實是等於預先給的 naturalWidth、naturalHeight,為什麼不用 aspect ratio 呢?在提案的文件裡面其實都有寫到,基本上就是這種設計提供的資訊更多,有更多好處,例如都沒設定寬高時,可以拿intrinsicsize來先用之類的,intrinsicsize目前設計只能用在圖片和影片上,Chrome預計在 71 的時候推出這個功能,也已經做好有貓測試網頁了,感覺一切都箭在弦上了,不過這新提案在 WICG 上幾乎沒討論,提案者是 WICG 也是 Chromium 成員就是,另外就是另外三家的 web platform status 都還查不到,並且,其實也有一個 CSS 的aspect-ratio提案,所以到底會怎樣還很難說啊(不過我覺得是會變標準啦)。


Extensible Web at 2018

2013 年有一份 Extensible Web 宣言,簽署人同意致力於開發 Web Platform 更底層的介面,讓開發者可以自己擴展 Web Platform,而構成 Web 介面的基本三要素其實就是 HTML、CSS、JavaScript。

其實我在當時就覺得很奇妙,我可以想像的到開發者自己擴充 HTML 標籤,不過卻想像不出來到底 JavaScript 和 CSS 要如何讓開發者擴充,沒想到今天回過頭來看,整個網路標準的發展方向真的是有在朝這方向前進,首先來看 HTML 的部分,其實就是Web Component,包括了 Custom Element、Shadow DOM、Template、HTML Import 等標準,透過這些新的 Web API,開發者很容易就可以做出可重複利用,有自訂行為的自製標籤了。

JavaScript 的部分,其實在上一篇文章介紹那一串 ES6 新功能的最後,有提到 meta programming 的新功能,雖然不是完完全全想擴充什麼就擴充什麼,但是 JavaScript 確實是慢慢的有些可以讓開發者比較深入底層的介面可以用。

最後 CSS 的部分,就是 CSS Houdini 了,Houdini 其實就是史上最偉大魔術師胡迪尼,從名稱就可以感受到這個東西有多 magic 了,其實 Houdini 不是一個標準,而是一個W3C Working Group,他們主要的目標就是建構出一整套 API 讓 CSS 可以擴充,而目前也已經有些成果了,我自己是看了去年一場演講的影片才對 Houdini 有了初步的認識:

現在最主要是已經有 Chrome 把 Paint API 實做出來,所以已經可以用 Canvas 畫圖了,雖然整個計畫離完成還要很久,不過看到 CSS 真的可以開始擴充了,還是覺得很 Magic~

Image Source:https://imgur.com/gallery/YsbKHg1


➡ 看看其它文章