06 July 2013

เทคนิคการเขียนโปรแกรม 50 ข้อ

1.โปรแกรมแบบพอเพียง(ทำอะไรให้เล็กที่สุดเท่าที่เป็น ไปได้)
2.ทำสิ่งธรรมดาให้ง่าย ทำสิ่งยากให้เป็นไปได้
3.จงโปรแกรมโดยนึกว่าจะมีคนมาทำต่ออย่างแน่นอน
4.ระเบียบ กฏข้อบังคับ เชื่อมั่นไม่ได้แล้ว ถ้ามีเพียงหนึ่งโมดูลไม่ปฏิบัติตาม
5.ตัดสินใจให้ดีระหว่างความชัดเจน(clearance) กับ การขยายได้(extensibility)
6.อย่าเชื่อมั่น output จากโมดูลอื่น ถึงแม้เราจะเป็นคนเขียนเอง
7.ถ้าคนเขียนยังเข้าใจได้ยาก แล้วคนอ่านจะเข้าใจได้ยากกว่าแค่ไหน
8.ค้นหาข้อมูลสามวันแล้วทำหนึ่งวัน หรือจะทำสามวันแล้วแก้บั๊กตลอดไป
9.จงสร้างเครื่องมือ ก่อนทำงาน
10.อย่าโทษโมดูลอื่นก่อน โดยเฉพาะถ้าโมดูลอื่นเป็น OS และ Compiler
11.พยายามทำตามกฏ แต่ถ้ามีข้อยกเว้น ต้องมีอย่างหลีกเลี่ยงไม่ได้ แล้วประกาศและตะโกนให้ดังที่สุด
12.High cohesion Loose coupling. (ยึดเกาะให้สูงสุดในโมดูล และ เกาะเกี่ยวกับโมดูลอื่นให้น้อยที่สุด)
13.ให้สิ่งที่เกี่ยวข้องกันยิ่งมากอยู่ไกล้กันมากที่ สุด
14.อย่าเชื่อโดยไม่พิสูจน์
15.อย่าลองทำแล้วคอมไพล์ดู ถ้าเราไม่ได้คาดหวังผลลัพธ์อะไรไว้ (อย่างเช่นปัญหา index off by one)
16.จงกระจายความรู้เพราะนั่นคือการทำ Unit Test ระดับล่างสุด(ระดับความคิด)
17.อย่าเอาทุกอย่างใส่ใน UI เพราะ UI คือส่วนที่ Unit Test ได้ยาก
18.ทั้งโปรเจ็คต์ควรไปในทางเดียวกันมากที่สุด( Consistency )
19.ถ้ามีสิ่งที่ดีอยู่แล้วจงใช้มัน อย่าเขียนเอง ถ้าจำเป็นต้องเขียนเอง ให้ศึกษาจากข้อผิดพลาดในอดีตก่อน
20.อย่ามั่นใจเอาโค้ดไปใช้จนกว่าจะ test อย่างเพียงพอ
21.เอาโค้ดที่ test ไว้ที่เดียวกันกับโค้ดที่ถูก test เสมอ
22.ทุกครั้งที่แก้ไขโค้ดให้ run unit test ทุกครั้ง
23.จงใช้ Unit Test แต่อย่าเชื่อมั่นทุกอย่างใน Unit Test เพราะ Unit Test ก็ผิดได้
24.ถ้าต้องทำอะไรที่ซ้ำกันมากกว่าหนึ่งครั้ง ก็เพียงพอแล้วที่จะแยกโค้ดส่วนนั้นออก
25.ทำให้ใช้งานได้ก่อน แล้วค่อย optimize และถ้าไม่จำเป็น อย่าoptimize
26.ยิ่งประสิทธิภาพเพิ่ม ความเข้าใจง่ายจะลดลง
27.ใช้ Design Pattern ที่เป็นที่รู้จักจะได้คุยกับใครได้รู้เรื่อง
28.อย่าเก็บไว้ทำทีหลัง ถ้ายังไงก็ต้องทำ
29.MutiThreading ไม่ใช่แค่การเพิ่มประสิทธิภาพ แต่มันมาพร้อมกับ Concerency, Deadlock, IsolationLevel, Hard to debug, Undeterministic Errors.
30.จงทำอย่างโจ่งแจ้ง
31.อย่าเพิ่ม technology โดยไม่จำเป็น เพราะนั่นทำให้โปรแกรมเมอร์ต้องวุ่นวายมากขึ้น
32.จงทำโปรเจ็คต์ โดยคิดว่าความเปลี่ยนแปลงเกิดขึ้นได้เสมอ
33.อย่าย่อชื่อตัวแปรถ้าไม่จำเป็น เดี๋ยวนี้ IDE มันช่วยขึ้นเยอะแล้วไม่ต้องพิมพ์เองแค่ dot มันก็ขึ้นมาให้เลือก
34.อย่าใช้ i, j , k , result, index , name, param เป็นชื่อตัวแปร
35.ทำโค้ดที่ต้องสื่อสารผ่านเครือข่ายให้คุยกันน้อยท ี่สุด
36.แบ่งแยกดีดี ระหว่าง Exception message ในแต่ละเลเยอร์ ว่าต้องการบอกผู้ใช้ หรือ บอกโปรแกรมเมอร์
37.ที่ระดับ UI ต้องมี catch all exception เสมอเพื่อกรอง Exception ที่ลืมดักจับ
38.ระวัง คอลัมภ์ allow null ใน database ดีดี ค่า มัน convert ไม่ได้
39. อย่าลืมว่า Database เป็น global variable ประเภทหนึ่ง แต่ละโปรแกรมที่ติดต่อเปรียบเหมือน MultiThreading ดังนั้นกฏของ Multithreading ต้องกระทำเมื่อทำงานกับ Database
40.ระวังอย่าให้ logic if then else ซ้อนกันมากมาก เพราะสมองคนไม่ใช่ CPU จินตนาการไม่ออกหรอกว่ามันอยู่ตรงไหนเวลา Debug (ถ้ามากกว่าสามชั้นก็ลองคิดใหม่ดูว่าเขียนแบบอื่นได้ มั้ย)
41.ระวังอย่าให้ลูปซ้อนกันมากมาก ไม่ใช่แค่เรื่องความเร็วอย่างเดียว เวลา Debug เราคิดตามมันไม่ได้ (ถ้าเกินสามชั้นก็ไม่ไหวแล้ว)
42. อย่าใช้ Magic Number ใน Code เช่น if( controlingValue == 4 ) เปลี่ยนไปใช้ Enum ดีกว่า เป็น if( controlingValue == ControllingState.NORMAL ) เข้าใจง่ายกว่ามั้ย
43.ถ้าจะเปรียบเทียบ string Trim ซ้ายขวาก่อนเสมอ
44.คิดหลายๆ ครั้งก่อนใช้ Trigger
45.โปรแกรมเมอร์คือห่วงโซ่สุดท้ายของมลพิษทางความซับ ซ้อน ดังนั้นหา project leader ดีดีแล้วกัน
46. มนุษย์ฉลาดกว่าคอมพิวเตอร์ การเขียนโปรแกรมก็คือการสอนให้คอมพิวเตอร์ฉลาดได้เหม ือนเรา (มนุษย์ฉลาดกว่าคอมพิวเตอร์จริงๆนะ)
Reply With Quote
47. จงควบคุมคอม มิใช่ให้คอมควบคุมเรา เราต้องสั่งให้คอมทำงาน ไม่ใช่ให้เราทำงานตามคอมสั่ง
48. อย่าปล่อยให้ข้อจำกัดของคอม มาจำกัดความคิดของเรา [คอมไม่ดีเปลี่ยนเครื่องเลย 55+]
49. ยอมรับความคิดของผู้อื่น แต่อย่าออกจากกรอบของตนเอง
50. หมั่น Save โปรแกรมไว้อย่าสม่ำเสมอ ก่อนที่จะไม่มีโอกาส Save [จะให้ดี Save เป็นแต่ละ Version เลย]
-----------------------------------------------------------------------------------------------------------
ที่มา
-----------------------------------------------------------------------------------------------------------

05 April 2013

เรื่องที่ต้องรู้ก่อนจดโดเมน


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

- ควรคัดสรรเลือกชื่อโดเมนก่อนตัดสินใจจดชื่อโดเมน เพราะเมื่อ จดชื่อโดเมนแล้ว จะไม่สามารถเปลี่ยนแปลงชื่อโดเมนที่จดไปแล้วได้ ต้องจดใหม่ ก็คือเสียเงินจดโดเมนเพิ่มอีก 1 โดเมน
- เลือกผู้ให้บริการจดโดเมนที่เชื่อถือได้ เพราะผู้ดูแลโดเมนให้คุณ จะต้องเป็นผู้ต่ออายุโดเมนให้เมื่อโดเมนหมดอายุ นอกจากนี้ เค้ายังสามารถเข้าไปจัดการแก้ไขโดเมนของคุณได้เช่นกัน
- ผู้ให้บริการ ควรจดชื่อโดเมนโดยใช้ชื่อคุณเป็นเจ้าของโดเมน 100% ไม่เช่นนั้นคุณจะไม่สามารถจัดการโดเมนของคุณเองได้ ซึ่งอาจเกิดปัญหา เมื่อคุณต้องการเปลี่ยนผู้ดูแลโดเมนของคุณเป็นเจ้าอื่น(การเปลี่ยนผู้ดูแลโดเมน ก็คือ การย้ายโดเมน หรือ Transfer Domain) ทั้งนี้ คุณควรเก็บ Username และ Password สำหรับโดเมนไว้เป็นความลับ หากคุณจ้างผู้อื่นทำเว็บไซต์ ให้แค่ Username และ Password สำหรับ FTP ก็พอ
- ในการจดโดเมน ต้องใช้ข้อมูลส่วนตัวของเจ้าของโดเมนคือ ชื่อ นามสกุล, ที่อยู่, รหัสไปรษณีย์, อีเมล, เบอร์โทรศัพท์ ทั้งหมดเป็นภาษาอังกฤษ ซึ่งแนะนำให้กรอกข้อมูลให้ถูกต้องและครบถ้วน หากคุณต้องการทราบว่า เจ้าของโดเมนคือใคร สามารถเช็คได้ที่เว็บไซต์ http://www.whois.com จะปรากฏรายละเอียดเจ้าของโดเมน หากคุณเป็นเจ้าของโดเมนแล้ว และไม่ต้องการเปิดเผยรายละเอียดในส่วนนี้ สามารถแจ้งผู้ให้บริการให้ปกปิดข้อมูลส่วนนี้ได้

หลังจากจดโดเมน
อย่าลืมเข้าไปเช็คว่าโดเมนนั้นเป็นของคุณ 100% หรือไม่

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

การย้ายโดเมน
การจดโดเมน จะต้องมีผู้ให้บริการเป็นผู้จดโดเมนให้ ซึ่งผู้ให้บริการมีหลายเจ้า หากต้องการเปลี่ยนผู้ให้บริการก็สามารถทำได้ โดยทำตามขั้นตอนดังนี้
1. ตรวจสอบก่อนว่า โดเมนที่จะย้าย ยังไม่หมดอายุ และ ควรย้ายโดเมนก่อนถึงวันหมดอายุไม่น้อยกว่า 30 วัน และโดเมนนั้นคุณเป็นเจ้าของ 100%
2. ขอ Transfer Code หรือ Auth Code จากผู้ให้บริการรายเดิม หรือในบางกรณีเจ้าของโดเมน login เข้าไปดูในระบบจัดการโดเมนเองก็ได้
3. แจ้งชื่อโดเมนที่ต้องการย้าย และ Transfer Code ไปยังผู้ให้บริการรายใหม่ทำการย้าย
4. หลังจากผู้ให้บริการรายใหม่ดำเนินการย้ายโดเมนให้แล้ว จะมีอีเมลแจ้งมายังเจ้าของโดเมน ให้คลิก Approve คำขอย้ายโดเมน
5. การดำเนินการย้ายโดเมนจะใช้เวลาประมาณ 5 วัน
การย้ายโดเมนจะต่ออายุโดเมนไปในตัวเพิ่มอีก 1 ปี โดยอัติโนมัติ
---------------------------------------------------------------------
credit : http://www.thaihostclub.com
---------------------------------------------------------------------

01 April 2013

wordpress 2 ภาษา


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

ขั้นตอนการติดตั้งปลั๊กอิน qTranslate
1.ไปโหลด Plugin มาก่อนที่ http://wordpress.org/extend/plugins/qtranslate/ หรือ http://www.qianqin.de/qtranslate/
2.เข้าระบบ Admin แล้วเลือก Plugins (ที่อยู่ทางด้านบนขวาของจอ) แล้วเลือก Add New
3.จากนั้นเลือกที่แถบ Upload
4.กด Browse เพื่อเลือกไฟล์ที่โหลดมา แล้วกด Install Now
ทำการ Active เสร็จสิ้นขั้นตอนการติดตั้งครับ


  • ขั้นตอนการติดตั้งปลั๊กอิน qTranslate

  1. ไปโหลด Plugin มาก่อนที่ http://wordpress.org/extend/plugins/qtranslate/ หรือhttp://www.qianqin.de/qtranslate/
  2. เข้าระบบ Admin แล้วเลือก Plugins (ที่อยู่ทางด้านบนขวาของจอ)
  3. แล้วเลือก Add New
  4. จากนั้นเลือกที่แถบ Upload
  5. กด Browse เพื่อเลือกไฟล์ที่โหลดมา แล้วกด Install Now
  6. ทำการ Active   ซะ
  7. เสร็จสิ้นขั้นตอนการติดตั้ง
  • การเพิ่มภาษาใน qTranslate

  1. เข้าไปที่ Setting > Languages
  2. เลื่อนลงไปจนเจอส่วน Add Language
  3. ตัวอย่างสำหรับการตั้งค่าภาษาไทย
    qTranslate_add_lang.jpg
    - Language Code : TH
    - Flag : th.png
    - Name : Thailand
    - Locale : th
    - Date Format : %A %B %e%q, %Y
    - Time Format : %I:%M %p
    - Not Avaliable Message : Sorry, this entry is only available in %LANG
  4. กดปุ่ม  Add Language
  • การตั้งค่าให้ภาษา Default

  1. เข้าไปที่ Setting > Languages
  2. เลื่อนดูส่วน Generalที่หัวข้อ Default Langage / Order
  3. เลือกภาษาที่ต้องการใช้เป็นภาษาหลัก
    qTranslate_set_order_lanf.jpg
  4. กด Save ด้านล่าง
  • การใช้งาน qTranslate  สำหรับเว็บหลายภาษา

  1. เมื่อทำการเพิ่ม post / page
  2. ในส่วน Title : ใส่หัวข้องของเนื้อหาโดยเลือกใส่ตามช่องของภาษาที่ต้องการ
    qTranslate_title.jpg
  3. ในส่วนเนื้อหา : ให้กดเลือกที่อักษรย่อของภาษาที่ต้องการใส่เนื้อหา
    qTranslate_detail.jpg
  4. ในส่วน excerpt : ให้กดเลือกที่ธงของภาษาที่ต้องการใส่เนื้อหาก่อน
    qTranslate_excerpt.jpg
  • การเพิ่ม Widget ในการแสดงลิงก์เปลี่ยนภาษา

  1. เข้าไปที่ Appearance > Widget
  2. ลากกล่อง qTranslate Language Chooser ไปวางในส่วนที่ต้องการ
    qTranslate_widget.jpg

วิธีเปลี่ยน WordPress Thai เป็น English หรือ English เป็นไทย


ถ้าคุณติดตั้ง WordPress ภาษาไทย (หรือภาษาอื่น ๆ) ไปแล้ว และต้องการเปลี่ยนมาใช้ WordPress English ซึ่งเป็น Default ของ WordPress ในกรณีที่มี WordPress English Version ใหม่กำลังรอให้ Update อยู่ (ซึ่งมี Versionใหม่ให้อัพเดทอยู่เรื่อย ๆ) ให้ทำดังนี้

1) ทำ Backup ฐานข้อมูลของคุณก่อน สิ่งนี้สำคัญมาก ต้องทำนะ ใช้ปลั๊กอินที่เป็นที่นิยมคือ  WordPress Database Backup

2) ที่เมนู Dashboard ไปที่ Updates แล้วคลิก WordPress English Version เพื่อทำการอัพเดทไฟล์

3) หลังจากอัพเดทไฟล์เสร็จเรียบร้อยแล้ว ให้ปิดหน้าจอเว็บไซต์ทั้งหมดของคุณรวมทั้งหน้า Admin ด้วย

4) เปิด FileZilla หรือโปรแกรม FTP อื่นที่คุณใช้ แล้วไปที่ /domains/your web site/public_html แล้วเปิดไฟล์ wp-config.php เพื่อแก้ไข

5) ค้นหาบรรทัดต่อไปนี้
สำหรับ thai เป็น english
define (‘WPLANG’, ‘th’); แก้เป็น define('WPLANG','');
สำหรับ english เป็น thai แก้เป็น efine (‘WPLANG’, ‘th’);

6) กด Save แล้ว Upload ไฟล์ขึ้น Server แค่นี้ก็เสร็จเรียบร้อยแล้ว ลองเปิดเว็บไซต์ตรวจสอบ จะเห็นว่าหน้าตาของเว็บไซต์ รวมถึง Dashboard จะกลายเป็นภาษาอังกฤษ(ไทย)ทั้งหมด

สำหรับคนที่ต้องการ upgrade wordpress เป็นเวอร์ชั่นใหม่หรือว่าเปลี่ยนภาษาควรจะสำรองไฟล์ wp-config.php และ โฟลเดอร์ wp-content ไว้ก่อนนะครับ เพื่อป้องกันปัญหา


04 March 2013

การค้นหา Object ใน Active Directory


การค้นหา Object โดยใช้คำสั่ง ds commandline
คำสั่ง DS ต่าง ๆ ที่เกี่ยวข้องเน้นช่วยเหลือในการทำงานได้รวดเร็วกว่า GUI (ในกรณีที่มี Object มาก ๆ การใช้ GUI จะช้าและบางครั้งเสียเวลารอ Load หน้าจอ refresh เป็นอย่างมาก) จากประสบการณ์ของผู้เขียนในการดูแล user กว่า 20000 คนใน Domain เดียวกัน
การใช้ Command ต่าง ๆ เหล่านี้มีประโยชน์มาก ๆ เลยครับ
dsquery: Displays objects matching search criteria
dsquery เป็นคำสั่งที่ใช้ค้นหา Object ใน Active Directory ครับ อย่างที่เกริ่นไว้ คือถ้า Object เราเยอะจริง ๆ ถ้ามัวแต่ไปเปิดที่ AD Users and Computers จะต้องรอนานมากกว่าจะ Refresh User ทั้งหมดมาให้ดูได้ ถ้าเราต้องการค้นหา User ให้ได้ตรงกับที่ต้องการ ก็ใช้ Dsquery สะดวกดีครับ (ดีกว่าไปไล่เปิดดูทีละ OU ในเครื่องมือ GUI Base)
ตัวอย่างจากคำสั่งด้านล่างคือผมต้องการค้นหา User ชื่อ Suttipan เพื่อนำไป Assign Drive Logon ผ่าน Network แต่ผมไม่ทราบว่า user นี้อยู่ใน OU ไหน จะให้เปิดดูทีละอันหรือใช้ Find ใน AD Users & Computers ก็จะเสียเวลาโหลดนานกว่า Command Line ง่าย ๆ ตัวอย่างด้านล่างนี้ครับ

ใช้ Dsquery เพื่อ List รายชื่อ User ทั้งหมดใน Active Directory
คำสั่ง = dsquery user
จะแสดงผลลัพท์ User ทั้งหมดใน Database แต่มีข้อจำกัดคือจะแสดงผลแค่ 100 รายการเท่านั้น หากมี User มากกว่านี้มันจะไม่แสดงผลนะครับ
ตัวอย่าง สำหรับการใช้งานโดยให้แสดงผลทั้งหมดคือ
Dsquery user –limit 20000 (คือให้ list User มาทั้งหมดเลยมากสุดไม่เกิน 20000 Users)
ส่วนใหญ่ผมจะให้ List แล้ว Export ออกมาเป็น File เพื่อนำไปใช้งานต่อนะครับจึงใช้รูปแบบเต็ม ๆ ประมาณนี้
Dsquery user –limit 20000 > user.txt & user.txt

ตัวอย่างคำสั่งนี้คือให้ list ออกมาเป็นไฟล์ .txt แล้วลองเปิดขึ้นมาดูก่อนครับ
image thumb73 การค้นหา Object ใน Active Directory โดยใช้คำสั่ง ds commandline
ตัวอย่างการใช้งานเพื่อค้นหา User
dsquery user -name “*suttipan”
image thumb74 การค้นหา Object ใน Active Directory โดยใช้คำสั่ง ds commandline
จะเห็นได้ว่ามันแสดงถึง User = Suttipan อยู่ภายใต้ OU = Management ครับ เพียงเท่านี้เราก็สามารถใช้ GUI ในการเข้าไป Assign Drive Logon ได้อย่างถูกต้องถึงตัว User แล้วครับ
(ถ้า User เป็นหลัก 20000 แบบผู้เขียนเคยทำงานมา จะขอยืนยันอีกครั้งครับว่าใช้ dsquery รวดเร็วกว่าเป็นอย่างมาก)
dsget: ใช้เพื่อดูข้อมูล Properties ของ Object
dsget เป็นการใช้ค้นหา ข้อมูลของ User นั้น ๆ ครับ เช่น ผมต้องการรู้ว่า User = Suttipan นั้นมีที่ทำงานระบุไว้ใน Active Directory ว่าที่ไหน (Office) ผมก็สามารถใช้รูปแบบคำสั่งต่อไปนี้ได้เลยครับ
dsget user cn=suttipan,ou=Management,dc=demo,dc=local –office
image thumb75 การค้นหา Object ใน Active Directory โดยใช้คำสั่ง ds commandline
ตัวอย่าง ข้อมูลของ User ที่ค้นหาได้จาก dsget user /? ครับ
image thumb76 การค้นหา Object ใน Active Directory โดยใช้คำสั่ง ds commandline
การใช้คำสั่งผสมระหว่าง Dsquery และ dsget
เราสามารถเชื่อมต่อคำสั่งโดยใช้เครื่องหมายไปป์ได้ครับ | (เครื่องหมาย = | )
ตัวอย่างนี้เป็นคำสั่งที่ใช้ค้นหา User ในระบบโดยที่รู้จักแต่ชื่อ และเราขี้เกียจพิมพ์คำสั่ง ในรูปแบบ DN ยาว ๆ ก็ใช้คำสั่งนี้ครับ
ตัวอย่าง ดูว่า user = Engineer02 ถูก Disable ไว้หรือเปล่า
รูปแบบคำสั่ง = dsget user –name engineer02 | dsget user –disabled
image thumb77 การค้นหา Object ใน Active Directory โดยใช้คำสั่ง ds commandline

11 February 2013

php mysql คำสั่งในการยกเลิกคีย์หลักในตารางฐานข้อมูล

php mysql คำสั่งในการยกเลิกคีย์หลักในตารางฐานข้อมูล


ALTER TABLE `ชื่อตาราง` DROP PRIMARY KEY, ADD PRIMARY KEY(`ฟิลด์ใหม่ที่ต้องการ`);

09 February 2013

Linux Ubuntu set ip address and dns

1. Hostname
nano /etc/hostname

2. Check IP Address
ifconfig -a

3. Edit Interface
nano /etc/network/interfaces

# The loopback network interface auto lo iface lo inet loopback

# The primary network interface auto eth0
iface eth0 inet static
address 192.168.1.30
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1


4. Edit DNS

nano /etc/resolv.conf 
search test.com
nameserver 192.168.1.1
nameserver 203.144.207.29
nameserver 203.144.207.49


 6 Restart Interface 
/etc/init.d/networking restart


 7. Test Ping to Internet 

ping www.google.com

วิธี Configure IP Address บน Linux และ คำสั่งเกี่ยวกับ Network ที่น่าสนใจ



วิธีการกำหนด IP Addressให้ network adapter

Linux มีไฟล์หนึ่งที่ชื่อว่า /etc/network/interfaces ซึ่งใช้เก็บ configuration ของ network interfaces แต่ละอันในเครื่อง ดังนั้นหากเราจะ Configure IP Address ก็จะต้องแก้ไขไฟล์ดังกล่าว
วิธีการกำหนด IP Address โดยทั่วไปก็มีอยู่ 2 วิธี ได้แก่:
  1. Static IP Configuration - IP Address จะถูกกำหนดโดยผู้ดูแลระบบ ซึ่งมีวิธีการ configure ดังนี้:
    • เปิด network configuration file (/etc/network/interfaces) ด้วย Text Edition ที่คุณถนัด
      $ sudo vim /etc/network/interfaces
    • เพิ่ม Static IP Configuration สำหรับ network adapter สมมติว่าค่าต่าง ๆ ที่ผมต้องการคือ:
      • network adapter คือ eth0
      • IP Address คือ 192.168.0.70
      • Netmask คือ 255.255.255.0
      • Network คือ 192.168.0.0
      • Broadcast IP Address คือ 192.168.0.255
      • Gateway คือ 192.168.0.1
      ผมก็เติมบรรทัดเหล่านี้เข้าไปในไฟล์ /etc/network/interfaces
      iface eth0 inet static address 192.168.1.70 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1
    • บันทึกไฟล์และปิด Text Editor แล้วจึง restart networking services
      $ sudo /etc/init.d/networking restart
  2. DHCP network configuration - IP Address จะถูกกำหนดโดย DHCP Server ที่อยู่ใน network ซึ่งมีวิธีการ configure ดังนี้:
    • เปิด network configuration file (/etc/network/interfaces) ด้วย Text Edition ที่คุณถนัด
      $ sudo vim /etc/network/interfaces
    • เพิ่ม DHCP network Configuration สำหรับ network adapter เข้าไปในไฟล์ /etc/network/interfaces
      iface eth0 inet dhcp
    • บันทึกไฟล์และปิด Text Editor แล้วจึง restart networking services
      $ sudo /etc/init.d/networking restart

วิธีการกำหนด DNS Server

เราสามารถเพิ่มลด DNS Server ที่เราใช้ในการ look-up IP Address ได้โดยการแก้ไขไฟล์ /etc/resolv.conf
สมมติว่าคุณต้องการเพิ่ม 203.144.207.49 เป็น Primary DNS Server
  • เปิดไฟล์ /etc/resolv.conf ด้วย Text Edition ที่คุณถนัด
    $ sudo vi /etc/resolv.conf
  • เพิ่มบรรทัดต่อไปนี้เข้าไปก่อนหน้าบรรทัดอื่น ๆ ที่ขึ้นต้นด้วยคำว่า nameserver
    nameserver 203.144.207.49
หมายเหตุ: ในการ resolve IP Address นั้นจะเริ่มจาก name server ตัวแรกที่ปรากฎในไฟล์ก่อน แล้วค่อยไปค้นหาใน name server ตัวต่อ ๆ ไป

วิธีการ Resolve IP address

$ host www.yannarak.net

วิธีการจับคู่ IP Address กับ Hostname ด้วย Hosts file

ในบางกรณี คุณไม่สามารถใช้ DNS Server ในการ resolve IP ได้ ยกตัวอย่างเช่น localhost เป็นต้น ดังนั้นในระบบปฎิบัติการจึงต้องมีวิธีการที่ใช้ในการจับคู่ระหว่าง IP Address กับ Host name แบบ static โดยไม่ใช้ DNS Server ด้วย สำหรับ Linux มีไฟล์ที่ชื่อว่า /etc/hosts ซึ่งใช้ในการทำงานดังกล่าว
ตัวอย่างไฟล์/etc/hosts
127.0.0.1 localhost pegasus 192.168.1.35 www.mywebsite.com
รูปแบบของไฟล์ /etc/hosts คือ IP address เป็นฟิลด์แรก และ ฟิลด์ต่อ ๆ ไป คือ hostname ที่จะจับคู่กับ IP ดังกล่าว แต่ละฟิลด์จะคั่นด้วย white-space character ดังนั้น จากไฟล์ตัวอย่าง เราสามารถแทน IP 127.0.0.1 ได้ด้วย 2 hostname คือ localhost และ pegasus ส่วน IP 192.168.1.35 เราสามารถแทนได้ด้วย hostname เพืยงอันเดียวคือ www.mywebsite.com เป็นต้น

วิธีการแสดงสถานะของ network adapter

หลังจากที่เราได้ configure IP address ให้กับ network adapter แล้ว หากเราต้องการตรวจสอบสถานะของ network adapter นั้น ๆ ตรงตามที่เราต้องการหรือไม่เราก็สามารถตรวจสอบได้โดยใช้ คำสั่ง ifconfig ดังตัวอย่างต่อไปนี้:
$ ifconfig eth0

วิธีการเปลี่ยน IP Address และ Netmask

คำสั่ง ifconfig นอกจากจะใช้ในการแสดงสถานะของ network adapter แล้ว ยังสามารถใช้ในการเปลี่ยน IP Address และ Netmask ของ network adapter ได้อีกด้วย
สมมติว่าเราต้องการเปลี่ยน IP Address ของ eth0 ให้เป็น 10.10.13.64 และ Netmask เป็น 255.255.0.0 ก็ทำได้ด้วยคำสั่งต่อไปนี้:
$ sudo ifconfig eth0 10.10.13.64 netmask 255.255.0.0 up

วิธีการเปิด/ปิด การทำงานของ network adapter

นอกจากนี้ คำสั่ง ifconfig ก็ยังเป็นคำสั่งที่ใช้ในการเปิด/ปิด network adapter อีกด้วย
คุณสามารถเปิดการใช้งาน network adapter ด้วยคำสั่ง:
$ sudo ifconfig eth0 up
หรือ
$ sudo ifup eth0
คุณสามารถปิดการใช้งาน network adapter ด้วยคำสั่ง:
$ sudo ifconfig eth0 down
หรือ
$ sudo ifdown eth0

วิธีการแสดง routing table

คุณสามารถใช้คำสั่งต่อไปนี้ในการแสดง routing table ได้
$ /sbin/route
หรือ
$ /sbin/route -n
ตัวอย่างผลลัพธ์ของคำสั่ง route

Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

วิธีการกำหนด Default Gateway

$ sudo route add default gw 172.16.236.0
ถ้าหากเครื่องที่คุณต้องการกำหนด Default Gateway ได้ถูกกำหนด Default Gateway ไว้แล้วคุณต้องลบ route สำหรับ Default Gateway อันเดิมก่อนด้วยคำสั่งต่อไปนี้ก่อนที่จะเรียกคำสั่งด้านบน
$ sudo route del default

วิธีการแสดงรายการ Active Internet Connections (ทั้ง server และ connection ที่เชื่อมต่อเรียบร้อยแล้ว)

$ netstat -nat

วิธีการแสดงว่า Port อะไรกำลังเปิดอยู่บ้าง

$ sudo netstat -tulp
หรือ
$sudo netstat -tulpn

วิธีการแสดงข้อมูลสถิติของแต่ละ network adapter

$sudo netstat -i

สำหรับ linux suse ไฟล์ที่เก็บสำหรับ set ip อยู่ที่
/etc/sysconfig/network/ifcfg-eth0

สำหรับแก้ไข default gate หรือไปแก้ที่ network settings แท็บ menu Routing
/etc/sysconfig/network/routes
*รูปแบบ
*default 172.16.1.1 255.255.255.0 eth0

สำหรับแก้ไข DNS
/etc/resolv.conf
*nameserver xxx.xxx.xxx.xxx

-----------------------------------------------------------
credit : http://www.yannarak.com/node/354
---------------------------------------------------------------------