Posts

Showing posts from 2012

Programmer เป็นอาชีพที่ดี จริงหรือ??

ผมได้ไปอ่านข้อความตามเว็บบอร์ด เว็บบล็อกต่างๆ เกี่ยวกับการวิพากษ์วิจารณ์เกี่ยวกับอาชีพโปรแกรมเมอร์ ทั้งในด้านดีและด้านไม่ดี ก็เลยอยากจะขอแนะนำกันซะหน่อย เริ่มที่ ข้อดี กันก่อน อย่างที่รู้ๆกันว่า Programmer เป็นอาชีพที่รายได้ดีทีเดียว เมื่อเทียบกับอาชีพมนุษย์เงินเดือนอื่น ความรู้ที่ใช้ในการทำงานของโปรแกรมเมอร์ เป็นวิชาติดตัว ทำให้สามารถรับจ๊อบเสริมได้ (ถ้างานหลักไม่หนักจนเกินไป) นอกจากจะรับจ๊อบนอกได้แล้ว ยังสามารถขยายความรู้ให้กว้างขวางได้ด้วยตนเอง หรือจะนั่งทำแอพฯขำๆของตัวเองก็ได้ ความรู้ด้านอื่นเกี่ยวกับคอมพิวเตอร์ เช่น ลงโปรแกรม ลงวินโดวส์ วิธีเลือกซื้อเลือกใช้เครื่องคอมฯ การแก้ปัญหาเบื้องต้น เรื่องเหล่านี้เป็นสิ่งที่บุคคลอื่นมักจะเข้าใจว่าเราทำได้ และเราก็ "ต้องทำได้" มาถึง ข้อเสีย กันบ้าง Programmer ชื่อฟังดูสวยหรู แต่คุณจงรู้ไว้เลยว่า มันเป็นอาชีพที่อยู่ล่างสุดของสายเทคโนโลยี ถ้าชอบเล่นเกมส์ แล้วบอกกับพ่อแม่ว่าอยากเรียนสายนี้ เตรียมใจไว้ได้เลย เพราะต้องเจออะไรที่หนักเหมือนกัน และถ้าเกาะเพื่อนจนเรียนรอดมาได้ มันก็ไม่น่าภูมิใจนักหรอก เมื่อคุณเริ่

กว่าจะได้เป็น "Programmer"

Image
วันนี้ผมอยากจะเล่าเรื่องราวตั้งแต่วัยเด็ก จนกระทั่งได้เป็น Programmer เอาไว้ให้ผ่านเล่นๆกันนะครับ (เผื่อน้องๆ ที่มีความใฝ่ฝันด้านนี้ หรือกำลังจะมี.. ได้อ่าน ได้รู้ถึงประสบการณ์จริงๆ ของผมนะครับ ^^) วัยมัธยมต้น ม.ต้นเป็นอะไรที่เนื้อหาการเรียนเริ่มยาก ต้องเตรียมสำหรับเข้าม.4 ว่าเราจะเรียนสายไหนดี โรงเรียนผมมีแค่ วิทย์-คณิต, ศิลป์-คำนวณ, ศิลป์-ภาษา แต่ตอนนั้นเราก็เรียนๆไป ไม่สนว่าต้องเรียนสายอะไร ช่วงนั้นเริ่มเล่นเกมส์ออนไลน์ ยุคนั้นก็ Ragnarok มาใหม่ๆ เป็นเกมส์ตีมอนสเตอร์เก็บเลเวล ก็เล่นกับเพื่อนสนุกดี แต่ผมเป็นคนไม่ชอบเกมส์แนวนี้เท่าไร level เกือบ 30 ก็เลิกเล่นไป วัยมัธยมปลาย ตอนแรกตัดสินใจเลือกเรียนศิลป์-คำนวณ เพราะผมชอบคณิตศาสตร์และไม่ชอบวิทยาศาสตร์เลย แต่แม่ไม่ยอม สุดท้ายได้เรียนสายวิทย์-คณิต เพราะไม่ว่าไม่ชอบภาษายิ่งกว่า (อย่างน้อยวิทย์ มันก็ยังมีคำนวณคล้ายๆ คณิตบ้างในบางเนื้อหา) ช่วงนั้นจัดเต็มทุกสิ่งอย่างทั้งเรื่องเรียน (ไม่งั้นสอบตก) เรื่องเล่น (DOTA เริ่มเข้ามาแล้ว)  ม.ปลาย ผมเริ่มมีความรู้เกี่ยวกับ computer มากขึ้น ลงโปรแกรมเป็น พิมพ์งานได้แต่ช้า ทำ slide (pow

root กับ jailbreak แค่เรียกให้ต่างกัน แค่นั้นหรือ??

Image
ไม่ว่าจะเป็น root หรือ jailbreak เป้าหมายล้วนเป็นความต้องการอยู่เหนือสิทธิ์ที่จำกัดของโทรศัพท์ เพื่อพยายามทำอะไรที่มากกว่าเดิม เช่น ใช้งานแอพฯที่ไปยุ่งกับการตั้งค่าขั้นสูงใน Android หรือการลงแอพฯโดยไม่ได้ผ่าน iTunes ใน iOS แต่ก็มีเรื่องเข้าใจผิดว่า เราซื้อ Android มาก็ต้อง root นะ หรือเราซื้อ iPhone มาก็ต้อง jailbreak ไม่งั้นจะลงแอพฯไม่ได้ เล่นแอพฯได้น้อย อะไรทำนองนี้ ซึ่งแน่นอนว่ามันเป็นความเชื่อผิดๆ เราไม่ทำก็หมายความว่าเราเป็นผู้ใช้งานปกติที่บริษัทฯเหล่านั้นอยากให้เป็นที่สุด ก่อนอื่นเราต้องทำความเข้าใจก่อนว่า Android กับ iOS เป็นระบบปฏิบัติการจากคนละบริษัทฯ ทำให้มีข้อจำกัดที่แตกต่างกัน Android เป็นของฟรีที่พัฒนาโดย Google เปิดให้ผู้ผลิตหลากหลายค่ายนำไปทำให้เข้ากับผลิตภัณฑ์ของแต่ละค่าย เช่น Sony, Samsung, LG, HTC, Motolora และอื่นๆ  iOS เป็นระบบปฏิบัติการของ Apple ซึ่งพัฒนาออกมาเพื่อใช้กับผลิตภัณฑ์ของตัวเองคือ iPhone  มาที่เรื่องของ root กับ jailbreak root เป็นคำที่ใช้ใน Android หลังจาก root แล้วเครื่องนั้นๆ ก็จะได้สิทธิ์ superuser ซึ่งสามารถเข้าถึงทุกสิ่งอย่างมา เพื่

สั้นๆ กับ Web Application & Web Service

Web App. กับ Web Service เป็นคำที่ฟังผ่านๆ ก็ดูคล้ายกันนิดๆ ทำให้คนที่ไม่มีประสบการณ์ด้านนี้มาก่อน ย่อมสับสนและไม่เข้าใจจริงๆ ว่าแท้จริงแล้ว แต่ละอย่างมันคืออะไร ทำงานอย่างไร หรือบางคนก็เข้าใจถึงขนาดคิดว่ามันคือสิ่งเดียวกัน ซึ่ง..ผมจะมาเล่าให้ฟังนะครับ ก่อนอื่นเราจะตัดคำว่า 'web' ออกไปซะก่อน ก็จะเหลือแค่ application กับ service ถ้าแปลกันแบบตรงๆตัวเลย ก็หมายถึง โปรแกรมประยุกต์ กับ บริการ แปลแบบนี้ก็อาจทำให้รู้สึกแตกต่างกันก็จริง แต่แน่นอนครับว่า ความหมายเหล่านี้ ไม่เกี่ยวข้องกับสิ่งที่เราต้องการกันเท่าไร แต่ก็ไม่ได้ไกลจากความจริงมากนัก Web Application หมายถึง โปรแกรมที่ทำงานบนเว็บ มีหน้าจอติดต่อผู้ใช้งาน คล้ายโปรแกรมที่ทำงานบนเครื่องเราทั่วๆไป อย่างเช่น หน้าเว็บทั่วๆไปที่เราท่องตามอินเตอร์เน็ต Google, Facebook อะไรก็ตามแต่ โดย Web App. เหล่านี้จะทำงานได้ต้องอาศัย Server เพื่อรันโปรแกรมไว้ตลอดเวลา และให้ผู้ใช้งานเข้าถึงผ่าน URL จาก Web Browser ลักษณะนี้คือการทำงานแบบ Client - Server Web Service หมายถึง โปรแกรมที่ทำงานบนเว็บเช่นกัน แต่ไม่ได้มีส่วนติดต่อผู้ใช้งาน เป็นการคุ

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Image
          Overload & Override  ความสับสนของคำศัพท์ เป็นอะไรที่พบกันได้บ่อยๆ แม้แต่คนที่มีประสบการณ์แล้วหรือมือใหม่ ก็มักเข้าใจผิดกันว่า ความจริงแล้วมันคืออะไรกันแน่ อาจเป็นเพราะเป็นเรื่องที่หนักไปทางทฤษฎีซะมากกว่า Overriding Method           บังคับเลยครับว่า มันจะต้องมาพร้อมกับการสืบทอด (Inheritance) เพราะว่า Override นั้นคือการ implement เมธอดนั้นๆใหม่ ทั้ง modifier, return type, ชื่อเมธอด, parameter(s) จะเหมือนเดิม มีแค่เนื้อข้างในที่เป็นการทำงานเท่านั้นที่เปลี่ยนไป ขอยกตัวอย่างด้วย Java แบบง่ายๆ นะครับ           จากโค้ดตัวอย่างนี้ ผมสร้าง 2 คลาสที่สืบทอดกัน ซึ่งแต่ละคลาสมีการประกาศเมธอด getName() เหมือนกันแบบเป๊ะๆ ตามที่ได้กล่าวไว้ข้างต้น โดย getName() จะ return เป็นคำว่าอะไร ก็อยู่ที่ว่าเราเรียกใช้เมธอดนี้ จาก object ของคลาสไหนนั่นเอง           สังเกตว่าในคลาส Man ที่สืบทอดมาจาก Human นั้น ผมได้วาง @Override ซึ่งเรียกว่าการทำ Annotation  ในที่นี้เป็นการระบุว่าเมธอดที่เราเขียนนี้ Override มาจาก superclass ถ้าเราเขียนเมธอดไม่เหมือนกับที่มีอยู่ใน superclass ก็จะมี error

แนะนำแอพ android ฟรีๆ ดีๆ ที่น่าจะมีติดไว้ในเครื่อง

Image
สำหรับใครหลายคนที่มองหา app. มาลงเครื่อง android สุดโปรด แต่ลองไปหาใน Play Store แล้วก็เยอะแยะไปหมด อันไหนดีไม่ก็ไม่รู้ อย่างมากก็ทำได้แค่อ่าน User Review หรือไม่ก็ลองโหลดมาเล่น ถ้าไม่ดีก็ลบทิ้งไป วันนี้ผมก็เลยอยากมาแนะนำ application android ที่ผมชอบ และใช้มันอยู่เป็นประจำ แต่ถ้าใครมีตัวไหนดีตัวไหนเจ๋งกว่า ก็แนะนำด้วยนะครับ สำหรับ app. ที่จะมาแนะนำกัน จะเป็นพวกที่ต้องใช้งานทั่วๆไป และจำเป็นในบางโอกาส (พวกเกมส์ต้องลองเล่นกันเองนะครับ มีเยอะแยะไปหมด ^^) ลองๆ โหลดไปใช้กันดูนะครับ DroidSail Super App2SD Lite ปกติแล้ว การลงโปรแกรมไม่ว่าจะเป็นทาง Play Store หรือ Unknown Source ส่วนใหญ่ก็จะลงไว้ที่ เมมเครื่อง แต่ปัญหาต่อไปก็คือ mem เครื่องก็ให้มาแสนจะน้อย ลงเกมหน่อยก็เต็มซะแล้ว โปรแกรมนี้เป็นโปรแกรมสำหรับย้ายโปรแกรมที่เราเลือก ระหว่าง เมมเครื่อง <-> memory card และถ้าเรา root* ก็จะทำให้ย้ายได้แทบจะทุกโปรแกรมกันเลยทีเดียว (บางแอพถ้าไม่ root จะย้ายไม่ได้) แต่ถ้าเป็นพวก widget หรือโปรแกรมที่ต้องทำงานตลอดเวลาอย่าง keyboard อะไรพวกนี้ไม่ควรย้ายนะครับ เพราะว่าเครื่องจะไม่เห็น หรื

ความแตกต่างระหว่าง http:// กับ https://

Image
          ช่วงนี้เห็นมีกระแสเกี่ยวกับเรื่องของ http และ https พอสมควร แต่สำหรับบางคนอาจยังไม่ค่อยเข้าใจว่า มันคืออะไร หรืออาจมองว่ามันไกลตัวเกินไป โดยเฉพาะกับผู้ใช้ internet เป็นประจำ ไม่ว่าจะเป็นการเล่นเว็บอ่านข่าว อัพเดทต่างๆ เชคอีเมล์ หรืออื่นๆ ล้วนเกี่ยวข้องทั้งสิ้น           ปกติแล้ว เวลาเราเล่นอินเตอร์เน็ตผ่าน Web Browser สุดโปรด ไม่ว่าจะเป็น Internet Explorer (เพื่อนใครชอบใช้ตัวนี้เลิกคบมันเลยนะ :P), Mozilla Firefox, Google Chrome หรืออื่นๆ ลองสังเกตุในช่อง URL ก็มักจะเห็นประมาณนี้           ขึ้นอยู่กับแต่ละ Browser อาจแสดงผลแตกต่างกันไป โดยปกติเวลาเราพิมพ์เว็บที่เราจะเข้าไป เช่น www.google.com จะถือว่าใช้ http:// โดยอัตโนมัติ ซึ่งแต่ก่อนอาจใช้งานได้ไม่มีปัญหา แต่ปัจจุบันถือว่าเป็นรูปแบบที่ไม่ปลอดภัย เจ้าของเว็บไซต์ควรใช้เป็น https:// ซึ่งบาง Browser เริ่มแจ้งเตือนผู้ใช้แล้วว่าเป็นการเข้าสู่เว็บที่ไม่ปลอดภัย http มีชื่อเต็มๆ ว่า Hypertext Transfer Protocol หรือก็คือ โปรโตคอลที่ใช้สำหรับคุยกันระหว่าง Server และ Client โดยรูปแบบของข้อมูลก็จะมาในรูปของ html หรือว่าจะเป็น

Cloud Storage : ที่เก็บข้อมูลออนไลน์ ที่หลายคนยังไม่เคยใช้

Image
สมัยนี้ คำว่า "Cloud" มักจะโผล่มาให้ได้ยินบ่อยๆ ในความหมายต่างๆ ซึ่งในวันนี้ผมจะมาแนะนำ Cloud Storage หรือ ที่เก็บข้อมูลบนกลุ่มเมฆให้ได้รู้จักกัน "Cloud" หรือ กลุ่มเมฆ อาจเป็นคำที่แปลตรงตัวไปซักหน่อยสำหรับภาษาไทย แต่ก็ต้องเข้าใจว่า มันเป็นการเปรียบเปรยหมายถึงกลุ่มเมฆ ที่มีขนาดกว้างขวางใหญ่โต จนเราไม่รู้ว่าอะไรอยู่ที่ไหนกันแน่ ดังนั้น "Cloud Storage" หรือ ที่เก็บข้อมูลบนกลุ่มเมฆ ก็คือ ฮาร์ดดิสก์ ที่เราไม่รู้ว่ามันอยู่ที่ไหนนั่นเอง (ไม่เกี่ยวกับเก็บไฟล์ไว้ในเครื่องตัวเอง แล้วหาไม่เจอเองนะ หุหุ) สำหรับบริการที่เก็บข้อมูลออนไลน์ มีมากมายหลายรูปแบบ ทั้งลักษณะที่ใช้งานผ่าน Web Browser ผ่านมือถือ หรือผ่านคอมพิวเตอร์ ซึ่งบริการที่ได้รับความนิยมส่วนใหญ่เป็นลักษณะติดตั้งบนเครื่องคอมพิวเตอร์ (PC / Notebook) และยังมีบริการบน Web Browser ด้วย เพื่อรองรับการ upload/download เล็กๆน้อย จากเครื่องอื่นที่ไม่ใช่เครื่องเราก็ได้ การติดตั้งบนเครื่องคอมพิวเตอร์ ที่ได้รับความนิยมก็เพราะการใช้งานที่ง่าย โดยจะมี Folder หนึ่งในเครื่องเราเหมือน Folder อื่นๆ ทั่วๆไป เพียงแต่จะมี

จำลองไดรฟ์ & mount ลงโปรแกรมโดยไม่ต้องไรท์แผ่น

Image
ไปเห็นเว็บบอร์ดมาบ่อยครั้งเกี่ยวกับเรื่องนี้ คนที่รู้แล้วก็พูดก็ใช้กันอย่างเข้าใจ แต่คนที่ไม่รู้ก็คือไม่รู้จริงๆ ว่า "mount" มันหมายถึงอะไร ส่วนใหญ่แล้ว เราจะเจอกันในเว็บบอร์ดต่างๆเกี่ยวกับการลงโปรแกรมหรือลงเกมส์ต่างๆ ซึ่งคนที่เอามาแจกส่วนใหญ่ก็จะบอกแค่ว่าให้เอาไป mount แล้วลงได้เลย บางทีก็มีวิธีทำบอกบ้าง แต่ส่วนใหญ่จะไม่มี ผมก็เลยเขียนให้อ่านซะเลย ^^ "mount" ในที่นี้ หมายถึง การใช้โปรแกรมในการจำลองไดรฟ์ CD/DVD เพิ่มขึ้นมา และเลือกไฟล์ที่ต้องการเปิด จากนั้นก็จะเหมือนเราใส่แผ่นเข้าไปในเครื่องนั่นเอง เมื่อไรที่ต้อง Mount? เวลาที่เรามีไฟล์ นามสกุล .iso .img .nrg หรืออื่นๆ (เท่าที่ผมเคยเจอก็มีเท่านี้แหละ) ถ้าเราไม่ใช้วิธีการ mount เราจะต้องไปซื้อแผ่นที่ตรงตามความต้องการ (เป็น CD หรือ DVD) มา แล้วใช้โปรแกรมไรท์ (Burn) ลงแผ่น จากนั้นเปิดแผ่นนั้นๆ เพื่อลงโปรแกรม ซึ่งจะเห็นได้ว่าค่อนข้างเปลือง แล้วแผ่นก็อาจเสื่อมสภาพได้ ถ้าใช้วิธี mount ก็เพียง browse ไฟล์เข้าไปแล้วก็ลงได้เลยครับ โปรแกรมที่สามารถทำการ mount ได้มีมากมาย และส่วนใหญ่จะฟรีด้วย เช่น powerISO, Daemon-too

ไฟล์ hosts มีไว้ทำอะไร

Image
บล็อกนี้เป็นเรื่องสั้นๆ ครับ เป็นเรื่องของไฟล์ hosts ที่อาจจะเคยเห็นกัน (หรือเปล่า ไม่แน่ใจ) บางทีก็เคยเห็นพวกละเมิดลิขสิทธิ์เขาทำกัน(ไม่สนับสนุนการละเมิดลิขสิทธิ์นะคร้าบบ) ไฟล์ hosts นี้ใช้สำหรับกำหนด ip เป็นข้อความต่างๆ เพื่อให้เครื่องเราเข้าใจว่า เมื่อเรามีการเรียก path URL เป็นคำนั้นๆ ก็จะรู้จัก ip ของเราเอง แทนที่จะเป็น ip แบบตรงๆ ตัวอย่างเช่น 127.0.0.1       localhost เมื่อเราเรียก http://localhost/ ก็จะเทียบเท่ากับ http://127.0.0.1/ นั่นเอง เห็นแบบนี้ อาจดูเหมือนไม่ค่อยมีอะไรเท่าไร ประโยชน์มันอยู่ที่ ถ้าโปรแกรมที่เราเขียนมีการเรียกใช้ path เช่น 192.168.1.2/program แบบนี้ ซึ่งก็อาจมีเรียกหลายจุด วันเวลาผ่านไป อาจมีการขยับ ip address ก็จะทำให้โปรแกรมนี้เรียกผิดแน่ๆ แต่ถ้าเราใช้การกำหนดชื่อ path ในไฟล์ hosts ไว้แล้ว ก็เปลี่ยนแค่ในไฟล์ก็เป็นอันจบ ในไฟล์นี้ อาจมีอะไรอย่างอื่นอยู่มากมาย comment ไว้บ้าง (# คือการ comment) เปิดใช้งานบ้าง แต่ละเครื่องอาจไม่เหมือนกัน ถ้าเราจะเพิ่ม แนะนำให้เอาไปวางไว้ล่างสุดของไฟล์ โดยพิมพ์ลักษณะเดียวกับตัวอย่างด้านบนเลย สำหรับที่ตั้งของไฟล์

Google Play & Google Wallet กับการซื้อ app. Android

Image
  จริงๆ แล้วบทความนี้ก็น่าจะเป็น Android Tip ได้นะครับ เพราะว่าคงไม่มีใครที่ใช้ Google Play (หรือ Play Store) แล้วไม่ได้ใช้ android ☺ บทความนี้ผมก็จะพูดถึงว่า เวลาเราซื้อ app. สักตัวหนึ่ง แล้ว Google เอาข้อมูลส่วนนี้เราไปไว้ที่ไหน และเราสามารถใช้กับอย่างอื่นได้หรือไม่ Google Wallet  อีกบริการหนึ่งของ Google ซึ่งทำหน้าที่เสมือนบัตรเครดิตของเรา ซึ่งการทำงานของมันคือ เราต้องผูกบัตรเครดิตเข้าไป จากนั้นเมื่อเราซื้อของจากบริการที่สามารถใช้ Google Wallet ได้อย่างเช่น Google Play ก็จะมีการหักเงินจากบัตรเครดิตของเราอัตโนมัติ  ซึ่ง Google ทำขึ้นมาเพื่อเราจะได้จัดการบัตรเครดิตของเราง่ายขึ้น เมื่อเราใช้บริการ Google Play โดยแค่โหลดแต่ application ฟรีๆ ก็คงจะไม่ต้องถึงมือ Google Wallet หรอกครับ แต่ถ้าตัวไหนต้องเสียเงิน ปุ่มที่เราเคยกด Install (เช็ค compatible ผ่านแล้ว) ก็จะเป็นคำว่า Continue แทน หลังจากกด ก็จะมีหน้าจอของ Google Wallet ขึ้นมา ดังนี้ครับ หน้านี้คือหน้ากรอกรายละเอียดบัตรเครดิตครับ (ไม่มีบัตรหรือยังทำไม่ได้ แนะนำ K-Web Shopping Card ของธนาคารกสิกรฯ ครับ ลองเข้าไปดูตามลิงค์น

รวมไฟล์ในโฟลเดอร์เป็นไฟล์เดียว คำสั่งเดียว จบ!!

Image
เคยไหมครับ บางทีเราต้องการที่จะรวมไฟล์ทั้งหมดที่มีเยอะแยะมากมาย อาจรวมกันอยู่ใน folder ซึ่งเราอาจจะเปิดดูมันด้วย notepad เพื่อดูว่าจริงๆ แล้ว ข้างในมันเป็นอะไร ถ้าโชคดีเราก็จะสามารถอ่านได้ ถ้าไฟล์นั้นถูกเก็บเป็นข้อความธรรมดา เช่น อาจอยู่ในรูปของ XML, property หรืออะไรก็ตามที่พอเข้าใจได้ก็ ok แล้วครับ (อ่านไม่ออก หมายถึง เป็นตัวแปลกๆ ไม่เป็นภาษา) กรณีที่จะใช้ ก็อาจเกิดจากเราต้องการเอาข้อความจากหลายๆไฟล์ มารวมกัน สำหรับกรณีของผมคือ contact ที่ export ออกมาจากโทรศัพท์เครื่องเก่าเป็น vCard (.vcf) จำนวนมากมายแยกเป็นคนๆ ไป แล้วผมก็จะเอาเบอร์ทั้งหมดนี้ไปใส่ในโปรแกรมที่สามารถ sync contact ของเราไปยังโทรศัพท์เครื่องใหม่นี้ได้ (ไม่อยากเอ่ยชื่อรุ่น เพราะว่ามันใช้ได้หลายกรณี) แต่มีข้อจำกัดว่าโปรแกรมนี้รับไฟล์ vCard ได้ทีละ 1 ไฟล์เท่านั้น หมายความว่าผมต้อง import มันใส่โปรแกรมทั้งหมดกี่ร้อยครั้งก็ไม่รู้ตามจำนวน contact ที่มี (เยอะมว้าากก...) ผมก็เลยเปิดมันดูด้วย notepad และสังเกตว่ามันมีข้อมูลประมาณนี้ BEGIN:VCARD VERSION:3.0 FN:mom N:;momˆ;;; TEL;TYPE=CELL:080000000 END:VCARD ลองสังเกตดูครับ

เรื่องของ AJAX (Asynchronous Javascript And XML)

การเขียนเว็บสมัยนี้ คงไม่มีใครไม่เคยได้ยินคำว่า AJAX ซึ่งเป็นเทคโนโลยีอย่างหนึ่งสำหรับการทำเว็บ ผมก็จะเขียนให้เข้าใจง่ายๆ แล้วกันนะครับ AJAX มีชื่อเต็มๆ ว่า "Asynchronous Javascript And XML" มันคืออะไรช่างมัน เรารู้แค่ว่ามันมีชื่อเต็มๆ แบบนี้ก็พอครับ synchronous หรือ synchronize ถ้าแปลกันตรงๆ ก็หมายถึง ตรงกัน, พร้อมกัน ซึ่งถ้าเป็นเว็บก่อนที่จะมีการใช้ ajax เข้ามา ส่วนใหญ่ก็จะมีลักษณะต้อง submit แล้วส่งค่าไปยัง server เพื่อทำอะไรซักอย่างแล้วก็ส่งไปแสดงผล (อาจเป็นหน้าเดิมหรือหน้าใหม่) แต่การทำงานแน่นอนว่า จะทำเป็นลำดับๆ ไปคือ 1 -> 2 -> 3 -> 4 ประมาณนี้ครับ แต่ !!.... ajax ที่เรากำลังพูดกันอยู่ก่อนหน้านี้มัน A synchronous การทำงานก็จะไม่ได้ทำเป็นลำดับๆ หรือก็คือ ถ้ามีการใช้ ajax ตรงไหน หมายความว่า มันจะไม่รอให้ ajax ทำงานเสร็จก่อนแล้วค่อยทำต่อ มันจะข้ามไปทำคำสั่งถัดไป ในขณะที่ ajax ก็ยังทำงานอยู่เช่นเดียวกัน ถ้ายังไม่เห็นภาพ ผมมีตัวอย่างซึ่งเป็นปัญหาที่ผมเจอมาครับ เป็น javascript และเรียก ajax โดยใช้ jquery Example 1 var var1; $.ajax({ success: func

ประวัติของภาษาคอมพิวเตอร์ - The history of programming

Image
กว่าจะถึงยุคปัจจุบันที่เราๆ ได้เรียนเขียนโปรแกรมแบบเป็นภาษาคนนั้น ก็ผ่านอะไรมามากมาย ตั้งแต่ลักษณะที่คนปกติไม่อาจเข้าใจได้เลย จนมีการพัฒนามาเรื่อยๆ จนปัจจุบันภาษาระดับต่ำอย่างภาษาเครื่อง ก็ยังเข้าใจได้ง่ายกว่าแต่ก่อนมาก แต่โดยส่วนมากแล้วโปรแกรมที่เราเขียนๆกัน มักจะเป็นภาษาระดับสูงแล้ว โดยจะมีเครื่องมือที่ทำหน้าที่แปลงภาษาโปรแกรมในยุคปัจจุบันที่คนเขียนโปรแกรมเข้าใจ ไปอยู่ในรูปแบบที่คอมพิวเตอร์เข้าใจ  ซึ่งยุคปัจจุบัน ที่เราจะเห็นๆกัน บทความนี้ผมก็ได้นำเอาภาพ จากข้อมูลต้นฉบับมาให้ดูกัน จากภาพนี้ เป็นวิวัฒนาของภาษาระดับสูง (High Level Language : 3GLs) ที่เด่นดัง ซึ่งบางภาษาก็แทบจะไม่มีการใช้แล้ว(ใกล้ตาย) บางภาษาก็มีอายุมากแต่ก็ยืนหยัดอยู่ได้ บางภาษาก็เพิ่งได้รับความนิยม แต่ไม่ว่ายังไงก็แล้วแต่ ภาษาแต่ละภาษาก็มีความสามารถ หรือความเก่งเฉพาะด้านของตัวเองอยู่ ปัจจัยที่หลากหลายจึงทำให้มีหลายภาษาที่ยังนิยมอยู่ หรือถ้าไม่จุใจ ลองเอาประวัติและระยะเวลาของแต่ละภาษา แบบละเอียดที่ O'Reilly จัดทำไว้เป็น PDF ไปดูต่อก็ได้นะครับ  http://oreilly.com/news/graphics/prog_lang_poster.pdf  

[Android] วิธีลง Custom Rom ให้กับ Android ตัวโปรด

Image
ตัวผมตอนนี้ใช้ Galaxy Mini อยู่ ซึ่งตอนแรกมันมากับ Android 2.2 (Froyo) โชคดีได้อัพเป็น Android  2.3.3(Gingerbread) แล้วก็มาสุดที่ 2.3.6 แต่ด้วยความที่ Technology มันช่างไปไวเหลือเกิน Android รุ่นใหม่ๆ ออกมาก็อยากได้ทั้งเครื่องใหม่ แล้วก็ Android version ใหม่ เพราะว่ามันมี features ใหม่ๆ มาน่าลิ้มลองเหลือเกิน ในช่วงของ Android 4.0 (Ice cream Sandwich) เป็นช่วงที่ผมอยากลองลง Rom เองเป็นครั้งแรก แต่ใจไม่ถึงพอ กลัวเครื่องใช้ไม่ได้ จนมาถึงช่วงของ Android 4.1 (JellyBean) ก็ได้ลง Rom จริง ซึ่งตอนนั้นมีนักพัฒนา rom เป็นงานอดิเรกได้เอา CyanogenMod 10 มาทำให้รองรับกับ Galaxy Mini โดยเฉพาะ ก็เลยจัดซะเลย แต่ว่าตอนนั้นก็ยังเป็นช่วงแรกๆ ที่เขาปล่อยออกมา (อยากลอง เลยขี้เกียจรอตัวสมบูรณ์) ก็พบกับความน่าตกใจครั้งแรก จอขาวเลยครับ แต่ก็ได้พบทางแก้ไขและเขียนไว้แล้ว  [Android Tips.] แก้ไข Flash ROM แล้วหน้าจอขาว & ...  ^^ วิธีการลง Rom  ก่อนอื่นขอแนะนำเว็บบอร์ดที่นักพัฒนาคนนี้ใช้เป็นที่ประกาศครับ  http://forum.xda-developers.com/showthread.php?t=1793511  ไปติดตาม build ใหม่ๆ ได้ที่นี่แหละครับ จาก

Debug บน Web Browser (HTML & Javascript)

Image
ก่อนหน้านี้ผมได้พูดถึงการ Debug source code ภาษา Java ในโปรแกรม Eclipse ไป ( Debug คืออะไร และ ทำอย่างไร ?? ) แต่ว่าการ Debug ใน Eclispe นั้นก็ทำได้เพียงการทำงานที่เป็น source code จริงๆ เท่านั้น หากเป็น Web Application ก็จะมี jsp ที่เราได้เขียนต่างๆ นาๆ ทั้ง taglib, scriptlet อย่างที่รู้ๆกันว่า jsp จะเป็นการทำงานฝั่ง Client ทำให้สุดท้ายแล้ว Web Browser ก็จะแสดงเพียง HTML เท่านั้น แต่ว่า การทำงานฝั่ง Client ของเรานั้นอาจมีการเล่นกับ event ต่างๆ เช่น พิมพ์, คลิกปุ่ม หรืออื่นๆ พวกนี้ก็มักจะมีการเรียก javascript ให้มาทำงาน อาจเป็นในลักษณะของ jQuery หรือ Ajax ก็ตามแต่ผู้เขียนจะออกแบบ ซึ่ง ณ จุดนี้หน้าเว็บนั้นๆ อาจต้องการส่งค่าไปยัง Server-side หรืออาจส่งไปหน้าเว็บอีกหน้าหนึ่ง บางครั้งเราจำเป็นต้องดูค่าต่างๆว่า มันถูกส่งไปยังอีกหน้าหนึ่งหรือไม่ หรือต้องการเชคว่า โปรแกรมมันเข้า case ที่เรากำหนดไว้หรือเปล่า อะไรทำนองนี้ (อ่านเพิ่มเติมได้จาก link Debug ด้านบน) เล่าให้ฟังเล่นๆ ว่า เมื่อก่อนผมต้องการรู้ตรวจสอบอะไรพวกนี้ (ก่อนจะรู้จักการ Debug) ผมก็เล่น alert(); ตลอดเลยครับ พัฒนาขึ้นมาหน่อยก

Programmer คืออะไร ????

Image
บทความนี้ผมเขียนขึ้นสำหรับบุคคลทั่วไปที่ไม่รู้จักงานเกี่ยวกับด้าน Technology โดยเฉพาะครับ เพราะว่ามีมากมายหลายคนที่ไม่รู้ว่า Programmer คืออะไร งานเป็นยังไง หรือรู้เพียงแต่ว่า เกี่ยวกับคอมฯ ซ่อมคอม ผู้เชี่ยวชาญด้านคอมพิวเตอร์ หรือนักพิมพ์มือฉมัง อะไรแบบนี้ ซึ่งเป็นความคิดที่ค่อนข้างกว้างครับ งานทางด้านคอมพิวเตอร์มีหลากหลายรูปแบบ เช่น IT Support, System Engineering, System Analyst รวมถึง Programmer ซึ่งแต่ละอย่างก็ทำงานต่างหน้าที่กันไป มีทั้งในลักษณะของการควบคุมดูแล การพัฒนาซอฟต์แวร์ การดูแลลูกค้า เป็นต้น สำหรับในส่วนของ Programmer Programmer เป็นผู้พัฒนาโปรแกรม หรือพูดภาษาบ้านๆก็ คนเขียนโปรแกรม โดยอาจแบ่งชื่อตามภาษาโปรแกรมที่ Programmer คนนั้นๆ ใช้ในการพัฒนา เช่น Java Programmer, C# Programmer, Web Programmer เป็นต้น ซึ่งงานหลักๆนั้นก็คือการเขียนโปรแกรม ให้สามารถทำงานได้ครบตามฟังก์ชันงานต่างๆ ให้ครบและถูกต้อง หากเป็นโปรแกรมที่มีหน้าจอติดต่อกับผู้ใช้งาน ก็ต้องสามารถให้ผู้ใช้ใช้งานไม่มีข้อผิดพลาด นอกจากนี้ Programmer ต้องคำนึงถึงคือ ประสิทธิภาพของโปรแกรม เขียนยังไงไม่ให้กินทรัพยากรม

[Android] วิธีใช้ app superuser

Image
หัวข้อในวันนี้ มาจากผู้อ่านครับ เพราะว่ามีการค้นหาวิธีใช้ app android ตัวหนึ่ง ที่มีชื่อว่า "Superuser" กันมากมายทีเดียว ซึ่งใน blog ของผมนั้นก็ไม่มีคำตอบที่ชัดเจนให้ซะด้วย ก็เลยเขียนให้ซักหน่อย ☺ ก่อนที่จะใช้ app superuser ได้ เราต้องทำให้เครื่องเรามีสิทธ์เป็น root หรือสิทธิ์ superuser ก่อน โดยผมได้เขียนวิธีไว้ ก่อนหน้านี้แล้วที่  แก้ไข Flash ROM แล้วหน้าจอขาว & Root in Galaxy mini 2.3.6  หรือ  SuperUser (Root) - สิทธิที่เหนือกว่า  ลองเข้าไปอ่านดูนะครับว่า root คืออะไร แล้วทำอย่างไร....... หลังจากที่เราทำความเข้าใจ และจัดการทำให้เครื่องมีสิทธิ์เข้าถึง root ของเครื่องได้แล้ว ก็จะพบกับ application ตัวหนึ่งใน app drawer ของเราที่มีชื่อว่า Superuser ลองเปิดเข้าไปดูครับ เปิดเข้ามาแล้วก็อาจจะพบว่า มันแทบจะทำอะไรไม่ได้เลย (เอ.. แล้วมันเอามาทำอะไรหว่า) app. ตัวนี้ มีไว้สำหรับจัดการสิทธิ์ superuser ให้กับ app. ตัวอื่นครับ app ตัวไหนที่จะขอใช้สิทธิ์ superuser ในการทำงานจะมีบอกอยู่แล้วใน Play Store ครับ เช่น "for ROOT", "superuser" อะไรประมาณนี้ครับ ซึ

จัดการกับโฆษณา popup ของเว็บครอบ link

Image
หลายคนอาจเคยได้เล่นเว็บบอร์ดต่างๆ ที่อาจมี link ไปยังเว็บภายนอก ซึ่งในบางครั้ง คนที่เขาเอามาวางให้เราคลิ๊ก อาจมีการครอบลิงค์ไว้เพื่อเป็นการหารายได้ บางคนก็ใจดีหน่อยคือแยก link เป็น 2 แบบ เช่น เป็นลิงค์ตรงไปยังเว็บนั้นๆ และเป็นลิงค์ครอบ โดยอาจเขียนกำกับเป็นลิงค์สนับสนุน สำหรับกรณีที่เราคลิ๊ก link ที่เป็นลิงค์ครอบ (อาจเพราะไม่มีทางเลือก หรือต้องการสนับสนุนก็แล้วแต่) พอกดไปก็จะพบกับหน้าตาที่เต็มไปด้วยโฆษณา อาจมีฉากมาบังหน้าเว็บด้านหลังอีกทีอีก 1. วิธีจัดการกับฉาก วิธีจัดการกับฉากนี้ แนะนำว่า ไม่ต้องกด [x] close หรือปุ่มที่เขาเตรียมไว้ให้เราปิดโฆษณาตัวนี้นะครับ เพราะว่าถ้าเรากด ก็จะมี event ดักอีกทีว่ากดแล้ว ให้เด้ง popup โฆษณามาอีก แล้วค่อยปิด เพราะฉะนั้น ต้องแก้ด้วยการกด F12 ซึ่งเป็นการเปิด Developer Tools ขึ้นมาครับ ใช้ได้ทั้ง IE (ใหม่หน่อย) , Firefox ต้องลง plugins ชื่อ firebug และ Chrome ซึ่งผมให้เป็นตัวอย่าง หลังจากนั้นเลือก Selector (ใน Chrome เป็นรูปแว่นขยาย ใน IE เป็นรูปลูกศร ใน Firefox จำไม่ได้ครับ) เพื่อไปดู html ในส่วนนั้น โดยการไปชี้ให้มีกรอบขึ้นมา แล้วคลิก

Hard Code ด้วย String Literal ไม่ปลอดภัยแน่ๆ

เมื่อการเขียนโปรแกรมที่เริ่มมีระบบที่ซับซ้อนมากขึ้น คนเขียนโปรแกรมต้องจัดการ code ให้เป็นระบบมากขึ้น เพื่อให้คนอื่นอ่านได้ง่าย แก้ได้ง่าย หากเราสนใจแต่ว่าโปรแกรมต้องทำงานได้ถูกต้อง โดยไม่สนใจว่าคนอื่นเขาทำกันยังไง เขียนโปรแกรมมีลักษณะแบบไหน ตั้งชื่อแนวไหน ยิ่งถ้าต้องทำงานเป็นทีมเป็นกลุ่ม ก็ต้องมีวินัยในตัวเองสูงด้วย คราวนี้ผมจะเขียนบล็อกสั้นๆ เป็นการแนะนำการเขียนโปรแกรมให้ดูดี และง่ายต่อการอ่าน/แก้ไขด้วย "Hard Code" โปรแกรมเมอร์มักจะรู้จักคำนี้เป็นอย่างดี มันคือ อาการที่โปรแกรมเมอร์จะเขียนโปรแกรมให้ทำอะไรสักอย่างแบบตรงไปตรงมาสุดๆ แต่ผมไม่ได้หมายความว่าโปรแกรมเมอร์ต้องทำอะไรแบบอ้อมๆนะครับ Hard Code ที่ผมจะพูดถึงในที่นี้จะเกี่ยวกับเรื่องของ String Literal ที่โปรแกรมเมอร์อาจกำหนดลงไปตรงๆใน code อาจเป็น ที่อยู่ของหน้าเว็บ ค่าที่ตรงกับในฐานข้อมูล หรืออื่นๆ ซึ่งจากเรื่องของ String Literal Pool ที่ผมได้เขียนไว้ใน  Java Pass by Reference , Pass by Value และรู้จักกับ Literal Pool  ถึงแม้ว่า String ชุดเดียวกัน จะถูกเก็บใน reference เดียวกัน แต่ลองนึกถึงตอนแก้สิครับ เกิดเราต้องทำโปร

[Java] Java กับ Stack

Image
ใครก็ตามที่ได้เขียน Java คงต้องรู้จักกับ Stack ด้วยนะครับ เพราะว่าเวลาเราเขียนโปรแกรมสักตัวนึก อาจมีหลากหลายคลาส หลากหลายฟังก์ชันการทำงาน ทำให้เมื่อโปรแกรมมีขนาดใหญ่ขึ้น ก็จะทำให้เราสามารถไล่ดู Source Code ได้ยากขึ้น ภาษา Java เป็นภาษาที่มีลักษณะการแสดง Error Message แบบ StackTrace คือแสดงให้เห็นว่า จุดที่มีสิทธิ์เกิด error ขึ้นมีที่ไหนบ้าง ตัวผมเอง ซึ่งพื้นฐานการเขียนโปรแกรมเริ่มต้นที่ภาษา C เวลาเขียนโปรแกรมสักตัวนึงแล้วมี error เกิดขึ้น สิ่งที่ compiler จะบอกก็คือ จุดๆเดียว ที่มีความผิดพลาดเกิดขึ้น หากเราเขียนโปรแกรมที่มี error หลายจุด compiler ก็จะบอก error ที่จุดแรกเท่านั้น สำหรับ Java แล้ว เมื่อเกิด Error ขึ้น การทำงานจะยังไม่สิ้นสุดทันที จะมีกระบวนการย้อนกลับ (Rollback) และ Error Message ที่แสดงออกมาให้ผู้เขียนโปรแกรมเห็น คือ ตัวหนังสือยาวๆ เลอะเทอะไปหมด ซึ่งอาจทำให้นักเขียน Java มือใหม่อาจตกใจได้ว่า "มันอะไรกันเนี่ย!!!" วิธีดู Error ของ Java จากที่ผมได้บอกไปก่อนหน้านี้แล้วว่า Java จะแสดง Error ในลักษณะ StackTrace คือเป็นชั้นของการทำงานลงไปเรื่อยๆ แน่นอนว่าถ้าใ

[Java] Singleton Design Pattern

Image
ผมเป็นคนนึงที่รู้สึกตอนเรียนว่า ไอ้ "OOP" หรือไม่ว่าจะเป็น "Design Pattern" อะไรพวกนี้ มันเป็นศัพท์ที่ฟังแล้วให้ความรู้สึกว่ามันยากจัง แต่พอได้ลงมือจริงๆ ได้ทำมันจริงๆ (ไม่ใช่แค่ท่องแต่ทฤษฎี) ก็พอจะรู้ว่ามันก็คือการเขียนโปรแกรมธรรมดาๆ ของเราเนี่ยแหละ แต่มันอาจจะมีชื่อเรียกการเขียนแต่ละแบบเท่านั้นเอง ทำให้บางทีผมก็รู้สึกว่าโปรแกรมที่เราเคยทำมันก็เป็น Design Pattern แบบนึง และบล็อกนี้ก็จะเสนอ "Singleton" ที่เป็น Design Pattern แบบง่ายๆ แบบหนึ่งไว้ให้อ่านกันเล่นๆนะครับ Singleton เป็นการสร้างคลาสที่มีคุณสมบัติคือ มี Object ได้เพียงตัวเดียวเท่านั้น ที่ต้องทำแบบนี้ก็เพื่อประหยัด memory ครับ ไหนๆ ก็สร้าง Object มาตัวนึงแล้ว ก็ใช้มันซะให้คุ้ม ดีกว่าไปสร้างใหม่แน่ๆครับ ถ้าถามว่ามีผลเยอะไหม ต้องลองศึกษาเกี่ยวกับ Garbage Collection ดูครับ การประกาศ Object ของ Java ต้อง new Constructor ของคลาสขึ้นมา ถ้าคลาสที่เราสร้างใหม่ที่เราไม่ได้เขียน Contructor ไว้ จะมี Default Contructor เป็น public Singleton(){} เพราะฉะนั้น เราต้องจัดการกับ Contructor ก่อน โดย privat

Facebook Comment

Recent Posts

Popular post of 7 days

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Popular

[Java] Java 8 DateTime ใหม่ ไฉไลกว่าเดิม

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

เรื่องของ ++i กับ i++

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Java] Java Static Variable และ Static Method

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)