Service Window

Cara membuat service diwindow:

sc create "<nama_service>" binPath= "<path\to\file>"

Merubah dependency service:

sc config "<nama_service>" depend= "<nama_service_dependen>"

Masalah XAMPP

Tadi ada masalah pada proses instalasi XAMPP 1.7.7 pada windows, apache tidak bisa start, saya cek pesan errornya pada error.log yang ada di C:\xampp\apache\logs begini:

\nCompilation failed in require at C:/xampp/perl/site/lib/ModPerl/Const.pm line 18.
\nBEGIN failed--compilation aborted at C:/xampp/perl/site/lib/ModPerl/Const.pm line 18.
\nCompilation failed in require at C:/xampp/perl/site/lib/Apache2/Const.pm line 18.
\nBEGIN failed--compilation aborted at C:/xampp/perl/site/lib/Apache2/Const.pm line 18.
\nCompilation failed in require at C:/xampp/apache/conf/extra/startup.pl line 9.
\nBEGIN failed--compilation aborted at C:/xampp/apache/conf/extra/startup.pl line 9.
\nCompilation failed in require at (eval 2) line 1.\n

setelah cari-cari tanya-tanya mbah google ketemu blog yang membahas masalah yang sama, pada alamat: http://gotopa.blog.com/2011/12/13/apache-oracle-10g-dan-xampp-bentrok/,

Solusi nya begini:
pada file http-perl.conf yang ada di C:\xampp\apache\conf\extra
pada baris ketiga tambahkan baris berikut:

PerlSwitches -T

file lengkapnya jadi begini:

LoadFile "C:/xampp/perl/bin/perl510.dll"
LoadModule perl_module modules/mod_perl.so
PerlSwitches -T
PerlPostConfigRequire "C:/xampp/apache/conf/extra/startup.pl"
...

setelah di coba ternyata memang benar masalah terpecahkan… ūüėÄ

nsr.cls.MoneyField

Ext.ns("nsr.cls");
nsr.cls.MoneyField = Ext.extend(Ext.form.TextField, {
	fieldFormat: '0/i'
	,value: 0
	,constructor:function(config) {
		config = config || {};
		nsr.cls.MoneyField.superclass.constructor.call(this, config);
	}
	,initComponent:function() {
		var config = {};
		this.buildConfig(config);
		Ext.apply(this, Ext.apply(this.initialConfig, config));
        nsr.cls.MoneyField.superclass.initComponent.apply(this, arguments);
	}
	,buildConfig: function(config){
		config.maskRe 			= /[0-9\,]/;
		config.decimalSeparator	= ',';
	}
	,onBlur : function(){
		nsr.cls.MoneyField.superclass.onBlur.call(this);
		var value = this.el.dom.value;
        value = value.replace(/\,/, '.');
        value = Ext.util.Format.number(value, '0.' + this.fieldFormat);
        this.el.dom.value = value==''?0:value;
	}
	,onFocus : function(){
		nsr.cls.MoneyField.superclass.onFocus.call(this);
		var value = this.el.dom.value;
        value = value.replace(/[^0-9\,]+/g,'');
        value = value.replace(/\,/, '.');
        value = Number(value);
        value = Ext.util.Format.number(value, this.fieldFormat);
        this.el.dom.value = value;
	}
	,setValue : function(v){
		nsr.cls.MoneyField.superclass.setValue.call(this, v);
		var value = v;
        value = Ext.util.Format.number(value, '0.' + this.fieldFormat);
        this.el.dom.value = value==''?0:value;
    }
    ,getValue : function(){
    	var v = this.el.getValue();
        if(v === this.emptyText || v === undefined){
            v = '';
        }
        v = v.replace(/[^0-9\,]+/g,'');
        v = v.replace(/\,/, '.');
        v = Number(v);
        return v;
    }

});
Ext.reg('moneyfield', nsr.cls.MoneyField);

Contoh penggunaan:

xtype: 'moneyfield',
fieldLabel: 'Kurs',
name: 'Kurs',
maxLength: 50,
disabled: true,
allowBlank:false,
anchor:'-5',
fieldFormat: '0,00/i',
ref: '../../txtKursSumber'

Install Subversion pada Ubuntu 11.04

  1. download paket terbaru svn
    • apt-get install subversion
  2. downlad install apache, disini sbenarnya saya sudah menginstall apache via xampp, tapi karena yang kita butuhkan dsini adalah library apache-svn maka kita perlu update dengan menginstal apache lagi
    • apt-get install apache2
    • apt-get install libapache2-svn
  3. copy file library ke directory xampp
    cp /usr/lib/apache2/modules/mod_authz_svn.so /opt/lampp/modules/
    cp /usr/lib/apache2/modules/mod_dav_svn.so /opt/lampp/modules/
    
  4. edit configurasi apache
    • sudo gedit /opt/lampp/etc/httpd.conf
    • tambahkan baris ini:
      LoadModule dav_svn_module modules/mod_dav_svn.so
      LoadModule authz_svn_module modules/mod_authz_svn.so
      
      # Untuk memperbolehkan list project yang akan publish
      <Location /svn>
      DAV svn
      SVNParentPath /home/arul/svn
      SVNListParentPath On
      AuthType Basic
      AuthName "Subversion Repository"
      AuthUserFile /etc/subversion/passwd
      <LimitExcept GET PROPFIND OPTIONS REPORT>
      Require valid-user
      </LimitExcept>
      </Location>
      
      # Untuk project terbataas
      <Location /svn/myproject>
      DAV svn
      SVNPath /home/svn/myproject
      AuthType Basic
      AuthName "myproject subversion repository"
      AuthUserFile /etc/subversion/passwd
      <LimitExcept GET PROPFIND OPTIONS REPORT>
      Require valid-user
      </LimitExcept>
      </Location>

Sampai disini proses instalasi selesai, berikut cara membuat repository:

  1. Membuat svn repository

    mkdir /home/arul/svn/myrepo
    sudo svnadmin create --pre-1.6-compatible /home/arul/svn/myrepo   #menggunakan --pre-1.6-compatible, untuk mengatasi bugs compatibiliti version, yang berefek pada commit yang gagal
    cd /home/arul/svn
    sudo chown -R www-data:subversion myrepo
    sudo chmod -R g+rws myrepo
    
  2. set password akses

    sudo htpasswd -c /etc/subversion/passwd <user_name>  # awal setup
    sudo htpasswd /etc/subversion/passwd <user_name_2>  # user kedua
    cat /etc/subversion/passwd  # list user
    
  3. akses repo:

    svn co http://localhost/svn/myrepo myrepo --username 

Ubuntu server:

#Install library apache svn
sudo apt-get install libapache2-svn

#edit file config /etc/apache2/sites-enabled/000-default atau yang https 000-default-ssl
#tambahkan baris berikut untuk setiap project svn
<Location /svn/simpan>
  DAV svn
  SVNPath /var/svn/simpan
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/passwords
  Require valid-user
</Location>


#create user awal
sudo htpasswd -cb /etc/apache2/passwords myuser mypasswd

#Tambah user 
sudo htpasswd -b /etc/apache2/passwords myuser mypasswd

#restart apache
sudo /etc/init.d/apache2 force-reload

Setting Modem Venus VT 18 Multi Di Ubuntu 11.04

Hasil dari googling dan baca blog sebelah, ditambah riset-riset dikit hehehe
Cara manual:

  1. Pada saat usb ditancapkan ke port jalankan perintah berikut:
    lsusb

    Perintah tersebut akan mengembalikan list port usb yang digunakan.

  2. Cari port sesuai dengan modem yang kita gunakan dalam hal ini adalah VENUS VT-18,
    dmesg | grep "CD-ROM"
  3. Eject port tersebut dengan mengetikkan printah:
    sudo eject /dev/sr1
  4. Sekarang lihat alamat port usb akan berubah, dengan cara mengetikkan perintah berikut:
    sudo modprobe usbserial vendor=0x1bbb product=0x0012
  5. Selesai configurasi terminal langsung saja ke menu System -> preferences -> network connections, untuk memasukkan konfigurasi koneksi modem kita

Cara otomatis

  1. Edit file /etc/modules, ini adalah file yang berisi baris perintah yang akan dieksekusi pada saat startup:
    sudo gedit /etc/modules
  2. Masukkan text berikut:
    usbserial vendor=0x1bbb product=0x0012

    jika yakin belum ada baris tersebut bisa dengan mengetikkan langsung pada console tanpa harus menggunakan gedit:

    sudo echo usbserial vendor=0x1bbb product=0x0012 >> /etc/modules
  3. Atur supaya usb cdrom yang teraktifkan langsung dieject dengan perintah berikut:
    sudo gedit /lib/udev/rules.d/61-mobile-action.rules

    Masukkan kode berikut:

    "ACTION=="add", ENV{ID_CDROM}=="1", ENV{ID_VENDOR_ID}=="05c6", ENV{ID_MODEL_ID}=="1000", RUN+="/usr/bin/eject %k"
  4. Atau bisa juga tanpa melalui gedit:
    sudo echo ACTION==\"add\", ENV{ID_CDROM}==\"1\", ENV{ID_VENDOR_ID}==\"05c6\", ENV{ID_MODEL_ID}==\"1000\", \
    RUN+=\"/usr/bin/eject %k\" >> /lib/udev/rules.d/61-mobile-action.rules
  5. Dengan perubahan-perubahan tersebut maka modul driver usb modem venus vt-18 evdo multi akan dimuat setiap kali ditancapkan, dengan catatan: Modul driver usb-storage harus tidak termuat/tidak aktif pada waktu ditancapkan. modul driver ini otomatis termuat setiap kali kita menancapkan media ke usb. untuk menonaktifkan modul driver yang telah termuat, setelah tidak satu pun media terpasang di usb (semua dilepas dulu), lalu di terminal lakukan perintah:
    sudo rmmod usb-storage

    atau

    sudo modprobe -r usb-storage
  6. Apabila usb modem dipasangin memori card (mmc) dan ingin memuat memori cardnya sebagai usb-storage maka setiap akan menancapkan usb modem ini, matikan / unload dulu modul driver modemnya dengan perintah di terminal:
    sudo rmmod usbserial

    atau

    sudo modprobe -r usbserial

    setelah memori cardnya terdeteksi dan dimuat baru aktifkan modul driver modemnya dengan perintah di terminal:

    sudo modprobe usbserial vendor=0x1bbb product=0x0012
  7. Kadang-kadang koneksi gagal meskipun driver sudah termuat dengan sukses. sekali gagal atau terputus biasanya tidak bisa dikoneksikan kalau tidak dicabut dulu. konsekuensinya adalah usb modem harus dicabut dulu, diunload modul driver usb-storagenya, baru ditancap lagi. kalau mmcnya mau diload juga konsekuensinya adalah setelah usb modem dicabut maka modul driver modemnya juga harus diunload, selanjutnya diload lagi setelah usb modem ditancapkan dan dikenali memori cardnya.

Menggunakan wvdial

  1. Sebelum menggunakan tool ini haru diinstal terlebih dahulu dengan cara:
    sudo apt-get install wvdial
  2. Konfigurasikan modem dengan perintah
    sudo wvdialconf
  3. Edit konfigurasi yang terbentuk dengan perintah:
    sudo gedit /etc/wvdial.conf
  4. Edit isi file tersebut dengan paramter berikut:
    [Dialer Defaults]
    Init1 = ATZ
    Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
    Modem Type = Analog Modem
    Phone = #777
    ISDN = 0
    Password = smart
    New PPPD = yes
    Username = smart
    Modem = /dev/ttyUSB1
    Baud = 9600
    Stupid Mode = on
    Auto Reconnect = on
    Carrier Check = no
  5. Colok modem dan connect dengan perintah:
    sudo wvdial

    maka akan terbentuk koneksi secara otomatis

5 Penyebab Tidak Produktif

Produktif,  produktivitas,  produktiviti, kata-kata tersebut sering kita dengar sehari-hari khususnya di dalam dunia kerja. Memang produktifitas itu merupakan satu faktor penting dalam kehidupan sehari-hari kita, tak peduli anda blogger, pekerja kantoran, atau pelajar.  Pernahkah kita merasakan, kita telah berbuat sesuatu tetapi seakan-akan kita tidak berbuat dengan yang sebaik-baiknya? Tentu kita akan merasakan kekecewaan. Produktiviti memang menjadi suatu hal yang amat susah dicapai meskipun kita diamati atau diawasi oleh atasan kita, apalagi jika kita bekerja di rumah dan tidak ada siapapun yang mengatur atau mengamati pekerjaan kita. Kita harus tahu apa penyebab produktifitas kita menurun atau kita merasa tidak produktif selama ini, berikut ini ada 5 penyebab tidak produktif yang mungkin bisa menjadi renungan kita:

Pertama: Kita Mudah Tidak Fokus

Hal ini biasanya tergantung pada diri kita sendiri, adakalanya kita cepat tidak fokus ketika kita sedang melakukan sesuatu dan tiba-tiba ada chatting dari kawan atau ada telepon dari kawan, kita jadi tidak fokus apa yang sedang kita lakukan sebelumnya. Jika kita merupakan orang yang mudah tidak fokus pada sesuatu, cobalah untuk menjauhi dari penyebab-penyebabnya, misal matikan handphone ketika kita sedang fokus mengerjakan pekerjaan atau cari tempat yang bisa membuat kita dapat bertumpu pada fokus pekerjaan kita.

Kedua: Gaya Hidup yang Tidak Sehat

Mungkin kita tidak menyadari telah menjalani gaya hidup yang tidak sehat seperti waktu tidur yang tidak cukup karena semalaman blogwalking atau jalan-jalan diluar. Apalagi jika kita bekerja sendri tidak ada atasan yang menegur, kita bisa bekerja kapanpun tetapi perlu di ingat bahwa kesegaran dan kesehatan kita berkaitan erat dengan kemampuan fungsi otak kita. Jika badan tidak sehat, kita pun susah untuk berfikir apalagi meningkatkan produktivitas kita.

Ketiga: Kita membenci apa yang kita lakukan

Ketika kita tidak mempunyai keinginan atau minat yang mendalam mengenai apa-apa yang kita lakukan maka pekerjaan itu akan menjadi suatu tantangan yang berat. Kita akan selalu menganggap pekerjaan itu sebagai tugas bukan hal yang kita senangi. Sehingga kita akan mempunyai bayangan perasaan malas, berat untuk melakukan pekerjaan itu dan tentu hasilnya tidak akan menjadi hasil yang terbaik.

Keempat: Kita Salah Dalam Mengatur Prioritas

Mungkin kita pernah merasakan juga ketika kita sudah melakukan pekerjaan seharian tetapi hasilnya tidak seberapa. Hal ini mungkin diakibatkan kita salah mengatur prioritas mana yang harus dikerjakan terlebih dahulu karena sangat penting dan mana yang bisa dilakukan setelahnya. Ketika kita mengatur prioritas mana yang harus dikerjakan terlebih dahulu, hal ini berkaitan dengan pengaturan waktu sehingga kita bisa lebih produktif. Dalam sehari kita hidup 24 jam dan orang lain pun sama 24 jam, tetapi kenapa orang lain bisa lebih produktif dibandingkan kita?

Kelima:¬†Terlalu Banyak¬†Waktu ‚ÄėIstirahat‚Äô

Kadang-kadang kita tidak menyadari berapa waktu kita sehari yang terpakai untuk ‚Äėistirahat‚Äô. Ketika kita sedang bekerja dan tiba-tiba ingin menghentikannya sejenak untuk¬†‚Äėngobrol‚Äô¬†dengan rekan atau¬†chatting¬†dengan kawan¬†dan sebagainya, mungkin tanpa kita sadari kita telah ‚Äėistirahat‚Äô dan waktu kita untuk melakukan pekerjaan pun sudah berkurang. Istirahat¬†pentingbagi kita tetapi pandai-pandai lah dalam mengatur batas waktu ‚Äėistirahat‚Äô.

Sumber: http://www.f-buzz.com/2008/10/22/5-penyebab-tidak-produktif/

BigDecimal and ‚Äújava.lang.ArithmeticException: Non-terminating decimal expansion‚ÄĚ

Pada beberapa kasus operasi pembagian pada tipe data java.math.BigDecimal bisa terjadi error seperti ini:

Exception in thread “main” java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

Berikut contoh kode program nya:

import java.math.BigDecimal;

/**
 * Test case for "java.lang.ArithmeticException:
 * Non-terminating decimal expansion" error with
 * BigDecimal.
 *
 * @author JM
 *
 */

public class TestBigDecimal {

    public static void main(String[] args) {

        String returnVal = TestBigDecimal.divide("1", "5");

        System.out.println("Test #1: returnVal = " + returnVal);

        returnVal = TestBigDecimal.divide("1", "2");

        System.out.println("Test #2: returnVal = " + returnVal);

        // Test(#3) will fail as the quotient (returnVal)
        // is a non-terminating decimal value.

        returnVal = TestBigDecimal.divide("1", "3");

        System.out.println("Test #3: returnVal = " + returnVal);
    }

    /**
     * Pembagian val1 dengan val2 mengembalikan nilai sebagai String.
     *
     * @param val1
     * @param val2
     * @return value as String
     */
    public static String divide(String val1, String val2) {

        BigDecimal v1 = new BigDecimal(val1);

        BigDecimal v2 = new BigDecimal(val2);

        return v1.divide(v2).toPlainString();

    }
}

Pada contoh diatas akan menghasilkan output:

Test #1: returnVal = 0.2
Test #2: returnVal = 0.5
Exception in thread ‚Äúmain‚ÄĚ java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(Unknown Source)
at com.jm.client.TestBigDecimal.divide(TestBigDecimal.java:34)
at com.jm.client.TestBigDecimal.main(TestBigDecimal.java:20)

Untuk mengatasi masalah ini perlu dituliskan parameter tambahan pada methode divide, seperti misalnya presisi/ketelitian bilangan dan juga RoundingMode, seperti contoh berikut ini:


import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * Test case for "java.lang.ArithmeticException:
 * Non-terminating decimal expansion" error with
 * BigDecimal.
 *
 * @author JM
 *
 */
public class TestBigDecimal {

    public static void main(String[] args) {

        String returnVal = TestBigDecimal.divide("1", "5");

        System.out.println("Test #1: returnVal = " + returnVal);

        returnVal = TestBigDecimal.divide("1", "2");

        System.out.println("Test #2: returnVal = " + returnVal);

        // Test(#3) will now work as we have provided a scale
        // and a rounding mode to the divide() method

        returnVal = TestBigDecimal.divide("1", "3");

        System.out.println("Test #3: returnVal = " + returnVal);

    }

    /**
     * Pembagian val1 dengan val2 mengembalikan nilai sebagai String.
     *
     * @param val1
     * @param val2
     * @return value as String
     */
    public static String divide(String val1, String val2) {

        BigDecimal v1 = new BigDecimal(val1);

        BigDecimal v2 = new BigDecimal(val2);

        return v1.divide(v2, 2, RoundingMode.HALF_UP).toPlainString();

    }
} 

Outputnya kira-kira seperti ini:

Test #1: returnVal = 0.20
Test #2: returnVal = 0.50
Test #3: returnVal = 0.33

Sumber: