CAT ไม่ใช่แมว แต่เป็น บริษัท กสท โทรคมนาคม จำกัด (มหาชน)

ที่ทำงานของผมใช้บริการในฐานะลูกค้าของ CAT
มีความสัมพันธ์ที่ดีอย่างต่อเนื่องหลายปี
ทุกปีเจ้าหน้าที่จะมาเยี่ยมลูกค้า ผมมักได้ปฏิทิน ได้ถ่ายภาพร่วมกัน
ปีนี้ ก็พึ่งมา ได้ปฏิทินของปี 2561 มาด้วย สวยมาก

ทศมภูมี จักรีวงศ์ เอกองค์มหาวชิราลงกรณ
ทศมภูมี จักรีวงศ์ เอกองค์มหาวชิราลงกรณ

ชุด “ทศมภูมี จักรีวงศ์ เอกองค์มหาวชิราลงกรณ
คือ ภายในตัวปฏิทินบรรจุโปสเตอร์ขนาดใหญ่พิเศษ
ภาพพระบรมสาทิสลักษณ์ สมเด็จพระเจ้าอยู่หัวมหาวชิราลงกรณ บดินทรเทพยวรางกูร
สามารถตัดเก็บออกมาใส่กรอบได้

เนื้อหาปฏิทิน 12 เดือนลำดับพระราชประวัติตั้งแต่ทรงพระเยาว์
พระปรีชาสามารถ พระอัจฉริยภาพทั้งศาสตร์และศิลป์ในด้านต่าง ๆ
พระราชกรณียกิจที่ทรงเสียสละอุทิศเพื่อบ้านเมือง
ยังประโยชน์แก่ประชาราษฎร์สืบเนื่องมาช้านาน

หมายเหตุ ภาพวาดพระบรมสาทิสลักษณ์ เป็นลิขสิทธิ์ของศิลปินผู้วาด
นายทองดี ภานุมาศ” และบริษัท กสท โทรคมนาคม จำกัด (มหาชน) หรือ CAT
ห้ามนำไปใช้ในเชิงพาณิชย์ โดยไม่ได้รับอนุญาตจากเจ้าของลิขสิทธิ์โดยเด็ดขาด
https://www.facebook.com/prcattelecom/posts/938543392962029

 

หลายปีก่อน เคยพานักศึกษาไปดูงานที่ กสท.ลำปาง
http://www.thaiall.com/blog/tag/cat-tag/

บมจ.กสท เป็นรัฐวิสาหกิจ
ชื่อเดิม คือ การสื่อสารแห่งประเทศไทย
ได้แปลงสภาพเป็น บริษัท กสท โทรคมนาคม จำกัด (มหาชน)
จดทะเบียนเมื่อวันที่ 14 สิงหาคม 2546
ทำหน้าที่เกี่ยวกับ กิจการโทรคมนาคมทั้งหมด
เพื่อให้การดำเนินงานเป็นไปอย่างต่อเนื่องและมีประสิทธิภาพ
สังกัดกระทรวงดิจิทัลเพื่อเศรษฐกิจและสังคม (เดิม กระทรวงเทคโนโลยีสารสนเทศและการสื่อสาร)
และกระทรวงการคลังเป็นผู้ถือหุ้น 100% ของทุนจดทะเบียน
http://www.cattelecom.com/cat/ourcompany

มีพันธกิจ 4 ด้าน
1. ให้บริการด้านโทรคมนาคมและเทคโนโลยีสารสนเทศที่ทันสมัย
มีคุณภาพ และสามารถ ตอบสนองผู้ใช้บริการได้ตรงความต้องการ โดยการพัฒนาหรือสรรหานวัตกรรมใหม่ๆ
2. ขยายฐานผู้ใช้บริการทั้งในประเทศและภูมิภาคอย่างต่อเนื่อง และมอบประสบการณ์ที่ดี ให้กับผู้ใช้บริการ
3. ดำเนินการปฏิรูปองค์กรเพื่อเพิ่มประสิทธิภาพทางการแข่งขันและเป็นพลังขับเคลื่อน เศรษฐกิจของประเทศ
4. สร้างผลตอบแทนที่เหมาะสมกับผู้ถือหุ้นและผู้มีส่วนได้ส่วนเสีย
ตลอดจนการดำเนินงานเพื่อ สนับสนุนนโยบายของรัฐบาล และใส่ใจต่อสังคม

ความเป็นมา
เดิม ก.ส.ท. ดูแลโดย กรมไปรษณีย์โทรเลข
ย้ายไปเป็น การสื่อสารแห่งประเทศไทย (ก.ส.ท.)
ตามพระราชบัญญัติการสื่อสารแห่งประเทศไทย พ.ศ. 2519
เมื่อวันที่ 29 กันยายน พ.ศ. 2519
แล้วแปลงสภาพเป็น บริษัท กสท โทรคมนาคม จำกัด (มหาชน) เมื่อวันที่ 14 สิงหาคม 2546
โดยยกเลิก พรบ.ฯ ฉบับเดิมไป เพื่อเปลี่ยนเป็นบริษัทมหาชนแทน

สายงานในกสท. ประกอบด้วย
1. สายงานอำนวยการและกฎหมาย
2. สายงานสื่อสารไร้สาย
3. สายงานกลยุทธ์องค์กร
4. สายงานเทคโนโลยีสารสนเทศ
5. สายงานธุรกิจและบริการ
6. สายงานการเงิน
7. สายงานธุรกิจ NGDC และ NBN
8. สายงานทรัพยากรบุคคล
9. สายงานภูมิภาค

กสท. ออกเยี่ยมลูกค้าทุกปี
กสท. ออกเยี่ยมลูกค้าทุกปี

ข่าว 22 พฤศจิกายน 2014
เรื่อง สนช. เสนอยุบกสทช. ให้ CAT และ TOT มาทำงานแทน
ซึ่ง กสทช. คือ สำนักงานคณะกรรมการกิจการกระจายเสียง
กิจการโทรทัศน์ และกิจการโทรคมนาคมแห่งชาติ
ส่วน สนช. คือ สภานิติบัญญัติแห่งชาติ
https://www.blognone.com/node/63068

ข่าวเมื่อ 13 มิถุนายน 2560
ที่ประชุม ครม.เห็นชอบ “TOT-CAT”
ตั้งบริษัทลูกแยกธุรกิจที่ซ้ำซ้อน หลังหมดรายได้จากสัมปทานคลื่นความถี่
http://www.bangkokbiznews.com/news/detail/759281

ข่าวเมื่อ 24 สิงหาคม 2560
จี้นายกฯ รวมบอร์ด TOT-CAT
http://www.thaipost.net/?q=node/34409

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

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

 

 

 

ถูก relay ที่ใช้อยู่ ปฏิเสธซะแล้ว

relay ของ cat
relay ของ cat

ได้รับแจ้งจากคุณเปรม ที่พัฒนาระบบให้คุณแอนได้ใช้
ว่าระบบส่งข้อความไม่ถึง inbox ของเพื่อน ๆ
และคาดว่า mail server ทำงานผิดปกติ

ซึ่ง mail server มีโอกาสใช้ relay ของ CAT
แล้ววันนี้ก็พบว่า postfix ไม่ส่งอีเมลตามปกติ
เมื่อเข้าไปดูใน maillog ก็พบ
คำว่า delivery temporarily suspended:
connect to 122.155.133.2[122.155.133.2]: No route to host
แปลเป็นไทยว่า การส่งครั้งนี้ ถูกแขวนไว้ก่อน
เพราะมีปัญหาเรื่องเส้นทางไปยังโฮส

ถ้าส่งได้ก็จะพบข้อความว่า
Message accepted for delivery
แปลเป็นไทยว่า ข้อความถูกยอมรับให้ส่งไปได้

สรุปการแก้ไขที่ผมใช้
คือ เข้าไปเปลี่ยน relay ใน /etc/postfix/main.cf
ให้ชี้ไปยัง relay ตัวที่สองของ cat

จากการตรวจสอบกับคุณตุ้ย
สรุปว่าไม่ใช่ปัญหาจาก firewall ฝั่งเรา
เพราะ policy เปิดให้กับ mail server ตัวนี้หมด
แล้วคาดว่า relay ได้ปฏิเสธ server ของเรา
จึงแก้ไขโดยหา relay ตัวใหม่มาแทนที่

แมวไม่น้อยหน้าหมาครับ .. เมนูแนะนำเช่นกัน

ในมุมของคนกินแมว
ในขณะที่คนไทยนิยมซื้อกระต่ายมาเลี้ยงต้อนรับปีเถาะ (2554) ด้วยความเชื่อที่ว่ากระต่ายเป็นสัตว์นำโชคที่จะนำพาสิ่งดี ๆ มาให้ผู้เลี้ยงตลอดปีนี้ ที่เวียดนามเองก็ไม่น้อยหน้า สำหรับปีนี้ที่เป็นปีแมวของเวียดนาม แมวก็กลายเป็นสัตว์ยอดนิยมของชาวเวียดนามที่ถือว่าจะนำโชคดีมาให้ตลอดปีเช่นกัน แต่แตกต่างกันที่ชาวเวียดนามเขาไม่ได้เอาแมวมาเลี้ยงเหมือนกับกระต่ายบ้าน ที่บอกว่าเป็นสัตว์ยอดนิยมนั้นหมายถึงนิยมนำมาทำอาหารรับประทานกันต่างหาก
โดยเฉพาะในจังหวัดถายบิ่ง ทางตอนเหนือของเวียดนาม ดูเหมือนจะเป็นพื้นที่ที่นิยมการนำแมวมาทำอาหารมากกว่าพื้นที่อื่น ๆ เมนูต้มซุปแมว เนื้อแมวทอด เนื้อแมวย่าง และลูกชิ้นแมว กลายเป็นอาหารเลิศรสที่เจ้าของร้านอาหารหลายร้านภูมิใจนำเสนอแก่แขกที่มารับประทานอาหารในร้าน แม้ว่าทางจังหวัดจะมีการประกาศสั่งห้ามขายและฆ่าแมวก็ตาม แต่ก็ไม่ได้ทำให้เจ้าของร้านหยุดเสิร์ฟเมนูแมวแต่อย่างไร เพียงแต่ตัดปัญหาง่าย ๆ ด้วยการไม่ติดป้ายโฆษณาเมนูแมวไว้หน้าร้านเท่านั้น
สำหรับ วิธีการนำแมวมาประกอบอาหารนั้น พ่อครัวจะเลือกฆ่าแมวด้วยวิธีการนำพวกมันไปถ่วงน้ำให้ขาดใจตาย แทนการตีหรือเชือดคอเหมือนกับฆ่าหมู เพราะจะทำให้แมวกลัวและเกร็ง จนถุงน้ำดีแตก และนั่นทำให้เนื้อแมวเสียรสชาติ จากนั้นพ่อครัวก็จะนำแมวมาผ่าท้องและแล่เนื้อ โดยส่วนที่นิยมนำมาประกอบอาหารมากที่สุด ได้แก่ กระเพาะ ลำไส้ และเนื้อส่วนสะโพกของแมว ซึ่งถือว่าเป็นส่วนที่อร่อยที่สุด และเป็นยาอายุวัฒนะ ให้พลังงานสูง ทำให้ร่างกายอบอุ่นในช่วงฤดูหนาวของเวียดนามที่กำลังหนาวติดลบอยู่ในขณะนี้ แต่หากเป็นเมนูแมวย่าง พ่อครัวจะควักเครื่องในออกทั้งหมด แล้วนำไปย่างบนไฟอ่อน ๆ ให้เนื้อแมวค่อย ๆ สุกกลายเป็นสีน้ำตาล จากนั้นก็เสิร์ฟพร้อมกับน้ำจิ้มสูตรเฉพาะ
ส่วนราคาเมนูแมวนี้ จะแตกต่างกันออกไป ขึ้นอยู่กับว่า แมวนั้นเป็นแมวลักษณะแบบไหน และมาจากที่ไหน โดยเนื้อแมวดำจะมีราคาแพงที่สุด เพราะเชื่อว่ามีรสอร่อยที่สุด อาจมีราคาถึงตัวละ 15,000 บาทเลยทีเดียว ส่วนเนื้อแมวสดทั่วไปนั้น ขายกันในราคากิโลกรัมละ 100 บาท (แมวบ้าน 1 ตัว มีน้ำหนักประมาณ 4-5 กิโลกรัม) และหากเป็นแมวนำเข้าจากจีนก็จะมีราคาถูกลงไปอีก เนื่องจากไม่อร่อยเท่ากับเนื้อแมวสดจากเวียดนามเอง
ทั้งนี้โดยปกติแล้ว ชาวเวียดนามจะกินแมวกันเป็นปกติ ไม่ต่างกับชาวจีนที่มีความเชื่อว่าแมวเป็นเมนูนำโชค แต่ในปีนี้ซึ่งตรงกับปีแมวของเวียดนาม แมวกลายเป็นเมนูเลิศรสที่ใคร ๆ ก็ปรารถนาอยากจะกินมากกว่าปกติ เพราะเชื่อว่าหากได้กินแล้วก็จะช่วยปัดเป่าโชคร้ายออกไป ทำให้แมวกลายเป็นสัตว์ที่เป็นที่ต้องการอย่างมากในตอนเหนือของเวียดนามในขณะนี้ และหากบ้านไหนเลี้ยงแมว แต่ไม่ดูแลแมวของตัวเองดี ๆ ก็จะเกิดกรณีแมวหายได้อย่างง่ายดาย เรียกได้ว่าถ้าหากแมวตัวไหนถูกปล่อยให้มาเดินเพ่นพ่านในที่สาธารณะ ก็จะถูกจับไปใส่กรงขังไว้ เพื่อรอวันแปรสภาพกลายเป็นเมนูแมวในที่สุด
ขณะเดียวกัน ก่อนหน้านี้เมื่อประมาณกลางปีที่แล้ว องค์กรพิทักษ์สัตว์ในประเทศจีนได้เคยแฉพฤติกรรมสุดโหดร้ายของนายหน้าค้าแมว ที่ขโมยแมวไปขายให้ภัตตาคารต่าง ๆ ในมณฑลกวางตุ้ง ที่แสดงให้เห็นว่าแมวกว่าร้อยตัวถูกขังไว้ในกรงแคบ ๆ และได้รับการปฏิบัติอย่างโหดร้าย ซึ่งทางองค์กรพิทักษ์สัตว์ในนครเซี่ยงไฮ้ก็สามารถช่วยชีวิตแมวเคราะห์ร้าย เหล่านั้นออกมาได้กว่า 300 ตัว และส่งพวกมันคืนเจ้าของได้ในที่สุด แต่นั่นก็ไม่ได้ทำให้นายหน้าค้าแมวหยุดล่าแมวแต่อย่างไร ทุกวันนี้ก็ยังคงมีเมนูแมวขายในภัตตาคารจีนกันตามปกติ อีกทั้งยังเป็นเมนูแนะนำอีกด้วย
http://vdowww.dek-d.com/board/view.php?id=2043319

ในมุมของความเชื่อเรื่องแมว
ลางร้าย ภัย อาถรรพณ์ ในคติความเชื่อโบราณ เปรียบดังเงาร้าย ที่เชื่อว่าหากเข้าใกล้ชีวิตเรา จะหาความสุขไม่ได้ มีทุกข์ภัยที่ประดังเข้ามาอย่างไม่คาดฝัน ในบรรดาลางร้ายที่แสดงออกมาในรูปแบบต่าง ๆ นั้น “แมวดำ” จัดเป็นหนึ่งในตัวแทนแห่งลางร้าย ความเชื่อเรื่องแมวดำ ไม่ได้มีระบุที่มาแน่ชัด หากเป็นเพียงข้อสันนิษฐาน ที่นักประวัติศาสตร์ตั้งข้อสังเกตเอาไว้ เนื่องจากคติความเชื่อเรื่องแมวดำไม่ได้มีเฉพาะในไทยเท่านั้น หากมีในหลากชาติหลายภาษาโดยในตำนานเก่าแก่ของอินเดียโบราณ เชื่อว่า แมวดำเป็นสัตว์ผี เป็นพาหนะของพระษัษฐี เทวีแห่งความตายของทารก หรือ ผีแม่ซื้อประจำตัวเด็กในวันที่ 6 ซึ่งพระษัษฐีเป็นเทวีที่มีอิทธิฤทธิ์ หากใครเห็นแมวดำที่ไหน มักต้องเห็นพระษัษฐีปรากฏกายที่นั่น และจะมีเด็กหรือคนตายที่นั่นด้วยเช่นกัน โดยเฉพาะในงานศพจะระมัดระวังไม่ให้แมวมาถูกต้องศพ ด้วยเชื่อว่าจะเกิดมนทินกับศพนั้น ๆ ไปตลอด
ในคติความเชื่อของจีนโบราณ ถือว่าหากแมวข้ามศพ ผีนั้นจะดุร้ายมาก ต้องเอาตะไกรหรือเหล็กวางไว้บนอกศพ จึงจะไม่เป็นไร เช่นเดียวกับในความเชื่อของแขกมาลายู ที่ต้องเอาตะไกรหนีบมาวางบนอกศพ เผื่อว่าแมวกล้ำกรายเข้ามาใกล้ศพหรือถูกศพ เหล็กตะไกรจะเป็นเครื่องบังคับไม่ให้ศพลุกขึ้นมา กลายเป็นผีร้าย เป็นที่หวาดเกรงของชาวบ้านได้ แมว จัดว่าเป็นสัตว์เลี้ยงที่มีมากกว่าความเป็นสัตว์เลี้ยงธรรมดา ในแง่ที่ว่ามันเป็นสัญลักษณ์แห่งความเชื่อของคน เป็นตัวแทนความศักดิ์สิทธิ์ และเหนือจริง จนมีคำโบราณกล่าวไว้ว่า “หากฆ่าแมวสักตัวถือว่าบาปหนักหนา เท่ากับฆ่าเณรรูปหนึ่งเลยทีเดียว
http://learners.in.th/blog/sukanyanonmai/391609
http://board.postjung.com/412380.html

แนะนำ แคท รัตติกาล เพราะจบสายใกล้เคียงกัน (3)

แคท รัตติกาล
แคท รัตติกาล

คุณแคท รัตติกาล เป็นชาวลำปางด้วยกัน
หากผมจะมีความภูมิใจที่จะนำเสนอ นักร้องชาวลำปางสักคน ก็หวังว่าจะไม่มีใครติฉินนินทานะครับ และอีกเหตุผลคือ เธอสำเร็จการศึกษาด้านเดียวกับผม นั่นก็คือเหตุผลสำคัญครับ ชื่อจริงของแคท รัตติกาล คือ นางสาวพุทธชาติ ยศแก้วอุด (แคท) เกิด 30 พ.ค.  เป็นคน อ.เมือง ลำปาง ศิษย์เก่าโรงเรียนศึกษาสงเคราะห์จิตต์อารี ปริญญาตรีจาก มหาวิทยาลัยราชภัฏลำปาง สาขาวิชาวิทยาการคอมพิวเตอร์ เคยประกวดมิสมอเตอร์โชว์ปี 2542 ได้ตําแหน่งรองอันดับ 1 ร้องเพลงประกอบละคร ถ่ายมิวสิควิดีโอ เดินแบบ ถ่ายแบบแฟชั่น มีผลงานอัลบั้มเพลงชุดแรกคือ เมดอินลูกทุ่ง และเพลงประกอบละครเรื่อง หงส์ฟ้ากับสมหวัง  และพระจันทร์ลายกระต่าย  ผลงานอื่น เช่น เช้าวันใหม่..ใจเต็มรัก เย็บจักรถักฝัน นิยายรัก อย่ากึ๊ดนัก