Monday, December 18, 2017

Replikasi Database Mysql



Tahapan replikasi database mysql yaitu di server master dan server slave dan install paket rsync di kedua server. Contoh di sini saya akan mereplikasi database dbContoh yang ada di server master dan IPnya:
ip_master :  192.168.20.30
ip_slave :  192.168.20.47
user-mysql :  root
password : 123

Konfigurasi di Server Master
1. Install paket rsync
# apt-get install rsync

2.
Konfigurasi my.cnf
# vim /etc/mysql/my.cnf

server_id    = 1
log_bin
      = /var/log/mysql/mysql-bin.log
binlog_do_db
= dbContoh

#bin-address   = 127.0.0.1

Keterangan:
log_bin
= alamat untuk menyimpan log binari mysql
binlog-do-db
= nama database yang akan direplikasi
server-id
= id dari mesin master
#bin-address = agar yang bisa menggunakan database tidak hanya dari localhost.

3.
Restart service mysql
#
service mysql restart

4.
Masuk ke mysql sebagai root

#
mysql -uroot -p123

5.
Catat status master dari database dbContoh

USE dbContoh;
FLUSH TABLES WITH READ LOCK;
SHOW
MASTER STATUS;

+----------------------+----------+--------------------+------------------------+
|
File                        | Position | Binlog_Do_DB | Binlog_Ignore_DB  |
+----------------------+----------+-------------------+-------------------------+
|
mysql-bin.000033 | 106        | dbContoh          |                                   |
+----------------------+----------+-------------------+-------------------------+


UNLOCK TABLES;

Konfigurasi
di server master sudah selesai, sekarang kita lanjut ke konfigurasi di server slave.

Konfigurasi di Server Slave
1. Konfigurasi file my.cnf
# vim /etc/mysql/my.cnf
server_id=2
master_host=192.168.20.30
master_user=root
master_password=123
master_connect_retry=30
replicate_do_db=dbContoh

Keterangan:
server-id
= id dari server slave
master-host
= ip address server master
master-user
= user name mysql untuk akses server master
master-password
= password user name mysql untuk akses server master
master-connect-retry
= waktu jeda (satuan detik) untuk melakukan koneksi ke master bisa conection ke master putus
replicate-do-db
= nama database yang di replikasi

3.
Restart service mysql
#
service mysql restart

4.
Masuk ke mysql sebagai root
#
mysql -uroot -p123
mysql > CREATE DATABASE dbContoh;
mysql > USE  dbContoh;
mysql > LOAD DATA FROM MASTER;
mysql >
SLAVE STOP;
mysql > CHANGE MASTER TO MASTER_HOST= '192.168.20.30',
mysql > MASTER_USER='root',
mysql > MASTER_PASSWORD='123',

mysql >
MASTER_LOG_FILE='mysql-bin.000033',
mysql > MASTER_LOG_POS=106;
mysql > SLAVE START;
mysql > SHOW SLAVE STATUS;

Keterangan :
LOAD DATA FROM MASTER = mengambil data untuk yang pertama kalinya dari master ke slave.
parameter MASTER_LOG, MASTER_LOG_FILE, MASTER_LOG_POS mengambil dari status master
SHOW SLAVE STATUS = untuk melihat status slave.

Konfigurasi Replikasi database mysql selesai..

Mengecek Karakter dengan Regular Expressions

Artikel ini dikutip dari http://www.ilmuwebsite.com

Mengecek Karakter dengan Regular Expressions web desain grafis

Anda mau membuat system check karakter dengan menggunakan Regular Expressions??

Berikut ada script sederhana yang mungkin bisa menjadi inspirasi anda:

<?php
$line = “ilmuwebsite”;

if (eregi (“^[a-z]+$”, $line)) {
// .. lakukan jika benar
echo “Benar”;

} else {
// .. lakukan jika salah
echo “Salah”;

}
?>

Deskripsi:
Fungsi if : saya kira anda sudah tahu
fungsi eregi : ini adalah fungsi untuk membandingkan
sedangkan ^[a-z]+$ : ini adalah Regular Expressions

Yang berarti:
^ : harus di awal
[a-z] : karakter a sampai z
+ : lebih dari satu
$ : harus di akhir

Jadi artinya:
1. didepan harus ada karakter a-z
2. di tengah ada karakter a-z boleh lebih dari 1
3. di akhir harus ada karakter a-z

Logika:
Bandingkan kombinasi Regular Expressions ^[a-z]+$ dengan strng $line?yang ber isi?”ilmuwebsite”
jika benar tampilkan tulisan Benar, dan juka salah tampilkan tulisan salah

Ada juga script yang lain:
<?php
if (ereg (“^[[:alpha:]]+$”, $line)) {
// .. lakukan jika benar
echo “Benar”;

} else {
// .. lakukan jika salah
echo “Salah”;

}
?>

Penjelasan:
Disin kita menggunakan fungsi ereg yang berarti case sensitif, lalu kita juga menggunakan [[:alpha:]] sebagai alternatif lain dari Regular Expression.

Berikut daftar tabel nya:
Name     Description
[[:alnum:]]     All alphanumeric characters [a-zA-Z0-9]
[[:alpha:]]     All alphabetic characters [a-z]
[[:blank:]]     Tab and space [t ]
[[:cntrl:]]     All the control characters
[[:digit:]]     All decimal digits [0-9]
[[:graph:]]     All printable characters except space
[[:lower:]]     All lowercase letters [a-z]
[[:print:]]     All printable characters
[[:punct:]]     Punctuation marks [.,;:-]
[[:space:]]     All whitespace characters
[[:upper:]]     All the uppercase letters [A-Z]
[[:xdigit:]]     The set of hexadecimal digits

Wednesday, December 13, 2017

Ms Access Hide & Unhide Object

How to unhide a query in Access 2007
 
In Access 2007, the way of configuring things have been dramatically changed by Microsoft. To unhide a query (or any other Access objects), you need to use the Office Button.

1. Click the Office Button at the top left corner of Access window.





2. Click Access Options button. 




3. Click Current Database tab on the left hand side navigation menu.
 



4. On the Current Database tab, click Navigation Options button.  




5. On the Navigation Options window, tick the checkbox Show Hidden Objects in the Display Options section.






6. Click OK to close all the windows.
7. Go back to the navigation pane to view the queries. You should see the query name "Quarterly Orders by Product" is now grayed out but still viewable.






8. If you need to see the query again as a normal query (ungrayed), right click on the query and untick the checkbox Hidden on its Properties windows. 


Note that all the steps shown above can also be applied to other Access objects like Tables, Reports, Forms, Pages, Macros, and Modules.
Happy Hiding and Unhiding!


Copyright© GeeksEngine.com



 

Thursday, July 20, 2017

SpyChannel ON Peer Server

Langsung aja ya...
Jika kita menggunakan asterisk versi 1.2, maka function SPY nya belum berfungsi, dan jika tidak memungkinkan untuk upgrade pada server yg digunakan ini, mungkin karena kendala hardware versi lama yg belum support asterisk versi terbaru atau apapun kendalanya.

Kita bisa memanfaatkan server asterisk lain yg sudah support asterisk versi terbaru, dan dijadikan server kedua, dalam kasus saya adalah sebagai server recording, dan server tadi sebagai server penunjang saja.

Jadi kita akan memanfaatkan function SPY pada server yang kedua, dengan terlebih dahulu kita akan get channel call nya.

Mohon maaf klo penjelasan nya bikin ga mudeng ya...! klo ada pertanyaan silahkan tulis dikolom komentar aja.

Kebetulan saya menggunakan database Postgresql.

Pertama buat database untuk menyimpan temporary informasi:
=============================================

-- DROP TABLE phone.asterisk_channels_verbose;

CREATE TABLE phone.asterisk_channels_verbose
(
  sid bigserial NOT NULL,
  vchannel character varying(100),
  vcontext character varying(100),
  vextension character varying(100),
  nprio numeric,
  vstate character varying(100),
  vapplication character varying(100),
  vdata character varying(100),
  vcallerid character varying(100),
  vduration character varying(100),
  vaccount_code character varying(100),
  vpeer_account character varying(100),
  vbridge_id character varying(100),
  tdate_insert timestamp without time zone NOT NULL DEFAULT (to_char(now(), 'YYYY-MM-DD HH24:MI:SS'::text))::timestamp without time zone,
  CONSTRAINT asterisk_channels_verbose_pkey PRIMARY KEY (sid)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE phone.asterisk_channels_verbose
  OWNER TO postgres;

Nah step berikut nya kita buat 1 file php yang diletakan pada directory "/var/lib/asterisk/agi-bin/"
=====================================================================
kita kasih nama aja "asterisk_channels.php". berikut script nya:

#!/usr/bin/php -q
<?php

ob_implicit_flush(false);
set_time_limit(5);
error_reporting(0);

$stdin = fopen('php://stdin', 'r');
$stdout = fopen('php://stdout', 'w');
$stdlog = fopen('/root/php_agi.log', 'w');

$xCallerId = $argv[1];
$xVariable = $argv[2];

$connection = pg_connect("host=X.X.X.X dbname=namadatabase user=postgres password=passworddatabase") or die (pg_last_error());

if($xVariable==1)
{
    exec('asterisk -x "core show channels concise"',$out);

    for($i=0;$i<(count($out));$i++)
    {
        $output = explode("!",$out[$i]);
        if($output[7]==$xCallerId)
        {
            $query = "
                DELETE FROM phone.asterisk_channels_concise WHERE vcallerid='".$output[7]."';
                INSERT INTO
                phone.asterisk_channels_concise
                (
                    vchannel,
                    vcontext,
                    vextension,
                    nprio,
                    vstate,
                    vapplication,
                    vdata,
                    vcallerid,
                    vduration,
                    vaccount_code,
                    vpeer_account,
                    vbridge_id
                )
                values
                (
                    '".$output[0]."',
                    '".$output[1]."',
                    '".$output[2]."',
                    '".$output[3]."',
                    '".$output[4]."',
                    '".$output[5]."',
                    '".$output[6]."',
                    '".$output[7]."',
                    '".$output[8]."',
                    '".$output[9]."',
                    '".$output[10]."',
                    '".$output[11]."'
                )";
            $query=str_replace("'',","NULL,",$query);
            pg_query($connection,$query) or die (pg_last_error());

            break;
        }  
    }  
}
else if($xVariable==2)
{
    $queQuery = "SELECT vchannel FROM phone.asterisk_channels_concise WHERE vcallerid='$xCallerId'";
    $exeQuery = pg_query($connection,$queQuery) or die (pg_last_error());
    $resQuery = pg_fetch_result($exeQuery,0,0);

    $spyXpin=$resQuery;
    fputs($stdout,"SET VARIABLE spyXpin $spyXpin");
    fflush($stdout);
}

pg_close($connection);
exit;

?>

Pada dialplan asterisk nya kira2 konfigurasi nya seperti ini:
==========================================

[outgoing]
exten => i,1,Hangup
exten => t,1,Hangup
exten => h,1,Hangup


;================================================================================================
;FROM SERVER 1 (OUTGOING CONTEXT)
;================================================================================================
exten => _9X.,1,Goto(server-outgoing,${EXTEN:1},1)
exten => _8X.,1,Goto(spy-silent,1553${EXTEN:1},1)
exten => _7X.,1,Goto(spy-whisper,1554${EXTEN:1},1)


;================================================================================================
;FROM OUTGOING CONTEXT
;================================================================================================
[server-outgoing]
exten => _X.,1,NoOp(CallTime=>${STRFTIME(${EPOCH},,%C%y%m%d%H%M%S)})
exten => _X.,n,Set(mvar=1)
exten => _X.,n,NoOp(CHANNEL :${CHANNEL})
exten => _X.,n,set(CALLTIME=${STRFTIME(${EPOCH},,%C%y%m%d%H%M%S)})
exten => _X.,n,Set(FILENAME="/var/spool/asterisk/monitor/${UNIQUEID}_${CALLTIME}_${EXTEN}")
;exten => _X.,n,Monitor(gsm,${FILENAME},m)                                                        //for "in" and "out" file
exten => _X.,n,MixMonitor(${FILENAME}.gsm,b)                                                    //for mix record
exten => _X.,n,AGI(asterisk_channel.php,${CALLERID(num)},${mvar})
exten => _X.,n,Dial(SIP/intra-car-out/2090${EXTEN},${OUTTIMEOUT})
exten => _X.,n,Hangup


;================================================================================================
;SPYING CHANNEL
;================================================================================================

[spy-silent]
exten => _1553XXXX,1,NoOp(==================== Begin Spying - Silent ====================)
exten => _1553XXXX,n,Set(mvar=2)
exten => _1553XXXX,n,Set(mpin=${EXTEN:4})
exten => _1553XXXX,n,Set(xpin=${mpin:0:4})
exten => _1553XXXX,n,NoOp(xpin = ${xpin})
exten => _1553XXXX,n,AGI(asterisk_channel.php,${xpin},${mvar})
exten => _1553XXXX,n,NoOp(${spyXpin})
exten => _1553XXXX,n,ChanSpy(${spyXpin},qo)
exten => _1553XXXX,n,Hangup()

[spy-whisper]
exten => _1554XXXX,1,NoOp(==================== Begin Spying - Whisper ====================)
exten => _1554XXXX,n,Set(mvar=2)
exten => _1554XXXX,n,Set(mpin=${EXTEN:4})
exten => _1554XXXX,n,Set(xpin=${mpin:0:4})
exten => _1554XXXX,n,NoOp(xpin = ${xpin})
exten => _1554XXXX,n,AGI(asterisk_channel.php,${xpin},${mvar})
exten => _1554XXXX,n,NoOp(${spyXpin})
exten => _1554XXXX,n,ChanSpy(${spyXpin},qw)
exten => _1554XXXX,n,Hangup()


Sekian dulu dan terima kasih.