l3nr.org เป็นห้องเรียนกลับทาง (Flipped Classroom) ที่ไม่เปิดรับสมาชิกใหม่ไปซะแล้ว

ชอบเว็บไซต์ l3nr.org และแนะนำให้นักศึกษาเข้าใช้บริการเป็นเวทีปล่อยของบ่อยครั้ง เพราะเว็บไซต์นี้เป็นแหล่งปล่อยของสำหรับนักเรียนนักศึกษา ดังคำสำคัญ หรือนิยาม ที่พบในเว็บไซต์ว่า L3nr คือ “เกมส์การเรียนรู้” หรือ “เกมส์กลับหัว เพื่อห้องเรียนกลับทาง (Flipped Classroom)” และ “การจัดการเรียนการสอนแบบห้องเรียนกลับทางนั้น ผู้สอนจะจัดกิจกรรมหลากรูปแบบโดยใช้เครื่องมือหลายอย่างทั้งออนไลน์และออฟไลน์ เพื่อให้ผู้เรียนเกิดการเรียนรู้ตลอดเวลา ทั้งในห้องเรียนและนอกห้องเรียน แบบกลุ่มและแบบรายบุคคล

แล้วปี 2017 จะให้นักศึกษาไปปล่อยของกันที่นี่เหมือนเดิม ก็มีนักศึกษาเข้าไปสมัครสมาชิก แล้วพบข้อความว่า “ระบบ L3nr ในขณะนี้ไม่เปิดรับสมาชิกใหม่แล้วค่ะ กรุณาใช้งานระบบ ClassStart ซึ่งเป็นระบบจัดการการเรียนการสอนออนไลน์ที่สมบูรณ์ที่สุดของไทยในปัจจุบัน” สำหรับเหตุการณ์ที่ไม่รับสมาชิกใหม่ของเว็บไซต์นั้น เคยเกิดขึ้นกับหลายเว็บไซต์มาแล้ว อาทิ geocities.com หรือ thai.net เป็นต้น ซึ่งแต่ละเว็บไซต์ก็มีเหตุผลที่ต้องปรับนโยบายไปเช่นนั้น ซึ่งผู้ดูแล L3nr.org มีอีก 2 เว็บไซต์หลักที่ต้องดูแล และดำเนิการอย่างต่อเนื่องต่อไป ได้แก่ GotoKnow.org คือ เว็บไซต์สำหรับคนทำงานแลกเปลี่ยนเรียนรู้ บันทึกประวัติศาสตร์ชีวิตและการทำงาน ครู อาจารย์ คนทำงานภาครัฐและภาคสังคม และ ClassStart.org คือ ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต จัดการการเรียนการสอนได้ง่าย ไม่ต้องติดตั้งระบบเอง เข้าถึงได้ทุกที่ทุกเวลา

อ่านนิยามของเว็บไซต์ L3nr.org เสร็จ .. ทำให้นึกถึงน้อง Kittichai Mala-in FramyFollow (ป.6) ที่ใช้ medium.com เป็นเวทีแชร์ประสบการณ์ใน โรงเรียนบ้านง่อนหนองพะเนาว์มิตรภาพที่ 126 ตั้งแต่สมัย ป.3 ที่ทำ root Smartphone ของ True ผ่าน King Root พอขึ้น ป.4 กับ ป.5 สร้างเกมด้วย RPG Maker VX เดี๋ยวนี้ ป.6 สนใจ Dream Weaver CS5 กับ CSS ได้ความรู้เยอะเลยจาก thaicreate.com เขียนได้ดี น่านำไปแชร์ต่ออย่างมาก

แล้วนึกถึงหนังสือ ห้องเรียนแห่งอนาคต เปลี่ยนครูเป็นโค้ช ของ อ.วิริยะ ฤาชัยพาณิชย์ มี quote ที่หน้าปกว่า “ฉีกกฎการเรียนการสอนแบบเดิม ๆ เพิ่มหลังการเรียนรู้ให้เด็กไทย
ด้วยห้องเรียนที่สร้างสรรค์อย่างแท้จริง
” แล้วห้องเรียนกลับทางก็เป็นห้องเรียนที่สร้างสรรค์อีกรูปแบบหนึ่ง

สรุปว่า .. มีเวทีมากมายที่เป็นห้องเรียนกลับหัว ที่ให้นักเรียนนักศึกษาใช้เป็นเวทีปล่อยของ จะปล่อยกันเองตามอำเภอใจ ปล่อยตามประเด็นที่ครูอาจารย์มอบหมาย หรือปล่อยเพื่อประกวดแข่งขัน ก็ทำได้ตามสะดวก อย่าใช้แต่เฟสบุ๊กโปรไฟร์หรือแฟนเพจอย่างเดียว ก็แนะนำให้ไปใช้ในหลายแหล่ง มีเวทีมากมายที่เปิดรับเป็น public อย่างแท้จริง อาทิ  1) blogger.ccom, 2) wordpress.com, 3) oknation.net=oknation.nationtv.tv, 4) medium.com, 5) dek-d.com, 6) gotoknow.org, 7) github.com, 8) FreeWebHosting อีกมากมาย และนี่ยังไม่นับรวมเวทีมัลติมีเดียทั้ง คลิ๊ปวีดีโอ เสียง ภาพ ซอฟต์แวร์ หรืออีบุ๊ค เป็นต้น

ใน 7 sites แรกที่แนะนำไปด้านบน
มี WordPress.com ที่ชอบมากเป็นพิเศษ เพราะ export post ที่เลือกแบบ published ไปให้เพื่อนที่ลง WP ไว้ในระบบ แล้ว import แฟ้ม XML ได้เลย เรียกว่า ปล่อยของไว้ที่ WP วันดี คืนดี อยากเปลี่ยนเวที ก็ Export ไปที่อื่นได้เลย

นี่ผมก็ export จากไซต์ของ wordpress.com ได้แฟ้ม xml ไปฝากไว้กับ github.com
ที่ https://github.com/thaiall/programming-page/tree/master/wordpress

 

ก่อนหน้านี้ก็มีเว็บไซต์ดี ๆ อย่าง Wonkdy.org
เขียนโดย ดร. จันทวรรณ ปิยะวัฒน์ ร่วมเขียนโดย ดร. ธวัชชัย ปิยะวัฒน์
http://www.usablelabs.org
ข้อมูลจาก https://web.archive.org/web/20150908071932/https://www.wonkdy.org/pages/101

ในวันที่เจ้าต้นไม้เข้าเรียนประถมหนึ่ง แม่ถามพ่อว่า “รู้ไหม ลูกเราจะต้องเรียนอะไรบ้าง?”

แน่นอนว่าพ่อตอบไม่ได้และนั่นคือจุดเริ่มต้นของ Wonkdy Academy (หวังดี อคาเดมี)

หวังดี อคาเดมี เป็นพื้นที่รวบรวมโน้ตของพ่อและแม่เพื่อจะได้รู้และช่วยสอนลูกได้ เพราะพ่อกับแม่เชื่อว่าการเรียนรู้ที่ดีเพื่อพัฒนาเป็นการเรียนรู้ตลอดชีวิตต้องเริ่มต้นที่บ้าน

หวังดี อคาเดมี เป็นพื้นที่ออนไลน์ที่พ่อและแม่จะได้แบ่งปันเนื้อหาเหล่านี้ให้พ่อและแม่ของคนอื่นๆ ต่อไปเพราะเราอยู่ในสังคมเดียวกัน การเกื้อกูลกันโดยแบ่งปันความรู้คือของขวัญที่ดีที่สุดที่จะมอบให้แก่สังคม

นอกจากนี้พ่อและแม่ยังชักชวนพี่น้องเพื่อนฝูง ทั้งในวงการการศึกษาที่พ่อและแม่ทำงานอยู่และคนอื่นๆ ที่มีความตั้งใจเดียวกัน เพื่อร่วมกันแบ่งปันเนื้อหาดีๆ ให้ทุกคนสามารถตอบคำถามเดียวกันที่แม่ถามพ่อได้ว่า “เรารู้ว่าลูกเราเรียนอะไร”

หวังดี อคาเดมี เป็นระบบเพื่อสนับสนุนการเขียนร่วมกันในลักษณะเดียวกันกับ Wikipedia โดย หวังดี อคาเดมี พยายามพัฒนาให้ใช้งานได้ง่ายที่สุด สอดคล้องกับการใช้งานของคนไทย และเหมาะกับเนื้อหาด้านการศึกษามากที่สุด

โครงการ หวังดี อคาเดมี ให้บริการโดย ศูนย์พัฒนานวัตกรรมเพื่อการจัดการความรู้และการเรียนรู้ คณะวิทยาการจัดการ มหาวิทยาลัยสงขลานครินทร์

ส่วนคำว่า “หวังดี” นั้นมาจากคำแปลของคำว่า “ปิยะวิชญ์” (Piyawish) ที่เป็นชื่อจริงของเจ้าต้นไม้ ที่พ่อและแม่พยายามคิดโดยเอาบาลีบวกสันสกฤตบวกอังกฤษเพื่อเป็นชื่อของ “ดช.หวังดี” คนดีของพ่อและแม่นั่นเอง

ปล. เรารู้ความหมายของคำว่า wonk, wonky, (และ wank) ในภาษาอังกฤษดีจึงตั้งชื่อเว็บนี้ว่า “wonkdy” เพื่อเป็นอนุสรณ์ถึงระบบการศึกษาของโลกนี้ที่พ่อกับแม่ได้เจอมา และด้วยความหวังว่าลูกคงได้เจอสิ่งที่ดีกว่า

 

อยากแก้ไข source code ของเราในเครื่องเราที่อยู่ใน Github.com เริ่มจาก pull แล้วค่อย push

ทบทวนกันนิดนึง  .. ก่อนไป clone vscode ของ microsoft
ปัจจุบันมีบัญชีใน Github.com แล้วอยากแก้ไข code ทั้งของเรา และของเขา บนเครื่องคอมพิวเตอร์ของเรา ถ้าเป็นของเราก็ push กลับไปได้ เริ่มจาก pull มาในเครื่องเรา พอแก้ไข code เสร็จ ก็ push กลับเข้าไป

clone vscode
clone vscode

มีขั้นตอนดังนี้

1. ติดตั้ง git หา Download
ได้ที่ https://git-scm.com/download

2. เข้า cmd หรือไม่ก็ใช้ Atom editor เป็นอีกทางเลือกนึง
สร้างห้องเตรียมรับ repository ที่จะดึงมาแก้ไข
อาทิ d:\git\mygitfriends
แล้ว cd d:\git\mygitfriends

3. พบห้อง DOS> หลัง run cmd
เคยเล่าขั้นตอน 9 ข้อใน http://www.thaiall.com/blog/burin/8875/
หรืออ่านเพิ่มเติมที่ https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
วันนี้สั้นหน่อย แบบรวบรัด
DOS> git init
DOS> git config –global user.email “test@test.com”
DOS> git config –global user.name “test”
DOS> git remote -v เพื่อดูว่าเชื่อมต่อทิ้งไว้แล้วหรือไม่ จะได้ไม่ซ้ำ เช่น burin
DOS> git remote remove burin แค่นี้ก็ล้างข้อมูลที่เคยเชื่อมต่อไว้ แต่ folder ไม่หายนะครับ
DOS> git remote add mytest https://github.com/thaiall/mygitfriends.git
DOS> git pull mytest master ก็ดึง branch:master ตามลิงค์ข้างต้นมาในเครื่อง ต่อไปก็เรียก mytest
ข้อมูลมาเยอะเลย ไม่ถาม user & password เพราะเป็น public และมีรูปนึกศึกษาเพียบเลย
DOS> notepad README.md
แล้วเพิ่ม This is my test on 16 september 2017. ต่อท้ายไปอีก 1 บรรทัด
เอาละ Mission complete แล้วนะ ต่อจากนี้ก็ push ล่ะ
DOS> git add README.md
เพื่อให้ git รู้ว่ามีรายการเปลี่ยนแปลง คือ “แฟ้มนี้นะ ที่ส่งเข้าประกวด”
DOS> git commit -m “i want to write lesson at http://www.thaiall.com/blog
DOS> git push -u mytest master
ผมเลิกใช้คำว่า origin จะได้ไม่สับสน เพราะเราใช้อะไรก็ได้ ไม่ต้อง origin
จากนี้ก็จะลบข้อมูลการทดสอบทิ้งหละครับ เพราะ Mission complete
เนื่องจาก login github.com ไว้แล้ว เมื่อ push ก็ไม่ถาม user & password อีก

4. ถ้าต้องการ project ใน github.com ไม่ต้อง pull ก็ได้
ใช้ clone เพื่อ download ลงมาเลย แบบนี้แก้แล้ว push กลับไม่ได้นะครับ
เริ่มต้นก็ลบทุกอย่างใน current directory ก่อน clone อะไรมาได้ ก็จะได้รู้

4.1 แบบ pull
เริ่มจากกำหนดชื่อ branch อาทิ mytest ในเครื่องเรา ที่จะเชื่อมกับ branch master
แบบนี้คล้ายกับ clone แต่หวังจะ push ถึงได้ใช้ pull
DOS> git init
DOS> git remote add mytest https://github.com/thaiall/mygitfriends.git
DOS> git pull mytest master
มาเลย

4.2 แบบ clone ไม่ต้องอะไร สั่ง git clone ตามด้วย url ก็มาเลย
ไม่ต้องสั่ง git init ก็ได้ download มาเลย แล้วสร้าง Folder แยกให้
DOS> git clone https://github.com/schacon/ticgit
DOS> git clone https://github.com/thaiall/mygitfriends
DOS> git clone https://github.com/toyoshim/SyobonAction
DOS> git clone https://github.com/Microsoft/vscode
ถ้ารอ download นาน แล้วอยากยกเลิก ก็กด Ctrl+C หรือ close window

น้องวงศ์แชร์แนวคำถาม ในกลุ่มโปรแกรมเมอร์ไทย ลองแกะ for ดู

ตอน i=9 ไล่ ascii ผิดครับ ภาพนี้แก้ไข
ตอน i=9 ไล่ ascii ผิดครับ ภาพนี้แก้ไข

<introduction>
อ่านโจทย์ที่น้อง Wongsakorn แชร์มาในกลุ่มสมาคมโปรแกรมเมอร์ไทย
บอกว่าเป็นแนวข้อสอบที่ ม. เห็นแล้วก็สนใจ สมาชิกเข้าไปเม้นท์เพียบ
https://www.facebook.com/groups/ThaiPGAssociateSociety/
มาโปรแแกรมเดียวแต่มี 12 คำถาม
เท่าที่ดูเป็นภาษา C ปรับเพิ่ม include แล้วเอาไปลองที่ jdoodle.com ได้
https://www.jdoodle.com/c-online-compiler
</introduction>

<question>
คำถาม 12 ข้อมีดังนี้
1. loop for ทำงานกี่รอบ
2. ถ้า i=9 แล้วค่า t1 คืออะไร
3. ถ้า i=9 แล้วค่า s2[9] คืออะไร
4. ถ้า i=5 แล้วค่า t1 คืออะไร
5. ถ้า i=5 แล้วค่า t2 คืออะไร
6. ถ้า i=1 แล้วค่า t1 คืออะไร
7. ถ้า i=1 แล้วค่า t2 คืออะไร
8. ถ้า i=1 แล้วค่า s2[1] คืออะไร
9. ถ้าออก for แล้วค่า i คืออะไร
10. ถ้าออก for แล้วค่า sum คืออะไร
11. ถ้าออก for แล้วค่า s1[1] คืออะไร
12. ถ้าออก for แล้วค่า s2[7] คืออะไร
</question>

<process>
1. ดู code แล้วก็ต้องลองนำไป compile
เพราะถ้าตอบแล้วก็อยากพิสูจน์คำตอบ ว่าใช่หรือไม่
สุดท้ายแล้ว ผมก็ไม่ได้แก้ code ให้เฉลยตามโจทย์
เพราะดูผลจาก excel ก็น่าจะได้คำตอบครบแล้ว
แต่อาจนับผิดตำแหน่งใน Ascii table นั่นก็เป็น human error หละครับ

2. ลอง code ภาษา C
ที่ https://www.jdoodle.com/c-online-compiler

3. source code ไม่ได้มีเฉพาะ while, for และ variable
แต่มี function เข้ามาเกี่ยวข้อง ตัวแปรแบบ Array of character
และการตรวจสอบค่าก็เกี่ยวกับ Ascii table ชัดเจน
https://www.cs.bu.edu/teaching/cpp/string/array-vs-ptr/

4. ค่าของ Array of character และ strlen
ทดสอบ code กันก่อน ไปดู code จริง

#include <stdio.h>
 #include <string.h>
 void main() {
 char var1[] ="abcdef"; // strlen คืนค่า 6
 char var2[5] = "abc"; // size of the array is determined at compile-time
 char var3[5] = {'a', 'b', 'c', '\0'};
 char var4[3] = "abc";
 printf("%zu\n %zu\n",strlen(var1),strlen(var2)); //6 3
 printf("%zu\n %zu\n",strlen(var3),strlen(var4)); //3 3
 printf("%zu\n %s\n %c\n %c\n",strlen(var3),var4,var4[0],var4[2]); //3 abc a c
 // http://www.cplusplus.com/reference/cstdio/printf/
 // var1 = "abc"; can not do this for array of character in c language
 }

5. ฟังก์ชัน strcmp กับ strcat กับ strcpy
ทดสอบ code กันก่อน ไปดู code จริง
https://www.tutorialspoint.com/c_standard_library/c_function_strcmp.htm

void main() {
 #include <stdio.h>
 #include <string.h>
 void main() {
 char var1[] ="abcd";
 char var2[5] = "abc";
 char var3[5] = "ABC";
 char var4[2] = {'a','\0'};
 char var5[2] = {'0','\0'}; //
 if(strcmp(var1,var2)>0) printf("true"); else printf("false"); // true : [3] 100 > 0
 if(strcmp(var2,var3)>0) printf("true"); else printf("false"); // true : [0] 97 > 65
 if(strcmp(var3,var4)>0) printf("true"); else printf("false"); // false : [0] 65 > 97
 if(strcmp(var4,var5)>0) printf("true"); else printf("false"); // true : [0] 97 > 30
 if(strcmp(var5,var1)>0) printf("true"); else printf("false"); // false : [0] 30 > 97
 strcpy(var4,var2); // var4 replaced by var2
 if(strcmp(var2,var4)==0) printf("true"); else printf("false"); // true : [0] abc = abc
 printf("%s %s",var2,var4); //abc abc
 strcpy(var5,var1); // var5 replaced by var1
 printf("%s %s",var1,var5); //abcd abcd
 strcat(var3,var4); // var3 = var3(ABC) + var4(abc) = ABCabc
 printf("%s %s",var3,var4); //ABCabc abc
 }

6. โปรแกรมนี้ใช้ mod ด้วย
ทดสอบ code กันก่อน ไปดู code จริง

char var1[] ="abcd";
printf("%i",var1[0] % 2); // 1
printf("%i",var1[1] % 2); // 0
printf("%i",var1[2] % 2); // 1

ในโจทย์ต้อง mod y คือตัวที่ 25 ในภาษาอังกฤษ น่าจะ mod 2 แล้วได้ 1 นะ

7. มีคำถามเรื่อง i ที่ออกจาก for แล้ว
ภาษา c จะคำนวนค่า i แล้วเปรียบเทียบ
ดังนั้นค่า i จะเป็นค่าที่อยู่นอกเงื่อนไขของ for

int i;
for(i=5;i>0;i=i-2) {}
printf("%i",i); // -1

8.มีคำถามหนึ่งที่เค้าไม่ได้ถาม แต่ผมสงสัย
คือ char ที่ไม่มีค่า หาก -1 จะได้เท่าใด คำตอบ คือ -1 เหมือนเดิม
เพราะค่าที่จองไว้ default เป็น 0 หมด
แต่ถ้าพิมพ์ค่าที่เกินจากที่จอง โปรแกรมไม่ error แต่เอาที่ไหนมาก็ไม่รู้
เช่น v[20] ออกมาเป็น 55 นั่นหละครับ

char v[10] = "abcde";
v[9] = v[9] - 1;
printf("%i %i %i %i %i",v[1],v[5],v[6],v[9],v[20]); // 98 0 0 -1 55

9. ถ้าเข้าใจฟังก์ชันทั้ง 4 แล้วก็เหลือแต่วน loop
ปกติก็จะทำเป็นตารางแบบ excel มี header แยก column ตามตัวแปร หรือตามชอบ
row ก็เป็นค่าของ i เท่าที่ดู code ก็ไม่เปลี่ยนค่า i กระทันหัน วนจนจบเลย
จากนี้ผมจะไปเปิด excel ช่วยล่ะครับ

10. สรุปว่าคำตอบทั้งหมด ผมไม่ได้ตอบนะ
แต่ดูจาก excel ที่ได้จากการไล่ค่าใน loop
ซึ่งเก็บเรื่องนี้ไว้ไปเล่าต่อ หากมีโอกาสน่ะครับ
เพราะผมเล่า for ซ้อน for กับ mod แค่นั้นก็เหนื่อยล่ะ
</process>

ภาพนี้ไล่ลำดับ i=9 ผิด ทำภาพมาใหม่อยู่ด้านบน
ภาพนี้ไล่ลำดับ i=9 ผิด ทำภาพมาใหม่อยู่ด้านบน

MDB Viewer Plus สำหรับเปิดแฟ้ม .mdb หาก Microsoft Access รุ่นใหม่เปิดไม่ได้

MDB Viewer Plus
คือ โปรแกรมช่วยในการเปิดแฟ้ม .mdb ที่สร้างมาจาก Microsoft Access 97
สามารถ download รุ่น Portable มาใช้ได้
ใช้โปรแกรมนี้เปิด NorthWind.mdb
โดยคลิ๊ก Menu bar, File, Open แล้วเลือกแฟ้มก็จะเปิดตารางทั้งหมดมาให้เห็น
สามารถเลือก Menu bar, Table, Export table เป็นแฟ้มแบบ .csv หรือ .xml เป็นต้น
หรือ Menu bar, Table, Generate SQL – Create และทดสอบ Execute คำสั่ง SQL ได้

mdb viewe rplus
mdb viewe rplus

http://www.thaiall.com/project/projectdbnwind.htm
http://www.alexnolan.net/software/mdb_viewer_plus.htm

ยัดเยียดกรอบความคิดเรื่อง “อ่านออก เขียนได้” เข้าห้วเด็ก อยากให้อยู่ในกรอบนี้

มนุษย์กลุ่มหนึ่งมี กรอบแนวคิด (Framework)
ว่า มนุษย์คนอื่นควรที่จะ อ่านออก + เขียนได้
การทำไม่สำเร็จ ถือเป็นความล้มเหลว ที่ต้องแก้ไข
พยายามยัดความคิดว่า

มนุษย์ต้องอ่านออกเขียนได้ เข้าไปในหัวเด็ก ๆ

พบว่า มีความพยายามแก้ไขด้วยวิธีการต่าง ๆ
อาทิ ครูไม่พอ ก็ไปหาครูมาเพิ่ม
เพื่อยัดกรอบความคิด (Framework) เรื่องอ่านออกเขียนได้ เข้าไปในหัวเด็ก ๆ

เด็ก ๆ บางทีก็คิดนอกกรอบนี้นะครับ
(เคยดูหนังเรื่อง คิดถึงวิทยา ที่โรงเรียนเรือนแพน่ะครับ)

 

มีกรอกความคิด อยากให้เด็กอ่านออกเขียนได้
มีกรอกความคิด อยากให้เด็กอ่านออกเขียนได้

http://www.kruwandee.com/news-id35908.html
https://www.facebook.com/photo.php?fbid=10155654550518895&set=a.10150933077238895.437258.814248894&type=3&theater

ทุกวันนี้เจอพวกตีกรอบมามากมาย
การตีกรอบความคิดมีความพยายามกันเยอะครับ
ดูหนังหนึ่งเรื่อง อ่านข่าวหนึ่งย่อหน้า ผมก็โดนยัดความคิดเข้าสมองมาล่ะ
นี่ไปดูหนังเรื่อง “สิ่งเล็ก ๆ ที่เรียกว่ารัก
พอดูเสร็จเท่านั้นหละ “รักแฟนขึ้นมาเลย
หรือ
ดูโฆษณาผ้าอนามัย ดูเสร็จ “อยากใส่ผ้าอนามัยเลย
โดนล้างสมองมาเรียบร้อย แต่เอ๊ะ ผมไม่ใช้ผ้าอนามัยนี่นา

ทุกวันนี้ก็ตีกรอบความคิดให้นักศึกษาของผมอยู่
ยัดความคิดเรื่อง
อ่านโปรแกรมออก
เขียนโปรแกรมได้
ก็ไม่รู้จะยัดความคิดพวกนี้ได้ไหม หรือพวกเขามีกรอบความคิดเป็นของตนเอง
.. คืออะไรนะ

ติดเกมมาริโอ้แมว ตอนที่ 3 ทำให้แมวจาก github ดิ้นด้วย MinGW บน Msys (แบบไม่ build SDL เอง)

Github นี่ดีนะครับ ยิ่งค้น ยิ่งเจออะไรอีกเยอะ
Github นี่ดีนะครับ ยิ่งค้น ยิ่งเจออะไรอีกเยอะ

ที่มาของเรื่อง
พบรหัสต้นฉบับเกมมาริโอ้แมว ที่ใช้ mouse ควบคุมตัวละครแมวกระโดดดึ๋ง ๆ ตอนนี้ต้องการเพียงนำ Source code มา compile, link แล้วก็ run ไม่คิดจะแก้ หรือปรับ code หากไม่จำเป็นจริง (ที่ต้องแก้ code เพราะ compile ไม่ผ่าน) และใน code ใช้ SDL (Simple DirectMedia Layer) เป็นพระเอกเรื่อง Media ซึ่งเป็น package ที่เก่ามาก (ราว 5 ปีแล้ว) ไม่ได้ใช้ SDL2 ซึ่งใหม่กว่า และ SDL ส่วนใหญ่ก็มี release ประมาณปี 2013 หรือก่อนนั้น .. สรุปว่าพบปัญหาก็ค่อย ๆ แก้ไขไปทีละเรื่อง

lesson การใช้ SDL เขียนเกม ละเอียดเลย
lesson การใช้ SDL เขียนเกม ละเอียดเลย

ในตอนหน้าคิดจะเล่าเรื่อง MinGW-W64 ตอนที่แล้วใช้ Cygwin
แต่ตอนนี้เล่าเรื่องใช้ MinGW ที่ติดตั้ง package msys มีเรื่องเล่าดังนี้

1. เลือกเครื่องมือแปลเกม
พบ Code เกม Cat mario ภาษา C++ เขียนโดยคนญี่ปุ่น
แชร์ใน Github.com นำมาลอง compile ด้วย GCC
เลือกใช้ MinGw (Minimalist GNU for Windows) เพราะเป็น GCC บน Windows
รุ่นที่ให้ Download เลือก mingw-get-setup.exe
Modified 2013-10-04 – version 0.6.2-beta-20131004-1
https://sourceforge.net/projects/mingw/files/Installer/
โปรแกรมแนวเดียวกันมีอีกหลายโปรแกรม อาทิ MinGW-W64 หรือ MSys2

download mingw_get 2013
download mingw_get 2013

2. เลือก package ระหว่าง install มีให้เลือกมากมาย
แต่ถ้าจะ compile เกมด้วย gcc ก็เลือกที่จำเป็นเพียงไม่กี่ตัว
เริ่มจากเลือกห้องลงโปรแแกรมใน c:\MinGW
และมี package 3 ตัวหลักดังนี้

- mingw-developer-toolkit
- mingw32-gcc-g++
- msys-base
mingw package
mingw package

3. หลังติดตั้งเสร็จ ก็ไป download รหัสต้นฉบับมาเตรียม compile
ก็ download เกมจาก https://github.com/angelXwind/OpenSyobonAction
แล้วผมก็นำ .cpp จำนวน 3 แฟ้มมาแก้ไข
เพราะรุ่นของ g++ ที่ใช้ในปัจจุบันเป็นรุ่นใหม่กว่าที่ผู้พัฒนาคนก่อนใช้เมื่อหลายปีก่อน
ทำให้ต้องแก้ทั้ง main.cpp loadg.cpp และ dxlib.gcc
และต้องเตรียมแฟ้มเข้าห้อง include, lib, bin(sdl-config) และ dll(.exe)
หลังเตรียม และทดสอบ ก็ upload ทั้งหมดเข้า repository
ที่ fork มาที่ https://github.com/thaiall/OpenSyobonAction
สรุปว่าท่านที่สนใจก็จะได้เห็นทั้งรุ่นก่อนปรับปรุง และรุ่นปรับปรุง

4. ใน MinGw มี msys ที่กำหนดให้เห็น G++ มาแล้ว
เริ่มต้นเข้า shell prompt หรือ bash
ด้วยการ run C:\MinGW\msys\1.0\msys.bat
ซึ่ง msys จะกำหนด config ให้รู้จักกับ G++ ที่ติดมากับ MinGWแล้ว
ไม่ได้อาศัย Path ของ Windows
ดังนั้นการกำหนด path ไปมองที่เก็บ G++ ในห้องอื่นผ่าน Windows+Pause Break
เพื่อแก้ path ใน Environment variables ไม่ได้ทำให้การเห็นรุ่นของ G++ เปลี่ยนไป
แต่การเปลี่ยน path มีผลต่อการเห็นรุ่น G++ ใน MinGW-w64 เพราะลง Msys แยกได้

มี msys 2 ตัว ก็มี g++ คนละ version
มี msys 2 ตัว ก็มี g++ คนละ version

5. ไปหา SDL source code มา build (ปี 2013 หรือประมาณนั้น)
ทั้ง SDL, SDL_mixer, SDL_gfx, SDL_image, SDL_mixer, SDL_ttf, freetype
https://www.libsdl.org/release/SDL-devel-1.2.15-mingw32.tar.gz
http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.24.tar.gz
https://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz
https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.11.tar.gz
https://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.11.tar.gz
https://downloads.sourceforge.net/freetype/freetype-2.8.tar.bz2 (required by SDL_ttf)

$ .\configure
$ make
$ make install
gcc ไม่มี -V แต่ configure ไม่ผ่าน พบใน config.log
gcc ไม่มี -V แต่ configure ไม่ผ่าน พบใน config.log

ก็ผ่านไปหลายตัวครับ ติดตรง SDL_mixer ที่คนอื่นก็ติดกัน
อ่านได้ที่
– https://forums.libsdl.org/viewtopic.php?t=1431&sid=1856a055ebc60448105ee35a3779c7b2
https://forums.libsdl.org/viewtopic.php?p=10686
ไปแก้แฟ้ม configure แล้ว แต่ก็ติดจุดอื่นอีก

Line 2459 จาก "$ac_compiler -V >&5"
Line 2453 จาก "$ac_compiler -V >&5"
Line 11044 จาก "$ac_compiler -V >&5"
Line 11050 จาก "$ac_compiler -V >&5"

หลังเปลี่ยนจาก -V เป็น -v ก็มีปัญหาอื่นตามมาอีก
สรุปก็ต้องยอมแพ้ ไม่ใช้ include, lib และ dll ที่ได้จากการ build เอง
แต่ไปหาคัดลอกจาก github.com ที่เค้า share ไว้มาใช้เลย แล้วก็ใช้ได้
เหมือนที่ผม share ใน github.com นั่นหละครับ แต่ผมเลือกที่ต้องใช้กับ cat mario
ไม่ต้อง install แต่ copy เข้าไปวางใน folder ที่กำหนดเท่านั้น
ปล. ก็ไปหามาลองใช้หลายแหล่งเหมือนกัน กว่าจะลงตัว

ปัญหา -V ของ configure นี้มีหลายคนพูดถึงกันในหลายโปรแกรม ลองไปอ่านกันได้
syrinx พบปัญหา -V กับ compiling with gcc 4.7.2 and autoconf 2.69
https://superuser.com/questions/846768/
monodromy พบปัญหา -V กับ gcc-4.8.2
https://bbs.archlinux.org/viewtopic.php?id=177400
Pradeep Gupta พบปัญหา -V กับ ruby บน ubuntu
https://serverfault.com/questions/580489/

6. ปัญหาการ Build ไม่ได้เกิดกับ SDL ทุกโปรแกรม
ที่ build ไม่ผ่านก็พบกับ SDL_mixer ตั้งแต่ใช้ configure และก่อนที่จะพบปัญหาใน SDL_mixer พบว่า SDL_ttf ต้องใช้ Freetype2 ก็ต้องไป download และ build ก่อนที่ SDL_mixer จะผ่านไป ไม่อัตโนมัติเหมือนที่ทำให้ cygwin และการเป็น source code รุ่นเก่า ของหลายโปรแกรม ที่ยึดโยงกับ source code ที่ได้มา (ตั้งใจไม่แก้ source code ไปตาม package รุ่นใหม่) ทำให้สงสัยว่าอีกหลายโปรแแกรมที่ make install ผ่านแล้วนั้น จะเข้ากันได้ในตอน compile หรือไม่
ปัจจุบันใช้ compiler G++ รุ่นใหม่อย่าง 6.3.0 (Dec 2016) หรือ 7.1.0 (May 2017)
https://gcc.gnu.org/releases.html
สรุปว่า ข้อ 5 กับข้อ 6 ผมเล่าปัญหาให้ฟังว่า build แล้วติด เมื่อทำใน environment นี้

build sdl_ttf แต่ถามหา freetype2 ก็ต้องไป build มาก่อน
build sdl_ttf แต่ถามหา freetype2 ก็ต้องไป build มาก่อน

7. หลังแก้ไข code ให้รับ G++ รุ่นใหม่
แล้วเตรียมสภาพแวดล้อมที่เอื้อต่อการ compile เหมือนที่ทำในข้อ 3 ได้แก่ เตรียมแฟ้มเข้าไปในห้อง include, lib, bin (แฟ้ม sdl-config) และ dll(ห้อง .exe)
– ในการใช้ compiler G++ สามารถใช้กับ cmd ได้กับโปรแกรมทั่วไป
แต่การแปลเกมนี้ ต้องใช้ sdl-config ที่ต้องใช้ ascii ตัวที่ 96 เพื่อทำงานส่วนนี้
หากใช้กับ cmd ไม่ว่าจะใช้ ‘ หรือ ” หรือ $( ก็ไม่ผ่าน
ต้องไป compile บน bash (/usr/bin/sh)
– การ compile บน bash ที่ใช้ msys มีขั้นตอนดังนี้
$ 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
$ SyobonAction.exe
สรุปคือโปรแกรม SyobonAction สามารถ run ได้ทั้งใน msys, cmd และ explorer
แต่ต้องมีแฟ้ม .dll ให้พร้อมเรียกใช้ระหว่าง runtime หลายแฟ้ม
พบปัญหาว่า จะ run .exe ต้องมี .dll หลายแฟ้ม
แก้ไขด้วย การใช้โปรแกรม 7z ทำ .exe ช่วย extract ก่อน run
มีวิธีทำ installer.exe = 7z(.exe(start after extract) + *.dll + folders)
http://ntsblog.homedev.com.au/index.php/2015/05/14/self-extracting-archive-runs-setup-exe-7zip-sfx-switch/

8. สรุปอีกครั้งเรื่อง run
ในการเรียก SyobonAction.exe
จะต้องมี .dll หลายแฟ้มรองรับขณะ runtime
อีกนัยหนึ่ง .dll นี่ใช้ตอน run
อาจอยู่ห้องเดียวกันกับ .exe หรือไปอยู่ใน /system32 หรือ /syswow64 ก็ได้
ประกอบด้วย

SDL.dll
SDL_gfx.dll
SDL_image.dll
SDL_mixer.dll
SDL_ttf.dll
libpng12-0.dll
zlib1.dll

 

ปล. แนะนำบทเรียนเขียนเกม ด้วย SDL (บทเรียนของเค้าน่าสนใจ)
เรื่อง Beginning Game Programming v2.0
ที่ http://lazyfoo.net/tutorials/SDL/

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

การนำเอกสารที่แชร์ใน google drive เข้าไปเป็นของตนเอง

อ.ธาม เชื้อสถาปนศิริ
อ.ธาม เชื้อสถาปนศิริ

พบการแชร์ในสื่อสังคม
เป็นเอกสารน่าสนใจ จากบัญชีเฟสบุ๊ค ของ อ.ธาม เชื้อสถาปนศิริ
https://www.facebook.com/time.chuastapanasiri
แชร์เอกสารใน google drive ผ่าน facebook แบบ public
เรื่อง จริยธรรมวารสารศาสตร์ (Journalist ethics)
ที่ https://drive.google.com/../view
มีจำนวน 189 หน้า ขนาด 27 MB ถือว่าไม่ใหญ่มากนัก เพราะรูปภาพทั้งนั้น

time.chuastapanasiri
time.chuastapanasiri

เปิดเข้าไปดู
เห็นบน menu bar มีคำว่า เพิ่มใน “ไดร์ฟของฉัน
เพราะขณะนั้นเปิด gmail.com ทิ้งไว้แล้ว
กดแล้วก็เข้าเลย แล้วเข้า “จัดระเบียบ
พบแฟ้มใน ไดร์ฟของฉัน คลิ๊กแฟ้ม
แล้วเลือก “เปิดการแชร์ลิงก์ ให้ทุกคนที่มีลิงก์สามารถดูได้
ที่ https://drive.google.com/open?id=0B..WM
เอกสารนี้ท่านก็แชร์เก็บไว้ได้ เพียงแต่มีบัญชีของ google.com เท่านั้น

ชอบภาพหลายมุมมองครับ

 

 

ติดเกมมาริโอ้แมว ตอนที่ 1 เห็นแค่แมวดิ้นเป็นพอ

มีอยู่วันหนึ่งเพื่อนรุ่นน้อง เห็นว่าผมสีหน้าเครียด
เค้าก็บอกว่าผมต้องเล่นเกมนี้ “อย่างฮาเลย
นั่นเป็นปฐมบทของความฮาซีรี่นี้

แล้วสักพักต่อมา เค้าก็มานั่งที่เครื่องผม
เพราะรู้อีกทีก็มีเกมที่หน้าจอแล้ว
เค้าส่งผ่าน FB message เข้ามา ระหว่างเรานั่งคุยกัน
พอได้ลองเล่นแล้วก็ฮาจริง ๆ
จำได้ว่าเคยเล่นเกมแนวนี้ ราวปีพ.ศ.2525
น่าจะเป็นเกมตู้ ที่ใต้โรงหนังดาว สมัยนั้นต้องหยอดเหรียญเล่น
https://github.com/thaiall/OpenSyobonAction

น้องเค้าดาวน์โหลดจาก Mediafire
http://www.mediafire.com/../Neko+Mario+Eng.rar
ขนาด File size: 4.63 MB
พอแตก RAR ก็เห็น source code ภาษา C

อุทานในใจ “เฮ้ยมี source code มาด้วย
เปิดดู code ก็ไม่เยอะ จำนวนแฟ้มก็แค่ 3 แฟ้มสำคัญ
ตั้งแต่นั้นก็เริ่มนั่งหาข้อมูล อยากให้แมวเริ่มดิ้นเป็นพอ
เพราะเสียง ภาพ และรหัสต้นฉบับมีหมดแล้ว
เหลือก็แค่ compile, link แล้วก็ run

1. เท่าที่ดูก็ใช้ภาษา C นะ แต่ C อะไรล่ะนั่น
ไม่ใช่โปรแกรม Hello world นะครับ จะได้ใช้ C อะไรก็ออกหมด
ในใจแอบคิด งัด Turbo C มาซะดีไหม
นั่งอ่านไปสักพัก พบว่า angelXwind ที่ github.com
แชร์มาเป็นแฟ้ม .cpp มี makefile ด้วย
เค้าใช้ GCC (GNU Compiler Collection) คำย่อเดิมคือ GNU C Compiler
แล้วใน Github.com มี readme ทั้งอังกฤษและญี่ปุ่น
https://github.com/angelXwind/OpenSyobonAction/blob/master/Makefile

2. มองเห็นจำนวนแฟ้ม นั่งหัวเราะหึหึ
เพราะมีแฟ้มสำคัญแต่ 3 แฟ้ม เป็น .c ทั้งนั้น หรือไม่ก็ .cpp
ดูใน makefile ก็บอกว่า 3 แฟ้มเป็นพอ พอจริง ๆ
ที่ cjxgm แชร์ไว้มี object file ที่ compile แล้วติดมาด้วยอีก เห็นเป็น .o
https://github.com/cjxgm/clabs/../syobon.tar.gz

3. ใคร ๆ เค้าก็เอา source code ไปลองกัน ท่าจะนิยม
เห็น David Gerber – CEO of Zapek Software Engineering
https://zapek.com/blog/syobon-action/
และลิงค์ไปยัง
https://sourceforge.net/../opensyobon/
ที่มี source code หลายรุ่น คือ v0.9, rc1 และ rc2 ทั้งหมดในปี 2010
แล้วก็ใช้ได้ทั้งบน Linux และ Windows
ไม่ต้องรักพี่เสียดายน้อย ได้หมดทั้ง 2 Operating System

4. เห็นแฟ้มต้นฉบับแค่ 3 แฟ้ม แต่มี Lib นะครับ
เห็น David Gerber หรือผู้พัฒนาคนอื่น ต่างพูดถึง Lib
ที่ชื่อ SDL (Simple DirectMedia Layer)
ที่ Need คือ sdl, sdl_image, sdl_gfx, sdl_mixer and sdl_ttf
เป็นห้องสมุดที่บริการภาพ และเสียง ช่วยให้แมวดิ้นได้
สรุปให้ว่าจะ compile link หรือ run ต้องมี Lib ครับ
https://www.libsdl.org/

5. ถ้าจะเขียนให้แมวดิ้น ก็ต้องหาที่ลง
อ้อ ไม่ต้องเขียนอะไรเลย เค้าเขียนมาให้หมดแล้ว
แค่ compile, link แล้วก็ run
ถ้าทำบน linux ก็เล่นบน linux
ถ้าทำบน windows ก็เล่นบน Windows
ติดว่า GCC นี่เค้าพัฒนาให้ทำงานบน Linux
ถ้าจะใช้ GCC for Windows
https://gcc.gnu.org/install/binaries.html
ก็เลือกได้ว่าจะใช้โปรแกรมอะไรมาช่วย เค้าแนะนำไว้ 2 ตัว
1. Cygwin
2. MinGW
อ่านมาเค้าว่ามี CodeBlocks.org ที่สนับสนุน GCC/G++
หัวข้อนี้รายละเอียดเพียบเลย
http://www.codeblocks.org/downloads/26

6. เล่าอีกนิดนะครับ สมัย 7 ปีก่อนใช้ GCC
สมัยที่เกมนี้เขียนเสร็จอยู่ราวปี 2010
source code ของ catmario มีทั้ง c และ cpp
ถ้าเป็น .c ก็ใช้ gcc
ถ้าเป็น .cpp ก็ใช้ g++
gcc and g ++ are both GNU compiler.
They both compile c and c++.
The difference is for *.c files gcc treats it as a c program,
and g++ sees it as a c++ program.
*.cpp files are considered to be c++ programs
เพราะสมัยนี้ gcc หมายถึง c ไม่ใช่ cpp
ดังนั้นการเลือกรุ่นของ compiler ก็น่าสนใจอยู่มาก
https://ftp.gnu.org/gnu/gcc/

 

 

 

บทเรียนที่ 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