Border di PostgreSQL

Kenapa Judulnya "Border di PostgreSQL" karena bingung mau kasih judul apa.. Kita liat aja Perbedaan Show Database di MySQL dan PosgreSQL :

- PostgreSQL :

Border di PostgreSQL

- MySQL :
Border di PostgreSQL


Dilihat di MySQL untuk garis border penuh, sedangkan di PostgreSQL hanya beberapa, Berikut cara simple untuk membuat Border di PostgreSQL menjadi penuh :
postgres=# \pset border 2
hasilnya :

postgres=# \l


Border di PostgreSQL


Semoga Membantu..

Merubah Owner Suatu Table di PostgreSQL

Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL
Masih dengan DBMS PostgreSQL, dan hanya sekedar untuk catatan tentang Owner atau Kepemilikan suatu Table yang pasti ada kaitannya dengan Peringatan Error "Permission Denied".

Agar lebih mudah dalam penjelasan, coba kita buat suatu kasus sebagai berikut :







1. Masuk postgreSQL dengan perintah berikut :
$ psql
dan hasilnya :
postgres=#
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

Ok, bisa dilihat tanda setelah "=" yaitu tanda "#" bisa diartikan adalah root, artinya user dengan hak akses root mempunya hak penuh atas kepemilikannya, misal Database atau Table.

2. Selanjutnya coba buat user dengan perintah berikut :
# create user abby;
dan tambahkan password :
# \password abby;
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL


3.  Kemudian coba buat lagi user yang berbeda :

# create user dika;
# \password dika;

Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

untuk melihat user bisa dengan perintah query berikut :
# select * from pg_user;

4. Buat Database :
# create database mydb;
dan lihat owner  dari database tersebut :
# \l
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

5. Rubah Owner database mydb ke user abby :
# alter database mydb owner to abby;
dan lihat owner dari databasenya :
# \l

Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

6. Keluar dan Masuk ke Database mydb dengan user abby;
# \q
# psql mydb abby;
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL
 perbedaan user abby dengan postgres  bisa dilihat di tanda "#" dan ">" artinya user abby tidah mempunyai hak penuh seperti user postgres.

7. Buat Table dengan nama table_abby :
> create table table_abby (id char(2),nama varchar(10));
hasilnya :
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

8. Sekarang coba keluar dan Masuk ke Database mydb dengan User dika :
> \q
> psql mydb dika;
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

9. Buat Table dengan nama table_dika :
> create table table_dika (id char(2),nama varchar(10));
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

10. Sekarang coba rubah owner user untuk masing-masing table :
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

dan lihat ownernya :
> \d
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL
 
Masih dengan user dika, untuk mencobanya , Lakukan perintah Insert untuk table_abby :

> INSERT INTO table_abby values ('1','nama');
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

Muncul Pesan Error "Permission Denied"

dan sekarang Lakukan perintah Insert untuk table_dika :
> INSERT INTO table_dika values ('1','nama');
Merubah Owner atau Kepemilikan Database dan Table di PostgreSQL

 Mungkin dari hasil diatas bisa di mengerti apa Owner itu dari suatu Table ..

Semoga Membantu..

Install PostgreSQL 9.2 di Debian Server

Masih Dalam kondisi ngeremote, Awalnya sempat ingin meng Upgrade PostgreSQL 8.4 ke 9.2 di Debian Server, tapi masih ada beberapa masalah, sebenarnya bisa dengan menambahkan Repository Backport berikut :


deb http://backports.debian.org/debian-backports squeeze-backports main 
Langkah alternatifnya adalah install manual dengan mendownload postgreSQL-9.2 :

1. Download dengan perintah berikut :
# wget http://get.enterprisedb.com/postgresql/postgresql-9.2.1-1-linux.run
Install PostgreSQL 9.2 di Debian Server

2. Tambah Hak Akses Execute :
# chmod +x postgresql-9.2.1-1-linux.run

3. Install postgreSQL-9.2 :
# ./ postgresql-9.2.1-1-linux.run 
Install PostgreSQL 9.2 di Debian Server
Install PostgreSQL 9.2 di Debian Server

Install PostgreSQL 9.2 di Debian Server


Jalankan Service PostgreSQL :
# /etc/init.d/postgresql start
# psql
Install PostgreSQL 9.2 di Debian Server


Koneksi ke PHP :

<?php
$conn_string ="host=localhost port=8080 dbname=db user=abby password=xxx";
$connection = pg_pconnect($conn_string);
if (!$connection) {
print("Connection Failed.");
exit;
}
?>

Semoga Membantu..


Membuat User di MySQL [Debian]



Berhubung lagi ngeremote, dan masih berhubungan dengan DBMS MySQL, sekedar membuat catatan bagaimana membuat user di DBMS MySQL :

1. Masuk MySQL dengan user root :
# mysql -u root -p
Membuat User di MySQL [Debian]

2. Buat Hash Password dengan perintah berikut :
contoh : abby
> select password ('abby');
hasilnya seperti berikut :
Membuat User di MySQL [Debian]

3. Buat User dengan perintah berikut dan password dengan hasil hash tadi :
> create user 'abby'@'localhost' identified by password '*8DF79545DB6D735C372251BA785BF66DCB982705';
Membuat User di MySQL [Debian]

4. Lihat hasilnya di dalam tabel user database mysql :
> select user, password from mysql.user where user='abby';
Membuat User di MySQL [Debian]

5. Sekarang coba buat Database untuk User yang sudah dibuat :
> create database db_abby;
Membuat User di MySQL [Debian]

6. Beri Hak Akses User untuk database yang sudah dibuat :
> grant all on db_abby.* to 'abby'@'localhost';
Membuat User di MySQL [Debian]

7. Keluar dan Masuk dengan user yang sudah dibuat :
Membuat User di MySQL [Debian]

Semoga Membantu..

Rename Table di PostgreSQL





postgres=# CREATE TABLE sample (id char);
postgres=# \d 
postgres=# ALTER TABLE sample RENAME to sampletable;
postgres=# \d

Rename Table di PostgreSQL

Mengaktifkan mod_rewrite di openSUSE

Mengaktifkan mod_rewrite di openSUSE

Masih ada kaitannya tentang Konfigurasi Apache2 di openSUSE postingan sebelumnya, sekarang bagaimana mengaktifkan mod_rewrite di openSUSE,

- Edit file  /etc/sysconfig/apache2
# nano /etc/sysconfig/apache2
- Cari baris APACHE_MODULES dan tambahkan kata rewrite di antara " "
- Jalankan Perintah berikut dan restart apache2 :
# SuSEconfig
# service apache2 restart
untuk mengecek , contoh konfigurasi pada .htaccess untuk mengubah url :

http://site.com/index.php?p=home

menjadi 

http://site.com/home

RewriteEngine on
RewriteRule ^home$  index.php?p=home [L]
Options All -Indexes

Semoga Membantu ..

Mengatasi Wvdial Aborted di openSUSE 12.2


Mengatasi Wvdial Aborted di openSUSE 12.2

Untuk distro openSUSE 12.2 muncul masalah di aplikasi Dial Up wvdial, yaitu ketika menjalankan wvdial muncul respon seperi berikut :

--> Idle Seconds = 300, disabling automatic reconnect.
wvdial: utils/wvtask.cc:401: static void WvTaskMan::_stackmaster(): Assertion `magic_number == -0x123678' failed.
Aborted

Setelah dilihat ternyata openSUSE yang baru ini sudah memakai wvstream versi 4.4.1.8, dan yang ada pada openSUSE versi sebelumnya memakai wvstream versi 4.4.1.76. Masalah diatas bisa diatasi dengan mendowngrade wvstream dari versi 4.4.1.8 ke versi sebelumnya.

1. Remove wvstream, bisa menggunakan Terminal atau dengan Yast.
2. Download wvstream versi 4.4.1.76 disini
3. Ekstrak dan install 

# rpm -Uvh *.rpm

4. Setesai dan jalankan wvdial..

Semoga membantu..

Program Command Line Chatting & Simple Encryption with Java

Melanjutkan tugas kuliah yang diberikan pak Jack tentang command line chatting tetapi pada kasus kali ini kami diharuskan membuat proses enkripsi & dekripsi data yang dikirim ke client lain. Oleh karena itu di sini kami tambahkan satu file yang berfungsi untuk melakukan proses enkripsi dan dekripsi sederhana. Program yang digunakan masih sama dengan program pada postingan sebelumnya "Command Line Chatting dengan JAVA ", hanya saja untuk bagian database tidak disertakan.
Gambaran dari program yang kami buat adalah seperti berikut :


Client mengirim pesan kepada client lain yang login ke dalam aplikasi chatting.


Message yang dikirim oleh client akan di-enkripsi sebelum dikirim ke server.

Server menerima data yang telah di-enkripsi kemudian melakukan filter untuk menyeleksi client yang dituju.

Setelah server mendapatkan nama dari client penerima pesan makan akan dilakukan proses dekripsi sebelum di kirim ke client.

Client yang memiliki nama user yang sama dengan nama user yang dituju akan menerima pesan yang dikirim dalam bentuk normal user yang lain akan menerima pesan data yang terenkripsi.




Untuk source code program dapat di download di sini.

Berikut ini adalah penjelasan dari beberapa potongan program di atas.
1. Chat syntax Client
while(true) {
System.out.print("> ");
// read message from user
String msg = scan.nextLine();
if (msg.length() <= 3) {
client.sendMessage(new ChatMessage(ChatMessage.MESSAGE, msg));
}
// logout if message is LOGOUT
else if(msg.equalsIgnoreCase("LOGOUT")) {
client.sendMessage(new ChatMessage(ChatMessage.LOGOUT, ""));
// break to do the disconnect
break;
}
// message WhoIsIn
else if(msg.equalsIgnoreCase("WHOISIN")) {
client.sendMessage(new ChatMessage(ChatMessage.WHOISIN, ""));
}
// Private Message
else if( (msg.substring(0,3)).equalsIgnoreCase("TO:")){
CEncrypt enc = new CEncrypt();
String[] arrayMsg=msg.split(" ");
String user=arrayMsg[0].substring(3);
String pesan="";
for (int i=1;i<arrayMsg.length;i++)
pesan = pesan +" "+ arrayMsg[i];
CEncrypt e = new CEncrypt();
String encMsg = e.encryptString(pesan);
client.sendMessage(new ChatMessage(ChatMessage.PM, user, encMsg)); }
else { // default to ordinary message
client.sendMessage(new ChatMessage(ChatMessage.MESSAGE, msg));
}
}

Pada potongan program di atas dapat dilihat ada 4 kondisi yang dapat digunakan user ketika chatting, yaitu: *Untuk memeriksa siapa saja user yang login dapat mengetikkan di terminal chat "whoisin"


*Untuk mengirim pesan biasa dapat langsung ketikkan pesan di layar chat, secara otomatis pesan tersebut akan di broadcast ke smua user yang login.


*Untuk mengirimkan private message yang terenkripsi gunakan peritah "to:namauser" seperti pada contoh berikut.

 Proses dekripsi dari pesan yang dikirimkan dilakukan di server, berikut potongan program untuk proses dekripsi di server.

private synchronized void privateMessage(String message, String receiver, String sender) {
// add HH:mm:ss and \n to the message
String time = sdf.format(new Date());
//String messageLf = time + " " + message + "\n";
// display message on console or GUI
if(sg == null)
System.out.print(time + " PM from "+sender+" to "+receiver+" "+message);
else
sg.appendRoom(time + " PM from "+sender+" to "+receiver+" "+message);     // append in the room window

// we loop in reverse order in case we would have to remove a Client
// because it has disconnected
for(int i = al.size(); --i >= 0;) {
ClientThread ct = al.get(i);
if (ct.username.equals(receiver)) {   //Dekripsi jika nama user = user tujuan
CEncrypt denc = new CEncrypt();
ct.writeMsg(time +" PM from "+sender+" : "+ denc.decryptString(message));
}
else {  //Pesan tidak di dekripsi jika tidak sama
ct.writeMsg(time +" PM from "+sender+" : "+ message);
}
}
}

Yang terakhir adalah source untuk enkripsi dan dekripsi pesan :

public class CEncrypt
{
   static final String key = "Encrypt"; // The key for 'encrypting' and 'decrypting'.
   static String encryptString(String str)
   {
      StringBuffer sb = new StringBuffer (str);
      //System.out.println("Insert Key : ");readln(key);
      int lenStr = str.length();
      int lenKey = key.length();

      //
      // For each character in our string, encrypt it...
      for ( int i = 0, j = 0; i < lenStr; i++, j++ )
      {
         if ( j >= lenKey ) j = 0;  // Wrap 'round to beginning of key string.
         //
         // XOR the chars together. Must cast back to char to avoid compile error.
         //
         sb.setCharAt(i, (char)(str.charAt(i) ^ key.charAt(j)));
      }
      return sb.toString();
   
   }
 
   static String decryptString(String str)
   {
      //
      // To 'decrypt' the string, simply apply the same technique.
      return encryptString(str);
   }
}

Pada source tersebut dapat dilihat bahwa kami menggunakan satu kunci yang sama untuk melakukan enkripsi dan dekripsi pesan.