The Way Of Life
Google

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: , , , , ,

Tuesday, February 10, 2015

Power in the economy of code

 
Salah satu sub bab dalam buku jQuery in Action terbitan Manning, karya Bear Bibeault dan Yehuda Katz, mempunyai sub bab Power in the economy of code. Dimana framework jQuery menjadikan kita menulis kode jauh lebih irit / ekonomis.
Contoh di dalam buku tersebut yaitu, dari kode yang panjang seperti di bawah ini;

var checkedValue;
var elements = document.getElementsByTagName('input');
  for (var n = 0; n < elements.length; n++) {
   if (elements[n].type == 'radio' &&
       elements[n].name == 'someRadioGroup' &&
       elements[n].checked) {
     checkedValue = elements[n].value;
   }  
  }
menjadi kode jQuery yang singkat seperti di bawah ini:
var checkedValue = $('[name="someRadioGroup"]:checked').val();
Hal ini juga terjadi ketika saya dan rekan mulai belajar salah satu framework javascript yaitu ExtJS dari Sencha. ExtJS dibuat sebagai framework yang mempunyai banyak sekali object sehingga mirip sekali dengan aplikasi desktop. Dalam rangka proyek konversi dari aplikasi desktop ke web, otomatis kami mencari persamaan object di ExtJS. Salah satu object tersebut adalah form searching / pencarian. Setelah cukup lama browsing akhirnya kami menemukan caranya, yaitu di web mbahsomo. Awalnya kami tidak percaya dengan kode yang ditampilkan di web tersebut, form searching merupakan form yang cukup "kompleks" di aplikasi web, tapi mbahsomo hanya menampilkan kode yang kami rasa sangat singkat. Setelah kami pelajari ternyata benar, form tersebut bisa ditampilkan hanya dengan kode yang minimalis dan ekonomis, berkat framework ExtJS.
Sama juga seperti framework yang lain, fungsinya adalah mempersingkat pekerjaan, dan satu lagi yaitu standarisasi. Jika kita bekerja dalam team harus ada standarisasi, sehingga selain kode menjadi rapi juga gampang dipahami orang team yang lain.

Berikut tampilan form searching a la mbahsomo:


dan dibawah ini adalah form searching yang kami kembangkan dari form mbahsomo


related links:
Combo Multi Column with Grid
Framework Or Not Framework

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: , ,

Sunday, August 25, 2013

Update Time in ExtJS


If you want to show current time on your ExtJS app, this code may help you. In JS/ ExtJS will displayed local time, that's mean if your computer clock goes wrong, ExtJS will displayed wrong time. This code is written using ExtJS version 4.2.1, if you using newer version and there is new syntax revision, you must making some adjustment to run this code.

 Ext.onReady(function() {
  
    var filterPanel = Ext.create('Ext.panel.Panel', {
    bodyPadding: 5,
    width: 200,
    title: 'Update Time in ExtJS',
    items: [{
        fieldLabel: 'Time',
        id: 'txtTime',
        name: 'txtTime',
        xtype: 'textfield'
      }
    ],
    renderTo: Ext.getBody()
 });

     Ext.TaskManager.start({
        run: function() {
            Ext.getCmp('txtTime').setValue(Ext.Date.format(new Date(), 'H:i:s'));
        },
        interval: 1000
    });

});


This code will show update time until second, you can change the format 'H:i:s' to 'H:i', if you want show time until minute only.Have fun!

related links: Update time in ExtJS automatically

tools : ExtJS ver 4.2.1Notepad++, CodeIgniter, Mozilla FireFox, FireBug

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: , , ,

Wednesday, May 22, 2013

Fastest Query


Belum lama ini saya sempat chat dengan seorang rekan, menanyakan bagaimana cara mengambil data dari sebuah Grid ExtJS ke sebuah form, misal dalam sebuah Grid ExtJS berisi daftar customer ( kode customer, nama dst), maka ketika diklik atau double klik maka akan muncul sebuah form yang berisi detail dari Customer tersebut. Saya menggunakan teknik, di dalam grid tersebut terdapat item item dari daftar customer yang disembunyikan secara tampilan, sehingga ketika di-double klik untuk melihat detail customer, form hanya mengambil data yang sudah ada di grid baik yang terlihat maupun yang disembunyikan, kecuali memang ada detail lain, baru menjalankan query lagi. Hal ini mempercepat proses karena tidak ada request lagi ke server. Seperti saya kutip dari buku High Performance MySQL, Third Edition "the fastest query is the one you don’t have to execute", yaitu dengan menggunakan teknik caching, tapi ini lebih tinggi lagi karena sama sekali tidak membuat query :). 


Tetapi teman saya bersikeras untuk membuat teknik yang lebih "normal" dan "hi-tech", :). Sebenarnya dalam dunia programming tetap diperlukan trik selain jalan normal, jika memang ada cara yang lebih cepat kenapa tidak. Seperti kutipan dari alm Bruce Lee, "There is no mystery about my style. My movements are simple, direct and non-classical". Jadi kalo ada yang lebih simple kenapa harus yang rumit. Semoga tulisan ini berguna bagi rekan rekan.

gambar diambil dari sini dan sini

related links:



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: , , , ,

Thursday, March 07, 2013

Upload File with ExtJS


After long 'journey' to find how to make form upload file with ExtJS and PHP, finally i found the simple one. Here is a sample code that i modified from Sencha sample code and i combined with native php code. It's a simple code to understand and perhaps it help you to create upload form with ExtJS and PHP.  I've been tried to used Code Igniter library but it doesn't work, so i used pure php code like below.

ExtJS code : upload.js

Ext.onReady(function(){

    var msg = function(title, msg) {
        Ext.Msg.show({
            title: title,
            msg: msg,
            minWidth: 200,
            modal: true,
            icon: Ext.Msg.INFO,
            buttons: Ext.Msg.OK
        });
    };

    Ext.create('Ext.form.Panel', {
        renderTo: Ext.getBody(),
        width: 500,
        frame: true,
        title: 'File Upload Form',
        bodyPadding: '10 10 0',

        defaults: {
            anchor: '100%',
            allowBlank: false,
            msgTarget: 'side',
            labelWidth: 50
        },

        items: [{
            xtype: 'fileuploadfield',
            buttonText: 'Browse',
            name: 'form-file',
            id: 'form-file',
            emptyText: 'Select File..',
            fieldLabel: 'Files'
                       
        }],

        buttons: [{
            text: 'Upload',
            handler: function(){
               var form = this.up('form').getForm();
                if(form.isValid()){
                    form.submit({
                        url: 'upload/do_upload',
                        waitMsg: 'Uploading your file...',
                        success: function(form, action) {
                            msg('Message', action.response.responseText);
                        }
                        ,
                        failure: function(form, action) {
                            msg('Message',action.response.responseText);
                        }
                    });
                }
            }
        },{
            text: 'Reset',
            handler: function() {
                this.up('form').getForm().reset();
            }
        }]
    });

});


PHP code : upload.php / function do_upload

function do_upload()
        {
           
            $file_name = $_FILES['form-file']['name'];
           
            $source = $_FILES['form-file']['tmp_name'];
           
            $directory = "uploads/$file_name";
           
           
            if( file_exists ($
directory )) {
                echo json_encode('File '. $file_name . ' already exist!');
                exit();
             }
               else {
                echo json_encode('Upload '.$file_name . ' success!');
                move_uploaded_file($source,$
directory );
            }
           
         }




related links:

Upload File Sencha

Upload File with php ( www.ilmukomputer.net )

How to show PDF files in ExtJS

Labels: , ,

Saturday, December 01, 2012

Show PDF in ExtJS


Berikut saya ingin berbagi pengalaman tentang cara menampilkan file PDF di form ExtJS. Salah satu yang kurang dari ExtJS adalah fitur reporting, oleh karena itu kita harus memutar otak untuk hal tersebut. Salah satu caranya adalah menggunakan file pdf yang kemudian ditampilkan di form ExtJS. Untuk membuat file pdf salah satunya adalah menggunakan library php yaitu mPDF, anda bisa download library tersebut di sini. Kebetulan saya menggunakan framework CI untuk membuat aplikasi php. Saya tidak akan membahas dengan detail prosesnya karena cara membuat / men-generate file pdf di php dengan mPDF sudah begitu banyak di Internet. Pengalaman saya yang akan saya sharing di sini adalah, ketika file PDF yang sudah tergenerate dan kemudian saya load di form ExtJS menggunakan add-on dari FoxIt Reader yang ter-integrate dengan browser FireFox. Ketika pada saat awal load, tidak ada  masalah akan tetapi ketika saya mengganti parameter, dan kemudian aplikasi me-load file pdf tersebut, form ExtJS tetap menampilkan file pdf yang pertama. Akhirnya saya mencoba menganalisa, dan pada kesimpulan pertama yaitu ExtJS melakukan caching file pdf tersebut sehingga selalu me-load file pdf yang pertama. Akan tetapi setelah saya oprek cukup lama dengan men-disable cache pada ExtJS tetap tidak menyelesaikan masalah. Akhirnya masalah solved ketika saya mengganti add-on pdf viewer di browser menggunakan Adobe Acrobat Reader, atau anda bisa mencari add-on PDF Viewer di browser FireFox jika anda menggunakan browser tersebut. Ternyata add-on FoxIt Reader belum sempurna seperti milik add-on Adobe Acrobat Reader. Semoga pengalaman saya ini bermanfaat bagi rekan rekan.

Tools :

Labels: , , , , ,

Tuesday, November 13, 2012

Install PHP-GD Support di Linux Ubuntu

Kali ini saya akan men-sharing pengalaman dalam membuat fitur captcha dengan menggunakan ExtJS. Saya tidak akan membahas mengenai pembuatan captcha-nya, rekan rekan bisa mencari sendiri di internet. Pengalaman saya adalah, ketika saya dan rekan saya mendevelop aplikasi ExtJS menggunakan XAMPP di Windows, captcha dapat berfungsi dengan baik,akan tetapi ketika saya upload ke web server dengan OS Linux Ubuntu, captcha tersebut tidak berfungsi. 


Akhirnya setelah sekian lama googling dan bertanya ke teman, saya dan teman saya menemukan masalahnya, kenapa fitur captcha tidak berfungsi di Linux Ubuntu. Yaitu karena captcha membutuhkan PHP GD Support, oleh karena itu kita harus menginstall GD support di PHP, caranya adalah sebagai berikut:

1. sudo apt-get install php5-gd

2. /etc/init.d/apache2 restart

Untuk mengecek sudah terinstall atau belum , anda bisa mengecek dengan mengetikkan perintah berikut di terminal Linux Ubuntu.

php5 -m | grep -i gd

atau anda bisa melihat dengan membuat file php sederhana yang berisi kode seperti dibawah ini:

 phpinfo();

Jika anda jalankan file php tersebut di web server, anda akan dapat melihat apakah GD support di PHP sudah aktif ( enabled ) atau belum, seperti gambar di bawah ini.


Dan fitur captcha akan tampil dengan sempurna seperti gambar di bawah ini:


Semoga pengalaman saya dapat membantu rekan rekan sekalian.

Related Links:

Install GD Support

Tools:
Linux Ubuntu, Apache, ExtJS, Microsoft SQL Server,Notepad ++


Labels: , , , , ,