Menu

Tuesday, April 30, 2019

[Laravel - Laradock] การแก้ปัญหา "Fatal error loading the DB: Invalid argument" ของ Redis ใน Laradock
[Laravel - Laradock] How to Fix "Fatal error loading the DB: Invalid argument" of Redis in Laradock

เมื่อสั่ง docker-compose up -d redis ใน Laradock จะไม่สามารถ start ได้ และเมื่อดู log จะพบ error ดังรูปข้างล่าง
วิธีแก้ไข คือ ลบ folder redis ที่ path C:\Users\{user}\.laradock\data\redis แล้วสั่งรัน docker-compose up -d redis ใหม่อีกครั้ง ({user} แทนด้วย username ของ user ที่จะรันคำสั่ง)

Tuesday, April 23, 2019

[ELK - Filebeat] การติดตั้งและตั้งค่า Filebeat บน Ubuntu เพื่อเก็บ log ใน Logstash
[ELK - Filebeat] How to Install and Configure Filebeat on Ubuntu for Storing Log in Logstash

การติดตั้ง Filebeat สามารถทำได้โดยรันคำสั่งดังนี้
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.2-amd64.deb
dpkg -i filebeat-6.6.2-amd64.deb
Path ของ Filebeat ที่ควรรู้มีดังนี้
config path/etc/filebeat
log path /var/log/filebeat

กรณีใช้ Filebeat ยิง log ไปที่ Logstash จำเป็นจะต้อง load template ไปที่ elasticsearch แบบ manual โดยใช้คำสั่งดังนี้
filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'

[Database - SQL] วิธีการ Query หา Record ที่มีค่ามากที่สุดหรือน้อยที่สุด
[Database - SQL] How to Query a Record that Has Maximum or Minimum Value

สมมติว่า user_login เป็นตารางในฐานข้อมูลที่มีคอลัมน์ login_at สำหรับเก็บวันเวลาที่ผู้ใช้งาน login เข้าใช้งานระบบ

ในกรณีที่เราต้องการหา record ของการ login เข้าใช้งานล่าสุดของผู้ใช้งานทุกคน (login_at มีค่ามากที่สุด) เราสามารถใช้คำสั่ง SQL ตามด้านล่างนี้ได้เลย
SELECT * 
FROM user_login 
WHERE EXISTS (
    SELECT 1
    FROM user_login AS ul
    GROUP BY user_id
    HAVING user_id = users_login.user_id AND
        MAX(login_at) = user_login.login_at
)
ในทางตรงกันข้าม ถ้าเราต้องการหา record ของการ login เข้าใช้งานครั้งแรกสุดของผู้ใช้งานทุกคน (login_at มีค่าน้อยที่สุด) เราสามารถใช้คำสั่ง SQL ตามด้านล่างนี้ได้เลย
SELECT * 
FROM user_login 
WHERE EXISTS (
    SELECT 1
    FROM user_login AS ul
    GROUP BY user_id
    HAVING user_id = users_login.user_id AND
        MIN(login_at) = user_login.login_at
)

Wednesday, April 17, 2019

[Ubuntu] วิธีการเพิ่มหรือแก้ไขผู้ใช้งานบน Ubuntu
[Ubuntu] How to Add and Modify User on Ubuntu

คำสั่งสำหรับเพิ่ม account ผู้ใช้งานใหม่
adduser <username>
คำสั่งสำหรับเพิ่มผู้ใช้งานของคุณเข้ากลุ่ม sudo เพื่ออนุญาตให้ผู้ใช้งานคนนั้นรันคำสั่งด้วย administrative privileges ได้ โดยใส่ sudo นำหน้า
usermod -aG sudo <username>
คำสั่งสำหรับสลับเป็นผู้ใช้งานอื่นชั่วคราว ในขณะที่ผู้ใช้งานเป็น root
su - <username>
คำสั่งสำหรับเปลี่ยนรหัสผ่านผู้ใช้งานของคุณ
passwd <username>
คำสั่งสำหรับตรวจสอบผู้ใช้งานปัจจุบัน
whoami

Thursday, April 11, 2019

[Blogger] การทำ Code Snippet สำหรับ Blogger ที่เป็น HTTP
[Blogger] How to Make Code Snippet for Blogger (HTTP Version)

  1. เข้าไปที่ Theme 
  2. กดปุ่ม Edit HTML ภายใต้ Live on Blog
  3. Copy script ด้านล่างไปใส่ไว้ในส่วนของ head ของ theme
  4. <link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
    <link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
    
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
    <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js' type='text/javascript'/>
    <script language='javascript'>
        SyntaxHighlighter.config.bloggerMode = true;
        SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/current/scripts/clipboard.swf';
        SyntaxHighlighter.all();
    </script>
    
  5. กดปุ่ม Save theme
  6. ใส่ code ตามด้านล่างในส่วนของ HTML ของ Post
  7. <pre class="brush: html">
        <link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
        <link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
    </pre>
    
หมายเหตุ: เราไม่จำเป็นต้องใส่ brush ทุกอันในข้อ 3 สามารถเลือกเฉพาะอันที่ใช้เท่านั้นได้ สำหรับ brush เพิ่มเติม สามารถดูได้จาก http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/

Thursday, April 4, 2019

[Laravel - Exception] วิธีการแก้ไข exception หลังจากพลาดรันคำสั่ง php artisan config:cache
[Laravel - Exception] How to Fix Exception after Running php artisan config:cache Command

คำอธิบายของคำสั่ง config:cache คือ สร้าง cache file สำหรับการโหลดค่า config ที่เร็วขึ้น (คุณสามารถรันคำสั่ง php artisan ใน console เพื่อดูคำอธิบายของแต่ละคำสั่งได้)

อย่างไรก็ตาม ผลกระทบจากการรัน  php artisan config:cache อาจจะประกอบด้วย
  1. Website/APIs ของคุณจะตอบกลับด้วย error code 500 Internal Server Error เสมอ โดยไม่มี log ใดๆใน laravel.log
  2. ทุกคำสั่งที่รันด้วย php artisan จะ throw exception ตามภาพด้านล่าง
  3. ทุกคำสั่งที่รันด้วย composer จะรันได้ตามปกติ

วิธีแก้ไข exception นี้ คือ การลบ cache file ที่ถูกสร้างขึ้นมา ซึ่งสำหรับ Laravel 5.6 cache file ดังกล่าวจะอยู่ที่ bootstrap/cache/config.php