Mac Reinstallation Note


1. Mac Reinstall (document)

(1) Restart Mac and press Shift + Option + Cmd + R.
Install the macOS that came with your Mac, or the version closest to it that is still available.

(2) Use Dick Utility to erase the disk.

Complete the fields:

  • Name: Macintosh HD
  • Format: Mac OS Extended (Journaled) (Don’t choose APFS)
  • Scheme (if available): GUID Partition Map

Note: If I choose APFS as the format, it would always fails to reinstall the macOS. So, I recommand to use Mac OS Extended (Journaled) instead.

(3) Reinstall macOS

2. iTerm2 (download)

(1) Reuse Session’s Directory

(2) Color Theme: Tango Dark

3. .bash_profile

~/.bash_profile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# enables color in the terminal bash shell
export CLICOLOR=1

# sets up the color scheme for list
export LSCOLORS=ExFxCxDxBxegedabagacad

# enables color for iTerm
export TERM=xterm-color
export TERM="xterm-color"
PS1='\[\e[0;33m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '

# sets up proper alias commands when called
alias ls='ls -vG'
alias ll='ls -al'
alias la='ls -a'
alias vi='vim'
alias ptt='ssh bbsu@ptt.cc'

# mkdir + cd
function mkcd {
if [ ! -n "$1" ]; then
echo "Enter a directory name"
elif [ -d $1 ]; then
echo "\`$1' already exists"
else
mkdir $1 && cd $1
fi
}

# [macOS] Show/Hide the hidden files in Finder.
# add this function to '~/.bash_profile' and reopen terminal.
# Usage: show-file -> show
# show-file 0 / off / hide / false -> hide
function show-file () {
opt=$(echo $1 | tr '[:upper:]' '[:lower:]') # transfer into lowercase

# Hide Files
if [ "$opt" = "off" ] || [ "$opt" = "0" ] || [ "$opt" = "false" ] || [ "$opt" = "hide" ] ; then
echo "Hide all the hidden files in Finder."
defaults write com.apple.finder AppleShowAllFiles FALSE
killall Finder
return
fi

# Show all the Files
echo "Show all the hidden files in Finder."
defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder
echo "Use 'show-file off' to hide the hidden files in Finder."
}

4. vim

Download color theme Gruvbox to ~/.vim/colors/gruvbox.vim and edit ~/.vimrc:

~/.vimrc
1
2
3
syntax on
set t_Co=256
colorscheme gruvbox

5. BetterTouchTool (download)

(1) launch BetterTouchTool on startup

(2) Window Snapping

(3) Three Finger Tap = Mouse Middle Click

(4) Setup shortcut

6. Trackpad



7. Enable Dragging



8. Enable Function Key for F1 ~ F12

9. Karabiner-Element (download)

(1) Swap left_control and left_command (Simple Modification)

(2) Backslash to Forward Delete [Click to Import] (Complex Modification)


10. Alfred 2 (download)

Title Keyword Search URL
Messenger msg https://www.messenger.com/
Yahoo Dictionary y https://tw.dictionary.yahoo.com/dictionary?p={query}
Google Maps m
Translate f
Gmail g
Youtube you
Facebook fb

11. Sublime Text 3 (download)

(1) Enable Sublime Text Command Line

1
2
mkdir ~/bin
ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" ~/bin/subl
~/.bash_profile
1
2
# export ~/bin
export PATH=~/bin:$PATH

(2) Enable Sublime Package Control

Use Ctrl + ` to open the console and paste the code in it.

(3) Install Packages

  • HTML-CSS-JS Prettify
  • Babel
  • MarkdownLight
  • GitGutter

Use Cmd + Shift + P to search package control.

Search the name of packages.

(4) Preferences.sublime-setting (use Cmd + , to open preference)

1
2
3
4
5
6
7
8
{
"tab_size": 2,
"translate_tabs_to_spaces": true,
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true,
"auto_complete_selector": "source, text",
"folder_exclude_patterns": [".svn", ".git", ".hg", "CVS", "node_modules"]
}

12. Brew

1
2
# install brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Note: git will be installed during the installation.

13. Node.js, NVM (Node Package Manager)

1
2
3
4
5
6
7
8
9
10
11
12
# install nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

# install node via nvm
nvm ls-remote --lts
nvm install --lts

# update npm (Node Package Manager)
npm install -g npm

# download yarn via brew (alternative of npm)
brew install yarn --without-node

14. Git

1
2
# install git via brew
brew install git

(1) Git config and alias

1
2
3
4
5
6
7
8
9
10
11
# config
git config --global color.ui true
git config --global core.editor vim
git config --global core.quotepath false

# git alias
git config --global alias.br branch
git config --global alias.co checkout
git config --global alias.cp cherry-pick
git config --global alias.st stash
git config --global alias.sub submodule

(2) git-completion

1
2
# Download git-completion.bash
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash > ~/.git-completion.sh
~/.bash_profile
1
2
# git bash completion
[ -f ~/.git-completion.sh ] && . ~/.git-completion.sh

(3) diff-so-fancy

1
2
3
4
5
# install diff-so-fancy via yarn
yarn global add diff-so-fancy

# use diff-so-fancy to diff code
git config --global core.pager "diff-so-fancy | less --tabs=4 -RFX"

15. Audacity ([download]](http://www.audacityteam.org/download/mac/))

(1) Install LAME 3.99.5 for Audacity download
(2) Set shortcut cmd + shift + E for Export Selected Audio ...

16. Other Apps (13)

Reference

Share Comments

Redmine Backup

Objective

Backup Redmine or move Redmine to other server

1. Use mysqldump to backup redmine database in MySQL

1
$ mysqldump -u root -h localhost -p redmine > redmine_backup.sql

2. move your whole Redmine Folder with redmine_backup.sql to your new server

You would need to install Redmine first. If not, please read the article How to install Redmine.

3. create a redmine_backup database in MySQL and import the redmine_backup.sql

1
CREATE DATABASE redmine_backup CHARACTER SET utf8mb4;
1
$ mysql -u root -h localhost -p redmine_backup < redmine_backup.sql

4. Setup the config file in Redmine Folder

Add backup config to config/database.yml:

1
2
3
4
5
6
7
8
backup:                     # production → backup
adapter: mysql2
database: redmine_backup # redmine → redmine_backup
host: localhost
port: 3307
username: root
password: {yourpassword}
encoding: utf8

5. Install Redmine (Optinal)

1
2
3
4
5
6
7
8
9
sudo gem install bundler

# execute under redmine's folder
bundle install --without development test
bundle exec rake generate_secret_token
RAILS_ENV=backup bundle exec rake db:migrate

# Don't do this. This only for new Redmine Database
# RAILS_ENV=backup bundle exec rake redmine:load_default_data

6. Run Redmine Server

1
2
mysql.server restart
bundle exec rails server webrick -e backup -p 5432 # port 5432

Reference:

https://zlargon.github.io/blog/Redmine/install-redmine-on-mac/
https://youtu.be/2-_ZU7N3XEM

Share Comments

How to Reset Password in Redmine

1. Login MySQL and find the user id

1
2
3
4
mysql -u root -p             # login MySQL

mysql> use redmine; # choose redmine database
mysql> select * from users; # show all users' information

2. Go to the redmine folder and change the password

1
2
3
4
5
6
7
8
9
10
11
12
# start console
RAILS_ENV=production bundle exec rails c

# find your user
user = User.where(id: 1).first

# set new password
user.password = 'password'
user.password_confirmation = 'password'

# save changes
user.save!

3. Login redmine and change the password

Now, you can login your account with password password, and then you can change your password in My Account page.

Reference

Share Comments

Install Redmine on Mac

1. Install Brew & Git

1
2
3
4
5
# Brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# Git
brew install git

2. Install and Setup MySQL (5.7.19)

1
brew install mysql
1
2
3
mysql.server start           # start mysql server
mysqladmin -u root password # enter your new passowrd at first time
mysql -u root -p # login MySQL with password
1
2
3
CREATE DATABASE redmine CHARACTER SET utf8mb4;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

3. Download and Setup Redmine (3.4.2)

  • redmine-3.4.2.tar.gz (md5: 2980b80e9acc81c01c06adb86eb4f37d)

  • Copy config/database.yml.example to config/database.yml and edit this file in order to configure your database settings for production environment.

1
2
3
4
5
6
7
8
production:
adapter: mysql2
database: redmine
host: localhost
port: 3307
username: root
password: {yourpassword}
encoding: utf8

4. Run Bundle

1
2
3
4
5
6
7
sudo gem install bundler

# execute under redmine's folder
bundle install --without development test
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data

Trouble Shooting:

(1) mysql2 0.4.9

1
2
An error occurred while installing mysql2 (0.4.9), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.4.9'` succeeds before bundling.

Solution:

1
xcode-select --install

(2) rmagick 2.16.0

1
2
3
4
5
6
7
8
Fetching rmagick 2.16.0
Installing rmagick 2.16.0 with native extensions
Errno::EACCES: Permission denied @ rb_sysopen - /usr/local/lib/ruby/gems/2.5.0/gems/rmagick-2.16.0/.editorconfig
An error occurred while installing rmagick (2.16.0), and Bundler cannot continue.
Make sure that `gem install rmagick -v '2.16.0'` succeeds before bundling.

In Gemfile:
rmagick

Solution:

1
2
3
4
5
brew install imagemagick@6
brew link --force imagemagick@6
echo 'export PATH="/usr/local/opt/imagemagick@6/bin:$PATH"' >> ~/.bash_profile

sudo gem install rmagick -v '2.16.0'

5. Start Redmine

1
2
mysql.server restart
bundle exec rails server webrick -e production -p 5432 # port 5432

Reference

Share Comments

Mac 攝影機無法連接

我最近發現我的 Mac (OS X 10.11.6) 有時候攝影機會突然無法正常開啟
即使我已經將所有可能會使用攝影機的應用程式都關掉了,但是攝影機依然無法運行
直到我重開機之後,才會恢復正常

後來我在 YouTube 找到了這個影片,才解決了我的問題


解決方案

在終端機輸入指令(注意英文大小寫)

1
sudo killall VDCAssistant

VDCAssistant這個程序負責背景執行 Mac 的攝影機(iSight)
使用這個指令後,會把背景執行的VDCAssistant強制關掉,接著再次重新啟動

這個指令必須要給予管理員權限,因此要在前面加上sudo,並且輸入密碼
否則他會顯示 No matching processes belonging to you were found
如果沒設定過密碼的話,請直接按 Enter

Note:
影片中有附著,若上述指令無法作用的話,請改用以下指令

1
sudo killall AppleCameraAssistant

指令介紹

sudo - 使用管理員權限
killall <PROCESS_NAME> - Kill All 顧名思義,砍掉所有名稱為 <PROCESS_NAME> 的程序

參考連結

Share Comments

托福背單字心得

背單字是一場與大腦的競賽

單字總是背了又忘背了又忘,到底要怎樣才能把單字牢牢記住呢?

然而,這一切都要回歸大腦對於記憶的運作原理

人類大腦的記憶區分為短期記憶區以及長期記憶區

大腦為了避免儲存過多不必要的訊息,所以在接受新的訊息時,會先把訊息放到短期記憶區

而過一段時間後,當這些訊息已經不被使用的時候,大腦就會自然的把這些不必要的訊息忘掉

例如說,我們還清楚記得前幾天所發生的事情,但是卻已經很難回想起幾個月前,甚至幾年前的某天所發生的事情

因為前幾個月的某一天所發生什麼事情,已經對我們不重要了,所以大腦就會幫我們把這些訊息從短期記憶區清除掉

反之,當某個訊息對我們很重要,而我們每天都會使用到他的時候,大腦就會慢慢的把這個訊息從短期記憶區搬移到長期記憶區

例如說,我們自己的名字或是電話號碼,每天都被使用著;因此大腦會認定這個訊息是重要的,進而轉移到長期記憶區

背單字也是同樣的道理。

我們必須在大腦把這些單字忘掉之前,搶先把他移到長期記憶區

不過當然,我們是無法直接跟我們的大腦溝通的,那我們該怎麼做呢?


艾賓浩斯遺忘曲線

在 1876 年有一位德國心理學家艾賓浩斯(Hermann Ebbinghaus)為了研究記憶,開始了一段長達五年的實驗。

在這一實驗中,艾賓浩斯使用了一些毫無意義的字母組合。通過記憶這些字母組合,並在一系列時間間隔後檢查遺忘率,得到了這一曲線。

詳細內容請見維基百科:https://zh.wikipedia.org/wiki/遺忘曲線

實驗結果

經過時間 還記得多少
20 分鐘 58%
1 小時 44%
1 天 26%
7 天 23%
30 天 21%

這個實驗結果告訴我們一個殘酷的事情:

當我們上完課回到家,如果不馬上複習的話,過一天後可能已經忘掉 74% 的內容了!

但事實上並不完全如此,稍後會做解釋

遺忘曲線的應用 - 17 天背單字法

根據這個實驗結果,有人提出了一種科學背單字的方法,號稱 “17天搞定GRE單詞”

其理論基礎是根據艾賓浩斯遺忘曲線,每當快要忘記的時候去複習這個單字

根據複習的週期:1 → 2 → 4 → 7 → 15 → 30 天 去複習單字,使得單字可以一直保存在大腦的記憶中

詳細內容:https://youtu.be/ApowCcsSla8

遺忘曲線的謬誤

事實上,遺忘曲線存在兩個謬誤,分別是實驗對象實驗樣本

  1. 遺忘曲線的實驗對象只有艾賓浩斯自己,因此這能代表 “艾賓浩斯” 個人的遺忘曲線,並非所有人的大腦都會遵守這個遺忘曲線

  2. 遺忘曲線的實驗樣本是一堆毫無意義的字母組合,一個具有意義的組合會比無意義的組合,更來得容易被記住,記得更久

因此,當我們去上完課之後,並不會在第二天就忘掉 74 % 的內容,因為這是一堂具有意義而且生動的課

除非你上課睡著了…

同樣的,”17 天背單字法” 的確是有效果的,但是每個單字的難易度不同,每個人的學習狀況也不同,所以這個方法未必適用於所有人


記憶難度 & 時間間隔式效應

在提出遺忘曲線後,艾賓浩斯發現:

  • 死記一組亂數組合的難度,會比讀懂一段有意義句子的難度的 9 倍
  • 艾賓浩斯發現一天裡複習 67 次的記憶效果,還不如三天內複習 38 次

於是歸納出了兩大結論:

  1. 越容易理解的訊息,記憶效果會越好
  2. 間隔一段時間再複習,會比短時間內密集複習的效果還好

這兩大結論非常的重要!!!
這兩大結論非常的重要!!!
這兩大結論非常的重要!!!

因為很重要,所以講三遍

理解了基礎理論後,接下來的問題就是如何去實踐了!


1. 理解單字 → 有效輸入大腦

越容易理解的訊息,記憶效果會越好

背單字時,我們通常可以用字根、字首去拆解一個單字,使單字更容易被記下來

例如,adapt、adept、adopt 三個很像的單字,只有差在一個母音不同

但是如果從字根的角度去理解,就可以輕鬆分辨其中的不同

  • adapt (v) 使適應;改造
    ad → to
    apt → 傾向,適合的
    改造自己,使自己去適合

    相關字:
    aptitude (n) 傾向;天資

  • adept (adj) 熟練的
    ad → to
    ept → expert 專家,柔練的

    相關字:
    experience (n) 經驗

  • adopt (v) 採納;收養
    ad → to
    opt → 光;眼睛;選擇
    選擇時用眼睛看 → 採納;收養

    相關字:
    option (n) 選項
    optics (n) 光學

一般的線上字典、紙本字典是查不到單字的字根字首的

因此在這裡推薦一個很棒 App 叫做 百詞斬

我之後會再開另外的寫一篇關於 百詞斬 的介紹


2. 時間間隔式複習 → 有效複習

間隔一段時間再複習,會比短時間內密集複習的效果還好

雖然我們已經了解這個理論了,但是實踐上卻是非常困難

最簡單的實踐方式就是使用紙本的單字卡

自己新增單字卡後,定期去複習

通常大家會習慣在重複背到不熟的單字上面做記號(例如打星號)

在往後就只要專心複習比較不熟的單字就好了

但是紙本單字卡存在一些缺點:

  1. 每次都必須從前面往後複習單字,並且要手動紀錄每個單字的紀錄狀況
  2. 我們通常會因為看到前一個單字,就直接聯想到下一個單字是什麼
  3. 只有文字,卻沒有單字的發音或是圖片

因此在這裡推薦一個很棒的單字卡 App 叫做 Anki,可以解決以上的問題

我之後會再開另外的寫一篇關於 Anki 的介紹


3. 背單字的順序 → 按照學科分類

我個人是建議剛開始不要按照 A-Z 的順序來背單字,會建議使用分類字彙的單字書

按照 A-Z 的順序背,我曾經遇到以下的問題:

  1. 同時背太多字根一樣單字的會容易混亂。
    例如 con, com, re, pre, per 這些超難背的,很容易卡關。

  2. 除非整本單字書背完,否則閱讀的時候單字的涵蓋率會很零散。
    例如說,雖然已經背完了 A-I,但是做閱讀時,仍然會有 J-Z 的單字看不懂。

如果按照分類字彙來背,例如只要把生物類的全部背完了,就可以開始做生物類的文章了

基本上已經可以涵蓋生物類文章中大部分的單字了

在做 TPO 閱讀的時候,遇到看過的單字,又可以再加深對於單字的印象

建議剛開始練 TPO 的時候,不要按照順序做,一樣是按照學科的分類去做

我滿建議推薦這本單字書的 “TOEFL iBT托福分類字彙 5600字”

http://www.books.com.tw/products/0010593790

建議是從考試比例最高的分類優先開始背:

  • 生命科學(動物、植物、生態、人體基因)
  • 自然科學(地質學、環境科學、海洋學、氣象)
  • 藝術類(音樂、建築、雕刻、繪畫、電影)
  • 歷史類(發明史、藝術史、美國史)
  • 人類學 & 考古學

參考資料

Share Comments