วันจันทร์ที่ 25 กรกฎาคม พ.ศ. 2554

บทที่ 4 ลิงค์ลิสต์

ลิงค์ลิสต์
วัตถุประสงค์เชิงพฤติกรรม (Behavioral Objectives)
หลังจากศึกษาจบบทเรียนนี้แล้ว นักศึกษาจะมีความสามารถดังนี้
(After studying this chapter, you will be able to)
  1. ศึกษาข้อมูลลิงค์ลิสต์
  2. แสดงตัวอย่างการปฏิบัติการพื้นฐานของลิงค์ลิสต์
  3. แสดงตัวอย่างลิงค์ลิสต์ทาเดียว
  4. แสดงตัวอย่างลิงค์ลิสต์วงกลม
  5. ปฏิบัติการลิงค์ลิสต์สองทาง
  6. ปฏิบัติการลิงค์ลิสต์หลายทาง
  7. จัดบอร์ดเชิงปฏิบัติการ “โครงสร้างข้อมูลลิงค์ลิสต์”
  8. สนทนาเชิงปฏิบัติการ “ลิงค์ลิสต์วงกลม”
  9. อธิบายคำศัพท์ได้ 12 คำ
โครงสร้างข้อมูลลิ้งค์ลิสต์
                วิธีแก้ปัญหาในการย้ายข้อมูลที่พบในการจัดเก็บที่มีรูปแบบเรียงตามลำดับ(Sequential)เปลี่ยนมาใช้รูปแบบไม่เรียงตามลำดับ (Non-sequential)ซึ่งรูปแบบการเรียงตามลำดับจะมีสมาชิกเรียงต่อเนื่องติดกันในทางตรรกะ (Logical) และทางกายภาพ(Physical) เป็นแบบเดียวกัน แต่รูปแบบไม่เรียงตามลำดับสมาชิกต่อเนื่องติดกันในทางตรรกะ ส่วนทางกายภาพไม่จำเป็นต้องเหมือนกัน โดยในทางตรรกะจะแสดงด้วยแต่ละสมาชิกมีการชี้ (Point) ต้อไปยังสมาชิกตัวถัดไป สมาชิกทุกตัวในรายการจึงถูกเชื่อมต่อ (Link) เข้าด้วยกัน ดังรูปที่ 6.1 เป็นรายการเชื่อมต่อหรือเรียกว่าลิ้งค์ลิสต์ (Linked List) มีสมาชิก N ตัว แต่ละสมาชิกเรียกว่าโหนด (Node)

                จากรูปที่ 6.1 มีตัวแปรพอยน์เตอร์ First ชี้ไปยังโหนดแรกของรายการ แต่ละโหมดมีตัวเชื่อมเป็นพอยน์เตอร์ที่ชี้ไปยังโหนดถัดไปโดยโหนดสุดท้ายมีค่าเป็น NULL แสดงให้ทราบว่าไม่ได้ชี้ไปยังโหมดถัดไป แต่ละโหนดเป็นโครงสร้างข้อมูลเรคคอร์ด ประกอบด้วยสองส่วน คือ
                1.ส่วนเก็บข้อมูล (Info) ใช้เก็บข้อมูลข่าวสารที่มีโครงสร้างข้อมูลเบื้องต้นหรือเรียบง่าย
                2.ส่วนการเชื่อมต่อ (Next) เป็นตัวชี้หรือพอยน์เตอร์เก็บค่าแอดเดรสใช้อ้างไปยังโหนดถัดไปในหน่วยความจำ
                สำหรับในทางกายภาพของลิ้งค์ลิสต์ แต่ละดหนดไม่จำเป็นต้องอยู่ติดกัน อาจกระจัดกระจายไปยู่ส่วนไหนก็ได้ในหน่วยความจำโดยมีตัวเชื่อมชี้ไปยังตัวตำแหน่งของโหนดถัดไป
                ดังที่กล่าวในตอนต้นโครงสร้างสแตกและคิวมีการใช้อาร์เรย์ในการเก็บค่า สมาชิกทุกตัวจึงถูกจำกัดให้เป็นชนิดเดียวกัน(Homogenous) ซึ่งแก้ไขโดยเปลี่ยนมาใช้ลิ้งค์ลิสต์ที่มีโครงสร้างข้อมูลต่างกันได้ นอกจากนี้ยังมีผลดีในการปฏิบัติการแทรกข้อมูลหรือลบข้อมูล เพียงแต่ย้ายการชี้ของตัวแปรพอยน์เตอร์เท่านั้น ทำให้สมาชิกอื่นไม่มีผลกระทบ แต่ในกรณีค่าใช้จ่ายแล้วลิงค์ลิสต์จะสูงกว่าที่ต้องใช้พื้นที่เผิ่มมากขึ้นสำหรับส่วนการเชื่อมต่อเพื่อชี้ไปยังโหนดถัดไป และการค้นหาโหนดที่ต้องการใช้เวลามากเนื่องจากเป็นการค้นหาเรียงตามลำดับ (Sequential Search) ได้โหนดเดียวโดยเริ่มต้นที่โหนดแรกเสมอ

การปฏิบัติการพื้นฐานของลิงค์ลิสต์
                สิ่งสำคัญอย่างหนึ่งในการใช้โครงสร้างข้อมูลลิงค์ลิสต์ คือ ตัวแปรพอยน์เตอร์ (Pointer Variable) ซึ่งเก็บค่าเป็นตำแหน่งแอดเดรสในหน่วยความจำ (Memory Address) ในการปฏิบัติการกับลิ้งค์ลิสต์และให้มีความถูกต้องจะใช้ตัวแปรพอยน์เตอร์ในการจัดการเรื่องต่อไปนี้
1.ใช้ทดสอบกับค่า NULL
2.ใช้ทดสอบว่ามีค่าเท่ากับตัวแปรพอยน์เตอร์อื่น
3.กำหนดให้มีค่าเป็น NULL
4.กำหนดให้ชี้ไปยังโหนด
                ชุดปฏิบัติการของลิ้งค์ลิสต์ที่ทกวานร่วมกับตัวแปรพอยน์เตอร์ มีดังนี้
1.Node(P)  ส่งโหนดที่ถูกชี้ด้วยต้วแปรพอยน์เตอร์ P กลับมาให้
2.INFO(P) ส่งค่าในส่วนเก็บข้อมูลของโหนดที่ถูกชี้ด้วยตัวแปรพอยน์เตอร์ P กลับมาให้
3.Next(P)  ส่งพอยน์เตอร์ในส่วนการเชื่อมต่อขยองโหนดที่ถูกชี้ด้วยตัวแปรพอยน์เตอร์ P กลับมาให้
 
การแทรกโหนดไว้ในลิ้งค์ลิสต์
                อัลกอลิทึมในการแทรกโหนดใหม่เข้าไปไว้ในลิ้งค์ลิสต์ดังในตารางที่6.1

ตารางที่ 6.1 อัลกอริทึมการแทรกโหนดใหม่ลงในลิ้งค์ลิสสต์

        ตัวอย่างการแทรกโหนดใหม่ไว้ในลิ้งค์ลิสต์ โดยเริ่มต้นสร้างเป็นโหนด I ในหน่วยความจำกำหนดส่วนเก็บข้อมูลมีค่า L ส่วนการเชื่อมต่อมี่ค่าเป็น NULL ซึ่งมีตัวแปรพอยน์เตอร์ New  ชี้อยู่ ดังในรูปที่ 6.2 และมีลิงค์ลิสต์ที่ต้องการแทรกโหนดใหม่เข้ามาระหว่างโหนด 2 เป็นโหนดก่อนหน้า (Predecessor) และโหนด 3 เป็นโหนดถัดไป (Successor) ดังนั้นจึงกำหนดให้ตัวแปรพอยน์เตอร์ P ชี้ไปยังโหนด 2 และขั้นตอนในการแทรกประกอบด้วย

  1. Next(New) =Next (P) กำหนดให้ตัวชี้ของโหนด I เปลี่ยนไปชี้ยังโหนด 3 ซึ่งเป็นส่วนหลังของการแทรกโหนดใหม่ ในรูปที่ 6.3






  1. Next(P) =New กำหนดให้ตัวชี้ของโหนด 2 ที่มีตัวแปรพอยน์เตอร์ P ชี้อยู่เปลี่ยนไปชี้ยังโหนด I ที่มีตัวแปรพอยน์เตอร์ New ชี้อยู่ ในรูปที่ 6.4

        เมื่อการแทรกโหนดเสร็จสิ้น โหนด I จะมาต่อจากโหนดก่อนหน้าและแทนที่ลำดับของโหนดถัดไป การทำงานดังกล่าวจะมีเพียง 2 โหนดที่เดี่ยวขอ้งคือโหนดใหม่ I และโหนดที่ตัวแปรพอยน์เตอร์ P ชี้อยู่ ส่วนโหนดอื่นๆ ไม่ถูกเรียกใช้งานเรือเปลี่ยนแปลง
การลบโหนดออกจากลิ้งค์ลิสต์
            อัลกอริทึมในการลบโหนดออกจากลิ้งค์ลิสต์ดังในตารางที่ 6.2
ตารางที่ 6.2 อัลกอริทึมการลบโหนดออกจากลิ้งค์ลิสต์

           พิจารณาจากตัวอย่างลิ้งค์ลิสต์ในรูปที่ 6.5 ต่อไปนี้ เป็นอัลกอริทึมในการลบโหนดออกจากลิ้งค์ลิสต์ โดยเริ่มต้นให้ตัวแปรพอยน์เตอร์ P ชี้ไปโหนด 2 ซึ่งเป็นโหนดก่อนหน้าโหนด 3 ที่ต้องการลบ และชั้นตอนในการลบประกอบด้วย

             (a)       Q = Next (P) เป็นการใช้ตัวแปรพอยน์เตอร์ Q เป็นตัวช่วย กำหนดให้ชี้ไปยังโหนด 3 ที่ต้องการลบในรูปที่ 6.6
                  
(b)     Next(P) =Next (Q)  กำหนดให้ตัวชี้ของโหนด 2 ที่มีตัวแปรพอยน์เตอร์ P ชี้อยู่เปลี่ยนไปชี้ยังโหนด 4 ซึ่งเป็นโหนดถัดไปหลังโหนดที่ตัวแปรพอยน์เตอร์ Q ชี้อยู่ ในรูปที่ 6.7
 
       (c) Free (Q) หลังจากนั้นจึงปลดปล่อยโหนดที่ต้องการลบซึ่งมีตัวพอยน์เตอร์ Q ชี้อยู่ เพื่อคืนพื้นที่หน่วยความจำของโหนดที่ลบไปและนำไปใช้กับงานอื่นได้ (Reuse)ได้เป็น
รูปที่ 6.8

                ลำดับการทำงานดังกล่าวจะเห็นว่ามีเพียง 2 โหนดเท่านั้นที่มาเกี่ยวข้อง คือ โหนดที่ตัวแปรพอยน์เตอร์ P และ  Q ชี้อยู่ ส่วนโหนดอื่นๆ ไม่ถูกเรียกใช้งานหรือเปลี่ยนแปลง ยกเว้นในกรณีที่ตัวแปรพอยน์เตอร์ P ชี้ไปยังโหนดสุดท้ายไม่สามารถลบโหนดถัดไปได้ ซึ่งต้องมีการไขอัลกอริทึมโดยตรวจสอบก่อนจะทำการลบ
ลิ้งค์ลิสต์ทางเดียว
   โดยทั่งไปลิ้งค์ลิสต์จะมีโหนดที่มีส่วนการเชื่อมต่อชี้ไปยังโหนดถัดไปเพียงทางเดียว (Unidirectional)         ดังที่ผ่านมา เรียกว่าลิ้งค์ลิสต์ทางเดียว (Singly Linked List ) ซึ่งนอกจากจะมีชุดปฏิบัติการแทรกและลบโหนดแล้วยังมีอัลกอรึทึมในการจัดการลิงค์แบบอื่น ๆ ดังนี้
                1.การค้นหาแต่ละโหนด เป็นการเริ่มต้นที่โหนดแรกจากนั้นหาไปทีละโหนดตามลำดับที่เชื่อมต่อกันจนกว่าจะพบโหนดในลิงค์ลิสต์ดังในตารางที่ 6.3
ตารางที่ 6.3 อัลกอริทึมการวิ่งไปยังแต่ละโหนดในลิ้งค์ลิสต์

                2.การแทรกโหนดที่ตอนต้นลิ้งค์ลิสต์ เป็นการสร้างโหนดใหม่ขึ้นมาและกำหนดเป็นโหนดแรกของลิ้งค์ลิสต์ โดยโหนดใหม่นี้ ถ้าหากให้การลบโหนดเป็นที่โหนดแรกเช่นกัน ลักษณะการทำงานจะเป็นแบบเดียวกับโครงสร้างข้อมูลสแตก ดังในรูปที่ 6.9 และจำนวนค่าสมาชิกที่ใส่ลงไปก็ไม่จำกัดเหมือนกับการใช้อาร์เรย์

                3.การแทรกโหนดที่ตอนต้นลิงค์ลิสต์ เป็นการสร้างโหนดใหม่ขึ้นมาและนำไปต่อจากโหนดสุดท้ายของลิงค์ลิสต์ (Append) โดยโหนดสุดท้ายเดิมจะชี้ไปยังโหนดใหม่ที่กลายเป็นโหนดสุดท้ายแทน ถ้าให้การลบโหนดเป็นที่โหนดแรกทำให้ลักษณะการทำงานจะเป็นแบบเดียวกับโครงสร้างข้อมูลคิว ดังรูปที่ 6.10 โดยมีตัวแปรพอยน์เตอร์ Front ชี้ที่โหนดแรกและ Rear ชี้ที่โหนดสุดท้าย จำนวนค่าสมาชิกที่ใส่ลงไปก็ไม่จำกัดเหมือนกับการใช้อาร์เรย์

                4.การสลับด้านของรายการในลิ้งค์ลิสต์ เป็นการสร้างลิงค์ลิสต์ใหม่ให้รายการสลับด้านกับลิ้งค์ลิสต์ตัวเก่า โดยให้โหนดสุดท้ายเปลี่ยนป็นโหนดแรก และให้โหนดแรกกลายเป็นโหนดสุดท้าย
                นอกจากนี้ยังมีอัลกอรึทึมอื่น ๆ อีก เช่น การรวมสองลิ้งค์ลิสต์เป็นลิ้งค์ลิต์เดียว หรือแยกลิ้งค์ลิสต์เดียวเป็นสองลิ้งค์ลิสต์
               
ลิ้งค์ลิสต์วงกลม
                โดยปกติการใช้ลิ้งค์ลิสต์ เมื่อตัวแปรพอยน์เตอร์ P ชี้ไปยังโหนดหนึ่งจะไม่สามารถชี้กลับไปยังโหนดก่อนหน้าน้ำได้ วิธีการอย่างหนึ่งที่ทำให้สามารถวิ่งจากโหนดหนึ่งไปยังโหนดอื่น ๆ ได้ในลิงค์ลิสต์ โดยให้ตัวชี้ของโหนดสุดท้ายซึ่งเดิมเป็นค่า NULL ก็ให้ชี้กลับไปยังโหยดแรกแทน ดังในรูปที่ 6.11 และเรียกว่าลิงค์ลิสต์วงกลม (Circular Linked List)

                ปัญหาอย่างหนึ่งของการใช้ลิงค์ลิสต์วงกลมคือการวิ่งไปแต่ละโหนดจะเป็นการวนลูปที่ไม่รู้จบ แนวทางหนึ่งในการแก้ปัญหาคือ การเพิ่มโหนดหัรายการ (Head Node) เข้ามาในตอนต้นหรือตอนท้ายลิงค์ลิสต์วงกลม ดังในรูปที่ 6.12 ซึ่งมีความแตกต่างจากโหนดอื่น ๆ ที่มีข้อมูลพิเศษหรือค่าสัญลักษณ์ (Flag) บอกให้ทราบว่าเป็นโหนดหัวรายการ

                การวิ่งไปแต่ละโหนดจะทราบได้ว่าจุดสิ้นสุดอยู่ตรงไหนโดยใช้โหนดหัวรายการ นอกจากนี้การใช้โหนดหัวรายการ กับลิงค์ลิสต์ทางเดียวช่วยการทำงานมีประสิทธิภาพมากขึ้น เช่น ทุก ๆ โหนดในลิงค์ลิสต์จะมีโหนดก่อนหน้าเสมอ ทำให้อัลกอริทึมในการแทรกหรือลบโหนดมีความสะดวงและง่ายขึ้น เมื่อลิงค์ลิสต์วงกลมว่าง (Empty Circular Linked Lidt) จะมีเพียงโหนดหัวรายการเท่านั้นและมีพอยน์เตอร์ชี้กลับมาที่ตัวเอง ดังในรูปที่ 6.13
ตัวอย่างการใช้ลิ้งค์ลิสต์วงกลม
                ปัญหาโจเซฟ (Josephus Problem) เป็นที่รู้จักกันมากและนำลิงค์ลิสต์วงกลมมาใช้ในการแก้ปัญหา   เริ่มต้นเมื่อมีทหารกลุ่มหนึ่งถูกข้าศึกล้อมรอบอยู่ในเมืองซึ่งไม่สามารถต่อสูและหมดหวังที่จะชนะได้ แต่มีม้าเพียงตัวเดียวที่จะขี่พาหนีออกไปได้ กลุ่มทหารจึงตัดสินใจ เลือกคนที่โชคดีขี่ม้าหนีไปโดยการให้ทุกคนนั่งเป็นวงกลม  จากนั้นสุ่มเลือกชื่อทหารคนหนึ่งเพื่อเริ่มต้นและนับทหารทีละคนในวงกลมจนเท่ากับ  N  ก็ให้ทหารคนนั้นออกจากวงกลม  และเริ่มต้นนับแบบเดิมเมื่อถึงคนที่  N  ก็ออกจากวงกลมไปเรื่อย ๆ จนจำนวนทหารลดลงเหลือเพียงคนสุดท้ายเป็นผู้ที่ได้ขี่ม้าหนีไป  เช่น  รูปที่  6.14  มีทหารอยู่  5  คนมีการนับเพื่อคัดออกเท่ากับ  4  จากรูป  (a)  จะได้คนสุดท้ายคือคนที่เริ่มต้นนับในรูป  (e)

               
                ถ้าเราเป็นทหารคนหนึ่งควรจะยีนเป็นลำดับเท่าไรจึงจะเป็นคนสุดท้ายโดยมีทะหารทั้งหมด M คน และจำนวนการนับเพื่อคัดออกเท่ากับ N อัลกอริทึมในการปัญหาดังกล่าวจึงนำลิงค์ลิสต์วงกลมมาช่วยดังในตารางที่ 6.4 คือ โปรแกรม Linklist.c
ตารางที่ 6.4 ตัวอย่างโปรแกรม LinList.c

ลิ้งค์ลิสต์สองทาง
                ในบางครั้งการทำงานกับลิงค์ลิสต์อาจต้องการวิ่งไปยังโหนดต่าง ๆ ในลิงค์ลิสต์โดยการถอยกลับไปยังโหนดก่อนหน้าหรือลบแต่ละโหนด เพื่อห้เกิดประสิทธิภาพจึงนำลิงค์ลิสต์สองทาง (Doubly Linked List) มาใช้แทนลิงค์ลิสต์ทางเดียว ดังในรูปที่ 6.15 ซึ่งแต่ละโหนดประกอบด้วย 3 ส่วน คือ
                1.ส่วนเก็บข้อมูล (Info) ใช้เก็บข้อมูลข่าวสารที่มีโครงสร้างข้อมูลเบื้องต้นหรือเรียบง่าย
                2.ส่วนการเชื่อมต่อถัดไป (Next) เป็นตัวชี้หรือพอยน์เตอร์เก็บค่าแอดเดรสใช้อ้างไปยังโหนดถัดไปในหน่วยความจำ
                3.ส่วนการเชื่อมต่อก่อนหน้า เป็นตัวชี้หรือพอยน์เตอร์เก็บค่าแอดเดรสใช้อ้างกลับไปยังโหนดก่อนหน้าในหน่วยความจำ

                ลิงค์ลิสต์สองทางบางครั้งเรียกว่าลิงค์ลิสต์สมมาตร (Symmetrically Linked List) เนื่องจากมีตัวชี้จากสองทิศทาง (Bidirectional) ทั้งด้านซ้ายและขวา เมื่อนำมาใช้เป็นลิงค์ลิสต์สองทางวงกลม (Circular Doubly Linked List) ได้ดังในรูปที่ 6.16 โดยอาจยกเลิกโหนดหัวรายการก็ได้

                ในการปฏิบัติการจะชี้ไปยังโหนดถัดไปโดยใช้ Next(P) และชี้กลับไปยังโหนดก่อนหน้าโดยใช้ Prior(P) ตัวชี้ทั้งสองมักจะเป็นพอยน์เตอร์ใช้ชื่อ Right และ Left หรือใช้ s-link (Successor) และ          p-link (Predecessor) ดังนั้นเมื่อมีตัวแปรพอยน์เตอร์ p ชี้ไปยังโหนดใดจะได้ว่า
                                Next (Prior (P)) = P = Prior (Next (P))
                การถอยกลับไปหนึ่งโหนดและไปข้างหน้าหนึ่งโหนดก็จะกลับมายังโหนดเดิม หรือไปข้างหน้าหนึ่งโหนดและถอยกลับหนึ่งโหนดก็กลับมายังโหนดเดิมเช่นกัน สำหรับลิงค์ลิสต์สองทางว่าง (Empty Doubly Linked List) มีพอยน์เตอร์ทั้งสองชี้กลับมายังโหนดหัวรายการดังในรูปที่ 6.17 ซึ่งไม่มีโหนดอื่นอยู่ในลิงค์ลิสต์ จะได้ว่า
                                Prior (Head) = Head = Next (Head)

การแทรกโหนดไว้ในลิงค์ลิสต์สองทาง
                การแทรกโหนดใหม่เข้าไปไว้ในลิงค์ลิสต์สองทางจะมีอัลกอริทึมดังในตารางที่ 6.5
ตารางที่ 6.5 อัลกอริทึมการแทรกโหนดใหม่ลงในลิงค์ลิสต์สองทาง

                ตัวอย่างที่ใช้จะเริ่มต้นโดยใช้โหนดใหม่ I ขึ้นในหน่วยความจำ กำหนดส่วนเก็บข้อมูลมีค่า L, ส่วนการเชื่อมต่อ Left และ Right มีค่าเป็น NULL ซึ่งเป็นตัวแปรพอยน์เตอร์ New ชี้อยู่ดังในรูปที่ 6.18 และมีลิงค์ลิสต์สองทางที่มีการแทรกโหนดใหม่เข้ามาระหว่างโหนด 2 เป็นโหนดก่อนหน้าและโหนด 3 เป็นโหนดถัดไป จึงกำหนดให้ตัวแปรพอยน์เตอร์ P ชี้ไปยังโหนด 2 และขั้นตอนในการแทรกประกอบด้วยดังต่อไปนี้

  1. Next(New) = Next(P) กำหนดให้ตัวชี้ Right ของโหนด I เปลี่ยนไปชี้ยังโหนด 3 ซึ่งเป็นส่วนหลังของการแทรกโหนดใหม่ ในรูปที่ 6.19 และ Prior(New) = P กำหนดให้ตัวชี้ Left ของโหนด I เปลี่ยนไปชี้ยังโหนด 2 ซึ่งเป็นส่วนก่อนหน้าของการแทรกโหนดใหม่

  1. Next(P) = New กำหนดให้ตัวชี้ Right ของโหนด 2 ที่มีตัวแปรพอยน์เตอร์ P ชี้อยู่เปลี่ยนไปชี้ที่โหนด I ที่มีตัวแปรพอยน์เตอร์ New ชี้อยู่ ในรูปที่ 6.20 และ Prior(P) = New กำหนดให้ตัวชี้ Left ของโหนด 3 เปลี่ยนไปชี้ยังโหนด I เช่นกัน

                เมื่อมีการแทรกโหนดเสร็จสิ้น โหนด I จะต่อจากโหนด 2 และแทนที่ลำดับของโหนด 3 ซึ่งจะกลายเป็นโหนดที่ 4 ในการทำงานจะมี 3 โหนดที่เกี่ยวข้องคือ โหนดใหม่ I โหนดที่ตัวแปรพอยน์เตอร์ P ชี้อยู่ และโหนดถัดไป ซึ่งต่างจากลิงค์ลิสต์ทางเดียวที่เกี่ยวข้องเพียง 2 โหนด

การลบโหนดออกจากลิงค์ลิสต์สองทาง
                อัลกอริทึมที่นำมาใช้ลบโหนดออกจากลิงค์ลิสต์ดังในตารางที่ 6.6
ตารางที่ 6.6 อัลกอริทึมการลบโหนดออกจากลิงค์ลิสต์สองทาง

                พิจารณาจากตัวอย่างลิงค์ลิสต์สองทางในรูปที่ 6.21 เป็นอัลกอริทึมในการลบโหนดออกจากลิงค์ลิสต์สองทาง โดยเริ่มต้นให้ตัวแปรพอยน์เตอร์ P ชี้ไปโหนด 2 ซึ่งเป็นโหนดที่ต้องการลบ และขั้นตอนการลบประกอบด้วย

  1. Next(Prior(P)) = Next(P) เป็นการใช้ตัวชี้ left ของโหนดที่ต้องการลบอ้างกลับไปยังโหนดก่อนหน้าเพื่อชี้ Right ชี้ไปยังโหนดถัดไปต่อจากโหนดที่ต้องการลบ ในรูปที่ 6.22


  1. Prior(Next(P)) = Prior(P) เป็นการใช้ตัวชี้ Right ขอองโหนดที่ต้องการลบอ้างไปยังโหนดถัดไปเพื่อสร้างตัวชี้ Left ชี้กลับไปยังโหนดก่อนหน้าโหนดที่ต้องการลบในรูปที่ 6.23

  1. Free(P) หลังจากนั้นจึงปลดปล่อยโหนดที่ต้องการลบซึ่งมีตัวแปรพอยน์เตอร์ P ชี้อยู่ เพื่อคืนพื้นที่หน่วยความจำของโหนดที่ลบไปและนำไปใช้กับงานอื่นได้ (Reuse) ได้เป็นรูปที่ 6.24

                ลำดับการทำงานจะมี 3 โหนดที่มาเกี่ยวข้อง คือ โหนดที่ต้องการลงมีตัวแปรพอยน์เตอร์ P โหนดก่อนหน้าและโหนดถัดไป ส่วนโหนดอื่น ๆ ไม่ถูกเรียกใช้งานหรือเปลี่ยนแปลง
ลิ้งค์ลิสต์หลายทาง
                มีอยู่หลายกรณีที่นำลิงค์ลิสต์มาใช้งานตามความเหมาะสมซึ่งแต่ละโหนดจะถูกกำหนดให้ส่วนการเชื่อมต่อมีมากกว่าสองทางเรียกว่าลิงค์ลิสต์หลายทาง (Multi-linked List) อย่างเช่นในรูปที่ 6.25 ที่แต่ละโหนดในลิงค์ลิสต์จะมีตัวชี้สามทางโดยมีพื้นฐานเป็นลิงค์ลิสต์สองทางซึ่งมีส่วนเก็บข้อมูลคือ NameLength เก็บค่าความยาวของสตริง กับส่วนเชื่อมต่อที่เป็นตัวชี้ Right และ Left และส่วนที่เชื่อมต่อที่สาม คือ ตัวชี้ NamePtr ใช้ชี้ไปยังข้อมูลจริงอีกทีซึ่งมีโครงสร้างข้อมูลสตริงเก็บไว้ในหน่วยความจำที่ขอมาแทนการเก็บไว้ภายในโหนด

                ลิงค์ลิสต์หลายทางจะเป็นลักษณะพื้นฐานของโครงสร้างของข้อมูลอื่นที่จะกล่าวในบทต่อ ๆ ไป เช่น ทรี (Tree) กราฟ (Graph) และนำไปใช้จัดการกับแฟ้มข้อมูล (File)

การเขียนจดหมายสมัครงาน เป็นภาษาอังกฤษ

การเขียนจดหมายสมัครงาน เป็นภาษาอังกฤษ
ภาษาอังกฤษ

(Specimen of Application Letter)

52/107 Buaban Villa

Sukhaphiban 2

Bangkapi

Bangkok

12 March 1990

The Bureau Chief

NHK TV, 6 F MOT Building,

Rama 6 Road,
Bangkok 10310

Dear Sir,

Your advertisement in the Bangkok Post of March 10, 1990, for the position of a translator has attracted my attention because I think that my qualifications will fulfil your requirements.

I am a graduate from poona University in India and hold a Master’s degree in Politics and Public Administration. While studying at the University, I had a part-time job as a translator for the royal Thai Consulate in Bombay. From time to time, I also contributed some English articles to the University’s magazine and won several prizes in the essay contests. My English and Thai typing speeds are 50 words and 40 words a minute respectively. Because of my translation and writing experience, I am confident that I will be able to do a good job for you.

H.E. Prateep Rewangnam, Consul-General in Bombay, has permitted me to use his name as a referee, Enclosed you will find my detailed Resume, a degree certificate and two recent photographs.

I shall be able to call for and interview at your convenience and shall be glad to give you any further information that you may require. If you wish to telephone me, my number is 433-1907

Your faithfully

(Mr. BANDIT SAISAARD)





ตัวอย่างประวัติย่อภาษาอังกฤษ

Resume of

Lamduan chadchaidee

52/107 Buaban Villa, Sukhaphiban 2, Bangkapi, Bangkok.

Personal Details :

Sex : Male

Age : 31 years old

Height : 5 feet 3 inches

Weight : 50 Kilogrammes

Health : Good

Nationality : Thai

Marital statur : Single

Religion : Boddhism

Education :

1984 – Fergusson College, India, B.A. (English), Grade B.

1986 – Poona University, India, M.A. (Politics). Grade B.

Extra-curricular activities

- Translating news and other documents for the Royal Thai Consulate in Bombay, India.

- Elected as a staff-writer for the university’s magazine, The Symbiosis Review.

- Elected as president of Thai Student’s Association, India

- Teaching English to junior Thai student

Hobbies

Reading, Book-collecting and trabelling

Typing Speed

English : 50 words a minute

Thai : 40 Words a minute

Experience :

1987 – English Teacher at Prasit English School in Bangkok

1988 – Author of “Business Correspondence”, now in 4th edition.

1989 – Sutor of “job application & Interview”, now in 3rd edition.

Referees :

H.E.Prateep Rawangnam, Royal Thai Consulate, Bombay, India.

Prof.Dr.S.N. Tawale, Department of Politics, Poona University, India.

Mr. Chanchai Huadsi, Prasit English School, Silom Road, Bangkok.

ตัวอย่างใบสมัครงานภาษาอังกฤษ

Application Form

ตำแหน่งที่ต้องการ : เลขานุการ

Position Appliecd for : Secretary

เงินเดือนที่ต้องกากร : 15,000 บาท

Expected Salary : 15,000 Bath

ชื่อ – สกุล : นายสุนทร มาไว

Name in English : Mr. Soontorn Mawai

เพศ : ชาย/หญิง

Sex : Male/Female

วัน เดือน ปีเกิด : 12 กุมภาพันธ์ 2530

Date of Birth : 12th February 1987

ส่วนสูง : 170 ซม. น้ำหนัก : กก.

Height : 170 cm. Weight : 65 Kg.

ตำหนิ : แผลเป็นที่มือขวา

Sear : Wounded right hand

กรุ๊ปเลือด : กรุ๊ปเลือด A

Blood Group : Blood Group A

สถานที่เกิด : กรุงเทพฯ

Place of Birth : Bangkok

โทรศัพท์ที่จะติดต่อ : 765-4321 (สำนักงาน)

Telephone : 765-4321 (Office)

ที่อยู่ปัจจุบัน : 123 หมู่ 8 ถนนเอกชัย บางบอน บางขุนเทียน กทม.

Present Address : 123 Moo 8 Egkachai Rd. Bangbon Bangkhuntien Bangkok

ที่อยู่ตามทะเบียนบ้าน (เขียนตามทะเบียนบ้าน)

Permanent Address

บัตรประชาชาชนเลขที่ : 24 123456 732

ID. Card No. : 24 123456 732

ออกให้ ณ : อำเภอเขตบางขุนเทียน จังหวัดกรุงเทพมหานคร

Issued at : Bangkhuntien Proviince Bangkok

วันที่ออกบัตร : 15 พฤษภาคม 2536

Issued Date : 15th May 1993

วันหมดอายุ : 14 พฤษภาคม 2542

Expired Date : 14th May 1999

สถานะความเป็นอยู่ : บ้านส่วนตัว บ้านเช่า อาศัยบิดามารดา

Living Status : Own House, Rent Home, Live with Parent

สถานะครอบครัว : โสด แต่งงาน หย่า หม้าย แยกกันอยู่

Marital Status : Single, Married, Divorced, Widowed, Separated

ชื่อคู่สมรส : อาชีพ สถานที่ทำงาน

Spouses Name : Occupation Firm Address

ชื่อบิดา : สมบูรณ์ อายุ : 55 ปี อาชีพ : รับราชการ

Name of Father : Somboon Age : 55 Occupation : Government Officer

ชื่อมารดา : จินตนา อายุ : 50 ปี อาชีพ : แม่บ้าน

Name of Mother : Jintana Age : 50 Occupation Housewife

สถานะทางทหาร : ได้รับการยกเว้น ศึกษาวิชาทหาร และผ่านการเกณฑ์ทหาร

Military Status : Exempted Military Studied and Conscripted



--------------------------------------------------------------------------------
คำ ศัพท์ที่ควรรู้ในการเขียนใบสมัครงาน

ผู้สมัครงานอาจต้องเขียนใบสมัครเป็นภาษาอังกฤษ และต้องกรอกข้อมูลเป็นภาษาอังกฤษ การกรอกใบสมัครเป็นภาษาอังกฤษจึงเป็นอุปสรรคของผู้สมัครงานอีกประการหนึ่ง

ตัวอย่างคำศัพท์ภาษาอังกฤษที่มักใช้ในใบสมัคร ได้แก่

Application Form = ใบสมัคร

Application Letter = จดหมายสมัครงาน

Applicant = ผู้สมัครงาน

To be completed in = เขียนใบสมัครด้วยลายมือตนเอง

Own handwriting

Confidential = ความลับ

Photo attached here = ติดรูปถ่ายตรงนี้

Position applied for/ = ตำแหน่งที่สมัคร/ตำแหน่งที่ต้องการ

Position sought/

Position desired

Expected Salary = เงินเดือนที่ต้องการ

Personal data = ประวัติส่วนตัว

Curriculum vitae, Bio-data,

Data Sheet, Resume

Name-Surname = ชื่อ-สกุล

Maiden Name = นามสกุลเดิม

Sex = เพศ (ชายใช้ Male หญิงใช้ Female)

Present address = ที่อยู่ปัจจุบัน

Permanent address = ที่อยู่ถาวร

Postal code = รหัสไปรษณีย์

Date of birth = วัน เดือน ปีเกิด

Age = อายุ

Nationality = สัญชาติ

Race = เป็นพลเมืองประเทศ

Domicile = ภูมิลำเนา

Religion = ศาสนา (Buddhism, Islam, Catholic)

Height = ส่วนสูง

Weight = น้ำหนัก

Colour of eyes = สีตา

Colour of hair = สีผม

Complexion = สีผิว

Marital status = สถานภาพทางการสมรส

Spouse = คู่สมรส

Single = โสด

Married = แต่งงานแล้ว

Widowed = ม่าย

Divorced = หย่าร้าง

Occupation = อาชีพ

Dependants = ผู้ที่อยู่ในความอุปการะ

House’s Registration = สำเนาทะเบียนบ้าน

Identity Card No., I.D.Card No. = เลขที่บัตรประจำตัวประชาชน

Identification Card (I.D.Card) = บัตรประจำตัวประชาชน

Relative = ญาติ

Issued by……….. = ออกให้ โดย……….

Issued Date = วันที่ออกบัตร

Valid Date ; Expire Date = วันที่บัตรหมดอายุ

Student Housing = หอพักมหาวิทยาลัย

Own House = บ้านของตนเอง

Rent House = บ้านเช่า

Live with Parents = พักอยู่กับ พ่อ-แม่

Boarding House = หอพัก

Ordainment = บวช

Person to notify in case of = บุคคลที่สามารถติดต่อได้ในกรณีเร่งด่วน

emergency

Military status = สถานภาพทางทหาร

Exempted = ยกเว้น

Black Slot = จับได้ใบดำทางทหาร

No Military Service = ไม่มีพันธะทางทหาร

Primary School; Elementary = ประถมศึกษา

School

Secondary School = มัธยมศึกษาตอนต้น

High School = มัธยมศึกษาตอนปลาย

Vocational Certificate = ประกาศนียบัตรประโยคอาชีวศึกษา

Vocational = อาชีวศึกษา

High Vocational Certificate = ประกาศนียบัตรวิชาชีพชั้นสูง

Bachelor’s degree = ปริญญาตรี

Experience/Previous = วุฒิการศึกษาที่ได้รับ

employment

Reasons for leaving = เหตุผลที่ลาออกจากงาน

Reference = บุคคลที่อ้างอิง

Applicant signature = ลายเซ็นผู้สมัคร

Applicant name = ชื่อผู้สมัคร



                                --------------- จบจ้า ---------------

บทสนทนาสัมภาษณ์งานภาษาอังกฤษ

บทสนทนาสัมภาษณ์งานภาษาอังกฤษ


การทักทาย (Greeting) ส่วนนี้เป็น part แรกในการสนทนา.
Q : Good morning / afternoon
A : Good morning / afternoon – sir / mam.
Q : How are you today?
How are you doing? ** ทั้งหมดความหมายเดียวกัน ว่า สบายดีไหม**
How do you do?

A : I’m fine / I’m good ..thanks and you?
Q : ก็แล้วแต่เค้าจะตอบ

การสัมภาษณ์ ( interview ) ส่วนนี้เป็นการเข้าเรื่องการสัมภาษณ์
Q : Would you like to tell me about yourself? อยากให้เล่าเกี่ยวกับตัวเอง
A : I was born in …
I graduated from …. In …ปีที่จบ
Major ….
When I was student. I have experienced sum part time jobs as …. (ถ้ามี / ถ้าไม่มีข้ามไป)
On my free time. I like to surf net and ….(งานอดิเรก) เช่น reading, movies, แต่ควรจะเป็น เรื่องที่เกี่ยวข้องกะงานเอาไว้จะดีกว่า ....


Q : Would you like to tell me about your wok experiences? เล่าการทำงาน
A : After graduated in 2000 (สมมติ) I have got a first job at ….ชื่อบ.
Worked as … ตำแหน่งงาน
My responsibility are …. ทำอะไรบ้าง ....

Second job ….งานที่ 2 …
** ให้เล่าอย่างนี้ไปเรื่อยๆ จนกว่าจะครบตามประสบการณ์ของเรา **
คำถามเพิ่มเติม จากการเล่าประสบการณ์ของเรา Following questions
Q : Do you have a computer skill ? ทักษะคอม
Can you speak other language? พูดภาษาอื่นได้อีกไหม
Can you use internet? ใช้อินเตอร์เน็ต
Can you use office material? เครื่องใช้สำนักงานเป็นไหม
- Yes I can .
Do you stay alone in Bangkok? อยู่กรุงเทพคนเดียวเหรอ
- Yes / No, with friends,relatives
Do you have sister or brother? อันนี้โดนเองเลย .. ไม่รู้จะถามทำไม
- Yes,1 sister / No am the only one child.

** คำถามมีอีกมากมาย แต่เท่าที่พบด้วยตัวเองก็จะประมาณนี้ **
          หลังจากนั้นผู้สัมภาษณ์จะเล่าเกี่ยวกับบริษัทของเขา เช่น ลักษณะธุรกิจ เปิดมากี่ปีแล้ว บริษัทแม่อยู่ที่ไหน วัตถุประสงค์ อื่นๆ แล้วก็จะวกเข้ามาที่ตำแหน่งที่เราสมัครว่า ทำไมเขาจึงมีความต้องการรับคนเข้าทำงานในตำแหน่งนี้ ซึ่งคุณนายไม่สามารถเขียนบรรยายได้เพราะมันมากมาย ... เอาเป็นว่าเขาจะถามเราแล้วหล่ะว่า
Q : Do you have any questions?
Any questions?
About our business, do you have a questions?

ซึ่งถ้าเราไม่แน่จัย ก็ให้บอกว่า
A : No, I will have more question after I’ll see you again. ยังไม่มีตอนนี้ เอาไว้ร่วมงานกันแล้วมีแน่ๆ ประมาณนั้น
หรือถ้าเราเกิดสงสัยต่างๆ ก็ตั้งคำถามที่เกี่ยวข้องกับตัวงาน เพื่อให้เขารู้สึกว่า เราสนจัย
A : How many staffs are working in this section? มีพนักงานทำงานตำแหน่งนี้กี่คน

** ถ้าเราไม่มีคำถามแล้ว เขาอาจจะปิดการสัมภาษณ์ **
Q : Well,we will need to talk together then will give you feedback later.
We will call you later.
We will get back to you as soon as possible.
** อีกมากมาย **
A : Yes .. Thank you very much I will look forward to hear from you ขอบคุณ ฉันจะรอ .. ในที่นี่หมายถึง โทรศัพท์

Q : Sure .. thanks for coming แน่นอน .... ขอบคุณที่แวะมา
A : Thanks for your time and opportunity ขอบคุณที่ให้โอกาศและเสียสละเวลามาสัมภาษณ์

Q : Have a nice day … Goodbye / Goodluck
A : Thanks , same to you .. ถ้าเราไม่อยากพูดยาว หรือไม่ก็พูดเหมือนเขานั่นแหละ

          เอาหล่ะ .. คงจะได้ไอเดียกันบ้าง คุณนายไม่ได้ลอกที่ไหนมานะพยายามเขียนออกจากประสบการณ์( ที่นานมาแล้ว ) มาแบ่งปันกันเผื่อว่าจะได้เป็นแนวทางให้เพื่อนๆได้ลองศึกษาดูและนำไปใช้ในแบบที่ตัวเองถนัด.. สำหรับการตั้งคำถามของผู้สัมภาษณ์ เท่าที่สัมผัสมา มันไม่น่าจะเกินนี้ ยิ่งถ้าเป็นคนไทยสัมภาษณ์หล่ะก็ จะเป็นอย่างนี้เลยแต่ถ้าเป็นฝรั่งก็อาจจะมีนอกเหนือแต่ก็ไม่ออกนอกโลกไปมากมาย ถ้าเราไม่เข้าจัยในคำถามหรือฟังไม่ทัน เราสามารถบอกเขาได้เลยว่า
- Pardon me / excuse me can u repeat it again? ขอโทษนะ พูดอีกทีได้ไหม
- Sorry, I can’t catch it, can you speak slowly? ขอโทษนะฟังไม่ทัน พูดช้าๆหน่อยได้ไหม
- Sorry , think my Eng is not so good, can you speak again please? ขอโทษนะภาษาไม่ค่อยดีพูดอีกทีได้ไหม

          เขาไม่ตัดสินเราเพราะว่าเราให้พูดซ้ำอีกทีหรอกนะ แต่อย่าทำบ่อยไม่ดีๆ

                        --------------------------- จบ งับ อิอิอิอิ ---------------------------------

วันจันทร์ที่ 4 กรกฎาคม พ.ศ. 2554

Joomla




joomla

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

การสร้างเว็บไซต์จากอดีตจนถึงปัจจุบัน มีวิวัฒนาการที่เปลี่ยนแปลงไปในทุก ๆ วัน เริ่มจากการใช้ภาษาในการเขียนเว็บไม่กี่ภาษา มาเป็นใช้ภาษาหลาย ๆ ภาษาร่วมกัน ไม่ว่าจะเป็นภาษา HTML, DHTML, PHP, ASP ฯลฯ นอกจากนี้หากต้องการให้เว็บไซต์ของเรามีความสวยงามก็จะต้องมีความรู้ทางด้านกราฟฟิกส์อีกด้วย ไม่ว่าจะเป็นการตัดต่อ ย่อ ขยาย รูปภาพ สร้างภาพที่เป็น GIF Animation หรือจะให้ดูนุ่มนวลก็จะต้องมีความรู้เกี่ยวกับการสร้าง Flash ด้วยความหลายกหลายที่จำเป็นจำต้องมีในเว็บไซต์นั้น การที่จะสร้างเว็บส่วนตัว หรือองค์กรให้สวยงามและมีประสิทธิภาพ ด้วยคนเพียงคนเดียวนั้นอาจต้องใช้เวลานานมาก ด้วยเหตุนี้ปัจจุบันจึงมีกลุ่มคนที่รวมตัวกัน และร่วมกันพัฒนา ต้องขอใช้คำว่า "เว็บไซต์กึ่งสำเร็จรูป" ขึ้นมา เพื่อเป็นการลดภาระการทำงานหลาย ๆ ด้าน ให้มีความง่าย และสะดวกมากยิ่งขึ้น โดยให้ความหมายกับสิ่งที่พวกเขาได้พัฒนาขึ้นว่า CMS
joomla เป็น CMS ตัวหนึ่งในหลาย ๆ ตัวที่ได้รับความนิยมในปัจจุบัน สำหรับคุณที่ยังไม่รู้จักว่า CMS คืออะไร ขออธิบายสั้น ๆ เพิ่มเติมดังนี้ครับ CMS นั้นเป็นอักษรย่อของ คำว่า "Content Management System" ซึ่งเมื่อแปลเป็นภาษาไทย หมายถึง ระบบบริหารจัดการเนื้อหาของเว็บไซต์  นั่นหมายความว่า สิ่งที่เราจะต้องดูแลก็คือเนื้อหาของเว็บไซต์ เช่น การเพิ่มบทความ การเพิ่มรูปภาพ หรือการปรับแต่งโยกย้ายโมดูลต่าง ๆ  ไม่จำเป็นจะต้องมานั่งเขียน Code ด้วยภาษา HTML, PHP, SQL เพียงแต่เรียนรู้วิธีการติดตั้ง การปรับแต่ง การใช้งาน CMS เท่านั้น  สำหรับ Code ต่าง ๆ ที่นำมาสร้าง และ ออกแบบเว็บไซต์ จะทำโดยทีมงานของผู้พัฒนา CMS ของแต่ละทีม ซึ่งทำให้ประหยัดเวลาในการสร้าง  และออกแบบเว็บไซต์ ได้อย่างมาก

joomla เป็น CMS ที่ได้รับความนิยมเป็นอันดับต้น ๆ  เพราะมีระบบการจัดการเนื้อหาที่มีรูปแบบสากล การปรับแต่งหน้าตาของเว็บไซต์ทำได้ง่าย เพราะ joomla ถูกออกแบบมาให้รองรับกับเทคโนโลยีการ ออกแบบเว็บไซต์ สมัยใหม่ ไม่ว่าจะเป็นการรองรับ Flash หรือ GIF Animation นอกจากนี้คุณยังสามารถ Download template ได้อย่างมากมายมีทั้งแบบที่สามารถนำมาใช้งานได้ฟรี (โดยให้เครดิตผู้สร้างนิดหน่อย เช่น ไม่ลบชื่อทีมพัฒนา template นั้นออกจาก template เป็นต้น) หรือหากต้องการ template ที่มีประสิทธิภาพ และมีความสวยงาม ก็สามารถหาซื้อมาใช้ได้ เพราะมีเว็บไซต์ที่ให้บริการจัดทำ template ของ joomla อยู่มากมาย จุดเด่นของ joomla อีกจุดหนึ่งก็คือมี Extension จำนวนมากให้เราสามารถนำมาประยุกต์ใช้งาน เช่น component, module, Plugin มีทั้งแบบฟรี และแบบต้องชำระเงิน สำหรับเว็บไซต์อย่างเป็นทางการของ joomla คือ http://www.joomla.org   เป็นศูนย์รวมข่าวสารการ Update joomla และคุณสามารถ download joomla และ extension ต่าง ๆ ได้จากที่นี่
joomla มีการ Update อย่างสม่ำเสมอ ทำให้เรามั่นใจได้ว่าการ ออกแบบเว็บไซต์ ด้วย CMS joomla จะมีความปลอดภัย ซึ่งปัจจุบัน (ตุลาคม 2553) เป็นรุ่น 1.5.21 และที่สำคัญที่สุด joomla รองรับภาษาไทย 100% เพราะมีทีมงานที่คอยดูแลเรื่องภาษา ทำให้เราไม่ต้องมากังวลกับการใช้งานภาษาไทยว่าจะผิดเพี้ยนในส่วนใดหรือไม่ และในขณะนี้ Team ผู้พัฒนา joomla กำลังร่วมกันพัฒนา joomla รุ่นใหม่ คือ joomla 1.6 ซึ่งในขณะนี้ก็ใกล้จะได้ใช้งานกันในเวลาอันใกล้นี้
สิ่งที่ควรพิจารณาเป็นอันดับต้น ๆ สำหรับการใช้งาน joomla
สำหรับผู้เริ่มต้นใช้งาน joomla แล้วเกิดปัญหานั้นส่วนใหญ่ ไม่ได้มาจากตัวของ joomla แต่มักจะมีปัญหากับ PHP, MySql, เวอร์ชั่นเก่า ทำให้เกิดปัญหาได้ สำหรับการตรวจเช็คนั้นไม่ยากเลย เพราะในตอนที่ดำเนินการติดตั้งนั้น จะมีหน้าเว็บเพจที่ตรวจสอบว่าสามารถติดตั้ง หรือรองรับได้หรือไม่ หากไม่รองรับให้หาตัวใหม่มาลง  เพราะฉะนั้นตอนติดตั้งมักไม่ค่อยเกิดปัญหา แต่จะเกิดปัญหาตอนที่เราติดตั้งตัวเสริมต่าง ๆ (Extension) ซึ่งบางตัวถึงขั้นไม่สามารถใช้งานได้เลย เพราะติดตั้งไปก็จะ error หรือติดตั้งผ่าน แต่พอใช้งานจริงก็จะมีปัญหา สำหรับคุณที่ต้องการติดตั้งบนโฮสติ้ง ก่อนจะใช้บริการก็ควรเช็ครายละเอียดของโฮสติ้งให้ดีว่า PHP, MySql นั้นเวอร์ชั่นใหม่หรือไม่ จะได้เกิดปัญหาน้อยลง


Control Panel หัวใจของการจัดการเว็บไซต์ 
ในส่วนนี้ขอกล่าวเลยไปถึงการจัดการเรื่องสิทธิ์บนโฮสติ้งด้วย เพราะโฮสแต่ละโฮส ก็ีมีนโยบายความปลอดภัยไม่เท่ากัน บางโฮสมีความเข้มงวดมากก็จะทำให้คุณต้องอ่านรายละเอียดการใช้งาน เพื่อทำความเข้าใจมากขึ้น สรุปว่าปลอดภัยแต่ใช้ยากขึ้น (นิดนึง) หากคุณเลือกใช้โฮสในลักษณะนี้มักเกิดปัญหา และต้องโทรหาเจ้าของโฮสอยู่บ่อย ๆ อย่างแน่นอน นอกจากนี้เครื่องมือที่ช่วยในการบริหารจัดการโฮสติ้งก็แตกต่างกัน ขึ้นอยู่กับ Operating System ที่โฮสนั้น ๆ เลือกใช้ (สำหรับในหัวข้อนี้จะเขียนเพิ่มเติมให้เรื่อย ๆ ครับ)


และทั้งหมดนี้ก็คือบทสรุปคร่าว ๆ ของ CMS joomla สำหรับเนื้อหาในส่วนนี้จะมี Update เพิ่มเติมให้อีกทีครับ  ขอบคุณทุกท่านที่ให้ความสนใจเยี่ยมชมเว็บไซต์ของเราครับ



                     ------------------------จบแล้วจ้า-----------------------