2015年1月19日 星期一
Golang最好的IDE goclipse 與gvp/gpm整合
最近開始在研究Go語言,主要是原本使用的Python語言在專案的開發上,有許多語言或是框架上本身的限制,造成我們必需用相對複雜的做法去處理專案所面臨的問題。但所有Script都有類似的問題,包括PHP或是Ruby,雖然寫Ruby比較潮,但我們還是需要一個編譯式的語言來解決專案開發上的問題。
Ubuntu14.10下安裝LINE
前一陣子在我新買的Acer E11-111-C0A7上把預安裝的Windows 8.1移除掉,直接灌成了Ubuntu14.10,身為一個程式設計師,買不起MacBook只好用Linux了。
在安裝軟體的過程中,想說在Ubuntu上灌個LINE來玩玩,也方便和朋友連絡。照著網路上的教程安裝,是沒有碰到什麼大問題,但是最重要的地方是,Ubuntu內建的iBus在LINE中輸入文字會亂跳或變亂碼。找了許久後來可以發現gcin可以正常的輸入中文字,所以也就把輸入法換成了gcin。
在安裝軟體的過程中,想說在Ubuntu上灌個LINE來玩玩,也方便和朋友連絡。照著網路上的教程安裝,是沒有碰到什麼大問題,但是最重要的地方是,Ubuntu內建的iBus在LINE中輸入文字會亂跳或變亂碼。找了許久後來可以發現gcin可以正常的輸入中文字,所以也就把輸入法換成了gcin。
Python過濾4 byte unicode字
前一陣子收到了專案的Error信件,內容有一個錯誤訊息是這樣子的:
Warning: Incorrect string value: '\xF0\x9F\x98\x82\xE6\x9D...' for column 'nickname' at row 1
原來是我們QA在輸入暱稱的時候輸入了一些Emoji的表情符號,以前使用iPhone的時後有安裝過這樣的應用程式,還以為是什麼神奇的功能,原來這些表情符號是被建立在4 byte 區段的unicode字元。
Warning: Incorrect string value: '\xF0\x9F\x98\x82\xE6\x9D...' for column 'nickname' at row 1
原來是我們QA在輸入暱稱的時候輸入了一些Emoji的表情符號,以前使用iPhone的時後有安裝過這樣的應用程式,還以為是什麼神奇的功能,原來這些表情符號是被建立在4 byte 區段的unicode字元。
2014年12月11日 星期四
程式設計師也想談戀愛
這兩天公司的同事小菲分享了一個有趣的線上程式問答網站,有點像以前高中資訊比賽熱門的ACM Problem Set,可以在線上寫Code之後提交,系統會自動幫你批改,並透過內部的測資去計算出程式是不是正確。
不過這個系統有趣的地方是結合了漫畫的型式,送出解答的正確會影響到後面的劇情。我透過熟悉的Python語言很快的解決了問題一和問題二,但在問題三時卻一直卡在完成度60%的部份,送出的結果在測資4一直time limit,猜測是演算法不夠好。但經過努力後終於全破了XD,順便也用想學的Go語言也都做了一次。將結果及解答貼在下面,有興趣的人可以試試。
不過這個系統有趣的地方是結合了漫畫的型式,送出解答的正確會影響到後面的劇情。我透過熟悉的Python語言很快的解決了問題一和問題二,但在問題三時卻一直卡在完成度60%的部份,送出的結果在測資4一直time limit,猜測是演算法不夠好。但經過努力後終於全破了XD,順便也用想學的Go語言也都做了一次。將結果及解答貼在下面,有興趣的人可以試試。
2014年2月5日 星期三
把Raspberry Pi上的外接USB硬碟,從NTFS換成ext4
原本我接了一個USB的外接硬碟在我的Raspberry Pi上,當成NAS使用,原本我是參考這篇的作法,不過原本拿到的HDD已經預先格式化為NTFS格式了,文章內也告訴我們可以使用ntfs-3g掛載NTFS分割的硬碟來使用,所以我也這樣的快樂的用了一陣子。
2014年1月21日 星期二
SVN Access Manager變更使用者帳密與svn的passwd檔連動
由於公司的人越來越多,許多新進人員也有Access公司SVN庫的需求,但由於公司沒有建立AD系統,所以變成若是有新同事要存取SVN,就得我手動利用htpasswd創造一組帳密,並且手動設定到access file中。
2014年1月7日 星期二
Bootstrap與Django的整合
Bootstrap has a few easy ways to quickly get started, each one appealing to a different skill level and use case. Read through to see what suits your particular needs.[1],由@mdo 和 @fat 在Twitter工作时创建,Bootstrap使用 LESS CSS 并用 Node 编译,托管在 GitHub 上,方便大家使用这一框架构建更好的web应用。[2]
Bootstrap內建了許多的css格式, 方便讓和我一樣對美術不太在行的程式設計師只要透過固定的規則套用這些css,就可以做出一個漂亮的網頁,而內建的Grid layout更是解決了許多排版上的問題。
Bootstrap內建了許多的css格式, 方便讓和我一樣對美術不太在行的程式設計師只要透過固定的規則套用這些css,就可以做出一個漂亮的網頁,而內建的Grid layout更是解決了許多排版上的問題。
2014年1月6日 星期一
在XenServer安裝CentOS後的設定
在XenServer安裝CentOS,不像一般安裝一樣,直接會導向text mode進行最小化的安裝,而安裝後缺少了一些我們平常會使用到的工具。本篇部落格做一些簡單的整理,也幫助自己做一個簡單的記錄。
閒聊Python應用在game server的開發
這是之前應Taipei.py之邀,分享Python應用在遊戲上應用的投影片,主要介紹RESTful API與WebService該如何應用在行動遊戲上。
2014年1月3日 星期五
memcached簡單指令操作
前幾天在測試清除memcached的資料時,想利用telnet登入機器去做flush_all,雖說這個指令是正常的,但是平常都是透過library的我,一進去命令列反而不知道該怎麼下指令。在這邊做個簡單的筆記也幫自己做一下記憶好了。
2013年12月31日 星期二
django-cache-machine初測
在我們的實際的網路應用中,若網頁是透過Django動態產生且會存取到資料庫,每一次對網頁的呼叫,都會造成DB的I/O,若是用戶量或存取量很大的時候,就會對DB造成很大的負荷,所以我們就必需要加上Cache的機制,若快取內有東西,就直接從快取讀出並送回給Client端。
2013年12月30日 星期一
在CentOS6上安裝Python2.7
在CentOS6的版本上內建的Python版本仍然是2.6的版本,但在我們開發的機器上所使用的Python都是2.7的版本,為了確保開發與上線環境的一致,所以必需要在CentOS上安裝Python2.7。其實如果單純只是要安裝Python並不難,但是如果沒有安裝某些套件的話,會使Python缺少一些相依的函式庫,造成某些函式不可用,雖然這些功能大概也用不到,但是還是裝著比較心安,以下為安裝所需的套件:
2013年12月27日 星期五
iPhone初期化
我把舊的iPhone4手機換成了小米手機2S後,原有的iPhone4現在放在那邊閒置也沒有其他的用途。上周回家老媽知道後,告訴我說可以拿回家給她用,所以就上網找了一下該怎麼把iPhone手機初期化,回到一開始的設定畫面的方法。不過iPhone4在升級iOS7後,一整個感覺就是不順,用起來都卡卡的,我覺得這一定是蘋果的陰謀。
2013年12月26日 星期四
Redis在Game Server的圖鑑功能應用
在遊戲的設計中,有一些類型的遊戲會有收集圖鑑的功能,但一般是以以下幾個方法解決:
- 在Client端做記錄,找時間與Server同步圖鑑的部份。缺點是若在同步前資料移失則會損失部份的資料。(PSN的獎杯是使用這種做法。)
- 在Server端記錄,當觸發拿到物品時記錄圖鑑。
2013年12月25日 星期三
為什麼我喜歡Python勝過PHP
在我們傳統的網站應用中,許多前輩都推薦使用LAMP(Linux,Apache,MySQL,PHP)這樣的組合,可是隨著新技術的成熟,許多的網站也都開始使用Django或Ruby on Rais這樣的技術去架構自己的網站。其中我最喜歡的就是LNMP的搭配了(Linux,nginx,MySQL,Python)。
2013年12月24日 星期二
搶購紅米手機有感-Part2
由於上次沒有搶到現在正夯的紅米手機,所以昨天又準時在十一點多上線搶購,這一次小米官方可能有聽到了玩家的聲音,所以擴充了原本的容量,之前發生過的Timeout或是點連結下去要等很久才回應的狀況也都排除了。依這樣的狀況來看,下周一或許會再有一波的搶購活動,不花一毛錢確做足了宣傳。
2013年12月23日 星期一
在Django Debug Toolbar中加進Redis的debug資訊
在現在的Web應用中,許多應用對於在傳統的RDBMS中的存取次數會太過於頻繁,或是資料結構不適合採取關聯式的方式去定義,造成效能不佳的狀況。所以在新興的網路服務中應用了NoSQL去解決一部份的問題,其中Redis更是效能優秀的佼佼者。
2013年12月20日 星期五
在Django中 對多個資料欄位做索引
Django的ORM實在是很方便的一個東西,自從開始使用了之後,頭腦變好了,每次考試也都考一百分(誤),反而原本的SQL指令都忘的差不多了。不過在舊版的Django中有一個問題是,只能針對單一的資料欄位做index,無法對多個資料欄位做一個index。當然我們也可以手動在database中加入,但這樣就不符合懶人的做法。
2013年12月19日 星期四
Django的delete signals與database存取次數的問題
在Django中,signals這個系統可以很方便的讓我們在不同的app中去listen其他系統發生的事件,透過預先定義好的signal,傳遞指定的變數與資料,降低app間的耦合性,應用在log等等的系統上,可以避免在code中引入其他的系統,插入與該系統相關的程式碼。
2013年12月18日 星期三
在Django Admin中禁止使用者增加或刪除資料的方法
Django的Admin Panel幫我們把常用的CRUD都整合到裡面了,實在是一個很方便的功能,但在一般網站的應用還沒有什麼問題,不過在我們的應用上,是將Django當成一個App server的backend,所以有一些資料的內容是會相依到另外一筆資料列。若使用者手動在後台增加資料列,有可能會發生一些未預期的錯誤,所以我們必需在後台中以程式手動將這樣的功能關閉。
訂閱:
文章 (Atom)