Category: tip

ความเร็วของ droplet ใน digitalocean

เขียนเมื่อ 01-06-2017 อนาคตข้างหน้า อาจจะไว้กว่านี้หรือมี node ที่อื่นก็ได้

ปกติผมจะใช้บริการ server ที่ digital ocean ซะเป็นส่วนใหญ่ ถ้าเว็บไม่ใหญ่มาก หรือต้องการปรับแต่ง server ให้มากกว่า share server ทั้งหลาย แต่ไม่อยากจ่ายแพงเหมือน vps เว็บๆ เล็กๆ บางเว็บ แค่ digital ocean ตัวล่างสุด เดือนละ 5usd ก็เพียงพอใช้งานแล้ว ถ้าไปได้ดีก็สามารถเพิ่ม spec ทีหลังได้ แต่ถ้าไม่รุ่งก็ปิดไปได้เลย ไม่ต้องจ่ายเป็นรายปีแบบ vps

ทีนี้ digital ocean มันก็มี node ตั้งหลายที่ แล้วที่ไหนมันเหมาะกับเมืองไทยละ

ส่วนใหญ่ผมจะใช้ที่สิงคโปร เพราะ bandwidth กลับไทย เยอะสุดละ แต่บางงานก็อยากลองที่แปลกๆ หรือเว็บบางแบบ ก็ไม่อยากใช้ ip ใกล้ๆ ประเทศไทย (รู้ๆ กัน) ก็เลยลองทดสอบความเร็วของแต่ละ server ที่ digital ocean แล้วเอามาแชร์กันครับ

New York มี 3 Node

Ping จะอยู่ราวๆ 300 กลางๆ แต่ Download น้อยมากๆ 5Mb กว่าๆ จากที่เคยใช้ เว็บจะโหลดมาเรื่อยๆ ไม่หลุด แต่ก็ไม่ไวควรจะใช้ cloudflare ครอบไว้ ถ้าเป็นเว็บแบบ dynamic ที่ต้องโหลดบ่อยๆ ไม่แนะนำนะครับ

San Francisco มี 2 Node

Ping น้อยลงถ้าเทียบกับ New York ความเร็วก็ดีกว่าด้วย ถ้าต้องการ Server ที่เมกา ช่วงหลังๆ ผมจะใช้ที่ SF มากกว่า NY ละครับ

Amsterdam มี 2 Node

ผมไม่เคยใช้ Node ในยุโรปเลย ความเร็วก็พอๆ กับซานฟราน

Singapore มี 1 Node

เหมาะสำหรับตั้ง Server สำหรับเว็บไทย ที่ไม่อยากตั้ง Server ที่ไทย ที่สุดแล้ว เป็นที่ประจำของผมเองแหละครับ

London มี 1 Node

อีกที่ในยุโรป ผมไม่เคยใช้เหมือนกันครับ

Frankfurt มี 1 Node

อยู่ยุโรป ความเร็วกับปิงก็พอๆ กับ node อื่นๆ ในยุโรป

Toronto มี 1 Node

อีก node ในทวีปอเมริกา ความเร็วจากเมืองไทยไม่ค่อยดีเท่าไหร่

Bangalore มี 1 Node

อีกที่ที่ผมเอาไว้เก็บเว็บที่ไม่อยากอยู่ในเมืองไทย แล้วไม่อยากตั้งไว้สิงคโปรเหมือน server อื่นๆ เอาไว้ทดแทนสิงคโปรได้เลยทีเดียว

SSL ของ cloudflare

SSL ใน CloudFlare มีสามแบบตามรูปนี้

อธิบายตามรูปก็ตามนี้

Flexible SSL
เข้ารหัสระหว่าง USER กับ CloudFlare แต่ระหว่าง CloudFlare กับ Server ไม่ต้องมี SSL
ใช้ SSL ของ CloudFlare เลย

Full SSL
เข้ารหัสระหว่าง USER กับ CloudFlare และ CloudFlare กับ Server
ต้องมี SSL ใน Server แต่ Cloudflare จะไม่สน Cert ใน Server อาจจะเป็น Cert แบบแชร์ก็ได้

Full SSL (stict)
เข้ารหัสระหว่าง USER กับ CloudFlare และ CloudFlare กับ Server
SSL ต้องมี Cert ที่ตรวจสอบได้จริงและยังไม่หมดอายุ

ปกติใน CloudFlare จะเปิด SSL ให้อยู่แล้ว แค่เพิ่ม page rule เข้าไปแค่นั้น ก็ใช้งานได้แล้ว

ตัวอย่างเพิ่ม page rule เพื่อเปิด SSL โดยที่ Server ไม่มี SSL

เขียน htaccess ให้ข้ามใช้ SSL บางหน้า

เดี๋ยวนี้เว็บไซต์ส่วนใหญ่ที่ผมเขียน จะขอ SSL ติดไปด้วยเสมอ เวลาเข้าเว็บที่มี SSL แล้ว เราต้องเขียน htaccess เพื่อบังคับให้ใช้งานผ่าน https ตามนี้

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://www.cmdevhub.com/$1 [NC,R=301,L]

จากข้างบน บรรทัดสุดท้ายจะเป็นการเขียนบังคับให้ทุก request ที่เข้ามา ถูก redirect ไปที่ https ทั้งหมด

แต่บางครั้ง ถ้าเราต้องการเขียนโปรแกรมให้เรียกข้อมูลผ่าน curl จะมีปัญหาทันที เราจะไม่สามารถเรียกผ่าน https ได้ วิธีแก้ปัญหาก็คือ เขียนเงื่อนไขให้ยกเว้นบาง url หรือบางไฟล์ ให้ผ่านทาง http ปกติ แค่นี้ก็จะสามารถใช้ curl ได้แล้ว

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond http://www.cmdevhub.com/loaddata.php [NC]
ใช้งาน URL ด้านบนผ่าน http เท่านั้น

RewriteCond %{SCRIPT_FILENAME} \/load\.php [NC]
ไฟล์ load.php ใช้งานได้โดยไม่ต้องผ่าน https อยู่ใน directory ใดก็ได้
RewriteRule ^(.*)$ https://www.cmdevhub.com/$1 [NC,R=301,L]

เท่านี้เราก็แก้ปัญหาเรียก curl ผ่านเว็บที่ใช้ https ได้แล้ว หวังว่าจะมีประโยชน์บ้างนะครับ

เซ็ต virtual host ใน xampp

หลังจากลง xampp แล้ว ถ้าเราต้องการเพิ่ม virtual host โดยให้ทำงานแบบแยกพอร์ท เราสามารถแก้ไขไฟล์ htconf ได้ โดยเพิ่ม

บอกว่าจะใช้พอร์ทไหนโดยเขียน จากตัวอย่างบอกว่าจะใช้พอร์ท 8001

Listen 8001

จากนั้นตั้งชื่อ host และบอกว่าไฟล์เก็บไว้ที่ไหน

<VirtualHost localhost:8001>
DocumentRoot “e:\www\test”
</VirtualHost>

เสร็จแล้วให้ทำการ save และทำการ restart apache โดยการกด stop และ start ใน xampp control panel

หลังจากเริ่ม apache ใหม่แล้ว ให้ทดลองเปิด browser แล้วพิมพ์ localhost:8001

ถ้าหากไม่มีปัญหาก็จะสามารถใช้งานไฟล์ที่อยู่ใน directory ได้ ถ้าหากเกิด error 403 แสดงว่าไม่ได้ตั้งให้ apache ใช้งาน directory อื่นได้ ให้เราไปเซ็ตค่าที่

<Directory />
AllowOverride none
Require all denied
</Directory>

เปลี่ยนเป็น

<Directory />
AllowOverride all
Require all granted
</Directory>

เท่านี้ก็จะสามารถเรียก directory ใดๆ จากในเครื่องได้แล้ว

Windows 7 ISO จากเว็บ Microsoft

Windows 7 ถือว่าเป็น OS ที่ดีมากตัวหนึ่งของ Microsoft คอมรุ่นใหม่ๆ ไม่ว่าจะเป็น Desktop หรือ Notebook เดี๋ยวนี้โดนบังคับให้ลง Windows 7 ขึ้นไปแล้วทั้งนั้น (จริงๆ บังคับที่ Vista แต่ตัวนั้นมันเป็น 7 beta เลยไม่นับละกัน)

Microsoft ใจดี แจก Windows 7 ให้โหลดกันไปใช้งานได้ 30 วัน ถ้าอยากใช้งานต่อก็หา CD Key มาใส่กันเองนะ ไฟล์ ISO นี้สามารถใช้ Windows 7 USB/DVD Download tools เขียนลงแผ่น DVD หรือใส่ Flash drive ได้เลย

 

โหลดแล้ว อย่าลืมซื้อ CD Key แทนใส่ด้วยนะ

Digitalocean VPS ดีๆ ของฟรีมีในโลก

สวัสดีเพื่อนๆ อีกครั้ง หลังจากงอแงไม่ยอมเขียนมานานมากๆ ช่วงนี้ก็ใกล้จะปีใหม่แล้ว ไปแต่ละที่ก็มีแต่แสงสีและความสุข ^^

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

ทางออกของปัญหาก็มีอยู่ ซึ่งก็แล้วแต่งบประมาณในกระเป๋าของเรา ถ้างบไม่เยอะก็เช่า VPS เอา ถ้ายังไม่พอก็เช่าเป็น Dedicade ไปเลย แต่ถ้าอยากได้แรงสุดๆ อันนี้ก็ต้องซื้อเครื่องแล้วเอาไปตั้งเองเลย แต่ละแบบก็มีข้อดีข้อเสียต่างกันไป

สำหรับ VPS ตอนนี้ก็น่าจะเป็นทางเลือกสำหรับคนที่มีงบน้อย ซึ่งผมก็ไปเจอของ digitalocean ที่ราคาแค่ 5USD / เดือน หรือ 0.007 / ชั้วโมง แถมเป็นแบบกลุ่มเมฆด้วย VPS ราคาถูก แบบนี้เหมาะที่จะเอาไว้ลองเล่น นอกจากนั้น ยังให้ใช้งานได้ฟรี 3 ชั่วโมงแรก ขั้นตอนการติดตั้งก็ไม่ยุ่งยากด้วย ของดีแบบนี้จะพลาดได้ยังไง แบบนี้ก็ต้องลองกันหน่อยละ Continue reading

ทดลอง SAP B1iSN

หลังจากเขียนวิธีติดตั้ง SAP B1iSN ไปแล้ว ถ้าไม่มีการทดลองให้ดู มันก็ไม่เห็นภาพใช่ไหมครับ งั้นก็มาทดลองกันเลยว่าที่เราติดตั้งไปนั้น ใช้งานได้หรือไม่ แต่ก่อนที่จะทดลองก็ต้องมีการเตรียมการก่อน ลองมาดูวิธีการเลยครับ

การใช้งาน SAP B1iSN จำเป็นต้องมีฐานข้อมูลแต่ละสาขาแยกจากกัน ฐานข้อมูลตัวอย่างของ SAP B1 จะมีเพียง DemoUS เพียงตัวเดียว เราสามารถคัดลอกฐานข้อมูลที่มีอยู่แล้วเพื่อทดลองการทำงานกับ B1iSN ได้โดยมีวิธีดังนี้ Continue reading

การติดตั้ง SAP B1iSN

รอบนี้ขอหากินกับของเก่าหน่อยเหอะ หลังจากที่เคยลงวิธีการติดตั้ง SAP B1 เมื่อนานมาแล้ว (นานมาก) จริงๆ แล้ว SAP B1 มันมีตัวเสริมอีกเยอะแยะมากมายเลย ตัวหลักๆ เลยที่โดนถามขายพ่วงด้วยแน่ๆ คือ B1iSN (จริงๆ มันไม่ได้ขายนี่ แต่เสียค่า implement กัน) ถ้าหากอ่านแล้วดูแปลกๆ ก็อย่าแปลกใจเพราะผมใช้วิธีก๊อปจาก word ที่เคยทำให้ลูกค้าดู แล้วบังเอิญไปเจอ flash drive ที่ทำหายไปปีกว่าๆ (ตกหลัง TV!!!) ข้างในนั้นมีงานที่เคยทำไว้เพียบ เลยเอามาแชร์เพื่อนๆ ละกันเนอะ

เนื้อหาบางส่วนอาจจะล้าสมัยไปแล้ว เพราะเขียนไว้ตั้งแต่ปี พ.ย. 2010 แล้วนะ

การทำงานของ SAP B1 แบบง่ายที่สุดเป็นตามภาพด้านล่าง

จากภาพการทำงานจะมีเครื่องลูกข่ายเชื่อมต่อเข้าไปใน Server โดยตรงซึ่งก็จะสะดวกเมื่อทำงานอยู่ภายในสาขาเดียวกันหรือในเครื่องข่ายเดียวกัน (LAN) หลักการนี้ก็เอาไปใช้สำหรับการทำงานต่างสาขาได้เหมือนกันโดยจะมีลักษณะการเชื่อมต่อดังนี้ Continue reading

PDO Connection Class

เขียนเมื่อ 2008-07-23 16:33:10 +0700

ปกติผมจะเขียนโปรแกรมติดต่อฐานข้อมูลโดยฝัง query string เข้าไปในโค๊ดเลย ซึ่งมันก็ง่าย แต่ยากตอนจะเปลี่ยนฐานข้อมูล ก็เลยเขียน class ขึ้นมาเอง แต่ก็ยังติดที่ต้องเขียน method สำหรับแต่ละฐานข้อมูลอยู่ดี ซึ่งฐานข้อมูลบางแบบ ผมไม่ค่อยได้ใช้ (pg sql) หรือไม่เคยใช้เลย (posix, odbc) แต่ก็จำเป็นต้องรู้ไว้บ้างว่าเขียนติดต่อยังไง

หลังจากมาเขียน PHP แบบ OO (แต่ก็ไม่เต็มรูปแบบ) ก็มีคนแนะนำว่า ทำไมไม่ลองใช้ PDO ล่ะ? แรกๆ ก็ไม่ได้สนใจ แต่พอมาจับงานที่ต้องเขียนให้ติดต่อทั้ง PG SQL, MySQL, SQLite แล้วเจอปัญหาเดิมอีก คือ เปลี่ยนฐานข้อมูลลำบาก จะไล่แก้โค๊ดให้หมด ก็บ้าไปแล้ว ก็เลยนึกถึุง PDO ขึ้นมา ลองเล่น ลองลูบ ลองคลำ มันอยู่ 2 อาทิตย์กว่าๆ ก็ได้ Class ส่วนตัวออกมา อิอิ สบายเลย จะเปลี่ยนฐานข้อมูล ก็แก้แค่ไฟล์คอนฟิก Continue reading

[css] Fluid design สำหรับ facebook like box ละ comment

ช่วงนี้เห็นหลายๆ เว็บไซต์เริ่มเขียนเป็นแบบ fluid design หรือจะเรียกว่า responsive web ก็ได้ ยิ่ง Adobe CS6 ออกมาแล้ว ยิ่งเขียนแบบ fluid ง่ายยิ่งขึ้น แต่มันก็ยังมีปัญหาสำหรับเว็บที่ใช้ facebook comment หรือ like box ที่ขนาดมันจะถูกกำหนดไว้ตายตัวเลย วิธีแก้ก็ไม่ยากเลย แค่ใส่โค๊ด CSS นี้เข้าไป

#fbcomments, .fb_iframe_widget, .fb_iframe_widget[style], .fb_iframe_widget iframe[style], #fbcomments iframe[style] ,#fbcomments span, .fb_iframe_widget span, .fb_iframe_widget span[style], .fb_iframe_widget iframe span[style], #fbcomments iframe span[style] {width: 100% !important;}

เท่านี้ก็แก้ปัญหาได้แล้ว