ติดเกมมาริโอ้แมว ตอนที่ 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

บทเรียนที่ 3 ชวนลูกทีมมือสมัครเล่นมารายงานตัวเป็น collaborators ผ่านแฟ้ม html ใช้ git สั่ง pull + push เข้า github.com

ตามหัวข้อเลย ผมมีลูกทีมเป็นมือสมัครเล่นกันหลายคน
มีเป้าหมาย คือ ให้พวกเค้าไปสมัครใช้บริการ github.com
แล้วส่ง email ให้ผม เพื่อ invite พวกเค้ามาเป็น collaborators (สำหรับ push)
จากนั้นก็ให้ทุกคนไป download : Git for windows แบบ Portable
เพราะแต่ละคนอาจใช้ git กันในหลายรูปแบบ แนะนำแบบชั่วคราว แต่ใช้แบบใดก็ได้
แต่แบบ portable คือ ใช้ชั่วคราว หากไม่สะดวกเพราะไม่ได้ใช้กกับเครื่องของตนเอง
มี Interface ทั้งแบบ bash และ cmd จาก https://git-scm.com/download/win
คือ git-cmd.exe (cd d:/git/mygitfriends1)
และ git-bash.exe (cd /d/git/mygitfriends1)

แต่ถ้าใครอยากใช้ git กันนาน ๆ ก็เลือกแบบ install ได้
จากนั้นก็สร้างห้อง เช่น d:\git\mygitfriends1
แล้วให้ pull ดึง repository ของผมลงมา (เป็น public สามารถ pull ได้เลย)
แล้วแก้ไข tag LI ใส่ url ที่เป็น repository ของตนเอง เพื่อแชร์ให้ผมทราบ
ติ้งต่างว่า .. ผมเป็นหัวหน้าทีมของลูกทีมมือสมัครเล่น

มีขั้นตอน 9 ข้อ ดังนี้
1. DOS> git init
จะสร้างห้อง .git แบบ hidden สำหรับการเริ่มต้นงาน repository
ในห้องนี้มีแฟ้มสำคัญคือ config ที่เปิดมาการตั้งค่าได้

2. DOS> git config –global user.email “you@example.com”
อย่าลืมเปลี่ยนเป็น e-mail ของตนเองนะครับ

3. DOS> git config –global user.name “Your Name”
อย่าลืมเปลี่ยนเป็น ชื่อของตนเองนะครับ

4. DOS> git remote add origin https://github.com/thaiall/mygitfriends.git
ต้องกำหนด email กับ name ให้เรียบร้อยก่อน
แล้วสั่งกำหนดว่า remote คือที่ไหน ที่ origin เชื่อมโยงด้วย

5. DOS> git pull origin master
ดึงข้อมูลจาก repository ใน master บน github.com
ลงมาเป็น origin ใน localhost หลังแก้ไขจะได้ push ขึ้นไป

6. DOS> notepad collaborators.htm หรือจะใช้ vi ก็ได้ ถ้าถนัดนะครับ
เปิดแฟ้ม html มาแก้ไขเพิ่มเติมข้อมูลตาม TAG LI
ให้เพิ่ม link ของ repository ที่ตนเองเป็นเจ้าของ
หลังสมัคร github.com ด้วย email ของตน และสร้าง repository ไว้

<html><head>collaborators</head>
<body>
 <h1>collaborators</h1>
 <ol>
 <li>
 <a href=""></a><br/>
 </li>
 </ol>
</body>
</html>

7. DOS> git add collaborators.htm
หลังแก้ไขก็สั่ง add เพื่อบอกว่าแฟ้มนี้ คือ แฟ้มที่ปรับปรุง

8. DOS> git commit -m “i am gthaiall”
การสั่ง commit คือ การตรวจสอบว่ามีแฟ้มอะไรบ้างที่ต้องดำเนินการ และตีทะเบียนรุ่นให้ใหม่

9. DOS> git push -u origin master
ทำส่งรายละเอียด และการแก้ไขผ่าน push เปรียบเทียบระหว่าง master กับ origin
ขึ้นไปยังเครื่องบริการ github.com ที่เป็นสื่อกลางระหว่างนักพัฒนาทุกคน

สรุปว่า
ผมนั่งดูใน github.com พบว่า นักพัฒนา ทำอะไรกับแฟ้ม collaborators.htm เมื่อใด
ที่พบมี รหัส commit [7864d75] ใหม่ พบว่า เพิ่ม 3 บรรทัด และลบ 2 บรรทัด

หลังจบการ push
ผมเข้าไปลบทุกอย่างในห้อง d:\git\mygitfriends1
รวมทั้ง .git ด้วย แล้วใช้ git-bash.exe ทำตามขั้นตอน 9 ข้อใหม่
หลังแก้ไขได้ รหัส commit [50d1311] ใหม่ พบว่า เพิ่ม 1 บรรทัด

หากมีคำถาม
เรื่อง git อยากชวนไปดูคลิ๊ปสั้น ๆ ของ SIPA เรื่อง แนะนำ และติดตั้ง Git
ที่ Minato Namikazerak ร่วมแบ่งปัน
ตอนเข้าไปแชร์ในกลุ่ม ไทย PHP เรื่องที่ผม push เข้า github.com

บทเรียนที่ 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 จะตรวจสอบก่อน

ลอง Push project จาก ATOM เข้า Repository ใน Github.com ทับของเดิมเกลี้ยงเลย

วันนี้วันดี .. ได้ลองใช้ ATOM editor มาครับ อยากลองว่า push ใน editor กับ script file หนึ่ง เข้าไปใน Github.com จะให้ผลเป็นอย่างไร ผล คือ เข้าแทนที่ Repository ทั้งหมด เพราะตั้งเป็น Master ไม่เป็น Branch ใหม่อย่างที่ควร การเข้าไปแทนที่แบบนี้ นึกถึงตอนทดสอบใช้ Firebase ส่งเข้าไปทั้งก้อนเลยเหมือนกัน
สรุปว่า
ได้ Clone แล้ว Download ออกมาเก็บไว้ก่อน
พอ unzip แล้ว push กลับเข้าไป ทุกอย่างก็ยังอยู่เหมือนเดิม
ยกเว้น วันที่ของแฟ้ม เปลี่ยนเป็นปัจจุบันหมดครับ

 

เล่าเรื่องการใช้โปรแกรม editor ที่ชื่อ ATOM
วันนี้ 3 กันยายน 2560 ได้รุ่น 1.19.5 มา
มีขั้นตอนที่จะเล่าสู่กันฟัง ดังนี้

 

1. ก่อน หรือหลังติดตั้ง ATOM editor
ก็ควรไปสมัครใช้บริการของ Github.com หากคิดจะใช้งานร่วมกัน
เพื่อจะได้เชื่อมระหว่าง ATOM editor กับ Github
เพราะใน ATOM ไม่ได้เชื่อมเข้า Github ในทันที
มีขั้นตอนอีกเยอะกว่าจะสั่งอะไรใน Github ได้

2. Install package ใน ATOM
เข้า Menu bar, Help, Welcome Guide, Install a Package, Open Installer
หรือ Menu bar, File, Settings, Install
หรือ Ctrl+Shift+P เพื่อ Search Package สำหรับ Install
พิมพ์ git ณ วันที่ 3 กันยายน 2560
package : git-plus 7.9.3 download 1737185 ของ akonwi
package : git-time-machine 1.5.9 download 265062 ของ Littlebee
package : git-control 0.9.0 download 157686 ของ Jacogr

3. เลือก install git-plus (ผมลงตัวเดียว)
หลังติดตั้งเสร็จก็เลือก Setting, Uninstall หรือ Disable ได้
เข้าไปดูใน Setting พบ Commands จำนวน 22 รายการ
คำสั่งไหนใช้บ่อยมี Hot-key ให้ใช้ด้วย
จะสั่งงานกด Ctrl+Shift+H

4. หลังติดตั้ง git-plus แล้วเรียก Git-Plus Palette
เลือกสั่ง add ก็ฟ้องขึ้นมาว่า
‘git’ is not recognized as an internal or external command,
operable program or batch file.
ก็มีเหตุที่ทำให้ใช้คำสั่งนี้ไม่ได้ ต้องทำข้อต่อ ๆ ไปก่อน
ปล.1 ไปสำรวจพบว่าใน Palette พบคำสั่งมากกว่า 22 รายการ ให้เลือกใช้
ปล.2 คำสั่ง add นี้คือการย้าย แฟ้มที่มีการแก้ไขเข้าไปอยู่ใน Staged changes
หากมีการ commit แล้ว push ก็จะรู้ว่าแฟ้มไหนเปลี่ยนแปลงบ้าง

5. Menu bar, View, Toggle GitHub Tab หรือ Ctrl+Shift+8
พบ This repository does not have any remotes hosted at GitHub.com
แสดงว่า ยังไม่ได้เชื่อม Repository หรือ Project เข้ากับ Github.com
เมื่อเข้าไปอ่านที่ https://atom.io/packages/git-plus
ในส่วนของ IMPORTANT พบคำแนะนำสำหรับผู้ใช้ SSH ว่าต้อง login อย่างไร
ส่วนผู้ใช้ Windows ก็เข้าไปอ่านใน [thread] ได้
พบว่า damianpirchio เค้าใช้งานได้หลังมีการ Update version ใหม่
บางปัญหา พอมี version ใหม่มา ปัญหาเหล่านั้นก็หายไป
https://github.com/akonwi/git-plus/issues/335
ปล. ปัญหานี้น่าจะเกิดจากการเชื่อมกับ repository ไม่เรียบร้อย
หากเชื่อมเรียบร้อย จะแสดงปุ่ม login เท่านั้น ตอนนี้ผมก็ยังไม่ได้ login ครับ
เวลา push ก็กรอก signin เป็นครั้งไป

6. Generating a new SSH key
บน Win10 มี Bash on Ubuntu on Windows

$ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Generating public/private rsa key pair = [github] ตามชอบ
Enter passpharase = [blank] ไม่ได้ใส่อะไร
file (/home/burin/.ssh/id_rsa) = [github] ตามชอบ
ดังนั้นใน C:\Users\ACER\AppData\Local\lxss\home\burin
จึงพบแฟ้ม github กับ github.pub

7. Adding your SSH key to the ssh-agent
ทดสอบว่า ssh-agent ทำงานอยู่ด้วย

$eval $(ssh-agent -s)

พบตัวเลข PID และคำสั่งนี้ทำบน Bash on Ubuntu on Windows

แล้วสั่ง $ssh-add ~/.ssh/id_rsa
แต่ผมสั่งว่า $ssh-add ~/github

พบ Identity added: /home/burin/github (/home/burin/github)
เพราะกำหนด file ว่า github บน Windows ตอนที่ Generate

8. ไปแก้ config ใน git ของ Project
ตามคำแนะนำของ damianpirchio
https://github.com/akonwi/git-plus/issues/335
มีตัวอย่างที่ https://github.com/damianpirchio/inmobiliaria

เดิม
 [core]
 repositoryformatversion = 0
 filemode = false
 bare = false
 logallrefupdates = true
 symlinks = false
 ignorecase = true
เป็น
 [core]
 repositoryformatversion = 0
 filemode = false
 bare = false
 logallrefupdates = true
 symlinks = false
 ignorecase = true
 [remote "origin"]
 url = https://github.com/thaiall/programming-page.git
 fetch = +refs/heads/*:refs/remotes/origin/*
 [branch "master"]
 remote = origin
 merge = refs/heads/master

ที่ github ผมมี https://github.com/thaiall/programming-page ครับ

9. ตอนสั่ง add พบการใช้ git
อ่านจาก https://stackoverflow.com/.. /internal-or-external-command
ก็พบปัญหาเหมือนกัน คือ
‘git’ is not recognized as an internal or external command,
operable program or batch file.
มีขั้นตอนแก้ไขบน Windows 10 ดังนี้
9.1 หา Git ให้พบว่าอยู่ตรงไหน
ของผมอยู่ใน C:\Users\[ACER ชื่อเครื่อง]\AppData\Local\atom\app-1.19.5\resources\app\node_modules\dugite\git\cmd\
เพราะมากับ ATOM รุ่น 1.19.5 อัพเดทไปเมื่อวาน ตอนลงเป็น 1.18 ครับ
9.2 กดปุ่ม Window+Pause เพื่อเข้า System
แล้ว Advance system setting
แล้ว Environment Variables ใต้ Advanced Tab
9.3 ในหัวข้อ System variables มองหา Path แล้ว Edit
แล้ว New
แล้วกรอกไปว่า C:\Users\[ตามที่พบข้างบนยาว ๆ]\git\cmd\
9.4 ทดสอบด้วยการเข้า DOS แล้วพิมพ์ git
แล้วสั่งอะไรไม่ค่อยจะได้นะครับ ต้องไปทำงานใน ATOM

10. พบปัญหา หลังกด push รอบแรก จาก task bar
เพราะ push คือ การ upload project ส่วน pull คือ download project
ส่วน commit คือ การให้รายละเอียดก่อน push

พบ
 Note: No remote detected for branch master.
 Cannot push because there is no remote named "origin"
 for which to create a remote tracking branch
 หรือ
 fatal: Invalid refspec '+refs/heads/:refs/remotes/origin/'

พอเปลี่ยนใน config ของ git เป็นตาม code ด้านล่างนี้ ปัญหาก็หายไป

[remote "origin"]
 url = https://github.com/thaiall/programming-page.git
 fetch = +refs/heads/*:refs/remotes/origin/*

 

11. พบปัญหา หลังกด push รอบ 2

พบ
 error: src refspec master does not match any.
 error: failed to push some refs to 'https://github.com/thaiall/programming-page.git'

วิธีแก้ไข
กดปุ่ม commit ก่อนกดปุ่ม push

12. กดปุ่ม commit พบปัญหาอีกแล้ว

พบ
 Run
 git config --global user.email "you@example.com"
 git config --global user.name "Your Name"
 to set your account's default identity.
 Omit --global to set the identity only in this repository.
 fatal: unable to auto-detect email address (got 'ACER@LAPTOP-xxxxx.(none)')

วิธีแก้ไข
ต้องเข้าไปเพิ่มใน config ของ git
[user]
name = [you@example.com]
email = [Your Name]

13. ไม่มีอะไรใน Staged Changes แต่น่าจะเคย add เข้าไปแล้ว
กด Push 2 รอบ
พบ Please enter your credentials for https://github.com
และ remote: Invalid username or password.
fatal: Authentication failed for ‘https://github.com/thaiall/programming-page.git/’
สงสัยจะใช่ username กับ password ผิดจริง ๆ ไม่มีอะไรมากครับ
ตกใจไว้ก่อน

14. ใส่รหัสถูกต้อง พบปัญหาอีกแล้ว
พบ
The tip of your current branch is behind its remote counterpart.
Try pulling before pushing again. Or, to force push, hold cmd or ctrl while clicking.
วิธีแก้ไข
เค้าว่า ถ้าผมไม่มีแฟ้มที่ github.com ให้กดปุ่ม ctrl ค้างไว้ขณะคลิ๊ปปุ่ม push
มีหน้าต่างถาม Force Push ขึ้นมาครับ กดเลย
แล้วก็ถาม signin อีกครั้ง ดีครับ ไม่ต้องจำรหัสค้างไว้
เค้าก็เตือนให้ pull ก่อนแล้วนะ แต่ผมไม่ได้ทำ

15. หลัง push สำเร็จ พบว่าใน repository บน github.com หายเกลี้ยง
เหลือแต่ s6update.php แฟ้มเดียว (โปรแกรมหนึ่งที่ทดสอบจะ push เข้าไป)
นึกขึ้นได้ว่า Download repository เป็น .zip ออกมาก่อนหน้านี้
unzip แล้วส่งกลับเข้าไปก็พบว่าทุกอย่างอยู่ครบ
รวมทั้ง https://thaiall.github.io/programming-page/
ทุกอย่างกลับมาเหมือนเดิม

16. ขั้นตอนการ push
1. ตรวจสอบใน Staged changes ว่ามีอะไรเปลี่ยนแปลงไหม ค่อย Push
2. กรอกข้อมูลใน Commit แล้วกดปุ่ม Commit
3. กด Push 2 ครั้ง เค้าถามมาทีละครั้ง
4. ใส่ user and password แล้ว signin
5. ไปดูผลการ push ที่ repository ใน github.com

แนะนำเว็บไซต์
https://technologyand.me/2016/08/29/git-with-atom/
https://vwannabe.com/2016/05/26/how-to-use-github-and-atom/
http://www.thaiall.com/atom/

หลัง Update Windows 10 ต้นกันยายน 60 พบสิ่งที่รอคอย 3 เรื่อง

ปกติแล้วการ Update Windows ก็ไม่ได้รอคอยอะไรมากนัก
แต่พักนี้เจอปัญหาหลายอย่าง ใช้ไปสักพัก
ก็รู้สึกว่าอยากให้ Windows แก้ปัญหาที่ค้างใจอยู่
วันนี้ 1 กันยายน 2560 ได้ update Windows 10
ใช้เวลานานนิดหน่อย แล้วก็พบสิ่งที่รอคอย ดังนี้

1. แก้ Bug ใน MS Edge ให้มีการส่งค่ากลับ (return)
จากการใช้ XMLHttpRequest() ใน Javascript
เพื่อเชื่อม XML กับ XSL แล้วต้องการให้มีการคืนค่า
มากับ transformToFragment ที่ผ่าน XSLTProcessor
ปรากฎว่าคืนมาเป็น null ไม่เหมือน Browser อื่นที่คืนค่าปกติ
เขียนปัญหาไว้ที่ http://www.thaiall.com/blog/burin/8841/
แต่ปัญหานี้หายไปแล้วหลัง Update
ทดสอบที่ http://www.thaiall.com/xml/list01.htm
โปรแกรม Edge เป็นส่วนหนึ่งของ Win10 ไม่สามารถ Download มาติดตั้งได้
จะปรับรุ่นต่อเมื่อมีการ Update Windows

2. Chrome ของผม ติด Malware ชื่อ Search in Tabs
ก็ไม่ได้ติดตั้ง แต่เข้ามาทางไหนก็ไม่แน่ใจนัก
หลัง Update Windows เข้าไปก็ไม่พบอีก
แต่ยังเห็น Search in Tabs เป็นรายการ Extensions
ของ Google ที่ให้ Download กันอยู่ อ่าน Review ดูได้ครับ
แล้วอย่างไป Download นะครับ
ตอนนี้ในเครื่องมี Windows Defender ช่วยจัดการไวรัส และ malware
ที่กิน Resource เยอะมากอยู่แล้ว ไม่จำเป็นก้ไม่ต้องไปลงของค่ายอื่นนะครับ

3. ใน Paint มีปุ่ม Open Paint 3D
เป็นเครื่องมือที่น่าสนใจ ลองสร้างวัตถุ 3 มิติได้เลย
สามารถ Export แบบ 3D เป็น .3mf
ถ้าเป็น 2D ก็ได้หลายนามสกุล เช่น PNG เป็นต้น

วิธีอัพเดทวินโดว์ (Update Windows)
1. คลิ๊กปุ่ม Windows, Setting
2. ลงมาข้างล่างสุด คลิ๊ก Update & security
3. พบ Windows Update เป็นรายการแรก ก็คลิ๊กเลย
4. เข้าไปพบปุ่ม Check for updates
หากไม่มีอะไรต้อง update ก็ใช้เวลาไม่นาน
ขณะนี้ผมได้ Windows 10 Version 1703

ข้อมูลเกี่ยวกับ Windows 10 version 1703
https://support.microsoft.com/en-us/help/4018124/windows-10-update-history
พบว่ามีการ Update Microsoft Edge หลายรายการ อาทิ KB4020102 (OS Build 15063.332)
หลัง Update ได้
– Microsoft Edge 40.15063.0.0
– Microsoft EdgeHTML 15.15063
โดยมีรายการ Update เพื่อ Improvements and fixes ผ่านโปรแกรมแก้ไข ดังนี้

KB4034674 (OS Build 15063.540)
KB4032188 (OS Build 15063.502)
KB4025342 (OS Build 15063.483)
KB4022716 (OS Build 15063.447)
KB4022725 (OS Build 15063.413 and 15063.414)
KB4020102 (OS Build 15063.332)
KB4016871 (OS Build 15063.296 and 15063.297)
KB4016240 (OS Build 15063.250)
KB4015583 (OS Build 15063.138)
KB4016251 (OS Build 15063.13)

 

#windows ตอนที่ 1 ใช้ Web Platform Installer ติดตั้ง PHP + MySQL บน IIS ง่ายล่ะชีวิต

#windows ตอนที่ 1 การแสดงคำว่า Hello World ใน Windows
จากข้อมูลใน MySQL บน IIS

การติดตั้ง IIS 8.5 + Web Platform Installer 5.0 +
PHP5.6.31 + MySQL 5.1 + PHPMyAdmin 4.0.10.20

<introduction>
สวัสดีชาวโลก หรือ Hello World!” ซึ่งผมมีโจทย์ว่า “ต้องการแสดงข้อมูลที่เก็บไว้ใน Database บน Windows ผ่านบริการของ Web Server ต้องทำอย่างไร” ก็มีหลายทางเลือก และต้องใช้กันหลายโปรแกรมเข้ามาช่วยทำให้บริการเหล่านี้เป็นจริืงได้ การทดสอบของผมใช้ Remote Desktop และ VNC ในการเข้า Web Server ก็ได้ความช่วยเหลือจาก คุณเบนซ์ ช่วยดูเรื่องเครือข่าย เปิดให้ผมเข้าจากที่บ้านได้ แล้ว คุณเปรม ก็ช่วยทำให้มี IP จริง เชื่อมกับ Intranet IP ในที่ทำงาน ผ่านการ config ใน Firewall ขอขอบคุณฝ่ายไอทีทั้งสองท่าน น้าาาา

เดี๋ยวนี้ เทคโนโลยีพัฒนาไปเร็วมาก การจะติดตั้ง Web Server (Port 80) และ Database (Port 3306) ก็ไม่ยากที่จะทำแล้ว จะเข้าถึงบริการเหล่านี้ได้ง่าย เพียง click หรือ double click ไม่กี่ที สิ่งสำคัญคือ ผู้สนใจก็เพียงแต่หาอ่าน (read) สิ่งที่ Windows เค้ามีมาให้ (Services) ไม่มีในเครื่อง ก็ไปหา Download แล้วก็ไซร้ (Search) เข้าไปตามความสนใจ ลงลึกไปเรื่อย ๆ ถ้าสนใจซะอย่าง อะไรอะไร ก็ไม่ยาก เพราะอยู่ตรงหน้า หรือหา download ได้อยู่แล้ว

โปรแกรมบน Windows ที่ใช้ ประกอบด้วยดังนี้

  1. IIS 8.5 on Microsoft Windows
  2. Web Platform Installer 5.0
  3. PHP 5.6.31
  4. MySQL 5.1
  5. PHPMyAdmin 4.0.10.20 [4.7.3]
  6. Chrome Browser

</introduction>

<process>
มีขั้นตอนการติดตั้ง และเขียนโปรแกรม ดังนี้

  1. โปรแกรม Remote Desktop เป็นบริการที่มากับ Windows
    ทำให้เราเข้าไปควบคุมจากระยะไกล เป็นที่นิยมกว่าโปรแกรมอื่น (สำหรับผมนะ)
    เพราะโปรแกรมนี้เป็นของ Windows อยู่แล้ว ใช้งานง่าย ไม่ซับซ้อน

    00_remote_desktop.png
    
  2. โปรแกรม VNC เป็นบริการที่ คุณเบนซ์ แนะนำ
    ว่าใช้งานแทน Remote Desktop ทำให้เข้าเครื่องที่ทำงาน
    ขณะนั่งอยู่ที่บ้าน (Work at Home) ความสามารถคล้ายกัน แต่ตัวนี้มีรุ่นทดลอง 30 วัน

    00_vnc.png
    
  3. เราตรวจสอบข้อมูลได้ว่าในเครื่องคอมพิวเตอร์ของเรา
    ปัจจุบันใช้ OS : Windows รุ่นอะไร
    มี RAM เท่าไร ดูใน System เมื่อเข้าผ่าน Control Panel
    นับว่าสิ่งที่ผู้ใช้ Windows ทุกคนคุ้นเคย เพราะอะไรอะไร ก็ต้องเข้าแผงควบคุม

    00_win81_64.png
    
  4. การคลิ๊กที่ปุ่ม Windows หรือปุ่ม Start เดิม
    ถ้า Click ก็จะแสดง Metro UI (User Interface)
    ถ้า Right Click ก็จะแสดงรายการ ที่ต้องใช้บ่อย เริ่มจาก Program and Features

    01_start_by_click.png
    
  5. การเข้า Control Panel
    สามารถเข้าผ่าน Right click ที่ปุ่ม Windows หรือ Windows-X แล้วมองขึ้นไป
    หรือพิมพ์ Control Panel ในช่อง Run หลังกด Windows-R

    02_control_panel.png
    
  6. เครื่องมือบริหาร ก็จะมีอะไรให้บริหารมากมาย
    ผมทราบมาว่าในนี้ต้องมี IIS คือ Web Server ของ Windows
    แต่ไม่พบ ก็ไม่แปลก เพราะเค้าไม่ได้ติดตั้งมาให้แต่แรก
    จึงต้องไปหามาลงแล้ว มีแหล่งเก็บของ Windows ที่มี แต่ยังไม่ได้ลง

    03_administrative_tools.png
  7. ใน Control Panel จะมี Program and Features
    และด้านซ้ายจะพบ Turn Windows Features on or off
    ให้คลิ๊กเข้าไป เพื่อเปิด Feature IIS ให้ทำงาน

    04_program_and_features.png
  8. ไม่เห็นคำว่า IIS แต่เห็น Internet Information Services
    ก็คลิ๊ก Check เพื่อบอกว่าขอให้ติดตั้ง IIS ให้ด้วย
    ก็จะมีรายละเอียดโปรแกรมอีกมา ที่เราจะได้มากับ IIS หรือไม่ได้มาด้วย
    ถ้าไม่คลิ๊กบริการย่อย เค้าก็ติดตั้งเฉพาะ Web Server ซึ่งเป็นบริการที่ผมมองหา
    แต่บริการ FTP Server จะไม่มาด้วย อยากได้ต้องคลิ๊ก Check นะครับ
    เห็นใช่ไหมว่า FTP Server ยังไม่ถูกคลิ๊ก

    05_windows_feature_iis.png
  9. เมื่อติดตั้งโปรแกรม IIS เสร็จแล้ว
    เมื่อเข้า Administrative Tools อีกครั้ง
    จะพบกับ Internet Information Services (IIS) Manager

    06_administrative_tools_iis.png
  10. เมื่อเข้าไปคลิ๊กถึง Default Web Site
    จะพบว่าบริการถูก Start คือ พร้อมให้บริการ เป็น Web Server

    07_iis_start.png
  11. กลับไปที่ Desktop หา Web Browser
    แล้วเปิด http://localhost

    08_localhost.png
  12. ในเครื่องคอมพิวเตอร์ของเราน่าจะลง Web Browser ไว้หลายตัว
    ชื่อเรียกเครื่องก็มีหลายแบบ อาจเรียกว่า localhost
    เป็น local ip ก็ 127.0.0.1 หรือ ip จริงของเครื่องก็ได้ หรือชื่อ host ก็ได้อีก
    ลองเรียกว่า http://127.0.0.1 ก็ได้ครับ

    09_127001.png
  13. ถ้าใช้ Winddows อยู่แล้ว Microsoft มีโปรแกรม Web Platform Installer
    แต่เตรียมโปรแกรมไว้มากทีเดียว ทำให้เราสั่งติดตั้งโปรแกรมในรายการ
    แล้วใช้งานได้ทันที ไม่ต้องไปทำ configuration เอง แบบ manual
    เริ่มต้นก็ไปดาวน์โหลดมาติดตั้งในเครื่องของเราก่อน ฟรีครับ

    10_web_platform_installer.png
  14. ขณะดาวน์โหลด หรือติดตั้งก็รอแป๊ปนึง
    โปรแกรมไม่ใหญ่มาก แต่จะไปช้าอีกครั้งตอนติดตั้ง
    โปรแกรมย่อยที่เราเลือกในภายหลัง

    11_install_web_platform_5.png
  15. มองหาคำว่า Products ด้านบน
    แล้วก็เลื่อนหาโปรแกรมที่เราสนใจ กรณีนี้ ผมสนใจภาษา PHP
    ซึ่งเป็น Server Sided Script ทำงานร่วมกับ IIS
    เมื่อเจอ PHP 5.6.31 ก็คลิ๊ก Add และ Install ด้านล่าง

    12_install_php5631.png
  16. แม้จะเลือก PHP มาตัวเดียว แต่ระบบตรวจสอบว่าต้องลงโปรแกรมใดเพิ่ม
    เค้าเรียก Prerequisites เหมือนตอนเรียนหนังสือ
    จะลงวิชา Project ของปี 4 ต้องลงวิชาของปี 1 ก่อน เป็น pre กันอยู่

    13_download_php5631.png
  17. จากนั้นก็รอ มี 2 progress bar คือ Download กับ Install
    โปรแกรมไม่ใหญ่ก็รอแป๊ปเดียว ขึ้นกับความเร็วเน็ตด้วย

    14_download_and_install_php5631.png
  18. พอลงโปรแกรมเสร็จแล้ว
    ก็จะมีรายงานว่าลงโปรแกรมอะไรไปแล้วบ้าง
    อย่างที่เห็นผมเลือก PHP 5.6.31 ตัวเดียว แต่ชวนเพื่อนมาเพียบเลย

    15_iis_php_finish.png
  19. โปรแกรม IIS มี Root Directory อยู่ที่ C:\Inetpub\wwwroot
    จะเขียนอะไรลงไป ก็เปิดให้เพื่อนมา Download หรือเข้าถึงได้
    แต่ Winddows 8 อาจกำหนด Permission  ว่า User ห้ามเขียน
    แล้วเราก็เป็น User หนึ่ง (บางกรณีเราก็เป็นเพียง User ของเครื่อง)
    ต้องเข้าไปแก้ Security ให้ User เป็นแบบ Full Control

    16_folder_permission.png
  20. เปิดโปรแกรม Notepad แล้วพิมพ์ hello world
    เพราะคิดจะทำให้ใคร ๆ เข้าเครื่องของเรา และเห็นข้อมูลที่เราสร้างไว้

    17_notepad.png
  21. สร้างแฟ้มชื่อ helloworld.php
    แล้วทดสอบเปิดด้วย Web Browser ในเครื่องของเรา
    ยังไม่ต้องไปลองที่ไหนไกลนัก

    18_local_hello.png
  22. ลองเรียกใช้ function phpinfo() เพื่อแสดงข้อมูลของเครื่อง
    ที่ฟังก์ชันนี้พอจะแสดงออกมาได้ ก็เยอะครับ
    แล้ว save as เป็น “phpinfo.php”

    19_notepad_phpinfo_helloworld.png
  23. หากเรียบร้อยแล้ว ผมอยากมี Database ไว้ใช้
    ก็เข้า Microsoft Web Platform Installer ผ่าน Metro UI
    ด้วยการคลิ๊กที่ปุ่ม Windows แล้วมองหาโปรแกรมนี้

    20_metro_screen.png
  24. พบ MySQL Windows 5.1 ผมก็เลือก Add และ Install
    โปรแกรมจะถามให้เราใส่รหัสผ่านของ root
    ก็พิมพ์เข้าไปครับ เช่น “Song:letitbe” หรือ อะไรที่ชอบ

    21_mysql_51.png
  25. หลังติดตั้งเสร็จก็จะรายงานว่า were successfully installed
    MySQL จะไม่ถูกติดตั้งลอย ๆ แต่เชื่อมกับ IIS และ PHP เรียกใช้กันได้เลย
    เพราะเป็นหน้าที่ของ Installer ที่ทำหน้าที่ config ให้อัตโนมัติ

    22_mysql_finish.png
  26. MySQL จะเปิดบริการผ่าน port 3306
    ลองใช้ DOS ตรวจการเปิด port ด้วย
    DOS>netstat -na | find “:3306”

    23_netstat_3306.png
  27. การบริหาร MySQL ผมมักใช้ phpmyadmin
    ใน xampp หรือ appserv เค้าก็ลงมาให้เลย แต่มองหาใน installer ไม่พบ
    จึงต้องหาดาวน์โหลดมาลงเองผ่านเว็บไซต์ของ phpmyadmin.net
    ได้ phpmyadmin รุ่น 4.7.3 ไม่ได้อ่านรายละเอียด
    เห็นเป็นรุ่นใหม่ ผมก็ Download มาเลย

    24_download_phpmyadmin.png
  28. ทำการ unzip ลองห้อง c:\inetpub\wwwroot
    แล้วคาดว่าจะเรียกใช้งานผ่าน Web Server ได้ทันที

    25_phpmyadmin_unzip.png
  29. ลองเปิดจากในเครื่อง มีหน้าจอเปิดรอรับ User และ Password
    ตามที่เคยตั้งว่า User = root Password = Song:letitbe หรือะไรที่ชอบ
    เปิดในเครื่องตนเอง เปิดจากเครื่องอื่นเรียก http://localhost ไม่ได้นะ

    26_phpmyadmin_login.png
  30. ชมพูเต็มจอเลย เข้า google ใช้เลข 574 ไปช่วยหาสาเหตุ ก็ไม่พบ
    มีความเป็นไปได้หลายเรื่องที่เกิดปัญหา
    สิ่งที่ฉุกขึ้นมาในความคิดคือ รุ่นของ phpmyadmin ไม่ลงรอยกับที่อยู่ในเครื่อง
    ไปอ่านเงื่อนไขก็จริงครับ phpmyadmin 4.7.3 ต้องใช้กับ mysql 5.5
    แต่ของผมใช้รุ่น MySQL 5.1 เอง

    27_phpmyadmin_473_error.png
  31. ไปสำหรวจในห้อง phpmyadmin พบแฟ้มเพียบเลย
    ในอดีตต้องมาแก้ไข config เดี๋ยวนี้ไม่ต้องล่ะครับ
    การแก้ไขก็ไม่ยากเลย ไปหา phpmyadmin รุ่นเก่า แล้วลบห้องนี้ทิ้ง

    28_phpmyadmin_folder.png
  32. หลังติดตั้ง phpmyadmin 4.0.10.20 แล้ว
    ผมเรียกจากเครื่องที่บ้านผ่าน IP Address เพราะเครื่องที่ลงโปรแกรมอยู่ที่ทำงาน
    ก็ใช้งานได้ปกติ ไม่ใช่เรียกผ่าน localhost หรือ 127.0.0.1 นะครับ

    29_phpmyadmin_40.png
  33. เริ่มงานจากการสร้างตาราง (Table) ในฐานข้อมูล Test
    มี 1 Field ชื่อว่า Test เป็นแบบ Integer

    30_phpmyadmin_create_table.png
  34. ใส่ข้อมูลที่เป็นตัวเลขเข้าไป 1 ระเบียน
    มีค่าเท่ากับ 5

    31_phpmyadmin_insert_5.png
  35. หากจะให้สมบูรณ์ต้องมีอย่างน้อย 2 Fields
    ตัวอย่างนี้สร้าง ID เป็น Auto_Increment และ Test เป็น Varchar ขนาด 50 ตัวอักษร

    32_phpmyadmin_varcha_2_fields.png
  36. เขียนโปรแกรมด้วยภาษา PHP เพื่อเรียกข้อมูลจากตาราง Test มาแสดง
    โปรแกรมนี้เขียนแบบง่าย ๆ ไม่ซับซ้อน
    ผมแชร์เป็น ต.ย.23 ใน http://www.thaiall.com/php

    33_select_in_wwwroot.png
  37. ผลลัพธ์กรณีเรียกข้อมูลที่มี 1 Field แต่มี 2 Records
    ผ่าน IP Address จริงจากที่บ้าน เข้าที่ทำงาน

    34_select_in_browser.png
  38. ทำการ Insert ข้อมูลเข้าตารางที่มี 2 ระเบียน
    เป็นคำว่า สวัสดีชาวโลก กับ Hello world!

    35_phpmyadmin_insert.png
  39. ข้อมูลเก็บแบบ UTF-8 สามารถอ่านได้ปกติ
    จากใน phpmyadmin ไม่พบปัญหาภาษาไทย
    เดี๋ยวนี้ใคร ๆ ก็ใช้ UTF-8

    36_phpmyadmin_browse.png
  40. เขียนโปรแกรม และเตรียม code ให้รับกับ UTF-8
    ทั้ง charset หรือ set names หรือ encoding ของ source code

    37_select_with_utf8.png
  41. ผลลัพธ์ก็ได้เห็นคำว่า สวัสดีชาวโลก สมดังมุ่งหมาย
    นี่ก็เป็นทั้งหมดที่อยากเล่าให้ฟังครับ .. ชาวโลก

    38_helloworld_in_browser.png

</process>

This slideshow requires JavaScript.

การที่ VirtualBox จะได้ IP จริง และ start httpd พร้อม Host

การที่ VirtualBox จะได้ IP จริง และ start httpd พร้อม Host
มีขั้นตอนดังนี้
1. เปิด VBox แล้วเลือกตั้งค่าให้ Guest ของผมใช้ Win8
2. เลือก เครือข่าย (Network)
เดิมกำหนดเป็น Nat เปลี่ยนเป็น แผงวงจรแบบบริดจ์ (Bridge Adapter)
ใช้ Net บ้าน มี Router แจก IP แบบ Wireless ภายในบ้าน
3. สั่ง Start : Guest
ขณะอยู่ใน Guest ใช้ DOS>ipconfig
พบ IP คือ 192.168.1.4 เป็นของ Guest
4. อยู่ใน Host ใช้ DOS> ipconfig
พบ IP คือ 192.168.1.5 เป็นของ Host
5. ทดสอบติดตั้ง xampp
[xampp-win32-7.1.7-0-VC14-installer.exe]
ทำให้ Guest เปิดบริการ Port 80
ติดตั้งเสร็จก็ Start : Apache
แล้วตรวจสอบว่าบริการที่เปิดไว้ เข้าถึงจากภายนอกได้หรือไม่
6. ตรวจใน Service ไม่พบว่า Apache
ตรวจโดยเข้า DOS>Services.msc ก็ไม่พบว่า Apache อยู่ใน Services
ใช้ DOS เข้า c:\xampp\apache\bin แล้วติดตั้งเป็น Service เอง
เข้า Windows, Command Prompt (Admin) จึงจะติดตั้ง Service ได้
DOS>httpd -k install
ใน Config มุมบนขวาของ XAMPP Control Panel มีบริการ Start Automatic
หากเลือกให้ MySQL เปิดอัตโนมัติ ก็จะ Start Automatic ได้
7. ขณะอยู่ใน Guest หรือ Host
ทดสอบการเปิดบริการ Apache ใน XAMPP
เปิด http://192.168.1.4 พบ Web Server ทั้งคู่
8. การสั่ง Start VBox ผ่าน Shell:startup
DOS>”C:\Program Files\Oracle\VirtualBox\VirtualBox.exe” –startvm mywin8
สร้างแฟ้ม .bat ในห้อง Startup
ต่อไปเวลาเปิดเครื่องก็จะสั่งให้ mywin8 ถูก Start ขึ้นมาอัตโนมัติ
และ Service Apache ก็จะถูกเรียกขึ้นมาโดยอัตโนมัติเช่นกัน

http://www.thaiall.com/handbill/openphotodir.php?folder=../os/virtualbox_win8/

http://www.thaiall.com/os/virtualbox.htm

ชอบ Continuum บน Windows 10

click on windows button
click on windows button

Continuum คือ ความสามารถใหม่ของ Windows 10
ในการปรับรูปแบบการทำงานให้เหมาะสมกับอุปกรณ์ที่แตกต่างกัน
ทำงานกับ Notebook ก็จะมีความสามารถเน้นอย่างหนึ่ง
เมื่อไม่มีแป้นพิมพ์บน Surface หรือ Tablet หรือ Phone ก็เป็นอีกอย่างหนึ่ง

 

right click on windows button
right click on windows button

http://www.anandtech.com/show/9413/windows-10-editions-compared
https://www.beartai.com/news/itnews/39985

เปรียบเทียบ windows edition
เปรียบเทียบ windows edition

ผมใช้ Windows 10 Home เห็นตารางแล้ว
รู้สึกอยากได้ Edition อื่น ๆ อย่างเช่น Remote Desktop ก็ไม่มีให้
แต่มีนักพัฒนาทำ RDPWrap
https://github.com/stascorp/rdpwrap
ทำให้เครื่องของผมสามารถรับการเชื่อมต่อแบบ Remote Desktop ได้

การซ้อนภาพหลายคนในภาพเดียวกัน ด้วย paint

two in one by paint
two in one by paint

เคยเห็นภาพซ้อนคนเดียวกันในภาพใบเดียว และมีคำแนะนำมาว่าใช้ photoshop
บางทีผมก็ไม่ได้ใช้ photoshop นะครับ เพราะโปรแกรมตัวใหญ่ทำงานเล็ก ๆ โปรแกรมเล็ก ๆ ก็ทำได้
ปกติจะใช้โปรแกรม paint เพราะโหลดขึ้นมาได้เร็ว และทำงานนี้ได้ไม่ยากครับ
เพียงแค่ cut and paste ก็ทำได้แล้ว
และ paint มีใน microsoft windows

การใช้ paint บ่อย ๆ จะทำให้การจัดการภาพเบื้องต้น
ทำได้ง่าย และรวดเร็ว .. โดยไม่ต้องใช้โปรแกรมครบเครื่องอย่าง photoshop

ภาพเห็นหน้า อ.ธวัชชัย แสนชมภู
https://www.facebook.com/photo.php?fbid=10153509593883895&set=oa.1002024449863425
ภาพเห็นหลัง อ.ธวัชชัย แสนชมภู
https://www.facebook.com/photo.php?fbid=10153509594013895&set=oa.1002024449863425

เมื่อสปาร์ตั้นมา ไออีก็ไป (itinlife492)

spartan 300
spartan 300

โปรแกรมประเภทบราวเซอร์ของบริษัทไมโครซอฟท์ชื่ออินเทอร์เน็ตเอกซ์พลอเรอร์ (Internet Explorer) มีชื่อย่อว่าไออี (IE) โดยเปิดตัวปี 2538 ถูกใช้มานานกว่า 20 ปี ซึ่งรุ่นแรกใช้กับระบบปฏิบัติการวินโดวส์ 95 จนถึง IE11 ในวินโดวส์ 8.1 แล้วปี 2558 ก็มีข่าวว่าวินโดวส์ 10 จะใช้โปรแกรมสปาร์ตั้น (Spartan) แทนไออี และไออีก็จะหายไปในที่สุด จากผลการทดสอบในภาพรวมจากหลายแหล่ง พบว่า สปาร์ตั้นทำงานได้มีประสิทธิภาพกว่าไออีเดิมอย่างเห็นได้ชัด เมื่อเทียบกับ Chrome,  Firefox, Opera หรือ Safari ก็ยังมีบางด้านที่คู่แข่งทำงานได้ดีกว่า

browser ranking http://www.w3schools.com/browsers/browsers_stats.asp
browser ranking http://www.w3schools.com/browsers/browsers_stats.asp

ชื่อโปรแกรมสปาร์ตั้น ไปคล้ายกับชื่อเผ่านักรบโบราณในกรีซ ที่เราเห็นความกล้าหาญในภาพยนตร์เรื่อง 300 ที่ถูกยกย่องว่ามีการฝึกฝนอย่างหนัก มีความกล้าหาญ อดทน ระเบียบวินัย และเก่งกล้าในการรบ การเปลี่ยนไปใช้ชื่อบราวเซอร์ว่าสปาร์ตั้นแทนไออีของบริษัทไมโครซอฟท์ก็คาดว่าจะหวังผลทางการตลาด ที่เคยใช้ชื่อเดิมมากกว่า 20 ปี แต่ถูกชิงบัลลังก์ความเป็นเบอร์หนึ่งไป หากจะชิงบัลลังก์คืนมาก็ต้องมีกลยุทธ์ใหม่อีกหลายอย่าง ซึ่งกลยุทธ์หนึ่งคือการเปลี่ยนชื่อ (Rebranding) สิ่งที่เปลี่ยนชัดเจนคือการใช้ Engine ใหม่ชื่อ EdgeHTML สำหรับเว็บไซต์รุ่นใหม่ แต่ถ้าเป็นเว็บไซต์เก่าก็จะใช้ MSHTML ที่เคยใช้ใน IE11

มีนักข่าวใช้คำว่าข่าวเศร้าที่จะเปลี่ยนจากเก่าเป็นใหม่ หากมองอีกมุมหนึ่งก็น่าจะเป็นข่าวดี เพราะของใหม่ย่อมมีประสิทธิภาพกว่า แต่มนุษย์เรามีเหตุผลในแต่ละประเด็นแตกต่างกันเสมอ เช่น การตัดอุโมงค์ต้นไม้ที่น่านเพื่อทำถนน หรือการทำลายโบราณสถานที่วัดกัลยาณมิตรเพื่อพัฒนาวัด มักมีสองมุมที่ต่างกันคือพัฒนาหรือทำลาย  เมื่อมีเหตุการณ์ที่ความคิดเห็นไม่ตรงกันก็จะมีฝ่ายที่เห็นด้วย ฝ่ายที่ไม่เห็นด้วย และฝ่ายที่มีอำนาจตัดสินใจ หากการตัดสินใจเป็นการประนีประนอมพบกันครึ่งทางก็จะนำไปสู่การยอมรับของทุกฝ่าย เพราะความเป็นจริงไม่มีฝ่ายใดถูกทั้งหมด และฝ่ายใดผิดไปทั้งหมด ทุกฝ่ายต่างมีเหตุผล ซึ่งโปรแกรมสปาร์ตั้นกับไออีก็มีข้อเด่นข้อด้อยแตกต่างกัน โดยเฉพาะความชอบ คนในอดีตอาจยึดติดกับชื่อเดิมชอบของเก่าแล้วไม่ยอมรับชื่อใหม่ คนรุ่นใหม่อาจคิดต่างและพร้อมย้ายไปใช้ชื่อใหม่อย่างไม่ลังเลก็มีอยู่มาก

ranking http://internet-browser-review.toptenreviews.com/
ranking http://internet-browser-review.toptenreviews.com/

http://hitech.sanook.com/1393789/

http://www.manager.co.th/Cyberbiz/ViewNews.aspx?NewsID=9570000149862

http://pantip.com/topic/30810184