รวบรวมบทความในซีรี่ย์ ES6 in Depth

รวบรวมบทความในซีรี่ย์ ES6 in Depth โดย Nicolás Bevacqua จาก ponyfoo.com

A Brief History of ES6 Tooling
https://ponyfoo.com/articles/a-brief-history-of-es6-tooling

ES6 JavaScript Destructuring in Depth
https://ponyfoo.com/articles/es6-destructuring-in-depth

ES6 Template Literals in Depth
https://ponyfoo.com/articles/es6-template-strings-in-depth

ES6 Arrow Functions in Depth
https://ponyfoo.com/articles/es6-arrow-functions-in-depth

ES6 Spread and Butter in Depth
https://ponyfoo.com/articles/es6-spread-and-butter-in-depth

ES6 Object Literal Features in Depth
https://ponyfoo.com/articles/es6-object-literal-features-in-depth

ES6 Classes in Depth
https://ponyfoo.com/articles/es6-classes-in-depth

ES6 Let, Const and the “Temporal Dead Zone” (TDZ) in Depth
https://ponyfoo.com/articles/es6-let-const-and-temporal-dead-zone-in-depth

ES6 Iterators in Depth
https://ponyfoo.com/articles/es6-iterators-in-depth

ES6 Generators in Depth
https://ponyfoo.com/articles/es6-generators-in-depth

ES6 Symbols in Depth
https://ponyfoo.com/articles/es6-symbols-in-depth

ES6 Maps in Depth
https://ponyfoo.com/articles/es6-maps-in-depth

ES6 WeakMaps, Sets, and WeakSets in Depth
https://ponyfoo.com/articles/es6-weakmaps-sets-and-weaksets-in-depth

ES6 Proxies in Depth
https://ponyfoo.com/articles/es6-proxies-in-depth

ES6 Proxy Traps in Depth
https://ponyfoo.com/articles/es6-proxy-traps-in-depth

More ES6 Proxy Traps in Depth
https://ponyfoo.com/articles/more-es6-proxy-traps-in-depth

ES6 Reflection in Depth
https://ponyfoo.com/articles/es6-reflection-in-depth

ES6 Number Improvements in Depth
https://ponyfoo.com/articles/es6-number-improvements-in-depth

ES6 Math Additions in Depth
https://ponyfoo.com/articles/es6-math-additions-in-depth

ES6 Array Extensions in Depth
https://ponyfoo.com/articles/es6-array-extensions-in-depth

ES6 Object Changes in Depth
https://ponyfoo.com/articles/es6-object-changes-in-depth

ES6 Strings (and Unicode, ❤) in Depth
https://ponyfoo.com/articles/es6-strings-and-unicode-in-depth

ES6 Modules in Depth
https://ponyfoo.com/articles/es6-modules-in-depth

ES6 Promises in Depth
https://ponyfoo.com/articles/es6-promises-in-depth

Advertisements

ทางสองสามแพร่งของสตาร์ทอัปในการนำเสนอโปรดักเข้าสู่ตลาด

ทางสองสามแพร่งของสตาร์ทอัปในการนำเสนอโปรดักเข้าสู่ตลาด

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

การจะตอบคำถามสำคัญนี้ได้เราจะต้องเข้าใจก่อนว่าโปรดักของเราอยู่ในช่วงเวลาใดของตลาด

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

2. ช่วงของการมุ่งเน้นฟีเจอร์
โปรดักที่เรานำเสนอมีคู่แข่งชัดเจนอยู่แล้วในตลาด ผู้ใช้จะตัดสินใจเลือกใช้โปรดักต่างๆจากฟีเจอร์สำคัญที่พวกเขาต้องการมากกว่าประสบการณ์ในการใช้งาน เราต้องเน้นไปที่การสื่อสารว่า “ทำไม” ฟีเจอร์ที่เรานำเสนอนั้นจึงสำคัญ และมีความเหนือกว่าและแตกต่างจากคู่แข่งขันอื่น “อย่างไร”

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

references:
https://www.quora.com/Should-I-focus-on-a-good-user-experience-or-push-something-out-quickly

ไปต่างประเทศครั้งแรกให้ไปคนเดียว

เมื่อเครื่องบินลงจอดที่ Frankfurt ในตอนเช้าตรู่ วันนั้นฝนพรำเล็กน้อย ในเครื่องอาจจะมีนักเรียนไทยอยู่บ้างหรือไม่ผมก็ไม่ทราบได้ แต่ที่แน่นอนคือผมไม่รู้จักใครและก็คงไม่มีใครรู้จักผม ทันทีที่สัญญาณรัดเข็มขัดดับลงทุกคนต่างผุดลุกผุดนั่งสาระวนหยิบจับสัมภาระของตัวเป็นพันละวัน ต่างคนต่างก็ล้วนมีจุดมุ่งหมายของตัวเองไม่มีใครจะสนใจใครคนไหนทั้งนั้น ผมเอื้อมหยิบเป้ของตัวเองแล้วเดินตามทุกคนออกมา ลมเย็นพร้อมละอองฝนพัดแทรกรอยแยกของอุโมงทางเดินที่ต่อจากตัวเครื่องบินเข้าสู่อาคารเข้ามาปะทะใบหน้า อืมม ชื้นๆเย็นๆแบบนี้สินะที่เขาเรียกว่าเมืองนอก ผมเดินตามคนอื่นๆไปเข้าแถวรอตรวจพาสปอร์ทและวีซ่าเข้าเมือง ผ่านแล้วก็เดินตามป้าย Baggage Claim ไปรอรับกระเป๋าใบใหญ่ที่โหลดลงใต้เครื่อง เมื่อได้รับกระเป๋าแล้วก็ลากหลุนๆออกมาผ่านด่านศุลกากร ออกสู่ตัวอาคารสนามบินอันแสนกว้างใหญ่ ขั้นตอนต่อไปคือผมจะต้องหาทางเดินทางไปยังเมือง Karlsruhe เมืองที่มหาวิทยาลัยที่ผมจะไปเรียนนั้นตั้งอยู่ และเป็นเมืองที่ผมไม่แน่ใจด้วยซ้ำว่ามันอ่านออกเสียงว่าอย่างไรกันแน่

ลากกระเป๋าเดินออกมาในตัวอาคารไม่นานก็เห็นป้าย Long Distance Train Station ผมเดาว่ามันคงจะพาผมไปยังเมืองที่ผมอ่าชื่อไม่ออกนั้นได้เป็นแน่แท้ ผมเดินตามป้ายนั้นไป คลับคล้ายคลับคลาว่าอาจจะมีขึ้นรถบัสภายในสนามบินด้วยหรือเปล่า ผ่านมาร่วมสิบปีกว่าแล้ววันนี้ชักไม่แน่ใจ พอถึงสถานีก็ซื้อตั๋วรถไฟจากคนขาย ซึ่งโชคดียิ่งนักที่นั่งทอดเดียวก็ถึงจุดหมายเลยไม่ต้องต่อรถไฟ รอสักพักรถไฟก็มาผมยกกระเป๋าขึ้นไปหาที่นั่ง ความรู้สึกแรกคือช่างสะอาดสะอ้านยิ่งนัก แต่ความอัศจรรย์ที่แท้จริงมันเริ่มต้นขึ้นเมื่อเมื่อรถไฟออกวิ่ง สิ่งนั้นคือ ความเงียบ เงียบเหมือนนั่งเครื่องบิน ไม่มีเสียงล้อกระทบราง ตึกตึกๆ ตึกตึกๆ ให้รำคาญแบบบ้านเราเลยแม้แต่นิดเดียว (อารมณ์เหมือน MRT/BTS ทุกวันนี้ของบ้านเรา เพียงแต่เป็นแบบนั้นทั่วประเทศเลยเท่านั้นเอง)

เมื่อถึงสถานีรถไฟหลักของเมืองที่มหาวิทยาลัยผมตั้งอยู่ผมก็ลง แล้วเดินออกมาต่อรถรางไปยังตัวมหาวิทยาลัยอีกที รถรางที่นี่ไม่ได้ต่างจากรถไฟเลยเพียงแต่วิ่งสั้นผ่านเมืองเท่านั้นเอง บางช่วงก็เหมือนว่าจะวิ่งร่วมเส้นทางไปกับรถยนต์กันเลยทีเดียว ลงรถรางแล้วถามทางแล้วเดินต่ออีกเล็กน้อยผมก็ไปถึงสำนักงานที่ดูแลนักเรียนต่างชาติ คุยทักทายกันยาวเหยียดซึ่งผมจับความแทบไม่ได้เลย รู้แต่ว่าด้วยเหตุว่าผมมาก่อนมหาลัยเปิดตั้ง 15 วันและหอพักนักศึกษาซึ่งชาวต่างชาติมีสิทธิ์ได้เข้าพักก่อนนั้นยังไม่เปิด ผมต้องไปพักชั่วคราวก่อนที่ Youth Hostel ที่อยู่ใกล้ๆ ซึ่งมีเรื่องสนุกเกิดขึ้นที่นี่อีกมากมาย และจะนำมาเล่าให้ฟังกันในโอกาสต่อไป

ผมรอดมาได้ เก็บของแล้วก็ออกไปสำรวจเมือง

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

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

ปล. ทราบภายหลังจากเพื่อนคนไทยที่เยอรมันว่าชื่อเมืองนั้นอ่านออกเสียงแบบไทยๆได้ว่า คา-สะ-รู-ฮี เท็จริงอย่างไรทุกวันนี้ผมก็ยังไม่ค่อยแน่ใจ

อยากมีอีเมล์ที่เป็นโดเมนของเราเองต้องทำอย่างไร

อยากมีอีเมล์ที่เป็นโดเมนของเราเองต้องทำอย่างไร

การใช้บริการฟรีอีเมล์อย่าง hotmail.com หรือ gmail.com ในการติดต่อส่วนตัวก็สะดวกและปลอดภัยดี แต่หากว่าเป็นการติดต่อเพื่อทำธุรกิจการค้าน่าจะดีกว่าไหมถ้าเรามีอีเมล์ที่เป็นโดเมนของเราเอง

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

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

ทางออกที่ดีคือการไปใช้บริการ อีเมล์แบบโดเมนส่วนตัว กับทางผู้ให้บริการที่น่าเชื่อถือเช่น hotmail.com และ gmail.com แต่ก็ต้องเสียค่าบริการเป็นรายเดือนหรือรายปี เป็นภาระเพิ่มเติมให้ต้องดูแล แม้จะไม่มากมายนัก แต่อะไรที่ประหยัดได้ก็ควรที่จะประหยัดโดยเฉพาะ startup เล็กๆอย่างพวกเรา

และผมก็ไปค้นหามาจนเจอ บริการที่ว่านี้คือ zoho.com พวกเขาให้บริการระบบอีเมล์ที่รองรับโดเมนส่วนตัว สามารถใช้รับส่งอีเมล์ได้สะดวกผ่านตลอดไม่ถูกจัดเป็นอีเมล์ขยะหรือโดนบล๊อก ไม่มีโฆษณาให้รำคาญใจ มีระบบเวปเมล์ สามารถใช้โปรแกรมอีเมล์ทั่วไปเชื่อต่อแบบ IMAP ได้ และที่สำคัญ สามารถกำหนด อีเมล์ได้ 10 บัญชีฟรี โดยไม่เสียค่าใช้จ่ายแต่อย่างใด และหากแนะนำบริการให้กับเพื่อน ทั้งตัวเราเองและเพื่อนก็จะได้รับสิทธิ์เพิ่มขึ้นอีก 5 บัญชี รวมเป็น 15 บัญชีอีกด้วย

หากท่านใดสนใจจะใช้บริการ zoho.com สามารถหาข้อมูลเพิ่มเติมและ สมัครใช้บริการได้ที่ เวปไซท์ zoho.com ได้ทันที แต่ถ้าหากอยากได้โบนัสพิเศษเพิ่มอีก 5 บัญชี เก็บไว้ใช้ในอนาคตด้วย กรุณาทิ้งอีเมล์ไว้ แล้วผมจะส่ง invite ไปครับ

references:
https://www.zoho.com/mail/referrals.html

ทะลวงบล๊อก ICT ด้วย TorBrowser

ทะลวงบล๊อก ICT ด้วย TorBrowser

ทุกคนน่าจะเคยได้รับลิงก์เรื่องราวที่น่าสนใจแต่เมื่อพยามคลิ๊กเข้าไปอ่านกลับเจอกับหน้าจอสีเขียวพร้อมดวงตราของกระทรวง ICT ใช่มั้ยครับ นั่นแสดงว่าลิงก์นั้นได้ถูกบล๊อกไม่ให้คนไทยเข้าถึงได้โดยกระทรวง ICT ไปเสียแล้ว

เวปไซท์ต่างๆที่ถูกทางกระทรวง ICT บล๊อกเราจะไม่สามารถเข้าถึงได้ผ่าน Browser ทั่วๆไปอย่าง IE หรือ Chrome หรือ Safari แต่สามารถเข้าถึงได้ด้วย TorBrowser ซึ่งมีกลไกพิเศษ นอกจากจะทะลุบล๊อกของ ICT ได้แล้ว ยังทำให้เป็นการยากที่ใครจะสืบค้นเพื่อระบุตัวตนของผู้ใช้อีกด้วย (ถ้าเราฉลาดพอ)

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

ศึกษาเพิ่มเติมเกี่ยวกับ Tor Network และ ​Tor Browser หรือร่วมเป็นอาสาสมัครได้ที่
https://www.torproject.org

ดาวน์โหลด  TorBrowser สำหรับเครื่องคอมพิวเตอร์ ได้ที่
https://www.torproject.org/download/download-easy.html.en

iOS
https://itunes.apple.com/…/app/free-tor-browser/id914252107…

Android
https://play.google.com/store/apps/details…

ในอินเตอร์เน็ทมีทั้งเรื่องจริงและเรื่องหลอกลวง ถ้าคุณคิดว่าตัวคุณเองมีวุฒิภาวะพอที่จะแยกแยะได้ ติดตั้ง TorBrowser เสียครับ เลือกเข้าถึงหรือไม่เข้าถึงข้อมูลด้วยตัวเราเอง อย่าปล่อยให้ กระทรวง ICT เอากะลามาครอบหัวคุณ

references
https://www.torproject.org/about/overview.html.en

การสร้าง RSA Key Pair และกำหนดค่า SSH

สร้างคู่กุญแจ

$ ssh-keygen -t rsa

กุญแจสาธารณะจะถูกสร้างไว้ที่ ~/.ssh/id_rsa.pub และกุญแจส่วนตัวอยู่ที่ ~/.ssh/id_rsa

เอากุญแจสาธารณะของเราไปใส่ไฟล์ ~/.ssh/authorized_keys ในเครื่องเป้าหมาย

$ cat ~/.ssh/id_rsa.pub | ssh user@server.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

ทดลองล๊อกอินเข้าเรื่องเป้าหมาย

$ ssh user@server.com

กำหนดค่าให้ต้องลอกอินด้วย ssh key เท่านั้น

$ sudo nano /etc/ssh/sshd_config

แก้ไขบรรทัด

PermitRootLogin without-password

แล้ว

$ reload ssh

การติดตั้ง mongodb และกำหนดค่าที่จำเป็น

ติดตั้ง mongodb (Ubuntu 14.04)

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
$ echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org

สร้างไฟล์ /etc/init.d/disable-transparent-hugepages

#!/bin/sh
### BEGIN INIT INFO
# Provides:          disable-transparent-hugepages
# Required-Start:    $local_fs
# Required-Stop:
# X-Start-Before:    mongod mongodb-mms-automation-agent
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Disable Linux transparent huge pages
# Description:       Disable Linux transparent huge pages, to improve
#                    database performance.
### END INIT INFO

case $1 in
  start)
    if [ -d /sys/kernel/mm/transparent_hugepage ]; then
      thp_path=/sys/kernel/mm/transparent_hugepage
    elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
      thp_path=/sys/kernel/mm/redhat_transparent_hugepage
    else
      return 0
    fi

    echo 'never' > ${thp_path}/enabled
    echo 'never' > ${thp_path}/defrag

    unset thp_path
    ;;
esac

เปลี่ยนแปลง permission ให้ executable และ กำหนด init script

$ sudo chmod 755 /etc/init.d/disable-transparent-hugepages
$ sudo update-rc.d disable-transparent-hugepages defaults

กำหนด locale ในไฟล์ /etc/default/locale

LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
LC_ALL="en_US.UTF-8"

เมื่อต้องการสำรอง และเรียกคืนข้อมูล ทั้งหมดในดาต้าเบส

$ mongodump
$ mongorestore dump/

เมื่อต้องการเริ่มและหยุดการทำงานของ mogodb

$ sudo service mongod start
$ sudo service mongod stop
$ sudo service mongod restart

การกำหนด username และ password ให้ admin

$ mongo
> use admin
> db.createUser(
   {
     user: "admin",
     pwd: "password",
     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
   }
  )

แก้ไข /etc/mongod.conf โดย uncomment บรรทัด security และเพิ่มเติมข้อความให้เป็นดังนี้

security:
   authorization: enabled

เข้าไปสร้าง user สำหรับ database แต่ละอัน

$ mongo -u "admin" -p "password" --authenticationDatabase "admin"
> use databasename
> db.createUser(
   {
     user: "username",
     pwd: "password",
     roles: [ { role: "readWrite", db: "databasename" } ]
   }
  )

เมื่อต้องการใข้งานด้วย username ให้เรียก mongo ด้วย

$ mongo -u "username" -p "password" --authenticationDatabase "databasename"

references:
https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
https://docs.mongodb.org/manual/tutorial/transparent-huge-pages/