คนที่ทำเว็บหลายคนคงรู้จักกับ JSON บ้างไม่มากก็น้อย ซึ่งมีคู่แข่งอย่าง XML ซึ่งเกิดมาก่อนซึ่งเราไม่พูดถึงในที่นี้ แต่ผมจะอธิบายความแตกต่างระหว่าง JSON และ JSONP ซึ่งทั้งสองใช้สำหรับรับส่งข้อมูลระหว่าง server กับ client (browser, app ต่าง ๆ) ซึ่งทั้งสองมี Syntax เหมือนกัน แต่สิ่งที่ทั้งสองแตกต่างกันคือ JSON ออกแบบมาเพื่อทำงานใน web ที่อยู่ domain (url) เดียวกัน ส่วน JSONP ใช้สำหรับส่งข้อมูล cross domain (คนละเว็บ) และซึ่งมีลักษณะแตกต่างกันเล็กน้อย ดังรูปด้านล่าง
August 29, 2014
August 6, 2014
Microsoft SQL Server 2014 Express
ปัญหาโลกแต่สำหรับคนที่ชอบของฟรี เพื่อการทดสอบหรือการใช้งานขนาดเล็กคือมันเข้าใจยาก จากเมือสองปีที่แล้ว Microsoft ได้ออก SQL Server 2012 และตอนนี้ได้ออก version ใหม่ 2014 ซึ่งระยะการออกผลิตภัณฑ์เดียวนี้มันสั้นเหลือเกินถ้าไม่เกลงใจคงออกทุกปี เหมือน Visual Studio แต่สุดท้ายใครอยากอัพเดทหรือไม่ก็ตามอัธยาศัย แต่ถ้าไม่ได้ใช้งานและอยากลองของก็ติดตั้งกันได้ แต่ต้องเลือกให้ถูกต้องเพราะตอนดาวน์โหลดมันสับสนเหลือเกิน
Microsoft SQL Server 2014 Express เป็นเวอร์ชั่นฟรี, feature-rich edition ของ SQL Server ใช้สำหรับการศึกษา, การพัฒนา, การใช้งานบน desktop, web และ server ขนาดเล็ก, และสำหรับการ redistribution โดย ISVs. SQL Server 2014 Express ออกมาพร้อมกับ version เต็มของ SQL Server 2014 Management Studio แทนที่จะเป็น SQL Server 2014 Management Studio Express.
คุณสามารถ download ได้ตาม edition ของ Express จากลิ้งด้านล่าง:
http://www.microsoft.com/en-us/download/details.aspx?id=42299
Microsoft SQL Server 2014 Express เป็นเวอร์ชั่นฟรี, feature-rich edition ของ SQL Server ใช้สำหรับการศึกษา, การพัฒนา, การใช้งานบน desktop, web และ server ขนาดเล็ก, และสำหรับการ redistribution โดย ISVs. SQL Server 2014 Express ออกมาพร้อมกับ version เต็มของ SQL Server 2014 Management Studio แทนที่จะเป็น SQL Server 2014 Management Studio Express.
คุณสามารถ download ได้ตาม edition ของ Express จากลิ้งด้านล่าง:
http://www.microsoft.com/en-us/download/details.aspx?id=42299
July 21, 2014
Partial Classes
มีหลายเหตุที่ต้องแยก class (partial class) ได้ตามความซับซ้อนตามที่ต้องการ:
-
เมื่อทำงานกับโปรเจ็คขนาดใหญ่, การแยก class ไว้ในหลายไฟล์เพื่อให้โปรแกรมเมอร์สามารถทำงานกับ class นั้นได้ในเวลาเดียวกัน.
-
เมื่อทำงานกับการสร้าง code โดยโปรแกรม (automatically generated source), code สามารถถูกเพิ่มเข้าไปใน class โดยไม่ต้องสร้าง source file ใหม่. Visual Studio ใช้วิธีการนี้เมื่อใช้สร้าง Windows Forms, Web service wrapper code, and so on. คุณสามารถสร้าง code ที่ใช้งาน class โดยไม่ต้องแก้ไขาไฟล์ที่ถูกสร้างโดย Visual Studio.
-
แยกหนึ่งที่มีความซับซ้อน, ให้ใช้ modifier keyword เป็น partial , ดังเช่นด้านล่าง:
public partial class Employee
{
public void DoWork()
{
}
}
public partial class Employee
{
public void GoToLunch()
{
}
}
partial keyword แสดงให้เห็นว่าส่วนอื่น ๆ ของ class, struct, หรือ interface สามารถสร้างเพิ่มได้ใน namespace. ทุกอยางภายในต้องใช้ partial keyword. ทุกอย่างภายในต้อง available ตอน compile time ในรูปแบบ final type. ทุกส่วนต้องมี accessibility ที่เหมือนกัน, เช่น public, private, และอื่น ๆ.
ถ้ามีบางส่วน declared เป็น abstract, นั้นทำให้ทั้งหมดเป็น abstract. ถ้าหลาย ๆ ส่วนกำหนดเป็น sealed, นั้นทำให้ทั้งหมดของ type ที่มีอยู่เป็น sealed. ถ้าทุกส่วนของกำหนดเป็น base type, นั้นทำให้ทั้งหมดของของ type ที่ inherits จาก class ทั้งหมด.
- เมื่อทำงานกับโปรเจ็คขนาดใหญ่, การแยก class ไว้ในหลายไฟล์เพื่อให้โปรแกรมเมอร์สามารถทำงานกับ class นั้นได้ในเวลาเดียวกัน.
- เมื่อทำงานกับการสร้าง code โดยโปรแกรม (automatically generated source), code สามารถถูกเพิ่มเข้าไปใน class โดยไม่ต้องสร้าง source file ใหม่. Visual Studio ใช้วิธีการนี้เมื่อใช้สร้าง Windows Forms, Web service wrapper code, and so on. คุณสามารถสร้าง code ที่ใช้งาน class โดยไม่ต้องแก้ไขาไฟล์ที่ถูกสร้างโดย Visual Studio.
- แยกหนึ่งที่มีความซับซ้อน, ให้ใช้ modifier keyword เป็น partial , ดังเช่นด้านล่าง:
public partial class Employee { public void DoWork() { } } public partial class Employee { public void GoToLunch() { } }
partial keyword แสดงให้เห็นว่าส่วนอื่น ๆ ของ class, struct, หรือ interface สามารถสร้างเพิ่มได้ใน namespace. ทุกอยางภายในต้องใช้ partial keyword. ทุกอย่างภายในต้อง available ตอน compile time ในรูปแบบ final type. ทุกส่วนต้องมี accessibility ที่เหมือนกัน, เช่น public, private, และอื่น ๆ.
ถ้ามีบางส่วน declared เป็น abstract, นั้นทำให้ทั้งหมดเป็น abstract. ถ้าหลาย ๆ ส่วนกำหนดเป็น sealed, นั้นทำให้ทั้งหมดของ type ที่มีอยู่เป็น sealed. ถ้าทุกส่วนของกำหนดเป็น base type, นั้นทำให้ทั้งหมดของของ type ที่ inherits จาก class ทั้งหมด.
July 9, 2014
มีอะไรใหม่ใน ASP.NET Web API 2.2รู้
ณ. 30 มิถุนายน 2557
ก่อนอื่นขอออกตัวก่อนว่าไม่ได้เขียน Web API อย่างเป็นกิจลักษณะ แต่ช่วงหลังต้องไปซัพพอร์ทชาวบ้านข้างนอกก็เริ่มความเห็นความสำคัญของ Web API ขึ้นมาทันตาเพราะมันเป็นเหมือนโครงสร้างพื้นฐานที่ทำให้คนอื่นสามารถเขาไปต่อเติมในงานของตนเองได้ตามใจชอบ ที่เป็นกันก็เช่น API ของ Google (maps, plus, docs เป็นต้น), Facebook, Twitter และเจ้าอื่น ๆ อีกมากมายที่ให้บริการทั้งแบบเปิดสำหรับคนทั่วไป และแบบปิดเฉพาะองค์กร โดยคำว่า API ย่อมาจาก Application Programming Interface ซึ่งเป็นคำกลาง ๆ สำหรับโปรแกรมที่เป็นตัวช่วยให้โปรแกรมอื่นทำงานได้ตามที่ต้องการ แล้วรวมคำว่า Web เป็น Web API ก็เป็น API ที่ทำงานแบบ Web หรือผ่าน HTTP ซึ่งก็มีหลายตัวที่นิยม ก็เป็น Web service (แล้ว Microsoft มาพัฒนาต่อก็เป็น WCF -- Windows Communication Foundation) และ RESTful (แล้ว Microsoft มาพัฒนาต่อเป็น Web API ที่เราจะพูดถึง)
ก่อนอื่นขอออกตัวก่อนว่าไม่ได้เขียน Web API อย่างเป็นกิจลักษณะ แต่ช่วงหลังต้องไปซัพพอร์ทชาวบ้านข้างนอกก็เริ่มความเห็นความสำคัญของ Web API ขึ้นมาทันตาเพราะมันเป็นเหมือนโครงสร้างพื้นฐานที่ทำให้คนอื่นสามารถเขาไปต่อเติมในงานของตนเองได้ตามใจชอบ ที่เป็นกันก็เช่น API ของ Google (maps, plus, docs เป็นต้น), Facebook, Twitter และเจ้าอื่น ๆ อีกมากมายที่ให้บริการทั้งแบบเปิดสำหรับคนทั่วไป และแบบปิดเฉพาะองค์กร โดยคำว่า API ย่อมาจาก Application Programming Interface ซึ่งเป็นคำกลาง ๆ สำหรับโปรแกรมที่เป็นตัวช่วยให้โปรแกรมอื่นทำงานได้ตามที่ต้องการ แล้วรวมคำว่า Web เป็น Web API ก็เป็น API ที่ทำงานแบบ Web หรือผ่าน HTTP ซึ่งก็มีหลายตัวที่นิยม ก็เป็น Web service (แล้ว Microsoft มาพัฒนาต่อก็เป็น WCF -- Windows Communication Foundation) และ RESTful (แล้ว Microsoft มาพัฒนาต่อเป็น Web API ที่เราจะพูดถึง)
ฟังชั่นใหม่ใน ASP.NET Web API 2.2
OData v4
เราเพิ่มการรองรับ OData v4 protocal ใน release นี้. มีบางฟังชั่นที่เพิ่ม/เปลี่ยน อยู่ตามรายการด้านล่าง:
- รวมกับ ODL UriParser
- รองรับ cast สำหรับ primitive types
- รองรับ cast() ใน $filter
- รองรับสำหรับการใช้ open complex type
- ยกเลิด EntitySetController และ AsyncEntitySetController
- ใช้ OData Core Libraries 6.4.0
June 21, 2014
สิ่งที่ควรรู้เกี่ยวกับ Android Studio
คือมันกำลังพัฒนาอยู่ เพราะฉะนั้นหากมันทำงานไม่ได้ หรือแจ้ง ERROR เป็นเรื่องปกติ
Android Studio (Preview) 0.6.1
1. เมื่อติดตั้งเสร็จเรียบร้อย เปิดใช้งานโปรแกรมสร้าง Project แล้วคุณจะเจอ ERROR แรก ต้อนรับคือ
Android Studio (Preview) 0.6.1
1. เมื่อติดตั้งเสร็จเรียบร้อย เปิดใช้งานโปรแกรมสร้าง Project แล้วคุณจะเจอ ERROR แรก ต้อนรับคือ
Error:Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at http://gradle.org/docs/1.10/userguide/gradle_daemon.html
Please read below process output to find out more:
-----------------------
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
June 20, 2014
Microsoft Certification - Programming in C# 70-483
ดูเหมือนหลายคนจะมองข้าม และไม่ค่อยให้ความสนใจกับการสอบเซอร์กันเท่าไร แต่ถ้ามองในอีกมุมหนึ่ง การสอบวัดพวกนี้ช่วยให้คุณสามารถมีความเข้าใจที่ถูกต้องกับสิ่งที่เขาต้องการให้คุณเข้าใจ เชื่อสิว่าเราอาจไม่ให้ความสำคัญบางอย่างไป แล้วให้ความสำคัญกับบางอย่างมากเกินไป ซึ่งก็ไม่ใช่สิ่งที่ผิด แต่ มันไม่ครบสิ่งที่เขาต้องการให้เราเรียนรู้ ซึ่งการสอบพวกนี้จะช่วยเราได้ ไม่มากก็น้อย อย่างน้อยก็ทำให้เรา และคนที่จะรับเราเข้าทำงานรู้ว่า เราเข้าใจสิ่งที่เขาต้องการให้เราทำงานให้มากน้อยเพียงใด
April 15, 2014
ASP.NET MVC แสดงซื่อ Controller หรือ Action ใน View
หากคุณต้องการแสดงซื่อ Controller หรือ Action ปัจจุบันที่กำลังเรียกใช้อยู่สามารถใช้คำส่งได้เลย ความจริงจะเรียกว่าคำสั่งก็คงไม่ถูกนัก ควรเรียกว่า object นี้หน้าจะถูกว่าเพราะมันอยู่ ใน HttpContext object ครับ คุณยังสามารถเรียกค่าของ id ได้ด้วยเพียงเปลี่ยนค่าในเครื่องหมายคำพูด ถ้าเรียกให้ถูกต้องก็คือ array key เป็น id ดังตัวอย่างด้านล่าง
@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"]
@HttpContext.Current.Request.RequestContext.RouteData.Values["action"]
@HttpContext.Current.Request.RequestContext.RouteData.Values["id"]
@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"]
@HttpContext.Current.Request.RequestContext.RouteData.Values["action"]
@HttpContext.Current.Request.RequestContext.RouteData.Values["id"]
March 28, 2014
เพิ่ม class attribute ใน @Html.EditorFor
หาคุณพยายามใส่ class attribute ใน Html.EditorFor แบบด้านล้าง คำตอบคือทำไม่ได้
@Html.EditorFor(x => x.Created, new {@class="one"})
ต้องเปลี่ยนเป็น Html.TextBoxForModel แทน
@Html.TextBoxForModel(x => x.Created, new { @class = "date" })
@Html.EditorFor(x => x.Created
ต้องเปลี่ยนเป็น Html.TextBoxForModel แทน
@Html.TextBoxForModel(x => x.Created, new { @class = "date" })
March 6, 2014
Mobile emulation in Google Chrome
mobile web ค่อย ๆ พัฒนาขึ้นเรื่อย ๆ ในความสามารถของ application, สิ่งที่ทาง google หวังว่าจะรวมการ debug กับการ development บนเครื่องคอมพิวเตอร์. DevTools รวมการ support หลาย ๆ feature ที่สามารถช่วยให้คุณสามารถทำงานได้อย่างสะดวกในงานส่วนี้
Note: บางส่วนของเอกสารอาจไม่ได้อยู่ใน Chrome version ปกติ. ถ้าคุณไม่สามารถใช้งานได้. แนะนำให้ใช้ Chrome Canary ที่มี version ล่าสุดของ DevTools.
เปิดใช้งาน Emulation Panel
Chrome Canary ที่มีจำนวนของ mobile emulation tools ที่สำคัญที่สามารถเข้าถึงได้ใน Emulation panel ที่อยู่ใน Settings panel. วิธีเปิดการใช้งาน:
- เปิด Settings panel ภายใน DevTools.
- ทำการเปิด "Show 'Emulation' view in console drawer." ในหน้าส่วนของ Settings ที่รูปฟันเฟือง

February 20, 2014
ASP.Net – วิธีการ map virtual path เป็น physical path
ก่อนอื่น, มาทำความเข้าใจว่าอะไรคือ physical path และ virtual path. ตรงนี้คือตัวอย่าง web application project แบบง่าย ๆ . ภายใน the project, มี page หนึ่งเรียกว่า PageInRootDirectory.aspx. อันดับแรกต้องเข้าใจว่าอะไรคือ root directory หรือ root web application directory.
project นี้สร้างบน physically ภายใน the hard disc. วิธีที่เราสามารถหา folder ภายใจ project ที่ ถูกสร้างใน physical project? จากนี้, คลิกขวามใน folder และเลือก Open Folder in Windows Explorer. มันจะเปิด physical folder เมื่อ project นี้ได้สร้างเรียบร้อย. ถ้าเราดูว่า project ที่สร้างอยู่ที่ไหน, เราสามารถเห็นว่ามนจะแสดงใน D:/SampleWeb/SampleWeb.
Subscribe to:
Posts (Atom)




