The Way Of Life
Google

Wednesday, December 08, 2021

Cara ByPass Password phpVirtualBox di Linux Ubuntu

 


Kali ini saya akan membagikan pengalaman saya mengenai cara bypass password phpVirtualBox di Linux Ubuntu.

Ada beberapa teknik cara menembus password :

  1. Dengan cara menebak ( Brute Force ), yaitu dengan menebak password secara cepat dari karakter yang di-generate secara acak oleh program. Teknik ini butuh sumber daya komputer yang besar tergantung kebutuhan. Tehnik yang sama yang dilakukan oleh para penambang bitcoin saat ini.
  2. Men-decrypt password yang di-enkripsi dengan software atau algoritma tertentu terhadap string(kumpulan karakter) hasil dari karakter password yang di-encrypt.
  3. Me-reset password, yaitu dengan merubah paksa password yang lama dengan password yang baru.
  4. Mem-bypass password, yaitu teknik agar kita bisa masuk tanpa memasukan password.


Teknik ke-4 inilah  yang akan saya bagikan caranya kepada anda. Tulisan ini bisa saya hasilkan karena adanya insiden yang saya alami di kantor, adanya ex orang IT  yang sudah keluar/resign ternyata merubah semua password Windows Server, router mikrotik, phpvirtualbox ( Virtual Box ), serta menghapus file – file penting. Yang Atas berkat Tuhan Yang Maha Kuasa,  kesemuanya bisa saya kembalikan dan menembus password karena masih dalam “jangkauan radar” saya. Nanti akan saya bahas teknik yang saya pakai, beberapa sudah pernah saya tuliskan tekniknya. 

Untuk Cara hacking Router Mikrotik ada disini, lalu menembus password Window Server ini teknik yang sudah pernah saya gunakan 15 tahun yang lalu, ternyata masih bisa dipakai di tahun 2021, bisa dilihat disini.

Untuk masalah mengembalikan file yang dihapus ada banyak tools di internet anda bisa pilih sendiri, saya sendiri menggunakan EasyUS Data Recovery Wizard. Sudah banyak tutorial cara penggunaan-nya di Internet jadi saya tidak perlu menulisnya lagi, intinya jangan install di komputer yang sama (komputer yang file-nya terhapus atau dihapus), lalu hard disk "korban" dijadikan slave di komputer/pc yang terinstall aplikasi Easy Us Data.

Kembali ke cara menembus atau bypass password phpVirtualBox. Memang untuk mem-bypass password phpVirtualBox jika anda tahu password root server Linux yang anda gunakan, cukup dengan mengedit config.php, tetapi kasus yang saya alami adalah password root untuk server Linux telah diganti, sehingga saya menggunakan cara di bawah ini. Cara menembus atau mereset password Server Linux Ubuntu akan saya tulis di sini.

Tools berupa hardware dan software yang perlu disiapkan, yaitu :

  1. 1 Buah Flash Disk
  2. Linux Ubuntu Live USB
  3. Rufus

Rufus


Langkah langkahnya yaitu :

  1. Install Linux Ubuntu Live USB menggunakan Rufus di Flash Disk, tutorial ada banyak di internet, saya juga pernah tulis disini.
  2. Booting Server yang terinstall Virtual Box menggunakan Linux Ubuntu USB.
  3. Kemudian cari drive yang berisi file web server phpvirtualbox, biasanya  terinstall di directory \var\www\html\nama_folder_instalasi_phpvirtualbox
  4. Lalu klik kanan Open in Terminal
    Open in Terminal

  5. Ketik sudo su  untuk menjadikan anda root, untuk mengedit file (config.php) dengan root sebagai owner, anda harus sebagai root.
  6. Kemudian masuk ke folder \var\www\html\ nama_folder_instalasi_phpvirtualbox
  7. Lalu cari file config.php , edit menggunakan perintah nano.
  8. Hapus remark (#) pada baris var $noAuth = true; , kemudian simpan.
    Setting config.php

  9. Boot Ulang Server Ubuntu anda tanpa menggunakan Ubuntu Live USB.
  10. Jika berhasil maka anda tidak perlu memasukan password lagi untuk masuk ke phpvirtualbox


Semoga berhasil, dan tulisan ini bermanfaat.

related links:












Labels: , , , , ,

Wednesday, September 16, 2020

Beberapa Sebab Captcha Tidak Muncul

Captcha tidak muncul


Jika kita membuat sebuah aplikasi berbasis web, tentu pada form login tidak lupa kita menggunakan kode captcha untuk keamanan sistem dan memastikan bahwa yang login adalah human alias manusia bukan mesin / bot.

Berikut ini saya bagikan beberapa sebab atau masalah yang menyebabkan kode captcha tidak muncul atau error, dan tentu saja beserta solusinya. Semoga bisa menambah wasasan kita semua.

  1. Directory captcha tidak Full Access. Hal ini menyebabkan aplikasi tidak bisa membuat image captcha pada direktori tersebut, sehingga gambar atau image captcha tidak muncul. Solusinya adalah setting directory captcha anda menjadi full access. Bisa menggunakan perintah chmod pada linux, atau menggunakan kontrol panel bawaan hosting.
  2. Jika anda menggunakan PHP untuk membuat aplikasi, pastikan GD Library enabled, karena jika tidak aplikasi PHP anda tidak bisa membuat image captcha, cara mengeceknya bisa menggunakan phpinfo, anda bisa melihat caranya disini.
  3. Jika anda berganti hosting atau hosting tempat anda melakukan migrasi / update, biasanya apache web server-nya akan diupdate versinya. Nah file .htaccess yang berisi setting konfigurasi akses folder / direktori biasanya ada sedikit perubahan sintak yang nantinya akan berefek pada akses folder captcha. Coba cek pada file .htaccess, pada baris RewriteRule ^(.*)$ index.php/$1 [L] diganti menjadi RewriteRule ^(.*)$ index.php?/$1 [L], ditambah tanda tanya (?) pada akhir index.php. Kasus ini biasanya terjadi ketika kita atau hosting yang kita sewa melakukan update Apache Web Server.
  4. Username atau Password database server salah, captcha tidak muncul karena password database salah atau berubah. Hal ini menyebabkan image captcha tidak ter-generate. Hal ini kadang terjadi pada saat migrasi hosting, username database hilang atau tidak ikut dalam proses migrasi ( biasanya terjadi pada shared hosting ).

Semoga  bermanfaat.


Labels: , , , , ,

Friday, July 31, 2020

Cara Reset Password CMS Yang Di-Hash



Kali ini saya akan sharing mengenai cara me-reset password CMS ( Content Management System ) yang password-nya di-hashing menggunakan MD5 dan SHA, atau istilahnya double hashing. Rata rata atau boleh dibilang semua data password CMS pasti di-hashing minimal menggunakan MD5. Kali ini saya tidak akan membahas CMS yang terkenal seperti Wordpress, Jomlaa , Serendipity dan sebagainya karena sudah pasti banyak sekali dibahas di Internet. Saya akan membahas CMS jadi jadian yang tidak tahu merk-nya apa. Tetapi inti dari tulisan ini yaitu ide yang saya gunakan bisa digunakan di kasus yang lain dengan pola yang sama.

Awalnya saya mendapat tugas dadakan dari kantor yaitu membuat QR Code untuk menu digital, otomatis yang pertama dibuat adalah link url yang berisi menu. Web yang pertama karena masih fresh sudah menggunakan CMS yang kekinian yaitu Wordpress yang tentu saja saya lebih familiar, setelah saya selesai upload gambar daftar menu dan terbentuk link url-nya akhirnya jadi deh QR Code-nya Untuk menu digital yang tulisan-nya saya buat di sini.


Kemudian hari kedua dapat tugas yang sama untuk membuat QR Code untuk menu digital juga di restoran yang lama dan tentu saja umur website-nya lebih tua dari yang pertama. Masalahnya adalah orang yang mengurusi website tersebut sudah resign, sehingga tidak ada yang tahu password login ke CMS-nya. Untungnya cPanel-nya masih ada mengurusi sehingga saya masih bisa melihat struktur file html dan database-nya. Setelah saya pelajari sebentar, web-nya tidak menggunakan CMS yang terkenal tapi CMS tidak jelas darimana asalnya, kemudian password-nya disimpan dengan teknik double hashing, hashing yang pertama menggunakan MD5 ditambah "garam" alias Salt agar lebih kuat, kemudian di-hashing lagi menggunakan SHA1

password hash
Karena saya diberi waktu hanya 1 hari tidak akan mengotak atik enkripsi karena menghabiskan waktu. Akhirnya saya menggunakan “ilmu hitam”, yaitu dengan merubah logika source program php pada saat event login, caranya yaitu merubah logika sama dengan ( == ) dengan logika tidak sama dengan (!==). 

awalnya :

$row->password == $password

dirubah menjadi

$row->password !== $password


Hal ini akan menyebabkan apapun password yang anda inputkan walaupun SALAH maka dianggap BENAR. Asyik bukan? Ya asyik sekali, artinya meskipun anda menekan keyboard dengan siku tangan untuk memasukan password dan kemudian menekan Enter, maka anda sudah pasti bisa masuk ke main menu CMS-nya. 


Masalah kedua muncul yaitu bagian CMS-nya, CMS-nya ternyata CMS jadi jadian yaitu levelnya antara manual coding dan CMS alias "CMS Banci". Setelah saya pelajari sebentar dan menyiapkan gambar menu yang akan diupload, akhirnya menu pun bisa diupload dengan sedikit coding HTML murni. Dan hasilnya ada di bawah ini, silakan scan QR Code-nya untuk melihat menunya.


CMS Main Menu



Setelah gambar menu sudah ter-upload lalu saya me-reset password-nya dan merubah kembali logika program pada file php di menu login dari “!==” kembali menjadi “==”.

Semoga sharingnya bermanfaat

related links :



Labels: , , ,

Thursday, February 13, 2020

Cara Menghilangkan Karakter "Enter" di MySQL

Kali ini saya ingin berbagi tips untuk menghilangkan karakter "Enter" atau "New Line" pada data di database MySQL. Bagaimana karakter "Enter" ini bisa masuk di data salah satunya adalah karena model entrian data yang mengharuskan kita menekan tombol Enter agar cursor turun ke baris berikutnya seperti gambar di bawah ini. Berikut pengalaman yang saya alami yang mengharuskan saya menghilangkan karakter "Enter" masuk ke data. Aplikasi web yang dibangun di perusahaan saya menggunakan database MySQL sedangkan untuk aplikasi front end menggunakan ExtJS dan PHP ( CodeIgniter ). 

Form Inputan ExtJS pada entrian alamat

Karena ada kebutuhan untuk upload data ke pihak pemerintah yaitu OJK ( Ototitas Jasa Keuangan ) yang mengharuskan data debitur dikonversi menjadi data bebasis file text. Masalah yang timbul adalah dalam proses konversi ini adalah jika ada karakter "Enter" atau "New Line" pada data, maka data yang seharusnya 1 baris ( 1 data ) berubah menjadi lebih dari satu karena ada karakter "Enter" pada data alamat. Berikut saya berikan 2 cara menghilangkan karakter "Enter" pada MySQL:

  1. Jika data sudah terlanjur masuk ke dalam database MySQL, ketika load data anda bisa menggunakan perintah SQL yaitu SELECT REPLACE(alamat,'\n',' ') AS alamat FROM tabel. Yaitu menggunakan fungsi REPLACE, ganti karakter "Enter" menjadi spasi / space.
  2. Pada saat memasukan data ke database MySQL, gunakan fungsi PHP yaitu str_replace, contohnya pada PHP (CodeIgniter) yaitu : str_replace("\n"," ",$val->alamat);. Yaitu mengganti karakter Enter menjadi spasi.



Data alamat ketika sudah dihilangkan karakter "Enter"nya

Semoga bermanfaat.

Labels: , , ,

Monday, March 25, 2019

Error "Call to undefined function dbase_open()"

Call to undefined function dbase_open


Kali ini saya akan membagikan pengalaman saya ketika mendapatkan error pada aplikasi PHP ( Code  Igniter ) dalam menangani database yang menggunakan modul extension dbase. Untuk berikutnya tulisan akan saya tulis dalam bahasa inggris agar bisa bermanfaat bagi lebih banyak orang, tentu saja saya tulis dengan bantuan google translate dan saya perhalus lagi. Intinya tulisan ini adalah meng-enable-kan modul extension dbase pada PHP meskipun modul extension tersebut sudah ter-load.  

SLIK OJK

Aplikasi yang dibangun adalah aplikasi pelaporan SLIK untuk OJK yang dibangun oleh teman saya menggunakan Code Igniter dan interface ExtJS, menggunakan modul extension php dbase untuk mengolah database berupa file .dbf


A few weeks ago I found an error in my PHP application. The error message is Call to undefined function dbase_open (). When I checked at phpinfo.php (), the dbase module was loaded. 

dbase module loaded

But from the error message indicating that the function in the DBASE function does not exist. This of course confused me. 


Until finally after googling several hours I found that the extension module needed to be enabled even though the extension module was loaded (seen in phpinfo.php ).

### syntax

$ phpenmod MODULE_NAME

### Enable dbase php module
$ phpenmod dbase


### Disable dbase php module
$ phpdismod dbase


### List php extension modules ( enabled )
$ php -m


Previously I tried using the command

nm -D /usr/lib/php/20151012/dbase.so


to see a list of functions on the dbase.so file, but that didn't help much, until finally I found a solution that is enabling the module. and It Works!

Have Fun Guys!

tools :



Labels: , , , , ,

Thursday, June 25, 2015

ASCII to Entities


Kali ini saya ingin berbagi pengalaman ringan tentang karakter ASCII yang bermasalah pada saat digunakan di aplikasi web. Belum lama ini mendapat pesanan aplikasi desktop dan web yang mengakses satu database yaitu Microsoft SQL Server. Pesanan awal adalah aplikasi desktop yang dibuat dengan Visual Basic 6, kemudian ada permintaan dibuatkan aplikasi web juga. Akhirnya kami buat menggunakan PHP dengan CodeIgniter Framework yang ditanam di Web Server Linux Ubuntu 12.04. Koneksi PHP ke database Ms SQL Server 2000 menggunakan FreeTDS. Pada saat development menggunakan OS Windows 7 semua berjalan lancar tanpa ada masalah, tetapi ketika diupload ke web server Linux Ubuntu muncul masalah pada saat saat menampilkan data, setelah kami trace menggunakan firebug di Firefox muncul error pada json_encode, seperti di bawah ini.



A PHP Error was encountered

Severity: Warning

Message: json_encode(): Invalid UTF-8 sequence in argument

Filename: controllers/trskegiatan.php

Line Number: 90





Hal itu terjadi karena pada salah satu record yang tampil yaitu  terdapat karakter ASCII yang jika muncul di web berupa  \r\n yang menyebabkan error pada argument json_encode. Biasanya data tersebut import dari data Excel dan sejenisnya sehingga kurang "bersih". Setelah googling dan berjibaku selama dua hari akhirnya muncul beberapa solusi. Seperti setting FreeTDS ditambah client charset = UTF-8 dan sebagainya ternyata kurang manjur, akhirnya "resep" yang manjur adalah menggunakan fungsi Framework CodeIgniter yaitu :

ascii_to_entities()

Converts ASCII values to character entities, including high ASCII and MS Word characters that can cause problems when used in a web page, so that they can be shown consistently regardless of browser settings or stored reliably in a database. There is some dependence on your server's supported character sets, so it may not be 100% reliable in all cases, but for the most part it should correctly identify characters outside the normal range (like accented characters). Example:

$string = ascii_to_entities($string);


Dengan fungsi tersebut maka semua karakter ASCII pada data yang bisa menyebabkan masalah di browser langsung dikonversi.
Semoga artikel ini bisa membantu rekan -rekan.
 
tools:
Sencha ExtJS
Microsoft SQL Server 2000
Visual Basic 6
Linux Ubuntu 12.04
FreeTDS
CodeIgniter PHP Framework

Labels: , , , ,

Saturday, January 31, 2015

Bitnami WAPP Stack PostgreSQL login failed

 
Database PostgreSQL jarang digunakan dalam pembuatan aplikasi berbasis web, biasanya pada pengembang menggunakan database MySQL, dan begitu juga biasanya saya. Belum lama ini saya dan teman mendapatkan pesanan untuk membuat "celana pendek" ( baca : program kecil, "gaun": untuk program besar ). Yaitu membuat program tambahan untuk aplikasi berbasis web yang kebetulan menggunakan database PostgreSQL. Program tersebut terdiri dari aplikasi yang ada di server pusat dan di lokasi - lokasi yang tersebar di seluruh indonesia. Pada dasarnya program yang ada di server pusat dan lokasi sama, hanya memerlukan sinkronisasi untuk menyamakan data. Aplikasi di lokasi bisa berdiri sendiri artinya jika tidak ada koneksi internet maka aplikasi berjalan dalam mode offline, ketika sudah terkoneksi internet diperlukan sinkronisasi untuk menyamakan data. Permasalahnya adalah tidak semua lokasi bisa terhubung dengan internet dengan mudah, dan itu hampir 50% dari jumlah total lokasi yang ada. Salah satu cara-nya adalah membawa PC mereka ke warnet yang lokasinya cukup jauh, kemudian melakukan sinkronisasi. Cara yang menurut saya agak aneh dan sangat merepotkan. 
Pesanan "celana pendek"-nya adalah membuat aplikasi sinkronisasi data yang bisa dikemas dalam bentuk file, kemudian dari file tersebut bisa dibawa ke warnet atau pc yang sudah terhubung dengan internet untuk diupload dan disinkronisasi ke server. Begitu pula sebaliknya, file dari server di-download kemudian diupload ke lokal dan disinkronkan. Kemudian pesanan kedua adalah membuat single installer yang simple untuk menginstall aplikasi web, web server dan database PostgreSQL dalam beberapa klik saja. Karena aplikasi  yang selama ini ketika PC client rusak maka cara instalasinya sangat rumit, yang tidak mungkin dilakukan oleh user di lokasi. Akhirnya harus membawa PC tersebut ke pusat ( Jakarta ) untuk diinstall kemudian dikirim balik ke lokasi.
Ketika aplikasi sinkronisasi menggunakan file sudah jadi lalu untuk single installernya saya memilih Bitnami WAPP Stack untuk menginstall Apache Web server, PHP, PostgreSQL, dan untuk setting aplikasi dan sebagainya saya buatkan program kecil dari Visual Basic 6. Sebenarnya saya sudah mencari berbagai aplikasi bertajuk "Single Click Installer" yang ada di internet. Semisal Silent Installer Builder, yang dari fitur-nya terdapat fitur yang lumayan keren, yaitu bisa me-record pengetikan keyboard dan gerakan mouse, tetapi ketika  saya coba fitu tersebut tidak ada, dan ketika saya tanyakan ke bagian "Contact" tidak ada respon. Akhirnya saya berinisiatif untuk membuat sendiri Single Installer tersebut, tentu dengan cara yang lebih "silent" tanpa me-record keyboad dan mouse :).
Masalah timbul ketika WAPP Stack diinstall di komputer ujicoba milik client, selalu login failed. Padahal username password sama ketika diisikan pada instalasi WAPP Stack. Berulang kali saya coba hasilnya selalu sama, yaitu Login failed.
Cara - cara yang saya lakukan antara lain adalah :
menggubah method pada file pg_hba.conf dari md5 ke trust, dan hasilnya sama saja error.

host    all             all             127.0.0.1/32            md5

menggubah opsi listen_address pada file posgresql.conf ke localhost atau * , dan hasilnya tetap saja error.

listen_addresses = '127.0.0.1'

kemudian melihat valid date user dengan query

select * from pg_user where usename='postgres'
 
menghasilkan
 
usename     | postgres
usesysid    | 10
usecreatedb | t
usesuper    | t
usecatupd   | t
userepl     | t
passwd      | ********
valuntil    | infinity
useconfig   |


user postgres valid date-nya : infinity yang artinya tidak bermasalah dengan valid date untuk user : postgres

Akhirnya setelah cukup lama berjibaku, solusinya adalah Install Ulang Windows 7 pada PC tersebut :)), dan instalasi Bitnami WAPP langsung lancar tanpa hambatan, kemungkinan pada instalasi windows sebelumnya masih ada sisa instalasi PostgreSQL yang lama yang menyebabkan anomali. Semoga membantu rekan - rekan.

Tools :

Windows 7 Ultimate
Bitnami WAPP Stack
pgAdmin III

 

Labels: , , ,

Tuesday, December 02, 2014

Printing to Dot Matrix Printer from Web Apps


Jika anda pernah melihat film Jurassic Park, disitu diceritakan bahwa para ilmuwan dapat menciptakan dinosaurus dari DNA yang terdapat di darah dinosaurus yang dihisap oleh seekor nyamuk. Kemudian nyamuk tersebut terperangkap dalam getah pohon. Akhirnya pada masa sekarang ketika dinosaurus sudah punah,mereka dapat diciptakan kembali dengan mengambil darah dinosaurus yang ada di dalam tubuh nyamuk tersebut. Kali ini saya akan membahas "DNA" yang lain yaitu "DNA" untuk aplikasi web agar bisa mencetak direct print ke printer dot matrix.
Salah satu kendala dalam membuat aplikasi web adalah ketika akan mencetak ke printer dot matrix. Kebanyakan di internet hanya membahas cetak dari php ke pdf, html dan sebagainya yang memang bagus dicetak pada printer non dot matrix. Setelah lama mencari teknik yang simple dan mudah dalam mencetak ke printer dot matrix melalui aplikasi web, akhirnya saya menemukan applet gratis dan open source yaitu jzebra. Applet ini memerlukan Java terinstall di komputer anda, anda bisa mendownload installer offline-nya di sini. Langkah - langkah untuk mencoba jzebra adalah sebagai berikut :

1. Download applet jzebra di sini, saya menggunakan versi 1.7.0
2. Install atau download installer offline java di sini lalu install. Sesuaikan dengan sistem operasi yang anda pakai.
3. Install xampp atau bitnami sebagai web server di komputer lokal anda.
4. Extact file jzebra di directory ..\apache2\htdocs\
5. Jalankan sample.html di direktori \dist


Jika muncul tampilan di atas pilih I accept the risk and want to run this application, dan klik Run
6. Jangan lupa juga masuk ke Control Panel, pilih Java, kemudian pilih tab Security, pada bagian Exeption Site List, pilih Edit Site List kemudian tambahkan alamat lokal web site anda agar tidak terblokir.


7. Idealnya printer dotmatrix sudah terpasang pada komputer anda atau anda telah terhubung dengan printer dot matrix dari komputer lain yang di-sharing. Set sebagai default printer anda agar mudah mencoba applet jzebra ini.
 8. Buka browser  yang menjalankan sample.html, kemudian klik tombol default printer, kemudian untuk mencoba cetak Raw Printer, klik tombol Print dan Print Base64. Dan hasilnya IT WORKS!


Print Base64
Raw Print

Saya menggunakan printer Epson LX-310, yang merupakan printer dot matrix yang sangat umum dipakai.

Dari semua langkah di atas yang saya tulis, seharusnya rekan - rekan sudah bisa membuat aplikasi berbasis web baik itu dengan PHP atau bahasa pemrograman lainnya untuk bisa mencetak di printer dot matrix, source code bisa anda pelahari lengkap di dalam sample jzebra. Jzebra ini seperti "cetak biru DNA" tentang cara mencetak dari browser atau aplikasi web ke printer dot matrix yang selama ini sulit dilakukan. Artinya dengan "cetak biru DNA" ini, anda bisa mengembangkan dengan mengkombinasikan dengan framework PHP misal CodeIgniter, YII, Zend dikombinasikan dengan ExtJS dan lain sebagainya. Saya pikir coder lokal paling jago untuk urusan mengkombinasikan berbagai bahasa pemrograman. Semoga bermanfaat.

Tools:
Mozilla Firefox

Hardware :
Printer EPSON LX-310

related links:
Show PDF in ExtJS
PHP Direct Printing Dot Matrix LX-300

Labels: , ,

Thursday, July 10, 2014

Secret Project


Pesawat SR-71 BlackBird merupakan proyek rahasia Lockheed dari divisi Skunk Works di bawah kepemimpinan Kelly Johnson. Pesawat ini merupakan pesawat mata - mata yang bisa menembus kecepatan 3 kali kecepatan suara. Bodynya dibuat dari titanium untuk menahan panas karena kecepatannya yang sangat tinggi. Bahkan pilotnya punya harus mengenakan pakaian khusus seperti layaknya astronout. Dan berbagai fitur spesial ada di pesawat SR-71 BlackBird. Jika Lockheed punya proyek rahasia, kami pun pernah mempunyai "Proyek Rahasia".


Sekitar 2 tahun yang lalu team kami yang tergabung dalam team IT Development melakukan "proyek bawah tanah" yaitu melakukan konversi aplikasi dari berbasis desktop ke berbasis web. Awal pengembangan aplikasi berbasis web sebenarnya adalah ketidaksengajaan, karena awalnya kami ingin mengkonversi dari dekstop ke aplikasi android. Akan tetapi karena keterbatasan tampilan di aplikasi android yang tidak bisa mengakomodir kompleksitas inputan program,akhirnya kami memutuskan untuk membuat aplikasi berbasis web. Awalnya kami mencari berbagai framework, dan pilihan jatuh pada framework php CodeIgniter. Memang banyak artikel yang mengatakan CodeIgniter adalah framework php tercepat, akan tetapi kami memilihnya karena mudah digunakan dan sudah banyak dokumentasinya di internet, untuk cepat atau tidak kami belum pernah mengujinya dengan framework lain. Salah satu website yang kami tahu memakai CodeIgniter adalah website Kompas.Kemudian untuk tampilan kami mencari pemrograman web yang menyerupai desktop, karena input aplikasi desktop sebelumnya begitu kompleks, akhirnya kami memilih framework ExtJS sebagai interface aplikasi kami. Kami meriset tampilan dan mengkonversi algoritma dari visual basic ke ExtJS-CodeIgniter sekitar 1 tahun. Dan akhirnya aplikasi web yang kami kembangkan benar - benar menyerupai aplikasi desktop bahkan lebih baik (lebih rapi). Optimalisasi algoritma yang kami lakukan dalam pembuatan aplikasi web bisa membuat aplikasi web jauh lebih unggul dalam memproses informasi dari aplikasi desktop, reporting yang diproses dari 30 menit menjadi kurang dari 1 menit. Bahkan dengan aplikasi web tunggal kami bisa mengakses multi database yang terdiri dari multi company dalam group perusahaan tempat kami bekerja. Bahkan kami sempat ingin membuat buku ExtJS, karena ketika kami sedang mengembangkan aplikasi web tersebut ,dan saat ini ketika tulisan ini dibuat di pasaran sama sekali belum ada penulis yang membuat buku mengenai ExtJS, akan tetapi karena keterbatasan waktu akhirnya kami mengurungkan niat kami.


Kesulitan kami mengembangkan aplikasi web yang kompleks adalah banyak artikel di internet yang hanya "setengah hati" dalam memberikan tutorial, seperti bagaimana membuat "Hallo World", bagaimana membuat koneksi database dan selanjutnya tidak ada. Oh ya, kami membuat aplikasi kami terkoneksi dengan database server Microsoft SQL Server, bukan seperti aplikasi web berbasis PHP kebanyakan yang membuat aplikasi dengan database server MySQL. Hal ini dikarenakan aplikasi desktop berbasis Visual Basic dan Microsoft SQL Server. Adalah suatu kebanggaan bagi kami, bahwa kami telah membuat aplikasi berbasis web dengan kompleksitas yang cukup tinggi dan serupa dengan aplikasi dekstop. Tingkat kesulitan membuat aplikasi web cukup tinggi karena kami harus meninggalkan paradigma "compiler" menjadi paradigma "intrepreter". Kadang error yang muncul atau bahkan tidak muncul cukup membuat kami pusing, akan tetapi dengan kesabaran yang cukup akhirnya kami bisa "memahami" sifat dan karakter aplikasi web khususnya CodeIgniter - ExtJS - Microsoft SQL Server. Ketiga item tersebut bukan merupakan package yang dibuat oleh vendor yang sama, sehingga error handling kadang kurang informatif. Misal pada tampilan CodeIgniter hanya menampilkan pesan error tidak bisa melakukan INSERT pada table dan tidak ada informasi lain mengapa tidak bisa, ternyata pada table tersebut harus diberikan default value pada field-nya. Meskipun "Proyek Rahasia" kami sudah berfungsi dengan baik, akan tetapi karena para user belum  bisa menerima aplikasi "dari planet lain" ini maka produk "MasterPiece" kami hanya menjadi penghuni ruang hampa udara bernama hardisk di Web Server Linux Ubuntu kami. Proyek ini merupakaan lompatan besar bagi kami dalam menciptakan aplikasi berbasis web.

Untuk rekan rekan yang ingin berlajar ExtJS bisa belajar dari e-Book ExtJS in Action karya J Garcia tahun terbit 2011, ini merupakan salah satu buku yang terbaik di internet yang kami temukan untuk belajar ExtJS. Memang masih menggunakan ExtJS versi 3, tapi pada dasarnya hampir sama. Bab demi bab disampaikan secara detail , sangat berbeda dengan buku - buku lokal yang kadang hanya copas di internet dan jadi buku, kadang malah sangat dasar sekali dan tidak praktikal. Buku ini sangat mendalam, cocok  untuk yang serius ingin belajar ExtJS.

related links :
The Other Secret Project

tools :
Sencha ExtJS 4.2.2
CodeIgniter v2.1.3
Microsoft SQL Server 2000
Ubuntu 12.04 LTS

Labels: , ,

Friday, July 19, 2013

Could not read font on CodeIgniter

Could not read font error messages on CodeIgniter in my case, it happen when my font file was broken. Font file broken can happened because bad connection when you upload your files via ftp. I've used captcha for login form that combined Sencha Extjs for UI dan CI for server side scripting. The solution is re-upload your font files dan make sure your font files is the good one, and the problem solved. In my case, my font files was broken so the file size has changed from 129.72 Kb to 48.48 Kb


That caused my login form cannot displayed like picture below


And the Code Igniter error messages


Labels: , , ,

Sunday, April 28, 2013

CodeIgniter cannot Insert NULL on MSSQL



Recently, I experienced a strange case when i was porting a desktop application to a web application. I am using CodeIgniter / PHP framework as a front end and for back end I am  using ExtJS, for Database Server I am using the Microsoft SQLServer.
When I run the store procedure from CodeIgniter,
the result  from stored procedures are not completed.But  if I run it from  Query Analyzer , it run perfectly and produces a perfect result . If in Query Analyzer success with 221 rows, in CodeIgniter / PHP only success with 107 rows. First analysis is due to time out, then I fix this by editing php.ini and increase the time out setting and the problems still occurs.

mssql.connect_timeout
mssql.timeout 

max_execution_time
max_input_time
 Then I optimize store procedures that previously when I run it, it takes almost 2 minutes to about 24 second, but it doesn't help.  I was desperate, until I tried to connect query using pure php command , that use  mssql_, from there I found out that there is an error that  CodeIgniter cannot insert NULL for a particular table.   

$proc = mssql_init('Store_Procedure_Name', $conn);
mssql_execute($proc);



And the error does not appear when I run it using modules from CodeIgniter, finally I fixed some code in stored procedures which is INSERT NULL value.  

ISNULL(field_name,' ') 

Finally IT SOLVED!, the store procedure runs perfectly when executed using CodeIgniter.

Some tips to avoid cases such as the above are:
1. Avoid NULL
value posibility on INSERT query you created.
2. Create 
query as simple as possible , that will help you when debuging in the future.

The conclusion is CodeIgniter refused INSERT NULL but will not display an error, while in Query Analyzer is  allow that to happen. This case maybe can make you confused when you convert from desktop applications to web applications. I hope these tips useful for you.

Labels: , , , ,