MPICH2 บน Core 2 Duo

Written by Waipot on July 12, 2008 – 2:14 am

MPICH2 ได้มีการพัฒนาบางอย่างที่ดีกว่า MPICH(1) พูดง่ายๆ คือ เวอร์ชันใหม่ย่อมดีกว่าเวอร์ชันเก่า วันนี้ผมลองทดสอบ MPICH2 โดยเราจะปรับแต่งให้ใช้งานบนเครื่องประเภท Symmetric Multiprocessors (SMPs) อย่างเช่น Core 2 Duo ของเครื่องโน๊ตบุคของผมนั่นเอง โดยทั่วไปเครื่องแบบนี้จะเป็นเครื่องคอมพิวเตอร์เดี่ยว แต่มีหลาย cpu และแชร์หน่วยความจำร่วมกัน (Shared-memory systems)

การติดตั้ง
ผมมี Ubuntu 64-bit version บน Intel Core 2 Duo T7300 (2.0 GB) สำหรับโน๊ตบุค การติดตั้ง MPICH2 ก็ปกติเหมือนกับ MPICH ซึ่งผมเคยเขียนไว้แล้ว (ติดตามอ่านที่นี่)  แต่มีตัวเลือกที่แตกต่างกันหลักๆ คือ การเลือก Communication Device ด้วย –with-divice=DEVICE ซึ่งผมเลือก ch3:shm ที่สนับสนุน shared-memory เพราะน่าจะเข้ากับเครื่องของผมได้ดีที่สุด มีอีกหนึ่งตัวเลือก คือ ch3:nemesis ซึ่งก็น่าจะใช้ได้ แต่ดูเหมือนมันจะยังไม่สมบูรณ์ดี ผมได้เลือก ch3:nemesis เนื่องจากพบว่าให้ประสิทธิภาพที่ดีที่สุด และสนับสนุน shared-memory ด้วย นอกจากนี้ MPICH2 ยังให้เราสามารถเลือก Process Manager ด้วย –with-pm=PMGs โดยปริยายแล้วจะเป็น mpd เรายังสามารถเลือกได้ระหว่าง smpd และ gforker ผมก็ไม่รู้ว่าอันไหนดีบ้าง แต่ผมเลือก gforker เพราะ มันบอกว่า “This is a simple process manager that creates all processes on a single machine. It is useful for both debugging and on shared memory multiprocessors.” ดังนั้นมันน่าจะเข้ากับเครื่องแบบ SMPs ของผมดีที่สุด (อ่านคู่มือแบบละเอียดได้ที่นี่) ก่อนลงมือทำการติดตั้งจาก ให้ดาวน์โหลด mpich2 source เสียก่อน ซึ่งคือ เวอร์ชัน 1.0.7 ในที่นี้

$tar xzf mpich2-1.0.7.tar.gz
$cd mpich2-1.0.7
$./configure --prefix=/usr/local --with-device=ch3:shm --with-pm=gforker
$make
$sudo make install

การใช้งาน
ผมจะทดสอบการใช้งาน mpich2 (ch3:shm) โดยการรันโปรแกรมง่ายๆ คือ hello-mpi2.c ซึ่งได้มีการปรับปรุงจากคราวก่อนเล็กน้อย โดยมีโค๊ดดังนี้

#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
 
int 
main(int argc, char *argv[]) {
  int rank, nproc;
  char *cpu_name;
 
  MPI_Init(&argc,&argv);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Comm_size(MPI_COMM_WORLD, &nproc);
 
  cpu_name    = (char *)calloc(80,sizeof(char));
  gethostname(cpu_name,80);
 
  printf("Hello! from process %d on machine=%s, of %d CPUs\n",
	 rank, cpu_name, nproc);
 
  MPI_Finalize();
  return(0);
}

จากนั้นคอมไพล์ด้วยคำสั่ง

mpicc -o hello-mpi2 hello-mpi2.c

ที่นี้ลองมารันกันดู เริ่มจาก

$mpiexec -np 2 ./hello-mpi2
Hello! from process 0 on machine=computin-laptop, of 2 CPUs
Hello! from process 1 on machine=computin-laptop, of 2 CPUs

จะเห็นว่าเราจะใช้ mpiexec แทน mpirun ใน MPICH2 นี้ ซึ่งได้ผลตามคาดหมายเพราะ Core 2 Duo นั้นมี 2 cpu ในตัวเดียว จากนั้นเพิ่มลองเพิ่มจำนวนโปรเซสในคำสั่งนี้ดู

$mpiexec -np 4 ./hello-mpi2
Hello! from process 0 on machine=computin-laptop, of 4 CPUs
Hello! from process 1 on machine=computin-laptop, of 4 CPUs
Hello! from process 2 on machine=computin-laptop, of 4 CPUs
Hello! from process 3 on machine=computin-laptop, of 4 CPUs

จะเห็นว่ามันสามารถกระจายทั้งสี่โปรเซสไปบน cpu ทั้งสองได้ เปรียบสเมือนมีหลายๆ cpu ในเครื่องเดียว แต่ mpich2 ปกติได้กำหนดจำนวน cpu สูงสุดไว้ที่ 32 ซึ่งเราอาจจะสามารถเพิ่มได้

จะเห็นว่า MPICH2 นั้นสามารถทำงานได้บนเครื่อง PC แบบ SMPs อย่างเช่น Intel Core 2 Duo ซึ่งมันแปลงเครื่องธรรมดาให้สามารถโปรแกรมแบบขนานด้วย MPI ได้ ซึ่งเหมาะที่ใช้งานในการเรียนรู้ และพัฒนาโปรแกรมแบบขนานในส่วนตัวได้

Tags: ,
Posted under Computers and Software | 3 Comments »

MPICH บน Core 2 Duo

Written by Waipot on July 11, 2008 – 6:54 am

การเขียนโปรแกรมแบบขนาน (parallel programming) ด้วย MPI บนเครื่องคลัสเตอร์ขนาดใหญ่นั้น ดูเหมือนจะเป็นเรื่องลำบาก เนื่องจากบนระบบใหญ่ๆ จำผู้ใช้งานก็มีมาก ซึ่งต้องรอคิวสั่งงานกันนานๆ มันจึงเป็นอุปสรรคต่อการพัฒนาโปรแกรมในระยะเริ่มต้น ซึ่งต้องคอมไพล์รวมทั้งการดีบักโปรแกรมกันบ่อยครั้งด้วย ตอนแรกผมพยายามมองหาวิธีแก้ไขปัญหานี้ โดยคิดว่าจะสร้างเครื่องคลัสเตอร์เล็กๆ ส่วนตัว เพื่อใช้ในการพัฒนาโปรแกรม และ แก้บั๊ก ก่อน จนกว่าโปรแกรมจะเสถียร แล้วจึงค่อยนำไปรันบนเครื่องคลัสเตอร์ใหญ่ๆ แต่การสร้างคลัสเตอร์ต้องมีคอมพิวเตอร์มากกว่าหนึ่งเครื่อง ซึ่งมันใช้ต้นทุนสูงไป ผมค้นหาสักพัก พบว่า mpich มีโมดุลที่เรียกว่า ch_shmem ซึ่งสนับสนุนเครื่องประเภท Symmetric Multiprocessors (SMPs) อย่างเช่น Core 2 Duo ของเครื่องโน๊ตบุคของผมนั่นเอง โดยโครงสร้างของเครื่องแบบนี้คือ มี 2 cpu แต่แชร์หน่วยความจำร่วมกัน

การติดตั้ง
ผมมี Ubuntu 64-bit version บน Intel Core 2 Duo T7300 (2.0 GB) สำหรับโน๊ตบุค โดยใน Ubuntu ได้ทำไบนารีไฟล์ไว้แล้ว คือ libmpich-shmem* libmpich-shmem*-dev libmpich-shmem-bin ซึ่งสามารถติดตั้งด้วยคำสั่ง sudo apt-get install ซึ่งพร้อมใช้งานได้ทันทีหลังจากติดตั้งเสร็จ แต่ในที่นี้ผมขอเสนอการติดตั้งจาก source เพราะสามารถปรับแต่งได้ ให้เริ่มจากการดาวน์โหลด mpich source ผมต้องการติดตั้ง mpich v1 (1.2.7p1) ในที่นี้

$tar xzf mpich.tar.gz
$cd mpich-1.2.7p1
$./configure --prefix=/usr/local --with-arch=LINUX --with-device=ch_shmem \\
--with-usesysv 
$make
$sudo make install
#หากต้องการถอนการติดตั้ง
$sudo /usr/local/sbin/mpiuninstall

การคอมไพล์ mpich นี้ค่อนข้างมาตรฐาน ยกเว้นตรงตัวเลือกใน ./configure คือ –with-arch=LINUX บอกให้รู้สถาปัตยกรรมของเครื่อง –with-device=ch_shmem เลือก DEVICE เพื่อคอมไพล์ mpich สำหรับ shared memory และ –with-usesysv เพื่อเลือกใช้ System V shared memory และ semaphore routines ซึ่งตัวเลือกเหล่านี้ได้อธิบายไว้ในคู่มือของ mpich หมดแล้ว

การใช้งาน
ผมจะทดสอบการใช้งาน mpich ch_shmem โดยการรันโปรแกรมง่ายๆ คือ hello-mpi.c ซึ่งมีโค๊ดดังนี้

#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
 
int 
main(int argc, char *argv[]) {
 int rank, nproc;
 
 MPI_Init(&argc,&argv);
 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 MPI_Comm_size(MPI_COMM_WORLD, &nproc);
 
 printf("Hello! from process %d of %d CPUs\n", rank, nproc);
 
 MPI_Finalize();
 return(0);
}

จากนั้นคอมไพล์ด้วยคำสั่ง

mpicc -o hello-mpi hello-mpi.c

ที่นี้ลองมารันกันดู เริ่มจาก

$mpirun -np 2 ./hello-mpi
Hello! from process 1 of 2 CPUs
Hello! from process 0 of 2 CPUs

ซึ่งได้ผลตามคาดหมายเพราะ Core 2 Duo นั้นมี 2 cpu ในตัวเดียว จากนั้นเพิ่มลองเพิ่มจำนวนโปรเซสในคำสั่งนี้ดู

$mpirun -np 4 ./hello-mpi
Hello! from process 1 of 4 CPUs
Hello! from process 2 of 4 CPUs
Hello! from process 3 of 4 CPUs
Hello! from process 0 of 4 CPUs

จะเห็นว่ามันสามารถกระจายทั้งสี่โปรเซสไปบน cpu ทั้งสองได้ เปรียบสเมือนมีหลายๆ cpu ในเครื่องเดียว แต่ mpich ch_shmem ปกติได้กำหนดจำนวน cpu สูงสุดไว้ที่ 32 ซึ่งเราอาจจะสามารถเพิ่มได้ (สังเกตุว่า process 0 ซึ่งเป็น Master node มักเสร็จสิ้นทีหลัง)

สรุปแล้ว mpich ch_shmem นี้มีประสิทธิภาพพอที่จะทำให้เราเรียนรู้ และ พัฒนาโปรแกรมแบบขนานในสไตล์ของ SPMD (single program multiple data) โดยการติดตั้งบนเครื่อง SMP อย่าง Core 2 Duo ได้ ซึ่งถ้าใครมี Quad core ก็น่าจะสนุกกว่านี้ แต่อย่างไรก็ตามเมื่อพัฒนาโปรแกรมจนเสถียรแล้ว ควรจะนำไปรันบนเครื่องคลัสเตอร์ระดับใหญ่ เพื่อให้ได้ประสิทธิภาพสูงสุด อย่างเช่น เครื่อง Tera cluster ของ โครงการ ThaiGrid หรือ NECTEC HPC ซึ่งเปิดโอกาสให้บุคคลทั่วไปสมัครเป็นสมาชิกได้ ซึ่งผมมีบัญชีผู้ใช้ของเครื่อง Tera แล้ว แต่ของ NECTEC HPC ยังไม่ได้ลองสมัครเลย

Tags: , , ,
Posted under Computers and Software | 2 Comments »

Windows Vista Speech Recognition - นี่หรือความหวัง

Written by Waipot on June 6, 2008 – 1:02 pm

สิ่งหนึ่งที่ทำให้ผมตื่นเต้นกับ Windows Vista นั่นคือ มันได้ติดตั้งเทคโนโลยีที่ล้ำยุคมาในตัว นั่นคือ Speech Recognition ผมจินตนาการว่า โอ้ว์ มันช่างเยี่ยมยอดเหลือ ต่อไปนี้เราคงสามารถสั่งงานคอมพิวเตอร์ด้วยเสียง แทนการพิมพ์คีย์บอร์ด ต่อไปเราคงคุยกับคอมพิวเตอร์รู้เรื่อง เช่น “คอมพิวเตอร์ ทำการบ้านให้หน่อย” (ไม่ดีนะครับ อย่าเอาเป็นตัวอย่าง) ช่างเหลือล้ำจินตนการแท้ แต่พอทันทีที่ผมใด้ลองใช้ Speech Recognition นี้ บอกได้คำเดียวว่า “หมดหวัง” ดูคลิปข้างบนเป็นตัวอย่างนะครับ ถึงกระนั้นก็ตาม ผมจะรอจนมันสมบูรณ์

Tags: ,
Posted under Computers and Software | No Comments »

ติดตั้ง Scientific Python

Written by Waipot on May 27, 2008 – 10:17 am

ผมขอเสนอทางเลือกอีกทาง ในการสรรหาเครื่องมือคำนวณเชิงวิทยาศาสตร์ (Scientific Computing Tools) โดยใช้ซอฟต์แวร์ฟรี อย่าง Python และ NumPy ซึ่งจะทำให้เราประหยัดค่าใช้จ่าย จากการซื้อหาซอฟต์แวร์ราคาแพงๆ อย่างเช่น Matlab หรือ Mathematica ในที่นี้ผมจะขอพูดถึงการติดตั้ง Scientific Python สำหรับ Windows

  • Python - เป็นภาษา script แบบ interactive ในลักษณะใช้งานทั่วไป (general purpose) ซึ่งเป็นที่นิยมใช้งานกันอย่างแพร่หลายในขณะนี้ [ดาวน์โหลด และ ติดตั้ง]
  • NumPy - เป็น package ซึ่งจำเป็นต่อการคำนวณเชิงวิทยาศาสตร์ด้วย Python ความสามารถที่โดดเด่น NumPy คือ การคำนวณแบบ Array ซึ่งคล้ายกับ Matlab [ดาวน์โหลด และ ติดตั้ง] [คู่มือ]
  • SciPy - เป็น package ที่สร้างต่อจาก NumPy ซึ่งได้ขยายความสามารถให้ Numerical Python โดยการรวมรวบฟังก์ชันการคำนวณทางวิทยาศาสตร์ระดับสูง เช่น statistics, optimization, numerical integration, linear algebra, Fourier transforms, signal processing, image processing, genetic algorithms, ODE solvers และ special functions เข้าไว้ด้วยกัน เป็นต้น [ดาวน์โหลด และ ติดตั้ง] [คู่มือ]
  • Matplotlib - เป็น package สำหรับ plot กราฟ และ กราฟิกส์แบบ 2D สำหรับ Python ซึ่งมีฟังก์ชันที่ใช้งานกันบ่อยๆ คือ plot() นั่นเอง [ดาวน์โหลด และ ติดตั้ง] [คู่มือ]

เครื่องมือฟรีเหล่านี้ ทำงานได้อย่างมีประสิทธิภาพ ไม่แพ้ ซอฟต์แวร์ราคาแพงเลยทีเดียว หากเพียงแต่ว่าต้องขยันอ่านคู่มือ และ ศึกษาอย่างจริงจัง

Tags:
Posted under Computers and Software, Science and Technology | 5 Comments »

Hardy Heron มาแล้ว

Written by Waipot on May 8, 2008 – 1:21 pm

ที่จริงไม่ได้ตั้งใจจะอัพเกรด แต่เห็นระบบอัตโนมัติ มันแจ้งให้ทราบว่า Ubuntu 8.04 พร้อมให้อัพเดทกันแล้ว ผมเลยตัดสินใจคลิ๊ก อัพเกรด มันเสียเลย หลังจากผ่านไปกว่าสองชั่วโมง ในการ อัพเกรดออนไลน์ ผมก็ได้ภาพนี้มา ดูเหมือนว่าเวอร์ชันนี้จะเจ๋ง ได้ Firefox 3 Beta 5 มาให้ด้วย ต้องลองๆ งานนี้

Tags:
Posted under Computers and Software | 2 Comments »

ทดสอบ permalinks ไทย (non-English) plugin เวอร์ชั่น 0.1

Written by Waipot on April 19, 2008 – 11:54 pm

ปกติ Permalinks ใน WordPress ที่เป็นภาษาไทย (บางทีก็ผสมภาษาอังกฤษ) เช่น

http://www.waipot.com/2008/04/เขียนสมการ-latex-บนเวบ/

เวลาจะบราวเซอร์จะลิงค์มายังหน้านี้ มันจะทำการเข้ารหัส (URL Encoding) เป็นอะไรที่ยุ่งๆ คือ

http://www.waipot.com/2008/04/%e0%b9%80%e0%b8%82%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b8%aa%e0%b8%a1%e0%b8%81%e0%b8%b2%e0%b8%a3-latex-%e0%b8%9a%e0%b8%99%e0%b9%80%e0%b8%a7%e0%b8%9a/

ยากต่อการนำไปอ้างอิง หรือ ทำลิงค์กลับ (Back Links) เจ้าของบลอกจึงหลีกเลี่ยงไปใช้ Permalinks แบบ ปกติ เช่น

http://www.waipot.com/?p=190

หรือ แบบ Numerics เช่น

http://www.waipot.com/archives/190/

ซึ่ง URL ไม่สื่อความหมาย ไม่เป็นเป็นมิตร (Friendly) กับ Serch Engine เท่าที่ควร และ มีผลต่อ SEO อย่างแน่นอน

ดังนั้นผมจึงเขียน plugin ตัวหนึ่งขึ้นมา (ยังไม่รู้ว่าจะตั้งชื่ออะไรดี) โดยมันจะมีหน้าที่กำจัด non-ASCII characters อย่างเช่น ภาษาไทยออกจาก Permalinks เหลือแต่ English characters ที่ใช้เป็น keywords ต่อ Search Engine ได้ และในกรณีที่ title ของคุณไม่มีภาษาอังกฤษเลย มันก็จะแทน Permalinks ด้วย post id

plugin ตัวนี้ยังไม่สมบูรณ์ดี ผมขอยังไม่แจกจ่าย ขอใช้เองก่อน ด้วยเหตุผล ดังนี้

1. ยังไม่ได้ทดสอบก็ Wp version ต่างๆ
2. ไม่มั่นใจว่ายังมี bugs อะไรอื่นๆ หรือไม่
3. ไม่แน่ใจว่า เอาคำไทยออกจาก Permalinks แล้ว จะดีต่อ SEO ของบลอกไทย หรือ ไม่ เพราะบางที Search Engine มันอาจจะรู้จักคำภาษาไทยดี ก็ได้

ยังก็ช่วยกันวิจารณ์เข้ามานะครับ

[Update 20-04-2008 12:00PM] เปิดโค๊ดแล้ว plugin ตัวนี้ทำงานง่ายๆ โดย add_filter เข้าไปที่ sanitize_title ซึ่งจะถูกเรียกขึ้นก่อนเก็บ title ลง db ทำให้มันกำจัด non-ASCII ออกจาก permalinks ได้ผล แต่ข้อเสียคือ Permalinks ที่ก่อนหน้าที่จะติดตั้ง plugin จะใช้งานไม่ได้ ดังนั้นโปรดช่วยกันแสดงข้อแก้ไขเข้ามาด้วยนะครับ [Download plugin ที่นี่]

1
2
3
4
5
function remove_non_ASCII_title($string) {
return preg_replace('/[^(\x20-\x7F)]*/','', $string);
}
 
add_filter('sanitize_title', 'remove_non_ASCII_title', 1);

[Update 19-04-2008 2:32PM] plugin ทำงานได้ตามที่คาดหวัง แต่ข้อเสียคือ Permalinks ที่ก่อนหน้าที่จะติดตั้ง plugin จะใช้งานไม่ได้ แนะนำว่าจะเพิ่งใช้ตอนนี้ เพราะผมเองก็เลิกใช้แล้วเหมือนกัน คงต้องพยายามแสวงหากันต่อไป

Tags: ,
Posted under Computers and Software | 2 Comments »

สุดสัปดาห์ กับ yourequations.com สุดเหนื่อย แต่คุ้ม

Written by Waipot on April 19, 2008 – 9:42 am

พื้นที่ของครึ่งวงกลม คือ
A = (1/2) pi r^2 หรือ
\inline A = \frac{1}{2} \pi r^2 ?

สองสัปดาห์ที่ผ่านมา ผมคลุกอยู่กับการพัฒนา yourequations.com - “ระบบแสดงสมการบนเวบ โดยการติดตั้งเพียง JavaScript เดียว” ซึ่งได้เปิดตัวบนโลกอินเทอร์เน็ต แบบไม่เป็นทางการ เมื่อปลายเดือนที่แล้ว วันที่ 31 มีนาคม 2008

ที่จริงเวบนี้ผมทำขึ้นตั้งแต่เมื่อต้นเดือน สิงหาคม 2007 ปีที่แล้ว โดยตอนนั้นผมอยากทำเวบชุมชนที่ทุกคนช่วยกันแก้สมการ โดยอาศัยพลังของอินเทอร์เน็ตทำในสิ่งที่ยิ่งใหญ่ ซึ่งยอมรับว่า โลกอินเทอร์เน็ตตอบรับเวบของผมเสียเงียบสนิททีเดียว (-__-”)

ต่อมาผมพบว่า ที่จริงแล้ว เวบมาสเตอร์ และ บลอกเกอร์ หรือ แม้กระทั่งผู้ใช้งานในเวบฟอรั่ม ที่ต้องการเขียนสมการลงบนเวบไซต์ ก็มีไม่น้อยทีเดียว แต่ติดตรงที่ว่าการแสดงสมการเป็นเวบนั้นยากพอๆ กับการแก้สมการที่ว่ายากเลยก็ว่าได้ เพราะถึงแม้ว่าเราจะมี MathML แล้วก็ตาม แต่เวบบราวเซอร์ ยังสนับสนุนการแสดงผลได้น้อยมาก

โชคยังดีที่เรามี TeX/LaTeX ซึ่งรู้กันดีว่าเป็นระบบพิมพ์เอกสารวิทยาศาสตร์ที่มีประสิทธิภาพสูงระบบหนึ่ง ใน LaTeX มีระบบพิมพ์สมการที่ให้ผลที่งดงามมาก และโชคดีอีกอย่างที่โลกนี้ได้มีคนพัฒนา LatexRender (PHP) และ อีกค่ายหนึ่ง คือ mimeTeX (C) ซึ่งสองโปรแกรมนี้ทำให้เราสามารถแปลคำสั่งสมการที่เขียนด้วย LaTeX แล้วส่งผลลัพธ์ออกมาเป็นไฟล์รูปภาพ (PNG) ซึ่งแสดงผลได้บนเวบ ได้อย่างน่าอัศจรรย์ แต่กระนั้นก็ตาม การติดตั้งซอฟต์แวร์นี้บนเวบโฮสต์นั้นยากทีเดียว เพราะ LaTeX มีขนาดใหญ่ราวๆ 1GB ซึ่งเวบโฮสต์ทั่วไปไม่รองรับ ทำให้ผู้ใช้งานทั่วไป ที่ไม่ได้มีโฮสต์เป็นของตัวเอง ไม่สามารถใช้งานได้อย่างทั่วถึง

ต่อมาซอฟต์แวร์ทั้งสองนี้ได้ปรับปรุงแก้ไข เพื่อให้ผู้ใช้ทั่วไป ที่ไม่ได้มีโฮสต์เป็นของตัวเอง สามารถใช้งานสะดวกขึ้น โดยการสร้างเป็น public LaTeX renderer ขึ้นมา โดยใช้หลักการของ cgi server script service คือ เปิดให้ผู้ใช้ทั่วไปส่งโค๊ดมา render แล้วส่งผลลัพธ์ออกไปเป็นรูปภาพ เช่น เวลาจะแสดงสมการต้องเขียน HTML คือ <img src=”http://latexrender_server.tld/cgi-bin/mimetex.cgi?f(x)=\int_{-\infty}^xe^{-t^2}dt”> จะเห็นว่า การใช้งานเข้าถึงผู้ใช้ทั่วไปได้มากขึ้น แต่ไม่สะดวกเท่าที่ควร เพราะต้องจำ URL ยาวๆ ทุกครั้ง

ด้วยเหตุนี้ผมจึงมีแนวคิดว่าจะทำอย่างไร ให้ผู้ใช้สามารถใช้งาน LaTeX render ได้ง่ายขึ้น บนทุกระบบ และ กลมกลืนกับเอกสาร HTML ผมจึงปรับปรุงระบบ LaTeX Render ขึ้นใหม่ โดยการทำให้ผู้ใช้สามารถเขียนสมการ LaTeX ได้ ภายใต้ tag

<pre lang="eq.latex">
your_LaTeX_code
</pre>

ซึ่งจำได้ง่ายกว่าและเวบมาสเตอร์ส่วนใหญ่น่าจะคุ้นเคยกับ tag นี้ดี จากนั้นแปลงโค๊ด LaTeX โดยอาศัยความสามารถของ JavaScrip และ DOM ในการตรวจหาสมการ LaTeX ภายใต้ tag PRE ในหน้าเวบ แล้วส่งไป render ที่ public LaTeX render แล้วแสดงผลออกมาที่หน้าเวบทันที ซึ่งพบว่าทำงานได้ผล ข้อดีของ JavaScript คือการทำงานบนเครื่องฝั่ง client ดังนั้นผู้ใช้งานทั่วไปสามารถติดตั้งได้ง่าย เพียงฝัง JavaScript LaTeX render ไปบนเวบเพจของตัวเอง ก็สามารถเขียนสมการ LaTeX บนเวบได้เพียงง่ายดาย โดยไม่ต้องติดตั้งซอฟต์แวร์เพิ่มแต่อย่างใด

yourequations.com แสดงให้เห็นแล้วว่ามันสามารถแสดงสมการบนเวบได้จริง ซึ่งผมยอมรับว่า มันยังไม่ประสบความสำเร็จ เพราะ ความสำเร็จที่ผมตั้งไว้ คือ การได้เห็นการใช้พลังของอินเทอร์เน็ตแก้สมการที่ยิ่งใหญ่ และผมหวังว่า yourequations.com จะเป็นเครื่องมือที่มีส่วนช่วยให้ไปให้ถึงจุดนั้น นับว่าเหนื่อยแต่ก็คุ้มค่าแล้วที่ได้ทำ

เอกสารอ้างอิง

http://www.mathcenter.net/forum/showthread.php?t=3231

http://www.mayer.dial.pipex.com/tex.htm

http://www.forkosh.com/mimetex.html

Tags: ,
Posted under Computers and Software, Talk | No Comments »