Mosir 開發筆記

Mosir 開發筆記

Mosir 系統的開發筆記,會在不涉及機密資料的狀況下盡量跟大家分享開發的過程

但其實我還沒有想好要寫什麼

catLee
·
14 篇文章

關於mosir的推薦演算法

為你推薦時間軸中的文章來源有三種:

  • Updated conversations:自己的文章、有參與討論的文章的新留言、或是之前有看過的文章內有追蹤中的使用者的新留言。
  • Following:追蹤中的使用者發表的文章。
  • Discovery:根據互動歷史,系統認為您可能有興趣的探索類內容。

三種文章會混合之後,進一步分成有看過跟沒看過的,以及依照文章發表時間分組。

沒有看過的新文章通常會顯示在時間軸最上方,而往下是已經看過的文章,再往下是時間比較舊但還沒看過的文章,以此類推。而在文章舊到一定程度之後系統便不會區分是否有看過。

歡迎所有互動

昨天半夜不睡覺做的事情:搜尋引擎升級兼換硬碟

步驟是這樣的:

  1. 修改部署yaml檔到更新後狀態:修改版本號參數、PVC從standard-rwo(混合碟)換成premium-rwo(純SSD)
  2. git commit & push到repo上,同時apply argo application資源進叢集(版本號不能從git repo直接讀)
  3. Argo這時候會卡在版本升級後資料不相容,而且硬碟不能用魔法變成SSD,不過沒關係,這是為什麼要半夜不睡覺
  4. 因為要把部署跟硬碟砍光。刪除STS跟PVC,然後Argo Sync讓Argo發現服務跟硬碟都不見了,去拿個新的。
  5. 此時搜尋引擎可以正常開啟但是空的。把準備好的search-sync job apply到cluster上,從main db把資料撈出來放進搜尋引擎
  6. 為了偷一點時間,同步作業會從最新的資料開始。同步的同時確認搜尋可以找到東西,這個時候系統就部分恢復上線了,只是舊資料還找不到而已
  7. 大約四分鐘以後同步作業完成。檢查request latency確認SSD跟新版本有符合預期效果
  8. 然後把手邊的燒酌喝完去睡覺

喔對,為了確保中間不會出什麼意外,在這之前同樣的步驟有在測試叢集跑過一遍。

歡迎所有互動

因為某些原因想記錄一下mosir目前的圖片載入機制。

mosir的圖片載入有三個階段:

  1. 模糊迷你圖(28 Bytes純文字):用BlurHash產生的模糊版本,把圖片壓縮到極致放進網址本身,瀏覽器在知道網址的瞬間就載入完成。
  2. 縮圖(平均80KB AVIF):圖片縮小到1,000x1,000的小圖,用來在點開大圖前顯示,可以提供HiDPI 2x左右的裝置看不到像素鋸齒(極保守估計,實際上我的3x裝置還沒看到過肉眼可見的鋸齒)。有線網路大約0.01~0.02秒內可以載完。
  3. 大圖(平均700KB AVIF):最接近原圖的版本,解析度8,192x8,192以內。在點開大圖之後才會載入,有線網路載入需要約0.1~0.2秒。

BlurHash稍微有點爭議,生成的模糊圖效果也不算理想,但我自己是覺得視覺效果還是比Skeleton好一點。

AVIF是好東西,日常圖片通常可以壓縮到WebP的50%,png的5%。

拜託寫圖片上傳服務的各位大大不要再輸出成WebP了那個又慢又肥又吃瀏覽器CPU拜託

補充一下挑選Emoji字體的方式以及rule out某些字體的原因。

Survey階段的條件是:

  1. 至少支援到Emoji v15。
  2. 提供向量圖檔,字體更好,並且能夠有效支援各瀏覽器。
  3. Open Source。
  4. 有動畫版本方案(nice to have)

列出來之後選擇就不多了:

Noto Color Emoji

  • ✅支援到Emoji v17
  • ✅有向量字體
  • ✅有動畫版本
  • ❓風格看起來不是很舒適,那個超橢圓⋯⋯跟文字一起排列有嚴重不協調感
  • ❌標準字體檔案(COLRv1)不支援Safari,SVG fallback非常肥
  • ❌漸層設計不可能輸出COLRv0,Safari無法有效使用

OpenMoji

  • ✅支援到Em...
...顯示更多 (483 字)
歡迎所有互動

好像沒有說過,這邊記錄一下也當作正式公告。

Mosir上傳影片時使用的音訊軌格式是 AAC-LC 192kbps,比起純聲音的AAC-LC 512kbps音質會稍微差一點點。