Cloud Computing การบริการประมวลผลจากเครื่องคอมพิวเตอร์บนเครือข่าย Internet

“อะไรคือ Cloud Computing และมันน่าใช้ยังไง แล้วต้องเลือกแบบไหนถึงจะเหมาะกับองค์กร” ขอขอบคุณข้อมูล Sipa จากการอบรม Cloud Computing รุ่นที่ 1 และขอขอบคุณข้อมูลจากท่านวิทยากร ผศ.ดร.ภุชงค์ อุทโยภาส ม.เกษตรศาสตร์   แนวคิดและความหมายของ Cloud Computing Cloud Computing เป็นบริการประมวลผลจากเครื่องคอมพิวเตอร์บนเครือข่ายอินเทอร์เน็ต รวมถึงการ ใช้งานทรัพยากรเครื่องคอมพิวเตอร์ร่วมกันโดยไม่มีข้อจำกัด โดยสามารถเลือกปรับแต่งการใช้งานได้ตามต้องการ และสามารถเข้าถึงได้จากที่ใดก็ได้ ซึ่งสามารถสรุปคุณสมบัติเป็นข้อ ๆ ตามคำนิยามของ NIST (National Institute of Standards and Technology) * ได้ดังนี้ On-demand self-service – สามารถใช้งานทรัพยากรได้ตามที่ต้องการ Broad network access – สามารถเข้าถึงจากที่ใดก็ได้ Resource pooling – สามารถนำทรัพยากรหลาย ๆ อย่างมารวมกันเพื่อใช้งานร่วมกัน Rapid elasticity – สามารถปรับเปลี่ยนได้ตลอดเวลาที่ต้องการ Measured Service – สามารถวัดปริมาณการใช้งานได้ทุกบริการ (เพื่อสามารถนำไปคิดค่าใช้จ่ายได้ด้วย) Reference : * The NIST Definition of Cloud Computing, http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf สถาปัตยกรรม Cloud Ecosystem ตามคำนิยามของ NIST ได้มีการกำหนด Cloud Ecosystem หรือเรียกว่า Cloud Service Model ได้ 3 รูปแบบดังนี้ Software As A Service (SAAS) เป็นบริการใช้งานซอฟต์แวร์ประยุกต์ (Application) ที่ผู้ให้บริการจัดหาให้ โดยสามารถเข้าถึงได้จาก Web Browser รวมถึง Application ทั้งที่อยู่ในเครื่องคอมพิวเตอร์หรืออุปกรณ์มือถือ การบริการรูปแบบนี้ผู้ใช้จะไม่สามารถจัดการเครื่องหรือระบบปฏิบัติการได้ ทุกอย่างผู้ให้บริการจัดการให้ทั้งหมด Platform As A Service (PAAS) เป็นบริการเครื่องมือสำหรับพัฒนาระบบ โดยผู้ใช้ไม่สามารถเข้าถึงการจัดการโครงสร้างพื้นฐานใด ๆ ได้ เช่นระบบเครือข่าย เครื่องเซิร์ฟเวอร์ ระบบปฏิบัติการ โดยผู้ให้บริการจะจัดการให้ทั้งหมด Infrastructure As A Service (IAAS) เป็นบริการที่ผู้ใช้สามารถจัดการระบบปฏิบัติการ ระบบเครือข่าย รวมถึงจัดหาโปรแกรมประยุกต์ เพื่อสามารถดูแลควบคุมการปรับแต่งระบบให้สามารถรองรับความต้องการที่หลากหลาย แต่การจัดหาทรัพยากร รวมถึงโครงสร้างพื้นฐานยังเป็น หน้าที่ของผู้ให้บริการจัดหาให้ตามความต้องการของผู้ใช้ รูปแบบของการให้บริการ สามารถแบ่งรูปแบบการให้บริการ (Deployment Models) ออกแบบ 4 รูปแบบได้ดังนี้ Private cloud เป็นการใช้งานระบบภายใต้โครงสร้างพื้นฐานขององค์กร ผู้ใช้อาจเป็นผู้ดูแลด้วยตนเอง หรือจ้างบุคคลที่สามดูแลก็ได้ อุปกรณ์อาจจะติดตั้งภายในสำนักงานหรืออยู่ภายนอกทั้งหมด หรือบางส่วนก็ได้ Community cloud เป็นการใช้งานระบบภายใต้การร่วมการของกลุ่มสมาชิก โดยมีข้อปฏิบัติร่วมกัน ตามเงื่อนไขของรัฐ หรือขององค์กร โดยสมาชิกดูแลบริหารจัดการโครงสร้างด้วยสมาชิกเอง หรือทำผ่านบุคคลที่สาม โดยอุปกรณ์อาจจะติดตั้งภายในสถานที่ของชุมชน หรือนอกสถานที่ก็ได้ Public cloud เป็นการใช้งานระบบร่วมกันกับสาธารณะชน องค์กรทั่วไปและกลุ่มองค์กรขนาดใหญ่ โดยผู้ให้บริการเป็นผู้ลงทุนโครงสร้างพื้นฐานไอทีและระบบซอฟต์แวร์ที่เกี่ยวข้องทั้งหมด Hybrid cloud เป็นการใช้งานผสมผสานระหว่าง Private cloud, Public cloud หรือ Hybrid cloud โดยขึ้นอยู่กับผู้ใช้บริการต้องการด้านใด โดยอาจจะทำงานเป็นอิสระ หรือมีการเชื่อมโยงเข้าหากัน แต่จะต้องสามารถทำงานร่วมกันในระดับข้อมูลและระบบซอฟต์แวร์ประยุกต์ได้ โดยการใช้งานทั่วไปมักจะใช้ Private cloud ก่อน จนเมื่อต้องการเพิ่ม Capacity ชั่วคราวจึงใช้ Public cloud เพิ่มเติม โครงสร้างของระบบ Cloud โดยมีการแบ่งออกเป็น Front End และ Back End เชื่อมต่อกันด้วยอินเทอร์เน็ต โดยแบ่งอุปกรณ์พื้นฐาน ได้ดังนี้ 1) Server 2) Storage 3) Network 4) Cloud runtime ซึ่งจะเป็น

Read More »

Script สำหรับ หาวันที่ของไฟล์ล่าสุดใน directory

Q: ถ้าจะเขียน คำสั่ง หรือ script บน linux เพื่อหา วันที่ของ file ล่าสุดใน folder ของ user จะเขียนยังไงดี มีไอเดียไหมครับ A: สมมติ folder ของ user คือ /home/user/Documents $ ls -t /home/user/Documents จะได้ไฟล์เรียงตามลำดับวันที่/เวลาของไฟล์ โดยไฟล์ล่าสุดจะโผล่มาเป็นไฟล์แรก ถ้าเราต้องการไฟล์ล่าสุดแค่ไฟล์เดียว ก็สามารถใช้คำสั่ง head -1 เพื่อตัดให้เหลือไฟล์เดียวได้ ก็จะได้คำสั่งเป็น $ ls -t /home/user/Documents | head -1 ทีนี้ จากชื่อไฟล์ที่ได้ ถ้าต้องการวันที่ เราก็สามารถใช้คำสั่ง date โดยใช้ option -r สำหรับให้มันแสดงวันที่ของไฟล์ใดๆ ตย. เช่น ต้องการรู้วันที่ ของไฟล์ /etc/passwd ก็ใช้คำสั่ง $ date -r /etc/passwd เอาสองอย่างนี้มาใช้งานร่วมกันได้ตามนี้ครับ $ date -r `ls -t /home/user/Documents | head -1` ทีนี้ ถ้าต้องการให้ format ของวันที่ออกมาตามที่เราต้องการ อย่างเช่น ให้ format เป็น yyyy-mm-dd HH:MM:SS ก็เพิ่ม option ให้กับคำสั่ง date ประมาณนี้ “+%Y-%m-%d %H:%M:%S” รวมกันทั้งหมดเป็น $ date -r `ls -t /home/user/Documents | head -1` “+%Y-%m-%d %H:%M:%S” Q: ถ้าจะลงลึกไปหลาย level ต้องทำอะไรเพิ่มครับ A: หมายถึงต้องการไฟล์ล่าสุด ไฟล์เดียว จากใน directory นั้นและ sub directory ย่อยทั้งหมดใช่ใหมครับ? Q: ใช่ครับ A: งั้น คงต้องพึ่งพาคำสั่ง find ครับ เพื่อที่ list เอาเฉพาะไฟล์ทั้งหมดออกมาก่อน เพราะคำสั่ง ls ธรรมดามันจะไล่ไปตาม directory ทีละ directory เริ่มจาก $ find /home/user/Documents มันจะ list ทุกอย่างทั้งไฟล์ และ ไดเรคตอรี่และในไดเรคตอรี่ย่อยออกมา เราต้องการเฉพาะไฟล์ ระบุ option -type f เราต้องการให้มันแสดงวันที่ของไฟล์ออกมาด้วย อันนี้ต้องพึ่งคำสั่ง ls โดยใช้ option ของ ls เป็น –full-time $ find /home/user/Documents -type f -exec ls –full-time {} \; โดย {} เป็นการระบุว่าให้ find ใช้คำสั่ง ls –full-time กับ output ของ find ส่วน \; เป็นตัวระบุว่า จบ option ของ คำสั่ง find แค่นี้ output ที่ได้ จะเป็นไฟล์ “ทั้งหมด” โดยที่ในแต่ละบรรทัดจะมี ข้อมูลอย่างอื่นของไฟล์นั้นออกมาด้วย เช่น permission, owner, group, size ซึ่งเราไม่สนใจ เราตัดเอาข้อมูลที่อยู่ข้างหน้าเหล่านั้นออกไปได้ โดยใช้คำสั่ง cut โดยในกรณีนี้ใช้ space ‘

Read More »

การสร้าง Hybrid App ด้วย Ionic Framework

ในบทความนี้จะนำขั้นตอนการพัฒนา Hybrid App อย่างง่ายด้วย Ionic Framework เพื่อเป็นแนวทางการพัฒนาแก่ผู้ที่สนใจ โดยเครื่องที่ใช้ในการทดลองเป็นปฏิบัติการ Windows 10 มีขั้นตอนการติดตั้งเครื่องมือต่าง ๆ เพื่อให้สามารถใช้ Ionic ได้ดังนี้ ติดตั้ง js โดยดาวน์โหลดไฟล์ node-v4.4.7-x64.msi ได้จาก http://nodejs.org วิธีการติดตั้งก็ไม่ยุ่งยากครับ ใช้ Next Technology ได้เลย จะมีหน้าจอขั้นตอนต่าง ๆ ดังรูป ติดตั้ง Cordova และ Ionic command line tool โดยการเปิด command prompt ของ windows ขึ้นมา แล้วรันคำสั่ง $ npm install -g ionic เริ่มต้นสร้าง App อย่างง่าย หลังจากที่เตรียมความพร้อมของเครื่องที่พัฒนาเรียบร้อยแล้ว ขั้นตอนต่อไปก็จะเป็นการสร้าง App ขึ้นมา ซึ่ง Ionic ได้เตรียม template ตั้งต้นไว้ให้เราแล้ว ได้แก่ side menu, maps, salesforce, complex-list, blank เราก็ดูว่า App ของเราสามารถใช้ template ตัวไหนได้บ้าง ก็เลือกมาใช้ได้เลย รูปที่ 1 Ionic Template [ที่มา : http://ionicframework.com] ขั้นตอนการสร้าง App โดยใช้ command line tools เปิด command line ขึ้นมา แล้วกำหนด working directory เป็นที่ที่สำหรับใช้เก็บ project (ในที่นี้จะกำหนดเป็น “C:\ionic” ) สร้าง project กำหนดชื่อ myApp และใช้ tabs เป็น template ตั้งต้นโดยใช้คำสั่ง $ ionic start myApp tabs ผลลัพธ์ที่ได้จากคำสั่งนี้ จะทำให้ได้ไฟล์ต่าง ๆ ดังรูป จะพบว่ามีโฟลเดอร์ชื่อ www สำหรับเก็บโค้ด HTML, CSS, Java Script เหมือนกับการพัฒนาเว็บไซต์ ให้เราใช้ความรู้ด้านการเขียนเว็บไซต์สร้างไฟล์ต่าง ๆ เก็บไว้ในโฟลเดอร์นี้ได้เลย หลังจากสร้างไฟล์ App ขึ้นมาแล้ว ก็จะเข้าสู่ขั้นตอนการ Build ให้ App สามารถรันบน Platform ต่าง ๆ ได้ สำหรับในบทความนี้จะแสดงเฉพาะการ Build สำหรับ Android เพื่อให้เห็นเป็นแนวทางการพัฒนา เนื่องจากเครื่องที่ใช้ทดสอบเป็น Windows 10 หากจะ Build ให้รันบน iOS ได้ ก็ต้อง Build บนเครื่องที่ใช้ระบบปฏิบัติการ iOS ในส่วนของการเตรียมความพร้อมสำหรับการ Build ให้รันบน Android ได้ เครื่องที่ใช้ในการพัฒนาจะต้องติดตั้ง Java Development Kit (JDK) 7 และAndroid Stand-alone SDK Tools หรือ Android Studio  ก่อน ซึ่งขั้นตอนการติดตั้งก็ไม่ยากครับ ใช้ Next Technology เช่นเคย Build และ Run บน Android โดยใช้คำสั่งต่อไปนี้ $ ionic platform add android $ ionic build android $ ionic emulate androidจะทำให้ได้ผลลัพธ์ดังรูป จากรูปเป็นผลลัพธ์ที่ได้จากการใช้ Tab template ซึ่งผู้พัฒนาจะต้องแก้ไขโค้ดให้เป็นไปตามที่ได้ออกแบบไว้

Read More »

ตอนที่ 4 : ใช้ Report Wizard ช่วยสร้างรายงาน

จากตอนที่แล้วได้กล่าวถึงการสร้างรายงานว่าสามารถทำได้ 2 แบบ กล่าวคือ สร้างรายงานจากไฟล์ว่างๆ หรือ ใช้ Report Wizard เป็นตัวช่วยสร้างรายงาน ซึ่ง Wizard สามารถออกแบบรายงานเป็นTable หรือ Crosstab ตามรูปแบบที่มีให้เลือก โดยทำตามขั้นตอน ดังนี้ 1. ไปที่ Solution Explorer คลิกขวาโฟลเดอร์ Reports > Add New Report จะปรากฏหน้าจอ Report Wizard ดังรูปที่ 1 รูปที่1 Report Wizard 2. คลิก Next เลือก Data Sources เป็นแบบ Shared หรือ Embedded Data Sources ดังรูปที่ 2 รูปที่2 Data Sources 3. คลิก Next เพื่อเขียน query โดยกดปุ่ม Query Builder… จะไปยังหน้าจอ Query Designer รูปที่3 Design Query 4. คลิก Next จะปรากฏหน้าจอให้เลือกว่าจะสร้างรายงานเป็นตาราง (Tabular) หรือ Metrix (สามารถสรุปข้อมูลในลักษณะ Pivot Table) ดังรูปที่ 4 รูปที่4 Report Type  5. คลิก Next เพื่อมาออกแบบตาราง ผู้ใช้จะต้องเลือก fields ที่อยู่ใน Available fields มาใส่ใน Displayed field ในที่นี้จะจัดกลุ่มข้อมูล (Group) ตาม CAMPUS_ID, FAC_ID, DEPT_ID และ fields อื่นๆจะแสดงในส่วนของ Details รูปที่5 Design Table 6. คลิก Next เพื่อเลือกรูปแบบการจัดวางข้อมูล (Layout) และคลิกเลือก Include subtotals เพื่อรวมข้อมูลในระดับที่ได้ Group ไว้ในข้อที่แล้ว (CAMPUS_ID, FAC_ID, DEPT_ID) และคลิก Next เพื่อเลือก Style ดังรูปที่ 6 รูปที่6 Table Layout & Style 7. คลิก Next จะเห็นช่อง Report name: ให้ตั้งชื่อรายงาน และกดปุ่ม Finish จะได้รายงาน ดังรูปที่ 7 รูปที่7 ตัวอย่างรายงาน        จากการทดลองสร้างรายงานโดยไฟล์ว่างเปล่ากับใช้Wizard เป็นตัวช่วยสร้างรายงาน พบว่า Wizard สามารถทำให้งานง่ายขึ้นได้ ซึ่งรูปแบบที่มีให้เลือกอาจจะยังไม่ถูกใจผู้ใช้ก็ค่อยมาปรับกันในทีหลังได้ เช่น Format จำนวนเงิน, ใส่ Header / Footer, ใส่ Expression ใน Textbox… ส่วนในเรื่องการคำนวณจะเป็นการรวมข้อมูลแบบตรงไปตรงมา หากผู้ใช้ต้องการการคำนวณที่ซับซ้อนขึ้นก็สามารถทำได้ เช่น อยากได้คอลัมน์ยอดเงินสุทธิ = AMOUNT – AMOUNT_FINE – AMOUNT_VAT เป็นต้น

Read More »

Unit test สำหรับ method ที่ใช้ Entity Framework

กลไกการทำงานของ .NET method โดยส่วนใหญ่  จะมีกลไกการทำงานที่ต้องขึ้นกับเงื่อนไข ปัจจัยต่างๆจากภายนอกอย่างเช่น method ที่มีเรียกใช้ database หรือ web service ทำให้การทดสอบจำเป็นต้องแยก component ที่ต้องการทดสอบออกมาจากปัจจัยแวดล้อมต่างรอบๆ component ซึ่งสามารถทำได้โดยใช้ shim ที่อยู่ภายใต้การควบคุมในกระบวนการทดสอบ สามารถที่จะควบคุมผลลัพธ์ที่ได้การทำงานตามที่กำหนดในทุกๆครั้งที่เรียกใช้งาน ซึ่งทำให้การเขียน unit testing ทำได้ง่ายขึ้นมาก การพัฒนา unit test สำหรับ method ที่ใช้ Entity Framework เพื่อเข้าถึงฐานข้อมูล ก็สามารถใช้ shim type ในการกำหนดชุดของข้อมูลเพื่อทำการทดสอบ ซึ่งการ query จะกระทำกับ property ของ DbContext ซึ่ง return IDbSet<T> public partial class Entities : DbContext { public Entities(): base(“name=Entities”) { } public IDbSet<CONFIG> CONFIG { get; set; } … } ในการพัฒนา unit test จะต้องสร้าง shim type สำหรับ class “Entities” และแทนที่ property ที่ดึงข้อมูลจากฐานข้อมูลจริงแยกออกจากการทดสอบ ด้วยข้อมูลสำหรับทดสอบ จากตัวอย่างข้างบนคือ property “CONFIG” ซึ่งเป็นประเภท IDbSet<CONFIG> โดยจะทำการ returm DbSet<CONFIG> ที่เตรียมข้อมูลไว้สำหรับการทดสอบ using (ShimsContext.Create()) { ShimEntities.AllInstances.CONFIGGet = (e) => { return … DbSet<CONFIG> }; } แต่ใน DbSet ไม่มี public constructor ทำให้ไม่สามารถสร้าง instance ของ DbSet ได้ จึงจำเป็นต้องสร้าง class ใหม่ที่ implement interface IDbSet<T> แทนการใช้ DbSet public class TestDbSet<T> : IDbSet<T>, IQueryable, IEnumerable<T> where T : class { ObservableCollection<T> _data; IQueryable _query; public TestDbSet() //: base() { _data = new ObservableCollection<T>(); _query = _data.AsQueryable(); } public virtual T Find(params object[] keyValues) { throw new NotImplementedException(“Derive from TestDbSet<T> and override Find”); } public T Add(T item) { _data.Add(item); return item; } public T Remove(T item) { _data.Remove(item); return item; } public T Attach(T item) { _data.Add(item); return item; } public T Create() { return Activator.CreateInstance<T>(); } public TDerivedEntity

Read More »