เปลี่ยน 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/

Read More »

django – as a Dialogflow Webhook #03

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

Read More »

วิธีตั้งค่า 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) นั้น เมื่อ

Read More »

django – Deploy to Production #02

ต่อจาก django #01 Development Environment เริ่มจาก ไปที่ command prompt แล้วใช้คำสั่งต่อไปนี้ เพื่อ เก็บรายละเอียดของ Package และ Version ที่ใช้ในการพัฒนา ไว้ในไฟล์ myenv.txt และ เก็บไฟล์ myproject ทั้งหมดไว้ในไฟล์ myproject.tar.gz (บน Windows อาจจะใช้ 7zip สร้าง) แล้ว Upload ไฟล์ myenv.txt และ myproject.tar.gz ขึ้นบน Projection Server Production Server ในที่นี้ ลองไปใช้ Google Compute Engine สร้าง Instance ขึ้นมา เป็น Ubuntu 18.04 และ ได้ Upload ไฟล์ myenv.txt และ myproject.tar.gz จาก Development ขึ้นไว้แล้ว (ใน /home/user01) ติดตั้ง Python3, PIP, Apache2, และ mod_wsgi sudo apt update sudo apt install python3 python3-pip apache2 libapache2-mod-wsgi-py3 ติดตั้ง virtualenv pip3 install virtualenv สร้าง Virtual Environment ชื่อ production virtualenv production source production/bin/activate ติดตั้ง Package ต่าง ๆ ตามที่สร้างไว้จาก Development Environment (จากไฟล์ myenv.txt) pip install -r myenv.txt แตกไฟล์ myproject.tar.gz ออกมา tar -zxvf myproject.tar.gz สร้าง Apache Site Configuration ที่ /etc/apache2/sites-available/001-myproject.conf เนื้อหาตามนี้ จากนั้น สร้าง Symbolic Link จาก /home/user01/production/lib/python3.6/site-packages/django/contrib/admin/static มาที่ /home/user01/myproject/static ปรับ Permission ให้ www-data สามารถแก้ไข Database ได้ (เพราะในที่นี้ใช้ SQLite) สั่ง Apache ให้เอา Default Site ออก และ นำ myproject ขึ้นแทน และ ทำการ Reload ก็จะใช้ได้แล้ว หวังว่าจะเป็นประโยชน์ครับ

Read More »

django (ดี)จังโก้ ดีอย่างไร #01

ขอไม่ลงรายละเอียดว่า อะไรคือ Web Framework, MVC, MVT พวกนั้นนะครับ อ่านเองที่ https://www.djangoproject.com/ และ เขียนวิธีติดตั้งบน Windows ไว้คร่าว ๆ ที่ ขั้นตอนการติดตั้ง django บน Windows และในที่นี้ใช้ Visual Studio Code เป็น Editor (สั่งด้วยคำสั่ง code …) โจทย์ สมมุติในทีม มีคน 10 คน ต้องการ ระบบบันทึกการปฏิบัติงาน จัดเก็บข้อูล วันเวลาของงานที่ทำ, ประเภทของงงาน (ตาม TOR), รายละเอียดของงานที่ทำ, ระยะเวลาที่ใช้ไป (ชั่วโมง) แต่ละคน ต้อง Login เข้ามาก่อน จึงจะบันทึกปฏิบัติงานได้ วิถีแบบ django สร้าง project ชื่อ myproject django-admin startproject myproject สร้าง App ชื่อ worklog cd myproject python manage.py startapp worklog สร้าง Model ว่าจะเก็บข้อมูลอะไรบ้าง แก้ไขไฟล์ code worklog/models.py แล้วสร้าง Class ชื่อ Worklog เพื่อกำหนด Field เป็นช่องทางการเก็บค่าตามโจทย์ (Reference: https://docs.djangoproject.com/en/2.1/ref/models/fields/)–> ขั้นตอนนี้ เขียนใน Visual Studio Code เสร็จแล้ว Save and Exit from django.db import models from django.utils.timezone import now # Create your models here. class Worklog(models.Model): timestamp = models.DateTimeField(default = now()) typeOfWork = models.ForeignKey(‘TypeOfWork’, on_delete=models.CASCADE) work_text = models.TextField(default=””) manhour = models.FloatField(default=0) def __str__(self): return self.work_text class TypeOfWork(models.Model): typeOfWork_text = models.CharField(max_length=200) def __str__(self): return self.typeOfWork_text บอกให้ django สร้างโครงสร้างฐานข้อมูลตามโมเดล (จาก Command Prompt) python manage.py migrate เพิ่ม App ‘worklog’ เข้าสู่ myproject แก้ไขไฟล์ code myproject/settings.py เพิ่ม ‘worklog’ ในส่วนของ INSTALLED_APPS–> ขั้นตอนนี้ เขียนใน Visual Studio Code เสร็จแล้ว Save and Exit INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘worklog’ ] สร้าง Super User สักคนนึง python manage.py createsuperuser ตั้งชื่อว่า admin และ รหัสผ่านตามต้องการ เพิ่มโมเดล TypeOfWork และ WorkLog เข้าสู่หน้าของ Admin โดยการแก้ไขไฟล์–> ขั้นตอนนี้ เขียนใน Visual Studio Code เสร็จแล้ว Save and Exit code worklog/admin.py

Read More »