Pencarian

Kamis, 26 Desember 2013

CI Multiple Database

CodeIgniter  Multiple database.
Database Postgre
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "postgres";
$db['default']['password'] = "pwdx1";
$db['default']['database'] = "db_postgres";
$db['default']['dbdriver'] = "postgre";
$db['default']['dbprefix'] = "";
$db['default']['port']   = 5432;
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
//Database MySQL
$db['mysqldb']['hostname'] = "localhost";
$db['mysqldb']['username'] = "root";
$db['mysqldb']['password'] = "pwdx2";
$db['mysqldb']['database'] = "db_mysql";
$db['mysqldb']['dbdriver'] = "mysql";
$db['mysqldb']['dbprefix'] = "";
$db['mysqldb']['pconnect'] = FALSE;
Pemanggilan database MySQL di controller :
$this->mysqldb = $this->load->database('mysqldb',TRUE);
$query = $this->mysqldb->query("select *from tabel");
   foreach ($query->result() as $row){
                   }

Pencarian Data di JTable Java

Method ini digunakan untuk melakukan pencarian data pada JTable Java.
public void cari_data(JTable tbl, String text){
        TableRowSorter sorter = new TableRowSorter(tbl.getModel());
        tbl.setRowSorter(sorter);
        sorter.setRowFilter(RowFilter.regexFilter("(?i)" + text));
        tbl.setSelectionMode(1);
}

Java Generate Query Simpan

Jika sebelumnya untuk genereate query update, sekarang generate query simpan
    public static String genQuerySimpan(String tabel,String[] dataValue){
        //generate string untuk query
        String val = "";
        for(int i=0; i < dataValue.length; i++){
            if(i == 0){
                val += "'"+dataValue[i]+"'";
            }else{
                val += ",'"+dataValue[i]+"'";
            }
        }
        String ret = "insert into "+tabel+" values("+val+")";
        return ret;
    }
Untuk menggunakan method static ini :
public static void main(String[] args){            
        String[] data = {"0","budi","123","admin"};
        System.out.println(global_var.genQuerySimpan("tuser", data));
   
    }

Java Generate Query Update

Method static ini digunakan untuk mengGenerate Query Update, jadi nggak repot-repot pake kutip dan +
public static String genQueryUpdate(String tabel, Map data, String kondisi){
       
Map mapData = data;
        String result = "";
        int i=0;
        for (String key : mapData.keySet()) {
                String value = mapData.get( key );
                if(i == 0){
                    result += key+"='"+value+"'";
                }else{
                    result += ","+key+"='"+value+"'";
                }                  
            i++;
         }
        String ret = "update "+tabel+" set "+result+" where "+kondisi;
       return ret;
}
Untuk menggunakannya seperti berikut :
  public static void main(String[] args){              
        HashMap data = new HashMap();
        data.put("username", "budi");
        data.put("hak_akses", "admin");
        System.out.println(global_var.genQueryUpdate("tuser", data, "id_user='2'"));
    }

Java Koneksi ke MySQL

Class JMySQL ini berguna untuk membuka dan menutup koneksi ke database mysql.
package logicClass;
import classtoko.ComboItem;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
/**
 *
 * @author a3m-nix
 */
public class JMySQL {
   private static Connection koneksi;
    private Statement stat;
    private ResultSet rs;
    private String query;
    private int row;
    boolean status;  
    String querySave;
    String queryUpdate;
    String queryView;
    String table;
    String field;
    public static String getHostname() {
        return setProgram.getValue("hostname");
    }  
    private static String getUsername() {
        return setProgram.getValue("user");
    }
    private static String getPassword() {
        return setProgram.getValue("password");
    }
    public static String getDbName() {
        return setProgram.getValue("dbname");
    }
   public static Connection getKoneksi(){
        String hostDbDriver = "jdbc:mysql://"+getHostname()+"/"+getDbName();
          try {
            Class.forName("com.mysql.jdbc.Driver");
            koneksi = DriverManager.getConnection(hostDbDriver,getUsername(),getPassword());
          }catch(Exception e){
            JOptionPane.showMessageDialog(null, "Tidak terkoneksi ke database, error konstruktor : "+e);                
             koneksi = null;
          }
         return koneksi;
    }
   public static void main(String[] args) throws SQLException{        
   }
   public static void closeKoneksi(Connection con, Statement st,ResultSet rs){
       try {
           if(con != null){
           con.close();
            }
            if(st != null){
                st.close();
            }
            if(rs != null){
                rs.close();
            }
       } catch (SQLException ex) {
           JOptionPane.showMessageDialog(null, "Close database error "+ex);
       }
   }      
}
Karena method yang digunakan adalah method static maka untuk menggunakan class ini contohnya :

Connection cn = JMySQL.getKoneksi();
       Statement  st = null;
       ResultSet  rs = null;
        try {          
           st = cn.createStatement();
           st.executeUpdate("Disini query SQL");
       } catch (SQLException ex) {
           JOptionPane.showConfirmDialog(null, ex);
       }
       JMySQL.closeKoneksi(cn, st, rs);

Android Client Send and Receive Socket


Sudah lama tidak nulis, sebagai catatan dihari tua:
Bagaimana cara client mengirim data dan menerima hasil dari server menggunakan socket programming.

package com.example.clientserver;import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity{
private EditText txtip, txtport, txtpesan;
private Button btnKirim;
private String inPesan="";
private TextView txtresult;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txtip = (EditText) findViewById(R.id.txtip);
        txtport = (EditText) findViewById(R.id.txtport);
        txtpesan = (EditText) findViewById(R.id.txtpesan);
        txtresult  = (TextView)  findViewById(R.id.txtrespone);
        btnKirim = (Button) findViewById(R.id.btnKirim);   //reference to the send button      
    txtresult.setText(inPesan);         btnKirim.setOnClickListener(new View.OnClickListener(){    
      public void onClick(View v) {
     new tcpClient().execute("");
    }
     });    
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }  
   private class tcpClient extends AsyncTask{
String hostname = String.valueOf(txtip.getText());
int    port     = Integer.valueOf(String.valueOf(txtport.getText()));
@Override
protected String doInBackground(String... params) {
 String sentence;
      String modifiedSentence = "";
      BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
      Socket clientSocket;
try {
clientSocket = new Socket(hostname,port);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
   BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
   sentence = String.valueOf(txtpesan.getText());
   outToServer.writeBytes(sentence + '\n');
   modifiedSentence = inFromServer.readLine();
   System.out.println("FROM SERVER: " +modifiedSentence);
   clientSocket.close();
} catch (UnknownHostException e) {
modifiedSentence = "Server error HOST";
e.printStackTrace();
} catch (IOException e) {
modifiedSentence = "Server error IO";
e.printStackTrace();
}    
return modifiedSentence.toString();
}
@Override
protected void onPostExecute(String result) { super.onPostExecute(result);
txtresult.setText(result);
txtpesan.requestFocus();
}    }
}
Inti dari kode diatas, agar android bisa send and receive data, kita bisa menggunakan Class AsyncTask dan mengimplementasikan method doInBackground() dan  onPostExecute()

Senin, 23 Desember 2013

Tugas Lab. Pemrograman Berorientasi Objek

Untuk mahasiswa yang mengontrak perkuliahan Lab. Pemrograman Berorientasi Objek dengan saya, ada sedikit oleh2 untuk liburan akhir tahun yaitu membuat Program Login Menggunakan Java dan Database MySQL. Untuk database Gunakan database dan tabel yang sudah kita bahas di pertemuan sebelumnya.

Selasa, 26 November 2013

Java Jtable remap cell value when type (netbeans)

Catatan dihari tua.
Java Jtable : Ketika cell di select, value akan di replace oleh keypress (Seperti di Spreedsheet).
Netbeans Customize Code untuk jtable
tbl_detail = new javax.swing.JTable(){
    public boolean editCellAt(int row, int column, EventObject e){
        boolean result = super.editCellAt(row, column, e);
        final Component editor = getEditorComponent();
        if (editor == null || !(editor instanceof JTextComponent)) {
            return result;
        }
        if (e instanceof KeyEvent) {
            ((JTextComponent) editor).selectAll();
        }
        return result;
    }
};

Sabtu, 26 Oktober 2013

Tetap Semangat

"Teruslah bergerak, hingga kelelahan itu lelah mengikutimu. Teruslah berlari, hingga kebosanan itu bosan mengejarmu. Teruslah berjalan, hingga keletihan itu letih bersamamu. Teruslah bertahan, hingga kefuturan itu futur menyertaimu. Tetaplah berjaga, hingga kelesuan itu lesu menemanimu. Kalau iman dan syetan terus bertempur. Pada akhirnya salah satunya harus mengalah." (Ust. Rahmat Abdullah)

Selasa, 03 September 2013

Lurus dan Rapatkan Shaf

Sunnah yang hampir semua orang tau, tapi tidak semua orang paham maksud dan tata caranya.



Senin, 19 Agustus 2013

Budak

Budak itu orang yang mengekor orang lain, segalanya  mengekor pada orang lain tidak perduli itu benar atau salah.
Kebenaran yang didapat dari pembenaran.

Jumat, 16 Agustus 2013

Perintah Linux

Untuk catatan saja, perintah ini akan mencari semua file PHP yang didalamnya terdapat string "service.pwd" di folder "/home/user/"
# find /user/ -name \*.php -exec grep -l "service.pwd" {} +

Sabtu, 10 Agustus 2013

Memahami diri sendiri

Bisa menerima kekurangan orang lain itu memang hebat, tapi lebih hebat lagi jika bisa menerima kekurangan diri sendiri.

Jumat, 09 Agustus 2013

Jangan Bergantung selain kepada Allah

Nenek datuk, cucung numpang ini, numpang itu .... *Memangnya semua dunia ini punya nenek datuk lu.
Hahaaa...perkataan permisi diatas masih sering kita jumpai.
Aneh memang, dunia dan seisinya ini milik Allah, lalu mengapa permisi kepada sesuatu selain DIA.

Saya baru saja belajar dari seorang guru, yang berkata "begitu banyak benih-benih syirik yang harus kita hindari" menggantungkan diri pada sesuatu selain Allah.
Sebagaimana kita merasa kenyang setelah makan. Rasa kenyang itu datangnya dari Allah yang disebabkan kita makan, dan kita harus tau itu agar terhindar dari syirik, yaitu menggantungkan sesuatu selain kepada Allah.

Ayat Penyejuk Hati

Kemudian Adam menerima beberapa kalimat dari Tuhannya, maka Allah menerima tobatnya. Sesungguhnya Allah Maha Penerima tobat lagi Maha Penyayang. Kami berfirman: “Turunlah kamu semua dari surga itu! Kemudian jika datang petunjuk-Ku kepadamu, maka barang siapa yang mengikuti petunjuk-Ku, niscaya tidak ada kekhawatiran atas mereka, dan tidak (pula) mereka bersedih hati“.(2:37-38)

Sesungguhnya orang-orang mukmin, orang-orang Yahudi, orang-orang Nasrani dan orang-orang Shabiin, siapa saja di antara mereka yang benar-benar beriman kepada Allah, hari kemudian dan beramal shaleh, mereka akan menerima pahala dari Tuhan mereka, tidak ada kekhawatiran terhadap mereka, dan tidak (pula) mereka bersedih hati. (2:62)

1 Syawal 1434H

Akhirnya sampai di bulan syawal, semoga masih dipanjangkan umur untuk bertemu bulan Ramadhan berikutnya.
Selamat Hari Raya Idul Fitri 1434H.
Semoga Allah menerima amal ibadah kami dan kalian
 Mohon Maaf lahir batin...

Kamis, 01 Agustus 2013

Renungan Ramadhan

Nabi bersabda “Jika seorang muslim memiliki hutang dan Allah mengetahui bahwa dia berniat ingin melunasi hutang tersebut, maka Allah akan memudahkan baginya untuk melunasi hutang tersebut di dunia.” (Riwayat Ibnu Majah. Syekh Albani mengatakan bahwa hadits ini shahih kecuali kalimat “fid dunya”-di dunia)

“Sesungguhnya yang paling di antara kalian adalah yang paling baik dalam membayar hutang.” (Riwayat Bukhari)

Rabu, 31 Juli 2013

Remote SSH Proxmox

Remote CT Proxmox dari Host VE
Ada kasus dimana pada saat membuat CT di proxmox kita nggak bisa melakukan remote console via web ke CT nya. Untuk itu solusinya, kita bisa login ssh ke mesin proxmox VE kemudian ketikkan perintah berikut :

proxmox-ve:~# vzctl enter 122
Maka kita akan masuk ke terminal CT.
Selanjutnya, mari ngoprek..

Selasa, 09 Juli 2013

Marhaban ya ramadhan

Marhaban ya ramadhan,,, 1 Ramadhan 1434H (2013)
Alhamdulillah masih diberikan umur untuk bertemu bulan yang penuh berkah, rahmat dan ampunan.
Hadist Pertama yang di pelajari di bulan suci ini,  Rasulullah bersabda :
"Akan muncul sesudahku para pemimpin, mereka tidak mengambil petunjukku, tidak mengikuti sunnahku, di antara mereka akan bangkit kaum laki-laki, hati mereka adalah hati setan dalam jasad manusia.” Hudzaefah berkata, “Apa yang aku lakukan ya Rasulullah saw?” Beliau menjawab, “Dengarkan dan taatilah pemimpin, sekalipun punggungmu dicambuk dan hartamu dirampas, dengarkan dan taatilah.” Diriwayatkan oleh Muslim 1847/52.

Selasa, 02 Juli 2013

Akhirnya selesai MTCNA

Setelah menggunakan mikrotik 2 tahun belakangan, Akhirnya kesampean juga niat untuk mengikuti training MTCNA yang diadakan oleh mikrotik indonesia citraweb nusa infomedia (http://www.mikrotik.co.id)

Banyak hal yang dipelajari setelah 4 hari pelatihan di Gedung Cyber Lt. 7 Kuningan barat 8, salah satunya yaitu saya harus jujur kepada router hehee...

Bagian yang paling sulit memang, apalagi bagi saya menggunakan bandwidth sharing, untuk jujur kepada router berapa bandwidth yang kita miliki agar bandwidth tersebut dapat diatur dengan benar oleh router. Masalahnya jika kita ambil nilai rata-rata paling rendah, maka rugi bandwidth seandainya upstream sedang idle, jika diambil nilai tertinggi maka queue akan berantakan jika upstreamnya down.

Lalu bagian yang paling saya sukai adalah packet flow, sekarang udah lebih mengerti kapan harus menggunakan prerouting, forward, postrouting dan lain-lainnya.

Dihari terakhir tibalah saatnya ujian online di mikrotik.com, cukup deg-deg'an juga karena setelah melakukan example test, soal-soalnya lumayan menjebak, jadi mesti teliti dan sangat-sangat teliti hehe..

Segala puji bagi allah saya berhasil melalui ujian online dengan baik, nilai 78% dari 25 soal yang diberikan mikrotik.com lumayanlah buat pulang ke kota Jambi. Paling tidak diatas syarat kelulusan yaitu 60% dan diatas syarat menjadi trainer yaitu 75% (walaupun mesti mengikuti training advance).

Saya masih harus banyak belajar lagi karena banyak PR yang mesti di selesaikan di jaringan saya agar kinejanya bisa lebih optimal.
Semoga bisa mengikuti training berikutnya. :D

Kamis, 06 Juni 2013

rsync dan login ssh untuk backup file di ubuntu part 2

Melanjutkan tulisan saya yang sudah bertahun-tahun silam :D yang masih bisa dilihat di sini http://a3m-nix.blogspot.com/2011/05/rsync-dan-login-ssh-untuk-backup-file.html insiden yang sama akhirnya terulang kembali. dan kali ini sedikit lebih beruntung karena yang terhapus hanya file yang berada di /home/user/ saja, jadi folder dan subnya nggak ikut terhapus.

Namun kejadian ini tetap saja meninggalkan luka yang mendalam karena beberapa file yang hilang tersebut berisi IP Router ataupun Server yang pernah saya setting beserta Akunnya, lalu ada Cpanel, Spanel, file kerja yang belum sempat saya rapikan dkk.

Akhirnya, setelah belajar dari kedua pengalaman tersebut, saya kembali memanfaatkan rsync untuk melakukan backup secara otomatis setiap kali laptop saya hidup.

Contoh Konsep sederhananya seperti berikut :
Komputer kantor yang saya gunakan terdapat Harddisk 500GB dengan alamat IP 192.168.1.123. Komputer ini saya anggap sebagai server backup untuk laptop saya.

Yang ingin saya capai kali ini adalah setiap saya menghidupkan laptop, ada satu script yang akan memeriksa apakah saya sedang terhubung ke server backup menggunakan ping 192.168.1.123, jika ping ada balasan maka rsync akan dilakukan, jika tidak, do nothing.
Berikut contoh scriptnya :
#!/bin/bash
HOSTS=192.168.1.123
COUNT=2
for myHost in $HOSTS
do
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ $count -eq 2 ];
then
echo "Konek ke server backup nih, mulai proses backup data...."
/home/a3m-nix/rsync-conf/rsync.sh
else
perl /home/a3m-nix/rsync-conf/status-fail.pl
fi
done
Jika ping count nya sama dengan 2, maka script rsync.sh akan dijalankan. Script ini hanya berisi perintah rsync untuk home directory saya saja dan dengan beberapa folder yang di exclude tentunya.
Jika ping count tidak sama dengan 2 maka ada script perl yang akan dijalankan, ini hanya untuk memberitahukan saja jika saya sedang tidak terkoneksi ke server backup.

Lalu script diatas tinggal dijalankan di startup.

Rabu, 05 Juni 2013

locales warning di ubuntu dan debian


Entah kenapa beberapa hari ini ada warning di beberapa server saya, warningnya seperti ini :
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "id_ID.UTF-8",
LC_ADDRESS = "id_ID.UTF-8",
LC_MONETARY = "id_ID.UTF-8",
LC_NUMERIC = "id_ID.UTF-8",
LC_TELEPHONE = "id_ID.UTF-8",
LC_IDENTIFICATION = "id_ID.UTF-8",
LC_MEASUREMENT = "id_ID.UTF-8",
LC_TIME = "id_ID.UTF-8",
LC_NAME = "id_ID.UTF-8",
LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales...
Setelah cari-cari referensi, untuk mengatasi hal tersebut tinggal menjalankan perintah berikut :
locale-gen en_US.UTF-8
localedef -i en_US -f UTF-8 en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

Senin, 03 Juni 2013

Plugin yang saya gunakan pada editor Sublime text 2

Ini sekedar pengingat saja, beberapa plugin yang saya gunakan pada editor sublime text 2 antara lain :

  1. Sublime Code Intel
  2. Ctags
  3. PHP Ctags
  4. Highlight
  5. Smart matcher
  6. Jquery
  7. Bracket Highlight

Sabtu, 01 Juni 2013

Login Web Menggunakan Perl di terminal Linux

Nanti sajalah ceritanya kenapa saya butuh script dibawah ini :D
a3m-nix@f0re4ch:~$ sudo apt-get install libwww-mechanize-perl

Lalu buat file dengan nama login.pl
#!/usr/bin/perl
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
#action atau file login yang dituju
$url = 'http://localhost/login.html';
$mech->get( $url );
$mech->submit_form(
        form_number => 1,
        fields      => {
#variabel post yang dikirim ke proses login
            username     => 'admin',
            password            => 'admina',
        }
    );
print $mech->content();

setelah file diatas diberikan chmod +x lalu jalankan dengan perintah :
a3m-nix@f0re4ch:~$./login.pl > ouput.html

Bersambung.... 

Jumat, 26 April 2013

Kamis, 04 April 2013

Maintenance Jaringan Komputer V4

Saatnya melakukan maintenance jaringan komputer di kantor saya. Untuk kali ini, maintenance di fokuskan pada perbaikan jalur listrik, kabel-kabel baru yang seliweran sana sini dan persiapan untuk tamu baru (Router internet yang lama telah berpulang karena petir).

Maintenance kali ini bertujuan agar memudahkan untuk pengembangan jaringan nantinya.
Bagian yang paling menyenangkan dari maintenance fisik adalah rasa lelah yang tidak ada duanya dibandingkan duduk dengan terminal linux ataupun PHP yang lebih memeras isi kepala :D
time to rest...

Sabtu, 23 Maret 2013

DECIMAL, HEX, BINARY

Conversion Code - Chart
DECIMAL0123456789101112131415
HEX0123456789ABCDEF
BINARY0000000100100011010001010110011110001001101010111100110111101111

Selasa, 22 Januari 2013

zimbra stats can't start

Di Pagi yang cerah ini, tiba-tiba services zmstats di mesin email server saya tidak bisa running, setelah googling sana sini, akhirnya ketemu solusi.
# chown zimbra:zimbra /opt/zimbra/zmstat/*
# su zimbra
# zmstatctl start
# zmstatctl status

Running: zmstat-cpu
Running: zmstat-df
Running: zmstat-fd
Running: zmstat-io
Running: zmstat-io-x
Running: zmstat-ldap
Running: zmstat-allprocs
Running: zmstat-mtaqueue
Running: zmstat-mysql
Running: zmstat-proc
Running: zmstat-vm
oalah, ternyata owner atau kepemilikan filenya yang bermasalah, berhubung mau cepet, mungkin next time harus di cari tau kenapa ownernya bermasalah seperti itu. sekarang yang penting everything is running well :D

Sabtu, 19 Januari 2013

Menginstall Plugin di Sublime text 2

Sublime Text 2
Ini editor yang sekarang selalu menemani saya bersama CodeIgniter.
Editor ini fiturnya sangat lengkap, view nya pun mirip dengan notepad++ yang dulu pernah saya pakai di lingkungan windows, hanya saja editor ini berbayar dan kita bisa mencoba evaluated version untuk coba-coba (walaupun sampai sekarang belum ada batasan waktu evaluasi). Sekalipun berbayar, harganya nggak terlalu mahal, $59 dan saya rasa nggak rugi koq, itung-itung membantu develop untuk tetap eksis.

Secara default, Sublime text 2 sudah layak pakai. Fitur autocomplete sudah aktif , baik untuk syntax PHP maupun word in document dan lain-lain. namun yang membuat ST2 lebih keren lagi adalah package controlnya. Dengan adanya package control ini, kita bisa menginstall aplikasi secara online (via github).

Berikut langkah-langkahnya :
install dulu package controll nya.