Posts

Showing posts from 2009

FOSS.IN 2009

Its my third day attending the Free and Open Source Software India Conference (FOSS.IN) in Bangalore. This is my third international event I'm attending, but it also my first international event I'm attending in about.. 10 years :) The first and the second were SEARCC Computer Competition (1996) in Bangkok and IOI 1996 in Hungary. For us Indonesians, the climate is very much like at home. The food, is on other hand, very foreign tasting. Our hope on tasting familiar food lies on KFC and McDonald's at the Mall named 'The Forum' nearby. Today I tried the food, but I don't think I would dare to eat such food anymore. I raise my hat to the Europeans who faithfully eats the lunch given in the place :) One problem occured to me is that I couldn't find a place to charge my laptop in an easy way. Further observation revealed, there are few plugs in front of the first row in each Auditorium, which are almost always full. But today I found that there is an extension c

IWSS - Java developer's nightmare

Image
InterScan Web Security Suite, abbreviated IWSS, it is said to be a comprehensive solution tailored for large corporate deployment. Product of Trend Micro, IWSS scans every HTTP access from a corporate's intranet onto the great internet. Unfortunately, it assumes that every .jar file accessed by a corporate's intranet is a java applet, therefore it naively apply bytecode manipulation on it, making a dialog box pops up every time the class in the jar file access something in the host OS. Like accessing a file in Eclipse's plug-ins folder. Like accessing a file in the Local Settings folder. Why does it have to be like this? When does an antivirus company, allowed to do manipulations that in the past only done by virus? Let me explain. A jar file is an JVM executable. I downloaded tens if not over a hundred jar files from the internet, because Eclipse's update mechanism is just like that- by downloading jar files from the Internet. IWSS tampered with them, modified them.. i

Installing MULE ESB on Centos

I have one configuration that downloads SAP data using a Mule-1.4.4. Why not mule 2? The SAP Transport for Mule 2 didn't exist yet during the time I built the system. It was implemented on a Windows Sandbox system, that unfortunately has few shortcomings such as not being backed by tech support staffs, virus-prone, must be started up after power outages, and shared system load with SAP ERP Sandbox & one Ubuntu OS loaded in VMWare (whew, that's a lot..). So I think it would be better to migrate the Mule-system into a Centos-powered virtual machine located in the Data Center (where power outages are rare and of course we have no worm/virus problem). Extracted mule-1.4.4.tar.gz into /opt/mule-1.4.4. Put the IBM JDK 1.5's bin directory onto user's PATH by editing user's .bashrc file. Extracted sapjco 2.1.8 into /opt/sapjco2. Tried run Mule for the first time, but it wants to download mail-1.4.jar . I copied the missing file from the previous system to lib\user . I

RAID5 Failure, Again

This time I get (another) annoying RAID5 failure. The CentOS 4.7 server won't boot because it was unable to start the RAID5 array. Yes, this is the second time I stumbled upon this problem (see this Indonesian-written post ). I burned a new CentOS 4.7 DVD (using a new REAL server's DVD writer, no less), then I boot up the DVD, typed linux rescue in the boot command line, and tried to follow the exactly the same step I've done and written in this blog, but to no success: the system complains that the superblock doesnt match. Seems I forgot the new RAID5 configuration in this server. I forgot that I have reinstalled this server with SAP ERP Netweaver, creating two software RAID5 arrays in the process, and of course with different partitions. The partitions were: sda3, sdb3, sdc1, sdd2. The four partitions created a 215 megablock (thats about 100 GB, I think) md1 partition. Here's the chemistry: - The kernel won't add non-fresh member (sdd2) into the array, it kicks i

Java-based Domain Driven Frameworks

Yesterday I'm browsing and exploring about Full-stack Domain Driven Application Frameworks written in the Java platform. The Java platform still has a lot of potential, but somehow the Rails framework tells me that we're still far from it, my exploration yesterday. Here is a brief of the frameworks I read about: JMatter - This one I already use a few months back. The UI is pretty decent, but the lack of production quality web-based view technology.. makes it very far behind others. It currently only has production-grade Swing viewer, making it a two tier application platform. Security-wise, two-tier platforms are not good -> each client must have a database connection to the db server, which potentially could be abused. Has no authorization code built in. Actions on the entity written in the domain model, encapsulating business logics. OpenXava - Web-based GUI with some AJAX parts. Has no authorization code built in. Separates actions from domain model, the concept is that a

HTB traffic control burst calculation inaccuracy

My previous Kubuntu 7.04's Linux 2.6.20 kernel uses a 1000 Hz timer kernel (refer to HZ constant defininition and fourth value of kernel ABI /proc/net/psched routine psched_show in sch_api.c ). HTB's burst is calculated by tc binary using the formula : bitrate/timer frequency + maximum transfer unit. Ubuntu 8.04's Linux 2.6.24 kernel have an improved packet scheduler timer resolution. It now uses high resolution timer, with nanosecond accuracy. Refer to psched_show in sch_api.c , and Fourth value of /proc/net/psched now returns 1 G (10^ 9 ). HTB burst calculation is now bitrate/10^ 9 + mtu.. Somehow this is will always a small value, and as a side-effect HTB qos scheduler no longer capable of delivering high bitrates accurately to stations. My analysis based on my limited knowledge of the packet scheduler : the linux's packet scheduler is driven by calls to dequeue function. This might be driven by tx complete interrupt or something else. So it is not timer-driven. B

Names in our code

This is just a summary of some rule-of-thumbs when developing source codes. When coding, do these : use descriptive names please classify/categorize so we have shorter source files. Or, we have fewer source files in each folder (distribute files into category folders). In OOP, we should refactor into new classes if things gotten too crowded in one class, or even refactor the class into different packages. In PHP, we should refactor into new files and/or new folders. Rules that were Anti-patterns : don't use generic names like $query. When reading it, I don't have a clue what does it stands for, a query to the users table, or a query to delete a user, or what? OK, maybe it can be used if the scope is local, that is, I could easily look for the meaning in the same function or small file. avoid long parameter list. It is difficult to find out which parameter means what. We could use: a value class in OOP languages, or associative array in PHP, or even object in PHP, to give meanin

Multiple PHP in a machine blues

I am compiling PHP's source code and a PHP extension (apc). The reason for not using packaged version of PHP is that there is another critical application running in the server, with its own PHP version, and we don't want to risk incompatibility issues forcing the application run with a different PHP version. Meanwhile I need PHP compiled with debug flags, and also with gd enabled and apc extension for another application. I prefer Debug flags to be enabled because we're testing this whole stuff and don't want to be in the dark when error (s) cropped up (previous set of PHP-apache-oci8 triad sometimes issued segmentation faults but we don't now the source of the errors). The problem is, that the apc Makefile won't use the debug flag set during previous PHP compilation. It turns out that we must be very careful that: the phpize being used is from the correct PHP compilation (I deleted the scripts/phpize and scripts/php-config after changing PHP's configure

Munin, again

More problems come when I'm just starting to use Munin-Node to monitor several Windows 2003 servers : the memory value reported by Munin-Node are all wrong. The sum of app and unused is not related to total physical memory installed in the servers. It turns out that the Windows API used returns 64-bit values, and simple change to the format specified fixes the problem. external plugin doesn't work. Turns out that the external plugin must not print the trailing newline when invoked by 'name' argument, and it also must prints a line of '.' after each 'config' and 'value' (or default) invocation. after several days of running, external plugins stopped working. I used sysinternals' process explorer in the server, and found out that there is some chance that external plugin invocation doesn't close the listener thread. After a few days the unclosed threads became too much and prevent the Munin-Node service from spawning new external plugins.

Munin-Node 1.5 with correct memory plugin

Munin is a solution to monitor servers. It shows graphs of some important server's system parameters, such as disk free space, cpu utilization, memory usage, network traffic, and even the HD temperature. Munin requires an agent, called Munin Node, installed at the server (you must be root or administrators to do this). Of course, there is a specific Munin Node to be installed for each operating system. On Ubuntu systems, there is munin packages in ubuntu's repository. Meanwhile Jory Stone created Munin Node for Windows, and I'd be needing that because some of the servers used at my workplace is powered by Windows Server 2003. I read the postings at jory's Munin Node site, and seems that memory plugin must be patched in order to have visible memory graphs. I've downloaded the source code from jory's site, then I followed the instructions to fix the memory plugin (uncommented few lines in MemoryMuninNodePlugin.cpp), and the next task is to compile the whole thi

OpenOffice 3.1

OpenOffice 3.1 melakukan startup dengan cepat - itu impresi pertama saya. 11 detik membuka OpenOffice Calc. Close, kemudian buka lagi - 3 detik untuk membuka Calc untuk kedua kalinya. http://www.openoffice.org/dev_docs/features/3.1/index.html http://openoffice.bouncer.osuosl.org/?product=OpenOffice.org&os=winwjre&lang=en-US&version=3.1.0

Skills Statistics

Image
There is always a concern of skill shortage when we try to decide which platform of choice we're going to use to develop internal applications. Well, maybe we could see what kind of skills is up for sale at www.elance.com : Some thing we could try to relate from this list : Popularity of programming languages : 1. PHP with 11 thousand freelancers, 2. .NET with 8 thousand, 3.Java with 8 thousand freelancers. ASP.NET ranks further below (5 thousand freelancers), as a web development platform its ranking is not as favorable as PHP (another popular web development platform). I assume that .NET skill means client-server WinForms skill. Further down is J2EE which somehow as popular as Visual Basic (we know how popular VB are in the real world.. ) Strange enough, there is no Oracle skilled freelancers open for hire, despite MySql as 1st place popular database and SQL Server as 2nd popular database skill. Operating System skills : Windows as 1st place with 4 thousand freelancers, but it

Learning

Ada perkataan: makin banyak yang kita tahu, makin sadar kita bahwa kita baru mengetahui sebagian kecil dari pengetahuan yang ada. Di industri yang saya geluti, industri teknologi informasi, pembelajaran berlangsung tanpa henti. Selalu ada hal yang baru. Sampai suatu saat, berpikir apakah perlu untuk menghentikan penyerapan hal baru dan saatnya menerapkan hal-hal yang telah diketahui. Mari kita lihat model proses belajar (Learning) yang umum ada di perusahaan jaman dahulu. Pada model ini, moda belajar utama yang diakui perusahaan ialah pembelajaran formal - keryawan dikirim untuk pelatihan, sehingga mendapatkan skill dan knowledge yang dibutuhkan untuk bekerja. Karyawan cuma perlu menerapkan apa yang diberikan dan mengikuti peraturan - it is a simple world. Jika ia belajar dari jalur lain, itu merupakan nilai tambah yang dimilikinya, namun pada model learning lama jalur lain tidak diatur dan tidak diperhitungkan. Perusahaan menyiapkan career path dan learning path - karyawan tinggal men

IE memanggil Firefox ?

Siang hari ini ada pasien sebuah komputer yang IE nya ngadat. IE mau muncul, tapi kalau diketik URL di address barnya, muncul popup Application not found. Ada lambang Firefox di start menu tapi executablenya tidak ada. Clue dari pengguna komputer ialah ia tadinya mencoba memasang IE7 dan kemudian diuninstall (sehingga IE yg aktif IE6). Tampaknya Firefoxnya juga diuninstall (entah karena alasan apa). Googling sana-sini, sampai akhirnya menginstall Windows XP Service Pack 3 karena berasumsi ada DLL yang mismatch atau tidak lengkap. Tetap kondisi tidak membaik. Ternyata masalahnya ada di sebuah registry key. Entah bagaimana registry key ini merefer ke DLL milik IE7 di temporary folder dan mempengaruhi perilaku IE6 sehingga mencari Firefox (uaneeeh) ketika sebuah URL diketikkan di address bar. Kalo ga percaya, liat bahasan di sini dan sini . Solusi masalah ini ialah menghapus registry key HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}, tutup semua jendela IE (kalau perlu h

Roles, Profiles dan PFCG di SAP

Ini adalah sebuah overview mengenai sistem authorization di SAP. Ketika seorang user (mencoba) melakukan suatu hal di sistem SAP, misalnya membuka transaksi screen ber-kode tertentu, sistem akan memeriksa apakah user tersebut memiliki authorization object tertentu. Jika authorization object tersebut dimiliki, maka diperiksa juga apakah nilai field-fieldnya match atau tidak dengan properti dari operasi yang akan dilakukan. Sebuah authorization object berisi beberapa field, field ini dapat diisi * (wildcard), multiple value ataupun single value, dan logika matching ini disesuaikan dengan jenis value yang diisi. Field diisi * berarti match dengan semua operasi. Field berisi multiple value berarti match jika properti operasi sama dengan salah satu value yang ada. Role merupakan kumpulan dari Menu dan Authorization Object. Ada pemisahan yang agak kurang natural antara Role dan Profile, di mana Profile yang dimiliki user-lah yang dicek oleh sistem authorization di SAP. Ketika Role disave, ia

Oracle 10.2 on Linux x86_64

Bagaimana caranya kita install Oracle Database Server di Linux ? Jika anda berkata, masukkan DVD/CD, run installer, klik next-next-next, anda salah besar.. Isu major: installer Oracle 10g untuk Linux tidak sadar akan semua paket sistem yang diperlukan sebelum instalasi Oracle Database. Hasilnya: ketika cek persyaratan, semua OK, tetapi installer bisa saja mandek di tengah jalan dengan error tertentu. Guideline : Oracle Metalink Note 169706.1 (aku tahu kode ini malah dari SAP Notes :) ). Pada Red Hat Enterprise Linux 4, atau CentOs 4, Install paket-paket berikut ini sebelum instalasi (perhatikan ada paket x86_64 maupun i386): # binutils-2.15.92.0.2-13.0.0.0.2.x86_64 # compat-db-4.1.25-9.x86_64.rpm # compat-gcc-32-c++ # compat-libstdc++-33-3.2.3-47.3.x86_64.rpm # compat-libstdc++-33-3.2.3-47.3.i386.rpm # control-center-2.8.0-12.x86_64.rpm # gcc-3.4.3-47.x86_64.rpm # gcc-c++-3.4.3-47.x86_64.rpm # glibc-2.3.4-2.9.x86_64.rpm # glibc-2.3.4-2.9.i386.rpm # glibc-common-2.3.4-2.9.x86_64.rpm # g
Bagi orang yg telah disebut sebagai pelupa sejak sekolah dasar, tampaknya pertanyaan mendasar ini seharusnya sudah muncul sejak lama. Or is it I who doesn't remember it? Demo, lets think about analogies - they make things simpler. Ingatan manusia seperti layaknya storage di komputer, memiliki kapasitas penyimpanan yang besar. Tetapi, informasi tidaklah hanya disimpan, ia harus bisa dicari dan dikeluarkan kembali. Indexing di komputer, adalah asosiasi di manusia. Manusia mengingat informasi berdasarkan banyak hal, apakah topik, pelaku, waktu, lokasi, bentuk, ataupun kriteria lainnya. Di sini manusia memiliki tempat yg berbeda untuk asosiasi, dengan kapasitas yg lebih kecil daripada penyimpanan utama tadi. Ada kalanya kita bisa tiba2 teringat suatu hal, disebabkan karena kita memikirkan hal lain yg berhubungan dgn hal pertama tadi. Kita lupa, adalah akibat dari hilangnya asosiasi ke informasi yg tersimpan di otak. Short term memory, adalah ingatan yg terasosiasi penuh, siap dicari

Software engineering

Jika pelukis membuat lukisan, penulis membuat buku, maka kami, para software engineer, writes code. Kami menulis code dalam bahasa pemrograman, sehingga muncullah software di dalam komputer yang dapat membantu manusia dalam menghadapi aktivitasnya sehari2. Suatu fakta yg signifikan, bahwa bidang ini termasuk muda dibandingkan yg lain seperti chemical engineering atau electrical engineering. Saya dulu mengira bahwa perkembangan ilmu di bidang IT atau software, dapat dengan cepat menyebar di seluruh dunia, karena pada umumnya para pelajar IT atau pekerja IT lebih sering menggunakan Internet daripada orang lain. Sehingga, begitu ada breakthrough di teknik object oriented, saya mengira bahwa dalam waktu satu dekade (10 tahun) hampir semua pekerja IT sudah mengerti teknik object oriented tersebut. Teknik yang saya maksud ialah Design Patterns, yang dipublikasikan sekitar 1995 oleh Erich Gamma (sekarang ia bekerja sebagai engineer di IBM). Ternyata, sampai sekarang pun, mayoritas pekerja IT

Inconsistent Access Control in Liferay Social Office

Beberapa hari ini cukup dipusingkan dengan Access Control di Liferay Social Office. Untuk sebuah folder di bawah Document Library, apapun Permissions yang kita set, selalu saja semua user dapat melakukan 'Add Document' atau 'Add Folder'. Kecuali kalau 'view' permission tidak kita berikan ke user, maka user tersebut tidak dapat membuka folder tersebut, apalagi Add Document atau Add Folder. Saya belum cek kalau user mengetikkan URL add document langsung (tanpa view isi foldernya lebih dahulu) tetap bisa dilakukan Add Document atau tidak. Anyway, ternyata masalahnya ada di propagasi permission dari parent folder ke subfoldernya. Semua permission yang dimiliki current user pada sebuah folder akan dipropagasikan ke subfolder di bawahnya. Perilaku Aplikasi menjadi cacat karena Community Member memiliki permission Add Document dan Add Folder pada root folder di komunitas tersebut, sementara tidak ada UI untuk merubah permission pada root folder. Hanya Permission pada f

Zend Framework - what a configuration

Hari ini mencoba sesuatu yang baru. Menggunakan 3 orang berpengalaman (including.. me:) )untuk menyelesaikan satu hal sepele.. yaitu mengkonfigurasi sebuah aplikasi PHP berbasis Zend Framework sehingga bisa ditaruh di folder selain webroot. Sebenarnya, tidak ada satupun yang pernah menggunakan Zend Framework (kami terbiasa dengan CakePHP dan CodeIgniter), jadi tentunya tetap ada tantangan. CodeIgniter menggunakan file konfigurasi system/application/config/config.php untuk menset base_url, dan pada CodeIgniter yg kami pakai sudah ada algoritma deteksi otomatis yang berfungsi baik. $config['base_url'] = "http://".$_SERVER['HTTP_HOST']; $config['base_url'] .= preg_replace('@/+$@','',dirname($_SERVER['SCRIPT_NAME'])).'/'; Neverthless, untuk Zend tampaknya konfigurasi disimpan di file app.ini. Ternyata, agak sulit juga mencari dokumentasi tentang isi file ini. Setelah membrowsing-browsing cukup lama, kami menemukan dokumentas

What? No delete event in Liferay Social Office?

A strange thing indeed, for some company to release a beta software which is not functionally complete. I always thought that a beta software is fully functional but without a production-grade stability. Of course, the software industry has its historical anti-example such as QuarkXpress (3.3 or 4, I forgot) which had an alpha release, beta release, and gamma release, before the true 'Release'. Liferay Social Office is a simplification of Liferay Portal, configured for optimum social interaction, and in my opinion, knowledge sharing and management. What they really do is rewrite some GUI codes so the resulting UI is not too complicated to master. But here lies the catch. You could create a new Calendar Event, but there is no user interface from where you could delete the event. Someone posted the question to Liferay's forums, and the question was answered with something like .. er.. we would include the delete functionality in the next release .. That is not an acceptable

Javascript Confusion

Ketika saya dulu mencoba library/framework jQuery, muncul sebuah pertanyaan, kapan kita mulai menggunakan framework/javascript library ? Kapan benefitnya melebihi costnya, misalnya pada waktu eksekusi halaman, kurva pembelajaran.. Pada saat itu performansi jQuery kurang memuaskan untuk kebutuhan kami. Namun karena ga begitu ngerti javascript juga, akhirnya dibiarkan pake jQuery :). Pada kesempatan berikutnya, saya dan teman saya membuat sebuah aplikasi sederhana dengan deadline yang lumayan ketat. Javascript dihindari karena belum begitu paham dan masalah cross-browser compatibility yang lumayan pelik. Tapi, pada suatu halaman, kita terpaksa menggunakan javascript untuk membuat dua buah radio group saling terkait satu sama lain, yaitu radio group kedua hanya boleh digunakan pada saat sebuah radio button tertentu di group pertama dipilih. Cuma sebuah script onclick, dan script yang dijalankan ketika halaman diload untuk mendisable radio group kedua pada awal halaman. Kenapa nggak di PHP

Guessing root causes

Ketika muncul suatu masalah, sering kita hanya dapat mengenali gejala. Dan kemudian melakukan perbaikan berdasarkan gejala tadi. Dan hanya kadang-kadang kita dapat mengenalil root cause, sehingga dapat melakukan perbaikan yang lebih menyeluruh. Seperti hari ini, seorang pengembang mengalami masalah tidak dapat melakukan pembuatan web service di sistem SAP Development. Sebelumnya, di sistem lain yang mirip sandbox, pembuatan web service ini sudah pernah dilakukan. Karena dulu sempet nulis di Wiki, saya jadi bisa ingat lagi kejadian-kejadian ketika dahulu mengaktifkan Web Service di mesin yang lama. Dan jadi ketahuan ada satu langkah yang belum dilakukan. Tetapi.. knowledge milik kita sendiri hanya bisa membantu sejauh itu, tetap belum dapat diaktifkan, si web service itu. Dari transaksi SE80, membuka function group yang tepat, kemudian klik kanan, create web service.. gagal di langkah terakhir wizard. Transaksi SU53, melihat event kegagalan authorization terakhir .. didapatlah authoriza

RAID5 Failure

Yak.. itu adalah problem mengerikan yang terjadi kemarin. Sebuah server yang kuinstall Centos 4.7 dan berharddisk empat buah, dipasangi RAID5, dan sudah beberapa bulan melayani kami sebagai Server Linux SAP satu-satunya yang diinstall from scratch. Di situ cuma diinstall aplikasi SAP GRC (Governance, Risk & Compliance) dan SAP Netweaver (+Oracle) sebagai pondasinya. Kemarin aku mulai menghandle masalah ini, karena penasaran (RAID5 kok bisa fail). Konsep RAID5 yang kupasang adalah begini: dari 4 buah hard disk, data disebar ke 4 hard disk dengan informasi pelengkap (sejenis CRC mungkin), sehingga sistem tetap berfungsi meskipun salah satu hard disk fail. Ternyata, Software RAID5 di Linux memiliki beberapa karakter: - ketika sedang beroperasi, dan satu dari 4 hard disk mati, sistem berubah mode operasional, dari normal mode ke degraded mode. Transisi ini terjadi otomatis, dan mungkin kita bisa lihat di log file. - tetapi, ketika proses booting, salah satu dari 4 hard disk tidak bisa

Tidak bisa buka popup window di IE6

Hari ini revisit ke suatu masalah yang mungkin umum terjadi.. Yaitu instalasi Internet Explorer yang ngadat. Dulu waktu kami mroyek di Merpati, pernah kejadian seperti ini, dan kalau tidak salah kami solve dengan mengupdate service pack Windows di semua komputer OP (Planning). Tapi hari ini seorang temanku yang lain mengalami masalah yang agak berbeda, service pack nya sudah maximum, dan setelah mengalami trouble dengan IE 7 ia melakukan uninstall. Ternyata setelah uninstall, Internet Explorer (yang kini versi 6) masih ngadat. Ia tidak mau membuka pop up window, bahkan yang dicoding tanpa JavaScript sekalipun (just a simple A HREF="_BLANK" dst..). Kemudian aku googling dan menemukan orang dengan masalah serupa . Meskipun masalah sebenarnya berbeda, tetapi orang ini sudah menulis semua langkah-langkah yang ia lakukan untuk meresolve masalah ini (dan gagal). Langkah terakhirnya (menginstall ulang Autodesk Trueview 2009), sama sekali tidak generik, dan tidak relevan untuk kasus

SCP Tunneling via SSH

Image
Beberapa minggu yang lalu aku diajari trik ini oleh neni, kayaknya sih bakal berguna untuk orang lain.. Kondisi awal: sebuah server (katakan server A) hanya bisa dihubungi lewat server B. Jika kita ingin mengakses file di server A, biasanya kita terpaksa masuk via SSH ke server B, kemudian SCP file dari server A ke server B ato sebaliknya, dan mengeditnya di server B (pakai vi.. ato pico..). Cara ini terlalu ribet untuk pengeditan sederhana. Solusi neni: Bukalah WinSCP (eh ternyata free ya..), kemudian setting koneksi langsung ke server A, tapi kali ini pilihlah Advanced options dan Connection:Tunnel. Di Tunneling via SSH, isi dengan informasi koneksi ke s erver B. Kemudian, untuk lebih nyaman lagi, gunakan Notepad++ sebagai text editor, coba pilih menu 'Preferences' dan isikan seperti pada gambar dibawah ini .

PEAR SMTP

Hari ini aku melanjutkan apa yang dikerjakan Neni dengan PEAR::Mail di server e-recruitment (yang sebetulnya.. pekerjaan saya ya harusnya :) ). Status sebelumnya, PEAR::Mail mampu mengirim ke smtp ingoing milik telkom. Tetapi tidak dapat mengirimkan email outgoing ( ke luar telkom) karena smtp yang itu kan.. memang khusus untuk email masuk. Untuk dapat mengirimkan email keluar, kita butuh outgoing SMTP. Kalo dari dalam Telkom, tinggal pakai SMTP-nya domino, berikan authentication sesuai username & password dari account email internal yg dipakai. Nah, kalo dari luar..(servernya kan Internet-facing, technically dia ada di luar intranet Telkom) kita butuh outgoing SMTP yang bisa dipakai anonymously (atau kalau gak, username&password yg bisa dipakai untuk ngirim email). Siang ini dapat bocoran nama salah satu anonynous SMTP punya telkom yang bisa digunakan. Tetapi percobaan2 awal gagal terus. Ga tau kenapa. Kemudian kuaktifkan error logging PHP (lihat set_error_handler di PHP manua

How to Recreate MySQL System Tables

You might wonder, why would I need to recreate MySQL system tables. Well, the case is that my WoS folder has gotten pretty big, and I lost my original WoS.zip file. And the website doesn't carry WoS anymore. (now its called MoWes, and for some reason I still trust the old' WoS than the MoWes). I need to copy this to another computer, without the 270 MB-or-so MySQL datafiles. So the solution is-> just copy them, excluding the data folder inside mysql folder. But the newly copied MySQL won't start. It created new datafiles all right, but it still won't start. Examining the log files, it said something about missing grant tables. So I added this option when starting mysql: bin\mysqld-nt --skip-grant-tables This forced it to start even without grant tables. Now, the grant tables still must be created, and after browsing for a while I found out that we could initialize the grant tables using these scripts: mysql_system_tables.sql mysql_system_tables_data.sql fill_help_ta

PHP modules' DLL hell

Image
In Windows platform, the webserver package of my choice is MoWes (mobile webserver). In the past it is called WoS (Webserver on a stick). We just copy the folder from one computer to another, and run its exe-file, instantly we have a Apache - MySQL - PHP triad running without any installation hassles. But recently, I copied the MoWes onto two servers, and I cant seem to load both PHP_OCI8 and PHP_LDAP modules. After a few wrong turns, finally I used Microsoft Visual Studio's Dependency Walker tool. And voila - both of the DLL's problems were shown before my eyes. PHP_LDAP's problem was SSLEAY not installed. PHP_OCI8's problem was that the OCI.DLL is in the AMD 64-bit architecture (equivalent to Intel EM64T architecture) while the php/apache system is in 32-bit architecture. Now, where did I keep the downloaded the oracle instant client for win32..

Strange Oracle Problems: Oracle database won't start

One of the desktops in my office is being used as a Server. It has Quad-core AMD Phenom X4, and 4 hard drives in Linux Software RAID 5 Configuration (Ok, it is a strange beast, because I was the one who chose the components and bought the system). We installed Centos 4.7 (64-bit), Oracle 10g, and SAP Netweaver. It is very much a hassle to set up, the 64-bit Oracle. But recently a strange error pops up when starting the Oracle database. It says, the shared_pool_reserved_size is out-of-bound (too large). The current setting is about 100 MB. At first, I wonders is this related to problems occured before, because the mixups between 64-bit and 32-bit parts of the Oracle RDBMS. I thought, the valid range of shared_pool_reserved_size is determined by the architecture (that is-64 or 32 bit). Then, after some readings and pondering, I found out that not the shared_pool_reserved_size that was incorrect, it was the shared_pool. And it has nothing to do with the 64-bit architecture. Current setti

MySQL & Oracle back-and-forth

Do you know that Oracle database could be migrated into MySQL database, and vice-versa? Use Oracle's Schema Migration functionality in the free Oracle SQLDeveloper to migrate from MySQL to Oracle, use MySQL Migration Toolkit to migrate from Oracle to MySQL. Hint: it is easier to migrate from Oracle to MySQL, than from MySQL to Oracle.. but it is also easier than migrating from Oracle 10g to Oracle 9.2.. If anyone interest, I could post the details..