Sunday, March 18, 2018

Anko Library - Part 2

Pada pembahasan kali ini , saya akan membrikan informasi kemudahan apa saja yang ditawarkan oleh anko library.

Anko Library mempunyai beberapa fitur diantaranya :
  • Module Layout : Module yang berisikan untuk mengatur layout pada suatu tampilan UI di aplikasi android yang di buat
  • Module Common : Module yang berisikan interaksi antara activity satu dengan lainnya. Hal ini beriskan seperti Intent, Alert, dan Toast
Kita akan mulai membahas Anko Module Layout . Disini saya akan membuat perbandingan dalam pembuatan layout android dengan menggunakan anko dan tanpa menggunakan anko :

Before Anko - Layout
After Anko - Layout

Jika kita lihat perbedaannya , pada after anko library hanya melakukan deklarasi fungsi verticalLayout{} saja lalu diisikan attribut yang dibutuhkan , sementara before anko kita harus membuat objek terlebih dahulu dan agak rumit untuk menambahkan atribut - atribut yang diinginkan

Kemudian kita beralih ke Anko Module - Common , seperti yang saya jelaskan diatas , module common terdapat beberapa fungsi : Intent , Alert, Toast, kita akan membuat perbandingan pada fungsi tersebut dengan menggunakan anko dan tanpa menggunakan anko.


Pada Fungsi Intent berikut perbandingannya :

Before Anko - Intent
After Anko - Intent

Jika kita lihat perbedaanya , dengan menggunakan Anko library , kita hanya mendeklarasikan activity mana yang akan dituju, sementara tanpa Anko Library , kita harus menyatakan Activity awal dan Activity yang akan dituju

Pada Fungsi Toast berikut perbandingannya:

Before Anko - Toast
After Anko - Toast

Jika kita lihat perbedaanya , dengan menggunakan Anko library , kita hanya mendeklarasikan fungsi toast() saja , tetapi tanpa Anko Library , kita harus membuat objek toast terlebih dahulu dan melakukan setting pada bagian attibut toas seperti context, text , dan duration .

Pada Fungsi Alert berikut perbandingannya :

Before Anko - Alert

After Anko - Alert

Jika kita lihat perbedaanya sangat terlihat , jika tidak menggunakan Anko Library , akan lumayan sulit untuk membuat alert , selain harus membuat objek alert itu sendiri, sangat banyak dalam melakukan setiing atribut yang dibuat, sementara dengan Anko Library - Alert , kita tinggal memanggil fungsi alert{}, dan sangat minim utk setting attributnya , jika dilihat hanya beberapa atribut: title , message, positive button.

Setelah kita melakukan perbandingan , kita bisa mengetahui bahwa Anko Library memberi banyak kemudahan dalam pembuatan dalam membuat suatu UI aplikasi android, dan dapat menghemat waktu kita dalam pembuatan UI . Demikian penjelasan mengenai Anko Library , Semoga bermanfaat.

Referensi
  • https://medium.com/@v.souhrada/introduction-to-anko-for-android-part-1-6178d536cbe6
  • https://medium.com/@v.souhrada/introduction-to-anko-for-android-part-2-9ba043baf9c0
  • https://medium.com/@v.souhrada/introduction-to-anko-for-android-part-3-a14ddcd7c1ae
  • https://github.com/Kotlin/anko/wiki


Nginx Reverse Proxy

Halo Sobat Nostra,
Kali ini saya akan berbagi tutorial bagaimana membuat nginx sebagai reverse proxy untuk apache web server dibelakangnya. K
ita dapat menggabungkan 2 webserver pada satu vps yang mana nantinya Nginx sebagai front end (sebagai web server statis) sedangkan Apache sebagai back end (pemroses).

Nginx adalah server HTTP dan reverse proxy gratis berbasis open-source berkemampuan tinggi. Perangkat lunak ini diciptakan oleh Igor Sysoev pada tahun 2002, dan dirilis untuk pertama kalinya secara umum pada tahun 2004. Nginx terkenal karena performanya yang tinggi, stabil, memiliki banyak fitur, mudah dikonfigurasi, dan menggunakan sedikit sumberdaya pada server.

Sebenarnya jenis proxy tersebut adalah Forward Proxy. Sebaliknya, ada jenis Proxy yang berjalan dari sisi lainnya yaitu sisi server, Web Server lebih tepatnya, dan inilah yang dimaksud dengan Reverse Proxy. 

Pada tutorial ini kita akan menggunakan os Centos 7.x. yang di dalamnya sudah terpasang apache/httpd.

Karena default repo pada mesin tidak ada paket nginx, maka perlu menambahkan EPEL.
yum update && yum install epel-release

Ubah konfigurasi apache/http sebelum menginstall nginx.
vim /etc/httpd/conf/httpd.conf

Ubah port 80  menjadi listen port 8080 dan 8081 untuk digunakan web 1 dan web 2 nantinya.
Listen 8080
Listen 8081

Lalu tambahkan rule dibawah ini pada file httpd.conf, letakkan paling bawah. Kita membuat virtual host untuk web 1 dengan port 8080 dan virtual host web2 dengan port 8081.
<VirtualHost *:8080>
    ServerName horas.tk
    ServerAlias web1.horas.tk
    DocumentRoot /var/www/html/web1/
    ErrorLog /var/www/html/web1/error.log
    CustomLog /var/www/html/web1/requests.log combined
</VirtualHost>

<VirtualHost *:8081>
    ServerName horas.tk
    ServerAlias web2.horas.tk
    DocumentRoot /var/www/html/web2/
    ErrorLog /var/www/html/web2/error.log
    CustomLog /var/www/html/web2/requests.log combined
</VirtualHost>

Jika sudah selesai save konfigurasi tersebut. Selanjutnya kita akan menginstall nginx.
yum install nginx

Kemudian edit file nginx.conf
vim /etc/nginx/nginx.conf

Beri tanda command seperti dibawah ini untuk menonaktifkan rule default konfigurasi nginx.

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

#    server {
#        listen       80 default_server;
#        listen       [::]:80 default_server;
#        server_name  _;
        #root         /usr/share/nginx/web;

#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;

#        location / {
#        }
#        error_page 404 /404.html;
#            location = /40x.html {
#        }

#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

Buat konfigurasi baru nginx

vim /etc/nginx/nginx.conf

Isi file tersebut dengan rule dibawah ini.
server {
    client_max_body_size 40M;
    listen 80;
    server_name web1.horas.tk;

        location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://web1.horas.tk:8080;
        proxy_redirect off;
        }
}

server {
    client_max_body_size 40M;
    listen 80;
    server_name web2.horas.tk;
location / {
 proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://web2.horas.tk:8081;
        proxy_redirect off;
        }
}

Restart kembali service httpd dan nginx


service httpd restart && service nginx restart

Untuk memastikannya port sudah listen dapat menggunakan perintah dibawah ini.
[root@node1 land]# netstat -ntlupa|grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      30275/nginx: master
tcp        0      0 10.148.0.4:47668        169.254.169.254:80      ESTABLISHED 888/python
tcp        0      0 10.148.0.4:47654        169.254.169.254:80      ESTABLISHED 885/python
tcp        0      0 10.148.0.4:22           103.47.132.16:54780     ESTABLISHED 30690/sshd: land [p
tcp        0      0 10.148.0.4:47664        169.254.169.254:80      ESTABLISHED 889/python
tcp        0      0 10.148.0.4:47644        169.254.169.254:80      CLOSE_WAIT  888/python
tcp6      0      0 :::8080                 :::*                    LISTEN      30038/httpd
tcp6      0      0 :::8081                 :::*                    LISTEN      30038/httpd


Selanjutnya kita bisa mengecek via browser web1.horas.tk



Tampilan web2.horas.tk


Sekian tutorial dari saya, semoga bermanfaat :)

Anko Library - Part 1

Apa itu Anko Library ?  merupakan library untuk mempermudah dalam membuat suatu tampilan UI dalam proses pembuatan aplikasi android , dengan adanya library ini , code code yang seharusnya banyak kita tulis dapat di bentuk menjadi lebih ringkas .

Sebelum kita membahas fitur - fitur apa saja yang dtawarkan oleh anko library ada baiknya kita tahu cara melakukan instalasi kedalam android studio terlebih dahulu . Pada android studio terdapat  build,gradle dan tambahkan beberapa code seperti gambar dibawah ini :


Jika dilihat lebih detail saya memasukan code  "ext.anko_version = '0.9.1' pada bagian buildscript. Ini akan membuat trigger agar android studio bisa mengambil depedency anko libary yang ada . jika sudah kita masuk ke bulid.gradle(app) , masukan code berikut seprti gambar dibawah ini :


Pada bagian ini kita masukan code di depedency yaitu :
  • "org.jetbrains.anko:anko-sdk15:$anko_version"
  • "org.jetbrains.anko:anko-support-v4:$anko_version"
  • "org.jetbrains.anko:anko-appcompat-v7:0.9.1"
Jika sudah kita pada bagian gradle kita lakukan "sync" , ini untuk membuat anko bisa terinstal kedalam android studio sesuai dengan code code pada grdle yang sudah kita masukan .

Kemudian untuk mecoba anko pertama kali , kita akanm mempersiapkan file file berikut
  • ids.xml                 : dibuat dalam folder values
  • SignInActivity.kt : dibuat dalam folder java
  • SignInView.kt      : dibuat dalam folder java
Pada file ids.xml berisi code seperti gambar dibawah ini :


Dalam file ini berisikan id yang akan di deklarasikan dan digunakan dalam activity-nya nanti , tanpa ada file ini kita tidak akan  bisa menggunakan id , hal ini akan terlihat pada file SignInView.kt nanti.

Jika sudah kita buat file SignInActivity.kt yang berisikan code seperti gambar dibawah ini :


Dalam file SignInActivity berisikan kode untuk menyatakan layout atau tampilan yang ada terdapat pada SignInView.kt . Hal itu terlihat pada code di baris 12

Kemudian kita buat file SignInView.kt yang berisikan code seperti gambar dibawah ini :


Dalam file SignInView berisikan beberapa hal yang akan saya jelaskan sebagai berikut :
  • Pada baris ke -14 , terdapat AnkoComponent<SignInActivity>, ini yang akan menghubungkan  antara file SignView.kt dengan SignActivity.kt sehingg bisa berinteraksi satu sama lain

  • Pada baris ke - 17 terdapat verticalLayout{}, dengan anko semudah ini kita membuat layout vertical dalam membuat code , jika kita mau atur heigh dan weight pada layout tinggal kita atur dengan menambahkan fungsi lparams() , ini dapat dilihat pada baris - 18

  • Pada baris ke - 18 terdapat editText{}, dengan anko semudah ini kita membuat edit text , jika dilihat,terdapat beberapa attibute yaitu id, hintResource, dan textSize, dan kita hanya mengetikkan attribute yang ada dengan mudah seperti gambar di atas. Jika dilihat id pada edit text adalah hasil deklarasi pada file ids.xml

  • Pada baris ke - 34 terdapat Button{}, dengan anko semudah ini kita membuat button ,dan sama seperti editText kita bisa menambahkan beberapa atribut pada buttn seperti gambar diatas
Oh iya satu lagi , kita ada tambah code pada file MainActivity.kt , dapat dilihat pada gambar dibawah ini:


Dalam file MainActivity.kt , jika dilihat pada baris ke - 15, terdapat startActivity(Intent(this,
SignInActivity::class.java)), artinya MainActivity.kt akan langsung menuju file SignInActivty.kt.
Jadi cara kerja aplikasi ini sebagai berikut :
  • MainActivity.kt akan langsung berpindah ke activity lainnya yaitu SignInActivity.kt
  • Lalu SignInActivty.kt akan me-render SignInView.kt sebagai tampilan UI nya tersebutJika sudah dan kita "run" aplikasi yang kita buat maka akan keluar output seperti ini :

Selamat kita udah behasil membuat aplikasi menggunakan Anko Librray , Mudah bukan ?,
selanjutnya saya akan membahas ada fitur apa saja yang terdapat di anko  pada part berikutnya

Referensi
  • https://medium.com/@v.souhrada/introduction-to-anko-for-android-part-1-6178d536cbe6
  • https://medium.com/@v.souhrada/introduction-to-anko-for-android-part-2-9ba043baf9c0
  • https://medium.com/@v.souhrada/introduction-to-anko-for-android-part-3-a14ddcd7c1ae
  • https://github.com/Kotlin/anko/wiki


Calculate String Value

Yeeii,, akhirnya nulis blog lagi setelah vakum beberapa bulan ga nulis. Kali ini saya mau bahas mengenai cara mengkalkulasi nilai sebuah string yang berisi sebuah rumus aritmatika.

Langsung aja ya, sebagai contoh saya mempunyai sebuah data dari table database yang berisi rumus perhitungan dan saya ingin menampilkan hasil dari perhitungan tersebut.
Contoh string yang digunakan hasil query dari database seperti =

String test = (10000000 * ( 10000000 / 1000))
Ekspektasi result = 100000000000

Untuk menjumlahkan nilai di atas library yang akan digunakan adalah :



Berikut java yang dapat digunakan untuk mendapatkan hasil perthitungannya “


Hasilnya seperti dibawah ini :



Jangan lupa di convert dengan string format seperti dibawah ini agar sesuai dengan ekspektasi resultnya.



Hasilnya akan seperti ini, sudah sesuai kan.



Sekian tulisan saya kali ini semoga membantu untuk orang lain dan yang penting untuk saya sendiri.


Salam




Create User using LDAP Adapter in SOA BPEL

Halo guys,
Pada kesempatan ini, kita akan membahas mengenai cara create user dengan LDAP Adapter pada SOA BPEL. Sebelumnya apa itu LDAP?
LDAP (Lightweight Directory Access Protocol) merupakan suatu protocol yang dapat mengakses suatu directory misalnya directory telepon, directory email suatu perusahaan atau informasi lainnya dengan jaringan internet. Nah, pada LDAP ini kita tidak hanya dapat membaca informasi tetapi kita juga bisa menambah atau mengupdate informasi tersebut.
SOA (Service Oriented Architecture) adalah sebuah permodelan perangkat lunak yang dibangun dengan pendekatan service oriented

Sekarang, mari kita mulai
  • Buka aplikasi JDeveloper
  • Create new SOA Aplication and Project

  •  Configuring LDAP Adapter

    Create ldap adapter dengan klik kanan pada external reference
     Pada page selanjutnya, kita pilih simbol tambah(+) untuk membuat koneksi ldap
     Pilih nama jndi yang sudah di daftarkan pada aplikasi weblogic console 
     

    Pilih operation "Add" dan pilih inetOrgPerson, person, top, organizationalPerson

     
    Untuk menambahkan entity pada LDAP, kita akan memilih beberapa object class seperti dn, sn, uid, userPassword. Kita juga bisa menambahkan informasi lain seperti postalCode, displayName, email, title dan lain sebagainya. 
    DN (Distinguished Name) merupakan unique name yang dapat mengidentifikasi dari hierarki ldap. contoh, dn= uid = nostra,ou=People, dc=nostra,dc=com


  • Create BPEL Process

    Agar ketika pengujian lebih gampang dalam pengisian DN, untuk inputan DN kita concat dengan uid yang akan di input. concat('uid=',$inputVariable.payload/ns2:requestAttributes/ns2:uid/ns2:value,',ou=People, dc=nostra,dc=com')

    Nah sekarang sudah selesai, dan siap dilakukan pengujian

    Reference:
  • http://www.proweb.co.id/articles/ict/ldap.html
  • http://www.aligelenler.com/2014/10/configuring-and-using-ldap-in-soa.html
  • http://javaoraclesoa.blogspot.co.id/2014/08/oracle-soa-suite-12c-ldapadapter-quick.html