Month: October 2018

  • How to install Office Professional Plus 2019 in PSU

    • สามารถ download ได้จาก https://licensing.psu.ac.th
    Office Professional Plus 2019
    • ล็อคอินเข้าระบบให้เรียบร้อย
    • เมื่อเปิดหน้าของ Office Professional Plus 2019 เลื่อนลงมาล่างสุดจะมีให้ Download อยู่ 2 ส่วน
    Download
    • โดย Office pro plus 2019 setup คือส่วนที่จำเป็นต้องโหลด และสามารถเลือกโหลด Configuration Setup ได้ตามภาษาและสถาปัตยกรรมที่ต้องการ
    • เมื่อโหลดเสร็จแล้ว ติดตั้งโดยการเปิด cmd เรียกใช้ cmd ด้วยการกด windows+R
    • การติดตั้ง Office Professional Plus 2019 จะเป็นการติดตั้งผ่านอินเตอร์เน็ตเท่านั้น
    Run cmd
    cmd
    • พิมพ์ cd ไปยังโฟลเดอร์ที่ดาวน์โหลดทั้งสองไฟล์ไว้ (ในตัวอย่างโหลดไฟล์ไว้ที่ Desktop)
    Download location
    • พิมพ์คำสั่งดังต่อไปนี้ โดยเลือกตามรุ่นและสถาปัตยกรรมที่เลือก
    1. o2019proplussetup.exe /configure o2019proplus32en.xml
    2. o2019proplussetup.exe /configure o2019proplus32th.xml
    3. o2019proplussetup.exe /configure o2019proplus64en.xml
    4. o2019proplussetup.exe /configure o2019proplus64th.xml
    Setup command
    • จะมีหน้า User control ให้ตอบ Yes แล้วจะได้หน้าต่างติดตั้งขึ้นมา
    Installing
    • รอจนเสร็จ
    installation is finished!
    Finish
    • เปิด Microsoft word สร้างเอกสารใหม่
    Blank document
    • คลิกเมนู File แล้วเลือก account
    Account
    • มองไปด้านขวาในส่วนของ Product Information หากยังไม่มีข้อความว่า Product Activated ให้คลิก Change Product key
    Product Information
    • ให้นำคีย์จากเว็บ https://licensing.psu.ac.th มาใส่แล้วกด Activate Office
    • ต้องเชื่อมต่ออินเตอร์เน็ตให้เรียบร้อยก่อนทำขั้นตอนนี้
    Activate Office
    • สำหรับผู้ใช้ทั่วไปจบเพียงเท่านี้ ขอให้สนุก
    • สำหรับ Power Users และคนที่ต้องการใช้ Office ภาษาอื่นๆ มากกว่าภาษาไทย และ ภาษาอังกฤษ
    • หากเปิดดูในแฟ้ม o2019proplus64en.xml จะมีส่วนที่แก้ไขได้
    <Configuration>
      <Add SourcePath="https://bahamut.psu.ac.th/office2019-64" OfficeClientEdition="64"
     Channel="PerpetualVL2019">
          <Product ID="ProPlus2019Volume" PIDKEY="NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP">
             <Language ID="en-us" />
          </Product>
          <Product ID="ProofingTools">
            <Language ID="th-th" />
          </Product>
      </Add>
      <Property Name="AUTOACTIVATE" Value="1" />
      <Display Level="Full" AcceptEULA="TRUE" />  
      <Logging Level="Standard" Path="%temp%" /> 
    </Configuration>
    </code>
    • ได้แก่ SourcePath และ Language ID
    • โดยค่าที่เป็นไปได้ของ SourcePath คือ โฟลเดอร์ปลายทางที่จะได้เป็นที่เก็บตัวติดตั้ง Office Professional Plus 2019 เช่น d:\download ซึ่งแปลว่าโหลดตัวติดตั้งมาเก็บไว้ที่ d:\download
    • และค่าที่เป็นไปได้ของ Language ID ได้แก่ รหัสภาษาที่ไมโครซอฟท์กำหนดโดยสามารถดูได้ที่ https://docs.microsoft.com/en-us/DeployOffice/office2016/language-identifiers-and-optionstate-id-values-in-office-2016
    • ตัวอย่างไฟล์ที่แก้เสร็จแล้ว
    <Configuration>
      <Add SourcePath="d:\download" OfficeClientEdition="64" 
    Channel="PerpetualVL2019">
          <Product ID="ProPlus2019Volume" PIDKEY="NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP">
             <Language ID="ja-jp" />
          </Product>
          <Product ID="ProofingTools">
            <Language ID="ja-jp" />
          </Product>
      </Add>
      <Property Name="AUTOACTIVATE" Value="1" />
      <Display Level="Full" AcceptEULA="TRUE" />  
      <Logging Level="Standard" Path="%temp%" /> 
    </Configuration>
    </code>
    • วิธีใช้งานให้พิมพ์คำสั่งต่อไปนี้ใน cmd
    o2019proplussetup.exe /download o2019proplus64en.xml
    download
    • จะค้างอยู่จนกว่าจะ download เสร็จ
    downloading
    • เมื่อ download เสร็จแล้วสามารถพิมพ์คำสั่งต่อไปนี้ใน cmd เช่นเดิม เพื่อเริ่มกระบวนการติดตั้ง แบบที่กล่าวมาแล้ว
    o2019proplussetup.exe /configure o2019proplus64en.xml
    • จบขอให้สนุกครับ
  • การนำเสนอรูปภาพให้น่าสนใจใน Power Point ด้วย Slide master

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

    การสร้าง Logo ให้กับทุกหน้าใน slide

    ปัญหา : ถ้าเราต้องมาจัดวางโลโก้อยู่เองทีละหน้าก็ต้องใช้เวลาในการจัดตำแหน่ง ถึงแม้จะ Copy ได้ก็เถอะ Slide master ช่วยได้ค่ะ

    1.ไปที่แท็บเมนู View –> Slide Master คลิกขวาที่แท็บด้านซ้ายเลือก Insert Layout

    2.ไปที่แท็บเมนู Insert –> Picture เลือกรูปที่ต้องการ

    3.จากนั้นเลื่อนกล่อง Picture มาบริเวณที่เราต้องการแสดงโลโก้ ในที่นี้เลื่อนมาบริเวณมุมขวาบน

    4.คลิกขวาที่ Slide ที่กำลังจัดทำ Rename Layout เพื่อแก้ไขชื่อ Layout

    5.ไปที่แท็บ Slide Master –> Close Master View

    6.ที่แท็บ Home –> New Slide –> Custom Logo Layout

     

    7.คลิกขวา New Slide ก็จะได้ Layout ที่มีโลโก้ตามต้องการ

    การสร้างหน้าสำหรับแนะนำตัว

    1.ไปที่แท็บเมนู View –> Slide Master คลิกขวาที่แท็บด้านซ้ายเลือก Insert Layout

    2.ไปที่แท็บ Slide Master –> Insert Placeholder –> Picture

    3.ไปที่แท็บ Format –> Edit Shape –> Change Shape –> Oval เพื่อเปลี่ยน Shape ตามต้องการ

    4.ไปที่แท็บ Insert –> Shapes –> Line เพื่อสร้างเส้นแบ่งระหว่างรูปภาพและเนื้อหา

    5.ไปที่แท็บ Slide Master –> Insert Placeholder –> Text เพื่อใส่เนื้อหา

    6.คลิกขวาที่ Slide ที่กำลังจัดทำ Rename Layout เพื่อแก้ไขชื่อ Layout

    7.ไปที่แท็บ Slide Master –> Close Master View

    8.ที่แท็บ Home –> New Slide –> Custom Layout

    1. สามารถเพิ่มรูปภาพและพิมพ์ข้อความเนื้อหาเข้าไปตามต้องการ โดยมีรูปแบบตาม Custom Layout ที่ได้ออกแบบไว้

    การนำเสนอรูปภาพจำนวนหลาย ๆ รูปใน 1 slide ให้น่าสนใจ

    1.ไปที่แท็บเมนู View –> Slide Master คลิกขวาที่แท็บด้านซ้ายเลือก Insert Layout แล้วลบ Label ต่าง ๆ ออกให้หมด

    2.ไปที่แท็บ Slide Master –> Insert Placeholder –> Picture

    3.ลากวางในตำแหน่งตามต้องการ

    4.คัดลอก Picture อันที่ทำเรียบร้อยแล้วมาวางต่อ ๆ กันแล้วปรับขนาด ดังรูป

    5.ไปที่แท็บ Slide Master –> Close Master View

    6.ที่แท็บ Home –> New Slide –> Custom Layout

    7.สามารถเพิ่มรูปตามต้องการได้ และสามารถเพิ่มรูปโดยไม่ตรง Resize ขนาด ไม่ต้องปรับอะไร

    วันนี้แค่นี้ก่อนแล้วกันนะคะ ขอบคุณทุกคนที่ติดตามค่ะ

  • เปลี่ยน font หัว column ใน Excel ง่ายๆ

    วันนี้ทางผู้เขียนขอเริ่มต้นปีงบประมาณใหม่ ด้วยบทความอันแสนสั้น และเป็นเกร็ดเล็กเกร็ดน้อย

    ซึ่งสามารถทำตามได้ง่ายๆ เกี่ยวกับเจ้าตัว Microsoft Excel นี่แหละ ปะ! … เรามาเริ่มเลยละกัน

    สำหรับคนที่ใช้ Excel กันอยู่แล้ว หลายๆ คนอาจจะเคยสงสัยเหมือนผู้เขียน ว่ารูปแบบตัวอักษร

    ที่อยู่บนหัวตารางเนี่ย เราสามารถเปลี่ยนมันได้มั้ย เปลี่ยนเป็นตามแบบที่เราชอบได้รึเปล่า ???

     

    จริงๆ แล้วรูปแบบของหัวตาราง มันคือรูปแบบที่เรียกว่า Normal Style นั่นเอง ซึ่งนั่นก็หมายความว่า

    ถ้าเราไปเปลี่ยนเจ้า Normal Style ตัวนี้ รูปแบบหัวตารางของเราก็จะเปลี่ยนแปลงตามไปด้วย…จริงมั้ย

     

    คำถามถัดมาละ … แล้วเราจะไปเปลี่ยนเจ้า Normal Style ตัวนี้ได้ยังไง ไปตรงไหน เลือกอะไร ???

    วันนี้ขอเขียนขั้นตอนการเปลี่ยน Normal Style แบบง่ายๆ กลั้นหายใจไม่ถึง 10 วิ ก็เสร็จละ ปะ ลุยยย !

     

    Step 1. ขาดไม่ได้เลยนะขั้นตอนนี้ …. เปิด Excel ก่อนเลย แหะๆ พอเปิดแล้วก็จะได้มาประมาณนี้

    (สังเกตจากที่จากรูป แบบ Normal Style ตัวอักษรหน้าตาก็จะพื้นๆ เรียบๆ นิดหน่อย)

     

     

     

     

     

     

     

     

    Step 2. ให้คลิกขวา ตรงรูปแบบที่ชื่อว่า Normal จากนั้น ให้เลือก Modify… ตัวอย่างตามรูปที่ 2 เลยนะ

     

     

     

     

     

     

     

     

    Step 3. จะปรากฏหน้าต่างเล็กที่ชื่อว่า Style ขึ้นมา ให้เราคลิกเลือกปุ่ม Format… ไปได้เลย

     

     

     

     

     

     

     

     

    Step 4. หลังจากเลือก Format… แล้ว Excel ก็จะแสดงหน้าต่าง Format Cells ขึ้นมา ให้เราเลือกรูปแบบ

    ของ Font, Style, Size หรืออื่นๆ ตัวอย่างตามรูปด้านล่างเลยนะทุกคน เมื่อเราเลือกเรียบร้อยแล้วก็กด OK และ OK

     

     

     

     

     

     

     

     

     

    Step 5. เมื่อกด OK จนครบแล้วก็จะเห็นรูปแบบ Font ตัวอักษรตรงหัว Column เปลี่ยนไป ตัวอย่างตามรูปเลยจ๊ะ

    แท่น แท่น แท๊นนนนนนนน …. เย้ Font เปลี่ยนแล้ววววว !!

     

     

     

     

     

     

     

     

    เป็นยังไงกันบ้าง ง่ายมั้ย ง่ายเนอะ คลิกไปคลิกมา ปุบปับๆ ก็เสร็จละ ซึ่งเจ้าตัว Normal Style ตัวนี้ที่เราเปลี่ยน

    เมื่อไหร่ที่เราเปิดไฟล์ใหม่ Style เหล่านี้ก็จะกลับมาเป็นปกติเหมือนเช่นเดิมน๊าาาาา สบายใจได้ สำหรับครั้งนี้

    ผู้เขียนขอขอบคุณทุกคนที่เผลอคลิกเข้ามาอ่านนะ 55+ หวังเป็นอย่างยิ่งว่ามันจะมีประโยชน์ให้กับผู้อ่านไม่มากก็น้อย

    ***************************************************************************************************************

    แหล่งข้อมูลอ้างอิง

    –> http://www.inwexcel.com/10-excel-secrets/

  • django – as a Dialogflow Webhook #03

    บทความนี้ จะกล่าวถึง การใช้ django ทำหน้าที่เป็น Webhook จาก Dialogflow ผ่าน Fulfillment ทาง HTTP Post Request ด้วย JSON object และ ทำการประมวลผล แล้วตอบกลับไปเป็น JSON Object เช่นกัน เพื่อให้ Dialogflow ตอบสนองต่อผู้ใช้ได้ตามต้องการ เช่น อาจจะให้ไปค้นข้อมูลจากฐานข้อมูลในองค์กรมาตอบ เป็นต้น

    Source: https://dialogflow.com/docs/intro/fulfillment

    ในมุมของ django django (ดี)จังโก้ ดีอย่างไร #01 ได้กล่าวถึงการสร้าง Web Application จาก Model โดยกำหนด Fields ต่าง ๆ จากนั้น django ก็จะสร้าง Web Form ต่าง ๆ ให้อัตโนมัติ และยังสามารถสร้าง Users ของระบบ พร้อมทั้ง กำหนดสิทธิ์การเข้าถึงของแต่ละคนได้อีกด้วย แล้วนำไปผูกกับส่วน Admin เพื่อให้ผู้ใช้ทำการ Authentication ก่อนเข้าจัดการกับข้อมูลต่างได้ และในบทความ django – Deploy to Production #02 ได้แนะนำวิธีการ Deploy ระบบที่สร้างขึ้นสู่ Production ตามลำดับ

    ในบทความนี้ จะใช้ “view” ซึ่งเป็นอีกส่วนของ django ตามขั้นตอนต่อไปนี้

    ใน myproject สร้าง App ใหม่ ชื่อ fulfillment

    python manage.py startapp fulfillment

    เพิ่ม ‘fulfillment’ app ลงใน myproject/settings.py ที่ INSTALLED_APPS
    ( ในตัวอย่างก่อนหน้า เราเพิ่ม worklog app ไว้แล้ว) 

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'worklog',
        'fulfillment'
    ]

    จากนั้น แก้ไขไฟล์ myproject/fulfillment/views.py ตามนี้

    from django.http import HttpRequest, HttpResponse
    from django.views.decorators.csrf import csrf_exempt
    import json
    # Create your views here.
    @csrf_exempt
    def sayHi(request):
        j = json.loads(request.body)
        x = {  "fulfillmentText": "This is a text response"
            }
        return HttpResponse(json.dumps(x))

    ในส่วนนี้ จะ import packages ต่อไปนี้

    • HttpRequest เพื่อรับ Input ผ่าน HTTP
    • HttpResponse เพื่อตอบ Output ผ่าน HTTP
    • csrf_exempt เพื่อบอกว่า ยอมให้ทำงานผ่าน HTTP POST โดยไม่ต้องมี CSRF Token (ถ้าไม่ใส่ อยู่ ๆ จะส่ง POST เข้ามาไม่ได้ )
    • json เพื่อจัดการ JSON object

    จากนั้น สร้าง Function ชื่อ “sayHi” มี function ที่เรียกใช้งานดังนี้

    • json.loads(request.body) ทำหน้าที่แปลง JSON Object จาก HTTP Request เข้ามาอยู่ในรูป Python Object ในที่นี้ จะนำข้อมูลจาก Dialogflow Fulfillment ที่ได้จาก Intent Matching และ Parameter Extraction ส่งมา
    • json.dumps(x) ทำหน้าที่แปลงข้อมูล จาก Python Object (ในรูปแบบ dict) ไปเป็น JSON Object ในที่นี้ แปลง { “fulfillmentText” : “This is a text response” } ไปเป็น JSON Object แล้วตอบกลับไปทาง HTTP Response

    ต่อไป สร้างไฟล์ myproject/fulfillment/urls.py เพื่อกำหนด URL ที่จะเรียกใช้ function ดังนี้

    from django.urls import path
    from . import views
    urlpatterns = [    
    	path('hi', views.sayHi )
    ]

    ในส่วนนี้ import package “path” เข้ามา และ import views ที่สร้างขึ้นใน ‘fulfillment’ app และกำหนดว่า เมื่อการเรียก “hi” ให้ไปเรียก function “sayHi” ซึ่งเป็น views

    สุดท้าย แก้ไขไฟล์ myproject/urls.py เพื่อเพิ่ม URL path ให้ fulfillment

    from django.contrib import admin
    from django.urls import path, include
    urlpatterns = [
    	path('admin/', admin.site.urls),
    	path('fulfillment/', include('fullfillment.urls'))
    ]
    

    เมื่อมีการเรียก http://server-domain/fulfillment/ ก็จะส่งไปให้ views ใน fulfillment ทำงาน โดย Include fulfillment.urls เข้ามา

    เมื่อเรียก  http://server-domain/fulfillment/hi ก็จะไปเรียก function sayHi ที่เขียนข้างต้นนั่นเอง

    Dialogflow Fulfillment

    ใน Dialogflow Console คลิกที่ Fulfillment แล้ว Enable Webhook จากนั้นใส่ URL ของ django production server ที่เราสร้างขึ้น ในตัวอย่างจะเป็น

    https://xxxxxxxxx.psu.ac.th/fulfillment/hi

    จากนั้น กดปุ่ม Save ด้านล่าง (ในทางปฏิบัติจริง ๆ ต้องมีเรื่อง Authentication/Authorization อีกพอสมควร แต่ในตัวอย่างนี้ ทำแบบง่าย ๆ ก่อน)

    ต่อไป สร้าง Intent ชุดที่ต้องการให้ส่งให้ Fulfillment ทำงาน แล้วก็คลิกที่ Fulfillment > Enable webhook call for this intent แล้ว Save

    จากนั้น ลองทดสอบดู จะเห็นได้ว่า Default Response จะแสดงข้อความ “This is a text response” แทนที่จะเป็น Text Response ที่กำหนดใน Intent นั้น

    ลองคลิก Diagnostic Info

    จะเห็นว่า มี fulfillmentText เป็น “This is a text response” ตามที่เขียนไว้ เป็นอันว่า Dialogflow สามารถเชื่อมต่อไปยัง django Webhook ที่สร้างขึ้นได้แล้ว

    หวังว่าจะเป็นประโยชน์ครับ

  • วิธีตั้งค่า HTTPS บน Apache2 รุ่นที่สูงกว่า 2.4.8

    จากบทความ การแก้ไข Certificate สำหรับ Apache Web Server (Ubuntu 14.04 LTS) ตอนนี้ Apache2 รุ่นที่สูงกว่า 2.4.8 ประกาศให้ SSLCertificateChainFile นั้น obsolete หรือ จะไม่ใช้อีกต่อไป

    จากเดิม เราเคยใช้

    SSLCertificateFile /etc/apache2/cer/[cer-file-name].crt
    SSLCertificateKeyFile /etc/apache2/cer/[cer-file-name].key
    SSLCertificateChainFile /etc/apache2/cer/[cer-file-name].ca-bundle

    ต่อไปนี้ แนะนำให้ใช้แค่

    SSLCertificateFile /etc/apache2/cer/[cer-file-name]_combined.crt
    SSLCertificateKeyFile /etc/apache2/cer/[cer-file-name].key

    แล้ว 

    /etc/apache2/cer/[cer-file-name]_combined.crt

    มาจากไหน ??? มันมากจากการเอาไฟล์ [cer-file-name].crt แล้วต่อท้ายด้วยไฟล์ [cer-file-name].ca-bundle ด้วยคำสั่ง

    cat [cer-file-name].crt [cer-file-name].ca-bundle > [cer-file-name]_combined.crt

    เช่น

    cat in_psu.crt intermediate_ca.crt > in_psu_combined.crt

    เป็นต้น เสร็จแล้ว ก็ Restart Apache — จบแค่นี้ ใช้งานได้

    TL;DR

    Q: มีไฟล์ .crt เต็มไปหมด จะรู้ได้ไงว่า อันไหนคือ Certificate ของอะไร อย่างไร

    A: สมมุติ Certificate ของ Server ที่ได้มา ชื่อ server.crt ต้องใช้คำสั่งนี้ ดูรายละเอียด

    openssl x509 -in server.crt -text

    ผลที่ได้ จะประมาณนี้

    สิ่งสำคัญที่ควรดู ในที่นี้คือ Issuer จะเห็นว่า CN หรือ common name คือ AlphaSSL CA – SHA256 – G2  และบรรทัด Subject จะบอกว่า Domain (*.xxxxx.psu.ac.th) ที่ลงทะเบียนไว้ อยู่ภายใต้ “AlphaSSL CA” อีกที

    ซึ่ง ถ้าไปดูใน /etc/ssl/certs ก็จะเห็นว่า ไม่มี CA Certificate ของ “AlphaSSL CA” นี้อยู่ แต่จะมีของ “GlobalSign Root CA” อยู่

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

    คราวนี้ มาลองดูข้อมูลใน intermediate_ca.crt ว่ามีข้อมูลเป็นอย่างไร ด้วยคำสั่ง

    openssl x509 -in intermediate_ca.crt -text

    จะเห็นได้ว่า Issuer เป็น “GlobalSign Root CA” และ Subject เป็น “AlphaSSL CA” 

    จากเดิม Apache2 รุ่น < 2.4.8 ให้ใช้ Directive  “SSLCertificateChainFile” ในการกำหนด Intermediate CA ได้ แต่หลังจากนั้น ก็ให้ Obsolete เพราะ สามารถเอา 2 ไฟล์มาต่อกันได้ตามที่เขียนไว้ข้างต้น

    ในทางปฏิบัติ จริง ๆ แล้ว ก็ยังใช้ได้อยู่ แต่เป็น Obsolete ทางที่ดี ก็ควรจะปรับปรุงตามที่แนะนำไว้จะดีกว่า

    และ ถ้าใช้งานแค่ SSLCertificateFile (แบบที่มีแต่ Server Certificate) และ SSLCertificateKey (Server Private Key) นั้น เมื่อ Restart apache2 แล้ว ทดสอบใช้งานกับ Web Browser ส่วนใหญ่ จะใช้งานได้ ไม่ต้องอ้าง Intermediate CA ก็ได้ *** เพราะใน Web Browser ได้ติดตั้ง Intermediate CA พวกนี้ไว้เป็นส่วนใหญ่แล้ *** แต่ถ้าลองเรียกผ่าน curl หรือบริการอื่น ๆ เช่น จาก Google DialogFlow Fulfillment ก็จะเรียกไม่ผ่าน เพราะในระบบเค้าไม่ได้ใส่ Intermediate CA ไว้นั่นเอง

    การที่ Combined ทั้ง Server Certificate และ Intermediate CA ไว้ในไฟล์เดียวกัน ทำให้มั่นใจได้ว่า สามารถใช้งาน https ได้จากทุก Platform นั่นเอง

    หวังว่าจะเป็นประโยชน์ครับ