QR Code Scanner with Qt Framework + OpenCV

I need a program for scanning QR code and processing the data. For this purpose, there are several libraries which can help saving my time for developing it. For instance, ZXing library, or ZBar. For web developers, there are also corresponding library for scanning QR code, that are both client side (JavaScript) and server side (PHP). Continue reading QR Code Scanner with Qt Framework + OpenCV

Auto build Launchpad Project on Commit

If you have a project hosted on Canonical’s Launchpad, then you have a choice to build it as soon as you push its Bazaar commit. The automatic build process is conducted by a “recipe”. Cited from official explanation, there are two options for when recipes get built:

Built daily
A build will be scheduled automatically once a change in any of the branches used in the recipe is detected.
Built on request
Builds of the recipe have to be manually requested using the “Request build” action.

You can create a recipe from project page, and look for “Create packaging recipe”. Then you need to choose the “Built daily” option to automatically build the DEB binary from source when you push the commit.

Build recipe Launchpad Canonical Ubuntu
Build recipe Launchpad Canonical Ubuntu

Then you can compose the packaging recipe by refering to the official documentation here: https://help.launchpad.net/Packaging/SourceBuilds/Recipes

HTML5 App for Desktop Using Qt WebKit

Qt WebKit HTML5 App
Qt WebKit HTML5 App

It’s been a long time since the last time I wrote about Qt programming. This time I’d like to share my recent activity on developing the desktop version of my Android webapp, Hafal Quran. You can download it from Google Play Store by clicking this badge:
Android app on Google Play

My purpose is that the app can run on most platform. So it led me to choose HTML5 approach. And finally I come up with the app website which everyone can play it on http://hq.amzone.web.id. The Android app is the first platform-specific release of Hafal Quran.

While it looks like already reaches the final version, it actually lacks an important aspect, i.e dis-connectivity. We have to connect to internet to play it. Of course we cannot play it when go offline. So now, I continue its development to the next step: offline mode.

The first development should be focused on the Android version, as the users of mobile devices are the most and growing. But for now, I will make the offline version for desktop first. In this case, I choose to deploy it for Ubuntu Linux distro and the derivatives, particularly Grombyang OS Edu.

Technical overview

I utilize Qt framework for the development because I have some experiences in it. Besides, I decided to use Webkit as the engine of the app. And actually it is part of Qt framework itself. Webkit is the infamous engine for most popular browser, including Safari, Chrome, and even Opera.

But unfortunately, QWebKit module is now being deprecated since Qt 5. And it is now superceded by QWebEngine module. So, for now, I will still use QWebKit module of Qt4.

The drawbacks of using Webkit is probably about the memory usage. Since Qt modules are quite greedy in terms of consuming RAM.


FYI, the Android app was one of 50 apps that were selected at Finding Top50 Local Apps event, which was held by Baidu Indonesia last year.

Distro Linux: Lingkungan Development Web yang Lengkap

Linux sudah terkenal hebat untuk digunakan sebagai server web, kita tahu itu. Sebut saja beberapa distro Linux yang terkenal: Debian, CentOS, bahkan Ubuntu. yang biasanya dipilih sebagai sistem operasi server. Mereka ditopang dengan banyaknya program opensource untuk web yang natif di Linux. Untuk server web sendiri, ada Apache yang sangat umum dipakai, NginX, atau Lighttpd.

Sedikit saja untuk pendahuluannya. FYI, judul draf tulisan ini adalah “Bersyukur sudah tahu Linux”. Saya bersyukur karena di Linux, untuk saya adalah Ubuntu, tersedia perkakas (tools) untuk pengembangan web yang demikian lengkap. Anda bertanya, kan Windows juga bisa seperti itu? OS X juga sama? Hmm, saya jawab: iya. Tapi ya begitu lah. Saya rasa Linux sudah paling pas.

Continue reading Distro Linux: Lingkungan Development Web yang Lengkap

Building Qt Framework from Source Menggunakan MinGW

Setelah sebelumnya saya mem-build Qt Framework dengan MS Visual C++ compiler, nah kali ini saya tulis yang pakai MinGW dan MSYS. Sudah lama juga blog ini tidak menulis tentang Qt.

Selayang pandang MinGW dan MSYS

MinGW adalah singkatan dari Minimalist GNU for Windows. Bisa ditebak apa isinya dari “GNU”-nya. Menurut dokumentasinya, maksudnya minimalis adalah bahwa MinGW tidak menyediakan lingkungan runtime POSIX. Tetapi MinGW menyertakan tool set opensource yang lengkap untuk development di lingkungan Windows.

msys logo icon
Ikon MSYS

Sedangkan MSYS adalah singkatan dari Minimal System, yang intinya adalah konsol shell untuk menjalankan baris perintah. Ya seperti CMD-nya Windows. Atau kalau di Linux dan Mac seperti Terminal. Nanti MSYS digunakan untuk menjalankan perintah-perintah untuk kompilasi source code Qt framework.

Mempersiapkan Peralatan

  1. Unduh MinGW yang ada di http://mingw-w64.sourceforge.net/
  2. Unduh MSYS dari http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe
  3. Unduh source code Qt dari http://download.qt-project.org/archive/qt/5.3/5.3.2/single/
  4. Di sini saya hanya mengunduh ‘qtbase’ dari http://download.qt-project.org/archive/qt/5.3/5.3.2/submodules/ (hemat kuota internet 😀 )
  5. Di sistem saya sudah terinstall Python, Ruby dan (Active)Perl. Mungkin ketiganya perlu diinstal jika mem-build seluruh modul Qt, terutama Webkit.
  6. Instal OpenSSL atau kompil sendiri dari kode sumbernya. Pada tulisan yang lalu, ternyata saya tidak mengompilasi OpenSSL, sehingga aplikasi yang dihasilkan tidak bisa mengakses https.

Mengompilasi Kode Sumber

Pastikan semuanya siap, dan lihat apakah folder bin MinGW ada di PATH.

  1. Ekstrak source code Qt. Saya misalkan di D:/Develop/Qt-Lib/5.3.2/.
  2. Buka MSYS, pindah ke direktori source code barusan.
  3. Kita akan melakukan pseudo build, maka buat folder ‘build’ di situ >> mkdir build
  4. cd build
  5. Jalankan perintah:
    ../configure -opensource -confirm-license \
    -platform win32-g++ -prefix "D:/Develop/Qt-Lib/5.3.2/release" \
    -nomake examples -nomake tests -no-icu -openssl \
    -I "D:/Develop/openssl-1.0.1i/dist/include" \
    -L "D:/Develop/openssl-1.0.1i/dist/lib" -v
  6. Keterangan: -prefix adalah tempat hasil akhir kompilasi, semua akan disalin ke situ saat perintah make install. -no-icu sama seperti tulisan yang dulu, gunanya adalah menghilangkan dukungan Unicode. Lainnya sesuaikan.
  7. Pastikan tidak ada error. Lalu jalankan mingw32-make.exe (atau cukup ‘make‘)
  8. Jika sukses, jalankan mingw32-make.exe install
  9. Selesai

Sekarang tinggal menambahkan qmake hasil kompilasi ke Qt Creator. Jika folder bin hasil kompilasi itu ada di PATH sistem, maka Qt Creator akan mendeteksinya secara otomatis.

Untuk deployment, aplikasi membutuhkan 3 DLL dari MinGW, antara lain: libstdc++-6.dll libgcc_s_dw2-1.dll dan libwinpthread-1.dll.

dependency walker
Melihat dependensi pustaka aplikasi

Qt QML untuk Aplikasi Android (dengan KDE Necessitas)

Necessitas merupakan kakas pengembangan untuk aplikasi Android dengan Qt Framework, dikembangkan oleh tim KDE Project. Kakas ini menggunakan Qt Creator untuk IDE dan Qt versi 4.8.2 sebagai frameworknya. Tetapi tampaknya tidak diperbarui lagi, atau mungkin sudah diambil alih oleh Digia, selaku pemegang hak lisensi komersial Qt Framework.

Sekarang saatnya saya membagikan cerita tentang belajar membuat aplikasi Android dengan Qt Framework (QML). Tulisan sebelumnya tentang kakas pengembangan aplikasi Android dan MVC di Qt QML merupakan pengantar untuk tulisan ini.

Contoh aplikasi ini adalah RSS feed reader sederhana. Saat membuat New Project, pilih Qt Quick Application. Pada pilihan Kit, pilih untuk Android. Jika tidak ada, tambahkan kit Android setelah berhasil membuat New project. Nanti Qt Creator akan secara otomatis menambahkan file-file yang diperlukan untuk membuat sebuah APK, seperti misalnya AndroidManifest.xml. Pastikan Android SDK dan NDK sudah diatur dengan benar di Option Qt Creator. Kalau Necessitas biasanya sudah ada pengaturan saat instalasi. Berikut ini adalah source code QMLnya:

Continue reading Qt QML untuk Aplikasi Android (dengan KDE Necessitas)

Building Qt Framework from Source (Windows) dan Deploy Project-nya

Mengompilasi Kode Sumber Qt di Windows 7

Kali ini saya berbagi cara instalasi Qt Framework dengan megompilasi sendiri kode sumbernya. Tujuannya adalah mendapatkan hasil aplikasi yang sesuai dengan keinginan kita, dalam hal ini kebutuhan untuk deploy.

Pertama tentunya unduh kode sumber Qt di sini, cari yang ZIP ‘for Windows’, kira-kira berukuran 280-an MB (Qt 5.3).

Sediakan prasyarat

Sesuai dengan dokumentasi resmi ada di sini, kita membutuhkan:

  1. ActivePerl – Install a recent version of ActivePerl (download page) and add the installation location to your PATH.
  2. Python – Install Python from here and add the installation location to your PATH in order to be able to build Qt WebKit.
    • Jika kita memilih installer MSI, instal python dengan perintah msiexec /i python.msi di cmd dengan akses administrator.
  3. Install Ruby from here and add the installation location to your PATH in order to be able to build Qt WebKit.

Tentunya MSVC harus sudah terinstal. Saya menginstal MS Visual Studio C++ 2010 Express. Jika belum punya, unduh file installer dari sini.

Alternatif dari MSVC adalah MinGW. Tapi tidak saya bahas di sini, karena saya pun belum pernah mencobanya.

Continue reading Building Qt Framework from Source (Windows) dan Deploy Project-nya