2014年1月16日 星期四

linux 下載 youtube

最近想把youtube的影片載下來,不過卻發現大部分的軟體都是for windows,之前常用的chrome 附加元件也因為youtube的改版導致失效,所以找了一個linux用的工具分享給大家


1.首先先安裝youtube-dl

sudo apt-get install youtube-dl



2.安裝完之後,就把要下載的youtube網址複製後貼到指令後面


youtube-dl   -F   {video URL}




3.接著就會看到youtube-dl會偵測可下載的格式,讓您選擇






4.選擇要下載的格式,加入參數,譬如我想下載mp4 360x640,就輸入 youtube-dl  -f   18  {video URL}


youtube-dl  -f  {format code} {video URL}


example :
youtube-dl  -f 18 http://www.youtube.com/watch?v=VeZ0_ZFtQx8

如果搭配linux的背景執行(CTRL+z),就可以同時下載多個檔案
很方便的工具,推薦給跟我一樣愛好linux的使用者




參考來源
http://community.linuxmint.com/tutorial/view/1040

2013年9月22日 星期日

vim plugin 推薦 (For python and java )

之前有提過如何安裝vundle來管理vim的plugin,這邊來推薦我主要使用的一些plugin。
如果您對於vim的plugin安裝有問題,請參考上一篇。如果對於基礎的vim不熟,請參考鳥哥
上一篇已經有提到SnipMateThe-NERD-treetaglist這三個必裝的plugin,所以這邊就不多介紹了,當中的taglist,大家可以改安裝Tagbar,因為我發現taglist對直譯式的語言(如python)支援度不好。

AutoComplPop

AutoComplPop是一個會自動幫你補齊的plugin,當你在輸入電腦路徑或是輸入字時,會自動尋找補齊,有點像google在搜尋時的功能。

EasyMotion

EasyMotion是一個可以快速跳躍到你想要的段落plugin,EasyMotion就會把第一個字取代成英文a-z,你可以輸入英文,選擇你要跳躍的地方。

因為內建的熱鍵會跟其他衝突,所以我先在.vimrc修改熱鍵

let g:EasyMotion_leader_key = '\'

啟動方法是先按兩次熱鍵,接著按下 w,就會啟動EasyMotion
網路上很多人推薦,不過我很少用他,還是寫給需要的人看



這算是個比較小品的plugin,做的事很簡單,因為寫程式常常需要用當括號,所以當你輸入左半邊的括號,譬如{,他會自動幫你補成{},雖然簡單,但很實用,可以減少bug形成。


Syntastic會自動幫你檢查語法錯誤,目前支援大部分的主流語言(php、java等),安裝完後要手動打開,在.vimrc中加入

 let g:syntastic_check_on_open = 1 

然後寫完程式之後按儲存(:w),就會顯示出錯誤的地方,底下會顯示錯誤的原因


一個會像eclipse一樣,顯示函式庫的plugin,安裝完後要在.vimrc中加入

 setlocal omnifunc=javacomplete#Complete

:上面的#Complete不是註解,請不要亂刪,不然會像我一樣,花好幾天裝不起來
預設是按熱鍵補齊,不過如果想要像eclipse一樣,在關鍵字後加入.就會顯示,可以加入這行





python用的補齊plugin,預設補齊鍵是TAB,因為熱鍵會跟SnipMate相衝,所以建議用Ctrl+n來補齊,裝好之後需要在.vimrc中加入路徑

 let g:pydiction_location = '/home/ben/.vim/bundle/Pydiction/complete-dict' 

:上面的路徑每個人都不太一樣,要注意一下

匯入Django步驟如下(參考來源)

Django是python的web framework,但pydction預設是不支援Django,這時候只要把Django匯入進來就好(前題是你python有匯入Django)

cd /usr/local/lib/python2.6/dist-packages
find django -type d > /var/tmp/django_pkgs.sh
vim /var/tmp/django_pkgs.sh

在vim中輸入
:%s!/!.!g
:%s/\n/ /

接著修改django_pkgs.sh
第1行:export DJANGO_SETTINGS_MODULE=settings
第2行:export PYTHONPATH='django project中有setting.py的路徑'
第3行:加入 python ./pydiction.py 看起來會像這樣
python ./pydiction.py django django.contrib django.contrib.redirects ......


跳出vim 執行sh django_pkgs.sh

熱鍵補齊: Ctrl+n




跟Syntastic功能一樣,但只檢查python語法,Syntastic本身也有檢查python的功能,只是我習慣寫python時用這套

有時候需要寫網頁,這個工具可以幫你補齊網頁的標籤
當你輸入html或body之後按,會自動幫你補成對齊的標籤

程式碼折疊
vim本身有支援程式碼折疊,只要在.vimrc中加入

"folding
 set foldenable 
 set foldmethod=syntax 
 set foldcolumn=0 
 nnoremap @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')

就可以使用空白鍵來折疊程式碼


Compile

當寫好程式,需要compile時,常常都要跳出vim蠻麻煩的,所以可以把compile的動作寫入.vimrc,設定熱鍵,以後只要按下F5就可以依照不同的檔案類型去compile,察看結果



這邊只列出我可能會用到的,有需要的人自己再加

其他

有些人可能還會用到SQL語法之類的,可以考慮SQLComplete.vim的plugin,不過我還沒試過,有興趣的可以安裝看看

vim還有很多用途,譬如我有時候會寫英文,可以用vim來做查單字驗證之類的,不過這跟程式比較沒有關,有空再來寫另一篇

感想

我覺得vim很符合computer science一句名言-「smaller is faster」,只需要一個micro kernel,當有需要擴充時,才去動態鏈結模組進來,大家可以先忘掉那肥大的IDE,來試看看輕巧又強大的VIM.

2013年8月24日 星期六

vim plugin 安裝

  vim編輯器,對於長期使用windows的使用者來說應該比較陌生,不過如果使用過eclipse或dev c++這類的IDE,可以考慮一下vim。

  理由

為什麼有eclipse還要使用vim呢?之前我使用eclipse時,的確有可攜性、方便擴充、自動補齊、支援多種語法等等優點。也因為eclipse強大的功能,造成啟動時,慢、消耗不少記憶體等缺點。
而vim結合了eclipse上述的優點,卻是一個輕量級的編輯器,並且有大量的plugin,可以自己打造最適合自己的工作環境,這邊不解釋基本的vim操作,需要的可以參考這篇

vim可支援大部分的程式語言,只要檔名設定好即可,不需要寫python用一套IDE,寫java用另一套。

vim一樣可跨平台,同時支援windows、linux、Mac等系統(可參考)。

安裝plugin(以linux為主)

不過vim不是預設就有強大的功能,需要經過一些調校才會好用。

首先我們要先安裝vundle來管理plugin,vundle是個很實用的管理plugin的工具,它像linux的軟體管理中心一樣,自動搜尋、安裝、更新plugin,不必像之前要個別去github抓plugin,然後還要注意是否有新版。

一開始我們要先安裝git和vim

sudo apt-get install git vim

安裝完後,因為vundle本身也是plugin,所以還是要手動抓下來

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

抓下來後,要去編輯家目錄的.vimrc,有時候預設會沒有檔案,所以要自己建

vim ~/.vimrc

plugin格式大約如下(完整格式可參考這裡)

Bundle 'gmarik/vundle' "有一個以上同名的plugin要指定作者,譬如'作者名/plugin name'

Bundle 'FuzzyFinder' "只有一個就不用

vundle有一些指令可以在vim中使用
 " :BundleList          - 列出可用的plugin,移到plugin上,按i即可安裝
 " :BundleInstall   - 安裝你寫入.vimrc的plugin,已安裝的話就檢查更新
 " :BundleSearch [name] - 搜尋plugin,移到plugin上,按i即可安裝


plugin推薦

接下來就是自由選擇想要的plugin,打造出最適合您的coding環境,因為plugin非常多種,所以我只列出我比較常用到的

自動補齊的程式碼的plugin,首先要在.vimrc 中加入

Bundle "MarcWeber/vim-addon-mw-utils"
Bundle "tomtom/tlib_vim"
Bundle "garbas/vim-snipmate"
Bundle 'honza/vim-snippets'

然後輸入:BundleInstall之後,就會開始安裝,安裝完之後,我們就先測試撰寫java看看

vim abc.java

我們先輸入main



按下tab,它就會自動幫你寫成像這樣




其他像c語言的話
輸入for,之後再按,就會自動變成
for (i = 0; i < count; i++) {
    /* code */
}
目前支援大部分的語言,包含C、java、python等大部分的程式語言,是個寫程式不可或缺的plugin。


The-NERD-tree
一個讓你不用跳出vim就可以打開其他文件的plugin

一樣在在.vimrc 中加入Bundle 'The-NERD-tree',再輸入:BundleInstall安裝

有時候當專案比較大一點時,程式會切割成不同檔案,利用Nerd-tree可以開啟需要的檔案
安裝後可輸入:NERDTree測試,像右邊這樣,會看到當前的目錄結構
如果嫌每次都要輸入太麻煩,可以在.vimrc設定熱鍵,以後按F5就可叫出使用
 nnoremap :NERDTree

然後NERDTree預設在左邊,可以加入以下的設定,改到右邊
 let g:NERDTreeWinPos = "right"

以下是一些NERD-Tree常用的熱鍵

ctrl+ww 切換目錄視窗和程式碼視窗
方向鍵+enter 選擇要開啟的檔案


taglist
taglist可以看到程式碼中函式和變數,方便你追蹤

安裝taglist之前,要先安裝
apt-get install exuberant-ctags

然後在.vimrc 中加入Bundle 'taglist.vim',再輸入:BundleInstall安裝
在vim中輸入:Tlist,就會看到程式碼中的函式和變數
如果嫌每次都要輸入太麻煩,可以在.vimrc設定熱鍵,以後按F6就可叫出使用
 nnoremap :Tlist
一樣按ctrl+ww切換左右游標

最後

最後還有一些自己.vimrc常用的設定
syntax on 顯示顏色
set number 其他顯示行號
對於plugin有問題,可以在vim中輸入:help [plugin name]
vim還有許多非常優秀的plugin,礙於篇幅就不介紹了,有興趣的自己google就會看到很多,
譬如常寫python,可以搜尋vim plugin python,參考其他高手怎麼設定的
當熟悉vim時,會發現vim是一個輕巧卻威力強大的工具,而且可以隨意配置plugin,符合自己的需求,如果講了這麼多,還是不想使用vim,那只能讓google大神跟你說為什麼了
沒錯,真男人就要用VIM

2013年8月18日 星期日

自動發email通知網站錯誤的小程式 (python)

身為一個資工人,常常都要管大大小小的網站,所以用python寫了小程式,當網站出現錯誤時,會寄email通知您,這樣就不用三不五時去確認網站是否存活

附上原始碼
因為開發環境是linux,理論上windows有安裝python 2.7 的話,執行上是沒問題的

linux的用戶可以利用crontab去排程(linux排程教學
windows的用戶可以利用內建的排程,每小時執行程式一次(windows 排程教學
建議排程時間設一小時以上,不然睡個覺起來,可能就會收到五十分警告信

最後,python真的是蠻簡潔的程式語言,不用30行就可以做出不錯的小工具
不過我才剛開始學,請大家鞭小力一點,謝謝

2013年5月8日 星期三

dd-wrt 無線分享器 刷機

dd-wrt介紹
dd-wrt是以Linux為基礎的無線分享器韌體,雖然是第三方的韌體,但dd-wrt提供了許多一般分享器沒提供的功能,穩定性也蠻好的,連知名的Buffalo也跟dd-wrt合作推出官方版dd-wrt,就可以知道dd-wrt是蠻成熟的韌體,有興趣的人可以參考看看。


查詢是否支援?

首先到dd-wrt(support->Router Database->輸入廠牌)中,確認是否有支援您的分享器,譬如阿翔手上的是ASUS RT N-12,如果沒有支援,就無法繼續安裝了,這張表也可以當作以後購買分享器前的參考

##CONTINUE##

版本介紹

這邊看到五個檔案,會隨分享器不一樣,看到的數量不一樣,不過從名字上很容易看出差別

1.Asus RT-N12 Firmware:如果分享器中的韌體還是原始官方的,要先安裝這版本
2.NEWD K2.6 Mini Generic:之後如果dd-wrt有更新,使用這版本更新
之後的三個版本是給有特殊功能需求的人安裝的,例如:VPN or VoIP


安裝

接著先把分享器恢復出廠設定,一般都是拿尖銳物去壓分享器後的reset按鈕幾秒鐘(可參考官方說明書),然後找台電腦連入分享器做設定。
一般都是在瀏覽器上輸入192.168.1.1,輸入帳號密碼設定

進入管理介面後,尋找韌體更新的選項,上傳剛剛下載有註明 Special image for initial flashing的檔案,上傳完成後,大約會等個2~5分鐘,就會看到dd-wrt管理介面,這時就成功了。


 
還有設定哪幾天可以上網的功能
以Linux為基礎,所以可以telnet 192.168.1.1進入分享器做細部設定,譬如有用P2P的人可以修改session上限,可參考官方的指令設定

基本的DHCP、NAT、pppoe功能都有,其他的功能可參考wiki

2013年3月21日 星期四

[java GUI ] eclipse plugin - WindowBuilder (swing SWT)

  最近在學習如何撰寫java GUI介面,不過找了幾本書,發現大部分都是教導-如何直接用程式碼寫刻出GUI。
大概像這樣,要寫不少code,才能出現一個視窗

  話說之前大學時接觸過Microsoft的 .NET,對於java的這種設計方是真的不太能接受。
因此就比較了幾款eclipse的GUI plugin,找到了大家較為推崇的WindowBuilder。

  要來介紹WindowBuilder,當然要先談WindowBuilder的來歷,WindowBuilder本來是屬於Instantiations公司,一套知名的java圖形化設計工具,後來被Google以五百萬美金買下後,以open source的方式捐贈給eclipse的基金會,才造就我們有這麼方便的工具可以使用,不過也似乎因為這樣,造成原本就免費的圖形化設計工具-Visual Editor(VE)和Jigloo停止繼續支援新版的eclipse。

 ##CONTINUE##
安裝

接下來介紹如何把WindowBuilder安裝到eclipse中,主要參考來源WindowBuilder User Guide

據說下載連結壞掉了,因此補上另一個網址

Installing WindowBuilder Pro


1.首先進入網頁,點選Download,會看到以下的資訊


選取相對應eclipse版本的網址,這邊以3.7版本為例子。


2.打開你的eclipse,按下 Help > Install New Software > Add
Name:可以自己命名
Location:輸入剛剛複製的網址
3.接著會出現四個選項,全勾就好,按下Next之後,會有版權聲明,按下I accept......就好
會出現Security Waring,選擇ok,接著重新啟動eclipse

使用

啟動eclipse後, 按下File > NEW > Other,會跳出wizard視窗


WindowBuilder >Swing Designer >JFrame  >自行命名名稱



選擇左下角的Design,就會看到component可以直接用選取的方式產生了,每個
component也可以像.NET一樣,設定屬性

,選擇Source會看到WindowBuilder幫你產生的code,有需要可以再修改






2013年3月10日 星期日

klip.me and kindle 筆記活用術

   在之前的文章有提到電子墨(e-ink)的優點,相較於手機平版來說,電子墨(e-ink)更接近紙張的效果,所以使用電子墨(e-ink)的設備閱讀時,不會像一般手機平板一樣,看十五分鐘就會感覺眼睛疲勞。

 雖然有以上的優點,但電子書最重要的還是「內容」,所以這篇文章主要是一些我使用kindle paperwhite的一些心得


最基本的當然是手上要有台kindle paperwhite(圖片擷取自amazon)
##CONTINUE##
1.books
  電子書的來源大致上可分為兩類-官方非官方,首先介紹如何在amazon購買書籍,首先到amazon註冊帳號,然後再用剛剛註冊的帳號,從kindle 上登入,接著再挑一本您喜歡的書,選擇kindle的版本。


1.選擇裝置(例如kindle or Ipad)
2.可以先寄送試讀本到裝置上

























  確定要購買書籍後,可以使用visa卡或是去網拍購買gift card來結帳。購買成功後,書本就會利用wifi發送到您的閱讀裝置上。
  
  非官方的則可以參考愛看豆子烏書簡,這裡有版權問題,所以希望大家,遇到真的喜歡的書,還是盡量尊重智慧財產。


2.RSS & articles
  接著來介紹如何把RSS、網頁或新聞轉到kindle上
首先到Klip.me上選擇send to kindle,然後用google的帳號申請登入


接著到amazon上登入自己的帳號
1.選擇your account-->manage your kindle
2.選擇左邊的Personal Document Settings


1.這裡會顯是您擁有的裝置
2.裝置接收文章的mail address
3.修改mail address
4.允許寄送的地址
因為amazon要避免有人把垃圾信件或廣告推送到你的kindle上,所以在4的部分是採用白名單的方式,也就是有列在上面的email,才能發送訊息到您的kindle,為了要使用Klip.me的推送功能,我們新增kindle@klip.me到名單上。




接著安裝chrome的klip.me套件
安裝完成之後,會要求您輸入剛剛amazon所顯示的地址,譬如我的kindle裝置的address為your@kindle.com,到這邊就大功告成了。




rss也可以藉由klip設定

進入klip.me的網站,點選My klips,也可以設定rss,可以選擇每日推送的時間,不過rss的訊息一般都較為凌亂,所以我習慣過濾文章後,才推送到kindle,有興趣的人可以自己設定看看

3.測試
接著就來測試是否可以推送成功。

到Newsweek看到喜歡的文章,把要發送到kindle的文章反白,再點選瀏覽器右上角剛剛安裝的套件,k樣式的圖案,過個一兩分鐘,就會看到kindle上有您擷取的文章出現。





4.優點
  最後來說明一下使用這種推送方式的優點,kindle paperwhite上有非常強大的字典功能,只要對看不懂的單字長按兩秒,就會出先該單字的翻譯,翻譯的字典也可以自行更換,另外點選字典的書本,還能按下search去查單字(不能發音就是)。






對於有想要增加英文閱讀能力或是需要看英文論文的學生,kindle paperwhite是個很實用的裝置。