August 11, 2018

แจ้งเปลี่ยนโดเมน

ทางเราจะทำการเปลี่ยนโดเมน จาก www.msmvcme.com เป็น msmvcme.blogspot.com แทน ท่านเข้าทางโดเมนได้เดิมได้อีกระยะหนึ่งไม่เกินหนึ่งปี จากนั้นจะต้องเข้าผ่านโดเมนใหม่จึงแจ้งเพื่อทราบ ขอขอบคุณในการให้ความสนในกับ blog นี้แม้จะผู้เขียนจะไม่ค่อยมีเวลาทำบทความมากนัก ขอขอบคุณครับ

December 4, 2017

สร้าง HTML dropdown (select option) ข้อความอยู่ด้านขวาโดย CSS

การกำหนดข้อความอยู่ด้านขวาใน Design Layout ของโปรแกรมต่างคงไม่ใช่เรื่องยาก แต่ถ้าเป็น HTML แล้วก็ไม่ใช่เรื่องง่ายซักเท่าไหร่ หรือว่าผมไม่เคยทำก็ไม่รู้คิดง่าย ๆ ก็แค่ใช้

select { text-align: right; }

แต่มันใช้ไม่ได้ผลนะสิครับขอความยังอยู่ที่เดิม และไงต่อละ google สิครับ ผลที่ได้คือ

select { direction: rtl; }

ผลที่ได้ขอความอยู่ทางขวามจริง แต่ ข้อความเรียงย้อน และ ลูกศรอยู่ด้านความ งานเข้าแล้วสิ google ไปอีก 3 ชม. แล้วก็ได้คำตอบว่า

select { text-align-last: right; } 
option { direction: rtl; }



ข้อความอยู่ขวา และลูกศรอยู่ความตามต้องการ text-align-last ไม่เคยใช้จริง ๆ ได้เรียนรู้ของใหม่อีกแล้ว และขอบคุณ StackOverFlow อีกแล้วครับท่าน


มาจาก https://stackoverflow.com/questions/7920677/text-align-right-on-select-or-option

June 5, 2017

Firebase101 - introduction

Firebase คืออะไร?
เมื่อก่อนคือระบบเรียวไทม์ดาต้าเบสท์ (realtime database) แต่หลังจากที่ Google ได้เป็นซื้อไปทำให้ Firebase โตขึ้น โตขึ้นทั้งขนาดและบริการ อาจจะเรียกได้ว่า Firebase ตอนนี้เป็น Platform แล้ว ผมขอให้คำนิยามของ Firebase ตอนนี้คือ PAAS (Platform As A Service) ณ ตอนนี้เพราะบริการของ Firebase นั้นขยายไปไกลมาก จากเดิมมีแค่ realtime database เพียงอย่างเดียว แต่ต้อนนี้มีบริการอื่น ๆ เพิ่มมาด้วยอีกมากมาย เช่น

Static Hosting -- มันไม่ใช่ hosting แบบปกติที่คุณสามารถ ftp ไฟล์ขึ้นไปได้ แต่คุณต้องรันคำสั่ง (Firebase command) เพื่ออัพโหลดข้อมูลขึ้นเซิร์ฟเวอร์,

Storage -- เป็น cloud storage ที่ให้คุณอัพโหลดไฟล์ของผู้ใช้บริการขึ้นตอนใช้งาน,

Authentication -- เรียกง่าย ๆ ว่าเป็นระบบ login หรือ logon เรียกเป็นไทยว่าระบบยืนยันตัวตนที่ทำให้คุณไม่ได้เขียนโค้ดมากมายเพื่อการยื่นยันตัวตน และยังสามารถเชื่อมต่อ social network ต่าง ๆ เพื่อให้ผู้ใช้สะดวกในการใช้งาน

นี้เป็นบริการหลักของ Firebase แต่ยังมีบริการอื่น ๆ ที่ยังไม่ได้พูดถึงที่ทำให้ชีวิตคุณง่ายขึ้นหาก แล้วเราจะมาศึกษา Firebase ด้วยกัน โดยผมขอเริ่ม Firebase ที่ทำงานกับ website คือ Firebase js ก่อนครับ

November 14, 2014

ความแตกต่างระหว่างคำว่า Tire กับ Layer

Difference between Tier and Layer

สิ่งหนึ่งที่เป็นความสับสนสำหรับผู้เริ่มต้น. อย่างน้อยเราก็คิดว่าเหมือนกัน. แต่มันไม่เหมือนกัน. Tier บอกถึงว่าทำงานคนละ Hardware. หมายความว่า components นั้นทำงานแยกกันคนละเครื่อง. แต่ในกรณีของ Layer นั้น components นั้นทำงานในระบบเดียวกัน

October 29, 2014

วิธีลัดในการสร้างไฟล์ C# class จาก JSON responses

Quckly Generate C# Classes from JSON Responses



วีดีโอสั้น ๆ แสดงวิธีการที่ developer ที่ใช้ Web Essentials Visual Studio Plugin, และใช้ quick tip กับ quickly generate typed C# classes โดยใช้การทำงานร่วมกับ JSON Responses.  โดนวิธีนี้เป็นวิธีที่สะดวกในการสร้าง application ที่เรียกใช้ REST API ที่ return ค่าเป็น JSON responses.

September 1, 2014

SOAP Service Architecture

SOAP เป็นช่องทางสำหรับส่งข้อมูล Web Services messages บนเครือข่าย Internet/Internet. มันเป็นส่วนหนึ่งของมาตรฐานที่กำหนดโดย W3C. SOAP เป็นหนึ่งทางเลือกจาก Representational State Transfer (REST) และ JavaScript Object Notation (JSON).

SOAP มีอยู่ 2 ส่วน:
     1. optional header มีสำหรับข้อมูลเกียวกับการ authentication, encoding ของ data, หรือวิธีรับรู้ข้อมูลของ SOAP message ที่ใช้จัดการกับ message.
     2. body ที่มี message. ที่ messages สามารถระบุการใช้งาน WSDL specification.

SOAP ปกติใช้ HTTP, แต่ protocols อื่นเช่น Simple Mail Transfer Protocol (SMTP) ซึ่งสามารถใช้ได้. SOAP สามารถถูกใช้แลกเปลี่ยนเอกสารทั้งหมดหรือเรียกใช้ remote procedure.

JSON to JSONP bypass Same-Origin Policy

บทนำ
บทความเก่าของเจ้าของบทความ (Prepare a JSON Web Service and access it with JQuery), ได้อธิบายเกียวกับ JSON, วิธีที่จะ return JSON data จาก Web Service, และวิธีใช้ JSON-enabled Web Service โดย JQuery. โดยในบทความนี้, จะอธิบายวิธีใช้งาน JavaScript Object Notation with Padding (JSONP), ที่เป็น extended concept จาก JSON, สามารถถูกใช้งานเพื่อแก้ปัญหาสำหรับ cross domain.

คืออะไรและใช้ทำไม JSONP?

AJAX เป็น key technology ใน web 2.0 ที่เริ่มใช้ในวงกว้างใน web sites. AJAX ใช้ XMLHttpRequest client side API เพื่อติดต่อกับ server แบบ background. ไม่ว่าอย่างไร, สิ่งที่ไม่อนุญาตให้ทำการสื่อสาร cross domain เนื่องจากเหตุผลด้าน security. JavaScript Object Notation with Padding (JSONP) เป็นทางที่ลดช่องว่าง JSON data จาก external domains. ซึ่งเป็นวิธีที่ดีกว่าและเขาใจได้ง่ายกว่าวิธีอื่น ๆ (เช่น web proxy และ IFrame) เพื่อเอาข้อมูลจาก external domain.

Same-Origin Policy

นโยบาย Same-origin เป็นconcept ในแบบ browser-side programming languages (เช่น JavaScript) กับการอนุญาตให้เข้าถึง resources ในเว็บไซต์เดียวกัน (domain เดียวกัน) แต่ป้องกันการเข้าถึง resources จากต่าง domains. ที่เหนือกว่านโยบาย same origin, ซึ่งมีสองวิธีที่นิยมใช้กัน:

ใช้ Proxy Web Service

XMLHttpRequest (ใน AJAX) ไม่อนูุญาตให้เรียก cross domain, โดยปกติใช้วิธีการใช้ proxy Web Service เพื่อ access third party data. ถ้าคุณมีเว็บไซต์โดเมน www.mydomain.com และคุณต้องการ access data จาก domain อื่นเช่นเรียก www.thirdpartydomain.com. โดย AJAX, คุณไม่สามารถเข้าตรงจาก Web Service บน www.thirdpartydomain.com, แต่คุณสามารถเขียน Web Service จาก domain ของคุณเพื่อเข้าไปเอาข้อมูลจาก www.thirdpartydomain.com. ที่แสดงในรูปที่ 1:


Figure 1: การใช้ proxy Web Service เพื่อเข้าถึงข้อมูลจาก different domain
นี้เป็นวิธีการทำงานของ XMLHttpRequest เรียก Web Service (จาก the proxy Web Service) ใน domain ของตัวเองและจากนั้น proxy Web Service เรียก Web Service ที่แท้จริงต่อไปที different domain. แต่วิธีที่ง่ายและใช้ในวงกว้างในการแก้ปัญหา, มันใช้ Web Service สองครั้ง, ซึ่งทำให้ล่าช้า. ดังนั้นทุก ๆ การเรียก external Web Service แล้ว requires กลับมาที่เว็บ Web Service ของเรา, ซึ่งจะทำให้ server ของเลามีภาระกับ thread เพื่อ process มากขึ้น.

August 29, 2014

JSON กับ JSONP

คนที่ทำเว็บหลายคนคงรู้จักกับ JSON บ้างไม่มากก็น้อย ซึ่งมีคู่แข่งอย่าง XML ซึ่งเกิดมาก่อนซึ่งเราไม่พูดถึงในที่นี้ แต่ผมจะอธิบายความแตกต่างระหว่าง JSON และ JSONP ซึ่งทั้งสองใช้สำหรับรับส่งข้อมูลระหว่าง server กับ client (browser, app ต่าง ๆ) ซึ่งทั้งสองมี Syntax เหมือนกัน แต่สิ่งที่ทั้งสองแตกต่างกันคือ JSON ออกแบบมาเพื่อทำงานใน web ที่อยู่ domain (url) เดียวกัน ส่วน JSONP ใช้สำหรับส่งข้อมูล cross domain (คนละเว็บ) และซึ่งมีลักษณะแตกต่างกันเล็กน้อย ดังรูปด้านล่าง


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

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 ที่เหมือนกัน, เช่น publicprivate, และอื่น ๆ.
ถ้ามีบางส่วน declared เป็น abstract, นั้นทำให้ทั้งหมดเป็น abstract. ถ้าหลาย ๆ ส่วนกำหนดเป็น sealed, นั้นทำให้ทั้งหมดของ type ที่มีอยู่เป็น sealed. ถ้าทุกส่วนของกำหนดเป็น base type, นั้นทำให้ทั้งหมดของของ type ที่ inherits จาก class ทั้งหมด.