Odoo on Raspbian: Solving Wkhtmltopdf Error Code -6

Odoo is an open source ERP application for business, formerly known as OpenERP. Its core is Python and using PostgreSQL for the database. It’s a web-based app, so that you can install it on a server capable machine. In this case, I talk about Raspberry Pi 2, installed Raspbian Jessie.

By following a brief tutorial from here, I was successfully getting Odoo running on Raspberry Pi 2. But it still had a little glitch: when I want to create PDF report, it threw error:

 Wkhtmltopdf failed (error code: -6). Message: The switch –header-spacing, is not support using unpatched qt and will be ignored.The switch –header-html, is not support using unpatched qt, and will be ignored.The switch –footer-html, is not support using unpatched qt, and will be ignored.QXcbConnection: Could not connect to display. Continue reading Odoo on Raspbian: Solving Wkhtmltopdf Error Code -6

Advertisements

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.

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.

Yarock: Streaming Radio Jadi Gampang

Satu lagi aplikasi pemutar musik untuk Linux, Yarock. Aplikasi ini dibuat dengan Qt murni, bukan berbasis KDE. Bulan lalu sudah rilis versi 1.0.0. Lihat pada laman resmi di Launchpad: https://launchpad.net/yarock/1.x/1.0.0

Pas sekali, saya suka aplikasi yang Qt-based. Di desktop KDE tampilannya membaur dan kesannya natif. Selain itu, kode sumber bisa dipelajari. 🙂

Continue reading Yarock: Streaming Radio Jadi Gampang

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

MuseScore: Integrasi Keyboard MIDI Virtual

Saya mencoba instal MuseScore setelah mengunjungi laman Showroom aplikasi-aplikasi Qt yang belum lama dibuat: http://showroom.qt-project.org/musescore/ (mungkin pranala akan berubah beberapa waktu ke depan). Sebagaimana umumnya aplikasi Qt, MuseScore ini bisa running pada multi-platform, termasuk pula Ubuntu (atau Linux secara keseluruhan). Aplikasi ini adalah aplikasi pembuat partitur musik. Walaupun saya tidak paham soal musik, tapi melihat fitur-fitur yang ada di dalamnya, kelihatannya dia adalah aplikasi yang mumpuni untuk menggubah aransemen musik.

Tulisan ini adalah untuk memperkenalkan dan mempromosikan aplikasi opensource MuseScore. Saya tidak tahu cakupannya sampai seluas apa, atau kepada golongan mana. Tetapi saya yakin pasti ada yang membutuhkannya, mungkin suatu hari nanti.

Continue reading MuseScore: Integrasi Keyboard MIDI Virtual

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