Monday, July 22, 2013
Saturday, July 20, 2013
Tutorial Panada: Instalasi Framework Panada
Tentang Panada
Panada adalah high performance PHP development framework namun tetap sederhana. Tidak hanya sederhana dalam pengertian cara penggunaanya, tetapi juga bagaimana core system-nya bekerja.
Dari awal dikembangkan, Panada secara khusus ditujukan untuk membantu para PHP developer yang ingin mengembangkan aplikasi web berperforma tinggi (high performance web application). Namun demikian, prinsip kesederhanaan KISS atau Keep it Simple Son! selalu menjadi prinsip utama dalam setiap pengembangan.
Panada adalah framework sederhana dan simpel untuk pembuatan website berbasiskan PHP 5.3 ke atas. Framework ini dikembangkan dengan tujuan membantu para pengembang website untuk bekerja lebih cepat, lebih mudah dan lebih alamiah dalam penulisan kode.
Setiap komponen didesign untuk bisa saling memanfaatkan sumberdaya (resource) dari komponen-komponen lainnya secara otomatis. Hal ini memudahkan pengembang dalam memanfaatkan sumberdaya secara cepat dan efisien.
Sunday, June 30, 2013
Tutorial MySQL Multi Master Replication dengan Galera
June 30, 2013
Manarul Karim (MK)
mysql, mysql galera, mysql multi master replication, Tutorial
No comments
Edit
Untuk mengikuti tutorial ini setidaknya anda membutuhkan 4 server, 3 server sebagai uji coba kluster server MySQL dan 1 sebagai load balancer. Install dan buat 4 server Linux dengan Virtualbox/VMWare.
Tutorial ini menggunakan skenario 3 server replika untuk menangani seluruh request dari Client dengan ip address sebagai berikut:
mysql1: 192.168.1.138/24
mysql2: 192.168.1.139/24
mysql3: 192.168.1.140/24
Dalam kluster ini, server mysql2 akan terkoneksi ke mysql1 dan server mysql3 ke mysql2. Jika koneksi antara mysql2 dan mysql3 sudah terbangun, komunikasi antara mysql1 ke mysql3 akan dibentuk secara otomatis dengan komunikasi satu arah (termasuk ke semua node pada kluster).
[sourcecode language="bash"]
# apt-get install libaio1 libdbi-perl libdbd-mysql-perl mysql-client rsync
[/sourcecode]
Debian/Ubuntu 32 bits:
[sourcecode language="bash"]
# wget https://launchpad.net/codership-mysql/5.5/5.5.28-23.7/+download/mysql-server-wsrep-5.5.28-23.7-i386.deb && dpkg -i mysql-server-wsrep-5.5.28-23.7-i386.deb
[/sourcecode]
Debian/Ubuntu 64 bits:
[sourcecode language="bash"]
# wget https://launchpad.net/codership-mysql/5.5/5.5.28-23.7/+download/mysql-server-wsrep-5.5.28-23.7-amd64.deb && dpkg -i mysql-server-wsrep-5.5.28-23.7-amd64.deb
[/sourcecode]
- 32 bits:
[sourcecode language="bash"]
# wget https://launchpad.net/galera/2.x/23.2.2/+download/galera-23.2.2-i386.deb && dpkg -i galera-23.2.2-i386.deb
[/sourcecode]
- 64 bits:
[sourcecode language="bash"]
# wget https://launchpad.net/galera/2.x/23.2.2/+download/galera-23.2.2-amd64.deb && dpkg -i galera-23.2.2-amd64.deb
[/sourcecode]
[sourcecode language="bash"]
# /etc/init.d/mysql start
# mysql -u root
[/sourcecode]
[sourcecode language="bash"]
mysql> DELETE FROM mysql.user WHERE user='';
mysql> GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'P@ssw0rd';
mysql> UPDATE mysql.user SET Password=PASSWORD('P@ssw0rd') WHERE User='root';
mysql> GRANT ALL ON *.* to sst@'%' IDENTIFIED BY 'sstpasswd';
[/sourcecode]
Atur supaya mysqld dijalankan sesaat setelah booting up:
[sourcecode language="bash"]
# update-rc.d mysql defaults
[/sourcecode]
[sourcecode]
# vi /etc/mysql/conf.d/wsrep.cnf
# Full path to wsrep provider library or 'none'
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Group communication system handle
wsrep_cluster_address="gcomm://"
# State Snapshot Transfer method
wsrep_sst_method=rsync
# SST authentication string. This will be used to send SST to joining nodes.
# Depends on SST method. For mysqldump method it is root:
wsrep_sst_auth=sst:sstpasswd
[/sourcecode]
[sourcecode]
# /etc/init.d/mysql restart[/sourcecode]
NB. Untuk sementara, alamat node masih gcomm://, selanjutnya akan dikonfigurasi pada server 3.
[sourcecode]
# vi /etc/mysql/conf.d/wsrep.cnf
# Full path to wsrep provider library or 'none'
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Group communication system handle
wsrep_cluster_address="gcomm://192.168.1.138:4567"
# State Snapshot Transfer method
wsrep_sst_method=rsync
# SST authentication string. This will be used to send SST to joining nodes.
# Depends on SST method. For mysqldump method it is root:
wsrep_sst_auth=sst:sstpasswd
[/sourcecode]
[sourcecode]
# /etc/init.d/mysql restart
[/sourcecode]
[sourcecode]
# vi /etc/mysql/conf.d/wsrep.cnf
# Full path to wsrep provider library or 'none'
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Group communication system handle
wsrep_cluster_address="gcomm://192.168.1.139:4567"
# State Snapshot Transfer method
wsrep_sst_method=rsync
# SST authentication string. This will be used to send SST to joining nodes.
# Depends on SST method. For mysqldump method it is root:
wsrep_sst_auth=sst:sstpasswd
[/sourcecode]
[sourcecode]
# /etc/init.d/mysql restart
[/sourcecode]
[sourcecode]
# vi /etc/mysql/conf.d/wsrep.cnf
wsrep_cluster_address="gcomm://192.168.1.140:4567"
[/sourcecode]
[sourcecode]
# mysql -u root -p
[/sourcecode]
[sourcecode]
mysql> set global wsrep_cluster_address='gcomm://192.168.1.140:4567';
[/sourcecode]
Checking wsrep variables
[sourcecode]
mysql> show status like 'wsrep%';
+----------------------------+----------------------------------------------------------+
| Variable_name | Value |
+----------------------------+----------------------------------------------------------+
| wsrep_local_state_uuid | 17048124-4c6e-11e2-0800-5c8217cefd3f |
| wsrep_protocol_version | 4 |
| wsrep_last_committed | 1 |
| wsrep_replicated | 0 |
| wsrep_replicated_bytes | 0 |
| wsrep_received | 10 |
| wsrep_received_bytes | 1039 |
| wsrep_local_commits | 0 |
| wsrep_local_cert_failures | 0 |
| wsrep_local_bf_aborts | 0 |
| wsrep_local_replays | 0 |
| wsrep_local_send_queue | 0 |
| wsrep_local_send_queue_avg | 0.000000 |
| wsrep_local_recv_queue | 0 |
| wsrep_local_recv_queue_avg | 0.000000 |
| wsrep_flow_control_paused | 0.000000 |
| wsrep_flow_control_sent | 0 |
| wsrep_flow_control_recv | 0 |
| wsrep_cert_deps_distance | 0.000000 |
| wsrep_apply_oooe | 0.000000 |
| wsrep_apply_oool | 0.000000 |
| wsrep_apply_window | 0.000000 |
| wsrep_commit_oooe | 0.000000 |
| wsrep_commit_oool | 0.000000 |
| wsrep_commit_window | 0.000000 |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_cert_index_size | 0 |
| wsrep_causal_reads | 0 |
| wsrep_incoming_addresses | 192.168.1.138:3306,192.168.1.140:3306,192.168.1.139:3306 |
| wsrep_cluster_conf_id | 5 |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | 17048124-4c6e-11e2-0800-5c8217cefd3f |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_local_index | 0 |
| wsrep_provider_name | Galera |
| wsrep_provider_vendor | Codership Oy <info@codership.com> |
| wsrep_provider_version | 23.2.2(r137) |
| wsrep_ready | ON |
+----------------------------+----------------------------------------------------------+
40 rows in set (0.00 sec)
[/sourcecode]
The most important variables are wsrep_ready, if the value is ON it means that the cluster is working, and wsrep_cluster_size that is equals to the number of nodes that is composed the cluster.
Tutorial ini menggunakan skenario 3 server replika untuk menangani seluruh request dari Client dengan ip address sebagai berikut:
mysql1: 192.168.1.138/24
mysql2: 192.168.1.139/24
mysql3: 192.168.1.140/24
Dalam kluster ini, server mysql2 akan terkoneksi ke mysql1 dan server mysql3 ke mysql2. Jika koneksi antara mysql2 dan mysql3 sudah terbangun, komunikasi antara mysql1 ke mysql3 akan dibentuk secara otomatis dengan komunikasi satu arah (termasuk ke semua node pada kluster).
Instalasi MySQL
[sourcecode language="bash"]
# apt-get install libaio1 libdbi-perl libdbd-mysql-perl mysql-client rsync
[/sourcecode]
Install MySQL server dengan wsrep patch
Debian/Ubuntu 32 bits:
[sourcecode language="bash"]
# wget https://launchpad.net/codership-mysql/5.5/5.5.28-23.7/+download/mysql-server-wsrep-5.5.28-23.7-i386.deb && dpkg -i mysql-server-wsrep-5.5.28-23.7-i386.deb
[/sourcecode]
Debian/Ubuntu 64 bits:
[sourcecode language="bash"]
# wget https://launchpad.net/codership-mysql/5.5/5.5.28-23.7/+download/mysql-server-wsrep-5.5.28-23.7-amd64.deb && dpkg -i mysql-server-wsrep-5.5.28-23.7-amd64.deb
[/sourcecode]
Download dan install Galera
- 32 bits:
[sourcecode language="bash"]
# wget https://launchpad.net/galera/2.x/23.2.2/+download/galera-23.2.2-i386.deb && dpkg -i galera-23.2.2-i386.deb
[/sourcecode]
- 64 bits:
[sourcecode language="bash"]
# wget https://launchpad.net/galera/2.x/23.2.2/+download/galera-23.2.2-amd64.deb && dpkg -i galera-23.2.2-amd64.deb
[/sourcecode]
Konfigurasi Awal MySQL
[sourcecode language="bash"]
# /etc/init.d/mysql start
# mysql -u root
[/sourcecode]
[sourcecode language="bash"]
mysql> DELETE FROM mysql.user WHERE user='';
mysql> GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'P@ssw0rd';
mysql> UPDATE mysql.user SET Password=PASSWORD('P@ssw0rd') WHERE User='root';
mysql> GRANT ALL ON *.* to sst@'%' IDENTIFIED BY 'sstpasswd';
[/sourcecode]
Atur supaya mysqld dijalankan sesaat setelah booting up:
[sourcecode language="bash"]
# update-rc.d mysql defaults
[/sourcecode]
Konfigurasi Server MySQL1
[sourcecode]
# vi /etc/mysql/conf.d/wsrep.cnf
# Full path to wsrep provider library or 'none'
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Group communication system handle
wsrep_cluster_address="gcomm://"
# State Snapshot Transfer method
wsrep_sst_method=rsync
# SST authentication string. This will be used to send SST to joining nodes.
# Depends on SST method. For mysqldump method it is root:
wsrep_sst_auth=sst:sstpasswd
[/sourcecode]
[sourcecode]
# /etc/init.d/mysql restart[/sourcecode]
NB. Untuk sementara, alamat node masih gcomm://, selanjutnya akan dikonfigurasi pada server 3.
Konfigurasi Server MySQL2
[sourcecode]
# vi /etc/mysql/conf.d/wsrep.cnf
# Full path to wsrep provider library or 'none'
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Group communication system handle
wsrep_cluster_address="gcomm://192.168.1.138:4567"
# State Snapshot Transfer method
wsrep_sst_method=rsync
# SST authentication string. This will be used to send SST to joining nodes.
# Depends on SST method. For mysqldump method it is root:
wsrep_sst_auth=sst:sstpasswd
[/sourcecode]
[sourcecode]
# /etc/init.d/mysql restart
[/sourcecode]
Konfigurasi Server MySQL3
[sourcecode]
# vi /etc/mysql/conf.d/wsrep.cnf
# Full path to wsrep provider library or 'none'
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Group communication system handle
wsrep_cluster_address="gcomm://192.168.1.139:4567"
# State Snapshot Transfer method
wsrep_sst_method=rsync
# SST authentication string. This will be used to send SST to joining nodes.
# Depends on SST method. For mysqldump method it is root:
wsrep_sst_auth=sst:sstpasswd
[/sourcecode]
[sourcecode]
# /etc/init.d/mysql restart
[/sourcecode]
Konfigurasi Ulang Server MySQL1
[sourcecode]
# vi /etc/mysql/conf.d/wsrep.cnf
wsrep_cluster_address="gcomm://192.168.1.140:4567"
[/sourcecode]
[sourcecode]
# mysql -u root -p
[/sourcecode]
[sourcecode]
mysql> set global wsrep_cluster_address='gcomm://192.168.1.140:4567';
[/sourcecode]
Checking wsrep variables
[sourcecode]
mysql> show status like 'wsrep%';
+----------------------------+----------------------------------------------------------+
| Variable_name | Value |
+----------------------------+----------------------------------------------------------+
| wsrep_local_state_uuid | 17048124-4c6e-11e2-0800-5c8217cefd3f |
| wsrep_protocol_version | 4 |
| wsrep_last_committed | 1 |
| wsrep_replicated | 0 |
| wsrep_replicated_bytes | 0 |
| wsrep_received | 10 |
| wsrep_received_bytes | 1039 |
| wsrep_local_commits | 0 |
| wsrep_local_cert_failures | 0 |
| wsrep_local_bf_aborts | 0 |
| wsrep_local_replays | 0 |
| wsrep_local_send_queue | 0 |
| wsrep_local_send_queue_avg | 0.000000 |
| wsrep_local_recv_queue | 0 |
| wsrep_local_recv_queue_avg | 0.000000 |
| wsrep_flow_control_paused | 0.000000 |
| wsrep_flow_control_sent | 0 |
| wsrep_flow_control_recv | 0 |
| wsrep_cert_deps_distance | 0.000000 |
| wsrep_apply_oooe | 0.000000 |
| wsrep_apply_oool | 0.000000 |
| wsrep_apply_window | 0.000000 |
| wsrep_commit_oooe | 0.000000 |
| wsrep_commit_oool | 0.000000 |
| wsrep_commit_window | 0.000000 |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_cert_index_size | 0 |
| wsrep_causal_reads | 0 |
| wsrep_incoming_addresses | 192.168.1.138:3306,192.168.1.140:3306,192.168.1.139:3306 |
| wsrep_cluster_conf_id | 5 |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | 17048124-4c6e-11e2-0800-5c8217cefd3f |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_local_index | 0 |
| wsrep_provider_name | Galera |
| wsrep_provider_vendor | Codership Oy <info@codership.com> |
| wsrep_provider_version | 23.2.2(r137) |
| wsrep_ready | ON |
+----------------------------+----------------------------------------------------------+
40 rows in set (0.00 sec)
[/sourcecode]
The most important variables are wsrep_ready, if the value is ON it means that the cluster is working, and wsrep_cluster_size that is equals to the number of nodes that is composed the cluster.
Sunday, June 9, 2013
Belajar Linux: How to Connect to Wi-Fi from Command Line
We will talk about how to connect to Non-Secured Networks, as well as WEP and WPA protected networks. This tutorial will not cover how to install the drivers for your wireless card. Most old cards will be automatically detected by your system, but in the unfortunate event that it won’t be detected, you will have to do a lot of digging.
To follow this tutorial you need the following packages already installed on your system:
In Arch Linux, these are all part of the wireless_tools pack (if it’s of any help… probably not… unless you use Arch)
To follow this tutorial you need the following packages already installed on your system:
- iwconfig
- iwlist
- wpa_passphrase
In Arch Linux, these are all part of the wireless_tools pack (if it’s of any help… probably not… unless you use Arch)
Monday, March 18, 2013
Belajar Android: Membuat Launcher Website/Blog
Untuk menambah kedekatan dengan pembaca setia website atau blog anda, khususnya jika blog anda cukup banyak diakses dari platform mobile (Android, Opera Mini, iPhone dll), layaknya anda pertimbangkan untuk mempraktikkan tutorial ini. Tutorial ini akan mempelajari bagaimana cara membuat launcher sederhana dari website/blog anda sehingga hadir (seolah-olah) native di handset pembaca.
Sebelum anda mengikuti tutorial ini, hendaknya anda sudah mengerti sedikit tentang Java, Android SDK, Eclipse.
Buka editor Eclipse. Untuk membuat project baru, silakan klik menu File -> New -> Android Application Project.
Isikan variabel untuk Application Name, Project Name dan Package Name. Pilih SDK minimum yang didukung (hendaknya Android 2.2 Froyo) dan pilih SDK target (hendaknya Android 2.3, edisi rata-rata android di Indonesia saat ini). Klik tombol Next.
Untuk membuat layout dasar dari aplikasi anda, silakan buka file /res/layout/activity_main.xml. Pilih tab Graphical Layout. Tambahkan elemen WebView (anda bisa temukan di bagian palette Composite).
Setiap aplikasi android mempunya permission (perijinan) nya sendiri. Untuk aplikasi launcher, setidaknya anda harus mengeset agar user memberikan permission untuk mengakses Internet (android.permission.INTERNET). Silakan buka file android_manifest.xml. Pilih tab Permission dan tambahkan Permission baru dengan tipe User Permission dan string permission android.permission.INTERNET.
Inilah bagian utama dari aktivitas kita. Silakan edit file main activity anda dan tambahkan script untuk membuat dan mengisi elemen WebView yang sudah kita buat:
tambahkan pada method onCreate:
[sourcecode language="java"]
//load emka.web.id
WebView mywebview = (WebView) findViewById(R.id.webView1);
mywebview.loadUrl("https://emka.web.id");
[/sourcecode]
tambahkan library Webview dengan menuliskan
[code]import android.webkit.WebView;[/code]
Tentunya website anda sudah menggunakan javascript. Untuk mengeset browser WebView supaya dapat mengakses javascript, silakan tambahkan sourcecode berikut pada method onCreate:
[sourcecode language="java"]
WebSettings webSettings = mywebview.getSettings();
webSettings.setJavaScriptEnabled(true);
[/sourcecode]
Jika anda ingin membuat pembaca selalu membuka link pada interface webview (launcher) anda, silakan tambahkan sourcecode berikut:
[sourcecode language="java"]
mywebview.setWebViewClient(new WebViewClient());
[/sourcecode]
Berikut adalah sourcecode lengkapnya. Sudah saya tambahkan kemampuan javascript, zoom, browsing klik dan toast selamat datang/loading:
[sourcecode language="java"]
package com.luthfiemka.emkawebidlauncher;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(getApplicationContext(), "Loading...", Toast.LENGTH_LONG).show();
//load emka.web.id
WebView mywebview = (WebView) findViewById(R.id.webView1);
mywebview.loadUrl("https://emka.web.id");
//enable javascript
WebSettings webSettings = mywebview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
//handling clicks
mywebview.setWebViewClient(new WebViewClient());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mywebview1.canGoBack()) {
mywebview1.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
[/sourcecode]
Download full sourcecodenya disini: via SistemInformasi.biz.
Test dengan Eclipse. Selamat mencoba!
Sebelum anda mengikuti tutorial ini, hendaknya anda sudah mengerti sedikit tentang Java, Android SDK, Eclipse.
Membuat Proyek Baru
Buka editor Eclipse. Untuk membuat project baru, silakan klik menu File -> New -> Android Application Project.
Isikan variabel untuk Application Name, Project Name dan Package Name. Pilih SDK minimum yang didukung (hendaknya Android 2.2 Froyo) dan pilih SDK target (hendaknya Android 2.3, edisi rata-rata android di Indonesia saat ini). Klik tombol Next.
Layout Dasar
Untuk membuat layout dasar dari aplikasi anda, silakan buka file /res/layout/activity_main.xml. Pilih tab Graphical Layout. Tambahkan elemen WebView (anda bisa temukan di bagian palette Composite).
Tambahkan Permission
Setiap aplikasi android mempunya permission (perijinan) nya sendiri. Untuk aplikasi launcher, setidaknya anda harus mengeset agar user memberikan permission untuk mengakses Internet (android.permission.INTERNET). Silakan buka file android_manifest.xml. Pilih tab Permission dan tambahkan Permission baru dengan tipe User Permission dan string permission android.permission.INTERNET.
Edit Script Utama
Inilah bagian utama dari aktivitas kita. Silakan edit file main activity anda dan tambahkan script untuk membuat dan mengisi elemen WebView yang sudah kita buat:
tambahkan pada method onCreate:
[sourcecode language="java"]
//load emka.web.id
WebView mywebview = (WebView) findViewById(R.id.webView1);
mywebview.loadUrl("https://emka.web.id");
[/sourcecode]
tambahkan library Webview dengan menuliskan
[code]import android.webkit.WebView;[/code]
Mengijinkan Javascript
Tentunya website anda sudah menggunakan javascript. Untuk mengeset browser WebView supaya dapat mengakses javascript, silakan tambahkan sourcecode berikut pada method onCreate:
[sourcecode language="java"]
WebSettings webSettings = mywebview.getSettings();
webSettings.setJavaScriptEnabled(true);
[/sourcecode]
Mengijinkan Pembaca Membuka Link pada Interface yang Sama
Jika anda ingin membuat pembaca selalu membuka link pada interface webview (launcher) anda, silakan tambahkan sourcecode berikut:
[sourcecode language="java"]
mywebview.setWebViewClient(new WebViewClient());
[/sourcecode]
Berikut adalah sourcecode lengkapnya. Sudah saya tambahkan kemampuan javascript, zoom, browsing klik dan toast selamat datang/loading:
[sourcecode language="java"]
package com.luthfiemka.emkawebidlauncher;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(getApplicationContext(), "Loading...", Toast.LENGTH_LONG).show();
//load emka.web.id
WebView mywebview = (WebView) findViewById(R.id.webView1);
mywebview.loadUrl("https://emka.web.id");
//enable javascript
WebSettings webSettings = mywebview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
//handling clicks
mywebview.setWebViewClient(new WebViewClient());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mywebview1.canGoBack()) {
mywebview1.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
[/sourcecode]
Download Sourcecode
Download full sourcecodenya disini: via SistemInformasi.biz.
Test dengan Eclipse. Selamat mencoba!
Sunday, March 17, 2013
Belajar PHP: Fungsi Mengubah Array menjadi Object
Kembali bersama tutorial Belajar PHP, kali ini kita akan belajar mengkonversi sebuah array menjadi sebuah Object. Tentang teori apa itu array apa itu object, silakan kuliah lebih lanjut tentang pemrograman/arsitektur komputer. Secara mudah, dalam PHP, contoh array misalnya:
[sourcecode language="php"]$a['content'][/sourcecode]
sedangkan object kita kenali misalnya:
[sourcecode language="php"]$a->content[/sourcecode]
Bagaimana caranya mengubah sebuah array menjadi Object?
Untuk mengubah array menjadi object cukup lakukan dengan perintah:
[sourcecode language="php"]
$namaobject = (object) $namaarraysasaran;
[/sourcecode]
atau lebih lengkap dengan snippet kecil berikut:
[sourcecode language="php"]
function array_to_object($array = array()) {
return (object) $array;
}
atau
function array_to_object($array = array()) {
if (!empty($array)) {
$data = false;
foreach ($array as $akey => $aval) {
$data -> {$akey} = $aval;
}
return $data;
}
return false;
}
[/sourcecode]
Dua fungsi diatas menghasilkan object yang sama, hanya berbeda pada caranya. Selamat mencoba :cendol
[sourcecode language="php"]$a['content'][/sourcecode]
sedangkan object kita kenali misalnya:
[sourcecode language="php"]$a->content[/sourcecode]
Bagaimana caranya mengubah sebuah array menjadi Object?
Untuk mengubah array menjadi object cukup lakukan dengan perintah:
[sourcecode language="php"]
$namaobject = (object) $namaarraysasaran;
[/sourcecode]
atau lebih lengkap dengan snippet kecil berikut:
[sourcecode language="php"]
function array_to_object($array = array()) {
return (object) $array;
}
atau
function array_to_object($array = array()) {
if (!empty($array)) {
$data = false;
foreach ($array as $akey => $aval) {
$data -> {$akey} = $aval;
}
return $data;
}
return false;
}
[/sourcecode]
Dua fungsi diatas menghasilkan object yang sama, hanya berbeda pada caranya. Selamat mencoba :cendol
Subscribe to:
Posts (Atom)