Credentials จะถูกเรียกใช้ทุกครั้งที่มีการส่ง request ไปยัง Amazon Web Services
มีหลายวิธีที่จะตั้งค่า Credentials นี้ สามารถอ่านได้ที่ Credentials for the AWS SDK for PHP Version 3
ถ้า Application ของเรารันบนเครื่อง Amazon EC2 วิธีการที่แนะนำ คือ การใช้ IAM role เพื่อดึง Credentials แบบชั่วคราวมาใช้งาน
สำหรับการใช้งาน IAM roles, metadata service จะถูกเรียกถูกครั้งที่เรียกใช้ Credentials
หมายเหตุ การเรียกใช้ metadata service คือ การส่ง request ไปที่ metadata server ใน เครื่อง EC2 ซึ่งอาจจะมี network latency ได้
Menu
Friday, November 29, 2019
Thursday, November 28, 2019
[Laravel - Model] การตั้งค่า Attribute ของ Model ให้เป็น Lower Case
[Laravel - Model] How to Set Model Attribute to Lower Case
บางครั้งเราจำเป็นต้องทำระบบที่เชื่อมต่อกับฐานข้อมูลเดิมที่มีอยู่แล้ว และฐานข้อมูลเหล่านั้นอาจจะมีชื่อ column เป็นตัวพิมพ์ใหญ่ทั้งหมด เวลาใช้งานแต่ละ column จะต้องพิมพ์ชื่อเป็นตัวพิมพ์ใหญ่ ทำให้ยากต่อการเขียนโค้ด
สำหรับ Laravel แล้ว เราสามารถตั้งค่าเพื่อให้เปลี่ยนชื่อ column พวกนี้เป็นตัวพิมพ์เล็ก เมื่อเราเรียกใช้งานได้
สำหรับ Laravel แล้ว เราสามารถตั้งค่าเพื่อให้เปลี่ยนชื่อ column พวกนี้เป็นตัวพิมพ์เล็ก เมื่อเราเรียกใช้งานได้
วิธีการตั้งค่า
- เข้าไปที่ config/database.php
- เพิ่มโค้ดข้างล่างในส่วนของ connections ที่ต้องการ
'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), PDO::ATTR_CASE => PDO::CASE_LOWER, ]) : [ PDO::ATTR_CASE => PDO::CASE_LOWER, ],
Wednesday, November 27, 2019
[Laravel - Model] การเข้ารหัสและถอดรหัสค่าของฟิลด์ใน Laravel Model
[Laravel - Model] Field Values Encryption and Decryption in Laravel Model
ในบางกรณี เราต้องการรักษาความลับของข้อมูล โดยอนุญาตให้เฉพาะผู้ที่เกี่ยวข้องเท่านั้นที่สามารถดูและแก้ไขได้ ระบบส่วนใหญ่จึงจำกัดสิทธิ์การใช้งานของแต่ละผู้ใช้งานภายใน application
อย่างไรก็ตาม ระบบดังกล่าวยังคงเก็บข้อมูลจริงลงฐานข้อมูลโดยไม่มีการเข้ารหัสใดๆ ทำให้ Database Admin ยังสามารถเข้าดูข้อมูลและแก้ไขได้
การเข้ารหัสข้อมูลก่อนเก็บลงฐานข้อมูล จึงเป็นการเพิ่มความปลอดภัยของข้อมูลอีกขั้นนึง
สำหรับ Laravel Model ที่มี function กลางสำหรับการดึงค่าข้อมูลและเก็บข้อมูลของ Fields ต่างๆ ทำให้การเข้ารหัสและถอดรหัสนั้นทำได้ง่ายขึ้นมาก เราเพียงเขียน Trait แล้วนำไปใส่ใน Model พร้อมกับกำหนด Fields ที่เราต้องการเข้ารหัสเท่านั้น
อย่างไรก็ตาม ระบบดังกล่าวยังคงเก็บข้อมูลจริงลงฐานข้อมูลโดยไม่มีการเข้ารหัสใดๆ ทำให้ Database Admin ยังสามารถเข้าดูข้อมูลและแก้ไขได้
การเข้ารหัสข้อมูลก่อนเก็บลงฐานข้อมูล จึงเป็นการเพิ่มความปลอดภัยของข้อมูลอีกขั้นนึง
สำหรับ Laravel Model ที่มี function กลางสำหรับการดึงค่าข้อมูลและเก็บข้อมูลของ Fields ต่างๆ ทำให้การเข้ารหัสและถอดรหัสนั้นทำได้ง่ายขึ้นมาก เราเพียงเขียน Trait แล้วนำไปใส่ใน Model พร้อมกับกำหนด Fields ที่เราต้องการเข้ารหัสเท่านั้น
[Laravel - Package] ขั้นตอนการตั้งค่า Packagist เพื่อให้ติดตั้ง Laravel Package ผ่าน Composer ได้
[Laravel - Package] Packagist Setting Steps for Laravel Package Installation via Composer
สมมติว่า เรามี Laravel package อยู่บน Repository ใดๆ แล้วเราต้องการให้สามารถติดตั้ง package ดังกล่าวผ่าน composer ได้เลย โดยไม่ต้องตั้งค่าใดๆเพิ่ม เรามีวิธีการดังต่อไปนี้
เนื่องจาก Composer ใช้งาน Packagist repository เป็น default repository เท่านั้น (อ่านเพิ่มเติมได้ใน Composer Repositories) ขั้นตอนการตั้งค่าจึงเป็นดังนี้
เนื่องจาก Composer ใช้งาน Packagist repository เป็น default repository เท่านั้น (อ่านเพิ่มเติมได้ใน Composer Repositories) ขั้นตอนการตั้งค่าจึงเป็นดังนี้
- Login เข้า https://packagist.org/
- เข้าหน้าเมนู Submit
- ใส่ repository url กดปุ่ม Check
- กดปุ่ม Submit
- รอจน package ถูกอัพเดตเรียบร้อย
composer require arzeroid/laravel-model-encryptableผลที่ได้จะเป็นดังนี้
[Laravel - Package] วิธีการตั้งค่า Composer เพื่อติดตั้ง Package จาก GitHub
[Laravel] How to Install Package from GitHub via Composer
สมมติว่า เรามี Laravel package ตัวนึงอยู่บน GitHub ของเราตามรูปตัวอย่างข้างล่าง
เมื่อเราต้องการนำ package นั้นมาใช้งานใน project ของเรา โดยปกติแล้ว เราจะรัน command ดังนี้
เมื่อเราต้องการนำ package นั้นมาใช้งานใน project ของเรา โดยปกติแล้ว เราจะรัน command ดังนี้
composer require arzeroid/laravel-model-encryptable
Monday, November 25, 2019
[Laravel - Package] วิธีการติดตั้งและตั้งค่า Laravel Userstamps
[Laravel - Package] How to Install and Config Laravel Userstamps
Laravel-Userstamps เป็น package สำหรับจัดการฟิลด์ created_by และ updated_by (รวมถึง deleted_by กรณีที่เปิดใช้งาน Soft Delete) ของ Laravel model โดยใช้ข้อมูลของผู้ใช้งานในขณะนั้น โดยอัตโนมัติ เมื่อมีการสร้าง แก้ไข และลบ model
วิธีการติดตั้ง
- สั่งติดตั้ง Laravel-Userstamps package
composer require wildside/userstamps
Friday, November 22, 2019
[Laravel - Package] วิธีการติดตั้งและตั้งค่า Laravel Sluggable
[Laravel - Package] How to Install and Config Laravel Sluggable
Eloquent-Sluggable เป็น package เสริมสำหรับสร้าง Slug ภายใน Laravel Model โดยจะสร้าง Slug ใส่ฟิลด์ที่ระบุให้โดยอัตโนมัติ เมื่อมีการบันทึกข้อมูล
วิธีการติดตั้ง
- สั่งติดตั้ง Eloquent-Sluggable package
- สร้างไฟล์ config ของ package ใน project
composer require cviebrock/eloquent-sluggable
php artisan vendor:publish --provider="Cviebrock\EloquentSluggable\ServiceProvider"
[Laravel - Package] วิธีการติดตั้งและตั้งค่า Laravel Activity Log
[Laravel - Package] How to Install and Config Laravel Activity Log
laravel-activitylog เป็น package สำหรับใช้จัดเก็บ log การใช้งานของ user ยิ่งไปกว่านั้น package นี้สามารถเก็บ log จาก model event ได้โดยอัตโนมัติ
วิธีการติดตั้ง
- สั่งติดตั้ง laravel-activitylog package
- สร้างไฟล์ migration ของ package ใน project
- รัน migrate เพื่อสร้างตารางในฐานข้อมูล
- สร้างไฟล์ config ของ package ใน project
composer require spatie/laravel-activitylog
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="migrations"
php artisan migrate
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="config"
Thursday, November 21, 2019
[Laravel - Package] วิธีการติดตั้งและตั้งค่า Laravel Permission
[Laravel - Package] How to Install and Config Laravel Permission
laravel-permission เป็น package สำหรับจัดการ roles และ permissions ของ user ใน database
วิธีการติดตั้ง
- สั่งติดตั้ง laravel-permission package
- สร้างไฟล์ migration ของ package ใน project
- รัน migrate เพื่อสร้างตารางในฐานข้อมูล
- สร้างไฟล์ config ของ package ใน project
composer require spatie/laravel-permission
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
php artisan migrate
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"
Wednesday, November 20, 2019
[Laravel - Package] การสร้าง PHPDOC สำหรับ Laravel Model
[Laravel - Package] How to Generate PHP Document for Laravel Model
เราสามารถสร้าง PHPDOC ของ Laravel Model ได้ง่ายๆ ดังนี้
- ติดตั้ง Package Laravel IDE Helper เข้าไปใน Project โดยรันคำสั่งต่อไปนี้
composer require --dev barryvdh/laravel-ide-helper
- รันคำสั่งต่อไปนี้ เพื่อสร้าง PHPDOC ของ Laravel Model
php artisan ide-helper:models -R
Monday, November 18, 2019
[VSCODE] วิธีการย่อโค้ดในไฟล์โดยอัตโนมัติใน Visual Studio Code
[VSCODE] How to Automatically Fold Code Files in Visual Studio Code
หลายๆครั้งที่เราเขียนโค้ด โดยที่ในหนึ่งไฟล์จำเป็นต้องมี Function จำนวนมาก เมื่อเราต้องการแก้ไขหรือเรียกใช้ฟังก์ชั่นใดฟังก์ชั่นหนึ่ง เราจำเป็นต้องเลื่อนหน้าจอขึ้นลงหลายครั้ง เพื่อหาโค้ดตำแหน่งที่เราต้องการ
การย่อฟังก์ชั่นเป็นวิธีนึงที่จะช่วยลดเวลาในเลื่อนหาโค้ดได้ แต่เนื่องจากมี Function จำนวนมาก การย่อฟังก์ชั่นทีละฟังก์ชั่นนั้นใช้เวลามาก
ดังนั้นเราจะใช้วิธีการย่อฟังก์ชั่นโดยอัตโนมัติ โดยใช้ extension ชื่อ Auto Fold ซึ่ง extension ตัวนี้จะย่อ Function และส่วนต่างๆของโค้ดให้เราโดยอัตโนมัติ เมื่อเราเปิดไฟล์
การย่อฟังก์ชั่นเป็นวิธีนึงที่จะช่วยลดเวลาในเลื่อนหาโค้ดได้ แต่เนื่องจากมี Function จำนวนมาก การย่อฟังก์ชั่นทีละฟังก์ชั่นนั้นใช้เวลามาก
ดังนั้นเราจะใช้วิธีการย่อฟังก์ชั่นโดยอัตโนมัติ โดยใช้ extension ชื่อ Auto Fold ซึ่ง extension ตัวนี้จะย่อ Function และส่วนต่างๆของโค้ดให้เราโดยอัตโนมัติ เมื่อเราเปิดไฟล์
Tuesday, November 12, 2019
[PHP] วิธีการสร้าง Slug จากข้อความที่กำหนด
[PHP] How to Slugify a String
Slug เป็น Identifier ประเภทหนึ่งที่ใช้อ้างอิงถึงข้อมูลเช่นเดียวกับ id ใน database แตกต่างกันตรงที่ Slug เป็น identifier ที่คนสามารถอ่านเข้าใจ
โค้ดสำหรับสร้าง Slug จากข้อความที่กำหนดเป็นดังนี้
โค้ดสำหรับสร้าง Slug จากข้อความที่กำหนดเป็นดังนี้
public static function slugify($str, $delimiter = '-') { // Replace none alphanumeric with delimiter $str = preg_replace('/[^A-Za-z0-9]+/', $delimiter, $str); // Replace duplicated delimiter $str = preg_replace("/$delimiter+/", $delimiter, $str); // Trim delimiter $str = trim($str, $delimiter); // Convert to lower case $str = strtolower($str); return $str; }
Tuesday, November 5, 2019
[Docker] วิธีการแก้ไขข้อผิดพลาด "SSL error: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version"
[Docker] How to Fix "SSL error: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version"
หลังจากที่รันคำสั่งของ laradock ดังต่อไปนี้ผ่าน Docker Toolbox on Windows
docker-compose up -d nginx workspace mysql phpmyadminจะได้ข้อผิดพลาดตามด้านล่างนี้
ERROR: SSL error: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:661)วิธีแก้ไข คือ ให้รันคำสั่งตามข้างนี้ก่อน แล้วจึงรันคำสั่งข้างต้นอีกที
export COMPOSE_TLS_VERSION=TLSv1_2กรณีที่ต้องการตั้งค่าถาวรให้เพิ่มคำสั่งข้างบนในไฟล์
~/.bash_proflle
Subscribe to:
Posts (Atom)