Menu

Saturday, May 26, 2018

[Ubuntu] การแตกไฟล์ zip ด้วย encoding ที่กำหนด
[Ubuntu] How to Extract ZIP File with Specific Encoding

หลังจากที่บีบอัดไฟล์ที่มีชื่อภาษาไทยเป็นไฟล์ zip บน Windows แล้วนำมาแตกไฟล์บน Ubuntu เพื่อใช้งาน จะพบว่า ชื่อไฟล์ที่เป็นอักขระภาษาไทยถูกแทนที่ด้วยอักระพิเศษที่อ่านไม่รู้เรื่อง

สาเหตุที่เป็นเช่นนั้น เนื่องจากการแตกไฟล์ปกติจะใช้ default encoding ซึ่งไม่ใช่ encoding สำหรับภาษาไทย ดังนั้นเราจึงต้องกำหนด encoding ที่จะใช้ในการแตกไฟล์ดังนี้
unzip -O <encoding> <filename> -d <target_dir>
ตัวอย่างเช่น
unzip -O windows-874 lp-real-font.zip -d ocr_in
สำหรับชื่อ encoding ที่ใช้ได้ สามารถดูได้จาก https://www.iana.org/assignments/character-sets/character-sets.xhtml

Ref: https://superuser.com/questions/872596/decompress-zip-with-given-encoding

[Laravel - Config] การบังคับให้ Laravel สร้าง URL แบบ HTTPS
[Laravel - Config] How to Force Laravel to Create URL with HTTPS

เมื่อ Laravel ถูกดีพลอยบน server ที่มีการเรียกหน้าเว็บแบบ HTTP เบื้องหลัง NGINX ที่ตั้งค่าให้เรียกหน้าเว็บแบบ HTTPS เราจึงจำเป็นต้องบังคับให้ link ที่สร้างขึ้นมาโดย Laravel เป็น HTTPS ทั้งหมด

Method ที่เกี่ยวข้องกับการสร้าง link ของ Laravel มี 2 methods ดังนี้
  • url() 
    • เป็น method สำหรับสร้าง url จาก relative path ที่ใส่เข้าไป เช่น url('/images/logo_sm.png') เป็นต้น
    • url ที่ถูกสร้างขึ้นจะเป็น HTTP หรือ HTTPS ตาม server ที่มันอยู่
    • วิธีแก้ไข คือ เพิ่ม \URL::forceScheme('https'); ใน boot ของ AppServiceProvider 
  • link() 
    • เป็น method สำหรับสร้าง render template เพื่อแสดงรายการของหน้า 
    • Method นี้เป็นของตัวแปรที่ได้มาจากการเรียกใช้ paginate() ตอน query ข้อมูลจากฐานข้อมูล
    • วิธีแก้ไข คือ ให้ทำการสั่ง setPath() ให้กับตัวแปรดังกล่าวก่อนที่จะเรียกใช้ link() เช่น $users->setPath('/users/manage'); แล้วจึงเรียกใช้ {{$users->link()}} ใน blade template เมื่อ $users เป็นตัวแปรที่ได้มาจากการเรียกใช้ paginate()