Home

Linux: upgrade PHP version ล่าสุด

php ก็เหมือนโปรแกรมอื่น ๆ จะมีการอัพเดต อัพเกรดเวอร์ชั่นเป็นระยะเพื่อเพิ่มความสามารถและความปลอดภัย การอัพเดตใน linux และ wsl สามารถทำได้ง่าย ๆ

  1. Update ระบบโดยรวมก่อน

    sudo apt update && sudo apt -y upgrade
  2. เพิ่ม Surý PHP APT repository

    sudo apt update

    sudo apt install -y lsb-release gnupg2 ca-certificates apt-transport-https software-properties-common

    sudo add-apt-repository ppa:ondrej/php
  3. ติดตั้ง PHP ตัวล่าสุด

    sudo apt install php8.2
  4. เช็ค php version โดย

    php -v
  5. ติดตั้ง extension เพิ่มเติม เช่น

    sudo apt-get install -y libapache2-mod-php8.2 libphp8.2-embed mcrypt openssl php-bcmath php-cli php-common php-curl php-fpm php-gd php-gmp php-intl php-mbstring php-mysql php-tokenizer php-xml php-xmlrpc php-zip php8.2 php8.2-bcmath php8.2-cgi php8.2-cli php8.2-common php8.2-curl php8.2-dev php8.2-fpm php8.2-gd php8.2-imagick php8.2-imap php8.2-mbstring php8.2-mysql php8.2-phpdbg php8.2-soap php8.2-xml php8.2-xmlrpc php8.2-zip
  6. ผูก Apache และ PHP

    sudo apt install apache2 php-fpm

ดูเพิ่มเติม How To Install PHP 8.2 on Ubuntu 22.04|20.04|18.04

Swagger: การติดตั้ง Swagger Editor

การเขียน OpenAPI เครื่องมือที่สามารถช่วยตรวจสอบและ test ได้คือ swagger-editor โดยสามารถ download มาติดตั้งในเครื่องของตัวเองได้

  1. ดาวน์โหลดตัว zip file จาก https://github.com/swagger-api/swagger-editor มาแตกไว้ในโฟลเดอร์ C:\swagger-api หรือจะใช้คำสั่ง

    git clone https://github.com/swagger-api/swagger-editor.git
  2. เปิด PowerShell แล้วไปที่ C:\swagger-api\swagger-editor
  3. ติดตั้ง http โดยคำสั่ง

    npm install -g http-server
  4. จากนั้นกลับออกมา 1 ระดับโดยคำสั่ง

    cd ../
  5. เปิด server โดยคำสั่ง

    http-server swagger-editor -a 127.0.0.1 -p 8080
  6. จากนั้นเปิด browser โดยใช้ URL: http://127.0.0.1:8081

เท่านี้ก็สามารถใช้ swagger-editor ได้โดยไม่ต้องต่ออินเตอร์เน็ตแล้ว
Cr.

PowerBuilder:DataWindow.ShareData

shareData เป็นวิธีที่ใช้ data เดียวกันของ DataWindow โดยจะแชร์กันหมดทุกอย่างทั้ง primary buffer, delete buffer, filter buffer, sort order ประโยชน์เช่น มี DataWindow ตัวแรก ( dw_booking ) ไว้กรอกข้อมูลที่ติดต่อลูกค้าและออกรายงานในรูปแบบใบรับจองตั๋วรถทัวร์ โดยจะมีข้อมูลบางส่วนเป็นเวลานัด หมายเลขเที่ยว ที่นั่ง เวลาใส่กระดาษเล็ก ๆ ใน DataWindow ( dw_ticket ) แบบสวยงามกระทัดรัด ไม่จำเป็นต้องมีข้อมูลของลูกค้า แต่ร้านค้ามีข้อมูลครบถ้วนอย่าง ชื่อ นามสกุล เบอร์โทรศัพท์ไว้ติดต่อกรณีที่ลูกค้ามาสาย

การเขียนทำได้ด้วย code ง่าย ๆ

dw_original.ShareData(dw_shareing)
หรือ
IF dw_original.ShareData(dw_shareing) = -1 THEN MessageBox("Error !", "ShareData original and shareing")

ตัวอย่าง

dw_booking.ShareData(dw_dw_ticket)
หรือ
IF dw_booking.ShareData(dw_dw_ticket) = -1 THEN MessageBox("Error !", "ShareData booking and ticket")

เมื่อกรอกข้อมูลใน dw_booking จะเห็นว่าข้อมูลจะไปแสดงใน dw_ticket ตามรูปแบบในหน้าที่ design

ข้อควรระวังคือ source ของทั้งสอง Datawindow ต้องมีจำนวน column และ data type เท่ากัน ไม่อย่างนั้นฝั่ง replicate จะไม่แสดงข้อมูล ดูเพิ่มเติมได้จาก ShareData

ติดตั้ง SQL Server Management Studio (smss) แล้วค้าง

ถ้าติดตั้ง SQL Server Management Studio แล้วค้างอยู่ที่ข้อความ “Loading packages. Please wait…” เป็นชั่วโมงไม่ขยับไปไหน แก้ได้โดย

  1. พยาม Cancel ตัวติดตั้งก่อนถ้าทำไม่ได้ให้ end task ไปเลย
  2. ลบไฟล์ทั้งหมดใน temp file
    • โดยใส่ %temp% ใน Windows File Explorer แล้ว enter
    • หรือจะเปิด C:\Users\<username>\AppData\Local\Temp ก็ได้
      จากนั้นลบไฟล์ทั้งหมด ที่สามารถจะลบได้ออกไป
  3. ลบ registry
    • เปิด command prompt โดยสิทธ์ administrator พิมพ์
      reg DELETE “HKLM\SOFTWARE\WOW6432Node\Microsoft\Microsoft SQL Server Management Studio” /reg:32
      กด enter จะเห็นคำถาม
      Permanently delete the registry key HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SQL Server Management Studio (Yes/No)?
      พิมพ์ yes แล้ว enter
    • หรือเปิด registry editor โดยสิทธ์ administrator แล้วค้นหา “HKLM\SOFTWARE\WOW6432Node\Microsoft\Microsoft SQL Server Management Studio” จากนั้นก็ลบออกไป
  4. restart windows อาจจะเข้าไปลบไฟล์อีกครั้ง
  5. ติดตั้ง smss ตามปกติ

ขอบคุณ How To Fix SSMS Installation Stuck Issue

PowerBuilder: DBMS not supported in your current installation

เห็น error DBMS not supported in your current installation ในขั้นตอนที่ connect database sql server ตอนแรกเข้าใจว่าตอนที่ติดตั้งไม่ได้ลงพวก adodb, jdbc, odbc driver ลอง install ใหม่ก็เหมือนเดิม กี่ครั้งก็เหมือนเดิม

รุ่นพี่บอกให้ลง sql server 2000 หลังจากนั้นก็ connect ได้ปกติเลย เข้าใจว่าในการติดตั้งมันจะลงไดร์เวอร์ให้เป็นตัวที่ยังใช้โปรโตคอลเดี่ยวกับตัว PB8

WSL: ติดตั้ง firefox

ต้องการติดตั้ง firefox ไว้เทสงานโดยเฉพาะ เลยติดตั้งใน wsl (Windows Subsystem for Linux)

sudo snap remove firefox
sudo apt remove firefox
sudo add-apt-repository ppa:mozillateam/ppa

# สร้างไฟล์ใหม่ว่าง ๆ
sudo nano /etc/apt/preferences.d/mozillateamppa

# ใส่เนื้อหา
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501

# save file แล้ว
sudo apt update
sudo apt install firefox #หรือ firefox-esr

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

Cr. How do I install Firefox in WSL, when it requires snap, but snap doesn’t work?

WSL: ปิดการทำงาน

เพราะว่าไม่ได้ใช้งาน wsl ตลอดเวลา การจะเปิดให้มันทำงานไว้ ก็จะหนักเครื่องเปล่า ๆ ไม่ใช้ก็ “ปิด” ซิครับ

  1. เปิดตัว command prompt / dos / Windows Terminal / Window PowerShell ที่มีอยู่
  2. หารายชื่อตัว wsl ที่กำลังทำงานอยู่โดยใช้
    wsl.exe --list --running
  3. จะเห็นรายชื่อที่ทำงานอยู่เช่น Ubuntu (Default)
  4. ปิดการทำงานโดยคำสั่ง
    wsl --terminate <DistributionName>
    เช่น
    wsl –terminate ubuntu

Cr. Terminate Running WSL Linux Distro in Windows 10

WSL: Remove links shortcut

การนำ link ออกโดยไม่เป็นการลบไฟล์ข้างในออก ทำได้โดย

  1. cd ไปที่ parent path ที่ต้องการจะนำ linlk ออกก่อน เช่น ทำ links ไว้ที่ /var/www/prototypes_laravel/www ก็จะเป็น /var/www/prototypes_laravel

    cd /var/www/prototypes_laravel
  2. list รายการที่เป็น link โดย

    ls -l

    จะเห็นข้อมูลประมาณ
    total 0
    lrwxrwxrwx 1 root root 48 Jul 5 10:40 www -> /mnt/c/UsersDatas/var/www/prototypes_laravel/www
    list รายการที่เป็น link โดย

    ls -l

    จะเห็นข้อมูลประมาณ

    total 0
    lrwxrwxrwx 1 root root 48 { เวลา } www -> /mnt/c/UsersDatas/var/www/prototypes_laravel/www

    โดยหลังเวลาจะเห็นส่วนที่เป็น link คือ www
  3. นำลิงค์ออกไปโดยคำสั่ง sudo unlink { link } เช่น

    sudo unlink www

path /var/www/prototypes_laravel จะไม่มี folder www ให้เห็นแล้ว แต่ใน /mnt/c/UsersDatas/var/www/prototypes_laravel/www จะยังมีไฟล์ต่าง ๆ อยู่ครบเหมือนเดิม

WSL: mount linux disk

วิธีทำให้ WSL: Windows Subsystem for Linux มองเห็น hard disk ที่สร้างไว้เป็น Linux partition และสามารถใช้ได้เหมือนกับว่าเป็น disk ของตัว windows เอง

  1. เริ่มจาก list hard disk โดยใช้ Windows PowerShell as an Administrator

    GET-CimInstance -query “SELECT * from Win32_DiskDrive”

    จะเห็นรายชื่อ hard disk ที่มีอยู่ในเครื่อง เช่น \\.\PHYSICALDRIVE1 WD My Book 25EE USB Device 1 0659787734 WD My Book 25EE USB Device . ให้ดูที่ DeviceID ในบรรทัดนี้คือ \\.\PHYSICALDRIVE1 คือ <DiskPath> ที่จะนำมาใช้ อ้างอิง
  2. mount disk โดยรูปแบบ wsl –mount <DiskPath> เช่น

    wsl –mount \\.\PHYSICALDRIVE1 –bare

    บางครั้ง จะมี error
    The disk ‘\\.\PHYSICALDRIVE1‘ is already attached.
    Error code: Wsl/Service/AttachDisk/WSL_E_DISK_ALREADY_ATTACHED
    เกิดจาการที่ hard disk ลูกนี้เคย mount เอาไว้แล้ว
  3. ทดลอง list hard disk และ partition ใน Linux command ( Ubuntu )

    lsblk

    จะเห็น partition name เช่น sda, sdb, sdc, sdd
  4. mount partition แรก โดยคำสั่ง

    wsl –mount \\.\PHYSICALDRIVE1 –partition 1

    จะมีข้อความตอบกลับมาเช่น

    The disk was successfully mounted as ‘/mnt/wsl/PHYSICALDRIVE1p1‘.
    Note: The location will be different if you have modified the automount.root setting in /etc/wsl.conf.
    To unmount and detach the disk, run ‘wsl.exe –unmount \\.\PHYSICALDRIVE1’.
  5. เข้าไปดู ไปใช้ไฟล์ได้ใน \wsl.localhost\Ubuntu\mnt\wsl\PHYSICALDRIVE1p1 ถ้า wsl ของเราชื่อ Ubuntu และ path ที่ mount ไว้คือ /mnt/wsl/PHYSICALDRIVE1p1
  6. เมื่อใช้เสร็จแล้ว ควรเอาออกไปโดยใช้คำสั่ง wsl –unmount <DiskPath> เช่น

    wsl –unmount \\.\PHYSICALDRIVE1

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

wsl –mount –name myDisk
* ใช่ – – สองตัวทุกจุดนะครับ ไม่ใช่ – เดียว
อ่านเพิ่มเติม

PowerBuilder: file extension

ในส่วนของ source code ของ PowerBuilder ประกอบด้วยไฟล์นามสกุลต่าง ๆ

ความหมายfile extension
Application source files.sra
Custom user object source files.sru
Data pipeline source files.srp
DataWindow source files.srd
Dynamic link library files.pdb
Function source files.srf
Library files.pbl
Menu source files.srm
Project files.srj
Query source files.srq
Structure source files.srs
Target files.pbt
Window source files.srw
Workspace files.pbw