Weekly-GitHub-Digest #57

Wesley
Weekly-GitHub-Digest
9 min readOct 4, 2018

--

2018/09/27–2018/10/03

Web — 網路本身高風險,請詳閱公開說明書

js13kGames 是一個每年都會固定舉辦的比賽,參賽者必須在 13 killobytes 的限制之內製作出一個可操作的 HTML5 遊戲,看看這段官方描述:“The competition started at 13:00 CEST, 13th August and ended at 13:00 CEST, 13th September 2018” 就知道他們對 13 這個數字有種莫名的執著呀。而 underrun 正是目前社群投票中的最高票,做為一款清版類型的射擊遊戲,裡頭用到的技巧也有相當高竿的應用。

phoboslab/underrun

由於工作緣故拿到了一個新款的 Mac 工作機,比起 2015 版本最大的改變可能就是背板的亮光蘋果消失 (變成鏡面,可以拿來照鏡子自我取暖),指紋開鎖 (嘿嘿搜集你的指紋給老大哥),鍵盤異常扁平 (就好像是一塊塊綠豆糕似的),還有那條號稱極端好用的 Touch bar。但已習慣實體鍵盤的觸感突然之間要轉換,是有點困難呀,像是要調整音量鍵或是亮度時硬是要去摸那條觸控條才能發出指令。但好在人類是可以變通的,上週終於發現 Touch Bar 的真正賣點。租屋不能養貓沒關係,可以玩彩虹貓呀,裝上 touchbar_nyancat 就可以盡情的把彩虹貓拉長縮短,配上舒壓的音樂實在是人間一大樂事。

avatsaev/touchbar_nyancat

Terminal — 已經是 iTerm 的形狀了呢

GitHub — nathanpeck/clui

過去曾經推坑過不少在 Terminal 介面下的顯示元件,等待回傳資料時要跳出的 spinner 啊,或是把資料轉換成長條圖等等的,如果寫前端都有一大堆 toolkit 可以使用,那麼 CLI 呢?

我們開個獨立的資料夾把整個專案抓下:

$ git clone https://github.com/nathanpeck/clui.git

沒意外的話已經有一個 example 在那裡了,打開之後會發現幾個範例,這邊拿看起來比較有趣的 progress 做為展示:

var CLI   = require('../lib/clui.js'),
clear = CLI.Clear,
clc = require('cli-color');

var Line = CLI.Line;
Progress = CLI.Progress;

var statuses = [0, 0, 0, 0, 0];
var lengths = [10, 20, 30, 40, 50];
var percent = 0

console.log('\nCtrl/Command + C to quit...\n\n\n\n\n\n\n\n\n');

function drawProgress () {
clear()

var blankLine = new Line().fill().output();

var headers = new Line()
.padding(2)
.column('Item', 20, [clc.cyan])
.column('Progress', 40, [clc.cyan])
.fill()
.output();

blankLine.output();

for(var index in lengths) {
var thisProgressBar = new Progress(20);

var websiteLine = new Line()
.padding(2)
.column('Item #' + index, 20, [clc.cyan])
.column(thisProgressBar.update(statuses[index], lengths[index]), 40)
.fill()
.output();
}

var thisPercentBar = new Progress(20);
var percentLine = new Line()
.padding(2)
.column('Item %', 20, [clc.yellow])
.column(thisPercentBar.update(percent), 40)
.fill()
.output()

blankLine.output();
}

var statusTimer = setInterval(drawProgress, 100);
var incrementTimer = setInterval(function () {
for(var index in lengths)
{
if (statuses[index] < lengths[index])
statuses[index]++;
}
if (percent <= 1) {
percent += 0.02
}
}, 500);

畫面會是這樣:

GitHub — nathanpeck/clui

目前這個 ui toolkit 說大不大,裡面也才五個元件而已,但僅僅如此就能充分感受到 CLI 的魅力了吧。

Useful OSS — 好用的開源軟體

在玩耍 ytdl-webserver 之前可以去看看原作者的這篇 原文,就跟很多 “自稱” 是好用的 YouTube Downloader 一樣,原作者也在尋找這些工具中迷失,一堆置入性廣告,介面又爆幹難用,所以才有了這工具的誕生。不過內行的都知道,用 CLI 的老司機一定都用過 youtube-dl,ytdl-webserver 同樣奠基於此,只是加以製作了一個更簡潔的下載介面。

Algram/ytdl-webserver

Developers — 開發者們

Dominic Szablewski 是這期介紹的 underrun 遊戲的原作,專案多是自製的遊戲引擎或是圖像處理工具,很棒的是通常遊戲的開發過程鮮少會被完整記錄,但他的 blog 幾乎是不藏私地把這些東西通通收錄進去,包含 underrun 用上的工具,甚至還有自己開源出來的遊戲引擎 Impact 也相當有料。

phoboslab (Dominic Szablewski) · GitHub

Technical Posts — 你都去哪看技術文啊城武

雖然每回總是心中有著參賽的念頭最後又因為惰性使然而草率放棄,不過鐵人賽的三十天系列在時間給予的壓力和死線之下真的醞釀出了不少好作品,像是自動化跑測試的神兵利器 Nightwatch101 教學系列就是極佳的範例,循線挖到原作的部落格真的有挖到寶的 fu,像是 vue.js 這幾篇筆記做為複習也很值得一看。

You Need Some Music, And A Bottle of Dry Martini — 你一定要把氣氛搞得這麼銷魂嗎

第 29 期 介紹過小光姐的變奏版本,這回推坑個原作。Ryuichi Sakamoto:CODA 是一部關於坂本龍一的紀錄片,主軸圍繞著他在對抗癌症的心路歷程,以及透過作曲和創作與這個社會建立起的一套價值觀。其實坂本大師的身影不僅在電影,他也多次出現在電視廣告當中,像是在 SAPPORO黑牌生啤酒 中被妻木夫聰問到的 “影像和音樂最佳的關係是怎樣的?”,他回的那句 “能被覺得好電影的作品,配樂反而沒這麼多呢。畫面明明就把故事說得很清楚了,卻又用音樂畫蛇添足,這根本是蠢到極點。” ,但印象中最為深刻的就屬和 青山洋服 的合作,“我下定決心還要再活 30 年。”,超過六十歲還能說出如此帥氣的話,坂本大師一定可以做到的。琴鍵的黑與白既乾淨又純粹,可惜的是世界上的善與惡並不能用簡單的二元論做為法則,沈默的多數人一輩子都在灰色地帶間打轉。

Ryuichi Sakamoto — Merry Christmas Mr.Lawrence

--

--