2019年12月14日 星期六

使用 SourceTree 連接 Github,SSH 有那麼難?

前言

接續前面的主題,為了學習 Git,在 Windows下使用 Sourcetree 來提供方便的 GUI。如果是一個人開發,這樣也就夠了。如果想要更方便的分享自己的成果,大概就會想到 GitHub。當然還有很多方式可以分享,不過更重要的一點是,透過 GitHub,可以更方便達到「多人協作」,而不再只是自己閉門造車了。

那就連線吧!

這件事情其實不難,隨便 google 應該的可以找到教學文,例如這個。那這樣我有什麼好講的?我只是想來分享一下自己的愚蠢。

當你生好一組 Public/Private Key 之後,一定會記得,要把 Key 存好,記得 Private Key 不要洩漏出去,不然在沒有數位簽證的情況下,你的行為就可能會被假冒。(有點想講一篇密碼學的文章,但感覺篇幅很長,怕自己駕馭不了。)

好了,接下來就是要在 GitHub 上,把自己的 Public Key 新增進去。然後我就失敗了,為什麼?因為我新增了這個:

這是什麼呢?就是當時生完 Key 之後,存下來的 Public Key。如果把它貼進 GitHub,大概就會得到格式不符的警告。

而正確的格式長怎樣呢?其實就是這樣:

內容上大致一樣,但就是因為這小小的差異,讓我撞牆了。只能說是自己對格式不夠熟悉,所以希望透過自己的經驗,幫助其他人少走冤枉路。另外,其實我引用的文章寫得很完整,如果照他做,也不會碰到我的問題,所以就提供給各位參考了。

References

使用 SourceTree 使用 SSH 連接 Github
https://dotblogs.com.tw/acelee/2019/07/24/164337

2019年11月17日 星期日

在 Windows 使用 Sourcetree 那麼難?

前言

在工作之前,是有上過幾次Git的課程,但是因為怎麼開發都是自己做,而且開發的東西也不大,就沒想真的導入版本控制。再加上沒也參加過什麼社群,GitHub也是空空的,直到之前參加DIGI+ Talent跨域數位人才加速躍升計畫,到資策會數位教育研究所當了半年的研習生,用了Slack溝通,並第一次把自己寫的Code丟上GitHub。

工作後,一切來真的,因為需要共同開發,所以要再重新熟悉一下Git,而在Window介面下,Sourcetree是蠻多人推薦的GUI軟體,在公司也裝這套,所以就想趁下班時間,在自己的筆電也裝上,好讓自己可以更有效的學習,並不要拖累工作進度。

說好的一直下一步呢?

網路上已經有夠多教學,告訴你該怎麼安裝,在這裡就不再多放這些連結,也不多做說明了。照過去的常理其實沒有太多東西要注意,就是該辦會員的辦會員,該按下一步的按下一步,不過怎麼Logo出來轉一轉就消失了?

在Google裡找答案:

1. 把資料夾刪一刪重裝

2. 舊版本有問題,裝新的就好了。

3. 裝舊版的,新版有問題。

4. .NET Framework更新就好了

5. WMI壞掉了

太好了,好像找到問題了

我的WMI好像真的會壞掉了,實際原因我不知道。但是,我的狀況又跟他的不太一樣。當我在CMD下"winmgmt /verifyrepository"沒有不一致的現象,所以他提到的修復模式沒用。後來我是靠修復的,感覺跟原本的問題差很遠了,但是有用。有些可能有幫助的連結我留在下面,希望可以幫助想在 Windows 用 Sourcetree 學 Git 的朋友。

後記

沒想過會搞那麼久,曾經有一度想要放棄,換別套,幸好後來有找到路,並且一步一步解決問題。另外的感想是,這套感覺不是太穩定,因為安裝失敗的例子超多,然後解決方法又一堆。不過不是Open Source的Free Software不能要求太多,能夠使用已經要滿滿的感謝了。

References

Git
https://git-scm.com/

GitHub
https://github.com/

Sourcetree
https://www.sourcetreeapp.com/

WMI: Missing or Failing WMI Providers or Invalid WMI Class

如何在Win10上修复或重建WMI存储库
http://www.microwi10.com/wenzhang/jiaocheng/2019-02-25/13044.html

OPSMGR AGENT INSTALL ERROR 25218
http://www.ms-opsmgr.eu/?p=69

Source Tree failing to install and run
https://community.atlassian.com/t5/Sourcetree-questions/Source-Tree-failing-to-install-and-run/qaq-p/606402

2019年9月27日 星期五

在Blogger嵌入程式碼,使用Google Code Prettify

前言

因為上班之後,要學的東西太多了,主管建議我可以筆記下來,後來我想說乾脆就寫部落格吧!如果要寫技術類的,或多或少也要貼一些範例程式碼。只是沒想到Blogger居然沒有支援,所以只好來找個方式來解決。

其實很簡單

基本設定

我是個懶惰的人,設定太多的不用,後來就選到Google Code Prettify。其實只要參考google/code-prettify裡面做設定就可以完成了:

這段JavaScript需要放進Blooger,放哪裡?隨便。不是啦,放在:

版面配置裡面有辦法新增小工具的地方,有很多?沒關係,隨便找一個地方放,下次再寫一篇討論這個問題。
選擇HTML/JavaScript,之後,把下面那段script丟進去:

<script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>
我的好像長的不一樣,這等一下講。

之後呢,就可以在寫文章時,透過切換成HTML模式,把你想要的程式碼嵌進去了。你可以選擇先在撰寫頁貼上,在切過去修改,或者直接在那邊處理。不過我是建議前者,因為這樣很直覺,也可以省去一些不必要的工(因為如果是用後者,則需要再將程式碼轉換過,避免一些"<" 、">"等被解讀錯誤。而前者則是blogger已顯示為前提轉換成HTML裡的編碼,所以就不用再找工具來轉換。)。再來就是確定程式碼是否有擺對地方了:
要用,<pre></pre>或是<code></code>包起來。
好了,這樣就有基本功能了。接下來:

其他設定

設定語言

顯示行數

設定外觀

你可以透過設定skin來達到更換風格,至於可以填的值要查Gallery of themes for code prettify,但是因為有點不合我胃口,所以我選擇Plan B。COLOR THEMESFORGOOGLE CODE PRETTIFY裡面選擇更多了,而且只要在之前在script的地方前頭貼上CSS,並且用<style></style>包起來就好了,這也就是為什麼上面我的script會比較雜的原因。

後記

即便是一篇不算很難的文章,還是花了很久,寫得不一定很好,也許還是可以考慮一下下方的連結。不過我覺得,至少我不是用抄襲的,希望會慢慢進步。

References

2019年9月20日 星期五

Syntactic sugar

前言

九月終於開始自己第一份正式的全職工作,原本預期會先寫JavaScript,所以職前有再學了一下,結果沒想到一開始是寫自己原本不想碰的C#。倒也不是不喜歡,只是自己原本想學的語言,他的次序比較後面,但是不管,反正學什麼都好,只要能夠變強我都可以。由於語法與過去學習C/C++頗為相似,所以大致上沒有障礙,只是出現一些奇形怪狀的語法,也問了一些奇怪的問題。Google一下,也許應該稱為"Syntactic sugar",或中譯成「語法糖」,太噁心了,還是用英文來稱呼好了。

Syntactic sugar

Sugar,糖,吃糖,有甜頭。也程式有時候是痛苦的,因為有些東西是既定的,寫起來很「ak-tsak」,這時候如果可以簡單一點寫,又不影響功能不就太好了。所以就讓compiler/interpreter 來幫忙處理,在寫程式時就可以爽一點。不過,吃糖一時爽,一直吃糖一直爽?

起源

維基百科有寫到,"Syntactic sugar"是Peter J. Landin 這位先生看人家寫 ALGOL-like programming language時,有很像lambda calculus的寫法,所以就這樣說了。

一些範例

C

// 這在我年輕時可是讓我想破頭
a = a + b;
a += b;

// 雖然指標用的也算習慣,不這樣也算Syntactic sugar?
a[i] == *(a + i);
a->x == (*a).x;

// 這還蠻好用的
int a = b > c ? d : e;

C#

// 由complier自動判斷型別
var x = expr
// 自動呼叫Dispose()釋放資源
using (var sr = new StreamReader(filename))
{

}

對我來說

在沒學之前,會覺得這是什麼糖?可能本來會的知識,被包裹起來不認得了。我記得那時我要用C#寫一支處理CSV的程式,我看CsvHelper官方寫著:
// 由complier自動判斷型別
using (var sr = new StreamReader(filename))
using (var csv = new CsvReader(sr))
{

}
我還跟主管說:「我不知道這個using是要放在哪」,因為C#是用using來接package。知道答案後,真的應該怪當初他出C#的考題,我直接跳過不寫。所以還是要多看多學,才比較有可能知道別人在寫些什麼。最近還有?與??,看別人的程式真的是處處有驚喜。

Derivative terms

Syntactic salt

這就是相反來說,那些對於程式閱讀或撰寫有害的方式。

Syntactic saccharin

這則是指那些華而不實的"Syntactic sugar",簡單來說,炫技、耍花槍。

References

Lambda calculus:
https://en.wikipedia.org/wiki/Lambda_calculus
C#语法糖(Csharp Syntactic sugar)大汇总: