การใช้โปรแกรม Navicat สำหรับเชื่อมต่อ DataBase

การ Connect Navicat Download : https://drive.google.com/file/d/0B45mg2kqF_HOSTA0UGh4SkVIZ00/view 1.โยน File ชื่อว่า ntunnel_mysql เข้าไปใน Server ที่ /home/wwwroot 2. run file ที่เว็บบราว์เซอร์ ด้วย : 192.168.xxx.xxx/ntunnel_mysql หรือ 192.168.xxx.xxx/ntunnel_mysql.php 3.เข้าไปที่โปรแกรม Navicat – General – Connection Name = ชื่อ db – Host Name / IP Address = ปล่อยว่าง – Port = 3306 – User Name = User ที่เรา Add ใน phpmyadmin – Passwd = Passwd ที่เรา Add ใน phpmyadmin – HTTP – ติ๊กเลือก Use HTTP Tunnel – Tunnel URL : http://192.168.xxx.xxx/ntunnel_mysql หรือ http://192.168.xxx.xxx/ntunnel_mysql.php 4. Test Connect 5. OK   หมายเหตุ: -ขอบคุณ คุณอาฮาหมัด เจ๊ะดือราแม จาก สถาบันวัฒนธรรมศึกษากัลยาณิวัฒนา

Read More »

การ Compile ออนไลน์

เมื่อนักพัฒนาระบบต้องการเขียนโปรแกรมภาษาอะไร จำเป็นต้องทำการติดตั้ง Compiler สำหรับภาษานั้น ๆ เสียก่อน Compiler จะทำหน้าที่แปลภาษา Programming ไปเป็นชุดคำสั่งของเครื่อง เพื่อทำงานตามที่นักพัฒนาต้องการ บทความนี้จะแนะนำบริการออนไลน์สำหรับทดสอบ Code ภาษาต่าง ๆ ที่มีชื่อว่า compileonline ซึ่งสามารถทดสอบ Code ผ่านทางเว็บไซต์ เพื่อดูผลลัพธ์ โดยไม่ต้องเสียเวลาติดตั้ง Compiler หรือเปิด Developer Tool เอง สำหรับการทดสอบเล็ก ๆ น้อย ๆ ค่ะ ขั้นตอน ดังนี้ ไปที่ http://www.compileonline.com/ จากนั้นเลือกภาษา / Develop tool ที่ต้องการ ในที่นี้เลือก C# แสดงหน้าจอ ดังนี้ ตัวอย่าง C# คลิกปุ่ม “Compile” จะแสดงผลดัง Terminal ด้านล่าง –> สีแดง คลิกปุ่ม “Execute” จะแสดงผลดัง Terminal ด้านล่าง –> สีน้ำเงิน ตัวอย่าง JavaScript เลือกภาษา / Develop tool ที่ต้องการ ในที่นี้เลือก JavaScript แสดงหน้าจอ ดังนี้ แก้ไขคำสั่งตามต้องการ จากนั้น คลิกปุ่ม “Preview” จะแสดงผลดัง Web View ด้านล่างค่ะ   

Read More »

การแปลงข้อมูลในรูปแบบ JSON เป็นคลาส JAVA

ในการแลกเปลี่ยนข้อมูลระหว่าง application กับ service ที่ติดต่อกับฐานข้อมูลบน server โดยส่วนใหญ่ก็จะแลกเปลี่ยนข้อมูลโดยใช้รูปแบบ JSON ซึ่งในส่วนของแอพพลิเคชัน ต้องทำคลาสในการรับข้อมูลพื่อให้สามารถรับข้อมูลและนำไปใช้ได้สะดวกขึ้น ตัวอย่างข้อมูล JSON เช่น [                    {                              “point”: “40.266044,-74.718479”,                              “homeTeam”:”Lawrence Library”,                              “awayTeam”:”LUGip”,                              “markerImage”:”images/red.png”,                              “information”: “Linux users group meets second Wednesday of each month.”,                              “fixture”:”Wednesday 7pm”,                              “capacity”:””,                              “previousScore”:””                    },                    {                              “point”:”40.211600,-74.695702″,                              “homeTeam”:”Hamilton Library”,                              “awayTeam”:”LUGip HW SIG”,                              “markerImage”:”images/white.png”,                              “information”: “Linux users can meet the first Tuesday of the month to work out harward and configuration issues.”,                              “fixture”:”Tuesday 7pm”,                              “capacity”:””,                              “tv”:””                    },                    {                              “point”:”40.294535,-74.682012″,                              “homeTeam”:”Applebees”,                              “awayTeam”:”After LUPip Mtg Spot”,                              “markerImage”:”images/newcastle.png”,                              “information”: “Some of us go there after the main LUGip meeting, drink brews, and talk.”,                              “fixture”:”Wednesday whenever”,                              “capacity”:”2 to 4 pints”,                              “tv”:””                    } ] และตัวอย่างคลาส JAVA ที่เราต้องการสร้างเอาไว้รับข้อมูล ดังนี้ค่ะ ———————————-com.example.Example.java———————————– package com.example; import javax.annotation.Generated; @Generated(“org.jsonschema2pojo”) public class Example { private String point; private String homeTeam; private String awayTeam; private String markerImage; private String information; private String fixture; private String capacity; private String previousScore; private String tv;   public String getPoint() { return point; } public void setPoint(String point) { this.point = point; } public String getHomeTeam() { return homeTeam; }   public void setHomeTeam(String homeTeam) {

Read More »

การพัฒนา API อย่างมืออาชีพ และทำไมต้อง RESTful Service

API คืออะไร? API ย่อมาจาก Application Programming Interface คือการพัฒนาโปรแกรมสำหรับเป็นส่วนติดต่อเซอร์วิสของแอพพลิเคชั่น หรือโมดูลต่างๆ เพื่อให้คนภายนอกมาเรียกใช้งาน หรือกล่าวอย่างง่ายๆ ก็คือการเขียนโปรแกรมเพื่อให้บริการสำหรับให้คนอื่นมาเรียกใช้งาน ซึ่งแนวคิดเรื่องการสร้าง API เพื่อการใช้งานก็มีมาอย่างยาวนานแล้ว ยกตัวอย่างเช่นตั้งแต่ที่มีการสร้างระบบปฎิบัติการ (OS) ก็จะมีการติดต่อ API ของไดร์เวอร์อุปกรณ์ฮาร์แวร์ต่างๆ ของเครื่องคอมพิวเตอร์เพื่อเรียกใช้งานอุปกรณ์นั้นๆ ตามคำสั่งของนักพัฒนา

Read More »

การตั้งค่า MaxRequestWorkers บน Apache ให้เหมาะสมกับจำนวนผู้ใช้

ปัญหาของ PSU Webmail ในช่วง 9-15 สิงหาคม 2559 ที่ผ่านมา คือ เมื่อเริ่มเข้าสู่เวลาราชการ ในวันทำการ พบว่า มีการตอบสนองที่ช้า บางครั้งต้องรอถึง 15-20 วินาที หรือ ผู้ใช้บางท่านแจ้งว่า Timeout ไปเลย หรือไม่ก็ใช้งานไปสักพัก ถูกดีดกลับมาหน้า Login ใหม่ แต่เมื่อพ้นเวลาราชการ พบว่าการตอบสนองก็เร็วขึ้นดังเดิม รวมถึงในช่วงวันหยุดก็เร็วอย่างที่ควรเป็น ขอบคุณทาง NetAdmin ที่ทำระบบตรวจสอบไว้ที่หน้า Data Center เพื่อตรวจจับความเร็วในการตอบสนองบริการ PSU Webmail ด้วย SmokePing ผลที่ได้เป็นดังภาพ จะเห็นว่า มีความหน่วงในการตอบสนอง เฉพาะในวันเวลาราชการเท่านั้น … ทำไม ??? ทำการตรวจสอบด้วยคำสั่ง ps aux |grep apache| wc -l เพื่อดูว่า มีจำนวน Apache อยู่กี่ Process พบว่า ในช่วงเวลาที่ระบบหน่วง มี Process เกือบคงที่ที่ 150 แต่ในช่วงที่ระบบทำงานได้เร็ว มีจำนวนประมาณ 50 process จากการศึกษา พบว่า Apache2 ที่ใช้ MPM Prefork นั้น จะจำกัดค่า MaxRequestWorkers ไว้ โดยหากไม่กำหนดค่าใดๆจะตั้งไว้ที่ 256 แต่เมื่อตรวจสอบในไฟล์ /etc/apache2/mods-enabled/mpm_prefork.conf พบว่า <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0 </IfModule> ทำให้เพดานของจำนวน Process ไปจำกัดที่ 150 ดังที่ตรวจสอบเบื้องต้น เมื่อมีผู้ใช้มากขึ้นกว่าเดิม จึงทำให้ Process ไม่เพียงพอต่อความต้องการ เป็นผลให้เกิดการหน่วงขึ้น จึงทำการแก้ไข MaxRequestWorkers เป็น 256 แล้ว Restart Apache ผลทำให้ จำนวน Apache Process ขึ้นไปถึง 200 Process และการตอบสนองเร็วขึ้นตามที่ควรเป็นดังภาพ (หลังเวลา 14:45) ทั้งนี้ การกำหนดจำนวน MaxRequestWorkers นั้น ต้องสัมพันธ์กับ RAM ของ Server ด้วย โดยมีสูตรคร่าวๆ คือ จำนวน RAM ในหน่วย MB หารด้วยขนาดของ Apache Process โดยเฉลี่ย เช่น มี RAM 4GB = 4 x 1024 = 4096 ขนาดเฉลี่ย Apache Process = 20 ดังนั้น MaxRequestWorkers = 4096/20 = 204 แต่จริงๆแล้ว ควรเผื่อ Memory ไว้ให้ OS และอื่นๆด้วย (อาจจะไม่เต็ม 4096) หากขยับค่า MaxRequestWorkers แล้วยังพบว่า จำนวน Process ยังขึ้นไปเต็มเพดานอยู่ ควรพิจารณาเพิ่ม Memory ด้วย ประมาณนี้ครับ UPDATE: ผลการปรับแก้ไข ทำให้ เวลาในการตอบสนอง จากที่หน่วง 10 วินาที เหลือ เพียง 50 มิลลิวินาที ดังภาพ  

Read More »