24 Maret 2009

PHP dan printing ke continuous form

Divisi Material Warehouse sebelumnya pake Windows + OpenOffice.org dan juga dengan custom program bikinan programmer sini (dibuat pake Delphi bajakan). Karena programmer udah selesain versi webbasenya, ke 14 komputer diberi kesempatan nyoba selama satu minggu. Dan genap setelah lewat satu minggu, nggak ada komplain, langsung semua diganti ke Ubuntu Linux 8.04 LTS Edition.

Linux baru jalan 3 hari, manager divisi Material Warehous komplain. Tentunya dengan beberapa kendala yang dia temukan selama pake Linux. Tapi nyatanya kendala bukan pada Linuxnya. Linux + OpenOffice.org kan udah banyak di semua departemen. Dan manager itu tau tentang hal ini. Rupanya kendala menggunakan program baru webbasenya. Duh ...

Gue sempet komplain ke dia. Selama satu minggu tanpa ada kabar dari divisinya. Setelah pake Linux, baru ribut. Itu artinya divisi dia selama masih pake Windows, nggak coba program webbasenya. Dan jelas dari detail komplainnya, dia komplain program webbasenya nggak bisa cetak ke continuous form. Keluhan yang laen langsung diselesaiin programmernya dalam hari itu juga.

Hal laen, ini pengalaman baru juga buat gue. Webbase program dengan cetak ke continuous form. Kalo continuous from ukuran Letter/A4 sih tau lah. Gampang cing. Tapi kali ini bener-bener continuous form yang ukurannyanya nggak umum (custom paper). Sempet pusing cari solusinya. Sedangkan programmer, tentu saja gue harus bantu. Mereka baru tau Linux dan webbasenya. Kadang masih nggak pede aja. Tapi gue bersikeras, pasti ada solusinya. Pasti itu !!!

Susah emang nyari di Google. Nggak ketemu sama skali penggunaan custom paper di CUPS. Sebelumnya webbase udah generate report dalam format PDF dengan ukuran custom paper yang kita punya. Nyatanya cetak PDF file tersebut ke printer Epson LQ300+ selalu melaju sama aja seperti cetak ukuran Letter/A4. Sehingga pergantian halaman antar formnya jadi nggak tepat. Bener-bener kelihatan nggak prof deh :-(

Sempet puyeng juga seharian obok-obok banyak forum/milist tentang dot matrix printer dan Linux. Sepertinya susah. Bahkan sangat susah deh... dalam hal nemukan dokumentasi tentang ini di blog yang ada. Tapi nggak sengaja setelah baca-baca dokumentasi CUPS, perintah consolenya dan options-optionsnya. Well ... jadi inget tentang program MSDOS 15 tahun lalu. Gemana cara program kuno ikut handle percetakan continuous form. Akhirnya... ktemu juga. Ternyata mudah jadinya :-D

Printing ke dot matrix (continuous form)

Di Linux percetakan dokumen akan di handle CUPS service. Dokumen yang kita cetak, akan diproses CUPS, lalu dikirim ke printer. Umumnya berupa image. Hal ini nggak beda sama Windows OS juga kan.

Coba balik ke masa silam. Program MSDOS cetak ke dot matrix bukan mengirimkan image. Melainkan murni text files saja. Dan juga beberapa ESC code tambahan untuk berkomunikasi dengan printer. Dan ESC code ini sangat tergantung dengan merk/model printer dot matrix yang kita punya.

CUPS memiliki option "raw" printing. Itu artinya, program webbase yang kita bikin harus bisa menghasilkan text file yang akan di cetak. Lempar text file tersebut ke CUPS server. Dengan option raw printing, text file tersebut nggak akan di proses oleh CUPS, melainkan langsung dikirim ke dot matrik printer.

PHP dan CUPS

PHP for Windows dilengkapi fungsi printing. Sayangnya PHP for Linux secara official belum dukung CUPS. Untungnya ada class non official bisa nangani cetak ke CUPS printer. Coba cek lebih jauh ke phpprintipp. Udah dilengkapi paket DEB untuk Debian/Ubuntu.

Karena kita ada satu printer dot matrix di sharing untuk semua Linux, tentunya CUPS harus di share untuk semua. Sehingga semua client Linux bisa mengaksesnya. Dan phpprintipp bisa menggunakan printer tersebut dengan mudah. Cek link ini untuk tau cara shari printer di CUP (link).

Hasilnya

Sekarang webbase programnya udah kelar. Bahkan lebih profesional tuh. Dari webnya, tinggal klik tombol print, bisa langsung cetak ke continuous form. Nggak perlu pake PDF lagi. Dan programmer sini bisa senyum lagi :-D

Sapa bilang hanya pake Windows bisa kerja???


23 Maret 2009

Mengurangi Oracle bajakan

Minggu ini gue seneng banget. Dari 3 Oracle server, sekarang udah berkurang. Menjadi 1 Oracle server saja. Well... akhirnya 2 pirate Oracle server udah menghilang :-D

Pertama kali datang ke Thailand, udah 6 server gue sikat. Karena terlalu banyak server yang nggak perlu. Juga karena kebanyakan bajakan :-D Dan yang paling runyam adalah Oracle server ini. License cuman 1 saja. Tapi mereka pake 3 server. Itu udah terjadi selama 5 taon terakhir.

Dua bulan lalu udah kurang 1 Oracle server. Dan setelah liat performance CPU via MRTG, kinerjanya masing belon maksimal. Jadi masih bisa digabung aja. Cuman karena terlalu rumitnya software yang pernah dibikin programmer sebelumnya, sempet molor. Juga kesibukan laen yang membuat susah ngatur waktu.

Akhirnya setelah beberapa software ditulis ulang, dan bisa jalan di 1 Oracle server saja, mati juga tuh Oracle server ke 3. Lengkap udah ke 2 Oracle server bajakannya dimatiin. Tinggal 1 Oracle server yang kita punya dan license. Walo versi kuno, paling nggak tahap awal gue harus pelihara dulu.

Dua Windows server (ke 2 nya license) yang kita punya cuman Oracle + MSSQL. Keduanya adalah peninggalan jaman taon jebot dari manager MIS lama. Yah biasalah. Maen install tanpa pikir license. Jadi nggak usah heran kalo gue harus mereducenya sehingga fit dengan license yang kita punya. Oracle digunakan untuk custom program di pabrik yang dulu dibikin pake Delphi. Sedang MSSQL untuk Navision.

Mungkin dalam 2 taon ke depan (stelah proses migrasi Netware ke Linux udah kelar), gue akan kasih solusi laen. Tapi sementara ini, semua pengembangan software baru oleh programmer kita pake MySQL. Dan hampir semua applikasinya menggunakan webbase.


22 Maret 2009

SQuirrel SQL: SQL tools untuk berbagai SQL server

Artikel sebelumnya udah gue bahas koneksi dari OpenOffice.org (for Linux) ke beberapa SQL server menggunakan JDBC. Ini akan sangat penting untuk gue maupun beberapa programmer sini yang perlu melakukan reporting via "DataPilot" di OpenOffice.org Calc langsung menggunakan database di SQL server.

Satu tools lagi yang biasanya mereka gunakan di Windows adalah PL/SQL Developer. Biasanya mereka gunakan untuk Oracle. Untuk SQL server laen, mereka pake yang laen lagi. Tapi di Linux gue harus beri solusi. Karena kita disini ada MySQL (di Ubuntu Server), MSSQL 2000 (di Windows Server) dan Oracle 8.x (Windows Server). Dari ketiga macem SQL server itu, perlu ada solusi aplikasi yang memudahkan mereka melakukan manipulasi SQL command dengan mudah dari depan Ubuntu Linuxnya.

Akhirnya ketemu base on Java yaitu SQuirrel SQL. Well... suprise juga. Walau mereka menemukan beberapa software laen. Tapi kita suka software satu ini. Cukup satu SQL tools untuk semua SQL server. Dan hasilnya bisa di export ke format XLS. Great :-D

Untuk installasi Squirrel SQL mudah sekali. Gunakan sun-Java6-jre yang biasanya include dalam paket "ubuntu-restricted-extras". Download versi JAR dari SQuirrel SQL dan silakan install dengan right click saja di Ubuntu (open with "Sun Java 6 Runtime).

Untuk installasi driver JDBC for MySQL, PostgreSQL, Oracle dan MSSQL, silakan baca lagi artikel gue sebelum ini (link). Caranya seperti itu deh.

Selanjutnya configure class path masing-masing driver JDBC tadi pada bagian Driver di Squirrel SQL. Mungkin lebih mudah jika liat link ini. Dan siap untuk koneksi di bagian alias.

Met menikmati, pren


13 Maret 2009

Koneksi OpenOffice.org for Linux ke server SQL

Gue sempet komplain ke salah satu programmer. Karena terlalu sibuk sama permintaan CEO baru, gue minta bantuan mereka untuk dapetin data-data di server SQL dan langsung di proses pake DataPilot di OpenOffice.org. Eh... tenyata Linuxnya di restart. Dan ganti ke Windows. Gue tanya kenapa pake Windows? Karena OpenOffice.org for Linux gak bisa sambung ke MSSQL dan Oracle Server. Walah ... Bukannya mempercepat kerjaan gue. Justru masih harus ngajarin lagi :-D

Nggak beda sama OS Windows, di Linux ada 2 solusi juga. ODBC driver dan JDBC driver. Kali ini gue akan bahas pake JDBC (ODBC versi Java). Karena lebih gampang aja settingnya. Dan bisa dipake juga cara ini untuk OS laen. Bisa Linux, Windows ataupun Macintosh.

Berikut JDBC driver yang udah disediakan Ubuntu repository:
  • libmysql-java (untuk server MySQL)
  • libpg-java (untuk server PostgreSQL)
  • libjtds-java (untuk server MSSQL)
JDBC driver yang tidak include di Ubuntu repository:
  • jtds (libjtds-java diatas belon ada di Ubuntu 8.04 LTS)
  • ojdbc (Oracle JDBC Thin untuk server Oracle)
Installasi

Untuk 3 driver pertama yang sudah include di Ubuntu repository jadi sangat mudah. Lakukan ini:

sudo apt-get install libmysql-java libpg-java libjtds-java

Khusus jtds untuk Ubuntu 8.04 LTS:
  • Download jtds-1.2.2-dist.zip
  • sudo -i
  • mkdir /usr/share/java/jtds-1.2.2/
  • unzip /path/jtds-1.2.2-dist.zip -d /usr/share/java/jtds-1.2.2/
  • cd /usr/share/java
  • ln -s /usr/share/java/jtds-1.2.2/jtds-1.2.2.jar jtds.jar
Untuk ojdbc (misal gue pake Oracle 8.1 nih):
  • Download ojdbc14.jar
  • sudo -i
  • cp /path/ojdbc14.jar /usr/share/java/
  • cd /usr/share/java/
  • ln -s ojdbc14.jar ojdbc.jar
Setting OpenOffice.org

Secara default OpenOffice.org di Ubuntu bisa kenalin JDBC driver untuk MySQL dan PostgreSQL. Jadi khusus 2 database tadi, cukup installasi paket diatas, langsung bisa dipake. Sedangkan untuk jtds dan ojdbc, harus ditambahkan secara manual. Lakukan seperti ini:
  • Buka saja OpenOffice.org Writer atau Calc
  • Klik menu Tools - Options - Java
  • Harus aktifkan Java yah :-D
  • Klik ClassPath
  • Klik Add Archive
    Dan masukkan /usr/share/java/jtds.jar dan /usr/share/java/ojdbc.jar


Kemudian restart OpenOffice.org nya agar bisa meloading ke 2 driver tambahan itu.

Mencoba OpenOffice.org Base

Buka OpenOffice.org Base. Akan muncul wizard yang menuntun kita menkonfigurasi berbagai macam server SQL. Dua server SQL yang langsung ready dipake di sini adalah MySQL dan Oracle. Tentu saja mudah karena udah tersedia di drop down menunya.

Sedangkan MSSQL dan PostgreSQL tidak ada di drop down menunya. Maka kita harus memilih JDBC. Berikut ini contoh untuk MSSQL:



Masukkan Datasource dan JDBC Driver Class sebagai berikut:

Datasource URL:
jdbc:jtds:sqlserver://SERVER-NAME/DB-NAME

JDBC Driver Class:
net.sourceforge.jtds.jdbc.Driver



Jangan lupa klik Test class untuk mengetahui driver JDBC nya berhasil terinstall nggak tuh.



Masukkan username dan password untuk mengakses database.



Dan test connectionnya untuk mengetahui hasilnya.



Terakhir register database itu ke system OpenOffice.org. Sehingga terintegrasi ke semua component OpenOffice.org.



Dan kita akan diminta menyimpan setting koneksi ini ke dalam file .ODB.


Mengakses MSSQL di OpenOffice.org Base

Sekarang kita bisa menikmati database di MSSQL di dalam Openffice.org. Silakan explorer OpenOffice.org Base. Karena banyak kemampuannya bisa kita gunakan.



Mengakses MSSQL di OpenOffice.org Calc/Writer

Gue paling demen gunakan OpenOffice.org Calc. Karena fasilitas DataPilot sangat membantu banyak sekali kebutuhan user. Dan untuk memunculkan database yang udah teregister, cukup klik menu View - Data Sources (F4). Kita bisa mengakses semua table dan query.




Untuk yang butuh PosgreSQL berikut ini penting:

Datasource URL:

jdbc:postgresql://SERVER-NAME/DB-NAME

JDBC Driver Class:
org.postgresql.Driver


So pren, kata sapa tanpa M$ nggak bisa kerja? :-D

09 Maret 2009

Skali lagi AvantFax

Awalnya gue ganti WinFAX bajakan di departemen GA. Tugasnya cuman terima fax doang. Bukan untuk kirim fax. Maklum, kebanyakan dokumen harus di sign dulu. Jadi pengirimannya pake mesin fax saja biar cepet. Sebaliknya penerimaan fax lumayan banyak. Dan untuk hemat cost pembelian kertas fax, mereka gunakan WinFAX. Inilah yang gue udah threat sebelumnya di link ini.

Minggu ini terjadi 2 hal bagus menurut gue yah. Departemen Purchasing rupanya sempet liat AvantFax di departemen GA. Nggak tau gemana jelasnya, mereka sekarang minta dibikinin juga. Dengan alasan nggak perlu untuk beli kertas fax juga.

Awalnya gue ragu. Buat apa bikin sekali lagi. Cukup satu saja kan cukup. Tapi sepertinya beberapa MIS nyadarin gue. Katakanlah sebagai backupnya. Kalau AvantFAX di GA lagi sibuk, kan bisa pake AvantFAX di Purchasing. Bener juga :-D Akhirnya gue kerjain juga. Salah satu client Linux di Purchasing jadi ketambahan tugas untuk selalu cek incoming fax tuh.

Hal laen, Linux computer yang gunakan AvantFAX di GA minta di pindah. Managernya minta ditempatkan di receptionist. Wuih ... tempat strategis untuk pamer Ubuntu Linux ke semua guest yang datang ke company ini :-D

Sapa bilang hanya dengan M$ kita bisa kerja???



08 Maret 2009

Blocking UltraSurf (2)

Karena banyaknya pertanyaan yang masuk, gue kadang kerepotan juga. Mending gue tulis kesini aja biar temen-temen yang butuh bisa baca caranya dengan jelas. Dan bisa kurangi banyaknya pertanyaan yang sama.

Masih inget artikel gue tentang UltraSurf taon lalu kan? Coba silakan kesini:
http://rippingthepenguin.blogspot.com/2008/04/blocking-ultrasurf.html

Gue perlu kasih penjelasan hal laen dalam penerapannya agar bisa berhasil ngeblok UltraSurf menggunakan Linux server dengan Squid (proxy server) dan iptables (firewall). Ada 2 sisi yang perlu dilakukan:

Di sisi server

Install Squid proxy server dan lalukan setting pengeblokan UltraSurf seperti link tadi.

Pasang firewall di Linux servernya. Dan tutup semua port yang nggak perlu. Utamanya, tutup semua request user ke http (port 80) atau https (port 443) menuju internet. Usahakan semua request user ke kedua port tadi harus melalui proxy server yang sudah kita bikin.

Oya, lebih bagus lagi jangan cuman port http/80 dan https/443 yang ditutup. Tapi semua paket dari user ke linternet kita ditutup. Cek setting di firewall loe. Atau kalo di iptables bagian FORWARD.


Di sisi client

Semua client harus di setting proxynya. Jadi setiap browser ada baiknya diarahin setting proxynya ke squid server tadi.

Emang bisa saja pake transparent proxy di squid. Jadi client nggak perlu setting proxykan? Tapi problemnya UltraSurf justru mencari server tujuan dengan port https/443. Dan port ini sebaiknya justru tidak gunakan transparent proxy. Jadi pilihan terbaik, ya setting proxy di setiap client.

Pasti berhasil :-D


01 Maret 2009

Pengganti Logon Script di Ubuntu Linux (Gnome)

Satu fasilitas yang sangat memudahkan user Windows mengakses file di server Windows adalah logon script. Biasanya diletakkan di server Windows. Dan setiap client Windows yang sudah join domain, ketika login ke domain tersebut akan menjalankan logon script ini. Semua folder yang diberikan akan langsung muncul di My Computer sebagai map folder.

Fasilitas seperti ini akan sangat memudahkan user Windows mengakses data di server. Sayangnya ini teknologi Windows. Hanya bisa digunakan untuk client Windows dengan server Windows (atau server Linux dengan Samba). Gemana client Linux (terutama Gnome) dengan server Linux (menggunakan NFS)?

Di Linux ada namanya automount (paket autofs). Tapi ini jelas beda. Autofs di mount sebelum user login. Sedangkan logon script di Windows akan dijalan setiap user login. Beda user bisa aja beda logon script. Jadi mapping foldernya akan beda lagi.

Karena NFS udah dimount di salah satu folder. Semuanya biasanya akan jawab, nggak terlalu perlu fasilitas seperti itu. Bener juga. Sayangnya gue nemukan kendala di Linux dengan knowledge user. User yang masih baru. Dan hanya tau menggunakan OpenOffice.org saja. Setelah pegang Linux, gue nggak yakin mereka tau menggunakan File-Browser (Nautilus) dengan baek. Apalagi struktur directory Linux yang jelas beda sama Windows.

NFS diretory

Semua kebutuhan user sebenernya ada di directory /server. Jadi di setiap komputer udah termount NFS ke directory itu melalui file /etc/fstab.

server.mydomain.com:/ /server nfs4 rsize=8192,wsize=8192,timeo=14,intr 0 0

Ada 5 folder dalam directory /server. Dengan struktur seperti ini:

/server/
+ personal/[username]/
+ division/[departement_name]/
+ netlogon/
+ pubic/[department_name]/
+ software/
+ temp/

Untuk memudahkan mereka, beberapa map folder yang selalu mereka dapatkan waktu masih pake Windows, akan digantikan dengan bookmark (gtk-boormarks yang ada dalam File-Browser/Nautilus). Tentu saja, dulunya kita lakukan secara manual waktu install Ubuntu Linux. Berikut beberapa folder dari NFS yang kita bookmark:
  • Folder personal (base on username)
  • Folder departemen (base on departemen name)
  • Folder public (semua user bisa read, tapi read/write hanya pada folder departemennya)
  • Folder software (semua user bisa read, hanya MIS bisa read/write)
  • Folder temp (semua user bisa read/write)
Kendala muncul dengan bookmark ini. Karena banyak komputer yang dipake lebih dari satu user. Bahkan user laen bisa saja pinjem komputer Linux di dekatkan untuk akses datanya di server. Dan karena bookmark manually hanya user tertentu, user baru yang login ke Ubuntu Linux nggak akan nemukan bookmarks tentunya. Mau nggak mau mereka akan kontak MIS. Dan tanya dimana yang di server? Kenapa nggak muncul di bookmarks seperti user laen?

Resiko ini yang pengen kita kurangin. Gemana caranya user bisa login ke Ubuntu Linux, dan bookmark akan langsung muncul secara otomatis. Seperti client Windows lah. Login apa saja usernamenya, map folder dari logon script akan langsung muncul di My Computer. Ini jelas-jelas akan menghemat banyak waktu untuk mereka. Apalagi bookmarks ini akan slalu muncul di hampir semua aplikasi Gnome (Ubuntu). Terutama pada OpenOffice.org yang selalu mereka gunakan tiap hari.

Autostart untuk system

Umumnya user akan menambahkan autostart di menu System - Preferences - Sessions. Tapi penambahan disini hanya untuk user yang aktif. Agar scriptnya bisa diload di semua login user, bisa ditempatkan di /etc/xdg/autostart. Misal dengan nama file "makebookmarks.desktop".

$cat /etc/xdg/autostart/makebookmarks.desktop

[Desktop Entry]
Type=Application
Encoding=UTF-8
Version=1.0
Name=Make Bookmarks Script
Name[en_US]=makebookmarks
Exec=/server/netlogon/makebookmarks
X-GNOME-Autostart-enabled=true
OnlyShowIn=GNOME;


Dengan file makebookmarks.desktop ini, script /server/netlogon/makebookmarks akan diload setiap kali user login. Kalau bookmarks ada yang hapus, akan digenerate lagi.

The script

Kalo diliat dari file .desktop tadi, scriptnya di /server/netlogon/makebookmarks. Jangan lupa set permission 755 agar script bisa dijalankan. Dan file ini ada di server yah. Jadi cukup 1 files aja. Perubahan file ini akan efek ke semua user. Itu yang perlu diingat.

Adapun bookmarks di Gnome (Ubuntu) biasanya disimpan di $HOME/.gtk-bookmarks. File ini akan digenerate otomatis saat pertama kali create/add user. Tentu saja jika belum ada file .gtk-bookmarks di home folder. Dan default bookmarksnya untuk Ubuntu 8.04 LTS (Hardy Heron) adalah:
  • Documents
  • Pictures
  • Music
  • Videos
Tapi kalo udah ada file .gtk-bookmarks, Gnome tidak akan generate lagi. Jadi karena kita pengen generate sendiri, sebaiknya ke 4 bookmarks default di atas disertakan kalo emang perlu. Berikutnya baru generate bookmarks untuk folder-folder di NFS.

Hal laen, semua client Ubuntu disini tersambung ke LDAP. Jadi semua usernamenya dari LDAP. Kecuali satu username "sysadmin" yang local (bukan dari LDAP). Yang biasanya ditanyakan waktu installasi. Login dengan username sysadmin, tentunya akan langsung menjalan script ini juga. Karena sysadmin hanya untuk MIS configure client (bukan untuk akses server), script ini akan menghentikan operasinya. Dan Gnome akan mengenerate bookmarks default saja.

Yang butuh scriptnya, silakan download disini. Di dropbox gue nih (link).

Hasilnya di File Browser (Nautilus):



Dan open dialog OpenOffice.org



Goodluck pren