[TIL] 關於最近風靡日本的服務 Mastodon (長毛象)

網站鏈結

如何注意到這個軟體

Mattn 是一個日本很厲害的 Gopher ,我長期有在關注他的 github 跟 twitter . 一開始先看到這個專案.

https://github.com/mattn/go-mastodon

那時候還不知道叫什麼專案,也沒有任何的說明.只是覺得像是一個 Web API Client

在 Twitter 上大行其道

接下來一堆 tweet 再討論 mastodon ,我才專心的去看了一下. 於是又找到 Poga 的這一篇文章. 架設你自己的 mastodon instance

也才知道 G0v 其實有架設自己的 masdoton 伺服器 g0v.social

究竟 Mastodon 是什麼?

簡單的來說,他就是一個類似 Twitter 的 microblogging service .

它具有去中心化的概念,也就是他的主機並不是一個類似 twitter 那樣集中的伺服器,而是分散在幾個點的伺服器. 比如說台北可以建一台 mastodon.taipei ,高雄也可以建一台.

但是你可以跨伺服器來 follow, reply 跟 reblog .讓整個變得具有自由化與自主性.

而且它具有以下跟 twitter 差異很多的地方:

  • 時間軸按時序顯示文章,不作多餘處理
  • 公開時間軸
  • 每篇文章最多 500 字
  • 支援顯示 GIFV 短片
  • 可逐篇文章調整隱私設定
  • 完善的封鎖使用者、靜音功能
  • 良心設計︰沒有廣告,不追蹤您的使用行為

其中 500 字跟可以每一篇決定隱私權這件事情很對許多 twitter 的胃口. 讓本來風行 twitter 的日本,在短時間內就紅了起來.

在日本紅的主要原因:

要知道他為什麼會紅,這個還是要找到熟悉日本的一些人. 在臉書好友的文章討論串裡面整理出來的原因如下:

  • 因為東西方對兒童色情的認知差很多,Twitter 會封鎖發二次元 H 圖的帳號,很多日本繪師的帳號常常一夜消失.
  • Twitter 只能全公開或全鎖推, Mastodon 可以個別鎖文(類似私噗)、加上內容警示,而且一則可以發500字. 對於使用者自由度比較高.
  • Mastodon 就剛好對上了日本人胃口,然後 Pixiv 又跳下來自己開了Pawoo .
  • 先前有個 Twister ,是基於 P2P 跟 Blockchain 的技術做出來的 twitter clone。 目前還是有在持續開發,可是為什麼沒紅呢? 我覺得關鍵就是 mastodon 可以直接上網註冊使用,而 Twister 則需要下載 client 才能使用。 後者的加入阻力很大。

參考

[研討會心得][GDG] Google APAC Machine Learning Expert Day 分享

投影片:

內容:

今天總算找機會到 GDG 來分享,三月初去新加坡的經驗與分享.內容主要圍繞著以下三個部分:

  • Tensorflow Dev Summit RECAP
  • Some interesting projects during lightning talk
  • How Linker Networks use Tensorflow

由於 Tensorflow 主要有兩大部分的進展,可以透過 Data Engineer 的角度來看 XLA (Accelerated Linear Algebra) ,也可以去了解該如何有效率的設置 Distributed Tensorflow.

另外一個角度,也需要從 Data Scientist 的角度來看 Tensorflow 有多大的進步.於是我也請了公司的 Data Scientist - Ben Chen 一起參加.

由於 GDG (Google Developer Group) Taipei 並不是主要專注在 Machine Learning 相關的社群,這次的部分盡量以帶給大家粗淺的了解為主.

希望大家都能喜歡….

[Go][TIL] Animal Photo Classification Line Chatbot

Line Bot Animal photo classification

為了 Chatbot Day 準備的聊天機器人第二彈.

功能:

很簡單: 就是你上傳動物照片,他就會告訴你是什麼動物.

背後原理:

背後的機器學習模型就是鼎鼎大名的 Tensorflow Inception

註解: Tensorflow Inception 就是一個透過 CNN 建立出來的動物資料庫分類器

架構:

其實這個 Chatbot 還會連接我後端一個 API Server (tf-go-inception) .上面已經將 Inception 訓練好的 model 讀進來.

當你在 Line Chatbot 上面上傳圖片的時候, LineBotAnimal 就會將 圖片透過 multipart 的方式傳到 tf-go-inception 的 API Server

API Server 會將圖片透過 Tensorflow 來預測你的結果,並且傳回給 LineBotAnimal

參考:

[TIL] Paper: Consistent Hashing with Bounded Loads

原文: Consistent Hashing with Bounded Loads

在實作網路服務的過程中, Load Balancer 是最常被運用在分散流量到適當的伺服器之中. 而其中就是使用 Consistent Hashing 的演算法實現. 在使用 Consistent Hashing 的過程中,最被人在乎的就是兩個主要的問題

  1. 分布的均勻度 (uniformity)
  2. 當發生了新增與刪除伺服器的時候,需要有多少的移動次數.

Google 當然已經把這個問題解決,並且已經放在他們的 Google Cloud Pub/Sub 服務之中. 也在去年的八月將論文發表出來.

( Google 很擅長將神之技術寫成論文後,然後放在 GCP 裡面 XDD)

沒想到論文發表三個月後, Vimeo 的工程師將論文看懂後把相關演算法實現在 haproxy (這.. 應該不用解釋.. 就是最基本的開源 load balancer ) 之中,並且在 Vimeo 上線了. 並且將相關過程寫成這篇部落格….

有興趣的可以一起來鑽研這篇論文…. 不知道 Consistent Hashing 是什麼… 可以看看小弟當初練手用的 Golang Consistent Hashing

或是可以看看這堆 Viemo 工程師將它實現在 HAProxy 的 summit

程式設計週記[2017/03/31]: 又寫了一個聊天機器人.. XDD

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.

本週摘要

為了之後的 Chatbot Day ,最近用掉自己半夜的時間,把自我學習的聊天機器人完成了.

也很久沒有在寫一些小專案或是 side project ,感覺相當的好.



Go

mattn/mattn-icons

mattn 是一個 #Golang 很厲害的日本人,常為人熟知的作品就是 go-sqlite3 跟 gom .他有個招牌就是 github icon 是一個閒晃的小男孩(應該是吧) 這裡搜集一堆他的圖片

以下跟 Golang 有點關係,他在這個 repo 有放個 update-readme.go .當有新的圖片上傳,可以自動更新 README.md .算是很有趣的.

參考:



Python

Android/JAVA/NODE.JS



Docker

iOS/Swift



其他程式語言



論文收集



Kubernetes

Kubernetes Authentication plugins and kubeconfig

這個網站列出如何在 Kubernetes 上面的 authentication .

Five Days of Kubernetes 1.6

連續五天介紹 Kubernetes 1.6 的新功能,第一篇就是剛剛有人分享的 Dynamic Provisioning ,有興趣可以持續關注.

Kubernetes issue: kubeadm 1.6 is broken due to unconfigured CNI making kubelet NotReady

Kubeadm 可以讓你安裝 Kubernetes 就像是使用 docker swarm (v2) 一般容易.

所以除了 GKE, Kops 之外,這大概就是一般人很喜歡拿來架設 Kubernetes 的方法之一.但是它也是有一些限制就是 OS 的限制比較嚴格 (Ubuntu 16, centOS 7 …)

但是日前的 Kubernetes 更新到 1.6 的時候,不少人發現 Kubeadm 無法正常的使用了. 到了現在都還沒有被解決… 有興趣想了解的人可以一起看看…

想了解 kubeadm 的中文說明,可以參考我之前寫的部落格: http://www.evanlin.com/til-kubeadm/

Machine Learning

自駕車學習之路(ㄧ)

有人分享學習 Udacity 自動駕駛車的心得.

如果你還在考慮要不要學,可以看看他貼出的作業部份.很多作業都看起來很有趣…

參考: Udacity Self-Driving Car Engineer Nanodegree



網站文章

[關於影像處理的完整介紹]

裡面包含圖片,各種影像格式 av1, h264, h265 的編碼格式與一些基礎原理外.也有 ffmpeg 的相關操作. 對於想要惡補或是回顧的人會有趣.

裡面的解釋都很清楚,有大量的圖片作為輔助.相當的棒!



網站收集



有聲書/影片心得



小專案: 使用 LUIS 的自動學習聊天機器人

為了 Chatbot Day 準備的小專案(好像好久沒寫專案 XD)

LineBotBabyLuis: 就是當初寫好專案 luis go sdk 之後說要寫一個會自我學習的 chatbot 的 POC 小專案.

這個 Chatbot 具有自我學習的功能(其實不過就是每次問他,他不認識的,就會請你告訴他是哪個 intent )

透過微軟 LUIS 的功能,這個 chatbot 就算沒有任何資料庫也能夠做到自我學習.並且不斷累積知識的功能.

想學學 LUIS 怎麼使用的人(透過 Golang API ) 也可以看看.

之後會再寫個中文部落格來介紹這個….

[預告: Chatbot Day 還會有 Tensorflow 相關的 Chatbot,請期待…]

程式設計週記[2017/03/24]: 好好學習 Kubernetes 跟 Tensorflow

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.

本週摘要

深刻體驗到時間不夠用的痛苦,又需要準備四月份的一些演講,又需要弄公司的東西,不過相當得充實又有趣啊.

四月一共有一場分享加上一場大型研討會.雖然兩個都會提到 Tensorflow ,但是內容有些不太一樣.



Go

Slide: 簡單介紹 golang 使用的 gc 演算法

介紹 GC 演算法在 stack 的 scan 方式,在 Go 1.7 的時候 stack rescaning 會造成 GC Pause (俗稱的 Stop-The-World).

在 Go 1.9 的 Proposal Eliminate STW stack re-scanning 就是為了要減少這樣的問題. 在 1.8 已經預設打開.

參考: DK 的文章

Automatic Stackdriver Tracing for gRPC

這篇講解了如何透過 Golang 來撰寫一個使用 stackdriver (也就是 Google 之前所併購的線上分散式追蹤 distributed tracing 的工具) 來查看在 gRPC 下問是否有任何問題.

想要試試看 Open Source 的 distributed tracing ? 那麼可以試試看最近進入 CNCF 的 Open Tracing . 官方的部落格有一個範例讓你學習如何用 Golang 透過 Open Tracing 來追蹤 http latency

名詞解釋: CNCF (Cloud Native Computing Foundation) 是由 Google, Intel, CoreOS 與華為 等等各家網路 大公司所組成的協會.主要選取一些優秀的服務來推廣適合作為 Cloud Native Computing 之用.. 目前裡面的軟體有: Kubernetes, Prometheus, Fluentd 與 GPRC .. 等等 Cloud Native 上重要的服務

3.5 Years, 500k Lines of Go (Part 1)

juju 是ubuntu 開源出來使用 Golang 開發的 devops 工具,目前已經開發了超過三年多的過程.他們分享在公司內部如何使用 Golang 的.

不論是如何做 package management (使用 godep) 或是專案的如何組織與分割各種不同的 repo .分享了許多使用 Golang 作為大型專案開發的經驗,很推薦大家一起來學習.



Python

Qix-/better-exceptions: Pretty and useful exceptions in Python, automatically.

可以讓 python 的 exception 顯示得更漂亮.

Android/JAVA/NODE.JS

derhuerst/tcp-over-websockets: Tunnel TCP through WebSockets

透過 websocket 來做 TCP tunnel .



Docker

iOS/Swift



其他程式語言



論文收集



Kubernetes

Lessons Learned: Using Concourse In Production

這篇介紹了 ChatWork 這間公司從 AWS EC2 + Jenkins 移到 Kubernetes Helm + concourse CI 所學習到的一些課程.

有好的部分,也有一些犧牲,挺值得看看的.

https://kubernetes.io/docs/concepts/cluster-administration/access-cluster/ 搞懂 API server ….

  1. token, namespace 只能在 pod 裡面使用…
  2. API server 也建議從 pod 裡面呼叫…
  3. pod 裡面都會有 /var/run/secret ….. 的資料… 裡面就是從 pod 裡面設定的權限…

參考

Monitoring Kubernetes

由 sysdig 寫的技術部落格,主要是講解如何在 Kubernetes 上面做監控( Monitoring ).內容整理得相當好.

一連有五篇,一開始從 Kubernetes 的基本開始介紹.並且介紹大家常用的 cAdvisor, Kubernetes Dashboard, Kube-state-metrics 跟 Probes.並且也有介紹經常遇到的問題與解決方式.

當然.. 最後會廣告一下他們自己的產品 XDD



Machine Learning

GitHub - readbeyond/aeneas: aeneas is a Python/C library and a set of tools to automagically synchronize audio and text (aka forced alignment)

有人寫出透過 python 與 c 來做自動對聲音跟文字的工具.

GDG-Shanghai 2017 TensorFlow Summit Recap

GDG SH RECAP slide 相當有幫助喔

Neural Networks and Deep Learning: Free online ebook

不錯的電子書關於類神經網路與深度學習.

Index of Best AI/Machine Learning Resources

整理一些不錯的 Machine Learning 的資源.

Practical Deep Learning For Coders, Part 1,

快速學會寫深度學習的程式,免費 18 小時線上課程

Models built with TensorFlow

這邊列出不少透過 Tensorflow 建立出來的有趣 ML Models ,不論是 image to text 或是 NLU 專案都有.

[slide: Stream Programming

with Kafka Streams](https://docs.google.com/presentation/d/1YOFdWrNtXQccKuup8OO-DIARN4V5eft3N9-TwZb4rBw/edit#slide=id.p)

強者我同事在 Flink Meetup 上面討論關於 Kafka Streams

Data Coding 101 – Intro To Bash

許多.. bash 相關技巧,對於做 data coding 的人有很多幫助.



網站文章

Learn how to design large-scale systems. Prep for the system design interview.

[學習如何設計一個具有規模的系統]

這一篇整理了很多大型系統會用到的一些範例,原本作者是準備要作為面試之用,裡面整理了許多關於大型或是分散式系統的設計原理,原則甚至是一些模式.

雖然我們都已經經常在使用,但是這一篇文章相當適合當作大型系統設計的教材.

I’ve been a Web Developer for 17 Years, and this is what I learned - Daniel Khan

很有趣的故事…. 也可以看到這十多年 web developer 的改變

OpenTracing: Towards Turnkey Distributed Tracing

舊聞… 不過看完就知道 opentracing 為何可以進 cncf 了.. dapper 論文發了之後… distributed tracing 就是顯學…

雖然是官方的廣告 blog 不過整個介紹的夠清楚…

網站收集



有聲書/影片心得