HTTP Port Forwarding
Kawan… Berikut konfigurasi sederhana untuk port forwarding di engine nya httpd (Apache HTTPD, IBM HTTP Server)
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so <VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off ServerName www.example.com ServerAlias example.com ProxyPass / http://localhost:8080/example/ ProxyPassReverse / http://localhost:8080/example/ </VirtualHost>
Semoga bermanfaat.
Pindah Sekolah
Kawans,
Sebuah keputusan extreem ku ambil tahun ini, keputusan yang beberapa kali beberapa tahun sebelumnya tidak berani ku ambil. Tahun ini ku putuskan untuk pindah kerja. Pindah kerja ini ku anggap ini pindah sekolah, karena menurutku selama masih kerja dengan orang lain, maka kita masih belajar. Lulusnya nanti saat kau sudah punya usaha sendiri 🙂
Kali ini “tempat sekolah” ku ada di daerah senayan, kota metropolitan Jakarta. Ilmu baru, keahlian baru, suasana baru, teman baru, kesibukan baru. Mudah-mudahan Allah SWT memberikan kemampuan, kesehatan agar diriku bisa beradaptasi, berkarya dengan lebih baik ditempat yang baru ini.
Keilmuan yang akan ku pelajari kali ini sedikit berbeda “alam”nya. Di sekolah yang baru ini nanti ku kenal AS400, berbeda dengan “alam” sebelumnya. Pertualangan akan dimulai, mudah2an banyak nanti yang bisa ku bagi dengan khalayak ramai…
Sekian dulu untuk hari ini…
Salam
The journey of thousand miles begins with one step -Lao Tzu-
HTTP Listener dengan netcat
Terkadang kita membutuhkan HTTP listener (seperti WebServer). Listener ini akan menerima HTTP get atau post yang dikirimkan oleh host lain yang mengarah ke HTTP listener kita. Untuk melakukan hal tersebut kita tidak perlu install “real” HTTP Server. Dengan berbekal netcat dan sedikit shell script, kita bisa membuat simple listener ini.
Kebetulan saya sedang ada keperluan untuk me-log semua stream HTTP yang dikirimkan dari host lain.
http_smslistener.sh:
#!/bin/bash
PORT=1234
while true; do
netcat -lp $PORT >> /pbx_u01/logs/sms.log < /opt/freeware/bin/index.html
done
Script diatas akan merespon setiap request HTTP yang masuk, dengan stream yang ada di index.html.
Semua request HTTP akan di log ke dalam file sms.log
index.html:
HTTP/1.0 200 OK
Content-Type: text/txt
Content-Length: 10
Sample http request via browser:
http://10.25.131.54:1234/mtpush?appsid=smsbanking&pwd=1234567&msisdn=628123456789&trx_date=20150318170257&sms=HelloWorld
sms.log:
GET /mtpush?appsid=smsbanking&pwd=1234567&msisdn=628123456789&trx_date=20150318170257&sms=HelloWorld HTTP/1.1
Host: 10.25.131.54:1234
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Sekian..semoga bermanfaat.
Salam,
Recreate temp tablespace + datafile Oracle
Tak terasa datafile temp tablespace development saya membengkak, memenuhi harddisk server development.
Untuk itu, saya “create” ulang temp tablespace nya, initiate dengan datafile yang ukurannya kecil.
Berikut step-stepnya:
Buat temp tablespace baru, untuk keperluan temporary
.
CREATE TEMPORARY TABLESPACE temp2;
Set temporary tablespace ke temp2 yang baru dibuat.
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;
Hapus temporary tablespace yang lama.
DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;
Buat temp tablespace baru
CREATE TEMPORARY TABLESPACE temp TEMPFILE '/pbx_u01/oradata/data1/DBMOBCOM/temp01.dbf' SIZE 256M REUSE AUTOEXTEND ON NEXT 128M MAXSIZE unlimited EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;Set default tablespace ke temp
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
Hapus temporary tablespace (temp2)
DROP TABLESPACE temp2 INCLUDING CONTENTS AND DATAFILES;
Semoga bermanfaat.
Salam
Repartisi/Reformat usbdisk (setelah usbdisk dipakai jadi installer Linux)
Setelah usbdisk dipakai untuk dijadikan installer linux, tentunya kita ingin memakai kembali untuk menyimpan data. Namun kita tidak bisa langsung menggunakan usbdisk yang sudah digunakan untuk Linux installer sebelumnya. Kapasitasnya menjadi tidak tepat (sesuai ukuran iso – bukan ukuran disk yg sebenarnya), partisi menjadi readonly, adanya partisi baru (GPT partition).
Usbdisk butuh dikembalikan lagi ke asalnya, dan berikut adalah step2 untuk mengembalikan ke kondisi semula:
- Buat label disk baru, untuk reset semua partisi yang ada. Misalkan dalam case ini disk yang saya pakai /dev/sdb.
parted /dev/sdb
mklabel msdos
- Buat partisi baru dengan tools apa saja. Saya menggunakan fdisk. Partisi yang akan dibuat hanya ada 1 primary partisi.
fdisk /dev/sdb
Command (m for help): pDisk /dev/sdb: 7801 MB, 7801405440 bytes
240 heads, 62 sectors/track, 1024 cylinders, total 15237120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000dc140Device Boot Start End Blocks Id System
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-15237119, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-15237119, default 15237119):
Using default value 15237119
Partition 1 of type Linux and of size 7.3 GiB is setCommand (m for help): t
Selected partition 1
Hex code (type L to list codes): C
Changed system type of partition 1 to c (W95 FAT32 (LBA))Command (m for help): w
The partition table has been altered!
- Format partisi yang sudah dibuat sebelumnya (/dev/sdb1 dalam case saya).
mkfs.msdos /dev/sdb1
Semoga bermanfaat, sekian dan terimakasih.
Note: do at your own risk 🙂
JBoss-seam double datasource
Suatu hari anak muda mendapat tugas membuat sopwer yang menggunakan dua database. Yang satu menggunakan MySQL dan satu lagi Oracle. Sang anak muda sudah terbiasa menggunakan seam-framework dan akan menggunakan seam juga untuk membuat program yang ditugaskan.
Datasource yang pertama digunakan untuk main data transaction (smsgw), sedangkan datasource yang kedua digunakan sekedar baca (mbmcDatasource). Berikut adalah langkah2 yang dilakukan oleh anak muda dalam menggunakan dua datasource di seam-projectnya:
- Definisikan datasource di *-ds.xml
<local-tx-datasource>
<jndi-name>smsgwDatasource</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/smsgw</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>smsgw</user-name>
<password>rahasia</password>
</local-tx-datasource><no-tx-datasource>
<jndi-name>mbmcDatasource</jndi-name>
<connection-url>jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:ORACLESID</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>root</user-name>
<password>rahasia</password>
</no-tx-datasource> - Definisikan entity manager di component.xml
<persistence:managed-persistence-context name=”entityManager”
auto-create=”true”
entity-manager-factory=”#{smsgwEntityManagerFactory}”/>
<persistence:entity-manager-factory name=”smsgwEntityManagerFactory”
persistence-unit-name=”smsgw”/>
<persistence:managed-persistence-context name=”mbmcEntityManager”
auto-create=”true”
entity-manager-factory=”#{mbmcEntityManagerFactory}”/>
<persistence:entity-manager-factory name=”mbmcEntityManagerFactory”
persistence-unit-name=”mbmc”/> - Definisikan jndi datasource nya di persistence-*.xml
<persistence-unit name=”smsgw” transaction-type=”JTA”>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/smsgwDatasource</jta-data-source>
<properties>
<property name=”hibernate.dialect” value=”org.hibernate.dialect.MySQLDialect”/>
<!– property name=”hibernate.hbm2ddl.auto” value=”update”/–>
<property name=”hibernate.show_sql” value=”true”/>
<property name=”hibernate.format_sql” value=”true”/>
<property name=”hibernate.transaction.manager_lookup_class” value=”org.hibernate.transaction.JBossTransactionManagerLookup”/>
<property name=”hibernate.connection.release_mode” value=”after_transaction”/>
</properties>
</persistence-unit><persistence-unit name=”mbmc” transaction-type=”RESOURCE_LOCAL”>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:/mbmcDatasource</non-jta-data-source>
<properties>
<property name=”hibernate.dialect” value=”org.hibernate.dialect.Oracle10gDialect”/>
<property name=”hibernate.show_sql” value=”true”/>
<property name=”hibernate.format_sql” value=”true”/>
<property name=”jboss.entity.manager.factory.jndi.name” value=”java:/mbmcEntityManagerFactory”/>
<property name=”hibernate.connection.release_mode” value=”after_transaction”/>
</properties>
</persistence-unit>
4. Untuk menggunakan masing-masing entityManager, sang anak muda cukup menggunakan anotasi lookup @In yang dimiliki oleh seamframework.
—SomeWhere.java–
@In
private EntityManager entityManager;
@In
private EntityManager mbmcEntityManager;
Seingat anak muda itulah step2 yang dilakukannya. Semoga bermanfaat. Salam.
Override HTTP to HTTPS and Close HTTP TRACE
Override HTTP to HTTPS:
LoadModule rewrite_module modules/mod_rewrite.so RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Close HTTP TRACE:
RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F] RewriteCond %{REQUEST_METHOD} ^TRACK RewriteRule .* - [F]
Bikin sekrip untuk inspek sistem
Kali ini ane mau bikin sekrip untuk mengetahui kondisi load memori, CPU dan IO disk di sistem linux. Kebetulan ane dapet tugas meneliti kondisi serper di client. Kali2 aje dikemudian hari berguna, begini sekripnye:
1. Sekrip untuk ngetahuin load CPU dan memori di linux Box. Sekrip ini cuma ngeliat top proses yang makan paling banyak (kagak semua).
#!/bin/bash
LOG_FILE="/home/hameed/Documents/WORK/CAT/script/topLog.txt"
echo "===================="`date +"%d-%m-%y"`"===================" >> $LOG_FILE
/usr/bin/top -n 1 -b | head -n20 >> $LOG_FILE
echo "=============================================" >> $LOG_FILE
echo "" >> $LOG_FILE
2. Sekrip buat ngetahuin load IO disk. Khusus buat sekrip yang eni, die make tools tambahan..namenye iostat.
#!/bin/bash
LOG_FILE="/home/hameed/Documents/WORK/CAT/script/iostatLog.txt"
INTERVAL=15
iostat -xtd $INTERVAL >> $LOG_FILE
Sekrip-sekrip ini masih culun dan sederhana banget. Ntar2 klo ade keperluan lebih, ane update tulisannye ye. Kurang lebih ane minta maaf, Wabillahi Taufik Wal Hidayat, Wassaalamu’alaikum.Wr.Wb.
Ragam JAVA_OPTS untuk optimasi
Berikut ini opsi-opsi JAVA_OPTS yang bisa digunakan untuk optimasi memori yang digunakan oleh JVM.
-Xms
, mengatur besar inisialisai heap memori-Xms
, mengatur maximum heap memori-XX:MaxPermSize
, mengatur besaran heap space yang tidak akan kena gargage collector (GC)-XX:+UseParallelGC
, secara default JVM menggunakan GC dalam satu thread, namun dengan opsi ini GC bisa dijalankan dalam beberapa thread.-XX:+AggressiveHeap
, lebih optimal untuk long-running dan alokasi memori yang lumayan sering.
Sekian..semoga bermanfaat
Remote debugging di Eclipse
Bismillahirrahmaanirrahiim…
Udah lama tak terasa sekian tahun blog ini tak kukunjungi (haha, gaya kali kau meed). Kali ini aku ingin menuliskan tentang cara konfigurasi remote debugging di Eclipse. Biar gak lupa..ku tuliskan saja disini, maklumlah boi aku ini agak2 payah dalam hal ingat-mengingat.
1. Tambahkan baris berikut di bagian parameter run-script dari aplikasi yang akan di debug:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=[PORT_NUMBER]
Sebagai contoh, yang akan didebug adalah aplikasi yang berjalan di JBoss (localhost). Maka di run-script JBoss nya kita tambahkan parameter diatas.
Sebagai contoh, nomor port yang akan digunakan oleh java agent sebagai “pintu masuk” debug adalah 9998. Nambahin parameternya tidak mutlak dari UI JBoss configuration yg ada di eclipse, ini cuma contoh saja. Dalam penerapan nanti bisa saja parameter di atas di tambahkan di dalam run.sh/run.bat ataupun run script bikinan sendiri.
2. Buat konfigurasi debug baru. Pillih menu Run->Debug configuration..lalu akan muncul form “Debug Configuration”.
Double click menu “Remote Java Application”, nanti akan ada form new debug configuration. Di bagian port, sila definisikan port mana si agent debug akan connect, di source project mana konfigurasi ini akan bekerja. Dari screenshot di atas, debug agent akan connect ke port 9998. Host bisa saja berupa komputer lain, namun pada contoh ini aplikasi yang akan didebug adalah di localhost.
Konfigurasi remote debugging sudah selesai. Kita bisa jalankan aplikasi yang akan didebug. Pastikan tidak ada firewall yang memblok port yang digunakan. Untuk melakukan debugging, pilih menu gambar kutu yang ada di toolbar eclipse, lalu pilih nama dari debug configuration yang telah didefinisikan pada point 2. Atau bisa melalui menu Run->Debug Configuration->Remote Java Application->[NAMA DEBUG CONFIGURATION]->debug.
Selesai – Semoga bermanfaat 🙂
Recent Comments