การกำหนด Rewrite Mode ให้กับโฟลเดอร์

กำหนดอ๊อปชันให้กับโฟล์เดอร์

# ไฟล์ httpd.conf

<Directory “/home/chatree/httpd”>

Options Indexes FollowSymLinks -MultiViews

AllowOverride All

Order allow,deny
Allow from all

</Directory>

# ตัวอย่างไฟล์ .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ – [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Accessing the Root Account on the gPC/gOS

การจัดการ user สำหรับ Postgres

แก้ไขไฟล์ /var/lib/pgsql/data/pg_hba.conf สำหรับ opensuse แต่สำหรับ ubuntu จะอยู่ที่ /etc/postgresql/8.3/main/pg_hba.conf

และสามารถกำหนด extra_login_security ในไฟล์ /etc/phppgadmin/config.inc.php

หลักการของ Cluster และ Load Balance

Clustering คือการจัดกลุ่มของคอมพิวเตอร์หลายๆตัวเพื่อให้สามารถทำงานได้เหมือนกับเป็นคอมพิวเตอร์ตัวเดียวกัน

ดังนั้นไม่ว่า User
เข้ามาใช้งานเครื่องใดภายในกลุ่มก็จะรู้สึกเหมือนใช้งานคอมพิวเตอร์เครื่องเดียวกัน
คุณสมบัติสำคัญของการทำ Clustering คือการทำ Replication โดยในแง่ของ Web
Application คือการทำ Session Replication ซึ่งตามปกติแล้ว Session ของ
User จะถูกจัดเก็บใน Web Server เครื่องที่ User กำลังใช้งานอยู่เท่านั้น
แต่การทำ Clustering จะเป็นการคัดลอก (Replicate) Session นั้นไปยัง Web
Server อื่นภายในกลุ่มด้วย ทำให้ไม่ว่า User เข้าไปใช้งานใน Server
เครื่องใดก็จะมี Session ของ User อยู่ด้วยเสมอ

Load balancing
คือการจัดกลุ่มของคอมพิวเตอร์หลายๆตัวเพื่อแบ่งงานกัน หรือกระจาย load
การใช้งานของ user ไปยังคอมพิวเตอร์ภายในกลุ่ม เพื่อให้สามารถรับจำนวน
user ที่เข้ามาใช้งานได้มากขึ้น หรือสามารถรับงานที่เข้ามาได้มากขึ้น
นอกจากนั้นยังมีคุณสมบัติของ Fail Over
คือหากมีคอมพิวเตอร์ภายในกลุ่มไม่สามารถทำงานได้ เช่น Down อยู่
หรือไม่สามารถรับงานหรือuserเพิ่มได้เนื่องจาก resource ที่ใช้ทำงานไม่พอ
ตัว Load Balancer ที่เป็นตัวแจก load ให้คอมพิวเตอร์ภายในกลุ่มก็จะส่ง
load ไปยังคอมพิวเตอร์เครื่องอื่นๆแทน
จนกว่าคอมพิวเตอร์เครื่องนั้นจะกลับมาใช้งานได้ใหม่

การทำงานของ Load Balancer นั้นมี 3 ลักษณะด้วยกันได้แก่
1. Round-robin เป็นการส่ง traffic ไปยัง Server ภายในกลุ่มวนไปเรื่อยๆ
2. Sticky
เป็นการส่ง traffic โดยยึดติดกับ Session ที่ user เคยเข้าไปใช้งาน เช่น
ถ้า user เคยเข้าไปใช้ใน server ที่ 1 ภายในกลุ่ม traffic ของ user
คนนั้นก็จะถูกส่งไปยัง server 1 เท่านั้น
3. Work load เป็นการส่ง
traffic โดยดูที่ performance ของ server ภายในกลุ่มเป็นสำคัญ เช่นหาก
server 1 มีงานมากกว่า server 2 ตัว load balancer ก็จะส่ง traffic ไปยัง
server 2

การทำ Cluster Load Balance
คือการผสมผสานการทำงานทั้งสองลักษณะเข้าด้วยกัน
แต่หากจะเลือกใช้การทำงานแบบนี้แล้ว การใช้ Load Balance แบบ Sticky
ก็จะไม่มีความหมายไป เนื่องจาก ทุกๆ Server ภายในกลุ่มเป็น Cluster
กันอยู่แล้ว ดังนั้นจึงไม่มีเหตุผลใดที่จะส่ง Traffic
ไปให้เครื่องเดิมเสมออีก ควรจะทำ Load Balance แบบ Round-robin หรือ Work
load แทน

อย่างไรก็ดีการทำ Cluster ไม่จำเป็นต้องพึ่ง Feature ของ Server
เป็นหลัก แต่เราสามารถ Develop ตัว Application ให้เป็น Cluster เองได้
โดยไม่ต้องพึ่ง Feature ของ Server เช่น การใช้หลักการของ File Sharing
หรือ Database เข้ามาช่วยก็สามารถทำงานได้เหมือนกัน เช่นเดียวกับการทำ
Load Balance เราไม่จำเป็นต้องหา Hardware หรือ Software
พิเศษที่จะทำหน้าที่เป็น Load Balancer แต่เราสามารถเขียน Application
เพื่อทำการกระจาย Traffic ไปยัง Server ต่างๆได้เหมือนกัน
โดยใช้หลักการของ Redirection เป็นต้น

bomber.exteen.com

Cross-compiling JVLC for Windows

Mozilla’s XULRunner Packaged as a Plugin

JVLC javadoc

SWT with OLE Object


SWT with OLE Object

OLE Object คืออะไร?

OLE Object คือ object ชนิดหนึ่ง ที่สนับสนุน OLE protocol สำหรับ object เพื่อใช้เชื่อมต่อ หรือ ฝังตัว เช่น เราสามารถเชื่อมต่อหรือฝัง Excel speedsheet ลงใน field, form หรือ report จะเห็นได้ว่า OLE Object ที่เชื่อมต่อนั้นแสดงข้อมูลใน form หรือ report แต่ ข้อมูลนั้นยังคงเป็นของแฟ้มต้นฉบับเดิม
OLE Object ที่ SWT สามารถใช้งาน แบ่งออกเป็น 2 อย่างคือ
1. OLE Document – เช่น Word, Excel และ PowerPoint
2. ActiveX Control – เช่น Internet Explorer มี ActiveX Control คือ COM objects
เราสามารถจะฝัง โปรแกรมเหล่านี้ ลงใน SWT Application ที่ทำงานบน M$ Windows platform

การฝัง OLE Object ใน SWT Application

เราสามารถฝัง OLE Object ใน SWT widgets และ สามารถเรียกมันขึ้นมาทำงาน
ให้ผู้่ใช้สามารถจัดการแก้ไขโดย Application นั้นได้ เช่น ผู้สามารถเปิด file.doc โดย M$ Word และจัดการแก้ไข เมื่อแก้ไข เสร็จเรียบร้อย เราสามารถตรวจสอบได้ว่า file มีการแก้ไขหรือเปล่า และยังสามารถบันทึก file นั้นได้ จากนั้นก็ปิดโปรแกรม

ขั้นตอนการทำงาน

*
สร้าง Display เพื่อ จัดการ การติดต่อกับ SWT
*
สร้าง Shell เป็น Window
*
กำหนด Layout
*
SWT Application จะต้องมี menu bar และ menu bar ที่สร้างนี้จะเป็น menu bar ของ application ที่จะฝัง OLE Document ไว้ เราสามารถสร้าง menu bar ได้เองตามใจชอบ
*
สร้าง OleFrame ที่คอยจัดการ ขนาด, เมนู และ หน้าต่าง

*
สร้าง OleClientSite หรือ OleControlSite

OleClientSite ใช้สำหรับ OLE Document การฝัง OLE Document มีค่าเทียบเท่ากับ การฝังทั้ง Application ลงไป นอกจากนี้ OLE Document ยังมี tool bar และ menu bar ของมันเอง เพื่อใช้งานต่าง ๆ
OleControlSite ใช้สำหรับ ActiveX Control จะให้บริการเฉพาะ content part เท่านั้น ส่วน ลักษณะการทำงานอื่น ๆ เราจะต้องจัดการเองผ่าน API ของ ActiveX Control
เราสามารถ ตรวจสอบได้ว่า COM Object สนับสนุน OLE Document หรือไม่ โดยดูจาก IOleDocument Interface ถ้าเป็น ActiveX ก็ดูจาก IOleControl Interface ถ้าต้องการรายละเอียดของ Interface เหล่านี้ สามารถดูได้จาก type library

* สั่ง Activate OLE Object
* สั่งเปิด Shell และรอปิด เมื่อสิ้นสุดการทำงาน เป็นอันเสร็จพิธี

ตัวอย่างการ embedding OLE Object

สร้าง OleClientSite โดยระบุ Program ID ซึ่งดูได้จาก Registry
ถ้าเป็นพวก OLE Document
Word -> Word.Document
Excel -> Excel.Chart
PowerPoint -> PowerPoint.Slide

เช่น clientsite = new OleClientSite(frame, SWT.NONE, “PowerPoint.Slide”);

ถ้าเป็น พวก ActiveX Control
M$ Explorer -> Shell.Explorer
MediaPlayer -> MediaPlayer.MediaPlayer.1

เช่น controlSite = new OleControlSite(frame, SWT.NONE,”Shell.Explorer”);

การกำหนด Constructor ข้างต้น เป็นการทำงานในลักษณะของ การสร้างเอกสารใหม่ หากเรา ต้องการเปิด file ที่มีอยู่แล้ว ก็สามารถทำได้ ดังนี้

เช่น
File file = new File(C:\\OleDocumentation.doc);
OleClientSite clientSite = new OleClientSite(frame, SWT.NONE, file);

OleClientSite มันจะค้นหาเองว่า ProgramID เป็นอะไร

การสั่ง Activate OLE Object

โดยใช้ method doVerb() เพื่อทำให้ OLE Document หรือ ActiveX Control มองเห็นใน
Appication ของเรา (แต่ยังไม่แสดง ให้เห็นบนจอ เพราะมันต้องอยู่ใน shell ) เพื่อให้ Application เราแสดงผลขึ้นมา จึงต้องเรียก shell.open

OLE.OLEIVERB_SHOW ใช้บอก object ให้แสดงผลและ เราต้องสั่ง shell.layout() ก่อนที่ จะทำ clientsite.doVerb เสมอ

ตัวอย่าง Source code

..:: Word.java ::..

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.ole.win32.*;

public class Word {

public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Menu bar = new Menu(shell, SWT.BAR);
shell.setMenuBar(bar);
OleFrame frame = new OleFrame(shell, SWT.NONE);
OleClientSite clientsite;
try {
clientsite = new OleClientSite(frame, SWT.NONE, “Word.Document”);
shell.layout();
clientsite.doVerb(OLE.OLEIVERB_SHOW);
} catch (SWTException ex) {
System.out.println(“Failed to create <> : ” + ex.getMessage());
return;
}
shell.open();

while (shell != null && !shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}

ที่มา

การสร้าง cursor ด้วย transparent image สำหรับ SWT

การสร้าง cursor ด้วย transparent image

Display display = this.compositeMain.getDisplay();
Color white = display.getSystemColor(SWT.COLOR_WHITE);
Color black = display.getSystemColor(SWT.COLOR_BLACK);
PaletteData palette = new PaletteData(new RGB[] { white.getRGB(), black.getRGB() });
ImageData sourceData = new ImageData(16, 16, 1, palette);
sourceData.transparentPixel = 0;
Cursor cursor = new Cursor(display, sourceData, 0, 0);

css สำหรับ scrollbar

 css สำหรับ scrollbar

SCROLLBAR-FACE-COLOR: #FFFFFF;
SCROLLBAR-HIGHLIGHT-COLOR: #FFFFFF;
SCROLLBAR-SHADOW-COLOR: #FFFFFF;
SCROLLBAR-3DLIGHT-COLOR: #FFFFFF;
SCROLLBAR-ARROW-COLOR: #000066;
SCROLLBAR-TRACK-COLOR: #FFFFFF;
SCROLLBAR-DARKSHADOW-COLOR: #FFFFFF;
SCROLLBAR-BASE-COLOR: #FFFFFF;