Archive for February, 2009

Gammu Trigger

Barusan diminta sama bos (DR. Hasyim Gautama) untuk membuat otomatisasi membalas sms pada aplikasi sms gateway yang sudah aku implementasikan. Setelah googling beberapa saat, dapat cara untuk membuat trigger di mysql.

A trigger is a stored procedure that is invoked when a particular event occurs. For example, you can install a stored procedure that is triggered each time a record is deleted from a transaction table and that automatically deletes the corresponding customer from a customer table when all his transactions are deleted. (MySQL Manual)

Jadi suatu event bisa diotomatisasi jika ada event lain yang telah terjadi. Sederhananya begitu. Di sini aku mengimplementasikan dengan mencoba pada dua hal.

1. Menginsert ke tabel lain dalam satu database.
Pada kasus ini untuk membuat sms balasan, caranya cukup mengatur agar setiap ada isian baru di tabel inbox, mysql otomatis meng-insert isian baru ke tabel outbox.
Karena pada aplikasi sms gateway ini sudah ada daemon khusus, maka otomatis isian tabel outbox akan dikirim sebagai pesan sms.

Ini sintaksnya : (cukup sebagai refernsi saja, tergantung struktur database dan tabelnya)

view plaincopy to clipboardprint?
DELIMITER//
CREATE TRIGGER test AFTER INSERT ON inbox
FOR EACH ROW BEGIN
INSERT INTO outbox VALUES (sysdate(),sysdate(),(SELECT SenderNumber FROM inbox),’Default_No_Compression’,'Terima kasih. Laporan Anda akan segera ditindak lanjuti.’,sysdate(),’yes’);
END;
//DELIMITER
Untuk lebih jelas tentang trigger di atas, mungkin perlu diketahui struktur tabel outbox adalah seperti ini (nama field dan tipe datanya) :
· `UpdatedInDB` timestamp
· `InsertIntoDB` timestamp
· `SendingDateTime` timestamp
· `Text` text
· `DestinationNumber` varchar(20)
· `Coding` enum(’Default_No_Compression’, ‘Unicode_No_Compression’, ‘8bit’, ‘Default_Compression’, ‘Unicode_Compression’)
· `UDH` text
· `Class` int(11)
· `TextDecoded` varchar(160)
· `ID` int(11) unsigned
· `MultiPart` enum(’false’,’true’)
· `RelativeValidity` int(11)
· `SenderID` text
· `SendingTimeOut` timestamp
· `DeliveryReport` enum(’default’,’yes’,’no’)
· `CreatorID` text

Sedangkan struktur tabel inbox seperti ini (nama field dan tipe datanya):
· `UpdatedInDB` timestamp
· `ReceivingDateTime` timestamp
· `Text` text
· `SenderNumber` varchar(20)
· `Coding` enum(’Default_No_Compression’, ‘Unicode_No_Compression’, ‘8bit’, ‘Default_Compression’, ‘Unicode_Compression’)
· `UDH` text
· `SMSCNumber` varchar(20)
· `Class` int(11)
· `TextDecoded` varchar(160)
· `ID` int(11) unsigned
· `RecipientID` text
· `Processed` enum(’false’, ‘true’)

2. Menginsert ke tabel lain yang berbeda database.
Pada kasus ini untuk membuat copy isian satu database ke database master. Caranya cukup mengatur agar setiap ada isian baru di tabel inbox (database slave), mysql otomatis meng-insert isian baru yang sama ke tabel inbox di database master.

Nama database slave adalah ’smsd1′, sedangkan database masternya ’smsd0′.
Berikut ini sintaksnya :

view plaincopy to clipboardprint?
DELIMITER //
CREATE TRIGGER slave2master AFTER INSERT ON smsd1.inbox
FOR EACH ROW BEGIN
INSERT INTO smsd0.inbox VALUES ((SELECT UpdatedInDB FROM smsd1.inbox),(SELECT ReceivingDateTime FROM smsd1.inbox),(SELECT Text FROM smsd1.inbox),(SELECT SenderNumber FROM smsd1.inbox),(SELECT Coding FROM smsd1.inbox),(SELECT UDH FROM smsd1.inbox),(SELECT SMSCNumber FROM smsd1.inbox),(SELECT Class FROM smsd1.inbox),(SELECT TextDecoded FROM smsd1.inbox),(SELECT ID FROM smsd1.inbox),(SELECT RecipientID FROM smsd1.inbox),(SELECT Processed FROM smsd1.inbox),1);
END;
//DELIMITER;

Comments

Gammu TRIGGER MYSQL

Gammu dan CentOS : trigger dan stored procedure MySQL
Posted on January 28, 2009 by mahasiswastress

Gambaran untuk eksperimen (masih berhubungan dengan tulisan sebelumnya GAmmu dan CentOS: menggunakan lebih dari satu modem)
Aplikasi akan terdiri dari 3 modem
Setiap modem terhubung dengan sebuah database(smsd0,smsd1,smsd2)
Terdapat satu database (smsdMaster) yang menghubungkan semua database modem.
Begitu ada pesan masuk pada salah satu modem, selain tersimpan pada database modem, juga akan tersimpan pada databaseMaster.
Pesan akan didibalas melalui modem tertentu sesuai dengan persyaratan yang dibuat.
Langkah-langkah untuk eksperimen
1.dari tulisan sebelumnya kita memiliki database smsdMaster, smsd0, smsd1, smsd2
2.buat trigger pada masing-masing databse untuk memasukkan data secara otomatis kedalam databse smsdMaster.buka sqlcommand pada databse yang bersangkutan dan buat trigger
—————–
CREATE TRIGGER tammbahSebelum BEFORE INSERT ON inbox
FOR EACH ROW
INSERT INTO smsdmaster.inbox ( ReceivingDateTime, Text, SenderNumber, Coding, UDH, SMSCNumber, Class, TextDecoded, ID, RecipientID, Processed)
VALUE ( NEW.ReceivingDateTime, NEW.Text, NEW.SenderNumber, NEW.Coding, NEW.UDH, NEW.SMSCNumber, NEW.Class, NEW.TextDecoded, NEW.ID, NEW.RecipientID, NEW.Processed)
—————–
DELIMITER //
3.Pada database smsdmaster buat store procedure untuk memilih melalui modem mana pesan akan dibalas dan pemilihan modem ini berhubungan dengan pemilihan database.
modem yang dipilih akan disesuaikan dengan nomor hap pengirim.
—————–
CREATE PROCEDURE pilihDb(DNumber varchar(20))
BEGIN
IF LEFT(DNumber,6)=”+62818″ THEN
INSERT INTO smsd0.outbox (InsertIntoDB,SendingDateTime,DestinationNumber,Coding,TextDecoded,SendingTimeOut, DeliveryReport,CreatorID) VALUES (sysdate(),sysdate(),DNumber,’Default_No_Compression’,’Terima Kasih dari modem 0′,sysdate(),’yes’,’Komputer’);
ELSEIF LEFT(DNumber,6)=”+62812″ THEN
INSERT INTO smsd1.outbox (InsertIntoDB,SendingDateTime,DestinationNumber,Coding,TextDecoded,SendingTimeOut, DeliveryReport,CreatorID) VALUES (sysdate(),sysdate(),DNumber,’Default_No_Compression’,’Terima Kasih dari modem 1′,sysdate(),’yes’,’Komputer’);
ELSE
INSERT INTO smsd1.outbox (InsertIntoDB,SendingDateTime,DestinationNumber,Coding,TextDecoded,SendingTimeOut, DeliveryReport,CreatorID) VALUES (sysdate(),sysdate(),DNumber,’Default_No_Compression’,’Terima Kasih dari modem 2′,sysdate(),’yes’,’Komputer’);
END IF;
END
——————
DELIMITER //
4. Buat trigger pada database smsdMaster agar menjalankan prosedure pilihDb saat pada taberl inbox
——————
CREATE TRIGGER masukOutbox AFTER INSERT ON inbox
FOR EACH ROW CALL pilihDb(NEW.SenderNumber)
——————
DELIMITER //
5.selanjutnya silahkan mengirimkan pesan dan anda akan mendapatkan balasan dari modem yang disesuaikan dengan nomor hp anda.

Comments

referensi trigger on MYSQL 5.xx Series

Comments

GAMMU with SQL Trigger

Gammu merupakan enggine buat sms gateway yang populer, pa lagi sekarang sudah ada versi buat berbagai macem platform termasuk windus. Guugling aja gammu di inet boeat donglod. Hasilnya, bener-bener simple, ndak perlu ribet mikirin PDU nya, AT Command and lain-lain, sms masuk otomatis udah akan nongol di table inboxnya, sedangkan pas case kita nge bales sms, sms otomatis akan ada di table outbox. Ketika udah terkirim, data di table outbox akan otomatis dihapus and dipindah ke table sentitems.

Dengan asumsi koneksi udah berjalan (pake DKU5, blutoth or else), kita akan mencoba untuk membuat autoreplynya, cos fitur ini tidak disediakan secara otomatis oleh gammu dengan menggunakan fitur trigger pada mysql.

A trigger is a named database object that is associated with a table, and that activates when a particular event occurs for the table
MySQL Help

Oks dengan asumsi kita sudah mempunyai table-table bawaan gammu plus satu tabel lagi yang dijadiin object agen.
Tabel data_dokter(id_dokter,nama) values (’AK47′,’Rico Hantono’)
SMS Inbox sampe case : data id_dokter (misal : data AK47)

Here they are :
DELIMITER |
CREATE TRIGGER infodokter AFTER INSERT ON inbox
FOR EACH ROW BEGIN
insert into outbox(DestinationNumber,Coding,TextDecoded,CreatorID)
values(NEW.SenderNumber,'Default_No_Compression',(select nama from data_dokter
where id_dokter=SUBSTRING(NEW.TextDecoded,6)),'1');
END;
|
DELIMITER ;

Script diatas akan menbuat sebuah trigger dengan nama infodokter yang akan bekerja atau diproses pada even setelah data diinsert ke dalam tabel inbox. Setelah itu, untuk setiap data yang baru saja masuk dalam tabel inbox akan diberlakukan sql command

insert into outbox(DestinationNumber,Coding,TextDecoded,CreatorID)
values(NEW.SenderNumber,'Default_No_Compression',(select nama from data_dokter
where id_dokter=SUBSTRING(NEW.TextDecoded,6)),'1');
SQL command tersebut setelah proses akan ditranslate seperti ini :
insert into outbox(DestinationNumber,Coding,TextDecoded,CreatorID)
values ('0812334956','Default_No_Compression','Rico Hantono')

Satu hal dari pengalaman membuat autoreply dengan trigger MySQL, jika kita bekerja dengan reply yang simple gw rasa metode ni bisa dipake, namun kalo reply mengharuskan kita fetching dari beberapa tabel , hasil query yang bisa lebih dari satu dan?constrain yang rumit, sangat tidak dianjurkan sampeyan pake method ini. Pa lagi dengan kemampuan SQL yang pas-pas an kek gw :Pmendingan pake desktop application dengan dukungan ODBC. Kita bisa lebih mudah nge implementasiin query-query rumit dengan sedikit campur tangan algoritma kita sendiri :D .Selain itu, jika ada perubahan command sms ataupun perubahan format reply, kita akan lebih mudah memanagenya.

Versi desktopnya, menyusul yagh, lagi in progress. Next Month maybe ta post..

Comments (1)

httptunnel Binary on WINDOWS Client

http://www.neophob.com/serendipity/index.php?/archives/85-GNU-HTTPtunnel-v3.3-Windows-Binaries.html

http://www.neophob.com/files/httptunnel-3.3w32.zip

Comments

SSH on Windows Client TUNNEL HOW to ?

Download File dibawah ini :

http://internode.dl.sourceforge.net/sourceforge/sshwindows/setupssh381-20040709.zip

Kamu install dulu sampek Kelar
kemudian buka ‘CMD’
Ketik Perintah dibawah ini :
ssh ptpn-xi.com -l pengadaan -p 22 -N -C -L3306:127.0.0.1:3306
pass : P******
klo udah konek “HANDSAKING / ESTABLISHED”
buka aplikasi MYSQL-FRONT, SQLYOG,dll

Ketik alamat server Database : 127.0.0.1
Ketik Username Database
Isikan Password-nya

Enjoy Your Job
GoodLuck..!!

Comments

HowTo upgrade from Debian Etch (4.0 ) to Lenny (5.0)

Posted by Admin on December 29th, 2008

Debian Lenny’s release is getting closer and closer and many people will want to upgrade their Etch servers to Lenny.This is currently in testing so it is not recommended to use these instruction in production.

Before Upgrade

Take a complete backup of your debian etch server

Procedure to follow

First you need to take a backup of your sources.list file using the following command

#cp /etc/apt/sources.list /etc/apt/sources.list.backup

Now edit the /etc/apt/sources.list file

#vi /etc/apt/sources.list

Now you need to replace “etch” with “lenny“.

deb http://ftp.gb.debian.org/debian/ etch main contrib non-free
deb-src http://ftp.gb.debian.org/debian/ etch main contrib non-free

deb http://security.debian.org/ etch/updates main contrib non-free

after replacing etch with lenny the file will look like this

deb http://ftp.gb.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.gb.debian.org/debian/ lenny main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free

The above example is for  a system using the main UK mirrors; your file might use a different local one

WARNING: if for some reason your apt sources doesn’t use etch, but “stable” then your apt commands will start to use lenny the moment it is released. This can result in wrongfully performing the upgrade while you don’t want to do this or even upgrade by mistake.We would always recommend people to use the release name (like etch, lenny) instead of generic names (like stable, testing); this way you will have the control on when you want to upgrade.

Perform upgrade

After changing apt sources we need to update source list using the following command

#aptitude update

Once this is done we will want to upgrade first the core apt packages

#aptitude install apt dpkg aptitude

and finally perform the full upgrade

#aptitude full-upgrade

Note:-dist-upgrade was renamed to full-upgrade in lenny’s aptitude; or you can use:apt-get dist-upgrade

This will take a while depending on what packages you have installed (that will need to be upgraded) and on your internet connection speed. After this is done you will have to reboot your system in order to activate the kernel upgrade to the lenny 2.6.26 kernel. Also you will want to check and see that all the applications you are using are still working as expected after the upgrade.

Some of the source from here

Comments

Protected: RT RW NET FEB 2009

This post is password protected. To view it please enter your password below:


Enter your password to view comments.

apt-get to aptitude

  • Would be nice to make a table out of this:

aptitude install foo        was   apt-get install fooaptitude search foo       was   apt-cache search fooaptitude remove foo     was   apt-get remove fooaptitude ~D foo              was   apt-cache rdepends fooaptitude ?                         was   apt-cache policy fooaptitude ?                         was   apt-get source --compile foo

Comments

apt-get to aptitude

  • Would be nice to make a table out of this:

aptitude install foo        was   apt-get install foo
aptitude search foo       was   apt-cache search foo
aptitude remove foo     was   apt-get remove foo
aptitude ~D foo              was   apt-cache rdepends foo
aptitude ?                         was   apt-cache policy foo
aptitude ?                         was   apt-get source --compile foo

Comments

« Previous entries Next Page » Next Page »