บางคนอาจเกิดคำถามว่า เราจะหาฟิลที่ซ้ำใน mongodb ยังไง

เป็นคำสั่งที่ผมเจอมาและเห็นวรวดเร็วพอสมควรครับ

เลยขอนำมาแชร์ต่อ

 

db.data.aggregate([
{$group : { _id: “$title” , count : { $sum: 1}}},
{$match : { count : { $gt : 1 } }} ])

data = ชื่อ collection ของเราครับ

title = ชื่อ Field ที่เราจะเช็คว่ามันซ้ำมั้ย

 

Continue reading

จะย้ายข้อมูล Mongodb จากที่หนึ่งไปอีกที่หนึ่งทำยังไง ?

จะยากและซับซ้อนหรือปล่าว

 

มาลองดูกันง่ายๆแค่บรรทัดสองบรรทัด

mongoexport --db databasename --collection collection --out collection.json

databasename ให้เปลี่ยนเป็นชื่อ database ของเรา

collection ให้เปลี่ยนเป็นชื่อ collection ของเรา

collection.json ตั้งชื่อไฟล์ที่จะให้ export ออกมา

 

ที่นี่เราก็จะได้ไฟล์เป็นข้อมูลดาต้าเบสของเราทั้งหมดแล้ว จากนั้นก็แค่ย้ายไฟล์นี้ไปยังอีกเครื่องหนึ่ง

แล้วจัดการคำสั่งดังนี้

mongoimport --db databasename --collection collection --file collection.json

databasename ให้เปลี่ยนเป็นชื่อ database ของเรา

collection ให้เปลี่ยนเป็นชื่อ collection ของเรา

collection.json เป็นชื่อไฟล์ที่เราจะ import เข้าไป

 

และตูมมม เสร็จสิ้นครับ 😛

 

 

ขอบคุณครับ

ima8

MongoDB : Basic Command

 

ช่วงนี้ฟิตกับการเขียนบทความ วันนี้เลยขอเขียนเกี่ยวกับคำสั่งของ MongoDB กันครับ

มาทำความเข้าใจเกี่ยวกับ โครงสร้างของ mongodb กันก่อน

 

mongodb

 

หากจะมองให้เห็นภาพสำหรับคนที่เคยใช้งาน Mysql มาแล้ว

Collection  = Table

Documenct = Row

Field = Column

 

Continue reading

Docker

ในบทความนี่ผมจะเขียนเกี่ยวกับการการเริ่มใช้ Docker

ก่อนอื่นต้องขอบอกก่อนว่า Docker กับผมถือว่าเป็นสิ่งที่ใหม่มาจริงๆ

:3

ในบทความนี่ผมจะติดตั้งบท Centos 6.6 นะครับ

มาเริ่มกันเลย

1. ลบ docker ของเก่าทิ้งก่อน

sudo yum -y remove docker-io

2.  ติดตั้ง docker-io

sudo yum install docker-io

3. สั่ง start service  docker

sudo service docker start

หากรันสำเร็จไม่มี error ขึ้นให้ดำเนินการขั้นตอนทันไป

4

sudo chkconfig docker on

5. เริ่ม Pull images ได้เบยย

sudo docker pull centos

6. จากนั้นก็รันมันสะ

sudo docker run -i -t centos /bin/bash

TIP

1. pull

docker pull issalerd/mean_ima8

2. run

docker run -i -t issalerd/mean_ima8

3.

ที่มา

docker doc

ขอบคุณครับ

ima8

Start to play Django with python 3.4

ในบทความนี่เราจะใช้ ubuntu มาเป็น os หลักในการพัฒนา

ส่งผลให้บางคำสั่งอาจจะเป็นคำสั่งเฉาพะของ ubuntu เท่านั้น

 

 

ก่อนอื่นให้สร้าง Virtual Environments เพื่อที่เราจะใช้ python 3 ได้สะดวกยิ่งขึ้น

sudo apt-get install virtualenv

virtualenv django -p /usr/bin/python3.4

จะเป็นการสร้าง virtual Environments ชื่อ django โดยระบุ part ที่ /usr/bin/python3.4

เข้าใช้งานด้วย

source ~/django/bin/activate

 

เราสามารถลงอะไรก็ตามใน virtual environments ก้อนนี้ได้ โดยจะไม่ไปยุ่งกับภายนอก

pip install requests

 

หรือ ปิดการใช้งานด้วย

deactivate

 

Continue reading

The first 20 hours — how to learn anything | Josh Kaufman | TEDxCSU

Capture

เป็นอีกหนึ่ง TED ที่ผมชอบมาก  โดยเนื้อหาจะเล่าว่า

การที่เราจะเรียนรู้อะไรใหม่ๆนั้น ขอแค่มุ่งใช้เวลา 20 ชั่วโมงแรกของการเรียนรู้อย่างจริงจัง

และมีขั้นตอนที่ดี ก็เพียงพอที่จะทำให้เราสามารถเริ่มศึกษาสิ่งใหม่ๆได้

ขั้นตอนเหล่านั้นคือ

Continue reading

Growth Mindset VS Fixed Mindset

Growth-v-Fixed

 

คนในโลกนี่มีอยู่ 2 ประเภท
1. Growth Mindset
– เราสามารถเรียนรู้ทุกอย่างที่ อยากจะเรียนรู้
– เมื่อเราผิดหวัง เราจะพยายามมัน
– ฉันอยากจะแข่งขันกับตัวเอง
– เมื่อเราล้มเหลว เราเรียนรู้
– เมื่อคุณประสบความสำเร็จ คุณแค่แรงบันดาลใจของเรา
– ความพยายามและความทัศนคติเป็นตัวกำหนดทุกสิ่ง
2. Fixed Mindset
– มีแค่ฉันทำได้ดี กับ ทำไม่ได้เลย
– เมื่อฉันผิดหวัง ฉันจะยอมแพ้มัน
– ฉันไม่ชอบการแข่งขันใดๆทั้งสิ้น
– เมื่อฉันล้มเหลว ฉันถือว่าฉันไม่ดี
– ได้โปรดบอกฉัน ว่าฉันเก่ง ฉลาด
– เมื่อฉันประสบความสำเร็จ ฉันรู้สึกไม่ดี
– ความสามารถของฉันเป็นตัวกำหนดทุกอย่าง

 

 

Ima8

ขอบคุณครับ

 

หลังจากที่ทางคณะเทคโนโลยีสารสนเทศ ได้มีการจัด Programming BootCamp ก็เลยอยากจะมาขีดๆเขียนๆ

เล่าประสบการณ์ และ วิธีการคร่าวๆในค่าย

 

 

เริ่มจาก BootCamp นี่มีทั้งหมด 4 คืน 5 วัน  ตั้งแต่วันที่ 29 – 2 มิย 58

โดยเราจะมีเวลาทำโปรเจ็ค 48 ชั่วโมง (จัดการเวลานอนเอง)

 

โดยกลุ่มที่แบ่งในค่ายครั้งนี้อาจาร์ยว่าเกิดจากการ Random แต่เห้ยยย ทำไมชื่อแรกๆกลุ่มแรกๆ มีแต่คนที่ได้เกรดวิชา programming ระดับดีๆ

แต่ภายหลังเมื่อได้พูดคุยกับ 1 ในคนจัดงาน ทำให้เข้าใจว่า จริงๆแล้วการตัดสินจะใช้การแบ่งกลุ่มย่อยๆอยู่แล้ว และ เพื่อแก้ปัญหาหากเป็นการ random จริงๆ

อาจส่งผลให้คนที่ไม่ค่อยจะได้ในทีมอาจไม่ได้ทำงาน จึงใช้วิธีนี้เพื่อผลักให้ทุกทีม ทุกคนพยายามไปด้วยกัน

 

และนั้นละครับ ผลที่ออกมาเหมือนฟลุ๊ค ทันทีที่ประกาศรายชื่อทีมออกมา ถึงกับนั่งไม่ติด

เนื่องจากสมาชิกในทีมล้วนเป็นคนที่มีความสามารถระดับต้นๆของรุ่น  + กับรุ่นพี่ที่เป็นคนดูแลดันเป็นเทพ!!

ทันใดนั้นก็เกิดคำถามขึ้นในใจ ?? ถ้าแพ้จะทำยังไง .  . ?  กดดันสิครับ !!

ไหนๆ ก็ไหนๆ จึงได้โพสตัสลงในเฟส เพื่อเป็นการกดดันตัวเองเพิ่มขึ้นอีกหน่อย

 

ตัส

 

วันที่ 1 และ วันที่ 2 จะเป็นการอบรมให้ความรู้ในด้านต่างๆ ดังนี้

 

ตารางกิจกรรม

 

 

เรียกได้ว่าจัดเต็ม ครบทุกด้าน ตั้งแต่ Front-end ไปจนถึง Back-end

แต่เป็นเรื่องน่าเสียดาย เนื่องจากวันที่ 2 จำเป็นจะต้องเดินทางไปเข้าอบรมอีกโครงการหนึ่ง จึงต้องแอบโดดค่ายออกมา

ทำให้ต้องเลือกเข้าอบรมเฉพาะ JSP  ซึ่งไม่คิดว่า เวลาแค่ 6 ชั่วโมง กว่าๆ สามารถทำให้เห็นภาพรวมของ JSP ได้ขนาดนี้ กราบบบบบ Aj.pichet

 

พอตกเย็นวันที่สองต้องรีบเดินทางกลับมาเข้าค่าย เพื่อรอฟังประกาศธีมในการแข่งขันครั้งนี้

โดยธีมในปีนี้คือ alumni หรือ ศิษย์เก่า

ถึงกับสตั๊นไป 3.12 วิ .  . .

เอาละสิ๊ จะทำยังไง  จะทำยังไง  บวก กับตอนนั้นพึ่งกลับจากการอบรมธุรกิจ สมองนี่มึนไปหมด

และหัวข้อโปรเจ็คต้องเสร็จภายใน 3 ชั่วโมง เอาละสิครับ

 

หลังจากที่ได้ลองปล่อยให้เพื่อนได้ ปล่อยไอเดียกันออกมา จึงได้ลองเสนอไอเดียหนึ่ง

ในก็คือ ส่งต่อหนังสือจากรุ่นพี่สู่รุ่นน้อง 

เมื่อได้คุยๆกัน ทุกคนชอบ  และเห็นด้วย จึงได้ลองเอาไอเดียไปปรึกษารุ่นพี่

ก็ได้พบกับคำถามหนึ่งกลับมา “จะเช็คว่ารับหนังสือซ้ำได้มั้ย” เป็นคำถามสั้นๆ แต่กระบวนการมันไม่สั้นเลย

ทำให้เราต้องมานั่งคิดว่า จะเช็คยังไง ??  จึงได้ว่าเลข ISBN ไง แต่เอ้ะจะเอาเลขนี่มาได้ยังไง

รุ่นพี่จะอัพหนังสือ จะต้องกรอกข้อมูลทุกอย่างเองหรอ มันก็ดูไม่ใช่ปะ

พอลองหาฐานข้อมูลหนังสือไทย พร้อมเลข ISBN ก็ไม่เจอเฉย Y_Y

 

จึงได้เกิดไอเดียว่า เห้ย เมื่อ opendata มันไม่มีก็สายดำสิ๊ครับ

จึงได้ลองจัดการเขียน BOT ไปดูดข้อมูลหนังสือมาจากที่ที่หนึ่ง

ทำให้ในค่ายเราสามารถมีหนังสือในระบบมากกว่า 800 เล่ม โดยใช้เวลารัน bot ไปดูดมาไม่ถึง 5 นาที :3

 

และอีกเรื่องที่ยากสำหรับงานนี้

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

ในการคิดว่าจะเอา function อะไรบ้าง   ถ้าเอาแต่ละ function จะต้องใช้เวลาเท่าไหร่ แบ่งงานกันยังไงแต่ละ function

นี่คือสิ่งที่ต้องคิดภายในไม่กี่นาที ต้องตัดสินใจเลือกหรือตัด function ต่างๆ ให้สามารถสรุปออกมาเป็น project ได้

 

และนี่คือสิ่งที่ได้หลังจากที่ได้นั่งคิด จนมีเพื่อนทักว่า “คิดอะไรอยู่ ดูเครียดๆ”

ิBooksharing

ปิ๊งงง ออกมาแว้วว

 

function bootsharing

  1. login
  2. ลงหนังสือที่อยากส่งต่อให้น้อง
  3. ค้นหาหนังสือ
  4. จองหนังสือ
  5. เก็บสถิติการแลกเปลี่ยน
  6. ห้ามจองซ้ำ

พอมองคร่าวๆก็อาจจะ เอ๊ะ มันดูธรรมดาไปหรือปล่าว

แต่สิ่งที่ปรากฏคือทุก function ที่เลือกมาทำเกิดจากเหตุผลเพียงข้อเดียวว่า “อยากให้เพื่อนทุกคนในกลุ่มสามารถช่วยกันทำได้

แต่ถ้าจะทำแค่นี้ ต้องพรีเซ็นตัดสิน อาจทำให้ไม่ได้รางวัลก็เป็นได้ อาจจะดูเฉยๆไป

จึงได้แบ่งเวลาไปแอบเขียนสิ่งที่น่าจะช่วยให้ดึงดูดตากรรมการได้นิ๊ดนึง

นั้นก็คืออออ

  1. login ด้วย facebook ช่วยเพิ่มความสะดวกในการใช้งาน และ เพิ่มความ WOW
  2. login ด้วยรหัสนักศึกษาโดยไม่จำเป็นต้องลงทะเบียนในระบบเราก่อน สิ่งที่เลือกมาทำเนื่องจากสองเหตุผล 1. จะทำยังไงให้เราสามารถยืนยันตัวว่าเป็นศิษย์เก่าหรือศิษย์ปัจจุบันได้อย่างอัตโนมัส ไม่ต้องมี admin มาค่อยจัดการทีหลัง และ 2. ช่วยเพิ่มความ WOW เนื่องจากรหัสที่ล็อกอินเป็นรหัสที่ล็อกอินเข้าระบบของมหาลัยจริงๆ
  3. Bot ข้อมูลหนังสือ  จะให้มาเพิ่มข้อมูลเอง ก็ดูจะไม่ WOW พอเลยได้แบ่งเวลาไปเขียน bot เพื่อให้ไป dump ข้อมูลหนังสือออกมาปัจจุบันมีใน Database ประมาณ 800 เล่ม
  4. ค้นหาหนังสือด้วย autocomplete  จะให้มานั่งค้นหาหนังสือแบบปกติก็ดูเฉยๆไป เลยหยิบ ajax + jquery มาทำ autocomplete เพิ่มความ WOW
  5. responsive เพื่อป้องกันพังตอนใช้พรีเซ็น และ โชว์ในรูปแบบจอต่างๆกันไป

 

 

และนั้นละครับ เป็นโจทย์ที่แมกจะต้องจัดการว่า จะทำยังไงให้เราสามารถทำสิ่งที่อยู่ข้างต้นได้ออกมาสำเร็จในเวลาที่จำกัดมากๆ

เพียง 2 วัน !!  ต้องขอบคุณเพื่อนร่วมทีม ที่ทุกคนไว้ใจแมก ยินดีที่จะช่วยและทุ่มเทไปกับมันอย่างเต็มที่

 

สรุปสิ่งต่างๆที่ใช้ในครั้งนี้

  1. html5+css3+bootstrap เพื่อจัดหน้าเว็บให้ออกมาเป็น responsive
  2. PHP Codeigniter เพื่อให้สามารถจัดการในรูปแบบ MVC เพื่อให้สามารถทำงานร่วมกันได้ง่าย
  3. Git เก็บโค้ดเวอร์ชั่นต่างๆ
  4. jquery + ajax ในการทำลูกเล่นต่างๆให้ WOW

 

สรุปสิ่งที่มีในการทำโปรเจ็ค 48 ชั่วโมงครั้งนี้

  1. ออกแบบ function ให้เหมาะสมกับเวลา
  2. คำนวณเวลาในการทำแต่ละ function  พร้อมกับคิดว่าใครจะทำอะไร ใช้เวลาประมาณเท่าไหร่
  3. คิดว่าอะไรคือสิ่งที่จะช่วยให้ดึงดูดกรรมการ
  4. ลุยยย เต็มทีกับมัน !!

 

และนั้นละครับ กลุ่ม 10 We are the champions

11231749_1093643490650030_3610323953571655838_n

We are the champions

 

 

BookSharing

Boosharing

ข้อมูลวีดีโอจากเว็บสามย่านเพื่อใช้ในการประกอบการตกแต่งเว็บไซต์

 

โปรเจ็ค 48 ชั่วโมงจากค่าย Programming BootCamp @SIT KMUTT

 

ขอบคุณทุกคนมากครับ

Ima8.

03/06/2558

โจทย์จาวาสคลิปแสนสนุก 1

1.

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

 

2.

จงเขียนจาวาสคริปเพื่อแสดงกล่องข้อความในรูปภาพดังต่อไปนี้ “Last Update : 11-05-58 – 3:19 PM” โดยให้เวลาเป็นวันเวลาตามปัจจุบัน

 

Continue reading

หลายคนคงสงสัยว่าเจ้า setTimeout() กับ setInterval() มันแตกต่างกันยังไง

มันก็ตั้งเวลาได้เหมือนกันนิ

 

ของแตกต่างของ setTimeout() และ setInterval() มีส่วนต่างกันเพียงเล็กน้อยครับ

setTimeout()

  • จะทำงานหลังจากเวลาที่กำหนดเพียง 1 ครั้ง

setInterval()

  • จะทำงานหลังจากเวลาที่กำหนดไปเรื่อยๆ ทุกๆครั้ง

Continue reading