ติดเกมมาริโอ้แมว ตอนที่ 2 มาดูกันทำให้แมวดิ้นบน Cygwin ว่าง่ายเพียงใด

รุ่นน้อง ส่งเกม SyobonAction หรือ Cat Mario มาให้ 
เริ่มจาก unzip แล้วลองเล่น จากนั้นก็เปิดดูเห็น source code .cpp 3 แฟ้ม ก็อยากจะลองแปลดู เข้าดู MakeFile เห็นว่าใช้ GCC ก็จำได้ว่าเคยใช้แบบงูงูปลาปลา ราวปี 2550 ก็ 10 ปีมาแล้ว จึงได้เวลารื้อฟื้นซะที

He is the jumper.
He is the jumper.

ท้าวความก่อน
โปรแกรม CYGWIN (Unix Simulator) คือ ชุดโปรแกรมจำลองสภาพแวดล้อมลินุกซ์ (Linux) บนวินโดวส์ (Windows) เพื่อจำลองสภาพแวดล้อม (Simulate) ให้เหมือนทำงานบนลีนุกซ์ และเตรียมเครื่องมือที่จำเป็นให้เหมือนกับบนลีนุกซ์ โปรแกรมนี้จำเป็นต่อการ Compile Source code มากมาย ที่ถูกพัฒนาให้ใช้ตัวแปลภาษาสำหรับ Linux
อาทิ GCC หรือ XWin หรือ Xterm ซึ่งช่วยให้นักพัฒนาเขียน Source code
แล้วนำไป Compile ได้ทั้งบน Linux และ Windows โดยไม่ต้องปรับแก้รหัสต้นฉบับ

มี shell ให้ใช้ แต่ถ้าไม่ติดตั้ง package ที่ต้องการ ก็จะเรียกไม่พบ อยากใช้อะไรก็ต้องคลิ๊ก
มี shell ให้ใช้ แต่ถ้าไม่ติดตั้ง package ที่ต้องการ ก็จะเรียกไม่พบ อยากใช้อะไรก็ต้องคลิ๊ก

ข้อจำกัดสำคัญของ Cygwin
ที่คะเนไว้ คือ มีทางเลือกอื่นที่มีประสิทธิภาพกว่าในการใช้ Linux พัฒนา Software อาทิ ถ้าเขียนโปรแกรมที่จำเป็นต้องใช้สภาพแวดล้อมของ Linux เพื่อให้ได้ execute code ไป run บน Windows การเขียนบน Linux โดยตรง จะมีประสิทธิภาพกว่าเขียนบน Windows ทำให้ความนิยมลดลง หากเลือกใช้งาน Cygwin ในการทำงานจริง หรือหวังประสิทธิภาพ

กรอบแนวคิด (Conceptual Framework)
อันที่จริง การพัฒนาเกม CatMario มีได้หลายแนวคิด แต่ model นี้น่าจะเป็นแนว ๆ นี้

CatMario = Win(Cygwin(Source && (G++ && SDL) && (XServer && Xterm)))

ความราบรื่น
หลังจากไปทบทวนความหลังกับ Cygwin เพื่อ compile, link และ run กับ Source code ของ SyobonAction พบว่า ราบรื่นมาก ไม่ติดปัญหาเกี่ยวกับเครื่องมือ แต่แก้ source code นิดหน่อย เพราะ code เมื่อ 7 ปีก่อน มาเจอ compiler ในปัจจุบัน ก็มีสะดุดบ้าง โปรแกรมละ จุด สองจุด สามจุด และได้อัพโหลด .cpp ตัวแก้ไขเข้า github.com ที่ผมไป FORK มาแล้ว หากไปใช้ตัวแก้ไขก็จะไม่ต้องแก้ไข code เมื่อส่งให้ g++ รุ่น 6.3.0 หรือ 7.1.0 ทำการ Compile

สรุปขั้นตอนการใช้งาน  Cygwin 64 เมื่อต้นกันยายน 2560

1. Download โปรแกรม
เข้า
http://www.cygwin.com
เลือก download setup-x86_64.exe
ได้มาเป็น version 2.881 (64 bit) เพราะผมใช้ Win10 64bit แบบ OEM
โปรแกรมนี้ไม่ไปแก้ไขค่าในระบบ Windows เพียงแต่ Unzip เป็นสำคัญ
ดังนั้นเข้า Apps and Features หรือ Program and Features ก็จะไม่พบ
ถ้าจะ uninstall Cygwin ก็เพียงแต่ remove folder เท่านั้นเอง

download cygwin ได้ที่นี่
download cygwin ได้ที่นี่

2. Next ไปตลอด
– Download source = Install from Internet
– Root Directory = C:\cygwin64 เค้ากำหนดมาก็ไม่ได้แก้ไข
– Local Package Directory = D:\pub ไว้เก็บแฟ้มที่ Download มาก่อน install
– Connection = Direct Connection
– Download Site = http://mirrors.sonic.net
– Select Package = default
– Next

3. หลังติดตั้งเสร็จ ใช้เวลา Download ประมาณ 5 นาที
สำรวจดู พบว่า ในห้อง c:\cygwin64 มีแฟ้ม cygwin.bat
จะได้พบหน้าต่างใหม่ และมี $ prompt เหมือนที่พบใน Linux Bash
หลังติดตั้งได้แฟ้มมา 4,809 แฟ้ม ขนาดรวม 108 MB

4. ติดตั้ง Package เพิ่มเติม มีเป้าหมาย 3 อย่าง
4.1 ต้องการ Compiler ของ G++ หรือ C++ นั่นเอง
4.2 ต้องการ Library ของ SDL (ใน Cygwin ง่าย แต่ใน MinGW ยากเลย)
4.3 X terminal สำหรับเล่นเกม เพราะแฟ้มที่ได้มาถูกทดสอบ run ในนั้น

ขั้นตอนให้ได้ 3 อย่าง มีดังนี้
เริ่มจาก run setup-x86_64.exe อีกรอบ แล้วเลือก Package จะ View แบบ Full แล้ว Search หาแฟ้มที่ต้องการ หรือสำรวจผ่าน View แบบ Category ก็ได้

[devel]
6.3.0-2 gcc-g++ : GNU Compiler Collection (C++)
6.3.0-2 gcc-core: GNU Compiler Collection (C, OpenMP)
1.2.15-3 libSDL-devel: Simple DirecMedia Layer core library
1.2.12-6 libSDL_image-devel: SDL image loading library
2.0.24-1 libSDL_gfx-devel: SDL primitive graphics library
1.2.12-4 libSDL_mixer-devel: Multi-channel audio mixer for SDL
2.0.11-1 libSDL_ttf-devel: SDL text rendering library
[x11]
1.19.2-1 xorg-server-devel: X.Org SDK for developing drivers and extensions for the Xorg X server
330-1 xterm: X11 terminal emulator

install package in cygwin
install package in cygwin

หลังติดตั้งทั้ง 9 Package และผองเพื่อน
แฟ้มเพิ่มขึ้นมาเป็น 16056 แฟ้ม ขนาดรวม 624 MB

 

หน้าตา folder ของ cygwin และ catmario
หน้าตา folder ของ cygwin และ catmario

5. มีเกมอยู่ใน c:\catmario
Download : https://github.com/thaiall/OpenSyobonAction
แล้วก็ unzip source code ลงห้อง c:\catmario
$ cd /cygdrive/c/catmario/
$ g++ -c main.cpp
$ g++ -c loadg.cpp
$ g++ -c DxLib.cpp
$ g++ main.o loadg.o DxLib.o -o SyobonAction `sdl-config –libs` -lSDL_gfx -lSDL_image -lSDL_mixer -lSDL_ttf

ตัวอักษร  ` เป็น Ascii ตัวที่ 96 ใช้  ALT+96 ได้ แต่ใช้  ‘ หรือ  ” หรือ $(  ไม่ได้

compile and link .. เห็นแปลก ๆ คือ warning นะครับ
compile and link .. เห็นแปลก ๆ คือ warning นะครับ

6. การสั่งให้เกมทำงาน
$ XWin :0 คือ X Server เป็นพื้นที่ทำงาน
$ DISPLAY=:0.0 xterm คือ X Terminal และ Display ต้องพิมพ์ใหญ่
$ /cygdrive/c/catmario/SyobonAction.exe
แฟ้ม SyobonAction.exe มีขนาด 294 KB
จะ Run ปกติใน CYGWIN64 Terminal ไม่ได้
พบ error message ที่โปรแกรมดักไว้
ว่า Unable to init SDL: No available video device

สั่ง run catmario ใน cygwin
สั่ง run catmario ใน cygwin

ต่อไปจะหาเวลา
ไปขยายความใน http://www.thaiall.com/cygwin เป็นลำดับต่อไป
แต่ต้องหา Case ก่อนครับ นาน ๆ ได้เข้าโปรแกรมเก่า เล่าเรื่องเก่าสักครั้ง

xterm
xterm

บทเรียนที่ 2 : การใช้ Git ตามคำแนะนำของ Github.com บน Bash on Ubuntu on Windows


เริ่มต้นกันเลย กับการสมัครใช้บริการพื้นที่ฟรี สำหรับเก็บ code ของ Github.com แล้วพบว่าหน้าแรกของ code ตอนที่ยังไม่มีแฟ้มใดเลย เค้าแนะนำคำสั่งมา 6 บรรทัดว่าจะสร้าง README.md อย่างไร ก็ลองพิมพ์ตามนั้นดูสักหน่อย เพราะ Nimit Suwannagate แนะนำคำสั่ง git ไว้ใน กลุ่ม ไทย PHP ที่เป็นการทำ backup_master เข้ามาเกี่ยวข้อง  มีคำสั่งน่าสนใจหลายคำสั่ง แต่ถ้าเริ่มต้นต้องคำสั่งบน Github.com นี่หละ สำหรับผมใช้ระบบปฏิบัติการ Windows 10 และมี Bash on Ubuntu on Windows ก็ถือโอกาสใช้ git บน Linux ที่อยู่ใน Windows

ขั้นตอนการใช้ git ตามที่ github.com แนะนำ ดังนี้

1. สร้าง folder ชื่อ git ที่ drive d
และสร้าง folder ชื่อ mygitfriends ใน git
จะได้ folder d:/git/mygitfriends เตรียมพื้นที่ไว้ทำงาน และอ้างอิงง่าย ๆ หน่อย
ที่ตั้งชื่อว่า mygitfriends จะลองชวนเพื่อนที่สนใจ
มาเข้ากลุ่ม collaborators ของ repository จึงตั้ง folder เป็นชื่อนี้

2. เข้า bash on ubuntu on windows
แล้วติดตั้ง git เพื่อทำงานใน ubuntu on windows

$sudo apt-get install git

3. นั่งมองคำสั่งที่ github.com แนะนำแป๊ปนึง มีความหมายทุกบรรทัด

echo "# mygitfriends" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:thaiall/mygitfriends.git
git push -u origin master

4. ใน bash on ubuntu on windows
ทำตามขั้นตอนดังนี้
4.1 $cd /mnt/d/git/mygitfriends

4.2 $echo “# Hello world! v.1” >> README.md

4.3 $git init จะสร้าง folder .git แล้วแฟ้มอีกเพียบขึ้นมาให้

4.4 $git add README.md

4.5 $git commit -m “first commit” ได้รับแจ้งว่าต้อง config email กับ name ก่อนสั่งงาน ก็ต้องสั่ง 2 บรรทัดนี้ก่อน
– git config –global user.email “you@example.com”
– git config –global user.name “Your Name”
หลัง config ก็สั่งใหม่ ก็เรียบร้อยด้วยดี
[master (root-commit) 2ff254f] first commit
1 file changed, 1 insertion(+)
create mode 100644 README.md

4.6 $git remote add origin https://github.com/thaiall/mygitfriends.git
หลังจากสั่ง $git remote ทำให้แฟ้ม config เพิ่มมา 3 บรรทัด
[remote “origin”]
url = https://github.com/thaiall/mygitfriends.git
fetch = +refs/heads/*:refs/remotes/origin/*

4.7 $git push -u origin master
เค้าแนะนำว่าให้ git pull ก่อน แล้วค่อย pushing again
! [rejected] master -> master (fetch first)
error: failed to push some refs to ‘https://github.com/thaiall/mygitfriends.git’
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push –help’ for details.

4.8 $git pull origin master
warning: no common commits
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (8/8), done.
From https://github.com/thaiall/mygitfriends
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
Merge made by the ‘recursive’ strategy.
_config.yml | 1 +
collaborators.htm | 14 ++++++++++++++
index.md | 37 +++++++++++++++++++++++++++++++++++++
3 files changed, 52 insertions(+)
create mode 100644 _config.yml
create mode 100644 collaborators.htm
create mode 100644 index.md
จากนั้นก็เปิดแฟ้ม .git/MERGE_MSG มาให้แก้ไข ก็ไม่ได้แก้ไขครับกด Ctrl+X ออกไป

4.9 $git push -u origin master

Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (5/5), 503 bytes | 0 bytes/s, done.
Total 5 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/thaiall/mygitfriends.git
5f749af..353f84d master -> master

5. ตรวจสอบผลงานตามขั้นตอนข้างต้น
หลังจากสั่ง $git push .. พบแฟ้ม README.md เข้าไปอยู่ใน github.com
มีเพียงแฟ้มเดียวที่วันที่เปลี่ยนอย่างถูกต้อง แฟ้มที่เหลือยังอยู่กันตามปกติ

5.1 ถ้า pull ใหม่ เค้าบอกว่า up-to-date แล้ว
From https://github.com/thaiall/mygitfriends
* branch master -> FETCH_HEAD
Already up-to-date.

5.2 ถ้า push ใหม่ เค้าบอกว่า up-to-date แล้วเช่นกัน
Username for ‘https://github.com’: [yourusername]
Password for ‘https://[yourusername]@github.com’:
Everything up-to-date

5.3 สรุปว่า ถ้า push หรือ pull โดยไม่เปลี่ยนแปลงแฟ้มใน origin
ก็จะไม่ส่งผลถืง master ที่อยู่ใน github.com เช่นกัน เพราะ git จะตรวจสอบก่อน

การเขียน shell script บน Android แบบไม่ต้องใช้ chmod

การเขียน shell script
การเขียน shell script

เคยมีนักศึกษาสายไอที ถามมา
เพราะสายอื่นเค้าคงไม่ถามแบบนี้หลอก
คำถาม “มีสมาร์ทโฟน เอามาทำอะไรได้บ้าง
แล้วก็คิดได้ว่า โทรศัพท์ที่เค้ามีเป็น android os
สามารถติดตั้ง app เพิ่ม จาก Google play store ได้
งั้นตอบว่า “ใช้เขียน shell script ได้ ลองดูนะ
ไม่ต้องกังวลเรื่อง root ด้วย เพราะไม่จำเป็นต้องทำ
แนะนำว่าต้องโหลดแอพ ดังต่อไปนี้
1. Terminal Emulator
2. Droidedit Free
3. ES File Explorer File Manager
4. Palapa Web Server
อันที่จริง ใช้แอพในข้อ 1 เป็นหลัก
ที่เหลือแนะนำว่า Developer ควรมีไว้ในเครื่อง

ขั้นตอนการเขียน shell script
บน Android แบบไม่ต้องใช้ chmod
1. โหลดแอพ Terminal Emulator
เพื่อเข้าไปจัดการกับ Script ผ่าน Shell บน Android
2. โหลดแอพ Droidedit Free
เพื่อเป็นอีดิเตอร์สำหรับเขียน Script บน Android
เพราะโหลดมาแก้ไข และ Save as ได้
3. สำรวจห้องที่จะเก็บ shell script
โดยใช้เครื่องมือ คือ Terminal Emulator
หรือ ES File Explorer File Manager ก็ได้
เข้าไปดูห้อง /mnt/sdcard
พบว่ามีห้องเก็บข้อมูลมากมาย
อาทิ ห้อง /mnt/sdcard/pws
ที่สร้างจากแอพ Palapa Web Server
4. เขียน Shell script บนแอพ Droidedit Free
แล้ว Save as ชื่อ test1 วางไว้ในห้อง /mnt/sdcard

#!/system/bin/sh
read x
echo $x

5. ใช้ Terminal Emulator สั่ง execute shell script
โดยไม่ต้องใช้คำสั่ง chmod
เพราะใช้ไม่ได้และไม่จำเป็นต้องใช้
หากต้องการใช้ shell script ให้มีคำว่า sh นำหน้า
เช่น $sh test1

6. ตัวอย่าง รับค่าจากแป้นพิมพ์มาทดสอบ

#!/system/bin/sh
read x
echo $x
if [ “$x” == “1” ]
then
echo “one”
elif [ “$x” == “2” ]
then
echo “two”
else
echo “-”
fi

อธิบาย script ว่า
ถ้า execute แล้วเค้าหยุดถาม
หากกรอกเลข 1 จะพิมพคำว่า one ออกมา
หากกรอกเลข 2 จะพิมพคำว่า two ออกมา
หากกรอกอย่างอื่น จะพิมพคำว่า – ออกมา

ผมก็สาวกวินโดว์ที่สนใจ Linux shell ของ Ubuntu บน windows 10

win10 : update 1511
win10 : update 1511

[ที่มา]
ช่วงปลายเดือนมิถุนายน 2559 มีโอกาสรู้จักกับ WSL
WSL = Windiws Subsystem for Linux
ซึ่งออกแบบให้เป็นเผ่าพันธุ์เดียวกับ Windows
ไม่ใช่ Linux ที่ทำงานบน VM หรือพัฒนาให้วางบน Windows แบบ Cygwin
แต่เป็น shell ที่พัฒนาใน windows ซึ่งทำงานได้เร็วกว่าเผ่าอื่นแน่นอน
และ Windows ไม่ได้ออกแบบให้ใช้ Linux shell ได้เต็มที่เหมือนตัวเต็ม
เพียงแต่ใช้คำสั่งต่าง ๆ แบบ Linux ได้บน Windows เท่านั้น
โดย Linux ตัวนี้คือ Bash ที่พัฒนาจาก Ubuntu
ไม่สนับสนุน GUI Desktops หรือ Application
https://msdn.microsoft.com/en-us/commandline/wsl/faq

win10 : update and security
win10 : update and security

[การใช้ WSL]
ถ้าจะใช้ WSL ต้องติดตั้ง Windows 10 Anniversary
(version 1608) แต่ยังไม่เปิดทั่วไป
ปัจจุบันเปิดให้สมัครเข้าโครงการ Windows Insider เพื่อเข้าร่วมทดลองใช้
ก็จะได้ใช้รุ่น Insider Preview Build 14316
แต่เครื่องที่ผมใช้อยู่ขณะนี้ลง Windows 10 November Update
(version 1511 build 10586 – major) มี license
ในอนาคต ถ้าไปใช้ Anniversary หรือเข้าร่วม Insider ก็คงได้ใช้ WSL ต้องรอก่อน
เพราะ WSL ยังเป็นรุ่นทดสอบบน Insider Preview
ถ้า Windows 10 Anniversary เปิดจำหน่าย License คงได้ upgrade ต่อไป
แต่ ณ วันนี้ Windows 10 รุ่น 1608 ยังไม่เปิดอัพเดทอย่างเป็นทางการ
https://en.wikipedia.org/wiki/Windows_10_version_history#Windows_10_Anniversary_Update_.28Version_1607.29

win10 : windows features
win10 : windows features

[License]
เครื่องที่ใช้อยู่มี License เป็น Windows 10 home version 1511
และยังไม่ถึงเวลาที่ microsoft จะเปิดให้อัพเดทเป็น 1608
เพราะรุ่น 1608 ที่เผยแพร่อยู่ เป็นรุ่นที่ต้องเข้าโครงการ Insider preview
มีข่าวเมื่อ 29 มิ.ย.59 ว่า microsoft จะเปิดให้ update
เป็น Windows 10 Anniversary Update – Major ตั้งแต่ 2 ส.ค.59
หมายความว่ารออีก 1 เดือนจึงจะได้ใช้รุ่น 1608 และก็จะได้ใช้ WSL อย่างเป็นทางการ
https://blogs.windows.com/windowsexperience/2016/06/29/windows-10-anniversary-update-available-august-2/

ตรวจดูเครื่องบริการอีกครั้ง ว่ามีอะไรผิดปกติหรือไม่

ใน access.log พบพฤติกรรมลองของมหาศาล
ใน access.log พบพฤติกรรมลองของมหาศาล

กิจกรรม monitor ว่าอุปกรณ์ทำงานควบถ้วนดีหรือไม่
เป็นกิจกรรม check ตามวงจรเดมมิ่ง เพราะ plan กับ do ทำแล้ว
แต่การตรวจสอบต้องทำทุกวัน เพราะเป็นงานบริการ
หากพบปัญหาก็ต้องเกิด action
ถ้าจะให้ดี do ก็ต้องมี innovation ควบคู่ไปด้วย
เพื่อพัฒนาให้ระบบมีความปลอดภัย หรือรองรับความเสี่ยง

15 ต.ค.57 วันนี้ .. เพื่อนร่วมงาน แจ้งว่า มีการเข้าระบบมากผิดปกติ
เมื่อตรวจ log จาก firewall
ลองตรวจดูก็เห็นว่ามีการเข้ามามากมายมหาศาลจริง
แต่ทั้งหมดจะถูกปฏิเสธไปแล้ว ไม่ว่าจะเข้ามาผ่านบริการใด
ส่วนที่อนุญาตให้ส่งอีเมล ก็ไม่มีหลุดไปถึงคนแปลกหน้าสักราย
ส่วน LDAP ก็ถือว่าเข้ามาตรวจกันปกติ เพราะระบบมีไว้ให้ตรวจ

Last login: Fri Sep 05 2014 16:29:22 +0700
# last ดูว่านอกจากเรามีใครเข้าไปรึเปล่า
root     pts/1        node-nuo.pool-11 Wed Oct 15 22:23   still logged in
wtmp begins Wed Oct 15 22:23:42 2014
# cd /var/log
# ls -ot
# tail –line 200 maillog ดู 200 บรรทัดล่าสุด
# cat maillog | grep delivery ดูว่าระบบส่งไปได้ ไปถึงใครบ้าง
# cat maillog | grep 107.150 ดูว่า ip นี้ทำอะไรไปบ้าง
# cat maillog | grep authentication ดูว่าเบอร์ไหนแอบเข้ามาลองระบบบ้าง
# cat messages | grep DNS พบเข้ามาลองเครื่องผ่าน sshd มหาศาล
# cd /var/log/httpd
# cat access_log | grep 103.22 พบว่ามีเครื่องมากมายเข้ามาลองของกับ /myadmin เยอะมาก
# netstat -na | grep EST ดูว่ามีใครกำลังเชื่อมต่ออยู่
# cat /etc/hosts.deny ดูว่าเคยกำหนด ip อะไรที่ถูก block ไปบ้าง โดยใช้ portmap

หลักกิโลแห่งความทรงจำของลีนุกซ์

หลักกิโลแห่งความทรงจำของลีนุกซ์
(Memorable linux milestones)

20 years of linux
20 years of linux

1991 (2534) นายไลนัส ทอร์วัลด์ส (Linus Torvalds) ได้เขียนข้อความส่งเข้าไปใน News group ว่าสวัสดีทุกคนที่นั่น และเริ่มปล่อย Linux code แบ่งปันแก่นักพัฒนาชาวโลก

1992 (2535) Linux ลิขสิทธิ์แบบ GPL (GNU General Public License) เป็นจุดเปลี่ยนสำคัญที่ทำให้ Linux ประสบความสำเร็จ

1993 (2536) Slackware เป็น Linux ตัวแรกที่ถูกพัฒนาสำหรับเผยแพร่ที่ประสบความสำเร็จ

1996 (2539) นายไลนัส ทอร์วัลด์สไปพิพิธภัณฑ์สัตว์น้ำ เป็นจุดที่ทำให้เลือกนกเพนกวินเป็นตัวนำโชค (Mascot)

1998 (2541) ยักใหญ่ด้านเทคโนโลยีเริ่มประกาศสนับสนุนระบบปฏิบัติการลีนุกซ์

1999 (2542) Redhat เข้าสู่สาธารณะ

2003 (2546) IBM ทำให้ Linux มีชื่อเสียง โดยประชาสัมพันธ์ระหว่างแข่งขัน Superbowl

2005 (2548) นายไลนัส ทอร์วัลด์สปรากฎขึ้นปก Businessweek และเรื่องราวความสำเร็จของ Linux

2007 (2550) มูลนิธิ Linux ถูกก่อตั้งเพื่อสนับสนุน ป้องกัน และกำหนดมาตรฐาน

2010 (2553) Android OS เป็น Linux ที่ใช้งานบน smartphone และกำลังไต่ขึ้นไปครองตลาด

2011 (2554) ครบปีที่ 20 ของ Linux พบว่ามีพลังขับเคลื่อนโลก ถูกใช้ในซุปเปอร์คอมพิวเตอร์ ตลาดหลักทรัพทย์ โทรศัพท์ เอทีเอ็ม บันทึกสุขภาพ

http://mashable.com/2011/04/06/linux-20-anniversary/

เตรียมบทเรียนสอนนักศึกษาเรียนรู้การใช้งาน linux

linux server
linux server

การสอนนักศึกษาเข้าใช้ linux ผ่าน secure shell
เตรียมการ โดยผมเข้าในฐานะ root
1.1 สร้าง user name ของแต่ละคนผ่าน #useradd
1.2 เปลี่ยนรหัสผ่านให้กับแต่ละคน หลังสร้าง user name แล้ว
1.3 สร้าง folder ในห้อง html ตาม user name
1.4 กำหนด owner ให้แต่ละ folder ตาม user name
1.5 chmod เป็น 777 จะได้เข้าถึงผ่าน url ได้

การใช้งาน โดยนักศึกษาเข้าใช้ในฐานะ user
2.1 ให้นักศึกษา download putty และ filezilla
2.2 ให้เข้า linux ผ่าน putty และเรียนรู้การเข้าไปใช้งานระบบ
มีบทเรียนคำสั่งที่ http://www.thaiall.com/isinthai
2.3 สร้างแฟ้ม index.html ของตนเอง
มีแนวทางการเขียนเว็บเพจที่ http://www.thaiall.com/html
2.4 ส่งแฟ้ม index.html เข้า linux ผ่าน ftps
2.5 เรียก index.html ผ่าน url ของแต่ละคน

http://www.putty.org/ [putty.exe]
https://filezilla-project.org/download.php
http://downloads.sourceforge.net/project/filezilla/FileZilla_Client/3.7.3/FileZilla_3.7.3_win32-setup.exe

Hirens 15.2 บน USB Flash Drive

6 ม.ค.57 มีโอกาสติดตั้งโปรแกรม Hirens 15.2 บน USB Flash Drive ขนาด 4 GB
ทำให้มี USB Flash Drive ที่มีความสามารถ 2 ประการ
1. บูทเครื่องคอมพิวเตอร์ เพื่อใช้งานระบบปฎิบัติการ 3 ระบบ
คือ Windows xp, DOS on Windows 98 และ Linux ของ PartedMagic.com
2. การเรียกใช้โปรแกรมต่าง ๆ เพื่อจัดการระบบได้จำนวนมากมาย
เรียกโดยตรงไม่ต้องบูทเข้าระบบปฏิบัติการตามข้อแรก
http://en.wikipedia.org/wiki/Hiren%27s_BootCD

Hirens Download
Hirens Download

ขั้นตอนการใส่ Hirens ลงไปใน USB Flash Drive

1. สั่ง Format : USB Flash Drive เป็น Fat32
– เลือก Disk
– เลือก Fat32
– กด Start
http://www.hirensbootcd.org/files/USBFormat.zip

usb flash drive format
usb flash drive format

2. สั่ง Install : Grub 4 DOS เพื่อทำ Boot Loader
ในระดับ MBR (Master Boot Record) ทั้ง Disk
– เลือก Disk (เลือกให้ถูกตัวนะครับ ระวังด้วย)
– เลือก Part List เป็น Whole Disk (MBR)
– กด install
http://www.hirensbootcd.org/files/grub4dos.zip

grub4dos installer
grub4dos installer

3. คัดลอกโปรแกรมต่าง ๆ ลงไปใน Handy drive
+ http://www.hirensbootcd.org/usb-booting/
+ ftp://mirror.kku.ac.th/hbcd/
3.1 คัดลอกแฟ้ม หลังคลาย .zip แล้ว ลงไป USB Flash Drive
3.2 คัดลอกแฟ้ม grldr จากห้อง /HBCD ไปไว้ในห้อง root [สำคัญมาก ต้องทำเอง]
เพื่อให้บูทและเข้าระบบปฏิบัติการที่อยู่ใน USB Flash Drive มิเช่นนั้นจะบูทไม่ขึ้น
แฟ้ม grldr เป็นโปรแกรม grub loader สำหรับเริ่มต้นระบบ boot
แม้บูทไม่ได้ แต่ก็เป็นที่รวมโปรแกรมเหมือน flash drive ทั่วไป
โดยเรียกโปรแกรม /HBCDMenu.cmd เพื่อแสดงรายชื่อโปรแกรม

การทดสอบ Linux ของ Partedmagic.com ในการเชื่อมต่อ
– connect ผ่าน wi-fi ที่บ้านได้
– connect ผ่าน UTP ในห้อง Lab ขอ ip จาก DHCP ได้

บทเรียนการใช้ Terminal emulator

30 พ.ย.56 ทำ tutorial ให้นักศึกษาได้เรียนรู้
ด้วยการใช้กล้องวีดีโอบันทึกจอภาพของ tabletpc โดยตรง
ไม่ได้ใช้ capture screen เหมือนบน desktop
เพราะครั้งนี้ screen อยู่บน tabletpc

รายละเอียดเพิ่มเติม
1. จับจอภาพของโปรแกรม Terminal emulator
2. กำหนด font size เป็น 20pt
3. ไม่ได้ใช้หลอดไฟช่วย แต่เปิดจอ LCD ด้านขวา
4. กำหนดแสงของจอภาพต่ำสุด และผู้บรรยายนั่งด้านซ้าย
5. กล้อง Sanyo Xacti VPC-CG65GX
http://camera.manualsonline.com/manuals/mfg/sanyo/vpc-cg65.html

รายละเอียดในคลิ๊ป ที่เปิดใน LCD เป็นแนวในการบรรยาย
https://www.facebook.com/thaiall/posts/10152034454772272

การใช้ terminal emulator app บน samsung tab 10.1

การใช้ terminal emulator app บน samsung tab 10.1
การสำรวจเครื่องครั้งนี้ มีการดำเนินการ 2 ส่วน
1. การสำรวจระบบ android linux
2. การจัดการแฟ้ม และสารบบ

http://www.thaiall.com/android
โดยใช้คำสั่งต่าง ๆ เรียงลำดับก่อนหลังดังนี้
[1. การสำรวจระบบ android linux]
1. pwd ดูว่าปัจจุบันอยู่ใน folder อะไร พบว่าอยู่ใน /
2. id ดูชื่อ และรหัสตนเอง พบว่าตนเองชื่อ app_125 มี id คือ 10125
3. df ดูว่าในเรื่องมีพื้นที่เท่าใด
4. env ดูข้อมูลสาพแวดล้อม
5. ps ดูว่ามี process อะไรประมวลผลอยู่
6. netstat ดูว่าเปิด port อะไร และติดต่อไปข้างนอกอยู่หรือเปล่า
7. netcfg ดูว่าเชื่อมต่อออกไปใช้ ip อะไร
8. ls ดูรายชื่อแฟ้ม
9. du ดูขนาดแต่ละ folder ทั้งหมด
10. ping www.facebook.com ดูว่าเชื่อมต่อกับ fb ได้ความเร็วกลับมาเท่าใด
11. date ดูว่ากี่โมง และวันที่เท่าใด
12. mount ดูว่ามีอุปกรณ์อะไรเชื่อมต่อไว้บ้าง เช่น sdcard
13. top ดูว่า process อะไรใช้ทรัพยากรมาก
[2. การจัดการแฟ้ม และสารบบ]
1. cd เพื่อย้ายตำแหน่งไปยัง app_HOME
2. du / > a เพื่อสร้างแฟ้มชื่อ a
3. ls -al เพื่อแสดงรายชื่อ และขนาดของแฟ้ม
4. tail a เพื่อดูส่วนหางของแฟ้ม เพียง 10 บรรทัดทุดท้าย
5. mkdir x เพื่อสร้าง folder ชื่อ x
6. mv a x เพื่อย้ายแฟ้ม a ไปใน x
7. cd x เพื่อเข้าห้อง x
8. cp a b เพื่อคัดลอกแฟ้ม a เป็น b
9. find เพื่อแสดงรายชื่อแฟ้ม หรือ find a หรือ find c
10. find > c เพื่อนำชื่อแฟ้มไปสร้างเป็นแฟ้ม c
11. vi c เพื่อแก้ไขแฟ้ม c
12. cd .. เพื่อออกจากห้อง x
13. rm x/* เพื่อลบทุกแฟ้มในห้อง x
14. rmdir x เพื่อลบห้อง x
15. ls -al เพื่อแสดงรายชื่อ และขนาดของแฟ้ม

คลิ๊ปการใช้งาน ที่ http://www.thaiall.com/blog/burin/5647/