CodeTengu / HyakkiYagyo

The noticeboard for CodeTengu Weekly curators
https://codetengu.com/
293 stars 7 forks source link

有無開放 API 可以抓取歷年來資料 #141

Open appleboy opened 6 years ago

appleboy commented 6 years ago

不知道期刊有無開放 API 可以讓開發者拿到每期期刊資料去做處理或者是整理呢?

uranusjr commented 6 years ago

目前是使用 Curated 發布,他們有提供 API,但似乎要有 private token 才能用,裡面的資訊也滿廢的(?)。

appleboy commented 6 years ago

http://support.curated.co/integrations/fetching-issue-data-with-the-api/ 看起來真的蠻廢的 ? XD

saiday commented 6 years ago

就我所知,我們也有透過 https://github.com/CodeTengu/LambdaBaku 自己存一份下來,也是透過 curated 的 API 就是了。

但我們自己存的部分有沒有 API 就得問作者本人 @vinta 了

appleboy commented 6 years ago

@saiday 所以沒有實體 content 在 GitHub 內就是了?感覺應該保存一份在 GitHub Repo 內。

saiday commented 6 years ago

對,目前沒有存在 GitHub。

我同意可以存一份在 GitHub,是說要放 GitHub 的話,是要存 raw data 還是處理過的格式?有建議的嗎?

uranusjr commented 6 years ago

Raw vs 處理過的差別是什麼,單純 Markdown 轉 HTML 嗎?

saiday commented 6 years ago

Raw 是指從 Curated API 拿回來的東西直接存,我們目前也只能透過這種方式拿 data 了。 處理過是用 Markdown 把它加工過。

考量的點應該是機器可讀 vs 人類可讀

appleboy commented 6 years ago

@saiday 我建議可以存 Markdown 或 JSON 格式其中一種,然後寫個對應的 Parser 去轉換,當然如果能一次存成兩種是最好的。放 GitHub 好處可以拿來做其他應用也不賴

uranusjr commented 6 years ago

我覺得 raw JSON 丟出去就好了啦,想要 human readable 的人再自己寫囉大家都工程師啊,真的很多人用再收進來 CodeTengu 下面當獨立 project。

appleboy commented 6 years ago

@uranusjr 水喔,也可以,那是不是每期給一個 JSON 檔案?

{
  "number": 1,
  "title": "Issue 1",
  "summary": "Issue summary",
  "url": "https://your-publication.curated.co/issues/1",
  "published_at": "2014-08-16T01:21:58.390+01:00",
  "updated_at": "2014-08-24T12:00:03.535+01:00",
  "categories": [
    {
      "name": "News",
      "code": "news",
      "items": [
        {
          "type": "Text",
          "title": "Item title",
          "description": "<p>This is the description for a text item in the issue, it will passed as HTML with <strong>formatting</strong> already applied and <a href=\"https://cur.at/5dsYv2s\">embedded links</a> inline.</p>",
          "footer": "Footer text",
          "embedded_links": [
            {
              "identifier": "5dsYv2s",
              "title": "Embedded link title",
              "url": "https://cur.at/5dsYv2s",
              "url_domain": "example.com"
            }
          ]
        },
        {
          "type": "Link",
          "title": "Item title",
          "description": "<p>This is the description for a link item in the issue, it will passed as HTML with <strong>formatting</strong> already applied.</p>",
          "url_domain": "example.com",
          "url": "https://cur.at/8wnuSy6",
          "embedded_links": []
        }
      ]
    }
  ]
}

看起來格式會是這樣

vinta commented 6 years ago

幾年前為了備份資料 有用 AWS Lambda 和 API Gateway 寫了一組簡單的 API 不過一直忘記要開放 需要的人可以直接拿去用啊

$ curl -X GET -H x-api-key:PW1k5rmFD78s1YlQ1W1jw71jRZli2QOG4KS1bVjU https://lfsfm1czqg.execute-api.ap-northeast-1.amazonaws.com/v1/issues
$ curl -X GET -H x-api-key:PW1k5rmFD78s1YlQ1W1jw71jRZli2QOG4KS1bVjU https://lfsfm1czqg.execute-api.ap-northeast-1.amazonaws.com/v1/issues/100

內容大概長這樣:

{
    "total_count": 111,
    "items": [
        {
            "number": 111,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1515376800,
            "randomKey": 0.7692905957810581,
            "summary": "本期內容涵蓋 Git Flow, iOS, Kubernetes, Golang, UX, JavaScript, CSS",
            "title": "「職涯路上不順嗎?」「順啊,一路上都沒什麼人」",
            "url": "https://weekly.codetengu.com/issues/111"
        },
        {
            "number": 110,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1513562400,
            "randomKey": 0.6385096674785018,
            "summary": "本期內容涵蓋 Git, iOS, Kotlin, Operation, Fonts, Machine Learning",
            "title": "測試案例分成兩種:「這也要測?!」和「這也能測?!」",
            "url": "https://weekly.codetengu.com/issues/110"
        },
        {
            "number": 109,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1512957600,
            "randomKey": 0.3006369583308697,
            "summary": "本期內容涵蓋 Career, Startup, Machine Learning, PHP",
            "title": "「全端工程師」是指「有能力把系統裡的每一層都弄壞」",
            "url": "https://weekly.codetengu.com/issues/109"
        },
        {
            "number": 108,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1512352800,
            "randomKey": 0.6650748648680747,
            "summary": "本期內容涵蓋 JavaScript, Redux, Game, PostgreSQL, SSH Key, API Design, Career",
            "title": "聽說多數公司會故意招募一個能力不足的員工只是為了鼓舞大家的士氣,讓其他人在遇到瓶頸時還保有信心。真是無稽之談,我待的公司就沒看到這樣的人。",
            "url": "https://weekly.codetengu.com/issues/108"
        },
        {
            "number": 107,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1511748000,
            "randomKey": 0.8010991320479661,
            "summary": "本期內容涵蓋 iOS, React Native, Go, Machine Learning, API Design, CSS, DevOps, Microcontroller",
            "title": "先講求效果,再講求不傷身體",
            "url": "https://weekly.codetengu.com/issues/107"
        },
        {
            "number": 106,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1511143200,
            "randomKey": 0.9627539180219173,
            "summary": "本期內容涵蓋 Python, Design, CoC, Machine Learning, Keras, TensorFlow, Capsule, 溏心蛋",
            "title": "大家都說除錯的難度要比程式被寫出來的時候難兩倍以上,因此,理論上你沒有能力除錯自己用盡全力寫出的精妙程式",
            "url": "https://weekly.codetengu.com/issues/106"
        },
        {
            "number": 105,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1510538400,
            "randomKey": 0.1949135926552117,
            "summary": "本期內容涵蓋 iOS, Android, Swift, Kotlin, Machine Learning, PHP, Ethereum, Programming Language",
            "title": "做不出來時,資深工程師知道什麼時候該站起來走一走,更資深的工程師知道什麼時候該跑",
            "url": "https://weekly.codetengu.com/issues/105"
        },
        {
            "number": 104,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1509933600,
            "randomKey": 0.707538730232045,
            "summary": "本期內容涵蓋 Spark, Scala, Machine Learning, Recommender System, Elasticsearch, MySQL, Product Management, Remote Working, CSS, JavaScript",
            "title": "當你凝視 bug,bug 也凝視著你",
            "url": "https://weekly.codetengu.com/issues/104"
        },
        {
            "number": 103,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1508724000,
            "randomKey": 0.753534353338182,
            "summary": "本期內容涵蓋 PostgreSQL, Rust, JSON API, Golang, Kubernetes, Machine Learning, MongoDB",
            "title": "If 判斷式就是窮人版的決策樹",
            "url": "https://weekly.codetengu.com/issues/103"
        },
        {
            "number": 102,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1508119200,
            "randomKey": 0.3199214970227331,
            "summary": "本期內容涵蓋 Objective-C, Swift, Machine Learning, Deep Learning, Code Review, Git, R, Recommender System",
            "title": "為什麼小明有問題都不 Google?因為他有 Bing",
            "url": "https://weekly.codetengu.com/issues/102"
        },
        {
            "number": 101,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1507514400,
            "randomKey": 0.8741060730535537,
            "summary": "本期內容涵蓋 Machine Learning, Data Science, Python, JavaScript, Flexbox , CSS, GraphQL",
            "title": "國慶日小測驗,若中華民國是指標,請問它是空指標、野指標還是懸空指標?",
            "url": "https://weekly.codetengu.com/issues/101"
        },
        {
            "number": 100,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1506304800,
            "randomKey": 0.2950752121396363,
            "summary": "本期內容涵蓋 Spark, Scala, Machine Learning, MySQL, Go, Android, DevOps, Ethereum, JavaScript, Ruby, Elixir, Scrum",
            "title": "The net is vast and infinite",
            "url": "https://weekly.codetengu.com/issues/100"
        },
        {
            "number": 99,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1502067600,
            "randomKey": 0.0729283990804106,
            "summary": "本期內容涵蓋 Spark, Python, Machine Learning, Feature Engineering, Testing, DevOps, ReactJS, JavaScript, WebAssembly, CSS",
            "title": "<attackOnJava>那一天,人類終於回想起了,曾經一度被 XML 所支配的恐懼</attackOnJava> <!-- 進擊的 Java -->",
            "url": "https://weekly.codetengu.com/issues/99"
        },
        {
            "number": 98,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1501466400,
            "randomKey": 0.9213188062421978,
            "summary": "本期內容涵蓋 Frontend, DevOps, MySQL, Go, Bitcoin, PostgresQL",
            "title": "絕望啊!我對每個 library 都有自己的 DSL 絕望啦!",
            "url": "https://weekly.codetengu.com/issues/98"
        },
        {
            "number": 97,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1500861600,
            "randomKey": 0.15745833632536232,
            "summary": "本期內容涵蓋 iOS, Android, Swift, Kotlin, Microservice, Rust, DHCP, GraphQL, ReactJS, CSS",
            "title": "騙人,日出怎麼會是早上,我明明都是在晚上看到日出的",
            "url": "https://weekly.codetengu.com/issues/97"
        },
        {
            "number": 96,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1500256800,
            "randomKey": 0.4199086332228035,
            "summary": "本期內容涵蓋 JavaScript, CSS, React, iOS, Refactoring, Management",
            "title": "♫ 登等,登登登等,登登登等,登登登等登,登登登等登",
            "url": "https://weekly.codetengu.com/issues/96"
        },
        {
            "number": 95,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1499652000,
            "randomKey": 0.31378084840252995,
            "summary": "本期內容涵蓋 Blockchain, Machine Learning, Python, Django, Interviewing, Go",
            "title": "Information wants to be free",
            "url": "https://weekly.codetengu.com/issues/95"
        },
        {
            "number": 94,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1499047200,
            "randomKey": 0.7207391038537025,
            "summary": "本期內容涵蓋 Python 3, Django, Apache Spark, Scala, Investment, Scrum, gRPC, Testing, iOS, Functional Programming, UUID, Container",
            "title": "好的 PM 可能就像是鬼故事,常常有人說得繪聲繪影、煞有其事,但是我從來沒遇過",
            "url": "https://weekly.codetengu.com/issues/94"
        },
        {
            "number": 93,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1497837600,
            "randomKey": 0.8214972279965878,
            "summary": "本期內容涵蓋 Mail Management, Django, JavaScript, Bonsai, Preact, ReactJS, CSS, GraphQL, Babylon",
            "title": "理論上,理論和實際是沒有差異的;但實際上,是有的",
            "url": "https://weekly.codetengu.com/issues/93"
        },
        {
            "number": 92,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1497240000,
            "randomKey": 0.1610768111422658,
            "summary": "本期內容涵蓋 PHP, Laravel, Machine Learning, Deep Learning, DevOps, Kubernetes, JavaScript, WebAssembly, API",
            "title": "To be OR NOT To be = To be",
            "url": "https://weekly.codetengu.com/issues/92"
        },
        {
            "number": 91,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1496628000,
            "randomKey": 0.5082000331021845,
            "summary": "本期內容涵蓋 Management, Scrum, iOS, Objective-C, Python, pip, Go, Kubernetes",
            "title": "如何檢查你的 Linux 作業系統是 32 位元或是 [敏感词已被屏蔽] 位元?請使用 uname -m 指令",
            "url": "https://weekly.codetengu.com/issues/91"
        },
        {
            "number": 90,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1496023200,
            "randomKey": 0.7726109058130533,
            "summary": "本期內容涵蓋 Spark, Python, Recommender System, Machine Learning, Scala, Feature Engineering, Testing, Swift, iOS, Android, Go, Kotlin",
            "title": "喜迎中華民國即將成為全亞洲第一個同志婚姻合法化的中國 #LoveWins",
            "url": "https://weekly.codetengu.com/issues/90"
        },
        {
            "number": 89,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1495425314,
            "randomKey": 0.4685389038641006,
            "summary": "本期內容涵蓋 Machine Learning, Laravel, WebAssembly, Prepack, Kotlin, Elixir, Sinatra",
            "title": "我是十倍工程師,十倍爛的工程師",
            "url": "https://weekly.codetengu.com/issues/89"
        },
        {
            "number": 88,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1494813600,
            "randomKey": 0.02234536036849022,
            "summary": "本期內容涵蓋 DevOps, Continuous Delivery, REST, JavaScript, Blockchain, Elixir, Phoenix, Bash, Python, 創業",
            "title": "除錯就像是推理劇,你擔任偵探,同時也是兇手",
            "url": "https://weekly.codetengu.com/issues/88"
        },
        {
            "number": 87,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1494208800,
            "randomKey": 0.14269104041159153,
            "summary": "本期內容涵蓋 Python, Celery, Spark, Docker, Interviewing, LLVM, Rust, Go, Chatbot",
            "title": "未來的某一天,Gmail 配備的 AI 可能會得出一個結論:想要消滅垃圾郵件最好的辦法就是消滅人類",
            "url": "https://weekly.codetengu.com/issues/87"
        },
        {
            "number": 86,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1493604000,
            "randomKey": 0.8437281621154398,
            "summary": "本期內容涵蓋 Deep Learning, Natural Language Processing, Machine Learning, PHP, Laravel, iOS, Swift, ReactiveCocoa, CSS, JavaScript, UI",
            "title": "聽說有些人家裡的日曆上 5 月 1 日寫的不是「勞動節」而是「階級複製節」喔",
            "url": "https://weekly.codetengu.com/issues/86"
        },
        {
            "number": 85,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1492999200,
            "randomKey": 0.7178993592970073,
            "summary": "本期內容涵蓋 iOS, Android, Swift, Smart Contracts, CD, C, Python",
            "title": "亞太 2 號海底電纜,加油!",
            "url": "https://weekly.codetengu.com/issues/85"
        },
        {
            "number": 84,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1492394400,
            "randomKey": 0.9925293559208512,
            "summary": "本期內容涵蓋 Management, DevOps, Django, Phoenix, Elixir, Microservice, Chatbot, Go",
            "title": "哇!是擅長 Over-engineering 的朋友呢!",
            "url": "https://weekly.codetengu.com/issues/84"
        },
        {
            "number": 83,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1491789600,
            "randomKey": 0.6185688846744597,
            "summary": "本期內容涵蓋 Machine Learning, Recommender System, Spark, Python, Django, JavaScript, ECMAScript 6, Node.js, RESTful API, React.js, CSS",
            "title": "你從什麼時候開始產生了我沒使用 Monkey Patch 的錯覺?",
            "url": "https://weekly.codetengu.com/issues/83"
        },
        {
            "number": 82,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1491184800,
            "randomKey": 0.7441726727411151,
            "summary": "本期內容涵蓋 Machine Learning, Tensorflow, PHP, iOS",
            "title": "把 .psd 副檔名改成 .jpg 並不叫做轉檔,不,改成 .png 也不是",
            "url": "https://weekly.codetengu.com/issues/82"
        },
        {
            "number": 81,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1490580000,
            "randomKey": 0.41322818072512746,
            "summary": "本期內容涵蓋 iOS, Android, Elasticsearch, Smart Contract, Bash script, Markdown, Programming Language",
            "title": "I � Unicode",
            "url": "https://weekly.codetengu.com/issues/81"
        },
        {
            "number": 80,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1489979757,
            "randomKey": 0.25771511113271117,
            "summary": "本期內容涵蓋 Python, Serverless, Management, Design, ReactJS, NodeJS, Career, Golang, YARN, TensorFlow",
            "title": "HTTP 牽到 443 還是 HTTP",
            "url": "https://weekly.codetengu.com/issues/80"
        },
        {
            "number": 79,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1489370400,
            "randomKey": 0.5936770658008754,
            "summary": "本期內容涵蓋 Database, API, Security, Django, Python, MySQL, Bash, Design Patterns, Unicode, React, JavaScript, Testing, Functional Programming, CSS",
            "title": "我們將在近期推出一份新刊物:CodeTengu Lite,每期的 email 只會有主旨,沒有內容,適合大部分只看標題不看內文的讀者訂閱,敬請期待!",
            "url": "https://weekly.codetengu.com/issues/79"
        },
        {
            "number": 78,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1488765600,
            "randomKey": 0.8045861886348575,
            "summary": "本期內容涵蓋 Machine Learning, Testing, PHP, Smart Contract, Alexa, ReactJS, Swift, Redux, Protocol Buffers",
            "title": "小明相信最好的代碼本身就是文檔,他才不需要註解,他的函式名稱有 100 個字元",
            "url": "https://weekly.codetengu.com/issues/78"
        },
        {
            "number": 77,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1488160800,
            "randomKey": 0.6505832758266479,
            "summary": "本期內容涵蓋 iOS, Android, Design, Redux, CSS, JavaScript, Python, Code",
            "title": "清鄉是指政府派遣軍隊去清查任何可藏匿之處所,並針對可疑人士實行拘捕,必要時可立即處決",
            "url": "https://weekly.codetengu.com/issues/77"
        },
        {
            "number": 76,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1487556000,
            "randomKey": 0.17386682657524943,
            "summary": "本期內容涵蓋 Python, Database, Recommender System, Machine Learning, Debug, Go, Message Queue, JavaScript, React, UI, RethinkDB, PostgreSQL, Node.js",
            "title": "心裡想的是 Microservice,手裡做的是 Distributed Monolith",
            "url": "https://weekly.codetengu.com/issues/76"
        },
        {
            "number": 75,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1483322400,
            "randomKey": 0.11549556883983314,
            "summary": "本期內容涵蓋 Microservice, MySQL, Python, JavaScript, iOS, Chatbot, PHP, AI, Machine Learning, Deep Learning, Blockchain, API, Node.js, UI, Go",
            "title": "程式寫得爛沒關係,技術奇點來臨之後,你程式裡的 bug 電腦都可以自己解決,如果沒有,至少你會被電腦解決",
            "url": "https://weekly.codetengu.com/issues/75"
        },
        {
            "number": 74,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1482717600,
            "randomKey": 0.03255144413560629,
            "summary": "本期內容涵蓋 MySQL, DevOps, Python, Elixir, JavaScript, Go, Machine Learning",
            "title": "只有兩種產業的人會把他們的客戶稱為 User,軟體工程師和毒販",
            "url": "https://weekly.codetengu.com/issues/74"
        },
        {
            "number": 73,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1482112800,
            "randomKey": 0.7057074389886111,
            "summary": "本期內容涵蓋 Ethereum, Node.js, Jenkins, JavaScript, React.js, Progressive Web App, Functional Programming, PostgreSQL, Go",
            "title": "Merge branch 'develop'",
            "url": "https://weekly.codetengu.com/issues/73"
        },
        {
            "number": 72,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1481508000,
            "randomKey": 0.3584393374621868,
            "summary": "本期內容涵蓋 Machine Learning, Deep Learning, Data Mining, Xcode, Swift, Object-Oriented Programming, Python, CSS",
            "title": "Workaround 雖可恥但有用",
            "url": "https://weekly.codetengu.com/issues/72"
        },
        {
            "number": 71,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1480903200,
            "randomKey": 0.9934708231594414,
            "summary": "本期內容涵蓋 Web, Machine Learning, Testing, iOS, Android, Golang",
            "title": "如果你覺得自己的工作環境裡沒有機歪人,那你就是那個機歪人",
            "url": "https://weekly.codetengu.com/issues/71"
        },
        {
            "number": 70,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1480298400,
            "randomKey": 0.8179957619868219,
            "summary": "本期內容涵蓋 Management, Open Source, CSS, Markdown, Node.js, Profiling, Elixir, Phoenix",
            "title": "恭迎 Final Fantasy XV 上市,故下週的 CodeTengu Weekly 將再度停刊一次",
            "url": "https://weekly.codetengu.com/issues/70"
        },
        {
            "number": 69,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1479693600,
            "randomKey": 0.07038117479532957,
            "summary": "本期內容涵蓋 Machine Learning, PHP, Elasticsearch, Kubernetes, Ethereum, Docker, iOS, macOS, Swift",
            "title": "澳門首家線上賭場上線啦",
            "url": "https://weekly.codetengu.com/issues/69"
        },
        {
            "number": 68,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1479088800,
            "randomKey": 0.05775122926570475,
            "summary": "本期內容涵蓋 iOS, Android, JSON, Python, Elm, React",
            "title": "這個人老是在寫程式,是不是有 bin 啊?",
            "url": "https://weekly.codetengu.com/issues/68"
        },
        {
            "number": 67,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1478484000,
            "randomKey": 0.1571810133755207,
            "summary": "本期內容涵蓋 AWS, MySQL, Python, Django, Machine Learning, Docker, DevOps, ChatOps, Elixir, Phoenix, Go, Kubernetes, BlockChain",
            "title": "小明白天只是一名普通的軟體工程師,但是只要一到了夜晚,他就會搖身一變,成為一名加班的軟體工程師",
            "url": "https://weekly.codetengu.com/issues/67"
        },
        {
            "number": 66,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1477879200,
            "randomKey": 0.18496642424724996,
            "summary": "本期內容涵蓋 SQL, Python, Machine Learning, PHP, iOS, Android",
            "title": "學海無涯,回頭是岸",
            "url": "https://weekly.codetengu.com/issues/66"
        },
        {
            "number": 65,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1477274400,
            "randomKey": 0.14030067552812397,
            "summary": "本期內容涵蓋 iOS, Android, JWT, Docker, Blockchain, JavaScript, Yarn, ECMAScript 6",
            "title": "上班的人太多,下班的人太少 #職場不等式",
            "url": "https://weekly.codetengu.com/issues/65"
        },
        {
            "number": 64,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1476669600,
            "randomKey": 0.2579493164084852,
            "summary": "本期內容涵蓋 Python, iOS, Ruby, Go, RESTful API, RPC, Search, UX, JavaScript, ECMAScript 6, Microservice, Node.js, Functional Programming",
            "title": "奧卡姆剃刀法則:因為需要改的地方太多了,那就改天吧",
            "url": "https://weekly.codetengu.com/issues/64"
        },
        {
            "number": 63,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1476064800,
            "randomKey": 0.2241332051344216,
            "summary": "本期內容涵蓋 MySQL, Python, JavaScript, Node.js, CSS, Code Review, Git, Progressive Web Apps, Phoenix, Elixir",
            "title": "雙十特刊:♫ PPAP! I have a China~ I have a Taiwan~ Ahhh, Republic-of-China-Taiwan-Chinese-Taipei!",
            "url": "https://weekly.codetengu.com/issues/63"
        },
        {
            "number": 62,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1475452851,
            "randomKey": 0.598880201112479,
            "summary": "本期內容涵蓋 Machine Learning, Deep Learning, PHP, Laravel, Go, Microservices, iOS, Swift",
            "title": "就算有九個女人也沒辦法在一個月內就讓孩子出生",
            "url": "https://weekly.codetengu.com/issues/62"
        },
        {
            "number": 61,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1474855200,
            "randomKey": 0.24590780516155064,
            "summary": "本期內容涵蓋 iOS, Android, JavaScript, Redux, Go, Docker, Rust",
            "title": "大家都喜歡高測試覆蓋率,只是剛好大家都討厭寫測試",
            "url": "https://weekly.codetengu.com/issues/61"
        },
        {
            "number": 60,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1474250400,
            "randomKey": 0.858553018188104,
            "summary": "本期內容涵蓋 Refactoring, JavaScript, CSS, Functional Programming",
            "title": "There is no place like 127.0.0.1",
            "url": "https://weekly.codetengu.com/issues/60"
        },
        {
            "number": 59,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1473645600,
            "randomKey": 0.8057631780393422,
            "summary": "本期內容涵蓋 Microservice, Overengineering, Security, Python, Machine Learning, Spark, PHP, Regular Expression, Testing",
            "title": "你在每個 commit 裡修改的程式碼越多,你在 code review 時被發現的錯誤就會越少",
            "url": "https://weekly.codetengu.com/issues/59"
        },
        {
            "number": 58,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1473040800,
            "randomKey": 0.9554754849523306,
            "summary": "本期內容涵蓋 iOS, Android, git, Swagger, Docker, Elixir",
            "title": "我審查了自己的程式碼,得到了一份更好的程式碼跟更好的自己",
            "url": "https://weekly.codetengu.com/issues/58"
        },
        {
            "number": 57,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1472436000,
            "randomKey": 0.7025489744264632,
            "summary": "本期內容涵蓋 JavaScript, HTML, React Native, iOS, Redux, MVVM, COSCUP, Modern Web, Go",
            "title": "Any application that can be written in JavaScript, will eventually be written in JavaScript.",
            "url": "https://weekly.codetengu.com/issues/57"
        },
        {
            "number": 56,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1471831200,
            "randomKey": 0.7883343461435288,
            "summary": "本期內容涵蓋 Go, WebSocket, Android, UI / UX, Python, Git, JavaScript, GraphQL, Elm, 演算法",
            "title": "The best place to hide a dead body is page 2 of Google search results.",
            "url": "https://weekly.codetengu.com/issues/56"
        },
        {
            "number": 55,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1471226400,
            "randomKey": 0.5673521708231419,
            "summary": "本期內容涵蓋 iOS, Android, Machine Learning, PHP, Elixir, 重構",
            "title": "Life is what happens to you while you're busy making other plans.",
            "url": "https://weekly.codetengu.com/issues/55"
        },
        {
            "number": 54,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1470621600,
            "randomKey": 0.7626913106068969,
            "summary": "本期內容涵蓋 DevOps, Kubernetes, Objective-C, Redux, Design Patterns, Swift, Go, 管理",
            "title": "歡迎大家來到碼天狗的烘焙雞,(狀態列跑馬燈)最佳觀看解析度為 800x600,建議使用 IE 5.0 以上瀏覽器",
            "url": "https://weekly.codetengu.com/issues/54"
        },
        {
            "number": 53,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1470016800,
            "randomKey": 0.8891310140024871,
            "summary": "本期內容涵蓋 JavaScript, React.js, Terminal, CSS, ORM, SQL, Elm, Go, 性別",
            "title": "要 mock 的物件太多了,只好 mock 罵號",
            "url": "https://weekly.codetengu.com/issues/53"
        },
        {
            "number": 52,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1468807200,
            "randomKey": 0.016544240759685636,
            "summary": "本期內容涵蓋 Haskell, Scala, ML, Scheme, AWS Lambda, Xcode, Go, 搜尋, 機器學習, 自然語言處理, 架構",
            "title": "一週年!當一個軟體工程師宣稱他已經完成了 90% 的工作,意思是他還需要相同的時間來完成剩下的 10% 的工作",
            "url": "https://weekly.codetengu.com/issues/52"
        },
        {
            "number": 51,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1468202400,
            "randomKey": 0.4357379851862788,
            "summary": "本期內容涵蓋 Python, JavaScript, iOS, Android, Machine Learning, TensorFlow, 時間管理",
            "title": "小明以為自己是中產階級",
            "url": "https://weekly.codetengu.com/issues/51"
        },
        {
            "number": 50,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1467597600,
            "randomKey": 0.9443141079973429,
            "summary": "本期內容涵蓋 Python, Container, HTTPS, Blockchain, Chatbot, Go, 推薦系統",
            "title": "Use the --force, Luke",
            "url": "https://weekly.codetengu.com/issues/50"
        },
        {
            "number": 49,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1466992800,
            "randomKey": 0.08392388606444001,
            "summary": "本期內容涵蓋 Machine Learning, Data Science, PHP, Erlang, Elixir, Android, CSS, Elm, JavaScript, 架構",
            "title": "There are only two hard things in Computer Science: cache invalidation and naming things.",
            "url": "https://weekly.codetengu.com/issues/49"
        },
        {
            "number": 48,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1466388000,
            "randomKey": 0.005386849399656057,
            "summary": "本期內容涵蓋  iOS, Android, JavaScript, CSS, Kotlin, Python",
            "title": "做高級工程師好多年了,沒想到今天忽然就被升職成傳說級工程師",
            "url": "https://weekly.codetengu.com/issues/48"
        },
        {
            "number": 47,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1465783200,
            "randomKey": 0.6939051519148052,
            "summary": "本期內容涵蓋 Python, Debugging, Design Patterns, JavaScript, ECMAScript 6, Promise, SQL, Android, Java, Code Review, 求職",
            "title": "沒有什麼問題是重開機不能解決的,如果有,那就重灌",
            "url": "https://weekly.codetengu.com/issues/47"
        },
        {
            "number": 46,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1465178400,
            "randomKey": 0.9312998112291098,
            "summary": "本期內容涵蓋 Python, Machine Learning, PHP, Ansible",
            "title": "不能信任那些 Terminal 或編輯器用白底的人",
            "url": "https://weekly.codetengu.com/issues/46"
        },
        {
            "number": 45,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1464573600,
            "randomKey": 0.11146687576547265,
            "summary": "本期內容涵蓋 Career, Swift, Android, Erlang, Elixir, Rails, Open Source, SQL, Compiler, Go, Memcached",
            "title": "我女朋友說她最近需要一些時間跟距離,請問她是不是要算速率?",
            "url": "https://weekly.codetengu.com/issues/45"
        },
        {
            "number": 44,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1463968800,
            "randomKey": 0.2738477843813598,
            "summary": "本期內容涵蓋 Python, AWS, Lambda, DynamoDB, MySQL, Commit Message, Go, JavaScript, React, CSS, Node.js, Webpack",
            "title": "為了不讓 Google 的 AlphaGo 專美於前,微軟也將在近期推出自己的圍棋 AI,名叫 AlphaC#",
            "url": "https://weekly.codetengu.com/issues/44"
        },
        {
            "number": 43,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1463364000,
            "randomKey": 0.4056069958023727,
            "summary": "本期內容涵蓋 PHP, MySQL, Machine Learning, Docker, GPU, Ansible, Go, Raspberry Pi",
            "title": "Perl 是唯一一門在 RSA 加密前後看起來一樣的語言",
            "url": "https://weekly.codetengu.com/issues/43"
        },
        {
            "number": 42,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1462759200,
            "randomKey": 0.627012797864154,
            "summary": "本期內容涵蓋 Python, Makefile, Go, Visual Studio Code, Bots, 寫作, 管理",
            "title": "所有人都在說互联网,沒有人在說網際網路了",
            "url": "https://weekly.codetengu.com/issues/42"
        },
        {
            "number": 41,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1462154400,
            "randomKey": 0.0028347219340503216,
            "summary": "本期內容涵蓋 SQL, Python, Django, Slack, iOS, Android, React.js, Elixir, Erlang",
            "title": "一邊喊著找不到人才,一邊要求租稅優惠,聽到調高基本工資就說不利產業發展、企業恐外移,全台灣最沒有競爭力的就是這些老闆了",
            "url": "https://weekly.codetengu.com/issues/41"
        },
        {
            "number": 40,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1461554086,
            "randomKey": 0.34987369645386934,
            "summary": "本期內容涵蓋 SQL, Android, JavaScript, Career, 2FA, DC/OS, FRP",
            "title": "// Do not remove this comment or code will break",
            "url": "https://weekly.codetengu.com/issues/40"
        },
        {
            "number": 39,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1460944800,
            "randomKey": 0.1652682290878147,
            "summary": "本期內容涵蓋 Laravel, PHP, CSS, Go, 深度學習, 機器學習",
            "title": "SQL 原教旨主義者每 9.5 個月就會對使用 ORM 的族群發起一次聖戰",
            "url": "https://weekly.codetengu.com/issues/39"
        },
        {
            "number": 38,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1460340000,
            "randomKey": 0.1685929223895073,
            "summary": "本期內容涵蓋 Productivity, iOS, Android, Erlang, Elixir, Python, Community",
            "title": "我一直相信,只要打字速度足夠快,寂寞就追不上我",
            "url": "https://weekly.codetengu.com/issues/38"
        },
        {
            "number": 37,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1459735200,
            "randomKey": 0.4679845205973834,
            "summary": "本期內容涵蓋 C++, Wangle, Elixir, Erlang, Regression Testing, JavaScript, WebAssembly, TypeScript, npm, iOS, Swift, RxSwift",
            "title": "除錯的難度幾乎是寫程式的兩倍,如果你把程式寫得太精巧,那你多半沒有聰明到可以解決你的程式的錯誤",
            "url": "https://weekly.codetengu.com/issues/37"
        },
        {
            "number": 36,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1459130400,
            "randomKey": 0.044708032393828034,
            "summary": "本期內容涵蓋 SQL, Django, AJAX, SPA, Docker, thumbor, Elasticsearch, Vim, Product Manager, WebSocket, scikit-learn, ORM, 深度學習, 機器學習",
            "title": "Hi, I'd like to add you to my professional network on LinkedIn.",
            "url": "https://weekly.codetengu.com/issues/36"
        },
        {
            "number": 35,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1458525600,
            "randomKey": 0.9775616533588618,
            "summary": "本期內容涵蓋 Testing, CI, CD, iOS, Android, JavaScript, RWD, StarWar, Drone",
            "title": "不要試著去人格化人工智慧!他們討厭那樣子!",
            "url": "https://weekly.codetengu.com/issues/35"
        },
        {
            "number": 34,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1457920800,
            "randomKey": 0.4146137125790119,
            "summary": "本期內容涵蓋 Android, Web Bluetooth API, UDP, Multithreading, JavaScript, React.js, Functional Programming, iOS, Swift",
            "title": "阿嬤從小就告誡我:不要跟那些電腦裡有安裝 Axure RP 的人當朋友,他們都不是好東西",
            "url": "https://weekly.codetengu.com/issues/34"
        },
        {
            "number": 33,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1457316000,
            "randomKey": 0.6181174335069954,
            "summary": "本期內容涵蓋 React.js, Django, Celery, HTTPS, HTTP Caching, Python, PHP, JavaScript, 技術面試, 機器學習",
            "title": "軟體開發領域的五大反人類的發明:JavaScript、Regular Expression、XML、Git 和 PM",
            "url": "https://weekly.codetengu.com/issues/33"
        },
        {
            "number": 32,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1456711200,
            "randomKey": 0.9217446860857308,
            "summary": "本期內容涵蓋 iOS, Android, JavaScript, CSS, Machine Learning, Fintech, Go",
            "title": "維護舊系統的正確心態要像在海水浴場游泳,因為每個人都會在裡面尿尿",
            "url": "https://weekly.codetengu.com/issues/32"
        },
        {
            "number": 31,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1456106400,
            "randomKey": 0.6208000960759819,
            "summary": "本期內容涵蓋 React, Django, HTTP/2, zsh, Web Workers, JavaScript, CSS, npm, iOS, GitHub, Swift, Objective-C",
            "title": "「我是個壞女孩,我需要被懲罰」她咬著嘴唇說著,「很好」他邊說邊開始在她的筆電安裝 Windows 10 #阿宅的五十道陰影",
            "url": "https://weekly.codetengu.com/issues/31"
        },
        {
            "number": 30,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1455505932,
            "randomKey": 0.13691984280012548,
            "summary": "本期內容涵蓋 Python, Manager, DB, Career, CI, Docker",
            "title": "聽我說,我有一個獨家的點子,只缺幾個工程師來實現它:「設計一套可以付費下載更多 RAM 的 APP」",
            "url": "https://weekly.codetengu.com/issues/30"
        },
        {
            "number": 29,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1454913426,
            "randomKey": 0.08221111888997257,
            "summary": "本期內容涵蓋 iOS, Android, TDD, Machine Learning, WordPress, Sketch, JavaScript",
            "title": "如何靠寫 Java 快速致富?繼承",
            "url": "https://weekly.codetengu.com/issues/29"
        },
        {
            "number": 28,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1454551200,
            "randomKey": 0.7426448839250952,
            "summary": "本期內容涵蓋 Testing, Kubeunetes, Code Review, Django, Python, TensorFlow, Swift",
            "title": "新年特刊:♫ 每條大街小巷,每個工程師的嘴裡,見面第一句話,就是不要 Deploy ♫",
            "url": "https://weekly.codetengu.com/issues/28"
        },
        {
            "number": 27,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1454292000,
            "randomKey": 0.8632141693960875,
            "summary": "本期內容涵蓋 Python 3, MySQL, NGINX, Varnish, Redis, Objective-C, Parse, Swift",
            "title": "密碼:ppnn13%dkstFeb.1st 密碼提示:娉娉裊裊十三餘 豆蔻梢頭二月初",
            "url": "https://weekly.codetengu.com/issues/27"
        },
        {
            "number": 26,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1453687200,
            "randomKey": 0.2879465913865715,
            "summary": "本期內容涵蓋 Git, iOS, Android, Swift, RxJava, Topbeat, Redux, JavaScript, npm",
            "title": "自從注意到更新 Xcode 需要先關閉 iTunes 之後,我對於模組解耦合這件事已經沒有追求",
            "url": "https://weekly.codetengu.com/issues/26"
        },
        {
            "number": 25,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1453082400,
            "randomKey": 0.28884982177987695,
            "summary": "本期內容涵蓋 Python, Celery, Isomorphic JavaScript, ECMAScript 6, HTTP/2, Deep Learning, Machine Learning, Numpy, PHP 7, RESTful API, Android",
            "title": "echo \"國民黨過橋喔~\" && sudo killall -9 kmt && sudo su - citizen watch -n 1 dpp",
            "url": "https://weekly.codetengu.com/issues/25"
        },
        {
            "number": 24,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1452477600,
            "randomKey": 0.38188369013369083,
            "summary": "本期內容涵蓋 Growth Hacking, Hiring, JavaScript, React, CSS, Xcode plugins, Objective-C, RxSwift",
            "title": "國民黨不倒,台灣不會好",
            "url": "https://weekly.codetengu.com/issues/24"
        },
        {
            "number": 23,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1451872800,
            "randomKey": 0.05503131612204015,
            "summary": "本期內容涵蓋 Swift, Android, JavaScript, React.js, CSS, Ethereum, ElasticSearch, ELK, Kubernetes, ECMAScript 6",
            "title": "為了讓公司的開發流程正常化,有人提議要導入 DevOps,但是因為有部分工程師反對,主管決定讓大家投票表決,有三個選項 1. 導入 2. 不導入 3. 維持現狀",
            "url": "https://weekly.codetengu.com/issues/23"
        },
        {
            "number": 22,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1451268000,
            "randomKey": 0.813715768745169,
            "summary": "本期內容涵蓋 Python, JavaScript, ECMAScript 6, HTTP, Git, PHP, Laravel, Java, iOS, Xcode, MVVM, 測試, 機器學習",
            "title": "聽說小明被女朋友甩了,因為小明說要投國民黨",
            "url": "https://weekly.codetengu.com/issues/22"
        },
        {
            "number": 21,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1450663200,
            "randomKey": 0.07298121321946383,
            "summary": "本期內容涵蓋 Python, Travis CI, APIs as a Service, DevOps, iOS, Swift, Core Data, 創業, 管理, 機器人",
            "title": "王如玄:其實國民黨是非常重視勞工議題的政黨,也很關心分配正義",
            "url": "https://weekly.codetengu.com/issues/21"
        },
        {
            "number": 20,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1450058400,
            "randomKey": 0.48517974303103983,
            "summary": "本期內容涵蓋 iOS, Android, Reactive Programming, Machine Learning, PHP, CSS, Frontend, 7688",
            "title": "使用 Cobol 是有損心智的,因此,講授這門語言的行為,應被視為刑事犯罪",
            "url": "https://weekly.codetengu.com/issues/20"
        },
        {
            "number": 19,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1449453600,
            "randomKey": 0.42037660349160433,
            "summary": "本期內容涵蓋 Python, JavaScript, Node.js, Linux, Docker, Ansible, Agile, Code Review, PHP 7, 人才招聘",
            "title": "我早年都是用 vim 寫程式,也說不上特別喜歡,主要是當時還不知道怎麼退出 vim",
            "url": "https://weekly.codetengu.com/issues/19"
        },
        {
            "number": 18,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1448848800,
            "randomKey": 0.32652087905444205,
            "summary": "本期內容涵蓋 Python, Go, MySQL, Docker, Android, iOS",
            "title": "今天要跟大家說一個很好笑的 UDP 笑話",
            "url": "https://weekly.codetengu.com/issues/18"
        },
        {
            "number": 17,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1448244000,
            "randomKey": 0.4087473517283797,
            "summary": "本期內容涵蓋 PHP 7, SQL, JavaScript, Redux, CSS, 機器學習, 語音辨識",
            "title": "Keyboard not found. Press F1 to continue.",
            "url": "https://weekly.codetengu.com/issues/17"
        },
        {
            "number": 16,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1447639200,
            "randomKey": 0.781127350172028,
            "summary": "本期內容涵蓋 Python, MySQL, Cassandra, Swift, iOS, MVVM, MVC, Android, C, Go, Kubernetes, Docker, Bitcoin",
            "title": "Ubuntu 是一個來自非洲祖魯語的單詞,意思是 I can't configure Debian.",
            "url": "https://weekly.codetengu.com/issues/16"
        },
        {
            "number": 15,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1447034400,
            "randomKey": 0.21137104579247534,
            "summary": "本期內容涵蓋 Growth Hacking, Mind Hacking, PHP, Laravel Elixir, Bootstrap, Deep Learning, Ruby, Rails, C10K, 技術團隊管理",
            "title": "喜迎 Fallout 4 上市,故下週的 CodeTengu Weekly 將停刊一次",
            "url": "https://weekly.codetengu.com/issues/15"
        },
        {
            "number": 14,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1446429600,
            "randomKey": 0.06444429629482329,
            "summary": "本期內容涵蓋 RESTful API, Python 3, Redis, Docker, Ansible, DevOps, iTerm2, JavaScript, Amazon S3, PHP, Android, NodeJS",
            "title": "如果 Java 真的有 Garbage Collection 的話,大部份的程式應該在剛開始執行的時候就把自己給回收了",
            "url": "https://weekly.codetengu.com/issues/14"
        },
        {
            "number": 13,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1445824800,
            "randomKey": 0.8123624348081648,
            "summary": "本期內容涵蓋 Core Data, iOS, Android, Functional Reactive Programming, CSS, JavaScript, 開會技巧, 技術團隊管理",
            "title": "為了理解遞迴,首先你得理解遞迴",
            "url": "https://weekly.codetengu.com/issues/13"
        },
        {
            "number": 12,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1445220000,
            "randomKey": 0.9457214013673365,
            "summary": "本期內容涵蓋 Python, Docker, Android, iOS, Vim, Machine Learning, PHP",
            "title": "聽說 Hadoop 工程師睡不著的時候都會 Map/Reduce 羊",
            "url": "https://weekly.codetengu.com/issues/12"
        },
        {
            "number": 11,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1444615200,
            "randomKey": 0.3693997315131128,
            "summary": "本期內容涵蓋 Android, Functional Programming, JavaScript, Management, Perl, Python, React.js, Redux",
            "title": "一個 QA 工程師走進酒吧,點了 -1 杯啤酒,然後酒吧爆炸了",
            "url": "https://weekly.codetengu.com/issues/11"
        },
        {
            "number": 10,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1444010400,
            "randomKey": 0.5903697602916509,
            "summary": "本期內容涵蓋 Android, Django, Functional Programming, Git, iOS, Management, Python, Redis, SaltStack",
            "title": "分散式系統的兩大難題:二是訊息只傳遞一次,一是保證訊息的順序,二是訊息只傳遞一次",
            "url": "https://weekly.codetengu.com/issues/10"
        },
        {
            "number": 9,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1443405600,
            "randomKey": 0.1434953056741506,
            "summary": "本期內容涵蓋 CSS, JavaScript, Machine Learning, Management, MySQL, PHP, React.js",
            "title": "八個哈比人聚在一起的時候我們會叫他們 Hobbyte",
            "url": "https://weekly.codetengu.com/issues/9"
        },
        {
            "number": 8,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1442800800,
            "randomKey": 0.7710679885931313,
            "summary": "本期內容涵蓋 Android, Django, Docker, Elasticsearch, iOS, Management, Python, Swift, Testing",
            "title": "人類的生產力在電腦和網路普及之後大幅提升,但是工時卻沒有變少",
            "url": "https://weekly.codetengu.com/issues/8"
        },
        {
            "number": 7,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1442196000,
            "randomKey": 0.2749916068278253,
            "summary": "本期內容涵蓋 BDD, CSS, Git, JavaScript, Laravel, Machine Learning, Node.js, PHP, Python, TDD",
            "title": "準備幫 git 申請金氏世界紀錄,名目是「人類能夠用 command line 操作的最為複雜的軟體」",
            "url": "https://weekly.codetengu.com/issues/7"
        },
        {
            "number": 6,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1441591200,
            "randomKey": 0.5836330847814679,
            "summary": "本期內容涵蓋 Android, Code Review, Django, iOS, (Monty) Python, PostgreSQL, SQL, Swift",
            "title": "要殺一個程式設計師不需要刀,改三次規格就好",
            "url": "https://weekly.codetengu.com/issues/6"
        },
        {
            "number": 5,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1440986400,
            "randomKey": 0.34039803640916944,
            "summary": "本期內容涵蓋 Elasticsearch, Functional Programming, Git, GitHub, JavaScript, Machine Learning, Node.js, Python",
            "title": "遇到了一個問題,決定用 thread 來解決,嗯,在現有我兩個問了題",
            "url": "https://weekly.codetengu.com/issues/5"
        },
        {
            "number": 4,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1440381600,
            "randomKey": 0.010938666993752122,
            "summary": "本期內容涵蓋 Android, Elasticsearch, iOS, JavaScript, Machine Learning, PHP, Python, Swift",
            "title": "新來的 Designer 趁特價的時候幫自己買了一本 GoF Design Patterns",
            "url": "https://weekly.codetengu.com/issues/4"
        },
        {
            "number": 3,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1439776800,
            "randomKey": 0.6218283206690103,
            "summary": "本期內容涵蓋 Android, Django, Go, Growth Hacking, JavaScript, MySQL, Python, Swift",
            "title": "如何產生一個隨機字串?讓新手退出 vim",
            "url": "https://weekly.codetengu.com/issues/3"
        },
        {
            "number": 2,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1439172000,
            "randomKey": 0.14701125235296786,
            "summary": "本期內容涵蓋 Python, Cassandra, Git, Design Pattern, iOS, Android, Swift, AWS, API Gateway, Lambda, DynamoDB, React",
            "title": "There is no cloud, just other people's computers.",
            "url": "https://weekly.codetengu.com/issues/2"
        },
        {
            "number": 1,
            "publication": "CodeTengu Weekly",
            "publishedAt": 1438574796,
            "randomKey": 0.8171531322877854,
            "summary": "本期內容涵蓋 Python, MySQL, Redis, Docker, Go, Xcode, Testing, Git, Objective-C, Swift, Android, Big Data, DevOps, Vim",
            "title": "創刊號:男子程序員的日常",
            "url": "https://weekly.codetengu.com/issues/1"
        }
    ]
}

{
    "number": 100,
    "posts": [
        {
            "categoryCode": "helloworld",
            "categoryName": "Hello World",
            "contentHTML": "<p>CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一 AM 10:00 出刊,每期會由三位不同的 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到自已感興趣的東西,可能下一期就有了。你也可以瀏覽一下<a href=\"http://link.codetengu.com/c3N9nKj\">前幾期的內容</a>。</p>\n\n<p>目前的 curator 陣容:</p>\n\n<ul>\n<li><a href=\"http://link.codetengu.com/s8X1raw\">@vinta</a> - <a href=\"http://link.codetengu.com/bkyRsaT\">I failed the Turing Test</a> - 科幻迷,最近在讀 <a href=\"http://link.codetengu.com/uvoEsQV\">Ready Player One</a></li>\n<li><a href=\"http://link.codetengu.com/XoZUZQD\">@saiday</a> - <a href=\"http://link.codetengu.com/YVOOzjk\">Imnotyourson</a> - 徵 Android Developer!救我!</li>\n<li><a href=\"http://link.codetengu.com/FvhWNvo\">@tzangms</a> - <a href=\"http://link.codetengu.com/Pttgfnu\">Oceanic / 人生海海</a> - 衝動型購物</li>\n<li><a href=\"http://link.codetengu.com/3NoxQzX\">@fukuball</a> - <a href=\"http://link.codetengu.com/YpXCsbi\">ImFukuball</a> - 有新工作了,但歡迎直接挖角</li>\n<li><a href=\"http://link.codetengu.com/xwlcMMC\">@mingderwang</a> - Ethereum enthusiast</li>\n<li><a href=\"http://link.codetengu.com/AcLQTab\">@kako0507</a> - 熱愛嘗試新事物的前端工程師</li>\n<li><a href=\"http://link.codetengu.com/LcjAeBV\">@chiahsien</a> - 徵有經驗的 Objective-C 工程師,快來 Twitter 私訊我</li>\n<li><a href=\"http://link.codetengu.com/RcoyFc4\">@hiroshiyui</a> - 歧路亡羊與中年危機的典範</li>\n<li><a href=\"http://link.codetengu.com/OMAaur8\">@uranusjr</a> - <a href=\"http://link.codetengu.com/7I32WgA\">Smaller Things</a> - 邊緣人拉到 conference 還是邊緣人</li>\n<li><a href=\"http://link.codetengu.com/PGm6og1\">@kkdai</a> - <a href=\"http://link.codetengu.com/qQ6NWa8\">態度萬歲</a> -  公司誠徵前端,有想做 5G 與 AI 相關方面的前端歡迎聯絡我</li>\n<li><a href=\"http://link.codetengu.com/AZDh1J9\">@yhsiang</a></li>\n<li><a href=\"http://link.codetengu.com/wwhqtNt\">@johnlinvc</a> - 挑戰自動化家中電器</li>\n<li><a href=\"http://link.codetengu.com/nVHdFxn\">@drumrick</a> - 歡迎加入<a href=\"http://link.codetengu.com/1OOAD2y\">台灣 Kaggle 交流區</a></li>\n<li><a href=\"http://link.codetengu.com/ioQbukw\">@wancw</a></li>\n</ul>\n\n\n<p>你也可以關注我們的 <a href=\"http://link.codetengu.com/BhZpcTz\">Facebook</a>、<a href=\"http://link.codetengu.com/WWT73ZN\">Twitter</a>、<a href=\"http://link.codetengu.com/6erVV28\">GitHub</a> 或 <a href=\"http://link.codetengu.com/vsmmlOV\">Open Source 專案</a>,有很多 weekly 看不到的內容。有任何建議也歡迎來 <a href=\"http://link.codetengu.com/FpkY5un\">Gitter</a> 聊聊。</p>",
            "contentText": "CodeTengu Weekly 會在 GMT+8 時區的每個禮拜一 AM 10:00 出刊,每期會由三位不同的 curator 負責當期的內容,每個 curator 有各自擅長的領域,如果你在這一期沒有看到自已感興趣的東西,可能下一期就有了。你也可以瀏覽一下前幾期的內容。\n\n目前的 curator 陣容:\n\n\n@vinta - I failed the Turing Test - 科幻迷,最近在讀 Ready Player One\n@saiday - Imnotyourson - 徵 Android Developer!救我!\n@tzangms - Oceanic / 人生海海 - 衝動型購物\n@fukuball - ImFukuball - 有新工作了,但歡迎直接挖角\n@mingderwang - Ethereum enthusiast\n@kako0507 - 熱愛嘗試新事物的前端工程師\n@chiahsien - 徵有經驗的 Objective-C 工程師,快來 Twitter 私訊我\n@hiroshiyui - 歧路亡羊與中年危機的典範\n@uranusjr - Smaller Things - 邊緣人拉到 conference 還是邊緣人\n@kkdai - 態度萬歲 -  公司誠徵前端,有想做 5G 與 AI 相關方面的前端歡迎聯絡我\n@yhsiang\n@johnlinvc - 挑戰自動化家中電器\n@drumrick - 歡迎加入台灣 Kaggle 交流區\n@wancw\n\n\n\n你也可以關注我們的 Facebook、Twitter、GitHub 或 Open Source 專案,有很多 weekly 看不到的內容。有任何建議也歡迎來 Gitter 聊聊。",
            "createdAt": 1506304800,
            "id": 100001,
            "issueNumber": 100,
            "permalink": "https://weekly.codetengu.com/issues/100#t-310179",
            "randomKey": 0.29999590176157653,
            "title": "CodeTengu Weekly 碼天狗週刊",
            "type": "Text",
            "url": "https://weekly.codetengu.com/issues/100#t-310179"
        },
        {
            "categoryCode": "vinta",
            "categoryName": "@vinta",
            "contentHTML": "<p>因為前陣子辭職了(想放個長假吶~),突然多了不少時間,所以決定在打電動之餘,花點時間上幾門 Coursera 的課。然後花了一個禮拜終於完成這門課啦!主題是 Scala 和 Spark,是 <a href=\"http://link.codetengu.com/TT95O06\">Functional Programming in Scala</a> 系列課程的最後一門課(這個系列有一門課的老師就是 Scala 的發明者 Martin Odersky)。之前學東西都習慣看書,這次第一次在 Coursera 完整地上完一門課,老實說是個很棒的體驗啊。尤其是在寫第一個程式作業的時候,上面標註說大概要花 3 小時,結果我寫了一個下午哈哈哈。雖然上手之後,後來的作業其實很快就做完了。但是還是忍不住想抱怨一下:Spark 的 Dataset typed API 寫起來也太麻煩,而且效能還沒有比較好。</p>\n\n<p>題外話,雖然還沒那麼快要開始找工作,不過因為很閒,這陣子新認識了不少工程師同業,交流了很多技術經驗(和業界八卦 XD),感覺挺不錯的啊,所以想說如果各位朋友或公司有興趣,歡迎<a href=\"http://link.codetengu.com/pOXBVnZ\">聯絡我</a>,咱們可以約個時間吃個飯 👍</p>\n\n<p>題外話之二,說到打電動,跟大家分享一下,12 月的時候 PC/PS4/Xbox One 會出「<a href=\"http://link.codetengu.com/hZq7ZT0\">大神 絕景版</a>」,這款遊戲可是 PS2 時代不朽的名作之一啊,如果你還沒有玩過,拜託玩一下。然!後!登登!小島秀夫的傑作之一 <a href=\"http://link.codetengu.com/zPIc48H\">Anubis: Z.O.E.</a> 也要重製啦!</p>",
            "contentText": "因為前陣子辭職了(想放個長假吶~),突然多了不少時間,所以決定在打電動之餘,花點時間上幾門 Coursera 的課。然後花了一個禮拜終於完成這門課啦!主題是 Scala 和 Spark,是 Functional Programming in Scala 系列課程的最後一門課(這個系列有一門課的老師就是 Scala 的發明者 Martin Odersky)。之前學東西都習慣看書,這次第一次在 Coursera 完整地上完一門課,老實說是個很棒的體驗啊。尤其是在寫第一個程式作業的時候,上面標註說大概要花 3 小時,結果我寫了一個下午哈哈哈。雖然上手之後,後來的作業其實很快就做完了。但是還是忍不住想抱怨一下:Spark 的 Dataset typed API 寫起來也太麻煩,而且效能還沒有比較好。\n\n題外話,雖然還沒那麼快要開始找工作,不過因為很閒,這陣子新認識了不少工程師同業,交流了很多技術經驗(和業界八卦 XD),感覺挺不錯的啊,所以想說如果各位朋友或公司有興趣,歡迎聯絡我,咱們可以約個時間吃個飯 👍\n\n題外話之二,說到打電動,跟大家分享一下,12 月的時候 PC/PS4/Xbox One 會出「大神 絕景版」,這款遊戲可是 PS2 時代不朽的名作之一啊,如果你還沒有玩過,拜託玩一下。然!後!登登!小島秀夫的傑作之一 Anubis: Z.O.E. 也要重製啦!",
            "createdAt": 1506304800,
            "id": 100002,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/9JZ9K7H",
            "randomKey": 0.2745532155968249,
            "title": "Big Data Analysis with Scala and Spark",
            "type": "Link",
            "url": "http://link.codetengu.com/9JZ9K7H"
        },
        {
            "categoryCode": "vinta",
            "categoryName": "@vinta",
            "contentHTML": "<p>不得了啊,這份文件,有在搞機器學習的人,這禮拜讀這篇就夠啦。這份文件的作者是 Google 的 Research Scientist,歸納了 43 條搭建一個 Machine Learning 系統的最佳實踐,而且很多都是從實務和軟體工程角度的經驗總結,這種知識特別寶貴啊。老實說我覺得這也是軟體工程師在這一波 AI 浪潮中可以施力的點,因為任何的機器學習系統或產品,宏觀一點來看,它就是一個軟體工程問題。</p>\n\n<blockquote><p>Most of the problems you will face are, in fact, engineering problems.</p></blockquote>\n\n<p>延伸閱讀(<a href=\"http://link.codetengu.com/BBtFfut\">RecsysChina</a> 的前輩對這篇文章的評註):</p>\n\n<ul>\n<li><a href=\"http://link.codetengu.com/UwsDXNH\">机器学习 43 条军规:解密谷歌机器学习工程最佳实践(上)</a></li>\n<li><a href=\"http://link.codetengu.com/Bzmp7rg\">机器学习 43 条军规:解密谷歌机器学习工程最佳实践(下)</a></li>\n</ul>",
            "contentText": "不得了啊,這份文件,有在搞機器學習的人,這禮拜讀這篇就夠啦。這份文件的作者是 Google 的 Research Scientist,歸納了 43 條搭建一個 Machine Learning 系統的最佳實踐,而且很多都是從實務和軟體工程角度的經驗總結,這種知識特別寶貴啊。老實說我覺得這也是軟體工程師在這一波 AI 浪潮中可以施力的點,因為任何的機器學習系統或產品,宏觀一點來看,它就是一個軟體工程問題。\n\nMost of the problems you will face are, in fact, engineering problems.\n\n延伸閱讀(RecsysChina 的前輩對這篇文章的評註):\n\n\n机器学习 43 条军规:解密谷歌机器学习工程最佳实践(上)\n机器学习 43 条军规:解密谷歌机器学习工程最佳实践(下)\n",
            "createdAt": 1506304800,
            "id": 100003,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/Dz7Hd4e",
            "randomKey": 0.25412933551706374,
            "title": "Rules of Machine Learning: Best Practices for ML Engineering",
            "type": "Link",
            "url": "http://link.codetengu.com/Dz7Hd4e"
        },
        {
            "categoryCode": "vinta",
            "categoryName": "@vinta",
            "contentHTML": "<p>這份簡報很豐富,除了幾乎把我前陣子才讀完的 <a href=\"http://link.codetengu.com/9VCGAt8\">Mastering Feature Engineering</a> 書裡的內容都講完了之外,也提到很多特別的作法。而且看到最後一頁才發現,原來簡報的作者也讀過這本書啊。</p>\n\n<p>是說我這一陣子實際搗鼓了一番 Feature Engineering 之後的感想,特徵工程根本就是手藝活,講求的其實是創造力啊。</p>\n\n<p>延伸閱讀:</p>\n\n<ul>\n<li><a href=\"http://link.codetengu.com/fv5mgfU\">Feature Engineering 特徵工程中常見的方法</a> - 拙作,歡迎指教</li>\n<li><a href=\"http://link.codetengu.com/jmbM72U\">給工程師的統計學及資料分析 123</a></li>\n</ul>",
            "contentText": "這份簡報很豐富,除了幾乎把我前陣子才讀完的 Mastering Feature Engineering 書裡的內容都講完了之外,也提到很多特別的作法。而且看到最後一頁才發現,原來簡報的作者也讀過這本書啊。\n\n是說我這一陣子實際搗鼓了一番 Feature Engineering 之後的感想,特徵工程根本就是手藝活,講求的其實是創造力啊。\n\n延伸閱讀:\n\n\nFeature Engineering 特徵工程中常見的方法 - 拙作,歡迎指教\n給工程師的統計學及資料分析 123\n",
            "createdAt": 1506304800,
            "id": 100004,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/wHo0dLx",
            "randomKey": 0.8568533910438418,
            "title": "Feature Engineering - Getting most out of data for predictive models",
            "type": "Link",
            "url": "http://link.codetengu.com/wHo0dLx"
        },
        {
            "categoryCode": "vinta",
            "categoryName": "@vinta",
            "contentHTML": "<p>之前工作的時候,要把 Spark 運算完的推薦系統的結果寫回 MySQL 資料庫,結果卻遇到了 <code>ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.x.x' (99)</code> 的錯誤,很多人應該都見過類似的錯誤訊息,不過括號裡的數字可能不一樣。在這個例子中,單看文字的描述很容易讓人誤會是 MySQL server 出了什麼差錯,但是其實關鍵在於最後那個括號裡的 OS error code。這篇文章把造成這個錯誤的前因後果說得非常清楚,值得一讀。</p>\n\n<p>簡單說,用 <code>perror 99</code> 可以查到這個 error code 是 <code>Cannot assign requested address</code> 的意思,原來是因為我在寫 Spark 的時候太放肆,不小心在短時間內開了太多的 connection,把 local 的 port 用完了(需要 <code>TIME_WAIT</code> 冷卻時間),所以沒有辦法分配 port 給新的 MySQL connection。解決的辦法:在程式裡重用 MySQL connection 或是限制一下 concurrent 數,再不然就是修改 <code>net.ipv4.tcp_tw_reuse = 1</code> 系統設定。</p>\n\n<p>忍不住提一下,其實 master/slave 架構的 MySQL 還是很罩啊,當初ㄙㄨㄚˋ地一下在幾分鐘內寫了四十幾億筆資料進去,MySQL 跟沒事一樣。原本還ㄏㄧㄠˊ咖稱想用 Cassandra,結果發現在現階段用 MySQL 就頂得住啦。</p>\n\n<p>延伸閱讀:</p>\n\n<ul>\n<li><a href=\"http://link.codetengu.com/flLWVGT\">MySQL system error codes</a></li>\n<li><a href=\"http://link.codetengu.com/DElBGLs\">Spark 技术在唯品会财务系统重构中的实践总结</a></li>\n</ul>",
            "contentText": "之前工作的時候,要把 Spark 運算完的推薦系統的結果寫回 MySQL 資料庫,結果卻遇到了 ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.x.x' (99) 的錯誤,很多人應該都見過類似的錯誤訊息,不過括號裡的數字可能不一樣。在這個例子中,單看文字的描述很容易讓人誤會是 MySQL server 出了什麼差錯,但是其實關鍵在於最後那個括號裡的 OS error code。這篇文章把造成這個錯誤的前因後果說得非常清楚,值得一讀。\n\n簡單說,用 perror 99 可以查到這個 error code 是 Cannot assign requested address 的意思,原來是因為我在寫 Spark 的時候太放肆,不小心在短時間內開了太多的 connection,把 local 的 port 用完了(需要 TIME_WAIT 冷卻時間),所以沒有辦法分配 port 給新的 MySQL connection。解決的辦法:在程式裡重用 MySQL connection 或是限制一下 concurrent 數,再不然就是修改 net.ipv4.tcp_tw_reuse = 1 系統設定。\n\n忍不住提一下,其實 master/slave 架構的 MySQL 還是很罩啊,當初ㄙㄨㄚˋ地一下在幾分鐘內寫了四十幾億筆資料進去,MySQL 跟沒事一樣。原本還ㄏㄧㄠˊ咖稱想用 Cassandra,結果發現在現階段用 MySQL 就頂得住啦。\n\n延伸閱讀:\n\n\nMySQL system error codes\nSpark 技术在唯品会财务系统重构中的实践总结\n",
            "createdAt": 1506304800,
            "id": 100005,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/5scJDEg",
            "randomKey": 0.63460983033292,
            "title": "What happens when your application cannot open yet another connection to MySQL",
            "type": "Link",
            "url": "http://link.codetengu.com/5scJDEg"
        },
        {
            "categoryCode": "saiday",
            "categoryName": "@saiday",
            "contentHTML": "<p>在休刊的這段期間曾經偉大的 <a href=\"http://link.codetengu.com/OxqzPjj\">LaunchKit</a> 收攤了,也因此當初因為找不到 LaunchKit 在 Google Play 的替代品索性自己搞的 JonSnow 也新增了 App Store 的支援。</p>\n\n<p>本來有用 Review Monitor 的朋友可以參考一下,或也可以自己架<a href=\"http://link.codetengu.com/4HCYlRO\">開源版本的 LaunchKit</a>。</p>",
            "contentText": "在休刊的這段期間曾經偉大的 LaunchKit 收攤了,也因此當初因為找不到 LaunchKit 在 Google Play 的替代品索性自己搞的 JonSnow 也新增了 App Store 的支援。\n\n本來有用 Review Monitor 的朋友可以參考一下,或也可以自己架開源版本的 LaunchKit。",
            "createdAt": 1506304800,
            "id": 100006,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/Fvr8lXX",
            "randomKey": 0.3931693686172366,
            "title": "saiday/JonSnow: App Store/Google Play review watcher, deliver new reviews to slack channel",
            "type": "Link",
            "url": "http://link.codetengu.com/Fvr8lXX"
        },
        {
            "categoryCode": "saiday",
            "categoryName": "@saiday",
            "contentHTML": "<p>我最一開始是用 Atom 裝 <a href=\"http://link.codetengu.com/YSGOkBZ\">go-plus</a> 寫 Go,設定起來真的是快。</p>\n\n<p>但我的工作主要還是寫 iOS 跟 Android,很少有機會用 Atom,容易忘記快速鍵是我個人的問題我坦然接受,只不過 Atom 身為 <a href=\"http://link.codetengu.com/EO2gaJ1\">Electron</a> 陣營的知名代言人,當然也提供了那令人絕望的啟動速度跟大量資源使用。</p>\n\n<p>總之,目前是改用 Go 社群都很推崇的 <a href=\"http://link.codetengu.com/RuOzCzN\">vim-go</a>,這篇是 vim-go 作者寫的教學,寫得真的好,除了基本的設定,還涵蓋了很多 Go tools 的介紹。</p>\n\n<p>註:升級了 Vim 8,這個版本有官方自帶的 <a href=\"http://link.codetengu.com/tSLZYuW\">package manager</a>,終於!</p>",
            "contentText": "我最一開始是用 Atom 裝 go-plus 寫 Go,設定起來真的是快。\n\n但我的工作主要還是寫 iOS 跟 Android,很少有機會用 Atom,容易忘記快速鍵是我個人的問題我坦然接受,只不過 Atom 身為 Electron 陣營的知名代言人,當然也提供了那令人絕望的啟動速度跟大量資源使用。\n\n總之,目前是改用 Go 社群都很推崇的 vim-go,這篇是 vim-go 作者寫的教學,寫得真的好,除了基本的設定,還涵蓋了很多 Go tools 的介紹。\n\n註:升級了 Vim 8,這個版本有官方自帶的 package manager,終於!",
            "createdAt": 1506304800,
            "id": 100007,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/c5w8xAN",
            "randomKey": 0.8236562486272305,
            "title": "fatih/vim-go-tutorial: Tutorial for vim-go",
            "type": "Link",
            "url": "http://link.codetengu.com/c5w8xAN"
        },
        {
            "categoryCode": "saiday",
            "categoryName": "@saiday",
            "contentHTML": "<p>Android 8.0 (API level 26)  加入了一個新特性,<a href=\"http://link.codetengu.com/5toZuug\">Background Execution Limits</a> 值得大家注意,限縮 app 背景執行的能力。</p>\n\n<p>這個限制主要是 Service 超過一定時間會被強制關掉、不能再註冊一些系統 Broadcast。</p>\n\n<p>也就是說,target SDK > 26 之後,你不能有把握那些需要花時間的 Service 可以活著把事情做完。\n這篇分析了替代的方案的使用情境:</p>\n\n<ul>\n<li>Job Scheduler</li>\n<li>FCM High Priority Notification</li>\n<li>Foreground Service</li>\n</ul>\n\n\n<p>至於系統的 Broadcast 我沒在用沒有很熟,但看起來是寫在 Manifest 的 implicit broadcasts 有許多會失效,必須改用動態註冊。</p>",
            "contentText": "Android 8.0 (API level 26)  加入了一個新特性,Background Execution Limits 值得大家注意,限縮 app 背景執行的能力。\n\n這個限制主要是 Service 超過一定時間會被強制關掉、不能再註冊一些系統 Broadcast。\n\n也就是說,target SDK > 26 之後,你不能有把握那些需要花時間的 Service 可以活著把事情做完。\n這篇分析了替代的方案的使用情境:\n\n\nJob Scheduler\nFCM High Priority Notification\nForeground Service\n\n\n\n至於系統的 Broadcast 我沒在用沒有很熟,但看起來是寫在 Manifest 的 implicit broadcasts 有許多會失效,必須改用動態註冊。",
            "createdAt": 1506304800,
            "id": 100008,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/gRoAlzl",
            "randomKey": 0.7554352874867618,
            "title": "Exploring Background Execution Limits on Android Oreo",
            "type": "Link",
            "url": "http://link.codetengu.com/gRoAlzl"
        },
        {
            "categoryCode": "saiday",
            "categoryName": "@saiday",
            "contentHTML": "<p>有一台上有 notch、下有 home indicator 的機子要在 11 月上市了,曾幾何時多裝置的 layout 配適也成為 iOS 開發生態的重要部分了。</p>\n\n<p>這篇很完整的介紹了 layout 要調整的地方,該注意的設計。</p>\n\n<p>註:開發者對 iPhone X 的特殊造型分成兩派意見,第一派很有愛的要完美適應 iPhone X、另一派打算當作沒看到這件事 <a href=\"http://link.codetengu.com/lLWlmgX\">NotchKit</a>。</p>",
            "contentText": "有一台上有 notch、下有 home indicator 的機子要在 11 月上市了,曾幾何時多裝置的 layout 配適也成為 iOS 開發生態的重要部分了。\n\n這篇很完整的介紹了 layout 要調整的地方,該注意的設計。\n\n註:開發者對 iPhone X 的特殊造型分成兩派意見,第一派很有愛的要完美適應 iPhone X、另一派打算當作沒看到這件事 NotchKit。",
            "createdAt": 1506304800,
            "id": 100009,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/loSNmPg",
            "randomKey": 0.6832343295682222,
            "title": "Supporting iPhone X",
            "type": "Link",
            "url": "http://link.codetengu.com/loSNmPg"
        },
        {
            "categoryCode": "fukuball",
            "categoryName": "@fukuball",
            "contentHTML": "<p>之前聽了李弘毅老師的 DL 課程,覺得真的是淺顯易懂又生動有趣,上網想再搜搜有沒有更多的線上資源,沒想到胡亂找到了一系列有趣的文章 - 写给妹子的深度学习教程,作者使用對話式的方式、細心的口吻寫下教妹子的深度學習課程,我也好想要有人這麼細心的教我呢!</p>",
            "contentText": "之前聽了李弘毅老師的 DL 課程,覺得真的是淺顯易懂又生動有趣,上網想再搜搜有沒有更多的線上資源,沒想到胡亂找到了一系列有趣的文章 - 写给妹子的深度学习教程,作者使用對話式的方式、細心的口吻寫下教妹子的深度學習課程,我也好想要有人這麼細心的教我呢!",
            "createdAt": 1506304800,
            "id": 100010,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/7aJz7y1",
            "randomKey": 0.806560704484582,
            "title": "写给妹子的深度学习教程",
            "type": "Link",
            "url": "http://link.codetengu.com/7aJz7y1"
        },
        {
            "categoryCode": "mingderwang",
            "categoryName": "@mingderwang",
            "contentHTML": "<p><a href=\"http://link.codetengu.com/fGlHPJn\">yeoman</a> 用煩了嗎,可以試試 <a href=\"http://link.codetengu.com/ASXY5SD\">sao</a>。\n<a href=\"http://link.codetengu.com/oEbgMCE\">npm</a> 太慢了嗎,可以改用 <a href=\"http://link.codetengu.com/PX9gZAz\">yarn</a>。</p>\n\n<p><a href=\"http://link.codetengu.com/vqFfDdg\">Docker</a> 不再是 buzzword 了,開始進一步使用 <a href=\"http://link.codetengu.com/n1B4rFM\">Docker Compose</a> 或直接跳 production 等級的 <a href=\"http://link.codetengu.com/eLrsIe3\">k8s</a>。\n<a href=\"http://link.codetengu.com/ikbsL\">docker playground</a>,免費的 Docker pools 可以拿來建 <a href=\"http://link.codetengu.com/I7NYTxL\">Docker Swarm</a>。<a href=\"http://link.codetengu.com/L2xGqWW\">kubernetes playground</a> 免費的 k8s 學習環境,但不知道還能免費用多久。</p>\n\n<p><a href=\"http://link.codetengu.com/nVbIzHP\">RESTful</a> 也有點過時,新的 project 開始使用 <a href=\"http://link.codetengu.com/kjGdV69\">GraphQL</a> 吧。連 <a href=\"http://link.codetengu.com/GmG7nwZ\">Github API v4</a> 都改用 graphQL,不要猶豫了。</p>\n\n<p><a href=\"http://link.codetengu.com/OiE4j9Q\">Monolithic</a> 的程式不合時宜了,建議開始研究 <a href=\"http://link.codetengu.com/u3IU6m3\">Microservices</a>。</p>",
            "contentText": "yeoman 用煩了嗎,可以試試 sao。\nnpm 太慢了嗎,可以改用 yarn。\n\nDocker 不再是 buzzword 了,開始進一步使用 Docker Compose 或直接跳 production 等級的 k8s。\ndocker playground,免費的 Docker pools 可以拿來建 Docker Swarm。kubernetes playground 免費的 k8s 學習環境,但不知道還能免費用多久。\n\nRESTful 也有點過時,新的 project 開始使用 GraphQL 吧。連 Github API v4 都改用 graphQL,不要猶豫了。\n\nMonolithic 的程式不合時宜了,建議開始研究 Microservices。",
            "createdAt": 1506304800,
            "id": 100011,
            "issueNumber": 100,
            "permalink": "https://weekly.codetengu.com/issues/100#t-324551",
            "randomKey": 0.2688599959947169,
            "title": "不要猶豫了",
            "type": "Text",
            "url": "https://weekly.codetengu.com/issues/100#t-324551"
        },
        {
            "categoryCode": "mingderwang",
            "categoryName": "@mingderwang",
            "contentHTML": "<p>你還在用 ifconfig 跟 netstat 等 Linux 網路指令嗎?iproute2 收集了一些新的指令將用來取代掉他們。例如 ifconfig 將用 ip a 來取代,netstat 將被 ss 所取代。這篇文章做了很詳細的介紹且提供對照表供大家參考。</p>",
            "contentText": "你還在用 ifconfig 跟 netstat 等 Linux 網路指令嗎?iproute2 收集了一些新的指令將用來取代掉他們。例如 ifconfig 將用 ip a 來取代,netstat 將被 ss 所取代。這篇文章做了很詳細的介紹且提供對照表供大家參考。",
            "createdAt": 1506304800,
            "id": 100012,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/irXmjAt",
            "randomKey": 0.7652430462185293,
            "title": "Deprecated Linux networking commands and their replacements",
            "type": "Link",
            "url": "http://link.codetengu.com/irXmjAt"
        },
        {
            "categoryCode": "mingderwang",
            "categoryName": "@mingderwang",
            "contentHTML": "<p>雖然我不是完全贊同他的講法,但分析 DevOps 的失敗原因,的確可以當成我們的借鏡。其實大部分公司都還在摸索中,自動化也可能只做一半,文化也還無法ㄧ下轉變過來,現在應該還不是評估成敗的時候。我反而覺得整個過程中,只要軟體開發流程能更自動化,軟體品質能更提升,工作得更愉快,DevOps 所做的所有努力,都是是值得的。</p>",
            "contentText": "雖然我不是完全贊同他的講法,但分析 DevOps 的失敗原因,的確可以當成我們的借鏡。其實大部分公司都還在摸索中,自動化也可能只做一半,文化也還無法ㄧ下轉變過來,現在應該還不是評估成敗的時候。我反而覺得整個過程中,只要軟體開發流程能更自動化,軟體品質能更提升,工作得更愉快,DevOps 所做的所有努力,都是是值得的。",
            "createdAt": 1506304800,
            "id": 100013,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/mrToFIy",
            "randomKey": 0.8692205618135631,
            "title": "Oops: Why DevOps efforts fail",
            "type": "Link",
            "url": "http://link.codetengu.com/mrToFIy"
        },
        {
            "categoryCode": "mingderwang",
            "categoryName": "@mingderwang",
            "contentHTML": "<p>EIP 是 Ethereum Improvement Proposals 的縮寫。本文章作者 NIC Lin,對以太坊分岔鎖所包含的改進建議項目,做了非常詳細的比對和說明。對 Ethereum 核心代碼有興趣的朋友,應該很喜歡這篇文章。</p>",
            "contentText": "EIP 是 Ethereum Improvement Proposals 的縮寫。本文章作者 NIC Lin,對以太坊分岔鎖所包含的改進建議項目,做了非常詳細的比對和說明。對 Ethereum 核心代碼有興趣的朋友,應該很喜歡這篇文章。",
            "createdAt": 1506304800,
            "id": 100014,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/fA89wyy",
            "randomKey": 0.8972015636973083,
            "title": "以太坊下一階段硬分叉內容簡介",
            "type": "Link",
            "url": "http://link.codetengu.com/fA89wyy"
        },
        {
            "categoryCode": "mingderwang",
            "categoryName": "@mingderwang",
            "contentHTML": "<p>寫程式一定要用螢幕嗎?未來真的都只剩機器人,連教小孩寫程式也用 bot 了。在這紀念專輯裡,跟大家介紹一種跟樂高相容的程式機器人叫 gobot。還可以先填寫預購意願問卷喔!</p>",
            "contentText": "寫程式一定要用螢幕嗎?未來真的都只剩機器人,連教小孩寫程式也用 bot 了。在這紀念專輯裡,跟大家介紹一種跟樂高相容的程式機器人叫 gobot。還可以先填寫預購意願問卷喔!",
            "createdAt": 1506304800,
            "id": 100015,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/6e8DgXj",
            "randomKey": 0.5821561377961189,
            "title": "Coding for Kids",
            "type": "Link",
            "url": "http://link.codetengu.com/6e8DgXj"
        },
        {
            "categoryCode": "kako0507",
            "categoryName": "@kako0507",
            "contentHTML": "<p>在 JavaScript 的世界有很多奇特的行爲:</p>\n\n<ul>\n<li>null > 0 --> false</li>\n<li>null == 0 --> false</li>\n<li>null >= 0 --> true</li>\n</ul>\n\n\n<p>好奇為什麼會造成這樣的結果的朋友可以翻閱 ECMAScript Spec :\n <a href=\"http://link.codetengu.com/lmKy9dh\">The Abstract Relational Comparison Algorithm</a></p>",
            "contentText": "在 JavaScript 的世界有很多奇特的行爲:\n\n\nnull > 0 --> false\nnull == 0 --> false\nnull >= 0 --> true\n\n\n\n好奇為什麼會造成這樣的結果的朋友可以翻閱 ECMAScript Spec :\n The Abstract Relational Comparison Algorithm",
            "createdAt": 1506304800,
            "id": 100016,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/sXXyXsA",
            "randomKey": 0.471194478450343,
            "title": "JavaScript : The Curious Case of Null >= 0",
            "type": "Link",
            "url": "http://link.codetengu.com/sXXyXsA"
        },
        {
            "categoryCode": "kako0507",
            "categoryName": "@kako0507",
            "contentHTML": "<p>這篇文章並不是要教大家不要去使用 if statement ,可以用這樣的模式嘗試 <a href=\"http://link.codetengu.com/Eh5zaXx\">Code as data</a> ,讓 code 更有可讀性外,也能讓程式邏輯在執行時更新。</p>",
            "contentText": "這篇文章並不是要教大家不要去使用 if statement ,可以用這樣的模式嘗試 Code as data ,讓 code 更有可讀性外,也能讓程式邏輯在執行時更新。",
            "createdAt": 1506304800,
            "id": 100017,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/zrfXwIZ",
            "randomKey": 0.3925828211940825,
            "title": "Coding Tip: Try to Code Without If-statements",
            "type": "Link",
            "url": "http://link.codetengu.com/zrfXwIZ"
        },
        {
            "categoryCode": "kako0507",
            "categoryName": "@kako0507",
            "contentHTML": "<p>JavaScript  V8 engine 在 v5.8 以前, Compiler 的運作流程以及最佳化方式:</p>\n\n<ul>\n<li>分為兩種 Compiler - full-codegen (負責較快速的編譯成 machine code) 以及 Crankshaft (JIT compiler , 負責最佳化)</li>\n<li>不同的 threads 分別負責編譯執行、最佳化、 profiling 及 GC</li>\n</ul>\n\n\n<p>文內會依照 V8 的最佳化流程來解說如何寫較佳的程式碼。</p>",
            "contentText": "JavaScript  V8 engine 在 v5.8 以前, Compiler 的運作流程以及最佳化方式:\n\n\n分為兩種 Compiler - full-codegen (負責較快速的編譯成 machine code) 以及 Crankshaft (JIT compiler , 負責最佳化)\n不同的 threads 分別負責編譯執行、最佳化、 profiling 及 GC\n\n\n\n文內會依照 V8 的最佳化流程來解說如何寫較佳的程式碼。",
            "createdAt": 1506304800,
            "id": 100018,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/DPtHUQH",
            "randomKey": 0.16283905692398548,
            "title": "How JavaScript works: inside the V8 engine ",
            "type": "Link",
            "url": "http://link.codetengu.com/DPtHUQH"
        },
        {
            "categoryCode": "hiroshiyui",
            "categoryName": "@hiroshiyui",
            "contentHTML": "<p>現在講 Web 開發時若提到 Ruby,不同人會有不同的印象,而且幾乎很極端。有些人會說它語法優美,有些人則說它動態特性下的黑魔法殺人一萬,自損三千;有些人說它語法表現能力強、開發效率高,有些人說以它為基礎的某些框架太笨重、以致執行效能低。其中「效能」似乎是 Ruby 的最大一宗罪,如過街老鼠般人人喊打,但是當我們談到「效能」時,我們以為的「效能」是什麼?</p>\n\n<p>這篇文並不全然是為 Ruby (&amp; Rails) 辯解、護航文,其中帶過很多關於「效能」、關於「效能評測的設計」、關於「人對『快慢』的體驗感受」的探討,作者提醒讀者,當您們看了(卻未加深究的)某篇評測文,就想把手上的 Rails 專案砍掉重練,用個號稱更快、更有效率的語言、框架重寫的時候,請先評估這幾點:</p>\n\n<ol>\n<li>換得的效能有實際意義嗎?</li>\n<li>真的有打對痛處嗎?</li>\n<li>換個陌生的新語言、框架,您們開發起來會更有生產力、更快樂嗎?</li>\n</ol>",
            "contentText": "現在講 Web 開發時若提到 Ruby,不同人會有不同的印象,而且幾乎很極端。有些人會說它語法優美,有些人則說它動態特性下的黑魔法殺人一萬,自損三千;有些人說它語法表現能力強、開發效率高,有些人說以它為基礎的某些框架太笨重、以致執行效能低。其中「效能」似乎是 Ruby 的最大一宗罪,如過街老鼠般人人喊打,但是當我們談到「效能」時,我們以為的「效能」是什麼?\n\n這篇文並不全然是為 Ruby (&amp; Rails) 辯解、護航文,其中帶過很多關於「效能」、關於「效能評測的設計」、關於「人對『快慢』的體驗感受」的探討,作者提醒讀者,當您們看了(卻未加深究的)某篇評測文,就想把手上的 Rails 專案砍掉重練,用個號稱更快、更有效率的語言、框架重寫的時候,請先評估這幾點:\n\n\n換得的效能有實際意義嗎?\n真的有打對痛處嗎?\n換個陌生的新語言、框架,您們開發起來會更有生產力、更快樂嗎?\n",
            "createdAt": 1506304800,
            "id": 100019,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/6kayE14",
            "randomKey": 0.9664137191139162,
            "title": "Is Ruby Too Slow For Web-Scale?",
            "type": "Link",
            "url": "http://link.codetengu.com/6kayE14"
        },
        {
            "categoryCode": "hiroshiyui",
            "categoryName": "@hiroshiyui",
            "contentHTML": "<p>另一篇「效能」文。主要講的觀念是「Java 與 Node 的運作方式不同,請不要用無法<strong>公平</strong>比較兩者能力的評測方式,斷然給予任一方正面或負面評價」、「對『效能』的計較,在產品開發過程中,並不是至高無上的最優先項目,當效能並非痛點時,還有很多像是『開發效率』等面向值得關注」與前一篇文在觀念上有些重疊之處,針對 Java 與 Node 處理多工的技術探討、掃盲之處,也值得一讀。</p>",
            "contentText": "另一篇「效能」文。主要講的觀念是「Java 與 Node 的運作方式不同,請不要用無法公平比較兩者能力的評測方式,斷然給予任一方正面或負面評價」、「對『效能』的計較,在產品開發過程中,並不是至高無上的最優先項目,當效能並非痛點時,還有很多像是『開發效率』等面向值得關注」與前一篇文在觀念上有些重疊之處,針對 Java 與 Node 處理多工的技術探討、掃盲之處,也值得一讀。",
            "createdAt": 1506304800,
            "id": 100020,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/sd5Go1u",
            "randomKey": 0.23942924290895462,
            "title": "Richard Clayton - Speaking Intelligently about \"Java vs Node\" Performance",
            "type": "Link",
            "url": "http://link.codetengu.com/sd5Go1u"
        },
        {
            "categoryCode": "hiroshiyui",
            "categoryName": "@hiroshiyui",
            "contentHTML": "<p>作者處理部署 Elixir / Phoenix 應用的心得,看的出來是歷經很多次踩雷而累積下來的寶貴實務經驗,很值得參考。</p>",
            "contentText": "作者處理部署 Elixir / Phoenix 應用的心得,看的出來是歷經很多次踩雷而累積下來的寶貴實務經驗,很值得參考。",
            "createdAt": 1506304800,
            "id": 100021,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/AvuE3pP",
            "randomKey": 0.11050662863999605,
            "title": "State of the art in deploying Elixir / Phoenix applications",
            "type": "Link",
            "url": "http://link.codetengu.com/AvuE3pP"
        },
        {
            "categoryCode": "uranusjr",
            "categoryName": "@uranusjr",
            "contentHTML": "<p>其實停刊一個月我都在打混怎麼辦,只好用自己的東西填版面趁機自肥。上一期結束後就跑去馬來西亞參加了 PyCon APAC 2017,講了這樣的一個 talk。</p>\n\n<p>大家都說 Python 很簡單很容易學,身為 Python developers 覺得競爭對手到處都是怎麼辦市場要供過於求,需要趕快證明一下自己還是有點優勢,懂一些別人不知道的,你看看 Python 其實還是不簡單啊<del>請給我黃金</del>。</p>\n\n<p>「可是這樣大家不就都會了你哪來的優勢。」啊糟糕⋯⋯。</p>",
            "contentText": "其實停刊一個月我都在打混怎麼辦,只好用自己的東西填版面趁機自肥。上一期結束後就跑去馬來西亞參加了 PyCon APAC 2017,講了這樣的一個 talk。\n\n大家都說 Python 很簡單很容易學,身為 Python developers 覺得競爭對手到處都是怎麼辦市場要供過於求,需要趕快證明一下自己還是有點優勢,懂一些別人不知道的,你看看 Python 其實還是不簡單啊請給我黃金。\n\n「可是這樣大家不就都會了你哪來的優勢。」啊糟糕⋯⋯。",
            "createdAt": 1506304800,
            "id": 100022,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/hLbcLtv",
            "randomKey": 0.4557103884872049,
            "title": "The Python You Don’t Know",
            "type": "Link",
            "url": "http://link.codetengu.com/hLbcLtv"
        },
        {
            "categoryCode": "kkdai",
            "categoryName": "@kkdai",
            "contentHTML": "<p>Bloom Filter 是在許多資料庫裡面與作為資料快速索引的時候,會使用到的資料結構。但是究竟為什麼要使用,還有使用了 Bloom Filter 會有哪些好處與需要取捨的部分。並且為何有些人會使用 Counting Filter?</p>\n\n<p>最近在讀 Quotient Filter 於是乎把 Cuckoo Filter 跟之前的 Bloom Filter 都複習一下.. 順便把整個優缺點稍微整理一下。</p>",
            "contentText": "Bloom Filter 是在許多資料庫裡面與作為資料快速索引的時候,會使用到的資料結構。但是究竟為什麼要使用,還有使用了 Bloom Filter 會有哪些好處與需要取捨的部分。並且為何有些人會使用 Counting Filter?\n\n最近在讀 Quotient Filter 於是乎把 Cuckoo Filter 跟之前的 Bloom Filter 都複習一下.. 順便把整個優缺點稍微整理一下。",
            "createdAt": 1506304800,
            "id": 100023,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/gNdhnCu",
            "randomKey": 0.3687486450653523,
            "title": "深入討論 Bloom Filter",
            "type": "Link",
            "url": "http://link.codetengu.com/gNdhnCu"
        },
        {
            "categoryCode": "kkdai",
            "categoryName": "@kkdai",
            "contentHTML": "<p>在台灣使用 Go 的公司沒有很多,希望有一篇可以整理有在使用 Go 語言的新創或者是學校,也是希望給想找 Go 語言工作的開發者一些求職方向。</p>\n\n<p>同場加映,如果要貼 Golang 職缺的話,歡迎在<a href=\"http://link.codetengu.com/aEQHQWv\">這裡張貼</a>喔。</p>",
            "contentText": "在台灣使用 Go 的公司沒有很多,希望有一篇可以整理有在使用 Go 語言的新創或者是學校,也是希望給想找 Go 語言工作的開發者一些求職方向。\n\n同場加映,如果要貼 Golang 職缺的話,歡迎在這裡張貼喔。",
            "createdAt": 1506304800,
            "id": 100024,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/yp3WNpO",
            "randomKey": 0.5778214992024004,
            "title": "台灣使用 Go 語言的公司",
            "type": "Link",
            "url": "http://link.codetengu.com/yp3WNpO"
        },
        {
            "categoryCode": "kkdai",
            "categoryName": "@kkdai",
            "contentHTML": "<p>Go 最大的好處就是沒有太多相依性可以很方便的部屬你的應用程式,但是如果應用程式沒有處理好,就會在 Panic 的時候洩漏你的 call stack。</p>\n\n<p>該如何解決這個問題,這篇文章介紹了可以透過 go build parameter 與一些手法來做一些防範喔。</p>",
            "contentText": "Go 最大的好處就是沒有太多相依性可以很方便的部屬你的應用程式,但是如果應用程式沒有處理好,就會在 Panic 的時候洩漏你的 call stack。\n\n該如何解決這個問題,這篇文章介紹了可以透過 go build parameter 與一些手法來做一些防範喔。",
            "createdAt": 1506304800,
            "id": 100025,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/ee7Jt8n",
            "randomKey": 0.19287607702426612,
            "title": "Golang 二进制文件混淆保护",
            "type": "Link",
            "url": "http://link.codetengu.com/ee7Jt8n"
        },
        {
            "categoryCode": "johnlinvc",
            "categoryName": "@johnlinvc",
            "contentHTML": "<p>這裡的速度不是輸出,而是輸入。芬蘭的一位視障開發者分享了用螢幕閱讀器在每分鐘 450 個單字的速度下讀程式碼的心得。文內有附範例聲音檔,大家可以挑戰看看能聽懂多少。</p>",
            "contentText": "這裡的速度不是輸出,而是輸入。芬蘭的一位視障開發者分享了用螢幕閱讀器在每分鐘 450 個單字的速度下讀程式碼的心得。文內有附範例聲音檔,大家可以挑戰看看能聽懂多少。",
            "createdAt": 1506304800,
            "id": 100026,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/BhfKqFy",
            "randomKey": 0.05582147091627121,
            "title": "每分鐘 450 個字的程式開發",
            "type": "Link",
            "url": "http://link.codetengu.com/BhfKqFy"
        },
        {
            "categoryCode": "johnlinvc",
            "categoryName": "@johnlinvc",
            "contentHTML": "<p>上週去參加了日本社群辦的 iOSDC 。有很多有趣的內容,想看投影片的話可以去每個 speaker 的 Twitter 找找。<a href=\"http://link.codetengu.com/2Mbh23U\">台灣的 iOSDC</a> 也正在籌備中,預計 2018 一月舉辦 。</p>",
            "contentText": "上週去參加了日本社群辦的 iOSDC 。有很多有趣的內容,想看投影片的話可以去每個 speaker 的 Twitter 找找。台灣的 iOSDC 也正在籌備中,預計 2018 一月舉辦 。",
            "createdAt": 1506304800,
            "id": 100027,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/ysFsVpS",
            "randomKey": 0.9514354388229549,
            "title": "iOSDC Japan 2017",
            "type": "Link",
            "url": "http://link.codetengu.com/ysFsVpS"
        },
        {
            "categoryCode": "johnlinvc",
            "categoryName": "@johnlinvc",
            "contentHTML": "<p>上週也去了 2017 年的 RubyKaigi ,是 Ruby 界比較特別的研討會。比起怎麼用 Ruby,更專注於怎麼樣 Ruby 變得更好。去年也有在那<a href=\"http://link.codetengu.com/FS1qrtk\">分享過</a>在 Erlang 上跑的實驗版 Ruby, <a href=\"http://link.codetengu.com/R22w0oM\">ErRuby</a>。</p>",
            "contentText": "上週也去了 2017 年的 RubyKaigi ,是 Ruby 界比較特別的研討會。比起怎麼用 Ruby,更專注於怎麼樣 Ruby 變得更好。去年也有在那分享過在 Erlang 上跑的實驗版 Ruby, ErRuby。",
            "createdAt": 1506304800,
            "id": 100028,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/v7SnvPT",
            "randomKey": 0.4777654493227601,
            "title": "RubyKaigi 2017",
            "type": "Link",
            "url": "http://link.codetengu.com/v7SnvPT"
        },
        {
            "categoryCode": "johnlinvc",
            "categoryName": "@johnlinvc",
            "contentHTML": "<p>去了一些國內外的研討會,深深體會到在研討會除了學新東西之外,交新朋友也是很重要的。<a href=\"http://link.codetengu.com/qWXASKV\">@ericholscher</a> 提出了很實用的聊天原則,圍成一圈聊天的時候,永遠留一個開口,就像小精靈(Pac-Man) 一樣。這樣可以很明顯的讓其他人知道這邊的討論是歡迎任何人參加的。</p>",
            "contentText": "去了一些國內外的研討會,深深體會到在研討會除了學新東西之外,交新朋友也是很重要的。@ericholscher 提出了很實用的聊天原則,圍成一圈聊天的時候,永遠留一個開口,就像小精靈(Pac-Man) 一樣。這樣可以很明顯的讓其他人知道這邊的討論是歡迎任何人參加的。",
            "createdAt": 1506304800,
            "id": 100029,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/E8MkNdS",
            "randomKey": 0.6147749945521355,
            "title": "研討會的小精靈法則",
            "type": "Link",
            "url": "http://link.codetengu.com/E8MkNdS"
        },
        {
            "categoryCode": "drumrick",
            "categoryName": "@drumrick",
            "contentHTML": "<p>首期參加 CodeTengu Weekly 就遇到 100 期這樣吉利的數字,自己內心興奮不已。所以就用一篇網誌,說說自己,說說碼天狗週刊。未來在週刊中我主要會分享機器學習以及 Kaggle 相關的文章,希望會有幫助,也歡迎指教。</p>",
            "contentText": "首期參加 CodeTengu Weekly 就遇到 100 期這樣吉利的數字,自己內心興奮不已。所以就用一篇網誌,說說自己,說說碼天狗週刊。未來在週刊中我主要會分享機器學習以及 Kaggle 相關的文章,希望會有幫助,也歡迎指教。",
            "createdAt": 1506304800,
            "id": 100030,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/KoviY6w",
            "randomKey": 0.3953879058826715,
            "title": "CodeTengu 第 100 期,前 99 期總回顧!",
            "type": "Link",
            "url": "http://link.codetengu.com/KoviY6w"
        },
        {
            "categoryCode": "drumrick",
            "categoryName": "@drumrick",
            "contentHTML": "<p>這是我個人近年來,在機器學習領域,最喜愛的繁中網誌了。不走長篇大論的風格,也是以分享為主,用簡短的摘要說出文章重點,搭配收集好的相關資源。</p>\n\n<p>另一個重點是很跟得上時代,基本上外國研究出來沒多久,只要主題是在他們關注的範圍,很快就發文了。尤其在重要研討會前後,天天都很熱鬧。</p>",
            "contentText": "這是我個人近年來,在機器學習領域,最喜愛的繁中網誌了。不走長篇大論的風格,也是以分享為主,用簡短的摘要說出文章重點,搭配收集好的相關資源。\n\n另一個重點是很跟得上時代,基本上外國研究出來沒多久,只要主題是在他們關注的範圍,很快就發文了。尤其在重要研討會前後,天天都很熱鬧。",
            "createdAt": 1506304800,
            "id": 100031,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/Whi3u5D",
            "randomKey": 0.9740708286408335,
            "title": "Learning by Hacking 網誌",
            "type": "Link",
            "url": "http://link.codetengu.com/Whi3u5D"
        },
        {
            "categoryCode": "drumrick",
            "categoryName": "@drumrick",
            "contentHTML": "<p>提到 Kaggle 相關資源,第一個要推薦的就是官方網誌了。</p>\n\n<p>有參加 Kaggle 經驗的人都知道,由於社群特色以及 Kaggle 官方的鼓勵,從競賽的 Kernels 以及討論區,能夠學到很多東西。其實競賽類型滿常重複的,譬如說房價預測就出現過很多次,廣告點擊的競賽也出現過很多次,圖像方面競賽關於物件的偵測或辨認也是常有,regression  或是 classification 就更多了。</p>\n\n<p>Kaggle 官方網誌會從競賽中挑選出優質的 Kernels,也會定期發表對於優勝選手的採訪,大家可以從中去挖掘過去類似競賽優勝的訪談,相信對參加各種類型的競賽都會有一定的幫助。</p>",
            "contentText": "提到 Kaggle 相關資源,第一個要推薦的就是官方網誌了。\n\n有參加 Kaggle 經驗的人都知道,由於社群特色以及 Kaggle 官方的鼓勵,從競賽的 Kernels 以及討論區,能夠學到很多東西。其實競賽類型滿常重複的,譬如說房價預測就出現過很多次,廣告點擊的競賽也出現過很多次,圖像方面競賽關於物件的偵測或辨認也是常有,regression  或是 classification 就更多了。\n\nKaggle 官方網誌會從競賽中挑選出優質的 Kernels,也會定期發表對於優勝選手的採訪,大家可以從中去挖掘過去類似競賽優勝的訪談,相信對參加各種類型的競賽都會有一定的幫助。",
            "createdAt": 1506304800,
            "id": 100032,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/rdS35P9",
            "randomKey": 0.10689198039472103,
            "title": "Kaggle 官方網誌 No Free Hunch",
            "type": "Link",
            "url": "http://link.codetengu.com/rdS35P9"
        },
        {
            "categoryCode": "drumrick",
            "categoryName": "@drumrick",
            "contentHTML": "<p><a href=\"http://link.codetengu.com/pxn5RmE\">zhuanlan.zhihu.com</a></p>\n\n<p>Hinton 的 Capsule Theory 最早在 <a href=\"http://link.codetengu.com/EGsBBrH\">Transforming Auto-encoders</a> 這篇論文出現,近半年 Hinton 在多倫多大學、麻省理工學院的演講,也都還會用到這篇論文裡面的圖。 2013 年 Hinton 進了 Google,直到 2014 年在 reddit 的 <a href=\"http://link.codetengu.com/WWgT3k3\">AMA (ask me anything)系列</a>中依舊表示自己在 Google Brain 主要還是研究 Capsule Theory,還沒有發表的原因是因為,他自己還不滿意。而前一陣子,Andrew Ng 離開百度以後,弄了個 <a href=\"http://link.codetengu.com/7pDbpJf\">deeplearning.ai</a>,在 Coursera 上面的課程裡,有一部份就是採訪深度學習的大神們,當然其中也包含 Hinton,Hinton 在採訪中也談到了 Capsule,還表示投稿被拒絕過。而最近顯然有了好消息,<a href=\"http://link.codetengu.com/48AmHz8\">Research@Google 的網頁</a>已經刊登 Hinton 關於 Capsule Theory 最新的論文:「Dynamic Routing between Capsules」即將在 <a href=\"http://link.codetengu.com/B47e1an\">NIPS2017</a> 發表。</p>\n\n<p>最近不知道是因為論文被接受了,還是因為 Hinton 被<a href=\"http://link.codetengu.com/kkPvYKv\">採訪</a>了,還是因為<a href=\"http://link.codetengu.com/Y2Mke06\">李飛飛教授聲援</a>了。這件事在中國機器學習界整個火了,各大網路科技媒體都有人在提,由於<a href=\"http://link.codetengu.com/cwBo61S\">機器之心的文章</a>破圖了,所以推薦了這篇。</p>\n\n<p>這篇前段先講講 NN 的發展史,從 Gradient Descent 講到 RBM,再到 unsupervised learning,再回頭說 NN 近年來研究的停滯以及 BP 的優勢。中段開始解釋 Capsule Theory 相關知識,拿 CNN 不足的地方對比 Capsule 的概念。</p>",
            "contentText": "zhuanlan.zhihu.com\n\nHinton 的 Capsule Theory 最早在 Transforming Auto-encoders 這篇論文出現,近半年 Hinton 在多倫多大學、麻省理工學院的演講,也都還會用到這篇論文裡面的圖。 2013 年 Hinton 進了 Google,直到 2014 年在 reddit 的 AMA (ask me anything)系列中依舊表示自己在 Google Brain 主要還是研究 Capsule Theory,還沒有發表的原因是因為,他自己還不滿意。而前一陣子,Andrew Ng 離開百度以後,弄了個 deeplearning.ai,在 Coursera 上面的課程裡,有一部份就是採訪深度學習的大神們,當然其中也包含 Hinton,Hinton 在採訪中也談到了 Capsule,還表示投稿被拒絕過。而最近顯然有了好消息,Research@Google 的網頁已經刊登 Hinton 關於 Capsule Theory 最新的論文:「Dynamic Routing between Capsules」即將在 NIPS2017 發表。\n\n最近不知道是因為論文被接受了,還是因為 Hinton 被採訪了,還是因為李飛飛教授聲援了。這件事在中國機器學習界整個火了,各大網路科技媒體都有人在提,由於機器之心的文章破圖了,所以推薦了這篇。\n\n這篇前段先講講 NN 的發展史,從 Gradient Descent 講到 RBM,再到 unsupervised learning,再回頭說 NN 近年來研究的停滯以及 BP 的優勢。中段開始解釋 Capsule Theory 相關知識,拿 CNN 不足的地方對比 Capsule 的概念。",
            "createdAt": 1506304800,
            "id": 100033,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/sdfrMTs",
            "randomKey": 0.22278579301200807,
            "title": "浅析 Hinton 最近提出的 Capsule 计划",
            "type": "Link",
            "url": "http://link.codetengu.com/sdfrMTs"
        },
        {
            "categoryCode": "wancw",
            "categoryName": "@wancw",
            "contentHTML": "<p>雖然 <a href=\"http://link.codetengu.com/A1OvYkR\">KKTV</a> 的 API 踩過一些 AWS API Gateway + Lambda 的坑,最後選擇改回自己管理 server;但當時和同事們也想過:放棄慣用的架構、調整為 event driven 或許會更適合。</p>\n\n<p>這篇文章給了這種方式的基礎情境範例和初期會遇到的挑戰,滿適合做為嘗試這種新架構時的開胃菜。</p>",
            "contentText": "雖然 KKTV 的 API 踩過一些 AWS API Gateway + Lambda 的坑,最後選擇改回自己管理 server;但當時和同事們也想過:放棄慣用的架構、調整為 event driven 或許會更適合。\n\n這篇文章給了這種方式的基礎情境範例和初期會遇到的挑戰,滿適合做為嘗試這種新架構時的開胃菜。",
            "createdAt": 1506304800,
            "id": 100034,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/KfKhAD4",
            "randomKey": 0.7225191213656217,
            "title": "Serverless Event Sourcing at Nordstrom",
            "type": "Link",
            "url": "http://link.codetengu.com/KfKhAD4"
        },
        {
            "categoryCode": "wancw",
            "categoryName": "@wancw",
            "contentHTML": "<p>近來開始覺得 Scrum 是心法大於招式的開發流程方法,每個團隊都會有各自的招式變化。</p>\n\n<p>先不論到底是不是「正規的」Scrum,能夠趨向敏捷、持續改進才是真正要緊的。有時參考別的團隊的作法來截長補短也是蠻有幫助的。</p>",
            "contentText": "近來開始覺得 Scrum 是心法大於招式的開發流程方法,每個團隊都會有各自的招式變化。\n\n先不論到底是不是「正規的」Scrum,能夠趨向敏捷、持續改進才是真正要緊的。有時參考別的團隊的作法來截長補短也是蠻有幫助的。",
            "createdAt": 1506304800,
            "id": 100035,
            "issueNumber": 100,
            "permalink": "http://link.codetengu.com/rDfdfM2",
            "randomKey": 0.07743786973878741,
            "title": "[SCRUM] 那些年我們一起搞的回顧會議",
            "type": "Link",
            "url": "http://link.codetengu.com/rDfdfM2"
        }
    ],
    "publication": "CodeTengu Weekly",
    "publishedAt": 1506304800,
    "randomKey": 0.2950752121396363,
    "summary": "本期內容涵蓋 Spark, Scala, Machine Learning, MySQL, Go, Android, DevOps, Ethereum, JavaScript, Ruby, Elixir, Scrum",
    "title": "The net is vast and infinite",
    "url": "https://weekly.codetengu.com/issues/100"
}
appleboy commented 6 years ago

@vinta 非常棒,這 API 太完整了。

kkdai commented 6 years ago

本來想做個 curator cli helper 來幫大家查查看之前有沒有 po 過.. 其實是我要用 不過發現裡面都是短網址 http://link.codetengu.com/ooxxoo
有沒有反查機制? 或是可以先查網址是否已經存在?

uranusjr commented 6 years ago

看起來至少 Curated 是沒有提供反查 API。也是合理啦是我也不會想開路讓使用者不通過我的服務,不然流量就很難管理了。目前想到的解法:

  1. 硬幹,自己(和以後每次存備份的時候)從縮址的 response header 拉回原本的網址,另外存成資料庫。
  2. 反向工程看看能不能找到那個短網址的 hashing 機制,查新網址的 hash 有沒有一樣就好(和密碼認證的道理差不多)。