Month: November 2019

  • djsurvey – Google Forms Alternative #01

    ต่อจาก ddready – แพ็ครวม django + bootstrap4 + crispy form + docker พร้อมใช้งาน ในบทความนี้ ผมได้พยายามทำให้ใช้งาน Django ได้ง่ายขึ้น จนได้ แบบสำรวจอย่างง่าย พร้อมใช้งาน ใน 3 ขั้นตอน

    Prerequesite

    ติดตั้ง Python 3.6+ หรือ ใช้ Python Container แล้ว

    Repository

    https://github.com/nagarindkx/djsurvey

    ง่าย ๆ 3 ขั้นตอน

    1. Clone Repository

    ใช้คำสั่ง git

    git clone https://github.com/nagarindkx/djsurvey.git

    หรือ Download ไปก็ได้

    https://github.com/nagarindkx/djsurvey/archive/master.zip

    2. กำหนดข้อคำถามในแบบสำรวจ

    แก้ไขไฟล์

    /code/main/survey/models.py

    ตัวอย่างเช่น แบบสำรวจ ประกอบด้วย

    1. ชื่อ
    2. อีเมล
    3. เพศ
    4. วันเดือนปีเกิด
    5. ผลไม้ที่ชอบ
    6. ข้อเสนอแนะ

    ก็สร้าง Model ตามนี้ ( แรก ๆ อาจจะรู้สึกน่ากลัว แต่พอเข้าใจแล้ว มันง่ายมาก)

    from django.db import models
    class Survey(models.Model):
        fullname = models.CharField(
            verbose_name="ชื่อ",
            max_length=255,  blank=False)
        email = models.EmailField(
            verbose_name="อีเมล",
            blank=False)
        gender = models.CharField(
            verbose_name="เพศ",
            max_length=1,    blank=False,
            choices=[('F', 'หญิง'), ('M', 'ชาย')],
            default='F',
        )
        birthdate = models.DateField(
            verbose_name="วันเดือนปีเกิด",
            auto_now=False,  blank=False)
        fruit = models.CharField(
            verbose_name="ผลไม้ที่ท่านชอบ",
            max_length=1,    blank=False,
            choices=[('a', 'แอปเปิ้ล'), ('b', 'มะละกอ'),
                     ('c', 'กล้วย'), ('d', 'ส้ม')],
            default='c',
        )
        comment = models.TextField(
            verbose_name="ข้อเสนอแนะ",
            blank=True)

    แนะนำให้ใช้ Visual Studio Code จะทำงานได้ง่ายมาก

    3. Migrate แล้ว Run

    ใช้คำสั่งต่อไปนี้

    python manage.py migrate
    python manage.py runserver 0:8080

    ชมผลงาน

    http://localhost:8080/survey/

    หรือ ตกแต่งอีกนิดหน่อย ก็จะได้แบบนี้

    http://localhost:8080/advancedsurvey/

    สำหรับผู้ที่ใช้ Docker สามารถ ทำตามขั้นตอนใน แนวทางการพัฒนา Web Application ด้วย django จาก local docker สู่ Google Cloud Run เพื่อนำขึ้น Google Cloud Run ได้เลย (แต่ต้องเชื่อมกับ Database จริง ๆ ก่อนนะ – โปรดติดตามตอนต่อไป)

    คุณกำลังเจอปัญหาเหล่านี้อยู่ใช่ไม๊ ?

    • Google Forms ก็ง่ายดีแหล่ะ แต่ จะทำอย่างไรให้เก็บข้อมูลไว้ในฐานข้อมูลได้ ?
    • อยากให้ ผู้ใช้งาน Upload เอกสารเข้ามา / แก้ไขข้อมูล ซึ่ง Google Forms ก็ทำได้ แต่ต้อง Login ด้วย Google Account ก่อน จึงจะทำได้
    • Google Forms ก็ทำ Conditions ได้แหล่ะ (Go to section base on answer) แต่ ถ้าจะให้มีการคำนวนที่ซับซ้อนกว่านั้น ก่อนจะเลือกคำถามถัดไป จะทำอย่างไร ?

    ปัญหาเหล่านี้จะหมดไป เมื่อคุณใช้ Django !

    • ติดตั้งได้ บน Web Server ของคุณ!
    • Login ด้วย Facebook/Twitter/Google/Line หรือ Email หรือ จะเป็น Single Sign-On ก็ยังได้
    • ทุกอย่างสามารถ Customize ได้ ทำแบบสอบถามที่ซับซ้อนได้

    ไว้เจอกันในตอนต่อ ๆ ไปครับ

  • ddready – แพ็ครวม django + bootstrap4 + crispy form + docker พร้อมใช้งาน

    สำหรับใครที่อยากจะลองพัฒนา Web Application ด้วย django web framework ผมได้รวบรวมเป็นชุดเริ่มต้น ซึ่งจะสามารถสร้าง Responsive Web และ มีแบบฟอร์มที่สวยงามด้วย crispy form มาเรียบร้อย ใช้งานได้ทั้ง แบบ Python บนเครื่อง และ แบบ Docker ลองทำตามดูได้ครับ

    ต้นแบบ มี Bootstrap 4 พร้อมใช้งาน
    มี Login Form มาให้เลย
    เข้ามาในส่วนของ Profile และ Logout ได้

    Repository

    สามารถเปิด URL ต่อไปนี้ เพื่อไป Download หรือ จะใช้ git clone ก็ได้

    https://github.com/nagarindkx/ddready.git

    https://gitlab.psu.ac.th/kanakorn.h/ddready.git

    จากนั้น ให้เปิด cmd ไปยังตำแหน่งที่ clone ลงมา

    สำหรับผู้ที่ติดตั้ง python อยู่แล้ว

    แล้วใช้คำสั่งต่อไปนี้

    pip install -r requirements.txt
    cd code
    cd main
    waitress-serve --listen *:8080 main.wsgi:application

    สำหรับผู้ที่จะใช้ Docker

    บน Windows ใช้คำสั่งต่อไปนี้

    set PROJECTNAME="projectname"
    set GCP-PROJECT-ID="gcp-project-id"
    set SERVICE="service"
    docker build --rm -f "Dockerfile" -t %PROJECTNAME%:dev .
    docker run -d -v %CD%\code:/code -p 8080:8080 --name %PROJECTNAME% %PROJECTNAME%:dev
    docker exec -it %PROJECTNAME% /bin/sh -c "[ -e /bin/bash ] && /bin/bash || /bin/sh"

    ทดสอบใช้งาน

    http://localhost:8080

    ในตอนต่อไป จะแนะนำวิธีการสร้าง แบบสอบถาม ทดแทนการใช้ Google Forms ครับ

  • [Share and Tell] การจัดประชุมแบบ E-Meeting ด้วยโปรแกรม Microsoft Teams

    1.ชื่อโครงงาน

    การจัดประชุมแบบ E-Meeting ด้วยโปรแกรม Microsoft Teams

    2. เป้าหมาย

    • เพื่อประยุกต์การใช้งานโปรแกรม Microsoft Teams มาช่วยบริหารจัดการประชุมแบบ E-Meeting เพื่อลดและทดแทนการใช้กระดาษ ทำให้องค์กรประหยัดค่าใช้จ่ายในการทำสำเนาเอกสารประกอบประชุม
    • เพื่อผลักดันและส่งเสริมการใช้งานโปรแกรม Microsoft Teams ในองค์กร ความตั้งใจสูงสุดคือเป็นองค์กรต้นแบบในการใช้งานโปรแกรม Microsoft Teams ในการติดต่อสื่อสารและการทำงานร่วมกันเป็นทีม

    3. เครื่องมือ

    • เครื่องคอมพิวเตอร์ (PC/Laptop) สำหรับงานเลขานุการ
    • สมาร์ทโฟนหรือแท็บเล็ตพร้อมติดตั้งแอป Microsoft Teams สำหรับผู้เข้าร่วมประชุม (*เพื่อความเหมาะสมในการจัดประชุม ผู้เข้าร่วมประชุมควรใช้โน๊ตบุ๊ค)

    4.การดำเนินการ

    • สืบเนื่องจากเป็นนโยบายจากฝ่ายบริหารมอบหมายให้งานเทคโนโลยีสารเทศจัดหาระบบ E-Meeting มาใช้ในการจัดประชุมต่างๆ ภายในคณะ
    • ทางเลือก 1.พัฒนาเอง หรือ 2.แบบสำเร็จรูป เลือกข้อ 2. เหตุผลเนื่องจากผู้ใช้อยากได้ระบบใช้งานเร็วๆ และคณะไม่กำลังคนพัฒนา
    • สำรวจเครื่องมือที่เหมาะสมเริ่มส่องดูว่าคณะอื่นๆ ใช้โปรแกรมอะไรกันบ้าง ส่วนใหญ่ใช้ Sci E-meeting
    • มาจบลงที่โปรแกรม Microsoft Teams ทดลองมาดัดแปลงและประยุกต์การใช้งานพบว่าสามารถใช้งานได้ดี เหตุผลคือไม่ต้องลงทุนด้านอินฟาฯและติดตั้งระบบเอง มีความปลอดภัย รองรับการใช้งานสมาร์ทโฟนหรือแท็บเล็ต สามารถใช้งานด้วยบัญชี Office 365 ของมหาวิทยาลัยได้ฟรี
    • วางแผนการถ่ายทอด การจัดทำคู่มือและวิดีโอสอนการใช้งาน
    • สอน workshop ให้งานเลขานุการก่อน เมื่อใช้งานคล่องแล้วโปรโมตการใช้งานให้บุคลากรทุกคน
    • ค่อยๆ ปรับพฤติกรรมผู้เข้าร่วมประชุม ทดลองการประชุมโดยเปิดเอกสารจากแอป Microsoft Teams ผ่านสมาร์ทโฟนหรือแท็บเล็ต และแบบกระดาษ (ผู้เข้าร่วมประชุมต้อง print มาเอง)
    • ประเมินผลเพื่อปรับปรุงและแก้ไขต่อไป

    5.เพิ่มเติม

    ต่อยอดการใช้งานฟีเจอร์และฟังก์ชั่นการทำงานอื่นๆ ในโปรแกรม Microsoft Teams เช่น การแจ้งเตือนการประชุมทางอีเมล์ด้วยปฎิิทิน การแชต การโทร และวิดีโอคอลทดแทนการใช้โทรศัทพ์แบบตั้งโต๊ะในอนาคต

    สไลด์แนะนำการใช้งาน : https://drive.google.com/file/d/1YDC1VaPlIMV0WAD1xYMhCrT19VmklyF4/view?usp=sharing

    สำหรับเว็บไซต์คู่มือการใช้งาน http://www.ttmed.psu.ac.th/meeting และขอขอบคุณข้อมูลการใช้งานจากพี่วิบูลย์ที่ได้จัดทำเว็บ Microsoft Teams https://teams.in.psu.ac.th/ มา ณ ที่นี้ด้วยครับ

  • [Share and Tell] การพัฒนา Web Application ด้วย django ด้วย Docker และการนำไปใช้งานบน Google Cloud Run

    1.ชื่องานที่ทำ

    การพัฒนา Web Application ด้วย django ด้วย Docker และการนำไปใช้งานบน Google Cloud Run

    2.เป้าหมายของงานที่ทำ

    • เพื่อประยุกต์ใช้งาน Docker ในการพัฒนางาน ทำให้สามารถลดความไม่เข้ากันของรุ่นของซอฟต์แวร์ หรือ ไลบรารี่ในเครื่องพัฒนาได้
    • เพื่อผลักดันการทำงานแบบ Containerize ในองค์กร เป็นต้นแบบการลดความซ้ำซ้อนของการสร้างเซิร์ฟเวอร์แบบ Virtual Machine ทำให้เกิดการใช้งานทรัพยากรอยู่จำกัดให้มีประสิทธิภาพมากขึ้น
    • เพื่อเป็นต้นแบบการทำงานแบบ Serverless ด้วย Google Cloud Run
    • เพื่อเป็นต้นแบบการใช้งาน LINE Front-End Framework ในการทำ Chatbot

    3.สภาพแวดล้อมที่เกี่ยวกับงานที่ทำ

    • Operating System: Windows 10
    • Editor: Visual Studio Code
    • Environment: Docker Oriented
    • Programming Language: python
    • Web Framework: django + crispy form + bootstrap + jQuery
    • Mobile Development: LINE with LIFF (และถ้าเตรียมทัน จะแนะนำการพัฒนา Mobile Application ด้วย Google Flutter)
    • Database: postgresql, Google BigQuery
    • Machine Learning: Google Vision API

    4.บรรยายสรุปสั้น ๆ ว่า ต้องใช้อะไรบ้างและทำอย่างไร (ไม่ต้องลงขั้นตอนละเอียด)

    • ติดตั้ง Microsoft Visual Studio Code (VS Code) และ Docker Extension
    • ใช้ docker เพื่อ pull image ของ Environment ที่ต้องการมา สร้างเป็น Container แล้ว พัฒนาลงไปในนั้น โดยใช้วิธี Bind mount volume เข้าไป แล้วใช้ VS Code เขียน และทำงานผ่าน Attach Shell
    • ติดตั้ง Python Package ที่เกี่ยวข้อง ได้แก่ django + crispy form + bootstrap + jQuery
    • พัฒนา Web Application ด้วย django ตั้งแต่การสร้าง Data Model, สร้างแบบฟอร์ม รวมถึงการสร้าง RESTFul API และ การส่งข้อมูลไปให้ Google Vision API ทำงาน แล้วส่งผลกลับมา
    • พัฒนา LINE Front-End Framework เพื่อใช้เป็น User Interface แบบ Chatbot
    • (ถ้าเตรียมทัน) จะสาธิตการพัฒนา Mobile Application ด้วย Google Flutter

    5.อื่น ๆ อยากบอกอะไรเพิ่มเติม เขียนเพิ่มได้

    Man – a being in search of meaning.

    Plato, 429 BC
  • ครบรอบ 7 ปี Web Blog sysadmin.psu.ac.th จัดกิจกรรม CoP PSU IT

    กิจกรรมที่ 1
    ในวาระเข้าสู่เดือนพฤศจิกายน ครบรอบ 7 ปี Web Blog sysadmin.psu.ac.th ผมจัดกิจกรรมเล่าเรื่อง ผมเพิ่ม category ชื่อ “Share and Tell” ขึ้นมา โดยมีวัตถุประสงค์ให้พวกเรามาเล่าเรื่องเกี่ยวกับงานที่ทำ ทั้งในหน้าที่ ขอช่วย และ งานอดิเรก อย่างใดก็ได้ เป็นสิ่งที่ “คิดว่าจะทำ” “กำลังทำอยู่” หรือ “ทำเสร็จแล้วและใช้งานอยู่” ก็ได้ และมีความคิดอยากมานั่งคุยแลกเปลี่ยนความคิดกัน

    เขียน Blog จะได้รับค่าตอบแทนมูลค่า 300 บาท/คน/เรื่อง สำหรับผู้ที่ส่งเรื่องเข้ามา 20 คนแรกเท่านั้น ขยายเวลารับเรื่องไปจนสิ้นสุดวันที่ 31 ธันวาคม 2562

    สำหรับงานที่เขียนในหัวข้อ “Share and Tell” เดือนพฤศจิกายนและธันวาคม จะได้นำไปจัดกิจกรรม “CoP PSU IT Share and Tell ครั้งที่ 1” ใน จัดงานในวันที่ 22 มกราคม 2563

    ข้อกำหนดสิ่งที่เขียน (หรือจะเรียกว่า แนวทางเขียนให้เป็น pattern เดียวกัน 555)

    ตั้งชื่อ Blog ด้วยชื่องาน และ เขียนไว้ในเว็บไซต์นี้
    1.ชื่องาน (โครงงาน)
    เช่น โปรแกรม micro:bit ทำรถบังคับ
    เช่น พัฒนาโปรแกรม … สำหรับ ….
    2.เป้าหมายของงานที่ทำ
    เช่น จะได้เป็นอะไรออกมา ใช้ทำอะไร
    3.สภาพแวดล้อมที่เกี่ยวกับงาน (โครงงาน)
    เช่น ต้องมีอุปกรณ์ใดบ้าง ใช้ซอฟต์แวร์ใดบ้าง ทำงานบน linux หรือ Windows ทำงานในเครื่อง server เดียว หรือ บน Cloud
    4.บรรยายสรุปสั้น ๆ ว่า ต้องใช้อะไรบ้างและทำอย่างไร (ไม่ต้องลงขั้นตอนละเอียด)
    5.อื่น ๆ อยากบอกอะไรเพิ่มเติม เขียนเพิ่มได้

    กิจกรรมที่ 2 ในทุกเดือนจะมี Lucky Draw จับรางวัลมูลค่า 500 บาท 1 รางวัล สำหรับงานเขียนในหัวข้อ category ต่าง ๆ ตามปรกติ

    สำหรับวัตถุประสงค์ของการจัดกิจกรรมในปีนี้ เพื่อให้พวกเราฝึกฝนการแลกเปลี่ยนความคิด ฝึกฝนการเขียน และ สนุกไปกับการจัดกิจกรรม CoP PSU IT ตลอดทั้งปีและต่อ ๆ ไปครับ

    ขอบคุณครับ
    วิบูลย์