KidinoCI – Projek Modifikasi Codeigniter Dengan Integrasi TankAuth, GroceryCRUD

Saya telah memulakan satu projek baru di Github. Anda boleh gunakannya ikut kesesuaian sendiri dan projek ini diedarkan dengan lesen open source MIT.

Saya ni takdelah pantas nak mengikut dan tangkap teknologi terkini dalam programming. Walaupun ramai yang dah beralih ke Laravel (mungkin saya perlu juga nanti), saya masih gunakan Codeigniter. Kalau nak saya rumuskan, Codeigniter ni senang untuk belajar, senang untuk diajar dan senang untuk deploy.

Apa-apa pun, inilah dia KidinoCI, sebuah modifikasi Codeigniter dengan integrasi ciri-ciri tersebut:

  • Codeigniter 3
  • Tema Bootstrap 3
  • GroceryCRUD – untuk pengurusan data dan menyokong ciri soft delete
  • MY_Model oleh averiner untuk operasi database selain GroceryCRUD
  • TankAuth – untuk login, logout, forget password, register, dll
  • Kaedah DRY melalui Public_Controller, Loggedin_Controller
  • Modul pengurusan pengguna
  • Modul pengurusan profil peribadi
  • Modul ACL dengan groups and permission
  • Modul Contacts / Address Book yang menggunakan GroceryCRUD

Pada saya, dengan ini mudahlah nak mula membangunkan aplikasi web berasaskan PHP. Setup sahaja, login, logout, pembangunan form dan tables, banyak benda-benda tu dah ada.

Harap-harap membantu.

KidinoCI
https://github.com/kidino/kidinoci

Nota:

Cara Ringkas Memantau Laman Web Masih Hidup Dengan PHP (Website Up Time Monitoring)

Saya pasang “website monitoring” ni beberapa bulan lalu. Tiada apa yang berlaku. Jadinya saya tiada menerima sebarang makluman daripada skrip PHP ringkas ini. Tapi hari ini tiba-tiba saya mula menerima email.

“website-orang.com has been down for 00:05:00”

Apa?! Memang saya terkejut. Ini laman web klien besar. Dahlah sebelum ni ada masalah besar yang berlaku. Ianya antara sebab kenapa saya pasang monitoring ni.

Jadi perkara pertama yang saya buat adalah mencuba laman web tersebut dengan pelayar Chrome. Eh? Boleh saja. Kenapa ni ya?

Jadi saya pun hubungi syarikat hosting yang saya gunakan. Ini antara maklumbalas yang saya terima.

Network Disruption Details:
There is network disruption for international link and only certain location clients will be affected when connect to all MY network IP.

We will perform a details check on this and post another updates once it become available.

Rupanya trafik dari luar Malaysia tidak boleh akses laman web ini. Skrip “monitoring” saya ni memang berada di server di luar negara. Jadi sebab itulah skrip ini tak boleh akses laman web klien, tetapi bila saya buka dengan Chrome, boleh pula.

Sebenarnya, bila saya berkongsi tentang hal masalah network ini di Facebook, ada yang bertanya perihal skrip yang saya gunakan. Jadi saya kongsikan di sini.

Skrip PHP ini saya gunakan dengan penjadualan Cron. Ianya berjalan selang 5 minit. Dan pastikan bila anda gunakan ini, skrip tidak berada di server yang sama dengan laman web yang ingin dipantau.

 

Ini Github Gist saya. Selamat mencuba.

Membina Two-Factor Authentication (2FA) Dalam Sistem PHP Menggunakan Google Authenticator

google-authenticator3Kita biasa login ke sistem di web mengguna username dan password. Dan kalau kita menggunakan aplikasi perbankan, sebagai tambahan kita perlu menggunakan kod TAC yang hadir dalam telefon melalui SMS.

Kalau kita biasa, mungkin ada website lain yang kita gunakan juga meminta kod khas yang hanya boleh didapati daripada telefon kita.

Ini semua dipanggil Two-Factor Authentication atau 2FA. Saya baru-baru ini mengaktifkan ciri-ciri 2FA untuk mengakses panel Amazon Web Service (AWS) syarikat. Amazon menggunakan aplikasi Google Authenticator untuk ini. Setelah aplikasi dipasang di telefon, kita boleh membuat tetapan khas bersama dengan AWS supaya boleh menggunakan 2FA.

Sekarang, apabila perlu login ke AWS, saya perlu nyatakan username, password dan kod khas yang saya boleh dapati daripada aplikasi Google Authenticator di telefon.

Sebenarnya kita juga boleh membangunkan sistem dan menggunakan Google Authenticator untuk pengguna-pengguna sistem kita.

Aplikasi Mobail Google Authenticator

Google Authenticator adalah aplikasi mobail yang boleh dimuat-turun kepada telefon pintar iOS, Android dan Windows. Kita boleh dapati aplikasi ini dari pautan di bawah:

Android
https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2

iOS (iPhone dan iPad)
https://itunes.apple.com/my/app/google-authenticator/id388497605?mt=8

Windows Phone
http://www.windowsphone.com/en-us/store/app/authenticator/021dd79f-0598-e011-986b-78e7d1fa76f8

Dengan aplikasi ini, pertama sekali yang kita perlu lakukan bersama pengguna adalah menyelaraskan kekunci khas yang digunakan untuk menjana nombor rawak unuk login kelak.

Apabila kita mengaktifkan ciri 2FA dengan pengguna, apa yang kita lakukan adalah menjana satu kekunci rahsia yang khusus, yang kita kongsi hanya antara pengguna dan sistem kita. Pengguna akan menggunakan aplikasi Google Authenticator untuk menyimpan kekunci tersebut. Dan kita boleh, boleh menggunakan database atau fail. Setiap pengguna akan mempunyai kekunci rahsia yang berbeza.

Bagaimana Google Authenticator Berfungsi?

Menjana nombor rawak untuk 2FA. Saya tak pasti saudara-saudari mengetahui bagaimana nombor rawak dijana. Tetapi, secara amnya, fungsi nombor rawak di dalam komputer pasti menggunakan satu nombor atau data “seed”. Kekunci rahsia yang kita jana tadi adalah “seed” untuk menjana nombor rawak untuk 2FA.

Berasaskan masa dan kekunci rahsia (sebagai seed) tadi, ianya digunakan oleh kedua-dua sistem untuk menjana kod nombor rawak yang digunakan untuk login. Selagi mana kekunci rahsia sama dikongsi oleh kedua-dua aplikasi, nombor rawak yang sama dapat dijana. Inilah yang digunakan untuk mengesahkan identiti pengguna secara 2FA.

google-authenticator4Integrasi Google Authenticator dengan Sistem

Saya ada membangunkan aplikasi demo penggunaan Google Authenticator. Ianya boleh didapati di Github saya.

Aplikasi Demo Google Authenticator oleh Saya
https://github.com/kidino/PHP-Google-Authenticator

Saya perlu beri kredit kepada pembangun library khusus untuk Google Authenticator dengan PHP. Saya dapatinya daripada PHPGansta di sini.

Library Google Authenticator untuk PHP yang saya gunakan
https://github.com/PHPGangsta/GoogleAuthenticator

google-authenticator2

Mungkin elok juga saya nyatakan bahawa kod yang saya hasilkan hanya sekadar mencuba integrasi aplikasi mobile Google Authenticator dengan sistem berasaskan PHP.

Di dalam sistem sebenar, implementasinya mungkin lebih rumit.

  • Kita perlu beri kebebasan kepada pengguna untuk mengguna ataupun tidak menggunakan 2FA.
  • Perlu ada cara reset kembali login 2FA secara manual
  • Perlu ada cara untuk reset kembali login 2FA dalam keadaan mana pengguna kehilangan telefon atau rosak
  • Perlu kaedah menyimpan secret key pengguna dengan lebih selamat, di dalam database barangkali (contoh saya hanya menggunakan fail teks)

Selamat mencuba…

 

 

3 Teknologi Pembangunan Aplikasi Web Open Source Yang Anda (Mungkin) Tak Tahu

Apabila untuk pembangunan web, yang biasa kita baca, kita dengar, dan mungkin kita gunapakai adalah seperti PHP, Ruby, Python, C# dan ASP. Mungkin juga kita pernah dengar pasal bahasa pengaturcaraan baru seperti Go dan Dart.

Dari segi platform dan framework, mungkin kita pernah dengar atau guna Laravel, Codeigniter, CakePHP, Yii, Zend, Symfony. Atau mungkin .NET, Ruby on Rails (RoR) dan Django. Mungkin kita juga teruja dengan teknologi NodeJS dan juga Meteor.

Tetapi tiga platform pembangunan web ini mungkin anda belum pernah dengar. Dan sebenarnya bukan calang-calang teknologi ini. Setiap sesuatu ada pengikut setia mereka, aktif dibangunkan malah digunapakai dalam projek-projek yang hebat seperti membina SaaS, membina OS, membina IDE, aplikasi enterprise dan sebagainya.

Kalau kita pernah dengar pun daripada 3 projek ini, mungkin kita tidak menyangka yang ianya digunakan untuk pembangunan web. Maka di sini saya ingin kongsi 3 teknologi open source yang digunakan untuk pembangunan web yang mungkin jarang-jarang kita dengari:

Continue reading 3 Teknologi Pembangunan Aplikasi Web Open Source Yang Anda (Mungkin) Tak Tahu

Menulis Markdown Dengan Brackets Dan Extension Markdown Preview

Bila kita memulakan sebuah projek programming, lebih-lebih lagi yang untuk dikongsi secara open source, eloklah ianya disertakan dengan dokumen README.md.

Mungkin ramai yang kurang biasa dengan format markdown, atau pun fail .md. Ianya adalah satu format fail teks yang ringkas, untuk memudahkan penulisan dokumentasi projek programming. Sekiranya di Github, apabila projek kita mempunyai fail README.md, kandungan fail itu akan terus dijadikan pengenalan kepada projek.

Mungkin lebih mudah saya andaikan markdown ini seperti HTML. Jika HTML adalah hypertext markup language, dari inspirasi itu, lahirlah markdown, seperti sedikit ajukan dalam dunia web.

Markdown mempunyai fungsi-fungsi seperti HTML untuk saiz huruf, baris bawah, bold, bullet list dan lain-lain. Tetapi ianya tidaklah mempunyai fungsi yang banyak macam HTML terutamanya dari segi layout, warna dan sebagainya. Ianya diringkaskan agar penulisan dokumen markdown menjimatkan masa, dan pada masa yang sama, tetap kemas untuk dibaca.

Website Daring Fireball sering menjadi rujukan tentang Markdown.

Continue reading Menulis Markdown Dengan Brackets Dan Extension Markdown Preview

PHP DOS Launch: Satu Langkah Melancarkan Browser dan Webserver untuk Melihat Hasil Programming

Sebagai web programmer, web designer kita perlu melihat hasil kerja kita di browser. Dan banyak kali, kita perlukan webserver sekali. Saya menggunakan Windows. Dan biasanya kita ada XAMPP. Tapi kadang-kala, rasa banyak langkah juga nak lancarkan XAMPP dan Apache.

Tapi sekarang ni, PHP hadir bersama webserver. Kita boleh gunakan Command Line dan gunakan arahan:

php -S localhost:port

Port tu boleh guna apa-apa nombor. Tapi biasanya saya gunakan antara 1000 hingga 2000 sahaja. Folder di mana Command Line sedang berada, itulah akan menjadi webroot untuk localhost yang baru dilancarkan tadi.

Continue reading PHP DOS Launch: Satu Langkah Melancarkan Browser dan Webserver untuk Melihat Hasil Programming

Kemaskini Kod Git Push untuk Server AutoScaling di Amazon Web Service (AWS)

Sebelum ni saya menulis tentang menggunakan Git untuk menyuruh server mengemaskini aplikasi atau kod. Dengan hanya membuat push ke repo di server Git, server aplikasi juga akan mengemaskini dirinya dengan kod yang terkini.

AWS, Autoscaling dan ELB

aws-autoscaling

Saya banyak menggunakan server di Amazon Web Service (AWS). Antara ciri yang hebat di AWS adalah autoscaling. Dengan autoscaling, kita boleh membina sebuah load balancer dan meletakkan server-server di bawahnya. Maka, trafik yang diterima oleh website akan diagih-agihkan kepada server-server yang terdapat di bawah ELastic Load Balancer (ELB) ini. Biasanya server-server ini adalah serupa, mempunyai kod yang sama, setting yang sama dan lain-lain. Dengan autoscaling, kita boleh tetapkan beberapa peraturan bila dan keadaannya untuk AWS menambah atau mengurangkan server di bawah ELB ini.

Sebagai contoh, saya boleh tetapkan peraturan sebegini:
Continue reading Kemaskini Kod Git Push untuk Server AutoScaling di Amazon Web Service (AWS)

Backup dan Restore MySQL Anda

Ini adalah sebuah tutorial ringkas bagaimana untuk backup dan restore pengkalan data MySQL anda. Kemahiran ini adalah penting untuk memastikan kelangsungan aplikasi sekiranya berlaku sebarang peristiwa yang tidak diingini. Saya nak tekan di sini, apa yang kita buat adalah backup DAN restore. Sebab apa gunanya backup kalau tak boleh restore, betul tak?

MySQL mempunyai satu aplikasi command-line bernama mysqldump. Aplikasi ini adalah untuk dijalankan dalam persekitaran konsol, atau command-line. Bermakna kita perlu menaipkan arahan-arahannya di dalam MS-DOS di dalam Windows atau Terminal di dalam Linux.

Mari kita buat satu pengkalan untuk tutorial ini. Arahan-arahan berikutnya adalah membina sebuah pengkalan data dan memasukkan beberapa rekod. Anda boleh gunakan aplikasi klien MySQL yang lain sekiranya lebih selesa. Continue reading Backup dan Restore MySQL Anda

Node-Webkit: Jalan Pintas Membina Aplikasi Desktop Untuk Windows, Mac Dan Linux Bagi Web Programmer

Setelah sekian lama membina aplikasi web, agak berkarat kemahiran membina aplikasi untuk desktop. Kali terakhir membina aplikasi desktop adalah dengan Delphi. Dah berkurun rasanya. HTML, Javascript, CSS dan PHP lebih menjadi makanan harian. Malah bahasa scripting bash dan arahan command line Linux kadang-kala menjadi bahan minum petang.

Beberapa minggu lepas ada juga saya mencuba Visual Studio Express (VSE) untuk Desktop. Jadilah Hello-World saya. Tetapi kalau kita gunakan VSE, kita hanya membina aplikasi untuk Windows.

node-homepage

Baru-baru ni saya diperkenalkan Node-Webkit oleh Zulfa Junaidi (kenalan JOMWEB dan developer hebat di hasrimy.com). Node-Webkit adalah sebuah projek open source yang menggabungkan NodeJS dan engine pelayar Webkit (atau Chromium Embedded Framework) untuk pembangunan aplikasi desktop. Yang lebih menarik, seorang web programmer kini dengan mudah boleh membina aplikasi untuk Windows, Mac dan Linux sekali gus!
Continue reading Node-Webkit: Jalan Pintas Membina Aplikasi Desktop Untuk Windows, Mac Dan Linux Bagi Web Programmer

Bagaimana Menambah Domain Baru Di DigitalOcean.com

Web ini sememangnya menggunakan DigitalOcean.com. Bagi yang masih baru dengan cloud hosting dan server berasaskan Ubuntu, mungkin masih tertanya-tanya bagaimana untuk menambah domain ke droplet baru. Satu droplet boleh digunakan untuk lebih daripada satu domain.

Untuk langkah-langkah seterusnya, saya andaikan yang awak sudah ada akaun di DigitalOcean, maka awak sudah mempunyai sekurang-kurangnya satu droplet.

1 – Beli Domain (saya guna GoDaddy)

Kita boleh beli domain dengan mana-mana sahaja pendaftar (registrar) domain, Namecheap, Godaddy ataupun mana-mana pendaftar di Malaysia. Kita boleh gunakan domain .com, .com.my atau apa-apa sahaja. Yang penting kita boleh setkan Nameserver nanti,. Dalam contoh yang ini, saya gunakan Godadddy.

Continue reading Bagaimana Menambah Domain Baru Di DigitalOcean.com