Menu

Showing posts with label file. Show all posts
Showing posts with label file. Show all posts

Friday, April 10, 2020

[Laravel] การบันทึกไฟล์ JSON ใน Laravel Tinker
[Laravel] How to Save JSON File in Laravel Tinker

Tinker ช่วยให้เราสามารถตอบโต้กับ Laravel application ของเราทั้งหมดผ่านทาง command line ได้

เราสามารถเข้าใช้ Tinker ได้ โดยรันคำสั่งดังนี้
php artisan tinker
ส่วนใหญ่เราจะใช้ Tinker ช่วยในการตรวจสอบความถูกต้องของข้อมูลในฐานข้อมูล โดยเราจะใช้ Eloquent ในการ query ข้อมูลขึ้นมา และในบางครั้งเราต้องการส่งออกผลการ query ออกเป็นไฟล์ เพื่อนำไปตรวจสอบเพิ่มเติม

สมมติว่า เรา query ข้อมูลใน Tinker แล้วเก็บใส่ตัวแปรดังนี้
$users = User::all();
และเรามีการตั้งค่า disks ในไฟล์ config/filesystems.php ดังนี้
...
    'disks' => [
        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],
...
การส่งออกผลการ query ข้างต้นออกเป็นไฟล์ JSON เราจะรันคำสั่งใน Tinker ดังนี้
Storage::disk('local')->put('users.json', json_encode((array) $users, JSON_PRETTY_PRINT));
ไฟล์ผลการ query ที่ถูกสร้างอยู่ที่ path storage/app/users.json

Tuesday, March 10, 2020

[Docker - MySQL] วิธีการหลีกเลี่ยงกรณีที่ไม่สามารถรัน mysql:5.7 container ได้ เนื่องจากมีข้อผิดพลาด "Operating system error number 22 in a file operation"
[Docker - MySQL] Workaround for mysql:5.7 Container Cannot Start Due to "Operating system error number 22 in a file operation"

เนื่องจากมีหลายโปรเจคที่ใช้ฐานข้อมูลเป็น MySQL ผมจึงรัน MySQL Docker ผ่านทาง Docker Compose (บน Docker Toolbox ของ Windows) เพื่อใช้เป็นฐานข้อมูล ซึ่งจะมีการตั้งค่าในส่วน mysql service ใน docker-compose.yml ตามด้านล่างนี้
mysql:
    container_name: mysqlserver
    image: mysql:5.7
    ports:
        - 3306:3306
    volumes:
        - ./mysql:/var/lib/mysql
อย่างไรก็ตาม ปัญหานึงที่ผมเจอ คือ Container ของ MySQL จะหยุดการทำงาน เมื่อรันไปสักพัก เมื่อตรวจสอบ Log ของ Container จะเจอ error ดังนี้
2020-03-06T08:39:40.454013Z 0 [ERROR] InnoDB: Operating system error number 22 in a file operation.
2020-03-06T08:39:40.454196Z 0 [ERROR] InnoDB: Error number 22 means 'Invalid argument'
2020-03-06T08:39:40.454258Z 0 [ERROR] InnoDB: File ./ib_logfile101: 'aio write' returned OS error 122. Cannot continue operation
2020-03-06T08:39:40.454584Z 0 [ERROR] InnoDB: Cannot continue operation.
จากการตรวจสอบเบื้องต้นยังไม่สามารถหาวิธีแก้ไขได้ แต่มีวิธีการหลีกเลี่ยง error ข้างต้นไม่ให้เกิดขึ้น  โดยแก้ไขการตั้งค่าในส่วน mysql service ใน docker-compose.yml ดังนี้
mysql:
    container_name: mysqlserver
    image: mysql:5.7
    ports:
        - 3306:3306
    # volumes:
    #     - ./mysql:/var/lib/mysql

Thursday, February 20, 2020

[Bash Script] การสร้าง Link ระหว่าง File หรือ Folder
[Bash Script] How to Create Link between File or Folder

การสร้าง link file หรือ folder จะช่วยเพิ่มความสะดวกในการใช้งาน

สมมติว่า เราต้องเข้าไปที่ folder /usr/share/nginx/myweb ทุกครั้ง เพื่อแก้ไขหน้าเว็บ

เราสามารถสร้าง link /usr/share/nginx/myweb มาที่ folder /app

หลังจากนั้น หากเราต้องการแก้ไขหน้าเว็บ สามารถเข้าไปที่ /app/myweb ได้เลย

คำสั่งสำหรับสร้าง link file เป็นดังนี้
ln source_file destination_folder
เช่น
ln /usr/share/nginx/myscript.sh ~/app/

Friday, December 6, 2019

[Security] การเข้ารหัสและถอดรหัสไฟล์โดยใช้ Public และ Private Keys
[Security] File Encryption and Decryption by Using Public and Private Keys


สมมติว่า มีไฟล์ที่เกี่ยวข้องดังนี้
  • key.pem เป็นไฟล์ Private key
  • pub.pem เป็นไฟล์ Public key
  • data.txt เป็นไฟล์ข้อความที่ต้องการเข้ารหัส
หมายเหตุ กรณีที่ยังไม่มีไฟล์ key.pem และ pub.pem อ่านวิธีสร้างได้ที่ การสร้าง Private Key และ Public Key ด้วย OpenSSL