Menu

Tuesday, October 29, 2019

[Batch Script] วิธีการ Disable การเปลี่ยนภาพพื้นหลังหน้าจอ
[Batch Script] How to Disable Changing Desktop Background

กรณีที่เราต้องการตั้งค่าการเปลี่ยนภาพพื้นหลังหน้าจอผ่าน Batch Script เราจำเป็นต้องเปลี่ยนค่าของ Registry แทนการตั้งค่าผ่าน UI

ขั้นแรก เราต้องหาให้ได้ว่า Registry ตัวใดที่ควบคุมการตั้งค่าการเปลี่ยนภาพพื้นหลัง ซึ่งสามารถหาได้จากลิ้งค์ข้างล่างนี้
How to stop people from changing your Windows 10 desktop wallpaper

ขั้นต่อไป เราต้องเขียน Batch Script ที่มีคำสั่งตามด้านล่างนี้ เพื่อเพิ่ม Key และ Value ของ Registry ข้างต้น
REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop /f /v NoChangingWallPaper /t REG_DWORD /d 1
สามารถอ่านเพิ่มเติมได้ที่ Batch Script - Adding to the Registry

กรณีที่เราต้องการลบการตั้งค่าข้างต้น เราสามารถรันคำสั่งตามด้านล่างนี้ใน PowerShell
REG DELETE HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop /f /v NoChangingWallPaper
สามารถอ่านเพิ่มเติมได้ที่ Batch Script - Deleting from the Registry

Monday, October 14, 2019

[Windows] ข้อควรระวัง: การตั้งค่า Environment Variables สำหรับ User ที่ถูกสร้างใหม่
[Windows] Warning: Setting Environment Variables for New User

กรณีนี้เริ่มจากเราสร้าง User ใหม่ ชื่อ Arzeroid โดยไม่ได้ใช้ User lenovo เดิมที่มีสิทธิ์เป็น Administrator ที่มากับเครื่องในตอนแรก

หลังจากนั้นทำการติดตั้ง Docker Toolbox ใน Arzeroid ผลปรากฏว่า ไม่สามารถรัน Docker Toolbox ได้ โดยได้ข้อผิดพลาดว่า หาไฟล์ vboxmanage.exe ไม่เจอ

เมื่อทำการตรวจสอบ พบว่า ในหน้าจอของ Environment Variables ของ Arzeroid มีส่วนของ User variables เป็นของ lenovo และ Docker Toolbox ก็มาสร้าง Environment Variable ไว้ในส่วนนี้ ดังภาพด้านล่าง


เมื่อตรวจสอบ User ที่กำลังใช้งานอยู่ผ่าน Windows PowerShell ก็ได้เป็น Arzeroid ตามภาพด้านล่าง


เราจึงย้าย User variables ที่ถูกสร้างขณะติดตั้ง Docker Toolbox มาใส่ใน System variables ผลที่ได้คือ สามารถรัน Docker Toolbox ได้ตามปกติ

[Security] การสร้าง Public Key และ Private Key ด้วย OpenSSL
[Security] How to Generate Public and Private Keys with OpenSSL

สำหรับการสร้าง RSA key หรือ Private Key สามารถใช้คำสั่งดังนี้
openssl genrsa -out key.pem 1024
openssl rsa -in key.pem -text -noout
Private Key ที่ได้จะอยู่ในไฟล์ชื่อ key.pem

สำหรับการสร้าง Public Key สามารถใช้คำสั่งดังนี้
openssl rsa -in key.pem -pubout -out pub.pem
openssl rsa -in pub.pem -pubin -text -noout
Public Key ที่ได้จะอยู่ในไฟล์ชื่อ pub.pem

Friday, October 11, 2019

[Batch Script] วิธีการใช้วันที่และเวลาสำหรับชื่อไฟล์ในไฟล์ Batch
[Batch Script] How to Use Date and Time for Filename in Batch File

สำหรับค่าของวันที่จะอยู่ในตัวแปรชื่อ date ซึ่งเราสามารถเรียกใช้ตามตัวอย่างดังนี้
echo Date format = %date%
echo dd = %date:~4,2%
echo mm = %date:~7,2%
echo yyyy = %date:~10,4%
สำหรับค่าของเวลาจะอยู่ในตัวแปรชื่อ time ซึ่งเราสามารถเรียกใช้ตามตัวอย่างดังนี้
echo Time format = %time%
echo hh = %time:~0,2%
echo mm = %time:~3,2%
echo ss = %time:~6,2%
จากทั้ง 2 ตัวอย่างข้างต้นเป็นการใช้ substring ในการดึงค่าส่วนที่เราต้องการ ซึ่งจะมีรูปแบบการใช้งานดังนี้
%variable_name:~start_position,length%
โดยที่
  • variable_name เป็นชื่อตัวแปรที่เก็บข้อความที่ต้องการตัด
  • start_position เป็นตำแหน่งเริ่มต้นของข้อความที่ต้องการตัด
  • length เป็นความยาวของข้อความที่ต้องการตัด

กรณีที่เราต้องการตั้งชื่อไฟล์ โดยมีวันที่และเวลาในรูปแบบ yyyymmdd_hhmmss อยู่ในชื่อไฟล์ด้วย เราสามารถใช้คำสั่งดังนี้
set filename=test_%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%%time:~6,2%.7z
echo %filename%
หมายเหตุ ตำแหน่งเริ่มต้นของ substring แต่ละชุดจะแตกต่างกันไป โดยขึ้นอยู่กับการตั้งค่า Date and time formats ของแต่ละเครื่อง

Thursday, October 3, 2019

[Ubuntu] วิธีการหาชื่อ Operating System และ Version ของ Linux ผ่านทาง Terminal
[Ubuntu] How to Find Name and Version of Operating System in Linux Terminal

เราสามารถใช้คำสั่งต่อไปนี้ในการหาชื่อ Operating System และ Version ใน Linux
cat /etc/os-release
lsb_release -a
hostnamectl

[NodeJS] การติดตั้ง NodeJS และ NPM บน Alpine Linux
[NodeJS] How to Install NodeJS and NPM on Alpine Linux

Alpine Linux เป็นระบบปฏิบัติการที่นิยมใช้บน Docker เนื่องจากมีการติดตั้งเฉพาะ package ที่จำเป็น ทำให้ใช้พื้นที่ในการติดตั้งน้อยกว่า Linux เวอร์ชั่นอื่นๆ

NodeJS ไม่ได้เป็น package ที่จำเป็นสำหรับระบบปฏิบัติการ จึงไม่ถูกติดตั้งมาด้วย

นอกเหนือจากนั้น NodeJS บน Alpine Linux จะไม่ติดตั้ง NPM ให้ด้วย ดังนั้นคุณจำเป็นต้องติดตั้ง nodejs-npm เพิ่มด้วย

จากข้างต้น ทำให้ได้คำสั่งที่ใช้ติดตั้ง ดังนี้
apk add --update nodejs nodejs-npm

[Laravel - Model] วิธีการ Query Pivot Table ของ Laravel Model
[Laravel - Model] How to Query Pivot Table of Laravel Model

การ select ข้อมูลโดยเอาข้อมูลจาก Pivot Table ด้วย
$this->devices()->withPivot()->get();
การอ้างอิงถึง column ใน Pivot Table จะใช้ pivot_ นำหน้าชื่อ column ที่ต้องการ ตามตัวอย่างข้างล่าง
$user->devices()->orderBy('pivot_updated_at', 'desc')->paginate();
การ update ข้อมูลใน Pivot Table โดยอ้างอิงจาก relation
$this->devices()->updateExistingPivot($deviceId, [
    'status' => 'active',
    'updated_at' => Carbon::now(),
]);
การรัน statement ที่ Pivot Table โดยตรง ซึ่งต้องใส่เงื่อนไขใน where เอง 
$this->devices()->newPivotStatement()
    ->where('user_id', $userId)
    ->whereIn('device_id', $deviceIds)
    ->update(['status' => 'inactive']);
หมายเหตุ การรัน statement ที่ Pivot Table โดยตรง สามารถเปลี่ยนจาก update เป็น delete เพื่อลบข้อมูล หรือเป็น get เพื่อดึงข้อมูลมาแสดง