Aug 22, 2008

Set PHP with JasperReport (WIN32)

มาล่ะครับผม บทความร้อนๆ มาส่งแล้วจ้า

หลังจากลองทำดูเกือบสองอาทิตย์ และแล้วเหมือนฟ้าจะเป็นใจ

ด้วยความที่ว่าวันนี้ต้องปิดโปรเจกนี้ล่ะ และมันก็ได้ขึ้นมาซะงั้น

ลั้นล๊าาา ฮ่ะๆ มีความสุข เหอๆ


สิ่งที่คุณควรจะมีและติดตั้งไว้แล้ว มีดังนี้

ติดตั้งเจ้าตัว PHP และ JAVA Bridge จากบทความก่อนหน้านี้ซะก่อนนะ

และอย่าลืม ดูที่ไฟล์ php.ini นะครับ ในส่วนของด้านล่างนี้

-----------------------------------------------------
java.library.path="C:\php\ext\lib"
-----------------------------------------------------

ซึ่งจะเป็นที่เก็บ lib ของ iReport นะครับ

ที่สำคัญปิด Service ของ Apache ซะก่อนนะครับ


สร้างห้อง ชื่อว่า lib ใน PHP จะเป็นแบบนี้ C:\PHP\ext\lib

โหลด iReport-3.0.0.zip มาไว้ในเครื่อง และเอา lib ในนั้นทั้งหมด

วางไว้ในห้องที่พึ่งสร้างคือ C:\PHP\ext\lib


ใช้ iReport มาแล้วก็วาดๆๆ จนได้ไฟล์ .jrxml ขึ้้นมาซักไฟล์นะ

แล้วนำไปวางที่ www นะครับ


ตรวจสอบว่ามีไฟล์ mysql-connector-java-5.1.6-bin.jar

ในห้อง C:\PHP\lib\ext หรือยัง ถ้ายังก็โหลดมาไว้ เช่น

นำ mysql-connector-java-5.1.6-bin.jar

จาก mysql-connector-java-5.1.6.tar.gz

วางไว้ใน C:\PHP\ext\lib

(กรณีนี้คือติดต่อ กับ mySQL)


สร้างไฟล์ขึ้นมาเพื่อต่อฐานข้อมูล

ลองดูโค๊ดจาก class JdbcConnector ในลิงค์ด้านล่างนะครับ

http://charly-clairmont.developpez.com/tutoriels/php-jasper-reports/

แนะนำให้ comment code ในส่วนของ method main นะครับ

และส่วนของบรรทัดแรก comment code ที่เป็นการประกาศ package

จากนั้น compile code จะได้ JdbcConnector.class มาหนึ่งไฟล์

นำไปวางไว้ที่ C:\PHP\ext\lib


สร้างไฟล์ PHP ในหัวข้่อ "PHP jasper report Library" จากลิงค์
http://zeronine.org/lab/index.php/Using_Jasper_report_with_PHP

$java_locale->setDefault($java_locale->KOREAN); เปลี่ยนเป็น
$java_locale->setDefault($java_locale->ENGLISH);

สร้างไฟล์สำหรับทดสอบ ในหัวข้อ "Test loader" จากลิงค์เดียวกัน

define('REPORT_COMPILE', false); เปลี่ยนเป็น
define('REPORT_COMPILE', true);

$jasperLib = "C:\PHP\ext\lib"; ให้ระบุไปยังที่ๆ เรานำ lib iReport มาไว้
$reportPath = "C:\Appserv\www"; ให้ระบุไปยังที่ๆ เก็บไฟล์ .jrxml

เปลี่ยนรูปแบบการรับตัวแปร จาก

$_REQUEST['report'] เป็น $report
$_REQUEST['type'] เป็น $exportType

ทั้งนี้อย่าลืมใส่ค่าตัวแปรด้วย
อันนี้คงจะพอเข้าใจและประยุกต์กันได้
จึงไม่ขออธิบายนะครับ

Aug 18, 2008

PHP/JAVA Bridge step by step! (win32)

หลายๆ คน คงเคยคิดที่จะนำภาษาที่แตกต่างกัน

มาใช้ร่วมกันในงานของตนเองนะครับ

บทความนี้ จะนำเสนอ เกี่ยวกับขั้นตอนและวิธีการ

ในการทอดสะพานเชื่อมระหว่างภาษา PHP และภาษา JAVA

โดยในที่นี้ จะให้ SERVER เป็นภาษา PHP และรันไฟล์ที่เป็น *.jar

ของ JAVA ทั้งนี้ *.jar เป็น java package ที่ถูกสร้างขึ้น

โดยการรวมกันของ *.class หลายๆ ไฟล์มารวมกับในลักษณะของ

การบีบอัดไฟล์ ซึ่งสามารถเปิดดูด้วยโปรแกรมบีบอัดทั่วไป

เช่น winRAR หรือ winZip


สิ่งที่คุณต้องมี (โปรแกรมที่ผมลงแล้วสำเร็จ)

apache_1.3.33-win32-x86-no_src.exe

php-5.1.4-Win32.zip

mysql-5.0.22-win32

jdk-6u1-windows-i586-p.exe

อย่าลืมกำหนด Path ต่างๆ ให้ จาวาสามารถทำงานได้นะครับ

ตัวอย่างตามนี้

---------------------------------------------------------
CLASSPATH = .
JAVA_HOME = C:\Program Files\Java\jdk1.5.0_10
PATH = %PATH%;%JAVA_HOME%\bin
---------------------------------------------------------

ลงสี่โปรแกรมนี้ให้สามารถทำงานได้ก่อน แล้วจึงโหลด

windows-php-java-bridge_3.2.1_j2ee.zip

แล้วทำตามขั้นตอนดัีงนี้

นำไฟล์ JavaBridge.jar จาก

windows-php-java-bridge_3.2.1_j2ee.zip\WEB-INF\lib

วางไว้ที่ C:\PHP\ext

และนำไฟล์ java-x86-windows.dll จาก

windows-php-java-bridge_3.2.1_j2ee.zip\WEB-INF\cgi

ไปวางไว้ที่ C:\PHP\ext เช่นกัน แต่ให้ทำการเปลี่ยนชื่อ

ไฟล์ดังกล่าวเป็น php_java.dll

ขั้นตอนต่อไปนี้ ควรจะหยุดการทำงานของ Apache ไว้ก่อนนะครับ

แก้ไขไฟล์ php.ini ใน C:/php

ถ้ายังไม่มีก็เพิ่มเข้าไปตามตัวอย่างด้านล่าง

แต่ถ้ามีแล้วก็ให้แก้ไขให้เป็นค่าตามด้านล่างเช่นกัน
-------------------------------------------------------------
extension_dir = C:\php\ext
extension = php_java.dll
-------------------------------------------------------------

และในส่วนของ module setting ใน php.ini เพิ่มข้างล่างนี้เข้าไป

โดยปรับให้เหมาะสมกับเครื่องของคุณ นะครับ

------------------------------------------------------------------------------------
[java]
java.java_home = "C:\Program Files\Java\jdk1.6.0_01\bin"
java.java = "C:\Program Files\Java\jdk1.6.0_01\bin\javaw.exe"
java.class.path = "C:\php\ext\JavaBridge.jar"
;java.library="C:\Program Files\Java\jdk1.6.0_01\jre\bin\client\jvm.dll"
java.library.path="C:\php\ext\lib"
;java.hosts = "127.0.0.1:8080"
;java.servlet = on
java.log_level = 2
------------------------------------------------------------------------------------

สร้างไฟล์เพื่อทดลองการต่อจาวา ชื่อว่า java1.php () ภาษา PHP นะครับ
------------------------------------------------------------------------------------

// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');

// demonstrate property access
echo 'Java version=' . $system->getProperty('java.version') . '\n';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '\n';
echo 'OS=' . $system->getProperty('os.name') . ' ' .
$system->getProperty('os.version') . ' on ' .
$system->getProperty('os.arch') . '\n';

// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo $formatter->format(new Java('java.util.Date'));

----------------------------------------------------------------------------------

ทดลองรัน เพื่อแสดงผลลัพธ์ ถ้าทำตามที่กล่าวมาก็จะสามารถต่อได้

ข้อมูลเ้พิ่มเติม สืบค้นได้ที่

http://www.dsl.uow.edu.au/~sk33/php5java.htm

Aug 15, 2008

iReport opensource tools

หลายครั้งที่ผมติดปัญหาโดยที่สามารถค้นตามเว็บแล้วก็สามารถแก้ปัญหาได้

แต่ครั้งนี้มันต่างออกไป เนื่องจากความรู้และประสบการณ์พื้นฐานของผมยังน้อยนิดนัก

หลายอย่างที่เป็นปัญหาเหมือนเส้นผมบังภูเขา ก็พบเจออยู่บ่อยขึ้นเรื่อยๆ

ดังนั้น เมื่อผมอยู่ในสถานะของผู้เผยแผ่ความรู้ ผมจึงเขียนบทความเป็นเรื่องๆ

เพื่อให้ชัดเจน และง่ายต่อการติดตาม


เคยบอกกับน้องๆ หลายคนว่า

"การเขียนโปรแกรมเหมือนเกม จิ๊กซอ มันต้องค่อยๆ ประกอบกัน

จนเป็นงานที่สมบูรณ์ได้ในที่สุด ซึ่้งความรู้ก็เช่นกัน

เมื่อเรารู้ว่ามีความรู้อะไรใกล้เคียงกันบ้าง เราก็สามารถต่อกันติดได้ง่าย"



iReport เป็นส่วนหนึ่งของโครงการ opensource โดยเป็นเครื่องมือที่ช่วยจัดการรายงาน

ตัวโปรแกรม iReport นั้นพัฒนาบน Platform Java ซึ่งหากจะนำมาใช้ก็ต้องติดตั้ง Java

ความสามารถหลักๆ คือ

1. ออกแบบรูปแบบรายงานได้

2. ดึงข้อมูลจากฐานข้อมูลมาใช้ในรายงานได้

3. ทำกราฟ และคำนวณข้อมูลในรายงานได้

4. นำข้อมูลออกเป็นไฟล์ประเภทต่างๆ เช่น PDF, XLS ฯลฯ

5. ไฟล์ที่ถูกสร้างและใช้ออกแบบจะเป็นลักษณะเอกสาร XML มีนามสกุลว่า *.jrxml

6. เมื่อถูก Compile ข้อมูลที่ดึงมาและการออกแบบจะถูกเก็บลักษณะ *.jasper

7. อื่นๆ


การออกแบบและการใช้งานเบื้องต้นนั้น สามารถตามลิงค์ข้างล่างนี้เพื่อไปศึกษาได้

http://www.cise.ufl.edu/~otopsaka/CIS4301/ReportDemo/PrepareAReport.html

ทดลองออกแบบ และ Download มาใช้ ที่ลิงค์

http://www.jaspersoft.com/ir_opensource_download.html

Aug 13, 2008

Tip edit plus for programmer

Edit plus เป็นเครื่องมือที่ โปรแกรมเมอร์หลายๆ คนใช้ในการเขียนโปรแกรม

ผมเองก็เช่นกันก็ชอบที่จะทำงานโดยที่ใช้เครื่องมืออย่าง Edit plus

เนื่องจาก เวลาเขียนโค๊ดนั้น จะมีการแบ่งสีสัน ที่ชัดเจน

ทำให้มองเห็นความแตกต่างของโค๊ดได้ง่าย

และเนื่องจากเป็นโปรแกรมที่มีขนาดเล็ก จึงสามารถย่อขยายหน้าต่างสลับไปมา

ระหว่างช่วงที่เรา ดูการออกแบบ (Design) และแก้โค๊ด (Coding)

ทั้งนี้ โปรแกรม Edit plus มีลักษณะคล้ายคลึงกับ Notepad ของ Microsoft Windows

แต่ความสามารถต่างกันลิบลับเลยทีเดียว


Edit plus สามารถทำงานได้หลายๆ ไฟล์พร้อมกัน โดยที่สามารถกำหนดได้ว่า

จะให้มีการ Backup File ไว้ ด้วยหรือไม่ มีความยืดหยุ่นเรื่องของการกำหนด

นามสกุลของไฟล์ (File Type) และกำหนดพื้นที่เก็บไฟล์ Backup ได้ด้วย


สำหรับวิธีการ Config Edit plus for java นั้นมีผู้เขียนไว้แล้วมากมาย

ฉะนั้นผมของนำลิงค์ที่น่าสนใจ มาวางไว้ให้ไป อ่านต่อกันเอาเองตามข้างล่างนี้

http://enum.exteen.com/20070614/editplus-to-compile-java

และวิธีการ Config Edit plus for C++ ก็ตามข้างล่างนี้เช่นกัน

http://www.thaicyberpoint.com/ford/blog/id/156/


ต่อมาก็จะเป็นการแนะนำ เทคนิค เล็กๆ น้อยๆ นะครับ

ตัว Edit plus เท่าที่ผมได้ทดลองใช้มา เกือบจะสี่ปีแล้ว

จึงได้เทคนิคหลายๆ อย่างเพิ่มเข้ามา ซึ่งมันเป็นความสามารถที่มีอยู่แล้ว

เพียงแต่ผู้คนส่วนใหญ่นั้นยังไม่ได้ลองเล่นดูเท่านั้นเอง


1. กำหนดให้ เมื่อ คลิกขวา view source code ที่ Internet Explorer

จะไปแก้ที่ Edit plus แทนที่จะเป็น Notepad

ให้ทำการ เปิด Edit plus เลือก Tools => Preferences

มองด้านซ้ายมือที่กล่อง Categories => General

มองด้านขวา ติ๊กถูกที่กล่องหน้าข้อความ Use Editplus in Internet Explorer

คลิก OK

2. ค้นคำได้อย่างรวดเร็วด้วยการกด คีย์ลัด F3 (ค้นคำเดิม) หรือ Alt+F3 (ค้นคำใหม่)

3. ตรวจสอบอักขระพิเศษได้ด้วยการใช้ คีย์ลัด Alt+Shift+1 และปิดก็กดซ้ำอีกครั้ง

4. ดูหมายเลขบรรทัด ใช้คีย์ลัด Ctrl+Shift+L

5. ดูขอบเขตวงเล็บและปีกกา (Scope) คลิกที่ View => Matching Brace

6. ดูแท็บและช่องว่างระหว่างข้อความ ใช้คีย์ลัด Alt+Shift+i

7. การตัดคำไม่ให้กว้างเกินหนึ่งหน้าจอ ใช้คีย์ลัด Ctrl+Shift+W

ลองนำเทคนิคเหล่านี้ไปใช้ดู แล้วจะรู้สึกได้เองว่าเขียนโปรแกรมได้เร็วขึ้นกว่าเดิมมาก...

Blog Comment

บทความที่ได้รับความนิยม