Planet TLWG

Syndicate content
Planet TLWG - http://linux.thai.net/planet
Updated: 1 hour 24 min ago

Udomsak: OpenStack ตอนที่ 3

1 hour 24 min ago
ตอนนี้จะเกริ่นถึง Third party Service Deployment  โดยการใช้ Foreman และ การ Deployment เปรียบเทียบกับ วิธีอื่นๆ  ผมเอง Setup ทิ้งเอาไว้ บนระบบ Linux บน  Laptop ของผมเอง เผื่อที่จะใช้งาน หรือ รับงาน Deployment Service ขนาดใหญ่

เดิมทีผม Setup เอาไว้ใน VirtualBox VM บนระบบฝั่ง Window  พอ Switch มาฝั่ง Linux จึงคิดว่า Setup เพิ่มเอาไว้ดีกว่า เผื่อถ้าทำงานใน ฝั่ง Linux แล้วมีเหตุให้ต้อง Deploy service ก็ขี้เกียจจะ Reboot เข้า Windows เพื่อ run vm สำหรับ งาน Deploy อีก 

ที่บอกว่า Service ขนาดใหญ่ คือ เริ่มตั้งแต่การติดตั้ง Base metal  ไปจนถึงการติดตั้งซอฟต์แวร์ เพื่อรัน Service stack ที่เราต้องการ ( หมายถึง การติดตั้ง Software set และ Dependencies ) รวม ไปถึงการ Monitor       

Foreman เป็นเครื่องมือช่วยเราบริหารจัดการ การ Deployment โดยนิยามของตัว Foreman เขาบอกเอาไว้ว่า    
Foreman is a complete lifecycle management tool for physical and virtual servers.
การทำงานของ Foreman จะทำงานหลักๆ อยู่ 3 อย่าง คือ 

  • Provisioning
  • Configuration
  • Monitoring 
โดยโครงสร้างของ Foreman ( Architecture )  จะเป็นดังนี้  ( ภาพจาก theforeman.org ) 

  



โดยหลักแล้วตัว Foreman จะทำงานกับ Puppet เป็นหลัก ( configuration management )  แต่ก็สนับสนุน Configuration Management ตัวอื่นๆ ด้วย  เช่น Chef เป็นต้น และ เราสามารถ เลือกการติดตั้ง ภายหลังได้ ทำการติดตั้ง Plugin เพ่ิมเติม  

อย่างไรก็ตาม ก็มี Software ตัวอื่น ซึ่งทำงาน คล้ายๆ กันกับ Foreman ในที่นีผมจะอ้างถึง Ubuntu Cloud Software Stack  ในที่นี้ผมจะยกตัวอย่างเปรียบเทียบกัน  โดยถ้าหากเป็น Ubuntu Cloud  จะใช้ Software 2 หรือ มากกว่านั้นในการทำงานให้เหมือนกันกับ Foreman  โดย Foreman จะรวมเอาทั้ง Bare metal เข้ารวมกับ Configuration management  และ ทำการ Monitor ไปในตัว    

Ubuntu Cloud Stack  

  • MaaS   หรือ Metal As A Service  ใช้สำหรับ Deploy bare metal  
  • JuJu  หรือ Service Orchestration  
ภาพนี้เป็นโครงสร้างของ Ubuntu  MaaS   Architecture  ( https://maas.ubuntu.com/ ) 

ตัวอย่างแสดงการทำงานของ JuJu  ( https://juju.ubuntu.com  ) 


โดยที่การ Deploy service ต่างๆ  จะใช้ชื่อ Charm โดยเข้าไปดู Concept ได้จาก ( https://jujucharms.com/ )
มาดูในส่วนของ OpenStack กันบ้าง จะเรียกส่วนที่ใช้ Deploy ส่วนของ Bare metal คือ Bare metal service ( https://wiki.openstack.org/wiki/Baremetal  )  ดูเพิ่มเติมจากรูปด้านล่าง จะเห็น Cloud Service Stack ของทาง OpenStack นั้นก็ยังไม่ครบถ้วนสมบูรณ์นัก ยังคงต้องเพิ่ง การทำงานแบบ  Manual เข้ามาช่วย ไม่ Automate ระบบทั้งหมด 


ฺBlog ชุดเรื่อง OpenStack  ผมจะพยายามเขียนให้ครอบคลุมถึง Cloud software Stack ทั้งหมดให้มากที่สุด เท่าที่จะเป็นไปได้  ถ้าไม่นับรวมขี้เกียจมานั่งเขียนนะครับ :-) 

Foreman เองนั้นสนับสนุน  Ubuntu 12.10 , 14.10 ขณะที่ระบบปฏิบัติการที่ผมใช้อยู่คือ  13.10 ดังนั้น ผมจะอิงการติดตั้ง Foreman จากเครื่องผมเป็นหลักส่วนที่เขียนใน blog นี้สำหรับการต่อยอด และ อ้างถึง เพื่อง่ายในการเปรียบเทียบเท่านัน  

ติดตั้ง Foreman บน Ubuntu 13.10  

echo "deb http://deb.theforeman.org/ wheezy 1.5" > /etc/apt/sources.list.d/foreman.list
echo "deb http://deb.theforeman.org/ plugins 1.5" >> /etc/apt/sources.list.d/foreman.list
wget -q http://deb.theforeman.org/pubkey.gpg -O- | apt-key add -
apt-get update && apt-get install foreman-installer
หมายเหตุ ตามคู่มือจะให้ run  forreman-installer เพื่อทำการ และ Configuration ค่าที่เกี่ยวข้องอื่นๆ แต่เนื่องจากเครื่องผม มีปัญหากับ PostgreSQL script และ ไม่มีความจำเป็นในการติดตั้ง Database ขนาดใหญ่ ดังนั้นผมจึงใช้ Sqlite แทน ซึ่งถ้า ระบบของผู้อ่านมีขนาดใหญ่ Deploy image มากกว่า 200 - 300 VM  หรือ Production server ผมแนะนำให้ใช้ ระบบปฏิบัติการตามคำแนะนำ ในคู่มือ และใช้  Database ที่ขนาดใหญ่ขึ้น 

Foreman จะ Database Default  จะไปใช้ PostgreSQL ซึ่งตัว Chef และ Puppet ก็จะใช้เช่นเดีียวกัน ดังนั้นจึงทำให้มีปัญหาและ ผมต้องมีการปรับแต่ง ค่า Configuration ให้เข้ากับเครื่องผม  

foreman-installer หรือ foreman-installer -i กรณีต้องการ interactive shell
ดังนั้นผมจึงเลือกใช้คำสั่งนีแทน 

Install packages (adjust additional packages as needed)
apt-get install foreman foreman-sqlite3 foreman-libvirtถ้าเชื่อมต่อกับ Openstack ก็เปลี่ยนจาก foreman-libvirt เป็น foreman-compute แทน

# Copy sample db config to /etc
cp /usr/share/foreman/config/database.yml.example /etc/foreman/database.yml

# Review settings and DB config
vi /etc/foreman/settings.yaml /etc/foreman/database.yml

# Perform initial DB setup
foreman-rake db:migrate
foreman-rake db:seedถ้าต้องการเปลี่ยน Database ก็ให้เปลียนจาก foreman-sqlite3 เป็น Database ตัวอื่นแทน ส่วน foreman-libvirt เป็น Plugin สำหรับ Connect  libvirt   

จากนั้นทำการ restart service  Service ที่ Start ขึ้นมาหน้า GUI จะ เปิดอยู่ที่ Port 3000  ( http://localhost:3000 )  โดยก่อนรัน ตรวจสอบ Hostfile ( /etc/hosts ) ว่า format ถูกต้อง ด้วยคำสั่ง hostname -f  

โดยก่อนทำการ Start service Foreman ให้เข้าไปแก้ไขไฟล์ /etc/default/foreman เปลี่ยน START จาก no เป็น yes ( ตามรุป ) 



สั่ง  /etc/init.d/foreman start 


Page แสดง Statistic  



ตัว Foreman เองนอกจากสนับสนุน Libivirt แล้ว ยังสนับสนุน Vmware ด้วย โดยเราสามารถเพิ่ม โดยการเพิ่ม plugin เข้าไป  

อ้างอิง

http://theforeman.org/manuals/1.5/index.html#3.InstallingForeman
http://theforeman.org/manuals/1.5/index.html#6.1InstallaPlugin
http://www.theforeman.org/manuals/1.5/index.html#3.5.5FactsandtheENC




My site Article and Topic

Udomsak: OpenStack ตอนที่ 2

1 hour 24 min ago
เนื่องจากรอ Download configuration software  เขียนไว้    

ก่อนที่จะมาเริ่ม ตอนที่ได้บอกเอาไว้ เรื่องการใช้งาน OpenStack + Docker + OpenVswitch ตามที่ได้บอกเอาไว้เมื่อตอนก่อน  ( OpenStack ตอนที่ 1 )  มาว่ากันเรื่องของ Virtualization กันก่อนเพื่อความเข้าใจ ในระบบก่อนที่จะไปลงลึกในละเอียด

คำว่า VM  ที่เรารู้จักกัน ว่าไปแล้วก็คือ Hardware Virtualization  ( ไม่ใช่  Visualization ) ได้ โดยได้แบ่งออกเป็น 3 ประเภทหลักใหญ่ๆ 

  • Full Virtualization  คือ จำลองลักษณะการทำงานของ Hardware จริงๆ ทั้งหมด  เช่นพวก Virtual Box , Vmware workstation , Parallels* ( Desktop , MAC )  ดูจากรุปจะเข้าใจได้ง่ายมากขึ้น จะเห็นว่าไม่มีการ เปลี่ยนแปลงใดๆ ของ  Guest OS   ซึ่งจะแตกต่างจาก Xen  ( Citrix )  ที่จะมีการ Modify Kernel

    แบบนี้ จะไม่ซับซ้อนอะไร สำหรับ  End  User แค่ติดตั้ง Guest OS  เข้าไปก็จบ Hypervisor จัดการให้หมด  ข้อเสีย แบบนี้  คือ ช้า ส่วนถ้าอยากจะรู้ว่า Hypervisor ทำงานยังไง ไปหาอ่านเพิ่มเติมเองได้นะครับ  :)



    ( รูปจาก http://www.cubrid.org/files/attach/images/220547/462/683/intel_vt_x_based_full_virtualization.png )

  • Partial Virsualization  คล้ายกันกับ Full virtualization  โดยมันเทคโนโลยี เริ่มต้นก่อนจะนำมาพัฒนาเป็น Full virsualization  
  • Para Virtualization  มีการ Modify ในส่วนของ Guest OS  โดยปรับให้บางส่วนมีการติดต่อกับ Hypervisor โดยตรง ในรูปจะเห็นมี Driver อยู่  ผลที่ได้คือ ระบบแบบนี้จะไวกว่า  Full  Virtualization แต่ก็นั่นอีกล่ะครับ  กว่าจะติดตั้งได้ เวลามีการเปลี่ยนแปลง Guest OS  หรือ ระบบใหม่ๆ ต้องทำให้มัน support  Hypervisor แบบนี้ เช่น Xen เป็นต้น  


http://cloudvirtualizationspecialist.com/wp-content/uploads/2014/02/virtual.jpg


KVM ( Kernel Base Virtual Machine )


จะแตกต่างออกไป  โดยจะมีบางส่วนเท่านั้นที่ทำหน้าที่ จำลองการทำงาน อาทิเช่น  hardware visualization processor  นอกจากนั้นจะมีบางส่วนทำงานคล้าย กับ Para Virtualization อาทิการ Access disk โดยทำผ่านสิ่งที่เรียกว่า VirtIO เป็นต้น ดูรายละเอียด เพิ่มเติม ได้ที่นี่ 


( รูปจาก http://www.linuxthoughts.com/wp-content/uploads/2013/07/KVM_architecture-.png )

นอกเหนือจากนั้นแล้ว เนื่องจากเทคโนโยลี ทาง Hardware และ Software มีความก้าวหน้าไปมาก ดังนั้น การทำอะไร โดยใช้ Hardware ทั้งหมดก็เป็นอะไรที่ใหญ่โตเกินไป จึงมีการจำลองการทำงาน ของระบบ อื่นๆ มากขึ้นจากเดิมที่ทำงาน แบบ Hardware   

  • Network Virtualization  จำลองการทำงานของ Switch ที่เป็น Hardware จริงๆ เช่น OpenVswitch 
  • Software Virtualization
  • Desktop Virtualization
ถ้าดูจากเอกสารส่วนใหญ่ใน Internet จะพูดถึงพวกนี้ว่าเป็น  Platform Virtualization

และ เนื่องจาก Overhead ในการจำลองทำงานของ Full Virtualization และ Para Virtualization นั้นมีมาก ทั้ง Cycle ในการประมวลผล และ Resource อื่นๆ  จึงมีทางเลือกของการใช้งาน  อื่นมาแทนที่นั่นคือ 

Operating System Virtualization   ผมยกตัวอย่าง มาแค่  2 - 3 ตัว  ซึ่งผมจะ focus เฉพาะ Docker  (  Container Linux ) 

  • Docker 
  • User Mode Linux ( UML )   
  • Zone ( Solaris )  

ข้อได้เปรียบของ Docker คือ ขนาดเล็ก และ ยุ่งยากน้อยกว่า Virtualization ที่ได้พูดถึงมา นอกจากนั้นยัง สามารถทำ Version Control  ได้ด้วย มีการแบ่ง segment ของ Process โดยแต่ละ Environment  จะมีส่วนการทำงานเป็นของตัวเอง โดยเฉพาะ  ในเครื่องที่เป็น Hosting สามารถมี VM ภายในได้เป็นจำนวนมาก  ขณะที่ เครื่อง Host ที่ติดตั้ง Full หรือ Para Virtualization. จะมีได้อย่างมากสุดก็ ไม่เกิน 5 ตัว  ซึ่งก็ลดทอนด้วยประสิทธิภาพ และ จำนวน RAM ที่มีอยู่   เช่น  เครื่องโน๊ตบุคผม Intel Core i-5  , RAM 12GB.  แค่  Guest-OS ทำงานพร้อมกัน 5 ตัวก็เป็นเรื่องที่ลำบาก   

ขณะที่การทำงานของ Software Service นั้น Developer และ  End-User สนใจแค่  Service ที่ให้บริการ ซึงถ้าเป็น Developer ก็สนใจแค  Space สำหรับทำการพัฒนาโปรแกรม , Dependencies , etc..   ขณะที่  End-User ก็สนใจเพียงแค่ Service ที่ให้บริการเขาเท่านั้น  ดังนั้น Full หรือ Para Virtualization นั้นสำคัญ หรือ จำเป็น สำหรับนักพัฒนา และ End-user ที่ต้องใช้  ??  :)  







My site Article and Topic

Sothorn: การเปลี่ยน Runlevel ใน CentOS 7

1 hour 24 min ago
หมวดหมู่: CentOS

จาก เดิมที่ CentOS จะเปลี่ยน runlevel ที่ไฟล์ /etc/inittab แต่ใน CentOS7 จะเปลียน runleve ด้วยคำสั่ง ดังตัวอย่าง

เปลี่ยนจาก 5 เป็น 3

# systemctl set-default multi-user.target

เปลี่ยนจาก 3 เป็น 5

#systemctl set-default graphical.target

 

Udomsak: OpenStack ตอนที่ 1

1 hour 24 min ago
OpenStack  - Opensource Cloud management

เขียนทิ้งเอาไว้  จากการสังเกตุ มีการใช้ Open Stack กันมากขึ้น เลยคิดว่าเขียนเก็บเอาไว้เรื่อง Openstack จะดีกว่า  โดย Series ในการเขียนนี้จะครอบคลุมไปถึงเรื่อง  Configuration management  ซึ่งผมจะใช้ Chef และ SaltStack เป็นหลัก  และ ผมจะเน้นการใช้งานกับ Docker  
OpenStack คือ ซอฟต์แวร์ที่ใช้บริหารจัดการ Cloud  ( Management )  ซึ่งส่วนตัวนิยามเองว่า มันจะเป็นอะไรที่มากกว่า นิยาม ของ Orchestration อาทิ  Ubuntu้ MaaS ดังนั้นจะสรุปพอให้เข้าใจได้ง่ายๆ 
เคยมีคนแย้งผม เช่นกันว่า  งาน DevOps ไม่เห็นเกี่ยวกับงาน System Engineer หรือ System Administrator แต่อย่างใดเลย ผมเองกลับมีความเห็นว่า เกี่ยวข้องกันตรงๆ เลยครับ ยิ่ง  System Engineer เพิ่ม Skill  DevOps เข้าไปแล้ว การ Deployment หรือ การ Setup ระบบก็สามารถทำให้บริการ ออกสู่ผู้ใช้ปลายทางได้เร็วขึ้น ในทีนี้ กล่าวถึง  ฝ่าย Development , Marketing etc.  ยิ่งเรา Deploy service เราออกไปเร็วเท่าไหร่ บริการของเราก็เร็วมากขึ้นเท่านั้น  System Automation จะเข้ามาทำให้ ชีวิตเราสบายมากขึ้น   ลดปัญหา conflict ระหว่าง team ลงไป งานเดินเร็วขึ้น , เราแค่เตรียม Infrastructure , เตรียม Service ที่ต้องการ ส่วนอื่นแค่มาขอใช้งาน เราคอย Monitoring และ report สำหรับ Capacity planning ไป.

สรุปง่ายๆ อีกเช่นกัน มันลดขั้นตอนการทำงานและความเร็วในการทำงานที่มากขึ้น  ลดปริมาณงานที่เป็น Routine ลง  **แนวคิดนี คนขี้เกียจแบบผมชอบมาก  5555+   
OpenStack เอง Cisco ก็ให้การสนับสนุนนะครับ เท่าที่ผมจำได้  โดยได้รวมเข้ากับ UCS suite ซึ่งปัจจุบันนี้ผมไม่แน่ใจว่า มีการบริหารจัดการ หรือ บริหาร Product Line ยังไง  เนื่องจากไม่ได้ตามข่าวในส่วนของุ  UCS มาเกือบปีได้แล้ว  
รูปภาพที่ได้นำมาใช้ เป็นของ OpenStack website นะครับ :) 
อย่างไรก็ตามส่วนของโครงการนี้ที่ผมสนใจคือ  DNS as a Service ซึ่งขณะนี้ีมีการพัฒนาขึ้นมาเรียกว่า https://wiki.openstack.org/wiki/Designate อาจจะงง นะครับ มันคือ การเรียกใช้  Name Service โดยการเรียกใช้ผ่าน API  ซึ่งของเดิมจะทำ โดยวิธีการใช้ขั้นตอนการทำงานบบ Semi-Auto คือ มีข้นตอนที่ต้องบริหารจัดการเอง ผ่านขั้นตอนของ System Administrator  
แนวคิดนี้มาจาก Power DNS  ใครสนใจ ลองไปค้นเพิ่มเติมดูได้นะครับ  
เอาล่ะเกริ่นเริ่มต้นกันแบบพื้นฐาน ไม่มีอะไรเลย ปัจจุบัน OpenStack  คือ IceHouse และ Juno จะออกประมาณเดือน ตุลาคมถัดไป  
Release ของ  OpenStack 

  • Juno  ออกเดือนตุลา ( 2014 )
  • Icehouse ล่าสุด 2014.1.1  ( เวอร์ชันปัจจุบัน ) + security support 
  • Havana เวอรชันก่อนหน้า 
  • Grizzly 
    • EOL
  • Folsom
    • EOL
  • Essex
    • EOL
  • Diablo
    • EOL
  • Cactus 
    • เก่า
  • Bexar  
    • เก่า
  • Austin 
    •  เก่า
โครงสร้างของ Open Stack แสดงออกมาได้ดังภาพ 






Object แต่ละประเภท 


ส่วนของการควบคุม  Hypervisor เรียกว่า ( Openstack Compute ) และมีชือเรียก Module นี้ว่า Nova
ส่วนให้บริการ Image สำหรับทำการ เรียกว่า Glance  

ส่วนของการจัดการ Network ( Openstack Networking ) เรียกว่า Neutron ใช้สำหรับสร้าง Network Topology  สนับสนุน Network เลเยอร์สอง , เลเยอร์สาม ( L2, L3 ) , VLAN  , QoS , โหลดบาลานซ์ , VPN , Firewall  และ เซอร์วิสอื่นๆ ที่เกี่ยวข้องกับ เนตเวิร์ก 
รายละเอียดอื่นๆ เกี่ยวกับ Neutorn


ส่วนจัดการ การเก็บข้อมูล , Disk ( OpenStack Storing ) เรียกว่า 
  • Object Storage  เรียก  Swift  มี API ให้เรียกใช้ , สามารถ extend raw disk  โดยที่่ไม่ต้องสนใจกับ Layer ทีอยู่ด้านบน ( ไฟล์ , รูปภาพ , อะไรก็ตาม )      
  • Block Storage เรียก Cinder   ความหมายตรงตัวเลย เรียกใช้บริการนี้ เช่น  iSCSI  เป็นต้น 

เนื่องจาก Architecture ของ Open Stack ถูกออกแบบมาเป็นลักษณะของ Module และ เชื่อมต่อกันโดย API ดังนั้น นอกจากระบบหลักของ Openstack ดังที่กล่าวมาแล้วจะมี ส่วนของ โปรแกรมอื่นๆ ที่เกี่ยวข้องเพื่อให้บริการในการให้บริการ   Cloud ครบถ้วนสมบูรณ์สำหรับให้บริการดังต่อไปนี้ 
  • Identity (Keystone) ดูเรื่อง Authentication
  • Telemetry (Ceilometer) ดูเรื่อง มอนิเตอร์ ทรัพยากร
  • Orchestration (Heat) บริหารจัดการ ทรัพยากร 
  • Database Service (Trove)  ดูเรื่อง Database as a Service ( Multitenant Database ) ซึงจากเดิมเราต้อง อาศัยซอฟต์แวร์อื่นมาช่วย หรือ เขียนส่วนจัดการนี้เอง  
  • Dashboard (Horizon) หน้าเวบ GUI 
  • Common Libraries (Oslo) Library อื่น เรียงกัน ออกมาเป็นตับ ถ้าต้องการพัฒนา Service เพื่อใช้งานระบบต่างๆ ก็เข้ามาดูในส่วนนี้ แต่ในเบื้องต้นจะ ขอละ ส่วนตรงนี้ออกไป 
  • Documentation  เอกสาร
  • QA and DevStack QA และ ส่วนของการพัฒนา ( DevStack ) 
  • Infrastructure 
  • Deployment (TripleO) ส่วนของการ Deployment  ตรงนี้ผมจะมาทำให้ให้ดูว่าจะ Integrate กับ Chef หรือ SaltStack ยังไง  
  • Release cycle management ตรงนี้ไม่ขอกล่าวถึง
 ในตอนต่อไป ผมจะเขียน Blog เกี่ยวกับ OpenStack กับ Docker ( Container VM ) และ การ Deploy Software อื่นๆ เช่น Chef และ SaltStack และ เนื่องจากผมต้องใช้ฟังก์ชั่นของ NetFlow  ,Software Define Network หรือ  SDN  ผมจะต่อ Stack นี้เข้ากับ OpenVSwitch โปรดติดตามตอนต่อไป  


My site Article and Topic

Udomsak: ทวนเรื่อง Security : Episode1 Install Pentest tool

1 hour 24 min ago
เดิมที Notebook ที่ใช้อยู่ เป็น  Intel Core-i5 ติดตั้ง Window 7 Home premium +  Ubuntu 13.10  ทีนี้อยากมาทวนเรื่อง security  กันหน่อย ก็พบปัญหาว่า  ถึงจะดึงเอา package ของ Kali มาได้ ( Non-official package ) และ ทำการติดตั้งลง Ubuntu 13.10  ก็อาจทำให้ ระบบพังได้ เนื่องจากเครื่องที่ใช้อยู่เป็น Daily-use  จึงไม่ขอเสี่ยง เพราะ เคยพังมาแล้ว  

ประเด็นถัดมา ติดตั้ง เป็้น VM เสียสิ virtualbox ก็มี โอเคครับ แต่.. ประสิทธิภาพและการใช้งานจริง พอแค่สำหรับ In-house training , basic testing ( pre-usage, basic audit )   ไม่เหมาะสำหรับ เอามาใช้ทำ pentest จริง เพราะมันอืด และ ช้า  เลยยกเลิกไป

ดังนั้นทางเลือกสุดท้าย ติดตั้ง ใหม่เลย นี่แหละทางแก้ ผลของการเลือกสุดท้ายมาอยู่ท่  Backbox Linux แทน Kali ( 1.0.7 )  เนื่องจากติดปัญหา Installer เจอ Layout disk ของผมเข้าไป ถึงกับ ทำงานไม่ได้ ( ไม่ยอม format และ accept Disk write partition )  เลยต้องมาใช้  Backbox แทน

หลังจากได้ เครื่องมือแล้ว ตอนต่อไป เรื่อง SQL-Injection  ครับ







Tips: 

+  ก่อนทำการติดตั้ง ผมทำ Recovery  USB Flash drive boot เตรียมเอาไว้ เผื่อถ้า MBR พัง ผมยังใช้  USB bypass การ boot ได้

+  ตอนผมติดตั้ง ไม่ได้มีการสั่งให้ทำการติดตั้ง Boot loader  และ / หรือ Set Active partition ใหม่ ซึ่งของเดิมจะเป็น Window 7 ที่ใช้อยู่

+  จากนั้นผม Boot เข้าไปใน Window ตามปกติ (  MBR ยังไม่เปลียน )  / ถ้าเปลียนก็ให้ช้ usb recovery boot จาก Tips แรก boot เข้า Window ไป เพิ่ม boot เมนู ใหม่ Reboot อีกครั้ง  ( ตอนนี้ ค่า MBR ยังไม่เปลี่ยนนะครับ ) ดังน้นจึงยังไม่มีผลอะไร  ( ยังมองไม่เห็น backbox ที่ติดตั้งไปใหม่ )

+  Boot เข้า Ubuntu  จากนั้น ทำการ Mount  Partition ที่เพิ่งติดตั้งเข้าไป  ทำการ mount เพื่อ  install grub ใหม่  ด้วยคำสั่ง

  • mount  /dev/sda10  /mnt
  • mount --bind  /dev  /mnt/dev
  • mount --bind  /dev/pts /mnt/dev/pts
  • mount --bind  /sys  /mnt/sys 
  • mount --bind  /proc /mnt/proc 
จากนั้นทำการ chroot  /mnt   ->   root#  chroot /mnt ทำการรันคำสั่ง  grub-install /dev/sda       ทำการรันคำสั่ง  grub-install --recheck  /dev/sdaทำการรันคำสั่ง  update-grub /dev/sda 
จบ ทำการ reboot ทดสอบการ access ระบบปฏิัติบัติการที่มีอยู 
**** ขั้นตอนการทำงานจะจบตรงนี้ก็ได้ แต่จะได้ Boot เมนู ซ้อน Boot เมนู ******

ฺBoot เข้าวินโดว์์  copy  /boot/grub/boot.img จาก partition ของ Backbox ( ตัวที่เพิ่งสั่งทำการติดตั้ง ตามคำสังข้างบน )  ไป replace แทนตัวเดิม  (   c:\boot\boot.img  )  
เปิดโปรแกรม  EasyBCDEdit  สงทำการ repair ฺWindow7 Boot menu  เปิดโปรแกรม Visual BCDedit ทำการแก้ไขเมนู

ทำการ reboot ใหม่ จะได้ Boot เมนู Window 7 จบ

หมายเหตุ หน้าจอ Boot  Linux จะไปโผล่ที่ Grub แทน ( Backbox Linux )  เราต้องแก้ไข ไฟล์ grub.cfg ใหม่ เพื่อเพิ่ม option สำหรับ ระบบเดิมของเรา ( Linux เก่าที่มีอยู่ )








My site Article and Topic

Neutron: RahuNAS - 0.3.0 เตรียมออก "รุ่นบังเอิญ"

1 hour 24 min ago

จากที่เคยตั้งใจไว้ว่า จะไม่เพิ่มความสามารถ ให้กับ rahunas-legacy branch แต่จนแล้วจนรอด ด้วยเหตุผลหลาย ๆ อย่าง ส่งผลให้ได้มานั่งปัดฝุ่น และลงมือเขียนเพิ่มเติมจนได้ ที่ใช้ชื่อรุ่นว่า "บังเอิญ" เนื่องจากว่า รุ่นนี้ บังเอิญไปเจอข้อมูล หรือชุดโปรแกรม ที่จะเอามาประกอบร่าง ให้ทำงานได้ตามที่คาดหวังไว้ และที่บังเอิญกว่านั้น คือ มีความจำเป็นต้องเขียน code ตอนลูกหลับ ตอนมันตื่น ๆ อย่าหวังว่าจะได้ทำอะไร และมันบังเอิญไปคิดออก ตอนกล่อมลูกให้นอนกลางวัน (พ่อมันฝันกลางวัน ^_^)

== บังเอิญ 1 ==
บังเอิญพบว่า Bandwidth shaping เมื่อต้องไปใช้งานกับระบบที่ต้องรับโหลดหนัก ๆ จำนวนผู้ใช้มากหน่อย ระดับ 1000 - 2000 ราย ถ้าใช้ shaping script เดิม ที่ทำ linear filter อาจมีกระอักเลือดได้ และหลังจากอ่าน http://www.lartc.org/lartc.html ไป ๆ มา ๆ หลายรอบ ใช้เวลาหลายปี เพราะไม่ได้โชคดี เหมือน เตีย บ่อกี้ ตกเหวไปเจอเคล็ดวิชา -_-'' ก็เพิ่งจะมาเข้าใจหัวข้อ 12.4. Hashing filters for very fast massive filtering ว่ามันควรจะออกมาแนวไหน

Renovate the rahunas-bandwidth wrapper script : http://git.rahunas.org/?p=rahunas;a=commit;h=b783e788d91aa24cf1bf84aa162...

ยังน่าจะต้องปรับอีกหน่อย แต่เบื้องต้น ก็ใกล้เคียงกับความต้องการแล้ว

== บังเอิญ 2 ==
บังเอิญ ไปเจอ pmacct (http://www.pmacct.net) ซึ่งเป็นโปรแกรมสำหรับทำ IP accounting (Packets/Bytes) ที่ลองไล่ ๆ ดูแล้วพบว่าใช้ libpcap และสามารถเก็บข้อมูลลง sqlite3 ได้ พอดีว่า RahuNAS ใช้ sqlite3 ในการทำ data backup อยู่แล้ว มี code ในการจัดการ db อยู่พอสมควร ซึ่งก็สะดวกที่จะใช้งานต่อ จึงจัดแจงลองเขียน code ทดสอบดูว่า พอมีความเป็นไปได้มากน้อยแค่ไหน ซึ่งผลก็ออกมาใช้การได้ดีทีเดียว (ถึงจะใช้ CPU เยอะหน่อย แต่ก็แลกกันหละนะ)

ความจริง ในส่วน IP accounting ที่วางแผนไว้ คือ จะใช้ ipset (รุ่นใหม่) ที่มีความสามารถในส่วน accounting มาให้ แต่ยังไม่มีเวลานั่งเขียนใหม่ทั้งหมด (ตั้งใจว่าอย่างนั้น) ก็เลยต้องดองไว้ ทำโอกาสต่อ ๆ ไปละกัน

และถ้าส่วนนี้ ใช้งานได้ ความตั้งใจที่จะทำเรื่อง Bandwidth Quota with regenerative capability (bandwidth หนึ่งหลอด ใช้หมด หยุดใช้ ระบบเติมให้เองอัตโนมัติ) ก็คงจะได้ทดสอบต่อไปเช่นกัน

== ไม่บังเอิญ ==
ทั้งหมดทั้งมวล --- ทำเอง ใช้เอง แบ่งคนอื่นใช้ (หารายได้ เลี้ยงครอบครัว) --- ยังกระจอกอยู่ ก็ไส้แห้งต่อไป 55 -_-''

Happy Hacking

Sothorn: ตัวอย่างการติดตั้ง CentOS 7

1 hour 24 min ago
AttachmentSize CentOS7_install.pdf7.06 MB หมวดหมู่: CentOS

ตัวอย่างการติดตั้ง CentOS 7 เชิญดาวน์โหลดและแจกจ่ายได้ฟรีครับ

LookHin: การเชื่อมต่อ Bluetooth Keyboard กับ Raspberry Pi

1 hour 24 min ago

เมื่อสักช่วงอาทิตย์ที่แล้วผมไปหาซื้อ Bluetooth Keyboard มาลองต่อกับ Raspberry Pi ดูนะครับ (จริงๆ ก็ไม่ได้จำเป็นเลย ปกติก็ remote เข้าไปอยู่ดี ซื้อเพราะอยากลองล้วนๆ) สรุปแล้วเมื่อได้ของมาก็ Pairing กับ R-Pi ไม่ได้ซะงั้น มันถามให้เราใส่ PIN ซึ่งเราก็ไม่รู้ว่ามันคืออะไร ซึ่งถ้าเป็นบน android หรือ windows เวลาที่ Pairing กันแล้วมันจะขึ้น PIN มาที่หน้าจอให้เราพิมพ์ตามแต่นี้ไม่มี ผมลองมาหลายวิธีจนได้วิธีที่ใช้งานได้ โดยผมจะทดลองกับ Bluetooth Keyboard ของ rapoo รุ่น e6500

Bluetooth Keyboard ของ rapoo รุ่น e6500 และ Bluetooth dongle (ต่อจอเสียบสายแลนให้เรียบร้อย)

เปลี่ยนสิทธิเป็น root กันก่อน โดยทั้งหมดนี้ทำผ่าน SSH

1 sudo su

จากนั้นทำการ enable dbus ซึ่งมันคืออะไรก็ไม่ทราบ อ่านต่อเองครับ dbus

1 update-rc.d -f dbus defaults

restart สักหนึ่งรอบ

1 shutdown -r now

จากนั้นทำการ install bluez, python-gobject

1 apt-get install bluez python-gobject

ใช้คำสั่ง hcitool scan เพื่อดู MAC Address ของ Bluetooth Keyboard โดยให้กดปุ่ม connect ที่ keyboard เมื่อเห็นว่ามีไฟสถานะเตรียม connect ขึ้นให้พิมพ์คำสั่ง hcitool scan

1 hcitool scan

ทำการ Pairing และกำหนด PIN เป็น 0000 เมื่อพิมพ์คำสั่งเสร็จ ให้กด 0000 และกด enter ที่ keyboard เพื่อทำการ pairing ครับ

1 echo 0000|bluez-simple-agent hci0 6C:5D:63:51:15:49

ทำการรับรองอุปกรณ์ คราวหน้าเราจะได้ไม่ต้อง Pairing อีก

1 bluez-test-device trusted 6C:5D:63:51:15:49 yes

ทำการเชื่อมต่อกับ Bluetooth Keyboard และทดลองพิมพ์ได้เลยครับ

1 bluez-test-input connect 6C:5D:63:51:15:49

ขั้นตอนถัดไปให้ทำการแก้ไข /etc/rc.local เพื่อเพิ่มคำสั่งให้ connect กับ Bluetooth Keyboard ทุกครั้งที่เปิดเครื่อง

1 nano /etc/rc.local

เพิ่มบรรทัดนี้เข้าไปก่อนคำสั่ง exit 0 ครับ

1 bluez-test-input connect 6C:5D:63:51:15:49

โดยทุกครั้งที่เปิดเครื่องขึ้นมาเราต้องกดปุ่ม connect บนตัว keyboard เพื่อเตรียม connect เท่านี้เราก็จะได้ใช้ Bluetooth Keyboard ทุกครั้งที่เปิดเครื่องแล้วครับ

LookHin: ควบคุม Servo Motor ด้วย Raspberry Pi

1 hour 24 min ago

จริงๆ แล้วตัว Raspberry Pi มีขาสัญญาน PWM (Pulse Width Modulation) มาให้เรา 1 ขา คือขาที่ 12 หรือ GPIO 18 ซึ่งดูจะน้อยไปหน่อยและก็ใช้งานค่อนข้างยาก แต่โลกนี้ก็ยังมีผู้ใจดีทำไลบรารีที่สามารถทำให้เจ้า Raspberry Pi ของเราสามารถมีขาสัญญาน PWM เพิ่มได้ถึง 8 ขา และการใช้งานก็แสนง่าย เจ้าไลบรารีตัวนั้นชื่อว่า ServoBlaster เดียววันนี้เราจะลองใช้เจ้านี้ควบคุมการหมุนของ Servo Motor กันดูครับ เผื่อเอาไปประยุกต์ใช้ในการควบคุมแขนกลหรือการหมุนของข้อต่อต่างๆ ได้

เริ่มจากการต่อวงจรกันก่อน โดยให้ต่อสายไฟและกราวด์ของ Servo Motor เข้ากับแหล่งจ่ายไฟภายนอกที่สามารถจ่ายไฟได้ประมาณ 3-5V แล้วแต่ขนาดของ Servo นะครับ (ผมลองต่อเข้ากับขา 5V ของ R-Pi แต่ไม่สามารถใช้งานได้ เครื่องจะ restart เวลาสั่งให้ Servo ทำงาน เข้าใจว่ากระแสไฟที่ R-Pi จ่ายให้น่าจะไม่พอ) และให้ต่อขากราวด์ของ R-Pi เข้ากับกราวด์ของแหล่งจ่ายไฟภายนอกอันนี้ด้วย จากนั้นก็เสียบขาสัญญานของ Servo เข้ากับขา GPIO 4

ต่อเสร็จแล้วได้ออกมาหน้าตาประมาณนี้ครับ (Servo ของผมตัวเล็กนิดเดียว)

จากนั้นทำการติดตั้งโปรแกรม GIT หากใครติดตั้งแล้วก็ข้ามไปขั้นตอนถัดไปเลยครับ

1 sudo apt-get install git-core

ทำการโคลน PiBits จาก github.com และทำการติดตั้ง

1 2 3 4 git clone https://github.com/richardghirst/PiBits.git cd PiBits/ServoBlaster/user make sudo make install

เมื่อติดตั้งเรียบร้อยแล้ว เราสามารถใช้ขาต่างๆ ทั้ง 8 ขาดังนี้ครับ โดย Servo หมายเลข 0 คือ GPIO 4 และไล่ไปเรื่อยจนถึง Servo หมายเลข 7 ตามตาราง

1 2 3 4 5 6 7 8 9 Servo number GPIO number Pin in P1 header 0 4 P1-7 1 17 P1-11 2 18 P1-12 3 21/27 P1-13 4 22 P1-15 5 23 P1-16 6 24 P1-18 7 25 P1-22

คราวนี้มาทดสอบกันดูว่าสามารถสั่งให้ Servo หมุนได้ไหม โดยเราต้องกำหนดความกว้างของพัลส์เพื่อควบคุมให้ Servo หมุนไปยังมุมต่างๆ ปกติก็จะอยู่ที่ประมาณ 1000us ถึง 2000us ซึ่งถ้าเรากำหนดความกว้างของพัลส์ที่ 1500us ก็จะหมุนไปอยู่ตรงกลาง (อันนี้ขึ้นอยู่กับสเปกของ Servo แต่ละตัวด้วยนะครับ แต่ปกติจะประมาณนี้) จากตัวอย่างเราได้ต่อขาสัญญานของ Servo ไว้ที่ขา GPIO 4 ฉะนั้นเวลาสั่ง เราก็จะสั่งไปที่ Servo หมายเลข 0 ตามตัวอย่าง

1 2 3 echo 0=1000us > /dev/servoblaster echo 0=1500us > /dev/servoblaster echo 0=2000us > /dev/servoblaster

เพียงเท่านี้เราก็สามารถควบคุมให้ Servo Motor หมุนในมุมต่างๆ ได้แล้วครับ อันนี้เราอาจจะเอาไปประยุกต์ใช้ในการควบคุมการหมุนของกล้องผ่านเว็บก็สามารถที่จะทำได้เช่นกัน ลองนำไปต่อยอดกันดูครับ

ทดสอบการหมุน Servo Motor ในมุมต่างๆ

ดูข้อมูลเพิ่มเติมได้ที่ : https://github.com/richardghirst/PiBits/tree/master/ServoBlaster

Udomsak: เล่าสู่กันฟัง ทำตัวติดตั้งโปรแกรม แบบง่ายๆ บนระบบปฏิบัติการ Window

1 hour 24 min ago
Window Installer  คือ ตัว Setup  ที่เราเห็นเวลา Click setup อะไร  วันนีเอามาให้ดู พอดีนั่งทำโปรเจ็กต์ ส่งให้ พี่โดมฯ เลยเอามาปัดฝุ่นใช้อีกคร้งนึง  ตัวนี้ที่ผมใช้คือ  'InnoSetup'  ซึ่งจะต่างไปจากเดิม ที่ผมเคยใช้เมื่อหลายปีก่อน คือ NSIS ( Sponsor โดย NullSoft )  โดยเป็น Opensoure software ทั้งคู่

ถามว่าในงาน System Administrator มีประโยคอะไร

เอาไว้สำหรับติดตั้งโปรแกรม หรือ Script ที่เราต้องการผ่าน ซอฟต์แวร์ตัวนี้ได้ โดยทำงานผ่าน การติดตั้งแบบ Unattend  ( ปกติ ตัว setup จะถามให้เรา click next  หรือการมีปฏิสัมพันธ์ กับ  User  ซึง unattend คือการติดต้งแบบตรงกันข้ามกันแบบนี้ ( Silinet installaton ) )

ประโยชน์ ที่ผมเคยใช้ คือทำการ deploy program หรือ script ที่เราเขียนขึ้นมา เพื่อทำงาน และ  ใช้ deploy ไปยังเครื่อง client จำนวนมากๆ  มีบางกรณี script ที่เขียนไว้ มีการทำงานไม่ครอบคลุม กับ สิ่งที่จะทำ ผมจะใช้วิธีนี้  ( สมัยเมื่อหลายปีก่อนที่ทำหน้าที่ Technical support )

ประโยชน์
  1. ทำให้ลดเวลาในการติดต้งโปรแกรมลง 
  2. ลด scope ของการทำงานที่ผิดพลาดของ Scripting แทน 
  3. บางครั้ง Scripting เองไม่ได้มีความสามารถแบบนั้น
  4. Script หรือ ตัวโปรแกรมบางตัว ถอนการติดตั้งตัวมันเองไม่ได้  กรณีที่ Software ที่ติดต้งไม่ได้ถูก register เข้าไปใน registry ของ Software install  ซึ่งจะทำให้มันไปโผล่ใน Add remove program ของ Control panel  Installer software ก็เข้ามาช่วยจัดการตรงนี้ 


การรับมือกับเครื่องจำนวนมาก และต้องติดตั้ง Software โดยมานั่ง Click setup next  ไม่เป็นประโยชน์แน่ หลายคนอาจจะบอกว่า ใช้ Norton Ghost สิก็จบเรื่อง  ใช่ครับแต่บางกรณี  และ หลายครั้ง หลังจากติดตั้ง Ghost แล้ว ต้องเข้าไปทำการ Setup software น้นๆ ใหม่  การใช้ Script และ โปรแกรม Deployment management จะเข้ามาช่วยตรงนี้





My site Article and Topic

Thep: Fonts-TLWG 0.6.1

1 hour 24 min ago

Fonts-TLWG 0.6.1 ออกไปแล้วเมื่อวานนี้ สรุปความเปลี่ยนแปลงในรุ่นนี้คือ:

  • ฟอนต์ใหม่: ลักษมัณ (Laksaman) ซึ่งดัดแปลงจากฟอนต์ TH Sarabun New ของคุณศุภกิจ เฉลิมลาภ และ SIPA
  • แตกแฟ้ม fontconfig จากแฟ้มเดี่ยวๆ เป็นแฟ้มย่อย เพื่อให้สามารถเลือกติดตั้งฟอนต์เพียงบางส่วนได้ ซึ่งเป็นสิ่งที่ดัดแปลงไว้ในแพกเกจของ Debian ก็เพียงแต่ merge เข้ามาที่ต้นน้ำเท่านั้น
  • Option ใหม่สำหรับ LaTeX เพื่อให้สามารถกำหนดฟอนต์ปริยายของเอกสารได้โดยสะดวก

มีผลข้างเคียงอีกเรื่องหนึ่งที่ไม่ได้กล่าวไว้ใน blog ก่อน ๆ คือเรื่องการตัดการวาด ฤา เป็น ฤๅ ของฟอนต์สารบรรณออกในฟอนต์ลักษมัณ ซึ่งการวาดดังกล่าวผมถือว่าผิดหลักการ เพราะสตริงทั้งสองถือว่าเป็นสตริงที่ต่างกันทั้งในรหัส มอก.620-2533 และในยูนิโค้ด ผู้ใช้ควรสามารถแยกความแตกต่างได้ว่าเป็นสตริงที่ต่างกัน

พฤติกรรมนี้อาจมาจากการพยายามแก้การพิมพ์ผิดอย่างกลาดเกลื่อนของผู้ใช้ทั่วไป ที่มักจะพิมพ์ ฤๅ และ ฦๅ โดยใช้สระอาแทนลากข้างยาว แต่การแก้ที่ฟอนต์ถือว่าไม่ถูกต้อง เพราะเป็นการอำพรางความแตกต่างของข้อมูลจริง หากจะแก้ปัญหาให้ถูก ควรแก้ที่ input method ซึ่งประเด็นที่คล้ายกันนี้ผมเคยเขียนถึงไปแล้วใน กรณีฟอนต์ Sarabun IT9 การแก้ปัญหาที่ฟอนต์จะยิ่งเป็นการส่งเสริมการป้อนข้อมูลที่ผิดให้กว้างขวางยิ่งขึ้น ดังนั้นผมจึงตัดกฎข้อนี้ออกในฟอนต์ลักษมัณ และถ้าเป็นไปได้ก็อยากให้แก้ในฟอนต์มาตรฐานราชการไทยทั้ง 13 ฟอนต์ด้วย

ได้อัปโหลด Debian package เข้า sid ไปแล้ว แต่ยังรออยู่ในคิว NEW เนื่องจากมีแพกเกจใหม่ของฟอนต์ลักษมัณเพิ่มเข้ามา พร้อมกันนี้ก็ได้อัปโหลดแพกเกจ LaTeX ไปที่ CTAN แล้วด้วย ผู้ใช้ TeXLive ก็รอพบได้จากแพกเกจ texlive-lang-other รุ่นถัดไปครับ

Thep: LaTeX Options for fonts-tlwg

1 hour 24 min ago

การเพิ่มฟอนต์ลักษมัณในแพกเกจ Fonts-TLWG พร้อมกับรองรับใน LaTeX ด้วยนั้น ทำให้เกิดคำถามกับผมว่า ในเมื่อมีฟอนต์สองค่ายมาอยู่ด้วยกัน คือ ฟอนต์แห่งชาติของเนคเทค และ ฟอนต์มาตรฐานราชการไทย จากกรมทรัพย์สินทางปัญญาร่วมกับ SIPA (เว็บต้นทาง สาบสูญไปแล้วตามระเบียบของราชการไทย) ย่อมจะเกิดทางเลือกการใช้ฟอนต์ที่เด่นชัดระหว่างสองค่ายนี้ ซึ่งผู้ใช้อาจเลือกฟอนต์ได้โดยใช้คำสั่งใน preamble เช่น เมื่อต้องการใช้ฟอนต์ลักษมัณในเอกสาร:

\renewcommand{\sffamily}{laksaman} \AtBeginDocument{\sffamily}

แต่ด้วยแนวโน้มของความต้องการที่น่าจะสูงพอ ผมจึงตัดสินใจเพิ่ม option ให้กับแพกเกจ fonts-tlwg เสียเลย โดยผู้ใช้สามารถใส่ option ขณะ \usepackage ได้เลย โดยแบ่งหมวดหมู่ของ option ดังนี้:

  • การใช้ฟอนต์ sans-serif แทนค่าปกติที่เป็นฟอนต์ roman:
    • sans : ใช้ฟอนต์ sans-serif เป็นฟอนต์ปกติของเอกสาร
  • การกำหนดฟอนต์ roman, sans-serif, และ teletype ของเอกสาร:
    • rmkinnari : ให้ฟอนต์ kinnari เป็นฟอนต์ roman ปริยาย
    • rmnorasi : ให้ฟอนต์ norasi เป็นฟอนต์ roman ปริยาย
    • sfgaruda : ให้ฟอนต์ garuda เป็นฟอนต์ sans-serif ปริยาย
    • sflaksaman : ให้ฟอนต์ laksaman เป็นฟอนต์ sans-serif ปริยาย
    • sfumpush : ให้ฟอนต์ umpush เป็นฟอนต์ sans-serif ปริยาย
    • sfloma : ให้ฟอนต์ loma เป็นฟอนต์ sans-serif ปริยาย
    • sfwaree : ให้ฟอนต์ waree เป็นฟอนต์ sans-serif ปริยาย
    • ttttype : ให้ฟอนต์ ttype เป็นฟอนต์ teletype ปริยาย
    • ttttypist : ให้ฟอนต์ ttypist เป็นฟอนต์ teletype ปริยาย
    ตัวเลือกกลุ่มนี้ไม่ได้เปลี่ยนฟอนต์ปริยายของเอกสารโดยตรง แต่เปลี่ยนฟอนต์ทั้งสามตระกูลสำหรับใช้คละกันในเอกสาร
  • การกำหนดฟอนต์ปริยายของเอกสาร:
    • kinnari : ให้ฟอนต์ kinnari เป็นฟอนต์ปริยายของเอกสาร
    • garuda : ให้ฟอนต์ garuda เป็นฟอนต์ปริยายของเอกสาร
    • norasi : ให้ฟอนต์ norasi เป็นฟอนต์ปริยายของเอกสาร
    • laksaman : ให้ฟอนต์ laksaman เป็นฟอนต์ปริยายของเอกสาร
    • loma : ให้ฟอนต์ loma เป็นฟอนต์ปริยายของเอกสาร
    • purisa : ให้ฟอนต์ purisa เป็นฟอนต์ปริยายของเอกสาร
    • sawasdee : ให้ฟอนต์ sawasdee เป็นฟอนต์ปริยายของเอกสาร
    • ttype : ให้ฟอนต์ ttype เป็นฟอนต์ปริยายของเอกสาร
    • ttypist : ให้ฟอนต์ ttypist เป็นฟอนต์ปริยายของเอกสาร
    • umpush : ให้ฟอนต์ umpush เป็นฟอนต์ปริยายของเอกสาร
    • waree : ให้ฟอนต์ waree เป็นฟอนต์ปริยายของเอกสาร
    ตัวเลือกกลุ่มนี้กำหนดฟอนต์ปริยายของทั้งเอกสาร โดยไม่ได้เปลี่ยนฟอนต์ทั้งสามตระกูล (อาจจะเหมาะกับเอกสารที่ใช้ฟอนต์เดียวทั้งเอกสาร เช่นหนังสือราชการไทยที่บังคับใช้ฟอนต์สารบรรณ)

ตัวอย่าง use case:

  • ต้องการใช้ฟอนต์ลักษมัณ (ดัดแปลงจากสารบรรณ) ทั้งเอกสาร (เช่น ในหนังสือราชการ): \usepackage[laksaman]{fonts-tlwg}
  • ต้องการใช้ฟอนต์ลักษมัณเป็น sans-serif (เช่น ในคำสั่ง \textsf{}) แทนฟอนต์ครุฑ (ฟอนต์ปริยายยังคงเป็น norasi): \usepackage[sflaksaman]{fonts-tlwg}
  • ต้องการใช้ฟอนต์ลักษมัณเป็นฟอนต์ปริยาย โดยต้องการผสมกับฟอนต์ roman, teletype ปกติ: \usepackage[sans,sflaksaman]{fonts-tlwg}
  • ต้องการใช้ฟอนต์ลักษมัณผสมกับฟอนต์กินรี โดยลักษมัณเป็นฟอนต์ปริยาย: \usepackage[sans,sflaksaman,rmkinnari]{fonts-tlwg}
  • ต้องการใช้ฟอนต์กินรีอย่างเดียวทั้งเอกสาร: \usepackage[kinnari]{fonts-tlwg}
  • ต้องการใช้ฟอนต์ครุฑผสมกับฟอนต์กินรี โดยฟอนต์ครุฑเป็นฟอนต์ปริยาย: \usepackage[sans,sfgaruda,rmkinnari]{fonts-tlwg}

เป็นฟีเจอร์ใหม่สำหรับ fonts-tlwg รุ่นหน้าที่จะรอออกรุ่นต่อไปครับ

Udomsak: My DevTools ที่ใช้ สำหรับ Mobile App development. บนระบบปฏิบัติการ Windows

1 hour 24 min ago
เมื่อคืืน พอว่างก็ไล่เคลียร์งาน ที่ค้างๆ พี่ๆ และ ชาวบ้านเขาไว้ให้ เสร็จๆ ไป นึกขึ้นได้เคยเห็นบางคน ถามเรื่องการใช้ อุปกรณ์ไหนยังไงในการพัฒนา Web App , Mobile App บนฝั่ง Window ผมใช้ตามนี้ครับ

นอกเหนือจากนั้นก็แล้วแต่ ครับว่าจะใช้ ทำอะไรมากขนาดไหน  ถ้าเป็น Cordova Plugin Dev and Modify ก็จะใช้ ADT ( Android Developer Tool ) เข้ามาช่วย

  • Brackets  ( Adobe Opensource Editor )
    • Nodejs extension
    • Brackets-Git Extension 
    • ปลั๊กอิน อื่นๆ ที่เกียวข้อง   
  • Nodejs
  • Git Explorer 
  • Git Command Line on Windows
  • Process Hacker เอาไว้สำหรับ หา Process ที่รันและค้างอยู่ใน Memory รวมถึง ตัวที่มันกำลัง access network
  • Fiddle2  เอาไว้ Trap ดู Traffic HTTP ที่วิ่งไปมา ระหว่าง Server กับ  Browser client  ( ต้องการ .NET 4 )  
  • SysInternal Tool  - บางทีก็เอาไว้ใช้สำหรับ resolve ปัญหาบางอย่างที่ต้องการรู้ เช่น การ อ่าน-เขียน registry , Filelock , Access enum  ( permisson access dump )  ตัวนี้อาจไม่เกี่ยวกับ HTML5 dev.  
  • Wireshark เอาไว้ sniffer traffic 
  • ie Tab chrome extension สำหรับดสอบใน หนาต่างของ IE  
  • Ultimate user Agent chrome extension สำหรับทดสอบเปลี่ยน User Agent 

เพราะสาเหตุอะไรที่ผมใช้ ตัวนี้มาดูกัน 
  • ทำไงก็ได้ให้มันสามารถทำการ preview ตัว HTML ที่เราทำได้  ถ้าเป็น Linux ไม่ลำบากอะไรแค่ Module 'httpserver' ตัวเดียวจบ หรือ บวกกับ node-watch   
  • สนับสนุน git  ( ปล. ในเครื่องต้องลง Git  window program เรียบร้อยแล้วนะครับ )  git คือ version control  ทำให้ไม่ต้องคอย Save backup อยู่ตลอดๆ
SublimeText2 ผมเองก็ใช้ครับ แต่ มันขาดฟังก์ชั่น ที่ทำให้ต้อง relaod and setup webserver ( simple httpd ) ขึ้นมาเอง เลยเลือกใช้เป็น Brackets แทน 

  หลังจากผมทำการติดตั้ง Brackets แล้ว และ ลง Exension ที่เกี่ยวข้องเพิ่มเติม  


Options Live preview มีมาให้เป็นค่าปกติ ( Default ) ไม่ต้องไปลงอะไรเพิ่ม ผมแก้โค้ด เสร็จสั่ง save มันก็โหลดอันที่แก้ขึ้นมาให้เลย   Git extension เองมีมาให้ครบฟังก์ชั่นการทำงาน
  • Branch 
  • Vesion 
  • Diff 
  • Log 
  • History 






ดู Process ที่ค้างอยู่ ถ้าค้างก็ Kill ซะ







My site Article and Topic

Udomsak: มาป้องกันโทรศัพท์หาย กันเถอะ ( Android )

1 hour 24 min ago
เนื่องจากได้โทรศัพท์ใหม่มา  แทนเครื่องเดิม ซื้อมาในราคา 3,500 พอใช้งานได้ดี  เป็นเครื่อง สองซิม พอไล่ Set program ไปเรื่อยๆ ก็เลยหา solution มาทดสอบกันหน่อย ไม่เชิงจะว่างนัก แต่ระหว่าง Set Env เครื่องเพื่อที่จะทำงานต่อ ก็มาทดสอบกันหน่อย  

เนื่องจากมีงบน้อย และ ไม่สะดวกในการชำระเงิน จึงขอเลือกเอา ออปชั่นฟรี  มาใช้งานกันนะครับ


  1. Prey Project ( Anti-thef )  ป้องกัน  Notebook , Mobile , Computer สูญหาย 
  2. Avast Anti-Thef  ป้องกัน มือถือหาย  

โดยมีโจทย์เพ่ิมเติม นิดนึง  เนื่องจากเคยได้ยินข่าวที่ว่า มีคนโดนปล้นมือถือ โจรดันฉลาดไปลบโปรแกรมทิ้งอีก เลยต้องหา Feature ที่มีการ Hide ตัว Program ได้นิดนึง นอกจากนั้นต้อง
  • หามือถือได้จาก Map application**  
  • กรณี GPS ใช้ไม่ได้น่าจะมี Option อื่น ที่ locate phone ได้** 
  • สั่งลบข้อมูลได้  
  • ทำงานได้ดี 

หลังจากทดสอบติดตั้งและเรียกใช้งานก็พบว่า PreyProject ทำงานได้ไม่ดีเท่าที่ควรนัก โดย report ที่ควรจะทำการ รายงานได้ถูกต้อง กลับกลายเป็น delay หรือ หายไปเอาดื้อๆ เลยทีเดียว  แต่ยังไงก็ต้องขอบคุณ คนสร้างโปรแกรมนี้ ทำให้เป็น Opensource ขึ้นมาด้วย  

กลับมาที  Avast Anti-Thef   หลังจากติดตั้ง Application ลงไปแล้ว ให้เข้าไปที ่Web  my.avast.com ถ้าไม่มี Account ก็ทำการสร้าง จากบน Web หรือ จากใน มือถือได้เลย



ส่ง จาก Web ของ Avast ให้ทำการ Locate Phone 

 หน้าจอสำหรับส่ง Command เพื่อ Locate Phone หลังจากส่งไปแล้ว ใจเย็นรอหน่อย ไม่เกิน 3นาที ค่าต่างๆ จะโผล่ขึ้นมาให้เราเองเลย




 Status report ทำได้ละเอียดกว่า  PreyProject พร้อมทั้งระบุ Cell  location ให้ด้วย 


ผมอยู่ในตึก แต่การ report ทำออกมาได้ดี 



บทสรุป   ในเครื่องผมติดตั้งทั้ง สองโปรแกรมเอาไว้ เพื่อทดสอบ  จริงๆ แค่ Avast Anti-theft ก็น่าจะเพียงพอแล้ว  ปล. สามารถไปประยุกต์ใช้งาน อื่นๆ ได้ด้วยครับ



My site Article and Topic

Udomsak: ติดตั้ง Visual Studio 2003 บน Window 7 64bit

1 hour 24 min ago
เนื่องจากมี งานใหม่ที่เข้าไปทำประจำ พัฒนาแอพพลิเคชัน บน base ของ .NET 1.1  อย่างไรก็ตาม หลังจากติดต้ง Visual studio 2003 เข้าไปแล้วก็งานเข้าทันใด  เพราะ Visual studio เปิดไม่ขึ้น  และ ผมไม่ได้ เก็บ Capture screen เอาไว้


  • ทำให้ไม่สะดวกเอาเต็มกำลัง  sharp developer ก็รองรับได้ต่ำสุดคือ .NET Framework 2 
  • Xamarin Studio ก็ติดปัญหา มองไม่เห็น .NET 1.1 หรือ ผม SET ไม่ถูกต้องไม่แน่ใจ 
  • ปัญหาอีกอย่างคืือเครื่องลงโปรแกรม โน่นนี่นั่น จนรวนไปหมด แก้ไม่ถูก  
  • จะ ใช้ Build tool แล้วไปใช้ IDE ตัวอื่นเขียนแทน ก็ไม่ได้ เพราะต้องมี Design report ,  UI มาเกี่ยวข้อง
  • เครื่องที่ติดตั้งได้ เป็นของที่ทำงานไม่สะดวกในการนำกลับมาทำต่อท่บ้าน   


ขั้นตอนข้างล่างนี เป็นขั้นตอนที่ผม ทำสำหรับแก้ปัญหาเครื่องผม เองนะครับ

ขั้นตอนโดยคร่าวจะเป็นดังนี้

  • ดาวน์โหลด .NET  version 1.1 servicepack 1  
  • เข้าไป direcotry  c:\Windows\Microsoft.NET\Framework\v1.1.4322
  • เรียกคำสั่ง  'aspnet_regiis -ir'
  • ดาวน์โหลด  Web Platform installer   
  • ดาวน์โหลด  IIS Express ( 7.5  คือ ของเดิมที่มีอยู่ ) ถ้ามีก็ข้ามไป โดยดาวน์โหลดได้ผ่าน Web Platform Installer 
  • ติดต้ง Internet Information Service Manager ( IIS Manager ) 
  • Add  ISAPI  ( ไฟล์ asp_filter.dll  ที่อยูใน dir .NET framework 1.1 ข้างต้น ) 
  • Allow ISAPI  ที่เพิ่มเขาไป จากเมนู CGI/ISAPI restriction control  
  • Create Site  
  • Change application pool เป็น .NET 1.1  
  • Start Visual Studio 2003 ใช้งานได้ตามปกติ อาจจะมี  Warning เรื่อง Compatablility บ้างไม่เป็นไร 
  • ดาวน์โหลด Utildev Server  สำหรับ Visual studio  
  • ติดตั้ง และ ทำการ setup ตามคูมือที่ page บอกเอาไว้หลังติดตั้งเสร็จ คือ set debug โปรแกรม ให้ไปโหลด  Utildev Server แทน 
  • จบการแก้ไข 
อ้างอิงพื้นฐานการ ติดตั้งจาก : http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/how-to-setup-asp-net-v1-1-visual-studio-net-2003-projects-on-iis7-vista.aspx
เพิ่มเติม สำหรับบางคน อาจมีปัญหาในการติดตั้ง ในส่วนของ Debug program  ในส่วนของ Cassini ให้เข้าไป Set  ใน property ของ Solution  โดยตั้งค่าในส่วนของ

Configuration -> Debugging 


  1. Debug mode  ตั้งค่าเป็น Program 
  2. StartApplication :  ตั้งค่าเป็น ไฟล์  CassiniWebserver  กรณีของผมเป็น C:\Program Files (x86)\UltiDev\Cassini Web Server for ASP.NET 1.1\UltiDevCassinWebServer.exe
  3. Command Line Arguments:   ตั้งค่าเป็น  /run  "{ path application ที่เรากำลังพัฒนาอยู่  } 
  4. กด Apply 
  5. ทดสอบ Run  window จะ Prompt ถาม permission access network 
  6. Browser จะถูกเปิดออกมา พร้อมกับ Command-Line window  




















My site Article and Topic

Sothorn: CentOS 7 กับบางอย่างที่เปลี่ยนไป

24 July, 2014 - 00:45
หมวดหมู่: CentOS

ผมยังไม่ได้เล่น CentOS 7 เนื่องจากอินเทอร์เน็ต 384k อาศัยอ่านเอาตามเวบต่างๆ เจอความเปลี่ยนแปลงจาก CentOS 6.5 เลยเอามาบันทึกไว้ก่อน

# chkconfig httpd on  --> # systemctl enable httpd.service

# service httpd start --> # systemctl start httpd.service

# service httpd restart --> # systemctl restart httpd.service

 

 

Sothorn: Login ด้วย root บน GNOME Debian 7

19 July, 2014 - 00:45
หมวดหมู่: Debian

ส่วนตัวทำงานบนลีนุกซ์ ชอบ Login ด้วย root  เมื่อใช้ Debian 7 ทำงานเป็น Desktop มันไม่อนุญาตให้ Login ด้วย user root ในเมื่อชอบก็ต้องหาทางแก้  เมื่อเรา Login ด้วย user ทั่วไป ก็ใช้คำสั่ง

su -

แล้วแก้ไขไฟล์  /etc/pam.d/gdm3
comment หน้า บรรทัดนี้

#auth   required        pam_succeed_if.so user != root quiet_success

Logout จาก user ทั่วไป แล้ว Login ด้วย root ได้เลย
Share

Sothorn: การติดตั้ง CentOS 7 step by step screenshots

17 July, 2014 - 12:45

ด้วยความเร็วเน็ต 384k ไม่สามารถดาวน์โหลด CentOS 7 มาเล่นได้ดูของเพื่อนไปก่อน

Sothorn: ทำไม CentOS ชื่อไฟล์ CentOS 7.0-1406

17 July, 2014 - 12:45

CentOS 7.0-1406 introduces a new numbering scheme that we want to
further develop into the life of CentOS-7. The 0 component maps to the
upstream realease, whose code this release is built from. The 1406
component indicates the monthstamp of the code included in the release
( in this case, June 2014 ). By using a monthstamp we are able to
respin and reissue updated media for things like container and cloud
images, that are regularly refreshed, while still retaining a
connection to the base distro version.

เป็นการนำเอาเลขของเดือนมาใช้ 1406 ก็หมายถึงเดือน มิถุนายน ปี 2014 ที่ RHEL ออกมานั่นเอง

Sothorn: CentOS 7.0-1406 DVD

17 July, 2014 - 12:45

CentOS7 ออกเมื่อ วันที่ 7 กรกฎาคมทีผ่านมา
สามารถดาวน์โหลดมาใช้งานได้
ไฟล์ ISO ที่มีให้ดาวน์โหลดมีความหมายดังนี้

List of images in this directory
================================

CentOS-7.0-1406-x86_64-DVD.iso
This DVD image contains all the packages that can be installed using the
installer. This is the recommended image for most users.

CentOS-7.0-1406-x86_64-NetInstall.iso
This is the network install and rescue image. The installer will ask from
where it should fetch the packages to be installed. This image is most
useful if you have a local mirror of CentOS packages.

CentOS-7.0-1406-x86_64-Everything.iso

This image contains the complete set of packages for CentOS 7. It can be
used for installing or populating a local mirror. This image needs a dual
layer DVD or an 8GB USB flash drive.

CentOS-7.0-1406-x86_64-GnomeLive.iso
CentOS-7.0-1406-x86_64-KdeLive.iso

These images are Live images of CentOS 7. Depending on the name they use the
respective display manager. They are designed for testing purposes and
exploring the CentOS 7 environment. They will not modify the content of your
hard disk, unless you choose to install CentOS 7 from within the Live
environment. Please be advised that you can not change the set of installed
packages in this case. This needs to be done within the installed system
using ‘yum’.

CentOS-7.0-1406-x86_64-livecd.iso
This is like the GnomeLive image mentioned above, but without packages such
as libreoffice. This image is small enough to be burned on a CD.