Posts

Showing posts from 2009

Microsoft Excel 2003 Error :: Microsoft Office Excel has encountered a problem and needs to close. We are sorry for the inconvenience.

Image
Problem :: Solution :: Click on Start -> Run -> type in "regedit" -> click on Run.Go to the following registry key HKEY_LOCAL_Machine > Software > Microsoft > Office > Excel > Addins > BtOffice [Change the LoadBehavious to the value of "0"]

ตรวจสอบ Version และ Service Pack ของ SQL Server

วิธีตรวจสอบ Version และ Service Pack ของ Microsoft SQL Serverเปิด Microsoft SQL Server ขึ้นมาแล้ว connect SQL Server โดยใช้ SQL Server Management Studio, แล้ว Run Transact-SQL ดังนี้ SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition') ที่มา http://support.microsoft.com/default.aspx?scid=kb;en-us;q321185

T-SQL Recursion

** Support SQL 2005 up # ใช้ในกรณีที่ข้อมูลเป็นลักษณะ หัวหน้าและลูกน้อง อยากรู้ว่าหัวหน้าคนนี้มีลูกน้องคือใครบ้างเป็นต้น WITH T_Reports (t_mitm,t_sitm,level) AS ( SELECT t_mitm, t_sitm, 0 as level FROM bom WHERE ltrim(rtrim(t_mitm)) = 'xx-xx' UNION ALL SELECT b.t_mitm, b.t_sitm, level + 1 FROM bom b INNER JOIN T_Reports as t ON t.t_sitm = b.t_mitm ) select * from T_Reports order by level,t_mitm อธิบาย หมายถึง การสร้างตารางเสมือน T_Reports แล้วทำการนำค่า จาก Query ที่ 1,2 ไปใส่ในตาราง T_Reports

วิธีการเปลี่ยนโซนของเวลา

# dpkg-reconfigure tzdata แล้วเลือกเป็น Asia > Bangkok

XWindows on Server

วิธีการทำให้ Ubuntu Server มี XWindows ครับ # sudo apt-get install ubuntu-desktop

ขั้นตอนแรกหลังจากติดตั้งเสร็จแล้ว

ให้ทำการอัพเดตก่อนที่จะติดตั้งอะไรเพิ่มเติม # sudo apt-get update

Send Mail by PHP Function

ยังเหลือกรณีที่เขียนโปรแกรมใช้ Function mail ใน PHP ยังไม่สามารถส่งเมลล์ได้ให้ทำการลงตัวนี้เพิ่มเข้าไป SMTP # apt-get install postfix แล้วจะสามารถส่งเมลล์ได้เลยครับ เขียน PHP ดังนี้ $to = " prompratan.n@rockworth.com "; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = " someonelse@example.com "; $headers = "From: $from"; mail($to,$subject,$message,$headers); echo "Mail Sent.";

Installation and Configuration for Web Server & MySQL Server

Install PhpMyAdmin 1. ให้ทำการติดตั้ง Ubuntu 8.10 โดยทำตามขั้นตอนแล้วจะมีให้เลือก Package ที่จะทำการติดตั้งให้เลือก - OpenSSH Server เอาไว้ Remote - LAMP Server ติดตั้ง Apache, MySQL, PHP/Perl 2. Login เข้าไปตาม Users ที่ตั้งเอาไว้ และกำหนด Password root โดยใช้คำสั่ง #sudo passwd root 3. หลังจากที่ทำการติดตั้งเสร็จแล้วให้ทำการติดตั้งตัว phpMyAdmin เพื่อใช้ในการจัดการ MySQL ได้ง่ายขึ้นโดย #sudo apt-get update #sudo apt-get install phpmyadmin แล้วให้ทำการเลือก apache2 4. ทำการ Config phpMyAdmin ให้แก้ไข Bug 4.1 ไปที่ http://ipaddress/phpmyadmin 4.2 Login เป็น root แล้วไปที่เมนู Privileges 4.3 แล้วทำการลบ Users ที่มี Password เป็น NO ออกทั้งหมด ถ้าไม่ลบลองใส่ Users มั่วๆแล้วไม่ต้องใส่ Password จะสามารถเข้ามาเห็น Schema ของ DB ได้เลย 5. เข้าไปแก้ไข IP ของ MySQL ให้ถูกต้องโดยไปที่ /etc/mysql/my.cnf ให้แก้ไขตรงส่วนของ bind-address = 10.10.10.19 ส่วนนี้คือขั้นตอนการ Install Package แบบ Manual sudo apt-get install update – เป็นการ Update Server *** sudo

Change Owner

Changing the File Owner and Group A file's owner can be changed using the chown command. For example, to change the foobar file's owner to tux: user@host:/home/user$ sudo chown tux foobar To change the foobar file's group to penguins, you could use either chgrp or chown with special syntax: user@host:/home/user$ sudo chgrp penguins foobar user@host:/home/user$ sudo chown :penguins foobar Finally, to change the foobar file's owner to tux and the group to penguins with a single command, the syntax would be: user@host:/home/user$ sudo chown tux:penguins foobar Note that, by default, you must use sudo to change a file's owner or group.

Install Webmin

ใช้ในการจัดการ Server บนเว็บครับ 1. sudo aptitude install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl 2. wget http://garr.dl.sourceforge.net/sourceforge/webadmin/webmin_1.441_all.deb Now download the latest webmin using the following command or from http://www.webmin.com/download.html 3. sudo dpkg -i webmin_1.441_all.deb 4. https://your-server-ip:10000/

Add New Users

Command-line To add a user you must use the sudo command (for an explanation of what that means, see the RootSudo page). Here are the commands: To add a user. NOTE: do not use the useradd command. # sudo adduser To see the options for adding a user try the man command. # man adduserYou might also wish to create a new group for your users. # sudo addgroup To add a new user to a existing group you would do this: # sudo adduser audioTo add an existing user to an existing group you can use the same command: # sudo adduser

Setting DNS

sudo vi /etc/resolv.conf enter the following details EX1 search test.com nameserver 192.168.3.2 EX2 domain rockworth.local search rockworth.local nameserver 10.10.10.9 nameserver 10.10.20.9

Change IP Address [dhcp > static]

1. ไปที่ไฟล์ interfaces #sudo nano /etc/network/interfaces เดิม auto eth0 iface eth0 inet dhcp แก้เป็น auto eth0 #iface eth0 inet dhcp iface eth0 inet static address 10.10.10.251 netmask 255.255.255.0 broadcast 10.10.10.255 gateway 10.10.10.1 2. Restart Network โดย #sudo /etc/init.d/networking restart

วิธีการเปลี่ยน Password root

หลังจากที่ติดตั้งเสร็จเรียบร้อยแล้ว ให้ทำการ login เข้าสู้ระบบ # sudo su - # ใส่ password ที่ login เข้ามา # sudo passwd root # ใส่พาสเวิร์ดของ root ที่ต้อง

คำสั่งตรวจสอบว่าเน็ตตัดไปกี่ครั้ง

เป็นวิธีดูเป็น report ว่าเน็ตแต่ละสายมีการตัดและต่อใหม่ ตอนไหน เมื่อไร บอกเป็น เวลา - วันที่ ว่าแต่ละ ppp ได้ ip อะไรมา เปรียบเทียบเอาได้เลยว่ากี่ชั่วโมงตัดทีนึงครับ พิมพ์ cat /var/log/syswatch grep "detected" ใน putty เลยครับ อีกที่นึงดูผ่าน webconfig เลือกที่Reports > Logs >file = syswatch ( มีเป็น Choice ให้เลือก )filter = detected ( ตรงนี้พิมพ์เองครับ )แล้วก็คลิกที่ display ที่มา http://www.zealzonecafe.com/board/index.php?topic=291.0

เทคนิค Ghost XP ข้าม Spec

โดยปกติแล้วถ้าเราทำการ Ghost Harddisk ข้าม Spec เครื่องกันนั้น Windows จะออกอาการเอ๋อ บูตเครื่องแล้วเข้า Windows ไม่ได้หรือขึ้น Blue Screen อันเนื่องมาจาก Chipset ที่ควบคุม IDE หรือ Harddisk บน Mainboard ที่ Windows ทำการ Detect เจอตอนลง OS เปลี่ยนไป๋ จึงทำให้ Windows ที่เราอุตส่าหะ Ghost ขึ้นมาเอ๋อเหรอไป บางคนอาจจะแก้ด้วยวิธี Ghost ไปก่อนแล้วค่อยไป Remove Driver ออกใน Safe mode แล้วลง Driver ใหม่บางแหละ Ghost ไปก่อนแล้วบูทเครื่องด้วย CD Windows Install แล้วทำการ Install แบบ Repare ทับบ้าง วิธีการแบบนี้ก็ถือว่าเป็นการแก้ปัญหา (แบบใช้ความสามารถส่วนบุคคล ที่ผมคิดว่ามันอาจจะใช้เวลามากกว่าที่เรามานั่งลง Windows ใหม่เสียอีก อีกทั้งมันยังมีปัญหาตามมาให้ปวดกระบาลอีกแน๊ะ วิธีพวกนั้นสำหรับตัวผมจึงขอบ๊ายบายดีกว่า... จนวันนึง ซึ่งเป็นเช้ายามว่างของ Admin ตัวน้อยๆ คนนี้ ก็ได้พบกับคำตอบที่จะทำให้การลง Windows บนเครื่องใหม่ ง่ายดายมาก (โอ้วจ๊อด) จากที่เคยใช้เวลาลงให้รีบคลิ๊กรีบกรอกรีบลงโปรแกรมแค ่ไหนก็น่าจะเกิน 1 ชั่วโมงครึ่ง-2 ชั่วโมงครึ่ง อันนี้รวมโปรแกรมสารพัดที่ User ใช้งานด้วยนะ อาจจะ

การตั้งเวลาระหว่าง Server และ Client

กฎหมายได้ออกมาชัดเจนว่าให้ทางผู้ดูแลระบบต้องทำการ Sync Time Server อยู่ตลอดเวลาเพื่อให้เวลาไม่คลาดเคลื่อน เพื่อให้สามารถตรวจสอบข้อมูลได้ในกรณีที่มีปัญหาเกิดขึ้น ซึ่งก็หมายถึงจะได้เวลาที่ตรงกัน หรือใกล้เคียงกันมากที่สุดนั่นเอง *** Windows 2003 Server R2 (Domain Controller) ไปที่ Command Prompt แล้ว พิมพ์ net time /querysntp เพื่อทำการตรวจสอบก่อนว่าเครื่อง Server ได้ทำการ Sync กับที่ไหนอยู่ โดยปกติแล้ว Windows จะ Sync อยู่ที่ time.windows.com ทำการเปลี่ยนแปลง Server ที่ต้องการ Sync โดยพิมพ์ net time /setsntp:{server address} เช่น net time /setsntp:time.navy.mi.th ที่เลือกใช้ Time Sync Server ของ time.navy.mi.th เพราะว่าเจอปัญหาที่ผู้ใช้งานโทรไปเช็คเวลากับเบอร์ 181 จะได้ตรงกัน หยุดการทำงานของ Service Time Sync ก่อน โดยพิมพ์ net stop w32time เริ่มการทำงานของ Service Time Sync โดยพิมพ์ net start w32time *** Windows XP (Client join Domain) หลักการหลังจากที่ Computer ทำการ Join Domain แล้วจะมีการ Sync กันอยู่แล้ว แต่ปัญหาที่เกิดขึ้นหลังจาก Join Domain แล้วเวลาจะคลาดเคลื่อนออกไปเรื่อย

วิธีการทำ Forword Port สำหรับ DotA สำหรับ CC4.3

ให้เข้าไปที่ WebConfig https://ip-server:81 เข้าไปที่เมนู Network > Port Forwarding ในส่วนของ Add a Port Forwarding Rule ให้ใส่ช่องที่ 2 ดังนี้ Nickname --- Protocol --- From Port --- To Port --- To IP DOTA01 --- TCP --- 7101 --- 7101 --- ip-com1 DOTA01 --- TCP --- 7102 --- 7102 --- ip-com2 แล้วกด Add ทีละเครื่อง ทำอย่างนี้ไปให้ครบทุกเครื่อง เข้าไปที่เกมส์ DotA ก่อนที่จะเข้า Battle.net ให้เข้าไปที่ Option เพื่อทำการปรับ Port ของเกมส์แต่ละเครื่องให้ตรงกับที่เซ็ตไว้ใน CC

Update Squid

25/12/2008 เพื่อทำให้ Squid เก็บแพทซ์เกมส์ให้ได้มากกว่าเดิม แก้ไขตรง refresh_pattern ดังนี้ครับ refresh_pattern -i \.(html|htm|/)$ 240 20% 1440 refresh_pattern -i \.(asp\?|aspx\?|php\?) 0 20% 1440 refresh_pattern -i \.(asp|aspx|php)$ 240 20% 1440 refresh_pattern -i \.(jpg|gif|jpeg|png|css|js|bmp|tif|tiff|xbm|png|swf)$ 240 100% 14400 refresh_pattern -i \.(raw|delta|exe|zip|gz|arj|lha|lzh|rar|tgz|tar|Z)$ 4320 80% 43200 override-lastmod reload-into-ims refresh_pattern -i \.(class|pdf|rtf|doc|wp|wp5|cab|kf|pkg|gz|dat|ps|delta|raw|z|div|db|fsh|pak|prn)$ 7200 80% 14400 override-lastmod override-expire reload-into-ims refresh_pattern -i \.(mov|avi|mpg|wav|au|mid|mp3)$ 1440 100% 14400 override-lastmod override-expire reload-into-ims refresh_pattern ^http://patch.sf.* 4320 100% 43200 ignore-reload override-lastmod reload-into-ims refresh_pattern ^http://update.cabal.* 4320 100% 43200 ignore-reload override-lastmod reload-into-ims refresh_pattern ^http://download.cabal.* 4320 100%

Log of PPPoE

ดูข้อมูลการ Connect ของ ppp2 ว่า connect ได้หรือไม่อย่างไร # cat /var/log/syswatch | grep ppp2

การใช้งาน Logrotate

Image
เป็นกลไกของระบบปฏิบัติการลีนุกซ์ที่ช่วยลบ log file ที่เก่ากว่าออกไป แล้วสร้างไฟล์ log ขึ้นใหม่ ซึ่งมีผลทำให้ไฟล์ log ไม่ใหญ่มากเกินไป โดยการสร้าง log file มาใหม่นั้นจะไปสร้างซ้ำกับไฟล์เดิม ในไฟล์ /etc/logrotate.conf จะมี option มากกมายให้เราแก้ไข แต่ พอสรุป ได้ คราวๆ ดังนี้ Weekly-daily-monthly หมายถึง ให้มีการ rotate ใน ทุกๆ อาทิตย์ (weekly) หรือ ทุกๆ วัน (daily) หรือ เดือน (monthly) rotate xx หมายถึง สั่งให้มีการ rotate xx ครั้ง ก่อนลบไฟล์เก่าทิ้งไป compress หมายถึง สั่งให้มีการ zip ไฟล์ที่ถูก rotate ไปแล้ว delaycompress หมายถึง สั่งให้มีการชะลอการ zip ไป 1 ครั้ง ทำให้การ rotate ครั้งแรกเป็นการเปลี่ยนชื่อไฟล์เพียงอย่างเดี่ยว และจะถูก zip ในการ rotate ในครั้งต่อไป notifemply-ifemply หมายถึง ไม่ให้มีการ rotate เมื่อ log file นั้นว่าง postrotate เป็นการกำหนดให้มีการรันคำสั่ง หลังจาก ที่มีการ rotate ไปแล้ว endscript เป็นการจบคำสั่งของ postrotate mail(address) เป็นการสั่งให้ระบบส่ง log file ให้ผู้ดูแลระบบทาง E-mail prerotage/endscript เป็นการกำหนดให้มีกา

การใช้งาน crontab

crontab บน Linux ==================== คำสั่ง crontab เป็นคำสั่งในการทำ schedule ในการสั่งโปรแกรม หรือ script ต่างๆ ทำงานตามเวลาที่กำหนด บนระบบ UNIX/LINUX ซึ่งอำนวยความสะดวกได้มากเลยที่เดียว งานบางอย่างที่จำเป็นต้องทำซ้ำๆในเวลาเดียวกัน ไม่ว่าจะทุกวัน ทุกสัปดาห์ หรือ ทุกเดือน การใช้งาน crontab ------------------------ คำสั่งและ option ของ crontab มีดังนี้ Code: crontab filename การนำเอาคำสั่ง crontab เข้ามาจาก ไฟล์อื่น crontab -e แก้ไข crontab ปัจจุบัน crontab -l ดูคำสั่ง crontab ทั้งหมดที่มีอยู่ crontab -r ลบคำสั่ง crontab ที่มีทั้งหมด crontab -u user เป็นคำสั่งของผู้ดูแลระบบเท่านั้น(administrators) เพื่อใช้ดู แก้ไข ลบ crontab ของ user แต่ล่ะคน เมื่อเรียกคำสั่งตามข้างบนแล้ว crontab จะเข้าสู่ระบบการ กำหนด หรือ แก้ไข ซึ่งการ กำหนด หรือแก้ไขนี้ จะเหมือนกับการใช้งาน vi ครับ ถ้าใครเคยใช้งาน vi แล้วก็จะไม่มีปัญหาอะไร ถ้าไม่เคยใช้ ก็ดูคำสั่งพื้นฐานของ vi ด้านล่างนะครับ เมื่อเรียกโปรแกรม crontab ให้ท

วิธีการเก็บ access.log ของ squid ให้เป็นวันละไฟล์

โดยปกติ CC ก็ทำเองอยู่แล้วแต่จะทำตอน 04.00 แต่ถ้าไม่ได้เปิดเครื่อง 24 ชม. ก็จะไม่ได้ทำงานในส่วนนี้เลย ดังนั้นมาเปลี่ยนให้ CC ทำงานตอน 22.00 กันดีกว่าครับ เข้าไป ใน winscp /etc/crontab 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly แก้เป็น 01 * * * * root run-parts /etc/cron.hourly 00 22 * * * root run-parts /etc/cron.daily (แก้ตรงนี้หรือจะแก้หมดก็แล้วแต่ชอบครับ) 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly Credit : K.Pice @ lunuxthai.org

ตรวจสอบว่าเกมส์ใช้ Port ไหนออก Wan ไหน

สืบเนื่องจากกระทู้ : http://www.linuxthai.org/forum/index.php?topic=2495.0 เริ่มที่จะว่างๆ ผมเลยเกิด idea เด็ดๆ ทำ Script ขึ้นมาให้มิตรรักแฟนเพลงได้ลองกันเลยครับ อีกอย่างผมก็ไม่อยากแอบแซบคนเดียวซะด้วยครับ หลังจาก Download : http://203.154.173.174/multiwan/checkwan.tar.gz ให้ทำการแตกไฟล์ออกมาด้วยคำสั่ง tar ตัวอย่าง : #tar xvfz checkwan.tar.gz จากนั้นทดลองใช้งานด้วยคำสั่ง #./checkwan ต่อด้วย parameter ของ ip เครื่องลูกดังตัวอย่าง ################################### loma:~/wan# ./checkwan.pl 192.168.1.5 Power by Delphi@linuxthai.org version 1.0 protocol source destination sport dport interface tcp 192.168.1.5 61.90.203.53 1369 27931 ppp103 : 117.47.x.xx loma:~/wan# ################################### ทดลองใช้ดูครับ การทำงานเป็นลักษณะ Realtime ส่วน Source code ด้านใน สามารถปรับแต่งเองได้ (ไปศึกษาภาษา Perl เอาเองนะครับ) ปล ใช้ฟรีครับ ใครจะเอาไปแก้ Code ด้านในก็ขอ เครดิตแบบ GNU ของ

Clear Cache

CLEAR CACHE FROX service frox stop sleep 2 rm -rf /var/??/frox/ mkdir -p /var/??/frox sleep 2 chown frox:frox /var/??/frox/ chmod 777 /var/??/frox/ service frox start ?? คือพาร์ทของ cache ที่เก็บครับ แล้วแต่ว่าจะ config ไปที่ไหน CLEAR CACHE SQUID service squid stop sleep 2 rm -rf /var/spool/squid mkdir -p /var/spool/squid sleep 2 chown squid:squid /var/squid chmod 777 /var/spool/squid service squid start Credit : tanutcha99@linuxthai.org

ตรวจสอบสัญญาณอินเตอร์เน็ตของแต่ละเส้น

เมื่อเช็คว่า ppp ครบตามจำนวนสายเน็ตที่มีอยู่ ขั้นตอนต่อไป ให้ทำการตรวจสอบสัญญาณอินเตอร์เน็ตของแต่ละเส้น ว่าปกติหรือไม่ โดยใช้คำสั่ง ping -c 5 -I ppp101 203.144.244.1 ค่า ppp101 ให้เปลี่ยนเป็น ppp ที่ต้องการตามจำนวนเส้นที่ต้องการเช็ค ทดสอบเส้น ppp101 root@cyren:~# ping -c 5 -I ppp101 203.144.244.1 PING 203.144.244.1 (203.144.244.1) from 61.7.167.170 ppp101: 56(84) bytes of data. 64 bytes from 203.144.244.1: icmp_seq=1 ttl=249 time=26.5 ms 64 bytes from 203.144.244.1: icmp_seq=2 ttl=249 time=24.8 ms 64 bytes from 203.144.244.1: icmp_seq=3 ttl=249 time=31.3 ms 64 bytes from 203.144.244.1: icmp_seq=4 ttl=249 time=25.9 ms 64 bytes from 203.144.244.1: icmp_seq=5 ttl=249 time=26.4 ms --- 203.144.244.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4004ms rtt min/avg/max/mdev = 24.809/27.003/31.319/2.245 ms root@cyren:~# ทดสอบเส้น ppp102 root@cyren:~# ping -c 5 -I ppp102 203.144.244.1 PING 203.144.244.1 (203.144.244.1) from 58.147.54.130 ppp102: 56(84) bytes of da

<< เสียงจาก Mainboard >>

เสียงดัง 1 ครั้ง แสดงว่าขั้นตอนการบูตเครื่องหรือขั้นตอน Post เป็นปกติ เสียงดัง 2 ครั้ง แสดงว่ามีปัญหาในส่วนของแรม เช่น เสียบไม่แน่นหรือแรมเสียทำให้บูตเครื่องไม่ผ่าน ควรตรวจสอบแรม เสียงดัง 3 ครั้ง แสดงว่ามีปัญหาในส่วนของแรม เช่น เสียบไม่แน่นหรือแรมเสียทำให้บูตเครื่องไม่ผ่าน ควรตรวจสอบแรม เสียงดังต่อเนื่อง แสดงว่ามีปัญหาในส่วนของแหล่งจ่ายไฟ เช่น เพาเวอร์ซัพพลาย หรือเมนบอร์ดอาจมีปัญหา ให้ตรวจสอบ เพาเวอร์ซัพพลาย และเมนบอร์ด เสียงดังถี่ๆ แสดงว่ามีปัญหาในส่วนเมนบอร์ด ให้ตรวจสอบสายสัญญาณต่างๆและตัวเมนบอร์ด เสียงดัง 6 ครั้ง แสดงว่ามีปัญหาในส่วนของคีย์บอร์ด ให้ตรวจสอบคีย์บอร์ด เสียงดัง 7 ครั้ง แสดงว่ามีปัญหาในส่วนของซีพียู อาจต้องเปลี่ยนซีพียูใหม่ เสียงดัง 8 ครั้ง แสดงว่ามีปัญหาในส่วนของการ์ดแสดงผล (VGA) ตรวจสอบการ์ดแสดงผลว่าเสียบแน่นดีหรือไม่ หากยังไม่ได้ผลอาจต้องเปลี่ยนการ์ดแสดงผลใหม่ เสียงดังยาว 1 สั้น 2 แสดงว่ามีปัญหาในส่วนของการ์ดแสดงผล (VGA) ตรวจสอบการ์ดแสดงผลว่าเสียบแน่นดีหรือไม่ หากยังไม่ได้ผลอาจต้องเปลี่ยนการ์ดแสดงผลใหม่ เสียงดัง 9 ครั้ง แสดงว่ามีปัญหาในส่วน

ModalPopup Extender อย่างง่าย

ModalPopup ก็เปรียบเสมือนการเขียนด้วย Javascript โดยหลักการคลิ๊กที่ปุ่มแล้วให้แสดงข้อมูลตรงกลางหน้า โดยที่หน้าที่ถูก Popup ทับอยู่จะไม่สามารถทำอะไรได้จนกว่าหน้า Popup จะทำการเสร็จสิ้น Main Page เป็นหน้าหลักที่มี Control ดังนี้ สร้าง CSS ตามดังนี้ .ModalPopupBG { background-color: #000000; filter: alpha(opacity=75); opacity: 0.8;} สร้าง Panel ใช้สำหรับเก็บ Control ต่างๆที่ต้องการให้แสดงตอนกดปุ่ม Popup โดยใน Panel จะมี Control ที่สำคัญอยู่ 2 ปุ่มคือ Ok กับ Cancel เป็นต้น Button สำหรับที่กดปุ่มแล้วให้ ModalPopup ทำงาน และทำการ Add Extender ModalPopup เข้าไปด้วย โดยที่ Extender จะมีค่ากำหนดดังนี้ BackgroupCssClass = ModalPopupBG CancelControlID = Cancel  PopupControlID = Pane *** ปุ่ม OK ที่อยู่ใน Panel ก็สามารถเขียน Code ได้ตามต้องการ

Function of RecordSet

// แสดงจำนวนข้อมูลทั้งหมดมีกี่ Rows $totalrec = mysql_num_rows($result); // การแสดงผลข้อมูลทั้งหมด for ($i = 0; $i < $totalrec; $i++) { echo " "; $row = mysql_fetch_row($result); for ($j = 0; $j < $fields; $j++) { echo "  " . $row[$j] . "  "; } echo " "; } // แสดงจำนวน columns ทั้งหมด $fields = mysql_num_fields($result); // การแสดงผล Columns ทั้งหมด for ($i = 0; $i < $fields; $i++) { echo "< td >< center >< b >" . mysql_field_name($result,$i) . "< /b >< /center >< /td >"; }

Connection MYSQL

$host = "localhost"; $user = "username"; $pass = "password"; $link = mysql_connect($host,$user,$pass); mysql_query("SET NAMES UTF8"); // แก้ปัญหาภาษาไทยเพี้ยน $sql = "SQL Command" $result = mysql_query($sql); mysql_close($link); ?>

Meta of HTML for Thai Problem

< meta http-equiv="Content-Type" content="text/html; charset=utf-8" >

Function include

include("Connection.php");

Function :: แสดงข้อมูลวันที่วันสุดท้ายของเดือน

DateTime.DaysInMonth(Now.Year, Now.Month)

Crystal Report : The maximum report processing jobs limit.

Problem = "The maximum report processing jobs limit configured by your system administrator has been reached." หมายถึงมีการใช้งาน Engine ของ Crystal Report มากเกินกว่าที่ระบบตั้งเอาไว้ที่ 75 ดังนั้นเราสามารถปรับเปลี่ยนได้ โดยการไปที่ regedit แล้วไปที่ HKEY_LOCAL_MACHINE\SOFTWARE\CRYSTAL DECISIONS\10.0\REPORT APPLICATION SERVER\SERVER\PrintJobLimit Value = 75 > Default Value = -1 > Unlimited Jobs

GridView : Summary Data and Display on Footer

1. กำนหนดที่ GridView ให้ ShowFooter = true 2. แล้วสร้าง Method ที่ชื่อ RowDataBound 3. Coding ดังนี้ If (e.Row.RowType = DataControlRowType.DataRow) Then sq_oqua += CDbl(e.Row.Cells(1).Text) ElseIf (e.Row.RowType = DataControlRowType.Footer) Then e.Row.Cells(0).Text = "Total" e.Row.Cells(1).Text = FormatNumber(sq_oqua, 2) End If

Set Dataset to Session for any pages.

Files :: t1.aspx session("a") = ds Files :: t2.aspx dim a as dataset = session("a") gridview.datasource = a.tables("tbl") gridview.databind() -- @@ clear data on session session("a") = nothing

Response.Redirect VS Server.Transfer

เมื่อวันก่อนมีคนมาถามที่ http://www.greatfriends.biz เรื่อง Response.Redirect กับ Server.Transfer ว่าต่างกันอย่างไร ผมเห็นเรื่องนี้มีถามกันบ่อยพอสมควร แม้แต่ใน webboard ต่างประเทศก็มีถามกันบ่อยๆ เลยถือโอกาสนี้เอามาลงบล๊อกซะเลยครับ เรื่องนี้ถือว่าเป็นเรื่องสำคัญเรื่องหนึ่ง จนหนังสือ MCTS 70-528 Microsoft .Net Framework 2.0 Web-based Client Development Book เขียนเป็นหัวข้อสำคัญบทหนึ่งทีเดียว นั่นคือเรื่อง Site Navigation ในหนังสือกล่าวว่า การทำ Navigate Pages หรือการเปลี่ยนหน้า page นั้นสามารถทำได้ 4 วิธีครับ ได้แก่ 1. สร้าง client-side code หรือ markup สำหรับ request page ใหม่ 2. ทำ Cross-page 3. สั่ง client-side browser redirect 4. สั่ง server-side transfer สำหรับวิธีที่1 ได้แก่การเขียนคำสั่ง javascript เช่น หรือจะกำหนดที่ tag ของ Control ก็ได้ เช่น HyperLink สำหรับวิธีที่2 การทำ Cross-paging หมายถึงการที่มีการใส่ข้อมูลที่ page ที่หนึ่ง และทำการ process ข้อมูลที่ page ที่สอง ซึ่งในกรณีนี้ page ที่สองจะมี property ชื่อ ProviousPage สำหรับเก็บ object ของ page ที่หนึ่ง เพื่อที่ page ที่

Language Setting

Property "UICulture" - ใช้กำหนดภาษาที่นำมาใช้ในเพจ Property "Culture" - ใช้กำหนดรูปแบบสัญลักษณ์ของภาษาที่ต้องการใช้ เช่น รูปแบบวันที่ สัญลักษณ์ การเงิน เป็นต้น de-DE German(Germany) en-US English(US) - 01/25/2009 en-GB English(UK) - 25/01/2009 th-TH Thai(Thailand) - 25/01/2552 สามารถกำหนดที่แต่ละไฟล์ aspx ในส่วนของ Page Directory ได้ (ด้านบนสุด) หรือถ้าใช้แบบเดียวกันทั้งเว็บให้กำหนดที่ web.config เลย

Inherits Class

การใช้ Inherits เป็นการสืบทอดสิ่งต่างๆจากพ่อมาสู่ลูก แต่ในที่นี้จะกล่าวถึงการใช้เพื่อช่วยลดการปะรกาศตัวแปรที่ต้องใช้บ่อยๆ เพื่อง่ายต่อการเขียนโปรแกรมหรือการแก้ไขโปรแกรมครับ ข้อดี - ทำให้โปรแกรมเมอร์ไม่ต้องทำการประกาศตัวแปรทุกๆหน้า ลดเวลาการเขียนโปรแกรมไปได้เยอะพอสมควรครับ ^^" 1. สร้างไฟล์ที่เป็น Class.vb ขึ้นมา 1 ไฟล์โดยมี Code ดังนี้ Imports Microsoft.VisualBasic Imports System.Data Imports System.Data.SqlClient Public Class CVariables Inherits System.Web.UI.Page    Public Conn As New SqlConnection(ConfigurationManager.ConnectionStrings("conn_db").ConnectionString) 'ตัวแปรติดต่อฐานข้อมูล โดยให้ไปเอารูปแบบการติดต่อฐานข้อมูลจากไฟล์ web.config    Public Sql As String 'เพื่อเก็บ Sql Query    Public Da As SqlDataAdapter 'ใช้ในการสร้างสะพานเชื่อมต่อระหว่างฐานข้อมูลกับ DataSet    Public ds As New DataSet 'ใช้ในการเก็บข้อมูลในรูปแบบ DataTable    Public SqlTran As SqlTransaction 'ใช้ในการสร้าง Transaction ในกรณีไฟดับข้อมูลที่ฐานข้อมูลจะได้ไ

Using Transaction

การเขียนโปรแกรมในการที่ต้องติดต่อฐานข้อมูลไม่ว่าจะเป็นภาษาอะไรก็ตามนั้น มีความจำเป็นต้องเขียนโปรแกรมให้ Script ต่างๆเหล่านั้น Run ให้เสร็จสมบูรณ์ มิเช่นนั้นระบบอาจได้ข้อมูลที่ไม่ครบถ้วนได้ สมมติเหตุการณ์ ถ้านาย A เป็นพนักงานธนาคารและกำลังทำการนำเงินของลูกค้านาย B เข้าระบบอยู่จังหวะนั้นเกิดไฟดับขึ้น แล้วโปรแกรมที่กำลังทำการเข้าเงินนั้นยังทำไม่สมบูรณ์ ทำให้ข้อมูลของนาย B นั้นไม่สมบูรณ์ ข้อดีของการใช้ Transaction คือทำให้กรณีที่โปรแกรมทำงานได้ไม่สมบูรณ์จะทำการ Rollback (ไม่ใช่ของโลตัสนะ เหอะๆ) ข้อมูลที่เราทำไว้ทั้งหมดคืน เป็นเหมือนก่อนที่เราจะเริ่มรันโปรแกรม 1. ประกาศตัวแปร Transaction Dim SqlTran as SqlTransaction หรือ Dim OleTran as OledbTransaction 2. เปิดการใช้งาน Connection Conn.open 3. เริ่มงานใช้งาน Transaction SqlTran = Conn.BeginTransaction หรือ OleTran = Conn.BeginTransaction 4. กำหนดให้ Adapter ทั้งหลายเข้ามาใช้งานในระดับ Transaction sqlCommand.Transaction = SqlTran ' @@ กรณีที่ใช้เป็น Command sqlAdapter.SelectCommand.Transaction = SqlTran ' @@ กรณีที่ใ

Linux - Setting DVR on Internet by ClarkConnect

หลังจากที่ติดตั้ง ClarkConnect เป็นที่เรียบร้อยแล้ว ถ้าต้องการดูกล้องวงจรปิดผ่านอินเตอร์เน็ตนั้น สามารถทำได้ง่ายๆ โดย 1. เข้าไปที่หน้าเว็บ Config ของ ClarkConnect (https://[ipaddress of cc]:81) 2. เข้าไปที่เมนู Network >> Incoming แล้วทำการเพิ่ม Port 7188 [อันนี้เป็น Port ที่ใช้ในการเข้าชมผ่านเว็บ] Port 5000-5001 [อันนี้เป็น Port ที่ใช้ของกล้อง] 2. เข้าไปที่เมนู Network >> Port Forwarding แล้วทำการเพิ่ม 7188 > 192.168.1.111 Port 80 [เป็นการ Fordwarding จาก 7188 ไปยังเครื่อง IP 192.168.1.111 และ Port 80] 5000-5001 > 192.168.1.111 Port 5000-5001 เข้าไปที่หน้าเว็ยแล้วเข้าเว็บ http://ipaddress:7188 ** Port ขึ้นอยู่กับ Software ของกล้องนะครับ ว่าเค้าใช้งาน Port ไหนบ้าง

Linux - ClarkConnect Server for InternetCafe

    ร้านอินเตอร์เน็ต หรือที่เรียกว่า InternetCafe นั่นเองทุกๆร้านนั้นมีความจำเป็นต้องใช้บริการอินเตอร์เน็ต และปัญหาของร้านอินเตอร์เหล่านั้นที่พบเจอกันเป็นส่วนใหญ่คือ ปัญหาการท่องอินเตอร์เน็ตทำให้ผู้ที่มาเล่นเกมส์ออนไลน์นั้นเกิดการกระตุก สะดุด เล่นได้อย่างไม่สะใจ ดังนั้นผู้ที่เป็นเจ้าของจำเป็นต้องหาหนทาง หรือว่าเทคนิคที่จะทำให้ผู้ที่เล่นเกมส์เหล่านั้นสบายใจเล่นได้อย่างไม่กระตุกนั่นเอง และบทความนี้จะช่วยให้เจ้าของร้านอินเตอร์เน็ตแก้ปัญหาเหล่านั้นได้ โดยการสร้าง Server ที่สามารถแยกเน็ตแยกเกมส์ออกจากกันให้วิ่งกันคนละสาย (กรณีที่ร้านมีอินเตอร์เน็ตมากกว่า 1 สาย) โดยใช้ Linux ที่ชื่อว่า ClarkConnect โดยมีวิธีการและขั้นตอนดังนี้ 1. Install CC [ Download All Scripts. ]     ให้เรียบร้อยก่อนจะลงอะไรเพิ่มเติมตามสบายครับ หลักๆควรมี WebServer ใช้ในการประชาสัมพันธ์คนในร้าน และแสดงรายงาน     # DHCP and Caching DNS Servers     # Intrusion Detection and Prevention     # DMZ and 1-to-1 NAT Firewall     # Multi-WAN Support     # Web Proxy Server     # Web Server     # Database Server 2. Config