摘 —— 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 什麼?”

Signing for “name” requires a development team. Select a development team in the project editor. (in target ‘name’)

When developing iOS app, sometimes we might face this development team related problem:

Signing for "name" requires a development team. Select a development team in the project editor. (in target 'name')

This article is going to help you solve that problem.

Continue reading “Signing for “name” requires a development team. Select a development team in the project editor. (in target ‘name’)”

學習使用 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 所遇到的那些坑”

初步理解 Service Worker

Service Wroker(後面簡稱 SW)可以看作是介於瀏覽器、網路、和 Web app 之間的 proxy servers。 說穿了就是可以寫程式來處理 request 和 response 的一種介面,讓開發者可以藉以增進 offline 時網站的體驗,或是基於網路是否可用來自行決定 web app 應該做出怎樣的行為。其他還有一些推送通知或是背景同步的功能,標準正在火熱制定中。(寫這篇文章時是 2018/1/7,上次 SPEC 的更新時間是 2017/12/22,應該是去過聖誕節&跨年了,真好 XD)

以前的人可能會用 AppCache 來做到上述的功能,但他會對你要做的事有很多很多的預期,而如果你的 web app 沒有照著做的話,你就會死得很難看。可以看看這篇: https://alistapart.com/article/application-cache-is-a-douchebag。SW 可以解決 AppCache 的問題,你會擁有完全的掌控權,而當這句出現時,就意味著你要寫更多的 Code,用著更複雜的 syntax。人只要活著,一切就都是妥協。

Continue reading “初步理解 Service Worker”