#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.

การ rename database ใน mysql

rename mysql database
rename mysql database

มีเพื่อนถามถึงการ rename database ใน mysql
ลองเข้าไปดูพบว่ามีคำสั่ง rename database อยู่จริง
พบว่าถูกเพิ่มเข้าไปในรุ่น 5.1.7 แต่ถูกลบออกในรุ่น 5.1.23
หากเรียกใช้ไม่ได้ ก็แสดงว่าคำสั่งใช้ไม่ได้ในรุ่นที่ท่านใช้อยู่
ถ้าต้องการ rename database มีคำแนะนำ 2 วิธี
1. ใช้ phpmyadmin คลิ๊กที่ database นั้น แล้วเลือก operations
มองหา Rename database to: แล้วกรอกชื่อใหม่ แล้วกดปุ่ม Go
2. ใช้ mysql command line
หากมี database ชื่อ test1 และต้องการเปลี่ยนเป็น test2
สามารถทำได้ดังนี้

>show databases;
>create database test2;
>use test1;
>show tables;
>rename table test1.a to test2.a;
>drop database test1;

ก็เป็นอันเรียบร้อย
https://dev.mysql.com/doc/refman/5.1/en/rename-database.html

mysqlworking สำหรับทดสอบการยิงระเบียนจำนวนมาก

mysql working
mysql working
ปรับ php script ชื่อ mysqlworking.php
สำหรับบริหารจัดการ table ใน database บน mysql
ให้ยิงระเบียนได้เท่าจำนวนที่ต้องการ ตั้งไว้ 1000 ระเบียน
ทีแรกจะยิ่งเข้าไปสัก 1 ล้านนึง
แต่จากการทดสอบ ในเครื่อง Desktop ใช้ Win8 ที่ติดตั้ง xampp + deepfreeze
พบว่าแค่ 600 ระเบียนก็เกิน 30 วินาทีแล้ว
ต้องแก้ max_execution_time ผ่าน ini_set() ถึงจะไม่มี error message
แต่ถ้ายิงไปเป็นล้าน คงรอกันข้ามคืนข้ามวัน
ก็มีความเป็นไปได้หลายอย่างที่ทำให้ response จาก mysql ช้าขนาดนี้
แต่ยังไม่ได้ตรวจสอบ
ถ้าทดสอบกับ http://thaiabc.ueuo.com/
พบว่า response ดีมาก ๆ ยิงเข้าไป 1 พันระเบียนใช้เวลาไม่ถึง 1 วินาที
แก้ไขเพิ่มเติม
พอดึกมาหน่อย เข้าไปปรับ code หลายจุด
โดยเฉพาะอาการช้าเกินเหตุ เมื่อ insert ข้อมูลเพียง 1000 ระเบียน
ก็พบว่าการ create database บน xampp
กำหนด default ของ engine เป็น innodb
เมื่อเปลี่ยนเป็น myisam พบว่าวิ่งฉลุยเร็วเหมือนไม่ได้คิดอะไร
insert เข้าไปเป็นล้าน ยังรอไม่นานเลย
จึงปรับ code ให้สามารถสร้างทั้งแบบ innodb และ myisam
จะได้เปรียบเทียบกันได้

โปรแกรมทดสอบการจัดการข้อมูลใน MySQL บน Smartphone [3]

script to manage mysql
script to manage mysql

ได้สมาร์ทโฟน Android ราคา 2900 บาทมาเครื่องหนึ่ง
ติดตั้ง App: Palapa Web Server
ที่ให้บริการ Web Server, PHP และ MySQL ซึ่งซอฟท์แวร์นี้ใช้งานได้ฟรีไม่จำกัด
พบว่าเปิดบริการ Web server ได้ตามปกติ
แล้วติดตั้ง FTP server
กำหนดห้องเป็น /sdcard/pws/www/ ทำให้สามารถเขียนโปรแกรมบน PC
แล้วส่งไปประมวลผลที่ Smart Phone ในฐานะ Web Server
มีประเด็นเล่าสู่กันฟังดังนี้
1. Smart Phone จะมี IP ในวง Wifi เช่น 192.168.2.2 ดังนั้นจะใช้ 3G ไม่ได้
เพราะถ้าใช้ 3G เครื่องในวง Wifi ก็จะไม่รู้จัก SmartPhone ในฐานะ Web Server
2. ทดสอบเปิดดูว่าติดต่อได้หรือไม่โดยใช้ Browser ไปที่ http://127.0.0.1:8080
3. สามารถใช้ระบบบริหารจาก http://127.0.0.1:9999
4. ถ้า install Phpmyadmin จาก Smartphone
แล้วก็จะเปิด http://127.0.0.1:9999/phpmyadmin
5. download mysqlworking.php จาก
http://www.thaiall.com/perlphpasp/source.pl?key=9116
แล้วกำหนด user & password เป็น root กับ adminadmin
แล้ว save as กำหนด type เป็น UTF8 ด้วย Editplus3
6. ส่ง mysqlworking.php เข้าห้อง /sdcard/pws/www/
แล้วเปิด http://127.0.0.1:8080/mysqlworking.php

phpmyadmin บน Palapa
phpmyadmin บน Palapa

สำหรับบทเรียนเรื่อง FTP Server บน Smart Phone
อยู่ที่ http://www.thaiall.com/learn/useftp.htm

web admin on palapa
web admin on palapa

Palapa Web Server
http://alfanla.com/palapa-web-server/
แพคเกจประกอบด้วย
1. Lighttpd 1.4.35
2. PHP 5.5.15
3. MySQL 5.1.69
4. MSMTP 1.4.32
5. Web Admin 2.1.0

ข้อมูลอื่น ๆ ที่จำเป็นต้องทราบ
Default Document Root (htdocs) คือ Path : /sdcard/pws/www/
Default URL คือ Address : http://127.0.0.1:8080
Web Admin Informations
Address : http://127.0.0.1:9999
Username : admin
Password : admin
MySQL Informations
Host : localhost (127.0.0.1)
Port : 3306
Username : root
Password : adminadmin
phpMyAdmin (ถ้าใช้ก็ต้องกดปุ่มติดตั้งเพิ่มเติม)
Address : http://127.0.0.1:9999/phpmyadmin
Username : root
Password : adminadmin

ทีแรกคิดว่าจะเรียบเรียงเรื่อง LAMP ไว้ที่เว็บไซต์เกี่ยวกับการพัฒนา Android APP
แต่ดูแล้ว น่าจะมีอะไรอีกมากในการใช้งาน Smart Phone จึงฝากไว้กับ Blog ก่อน
http://www.thaiall.com/android/

ใช้ xampp เป็น server แต่ลืมติดตั้ง service

xampp console
xampp console

มีเพื่อนเล่าว่า เครื่องบริการเว็บล้มบ่อยมาก แทบทุกสัปดาห์
โดยโปรแกรมที่ใช้เปิดบริการ คือ xampp
เพราะมี console application ที่ใช้สั่งงานได้ง่าย
มีอยู่วันหนึ่งล้มอีก ผมลองเข้าไปดู เมื่อ login เข้าระบบ
ก็พบ application ค่อย ๆ ตื่น และปิด service ทีละตัว
จึงรู้ว่า xampp ไม่ได้เปิด service ทิ้งไว้
ในแบบที่ server ทั่วไปทำกัน

Download โปรแกรมได้ที่ http://www.apachefriends.org/index.html

ผลการตรจสอบพบประเด็น ดังนี้
1. แก้ไขโดยเปิด service ของ apache กับ mysql
ก็คาดว่าครั้งต่อไป server ตัวนี้คงไม่ล้มเพราะเรื่อง service อีก
2. จะเปิด service พบว่า batch file สำหรับเปิดบริการหายไป
จึงไปหาจากเครื่องอื่นมาวางไว้
3. โดยคำสั่งพื้นฐานที่อยู่ใน batch file ที่ใช้เปิด service มีดังนี้
DOS> bin\httpd -k install
DOS> net start Apache2.4
DOS> bin\mysqld
–install mysql
–defaults-file=”%cd%\bin\my.ini”
DOS> net start MySQL

4. อันที่จริงมีรายละเอียดเกี่ยวกับการติดตั้ง service
ของ mysql ที่ต้อง set my.ini ให้เรียบร้อย
แนะนำว่าไปหา copy หรือ reinstall xampp ใหม่ดีกว่า
หากว่า .bat ทั้งหลายหายไป

ถึงเวลาย้ายจาก Mysql ไป MariaDB

mariadb and mysql
mariadb and mysql

MariaDB กำลังจะมาแทน MySQL

mysql was replaced with mariadb
mysql was replaced with mariadb

http://www.unixmen.com/10-easy-steps-to-upgrade-from-mysql-to-mariadb-on-centos-6-4/

หลัง Oracle ซื้อ MySQL การพัฒนาที่เคยเป็นไปอย่างต่อเนื่องในฐานะ Open Source ก็เปลี่ยนไป ด้วยท่าทีของการเป็นผู้ทำธุรกิจซอฟท์แวร์ ฝั่งนักพัฒนาทั่วโลกเห็นท่าไม่ค่อยดีก็เริ่มทะยอยย้ายฐานไป MariaDB เพราะเรื่องนี้ผู้พัฒนาเลือกได้ และมีเวลาเลือกซะด้วย

transaction per second
transaction per second

+ http://slashdot.org/topic/bi/mariadb-vs-mysql-a-comparison/
+ http://blog.mariadb.org/mysql-man-pages-silently-relicensed-away-from-gpl/
+ http://fedoraproject.org/wiki/Features/ReplaceMySQLwithMariaDB
+ http://www.admin-magazine.com/Articles/MariaDB-vs.-MySQL
+ https://mariadb.org/
+ http://dev.mysql.com/

Oracle is killing MySQL
by Nick Farrell

The founder of MySQL Michael Widenius “Monty” claims that Oracle is killing off his MySQL database and he is recommending that people move to his new project MariaDB. In an interview with Muktware Widenius said his MariaDB, which is also open source, its on track to replacing MySQL at WikiMedia and other major organizations and companies.

He said MySQL was widely popular long before MySQL was bought by Sun because it was free and had good support. There was a rule that anyone should get MySQL up and running in 15 minutes. Widenius was concerned about MySQL’s sale to Oracle and has been watching as the popularity of MySQL has been declining. He said that Oracle was making a number of mistakes. Firstly new ‘enterprise’ extensions in MySQL were closed source, the bugs database is not public, and the MySQL public repositories are not anymore actively updated.

Widenius said that security problems were not communicated nor addressed quickly and instead of fixing bugs, Oracle is removing features. It is not all bad. Some of the new code is surprisingly good by Oracle, but unfortunately the quality varies and a notable part needs to be rewritten before we can include it in things like MariaDB. Widenius said that it’s impossible for the community to work with the MySQL developers at Oracle as it doesn’t accept patches, does not have a public roadmap and there was no way to discuss with MySQL developers how to implement things or how the current code works.

Basically Oracle has made the project less open and the beast has tanked, while at the same time more open versions of the code, such as MariaDB are rising in popularity.

Oracle Makes More Moves To Kill Open Source MySQL
by Alex Williams

18 ส.ค.55 Oracle is holding back test cases in the latest release of MySQL. It’s a move that has all the markings of the company’s continued efforts to further close up the open source software and alienate the MySQL developer community.

The issue stems back to a recent discovery that the latest MySQL release has bug fixes but without a single one having any test cases associated with it.  That creates all sorts of problems for developers who have no assurance that the problem is actually fixed.

It’s pretty clear that Oracle is trying to make it as difficult as possible to use MySQL. The result is a wave of unsettlement in the developer community about what Oracle considers open and what it sees as closed. The move is causing problems for developers in all manner of ways as expressed here and here.

MySQL is the popular database used by developers throughout the world.  Oracle gained control of the software distribution when it acquired Sun Microsystems in 2010.

According to a post on MariaDB, MySQL has used a testing framework called mysql-test since 1999. Over the years tests have been built for new features and regression tests that guarantee that a bug fix is permanent. Developers such as those from Facebook and Twitter rely on the testing framework. At Twitter, MySQL serves as the “persistent storage technology behind most Twitter data: the interest graph, timelines, user data and the Tweets themselves.”

It also appears that Oracle pulled the revision history for MySQL. The revision history groups changes to the millions of lines of source code into what are known as change sets. A change set shows the changes for a particular feature. It shows who made the bug fix, when and why. By removing the revision history, Oracle will keep developers guessing about what is fixed and what is not.

For observers, these moves do not look like simple oversights. More so, it appears that Oracle is making its revision tests and histories closed source. It’s not so surprising knowing Oracle and its history.

But it does raise questions for the open source community about what to do as seen in the comments on Hacker News.

I like what one commenter said about the issue. Forget Oracle. It really is time to move on.

http://techcrunch.com/2012/08/18/oracle-makes-more-moves-to-kill-open-source-mysql/

Why Oracle Won’t Kill MySQL
by Victoria Barret, Forbes Staff

It’s tempting to speculate that Oracle ‘s bid for Sun Microsystems is a convenient way to kill off open-source database wonder, MySQL. But MySQL’s former chief executive, Mårten Mickos, sees things differently. If anything, Oracle badly wanted MySQL.

The reason: Microsoft .

Oracle Chief Larry Ellison Larry Ellison might become a friend of open source, after all, if it helps him get at his long-time enemy, Microsoft. Sun acquired MySQL last year for $1 billion. Oracle was rumored to also be a bidder. How sweet, then to get MySQL a year later in a cheap deal for a slew of other businesses. (Oracle is paying $5.6 billion for Sun excluding its cash and debt piles.)

Mickos talked with Forbes on Monday after the Oracle-Sun deal was announced.

Forbes: What’s your initial reaction to the news that Oracle wants to acquire Sun?

Marten Mickos: It’s amazing, and not entirely surprising. Oracle has the money and is a long-term, strategic player. They went into applications to compete with SAP and have successfully done this. Now they want to out-compete Microsoft.

Microsoft’s database business is the fastest growing. Oracle can use MySQL to achieve a stronger developer community.

But doesn’t that risk cannibalizing Oracle’s database business?

MySQL is growing like crazy. That hasn’t hurt Oracle. MySQL works for Web-based applications. Oracle is for older, legacy applications. Oracle might as well cannibalize themselves, then have someone else do it.

You don’t think they’ll just kill the business? They’ve let Siebel’s online efforts languish and could do the same here.

They can kill the business. But I don’t think they will. Larry Ellison is smart. MySQL was getting around 70,000 downloads a day when I left. It’s an amazing grip on young developers. Having MySQL makes business sense for Oracle.

How will this deal impact MySQL’s community of developers? One might say they’re now working for “the man.”

Any popular open-source project has multiple communities. They don’t care who owns it. They care whether it works. There’s a vocal minority that will say a lot about this. But MySQL has an installed base of 12 million. You and I pay attention to this stuff, but lots of developers probably don’t even know MySQL is owned by Sun.

InnoDB (an open-source technology that Oracle acquired in 2005) is still very popular. It’s run surprisingly autonomously. That’s really the issue. Will Oracle run MySQL separately, or try to merge it with other groups? They could mess it up.

How?

By slipping it into the database division. Then you’ll see turf wars. The power of MySQL is its openness. Oracle is different. They don’t have their bug database public, for example. You risk losing the philosophy of MySQL and its edge in the market.

Or, there’s a risk they give it away as a freebie. One of MySQL’s strengths is that it has a business model.

But my belief is that Oracle’s executives understand this.

So were Larry’s anti-open source rants all bravado?

Yes, of course. I think he loves open source. I am just speculating, but he is an outside-of-the-box thinker. And it will allow him to compete creatively with Microsoft, his favorite enemy.

http://www.forbes.com/2009/04/20/mysql-marten-mickos-technology-enterprise-tech-mysql.html

บทเรียนกับ stored procedure บน mysql

stored procedure
stored procedure

บทเรียนกับ stored procedure บน mysql
1. ทดสอบกับ MySQL server
version 5.5.16 ใน thaiabc.com 8.0
2. เดิม start mysql ด้วย DOS>mysqld.exe –console
แต่พบปัญหาขณะ call procedure ว่า
ERROR 1436 (HY000): Thread stack overrun:  6892 bytes used of a 131072 byte stack, and 128000 bytes needed.  Use ‘mysqld –thread_stack=#’ to specify a bigger stack.
3. แก้ไขโดย start mysql ด้วย DOS>mysqld.exe –console –thread_stack=999999

4. สร้าง procedure
use test;
delimiter //
create procedure x01()
begin
select * from student;
end//
delimiter ;
grant execute on procedure test.x01 to ”@’localhost’;
call x01();

5. สร้าง function
create function addhead(s char(20))
returns char(50) deterministic
return concat(‘- ‘,s,’!’);
select addhead(sname) from student;

6. คำสั่งที่น่าสนใจ
show create procedure xxx;
drop procedure xxx;
show procedure status;
show function status;
help show;
show procedure status where Db = DATABASE() and type = ‘PROCEDURE’;
select * from mysql.proc;
select * from information_schema.routines;

7. web guides
http://devzonedd.designweb2you.com/viewthread.php?tid=82 ***
http://code.function.in.th/sqlserver/stored-procedure ***
http://www.mssqltips.com/sqlservertutorial/160/sql-server-stored-procedure/
http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx
http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx
http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html
http://php.net/manual/en/mysqli.quickstart.stored-procedures.php

มูดเดิ้ลล้ม แล้วย้ายเครื่อง ออกอาการสตาร์ทไม่ติด

can not start moodle
can not start moodle
การติดตั้ง moodle 2.1 ขึ้นไป
ต้องใช้ PHP 5.3.2 เป็นขั้นต่ำ
อย่างเครื่องที่ใช้ PHP 5.2.6 ถ้ามีการปิดระบบ หรือย้ายเครื่อง
อาจพบปัญหานี้ได้ ก็แก้ไขโดยเปลี่ยนรุ่นของ php
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
in C:\Appserv\www\_class\lib\accesslib.php on line 5288
แล้วอย่าลืมว่า mysql ก็ต้อง MySQL 5.0.25 ขึ้นไป
อย่างเครื่องบริการเครื่องหนึ่งเป็น php 4 + mysql 4
ก็ต้องเลือก moodle 1.9 เพราะ 2.2 ต้องการมากกว่าที่มี
แต่ถ้าเป็นเครื่องที่ควบคุมได้ ก็ลงไปเลย php5.3 + mysql5.0
แล้วการใช้ appserv ก็เป็นอะไรที่สะดวกสบายยิ่ง
.. confirm

ตัวอย่างการเชื่อม vs.net + console + winapp + mysql + xampp + mysql connector

vs.net + console + winapp + mysql + xampp + mysql connector
vs.net + console + winapp + mysql + xampp + mysql connector

ตัวอย่างมีโปรแกรม 2 ส่วน ที่แสดงความสัมพันธ์ของการทำงานกับส่วนต่าง ๆ ที่เชื่อมโยงกัน ได้แก่ vs.net + console application + class library + winapp + mysql + xampp + mysql connector ประกอบด้วย
1. solution ที่เป็น class library มี method ทำงานกับ mysql ในการ insert, delete, update, select
โดยรองรับการทำงานแบบ console และนำไปใช้งานบน windows forms application
http://www.thaiall.com/vsnet/mysql_sidu2.zip
2. solution ที่เป็น windows forms application มีฟอร์มเรียกใช้ class ใน class library เชื่อมต่อกับ mysql
http://www.thaiall.com/vsnet/mysql_form2.zip

ขั้นตอน และโปรแกรมที่จำเป็นต้องติดตั้งเพื่อใช้งาน solution ทั้ง 2 ข้างต้น

1. ติดตั้ง vs.net 2010
http://msdn.microsoft.com/en-us/library/dd831853%28v=vs.100%29.aspx
2. ติดตั้ง mysql connector .net เพื่อการเชื่อมต่อกับ mysql
http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-6.5.4.msi/from/http://cdn.mysql.com/
12.8 MB
3. ติดตั้ง xampp เพื่อบริการ mysql
http://www.apachefriends.org/download.php?xampp-win32-1.8.1-VC9-installer.exe
99 MB
4. คลาย .zip ทั้ง 2 solution ใน c:\ แบบ extract here
5. start mysql ใน xampp
6. เปิด c:\mysql_sidu2\mysql_sidu2.sln
7. เปลี่ยน application type เป็น console application
8. กด F5 = Start Debugging แล้ว กด s,1,10 คนละบรรทัดครับ เพื่อทดสอบ
9. เปิด c:\mysql_form2\mysql_form2.sln
10. กด F5 = Start Debugging เพื่อทดสอบ insert, delete, update, select

บทเรียนเกี่ยวกับ apache

6 ก.พ.55 มีบทเรียนด้านคอมพิวเตอร์มาฝาก 2 เรื่อง
เกี่ยวกับ apache web server (ใช้ appserv)
1. พบคำว่า “Could not connect to the database”
ในหน้าแรกของ wordpress หลังจากปรับระบบนิดหน่อย ซึ่งเดิมใช้งานได้ปกติ
ปัญหานี้เกิดรหัสผ่านเข้า mysql ใน wp-config.php ไม่ตรงกับที่กำหนดไ…ว้
สรุปว่า รหัสของ mysql ไม่ถูกต้อง (หลายมือครับ)

2. เครื่องบริการหนึ่งเครื่องมี ip จำนวน 2 เบอร์
ต้องการให้เบอร์หนึ่งชี้ไปที่ host ตัวหนึ่ง และอีกตัวชี้ไปที่ host อีกตัว
จึงต้องกำหนด virtual host ใน httpd.conf

NameVirtualHost 10.10.10.10
<VirtualHost 10.10.10.10>
ServerAdmin burin_ruj@nation.ac.th
DocumentRoot C:\www\class
ServerName class.nation.ac.th
</VirtualHost>