Home » Posts tagged "line"

把 git log 用得很開心...?

看到「git log – the Good Parts」這篇文章,裡面研究了 Gitgit log 的各種好用的功能,然後整理出來... (所以是 good parts XD)

作者用的參數是一個一個加上去,所以可以一個階段一個階段了解用途。除了可以用作者推薦的 repository 測試外,我建議大家拿個自己比較熟悉的 open source 專案來測 (有用到比較複雜的架構):

git log
git log --oneline
git log --oneline --decorate
git log --oneline --decorate --all
git log --oneline --decorate --all --graph

看到喜歡的部份可以在 ~/.gitconfig 裡設 alias 使用,像是用 git l 之類的?保留 git log 本身可以避免一些 script 用到這個指令時因為輸出格式跟預期不一樣而爛掉 XD

NAVER CLOUD PLATFORM

在「HashiCorp Packer 1.2.0」這篇看到的雲端平台:

New builder: ncloud for building server images using the NAVER Cloud Platform.

NAVERLine 母公司,這是他們推出的雲端平台,看起來相似的產品是 AWS。在 https://www.ncloud.com/charge/region 這邊可以看到提供了韓國、美國、新加坡、香港、日本與德國,可以看出因為是韓國公司,擴了不少亞洲的點...

找時間看一看好了,目前看起來 routing 好像還不錯?

LINE 將內部的座位表由 Excel 改成 Web 界面...

LINE 將內部的座位表由 Excel 管理,改用 Web 界面了:「Excel管理の座席表をLeafletでWeb化した話」,這邊不確定是全球的 LINE,還是只有日本的 LINE...

如果跟日本人有過業務合作的話,就會知道他們對 Excel 的用法只能用

出神入化

來形容啊... 所以看到 LINE 特地寫了一篇來說明他們開發內部系統的事情,覺得還蠻有趣的...

起因是今年四月換辦公室,所以就順便換系統,把本來用 Excel 管理的座位表改用 Web 管理 (然後用了 Leaflet 這個 JavaScript Library):

人員の増加に対応するために、今年の4月、LINEはJR新宿ミライナタワーに移転しました。移転に伴い、IT支援室ではいくつかの新しい社内システムを導入しましたが、今日はその1つである「座席表」についてお話させていただきます。

這是 Excel 版本的樣子:

這是新版本的樣子,UI 上有更多互動的界面可以操作:

然後文末提到了總務業務量減少,而且因此變更座位變自由了而大受好評 (大概是不會讓總務煩死,所以就可以更自由換來換去 XDDD):

今回開発した座席表は総務の業務軽減に始まったプロジェクトでした。そして実際に導入後には、座席表の管理にかけていた総務の業務を大幅に削減することに成功しました。また、利用者からもかなり好評で、「これを待っていたんですよ!」といった声もあり、社内コミュニケーションの円滑化に一役買うことができているようです。誰の席でも自由に変更できるという点についても、これまでのところトラブルの報告を受けることなく運用できています。

翻了一下英文版的 blog,好像沒有提到這件事情?XDDD

Command Line 的 HTTP 操作工具

忘記在哪邊翻到的:「HTTP Tools Roundup」,裡面有提到一些 Command Line 下操作 HTTP 內容的工具。

其中一個是 HTTPie,這個有時後會拿來用,不過大多數的時候還是習慣用 curl 了 (因為 curl 幾乎都會裝,HTTPie 要另外裝):

另外一個是 http-console,這是第一次看到... 用過後覺得還不錯,應該會記起來用一陣子看看 XD

gslin@home [~] [17:24/W5] http-console --ssl https://emma.pixnet.cc:443/
> http-console 0.6.4
> Welcome, enter .help if you're lost.
> Connecting to emma.pixnet.cc on port 443.

https://emma.pixnet.cc:443/> GET /robots.txt
HTTP/1.1 200 OK
Date: Sat, 11 Nov 2017 09:24:11 GMT
Last-Modified: Tue, 16 Sep 2014 06:45:02 GMT
Etag: "2b-50329173d7780"
Accept-Ranges: bytes
Content-Length: 43
Vary: Accept-Encoding,User-Agent
P3p: CP="CURa ADMa DEVa PSAo PSDo OUR IND UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
X-Farmid: ba2629de4a01c1a81a0ad72ff1f11c5d2ae5ed0782561f591105c5a669e4ea49
Access-Control-Allow-Origin: *
Connection: close
Content-Type: text/plain

# emma.pixnet.cc
User-agent: *
Disallow: /
https://emma.pixnet.cc:443/>

然後再下 GET /glossary/twzipcode 又可以拉出其他東西。

AWS 提供要回放掉的 Elastic IP 的功能

Twitter 上看到 AWS 可以要回放掉的 Elastic IP 了。當然,這不保證會成功:

文件在「Recovering an Elastic IP Address」這邊,目前只支援 API 以及對應的 command line 工具:

Currently, you can recover an Elastic IP address using the Amazon EC2 API or a command line tool only.

指令像這樣:

aws ec2 allocate-address --domain vpc --address 203.0.113.3

透過 Docker 跑 Command Line 程式時,螢幕大小改變時程式不會變更的問題...

其實是我拿 DockerrTorrent 遇到的問題... (在 gslin/rtorrent-docker 這包裡面)

因為平常都是用 tmux 掛著,有時候是使用桌機接起來,有時候是使用 Mac 接起來,就會遇到 resize 的問題了 :o

GitHub 上其實有討論這個問題:「SIGWINCH attached processes · Issue #5736 · moby/moby」(Docker 改名叫 Moby 了,如果你看到網址不是很確定的話,提醒一下... XD)。

在 resize 的機制上是透過 SIGWINCH 這個 signal 傳進去,所以就一層一層檢查... 然後發現是 su 不會把 SIGWINCH 傳下去,改用 sudo 就解決了,這樣就不用每次切換時還要重跑 rTorrent...

瀏覽器 UI 的死亡線

作者 Eric Lawrence 現在在 Google Chrome team 裡,寫了一篇文章講到瀏覽器上 UI 設計與安全性的問題:「The Line of Death」。

從一開始會假設紅線以上是可信任的:

後來有些操作跨過這條線 (左邊),於是就開始有很 tricky 的方法 (右邊):

甚至反過來利用 icon 讓使用者誤會是表示有訊息要通知使用者:

另外是直接惡搞,假裝是另外一個視窗:

最新的方法是利用 HTML5 的 Fullscreen API 直接搞定所有事情:

花樣愈來愈多了...

印 "#" 比印 "B" 來的快的問題

這篇是兩年前在 StackOverflow 上的問題:「Why is printing “B” dramatically slower than printing “#”?」。

問問題的人這段程式跑了 8.52 秒:

Random r = new Random();
for (int i = 0; i < 1000; i++) {
    for (int j = 0; j < 1000; j++) {
        if(r.nextInt(4) == 0) {
            System.out.print("O");
        } else {
            System.out.print("#");
        }
    }

   System.out.println("");
 }

而把上面的 # 換成 B 就變成 259.152 秒。

答案是與 word-wrapping 有關:

Pure speculation is that you're using a terminal that attempts to do word-wrapping rather than character-wrapping, and treats B as a word character but # as a non-word character. So when it reaches the end of a line and searches for a place to break the line, it sees a # almost immediately and happily breaks there; whereas with the B, it has to keep searching for longer, and may have more text to wrap (which may be expensive on some terminals, e.g., outputting backspaces, then outputting spaces to overwrite the letters being wrapped).

But that's pure speculation.

這真是細節 XDDD

把主力手機從 iPhone 換到 Android

上次主力用 Android 應該是 HTC Desire 時代了,那個時候跑得是 2.2。

總算把 LG G2 (D802) 刷完機器了 (刷了半年,每次都卡關 XDDD),這次刷了 CyanogenModOpen GApps,儘量都用 command line 來刷。

adb devices # 看裝置順便打 RSA public key 進去
adb shell # 進去後可以 ls/su 看一看
adb push filename.zip /sdcard/
adb reboot recovery

Android Marshmallow (6.0) 另外多了對權限的管理,這也是想刷到 6.0 的原因之一,使用者可以隨時 revoke 掉某些權限 (沒有處理好的會 crash XD):

Android Marshmallow introduces a redesigned application permission model: there are now only eight permission categories, and applications are no longer automatically granted all of their specified permissions at installation time. An opt-in system is now used, in which users are prompted to grant or deny individual permissions (such as the ability to access the camera or microphone) to an application when they are needed for the first time. Applications remember the grants, which can be revoked by the user at any time.

其他安裝的流程主要都是苦工了,尤其是 2FA 是少數為了安全性只能一個一個換的東西 (不提供 export,都是用手機提供的 HSM 避免被盜走),剛好趁機會把自己與公司用到的 2FA 帳號分開。

Android 上的 Google Authenticator 不怎麼好用 (不能調整位置,另外不希望隨時都給密碼),測了測 Red Hat 出的 FreeOTP Authenticator 算是比較好用的,就把 FreeOTP Authenticator 拿來給個人用,Google Authenticator 拿來給公司的帳號用。

繼續熟悉現在的 Android 環境,應該會有一陣子不習慣...

Terminal 下操作 VMware 的 vSphere

Twitter 上看到 zmx 提到:

其中 Ruby vSphere Console (rvc) 被標成 deprecated:

Note: This Fling is deprecated, so the download is no longer available, and it will not be updated. Also, feedback is no longer monitored.

Python vSphere Client with a dialog(1) interface (pvc) 看起來比較新:

不過我自己測試後發現死在 SSL certificate 上,之後再來研究要怎麼閃開吧...

Archives