ทำความรู้ัจักกับ Revision Control System และ SVN

ทำความรู้จักกับ Revision Control System กันก่อน !

โดย Revision Control System ( หรือเรียกว่า Version control, Source control หรือ (source) code management (SCM) ก็ได้) คือ ซอฟต์แวร์ประยุกต์ที่มีความสามารถในการติดตาม และบันทึกประวัติการเปลี่ยนแปลงที่เกิด ขึ้นเกี่ยวกับการพัฒนาระบบใดระบบหนึ่ง ซึ่งมักจะเกี่ยวกับด้านซอฟต์แวร์ โดยจะบันทึกไว้ตลอดระยะเวลาของการพัฒนาซอฟต์แวร์ พร้อมทั้งระบุเวลาและรวบรวมรูปแบบที่เปลี่ยนแปลงไปทั้งหมดที่เกิดขึ้นตลอดเวลาของการพัฒนาด้วย

โดยหลักการของ Revision Control System ส่วนใหญ่มักใช้ Optimistic Technique ก็คือการให้ผู้ใช้หลาย ๆ คนสามารถเข้าถึง (Check out) (ซึ่งในที่นี้เราจะพูดถึง source code) อันเดียวกัน แต่ละผู้ใช้สามารถแก้ไขไฟล์ต่าง ๆ ที่ดาวน์โหลดมา และสามารถอัพโหลดไฟล์ (Check in/Commit) กลับเข้าสู่ Revision Control System โดยมันจะรับผิดชอบเรื่องการตรวจความขัดแย้งกันของข้อมูล (Conflict) ว่ามีใครแก้ไขไฟล์เดียวกันหรือไม่ ถ้ามีมันก็สามารถแสดงความแตกต่าง (Diff) ระหว่างไฟล์ และ/หรือทำการรวมไฟล์ (Merge) เข้าด้วยกันได้ แต่บางครั้งบาง Revision Control System ก็ใช้หลักการ Pessimistic Technique กล่าวคือเมื่อมีคนใดในทีมพัฒนาได้ทำการเข้าถึงและกำลังนำข้อมูลนั้นไปแก้ไข หรือเปลี่ยนแปลงคนอื่น ๆ ในทีมจะไม่มีสามารถเข้าถึงและทำการเปลี่ยนแปลงข้อมูลชุดนั้นได้จนกว่าคนที่นำไปแก้ไข หรือเปลี่ยนแปลงจะทำการอัพโหลดไฟล์กลับเข้าระบบดังเดิม แต่ระหว่างนั้นสามารถเข้าไปอ่านไฟล์นั้น ๆ ได้อย่างเดียว (แต่บางครั้ง Revision Control System บางยี่ห้อก็ไม่ยินยอมให้อ่านไฟล์ด้วย ขึ้นอยู่กับว่ายี่ห้อไหนจะนิยามการทำงานแบบ Pessimistic Technique เป็นแบบใด)

โดยการเก็บข้อมูลนั้นเราต้องมีการสร้างคลังข้อมูล (Repository) ซึ่งบางครั้งคลังข้อมูลนี้จะรองรับไฟล์แบบ ASCII และ Binary Files หรือไม่ขึ้นอยู่กับซอฟต์แวร์ Revision Control System จะรองรับหรือไม่ด้วย

ตัวอย่างเช่น เราพัฒนาซอฟต์แวร์ 1 ตัว โดยในทีมีคนร่วมพัฒนา 10 คน โดยทุกคนมีสิทธิ์ในการเข้ามาใช้ Revision System Control ได้หมด และในการพัฒนาซอฟต์แวร์ครั้งนี้มีไฟล์การพัฒนาอยู่หลายร้อนไฟล์ เมื่อมี 1 ในทีมพัฒนาชื่อ A ได้นำไฟล์ kernel.c ออกไป (Check out) ทำการแก้ไขเพื่อแก้ไขข้อผิดพลาด (Bug) เมื่อทำการแก้ไขเสร็จแล้วจึงนำกลับเข้าระบบ (Check in/Commit) ซึ่งทำกันเป็นปกติ โดยก่อนทำการนำกลับเข้าระบบมักจะมีการเขียนคำอธิบายไว้เสมอว่ามีการแปลงอะไรไปบ้าง (Log) แต่พอมีการแก้ไข interface.c โดยมีในทีมมีการทำการแก้ไขพร้อม ๆ กัน 2 คน ซึ่งได้แก่คนชื่อ B และชื่อ C โดยทำการนำไฟล์ interface.c มาแก้ไข  เมื่อ C นำไฟล์กลับเข้าระบบ จะทำได้ตามปกติ แต่พอ B จะนำกลับเข้าระบบจะมีการฟ้องว่าไฟล์ที่จะนำเข้าระบบเกิดความขัดแย้งของข้อมูล (Confilt) โดยทั่วไปแล้วจะทำการแสดงความแตกต่างก่อน (Diff) เพื่อดูว่าส่วนที่ตนเองแก้ไขไปนั้นมีส่วนใดที่ตรงกันหรือไม่ ถ้าไม่ตรงกันเลย และไม่มีผลกระทบกับระบบโดยรวม (เช่นแก้ไข function คนละตัวกัน) จะทำการ merge เข้าด้วยกันแล้วทำการนำเข้าระบบตามปกติ แต่ถ้ามีการแก้ไขแล้วเกิดความซ้ำซ้อนกัน มักจะทำการเปลี่ยนแปลงโค้ดโปรแกรมของตัวเองใหม่อีกครั้ง แล้วทำการนำเข้าระบบอีกครั้งนึง แต่บางครั้ง ส่วนใหญ่ถ้าไฟล์ที่เราแก้ไขนั้นเป็นไฟล์ระบบที่มีความหวั่นไหวต่อการเปลี่ยนแปลงก็มันจะ ปิดการนำไฟล์ออกมามากกว่า 1 คน (Lock) ก่อนเสมอ

โดยในบทความนี้เราจะพูดถึง SubVersioN (SVN) ซึ่งเป็น Open Source Application ที่ทำหน้าที่ Revision control ซึ่งได้รับความนิยมสูงมากตัวหนึ่ง โดยถูกสร้างขึ้นมาเพื่อทดแทนการทำงาน Concurrent Versions System (CVS) ที่เก่า, มีความสามารถจำกัด และใช้งานยาก (ผมจะไม่พูดถึง CVS มากนัก เพราะไม่ได้ใช้งานจริง)

ความสามารถคราว ๆ ที่มีมาใน SubVersioN (SVN) มีดังต่อไปนี้

  1. เป็น Revision Control System แบบ Optimistic Technique
  2. การ Check in/Commit จะเป็นแบบ Atomicity แบบเดียวกับ Database Management System (DBMS) ทั่ว ๆ ไป 
    * Atomicity เป็นหนึ่งในกฎ ACID (Atomicity, Consistency, Isolation and Durableness) ของ DBMS ที่รองรับการทำ Concurrency ซึ่งมีคำจำกัดความว่า "กลุ่มคำสั่งงานใดๆ ต้องได้รับการประมวลผลทุกคำสั่งงานทั้งหมดถ้าไม่มีข้อผิดพลาด  หรือไม่ได้รับการประมวลผลเลยถ้ามีข้อผิดพลาดเกิดขึ้น" กล่าวคือผู้ใช้งานไม่ต้องกังวลผลของการดำเนินงานที่ไม่สำเร็จ เนื่องจากส่วนจัดการการดำเนินงานจะทำการยกเลิกหรือทำซ้ำให้ผลลัพธ์ถูกต้อง ตัวอย่างเช่น รายการเบิกเงินจากตู้เบิกเงินอัตโนมัติที่ยังทำไม่สำเร็จเนื่องจากระบบเกิดขัดข้อง ส่วนจัดการการดำเนินงานจะยกเลิกรายงานเบิกเงินครั้งนั้น โดยปรับค่ายอดเงินคงเหลือกลับไปค่าเดิม เสมือนหนึ่งไม่มีการทำรายการเบิกเงินครั้งนั้นเลย เป็นต้น
  3. หมายเลขการเปลี่ยนแปลง (Revision number) เป็นแบบส่วนรวม กล่าวคือใช้หมายเลขการเปลี่ยนแปลงร่วมกันทั้งระบบ เพื่อง่ายต่อการจัดการและกันการสับสนของการเปลี่ยนแปลง
  4. สามารถเปลี่ยนชื่อ, คัดลอก, ตัด และลบไฟล์ โดยมีผลกับหมายเลขการเปลี่ยนแปลงหลักทั้งหมด
  5. รองรับไฟล์แบบ Binary files 
  6. รองรับ Apache HTTP server บนโปรโตคอล WebDAV/DeltaV โดยสามารถนำมาใช้ผ่านโปรโตคอลแบบ TCP/IP ได้ทำให้ลดปัญหาโดน Firewall ในเครือข่ายไม่ยินยอมให้ผ่านได้อีกด้วย โดยใช้ Apache HTTP server โดยผ่าน port 80 ซึ่งมักจะได้รับการยินยอมให้กระทำผ่าน Firewall ได้อยู่แล้ว
  7. รองรับการทำ Branching (Branches) และ Tagging (Tags)
  8. สามารถ Locking ในกรณีที่ต้องการเปลี่ยนแปลงข้อมูลระดับเข้มงวด (เช่นไฟล์ที่มีผลกับระบบมาก ๆ มักทำการ lock ไว้ก่อน เพื่อป้องกันการ merge ไฟล์แล้วมีข้อผิดพลาดใหม่ ๆ หรือข้อมูลนั้นไม่เหมาะให้มีการแก้ไขหลาย ๆ คนในเวลาเดียวกัน)
  9. รองรับ MIME เต็มรูปแบบ
  10. เป็น Open Source licensed ในชื่อ "CollabNet/Tigris.org Apache-style license"

ครั้งต่อไปเราจะมาทำการติดตั้ง SVN Server บน Windows ภายใน 10 นาทีกันนะครับ ;)

อ้างอิง

 

จินตนาการ

ขอยก Quote ที่เด็ดมาก แต่ว่า คุณต้องดูประกอบภาพครับ ให้เข้าไปดูที่นี่ แล้วจะเข้าใจคำด้านล่างนี้

จินตนาการของเด็ก
ในบางครั้งก็ ยิ่งใหญ่
เกินกว่าที่ผู้ใหญ่จะเข้าใจ

มันเป็นโฆษณาที่สุดยอดมาก และทำให้เข้าใจความแตกต่างของมุมมองของคนได้ดีระหว่าง "ลักษณะร่วมกัน" และ "ลักษณะเอกลักษณ์" แนะนำให้อ่าน หนังสือ バカの壁 (The Wall of Fools หรือ BAKA NO KABE) หรือชื่อไทยว่า "กำแพงคนโง่" โดยคำอธิบายหน้าเล่มนี้ คือ "หนังสือที่ทุบทุกๆ สถิติวงการหนังสือญี่ปุ่น สุดยอด Bestseller 40,000,000 เล่ม คู่มือแห่งการทลายกำแพง ไม่อยากชนกำแพงอ่านเล่มนี้" แนะนำให้หามาอ่านกันครับ ได้ข้อคิดดีมาก ๆ เลย ;)

รายละเอียดหนังสือก็ ผู้เขียนคือ ทาเคชิ โยโร่ และแปลโดย โชวเดียร์ หมายเลข ISBN คือ 974998353X หนังสือเป็นปกอ่อน จำนวนหน้า 160 หน้า ราคา 150 บาท ครับ

 

Core Duo แตกต่างกับ Core 2 Duo อย่างไร

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

ใครที่ไม่ทราบเรื่อง Hardware ใน Computer มากนักแนะนำให้หาข้อมูลเพิ่มตาม ลิงส์ที่มีอยู่นะครับ 

ข้อแตกต่างของคำว่า Solo กับ Duo ก็คือ Solo เป็น CPU แบบ Single Core และ Duo เป็น CPU แบบ Dual Core โดยถ้าใน Intel Core 2 Solo จะไม่มีคุณสมบัติ Intel Advanced Smart Cache (การแชร์ L2 cache เพื่อใช้งานร่วมกันของ Core CPU ใน Multi-core CPU) ส่วนนอกนั้นมันก็เหมือน ๆ กัน [Core Solo and Core Duo]

Core 2 Duo เป็น Hybrid CPU ระหว่าง 32bit และ 64bit CPU มันคงไม่เพียว ๆ แบบ Itanium เพราะ Core 2 Duo มันเป็นทั้ง x86 (32bit เดิม) และ x86-64 (EM64T) โดย Core 2 Duo ที่ใส่ใน Notebook มี codename ว่า Merom เป็นใช้สถาปัตยกรรมแบบ Intel Core microarchitecture โดยผลิตแบบ Dual Core และเทคโนโลยีแบบ 65 nm, เพิ่ม Supplemental Streaming SIMD Extension 3 (SSSE3) เข้ามาในชุดคำสั่งบน CPU ด้วย โดยเพิ่มขึ้นมาอีก 16 ชุดคำสั่ง และยังได้เพิ่ม Intel Advanced Smart Cache เพื่อเข้ามาช่วยจัดการข้อมูลใน L2 Cache ที่แชร์การใช้งานกันอยู่ และมีอย่างอื่นอีกเช่น Intel Wide Dynamic Execution, Intel Intelligent Power Capability, Intel Smart Memory Access และ Intel Advanced Digital Media Boost เป็นต้น ส่วนอื่น ๆ อ่านที่ Intel : Inside Intel Core™ Microarchitecture Setting New Standards for Energy-Efficient Performance ครับ

ส่วน Core Duo ที่มี codename ว่า Yonah ใช้ Pentium M microarchitecture แต่ดันใช้ชื่อ Intel Core ให้สับสนกันเล่น ๆ ซะงั้นอ่ะ ซึ่งเป็นการ Rebranding ตัว Pentuim M ใหม่ และให้มีความเปลี่ยนแปลงบ้างเล็กน้อยนั้นก็คือเปลี่ยนการผลิตจาก 90nm ใน codename Dothan มาเป็น 65nm และเพิ่ม SSE3 ลงไปใน CPU codename ดังกล่าว แถมด้วยเพิ่ม L2 Cache บ้างในบางรุ่น (ส่วนใหญ่จะรุ่นสูง ๆ ) ซึ่ง L2 Cache ที่อยู่ในรุ่น Core Duo นั้นไม่ได้ใช้ Intel Advanced Smart Cache ซึ่งทำให้ L2 Cache นั้นถูกแยกออกมาใช้ในแต่ละ Core Processor ทำให้เกิดการดึงข้อมูลซ้ำซ้อนกันได้ ซึ่งก็ต้องถูกแก้ปัญหานี้โดยใช้ Intel Advanced Smart Cache ในสถาปัตยกรรมแบบ Intel Core microarchitecture นั้นเอง ซึ่งเจ้า Core Duo นั้นก็ยังคงมีความเป็น Pentium M microarchitecture มากกว่า Intel Core microarchitecture อยู่ดี

โดยสรุปได้ย่อ ๆ ว่าสิ่งที่แยกระหว่าง Pentium M microarchitecture และ Intel Core microarchitecture คือ EM64TSSSE3 , Intel Advanced Smart Cache, Intel Wide Dynamic Execution, Intel Intelligent Power Capability, Intel Smart Memory Access และ Intel Advanced Digital Media Boost เป็นต้น

รายละเอียดความแตกต่างของทั้ง Intel Core Solo/Duo และ Intel Core 2 Solo/Duo มีดังนี้

Core Solo/Duo

  • Support CPU Speeds: 1.06 GHz – 2.33 GHz
  • Support FSB Speeds: QDR FSB 133Mhz – 166MHz  ~ FSB 533Mhz – 667Mhz
  • Implementation Mobile
    478pins µFCPGA – Socket M (Socket479)
    479balls µFCBGA – Soldered on mainboard
  • Instruction set Yonah: RISC – IA32 – XD – MMX – SSE – SSE2 – SSE3
  • Cache : L1 64KB, L2 2MB (Independent L2 Cache)

Core 2 Solo/Duo

  • Support CPU Speeds: 1.60 GHz – 2.93 GHz
  • Implementation Desktop
    775lands FC-LGA4 – Socket775
  • Implementation Server (Xeon Brand)
    775lands FC-LGA4 – Socket775 (Uniprocessor Socket775)
    – 771lands FC-LGA4 – SocketJ (LGA771, Dualprocessor Socket J และ Multiprocessor Socket J)
  • Implementation Mobile
    478pins µFCPGA – Socket M (Socket479)
    479balls µFCBGA – Soldered on mainboard
  • Support FSB Speeds: QDR FSB 133Mhz – 166MHz  ~ FSB 533Mhz – 800Mhz
  • Instruction set Merom: RISC – IA32 – EM64T – XD – MMX – SSE – SSE2 – SSE3 – SSSE3
  • Cache : L1 64KB, L2 2MB – 4MB (Intel Advanced Smart Cache, Maximum 8MB in Xeon Brand)
  • New Technology, Intel Advanced Smart Cache, Intel Wide Dynamic Execution, Intel Intelligent Power Capability, Intel Smart Memory Access และ Intel Advanced Digital Media Boost เป็นต้น

อ้างอิงจาก

 

กลุ่มผู้ดูแลระบบแห่งประเทศไทย เชิญชวนร่วมงาน Training และ Meeting ครับ

พอดีว่าได้รับอีเมลงานนี้มานานมากแล้ว แต่พอดีว่าไม่แน่ใจว่าวันดังกล่าวจะมีเวลาว่างไปหรือไม่ แต่ทุกอย่างลงตัว เลยได้ไปแล้วปีนี้

วันเสาร์ที่ 9 ธันวาคม 2549 นี้ ขอเชิญชาวไทยแอดมินและเพื่อนบ้านร่วมงาน อบรมและพบปะสังสรรค์ประจำปี Thaiadmin Training Network Troubleshooting #1 และ Thaiadmin Meeting End Season Party #5 (งาน Thaiadmin Meeting ครั้งที่ 5) รายละเอียดต่าง ๆ ของ งาน Training ในภาคกลางวัน และ งาน Meeting ในภาคกลางคืน รบกวนช่วย ลงทะเบียน ก่อนก็ดีครับ รายนามแขกคร่าว ๆ และฝาก ประชาสัมพันธ์งาน ด้วยครับ

โดยหลังจากที่ผมเป็น Staff ใน Thaiadmin มานานมาก แต่ไม่ได้มีส่วนร่วมใน Meeting เลย ในปีนี้เลยได้มีเวลาไปเสียที ไว้เจอกันในวันนั้นครับ ;)

 

งามหน้าไหมเนี่ย

จาก รมว. ICT คนใหม่กับวิสัยทัศน์ต่อโอเพ่นซอร์ส ทำให้เกิดกระแสต่าง ๆ ด้านลบอย่างมากในตัว รมว. ในรัฐบาลชุดเฉพาะกิจชุดนี้ แม้จะเป็นรัฐบาลที่มาทำงานเพียงแค่ 1 ปี (หวังไว้อย่างนั้น) แต่การที่ท่านออกมาแสดงวิสัยทัศน์ที่หักดิบ และรุนแรงมากต่อกระแสการพัฒนาซอฟต์แวร์โอเพ่นซอร์ส ออกแนวพูดไม่คิด (และคาดว่าคงไม่ได้คิดอีกหลายอย่างแน่ ๆ ) ข่าวนั้นเร็วมากจนถึงขนาดเข้าเว็บ Digg และ Slashdot ตามไปอ่านได้

ข่าวต้นเรื่อง – U-TURN AT ICT MINISTRY
Digg – Open-Source condemned by Thai Minister
Slashdot –  Thai IT Minister Slams Open Source

คราวนี้หล่ะ ซวยหล่ะท่าน เตรียมตัวแก้ตัวกันไป -_-‘

แต่ที่แน่ ๆ เว็บ Digg กับ Slashdot จะโดน favicon.ico หรือเปล่าหว่า T_T ถ้าพรุ่งนี้เข้าไม่ได้ก็ทำใจได้เลยนะท่าน ๆ ทั้งหลาย

Update[1] จดหมายเปิดผนึก ถึง รมว. กระทรวง ICT


Update[2]

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

เว็บ Digg เป็นเว็บ social bookmarking และ blog bookmarking ที่ใหญ่มาก และมีข่าวที่เร็วกว่า Google News มาก (จากผลการวิจัยของสำนักข่าวแห่งหนึ่ง)

เว็บ Slashdot ( หรือสั้นว่า /. )เว็บรวมข่าวสารต่าง ๆ ที่มี Technology Geek ต่าง ๆ มากมาย มาร่วมกันแชร์ความรู้และแสดงความคิดเห็นอย่างเปิดกว้าง ซึ่งน่าจะใหญ่ที่สุดในโลกแล้ว

ส่วน Blognone เว็บรวม Technology Geek ที่ใหญ่ที่สุดในไทย (ณ.ตอนนี้คงถือว่าใหญ่มาก) โดยผู้ ร่าง "จดหมายเปิดผนึก ถึง รมว. กระทรวง ICT" คือคุณ thep ก็เป็นหนึ่งในผู้ผลักดัน OpenSource ในไทย และอยู่ในทีมพัฒนาระบบภาษาไทยใน linux ด้วย

ส่วนตอนนี้เว็บ Exteen เว็บ Blog Provider ที่ใหญ่ที่สุดในไทย ก็มีการแสดงความคิดเห็นใน Blog อย่างกว้างขวางมาก

นี่ยังไม่รวม IT Geek อื่น ๆ ในไทยอีกหลายเว็บ ที่เริ่มเอาข่าวนี้ไปเผยแพร่กันแล้ว ซึ่งรวมไปถึงเว็บบอร์ดที่ใหญ่ที่สุดในไทยอย่าง Pantip.com ที่มีการแสดงความคิดเห็นกันอย่างมากมายในหลาย ๆ ห้อง

โดยวิสัยทัศน์นี้ทำให้มีผลกระทบต่อสังคม OpenSource ในไทยอย่างมาก

คงต้องรอดูกันต่อไป ว่าจะมีอะไรเกิดขึ้น