跳到主要內容

發表文章

目前顯示的是 2013的文章

如何取得利用PyInstaller所包入的資料檔案

PyInstaller可以協助我們將Python程式包裝成單一的執行檔案。同時也可以協助我們程式所需的資料檔案一併包裝起來。資料檔案一般我們都是在PyInstaller的spec檔案中加入如下的敘述:a.datas += [('images/my.png', '/src/images/my.png', 'DATA'), ('images/other.png', '/src/images/other.png', 'DATA'), ('db/main.db', 'main.db', 'DATA')] 但是如果你在程式中寫上,像是 fd = file('db/main.db', 'rb') 或是 fd = file('main.db', 'rb') 不管是哪一個,你只有在未包裝前可以正確的開啟檔案,一旦包裝起來再執行就無法正確取得檔案了。其原因在於你的包裝好的執行檔案在執行時的時候,所有的東西會被解到一個暫時的目錄去,這個目錄你無法在寫程式的時候就確定好。所以就無法直接取得檔案。

有點兒怪的生蛋拌麵

前幾日在看日本的料理東西軍時,看到了一個料理是把麵煮好以後再把生蛋打上去攪和著吃。看起來滋味不俗!電視節目結束後立馬衝入廚房準備材料開始實作!

家裡沒有什麼蕎麥麵,就隨便拆了包泡麵煮熟,順便把冰箱裏面擺很久的甜不辣與貢丸拿出來一起煮熟,然後切條切片後放在麵上當配菜。

小熊餅乾變身紀錄

這幾天網路上很紅的一個消息,就是日本有個人買了一盒小熊餅乾,回家搖了30分鐘後,竟然變成了巧克力球!!今天終於忍不住衝到便利商店買了一盒來玩!!


筆記:TDD三原則

所謂的測試導向開發的三原則 http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd You are not allowed to write any production code unless it is to make a failing unit test pass.You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.You are not allowed to write any more production code than is sufficient to pass the one failing unit test. 翻譯成白話一點的中文就是 沒有測試單元,不寫程式。不寫測試條件以外的測試程式。不寫不屬於任何測試單元的產品程式。

MongoLab提供的免費MongoDB服務

MongoDB是NoSQL資料庫中的佼佼者。如果您對NoSQL略有涉獵,應該也有聽過他的大名。如果你沒有時間自己假設一個MongoDB伺服器,但是又很想試用看看。MongoLab的新服務正是為你所準備的!

http://mongolab.com/

只要連到上面的網站,然後註冊一個帳號,就可以申請免費500MB的MongoDB服務。500MB看起來很多,依照應用的不同,或許很快就滿了。無論如何,作為試用也好,小型應用也好,有人免費幫你架設系統並且提供頻寬,不是很好嗎?

MongoLab本身提供了REST API讓你可以使用標準的方式來與其資料庫進行溝通,同時,它也針對幾個著名的雲端系統提供服務:
AmazonJoyentRackspaceWindows Azure 他也提供了容易使用的Web介面的管理工具,然你可以透過瀏覽器就對你的資料庫進行操作。他還提供了Replication與backup服務,如此就不用擔心資料安全性的問題了!

在Qt中用OpenCV2透過Webcam拍照

最近在練習使用OpenCV,順手紀錄一些用法。下面這段code可以用來控制電腦上的webcam進行拍照並且轉換成QImage物件,以便後續的使用。

#include <opencv2/opencv.hpp>

CvCapture *camera;
IplImage *frame;

camera = cvCreateCameraCapture(-1);  

/* We need to call cvRetrieveFrame twice here to get the last frame.
 * TODO: figure out the root cause and use correct method instead of
 *       the workaround.
 */
cvGrabFrame(camera);
frame = cvRetrieveFrame(camera);
frame = cvRetrieveFrame(camera);
if (frame)
{
QImage image(reinterpret_cast(frame->imageData),
frame->width, frame->height,
frame->widthStep, QImage::Format_RGB888);
QImage colorCorrectedImage(image.rgbSwapped());

/* Show colorCorrectedImage which contains the picture. */
...
}

cvReleaseCapture(&camera);

如何建立可攜帶的Qt開發環境

本文將會向您展示如何建立一個Windows平台上面的可攜式Qt開發環境。本文是建立在Qt 5.0.1及MinGW 4.7之上。 事前準備 準備一個用來安裝Qt及MinGW的Windows系統。從Qt project的網站下載qt-windows-opensource-5.0.1-mingw47_32-x86-offline.exe。

讓Sublime text按下tab後可以自動跳到匹配的括號後面

Sublime text的自動括號匹配的功能很方便也很實用,但是在輸入完括號內的字卻還要按幾次右鍵才能到括號的後面去繼續編輯就顯得有點美中不足。所幸,藉由sublime text本身強大的設定功能,只需要將下面的設定加入到Preference->Key Binding - User後,就可以按下tab快速地跳到括號後面繼續編輯了。