วิธีสลับสีแถวข้อความใน Crystal Report เมื่อมีการจัด Group

ในการอ่านหรือดูรายงานหนึ่ง ๆ นั้น แม้ข้อมูลจะมีการจัดเป็นข้อ ๆ แล้วหรือมีการจัดกลุ่มข้อความนั้นแล้วก็ตาม แต่เมื่อข้อมูลมีจำนวนมาก ก็อาจทำให้เราวิงเวียน ตาลายได้ ดังนั้นในฐานะผู้จัดทำรายงานคนหนึ่ง ก็พยายามหาทางให้ผู้ใช้สามารถอ่านรายงานได้ง่าย โดยการใส่สีข้อความสลับบรรทัดนั่นเอง    โดยปกตินั้น การใส่สีสลับบรรทัดสามารถทำได้โดยวิธีง่าย ๆ นั้นคือ if row mod 2 = 0 then   //ตรวจสอบว่าแถวนั้นเป็นแถวคู่หรือไม่    color(240,240,240)    //ถ้าใช่แสดงสี else crNocolor             //ถ้าไม่ใช่ไม่ต้องแสดงสี ซึ่งจะทำให้ได้ผลลัพธ์ดังรูป จากรูปจะเห็นได้ว่า ข้อมูลมีการสลับสีแล้ว แต่เนื่องจากข้อมูลถูก Group จะพบว่า ข้อมูลที่มี 1 record ก็มีการสลับสีด้วย ซึ่งผู้เขียนไม่ต้องการให้มีการสลับสีกรณีที่ข้อมูลมีเพียง 1 ดังนั้นผู้เขียนจึงปรับวิธีการเขียนใหม่ดังนี้ เพิ่ม Formula Fields ตัวที่ 1 ตั้งชื่อว่า ffRowCount เขียน Code ภายในดังนี้ shared numbervar rowcnt;rowcnt := rowcnt+1; ตัวที่ 2 ตั้งชื่อว่า ffRowReset เขียน Code ภายในดังนี้ shared numbervar rowcnt:rowcnt := 0; นำตัวที่ 1.1 ใส่ไว้ในส่วนของ Details และเลือก Suppress นำตัวที่ 1.2 ใส่ไว้ในส่วนของ Group 2(คณะ) เนื่องจากต้องการให้มีการ reset เมื่อมีการเปลี่ยน Group และเลือก Suppress ส่วนของ Details ให้จัดการดังนี้ Click ขวา เลือก Section Expert Click เลือก Tab Color ทำเครื่องหมาย / หน้า Background Color กดปุ่ม x-2 หลักช่องสี เขียน Code ดังนี้ shared numbervar rowcnt; if remainder(rowcnt,2) = 0 then    color(240,240,240) else crNocolor จากนั้นลอง run ผลลัพธ์ดังรูป จะเห็นได้ว่า ข้อมูลที่มีเพียง 1 record นั้นจะไม่มีสี   ผู้เขียนหวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อยสำหรับผู้อ่านนะคะ แล้วพบกันใหม่ตอนหน้าค่ะ 

Read More »

Juju #04 – วิธีทำให้ WordPress กระจายงานไปยัง MySQL Slave ด้วย HyperDB

ต่อจาก Juju #03 – วิธีสร้าง Load Balance MySQL เมื่อมี MySQL Server มากกว่า 1 ตัว ซึ่งทำการ Replication กัน (ในตอนนี้ 2 ตัว คือ Master กับ Slave) ซึ่งให้ความสามารถในเรื่อง [1] Data-Security : เมื่อข้อมูลถูก Replicate ไปที่ Slave แล้ว เราสามารถหยุดการทำงานของ Slave เพื่อทำการสำรองข้อมูลได้ โดยไม่กระทบประสิทธิภาพการทำงานของ Master Analytics: ทำการวิเคราะห์ข้อมูลต่างๆได้ที่ Slave โดยไม่กระทบประสิทธิภาพการทำงานของ Master Scale-Out Solutions: เมื่อมี Slaves หลายตัว ทำให้สามารถกระจายงานในด้าน Read เพื่อเพิ่มประสิทธิภาพ โดยการแก้ไขข้อมูล จะทำที่ Master เท่านั้น ในบทความนี้ จะกล่าวถึงวิธีการ Scale-Out Solutions ของ WordPress เท่านั้น โดยใช้ Plugin ชื่อ HyperDB HyperDB [2] เป็น Database Class ที่ใช้แทนที WordPress built-in database functions โดยจะทำให้ WordPress สามารถติดต่อกับ MySQL ได้หลายเครื่อง โดยที่สามารถกำหนดได้ว่าจะ Write ไปยัง Master และ Read จากทั้ง Master และ Slaves อีกทั้งยังสามารถ Failover ได้อีกด้วย วิธีการติดตั้ง HyperDB ที่ WordPress ใช้คำสั่ง wget https://downloads.wordpress.org/plugin/hyperdb.1.2.zip sudo apt-get install unzip sudo unzip hyperdb.1.2.zip ย้ายไฟล์ hyperdb/db-config.php ไปยังที่ Directory เดียวกันกับ wp-config.php (ในที่นี้คื่อ /var/www/) sudo cp hyperdb/db-config.php /var/www ย้ายไฟล์ hyperdb/db.php ไปยังที่ Directory wp-content (ในที่นี้คื่อ /var/www/wp-content) sudo cp hyperdb/db.php /var/www/wp-content/ แก้ไขไฟล์ db-config.php (ในที่นี้คื่อ /var/www/db-config.php) [3] โดยค้นหาคำว่า DB_HOST ซึ่งควรจะปรากฏอยู่แค่ 2 แห่งในไฟล์ ให้ไปที่ชุดที่ 2 ซึ่งมีเนื้อหาประมาณนี้ จากนั้นแก้ไข DB_HOST ให้เป็น DB_SLAVE_1 ต่อไปก็ไปเพิ่ม define(‘DB_SLAVE_1′,’xxx.xxx.xxx.xxx’) ซึ่งไฟล์ wp-config.php หรือไม่ก็ wp-info.php (ในที่นี้อยู่ที่ /var/www/wp-info.php) เมื่อทดสอบใช้งาน พบว่า มี Query มาทั้งที่ master และ slave ในภาวะว่าง ในภาวะมีงานเข้ามา ทดสอบเพิ่มบทความใหม่ ชื่อ “This is my first article” พบว่า ระบบสามารถเขียนไปยัง Master แล้วสามารถส่งต่อไปให้ Slave ได้ ต่อไป เพิ่ม mysql-slave2 เข้าไปใน Juju และสร้าง Relation เป็น master -> Slave เช่นกัน แล้วทำการเพิ่ม DB_SLAVE_2 เข้าไปใน db-config.php และ wp-info.php ก็จะพบว่าข้อมูลได้ Replicate ไปหา Slave2 แล้ว และ เมื่อทำการ

Read More »

Juju #03 – วิธีสร้าง Load Balance MySQL

จาก Juju #02 – วิธีติดตั้ง WordPress ทำให้ได้ WordPress ซึ่งเป็น Web Application 2 เครื่องทำหน้าที่ Load Balance กัน ด้วย haproxy แล้ว จากนั้น ทำการเพิ่ม MySQL เข้าไปใหม่ แล้วตั้ง Application Name เป็น mysql-slave แล้ว Commit Chages จากนั้น สร้าง Relation เป็น mysql:master –> mysql-slave:slave เมื่อเสร็จแล้ว จะได้ผลอย่างนี้ ทดสอบเพิ่ม Post ใหม่ แล้วเข้าไปใน mysql-slave (juju-xxx-xx เป็นชื่อเครื่องที่ Juju สร้างขึ้น) lxc exec juju-xxxx-xx  bash แล้วใช้คำสั่งต่อไปนี้ mysql -u root -p$(cat /var/lib/mysql/mysql.passwd) -e ‘use wordpress; select post_title from wp_posts;’ ก็จะพบว่า mysql-slave ได้รับการ Update ตามไปด้วย บทความต่อไป จะกล่าวถึงวิธีการทำให้ WordPress สามารถใช้ mysql-slave ในการ Read ได้ เพื่อกระจายโหลดครับ  

Read More »

WatIn Framework

WatIn Framework เป็น Framework ที่ใช้ในการทดสอบการทำงานของเว็บ ที่พัฒนาด้วย .Net ซึ่งสามารถทำงานได้อย่างอัตโนมัติ โดยที่ไม่ต้องทำการทดสอบซ้ำ ๆ เพียงแต่ถ้าต้องการข้อมูล Input ที่แตกต่างไป สามารถแก้ไข Source Code ได้ การติดตั้ง WatIn Framework คลิก Tool จากนั้นคลิก Extensions and Updates… ที่ NuGet Package Manager คลิก Download เมื่อ Download เสร็จแล้ว ทำการ Install โดยกดปุ่ม Install เมื่อ Install เสร็จแล้ว ไปที่เมนู จากนั้นค้นหา “WatIn” กดปุ่ม “Install” จากตัวอย่างมีการ Install เข้าไปแล้ว เมื่อ Install เสร็จจะแสดงดังรูปด้านบน จากนั้นค้นหา “NUnit” การเรียกใช้งาน WatIn Framework สร้าง Form ขึ้นมาปกติ จากนั้น ให้เขียนคำสั่งดังนี้ IE browser = new IE();browser.GoTo(“http://tqf-test.psu.ac.th/”); browser.TextField(Find.ByName(“ctl00$MainContent$Login1$UserName”)).TypeText(“thichaluk.s”); browser.TextField(Find.ByName(“ctl00$MainContent$Login1$Password”)).TypeText(“xxx”); browser.Button(Find.ByName(“ctl00$MainContent$Login1$Button1”)).Click();   – ในส่วนของคำสั่ง browser.GoTo(“http://tqf-test.psu.ac.th/”) เป็นการเรียกให้เปิด URL ที่ต้องการ – ในส่วนของคำสั่ง TextField หมายถึง Text box – ในส่วนของคำสั่ง Button หมายถึง ปุ่ม Button – ในส่วนของคำสั่ง Find.ByName ต่อด้วยชื่อ Control  ในการดูชื่อ Control สามารถดูได้จาก IE โดยกดปุ่ม F12 อย่าลืม using WatiN.Core; เมื่อรันโปรแกรมจะปรากฏหน้าจอทำงานอัตโนมัติ ดังรูป

Read More »

วิธีการอัพเกรด php 5.5.9 เป็น php 5.6 (หรือ 7.0) บน Ubuntu 14.04 และวิธีการสลับการทำงานระหว่างเวอร์ชั่น

บันทึกนี้สืบเนื่องจากต้องการอัพเกรดเวอร์ชั่น php เพื่อให้เครื่องเซิร์ฟเวอร์สามารถรองรับสคริปท์ WebApp php เวอร์ชั่นใหม่ที่สูงขึ้น คำเตือน! ควรทดลองทำในเครื่อง dev ดูก่อนอย่าทำบนเครื่องเซิร์ฟเวอร์จริงทันทีเดี๋ยวจะน้ำตาตก ควรทดสอบสคริปท์บนเครื่องทดสอบดูว่าสามารถทำงานได้ไม่มีปัญหาจะได้ไม่ต้องเสียเวลาแก้ไข เพราะตัวผมมั่วจนได้เรื่องบนเครื่องเซิร์ฟเวอร์จริงจนเกือบแก้ไม่ได้ T_T … มาเริ่มกันเลย

Read More »