ทดลอง LINE MOBILE บริการมือถือใหม่ เล่น LINE ฟรี

ปกติเป็นมนุษย์ที่เรียกได้ว่าเกลียด LINE เข้าเส้น เพราะเหตุผลหลายๆ อย่างของ service ที่มันไม่ตอบโจทย์ชีวิต! และค่อนข้างสร้างความรำคาญ เลยตัดสินใจไม่ใช้งาน แต่ก็มี Account นะ จนพักหลัง งานที่ทำอยู่ต้องสร้างกลุ่ม LINE ขึ้นมาเพื่อตอบโต้กับ User ก็เลยหันมาพึ่งพา Service ของ LINE อีกครั้ง แถมช่วงนี้ LINE เปิด API ให้ใช้งานได้เยอะมากขึ้น ก็เลยเข้ามาครึ่งตัวละ ใช้ LINE Notify ด้วย LINE@ ด้วยทำให้ต้องพึ่งพา Service ของ LINE มากขึ้น (แต่ก็ยังรำคาญอยู่ดีนะ 55)

จนได้ข่าวว่า LINE เปิด Service ใหม่ เป็นบริการมือถือ โดยใช้ชื่อว่า LINE MOBILE ในร่างทรงของ DTAC ก็เลยได้ Invite มาจากเพื่อนจึงขอมาทดสอบดู! ตอนนี้ก็ใช้งานมาได้ เกือบ 1 อาทิตย์แล้ว ซึ่งผมสั่งไปเมื่อวันที่ 15 ส.ค. 60 ประมาณ 10 โมง วันที่ 16 ส.ค. 60 ก็ได้รับ SIM card แล้ว ไวเวอร์ (ไม่ถึง 24 ชม) มาดูวิธีการสมัครง่าย ๆ กัน

* เมื่อได้รับ Invite จากเพื่อนแล้วเท่านั้น

ขั้นตอนการสมัคร

เลือก Package ที่ต้องการ ผู้ใช้งานช่วงเบต้ารับส่วนลด 75% จนถึงวันที่ 31 ธ.ค. 2560

จากนั้นก็เลือกเบอร์

ลงทะเบียนก่อน จะลงทะเบียนด้วย Facebook ก็ได้ สะดวกไปอีกแบบ แต่ในที่นี้ผมเลือก กรอกชื่อ อีเมล รหัสผ่าน

เมื่อเสร็จขึ้นตอนนั้นแล้ว ก็ ลงชื่อเข้าใช้ ให้กรอกที่อยู่ในการจัดส่ง Sim card ให้ครบถ้วน กรอกข้อมูลส่วนบุคคลที่จำเป็น เลขบัตรประชาชน และสุดท้ายต้องยืนยันตัวตนด้วยภาพถ่าย Selfie หน้าตัวเองกับบัตรประชาชน และ ภาพถ่ายบัตรประชาชน ส่งไปครับ (กระบวนการนี้มันช่าง Thailand 4.0 มากๆ)

 

จากนั้นก็รอรับ SIM card ตามที่อยู่ที่เราแจ้งไปครับ

มาแกะซองรับ SIM CARD

ได้รับซิมไวมากๆๆๆ ไม่ถึง 24 ชม. รูปร่างซองก็สวยงามตามท้องเรื่อง

คู่มือใช้งาน อ่านแล้วดูง่ายมากๆ แต่มันก็ไม่ได้ง่ายเสมอไป!

ยัดซิมใหม่

พอใส่ซิมไปแล้ว > เปิดเครื่อง > เริ่มใช้งานได้เลย! เดี๋ยวก่อน… ภาพด้านล่างนี้ เกิดขึ้นตอนที่ผมดาวน์โหลด LINE MOBILE มาแล้ว แต่ยังใช้งาน SIM ไม่ได้ เนื่องจาก ผมเปิด Wi-Fi ไว้ ผมจึงต้องปิด Wi-Fi ก่อน จากนั้นก็ต้องไปเปิดใช้งาน Data บน SIM LINE ด้วยนะครับ เพื่อยืนยันการใช้งาน เมื่อเราเปิดใช้งาน Data แล้ว จะมีข้อความส่งเข้ามาแบบนี้

เมื่อเข้าใช้งาน LINE MOBILE ครั้งแรก จะมี tour แนะนำแบบนี้ครับ

ซึ่ง Interface ก็เหมือนกับบนเว็บ LINE MOBILE ใช้งานง่ายดีครับ

สรุปการใช้งาน

ผมใช้ package L

เน็ตความเร็วสูง 20 GB
เน็ตที่ความเร็ว 256 Kbps (ฟรี) ไม่จำกัด
โทร 300 นาที
SMS (ฟรี) ไม่จำกัด
LINE Messenger ไม่เสียค่าเน็ต (ฟรี) ไม่จำกัด
LINE TV ไม่เสียค่าเน็ต (ฟรี) ไม่จำกัด

สำหรับสัญญาณโทรศัพท์ของ “ใบพัดสีฟ้า” ถือว่าดี แต่ไม่ดีมากถ้าเทียบกับ “น้องอุ่นใจ” เจ้าถิ่น ที่ตอนนี้ไปเช่าเสาของ TOT เปิดโรมมิ่งคลื่น 2100MHz อีก แต่ผมไม่ทราบว่าเขาเช่าส่วนของ cellular ด้วยหรือป่าวนะ มาว่ากันเรื่องของ LINE MOBILE ดีกว่า ความเร็วที่ได้ก็ถือว่าจัดจ้านตาม Package ที่เราเลือก ลองเช็คขนาดท่อได้ เกือบๆ 20/30Mbps ลอง Video Call ก็ชัดเจน ใช้งานได้ แต่ถ้าอยู่ในรถยนต์ สัญญาณค่อนข้าง drop ดู Youtube สบายๆ (แต่เชื่อม wifi ดีกว่าจะได้ไม่เปลืองเน็ต)  และที่ถูกใจคอดราม่ามากๆ คือ สามารถดู LINE TVได้แบบฟรีๆ โดยไม่เสีย data! ความละเอียดสูงสุดด้วย ลื่นดีมาก แต่ยังไม่ได้ลองแชร์ hotspot แล้วต่อเข้า Smart TV หรือ Device อื่นๆ ว่าจะฟรีหรือป่าว ตอนนี้ก็ลองใช้งานไปจนกว่าจะสิ้นปี ดูว่าจะมี promotion อะไรออกมาอีกหรือป่าว อนาคตมันอาจมีการเปลี่ยนแปลง ซึ่งถ้า package ไม่ได้ส่วนลด 75% ราคาก็ไม่ต่างจากค่ายอื่น แต่จุดเด่นจะเหมาะสำหรับคนที่ใช้ LINE เป็นประจำ และใช้งาน Service ต่างๆ ของ LINE จะชอบมาก (แบบค่าย “ตัวจริง” เขาทำน่ะ พวกแพคเกจเหมารวม) ความพอใจที่ได้ใช้งานครั้งนี้ให้
7/10

UPDATE

เนื่องจากเมื่อวันที่ 22/08/2017 เน็ตล่มตั้งแต่ 22.00 – 22.15 แบบไม่รู้สาเหตุ ลอง connect ใหม่ก็ไม่ได้ ลองเปลี่ยน network restriction แล้วก็ไม่ได้ reboot แล้วก็ไม่ได้ จนกลับมาถึงบ้าน (ระยะทาง 10 กม.)  ก็ยังใช้งานไม่ได้ เลยต่อ WiFi แล้วแจ้งทาง CHAT พนักงานตอบว่าแต่เพียงว่า “ทราบเรื่องแล้วกำลังดำเนินแก้ไข” -..- เลยลดคะแนนเหลือ 7/10

#SQL #batch Auto export CSV with SQL Command Line

ความขี้เกียจเป็นบ่อเกิดของนวัตกรรม วันนี้เลยตั้ง schedule เพื่อ backup ข้อมูลออกมาเป็นไฟล์ excel หรือ csv โดยใช้กระบวนการเดียวกับ บันทึกการทำ Auto Backup ด้วย batch แจ้งผ่าน Line Notify API โดยใช้ code สำหรับการ export ดังนี้

ที่มา: https://www.excel-sql-server.com/sql-server-export-to-excel-using-bcp-sqlcmd-csv.htm#

ตัวอย่างที่ใช้งาน

-S {SERVERNAME}
ชื่อเครื่องหากใช้งานในเครื่องเดียวกัน จะไม่ใส่ก็ได้ เพราะระบบจะเข้าหาจาก localhost และเรียกผ่าน .\SQLEXPRESS โดยอัตโนมัติ และหากใช้งานเพื่อเชื่อมต่อไปยัง server อื่น ให้ใส่ชื่อของ server เข้าไปด้วย เช่น -S DBDRSITE

-U “{USER}” -P “{PASSWORD}”
ชื่อ Username และ Password สำหรับการเชื่อมต่อกับ Server ข้างต้น เช่น -U "admin" -P "123456"

-d {DATABASENAME}
ชื่อฐานข้อมูล เช่น hospital_profile

-W
ลบช่องว่างที่ต่อท้าย

“-s,”
ให้เติม comma , เข้าไประหว่าง column

-Q “SELECT * FROM {VIEW}” > {PATH\FILENAME}.csv
query ที่ใช้เพื่อดึงข้อมูล ในที่นี้จะเรียกผ่าน view ที่สร้างไว้ เช่น [dbo].[v_ac_activityfull] และส่งไปเก็บตาม directory ที่ระบุไว้

กันลืม

หากใช้กับ localhost สามารถใช้ -E เพื่อใช้ trusted connection แทนการใส่ -U และ -P (ในที่นี้หมายถึง ใช้ Windows Authentication )

 

บันทึกการทำ Auto Backup ด้วย batch แจ้งผ่าน Line Notify API

ทุกวันนี้แต่ละวันมีข้อมูล (Data) ที่อยู่ในระบบคอมพิวเตอร์จำนวนมหาศาลมาก พอข้อมูลมากขึ้น พื้นที่จัดเก็บ (Storage) ก็ต้องเพิ่มตามไปด้วย และสิ่งสำคัญลำดับถัดมาก็คือ พื้นที่สำหรับสำรองข้อมูล (Backup) ก็ต้องมีมากขึ้น และวิธีการจัดเก็บก็มีเทคนิควิธีการมากมาย แล้วแต่สภาพแวดล้อม และกำลังทรัพย์ที่สามารถจัดสรรได้

ผมเคยใช้ Software สำเร็จรูปสำหรับ backup มันช่วยอำนวยความสะดวกในการสำรองข้อมูลได้มาก และราคาก็จะสูงขึ้นไปตาม features ที่ใช้งานได้ คุณลักษณะเด่นๆ ของ software แต่ละตัวก็จะแตกต่างกันออกไป เช่น รองรับการเชื่อมต่อฐานข้อมูลที่หลากหลาย, มี FTP SFTP SSH, ทำ snapshot, version control, schedule backup, เป็นต้น วันนี้จะเสนอวิธีช่วยตัวเองแบบง่ายๆ โดยไม่พึ่ง software ราคาแพงกัน

ผังการทำงานเป็นดังนี้
  1. เตรียมข้อมูลที่จะสำรอง
  2. ทำรายการของพื้นที่จัดเก็บข้อมูลใดๆ
  3. บีบให้เป็นก้อนเดียวและบันทึกชื่อเป็นวันที่
  4. ส่งไปเก็บที่ปลอดภัย
  5. ส่งไปเก็บบน cloud
  6. แจ้งเข้า Line Notify

ซึ่งไฟล์ backup.bat ก็มีการปรับไปปรับมา จนถึงจุดที่พอใจในระดับหนึ่ง โดย code จะตัดส่วนการทำงานดังนี้

คำนวนเวลาที่ใช้งาน

ใช้สำหรับแจ้งเวลาเริ่มต้นการทำงาน และเวลาสิ้นสุด พร้อมคำนวนเวลาที่ใช้ทั้งหมด ส่งไปแจ้งเตือนทาง Line ที่ตั้งค่าไว้ ในที่นี้ใช้การเรียกไฟล์ด้วยคำสั่ง CALL line.bat <argument> 

Result: คำนวนเวลาที่ใช้งาน

ลบไฟล์เก่า เก็บไว้เพียง 10 ไฟล์ล่าสุด

โดยตรวจสอบค่า "%varRemove%" == "true" จริงตามเงื่อนไขจะดำเนินการลบ ถ้าไม่ใช่ก็ข้ามไปทำขั้นตอนอื่นต่อ ใน IF จะใช้ FOR /F โดยกำหนด path ไปตำแหน่งที่ได้ backup ข้อมูลไว้ ในที่นี้จะใช้นามสกุลไฟล์ .zip ที่ได้หลังจากการบีบอัดแล้ว

Backup Database ด้วย SQLCMD

โดยใช้ SQLCMD เพื่อ Backup database ซึ่งคำสั่งนี้จะเพื่อ Restore ก็ได้ เนื่องจากมันเป็น command สำหรับทำ query รูปแบบการใช้งานโดยใช้การเชื่อมต่อแบบ Windows Authentication เพื่อรัน sql

คู่มือการใช้งาน sqlcmd Utility
https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility

ตัวอย่าง:

Syntax sqlcmd

ตัวอย่างที่ผมใช้ run เพื่อ backup Database ของ ESET Remote Administrator 6 และ ฐานข้อมูลของเครื่องสแกนลายนิ้วมือ HIP (แชร์ประสบการณ์ ติดตั้งเครื่องสแกนนิ้วมือ HIP)

-S .\ERASQL เนื่องจาก ERA แยกเก็บคนละ instance กับ default instance ของ SQL Server

-Q สั่ง query เพื่อไปเก็บที่ '%cd%\data\EARDB.bak'

ดูต่อที่ BACKUP (Transact-SQL)
https://docs.microsoft.com/en-us/sql/t-sql/statements/backup-transact-sql

บีบอัดไฟล์ ด้วย 7Zip

ขั้นตอนนี้จะดึงไฟล์ข้อมูลที่ได้ backup มาไว้ใน directory /data ที่กำหนดไว้ โดยบันทึกชื่อไฟล์รายวัน ตาม format นี้ YYYY-MM-DD-HHMM-backup.zip และเอาไปเก็บไว้ใน directory /send สำหรับส่ง

"%varPathToSevenZip%\7z"  path directory ที่อยู่ของโปรแกรม 7 zip ในที่นี้คือ  C:\Program Files\7-Zip

a -t%varArchiveType% สร้าง archive ด้วยประเภท -t{type of archive} ในที่นี้คือ zip

"%varTargetBackupSet%"จะให้เก็บไฟล์ที่บีบอัดแล้วไว้ที่ไหน ในที่นี้คือ /send

@"%varInclusionsFile%" ผมใช้ List file เก็บไว้ในไฟล์ Inclusions.txt

-xr@"%varExclusionsFile%" ชนิดไฟล์ หรือ directory ที่ไม่ต้องจัดเก็บ เป็น List file Exclusions.txt

7-Zip Command Line Syntax : ชุดคำสั่งหลักของ 7zip
CommandDescription
aAdd
bBenchmark
dDelete
eExtract
hHash
iShow information about supported formats
lList
rnRename
tTest
uUpdate
xeXtract with full paths
7 Zip Command Line Switches Syntax : ชุดคำสั่งเสริมของ 7zip
SwitchDescription
Stop switches parsing
-adShow dialog box in GUI version (7zg)
-aiInclude archive filenames
-anDisable parsing of archive_name
-aoOverwrite mode
-axExclude archive filenames
-bb[0-3]Set output log level
-bdDisable progress indicator
-bs{o|e|p}{0|1|2}Set output stream for output/error/progress
-btShow execution time statistics
-iInclude filenames
-mSet Compression Method
-oSet Output directory
-pSet Password
-rRecurse subdirectories
-saSet Archive name mode
-sccSet charset for for console input/output
-scrcSet hash function
-scsSet charset for list files
-sdelDelete files after including to archive
-semlSend archive by email
-sfxCreate SFX archive
-siRead data from StdIn
-slpSet Large Pages mode
-sltShow technical information
-sniStore NT security information
-snsStore NTFS alternate Streams
-sncExtract file as alternate stream, if there is ‘:’ character in name
-snrReplace ‘:’ character to ‘_’ character in paths of alternate streams
-snhStore hard links as links (WIM and TAR formats only)
-snlStore symbolic links as links (WIM and TAR formats only)
-soWrite data to StdOut
-spdDisable wildcard matching for file names
-speEliminate duplication of root folder for extract archive command
-spfUse fully qualified file paths
-sscSet Sensitive Case mode
-sswCompress files open for writing
-stlSet archive timestamp from the most recently modified file
-stm{HexMask}Set CPU thread affinity mask (hexadecimal number).
-stx{Type}Exclude archive type
-tType of archive
-uUpdate options
-vCreate Volumes
-wSet Working directory
-xExclude filenames
-yAssume Yes on all queries

คู่มือการใช้ 7-Zip Command Line
https://sevenzip.osdn.jp/chm/cmdline/

ตัวอย่างการใช้ 7-Zip Command Line
https://www.dotnetperls.com/7-zip-examples

ส่งไฟล์ผ่าน SFTP ด้วย WinSCP.com

คำสั่งนี้จะไปเรียก winscp.com และส่ง argument เข้าไปเพื่อทำงาน โดยใช้ /script=script.txt ที่มีคำสั่งสำหรับอัพโหลดไฟล์และค่าต่างๆ

{User}แทนค่า ชื่อผู้ใช้
{Password} แทนค่า รหัสผ่าน
{host or IP} แทนค่า ชื่อโฮส หรือ ไอพี
{Key Fingerprint} แทนค่า โฮสคีย์ SSH-RSA

WinSCP Command Line Syntax
CommandDescription
callExecutes arbitrary remote shell command
cdChanges remote working directory
checksumCalculates checksum of remote file
chmodChanges permissions of remote file
closeCloses session
echoPrints message onto script output
exitCloses all sessions and terminates the program
getDownloads file from remote directory to local directory
helpDisplays help
keepuptodateContinuously reflects changes in local directory on remote one
lcdChanges local working directory
llsLists the contents of local directory
lnCreates remote symbolic link
lpwdPrints local working directory
lsLists the contents of remote directory
mkdirCreates remote directory
mvMoves or renames remote file
openConnects to server
optionSets or shows value of script options
putUploads file from local directory to remote directory
pwdPrints remote working directory
rmRemoves remote file
rmdirRemoves remote directory
sessionLists connected sessions or selects active session
statRetrieves attributes of remote file
synchronizeSynchronizes remote directory with local one

ส่งการแจ้งเตือนผ่านทาง Line Notify

ใช้ Line Notify API เพื่อส่งข้อความแจ้งเตือน เวลาเริ่มต้น, สถานะ task ที่ทำงาน, เวลาสิ้นสุด, รวมเวลาที่ใช้ สามารถอ่านรายละเอียดของ Line API ได้ที่ https://notify-bot.line.me/doc/en/

ซึ่งใน Windows จำเป็นต้องโหลด curl มาเพื่อใช้ในการส่งข้อมูล ดาวน์โหลดได้ที่ https://curl.haxx.se/download.html สำหรับ Windows นั้นไม่ต้องติดตั้ง แตก zip แล้วนำ curl.exe มาใช้งานได้ทันที โดยเลือกให้เหมาะสมกับ OS ที่ใช้งานอยู่ทั้งแบบ 32bit และ 64bit

ตัวอย่างการส่งด้วย curl 

ตัวอย่าง:

ผลลัพท์ที่ได้

การตั้งค่า Settings.txt

ค่าต่างๆจะถูกกำหนดไว้ในไฟล์ Settings.txt และถูกเรียกใช้โดย backup.bat โดยใช้คำสั่งดังนี้

SET dest=Settings.txt รับค่าจากไฟล์เข้ามา จากนั้น IF EXIST ถ้าพบว่ามีไฟล์นี้จริงอยู่ใน directory เดียวกัน ก็ข้ามไป :labelBegin เพื่อเริ่มการทำงาน ถ้าไม่พบก็จะแจ้งเตือนว่าไม่พบไฟล์ จากนั้นจะ for loop %dest% เพื่อกำหนดตัวแปรขึ้นมา ด้วย SET %%i=%%j ซึ่งไฟล์ Settings.txt มีรายละเอียดดังนี้

้หลังจากได้ batch file เพื่อทำงานแล้ว ก็เข้าไปตั้งค่าใน  schedule task เพื่อให้ทำงานตามวันและเวลาที่กำหนด

วิธีสร้าง Task Schedule สำหรับ  .bat

เข้าไปที่ Start > ค้นหา task schedule > เปิดขึ้นมา จากนั้นคลิกขวาที่ Task Scheduler Library เลือก  Create Basic Task กรอก ชื่อ task และ คำอธิบาย (ุถ้ามี)

จากนั้นเลือกความสม่ำเสมอของการทำงาน เช่น ทุกวัน, ทุกอาทิตย์, เฉพาะตอนเปิดเครื่อง, หรือเหตุการณ์อื่นๆ

ระบุช่วงเวลา ซึ่งจะขึ้นอยู่กับ Trigger ที่เราเลือก ถ้าไม่ได้ระบุให้ “ทำซ้ำ” หน้าต่างด้านล่างก็จะปรากฏขึ้น

จากนั้นเลือก Action ในที่นี้จะให้ Start a program

จากนั้นจะขึ้น Program/script ที่ต้องการให้ทำงาน ให้ Browser ไปยังไฟล์ .bat ที่สร้างไว้ หากมีการกำหนด argument ก็สามารถระบุเข้าไปได้ และที่สำคัญ คือส่วนของ Start in (ontional) ตรงนี้หากเราไมได้ run .exe หรือ คำสั่ง batch ไม่ได้ทำงานทั่วๆ ไป จำเป็นต้องระบุ path ให้มันด้วย ไม่งั้นโปรแกรมจะเริ่ม run จาก C:\ ไม่ใช่ตำแหน่งที่เราจัดเตรียมไว้

เสร็จแล้วจากนั้นก็ Finish

เป็นอันจบกระบวนการทั้งหมดที่สร้างขึ้น ซึ่ง script ก็สามารถปรับปรุงเปลี่ยนแปลงไปได้เรื่อยๆ ให้เหมาะสมกับการใช้งาน ซึ่งท้ายที่สุดแล้วจะนำไฟล์ที่โยนเข้า NAS ที่ได้ share folder ไว้สำหรับสำรองข้อมูล และ Sync ไปเก็บไว้บน Cloud

 

วิธีย้าย npm project เดิมขึ้น yarn

ผมข้ามขั้นตอนการใช้สำหรับการสร้าง project ใหม่ไป  จะมาทดลองใช้ yarn กับ repository เดิมก่อน (เพราะเขาคุยว่าใช้กับ package.json เดิมได้นิ)

basic workflow คือ
  1. Creating a new project
  2. Adding/updating/removing dependencies
  3. Installing/reinstalling your dependencies
  4. Working with version control (i.e. git)
  5. Continuous Integration

1. เข้าไปที่ project เดิม

ตรงนี้ผมใช้ npm เพื่อติดตั้ง gulp (node_modules.rar นั่น zip ไว้กันพลาด)

2. RUN

สำหรับคนใช้งาน windows 7 กด shift + right click จะมีเมนูชื่อ Open command window here แต่สำหรับ Windows 10 จะขึ้น Open PowerShell window here ซึ่งทั้ง 2 อันนี้ font สร้างความรำคาญตามากในWindows 10 ผมจึงใช้ Cmder แทน

หน้าตาโปรแกรมจะเป็นแบบนี้ สะดวกกว่าใช้ command prompt หลายขุม และมันสามารถตั้งค่าให้คลิกขวาแล้ว run cmder ขึ้นมาได้เหมือนกัน และที่สำคัญ คือสามารถ copy text ได้!

3. เข้ายาน

ผมลองพิมพ์ yarn -v เพื่อลองว่ามันทำงานหรือป่าว

โอ้ ไม่

เฮ้ย! ไม่ๆ เกิดอะไรขึ้น

ไม่ๆๆๆๆๆๆ

ห๊าาาาาาาาาาาาาาา

สิ่งที่เกิดขึ้นก็คือ มันไปเจ๊อะ กับ package.json ของ repository ที่เราทำงานอยู่ มันก็เลยจัดการ building package ที่อยู่ใน dependencies ให้เราให้เสร็จสรรพ!! นี่ยังไม่ได้ init เลยนะ พอเข้าไปดูใน directory node_module ก็พบภาพนี้!

ลองสำรวจดูพบว่า มี ไฟล์แปลกๆ ชื่อ .yarn-integrity ในนั้นเป็น ชื่อ library ที่เราใช้งาน ต่อมาก็เป็น lockfileEntries เยอะมากๆ (จะว่าไปมันก็ดูเกะกะ)

ซึ่งใน node_module เดิม จะมีไฟล์แบบนี้ ดูเรียบร้อยเน๊อะ แต่ directory ข้างในมันยิบย่อยมาก

แต่เมื่อลองเปรียบเทียบขนานไฟล์ดูพบว่าต่างกันเกินครึ่ง! ภาพล่างนี้คือ directory เดิม ที่เคยใช้งาน npm ส่วนภาพถัดไป เป็นภาพหลังจากที่ yarn ได้ลงจอดเรียบร้อยแล้ว 

4. เริ่ม Yarn  init

พิมพ์คำสั่ง

จากนั้นใส่รายละเอียด ใน (วงเล็บคือค่าของ package.json เดิม)

ผลลัพท์จะถูกบันทึกใน package.json แบบนี้

5. ใช้ yarn add

มันก็จะ check ซักแป๊บ แล้วก็ไป linking ให้ใน package.json ไม่เกี่ยวข้องกับ devDependencies

การเพิ่ม dependency 

yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]

หากต้องการเพิ่มใน devDependencies, peerDependencies, และ optionalDependencies ใช้คำสั่งตามลำดับนี้

yarn add [package] –dev
yarn add [package] –peer
yarn add [package] –optional

การอัพเกรด dependency 

yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]

การลบ dependency

yarn remove [package]

การติดตั้ง dependency ทั้งหมดของ project

yarn

หรือ

yarn install

จริง ๆ แล้วถ้าเราเพิ่ม dependency ด้วย yarn add มันก็จะติดตั้ง dependency นั้นลงใน project โดยอัตโนมัติ 

ซึ่งคำสั่งการทำงานทุกอย่างไม่ต่างจากการใช้ npm หรือ bower เลยแม้แต่น้อย สามารถใช้ได้เหมือนกัน ทำให้สะดวก ไม่เสียเวลามาเรียนรู้คำสั่งใหม่ ซึ่งสามารถอ่านคู่มือของ yarn ในการใช้งาน CLI ได้จากหน้านี้  CLI Introduction ซึ่งจะมีแนะนำการใช้งานแบบละเอียด ส่วนตัวคงไม่ได้เจาะลึกมาก เพราะนาน ๆ ครั้งถึงจะใช้งาน

ส่งท้าย

จริงๆ  yarn ได้ทำคู่มือการย้ายจาก npm ไว้แต่ผมเพิ่งเห็น ซึ่งก็เป็นไปตามที่ผมตกใจนั้นแหละ ว่ามันทำอะไร

https://yarnpkg.com/lang/en/docs/migrating-from-npm/

วิธีติดตั้ง Yarn บน Windows 7/8/10

Yarn! A new package manager for JavaScript

“ยาน” เปิดตัวเมื่อ ตุลาคม ปี 2016 ด้วยความร่วมมือจากตัวแทนของ Facebook, Google และ Tilde ซึ่ง Yarn เองคือ JavaScript package manager เช่นเดียวกับ  npmbowervolo, แต่มันเจ๋งกว่าตรงที่ มันมาแก้ปัญหาโลกแตกของ npm ที่ทำให้เราจัดการ dependency ของ javascript ได้อย่างเยี่ยมยอด! เนื่องจากเจ้า npm มันจะมีปัญหาว่า แต่ละ library จะมีโฟลเดอร์ node_modules ของตัวเอง เพื่อใช้งานภายใน directory นั้น ไม่สามารถใช้ร่วมกับ library ตัวอื่นได้!! (จริงๆมันควรใช้ได้ แต่มันไม่ฉลาดพอที่จะใช้) ทำให้เกิด sub-directory ของ dependency ซ้อนไปเรื่อย ๆ จนถึงชื่อ path ในบาง OS ไม่พอใช้

โดยที่ Yarn สามารถนำ package.json เดิมมาใช้ได้เลยโดยไม่ต้องปรับแต่งอะไร!! (ดีงาม) โดย yarn ก็จะใช้ repository ตัวเดียวกันกับ npm และ bower หมายความว่า มันก็ยังใช้ directory node_modules เดิมที่เราใช้ แต่ต่างกันแค่มันจะเป็นแนบระนาบเดียวกัน ไม่แบ่งยิบซอยย่อยอีกต่อไป! ด้วยเหตุนี้เอง เขาถึงบอกว่า Yarn มีความ เร็วววส์, ปลอดภัย, และเชื่อมั่นได้

มาติดตั้งกันเลยดีกว่า

ก่อนอื่นไปติดตั้ง Node.js ก่อน เพราะผมเลือกติดตั้งด้วย Windows Installer ซึ่งวิธีติดตั้งมีให้เลือกอยู่ 3 แบบด้วยกัน คือใช้ Windows Installer หรือ Chocolatey หรือ Scoop ผมเลือกที่จะติดตั้งแบบแรก เพราะสะดวกดี เนื่องจากไม่ได้ใช้ choco หรือ scoop แต่ก่อนจะ (สองอันนั้น มันจะเช็คว่ามี Node.js ติดตั้งอยู่หรือไม่น่ะ ถ้ามีมันก็จะข้ามไป ถ้าไม่มีมันจะเตือนให้ติดตั้งไปด้วย)

Download Yarn: https://yarnpkg.com/latest.msi

จากนั้นก็ไม่ได้ยุ่งยากอะไร กด Next ไปเรื่อยๆ

เมื่อ Finish ลองทดสอบดู ด้วยการเปิด Command prompt แล้วพิมพ์ yarn -v ถ้ามันขึ้นเลขเวอร์ชั่นแบบนี้เป็นอันใช้ได้