最近在django的教學中看到的pip指令
freeze,能夠得知目前環境下透過pip安裝的套件
看來以後要盡量用pip安裝套件,方便日後變更環境
重新架設開發環境。
2014年9月13日 星期六
2014年5月10日 星期六
撰寫python常見的十大錯誤
原文如下:
http://www.toptal.com/python/top-10-mistakes-that-python-programmers-make
這篇文章列出了在撰寫Python時,常犯的錯誤
內容也稍微帶出了一些Python內部實做的細節
先寫下一點簡單的個人摘要,改天來翻譯一下好了
1. 誤用函式的參數:
python 的 函式參數是在函式宣告時就定義完畢,而且也只會定義一次
(the default value for a function argument is only evaluated once, at the time that the function is defined.)
int, float參數是沒啥感覺,但在list時,很容易誤以為每次都會產生新的list
實際reference是指向同一list
2. 誤用 class 變數:
子類別沒有特別override 父類別的變數時,子類別物件的變數其實都指向同一變數(即父類別的變數),會導致改了一個兒子,其他兄弟手上也跟著變
3. 例外處理沒正確捕捉
「except ValueError, IndexError:」的寫法只會看到ValueError, 後面的IndexError會被忽略,改成「except ( ValueError, IndexError ) as e:」就都能catch了
4. 誤解了Python 的 變數Scope
若想在函式內修改global 變數時,不要用assign operater (像是 += )
在函式內使用 += 時是會看區域變數,實際上當然沒有這個local變數
最後出現unboundLocalError, 畢竟等同於「尚未宣告就先指定值」
5. 在迭代list時修改了它
迭代過程中,刪除了list中的元素, 引發error
它建議是另開一個list, 迭代原list,並將符合條件者存入
反正沒被reference到的memory會被python的garbage collection回收
6. 弄錯Python的Closures實做
這部份要先去理解Closures(閉包),上次接觸這個名詞是在看JavaScript
的書,我記得好像是跟變數的生命週期有關.......
------待補-------
7. module互相引入
在架構上要注意這點,如果出現了互相引用,大概代表
功能之間的相依性有問題。
8. 取名時不小心跟標準函式庫一樣
盡量避免取什麼專有名詞的module吧
9. Python2.x 與 Python 3的寫法有點不同
說真的....我到現在都還是2.7版
------待補-------
10.誤用__del__ method
------待補-------
http://www.toptal.com/python/top-10-mistakes-that-python-programmers-make
這篇文章列出了在撰寫Python時,常犯的錯誤
內容也稍微帶出了一些Python內部實做的細節
先寫下一點簡單的個人摘要,改天來翻譯一下好了
1. 誤用函式的參數:
python 的 函式參數是在函式宣告時就定義完畢,而且也只會定義一次
(the default value for a function argument is only evaluated once, at the time that the function is defined.)
int, float參數是沒啥感覺,但在list時,很容易誤以為每次都會產生新的list
實際reference是指向同一list
2. 誤用 class 變數:
子類別沒有特別override 父類別的變數時,子類別物件的變數其實都指向同一變數(即父類別的變數),會導致改了一個兒子,其他兄弟手上也跟著變
3. 例外處理沒正確捕捉
「except ValueError, IndexError:」的寫法只會看到ValueError, 後面的IndexError會被忽略,改成「except ( ValueError, IndexError ) as e:」就都能catch了
4. 誤解了Python 的 變數Scope
若想在函式內修改global 變數時,不要用assign operater (像是 += )
在函式內使用 += 時是會看區域變數,實際上當然沒有這個local變數
最後出現unboundLocalError, 畢竟等同於「尚未宣告就先指定值」
5. 在迭代list時修改了它
迭代過程中,刪除了list中的元素, 引發error
它建議是另開一個list, 迭代原list,並將符合條件者存入
反正沒被reference到的memory會被python的garbage collection回收
6. 弄錯Python的Closures實做
這部份要先去理解Closures(閉包),上次接觸這個名詞是在看JavaScript
的書,我記得好像是跟變數的生命週期有關.......
------待補-------
在架構上要注意這點,如果出現了互相引用,大概代表
功能之間的相依性有問題。
8. 取名時不小心跟標準函式庫一樣
盡量避免取什麼專有名詞的module吧
9. Python2.x 與 Python 3的寫法有點不同
說真的....我到現在都還是2.7版
------待補-------
------待補-------
2014年3月2日 星期日
python中zip函式的範例,matrix transpose 及 split string to same size chunk
>>a = [ [1,2,3], [4,5,6], [7,8,9] ]
>>zip( *a ) # 等同於 zip( [1,2,3], [4,5,6], [7,8,9] )
>>[ (1,4,7), (2,5,8), (3,6,9) ] # 矩陣轉置
zip 會擷取每個迭代物件所對應的元素放入tuple中
第一個tuple 內含每個list的第一個元素,第二tuple 則是第二元素
以此類推。
>> s = 'abcdefghi'
>>zip( *[iter(s)]*3 )
>>[ ( 'a', 'b', 'c' ), ( 'd', 'e', 'f' ), ( 'g', 'h', 'i' ) ] # 字串切割成一塊塊
將字串切成同樣字元數的範例原理是因爲迭代器 iter
在每次呼叫時都會以 __next__ 取出一個元素
而在 [ iter(s) ] * 3 這步驟,並不是生成三個迭代字串s 的list
而是生成一個list, 裏面的三個元素的參照都指向同迭代器
>> [ iter(s) ]*3
>> [ <iterator object at 0xaddress>, <iterator object at 0xaddress>,
<iterator object at 0xaddress> ]
因此當zip 在生成第一個tuple時,在list元素一的iter 回傳字串的第一個字
而去list元素二時,由於仍是同一個迭代器,此時會回傳第二個字
以此類推。
感覺像是這樣:
tuple1 tuple2 tuple3
---------- ---------- -----------
abcdefghi abcdefghi abcdefghi
abcdefghi abcdefghi abcdefghi
abcdefghi abcdefghi abcdefghi
>>zip( *a ) # 等同於 zip( [1,2,3], [4,5,6], [7,8,9] )
>>[ (1,4,7), (2,5,8), (3,6,9) ] # 矩陣轉置
zip 會擷取每個迭代物件所對應的元素放入tuple中
第一個tuple 內含每個list的第一個元素,第二tuple 則是第二元素
以此類推。
>> s = 'abcdefghi'
>>zip( *[iter(s)]*3 )
>>[ ( 'a', 'b', 'c' ), ( 'd', 'e', 'f' ), ( 'g', 'h', 'i' ) ] # 字串切割成一塊塊
將字串切成同樣字元數的範例原理是因爲迭代器 iter
在每次呼叫時都會以 __next__ 取出一個元素
而在 [ iter(s) ] * 3 這步驟,並不是生成三個迭代字串s 的list
而是生成一個list, 裏面的三個元素的參照都指向同迭代器
>> [ iter(s) ]*3
>> [ <iterator object at 0xaddress>, <iterator object at 0xaddress>,
<iterator object at 0xaddress> ]
因此當zip 在生成第一個tuple時,在list元素一的iter 回傳字串的第一個字
而去list元素二時,由於仍是同一個迭代器,此時會回傳第二個字
以此類推。
感覺像是這樣:
tuple1 tuple2 tuple3
---------- ---------- -----------
abcdefghi abcdefghi abcdefghi
abcdefghi abcdefghi abcdefghi
abcdefghi abcdefghi abcdefghi
2014年2月23日 星期日
於python使用opencv的imread 可能會忽略的小地方
最近在利用python與opencv 在做影像相關的work
其中我需要知道每一pixel在RGB下 ( B-R ) / ( B+R )
的比例。
然而跑出來的值非常詭異,在查閱文件後
發現問題出在opencv的imread下
imread 在讀檔後所回傳的資料為numpy.ndarray
維度為影像的長乘上寬,每一element為一tuple
但資料型態是 「numpy.uint8」,當在做pixel運算時
如果有碰到負數則會出現錯誤的值。
其中我需要知道每一pixel在RGB下 ( B-R ) / ( B+R )
的比例。
然而跑出來的值非常詭異,在查閱文件後
發現問題出在opencv的imread下
imread 在讀檔後所回傳的資料為numpy.ndarray
維度為影像的長乘上寬,每一element為一tuple
但資料型態是 「numpy.uint8」,當在做pixel運算時
如果有碰到負數則會出現錯誤的值。
2014年2月15日 星期六
matplotlib的圓餅圖 修改字體大小
matplotlib 是使用python來畫出圖表時常用到的套件
其中只要 from matplotlib import pyplot
再透過呼叫 pyplot.pie
就能很簡易畫出圓餅圖
但是去查看document時發現到它沒有直接調整字體大小的參數(在 pyplot.bar下 就有)
導致圖上的文字說明,像是各類別名及所佔百分比的文字太小無法改變
透過修改 pyplot.rcParams['font.size']的值 可以改變字體大小
根據matplotlib的document來看, rcParmas是top-level module
一些global 的參數 像是字體大小,線條長度,顏色都可透過它修改
相關文件:
http://matplotlib.org/api/pyplot_api.html
http://matplotlib.org/api/matplotlib_configuration_api.html
其中只要 from matplotlib import pyplot
再透過呼叫 pyplot.pie
就能很簡易畫出圓餅圖
但是去查看document時發現到它沒有直接調整字體大小的參數(在 pyplot.bar下 就有)
導致圖上的文字說明,像是各類別名及所佔百分比的文字太小無法改變
透過修改 pyplot.rcParams['font.size']的值 可以改變字體大小
根據matplotlib的document來看, rcParmas是top-level module
一些global 的參數 像是字體大小,線條長度,顏色都可透過它修改
相關文件:
http://matplotlib.org/api/pyplot_api.html
http://matplotlib.org/api/matplotlib_configuration_api.html
2013年11月25日 星期一
魔法少女學小圓 叛逆的物語 心得
自從知道這部會在台灣上映之後, 就一直盡量不去看捏他文
但多少還是有被雷到一點.........
幸好畫面風格還是要自己看才算數
這次劇場版畫面非常華麗啊! 不管是開頭的夢魘空間, 學姐跟小燄的
gun kata對決, 現實與魔女結界混搭的城市, 還有五人戰隊變身的舞池
每個鏡頭都相當豪華啊, 這次新房想必玩得很開心
雖然當看完op時就有種非常不好的預感的,有種小燄這次要被虐得更慘的預兆, 整個op裡所有人的色調都是光鮮亮麗, 就只有小燄整個灰暗.....
由於整座城市等於燄的內心投射, 整座都市風貌也一直在變化
從開場的兼用卡老師與轉學生橋段(到這還很正常), 開始追查魔女的下樓場景(魔女結界開始混進來)到整個崩壞的大火
根本就是看著小燄一步一步壞掉
尤其是那句 "什麼時候 我連魔法少女都不是了"
還絕望到拿槍崩掉自己靈核
心靈支柱早就升天的小燄,唯一還能讓自己保持理性的依據,就只有以魔法少女的身份代替圓神保護世界的目的........
連這也被剝奪, 她到底還剩下什麼?
幸好小圓這時候給她拍拍, 但也種下燄魔化的伏筆
(在那之後燄的對白都意味深重)
該死的QB打算染指圓神, 小燄不惜變魔女也要救小圓那段又再度令人感受到小燄為了小圓, 真的什麼事都做的出來
當時的小燄的聲音已經整個發狂了.....
燄的魔女化則是充滿自虐與自責, 使魔拖著魔女上斷頭台是怎樣??
真的不理她難不成真的會自滅?連怪都不用打就掉寶了
接下來算是夢幻共演了 配上梶浦大神的bgm, 整個充滿希望啊!
當人魚魔女手持紅蓮長槍打破結界, 同時也象徵著自我封閉的燄終於能走出自責與壓抑的迴圈, 總算能抓到幸福了..........
是啊........真的是親手抓到幸福了
雖然早就被雷到但當燄整個魔化時還是很震撼......
最後創出新世界讓小圓能當普通人.....哪怕反抗圓神也要做到
這種覺悟真的很可怕, 感覺小燄已經跨過某條界線了
在此之前都多少會顧及別人。
不過看到QB被虐就是爽
整部戲的總結:
歷經不下百次loop的小燄終於理解自己的真心
在老虛的劇本裡, 只有誠實面對自己欲望的人才能笑到最後
但多少還是有被雷到一點.........
幸好畫面風格還是要自己看才算數
這次劇場版畫面非常華麗啊! 不管是開頭的夢魘空間, 學姐跟小燄的
gun kata對決, 現實與魔女結界混搭的城市, 還有五人戰隊變身的舞池
每個鏡頭都相當豪華啊, 這次新房想必玩得很開心
雖然當看完op時就有種非常不好的預感的,有種小燄這次要被虐得更慘的預兆, 整個op裡所有人的色調都是光鮮亮麗, 就只有小燄整個灰暗.....
由於整座城市等於燄的內心投射, 整座都市風貌也一直在變化
從開場的
根本就是看著小燄一步一步壞掉
尤其是那句 "什麼時候 我連魔法少女都不是了"
還絕望到拿槍崩掉自己靈核
心靈支柱早就升天的小燄,唯一還能讓自己保持理性的依據,就只有以魔法少女的身份代替圓神保護世界的目的........
連這也被剝奪, 她到底還剩下什麼?
幸好小圓這時候給她拍拍, 但也種下燄魔化的伏筆
(在那之後燄的對白都意味深重)
該死的QB打算染指圓神, 小燄不惜變魔女也要救小圓那段又再度令人感受到小燄為了小圓, 真的什麼事都做的出來
當時的小燄的聲音已經整個發狂了.....
燄的魔女化則是充滿自虐與自責, 使魔拖著魔女上斷頭台是怎樣??
真的不理她難不成真的會自滅?連怪都不用打就掉寶了
接下來算是夢幻共演了 配上梶浦大神的bgm, 整個充滿希望啊!
當人魚魔女手持紅蓮長槍打破結界, 同時也象徵著自我封閉的燄終於能走出自責與壓抑的迴圈, 總算能抓到幸福了..........
是啊........真的是親手抓到幸福了
雖然早就被雷到但當燄整個魔化時還是很震撼......
最後創出新世界讓小圓能當普通人.....哪怕反抗圓神也要做到
這種覺悟真的很可怕, 感覺小燄已經跨過某條界線了
在此之前都多少會顧及別人。
不過看到QB被虐就是爽
整部戲的總結:
歷經不下百次loop的小燄終於理解自己的真心
在老虛的劇本裡, 只有誠實面對自己欲望的人才能笑到最後
2013年2月25日 星期一
css相對定位
參考:http://tw.myblog.yahoo.com/class2u-com/article?mid=10
css中相對於父元素的定位法
父親: relative
子: absolute
如此一來 子在父親中的排版便會固定,可用在一些長寬可以不變,但不希望隨著視窗縮放而導致排版亂掉
css中相對於父元素的定位法
父親: relative
子: absolute
如此一來 子在父親中的排版便會固定,可用在一些長寬可以不變,但不希望隨著視窗縮放而導致排版亂掉
當ubuntu開機時,碰到grub_rescue的解決法
http://blog.yam.com/kaidamy/article/30746129
這是在重灌舊電腦時發生的情形
相關指令的意義不是很懂,看起來是grub沒能找到ubuntu的磁區
所以要重新掛載。
這是在重灌舊電腦時發生的情形
相關指令的意義不是很懂,看起來是grub沒能找到ubuntu的磁區
所以要重新掛載。
2012年11月1日 星期四
ubuntu 套件資訊
有時候會忘掉自己安裝過某些套件,在process中看到時還會疑惑
啥時有這服務的?
如果想知道套件安裝的資訊
可以在/var/log/dpkg.log中找到
在/var/log/apt中似乎可以找到更詳細的資訊
檢查套件資訊可參考
http://blog.xuite.net/jyoutw/xtech/39380855
啥時有這服務的?
如果想知道套件安裝的資訊
可以在/var/log/dpkg.log中找到
在/var/log/apt中似乎可以找到更詳細的資訊
檢查套件資訊可參考
http://blog.xuite.net/jyoutw/xtech/39380855
2012年8月23日 星期四
2012年8月3日 星期五
python regular expression "match" vs "search"
常常弄混re.match 與 re.search的差別
寫下來以免又忘了。
re.match("pattern","string")是比對該字串的「開頭」是否符合該表示式
re.search("pattern", "string")則尋找string中任何位置是否有相符者
兩者皆回傳MatchObject,若找不到則回傳None
寫下來以免又忘了。
re.match("pattern","string")是比對該字串的「開頭」是否符合該表示式
re.search("pattern", "string")則尋找string中任何位置是否有相符者
兩者皆回傳MatchObject,若找不到則回傳None
2012年7月15日 星期日
開始學用ns2
最近因為研究所的關係,開始學習這套網路模擬軟體
安裝方面道是很簡單,在synaptic中搜尋ns2和nam(跑gui)就有了
目前看起來是要先學寫.tcl檔交給ns2編譯後再讓nam跑圖形模擬
就先摸索一陣子吧
安裝方面道是很簡單,在synaptic中搜尋ns2和nam(跑gui)就有了
目前看起來是要先學寫.tcl檔交給ns2編譯後再讓nam跑圖形模擬
就先摸索一陣子吧
2012年6月18日 星期一
thinkpad x220i 裝virtualbox
今天想在x220i上裝virtualbox跑ubuntu 12.04 64 bit
結果一直跑出vt-x錯誤, google一下發現似乎是cpu的虛擬功能沒開
但是非常神奇的是 enable的選項居然在bios中security的分類下
現在終於能裝ubuntu了
結果一直跑出vt-x錯誤, google一下發現似乎是cpu的虛擬功能沒開
但是非常神奇的是 enable的選項居然在bios中security的分類下
現在終於能裝ubuntu了
2012年6月8日 星期五
讀書心得--Google總部大搜密
最近跑去圖書館借書來打發時間,無意間看見這本「Google 總部大搜密」
這大概是我目前看過介紹google的書中最為詳盡的一本了
不只介紹PageRank演算法的起源,google從草創到營利的過程
最重要的是他們的企業文化,與一般大眾心目中的「大公司」不僅不同甚至可說是完全相反
2012年5月5日 星期六
復仇者聯盟簡短心得
週末跟朋友去京站威秀看復仇者聯盟
只能說,在看以前有點擔心戲份比重
畢竟
這海報的構圖看起來就像:鋼鐵人與他的快樂夥伴們
不過實際看完後印象最深的反而是浩克與看起來不起眼的鷹眼。
以及
.........................................................................滿滿的怒火啊
只能說,在看以前有點擔心戲份比重
畢竟
這海報的構圖看起來就像:鋼鐵人與他的快樂夥伴們
不過實際看完後印象最深的反而是浩克與看起來不起眼的鷹眼。
以及
神盾局局長
那種面對多方責難也面不改色的氣魄還有老奸巨猾(看過的都知道我在說哪段)
基本上本次英雄集合的部份分為兩個階段
前半段:
被脅迫來,不情不願的來,充滿使命感的來,老闆命令來,不請自來和被挖角
洛基:居然想靠這群烏合之眾拯救地球???
局長:是你逼我的
後半段:
因為一些契機,英雄們從之前的不合到願意放下,最後決定攜手合作
台面上:正義 使命 親情 與悲天憫人的情操
實際上:我不爽你加上你想拆我家
你幹掉我的fans
你對我男人做什麼!!
家務事
我只是想發洩一下
前面的幾位請排隊,我要第一個打爆他
前面的幾位請排隊,我要第一個打爆他
.........................................................................滿滿的怒火啊
偉大的洛基使得一盤散沙得以凝聚,實是促使復仇者聯盟成立的一大功臣
還連帶使外星人大軍損失慘重
想必他一定是老奸的局長所安排的兩面諜
由於本人對美漫不熟,對於那些被洛基招來的外星人大軍不熟
只聽說那位boss似乎是規格外的bug角,至於那些被騙來的軍隊
嗯...只能說還是去劇院看才能體會
我只能說他們跟英雄們的對決不但刺激而且很賭命(對外星人來說)
而本次重要的魔王角色
洛基的豐功偉業為
還連帶使外星人大軍損失慘重
想必他一定是老奸的局長所安排的兩面諜
由於本人對美漫不熟,對於那些被洛基招來的外星人大軍不熟
只聽說那位boss似乎是規格外的bug角,至於那些被
嗯...只能說還是去劇院看才能體會
我只能說他們跟英雄們的對決不但刺激而且很賭命(對外星人來說)
而本次重要的魔王角色
洛基的豐功偉業為
- 想殺雞儆猴時被隊長用盾牌反攻
- 打得正開心時被隊長和東尼圍毆
- 怕閃電(洛基:我不怕閃電!! 只是不喜歡接下來的東西)
- 被哥哥訓話
- 被套話
- 被放冷槍
- 嘴砲被東尼嗆(We have Hulk!!)
- 這一直很管用(男人嘛..每五個人..)
- 接住鷹眼的箭..........
- 好弱的神
也成功以謊言欺騙了外星人,真不愧是惡作劇之神
復仇者聯盟,一部娛樂性十足的電影
2012年4月27日 星期五
全域變數之我見
最近找了一題acm的題目打發時間(高手一天三題,我三天一題)
其中為了省下打字麻煩,把一個會 「重複使用」 , 「傳入遞迴」
的變數設定為全域變數,因此付出了80%的時間debug..........
很多初步接觸程式設計的人常常會為省麻煩,而把常用變數設為
全域,但這會造成管理上的問題。
個人心得:
1. 每個function都能存取與修改該變數,很容易在不知情的情形下
誤改值,很難確認對其修改的權限歸屬
2. 盡可能改以區域變數,一來是方便追蹤範圍與可能出錯的區塊
二來只要生命週期結束,便不會造成多餘的影響
3. 常數盡量以#define 處理
小地方多關心,bug遠離你....
其中為了省下打字麻煩,把一個會 「重複使用」 , 「傳入遞迴」
的變數設定為全域變數,因此付出了80%的時間debug..........
很多初步接觸程式設計的人常常會為省麻煩,而把常用變數設為
全域,但這會造成管理上的問題。
個人心得:
1. 每個function都能存取與修改該變數,很容易在不知情的情形下
誤改值,很難確認對其修改的權限歸屬
2. 盡可能改以區域變數,一來是方便追蹤範圍與可能出錯的區塊
二來只要生命週期結束,便不會造成多餘的影響
3. 常數盡量以#define 處理
小地方多關心,bug遠離你....
2012年4月22日 星期日
python gui排版
最近嘗試用python寫gui程式
使用Tkinter時,同時用了pack與grid設計排版
結果程式整個跑不起來,後來才發現兩者不能同時共用
參考來源:
http://effbot.org/tkinterbook/grid.htm
使用Tkinter時,同時用了pack與grid設計排版
結果程式整個跑不起來,後來才發現兩者不能同時共用
參考來源:
http://effbot.org/tkinterbook/grid.htm
2012年4月19日 星期四
Nikon S2600 get
由於家人需要,所以幫忙挑選入門級的數位相機
剛好燦坤週年慶特價就挑中它了,本來想要黑色的
但是庫存沒了只好換選銀色(打死都不想挑粉紅色)
之前都一直都是用手機在照相
藉此機會來學點攝影好了,看能不能培養個興趣
剛好燦坤週年慶特價就挑中它了,本來想要黑色的
但是庫存沒了只好換選銀色(打死都不想挑粉紅色)
之前都一直都是用手機在照相
藉此機會來學點攝影好了,看能不能培養個興趣
2012年4月17日 星期二
正規表示式配對標籤
最近在寫別人的作業時,要用到正規表示式抓取成對標籤內的文字內容
參考資料
例如說:
<doc>段落一</doc> <doc> 段落二 </doc>
直覺的想法便是用 " <doc>.*</doc>"分別捕捉到段落一與二
然而正規表示式具有 greedy 的特性故實際配對為
<doc>段落一</doc> <doc> 段落二 </doc>
如果想使用non greddy的正規表示式
需改寫為 "<doc>.*?</doc>"配對結果:
<doc>段落一</doc> <doc> 段落二 </doc>..........不過這樣寫能通,還是有點摸不著頭緒
參考資料
http://www.exampledepot.com/egs/java.util.regex/greedy.html
2012年4月16日 星期一
開始寫個部落格吧
第一篇文章
都已經大學要畢業了,一直以來在課業上
碰到過許多問題,所幸網路上有許多無私的人
分享他們的經驗。
我也想像他們一樣能回饋他人。
本部落格用來存放心情隨筆與碰到的技術問題
目前學藝不精 請見諒
都已經大學要畢業了,一直以來在課業上
碰到過許多問題,所幸網路上有許多無私的人
分享他們的經驗。
我也想像他們一樣能回饋他人。
本部落格用來存放心情隨筆與碰到的技術問題
目前學藝不精 請見諒
訂閱:
文章 (Atom)