Tab 和 Space,用哪個縮排比較好?

space or tab @ silicon valley

三不五時會聽到有人在吵這個。這邊記錄一下我的看法。

先說結論

其實沒有誰比較好,但在當下決定要用哪個時,我覺得至少要經過這些判斷:

  1. 正在修改的檔案用什麼,就用什麼;如果兩者同時存在,那該份程式就有問題,用什麼都一樣
  2. 專案規定用什麼,就用什麼;如果沒好好規範導致混雜著亂用,那專案就有問題,用什麼都一樣
  3. 如果是全新的專案,那想用什麼就用什麼,只要一致就好
Continue reading “Tab 和 Space,用哪個縮排比較好?”

摘 —— JavaScript 中的參數傳遞是 Call by 什麼?

因為以前寫程式的時候偶爾會撞到這個雷,所以就有查了下。如果實際去搜尋,就會看到這篇 《深入探討 JavaScript 中的參數傳遞:call by value 還是 reference?》

原作者寫得非常好,但我覺得文章太長了。能寫出整個追查的脈絡還不錯,甚至還引了 Java 和 C/C++ 來對照,功力不夠還真無法寫出這篇文章。而我之所以寫這篇文,就是想簡單地彙整「JavaScript 中的參數傳遞是 Call by 什麼?」的結論。

重點

  1. 純值(Primitive types)是 call by value,會複製一份進函式中。
  2. 物件(Object)是 / 類似 call by reference,會把該物件丟進去,不過要注意
    1. 可以在函式中改這個 object 裡面的值。
    2. 直接改變用來 Ref 的變數的話,該變數就會指到新的 object,而不影響一開始被指導的 Object。
Continue reading “摘 —— JavaScript 中的參數傳遞是 Call by 什麼?”

學習使用 Git 的三個階段

使用 Git 好一段時間了,也協助了幾個朋友快速上手這個好工具。覺得也差不多可以寫一篇文章,記錄我自己從過去到現在各個階段的常用指令。

網路上也有許多優秀的 Git 教學,我這篇文章主要是想要大略分一下階段,這樣學起來的負擔也比較不會那麼大。

人生無法重來,但是 Git 可以。

使用 Git 的心態

這個工具的主要用途就是 版本控制,而會有這個控制的流程則有許多歷史因素,可以先不用去理解,之後有興趣再查,查了就會知道其中的奧妙。

另外,我一直都覺得要學習 Git 絕對要從使用 Command line 開始學,慢慢地覺得可以理解整個操作流程後再考慮使用 GUI 程式來輔助,才是比較好的順序。

Continue reading “學習使用 Git 的三個階段”

筆記 — 找到時間成為更好的開發者 (Time Management)

這篇文章是關於 Time Management 的筆記。很久以前看過這篇 finding-time-to-become-a-better-developer,但因為太久遠所以讀了什麼都忘光光。為了節省未來自己的時間,便做了這篇筆記,也把他放出來,或許能幫助到誰。

找到時間成為更好的開發者

Continue reading “筆記 — 找到時間成為更好的開發者 (Time Management)”

JavaScript hoisting 是什麼?寫個筆記記錄一下

最近讀了海總的《本末倒置的閱讀習慣》,發現自己也有這個壞習慣。 想要來好好地注意這個問題,避免只砸時間在不用細讀的文章。剛好小蟹分享了這篇 《我知道你懂 hoisting,可是你了解到多深?》 給我,便決定在舒服的假日午後好好地閱讀一下,以便能好好地了解 javascript hoisting 是怎麼一回事。

而這篇文章就是在記錄自己閱讀過程中的 murmur,順便摘一下, 略微地希望可以替未來的自己省下重新閱讀的時間。

Continue reading “JavaScript hoisting 是什麼?寫個筆記記錄一下”

升級 Mysql Database 所遇到的那些坑

因為一些原因,需要在 CentOS 6 上使用 mysql 5.7。看了一下才發現這台 server 上的 Mysql Database 是 5.1 版,找了一些方法裝完後,才發現是悲劇的開始⋯

這邊先來個 tl;dr

cd /tmp
wget http://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
sudo yum localinstall mysql57-community-release-el6-9.noarch.rpm
sudo yum remove -y mysql*
sudo yum install -y mysql-community-server

sudo -i
mysqld_safe --skip-grant-tables &

# press enter
mysql -uroot
use mysql;
update user set authentication_string=password('PASSWORD_YOU_WANT') where user='root';
flush privileges;
quit

servie mysqld restart
mysql -uroot -p
# enter password

set global validate_password_length=3;
set global validate_password_policy=0;
set password = password('PASSWORD_YOU_WANT');

# here you go!

照著上面走應該就可以正常使用 mysql 了,如果還是不行,那我這篇文章應該就沒法幫 上忙了。

Continue reading “升級 Mysql Database 所遇到的那些坑”