วันศุกร์ที่ 30 พฤษภาคม พ.ศ. 2557

ASP.NET MVC ตอน 2 Entity Framework และเครื่องมือ

สำหรับการพัฒนาเว็บไซต์ด้วย Asp.net MVC ได้มีการพัฒนากันมาตัั้งแต่ VISUAL STUDIO 2008 Service Pack 1 ตอนนั้นเครื่องมือยังไม่พร้อมมากมาย แต่ ณ ปัจจุบัน MVC ได้เดินทางมาถึง Visual Studio 2013 เรียบร้อยแล้ว  แล้วมันมีข้อแตกต่างจาก MVC2,3และ4 ยังไงล่ะ? คำถามนี้น่าสนใจมาก ก่อนอื่นขอแนะนำเครื่องมือสำคัญในการพัฒนากันก่อน

1) Visual Studio แนะนำควรใช้ตั้งแต่ Version 2010 ขึ้นไป เพราะอะไร? สาเหตุเพราะการเปลี่ยน Visual Studio แต่ละ Version จะมีปัญหาเกี่ยวกับ Solution เล็กน้อย และเวอร์ชั่นต่ำมักประสบปัญหาในการเปิดเข้าไปเวอร์ชั่นสูงกว่า นอกจากนี้ เวอร์ชั่นใหม่ๆ ยังมมี Tool ให้เพียบพร้อมกับว่า ยกตัวอย่างเช่น Visual Studio 2012 Update ล่าสุด ที่มี ฟังก์ชัน ASP.NET WEP API2  ที่มีการจัดการโค้ดและรูปแบบที่ดีกว่า WEP API 1 ลดความยุ่งยากและซับซ้อนลง ซึ่งจากที่เคยลองทำใน 2 เวอรชั่นโดยส้รางใน Visual Studio 2010 และ Visual Studio 2012 พบว่า Visual Studio 2012 มีการทำงานง่ายและจัดการได้ง่ายกว่า รวมทั้ง ASP.NET MVC4 นั้น ยังมีการผนวก JQuery และ Tools Routing ที่เร็วขึ้นกว่าเดิม  (แต่หากใครใช้ MVC4 แนะนำข้ามไป 2013 เลยครับเพราะ 2012 ยังไม่พร้อมกับ MVC4 ครับ)

Visual Studio 2008
Credit : http://blogs.msdn.com/blogfiles/jasonlan/WindowsLiveWriter/VisualStudio2008Beta2nowavailable_2D47/image.png

Visual Studio 2010

Credit : http://www.christiano.ch/wordpress/wp-content/uploads/2010/04/Logo_Visual_Studio_2010.jpg

Visual Studio 2012 
Credit :http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-components-imagefileviewer/communityserver-blogs-components-weblogfiles-00-00-01-35-09/4784.VS2012-NEW-logo.PNG_2D00_550x0.png

Visual Studio 2013
Credit :http://agafonovslava.com/image.axd?picture=%2F2013%2F07%2FVisual+Studio+2013.png


2) Entity Framework  สำหรับ Entity Framework คือ Tools ในการจัดการ ORM(Oreited Relational Mapping) อธิบายง่ายๆว่ามันคือเครื่องมือในการจัดการ Query จากฐานข้อมูลให้อยู่ในรุปแบบของ Object ตามรูปแบบของภาษาต่างๆ เช่น C#, VB.net แทนเราโดยที่เรา ไม่จำเป็นต้องไปเรียนรู้คำสั่ง SQL ไม่ว่าจะเป็น Select, Insert, Update, Delete เลย แล้วทำไมต้องเป็น Entity Framework ทั้งที่มีตัวอื่นมากมาย?  คำตอบนี้ผมขอตอบดังนี้

  1. เพราะไมโครซอฟท์ซัพพอร์ตกับ Entity Framework ข้อนี้ชัดเจนครับ ผมเลือกเพราะว่าไมโครซอฟท์ซัพพอร์ต อาจจะเป็นคำตอบแบบกำปั้นทุบดิน แต่ขอบอกเลย เหตุผลคือมันไม่มีแพให้แน่นอน มันยังได้ไปต่อนั่นเอง
  2. Entity Framework เหมาะกับการทำงานแบบเป็นทีมในการพัฒนามากกว่า ทำให้การทำงานเป็นทีมในการ Maintenance Database เป็นเรื่องง่ายๆ สามารถจัดการได้ด้วยตัวคนเดียวและการเขียนโค้ดก็ลดน้อยลง จากประสบการณ์ผม ใช้แบบ Database -> Object และทำงานเป็นทีม หลายๆคน ผมพบว่า พอมี Tool เข้ามาช่วย ทำให้ Team Lead ทำงานได้ง่ายขึ้น น้องๆในทีมทักมา เราแก้ไขอย่างรวดเร็วในฐานข้อมูล จากนั้นบอกน้องๆ ให้ Update Entity Framework เพื่อแก้ไขปัญหาที่ การอัพเดตก็ง่ายนิดเดียวไม่ต้องพึ่งโค้ดแม้แต่น้อย ทำให้การทำงานเป็นหนึ่งเดียวได้ง่ายขึ้น จัดการปัญหาได้เร็ว กว่าการใช้ SQL ปกติ
  3. ลดปัญหา เกี่ยวกับ Syntax SQL Error ได้มากเช่น การจัดการกับ NullValue ที่เป็นปัญหาพื้นๆ แต่มักจะถูกละเลยได้ง่ายๆ
รูปภาพตัวอย่างการใช้ Entity Framework

แค่ 3 เหตุผลเบื้องต้นก็เพียงพอสำหรับการที่ผมจะเลือกมาใช้ในการทำงานแล้วครับ
ทีนี้ในการเขียน MVC จำเป็นจะต้องใช้แต่ Entity Framework หรือไม่? คำตอบคือไม่จำเป็นครับ Entity Framework เป็นแค่ Tool ตัวนึงครับ เราสามารถจัดการตัวอื่นได้ แต่ Solution ที่ผมใช้และง่ายจริงๆคือ การใช้ การพัฒนาด้วย ASP.NET + ENTITY FRAMEWORK + SVN (tortoise) ทำให้การพัฒนาซอฟท์แวร์ สำหรับ Develooper สะดวกขึ้น และแก้ปัญหาได้เร็วขึ้น ถึง 20% ครับ

วิธีการใช้ Entity Framework เบื้องต้น
1. เปิดโปรเจคที่ต้องการใช้
2. คลิ๊กขวาที่ Solution Explorer เลือก Add New Items เลือกที่เมนู Data จากนั้นเลือก ADO.NET Entity Framework Data Model  และทำการตั้งชื่อ จากนั้นกด Add
3. เมื่อเข้ามาแล้วจะเข้าสู่หน้าจอให้เลือก Content Model มีตัวเลือกสองแบบ (หากต้องการใช้ Database To Object) ให้เลือก Generate From DataBase และกด Next จะเข้าสู่ขั้นตอนต่อไป

4. ขั้นตอนต่อมาคือการเลือก Data Connection สำหรับขั้นตอนนี้คือการเลือกการติดต่อกับฐานข้อมูลว่าจะให้ Entity ติดต่อกับฐาน้ขอมูลอะไร ขั้นแรกถ้ายังไม่เคยมีให้เลือก New Connection และทำตามขั้นตอนไป แต่ถ้ามีแล้วให้เลือก Connection จาก ComboBox ครับ และจะมี Checkbox ให้ Save Connection เข้าสู่ Web.Config (App.config) ซึ่งตรงนี้ แล้วแต่จะกดนะครับ โดยส่วนตัวผมชอบแบบสร้างให้เพราะเราแก้ไขมันง่ายดี เมื่อเรียบร้อยกด Next จะเข้าสู่ขั้นตอนสุดท้ายสำหรับเลือก Table,View,Store Procedure
5. ขั้นตอนนี้คือขั้นตอสำหรับเลือกว่า จะติดต่อ Entity กับ Table หรือ View, Storeprocdure อะไรบ้าง

เมื่อทำครบทุกขั้นตอนแล้ว จะได้ไฟล์เข้ามาใหม่ ตามชื่อที่เราตั้งโดย จะนามสกุล edmx ทีนี้พอเราดับเบิ้ลคลิ๊กเข้าไปจะพบตารางเต็มไปหมด ขั้นตอนต่อจากนี้เราก็แค่หยิบมาใช้ซึ่งทุกอย่างจะอยู่ในรูปแบบของ Object หมดแล้วทั้งสิ้นเรามีหน้าที่ แค่หยิบไปใช้ สำหรับการ Insert,Update,Delete จะใช้ Syntax แบบ LINQ to sql ในการจัดการ CRUD หากใครไม่เเคยใช้ก็ข้อให้ไปศึกษาที่นี่ก่อนนะครับ

เพิ่มเติม : http://bithai.wordpress.com/2009/09/22/%E0%B8%97%E0%B8%B3%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81-linq-%E0%B8%95%E0%B8%AD%E0%B8%991/




วันพฤหัสบดีที่ 29 พฤษภาคม พ.ศ. 2557

ERP - ตอน 2 หัวใจสำคัญของ ERP

จากตอน 1 หลังจากที่มีการแนะนำ ERP กันไปแล้ว ต่อไปก็ถึงคราว เจาะลึกเข้าซะหน่อยเกี่ยวกับ หัวใจสำคัญของ ERP

สิ่งที่สำคัญของ ERP คืออะไร? หลายคนสงสัย ระบบบริหารทรัพยากรขององค์กร (ERP) นั้นตัวสำคัญคืออะไรกันแน่? หลายคนคงสงสัย ไม่ว่าจะเป็นระบบบุคคล บัญชี การผลิต การขาย หรือ ขนส่ง สิ่งเหล่านี้ก็สำคัญ แต่สิ่งที่สำคัญกว่านั้นคือ REAL-TIME  คำๆนี้คือหัวใจของ ERP อย่างแท้จริง จะเป็น ERP จะเป็นระบบที่เชื่อมโยงกันทุกระบบเข้าด้วยกันภายในองค์กร อย่างทันทีหรือทันท่วงที (REAL-TIME)  เพราะอะไร? นั่นเพราะผู้บริหาร จะต้องรู้ความเคลื่อนไหว โดยตลอดเพื่อให้แก้ไขสถานการณ์และปัญหาได้อย่างทันท่วงที  ระบบ ERP ที่ดีและมีประสิทธิภาพ วัดได้จากการตอบสนองต่อ ปัญหาและรับรู้ปัญหาได้อย่างเร็วขนาดไหน หากสิ่งนี้ขาดหายไป ERP จะเป็นแค่ระบบที่ไม่ได้ประสิทธิภาพอีกต่อไป ฉะนั้นการประมวลผลที่รวดเร็ว การเชื่อมโยงระบบต่างๆภายในเข้าด้วยกันและแสดงผลอย่างทันท่วงที จึงจะเรียกว่าระบบ ERP หากขาดสิ่งใดสิ่งหนึ่ง โดยเฉพาะอย่างยิ่ง REAL-Time จะทำให้ ERP ขาดประสิทธิภาพทันที

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

สรุป ERP ที่ดีจะต้องมีการรับรู้การเคลื่อนไหวอย่างทันที(REAL-TIME) เชื่อมต่อทุกระบบเข้าด้วยกัน และหัวใจสำคัญคือระบบบัญชี ที่คอยรายงานสภาพคล่องทางการเงินขององค์กรเพื่อให้แก้ปัญหาได้อย่างท่วงที

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

วันพุธที่ 28 พฤษภาคม พ.ศ. 2557

ปัญหาระดับประเทศเรื่องอินเตอร์เน็ต!!

ไม่มีใครปฏิเสธได้ว่ายุคนี้คือยุคของการสื่อสารทั่วโลก โดยสื่อที่ใช้นั้น คือ อินเตอร์เน็ต ไม่ว่าจะผ่านอุปกรณ์อะไรการมีอินเตอร์เน็ตทำให้ผู้คนสามารถเชื่อมถึงกันได้ทั่วโลก นั่นคือสิ่งอัศจรรย์มากในยุคนี้ และอินเตอร์เน็ตก็เริ่มมีบทบาทมากขึ้นเรื่อยๆ กับชีวิตคนทั่วไป แต่!! มันก็มีข้อดีมาก มันก็มีข้อเสียด้วย
(รูปประกอบจากเว็บ : http://xn--r3ckmn7exc7b.com/blog/wp-content/uploads/2013/11/Internet-IPv6.jpg)

อินเตอร์เน็ตเป็นช่องทางสื่อสารที่อิสระและยากจะจัดการ เนื่องจากเครือข่ายที่ใหญ่โตมโหฬาร ทำให้หลายประเทศ ต้องมีนโยบายที่บล๊อกไม่ให้เกิดความวุ่นวายมากเกินไป แต่นั่นแค่การแก้ไขปัญหาที่ได้ผล น้อยมาก ปัญหาใหญ่ที่แก้ไม่ได้เลย ไม่ว่าจะเป็นเว็บโป๊ เว็บหมิ่น คำหยาบคาย ละเมิดลิขสิทธิ์ ฯลฯ สิ่งพวกนี้ไม่ใช่จะแก้ปัญหาได้เพราะนโยบายเด็ดขาด เพราะอะไร? มนุษย์เราโดยส่วนใหญ่ เป็นพวกยิ่งห้ามยิ่งยุ ยิ่งคนยุคใหม่ที่เกิดมาในยุคนี้ที่อินเตอร์เน็ตเข้าถึงได้ตั้งแต่ 3 ขวบ เด็กยุคนี้ย่อมมีความคิดเป็นของตัวเองสูง และแคร์จริยธรรมน้อยลง พ่อแม่จำเป็นจะต้องรู้ตามลูกให้ทันด้วย แต่ว่าปัญหาของมันไม่ได้จบแค่นี้ 
ปัญหาที่พบในการใช้อินเตอร์เน็ตบ่อยครั้งคือการใช้อย่างไม่คำนึงถึงผลกระทบ บ่อยครั้งที่เกิดนักเลงคีย์บอร์ด และการที่อินเตอร์เน็ตไม่ต้องเห็นหน้ากันนั่นเองทำให้เกิดความขัดแย้งมากมาย และกลายเป็นไฟรามทุ่งถึงขนาดที่สามารถกลายเป็นโลกจริง เช่น การขัดแย้งทางการเมืองในประเทศไทย หรือ การขัดแย้งทางศาสนาของหลายประเทศ เป็นต้น สิ่งเหล่านี้กลายเป็นสิ่งที่เกิดขึ้นและลุกลามไปอย่างรวดเร็ว ไม่สามารถป้องกันได้ แม้ประเทศจะเป็นระบอบปกครองแบบใดก็ประชาธิปไตยหรือคอมมิวนิสต์ เผ็ดจการ ก็ไม่สามารถป้องกันได้ เพราะอะไร? เพราะสิ่งเหล่านี้คือนโยบาย แต่การป้องกันมันต้องป้องกันที่ตัวคน โดยให้คนมีภูมิคุ้มกัน 
หลายคนที่ใช้อินเตอร์เน็ต เด็กยุคใหม่ที่เกิดขึ้น ใช้อินเตอร์เน็ตโดยไม่มีภูมิคุ้มกัน แสดงความคิดเห็น รับรู้ โดยขาดการพิจารณารอบด้าน ขาดการไตร่ตรองในการคิดและการทำ บ้างก็คิดว่าการทำตัวเองนั้นถูกต้อง เพราะเห็นคนอื่นทำมาก่อน นั่นคือปัญหาที่เกิดขึ้นในการใช้อินเตอร์เน็ตและเป็นปัญหาระดับชาติ
ปัญหาเหล่านี้ถูกมองข้ามไปไกลมาก แต่กลับป้องกันที่นโยบาย เช่นบล๊อกเว็บ  การบล๊อกเว็บไม่สามารถช่วยอะไรได้แม้แต่น้อย ปัญหาไม่ได้เกิดจากการที่เทคโนโลยีไม่ดี และเราไม่สามารถปิดกั้นความเจริญได้ แต่ว่าปัญหาเกิดจาก "คน" แต่ "คน" ไม่ยอมรับ ปัญหาเกิดจากการขาดการแนะนำในการใช้อินเตอร์เน็ต ผู้ใหญ่ละเลยเพราะไม่มีเวลา ทำให้เด็กเรียนรู้ด้วยตนเอง และเข้าใจไปเอง บางคนคิดว่าการถ่ายคลิปลง Youtube หรือเว็บอื่นๆ เป็นเรื่องดี ซึ่งสิ่งเหล่านี้มันมาพร้อมกับเทคโนโลยี ไม่สามารถปิดกั้นได้ แต่หากเรามีการสอนภูมิคุ้มกันให้กับเด็กและคน โดยไม่ให้หลงไปกับสื่อ ไม่ให้หลงไปกับสิ่งที่รับรู้ ก่อนจะคิดว่าดีหรือหรือไม่ดี ให้ทำการพิจารณาให้รอบด้านก่อนว่า สื่อที่รับมานั้นมีการใส่อคติ(Bias) ลงไปหรือไม่ มีหลักฐานมากน้อยเพียงใด และหากคิดจะโพสหรือทำอะไรลงในอินเตอร์เน็ต ควรจะมีการไตร่ตรองว่า ผลกระทบนั้นมากน้อยเพียงใด อย่างน้อยควรจะพิจารณาถึงผลกระทบกับตัวเองและคนสำคัญกับตัวเองว่า ถ้าทำไปนั้น จะเกิดอะไรขึ้นและคุ้มหรือไม่ที่จะทำ สิ่งที่โพสหรือทำในอินเตอร์เน็ต มันเร็วมาก Twitter,Facebook เป็นตัวอย่างที่ดีและยังมี Ask.fm เข้ามาใหม่ สื่อ Social กว้างขึ้นเรื่อยๆ แต่จริยธรรมต่ำลงและการปิดหูปิดตากว้างขึ้น?? มันไม่ได้เลย

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

วันจันทร์ที่ 26 พฤษภาคม พ.ศ. 2557

ASP.NET MVC(C#) ตอน 1

ASP.NET MVC(C#)
ตอนที่ 1 รู้จัก MVC
MVC ย่อมาจาก Model – View – Controller 3 ตัวนี้ มีความหมายและหน้าที่ของมัน
Model คือ ส่วนสำหรับใช้ติดต่อฐานข้อมูล ส่วนใหญ่ Developer จะใช้เก็นคำสั่งพวกก Insert,Update,Delete, Select ลงใน Folder นี้โดยแยกเป็น Class สำหรับติดต่อฐานข้อมูลโดยเฉพาะและ Object ที่ใช้สำหรับ Insert สู่ ตารางต่างๆ โดยส่วนตัวตรงนี้ผมชอบผลักให้ไปกับ Entity Framework เพราะทำให้การ Manage ง่ายดี

View คือ ส่วนสำหรับหน้าจอแสดงผล ใน ASP.net MVC ที่ใช้ RAZOR จะเป็น .cshtml ใน Visual Studio จะไม่มีหน้า Design ให้เหมือนกับ Web Form

Controller คือส่วนของการเชื่อมเพื่อแสดงผลระหว่าง Model และ View โดยใน ASP.net MVC จะอยู่ใน Folder Controller และสามารถ Add Controller ได้เลย ภายใน Controller จะมี Action อยู่ภายใน แต่ละAction จะเชื่อมต่อกับ View 1 View
 อ่านเพิ่มเติมได้ ที่นี่

MVC คือ Pattern หนึ่งในการดีไซน์และพัฒนา Software โดยส่วนใหญ่จะเน้นการพัฒนาผ่านบนเว็บ MVC ไม่ได้ถูกจำกัดแค่อยู่บน .NET เท่านั้นแต่สามารถใช้ได้กับหลายภาษา เท่าที่ผมรู้ก็จะมี PHP ที่มี Framework MVC จำนวนมาก JAVA ก็ไม่น้อย และ.NET ที่มี .NET Framework คอย Provide ไว้ให้

ASP.net Web Form VS ASP.NET MVC
Topic
Web Form
MVC
โครงสร้าง Solution
มีแค่ Designer กับ C#
มี 3 แบบคือ Model, View, Controller
รูปแบบภาษา
ใช้ได้ทั้ง VB.net แล C#.net
ใช้ได้ทั้ง VB.net แล C#.net
การติดต่อฐานข้อมูล
ไม่จำกัด Tool ขึ้นอยู่กับ Tool ที่ใช้กับ .net ได้
ไม่จำกัด Tool ขึ้นอยู่กับ Tool ที่ใช้กับ .net ได้ แต่ว่าโดยส่วนใหญ่จะเก็บไว้ที่ Folder Model
Html Design
มีหน้า HTML Design ให้ใน Visual Studio
ไม่มีหน้า Designer สำหรับ HTMLให้
การ Include File
จะต้องสร้างเป็น user Control(.asmx) แล้วลากเข้ามาใส่ในดีไซน์
สามารถสร้างเป็น Shared หรือ Partial จากนั้น ใส่คำสั่งในการ Include เข้ามาได้ ตาม Syntax
ASP.NET CONTROL FORM
สามารถลากวางใช้ จากหน้า  Designer ได้เลย
สำหรับ MVC ไมโครซอฟฟท์ จัดให้หลายชุดคำสั่งมากและง่ายต่อการดึงมาใช้ แต่ต้องพิมพ์เอา
Javascript Ajax
เขียนปกติ
เขียนปกติ
Ajax Tookit
มีให้
ไม่มีให้
เวลาในการพัฒนาสำหรับเริ่มใหม่
Bad
Normal
เวลาในการพัฒนาสำหรับผู้เป็น .Net WebForm
Fast
Normal
หลาย Developer
Bad
Good
การวาง Pattern ในการพัฒนา
ยาก
ง่าย สาเหตุเพราะ มี Pattern พื้นฐานได้ส่วนนึง แค่ตั้งชื่อและติดต่อฐานข้อมูลให้พร้อม
RESTful Service
No
Yes
ViewState
Yes
No
ViewBag
No
Yes
Performance
Good
Normal
Server Support ในไทย
มีครบทั่วเพราะเป็นพื้นฐาน
ต้องสอบถามบางที่
Learning Curve
Normal
Good
Upgrade Version
Easy
Easy
นี่คือเปรียบเทียบเบื้องต้น จากประสบการณ์ในการพัฒนาโดยตรงและหาข้อมูลเพิ่มเติมครับ
สาเหตุที่ต้องพัฒนาด้วย MVC

  1.  ข้อได้เปรียบสำหรับเริ่มโปรเจคใหม่คือ Pattern ในการพัฒนาที่ชัดเจนกว่า Web Form กับการวาง Pattern แบบ Model, View, Controller เปรียบเสมือนการวาง ครบเป็น Module ที่ง่ายต่อการ จัดการพัฒนาหลายๆคนพร้อมกับ
  2.   ยืนหยุ่นกับ Developer มาก ทำให้การพัฒนาเร็ว และแม้จะไม่ชำนาญด้านการพัฒนาสำหรับ .Net ก็สามารถจัดการส่งต่อให้ผู้เชี่ยวชาญได้ง่าย
  3.  หากวาง Style ในการเขียนและตั้งชื่อตัวแปร แล้ว ผู้ต่อนั้นง่ายมาก
  4. เรียนรู้ง่ายและไว
  5. สามารถ Plug กับ Pattern อื่นได้ง่ายเช่น Repository, Invention of Control หรือ อื่นๆ
  6. เขียน RESTful Service ได้ดี ง่ายต่อการเขียนติดต่อกับ Cross Platform
สามารดูเพิ่มเติมได้ ที่นี่
ลิงค์เพิ่มเติมสำหรับ Asp.net MVC
http://sinosoi.wordpress.com/2011/07/14/asp-net-mvc-01-%E0%B8%A1%E0%B8%B1%E0%B8%99%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/

http://www.microsoft.com/thailand/msdn/ASPNET_MVC3_HTML5_Vol1.aspx

สัญญาณลมเปลี่ยนทิศรัฐประหารเริ่มไม่ได้ผลอย่างที่คิด

หลังจากที่มีรัฐประหารมาประมาณอาทิตย์นึง มีเคอฟิวแล้ว แต่ว่าหลังจากนั้นผู้คนเริ่มปรับตัวได้ แรกเริ่มรัฐประหารครั้งนี้เหมือนยาดีที่จะได้ผล ทำให้คนเลิกทะเลาะกัน แต่ณ วันนี้(2014/05/26) สัญญาณไม่ดีเริ่มออกมาเรื่อยๆ เริ่มตั้งแต่ ต่างชาติเริ่มประนามเรามากชาติขึ้นเรื่อยๆ และล่าสุดคนนับพันนับร้อย ออกมาประท้วงทหารมากขึ้น มันแสดงให้เห็นว่าสัญญาณการใช้กำลังของทหารนั้นเริ่มจะมีปัญหา ยาเริ่มไม่ได้ผลแล้ว ซึ่่งถ้าเป้นงี้ละก็บางที สิ่งที่คณะรัฐประหารทำครั้งนี้อาจจะไม่ได้ผลเลยก็เป็นได้ เพราะอะไร? นั่นเพราะผู้คนเริ่มเปลี่ยนเป้าหมาย และผู้อยู่เบื้องหลังทั้งหลายอาจจะจับมือกัน เริ่มส่งสัญญาณให้ต่อต้านทหารมากขึ้น ผมเองก็ไม่ได้รู้ว่ามีหรือไม่มีผู้อยู่เบื้องหลัง แต่สัญญาณที่ออกมา มันเริ่มส่อเค้ารุนแรงขึ้น ผู้ประท้วงจะเริ่มมากขึ้น สิ่งนี้ถ้าคสช.คิดจะอยู่ยาวบางทีอาจจะต้องหนักเพราะมันเป็นสัญญาณบอกว่า ถ้าระยะยาวละก็ปัญหาเกิดแน่ ทหารใช้กำลังไม่อยู่แน่ และหลายๆสิ่งจะเริ่มแพร่ออกไป มันหยุดไม่่อยู่ จากที่จะห้ามสงครามกลางเมืองอาจจะกลายเป็นจุดไฟให้มันเร็วขึ้นหลายเท่าตัว เพราะทหารมีอาวุธและเป้าหมายมันชัดเจนเกินไป นั่นคือคนใส่ชุดทหาร มันชัดเจนจนสัญลักษณ์แสดงอำนาจนี้กลายเป็นเป้าเรียบร้อย ถ้าคณะคสช.ชุดนี้จะรักษาไว้ได้ คงต้องรีบทำอะไรสักอย่างให้ชัดเจนแล้ว ไม่งั้นละก็แค่นโยบายปิดหูปิดตา ปิดข่าว ปิดสื่อ มันไม่ได้ผลแล้วล่ะ
ผมไม่รู้ทางแก้ที่ดีคืออะไร แต่ผมว่าตอนนี้ที่น่าเกลียดคือนักการเมืองบางพวก ยังติดสันดานโหนกระแสไม่เลิก นี่ก็เป็นสัญญาณอย่างนึงที่ทหารคงต้องคิดแล้วล่ะว่าจะจัดการยังไงดีกับคนกลุ่มนี่้ แต่ทางที่ดี ถ้าทำได้เร็วพวกคุณต้องประกาศรัฐธรรมนูญใหม่ซะ ให้ชัดเจนไปเลย ว่านายก และคณะรัฐบาลนั้นเป็นใครวิธีไหน เพราะไม่ว่าจะมาจากวิธีไหน ทางไหน หรือจะเปลี่ยนจากประชาธิปไตยเป็นแบบอื่นก็ให้ออกมาเลยยังไงซะตอนนี้มันก็เริ่มมีสัญญาณไม่ดีแล้ว ผมว่าไม่นานเราคงจะได้เห็นแน่นอน แต่ยังไงเสียทางที่ดีสำหรับประชาชนคือการเป็นไม้ไผ่ เพราะไม้ไผ่ปรับตัวได้ทุกสถานการณ์ การปกครองไม่ว่าจะระบบใดล้วนมีข้อดีและข้อเสียทั้งสิ้น คนแกร่งเท่านั้นที่จะอยู่รอดได้

วันศุกร์ที่ 23 พฤษภาคม พ.ศ. 2557

ERP –Enterprise Resource Planning ตอน 1 เกริ่นนำ ERP



หลายคนเคยได้ยินศัพท์คำว่า ERP มามากมายหลายคนในวงการ Developer ก็มักจะได้ยินคำนี้เสมอว่า เคยทำระบบ ERP มาไหม? ระบบ ERP เคยได้ยินรึเปล่า? SAP เคยทำไหม? วันนี้ผมเลยจะมาขยายความคำว่า ERP จากประสบการณ์ของผมนะครับ
ERP ย่อมาจาก Enterprise Resource Planning  ถ้าแปลตรงตัวคือระบบวางแผนจัดการทรัพยากรองค์กรนั่นแหละ แต่โห พอแปลแล้วมันใหญ่จัง แล้วจะจัดการยังไงบ้าง(ในทีนี้ผมขออ้างเป็นระบบ ERP System Software นะครับ) สำหรับผม ERP นั้น ผู้จะทำควรจะรู้พื้นฐานเหล่านี้ก่อนคือ OGM – Organization Management การจัดการองค์กร โดยควรจะหาทฤษฏีมาอ่านซะก่อน เพราะการจัดการองค์กร พื้นฐานนั้นจะ เน้นที่ Human Behavior  แล้วมันเกี่ยวไรกับERP? เกี่ยวแน่นอน  เพราะระบบ ERP นั้นต้องบริหารองค์กรทั้งหมด แต่ถ้าผู้ทำผู้ให้ข้อมูล ไม่เคยรู้ว่าพฤติกรรมของแต่ละแผนก แต่ละบุคคล ที่ต้องการไปเก็บข้อมูลเพื่อ สร้างออกมาให้ผู้ใช้ๆ กลับไม่สอดคล้องกับสิ่งที่เขาทำอยู่ปัจจุบัน คำถามคือ ผู้ใช้จะใช้หรือไม่? คำถามนี้ตอบยากเรพาะบางบริษัทออกเป็นมาตรการต้องใช้ แต่บางบริษัทก็ทำอะไรไม่ได้เพราะหลังจากทำมานั้นก็ทำให้ บริษัททุ่มเทไปล้มเหลวได้ ฉะนั้นจึงควรจะทำการรู้เกี่ยวกับการจัดการองค์กรก่อนพื้นฐานจึงจะทำการ สร้างระบบ ERP ขึ้นมาใช้
ERP คือระบบจัดการองค์กรระบบนึง โดยมีพื้นฐานที่ทุกแผนกในองค์กรต้องทำงานและรายงานออกมาเป็น Real-time  การเชื่อมกันของแต่ละแผนกคืออะไร ในทฤษฏีของ ERP นั้นจะเชื่อมกันด้วยระหว่างแผนก พื้นฐาน คือ  ฝ่ายบุคคล,ฝ่ายผลิต,ฝ่ายขาย,ฝ่ายจัดซื้อ,ฝ่ายตรวจสอบคุณภาพสินค้า,ฝ่ายขนส่ง และฝ่ายที่สำคัญคือฝ่ายบัญชี ซึ่งการทำ ERP นั้นจะลดภาระฝ่ายบัญชีลงเพราะข้อมูลทุกอย่างจะต้อง เป็น Real time ทำให้ไม่ว่าจะฝ่ายไหนก็ต้องมีงบบัญชีหมด เพราะเมื่อทำการเรียบร้อยแล้วจะต้องมีการลงบัญชีของบริษัท จึงจะเรียกว่า ERP แต่ว่า สำหรับผม ERP นั้น สิ่งที่ผมคิดคือ ERP = ฝ่ายบริหาร + ฝ่ายปฏิบัติการ + ฝ่ายบัญชี + ฝ่ายลูกค้า + ฝ่ายขนส่ง คือ การสร้าง Software ที่ให้ผู้บริหารได้วางแผนและจัดการ พร้อมกับ Monitor สถานะการทำงานในแต่ละแผนกขณะเดียวกัน ก็โปรแกรมนี้ก็สามารถ รายงานสถานะได้อย่าง Real-time และสามารถโฟกัสถึงปัญหาที่เกิดขึ้นในแต่ล่ะฝ่าย ซึ่งฝ่ายแต่ละฝ่ายจะขาดกันไม่ได้ จำเป็นต้องเชื่อมหากันเสมอและรายงานกันอย่างทันที โดยผู้บริหารจำเป็นจะต้องรู้ข้อมูลถึงสถานะของบริษัทในปัจจุบันไม่ว่าจะเป็นการเงิน การขาย การขนส่ง ความพอใจของลุกค้า กลยุทธ์การตลาด เป็นต้น และฝ่ายปฏิบัติการ จำเป็นจะต้องรายงานผลการปฏิบัติการอย่าง Real-time และถูกต้อง โดยฝ่ายปฏิบัติการอาจจะประกอบด้วย ทีมจัดซื้อ,ทีมการตลาด,ทีมผลิตกับทีมตรวจสอบการผลิต ทีมบุคคลและทีม IT การทำทั้งหมดจึงจะเรียกว่าครบ สำหรับฝ่ายปฏิบัติการ ทีมที่ขาดไม่ได้เลยและไม่ควรขาดเลยคือ ทีม IT เพราะเทคโนโลยีการสื่อสารเป็นสิ่งสำคัญ ยิ่งทีม IT แกร่งและมีความรู้เท่าไร ย่อมหมายถึงว่าคุณสามารถสร้างสรรค์ คุณภาพระบบจัดการชั้นยอดได้ แต่ว่า อย่าให้ความสำคัญกับทีมใดทีมหนึ่งจนเกินไปเพราะทุกทีมมีความสำคัญเหมือนกันหมด
 
ERP ไม่ใช่ซอฟท์แวร์เทพพระเจ้าที่สามารถบรรดาลได้ทุกอย่าง ขึ้นอยู่กับการออกแบบ ผู้บริหารจะต้องมีการคิดและลงทุน บางคนอาจจะใช้ SAP ที่เป็นระบบ ERP ที่ใหญ่ที่สุดขณะนี้ บางคนก็ใช้เจ้าอื่นเช่น Oracle หรือ ของ Microsoft Sharepoint เป็นต้น  ไม่มีซอฟ์แวร์ไหนสมบูรณ์และสอดคล้องกับทุกบริษัท เพราะแต่ละบริษัทมีโครงสร้างต่างกันแผนกต่างกัน รูปแบบของอุตสาหกรรมต่างกัน แต่พื้นฐานนั้น ที่จะต้องมีใน ERP คือ ฝ่าบริหาร ,ฝ่ายปฏิบัติการ,ฝ่ายบัญชี ซึ่งเป็นหัวใจในการทำงานเลย แต่ว่าทั้งนี้จะขึ้นไม่ขึ้นกับ Organization Chart นั้น ขอให้เป็นประเด็นรองลงไปเพราะบางองค์กร จะใช้ Organization Chart แบบ Landscape คือ ทุกคนเท่ากันหมดแบ่งแยกตามหน้าที่ไม่มีใครใหญ่กว่าใคร แต่บางบริษัทก็จะใช้แบบ Pyramid Tree นั่นคือหัวสุดใหญ่ที่สุด แล้วแต่ละองค์กรไป การยึดติดกับ รูปแบบใดรูปแบบหนึ่งนั้นไม่ใช่ทางออกที่ดีเลย ควรจะพิจารณาตาม ความเหมาะสม ครับ



Html5 Develop - WebStorage



Storage คือ แหล่งเก็บข้อมูลพื้นฐานโดย ใน Html5 สามารถเก็บข้อมูลพื้นฐานได้สองแบบคือ LocalStorage และ sessionStorage

แล้วสองอย่างนี้ดีกว่า Cookie ยังไง?
-         คุ้กกี้มีข้อจำกัดที่เก็บข้อมูลได้ที่ 4KB เท่านั้นแต่ LocalStorage และ SessionStorage มีขนาดใหญ่กว่ามาก
-         LocalStorage และ SessionStorage เร็วกว่าข้อมูล Cookie
LocalStorage กับ Session Storage ควรใช้อันไหน?
-         อยู่ที่สถานการณ์ใช้งานโดย LocalStorage จะอยู่ตลอดไม่มีวันหายไปแต่ SessionStorage จะหมดไปเมื่อปิด Windows หรือ Tab

คำสั่งพื้นฐาน คำสั่งเหล่านี้สามารถใช้ได้ทั้ง sessionStorage และ LocalStorage
setItem(key,value) ใช้สำหรับเก็บข้อมูลและสร้างค่าเริ่มต้น ตัวอย่างการเซ็ตค่า
LocalStorage - localStorage.setItem('textSize', 'large');
SessionStorage- sessionStorage.setItem(‘textSize’,’large’);
-         getItem(key) ดึงข้อมูลโดยใช้คีย์ที่ระบุ
-         removeItem(key) ลบข้อมูลตามคีย์
-         key(n) แสดงชื่อของkey ตาม index ที่ระบุโดยเริ่มต้นที่ 0
-         clear() ลบข้อมูลที่เก็บไว้ทั้งหมด(เฉพาะโดเมินนั้นๆ)
-         length แสดงจำนวนข้อมูลที่เก็บไว้ทั้งหมด
                                 
SessionStorage มีวิธีเรียกใช้ได้ง่ายๆดังตัวอย่างต่อไปนี้
if (sessionStorage.clickcount)
    {
                sessionStorage.clickcount=Number(sessionStorage.clickcount)+1;
    }
  else
    {
          sessionStorage.clickcount=1;
    }
document.getElementById("result").innerHTML="You have clicked the button " + sessionStorage.clickcount + " time(s) in this session.";

สำหรับการใช้ Web Storage บาง Browser อาจจะยังไม่ Support จำเป็นต้องใช้ Code ทดสอบดังนี้
if(typeof(Storage)!=="undefined")
  {
  }
else
  {
                document.getElementById("result").innerHTML="Sorry, your browser does not support web storage...";
  }

ตัวอย่างการใช้ LocalStroage

localStorage.pageid = 5;//เซ็ตค่าใส่ LocalStorage ชื่อ Pageid


การประยุกต์ การเขียนโปรแกรม แบบ Web ใหใช้ Storage ในฝั่ง Client มากขึ้น ทำให้สามารถเปิดกว้างในการพัฒนาได้มากขึ้นสามารถชี้ให้เห็นถึงประโยชน์ได้ดังนี้

  •  LocalStorage จะอยู่จนกว่าจะมีการเคลียร์ข้อมูลของ Browser ทำให้ Developer ที่มีประสบการณ์สามารถ จัดการกับข้อกังวลในการพัฒนาข้ามแพลตฟอร์มไปยัง Mobile ได้
  •  SessionStorage จะอยู่จนกว่าจะปิด Browser แทน Session นั่นหมายความว่า Developer สามารถใช้ Session ที่อยู่ในฝั่ง Client ได้ง่ายขึ้น ทำให้ Server ลดการทำงานลง พร้อมกับ Developer สามารถเขียนโปรแกรมฝังลงในฝั่ง Client และทำการเรียกโดยผ่าน Ajax ทำให้ขั้นตอนในการพัฒนา ลดภาระ Server ลงอย่างเห็นได้ชัด
  • ข้อควรระวัง

-         WebStorage จะมีขนาดจำกัด ทั้ง SessionStorage และ LocalStorage ฉะนั้น การใช้ตัวแปรประเภทนี้ ควรจะมีการคิดว่า ขนาดไม่ควรจะเกิดกี่ KB
-         ข้อมูลของตัวแปร WebStorage จะอยู่ในรูปแบบของ String หากต้องการประยุกต์ใช้ ยกตัวอย่างเช่น int ควรจะทำการ Parse() ซะก่อน จึงจะนำมาใช้งานไม่งั้น อาจจะเกิดการไล่กันจนงงได้