วันพฤหัสบดีที่ 25 มกราคม พ.ศ. 2561

Node.js tips: Socket.io การใช้งาน emit และ broadcast

Node.js tips: Socket.io การใช้งาน emit และ broadcast

การส่งข้อมูลระหว่าง client และ server ของ Socket.io ใช้ method  emit() ซึ่งก็มีการใช้งานหลายแบบตามแต่access control ของแต่ละ app ผมขอสรุปตามรูปแบบที่ผมใช้งานบ่อยๆ ดังนี้ครับ
สมมุติว่าผม require  module socket.io เข้ามาแบบนี้

 1. ส่งหา client ทั้งหมดรวมทั้งตัวเองด้วย

สามารถใช้ emit() ได้เลย

 2. ส่งหา client ทุกคนยกเว้นตัวเอง

นอกจาก broadcast หาทุก client แล้วยัง broadcast หาเฉพาะ client ที่ subscribe ได้ด้วย client ที่จะรับข้อความได้ต้อง subscribe channel ก่อนด้วยคำสั่ง  socket.join('room_name')
ตอนจะ emit ข้อมูลไปก็ใช้ method to()  แล้วระบุชื่อ room ที่จะ broadcast

 3. ส่งหาเฉพาะ client ใด client หนึ่ง

ถ้าลอง console.log(io.sockets)  ออกมาดูจะเจอ session id ของ client ที่ connect เข้ามาในระบบ จะส่งหา client ไหนก็ให้ระบุ session id เช่น  io.sockets['xxxx'] เราจะได้ object ของ socket มาสามารถเอาใช้งาน emit, broadcast ได้เหมือนปกติ ตามตัวอย่างข้างล่าง
การใช้งานแบบนี้จะใช้กับ app ที่มีการส่งข้อมูลที่เป็นส่วนตัวมี privacy แบบ 1 ต่อ 1 มีการส่งข้อมูลหา client เพียงคนเดียวเช่น ระบบแชท (ไม่ใช่ห้องแชทรวม) แบบ facebook ที่จะมีเฉพาะคู่สนทนาเท่านั้นที่จะเห็นข้อความ ซึ่งโดยปกติการ implement app แบบนี้จะใช้ซอฟต์อื่นเพื่อ manage session ด้วย (ผมชอบใช้ Redis)
การใช้งานทั้ง 3 รูปแบบน่าจะครอบคลุม app เกือบทุกประเภทแล้ว เลือกใช้ให้เหมาะสมแล้วกันครับ
 ที่มา:https://khasathan.in.th/archives/747

วันอังคารที่ 12 ธันวาคม พ.ศ. 2560

โปรโตคอล (Protocol)

  โปรโตคอล (Protocol)หมาย ถึง ข้อกำหนดหรือข้อตกลงในการสื่อสารระหว่างคอมพิวเตอร์ ซึ่งมีหลายชนิดคล้ายกับภาษามนุษย์ที่มีทั้ง ภาษาไทย ภาษาอังกฤษ และภาษามือ เป็นต้น โดยมนุษย์จะสื่อสารกันให้เกิดความเช้าใจได้ จะต้องใช้ภาษาเดียวกัน ในกรณีที่คอมพิวเตอร์ 2 เครื่อง ต้องการสื่อสารกันแต่ใช้คนละภาษา จะต้องมีตัวกลางในการแปลงโปรโตคอล ที่เรียกว่า Gateway ถ้า เทียบกับภาษามนุษย์ก็คือ ล่าม ซึ่งอาจะเป็นเครื่องเซิฟเวอร์สำหรับทำหน้าที่นี้โดยเฉพาะ หรืออาจะเป็นโปรแกรมเมอร์หรือไดร์ฟเวอร์สำหรับติดตั้งเพิ่มเติมในเครื่อง คอมพิวเตอร์

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

       ตัวอย่างขั้นตอนการทำงาน เช่น เมื่อพิมพ์ที่อยู่ของเว็บไซต์ที่ต้องการ (เช่น www.google.com) ลงในเว็บบราวเซอร์แล้ว คอมพิวเตอร์จะเริ่มส่งข้อความเพื่อร้องขอการเชื่อมต่อ (Connection Request) ไปยัง Web Server และรอการตอบกลับ (Connection Reply) ว่า Server พร้อมให้บริการหรือไม่ จากนั้นคอมพิวเตอร์จะส่งชื่อของเว็บเพจที่ต้องการไปยัง Web Server ด้วยข้อความ “Get Message” และขั้นตอนสุดท้าย Web Server จะส่งเนื้อหากลับมายังเครื่องคอมพิวเตอร์ของผู้ใช้

ชนิดของโพรโทคอล

1. NetBEUI (NetBIOS Extended User Interface)

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

2. IPX/SPX (Internet Packet Exchange)

     เป็นโปรโตคอลที่ถูกพัฒนาขึ้นมาเพื่อนำไปใช้กับระบบเครือข่ายของ Netware โปรโตคอลนี้มีความสามารถในการหาเส้นทางได้ แต่ก็ไม่ดีเท่ากับ TCP/IP ดังนั้นจึงเหมาะสำหรับเครือข่ายขนาดเล็กถึงระดับกลางเท่านั้น ปัจจุบัน Netware ได้พัฒนาความสามารถจนสามารถรองรับเครือข่ายขนาดใหญ่ และมีโปรโตคอลให้เลือกใช้หลากหลายขึ้น


3. TCP/IP (Transfer Control Protocol/ Internet Protocol)

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

        3.1  FTP (File Transfer Protocol) ใช้ในการรับ-ส่ง แฟ้มข้อมูลระหว่างเครื่องลูกข่ายและเครื่องเซิร์ฟเวอร์ โดยที่เครื่องเซิร์ฟเวอร์จะต้องมีโปรแกรมให้บริการ FTP (FTP Server) ติดตั้งและทำงานอยู่ เพื่อให้เครื่องลูกข่ายที่รันโปรแกรม FTP Client สามารถเข้ามาขอใช้บริการได้ นอกจากรับส่งแฟ้มข้อมูลแล้ว FTP ยังมีคำสั่งที่ใช้ในการแสดงชื่อแฟ้มข้อมูลบนเครื่องเซิร์ฟเวอร์ เปลี่ยนชื่อแฟ้มหรือลบแฟ้มข้อมูล

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

        3.3 SMTP เป็นการให้บริการเพื่อรับส่งจดหมายอิเลคทรอนิคส์ (E-Mail) โดยที่ SMTPจะมีตู้ไปรษณีย์เพื่อทำหน้าที่รับจดหมายจากผู้อื่นที่ต้องการส่งให้ และเก็บจดหมายของผู้ใช้ที่ต้องการส่งไปยังผู้ใช้อื่น เมื่อถึงกำหนดเวลาที่ตั้งไว้โปรแกรมจะทำการส่งจดหมายออกและรับจดหมายเข้ามา ผู้ใช้ก็สามารถจะเปิดอ่านได้เมื่อต้องการส่วนการรับส่งจดหมายระหว่างเครื่องลูกข่ายกับ SMTP Server ในลักษณะที่เป็น Client/Server จะใช้โปรโตคอลที่ชื่อว่า POP3 (Post Office Protocol)

          3.4 HTTP (Hyper Text Transfer Protocol) ใช้ในการติดต่อรับส่งข้อมูลชนิดไฮเปอร์เท็กซ์ (Hypertext)ระหว่างเครื่องลูกข่ายกับ WWW Server (World Wide Web) โดยที่เอกสารนี้จะอยู่ในรูปแบบที่เขียนในภาษา HTML(Hyper Text Markup Language) เอกสารแต่ละชิ้นจะสามารถเชื่อมโยงไปยังเอกสารชิ้นอื่นได้ ซึ่งเอกสารที่ถูกเชื่อมโยงนี้อาจจะอยู่บนเครื่องคอมพิวเตอร์เครื่องเดียวกัน หรือต่างเครื่องกันก็ได้

            3.5 DNS ( Domain Name System) ในการเชื่อมโยงเครือข่ายแบบที่ใช้โปรโตคอล TCP/IP นั้นเครื่องเซิร์ฟเวอร์และเครื่องลูกข่ายทุกตัวจะต้องมีหมายเลขที่ใช้ในการ ระบุตัวเองคล้ายกับชื่อ-นามสกุลของคนเรา หมายเลขที่กล่าวมานี้เรียกว่า IP Address โดยเขียนในลักษณะนี้ 203.154.126.134 การจดจำ IP Address เป็นสิ่งที่ทำได้ยากกว่าการจำชื่อของเครื่องคอมพิวเตอร์ ดังนั้นจึงเกิดการสร้างเซิร์ฟเวอร์ที่จะให้บริการการสอบถามชื่อเครื่องและ IP Address ในเครือข่ายอินเตอร์เน็ตขึ้นมาซึ่งเรียกว่า Domain Name Services ในการใช้งานนั้นผู้ใช้เพียงแต่ระบุ IP Address ของเครื่องที่ให้บริการนี้แล้วเมื่อต้องการจะติดต่อกับเครื่องคอมพิวเตอร์เครื่องใดในเครือข่ายอินเตอร์เน็ต DNS จะช่วยค้นหา IP Address ของเครื่องที่ต้องการให้เพื่อให้โปรแกรมสามารถใช้ IP Address ที่ได้ในการติดต่อ


4.  โพรโทคอลจัดการระดับตัวอักษร

         เป็นแบบที่เก่าแก่ที่สุดที่มีใช้งานบนเครื่องเมนเฟรม ซึ่งกำหนดให้หนึ่งตัวอักษรประกอบด้วยข้อมูลขนาด 8 บิต แบบที่แพร่หลายที่สุดเรียกว่า แบบบีเอสซี (Binary Synchronous Communication; BSC or BISYNC) ข้อมูลจะถูกส่งออกไปเป็นกลุ่มของตัวอักษรแบบ Synchronous ในลักษณะกึ่งสองทิศทาง ได้รับการพัฒนาขึ้นมาโดยบริษัทไอบีเอ็ม ในปี พ.ศ. 2510 และได้กลายเป็นมาตรฐานในการสื่อสารระหว่างเครื่องเมนเฟรมในยุดนั้น แต่ก็ยังมีการใช้งานอยู่มากในปัจจุบัน


5. โพรโทคอลจัดการแบบนับจำนวนไบต์ (Byte-Count-Oriented Protocols)

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


6. โพรโทคอลจัดการระดับบิต (Bit-Oriented Protocols)

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


7.  โพรโทคอลเอสเอ็นเอ (System Network Architecture; SNA)

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


8.  โพรโทคอล H.323

       การสื่อสารแบบแพ็กเกตสวิท (Packet Switched Network) ใช้ โพรโทคอล H.323 สำหรับการส่งข้อมูลทุกชนิดแบบเรียลไทม์ (Real-Time) การสื่อสารแบบนี้จะส่งข้อมูลจากจุดหนึ่งไปยังอีกจุดหนึ่งโดยแบ่งข้อมูลออกเป็นส่วนเล็ก ๆ เรียกว่าแพ็กเกต เพื่อส่งไปยัง เป้าหมายตามสายสื่อสารที่เร็วที่สุดโพรโทคอลนี้ได้รับการรับรองมาตรฐานโดย ITU เมื่อเดือนตุลาคมพ.ศ. 2539 ช่วยให้สามารถส่งข้อมูลเสียง ภาพ หรือนำมาใช้ในการประชุมทางไกลอิเล็กทรอนิกส์ได้

9.  โพรโทคอล X.25

       คณะกรรมการ CCITT (Consultative Committee for International Telegraph and Telephone) ได้พัฒนาโพรโทคอลมาตรฐานขึ้นมาเพื่อใช้ในการสื่อสารระหว่างประเทศ ผ่านระบบเครือข่ายที่ใช้แพ็กเกตสวิทชิ่ง เรียกว่า โพรโทคอล X.25ระบบเครือข่ายที่ใช้แพ็กเกตสวิตชิ่ง (Packet-switching Network or Packet Distribution Network) จะแบ่งข้อมูลออกเป็นส่วนเล็กๆ คือ แพ็กเกต เพื่อส่งออกทางสายสื่อสารความเร็วสูงไปยังผู้รับอุปกรณ์ที่ใช้ในระบบเครือข่าย

ที่มา:https://sites.google.com/site/jesadawin/chnid-khxng-pho-r-tho-khxl

วันเสาร์ที่ 9 ธันวาคม พ.ศ. 2560

จำลอง Linux Environment บน Windows ด้วย Cygwin

จำลอง Linux Environment บน Windows ด้วย Cygwin

บาง ครั้งในการทำงาน เราอาจจะจำเป็นจะต้องพัฒนาโปรแกรมที่ถูกสร้างขึ้นบน Linux ซึ่งถ้าเราใช้ระบบปฏิบัติการตระกูล Linux ด้วยก็คงจะไม่มีปัญหามากเท่าไหร่ (ถึงจะเป็น Linux ด้วยกันแต่คนละ distribution บางทีก็มีปัญหา) แต่ถ้าระบบปฏิบัติการที่เราใช้เป็น Windows ก็คงจะลำบากพอดู วิธีการแก้ปัญหาแบบง่ายที่สุด ก็คือการลง Linux ใหม่เลย หรือว่าใช้ซอฟต์แวร์ประเภท Virtual Machine ที่จำลองการทำงานของของระบบปฏิบัติการอื่นบน Windows อีกทีหนึ่ง แต่ในวันนี้จะขอเสนอวิธีที่สะดวกกว่านั้นครับ นั่นคือการใช้ Cygwin
Cygwin คืออะไร? Cygwin เป็นซอฟต์แวร์สำหรับจำลอง Environment ของ Linux บนเครื่องที่เป็น Windows หรือพูดง่ายๆก็คือ รวมเอาพวก library, API หรือโปรแกรมที่มีบน Linux ให้สามารถใช้ได้บน Windows ซึ่งสะดวกมากในการติดตั้ง เพียงแต่ดาวน์โหลด Cygwin แล้วก็ติดตั้ง ซึ่งระหว่างติดตั้งโปรแกรมจะถามถึงว่าเราต้องลง package ใดบ้าง ก็ให้เช็คไปตามที่ต้องการใช้ (หากติดตั้งแล้วต้องการลง package เพิ่ม ก็ให้ติดตั้งใหม่โดยใช้ไฟล์ install ครับ ของเดิมที่ลงไว้แล้วจะไม่หายไป แต่เราสามารถเลือก package เพิ่มได้)
หลังจากที่ลงโปรแกรมเรียบร้อย แล้วลงเปิดโปรแกรม Cygwin Bash Shell ก็จะได้โปรแกรมหน้าตาดังภาพด้านล่าง ซึ่งเราสามารถสั่งคำสั่งบน Linux ได้ตามใจชอบ

ไฟล์ที่เราต้องการใช้งานบน Cygwin จะต้องวางไว้อยู่ในโฟลเดอร์ที่เป็นตำแหน่งที่ติดตั้ง cygwin ซึ่งโปรแกรมจะถือว่าตำแหน่งนั้นเป็น / (root) ของระบบ
สำหรับผมแล้วบางครั้งก็อยากจะใช้งานโปรแกรมบน Linux บางตัว เพื่อทำงานกับไฟล์โดยที่ขี้เกียจจะย้ายไฟล์ไปยังโฟลเดอร์นี้ เราก็สามารถแก้ปัญหานี้ได้โดยการกำหนด PATH ไปยังโฟลเดอร์ bin ของตำแหน่งที่ติดตั้ง Cygwin เช่น ผมติดตั้ง Cygwin ไว้ที่ C:\cygwin ดังนั้นตัวโปรแกรมต่างๆบน Cygwin จะอยู่ที่ C:\cygwin\bin แล้วผมก็จะทำการ set PATH ได้โดย
  1. คลิกขวาที่ Computer เลือก Properties
  2. เลือกที่ Advance system settings
  3. ในแท็ป Advanced ให้กดปุ่ม Environment Variable...
  4. เลือกที่ตัวแปร PATH แล้วกด Edit...
  5. จากนั้นเติม ";C:\cygwin\bin" ต่อท้ายในช่อง Variable Value: (หรือตำแหน่งของ cygwin\bin แล้วแต่ตำแหน่งที่ติดตั้ง)
ทดสอบด้วยการเปิดโปรแกรม cmd (เข้าที่ Run แล้วพิมพ์ cmd) แล้วสั่งคำสั่งบน Linux เช่น ls, ps โปรแกรมก็จะถูกเรียกขึ้นมาทันที

เท่านี้เราก็สามารถใช้โปรแกรมของ Linux บน Windows ได้อย่างสบายใจไม่ว่าจะอยู่แห่งหนใดบนคอมพิวเตอร์
ที่มา:https://remixman.net/cygwin

วันศุกร์ที่ 8 ธันวาคม พ.ศ. 2560

การสร้างและใช้งาน Migration ใน Yii Framework 2

การสร้างและใช้งาน Migration ใน Yii Framework 2


Migration คืออะไร

Migration คือการสร้าง versioning ของการทำงานกับฐานข้อมูล เช่น การสร้างตาราง การเพิ่ม field การลบ field เพื่อให้เห็น version ต่างๆ และทราบที่มาที่ไปได้
การ Migration จึงมีความสำคัญกับการพัฒนาระบบที่ทำงานเป็นทีมหลายๆ คน
รูปแบบของ Migration นั้นถูกนำมาใช้ให้เหมือนกับการ Coding ที่ต้องมีการเก็บ Versioning ของ Code เช่น Git โดยจะเห็นว่าประวัติของ Code นั้นมีที่มาที่ไปอย่างไร มีการแก้ไขตรงไหนบ้าง หรือ เพิ่มตรงไหนบ้าง จึงเป็นที่มาของ Migration นั่นเอง
ไฟล์ Migration นั้นจะมี Method หลักๆ อยู่ 2 Method คือ up() และ down() โดยทั้ง 2 Method นี้ทำหน้าที่ตรงกันข้ามกัน เช่น up() คือการสร้างตาราง down() คือการลบตาราง เป็นต้น

เริ่มใช้งาน Migration

ก่อนอื่นเมื่อติดตั้ง Yii Framework 2 เสร็จเรียบร้อยแล้วให้แก้ไขการเชื่อมต่อฐานข้อมูล จากนั้นเปิด CommandPrompt/Terminal แล้วพิมพ์คำสั่งในการสร้างตาราง migration ดังนี้
yii migrate
ก็จะได้ตาราง migration ในฐานข้อมูลเรียบร้อยแล้ว เพื่อเก็บ version ของการเรียกใช้งาน Migration file ต่างๆ

ที่เก็บไฟล์ Migration

ไฟล์ Migration จะถูกเก็บไว้ใน folder console/migrations

ชนิดฟิวด์แบบต่างๆ

ชนิดของฟิวด์แบบต่างๆ ที่ใช้ในการสร้าง
$this->primaryKey() //PRIMARy และ AUTO_INCREMENT
$this->string(255) //VARCHAR(255) 255 คือความยาว
$this->text() //ชนิด TEXT
$this->integer() //จำนวนเต็ม คือ INT
$this->timestamp() //แบบ TIMESTAMP

การสร้างไฟล์ Migration

สำหรับการสร้างไฟล์ migration นั้นเราจะใช้ commandPrompt/Terminal ในการพิมพ์คำสั่งในการสร้าง

การสร้างตาราง

การสร้างตารางจะใช้คำสั่งในการสร้างดังนี้
yii migrate/create create_table_name
ตามธรรมเนียมของ Yii Framework 2 จะให้มีคำว่า create_ชื่อตาราง เช่น
yii migrate/create create_product
ก็จะได้ไฟล์ลักษณะดังนี้
console/migrations/m160221_055928_create_product.php
จากนั้นเราก็สามารถเขียนคำสั่งใน method up() และ down() ได้แล้ว ทดลองเขียนคำสั่งใน method up()

ที่มา:https://www.programmerthailand.com/tutorial/post/view/36/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AA%E0%B8%A3%E0%B9%89%E0%B8%B2%E0%B8%87%E0%B9%81%E0%B8%A5%E0%B8%B0%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-migration-%E0%B9%83%E0%B8%99-yii-framework-2

การติดตั้ง Yii2

การติดตั้ง Yii2

November 30, 2014
การติดตั้ง Yii 2 นั้นหลักๆ ทำได้ 2 วิธีครับ คือ
  • ติดตั้งโดยใช้ Composer
  • ติดตั้งโดยดาวน์โหลดไฟล์มาติดตั้งเอง จาก http://www.yiiframework.com/download/

ติดตั้ง Composer

เป็นวิธีที่แนะนำ เราสามารถดูรายละเอียด Composer เพิ่มเติมได้ที่นี่ getcomposer.org การติดตั้งสำหรับ linux และ Mac OS X ให้คุณพิมพ์คำสั่ง
curl -s http://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Note: บรรทัดแรกเป็นการดาวน์โหลดไฟล์ติดตั้ง "composer.phar" บรรทัดที่สองเป็นการก๊อบปี้ไฟล์ "composer.phar" ไปไว้ที่ /usr/local/bin เพื่อให้สามารถเรียกใช้งานได้โดยไม่ต้องระบบุ path
ในส่วนของ Windows คุณสามารถดาวน์โหลดไฟล์ไปติดตั้งได้เลย Composer-Setup.exe และสามารถอ่านรายละเอียดการใช้งานเพิ่มเติมได้ที่นี่ Composer Documentation ไม่ว่าจะเป็นการติดตั้งหรือปัญหาการใช้งานต่างๆ
หลังจากติดตั้ง Composer เสร็จให้คุณรันคำสั่งด้านล่างนี้เพื่อทำการอัพเดทตัว Composer: composer self-update ในส่วนของการติดตั้ง Yii มี 2 แบบคือ basic และ advance

แบบ Basic

คุณสามารถติดตั้งแบบ basic โดยใช้คำสั่งนี้:
composer global require "fxp/composer-asset-plugin:1.0.0"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
"basic" บรรทัดสุดท้ายคือชื่อ app
Note:ในตัวอย่างนี้ผมติดตั้งไว้ที่ /Applications/MAMP/htdocs/ ในตัวจำลอง server
หลังจากติดตั้งเสร็จให้ทดสอบเข้าใช้งาน http://localhost/basic/web/index.php

แบบ Advance

คุณสามารถติดตั้งแบบ advance โดยใช้คำสั่งนี้:
composer global require "fxp/composer-asset-plugin:1.0.0"
composer create-project --prefer-dist yiisoft/yii2-app-advanced yii-application
Note:ในตัวอย่างนี้ผมติดตั้งไว้ที่ /Applications/MAMP/htdocs/ ในตัวจำลอง server
หลังจากสร้างเสร็จจะไม่สามารถใช้งานได้เหมือนแบบ basic จะต้องรันคำสั่ง initialize เพื่อให้สามารถใช้งานได้
1.ให้ cd เข้าไปที่พาทของ application ที่เราได้ทำการสร้างไว้ แล้วรันคำสั่งนี้ : php /path/to/yii-application/init
จะพบคำสั่งนี้ ให้เราตอบ 0 เลือกโหมดกำลังพัฒนา ``` Yii Application Initialization Tool v1.0
Which environment do you want the application to be initialized in?
[0] Development [1] Production
Your choice [0-1, or "q" to quit] 0 ``` 2.ให้ทำการสร้างดาต้าเบสว่างๆ แล้วคอนฟิกดาต้าเบสที่ไฟล์ common/config/main-local.php
3.หลังจากนั้นให้รันคำสั่ง php yii migrate เพื่อสร้างตารางและระบบจะถาม ``` Yii Migration Tool (based on Yii v2.0.2)
Creating migration history table "migration"...Done. Total 1 new migration to be applied: m130524_201442_init
Apply the above migration? (yes|no) [no]: ``` ให้เราตอบ yes
4.ทดลองเข้าใช้งานที่
frontend : http://localhost/yii-application/frontend/web/index.php
backend : http://localhost/yii-application/backend/web/index.php

ติดตั้งโดยดาวโหลดไฟล์มาติดตั้งเอง

  1. ดาวน์โหลดไฟล์จาก http://www.yiiframework.com/download/
  2. แตกซิบไฟล์ออกมาแล้วนำไปวางที่ htdocs ของเรา
  3. ทำการแก้ไขไฟล์ config/web.php แล้วมองหาบรรทัดที่มีคำว่า cookieValidationKey ให้เราใส่ค่ารหัสลับเข้าไปอะไรก็ได้ เช่น 'cookieValidationKey' => 'enter your secret key here',
  4. จากนั้นทำการทดสอบเข้าใช้งาน

ปัญหาที่พบบ่อยๆ ในการติดตั้ง

  • ไม่ได้สมัคร account github
  • ถามหา token github
  • php เวอร์ชั่นต่ำกว่า 5.4.0
ที่มา:http://dixonsatit.github.io/2014/11/30/Installation.html

Composer

รู้จัก Composer คืออะไร การติดตั้งบน PHP Composer เช่น XAMPP , Appserv และอื่นๆ

รู้จัก Composer คืออะไร การติดตั้งบน PHP Composer เช่น XAMPP , Appserv และอื่นๆ การพัฒนาโปรแกรม php เรากำลังอยู่ในยุคของการจัดการกับ Package และ Library ต่าง ๆ ที่เป็น Open Source ที่มีอยู่มากมายตามแหล่งต่างๆ ให้มีความเป็นระบบเรียบร้อย มีความปลอดภัยในการดาวน์โหลดและ นำมาใช้ เพราะก่อนหน้านี้เราจะเห็นว่าในกรณีที่จะต้องใช้ Library ต่างๆ นั้น จะต้องใช้วิธีการดาวน์โหลดไฟล์จากแหล่งนั้นมาใช้งาน ซึ่งจะพบกับความเสี่ยงต่างๆ จากการดาวน์โหลด ไม่ว่าจะเป็นความปลอดภัย ไวรัส มัลแวร์ ความน่าเชื่อถือ รวมทั้งไฟล์นั้นใช้งานตรงกับเวอร์ชั่นของ php ที่จะสามารถใช้งานได้หรือไม่ ซึ่งปัญหาเหล่านี้ได้ถูกพัฒนาจนมาถึงปัจจุบัน โดย Composer แนวคิดคือจะรวบรวมและจัดระเบียบ package และ library ต่างๆ ให้มาอยู่ในแหล่งเดียวกัน สามารถติดตั้ง Library ได้จาก Command ซึ่งโปรแกรมจะทำการตรวจสอลและดาวน์โหลด Package นั้นๆ มาใช้งาน




Install Composer for PHP


วิธีการติดตั้ง Composer

Download Composer for Windows


PHP Composer

หลังจากที่ดาน์โหลดได้แล้วให้คลิก Setup คลิกเลือก Next


PHP Composer

เลือก Path ของ php.exe

PHP Composer

ให้ทำการ Browse เลือก Path ของ php.exe

PHP Composer

หลังจากได้ Path ของ php.exe แล้วให้คลิกที่ Next เพื่อไปขั้นตอนถัดไป

PHP Composer

ในขั้นตอนนี้ให้กำหนด Proxy ในกรณีที่เชื่อม Internet ต่อผ่าน Proxy

PHP Composer

คลิกเลือก Next

PHP Composer

โปรแกรมกำลังติดตั้ง

PHP Composer

เลือก Next

PHP Composer

ติดตั้งเรียบร้อยแล้ว

ทดสอบการทำงานของ Composer

ให้รัน Command Promt

PHP Composer

พิมพ์ composer ถ้าขึ้นหน้าจอดังรูป แสดงว่า Composer พร้อมที่จะทำงานแล้ว 


ที่มา:http://www.thaicreate.com/community/php-composer.html

Yii Framework คืออะไร

Yii Framework คืออะไร



Yii Framework คือ PHP Framework และ PHP Frameork คือ โปรแกรมที่ถูกเขียนขึ้นโดยใช้ภาษา PHP ที่เขียนขึ้นบนการออกแบบซอร์ฟแวร์ในลักษณะ Model, View และ Controller (MVC) ซึ่งเขียนขึ้นในรูปแบบของ Object Oriented Programming (OOP)

ความหมายและที่มา

Yii หรือ ยี่ ย่อมาจาก Yes It Is เป็นเหมือนกับคำตอบหรือคำอุทานก็ว่าได้ที่ว่า มันเร็วจริงหรือเปล่า? มันมีความปลอดภัยไหม? มันมีความเป็นมืออาชีพหรือเปล่า? มันควรนำมาสร้าง Project ต่อไปหรือเปล่า? ใช่แล้วมันใช่จริงๆ (Yes It Is)
สำหรับ Yii นั้นเป็น Open Source ซึ่งเป็น PHP Framework สำหรับสร้าง Web Application ที่ถูกเขียนขึ้นให้รองรับ PHP5 ช่วยให้สร้าง Web Application ได้อย่างรวดเร็ว
Yii นั้นเกิดขึ้นจากคุณ Qiang Xue เป็นผู้ริเริ่ม Yii เมื่อ 1 มกราคม 2008 ซึ่งก่อนหน้าเขาเคยพัฒนา Prado Framework มาก่อนซึ่งก็มีประสบการณ์ต่างๆ มากกมาย และเห็นจุดอ่อนจุดแข็งของ Framework และได้นำประสบการณ์เหล่านั้นมาพัฒนาเป็น Yii Framework ในเวอร์ชั่นแรก
หลังจากนั้น Yii Framework ได้รับความนิยมเป็นอย่างมากในวงกว้างมากขึ้นเรื่อยๆ จนถึงปัจจุบัน ได้ออก Yii Framework ใน เวอร์ชั่น 2 เรียบร้อยแล้วเมื่อวันที่ 12 ตุลาคม 2557 ที่ผ่านมา

ความต้องการระบบของ Yii2

ความต้องการระบบของ Yii2 นั้น จะใช้ PHP 5.4 ขึ้นไปซึ่งรองรับการเขียนโปรแกรม OOP และมีการปรับปรุงให้สามารถประมวลผลได้ดีมากขึ้น และการเขียนโปรแกรมที่สั้นลง เช่น array() ก็เปลี่ยนเป็น [] เป็นต้น โดยการตรวจสอบความต้องการนั้นสามารถเรียก URL ไปที่ไฟล์ requirement.php เพื่อตรวจสอบความต้องการของระบบสำหรับ Yii2 โดยจะมีหน้า Web ดังนี้


สำหรับ APC Extension นั้นยังไม่มี Version รองรับ PHP5.5.12 จึงยังไม่สามารถติดตั้งได้ครบหมดซึ่งผู้เขียนได้ใช้ WAMP Server 2.5 64bit เป็น PHP5.5.12

ทำไมต้องเป็น Yii Framework 2


Fast
เนื่องจาก Yii2 มีตัวช่วยในการทำงานหลายอย่างเช่น Gii Generator สำหรับการ Generate Code ต่างๆ เช่น Generate Model, CRUD, Controller ช่วยให้เราประหยัดเวลาในการพัฒนาได้มาก มีระบบ PJAX (Pushstate + AJAX) เป็น jQuery plugin อย่างหนึ่งที่ช่วยการทำงานของ Web Application ให้มีความรวดเร็วมากยิ่งขึ้น และมีระบบ Cache ซึ่งจะช่วยให้การประมวลผลเร็วยิ่งขึ้นอีกด้วย
Security
ความปลอดภัยของ Yii2 มาพร้อมกับตัวช่วยที่หลากหลายเช่นการป้องกัน SQL Injection การป้องกัน XSS (Cross site scripting) ด้วย Html::encode และ HtmlPurifier::process() และการป้องกัน CSRF (Crosssite request forgery) ด้วย form csrf
Professional
มีความเป็น Professional เนื่องจาก Yii2 ถูกออกแบบมาโดยใช้สถาปัตยกรรมการออกแบบ MVC หรือ Model View และ Controller ทำให้การแยกส่วนการประมวลผลอย่างชัดเจน และนอกจากนั้น Yii2 ถูกเขียนขึ้นโดยใช้หลักการ Object Oriented Programming (OOP) ทำให้นักพัฒนาได้เรียนรู้การพัฒนา Web Application ในรูปแบบที่มีความนิยมอย่างกว้างขวางทั่วโลก

ที่มา:https://www.programmerthailand.com/tutorial/post/view/2/yii-framework-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3

วันพุธที่ 27 กันยายน พ.ศ. 2560

6 เทรนด์นวัตกรรมขับเคลื่อน FinTech พร้อมกรณีศึกษา

6 เทรนด์นวัตกรรมขับเคลื่อน FinTech พร้อมกรณีศึกษา

6 biggest trends in FinTech
การขับเคลื่อน FinTech ด้วยเทคโนโลยี คงไม่ใช่การสร้างอะไรล้ำๆ แต่คือทำอย่างไรเพื่อให้ประสบการณ์ใช้งานลูกค้าดีที่สุด โดยเฉพาะคนในยุคนี้ที่มีทางเลือกมาก ถ้าบริการไหนไม่สามารถเข้าไปกลมกลืนกับพฤติกรรมในชีวิตได้ แป๊ปเดียวก็เลิกใช้เลย
พฤติกรรมผู้บริโภคที่เปลี่ยนแปลงไปเกิดขึ้นรอบตัว ไม่ว่าจะเป็นการเรียก Taxi ที่เจอแอปฯ เข้ามาช่วยการเรียกสะดวกขึ้น, การจองที่พักผ่าน Airbnb, การซื้อของใช้ทั่วไปที่ปกติไปซื้อตามห้าง แม้หลายๆ บริการยังไม่ได้เข้ามาแทนที่ แต่ส่วนใหญ่คือการมุ่งเน้นในการแก้ปัญหา และทำให้ประสบการณ์ใช้งานดีขึ้น ในฟากของ FinTech หลาย segment ก็เริ่มมีการเปลี่ยนแปลง มาดูสรุปนวัตกรรม 6 อย่างที่กำลังเข้ามาเปลี่ยนแปลงโลก FinTech กัน

1.Chat applications

ใช่แล้ว Chat app ที่กลุ่มนักการตลาดหลังๆ กำลังให้ความสนใจนี่แหล่ะ ปัจจุบันการสื่อสารรูปแบบนี้กำลังได้รับความสนใจในโลกของธนาคารเป็นอย่างมาก Facebook เปิดตัว Messenger Platform ที่ช่วยในการโต้ตอบเชิงลึก และเพิ่มความสะดวกสบายให้กับลูกค้ามากขึ้น TD Bank เป็นหนึ่งในธนาคารแรกที่นำ Chat application มาใช้ในเชิง customer service
TD
นอกจากนี้ยังมีบริษัทที่พัฒนาด้านนี้เพื่อตอบโจทย์สายธนาคารโดยเฉพาะอย่าง Active.ai
StockRadars2StockRadars

2. Biometric authentication

retinalscans
เรื่องของความปลอดภัยและความสะดวก/ง่ายมักอยู่ตรงข้ามกันเสมอ หนึ่งในการ Authentication ที่ถูกพูดถึงในเวลานี้คือ Biometric Authentication ไม่ว่าจะเป็นการสแกนเรตินา และลายนิ้วมือ แต่ก็ยังมีหลายคนกังวลเรื่องความเสี่ยงอยู่มาก
และ Biometric กำลังเข้ามายังโลก FinTech เช่นกัน โดยกว่า 50 สถาบันการเงินทั่วโลกกำลังเริ่มอิมพลีเม้นท์ Biometric Authentication ที่ Contact Centers ยิ่งถ้าธุรกิจสายการเงินเข้ามาทดสอบ เชื่อว่าจะเป็นตัวเร่งด้านความปลอยภัยจะถูกปรับปรุงแก้ไขให้ดีขึ้น

3.Voice recognition

เราเริ่มคุ้นเคยกับการสั่งงานด้วยเสียงผ่านสมาร์ทโฟนในการค้นหาข้อมูล เรียกชื่อคนเพื่อโทรออก หรือส่งข้อความ ในเดือนมีนาคม ที่ผ่านมา Capital One เป็นสถาบันการเงินรายแรกที่เปิดให้ลูกค้าใช้บริการได้ผ่านทางเสียง บริการที่สามารถทำได้คือ ตรวจสอบยอด และทำการชำระเงิน โดยผ่าน Alexa-enabled device ซึ่งเชื่อว่าในอนาคตจะทำได้มากกว่านี้
Capital-One-392x600
จากบทความ Mark Ryan “Will Voice Recognition Kill Online Banking?” กล่าวว่าในช่วง 5 ปีที่ผ่านมา กลุ่มผู้ให้บริการทั้งหลายกำลังมุ่งพัฒนาเทคโนโลยีตัวนี้ให้ดียิ่งขึ้นอย่างเห็นได้ชัด ไม่ว่าจะเป็น Google Now, Amazon Alexa Channel, Microsoft Cortana, Facebook’s M และ Nuance Dragon

4. Internet of Things

ในโลกของธุรกิจการเงินการธนาคาร IoT ก็เป็นหนึ่งในเทรนด์ที่กำลังมา หลายองค์กรมองว่าจะนำมาใช้ให้เกิดประสิทธิภาพสูงสุดได้อย่างไร รูปแบบกรณีศึกษาที่นำมาใช้คือ บริการ Mobile Banking บนอุปกรณ์กลุ่ม Wearable Device ในขณะที่ Fitbit เข้าซื้อกิจการ Startup ด้าน Mobile payment โดย Fitbit เล็งว่าจะเอามาเชื่อมต่อกับอุปกรณ์ของตัวเอง เพื่อใช้ในการชำระเงินที่ POS ต่างๆ ได้สะดวกมากขึ้น นอกจากนี้ยังมองไปถึงการแจ้งเตือนต่างๆ จากสถาบันการเงิน และในอนาคตมองไปถึงการนำเรื่อง Location มาใช้ด้วย
Fitbit
ภาพจาก palco23
ถ้าก้าวไปอีกขึ้นคือการที่ตู้เย็นสามารถสั่งสินค้าและทำการจ่ายเงินให้กับร้านค้าได้ เมื่อวัตถุดิบต่างๆ ในตู้เย็นเริ่มเหลือน้อย หรือรถยนต์ของคุณทำการจ่ายเงินให้ขณะที่เติมน้ำมันเลย

5. Blockchain

หัวข้อนี้คงไม่ต้องพูดถึงกันเยอะ เพราะมีเกริ่นไว้ในหลายบทความ Blockchain ถือเป็นรากฐานสำคัญที่ทำให้การทำธุรกรรมต่างๆ สามารถเชื่อถือ ตรวจสอบ และมีความโปร่งใส โดย Chris Skinner ได้อธิบายถึง 5 แกนหลักในการนำ Blockchain มาใช้ในสายธุรกิจการเงิน ประกอบด้วย
  • Smart Contracts
  • Smart Assets
  • Clearing and Settlement
  • Payments
  • Digital Identity
Blockchain จะนำธุรกรรมต่างๆ ขึ้นไปอยู่บนดิจิทัลและกำจัดงานที่เดิมต้องใช้กระดาษ เพราะเมื่อ Record ถูกบันทึกไว้บน Shared ledger แล้ว ข้อมูลเหล่านั้นจะถูกบันทึกไว้หมดทั้งวันเวลา ต้นทาง ปลายทาง ที่ไม่สามารถปฏิเสธได้ เป็นการลดงานคนกลางลง ในอนาคตลองจินตนาการดูว่า การซื้อรถ บ้าน และคอนโด การทำธุรกรรมจะถูกบันทึกในรูปแบบอิเล็กทรอนิกส์แทนหมด

6. Artificial intelligence and cognitive computing

คอมพิวเตอร์ที่พยายามเรียนรู้และเข้าใจสิ่งที่มนุษย์ป้อนกำลังมาแรงในปีนี้ IBM Watson เป็นหนึ่งในผู้ให้บริการที่เด่นด้าน Artificial Intelligence (AI) โดยทำความเข้าใจภาษามนุษย์ และสามารถปรับปรุงอัลกอริทึมเพื่อรองรับการมาของ Big Data ได้ โดยมุ่งไปที่เป้าหมายหลักคือ การช่วยให้มนุษย์ตัดสินใจได้ไวขึ้นและแม่นยำ ถูกต้องมากขึ้น
บ้านเรามีโครงการกระตุ้นการนำเทคโนโลยีของ IBM Watson มาใช้โดยจัดขึ้นในรูปแบบของการแข่งขัน
อีกกรณีศึกษา คือการนำหุ่นยนต์มาใช้ในสาขาที่ญี่ปุ่น โดยธนาคาร Mizuho และ SoftBank ใช้ชื่อว่า Pepper สามารถสื่อสารได้หลายภาษา, มีเซนเซอร์ และระบบ AI ที่จะเรียนรู้และพัฒนาทักษะไปพร้อมๆ กัน
นวัตกรรมและเครื่องมือต่างๆ เป็นเรื่องที่ต้องตามให้ทัน แต่สุดท้ายแล้วต้องกลับไปตอบโจทย์ให้ได้ว่า แก้ปัญหา มอบคุณค่าอะไรให้ลูกค้า ปรับปรุงประสบการณ์ของลูกค้าให้ดีขึ้นได้อย่างไร การค้นหา Insight โดยนำเดต้าทั้ง Unstructured Data และ Structured Data มาร่วมกันวิเคราะห์ ทำการแบ่งกลุ่มลูกค้าตามพฤติกรรม เพื่อคาดการณ์และนำเสนอโซลูชั่นที่ Customize แต่ละกลุ่มและบุคคลให้ได้มากที่สุด
ที่มา: https://techsauce.co/fintech/6-innovation-trends-for-fintech-world/

Laravel

  Laravel Framework คือ PHP Framework ตัวหนึ่งที่ถูกออกแบบมาเพื่อพัฒนาเว็บแอพพลิเคชั่นต่างๆ ในรูปแบบ MVC (Model Views Controller) ซึ่งมีการแ...