2013年7月15日 星期一

2013年7月14日 星期日

[Nginx] 使用Nginx proxy_pass 時保留 host header

原本我使用 nginx 的 proxy_pass 只設定這樣

vim /usr/local/etc/nginx/site-enabled/site
server {
    listen 80;
    server_name my-domain-name.com;
 
    location / {
        proxy_pass  http://hank.local:8210;
    }
}

但是在後端程式從 header 裡判斷 host 會一直找到 hank.local:8210 而不是 my-domain-name.com

後來找到一個方法可以保留 header 到 proxy 裡, 加上 proxy_set_header Host $http_host 即可

server {
    listen 80;
    server_name my-domain-name.com;
 
    location / {
        proxy_pass  http://hank.local:8210;
        proxy_set_header Host $http_host;
    }
}

重新讀取 nginx 設定檔

sudo nginx -s reload

2013年7月8日 星期一

[Mac] 英文單字或句子不會唸? 讓Mac直接幫你念出來。

常看到一個英文單字或句子時, 不懂得怎麼唸, 秉持勤勉精神, 想努力學習一下, 但總是沒有很好的工具可以快速方便的唸出不懂怎麼唸的句子, 只要妳是用Mac, 內建就有功能能做到

突然發現Mac有個say指令, 可以直接在terminal底下唸出輸入的文字

say - Convert text to audible speech

直接在指令後面接上要說出的單字或句子

$ say Hello

或是指定說出一個檔案內的內容

$ say -f article.txt

也可以指定語音檔取代內建的語音, 或是使用其他內建的語音

$ say -v ?

看看更多的附加功能

$ man say 對於學習英文唸法時很有用 :)

2013年6月27日 星期四

2013年6月20日 星期四

[Quotes] Simple can be harder than complex ... Steve Jobs - 簡單比複雜難得多

"Simple can be harder than complex. You have to work hard to get your thinking clean to make it simple. But it’s worth it in the end because once you get there, you can move mountains." -- Steve Jobs

簡單比複雜難得多,你必須竭盡全力、理清思路,才能創造簡單。但這絕對值得,因為只有這樣,你才能開闢新世界。

2013年6月19日 星期三

[ssh] ProxyCommand - Run a local command before ssh to remote server.

Modify ~/.ssh/config
Host mydomain
    ProxyCommand sh -c "local_command /usr/bin/nc %h %p"

Host mydomain
    Hostname=mokoversity.com
    IdentityFile=~/.ssh/mokoversity_dsa
    User=hank
    PasswordAuthentication=no
    PubkeyAuthentication=yes

2013年6月18日 星期二

[Mac] ssh remote server through socks proxy - 經由socks proxy ssh到遠端Server

1. Install ProxyChains

$ wget https://gist.github.com/allenhuang/3792521/raw/bb52568695f9d745004eee87b892637f9d17a771/proxychains4_formula.rb
$ mv proxychains4_formula.rb /usr/local/Library/Formula/Proxychains.rb
$ brew install --HEAD proxychains

2. Modify ProxyChains conf

$ vim /usr/local/etc/proxychains.conf

set this line to conf:

socks4 127.0.0.1 8888

3. Open socks

ssh -vND 8888 user@socks.server

4. Settings Socks Proxy on Mac Network Preference

5. Connect to remote server

$ /usr/local/bin/proxychains4 ssh user@remote.server

2013年6月15日 星期六

[Vim] vim configuration

我其實很少用vim ... 不過有時候在Mac用一下、Linux用一下,覺得沒存一下設定檔不行... 所以慢慢整理一份出來

See Also

http://vim.wikia.com/wiki/Example_vimrc

2013年6月3日 星期一

F2E前端工程師面試問題集 - Front-end Job Interview Questions

Fork me on Github : Front-end-Developer-Interview-Questions

[OSX] dotfiles - zsh based Terminal editor and configuration files.

My dotfiles: https://github.com/hankwang/dotfiles

Image 1

Image 2

[OSX] copy last command by pbcopy - 複製上一個指令到剪貼簿

例如測試一行command是不是正確的, 確認之後我想複製起來做筆記或是貼到別地方, 這時候就可以透過pbcopy達到快速複製的效果, 不用再用滑鼠去框。

$ ps -awx

把上一個指令複製到剪貼簿

$ echo "!!" | pbcopy

把上一個指令的最後一個參數複製到剪貼簿

$ echo "!$" | pbcopy

2013年6月2日 星期日

[git] Syncing a fork - 同步原本repo的修改到fork出來的repo

  1. 加入新的遠端repo
  2. 取回遠端repo
  3. 合併repo到master
  4. 解決conflict的commits

列出目前的遠端repo

$ git remote -v 
origin https://github.com/user/repo.git (fetch)
origin https://github.com/user/repo.git (push)

加入一個新的遠端repo

$ git remote add upstream https://github.com/otheruser/repo.git

註: upstream 為加入的遠端repo名稱, 可以自取


查看新加入的遠端repo

$ git remote -v

origin https://github.com/user/repo.git (fetch)
origin https://github.com/user/repo.git (push)
upstream https://github.com/otheruser/repo.git (fetch)
upstream https://github.com/otheruser/repo.git (push)

取回新加入的遠端repo的所有分支(branches)

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/otheruser/repo
 * [new branch]      master     -> upstream/master

查看目前本機和遠端的所有分支(branches)

$ git branch -va

* master                  a422352 My local commit
  remotes/origin/HEAD     -> origin/master
  remotes/origin/master   a422352 My local commit
  remotes/upstream/master 5fdff0f Some upstream commit

合併upstream的master到目前repo的master

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
README.md                 |    5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

如果merge時遇到conflict, 例如README.md conflict

$ git status

# You have unmerged paths.
#   (fix conflicts and run "git commit")
#
# Changes to be committed:
#
#   new file:   run.sh
#
# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#
#   both modified:      README.md

編輯README.md處理conflict的地方後, 重新commit

$ git add README.md
$ git rebase --continue

See also

Github - Syncing a fork

2013年5月22日 星期三

[Python] list pip installed packages - 列出pip已安裝的套件

List all installed packages - 列出所有已安裝的套件

$ pip freeze

Check specify package version - 查看某套件版本

$ pip freeze | grep Django

2013年5月10日 星期五

2013年4月25日 星期四

[NodeJS] Auto deploy by github hook

Github hook service會在有新的commit的時候觸發hook API(bitbucket也有), 這可以用在

  • 遠端Server自動部署, 才不用每次都ssh到遠端Server去git pull然後deploy一遍
  • 自動發訊息到團隊的協作平台或是寄發Email
  • ...

Github本身支援很多好用的服務, 那我是用WebHook在我的主機上, 當有commit時會觸發Server上的hook, 然後執行一個Shell Script, 自動git pull然後重新啓動我的Web Service

$ cd /var/web/project
$ git pull
$ forever restart /var/web/project/app.js

Code
https://github.com/hankwang/node-github-hook-deploy


2013年4月2日 星期二

[Linux] 使用 Crontab 定時執行程式

為什麼用 crontab ?

執行例行性的工作, 例:

  • 定期備份資料
  • 定期寄送Server log到某個Email
  • 定期檢查系統狀態

crontab 指令

$ crontab -l # 列出所有 cron jobs
$ crontab -r # 刪除所有 cron jobs
$ crontab -e # 編輯目前使用者的 cron jobs
$ crontab [-u  user] -l # 列出某個使用者的cron jobs (要有權限) 

時間格式 time format

  • minutes 0-59
  • hour 0-23
  • day of month 1-31
  • month 1-12
  • day of week 0-7 (0 or 7 is Sun)

crontab sample


See Also

crontab(5) - Linux man page

[Sublime Text] 我的Sublime Text 2設定檔

高亮目前選取行"highlight_line": true

停用Vintage模式 (Vintage Mode) "ignored_packages": [ "Vintage" ],

Soda樣式的tab"soda_classic_tabs": false

tab的大小"tab_size": 4

把tab轉為空白鍵"translate_tabs_to_spaces": true

存檔時移除不必要的空白"trim_trailing_white_space_on_save": true

偵測跑很慢的plugin, 會跳出警告"detect_slow_plugins": false

完整的設定檔

2013年3月23日 星期六

[Sublime Text Plugin] EasyMotion - 透過鍵盤移動滑鼠游標到指定位置

EasyMotion - 讓你用鍵盤就可以滑鼠游標及選取一塊程式碼

EasyMotion on Github

EasyMotion

透過Sublime Text Package Manager安裝

在Sunlime Text 2 使用 Cmd + Shift + P 然後 Install Package 安裝 EasyMotion

使用方式

移動滑鼠游標: Cmd + ; + 要到達的英文字

選取一塊區域: Shift + Cmd + ; + 要到達的英文字

EasyMotion 安裝與使用介紹影片

2013年3月22日 星期五

[Sublime Text] Run NodeJS file on Sublime Text 2

在Sublime Text的選單列 Tools -> Build System -> New Build System... 然後複製以下內容存成 JavaScript.sublime-build 放至

路徑:
~/Library/Application Support/Sublime Text 2/Packages/JavaScript


就可以透過Cmd + B(Ctrl + B on Windows)直接 Build :)

2013年3月18日 星期一

[Mac] 畫面截圖小技巧 Scrrenshot Tips


快捷鍵 Shortcuts


⌘ + Ctrl + Shift + 3   (全畫面截圖, 暫存於剪貼簿)
⌘ + Ctrl + Shift + 4   (框選要截圖的部分, 暫存於剪貼簿)
⌘ + Shift + 3   (全畫面截圖, 直接儲存)
⌘ + Shift + 4   (框選要截圖的部分, 直接儲存)
⌘ + Shift + 4, Space  (選取要截圖的視窗, 直接儲存)


更改預設畫面截圖儲存路徑


例如我把預設路徑設在~/screenshots (在Terminal中執行)

# 更改預設的畫面截圖儲存路徑
$ defaults write com.apple.screencapture location ~/screenshots/

# 重載畫面程序
$ killall SystemUIServer

2013年3月16日 星期六

[閱後筆記] 阿里巴巴-馬雲 與現代青年對話談創業



知足

永不放棄

兔子的速度, 烏龜的耐力

我買的這雙鞋子, 一定值錢, 因為我給做鞋的老太太一個希望

這件衣服是太太買的肯定值錢

天時地利人和

尋找機會, 到處都是機會, 只顧著埋怨, 也到處都是埋怨

我能站在這說話, 不是我會包裝, 而是為我工作的人努力出來的, 我只是站在這替他們說話

核心團隊是平凡的人, 有夢想的人(個人的夢想, 買車, 養家, 生小孩), 實在的人, 在完成自己夢想後, 我也可以為別人幹點事

團隊的最大資源是信任, 從來不留要走的員工

敢問敢想  積極看待

馬雲: 我是凡人

是兩萬多名員工給我的光環

榜樣都在你的周遭

想清楚自己要做的, 要點不要超過三個

客戶要的不是服務, 客戶要的是體驗


如果你是產品, 你要問你給客戶帶來什麼價值?

如果你是公司, 你要問你給社會帶來什麼貢獻?
信就是感恩, 仰就是敬畏

積極樂觀擁抱變化

從無做到有, 再從有做到無, 無所不在

森林裡的競爭, 獅子吃羊絕對不是因為獅子恨羊, 而是因為需要發展

想要成功你一定要永不放棄, 克服各種困難, 但你學會放棄的時候, 你才開始進步

使命感與價值觀去賺錢, 心裡踏實

我們做一件事情對社會有貢獻, 我們如果沒賺到錢, 這件事情一定對社會沒多大貢獻, 但是如果賺到錢了, 未必對社會有貢獻

社會上很多人都說, 孩子們不聽我們的話, 但是我不禁反思, 我們聽了孩子的話沒有

要心存理想, 看見社會積極樂觀的一面, 去改變的一面

答案由自己去證明它, 你覺得對的, 就去做

創業永遠挑選最容易做、最快樂做的事情

創業不是為了賺錢, 而是因為你喜歡做這件事, 那是最大的激情, 最大的動力所在

你選擇因為你喜歡, 你喜歡就不要抱怨

不是每個人都會成功, 但是有人會成功

誰會成功? 你勤奮, 你執著, 你完善自己, 你改變, 去影響別人, 去完善社會, 這樣的人會成功

從別人的失敗裡反思, 什麼樣的事情我不該去做

從別人的成功裡反思, 他為什麼成功

坦蕩的做自己, 我有什麼, 我要什麼, 我要放棄什麼

幸福是自己去找的, 不要怪別人富, 不要怪人家有錢, 而是我如何改變自己, 對社會有貢獻, 我尋找快樂, 我尋找幸福感

左手溫暖, 右手相信, 明天還會更好

我既然敢來這個世界, 絕不活著離開這個世界!

2013年3月11日 星期一

[有感而發] 中華隊是最棒的, 因為他們是我們的隊友


記不記得求學時期的我們曾經比賽過躲避球, 大隊接力賽, 籃球賽, 拔河比賽
記不記得老師和班上的每個同學在場邊的加油吶喊
記不記得我們贏得時候一起歡呼, 輸的時候互相打氣安慰
記不記得那些比賽, 不論勝敗, 卻能把整個班不分你我的凝聚起來

現在的你我或許要為了生存而奮鬥, 為了生活而拼命
但我們沒有失去我們心中的熱血和靈魂
我們只是換了一個戰場, 把我們心中所渴望的勝利托付給了中華隊

當他們勝利時我們一起感到光榮
當他們失敗時我們一起感到難過

中華隊拼盡全力的奮戰, 讓台灣人的心更加團結了起來

沒拿到冠軍, 那又如何? 請給予他們更多的支持和掌聲。

"中華隊是最棒的, 因為他們是我們的隊友"

[Sublime Text] 解決編譯Python時無法找到相關模組 No module named xxx when build Python

OS: Mac OSX 10.8.2
Sublime Text Build: 2220

當用Cmd+B Build Python時, 會發現即使已經安裝的模組還是無法Build

ImportError: No module named xxx

所以藉由加入Module路徑到Sublime Text設定檔的Python.sublime-build裡來解決

編輯Python.sublime-build
subl ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/Python/Python.sublime-build

加入PYTHONPATH到設定檔中即可

[Shell Script] 批次更名 One-Liner command to rename multi files

批次修改多個檔案

[Shell Script] 產生十個檔案 One-liner command to generate ten files

有時候可能要測試上傳或是做一些批次檔案處理, 用以下one-liner command自動產生十個檔案


2013年3月6日 星期三

[閱後筆記] 放膽去闖:大前研一和柳井正給你走到哪都能生存的大能力



ISBN: 9789862167731


這本書是透過大前研一和柳井正的對話在討論日本的現狀, 和未來可以實行的解決方法和方式。

從企業國際化、政府改革聊到如何教育下一代, 鼓勵年輕人勇於創業而不是只求安定。我覺得內容講的很多情境跟目前的台灣很像,我們也應該認清現況, 並加以改善。

---
內容筆記:

人一旦害怕風險, 就會什麼事都做不成。

成功之時的「自我否定」比「自我肯定」更必要。

在全球化的世界裡,必須致力研究「沒有答案的學問」。國家應該要培養這種人才。

現在的年輕人不具競爭意識,所以也不會想和世界各國比較,當然更不可能理解自己和國家處於什麼狀況中,只會沉浸在往日榮景,如紡織娘般地忘情高歌。

技術差距縮短,產業競爭力不再

企業記憶管理
1. 分享資源(包括分享失敗經驗)
2. 資訊、技術、人脈的保留
3. 合作廠商資料

對成功者課重稅會削減國力

年輕人只求「安定幸福」已是一種病, 喪失工作熱情與企圖心的下場
往往成長到某種程度後, 就志得意滿,不思長進。

應保持求知若渴的心態,不滿足於現狀,放眼世界,帶著萬物皆為我師的熱忱繼續打拼。

透過事業對社會有所貢獻、改善社會的信念。

不要拒絕變化和挑戰。

商務人士會主動思考、行動,但上班族只會按照上司指示工作,畫地自限,只完成範圍內的業助。

沒武器又不學基本功的員工太多

不是「你想賣什麼」,而是「顧客想要什麼」

「企業目的的有效定義只有一個,那就是創造顧客」-- 杜拉克

顧客想要什麼,提供顧客期望的新價值

顧客會想推薦給親友的商品

洞察(發現問題本質)  > 知識

學會解決問題的方法、自主思考、付諸行動

以世界為目標,機會擴大五十倍

對自己要有更多的期許,激勵身邊人

每個人都是知識工作

設立目標,實際付諸行動

全球化就是最大商機,不要拘泥國內市場

找出全球共通點,在全世界尋找市場

在自己國家內再怎麼努力,都會因為人口和經濟規模限制很快就會面臨極限

美國奇異公司:企業的將來取決於培育多少領袖

每週安排教育課程, 營業額1%做人才培育

三星把員工送往新興國家建立人脈,一邊可能成為未來市場的國家建立商業基礎

以英語為公司內部公用語(會議、文件)

把TOEIC列為綠取與升遷標準

由企業改變國家

貢獻當地社會才是全球化企業

近江商人日久彌新的古訓:「三方滿意」(賣方、買方、社會)

企業和產業不能與時俱進就會滅亡

國家應培育政治人才,有計畫地派遣他們出國視察,派他們到企業或工廠地一線學習,了解經濟實況。

把教育的中心思想轉換成培運「任何企業都想要的人才」。過去把重心都放在考試的教育、以及不念書也可以畢業的大學早已被時代淘汰。毫無實務經驗、只做學術研究,或是只教擅長領域的教授,也是無用之物。社會人士與商務人士所需的教育應該提早到從學校教育的階段,而不是由企業執行。

"走出日本,然後再回到日本"

全世界沒有一個國家有高達四分之一的20到29歲社會人士會回答存錢的目的是「為晚年做準備」。不思索該如何投資自己,強化「謀生力」,只想在穩定的大企業工作,順利升遷,過安定的生活。

在世界這個廣大的叢林裡尋求謀生之道,磨練存活下去所需的溝通力、專業力與經營力。帶著滿腔的雄心與不撓的勇氣,走出國家吧!

Related Posts Plugin for WordPress, Blogger...