Thursday, January 27, 2005

PHP: PEAR and PEAR::SOAP instalation. Quick start

Install PEAR

Download file go-pear.php from http://go-pear.org/ and placed in php installation directory, example c:\wamp\php

Open command line editor and type

C:\wamp\php>php go-pear.php

After PEAR installed then type

C:\wamp\php>pear install Mail_Mime HTTP_Request Net_URL Net_DIME SOAP

If you are behind the firewall then you will get

Warning: fsockopen(): unable to connect to pear.php.net:80 (Unknown error) in RP
C.php on line 464
XML_RPC_Client: Connection to RPC server pear.php.net failed

It happened because you haven't set your proxy. You can see your PEAR configuration by typing

C:\wamp\php>pear config-show
CONFIGURATION:
==============
PEAR executables directory bin_dir C:\wamp\php
PEAR documentation directory doc_dir C:\wamp\php\pear\docs
PHP extension directory ext_dir C:\php5
PEAR directory php_dir C:\wamp\php\pear
PEAR Installer cache directory cache_dir C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\pear\cache
PEAR data directory data_dir C:\wamp\php\pear\data
PHP CLI/CGI binary php_bin c:\wamp\php\php.exe
PEAR test directory test_dir C:\wamp\php\pear\tests
Cache TimeToLive cache_ttl 3600
Preferred Package State preferred_state stable
Unix file mask umask 0
Debug Log Level verbose 1
HTTP Proxy Server Address http_proxy
PEAR server master_server pear.php.net
PEAR password (for password
maintainers)
Signature Handling Program sig_bin c:\gnupg\gpg.exe
Signature Key Directory sig_keydir C:\WINNT\pearkeys
Signature Key Id sig_keyid
Package Signature Type sig_type gpg
PEAR username (for username
maintainers)

Set http_proxy varible configuration :

C:\wamp\php>pear config-set http_proxy http://3.193.197.2:8080

After that try to install required and SOAP package again

C:\wamp\php>pear install Mail_Mime HTTP_Request Net_URL Net_DIME SOAP
downloading Net_URL-1.0.14.tgz ...
Starting to download Net_URL-1.0.14.tgz (5,173 bytes)
.....done: 5,173 bytes
No release with state equal to: 'stable' found for 'SOAP'

The SOAP package is not stable yet. You need to set your prefered
package state to beta if you want to use this package.

C:\wamp\php>pear config-set preferred_state beta

C:\wamp\php>pear install Mail_Mime HTTP_Request Net_URL Net_DIME SOAP
downloading Mail_Mime-1.2.1.tgz ...
Starting to download Mail_Mime-1.2.1.tgz (15,268 bytes)
.....done: 15,268 bytes
downloading HTTP_Request-1.2.4.tgz ...
Starting to download HTTP_Request-1.2.4.tgz (13,212 bytes)
...done: 13,212 bytes
downloading Net_URL-1.0.14.tgz ...
Starting to download Net_URL-1.0.14.tgz (5,173 bytes)
...done: 5,173 bytes
downloading Net_DIME-0.3.tgz ...
Starting to download Net_DIME-0.3.tgz (6,740 bytes)
...done: 6,740 bytes
downloading SOAP-0.8.1.tgz ...
Starting to download SOAP-0.8.1.tgz (69,177 bytes)
...done: 69,177 bytes
install ok: Net_DIME 0.3
install ok: Mail_Mime 1.2.1
install ok: Net_URL 1.0.14
install ok: HTTP_Request 1.2.4
install ok: SOAP 0.8.1


After PEAR::SOAP installed sucessfuly, try to use PEAR::SOAP library for web service client

<?
require_once 'SOAP/Client.php';
$wsdl_url = 'http://soap.amazon.com/schemas3/AmazonWebServices.wsdl';
$proxyParams = array('proxy_host' => '3.193.12.2','proxy_port' => 8080);
$WSDL = new SOAP_WSDL($wsdl_url);
$client = $WSDL->getProxy();
$params = array(
'manufacturer' => "O'Reilly",
'mode' => 'books',
'sort' => '+title',
'page' => 1,
'type' => 'lite',
'tag' => 'trachtenberg-20',
'devtag' => 'XXXXXXXXXXXXXX',
);
$books = $client->ManufacturerSearchRequest($params);
?>


Some Links/Tutorial on PEAR::SOAP implemantation :
A PHP Web Services Client
PEAR::SOAP Server Quick Start
PEAR::SOAP Client Fast Start

Wednesday, January 26, 2005

Software instalasi Apache + MySQL + PHP + lain-lain pada Windows

Sebenarnya instalasi Apache + MySQL + PHP pada sistem operasi Windows cukup mudah, tapi agak ribet karena kita biasanya ingin cepat dan tidak mau report untuk edit-edit file konfigurasi. Beberapa tools untuk instalasi Apache + MySQL + PHP + lain-lain pada sistem operasi Windows yang mempermudah/mempercepat dilist dibawah ini dan dikomentari sedikit

WAMP
Bagus (+++), instalasinya mudah, memiliki service manager dan memiliki cukup add-on yang biasa diperlukan. Versi terbarunya mempaketkan Apache1.3, PHP5, MySQL4, PHPmyadmin, SQLitemanager. Jika kita perlu Apache2, PHP4, Perl, Zend optimizer ataupun webalizer, kita dengan mudah bisa menginstal add-on-nya.

phpdev
Bagus dan inovatif (+++), sayangnya untuk uninstalnya tidak bisa sekali klik, kita harus delete manual file-filenya. Software ini membundel Apache 1.3, Apache 2, PHP4, MySQL4, phpmyadmin, AnalogX php.ini configurator, PHP-GTK 0.51, PhpWebsite. Yang menjadi nilai lebih adalah software ini dibuat dengan PHP (kecuali installernya menggunakan NullSoft) dan memberikan aplikasi PHP untuk desktop dengan menggunakan PHP-GTK baik itu aplikasi yang sekedar contoh-contoh dan juga aplikasi network tools seperti ping, tracet, dll.

XAMPP
Cukup bagus (++) dan up todate tapi instalasi dilakukan pada command prompt (text-based), memiliki beberapa add-on yang bisa kita tambahkan seperti Perl(mod_perl), Python(mod_phyton) bahkan Tomcat dan Cocoon.

easyphp
Bagus (++), tapi karena buatan orang Perancis jadi untuk default instalasi dan tools configurasinya pun dalam bahasa Perancis. Software ini mempaket PHP 4 Apache 1.3 danMySQL 4. Versi terbarunya mungkin akan menggunakan Apache 2 dan PHP 5.

PHPTriad
Kurang bagus (+). Dulu phptriad cukup populer tapi sekarang projectnya berhenti (tidak di-maintain lagi) sehingga tidak up to date. Software ini berubah nama menjadi Sokkit yang tidak gratis walaupun versi lamanya masih bisa kita download.

FoxServ
Lumayan (-). FoxServ rilis terakhir adalah versi 3.1 Beta 1 (January 16, 2003). Dari versi dan tanggal rilisnya kita bisa terlihat bagaimana foxserv tidak up to date sehingga lebih baik menggunakan lain ;)

List lengkap Apache, PHP, MySQL/database lainnya bisa dilihat di sini

Spyware tools

Spyware adalah software yang bersifat iklan (adware), menambil informasi personal, mengubah konfigurasi tanpa 'sepengetahuan' pengguna komputer. Spyware sudah seperti virus, bisa sangat mengganggu dan bahkan merusak. Gara-gara spyware biasanya Internet Explorer kita sering hang, default home address jadi tidak bisa diubah, menjadi lambat saat browsing, muncul toolbarsering tiba2 muncul pop-up windows, dan lain-lain. Biasanya orang yang awam dengan internet komputernya mudah terjangkit spyware karena berkunjung ke situs-situs porno kemudian tanpa sadar mendownload/menginstal software-software shareware tanpa membaca agreement.

Karenanya software spyware remover pun banyak dibuat. Kebanyakan tidak gratis, tapi ada juga yang freeware. Software spyware yang baik tentu saja menyediakan update spyware definition, karena spyware seperti juga virus terus bertambah. Spyware biasanya mengecek file-file cache browser atau temporary internet files, file-file cookies, windows registry.

Salah satu software spyware yang bisa jadi pilihan adalah AntiSpyware dari Microsoft. Selain bisa scan spyware yang ada di komputer, AntiSpyware juga menjaga komputer kita dari spyware. Jadi tidak sekedar scanner dan remover tapi juga prevent protection. Walaupun masih beta (25 Jan 2005) tapi software ini cukup baik dan lengkap.

AntiSpyware bisa di download http://www.microsoft.com/athome/security/spyware/software

Tuesday, January 25, 2005

Java: GSM Short Messaging System (SMS)

Setelah hampir setaun pernah mengerjakan proyek dengan teknologi SMS menggunakan VisualBasic. Kali ini saya harus mulai mengerjakan project dengan teknologi yang sama menggunakan Java.

Sama dengan project dulu, kali ini juga akan menggunakan GSM modem yang tersambung dengan PC lewat serial port. Solusi yang mudah tapi implementasi yang sulit, dalam pikiran saya sudah penuh dengan requirement teknis yang perlu diimplementasikan, seperti: harus bisa menggunakan beberapa modem, bagaimana memilih modem yang available, bagaimana mengatur queue, dll.

Dulu saya mulai dari 0. Mulai dari bikin library sendiri untuk menangani format PDU (nyaris detail) sampai ke level arsitektur yang lebih tinggi menggunakan XML untuk integrasi antara aplikasi-aplikasi yang menggunakan sms engine yang saya buat. Sekarang tidak dari 0, dan tidak mau dari 0. Jadi mulai mencari Java library/API yang sudah ada, beberapa kandidat yang saya dapatkan dari Google.com adalah:

1. jSMSEngine http://jsmsengine.sourceforge.net
2. Java SMS Library http://javasmslib.sourceforge.net
3. SMS Transceiver (SMST) http://www.wrankl.de/SMST/SMST.html
4. smsJ http://smsj.sourceforge.net (belum support GSM phone/modem)

Memang sebenarnya tidak perlu menggunakan Java Library, bisa saja menggunakan aplikasi/tools/library lain asal nantinya bisa diintegrasikan dengan aplikasi Java dan tentu saja saya ingin yang FREE. Seperti yang paling bagus dari ke-4 pilihan itu adalah jSMSEngine...

Friday, January 21, 2005

PHP: SOAP Web Service

Sedikit kembali ke PHP... beberapa hari ini...

Web service tidak selalu menggunakan SOAP. Selain SOAP kita bisa menggunakan XML-RPC, atau REST yang lebih simpel. SOAP lebih banyak digunakan dan library-nya pun lebih banyak tersedia. Library SOAP untuk PHP, kita bisa gunakan PEAR::SOAP, NuSOAP, PHP-SOAP atau native exstension library yang sudah ada di PHP5.

PEAR::SOAP saat ini belum ada versi stabilnya tapi saya sudah coba tidak ada masalah untuk digunakan di production. PEAR::SOAP adalah library yang ditulis dengan PHP. Sebelum menginstall PEAR::SOAP, library PEAR harus kita install dulu, kemudian package SOAP dan package dependencies lainnya. Contoh code web service client dengan PEAR::SOAP :
<?
require_once 'SOAP/Client.php';

$wsdl_url = 'http://soap.amazon.com/schemas3/AmazonWebServices.wsdl';

$proxyParams = array(
'proxy_host' => '3.19.19.2',
'proxy_port' => 8080
);

$WSDL = new SOAP_WSDL($wsdl_url, $proxyParams);
$client = $WSDL->getProxy();

$params = array(
'manufacturer' => "O'Reilly",
'mode' => 'books',
'sort' => '+title',
'page' => 1,
'type' => 'lite',
'tag' => 'trachtenberg-20',
'devtag' => 'XXXXXXXXXXXXXX',
);

$books = $client->ManufacturerSearchRequest($params);

//print_r($books);

if ($books->Details) {
foreach ($books->Details as $hit) {
$ProductName = $hit->ProductName;
$Authors = join(' and ', $hit->Authors);

print <<< _HTML_
<div style="clear:left; width: 300px; padding:5px; margin:5px; background:#ddd;">
<a href="$hit->Url"><image src="$hit->ImageUrlSmall" alt="$ProductName" align="left"></a>
<b>$ProductName</b><br/>
By $Authors<br/>
Amazon.com Price: $hit->OurPrice<br/>
</div>
_HTML_;
}
} else {
echo "<b>". $books->userinfo ."</b>";
echo "<br/>";
echo $books->message;

}


?>


NuSOAP kelihatannya juga baik dan sudah dicoba tapi saya belum bisa bandingkan dengan librari yang lain. NuSOAP terbaru dapat di download menggunakan CVS atau didownload manual di http://cvs.sourceforge.net/viewcvs.py/nusoap/. NuSOAP tidak memiliki dokumentasi, API dokumentasinya saja tidak baik. Tapi dengan contoh-contoh kode kita dapat dengan mudah menggunakannya. File-file library NuSOAP terdiri dari :

class.nusoap_base.php
class.soap_fault.php
class.soap_parser.php
class.soap_server.php
class.soap_transport_http.php
class.soap_val.php
class.soapclient.php
class.wsdl.php
class.wsdlcache.php
class.xmlschema.php
nusoap.php
nusoapmime.php


Contoh code web service client menggunakan NuSOAP :

<html>
<head>
<title>Amazon Keyword Search</title>
</head>
<body>
<?
#Use the NuSOAP php library
require_once('nusoap.php');

#Set parameters
$parameters = array('keyword' => $HTTP_GET_VARS['keyword'],
'type' => 'lite',
'page' => '1',
'mode' => 'books',
'tag' => 'insert associate tag',
'devtag' => 'insert developer token');

#Create a new SOAP client with Amazon's WSDL
$soapclient = new soapclient('http://soap.amazon.com/schemas2/AmazonWebServices.wsdl','wsdl', '3.19.19.2', '8080');

#added by ejlp12
$err = $soapclient->getError();
if ($err) {
// Display the error
echo '<p><b>Constructor error: ' . $err . '</b></p>';
// At this point, you know the call that follows will fail
}
//$soapclient->setHTTPProxy('3.193.197.2', '8080');

$proxy = $soapclient->getproxy();

#query Amazon
$results = $proxy->KeywordSearchRequest($parameters);

//echo 'Request: <xmp>'.$proxy->request.'</xmp>';
//echo 'Response: <xmp>'.$proxy->response.'</xmp>';

#Results?
if (is_array($results['Details'])) {
print "<p>Search for <b>" . $HTTP_GET_VARS['keyword'] . "</b>" .
" found " . $results['TotalResults'] . " results." .
" <br>Here are the first " . count($results['Details']).".".
" </p><ol>";
foreach ($results['Details'] as $result) {
print
"<li><b>" . $result['ProductName'] . "</b>" .
"<br /> by " . $result['Authors'][0] .
" <a href='" . $result['Url'] . "'>" . $result['OurPrice']. "</a><br>";
}
print "</ol>";
}

#No Results
else {
print "Your Amazon query for '" . $HTTP_GET_VARS['keyword'] .
"' returned no results";
}
?>
</body>
</html>


Sedangkan PHP-SOAP adalah extension library (dibuat dengan bahasa C sehingga performansinya lebih baik/cepat). Sayangnya baru merilis versi alpha-nya, dan karena dalam PHP5 SOAP extension library sudah ada (walau masih experimental) maka kemungkinan PHP-SOAP ini tidak akan banyak digunakan.

Code diatas diambil dari beberapa situs dan diedit seperlunya (ditambahkan agar dapat digunakan pada server yang ada dibelakang http proxy).

Followers