แจกของที่ระลึกเกี่ยวข้องกับซอฟต์แวร์สาย development ครับ เป็นของที่ได้มาจากงานต่างๆ ในต่างประเทศ เก็บไว้ก็ไม่ได้ใช้อะไร นำมาแจกให้กับ developer เผื่อจะเป็นแรงบันดาลใจให้เขียนโค้ดหรือทำระบบได้ดีกว่าเดิม
ของชุดแรกคือสินค้าเกี่ยวกับ Parse เครื่องมือสำหรับช่วยสร้างแอพ ที่ขายกิจการให้ Facebook เมื่อปี 2013 ของที่มีคือสมุดโน้ต 1 เล่ม และสติ๊กเกอร์ 2 แผ่น (หน้าตาเหมือนกัน)
ของชุดนี้ขอมอบให้คนที่ต้องใช้ Parse ในการทำงานพัฒนาแอพจริงๆ ขอให้เขียนเล่าประสบการณ์กับ Parse มาในคอมเมนต์ตามแบบฉบับของตัวเอง (หรือถ้าเคยเขียนไว้ที่อื่นก็แปะเป็นลิงก์ได้) แล้วรอการติดต่อกลับครับ ท่านแรกจะได้รับสติ๊กเกอร์+สมุดโน้ต ส่วนอีกท่านจะได้รับสติ๊กเกอร์อย่างเดียว
ของชุดต่อมาคือ
รวม 3 รางวัล กติกาก็เหมือนกันคือเขียนเล่าประสบการณ์การใช้ Docker หรือ GitHub ในคอมเมนต์ แล้วรอการติดต่อกลับทางอีเมลที่ลงทะเบียนไว้กับ Blognone
หมายเหตุ: ขอสงวนสิทธิการคัดเลือกคอมเมนต์ที่ถ่ายทอดประสบการณ์ที่มีประโยชน์ และถ้าไม่มีใครส่งเข้ามา ก็จะรวบรวมของที่ระลึกไปแจกในโอกาสต่อๆ ไปนะครับ
Comments
Git นี่รู้จักครั้งแรกตอนปี 1 ครับ เมื่อตอนนั้นเคยได้ยินชื่อ svn, mercurial และอื่นๆ มาเยอะแต่ไม่เข้าใจมันซักที ประกอบกับทุกๆ คนต่างพูดถึงมันก็เลยลองใช้ดู ตอนนั้นมีวิชา Programming ซึ่งใช้ภาษา C และต่อมาเป็น Java ซึ่งต้องทำโปรเจคเป็นงานกลุ่ม ก็พยายามจะกระตุ้นเพื่อนให้มาเริ่มใช้ version control กันได้ แต่สุดท้ายตอนนั้นโดนบอกว่ามันยากเกินไป (อารมณ์คือแค่เรียนเขียนโปรแกรมก็เหนื่อยแล้ว จะมาเรียนใช้ไอ้นี้ให้มันยากทำไมอีก) ไปๆ มาๆ ทุกโปรเจคของผมส่วนมากจะอยู่บน GitHub หมดเลย และเริ่มสนุกที่จะใช้มันด้วย หลังๆ เอาไปทำบล็อก เก็บแบ็คอัพซอร์สโค้ด แล้วพึ่งหัดๆ ไป contributing เมื่อไม่นานมานี้เอง
ขึ้นปี 3 มีสอนเรื่อง version control แล้ว เหมือนบังคับกลายๆ ว่าคุณท่านต้องรู้จักมันแล้วนะ แต่สุดท้ายก็มีไม่กี่รายที่ "อิน" และใช้มันอย่างจริงจัง ก็เข้าใจครับว่าเรายังไม่มี use cases จะใช้มันขนาดนั้น แต่ต้องขอบอกว่ามันดีจริงๆ นะ (y)
ส่วน Docker ก็มาแนวๆ เดียวกันกับตอนที่ผมรู้จัก Git เพราะตอนนั้นไม่ว่าจะมองไปทางไหนก็มีแต่คนพูดถึงมันไปซะหมด แต่ด้วยวัยตอนนั้นคือปี 3 มันยังไม่มี use cases ที่สำคัญในชีวิตที่จะต้องใช้มันอีกเช่นกัน การใช้งานมันเลยเป็นการเล่นไปซะส่วนใหญ่ ผมเองรู้จัก Vagrant ก่อน Docker เพราะคอนเซ็ปต์ของเจ้าตัวแรกมันง่ายกว่ามาก (ไม่มี container หรือ layers อะไรเลย) แต่หลังๆ ก็อินไปกับความ lightweight ของ Docker เหมือนกัน เวลาจะจำลองสภาพแวดล้อมทดสอบอะไรเดี๋ยวนี้ก็แค่เขียน .Dockerfile มาใช้อย่างเดียวแล้วครับ (อันนี้เป็นอีกกระทู้เรื่อง Vagrant กับ Docker ที่อ่านแล้วอิน)
จริงๆ แล้วประสบการณ์การใช้งานของผมมันไม่ค่อยจะมีอะไรซักเท่าไหร่ เพราะตอนใช้ๆ มันก็ไม่ได้ใช้เพื่อทำงาน แต่ใช้เพื่อที่จะเล่นกับมันแล้วรู้จักกับมันซะมากกว่า ถึงแม้จะยังไม่มีแรงกระตุ้นที่มากพอในการที่จะใช้งานมันจริงๆ แต่สุดท้ายแล้วมันเป็นการใช้งานบนการเล่นอย่างไม่มีขอบเขตและมันอาจทำให้เราเรียนรู้ได้มากกว่าด้วย แล้วมันจะกลายเป็นสิ่งที่เราอาจจะขาดมันไปไม่ได้เลยทีเดียว
ปล. จริงๆ ก็หวังสติ๊กเกอร์ครับ แต่ไม่ได้ก็ไม่เป็นไรเพราะรู้ตัวเองว่าพิมพ์มาแต่น้ำๆ :D เอาว่าเป็นเรื่องเล่าในการที่จะเรียนรู้อะไรใหม่ๆ แล้วกัน
ปล2. สำหรับคนที่เรียนใหม่ๆ นะครับ
Git เดี๋ยวนี้มี tutorials เยอะแยกมากมาย เช่น Try Git หรือจะเรียนผ่าน cheat sheet ที่คนอื่นทำไว้ก็ได้ เช่น git-style-guide เพราะเท่าที่เห็นใน GitHub เองจะมีคนทำ Git Cheat Sheet ออกมาบ่อยและเยอะพอสมควร ลองเสิร์ชๆ หาดูอาจได้อันที่เจ๋งๆ มาเป็นแนวทางเรียนรู้แน่นอน
ส่วน Docker ผมเองก็เห็นหนังสือของหลายๆ ค่ายที่พยายามจะทำสอนอยู่ แต่สำหรับมือใหม่ผมแนะนำให้อ่านที่ Docker Documentation เลยเพราะทำละเอียดมากๆ ครับ ฟรีอีกด้วย
เนื่องจาก GitHub มีของชิ้นเดียว ขอแจก Docker นะครับ
Github ผมรู้จักตอน ม.3 ครับ (ปัจจุบัน มหาลัยปี 1) ตอนนั้นผมไม่รู้จักด้วยซ้ำว่า Version Control คืออะไร ผมรู้จัก Github เพราะมีผู้ใช้คนนึงใน XDA developer ได้อัปโหลดโค้ดของแอปตัวเองไว้บน Github ทำให้ผมคิดว่าเป็น Github เป็นเว็บฝากโค้ด/ตัวอักษร เหมือน pastebin ด้วยซ้ำ ผมเลยลองสมัครใช้งานวันในวันที่ 4 มกราคม 2555 ตอนนั้นผมยังคงใช้วิธีกดปุ่มบวกแล้ววางโค้ดผ่านหน้าเว็บโดยตรง ซึ่งตอนแรกๆ ต้องขอบคุณที่ Github มีปุ่ม download as zip ทำให้ผมสามารถดาวน์โหลดซอสโค้ดของคนอื่นลงมาได้อย่างง่ายดาย
พอขึ้น ม.4 ผมก็ยังไม่รู้ว่า Version Control คืออะไร ทำให้ฟีเจอร์แรกที่ผมได้ใช้บน Github อย่างจริงจัง คือ Github Pages สำหรับฝากหน้าเว็บโดยหน้าเว็บแรกที่ผมฝากไปเป็น webapp ที่เขียนง่ายๆไว้ใช้งานกับเพื่อนๆ ซึ่ง webapp หน้านั้นอยู่ภายใต้โดเมน github.io ทำให้ผมสามารแบ่งปัน url ให้เพื่อนเข้ามาเล่นได้ทันที ซึ่งเป็นช่วงที่ผมรู้สึกว่า Github มันดูน่าใช้งานกว่า pastebin ก็ตรงนี้เนี่ยละ
หลังจากนั้นไม่นานผมก็ได้รู้ว่า Github มีความสามารถที่เรียกว่า Github Gist ที่เหมือนกับ Paste bin ทำให้ผมไม่จำเป็นต้องก็อปโค้ดมาวาง 1 ไฟล์ต่อ 1 repository อีกต่อไป
ขึ้นมา ม.5 ตอนนี้ผมได้ลองใช้ส่วน Version Control ครั้งแรก เมื่อวันที่ ผ่าน Github for Windows มันทำให้ผมเริ่มจัดการโค้ดของผมด้วย Version Control แต่ว่าหลังจากนั้นช่วง ม.5 เทอม 2 ผมรู้สึกว่า Github for Windows เริ่มไม่เพียงพอต่อความต้องการของผมซะแล้ว เมื่อผมต้องการ push โค้ดเข้าไปใน gerrit ของโครงการ opensource ซึ่งนั่นก็เป็นจุดเริ่มต้นให้ผมใช้ Git shell ที่ติดตั้งมาพร้อมกับ Github for windows
ขึ้น ม.6 ช่วงนี้มีข่าวเกี่ยวกับ Hubot ซึ่งเป็น repository ของทาง Github เป็นโค้ดที่ช่วยในการสร้างแชทบอทขึ้นมา ผมเลยไปลองเล่น Hubot ดูต้องบอกเลยว่า ช่วง ม.6 ผมสนุกกับการสร้าง Chatbot มาก ผมได้สร้างแชทบอทขึ้นมาสองตัวคือไอริน และ มูมู่ (หมายเหตุ ตอนนี้ทั้งสองตัวไม่ได้ใช้ Hubot อีกต่อไปแล้ว)
หลังจากนั้นทาง Github ก็ปล่อย Atom.io เวอร์ชั่น 1.0 ออกมาผมก็ได้ใช้ Atom.io เป็น text editor หลัก แทน Notepad++ เพราะว่า plug-in อันหลากหลายของ Atom มันตอบโจทย์ในการใช้ของผมมากกว่าครับ
และสิ่งล่าสุดที่ Github ได้ให้ผมในตอนที่อยู่ปี 1 นี้คือการใช้ อีเมลมหาลัยสมัคร Github for Education ซึ่งมีทรัพยากรสำหรับการเขียนโปรแกรมมากมายให้ผมได้ใช้ เพื่อพัฒนาความสามารถตัวเองต่อไป
ผมรู้สึกดีใจจริงๆ ที่วันนั้นผมได้รู้จักเว็บ Github ผ่านทางกระทู้ของ XDA developer ผมแทบนึกไม่ออกเลยว่าถ้าไม่ได้รับความช่วยเหลือด้านทรัพยากรต่างๆ จาก Github ผมจะสามารถเขียนโปรแกรมมาได้ถึงจุดนี้หรือไม่
คอมเมนต์นี้เดี๋ยวแจก GitHub ครับ
เอาเรื่อง Parse ก็แล้วกัน
โดยส่วนตัวได้ยิน Parse มาก็ราวๆปีครึ่งแล้วครับ แต่เริ่มใช้จริงจังเมื่อซัก ครึ่งปีนี้เอง ตัวหลักที่ใช้ก็คือ ระบบ push message
ระบบ push message ผมทำ 2 ส่วน คือส่วน Android client กับส่วนที่เป็น PHP server เพื่อเอาไว้ยิง message ออกมา
ตัว SDK ทำมาได้ดีเลยทีเดียว เราไม่จำเป็นต้องสร้าง google cloud project เพื่อเอา API key มาใช้ ก็สามารถทำงานได้แล้ว หรือถ้าจะ custom เองก็สามารถใช้ API key ของเราเองก็ได้ อันนี้ผมถือว่ายืดหยุ่นมาก
จริงๆแล้ว ส่วนที่เอาไว้ยิง message เราอาจจะไม่จำเป็นต้องมี server เองก็ได้ เพราะเราสามารถเอา script ไปวางไว้บน Parse console เพื่อให้ยิง message ได้เช่นกัน
อีกจุดหนึ่งที่คิดว่า Parse มันแจ่มก็คือ เราสามารถยิง message ออกมาจากตัว client ผ่าน API ที่มากับ SDK ได้เลย อันนี้ก็ถือว่าสะดวกมาก เพราะไม่ต้องเสียเวลามาทำ service ไว้ใช้เอง
ตัวโครงสร้างของระบบ push นั้นมีการควบคุมได้หลายแบบ ทั้งผ่าน channel, OS, app version และอีกหลายเงื่อนไข ทำให้การยิง message ออกมาเราสามารถกำหนดกลุ่มเป้าหมายได้ง่ายมาก
ตัว message เราก็ทำได้หลายแบบ จะเป็ร plain text หรือจะยัดไปเป็น JSON แล้วไปแกะเอาที่ client ก็ได้
นอกจากนี้ยังติด analytic มาในตัวด้วย ทำ A/B test ได้ในตัวเสร็จสรรพ
นอกจากระบบ push message แล้ว Parse ยังมีอีก Data Storage ให้ด้วย โดยตัว API ทำได้ทั้ง Cloud storage และ Local storage แต่อันนี้ผมแค่ลองเล่นเฉยๆ ยังไม่ได้ใช้จริงเลยยังไม่รู้อะไรมากนัก
และแน่นอนมี Analytics ให้ดูพอหอมปากหอมคอ ในแบบ Default ซึ่งแน่นอนว่าเราก็สามารถ custom มันได้ อันนี้ผมยังไม่ได้ลอง custom มากนัก เพราะเดิมใช้ Google analytics กับ Fabric อยู่แล้ว
และที่สำคัญแบบสุดๆก็คือ มันฟรีแบบมีลิมิต ซึ่งลิมิตมันก็สูงซะแบบว่า กว่าจะได้เสียเงิน App ก็ดังแล้ว
สำหรับความรู้สึกที่มีต่อ Parse ก็คือ รู้งี้ใช้มาตั้งนานละ เบาแรงไปเยอะ
เนื่องจากมีผู้ตอบ Parse มีคนเดียว เดี๋ยวแจกของยกชุดเลยครับ
เป็นการเล่นเกมแจกของที่ Geek มากครัส
ไม่รู้ว่ายังทันรึป่าว แต่ก็อยากเล่าครับ
ถ้าจะให้พูดถึง GitHub ผมคงไม่สามารถบอกได้ว่า GitHub จะมีความสามารถอะไรบ้าง เพราะสิ่งเดียวที่ผมนึกถึง GitHub ก็คือ การทำหน้าที่เป็นแหล่งความรู้มหาศาล ในการสร้างสรรค์ Software
ผมเพิ่งใช้ GitHub ได้แค่ครั้งเดียว, เมื่อสองปีก่อน ผมได้เขียนแอปพลิเคชั่น Android ขึ้นมาตัวหนึ่ง เป็น Live wallpaper เพื่อบอกเวลาเป็นตัวอักษร ซึ่งได้รับแรงบันดาลใจจาก Pebble หลังจากหมกมุ่นอยู่กับ Android Studio นานกว่าหลายอาทิตย์ ผมก็ได้แอปพลิเคชั่นดังกล่าวมา แต่สิ่งที่สำคัญกว่าแอปพลิเคชั่น ก็คือความรู้ที่ได้ศึกษาค้นคว้ามาระหว่างการเขียนแอป ผมจึงตัดสินใจ open source แอปของผม ผมใช้ GitHub เพื่อเป็นช่องทางการกระจายความรู้ กระจาย source code โดยมีแนวคิดว่า ความรู้ไม่ควรที่จะถูกปิดบัง ที่เลือกใช้ GitHub ณ ตอนนั้น คงมีเหตุผลหลักๆ แค่ว่า GitHub เป็นช่องทางที่ใหญ่ และสะดวกที่สุดในการเผยแพร่ source code ของผม
สำหรับผมแล้ว GitHub คงเป็นเหมือนเครื่องมือที่ช่วยให้ผมสามารถแบ่งปันความรู้ให้กับคนอื่นๆ ได้อย่างไม่รู้จบครับ