Membuat bot Telegram

Terinspirasi dari tulisan pak Yohanes, akhirnya tadi malam saya berhasil membuat bot untuk Telegram setelah membaca tutorial yang dibuat oleh pak Yohanes tersebut. Bedanya hanya url webhook-nya saya arahkan ke salah satu endpoint API dari aplikasi saya yang lain yang saya buat dengan SlimFramework dan saya tidak menggunakan stream php://input untuk membaca post data dari telegram tapi langsung menggunakan fungsi dari slim buat baca data

$body = $app->request->getBody();

 

Bot ini berfungsi untuk mendapatkan data hadits dan terjemahnya dari beberapa kitab hadits. command-nya adalah sebagai berikut:

/<periwayat> <nomorhadits>
misalnya:
/ahmad 200
untuk mendapatkan informasi hadits nomor 200 pada kitab musnad Ahmad

dimana nama periwayatnya adalah sebagai berikut:

  1. bukhari untuk kitab shahih bukhari
  2. muslim untuk kitab shahih muslim
  3. ahmad untuk kitab musnad Imam Ahmad
  4. tirmidzi untuk kitab sunan at-tirmidzi
  5. nasai untuk kitab sunan an-nasa’i
  6. darimi untuk kitab sunan ad-darimi
  7. malik untuk kitab al-muwaththa’ karya Imam Malik
  8. ibnumajah untuk kitab sunan Ibnu Majah, dan
  9. abudaud untuk kitab hadits sunan Abu Dawud

silahkan langsung menambahkan bot-nya di sini @hadits_bot

 

semoga bermanfaat. Aamiin

Android Unit: px (pixel), dp/dip (density-independent pixel) dan sp (scale-independent pixels)

tldr;

selalu gunakan sp untuk teks dan dp untuk yang lainnya. Kecuali, benar-benar terpaksa dan tahu benar konsekuensinya, gunakanalah px.

Ekosistem android dikenal dengan fragmentasi spesifikasi device yang sangat bervariasi. Tentunya ini tantangan tersendiri bagi developer. Untungnya, untuk masalah screen density yang bervariasi, sepertinya sudah diantisipasi oleh para pengembang platform Android di Google, dengan memperkenalkan dua unit/satuan baru yaitu dip/dp (density-independent pixel) dan sp (scale-independent pixels).

Misalkan ada dua tablet 7-inch (ukuran diagonal layar), tablet pertama (A) memiliki resolusi layar  1200x1920px 320dpi dan yang lainnya (B) beresolusi 2048x1536px 326dpi. Membuat button dengan ukuran 300x300px mungkin akan tampak normal pada  tablet tapi akan tampak kecil di tablet

Tapi akan berbeda jika kita spesifikasikan ukuran buttonnya dengan ukuran yang bergantung pada density layar alias menggunakan dip misal 300x300dp.

secara fisik ukuran button tersebut akan selalu sama pada ukuran layar yang berbeda.

Perhatikan gambar berikut:

Screen Shot 2015-07-15 at 1.45.58 PM

ukuran 200dp akan dikonversi pada device mdpi (device dengan density 160dpi/dots per inch) menjadi 200px dan menjadi 400px pada device xhdpi (density 420dpi) misal pada nexus 4. Sehingga ukuran tersebut tampak sama dan konsisten secara fisik untuk beragam device dengan ukuran layar yang berbeda.

serupa dengan dp adalah sp (scaled-independent pixels) yang kita gunakan untuk ukuran teks. Perbedaannya, dengan menggunakan satuan sp android akan menscale ukuran teks sesuai dengan setting ukuran teks di device (yang biasa dapat di akses melalui menu settings).

Jadi, selalu gunakan sp untuk teks dan dp untuk yang lainnya. Kecuali, kamu benar-benar terpaksa dan tahu benar konsekuensinya, jangan menggunakan satuan px. Jika kebetulan designer yang bekerja bersama anda belum tahu, beritahukan untuk selau menginformasikan spesifikasi design dengan dp/sp. Beberapa website berikut akan sangat membantu:

  1. http://developer.android.com/guide/practices/screens_support.html
  2. http://developer.android.com/training/multiscreen/screendensities.html
  3. http://dpi.lv/
  4. https://pixplicity.com/dp-px-converter/
  5. https://www.youtube.com/watch?v=zhszwkcay2A

Tulisan ini terinspirasi setelah membaca status path Sidiq (salah satu Android Developer Expert dari Indonesia )

Hosting website dengan RedHat OpenShift

Weekend lalu, saya memiliki Ide untuk membuat service untuk aplikasi yang saya buat di sini Al-Mishbah. Karena saya lagi belajar menggunakan Lumen, micro-framework yang dibuat oleh Taylor Otwell, empunya Laravel, saya langsung mengembangkannya dengan lumen; setelah selesai protipe website tersebut, saya memutuskan untuk mendeploy web tersebut ke RedHat OpenShift yang menyediakan paket free.

Tapi kemudian saya menyadari, ternyata di OpenShift masih hanya mensupport PHP versi 5.4 (kurang tahu minor versionnya) sedangkan Lumen mensyaratkan PHP 5.5.9; Jadi saya berubah pikiran untuk mengubah framework sekalian dengan menggunakan Laravel mengingat ada tutorial untuk langsung mendeploy-nya di laman berikut https://hub.openshift.com/quickstarts/115-laravel-5-0 . Tapi, karena saya tidak terbiasa dengan Laravel, saya agak kesulitan.

Dan setelah melihat framework laravel-nya sendiri, saya lihat ini framework lumayan gendut, jadi rasanya sayang kalau untuk service yang sederhana menggunakan framework sebesar ini. Kemudian saya teringat dengan SlimFramework yang juga saya gunakan di service saya yang lain. Dan akhirnya, Service tersebut selesai saya deploy di sini: rowahu.info/hadits/bukhari/1 . Pattern url yang digunakan adalah http://rowahu.info/hadits/<nama kitab hadits>/<nomor hadits>.

Menginstall rhc (redhat client) di Mac Os X

  1. Pastikan ruby (gems) sudah terinstall, di OSX biasanya sudah terinstall, update jika diperlukan.
  2. Ketika perintah berikut untuk menginstall rch dengan gem
    $sudo gem install rhc
  3. Jika ada masalah dengan dependency, pastikan untuk mengupdate gem-nya
    $sudo gem update

Setup rhc

setelah rch selesai di install, kita tinggal setup OS kita dengan otentikasi yang dibutuhkan, sehingga nantinya tidak perlu repot saat autentikasi dll.

  1. Mulai dengan mengeksekusi perintah berikut
    $rhc setup
  2. Selanjutnya masukkan username dan password yang digunakan signup di openshift
  3. Nantinya akan ada pilihan untuk menyimpan public key dan mengupload-nya ke server supaya tidak repot lagi memasukkan username dan password saat menggunakan rhc selanjutnya

Membuat aplikasi

Membuat aplikasi di openshift dapat dilakukan di web ataupun melalui console dengan menggunakan rhc yang sudah terinstall tersebut. Untuk membuat aplikasi dengan rhc bisa dengan langkah berikut:

$ rhc create-app rowahu php-5.4 mysql-5.5

untuk mensetup aplikasi dengan nama rowahu dengan spesifikasi (cartridges) php-5.4 dan mysql-5.5
sesaat kemudian nanti akan di dapatkan informasi tentang environment yang sudah terbuat: mysql usrname dan password, mysql connection url URL dari aplikasi dan juga untuk SSH serta alamat URL Git dari server source code yang bisa kita gunakan seperti berikut:

  URL:        http://rowahu-hakimlabs.rhcloud.com/
  SSH to:     xyzabcdefghij@rowahu-hakimlabs.rhcloud.com
  Git remote: ssh://xyzabcdefghij@rowahu-hakimlabs.rhcloud.com/~/git/rowahu.git/

selanjutnya, kita bisa meng-clone source code tersebut dan memodifikasinya sesuai kebutuhan aplikasi yang kita kembangkan.

Screen Shot 2015-06-29 at 3.10.23 PM

Mengubah nama domain

Secara default, kita akan mendapatkan subdomain dari rhcloud.com, tapi kita bisa mengubah nama domain dengan nama domain yang kita beli sendiri (misalnya rowahu.info):

  1. Beli domain dari reseller domain apapun.
  2. Selanjutnya, buat alias di dashboard aplikasi di openshiftScreen Shot 2015-06-29 at 3.12.53 PM
  3. Kemdudian, setting dns host record di tempat anda membeli domain tersebut ke alaman url aplikasi yang dibuatkan oleh rhcloud seperti berikut
  4.  Screen Shot 2015-06-29 at 3.17.17 PM

Sekarang aplikasi web kita sudah bisa diakses dengan custom domain sesuai dengan keinginan kita.

happy coding :)

Berusaha mengupdate keahlian dengan Pet Project: Al-Mishbah Android Application

Akhir tahun yang lalu, agar bisa mengerjakan “pet project” dengan lebih nyaman, saya, dengan izin istri tentunya :), memutuskan membeli laptop. Laptop dengan spesifikasi yang sama dengan laptop yang dipinjami oleh kantor tempat saya bekerja, MacBook Pro 13″. Ini adalah perangkat elektronik paling mahal yang pernah saya beli. Keputusan ini diambil karena keinginan saya untuk mengerjakan kembali beberapa pet project yang dulu sudah pernah saya mulai, agar tidak menggunakan properti kantor untuk keperluan pribadi.

Screenshot_2015-02-04-00-18-36

Alhamdulillah, akhirnya laptop ini berhasil menelurkan satu aplikasi yaitu Al-Mishbah, aplikasi yang berisi al-Qur’an dan hadits beserta terjemahnya. Keinginan untuk mengupdate aplikasi al-Mishbah salah satunya karena kegelisahan saya akan banyaknya aplikasi-aplikasi hadits yang sangat populer namun menempatkan iklan disamping hadits tersebut (atau iklan muncul saat akan membaca hadits), saya merasa sedih dan kurang nyaman karena menurut pendapat pribadi saya ini kurang sopan terhadap isi dari al-Qur’an dan hadits. Oleh karena itu saya membuat aplikasi al-Mishbah tersebut, semoga saja pahala berlimpah terus mengalir dari aplikasi tersebut terhadap saya, keluarga, guru-guru dan orang tua saya.

update terakhir aplikasi  Al-Mishbah tahun 2012
update terakhir aplikasi Al-Mishbah tahun 2012

Konten Berbayar

Dalam aplikasi ini saya juga mencoba hal yang baru bagi saya yaitu, In-App Billing. Sebelumnya saya lebih terbiasa menjual aplikasi secara langsung, namun sepertinya hal tersebut kurang menarik  terutama bagi pengguna smartphone Android, oleh karena itu saya saya memutuskan untuk menggunakan model freemium. Semoga keputusan saya ini tepat. Aamiin

Ada yang bertanya kenapa aplikasi ini sebagian kontennya berbayar, alasannya tentu saja karena saya membutuhkan uang terutama untuk menafkahi keluarga. Dan juga piihan memasang iklan, meskipun sangat menarik bagi saya, di aplikasi Al-Mishbah ini bertentangan dengan prinsip saya yang tidak menghendaki iklan berada di aplikasi al-Qur’an.

Development

Sebagian besar waktu development sebenarnya dilakukan pada akhir tahun 2014 dimana banyak sekali waktu libur. Inspirasi disain dari aplikasi Al-Mishbah di adopsi dari aplikasi Google play books.

IMG_20150207_141810
coret-coret disain aplikasi

Masih banyak fitur yang saya rencanakan untuk ditambahkan, tapi saya memang kurang pandai mengatur waktu :(, sehingga saat rilis masih hanya sedikit peningkatan yang dilakukan. Tapi, Insya Allah kali ini akan lebih sering lagi di update.

Nah, silahkan bagi pembaca yang berminat, langsung download aplikasinya di sini:

berikut sekilas demo videonya:

Semoga bermanfaat :)

Android Dev: Incorrect AVA format when export signed APK

Pernah mengalami, saat coba export signed application package, terjadi error yang kurang lebih seperti di title post ini ? saya pernah (barusan saja hehe..) dan ternyata error ini terjadi karena saat kita create signature/keystore ada character yang ga valid (misalnya koma dll) sehingga signature ga ter-create secara sempurna.

jadi, jika mengalami error yang saya pastikan untuk memeriksa informasi signature kembali; siapa tahu ter-sempil koma dan atau karakter lain yang ga di accept sama keytool java.

happy coding :)