SQLiteBoy - tedut.com

Download Report

Transcript SQLiteBoy - tedut.com

Cerita Pengembangan SQLiteBoy
Noprianto
[email protected]
http://tedut.com
Kebutuhan
1. Data entry dan reporting sederhana
2. Berbasis web dan dapat diakses dari perangkat mobile
3. Multi user (admin/standard) dan ada pembatasan akses (keamanan)
4. Server harus dapat dijalankan standalone (datang dengan web server sendiri), oleh user biasa
5. Berjalan di berbagai sistem operasi
6. Di Microsoft Windows, program harus terdiri dari satu file executable, yang dapat dijalankan dari
removable storage
7. Database harus terdiri satu file dan semua (gambar, file upload, dan lainnya) harus disimpan dalam
database (tidak di file sistem)
8. Definisi data entry, reporting dan lainnya harus sederhana dan kompatibel
9. Harus dapat diintegrasikan dengan sistem eksternal (contoh: ERP)
10. Fungsi-fungsi bantu (terbilang beberapa bahasa, format bilangan, tanggal/waktu, dan lainnya) harus
sudah tersedia
11. Program harus sekaligus berfungsi sebagai management tool untuk database yang digunakan
12. Solusi dapat di-deploy dalam bentuk script
13. Tampilan dapat dikustomisasi oleh user tanpa mengubah kode program
Pemilihan Teknologi







Bahasa Pemrograman: Python (suka, terbiasa, nyaman, multi platform, hanya mengerti
2.x)
Database: SQLite (dapat diandalkan, satu file, tidak menggunakan server, terbiasa, public
domain, tersedia dalam standard library python 2.5+)
Pustaka python tambahan (karena sangat susah kalau hanya dengan standard library):
web.py (suka, terbiasa, pure python, fleksibel, public domain, kode nyaman dimengerti,
datang dengan web server, datang dengan templating yang nyaman dimengerti)
Kode untuk definisi data entry/reporting/script: JSON (cukup nyaman dimengerti,
tersedia dalam standard library python 2.6+)
Packager agar program python dapat dijalankan sebagai satu file executable (tidak perlu
install python/pustaka tambahan): pyinstaller (dapat memaketkan dalam satu file
sesungguhnya, terutama pada python 2.6+)
Halaman web (UI): HTML/CSS minim JavaScript (tanpa Ajax, karena perlu berjalan pada
perangkat mobile tertentu yang terbatas)
Pustaka tambahan, namun tidak wajib ada: ReportLab (untuk laporan dalam format PDF)
dan PIL (dibutuhkan ReportLab, implementasi fitur-fitur lain di masa depan)
Catatan lain




Program harus dapat digunakan sebagai management tool untuk database: fungsi data entry,
reporting dan lainnya harus datang sebagai extended feature (tidak wajib)
Implementasi sistem user sendiri: karena perlu multi user dan SQLite tidak bekerja dengan sistem
user
Implementasi sistem keamanan: pembatasan hak bagi user standard terhadap akses langsung pada
database, pembatasan hak antar user, pembatasan akses terhadap file sistem server, pembatasan hak
akses dari host tertentu, dan lainnya
Semua gambar, file upload dan input dari user harus disimpan dalam database (tidak pada file sistem):






base64 encode: maka akan lebih lambat
Simpan apa adanya, apabila binary: maka harus dapat direpresentasikan dengan baik pada web
page
Integrasi dengan sistem eksternal: sediakan python handler untuk data entry (supaya bisa tulis/proses
ke sistem lain) dan reporting (supaya bisa baca/proses dari sistem lain)
Fungsi bantu (terbilang beberapa bahasa, format bilangan, tanggal/waktu, dan lainnya): implementasi
sebagai fungsi pada level database, agar dapat digunakan pada query biasa
Custom template: apabila ditemukan, kita harus gunakan, supaya user dapat mengganti tampilan
sendiri
Struktur data, definisi data entry dan reporting harus kompatibel: apabila harus ada perubahan, maka
deteksi dan upgrade otomatis (versi 0.76, versi 1.26, versi *1.27)
Fitur SQLiteBoy




SQLite Management tool berbasis web: browse (sort, BLOB, halaman), pembuatan tabel, query, insert/update, tambah kolom,
ganti nama, kosongkan/hapus, impor/ekspor CSV, kopi tabel, skema, vakum, dll
Datang dengan berbagai user-defined function (prefix: sqliteboy_): terbilang (dalam berbagai bahasa), pemformatan bilangan
(dengan pemisah ribuan dan desimal yang bisa diatur), lookup tabel dengan mudah, hash (md5, sha1 dan lainnya), base64
(encoding dan decoding), acak, tambahan fungsi tanggal/waktu, tambahan fungsi string, regular expression, dan berbagai utilitas.
Data entry sederhana (form/subform): sintaks JSON

Deteksi otomatis tipe field

Field: readonly, required, reference (SQL Query, python list), default (fungsi, statik), constraint, onsave

SQL query statemen tambahan (untuk operasi yang lebih kompleks)

Dapat digunakan untuk insert/update/delete/lainnya

Python handler: integrasi dengan sistem eksternal
Reporting sederhana: sintaks JSON

Format: PDF, HTML, HTML (printer friendly), CSV

Field: readonly, reference (SQL Query, python list), default (fungsi, statik), constraint

Custom SQL

Headers/footers

Python handler: integrasi dengan sistem eksternal

Multi user dan user-defined profile

Tambahan: Files (+sharing, bisa dibatasi, view/download), Notes, Page, Calculator, Hosts, Scripts

Lisensi GPL. Tersedia dukungan komersial.

Selengkapnya: www.sqliteboy.com
sqliteboy.py



Satu file python (semuanya terkandung di
dalam): sqliteboy.py
Versi: dari 0.01, penambahan 0.01, tidak lompat
Pada saat presentasi ini dibuat: versi 1.30
(> 11.000 baris kode)
Demo



Simple Medical Record
Menggunakan script dari: http://tedut.com/sqliteboy-scriptmedical_record.json
Dengan beberapa tambahan
Terima Kasih

:)