Wednesday, October 1

Aerisjs: Google map untuk aplikasi Backbonejs

Mengurus peta pada aplikasi laman tunggal anda bukanlah sesuatu yang mudah. Ini kerana pustaka peta seperti Google Map, Leaflet dan yang seangkatan dengannya memerlukan anda sebagai seorang developer untuk menimbang segala faktor bagi membuatkan aplikasi anda benar-benar interaktif dan cekap dalam pemanfaatan memori. Malah skop application program interface (API) yang disediakan juga tidak memuaskan apabila ia banyak menggunakan ruang global berbanding local dan ini memudahkan aplikasi kita terdedah kepada memory leak dan sebagainya.



Sehubungan dengan masalah ini, Aerisjs adalah sebuah pustaka javaskrip yang dapat memastikan aplikasi anda sentiasa berada dalam keadaan 'segar'.

 https://github.com/hamweather/aerisjs

Pustaka ini dibina dengan tujuan asalnya untuk menvisualisasikan data-data cuaca seperti hujan, salji, ribut dan jerebu diatas peta dan pada saat ini, ia giat dibangun secara komersial. Jadi ia memerlukan anda untuk berdaftar sekiranya mahu menggunakan khidmat maklumat cuaca tersebut. Cuma pustaka ini masih lagi boleh dimanfaatkan tanpa daftar yakni secara percuma untuk menguruskan peta dan segala propertinya seperti marker, event dan lain-lain lagi. Lihat sini.

http://jsfiddle.net/pwRyt/10/

Antara ciri-ciri Aerisjs yang menarik adalah
Kelancaran penukaran khidmat peta untuk Google Map, Leaflet dan Open Layers
Tambahan objek-objek peta (Info Box, KML, Polygon dan Polylines)
Menghimpun marker menjadi sebuah cluster
Memautkan objek Backbone.Event kepada objek peta
Khidmat geocode dan geolocation

Walau bagaimanapun, pustaka ini masih lagi dalam proses pembangunan dan pengujian kerana masih terdapat lagi kekurangan dari segi khidmat cuacanya.

Sekiranya anda berminat untuk dapatkan bantuan bagi penggunaannya boleh tinggalkan komen di bawah. Selamat koding!

Tuesday, July 15

Quran+: free iOs Apps

Al-Baqarah (2): 185 - (Beberapa hari yang ditentukan itu ialah) bulan Ramadhan, bulan yang di dalamnya diturunkan (permulaan) Al Quran sebagai petunjuk bagi manusia dan penjelasan-penjelasan mengenai petunjuk itu dan pembeda (antara yang hak dan yang bathil).

Bersempena Nuzul Quran, seorang hamba Allah telah membangun sebuah aplikasi untuk membaca quran. Interface yang menarik








Download sekarang kerana tawaran hanya terbuka untuk 2 hari sahaja. 


https://itunes.apple.com/my/app/quran+-read-quran-by-page/id884537056?mt=8

Aplikasi Laman Tunggal, Single Page Application

Ini adalah sebuah kalimat yang telah lama berlegar ketika seseorang itu merancang untuk membangun sebuah aplikasi mobil yang bersifat hybrid. Konsep ini rata-ratanya dipengaruhi oleh kecekapan Gmail, sebuah aplikasi email yang dibangun oleh Google. Bertitik tolak dari Gmail, Google mengembangkan konsep aplikasi laman tunggal ini kepada Google Docs, Drive, dan kini, Search. Anda tentu perasan dimana web-web tersebut begitu responsif terhadap setiap permintaan anda sewaktu anda klik pada pautan-pautan yang disediakan. Itulah kelebihan Konsep Aplikasi Laman Tunggal.

Tujuannya tak lain tak bukan adalah mempersembahkan sebuah aplikasi web yang menawarkan pengalaman penggunaannya hampir sama dengan penggunaan aplikasi desktop.

Teknik pembangunan yang digunakan juga amatlah berbeza sekiranya anda sudah terbiasa menyediakan berpuluh halaman untuk sesebuah web. Bagi pengaturcara PHP, anda sudah tentu terbiasa dengan teknik PHP yang dinamik, iaitu menyediakan satu template untuk header dan satu lagi untuk footer yang sifatnya umum bagi penggunaan yang meluas dalam projek web anda. Manakala bahagian dinamiknya adalah pada sidebar atau kandungan paparan utama. Kesimpulannya teknik ini memerlukan anda menjana kesemua template itu tadi di web server, dan membebankan server dan network untuk membawanya sebagai sebuah dokumen HTML kepada komputer client.

Ketika saya membangunkan sebuah aplikasi dashboard beberapa bulan yang lalu, saya berada dalam keadaan dilema ini. Waktu itu saya buntu kerana saya telah pun menghasilkan sebuah laman web yang perlu memaparkan beberapa carta, yang sepenuhnya diproses di server dan ia bersaiz agak besar kerana, terdapat berpuluh pustaka javascript dan CSS, serta data-data yang diperolehi daripada query pengkalan data. Tetapi carta-carta itu hanya akan terhasil ketika dokumen HTML itu lengkap muat sepenuhnya pada komputer client. Saya perlu paparkan sebuah carta yang interaktif. Interaktif beerti pengguna dapat berinteraksi dengan carta yang terpapar bagi memuaskan persoalan-persoalan analisisnya. Jadi disinilah dilema tersebut. 

Masalah ini saya atasi dengan penggunaan jQuery Ajax yang minimal pada mulanya. Tetapi lama kelamaan, ia jadi satu keperluan pula bagi menghasilkan sebuah aplikasi yang hanya ada sebuah halaman tetapi mempunyai berpuluh laman mini didalamnya.

Saya tertarik dengan konsep ini dan berjaya mengolah konsep ini menggunakan pustaka javascript iaitu BackboneJs. Pengalaman yang sudah hampir setahun telah banyak memberi kesan dalam memaknai kalimat tersebut. 

Ada yang pada saya baik untuk dipraktikkan konsep ini ketika mempertimbangkan keperluan-keperluan asas pengguna dan pada masa yang lain konsep ini perlu disederhanakan berikutan had-had atau halangan- halangan  tertentu terdapat pada kemampuan komputer client yang berbagai spesifikasinya.

Jikalau anda seorang yang mementingkan SEO Google, Yahoo dan Bing, konsep ini memerlukan anda untuk memfaktorkan semula kod-kod HTML, javascript dan CSS anda. Ini kerana, Search engine hanya berinteraksi dengan web server berbanding urusan yang terdapat dalam kod javascript anda. 

Apapun ini bukanlah sebuah konsep yang baru dalam dunia teknologi web. Mungkin saja ada yang telah mematangkan lagi konsep ini agar persembahan web tidak hambar di mata kasat pengguna smart phone. 

Thursday, July 10

Pemfaktoran kod yang Perlu diBeri Perhatian Bagi Kelancaran Aplikasi Backbone Anda

Setelah hampir setahun berkubang menggunakan BackboneJs dan RequireJs, berbagai faktor yang perlu diberi perhatian sekiranya anda benar-benar menitik beratkan untuk membangun sebuah aplikasi laman tunggal yang berkesan. Antaranya adalah 

1. Organisasi kod
2. Kebocoran memori pada Backbone.View dan Event
3. Kekerapan berhubung antara client dan server
4. Teknik rendering Backbone.model dalam sesebuah Backbone.Collection

Organisasi kod
Saya menggunakan RequireJs dalam soal organisasi kod. Ini adalah kerana pustaka ini berkhidmat untuk mengatur langsung keperluan-keperluan terhadap pustaka javascript yang lain bagi meminimalkan pencemaran penggunaan pembolehubah yang berskop global. Disamping itu kod yang terhasil adalah lebih mudah dibaca kerana kemodularan skop skrip itu sendiri. Apa yang menarik mengenai teknik ini adalah, aplikasi hanya akan memuat turun pustaka atau skrip yang diperlukan pada saat ia diperlukan. Jadi aplikasi tidak perlu untuk memuat turun keseluruhan kod atau skrip untuk sesebuah aplikasi berfungsi dengan berkesan.

Kebocoran memori pada Backbone.View dan Backbone.Event
Disebabkan ketergantungan BackboneJs kepada jQuery, maka adalah penting untuk anda memastikan setiap elemen yang dihasilkan oleh Backbone.View anda benar-benar dihapuskan dari view sebelum beralih kepada view yang lain. Ini kerana jQuery bertindak untuk meng'cache' atau mengklonkan elemen yang dihasilkan view bagi tujuan pengaksesan yang cepat. Maka kemungkinan besar anda akan terperangkap dengan tindakan jQuery tersebut dengan menghasilkan elemen-elemen yang serupa dengan fungsi yang sama. Ini adalah suatu kesalahan sekiranya anda tidak menyedari peranan tersebut. Anda akan dapati tindakan keatas elemen-elemen yang serupa dan sama itu tadi akan berakibat penghasilan pelaksanaan kod yang beberapa kali diulang-ulang. Backbone ada menyediakan ruang untuk atasi perkara ini, sama ada ada menggunakan kaedah .remove(), .off(), .setElement() atau .delegateEvent(). 

Kekerapan berhubung antara client dan server
Ada keadaan-keadaan tertentu yang memerlukan saya menghubungi server untuk query ke database bagi maklumat-maklumat tertentu. Sebagai contoh, maklumat pengguna yang login ke aplikasi. Maklumat ini pada awal pemulaan aplikasi, sewaktu pengguna sudah berjaya login, telah pun dicapai maklumatnya dari database. Jadi saya akan menentukan untuk menyimpan maklumat ini sama ada melalui kaedah in-memory, sessionStorage atau localStorage. Tetapi saya memilih untuk mengekalkannya sebagai sebagai sebuah objek yang aktif. Cara ini akan menjimatkan masa ulang alik query database kerana maklumat kritikal ini senantiasa diperlukan untuk operasi CRUD. Ini bermakna sebagai seorang pengaturcara, anda perlulah menilai kembali seberapa kerap anda perlu menjalin hubungan dengan server. 

Teknik rendering Backbone.model dalam sesebuah Backbone.Collection
Bagi sebuah Collection yang bersaiz besar, adalah penting untuk memfaktorkan semula teknik anda merender model didalamnya bagi mengelak penyalahgunaan memori pada komputer client. Sekiranya tidak difaktor semula, ini akan menimbulkan ketidakselesaan pada pengguna ketika menggunakan aplikasi. Kebanyakan contoh diluar akan menampilkan teknik jQuery .append() untuk render model dalam collection. Teknik ini akan mengurangkan tahap responsif sesebuah aplikasi terutamanya pada komputer lama. Salah satu cara yang popular untuk mengatasi masalah ini adalah document.createDocumentFragment(). Setakat ini saja cara yang cepat dan efisyen untuk merender subview.

Wednesday, June 18

Tingkatan Manusia Ber "Iman"


Kita sering mendengar kata Iman, dan kita tahu bahwasanya setiap manusia itu beriman menurut keyakinannya, namun ada tiga tingkatan manusia yang beriman di sisi Allah, iaitu:

Tingkatan Pertama: Iman » Ilmu » Amal

Tingkatan manusia ini adalah tingkat manusia awam, ia sifatnya umum terhadap semua manusia, baik muslim maupun non-muslim. Inilah peranan 'Ar-Rahman' nya Allah terhadap makhluknya (QS. 55).

Tingkatan Kedua: Iman » Islam » Ihsan

Tingkatan ini adalah level menuju jenjang berikutnya, ialah level dimana ketika manusia awam tersebut telah menemukan jati dirinya untuk meyakini apa-apa yang telah diturunkan oleh Allah, hingga dia yakin seyakin-yakinnya bahawa kepada Allahlah tempat mengabdi hingga bergetarlah hatinya untuk membela Keinginan Allah secara mutlak (QS. 8:2).

Tingkatan Ketiga: Iman » Hijrah » Jihad

Tingkatan iman ini adalah tingkatan iman tertinggi dari iman-iman yang lain, kerana tingkatan ini telah masuk ke alam praksis demi perwujudan dari keinginan Allah. Orang-orang yang masih ada keraguan dihatinya, pasti tidak akan dapat mencapai tingkatan iman yang ketiga ini, kerana Iblis akan selalu menghalangi manusia agar jangan sampai kepada tingkatan ini.

Tingkatan ini adalah tingkatan dimana manusia telah siap menggalang amanah sebagai fitrahnya menjadi "KHALIFAH" di muka bumi ini, demi mewujudkan "KERAJAAN ALLOH" dan menata "ALAM SEMESTA" ini, telah menjadikan bahawa "DINUL ISLAM" sebagai pilihan untuk ditegakkan dalam wujud "MADINAH" yang utuh. (QS. 9:20)

Termasuk kategori manusia yang beriman yang manakah kita hari ini? :)

Wallahu a'lam bis showab...

Sunday, May 25

SAMBUTAN ISRA' MI'RAJ RASULULLAH MUHAMMAD SAW

Ketika Sang Kekasih menjadi sahabat, tempat manapun menjadi "bagaikan di langit;" dan bukan "terbenam ke bumi."



Sang Nabi SAW, berkata, "Jangan menyangka mi'raj-ku lebih unggul daripada apa yang terjadi pada Yunus; aku diangkat ke langit; dia ditenggelamkan ke dalam perut paus; kedekatan pada al-Haqq itu di luar perhitungan."

Kedekatan itu bukan soal naik atau turun: kedekatan pada al-Haqq itu ertinya keMERDEKAan dari penjara keberadaan.

Tiada tempat bagi gerak "ke atas" atau "ke bawah" dalam ketiadaan. Ketiadaan tak mengenal "nanti," "jauh," atau "terlambat." Sumber ilmu dan khazanah al-Haqq berada di ketiadaan. Kerana keberadaan ini saja telah menipumu, bagaimana mungkin kau fahami apa itu ketiadaan? Kekurangan adalah bahagian dunia yang telah ditentukan bagi sang Nabi saw, kefakiran dan kerendahan adalah kebanggaan dan kemuliaannya.

(Maulana Jalaluddin Rumi)

Nuh: Jangan lakukan itu anakku sayang



Kanaan tengah berenang di laut sambil berkata: "Tidak, aku tak perlukan kapal dari musuhku Nuh."
"Ayuhlah kemari!" teriak Nuh, "Duduklah di kapal bapakmu, anak bodoh, agar engkau tak tenggelam di lautan."

"Tidak!" jawab Kanaan, "Aku telah belajar berenang. Aku telah menyalakan lilin lain selain lilinmu."

"Berhati-hatilah, jangan lakukan hal ini! Ombak yang datang hari ini akan membawa banjir besar. Tangan, kaki dan kemampuan berenang tak akan ada ertinya hari ini. Ini adalah bencana dari kemarahan-Nya, sebuah goncangan yang akan memadamkan semua lilin. Hanya lilin-Nya-lah yang akan bertahan abadi."

"Tidak!" jawab Kanaan, "Aku akan pergi ke gunung yang tinggi. Ia akan melindungiku dari segala bahaya."

"Berhati-hatilah, jangan lakukan hal itu! Gunung itu saat ini hanyalah bagaikan jerami. Tuhan hanya akan melindungi orang-orang yang dicintai-Nya."

"Sejak bilakah aku pernah mendengarkan nasihatmu, hingga engkau begitu yakin kali ini aku akan mendengarkanmu?" tanya Kanaan, "Kata-katamu tak pernah aku hiraukan. Aku berlepas darimu, dari hari ini dan hari yang akan datang."

"Berhati-hatilah, jangan lakukan itu anakku sayang. Ini bukanlah harinya untuk bersikap acuh. Tuhan tidaklah berkeluarga, Dia pun tak mempunyai pasangan. Hingga hari ini engkau selalu bersikap tak peduli; tapi hari ini adalah hari di mana Allah tak peduli. Keacuhan siapakah yang dapat memecahkan kedinginan dalam pengadilan Allah? Dalam keabadian Dia tak berawal; Dia tak berayah, tak beranak dan tak berpaman. Lalu bagaimana mungkin Ia akan menderita karena keacuhan seorang anak? 

Bagaimana Ia akan mendengarkan keacuhan seorang Ayah? ‘Aku tak berawal’ sabda Allah. 'Hai orang tua, janganlah berbangga. Karena Aku adalah Yang Tak Berawal; hai anak muda, janganlah berjalan dengan sombong. Aku bukanlah seorang suami, kerana hasrat tak ada dalam Diriku; hai wanita buanglah segala keacuhan.’ Dalam hadirat-Ku tak ada yang berharga selain rasa rendah hati, penghambaan dan penyerahan diri.’"

"Engkau telah mengatakan hal ini selama bertahun-tahun Ayahku," kata Kanaan, "Dan kini engkau mengulanginya lagi. Engkau telah gila dan hilang akal. Engkau telah mengatakan hal yang sama pada ramai orang, dan engkau telah menerima banyak jawapan yang menyakitkan hati! Tapi kata-katamu yang sakit itu tak pernah memasuki telingaku, apatah lagi sekarang, saat aku telah menjadi orang yang bijak dan berkuasa."

"Apa ruginya bagimu, anakku, jika kali ini engkau mengikuti nasihat ayahmu?"

Nabi Nuh terus saja menasihati anaknya dengan lembut, yang selalu ditolak anaknya dengan kata-kata yang kasar. Sang ayah terus saja menasihati anaknya tanpa lelah; tapi tak satupun yang masuk ke telinganya. Saat mereka sedang berdebat, tiba-tiba datanglah sebuah ombak besar yang menghempas Kanaan dan menghancurkan kepalanya hingga berkeping-keping.

"Wahai raja segala raja," ratap nabi Nuh, "Keledaiku telah mati, dan air-Mu telah menghempas semua hartaku. Bukankah Engkau telah berjanji padaku bahwa 'Keluargamu akan terselamatkan dari banjir ini.’ Aku adalah orang yang sederhana, dan aku telah meletakkan harapanku pada janji-Mu; lalu mengapa kini bencana-Mu merampas apa yang kumiliki?"

Tuhan berfirman, "Dia bukanlah keluarga dan saudaramu. Tak lihatkah engkau bahwa warnamu putih dan dia biru?"

"Aku tak mempunyai apa pun," kata Nuh, "selain dari esensi-Mu. Orang yang telah mati di dalam-Mu sesunguhnya adalah Diri-Mu sendiri. Dan Engkau mengetahui keadaan diriku terhadap-Mu: dua puluh kali lebih memerlukan-Mu daripada padang rumput yang memerlukan hujan, aku hidup melalui-Mu, bergembira melalui-Mu, seorang miskin yang diberi makan tanpa perantara, tak tersatukan dan tak terpisahkan--wahai Yang Maha Sempurna--tanpa kualiti, tanpa penjabaran dan tanpa penyebab. Kami adalah ikan dan Engkau adalah Lautan kehidupan; dengan kurnia-Mu Kami hidup wahai Tuhan yang mempunyai Asma-asma Yang Agung. Wahai Tuhan Yang Karya-Nya tak terfikirkan oleh siapa pun; Tuhan yang berkarya tanpa penyebab. Sebelum dan sesudah banjir ini, aku menyerahkan hidupku dalam keadaan apa pun pada-Nya; dengan-Mu-lah aku pernah bercakap-cakap, bukan dengan manusia, wahai yang menciptakan percakapan dahulu dan yang akan datang. Bukankah seorang pencinta selalu terikat pada reruntuhan rumah kekasihnya? Dari luar ia tampak mengacuhkan bangunan roboh itu; tetapi kepada siapakah ia selalu melantunkan puji-pujiannya? Puji syukur ke hadirat-Mu, yang telah menghancurkan segala perantara dari kejahatan, kerana perantara itulah yang membawa kejahatan, bersuara bagaikan ratapan atau gaung. Aku menganggap kehancuran semacam itu bagaikan sebuah jawapan balik, bagaikan gunung, dengan gaungnyalah aku dapat mendengar nama-Mu lebih keras, kerana aku telah jatuh hati dengan nama-nama-Mu yang menyegarkan jiwa. Dengan alasan itu pulalah setiap nabi sangat mencintai gunung-gunung, agar dapat mendengar nama-Mu lebih keras; tetapi di setiap lembah dari gunung-gunung itu hanya dapat memuat seekor tikus, bukan manusia, sebagai tempat berhenti. Kerana ketika aku berbicara tak ada yang menyahut, dan napas dari suaraku tak menghasilkan gaung. Tinggalkanlah ia di bumi; jangan tercampurkan; remukkanlah ia dibawah kakimu!"

Tuhan berkata, "Hai Nuh, jika engkau mahu, Aku akan meremukkan mereka semua dan membangkitkannya dalam debu. Aku tak ingin hatimu terluka dek Kanaan, tetapi aku sedang menunjukkan padamu kedudukan jiwa mereka yang sebenarnya."

"Tidak, tidak," tangis Nuh, "Aku mengetahui bahwa Engkau seharusnya juga menenggelamkanku jika Engkau menghendaki. Setiap detik dari tenggelamnya diriku adalah kebahagiaan bagiku. Perintah-Mu adalah jiwaku; dan kuhargai seperti hidupku sendiri. Aku tak melihat pada manusia lain; kerana aku menganggapnya sebagai perwujudan dari diri-Mu, tetapi Engkaulah yang menjadi perhatian utamaku. Dalam keadaan susah dan senang aku jatuh cinta pada karya-Mu; bagaimana aku dapat bertindak bagaikan seorang bodoh yang mencintai sesuatu yang lain yang sebenarnya tak ada?"

Berbahagialah orang yang di mabuk cinta dengan karya-karya-Nya ; seorang kafir adalah mereka yang mabuk cinta oleh sesuatu yang sebenarnya tak ada.

(Maulana Jalaludin Rumi)

Thursday, April 10

Belajarlah dari fitrah buah-buahan



Jadilah buah jagung, jangan jadi buah gajus. Jagung membungkus bijinya yang banyak, sedangkan buah gajus menunjukkan bijinya yang cuma ada satu. 

Maksudnya : Jangan suka menunjuk-nunjuk harta, ilmu dan sebagainya.

Jadilah Pokok pisang. Pokok pisang kalau berbuah hanya sekali, kemudian mati. 

Maksudnya : Kesetiaan dalam perkahwinan, kesetiaan dalam perjuangan

Jadilah buah durian , jangan buah kedondong. Walaupun di luarnya penuh dengan kulit yang berduri tajam, tetapi dalamnya lembut dan manis. Jauh berbeza dengan kedondong, luarnya licin tapi rasanya agak masam dan di dalamnya ada biji yang berduri. 

Maksudnya : Don’t Judge a Book by its Cover.. jangan menilai orang dari luarnya saja.

Jadilah ubi kayu. Walaupun hidup dalam tanah, tetapi isinya putih bersih. 

Maksudnya : Jagalah hati jangan kau nodai dengan nafsumu.

Jadilah setangkai petai, bukan setangkai rambutan. Tangkai petai memberi makanan yang sama rata ke biji petainya, semua seimbang, tidak seperti rambutan.. ada yang kecil ada yang besar. 

Maksudnya : Pertimbangan yang adil.

Jadilah cili Semakin tua semakin pedas. 

Maksudnya : Semakin tua semakin bijaksana...

Jadilah pokok kelapa yang banyak gunanya pada manusia. Dari buah, batang, daun, sabut dan lain-lain besar kegunaannya pada manusia.

Maksudnya: Jadi serba guna pada agama, negara dan bangsa

Friday, March 14

Mengurus fail Aplikasi PHP Slim

Jika dirujuk pada laman rasmi tentang bagaimana mengurus aplikasi Slim apabila skop dan saiznya mulai berkembang, tiada pula diterangkan mengenai contoh kod terperinci yang terlibat dalam fail yang berasingan. Cuma diterangkan kelebihan penggunaan sintaks require dapat memudahkan pembacaan kod dan keteraturan fail-fail PHP.


Persoalan akan timbul bilamana ralat (teks quote dibawah) muncul ketika fail-fail tersebut mencuba menggunakan instance Slim (rujuk gambar di atas).
PHP Fatal error: Class 'Slim' not found

Sampel kod di atas adalah contoh penggunaan instance Slim. Bagi atasi masalah ini berlaku, sintaks yang akan digunakan dalam kesemua fail yang berasingan dari fail utama (index) adalah 

use Slim\Slim;

Selamat mengoding!

Wednesday, January 29

Menghayati Fungsi Solat III

Adapun mengenai solat yang akan kita bahas di siri ini ialah yang sebagaimana difirmankan Allah SWT yang bunyi-Nya :

… إِنَّ الصَّلاَةَ تَنْهَى عَنِ الْفَحْشَاءِ وَالْمُنْكَرِ…(45)

“….Sesungguhnya solat itu mencegah dari (perbuatan-perbuatan) keji dan mungkar….” (Q.S. Al-Ankabuut : 45).

Pengertiannya :

Bahawa solat itu berfungsi bagi diri supaya mencegah kekejian dan kemungkaran. Jadi, terhadap yang melakukannya, tetapi hanya pandang enteng bila berlakunya kemungkaran, maka ertinya solat itu tidak sejalan dengan yang dimaksud oleh ayat tersebut di atas.

Bahawa lanjutan dari solat itu harus sedaya mungkin berusaha mencegah perbuatan yang bertentangan dengan hukum-hukum Allah. Ertinya, bagi setiap yang sudah melakukan solat dan sesuai dengan esensi yang dikandung dalam solat, maka dirinya akan terus bergerak melawan kemungkaran.

Tuesday, January 21

Menghayati Fungsi Solat

Pada dasarnya bahawasanya seseorang yang sudah melakukan solat, maka sesungguhnya telah “BERJANJI” pada Allah, sebagaimana yang dikandung dalam ungkapan kalimat “Iyyaka na’ budu” yang ertinya : “HANYA kepada engkau kami menyembah / beribadah”. Ibadah berasal dari kata “abada” (menyembah, mengabdi/berbakti). Menyembah atau berbakti kepada Allah bererti bernaung di bawah ketentuan Hukum-Hukum Islam. Maka, dalam solat itu juga bererti telah memberikan pernyataan diri sebagai “petugas” dari Kerajaan Allah. Sehingga dirinya itu siap sedia pula melawan setiap kekuatan yang menghalangi tegaknya undang-undang yang telah diturunkan Allah SWT.

Menghayati Fungsi Solat II

Tentu lain halnya seseorang yang telah berjanji ketika menunaikan solatnya, sedang dalam hal itu bersetuju berlakunya hukum-hukum Jahiliyah (thagut), atau rela bila hukum Islam dicampakkan dari dirinya, maka itu beerti melanggar janjinya sendiri juga bermakna solatnya itu hanya palsu belaka. Kita mesti ingat pesan Rasulullah SAW :

اَوَّلُ مَايُحَاسَبُ بِهِ الْعَبْدُ يَوْمَ الْقِيَامَةِ الصَّلاَةُ فَاِنْ صَلَحَتْ صَلَحَ سَائِرُ عَمَلِهِ وَاِنْ فَسَدَتْ فَسَدَ سَائِرُ عَمَلِهِ

“Yang paling utama dihisab (ditanya) seseorang hamba pada hari kiamat ialah mengenai solat. Apabila beres solatnya, beres segala amalnya. Dan jika rosak, maka rosak pula segala amalnya”. (H. R. Thabrany).

Yang akan diperiksa dari hal melakukan solat itu, tidak hanya perkara-perkara yang mengenai rukun-rukun atau wujudnya secara lahiriah sahaja. Sebab, bila hanya untuk itu, maka orang-orang munafik atau fasik pun dapat melakukannya. Tegasnya, bahwa yang akan diperiksa mengenai solatnya seseorang itu adalah mencakup pula akan isinya antara lain :

Sudahkah dengan solatnya itu dia mencegah kemungkaran dan kekejian sebagaimana yang disebutkan oleh ayat tadi di atas?.

Sungguhkah dia melakukan solat itu dengan sepenuh hati, sedia menjalankan seluruh Perintah Allah, sebagaimana perierti solat itu sendiri, atau hanya mengakui sebahagiannya saja ; sebahagiannya lagi dia pakai aturan sendiri?.

Dan adakah janji dalam solatnya itu merupakan janji yang boleh dipertanggungjawabkan atau sekadar hanya janji kosong? Atau memang sengaja dia telah berani merosak janjinya, kerana menganggap lekeh terhadap makna tujuan menyembah kepada Allah?.

Monday, January 20

More security added for your BackboneJS apps

I've been exploring this simple login mechanism used by Clint where he simply depends on the PHP session to authorize the user on every request made to PHP REST server. Alhamdulillah it solves my problem on how to authenticate user on BackboneJs apps (star or fork it here). But I still feel something is not right because when you are building the Ajax apps, you cannot simply authorize the session or cookie just like you usually do your traditional PHP apps. I read more about how to validate, authorize, authenticate, etc the AJAX apps.

After spending time reading this, I thought Clint's apps lack of basic CSRF. So here is snippet to make your BackboneJs Apps more secure

Please refer to index.php file where you can see all the slim framework code, look for function name "login" and "authorize" 

Simply replace the code above. The snippet now will authenticate every request made to the server. Check this out in your debugger console.

Before user login

After login and request protected data






As for the front end, you will need to modify your login script by define the request header

The flow with this approach may go something like this:
  1. The user navigates in their browser to the BackboneJs application
  2. The server returns a basic web page and a JavaScript application
  3. The JavaScript application can’t find an authentication token in the web site’s cookies
  4. The JavaScript application displays a login form
  5. The user enters correct login credentials and then submits the form
  6. The server validates the login information and creates an authentication token for the user
  7. The server sets the authentication token in a cookie/session and returns it to the JavaScript application
  8. The JavaScript application makes a request for some protected data, sending the authentication token in a custom header
  9. The server validates the token and then returns the data
as you noticed, i used jQuery's function and Twitter Bootstrap's CSS class.

Tuesday, January 14

Apa itu "Manunggaling Kawula lan Gusti"?

"Kawula" adalah jasad manusia, sedangkan "gusti" adalah raja dari jasad manusia, yaitu nafs atau jiwa (ingat: nafs di sini bukan hawa nafsu). "Manunggaling kawula lan gusti", adalah menyatunya keinginan jasad dengan keinginan nafs atau jiwa. Ini sering juga disebut sebagai "pernikahan" (antara jasad dengan nafs)

Jika jasad adalah kuda dan nafs adalah penunggangnya, maka ketika kuda dan penunggangnya sudah "manunggal", bererti kuda sudah tunduk dan patuh kepada penunggangnya. Bukan lagi kuda liar yang mempunyai kehendak semaunya. 

Namun kebanyakan manusia itu nafs-nya mati, atau seperti kuda yang tidak memiliki penunggang sehingga bebas lari ke sana ke mari. Dalam tataran jasad, larinya jasad sesuka hati berasal dari dorongan syahwat dan hawa nafsu. Ini adalah kawula yang belum manunggal dengan gusti. Dan ini adalah kebanyakan dari kita. 

Setelah jasad dan nafs menyatu, maka yang menjadi "kawula" adalah 'pernikahan antara jasad dan jiwa' tadi, sedang gustinya adalah Ruh Al-Amin. Maka, penyatuan tahap berikutnya adalah antara "kawula" ('pernikahan' jasad dan jiwa) dengan Ruh Al-Amin. Inilah yang disebut sebagai ma'rifat. Tahap penyatuan awal antara jasad dan nafs itu baru setengah dari agama, kerana, seperti kata Imam Ali bin Abi Thalib: "Awal Ad-Diin (agama) itu adalah ma'rifatullah." 

Kerananya, melihat paparan di atas, setidaknya Anda boleh mengerti salah satu makna atau hikmah dari hadis berikut: Dari Anas bin Malik r.a ia berkata: bersabda Rasulullah saw: “Jika seorang hamba menikah, bermakna dia telah menyempurnakan setengah agamanya, maka hendaklah ia bertaqwa kepada Allah pada separuh sisanya.” (HR. Baihaqi)

Wallahu 'alam bishawwab

Saturday, January 11

Dharma

Kata “Dharma” berasal dari bahasa Sanskrit, akar katanya adalah “dhr” (baca: dri) yang ertinya menjinjing, memangku, memelihara, mengatur, atau menuntun. Akar kata “dhr” ini kemudian berkembang menjadi kata dharma yang mengandung erti hukum yang mengatur dan memelihara alam semesta beserta segala isinya. Dalam hubungan dengan peredaran alam semesta, kata dharma dapat pula bererti kudrat (diri). Sedangkan dalam kehidupan manusia, dharma dapat bererti ajaran, kewajiban atau peraturan-peraturan suci yang memelihara dan menuntun manusia untuk mencapai kesempurnaan hidup yaitu tingkah laku dan budi pekerti yang luhur.

Wallahu Alam