2015年3月19日 星期四

Python note:lambda、filter、map、reduce

lambda:
匿名函數(wiki:匿名函式(英語:anonymous function)是指一類無需定義識別元(函式名)的函式或子程式,普遍存在於多種程式語言中。)
簡單來講就是將code當資料傳遞,且用完即丟
(ps: "()"代表可省略)
lambda ([函式名稱]) [傳入值] : [回傳]
example:
>>>lambda add x,y : x*y
>>>add(2,3)
5


filter:
過濾器,在眾多個元素中選出符合條件的元素
filter([條件] , [元素])
>>> filter(lambda x:x%3==1 , [1,2,3,4,5,6])
[1, 4]


map:
將運算套用在每個元素上,並傳回結果
map([運算] , [元素])
>>> map(lambda x:x*2, [0,1,2,3])
[0, 2, 4, 6]



reduce:
遍歷每個元素作運算,並傳回最終結果
reduce([運算] , [元素])
>>> reduce(lambda x,y : x*y,[1,2,3,4])
24


References:


Git新手實作教學(1)

#為什麼要叫新手呢?因為教的人是新手啊ヽ( ・∀・)ノ


Git安裝:
ubuntu直接下指令
apt-get -y install git-core git-doc git-gui gitk
其他的作業系統安裝請參考


Git設定:
輸入以下指令
git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL ADDRESS"
上面兩個分別是設定username和email,這步驟一定要先作,要不然之後commit會出錯
設定完之後就可以開始使用了,一開始得先在你的專案下建立git的...
git init
這邊以ubuntu作業系統為例,首先在專案下建立一個README.md的檔案
vim README.md
輸入hello world後儲存離開
若不會使用vim者可以用記事本建立


Git查詢狀態:
git status
這個指令的用處是查詢目前檔案狀態,同時也會提示你下一步該怎麼做
這時候會出現以下訊息
Untracked files:
 (use "git add <file>..." to include in what will be committed)
意思是你還沒把新建的檔案加入容器中


Git添加、修改、刪除檔案:
可以使用
git add README.md
將README.md檔案加入git
這裡還有個更方便的快捷指令
git add .
意思是將所有新增或修改的檔案加入
任何的檔案經過新增或修改時,都必需要從新add
若要移除檔案也需要透過
git rm
來移除


Git提交:
當添加或修改完檔案時就可以將這次的動作提交並作紀錄
使用
git commit
會進到git內建的文字編輯器,在裡面輸入提交的訊息即可
但因為git內建的編輯器實在不怎麼好用,所以我習慣用快速指令
git commit -m ‘first commit’
這會直接提交單引號裡輸入的內容而不用透過編輯器
每一次的修改都需要經過git add和git commit來保存狀態,說實在還是有點麻煩
因此這裡有個快速指令
git commit -am 'commit text'
這相當於是使用
git add .
git commit -m ‘commit text’
兩個指令
但有個缺點就是,不適用新增的檔案
另外提交了話是要在有添增或修改或刪除時才可以提交


Git查詢commit:
指令
git log
git log HEAD^
可查看上一筆等同於以下指令
git log HEAD~1
git log HEAD~2
上面的指令可查看上上一筆,依此類推
更多git log的使用可參考

待續...

2015年3月18日 星期三

Python識別簡單的圖形驗證碼

其實以下內容主要都來自這篇 http://www.waitalone.cn/python-php-ocr.html 
但是原作者所用的開發環境是windows,身為Linux的愛好者當然要把他拿來Linux上玩玩
要使用這個套件首先需要安裝三個函式庫,分別為PIL、tesseract-ocr和pytesseract
很簡單的只要使用以下指令即可

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg8 libjpeg62-dev libfreetype6 libfreetype6-dev
sudo apt-get install tesseract-ocr
sudo easy_install pip
sudo pip install Pillow
sudo pip install pytesseract


安裝好後就可以開始寫code了,輸入以下

try:
    import pytesseract
    from PIL import Image
except ImportError:
    print "Error, Please install pytesseract and PIL"
    raise SystemExit
image = Image.open('captcha.png') #圖檔名稱
number = pytesseract.image_to_string(image)
print "The captcha is:%s" % number

若有顯示出名稱了話就代表成功辨識
於是就開始各種實驗了,試了以下圖片
print: The captcha is:231074
print: The captcha is:6K4L2
print: The captcha is:WMBHP
print: The captcha is:qub JD
print: The captcha is:
實驗結果:
看來成效不彰啊......( = A = |||
不過可以知道的是他支援可辨識的圖檔有.jpg .gif .png......其他還沒測試
那麼下次見吧 (´・ω・)

2015年3月12日 星期四

Eclipse Tomcat無法啟用解決辦法

最近在寫JSP的時候又遇到的一個問題
就是Tomcat無法開啟,他報錯的原因是因為8080 port被佔用了
可是明明昨天還好好的啊!
後來想到原來是早上在上課時老師要我們安裝其他協定
結果就把我的8080 port給占走了
後來把該協定停止運行後Tomcat還是開不起來
於是去查了之後發現可以用Docker模擬Tomcat環境解決問題
但是我現在急著就要測試我的專案啊!!!
於是就把課堂上安裝的協定移除(反正之後裝回來就好,而且又沒用到)
但Tomcat還是報同樣的錯誤,於是又開始爬文
最後找到了一個方法,照以下步驟

1. 關掉eclipse
2. 把Tomcat目錄底下的conf資料夾的內容全部複製到workspace/Servers/Tomcat v8.0 Server at localhost-config
3. 打開eclipse重新整理Servers資料夾
4. 開始Tomcat
5. 解決

這些步驟就是將Servers重新配置的方法
心得:看來要好好學習Docker了 (´・ω・)

Reference:
http://lucasterdev.altervista.org/wordpress/2012/05/12/could-not-load-the-tomcat-server-configuration-at-serverstomcat-v7-0-server-at-localhost-config-the-configuration-may-be-corrupt-or-incomplet/

2015年3月5日 星期四

Ubuntu下解決Google Chrome無法輸入中文

話說前幾天重灌Ubuntu的時候,安裝Chrome時
安裝完後發現我的Chrome竟然無法輸入中文!!!
但是在其他地方卻是可以使用中文的,因此確定是Chrome的問題後
重裝幾次、重開機幾次還是無法得到解決
後來爬文後發現是我的Chrome安裝錯誤
因為我的Chrome是32位元,但我電腦是64位元
因此把原先的Chrome移除後
在Terminal輸入以下代碼即可移除
sudo apt-get remove google-chrome-stable
接著重新安裝64位元問題得到解決