多重 SSH Keys 與 Github 帳號

使用情境

工作上需要用公司的 email 申請一個新的 Github 帳號,這樣一來我的系統上就有兩個 Github 帳號用於開發…orz,總之今天摸索了一下多重 SSH key / GitHub 帳號時的應對方式。

需求

  1. 透過 SSH 而不是 HTTPS 來 clone / fetch / push (這樣就不需要每次 push 都輸入 GitHub 帳號密碼)
  2. 兩個帳號:
    1. 平常自己用的 GitHub 帳號
    2. 公司用的 Github 帳號 (以下假設為 YOU@COMPANY.com
  3. 在 clone 時就決定用哪個帳號來 clone
  4. 以後 git push 時,根據 clone 時選的帳號,來自動選擇正確的 SSH key。
協定 長怎樣 需要 Github 密碼
SSH git@github.com:USERNAME/REPONAME.git 不用
HTTPS https://github.com/USERNAME/REPONAME.git 每次 push 都要

1. 建立新的 SSH key 並綁定該 Key 給 Github 帳號

因為現在一組 SSH key 只能綁一個 Github 帳號(就算可以綁多個我也不太建議,你會很混亂),所以我們要建立一個新的:

Read More

[Python] Meta Programming 與 __metaclass__, __call__, __new__, __init__, object, type

[注意]

  1. 本文假設你已經寫過一點 Python,並且有基礎的物件導向 (object-oriented, OO) 觀念,至少要知道什麼是 class 跟 instance。
  2. 本文只討論 Python 3,至於 Python 2 那種早該被歷史淘汰的該死東西將完全不去鳥它。
  3. 這篇只是筆記性質的虎頭蛇尾的半廢物文章,寫到後來就忘在硬碟裡,只是今天 [2016-08-28 日 23:55] 不小心把這篇 deply 出來就想說…算了出來就出來吧 _(:3」∠ )_ ,但現在沒那心情所以也懶得仔細再看一次科科,本文最後的 singleton 範例有些東西我自己也搞不清楚了,知道的大大敬請指教 <(_ _)>

要理解 Python 的 Meta programming,必須同時理解 object, type以及 __metaclass__, __call__, __new__, __init__ 的運作機制。

Python 中的 object

  • 首先我們必須先牢牢記住一個重要觀念:Python 是一種物件導向語言;在 Python 裡面,所有你能想得到的東西都是 object
  • 我們可以用 type() 這個內建函數,來得知某樣東西的 type。
    • type() 一個 object 時,會回傳一個東西叫做 Type Object ,你可以用 print() 印出來看看是什麼樣子:
1
2
3
4
5
6
print( type(1)             ) # <class 'int'>
print( type(1.1) ) # <class 'float'>
print( type("hello") ) # <class 'str'>
print( type([1,2,3]) ) # <class 'list'>
print( type({1,2,3}) ) # <class 'set'>
print( type({1: 10, 2:20}) ) # <class 'dict'>
  • 上面的例子說明了,像 "hello" 這個字串,在 Python 中其實是 str 這個 class 的 instance。
  • 連函數(function)也是一個 object:

Read More

「逃離伊甸園」的結局

這篇漫畫非常非常有意思,但看完以後去 Google 了一下,發現大家對這部的結局罵翻天…但我個人是很滿意這個收尾,看完後欲罷不能趕緊找這作者的其他作品來看。

以下嚴重劇透,沒看過這部的請自主避難(但我非常推薦去讀一下這部),謝謝。

Read More

Lisp 中的 Symbol 與 Atom 差別在哪

初學 Lisp 時一直搞不懂 atom 跟 symbol 到底差在哪…不對那個時候連 symbol 是三小都搞不清楚。不過不才在下最近突然理解了 Lisp 裡面的 Symbol 跟 Atom 的意義,所以來解釋一下。

此篇假設你已經理解 Lisp 中的 cons 與 list

atom

atom 這個詞本來的意思就是指不可分割的東西、最小的單位,而 Lisp 中,只有 cons (或者用其他語言使用者比較可以理解的詞,叫做 list) 是可以分割的。例如最基本的 operator 之一。

Read More