วันเสาร์ที่ 28 ธันวาคม พ.ศ. 2562

Angular 8 - Tutorial Your First App กับการสร้าง Component

ตัวอย่าง App แรกของ Tutorial อ่านได้จาก https://angular.io/start
เราจะเริ่มสร้าง Component โดยใช้ Tutorial Your First App เป็น Guide

โดยขั้นแรกเราจะทำ Title แล้วก็ปุ่ม Cart พร้อมกับ Product 1 บรรทัดตามรูป

เริ่มโดยใช้คำสั่ง ng generate component [component-name]
ng generate component top-bar
ng generate component product-list

วันพฤหัสบดีที่ 26 ธันวาคม พ.ศ. 2562

Angular 8 - ติดตั้ง Node.js และ Angular กับพื้นฐานโครงสร้าง

การใช้ Angular 8 ต้องติดตั้ง Node.js Version 10 อ้างอิงตาม https://angular.io/guide/setup-local
ติดตั้ง Node.js ไปโหลดตามนี่เลย https://nodejs.org/en/

หลังจากติดตั้ง Node.js เรียบร้อยแล้วให้ทำการติดตั้ง Angular
# npm install -g

# In global mode (ie, with -g or --global appended to the command), 
# it installs the current package context (ie, the current working directory) as a global package.

npm install -g @angular/cli

เมื่อทำการติดตั้งเรียบร้อยแล้วเราจะสามารถใช้คำสั่ง ng ในการสร้าง Project Angular ได้
คำสั่ง ng new สำหรับสร้าง Project และ ng serv เพื่อใช้รัน Angular
# new (n) Creates a new workspace and an initial Angular app.
ng new my-app

# serve (s) Builds and serves your app, rebuilding on file changes.
cd my-app
ng serve --open

เมื่อ Run Server เสร็จแล้วเปิด Browser ไปที่ http://localhost:4200 จะเจอหน้า Welcome แนะนำการเขียนเบื้องต้น

วันอาทิตย์ที่ 22 ธันวาคม พ.ศ. 2562

Laravel 5.8 - ระบบ Authentication

สร้าง Project ผ่าน PHP Composer ส่วนนี้ผมใช้ชื่อว่า laravel_authen
composer create-project --prefer-dist laravel/laravel . "5.8.*"

เสร็จแล้วเข้าไปดูที่ Folder /database/migrations เราจะเห็นไฟล์ที่ มีชื่อท้ายว่า create_users_table.php และ create_password_reset_table.php จะเป็นไฟล์สำหรับใช้สร้าง User Table และ Password Reset Table ให้เราทำการเชื่อต่อ Project ของเราเข้ากับ Database ก่อน โดยไปที่ไฟล์ /config/database.php และไฟล์ .env แล้วทำการแก้ไขค่าการเชื่อมต่อกับ Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=
'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'laravel_Db'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

เมื่อทำการ Config ค่าการเชื่อมต่อกับ Database เรียบร้อยแล้ว ทำการสร้างตารางโดยสั่ง Migrate ผ่าน Artisan เมื่อสร้างเรียบร้อยแล้วให้เข้าไปตรวจสอบที่ Database ของเรา จะเห็นว่ามีตารางเพิ่มมา 2 - 3 ตารางคือ migrations, password_resets และ users
php artisan migrate

วันศุกร์ที่ 20 ธันวาคม พ.ศ. 2562

Laravel 5.8 - การเชื่อมต่อกับฐานข้อมูล MySQL

โครงสร้างใน Folder Project

- app : เก็บ Model และ Controller
- config : เก็บค่า Config ต่าง ๆ
- database : เก็บ Migration และ Seeding สำหรับสร้าง Table
- public : เก็บ CSS, JS ไฟล์ต่างๆ ที่ให้เข้าถึงได้ และ .htaccess ด้วย
- resource : เก็บส่วนการแสดงผล View
- routes : เก็บไฟล์ที่ใช้กำหนด Url
- storage : เก็บข้อมูล Caches, Session, ไฟล์ Blade Engine ที่ Complied
- tests : เก็บ Automated Test
- *.env : เก็บ Config Laravel กับ ฐานข้อมูล

การ Config ไฟล์

อ่านเพิ่มเติมได้ที่ https://laravel.com/docs/5.8/database
ไฟล์ที่เราต่อกับฐานข้อมูลจะใช้มี 2 จุด
1. project/config/database.php
2. .env

แก้ไขในส่วนของ Host, Port, DBName, Username และ Password ให้ถูกต้อง
'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'laravel_db'),
            'username' => env('DB_USERNAME', 'laravel'),
            'password' => env('DB_PASSWORD', 'laravel'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

แก้ไขให้ถูกต้องเหมือนกัน
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=

วันพุธที่ 18 ธันวาคม พ.ศ. 2562

Laravel 5.8 - การติดตั้ง Laravel และ MVC

ข้อมูลจาก บทเรียนจาก Kong Ruksiam

ก่อนอื่นให้ทำการติดตั้ง XAMPP
และ Composer

เมื่อทำการติดตั้งเสร็จแล้วตรวจสอบผ่าน Command โดยคำสั่ง
# แสดง Version ของ PHP
php -version
PHP 7.3.12 (cli) (built: Nov 19 2019 13:58:02) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.12, Copyright (c) 1998-2018 Zend Technologies

# แสดง Version ของ Composer
composer --version
Composer version 1.9.1 2019-11-01 17:20:17

วันจันทร์ที่ 16 ธันวาคม พ.ศ. 2562

(Shortcut) Update NPM and Node.JS

คำสั่งที่ใช้ในการ Update npm
# แสดง Version ของ npm
npm -v 

# Upgrade npm เป็น Version ล่าสุด
npm install -g npm@latest 

คำสั่งที่ใช้ในการ Update node.js
# แสดง Version ของ node.js
node -v 

# Upgrade node.js เป็น Version ล่าสุด
npm install -g node 

วันพฤหัสบดีที่ 28 พฤศจิกายน พ.ศ. 2562

การล้างข้อมูลในฐานข้อมูลและโหลด Config ใหม่ให้ DSpace CRIS

การล้างข้อมูลนั้นเราทำหลายครั้งก่อนที่เราจะใช้งาน DSpace CRIS จริงๆ เพราะว่าต้องทดลองใช้งานหลาย ๆ อย่าง จึงทำให้ฐานข้อมูลมีข้อมูลที่เราไม่ใช้จำนวนมาก
sudo su - postgres

psql dspace -c "DROP EXTENSION pgcrypto;"
exit;

sudo /data/dspace/bin/dspace database info
sudo /data/dspace/bin/dspace clean


sudo su - postgres
psql dspace -c "CREATE EXTENSION pgcrypto;"
exit;
# - load-cris-configuration: Load CRIS configuration from an XLS file
# - export-cris-configuration: Export CRIS configuration from an XLS file

sudo /data/dspace/bin/dspace load-cris-configuration -f /data/upload/configuration.xls

การ Load Registry ครั้งแรกเมื่อทำการ Load แล้วให้เราทำการ Restart Server ก่อน 1 ครั้งสำหรับ Registry Schema ใหม่
sudo /data/dspace/bin/dspace registry-loader -metadata /data/upload/patent-types.xml

วันอาทิตย์ที่ 24 พฤศจิกายน พ.ศ. 2562

DSpace CRIS แก้ DC Type ที่เป็น All Theses ขึ้น ???

ข้อมูลจาก: DSpace Tech Support



เมื่อทำการทดสอบใช้งาน DSpace CRIS หลังจากติดตั้งไปสักพัก เมื่อทำการเพิ่ม Item แล้วเลือก DC Type เป็น Theses เราจะพบว่าหน้าแรกที่ใช้สรุปว่ามี Item ประเภทไหนบ้าง เราจะเจอความผิดพลาดที่ว่า All Theses หาข้อความไม่เจอ

วันศุกร์ที่ 22 พฤศจิกายน พ.ศ. 2562

PHP ปรับค่า File Upload และค่า Timeout

ข้อมูลจาก: Sitepoint | A2Hosting | Strackoverflow | Mediatemplate

แก้ไขไฟล์ "php.ini" ใน "etc/php/5.6/apache2/php.ini" เสร็จแล้วให้ Restart Apache2
# รองรับการอัพโหลดไฟล์ที่ 300MB
upload_max_filesize = 300M

# รองรับการส่งไฟล์ผ่าน POST ที่ 300MB
post_max_size = 300M

# เพิ่มเวลาในการ Execution และ Input เป็น 600 วินาที
max_execution_time = 600
max_input_time = 600

# เพิ่มหน่วยความจำให้ PHP
memory_limit = 512M

วันเสาร์ที่ 16 พฤศจิกายน พ.ศ. 2562

[Linux Container] - เปิดใช้ SSH ใน Linux Container

# Install OpenSSH Server
apt install openssh-server

# adduser 
adduser sarankon

# usermod -aG  
usermod -aG sudo sarnakon

แก้ไข Config File ที่ "/etc/ssh/ssh_config" โดยเปิด PasswordAuthentication yes
Host *
#   ForwardAgent no
#   ForwardX11 no
#   ForwardX11Trusted yes
    PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0


แก้ไข Config File ที่ "/etc/ssh/sshd_config" โดยเปิด PasswordAuthentication yes
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
systemctl restart ssh

วันอาทิตย์ที่ 10 พฤศจิกายน พ.ศ. 2562

การติดตั้ง DSpace CRIS 5 ใน Ubuntu 18.04

การเตรีมเครื่องติดตั้ง DSpace CRIS 5 เราจะทำตามขั้นตอนตามเว็บ โดยปัญหาที่เจอคือ OpenJDK เป็น Version 11 จะไม่สามารถใช้ Maven สั่ง Package ได้ให้เราทำการ ลง OpenJDK เป็น Version 8 ก่อนแล้วทำการติดตั้ง Maven ที่หลัง เพราะหากทำการติดตั้ง Maven ก่อนจะเป็นการเลือกเอา OpenJDK Version ล่าสุดมา
แล้วทำไมต้องใช้ OpenJDK Version 8 ? คือว่า Maven ตอนที่เราสั่ง Package มันจะต้องใช้ไฟล์ tools.jar ในของ Java ที่อยู่ใน Folder /lib/ ใน Java ซึ่งใน OpenJDK Version 9 ขึ้นไปจะไม่มีแล้ว อันนี้เราไม่รู้นะว่าทำไม ?
sudo apt install openjdk-8-jdk
sudo apt install ant git maven 

เสร็จแล้วก็ทำการลง Tomcat8 และ PostgreSQL แล้วทำการตั้งค่าตาม Manual แต่ Command อาจไม่ตรงตามนั้นแต่ก็ได้เหมือนกัน
sudo apt install tomcat8 postgresql postgresql-contrib

เมื่อเตรีมเครื่องพร้อมแล้วก็ทำตามขั้นตอนได้
การติดตั้ง PostgreSQL อ่านที่นี้, การติดตั้ง DSpace CRIS

วันจันทร์ที่ 4 พฤศจิกายน พ.ศ. 2562

การเพิ่ม Admin และเพิ่ม Printer สำหรับ CUPS (Printer Server)

ข้อมูลจาก https://help.ubuntu.com/lts/serverguide/cups.html


การเพิ่ม Admin

เมื่อต้องการเพิ่ม Admin Account ให้ใช้คำสั่ง "sudo usermod -aG lpadmin [username]"
แล้วให้ทำการ Restart CUPS 1 ครั้ง จากนั้นเวลาใช้ให้เข้าผ่าน Protocal "https://" ไปที่ Administrator
เมื่อกดใช้ Function ต่างๆ ก็จะมี Pop-Up ขึ้นมาถาม Username กับ Password
#sudo usermod -aG lpadmin [username]
sudo usermod -aG lpadmin sarankon