Carbon เป็น PHP API extension สำหรับ DateTime
Carbon::today() เป็นฟังก์ชั่นที่ใช้สร้าง Carbon object ที่มีวันที่เป็นวันปัจจุบัน อย่างไรก็ตามในส่วนของเวลาจะเป็น 00:00:00
จากภาพด้านล่างเป็นผลลัพธ์การเปรียบเทียบระหว่าง Carbon::today() กับวันที่ในรูปแบบข้อความ โดยใช้การเปรียบเทียบข้อความปกติ
ดังนั้นถ้าต้องการเปรียบเทียบเพียงวันที่เท่านั้น ให้เปลี่ยนไปใช้ Carbon::today()->toDateString() แทน
ผลลัพธ์การเปรียบเทียบจะเป็นดังภาพด้านล่าง
Menu
Thursday, June 13, 2019
Thursday, May 30, 2019
[Database - SQL] วิธีคำนวณระยะทางระหว่างพิกัด (Latitude, Longitude) 2 พิกัด
[Database - SQL] How to Calculate Distance between 2 Points of (Latitude, Longitude)
เนื่องจากผิวโลกมีความโค้ง จึงต้องใช้ haversine formula ในการคำนวณระยะทางที่สั้นที่สุดระหว่างพิกัดสองพิกัดบนผิวโลก
สมมติว่า ตาราง location ประกอบด้วยคอลัมน์ lat และ lon ที่เก็บค่า Latitude และ Longitude ตามลำดับของแต่ละพิกัด และพิกัดที่สนใจอยู่ที่ตำแหน่ง ([lat0], [lon0])
เราสามารถค้นหาพิกัดที่อยู่ใกล้เคียงกับพิกัดที่เราสนใจ ภายในรัศมี 1 กิโลเมตร โดยใช้ SQL ดังต่อไปนี้
โดยที่
สมมติว่า ตาราง location ประกอบด้วยคอลัมน์ lat และ lon ที่เก็บค่า Latitude และ Longitude ตามลำดับของแต่ละพิกัด และพิกัดที่สนใจอยู่ที่ตำแหน่ง ([lat0], [lon0])
เราสามารถค้นหาพิกัดที่อยู่ใกล้เคียงกับพิกัดที่เราสนใจ ภายในรัศมี 1 กิโลเมตร โดยใช้ SQL ดังต่อไปนี้
SELECT *, 6373 * 2 * ATAN2( SQRT( POW(SIN((lat - [lat0]) * PI() / 180 / 2), 2) + COS(ABS([lat0]) * PI() / 180) * COS(ABS(lat) * PI() / 180) * POW(SIN((lon - [lon0]) * PI() / 180 / 2), 2) ), SQRT(1-( POW(SIN((lat - [lat0]) * PI() / 180 / 2), 2) + COS(ABS([lat0]) * PI() / 180) * COS(ABS(lat) * PI() / 180) * POW(SIN((lon - [lon0]) * PI() / 180 / 2), 2)) ) ) as dist FROM `location` HAVING dist < 1 ORDER BY dist
โดยที่
- 6373 เป็นรัศมีของโลก มีหน่วยเป็นกิโลเมตร
- lat เป็นค่า Latitude ของ record ในตาราง location
- lon เป็นค่า Longitude ของ record ในตาราง location
- [lat0] เป็นค่า Latitude ของพิกัดที่เราสนใจ
- [lon0] เป็นค่า Longitude ของพิกัดที่เราสนใจ
- dist เป็นระยะทางระหว่างพิกัดที่เราสนใจกับพิกัดของ record ในตาราง location มีหน่วยเป็นกิโลเมตร
Monday, May 27, 2019
[Laravel - Exception] ข้อควรระวัง: โปรดระวังการใช้ Exception class ใน catch เมื่อใช้ try...catch
[Laravel - Exception] Warning: Using Wrong Exception Class in catch when Using try...catch
try...catch ถูกใช้ในการ handle exception
อย่างไรก็ตาม มีบางกรณีที่ทำให้ exception ไม่ถูก handle ในส่วนของ catch และถูก throw ออกไปโดยไม่มีการ handle ใดๆ
ผมจะใช้โค้ดตัวอย่างเพื่อแสดงว่า โค้ดส่วนใดที่คุณต้องระวังเป็นพิเศษ
โค้ดทั้งสองตัวอย่างเป็น Laravel commands ที่สามารถเรียกใช้งาน โดยรันคำสั่งใน console ดังนี้
อย่างไรก็ตาม มีบางกรณีที่ทำให้ exception ไม่ถูก handle ในส่วนของ catch และถูก throw ออกไปโดยไม่มีการ handle ใดๆ
ผมจะใช้โค้ดตัวอย่างเพื่อแสดงว่า โค้ดส่วนใดที่คุณต้องระวังเป็นพิเศษ
โค้ดทั้งสองตัวอย่างเป็น Laravel commands ที่สามารถเรียกใช้งาน โดยรันคำสั่งใน console ดังนี้
php artisan test-exception
Friday, May 17, 2019
[Laravel - AWS] วิธีการตั้งค่า timeout สำหรับ InstanceProfileProvider ของ AWS PHP SDK
[Laravel - AWS] How to Set Timeout for InstanceProfileProvider of AWS PHP SDK
InstanceProfileProvider เป็น credential provider ที่ใช้ credentials จาก EC2 metadata server
สำหรับข้อมูลของ EC2 metadata server อ่านได้ที่ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
ใน InstanceProfileProvider class ของ aws-php-sdk library เราจะพบ constructor ตามภาพด้านล่าง
เราจะพบตัวแปร $config['timeout'] แต่เราจะตั้งค่ามันยังไง!!!
สำหรับข้อมูลของ EC2 metadata server อ่านได้ที่ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
ใน InstanceProfileProvider class ของ aws-php-sdk library เราจะพบ constructor ตามภาพด้านล่าง
เราจะพบตัวแปร $config['timeout'] แต่เราจะตั้งค่ามันยังไง!!!
Thursday, May 16, 2019
[ELK - Logstash] วิธีการ parse ข้อความ Log ที่มีหลายรูปแบบ โดยใช้ GROK
[ELK - Logstash] How to Parse Multiple Log Message by Using GROK
สำหรับการ parse ข้อความโดย GROK คุณต้องเพิ่ม grok filter ตามตัวอย่างด้านล่าง (อ้างอิงจาก https://www.elastic.co/guide/en/logstash/2.1/plugins-filters-grok.html#plugins-filters-grok-match)
คุณสามารถทดสอบ pattern ที่คุณสร้างขึ้นกับข้อความจริง ได้ที่ https://grokdebug.herokuapp.com/
สำหรับรายละเอียดของ GROK patterns อ่านได้ที่ https://github.com/elastic/logstash/blob/v1.4.0/patterns/grok-patterns
คุณสามารถทดสอบ pattern ที่คุณสร้างขึ้นกับข้อความจริง ได้ที่ https://grokdebug.herokuapp.com/
Subscribe to:
Posts (Atom)