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

App Version from Git Tag in Qt / QML | Everything Frontend

While making an app it is really important to keep accurate track of the versions. Usually such a tracking is implemented via tags in version control system like git. It’s also a good idea to keep in mind semantic versioning when assigning version to your code.

But tagging your code with the right version number is only the first step. You also need to show version to the user and in some cases the system.

This –reblogged– post was actually drafted by the end of last year. I developed an open source Qt project then, namely Alldeb Installer and I wanted it to have the Git versioning to be used as part of the app’s version number.

via App Version from Git Tag in Qt / QML | Everything Frontend.

Learn Programming

Welcome to my first post in 2015. Coincidentally, today is (the last hour of) 12 Rabi’ al Awwal, which is the day of Mawlid an-Nabiy Muhammad (p.b.u.h.), the last Prophet of Islam who received revelations from Allah to be conveyed for mankind in the earth. He’s a great man of all time. His name is always be uttered by Muslims around the world. So that Jaʿfar b. Ḥasan al-Barzanjī composed Mawlid al-Barzanji. And that work is so popular that from the beginning of this month until yesterday, many Masjid or Musala held a public recitation of it.

Hold on, you may begin thinking that the title of this post is nonsense and has no relation with the first paragraph above. Okay, I just try to open this post with the actual events that happened recently.

A few months ago, I’ve written a post entitled ‘Programming‘. Since then, there aren’t much changes on myself. I mean, uhh, sorry, I have to finish this post as quick as possible before 24:00. 😀

I feel hard to write this post in English. I don’t know why. But of course because I’m currently learning it.

The most important point that I want to share is some learning material for programming which I got from Youtube. I hope it will be useful for you. Here they are:

  1. https://www.youtube.com/playlist?list=PL2F919ADECA5E39A6
  2. https://www.youtube.com/playlist?list=PLB22HyVdO1GkLFrvRi5vIo5XcWS0EflxD
  3. https://www.youtube.com/playlist?list=PLGLfVvz_LVvQUjiCc8lUT9aO0GsWA4uNe
  4. https://www.youtube.com/playlist?list=PL2D1942A4688E9D63
  5. https://www.youtube.com/playlist?list=PLBCFDD6D34B21E8A5
  6. https://www.youtube.com/playlist?list=PLB75C386A912EAA5F

Posts Extractor: Aplikasi Qt dan API WordPress

Mari belajar Qt lagi. Contoh program Qt kali ini memanfaatkan REST API dari WordPress, yakni Posts API. Yang ini adalah API publik, kita tidak perlu otentikasi OAuth untuk mengaksesnya. Query yang dikirim adalah HTTP GET dan memberikan hasil data JSON.

Nah, contoh aplikasi Qt kali ini akan mengolah data JSON tersebut menjadi HTML atau teks biasa. Kelas-kelas penting yang dibutuhkan antara lain:

  1. QJsonDocument dan lainnya
  2. QWebView untuk menampilkan HTML
  3. QDateTime untuk manipulasi tanggal
  4. QListView untuk menampilkan daftar file dalam folder
  5. dll.

Beginilah tampilan aplikasinya:

Continue reading Posts Extractor: Aplikasi Qt dan API WordPress

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