Category: เทคโนโลยีรอบตัวเรา
หลีกเลี่ยงการตรวจค่า null ตอนที่ 1 (แต่ตัวอย่างที่ยกมานี้ยังไม่หลีกเลี่ยงการตรวจสอบ)
เคยอ่าน blog ของ Somkiat Puisungnoen
เจ้าของโดเมน somkiat.cc ซึ่งคุณตุ้ยแนะนำมา
ชื่อโพสต์ “Java :: หลีกเลี่ยงการตรวจสอบค่า Null กันได้แล้ว”
โดยมี code ตอนหนึ่งว่า
1. PersonDAO personDAO = new PersonDAO();
2. Person person = personDAO.getPersonByID(1);
3. if(person != null) {
4. person.setName(“My name”);
5. }
ซึ่งแนะนำการหลีกเลี่ยงการใช้ null ไว้ 2 วิธี
http://www.somkiat.cc/java-avoid-check-null-in-your-code/
—
1. บรรทัดแรก
สร้าง instace ชื่อ personDAO จากคลาส PersonDAO
คำว่า DAO มาจาก Data Access Object ทำหน้าที่เข้าถึงข้อมูล
ทำให้มี instace ไว้ใช้งานด้านข้อมูล และติดต่อกับฐานข้อมูล
2. บรรทัดที่สอง
สร้าง instace ชื่อ person จากคลาส Person
ซึ่งมีค่าต่าง ๆ ตามที่กำหนด หรือการประมวลผลที่สำคัญกับข้อมูล
3. บรรทัดที่สาม
ตรวจสอบว่ามี person หรือไม่
ถ้าเรียกใช้ทั้ง ๆ ที่เป็น null ก็จะ error
4. บรรทัดที่สี่
ถ้ามีก็จะกำหนดค่าให้กับ object ใน person
ตามหลัก set กับ get
—
นำแนวคิดของคุณสมเกียรติ มาทำให้โปรแกรมประมวลผลได้
โดยยังไม่หลีกเลี่ยงการตรวจค่า null แต่ใช้ if != null เหมือนตัวอย่างไปก่อน
1. คลาส PersonDAO ทำหน้าที่เข้าถึงฐานข้อมูลในเบื้องต้น
การ return ต้องกำหนดค่าอะไรสักอย่าง จึงต้องกำหนดเป็น null ไว้แต่แรก
ถ้าไม่กำหนดก็จะ compile ไม่ผ่าน เช่น Person person;
public class PersonDAO {
public Person getPersonByID(int personID) {
Person person = null;
if (personID < 10 && personID > 0) {
person = new Person();
person.setID(personID);
}
return person;
}
}
—
2. คลาส Person ทำหน้าที่โดยตรงในการเพิ่ม ลบ แก้ไขข้อมูล
public class Person {
private int id;
private String name;
public void setName(String s) { name = s; }
public void setID(int i) { id = i; }
public int getID() { return id; }
public String getName() { return name; }
}
—
3. คลาส Work ทำหน้าที่รับส่งข้อมูล ควบคุม และนำเสนอข้อมูล
public class Work {
public static void main(String args[]){
PersonDAO personDAO = new PersonDAO();
Person person1 = personDAO.getPersonByID(1);
if(person1 != null) {
person1.setName(“burin”);
System.out.println(person1.getID());
System.out.println(person1.getName());
}
Person person2 = personDAO.getPersonByID(11);
if(person2 != null) {
person2.setName(“tui”);
System.out.println(person2.getID());
System.out.println(person2.getName());
}
}
}
http://www.thaiall.com/class/
—
ตอนที่ 2 การใช้ try catch จับ Exception
http://www.thaiall.com/blog/burin/6560/
ผู้สูงอายุนอกเมืองหลวง ไม่ดูทีวีดิจิตอล
เหตุผลสำคัญที่ผู้สูงอายุให้มาว่าไม่ดูทีวีดิจิตอล1. ทุกวันนี้ดูช่องเดียว และไม่เคยเปลี่ยนช่องจะมีให้ดู 20 กว่าช่อง ก็คงจะไม่ดู2. ไม่ชอบกด remote ตัวเล็ก กดไม่เป็น ที่ผ่านมาก็ไม่เคยกดจะให้กดเลือกช่องที่มีถึง 20 ช่องก็คงไม่กด3. ถ้าต้องเดินสายอากาศ เจาะนู่น เจาะนี่เพื่อให้ได้ 20 ช่อง ก็อย่าเลย ไม่อยากเจาะบ้านคนรุ่นใหม่คงมีเหตุผลที่จะดูทีวี 20 กว่าช่อง ดังนี้1. มีเวลาว่างนั่งดูทีวีมากกว่าทำอย่างอื่น2. ชอบดูรายการใหม่ ๆ อยู่เสมอ3. มีรายการที่รอติดตามเป็นประจำจากทีวี
แล้วผู้สูงอายุมีความต้องการขึ้นมา ค่อยไปติดตั้งก็ได้
.. เพราะตอนนี้ยังไม่เห็นความจำเป็น จึงไม่ยินดีจะให้ติดตั้ง
การติดตั้งกล่องรับสัญญาณดิจิตอลทีวี
แลกเปลี่ยนกับเพื่อนเรื่องการวาด network diagram
ชิปหาย ต้องทำอย่างไร
ชิป (Chip) หรือไมโครชิป (Microchip) คือ โมดูลขนาดเล็กที่ซับซ้อนสามารถเก็บข้อมูล หรือเป็นวงจรทางตรรกะของไมโครโพรเซสเซอร์ ซึ่งชิปไมโครโปรเซสเซอร์ (Microprocessor Chip) ที่ได้รับความนิยมเป็นอันดับหนึ่ง คือ Core i7 พัฒนาโดยบริษัท Intel ส่วนอันดับสองคือ Bulldozer พัฒนาโดยบริษัท AMDซิมการ์ด (SIM = Subscriber Identity Module Card) คือ แผ่นพลาสติกขนาดสี่เหลี่ยมเล็กที่บรรจุแผงวงจรอิเล็กทรอนิกส์หรือชิปไว้ ปลายข้างหนึ่งมีรอยตัด ถูกใช้สำหรับโทรศัพท์เคลื่อนที่ ภายในชิปของซิมการ์ดใช้บรรจุข้อมูลหมายเลขโทรศัพท์ ข้อมูลเจ้าของ หมายเลขของผู้ติดต่อ และบริการที่เลือกไว้
เตือยภัยอาชญากรรมไอทีใกล้ตัว (itinlife476)
ภัยด้านคอมพิวเตอร์ หรืออาชญากรรมทางคอมพิวเตอร์มีหลายรูปแบบ เป็นการกระทำที่ผิดกฎหมายโดยใช้วิธีการทางอิเล็กทรอนิกส์ หากจะจำแนกประเภทความเสี่ยงว่าเรื่องใดรุนแรง หรือใกล้ตัวก็จะจัดอันดับแต่ละประเภทแตกต่างกันไปตามประสบการณ์ของแต่ละคน ซึ่งอาชญากรรมด้านไอทีที่พบเป็นข่าวมักมี 6 ประเภท คือ ลักลอบขโมย (Thief) ละเมิดสิทธิ (Pirate) แพร่ภาพ เสียง ลามก อนาจาร (Illegal media) ก่อกวน หรือทำลายระบบสาธารณูปโภค (Disturb) หลอกลวงให้ร่วมค้าขาย หรือลงทุนปลอม (Fraudulent) หรือโอนเงินจากบัญชีผู้อื่นเข้าบัญชีของตน (Bank transfer)
การลักลอบขโมยอาจถูกมองเป็นเรื่องเล็กได้ แต่หากผู้กระทำสามารถขโมยข้อมูลของผู้คนนับแสน หรือขโมยข้อมูลจากธนาคารก็อาจไม่ใช่เรื่องเล็กอีกต่อไป พบข่าวได้บ่อยครั้งว่ามีการลักลอบกดถอนเงินจากตู้เอทีเอ็มโดยใช้บัตรปลอมที่ขโมยข้อมูลจากเจ้าของบัตรมาได้ หรือนำข้อมูลไปใช้ถอนเงินที่ธนาคาร การนำภาพดารามาตัดต่อทั้งภาพถ่ายหรือคลิ๊ปแล้วเผยแพร่ จนทำให้ผู้เสียหายต้องออกมาแก้ข่าวว่าไม่เป็นความจริง ถ้าเราไม่ใช่ผู้เสียหายก็คงไม่กระทบมากนัก แต่ผู้ที่ถูกกระทำย่อมเห็นว่าเรื่องนี้สำคัญเป็นเรื่องที่กระทบการดำรงชีวิต การงาน และครอบครัวจนไม่อาจทนได้ การทำลายระบบสาธารณูปโภค เช่น น้ำ ไฟฟ้า สัญญาณจราจร และโทรศัพท์ เห็นผลกระทบได้ชัดจากภาพยนตร์เรื่อง Die hard 4 ที่ผู้ร้ายสามารถแฮ็ก เข้าไปควบคุมระบบสาธาณูปโภคของเมือง เพื่อสนับสนุนเป้าหมายก่อการร้ายของตนเอง
การหลอกลวงต้มตุ้นผ่านอีเมล เว็บไซต์ เครือข่ายสังคม หรือโทรศัพท์ ก็มักจะเป็นการชวนไปลงทุนที่ไม่เกิดขึ้นจริง เป็นการกระทำที่ต้องใช้หลักฐานทางคอมพิวเตอร์เพื่อเอาผิดกับผู้หลอกลวง ถ้าผู้ถูกหลอกลวงไม่เสียทรัพย์สินไปแล้ว ก็มักจะไม่ไปแจ้งความ อีกปัญหาที่พบได้บ่อย และคนไทยน่าจะเคยได้รับโทรศัพท์แบบนี้ คือ การหลอกให้โอนเงิน จนธนาคารต้องมีมาตรการขึ้นมาช่วยเตือน เพราะหากโอนเงินไปเข้าบัญชีผู้หลอกลวงแล้ว ก็มักจะแก้ไขไม่ได้ เช่น การมีข้อความเตือนการโอนเงินระหว่างทำรายการในตู้เอทีเอ็ม การส่งข้อความแจ้งการทำรายการไปทางเอสเอ็มเอส (SMS) เพราะการติดตามจับกุมทำได้ยาก แล้วเบอร์โทรศัพท์ที่ใช้ก็ติดตามไปยังต้นสายได้ยาก จับได้แต่ละครั้งก็พบว่าทำกันเป็นกระบวนการ ได้ผู้ต้องหาครั้งละนับสิบคน
https://www.youtube.com/watch?v=6gzgVK5eu0E (คลิ๊ปเสียงตกทอง 1)
https://www.youtube.com/watch?v=ojaP-dP3u0o (คลิ๊ปเสียงตกทอง 2)
https://www.youtube.com/watch?v=HAgpUlVnb1w (คลิ๊ปเสียงตกทอง 3)
https://www.youtube.com/watch?v=mZJA8iEuVCU (คลิ๊ปเสียงตกทอง 4)
https://www.youtube.com/watch?v=xw1t6qp57jU (จับ call center)
https://www.youtube.com/watch?v=EtSoITLELoc (คุยผ่านเฟสบุ๊ค มีหลายกรณี)
https://www.youtube.com/watch?v=xrOb4VbaqNs (อ้างเป็นฝรั่งหลอกให้โอนเงินไปให้)
https://www.youtube.com/watch?v=p6xpRyMw2vI (Daily IT)
ออกแบบปกซีดี แจกในการประชุมวิชาการ
เคยออกแบบปกซีดี ด้วย Microsoft Word
โดยใช้ template ที่โปรแกรมเตรียมไว้ให้
เพื่อแจกในการประชุมวิชาการ NTC2014 พร้อมกับ proceeding เมื่อมกราคม 2557
http://thaiabc.com/lampangnet/admin/1097/
มาเดือนธันวาคม 2557 มีการประชุม Nation University Conference
ต่อเนื่องอีกครั้ง ก็ยังใช้ word เพื่อให้ผู้ที่จะนำไปพิมพ์สามารถใช้งานได้ง่ายกับ
กระดาษ sticker สำหรับงานนี้โดยเฉพาะ ที่ร้านเครื่องเขียนมีขายครับ
ลองเช็คราคาจากเว็บไซต์ พบว่า 50 แผ่นราคา 195 บาท (สำหรับ CD 100 แผ่น)
http://www.see-dlabel.com/product/cdstandard.html
ในการประชุมหลายแห่งแจกเป็น handy drive บางที่ก็ cdrom
เมื่อผมได้มาก็ช่วยในการเผยแพร่ตาม social media
เช่น
การประชุมวิชาการอุุดมศึกษาไทยกับการพัฒนาประเทศ ประจำปีการศึกษา 2556
Lampang 2020 : บูมลำปางสู่เมืองเศรษฐกิจใหม่
24 – 26 มกราคม 2557 ณ มหาวิทยาลัยเนชั่น ลำปาง
http://www.scribd.com/doc/201904276/
เวลาออกแบบปก หรือภาพก็ต้องหาภาพประกอบ
สำหรับ ธันวาคม 2557 ผมเก็บภาพไว้ที่
https://www.facebook.com/media/set/?set=oa.858530910853259
ต่อไปต้องย้ายไป 64 กันจริง ๆ แล้ว เพราะ 32 กำลังถูกทิ้ง
เล่าสู่กันฟังเรื่องปัญหาซอฟท์แวร์ในปัจจุบัน และอนาคต
https://www.adobe.com/products/premiere.html?promoid=KLXLV
1. ลงใหม่ทับเก่า ก็น่าจะได้ แต่ไม่ได้
ไม่กี่วันที่ผ่านมา อ.ปุ้ม เอาโปรแกรม Adobe premiere 1.5
ซึ่งเป็นโปรแกรมตัดต่อหนัง ที่ใช้ทรัพยากรมากมาย
มาให้คุณเปรมติดตั้งในคอมพิวเตอร์หลายเครื่อง
ก่อนจะติดตั้งสำเร็จ ตรวจดูพบว่ามีรุ่นเก่าลงไว้อยู่แล้ว
แต่ลงใหม่เพิ่มเข้าไปไม่ได้ หรือลงทับก็ไม่ได้
ถ้าจะลง ต้องถอนของเก่าออกก่อน จะถอนได้ก็ต้องมี serial number
ตรวจดูพบว่า ทุกเครื่องใช้โปรแกรมนี้ไม่ได้
เพราะเครื่องเหล่านี้จัดทำขึ้นจากการ ghost ต่อ ๆ กันมา
และโปรแกรมนี้เป็นหนึ่งในโปรแกรมที่ห้าม ghost
ถ้าใช้งานก็ต้องหามาลงทีละเครื่องให้เรียบร้อย
จึงไม่มีเครื่องใดโปรแกรมนี้ได้ ยกเว้นเครื่องแรกที่เป็นต้นฉบับ
http://helpx.adobe.com/photoshop/system-requirements.html
2. การถอนของเก่าออก
เริ่มจากการเข้าโปรแกรมเก่า เข้าไปหน้าลงทะเบียนด้วยโทรศัพท์
พบเลข serial number แล้วจดไว้
จากนั้นก็เข้าไปถอนโปรแกรมใน control panel
แล้วกรอก serial number ตามที่ถูกต้องขอ
3. การติดตั้งโปรแกรมใหม่
ใช้แผ่นที่ได้มา ก็ลงไปถึงการเลือกโปรแกรมที่จะติดตั้ง
พบว่าไม่สามารถลง premiere ได้ตัวเดียว
มีข้อความแจ้งว่าไม่ผ่าน minimum requirement
ศึกษาดูก็พบว่า CS5 เป็นต้นมา จะลงได้บน 64bit เท่านั้น
ต่อจากนี้ไม่สนับสนุน 32bit แล้ว
ถ้าคิดจะลงก็ต้องไปหา CS4 มาใช้งาน
สรุปว่า
ลงไม่ได้แล้ว กับ CS5 ตามที่ อ.ปุ้มร้องขอ
ทำให้เวลาลง windows ต้องนึกถึง 64bit ไว้ก่อน
เพราะใคร ๆ ก็เริ่มทิ้ง 32bit แล้ว
แก้ปัญหาเปิดเว็บหนังสอนภาษาอังกฤษ ในเครือข่ายไม่ได้
เล่าสู่กันฟัง และกันหลงลืมในอนาคต กับปัญหา และการแก้ไขเรื่องเข้าเว็บไม่สำเร็จ
http://www.ororo.tv/en/movies
1. บ่ายวันหนึ่ง อาจารย์ที่สอนภาษาอังกฤษ เชิญไปช่วยดูปัญหา
ว่าทำไมที่ห้องเรียนเปิดคลิ๊ปหนังสอนภาษาอังกฤษจากเว็บไซต์ ororo.tv ไม่ได้
ก่อนหน้านี้เคยเปิดได้ และวันนี้ก็เปิดได้เรื่องเดียว คือ เรื่องมังกร
เว็บไซต์นี้สอนภาษาจริง ๆ เพราะหัวเว็บเขียนว่า
“Learn english by watching tv-shows and movies”
with subtitles and build-in translator
จำได้ว่าวันนี้ผมก็แจ้งไปว่า สงสัยเว็บนี้จะเสีย พรุ่งนี้น่าจะดี เพราะเป็นปัญหาในบางคลิ๊ป
http://ororo.tv/en/movies/how-to-train-your-dragon
2. นำปัญหามาคิดต่อ เพื่อแก้ไข
วันรุ่งขึ้น ผมลองตรวจสอบจากอีกเครื่องหนึ่ง ซึ่งอยู่นอกเครือข่ายห้องสอน
เป็นเครือข่ายห้องทำงาน พบว่าเปิดดูทุกเรื่องใน ororo.tv ได้ปกติ ก็ดีใจ
เพื่อความแน่ใจว่าสิ่งที่เห็นอยู่เป็นอย่างที่เข้าใจ
จึงไปเปิดในห้องเรียน และห้องสอนอีกครั้ง ซึ่งเป็นวงที่แยกออกไปจากห้องทำงาน
พบว่ามีปัญหาแจ้งเรื่อง server กับ network เหมือนเดิม
แสดงว่า firewall น่าจะกำหนดนโบายให้กับห้องเรียน ห้องสอน และห้องทำงานต่างกัน
http://ororo.tv/en/movies/lord-of-the-rings-the-fellowship-of-the-ring
3. ขอความช่วยเหลือจาก คุณตุ้ย เจ้าหน้าที่ไอที
โดยให้ข้อมูล และคาดหมายว่าน่าจะเป็นที่ firewall มีนโยบายอะไรไหม
ที่พอจะเปิดให้ เพื่อให้อาจารย์ได้สอนภาษาอังกฤษผ่านคลิ๊ปได้บ้าง
ก็พบว่า config ใน FortiGate ได้ถูกเปิดหมดแล้ว
นั่งทดสอบอยู่ 2 สัปดาห์กับเจ้าหน้าที่ ๆ ดูแลอุปกรณ์ ก็ไม่พบ
จนนึกได้ว่าไม่นานมานี้ได้เปิดระบบ authentication และตั้งแต่นั้น
ครูผู้สอนภาษาอังกฤษก็เข้า ororo.tv ไม่ได้ ซึ่งได้รับแจ้งว่าเรามี proxy อีกตัว
4. ผลการทดสอบ ปิด ๆ เปิด ๆ proxy ที่ใช้ squid บน redhat
พบว่าถ้าไม่ผ่าน proxy ก็จะเข้า ororo.tv ได้หมด ไม่ว่าเป็นห้องใด
จึงเข้าไปตรวจ /etc/squid/squid.conf
ตรวจเรื่อง port หรือ ip แต่ก็ไม่สามารถเปิดบริการได้ปกติ
แม้อ่าน และทดสอบแก้ไข ไปพร้อมกับการตรวจ /var/log/squid/squid.log
สุดท้ายพบ config เรื่องของการจำกัดขนาดแฟ้ม
จึงเพิ่มขนาดแฟ้มที่จำกัดใน squid.conf ก็พบว่าสามารถเปิดคลิ๊ปได้ปกติ
เพราะแต่ละคลิ๊ปใน ororo.tv ที่เป็นแฟ้ม .webm กับ .mp4 มีขนาดมากกว่า 1GB ทุกแฟ้ม
สรุปว่าแก้ไข config ข้างล่างนี้ ก็เป็นอันแก้ปัญหานี้ได้
reply_body_max_size 500000000 deny doctype
reply_body_max_size 500000000 deny mediatype
5. เลือกไม่กำหนดด้วย IP
ที่ตัดสินใจไม่ได้เพิ่ม ip ของ ororo.tv เข้าไปในนโยบาย
เพราะคลิ๊ปที่เก็บไว้กระจายไปยัง server ต่าง ๆ ไม่แน่นอน
จึงเลือกเพิ่ม max_size แทนจากเดิมให้ต่อแฟ้มไว้ที่ 500MB เป็นมากกว่า 1GB