Remote Debugging ASP.NET application

ในการพัฒนาเว็บแอพพลิเคชัน การที่จะ publish เว็บขึ้น server ผู้พัฒนาย่อมมีการทดสอบการทำงานของแต่ละฟังก์ชันแต่ละ process ผ่าน localhost ก่อนอยู่แล้ว ว่าสามารถทำงานได้ถูกต้อง ไม่พบ error หรือปัญหาใดๆ แต่ในบางครั้งพบว่า เมื่อ publish เว็บไปแล้ว กลับพบ error ในบางฟังก์ชัน ทั้งที่ฟังก์ชันนั้นผ่านการทดสอบบน localhost ว่าทำงานถูกต้องแล้ว ซึ่งอาจเกิดจาก Environment ในตอนที่เรา run ที่ localhost กับบน server ไม่เหมือนกัน หรือฐานข้อมูลที่ทดสอบกับฐานข้อมูลที่ใช้งานจริงมีข้อมูลที่ conflict กันอยู่ เป็นต้น ซึ่งบทความนี้ผู้เขียนจะมาแนะนำ Remote Debugging Tool สำหรับผู้พัฒนาเว็บด้วย ASP.NET Remote Debugging Tool คือ เครื่องมือที่ใช้ในการ remote debug สำหรับ ASP.NET แอพพลิเคชัน ซึ่งเป็นเครื่องมือขนาดเล็กที่มีชื่อว่า “Msvsmon.exe” ที่ให้เราสามารถ debug  code เพื่อหา error โดยการ remote จาก Visual Studio ไปยัง IIS server   ติดตั้ง Remote Debugging Tool บน Windows Server download ตัวติดตั้ง Remote tools ตาม version ของ Visual Studio ที่เราใช้งาน เมื่อ download มาเรียบร้อยแล้วให้ทำการติดตั้ง โดยคลิกขวาที่ไฟล์ติดตั้ง เลือก Run as administrator จะปรากฎหน้าต่างดังรูป   ให้เลือก Configure remote debugging จะเสร็จสิ้นขั้นตอนการติดตั้งและจะปรากฏหน้าต่าง Remote Debugger ซึ่งตอนนี้ Remote debugger ทำงานแล้ว โดยรอการเชื่อมต่อจากฝั่ง Visual Studio (ภายหลัง สามารถเรียกใช้งาน Remote Debugger ได้จาก Start menu) Attach Process จาก Visual Studio เครื่องพัฒนา เปิด Visual Studio ขึ้นมา และเลือก project ที่จะใช้งาน ที่แถบเมนูด้านบน เลือก Debug >> Attach to Process ปรากฎหน้าต่าง Attach to Process ดังรูป ในส่วนของ Qualifier ให้ระบุชื่อหรือ IP ของเครื่อง server ที่ web เราวางอยู่ และกดปุ่ม Refresh ด้านล่างเพื่อ connect ไปยังเครื่อง server ดังรูป 4. เลือก process ที่ชื่อ w3wp.exe โดยสังเกตที่คอลัมน์ User Name เป็น path ของ site ที่เราต้องการทดสอบ หลังจากนั้นกดปุ่ม Attach ดังรูป 5. เปิด browser และพิมพ์ url ไซต์ของเรา http://<remote computer name> 6. เลือกมาร์กจุด breakpoint ที่จะ debug code ตามต้องการ เราก็จะสามารถ debug code โดยการ remote ไปยังเครื่อง server ที่เราได้ deploy เว็บของเราไปแล้วได้เหมือนการ debug บนเครื่อง

Read More »

Xamarin.iOS : ติดตั้งซอฟแวร์ และสร้างโปรเจ็ค

การพัฒนาแอปพลิเคชันสำหรับระบบปฏิบัติการ iOS นั้นมีหลายช่องทางในปัจจุบัน โดยไม่นานมานี้ ทางไมโครซอฟ ได้เข้าซื้อ Xamarin ซึ่งเป็นซอฟแวร์ สร้างแอปพลิเคชันสำหรับ Android, iOS, Windows Phone โดยใช้ภาษา C# โดยมีแนวคิดแชร์โค้ดในส่วน Logic ระหว่างแพลตฟอร์มได้ (แต่ส่วน User Interface และ Controller ต้องเขียนแยกกัน) ซึ่งเดิมทีซอฟแวร์ตัวนี้มีค่าใช้จ่ายในการนำมาใช้งานพอสมควร แต่ปัจจุบัน สามารถใช้ร่วมกับ Visual Studio ได้ตั้งแต่รุ่น Community ซึ่งฟรี ทำให้มีความน่าสนใจในการนำมาใช้งานสำหรับ ทีมพัฒนาระบบ ที่ใช้ Visual Studio ร่วมกับ ภาษา C# อยู่แล้วเป็นอย่างมาก สิ่งที่ต้องมี สำหรับการใช้ Xamarin พัฒนา iOS แอปพลิเคชัน 1.เครื่องคอมพิวเตอร์ที่ติดตั้ง macOS ได้ เช่น MacBook , MAC Pro, iMAC เป็นต้น หรือหากท่านใดสามารถสร้าง Virtual Machine ด้วย VirtualBox หรือ VMware แล้วติดตั้ง macOS ได้ ก้สามารถใช้งานได้เช่นกัน 2.Apple ID ที่ลงทะเบียน Apple Developer Account ไว้เรียบร้อยแล้ว (มีค่าใช้จ่ายรายปีประมาณ 3000 บาท) 3.หากต้องการใช้ Visual Studio เวอร์ชันสำหรับ Windows ในการพัฒนาก็ต้องมี เครื่องคอมพิวเตอร์อีกเครื่องที่ติดตั้งระบบปฏิบัติการ Windows (สำหรับท่านที่ต้องการใช้เครื่องเดียว สามารถใช้ Xamarin Studio หรือ Visual Studio For Mac ได้ เท่าที่ผมทดลองใช้งานก็มีความพร้อมระดับใช้งานได้ แม้จะเป็นเวอร์ชั่น Preview ในขณะที่ทดลองก็ตาม) ติดตั้ง Xamarin และ ตั้งค่าบน macOS 1.ติดตั้ง Xcode จาก App Store ให้เรียบร้อย เนื่องจากตัว Xamarin จำเป็นต้องใช้งานทั้ง iOS SDK และ Simulator ที่ติดตั้งมาพร้อมกับ Xcode ในการ Build และ Run เพื่อทดสอบแอปพลิเคชันของเรา 2.ใช้ Apple Developer Account สร้าง Provisional Profile ได้ที่ https://developer.apple.com/account/ios/certificate จากนั้นทำการดาวน์โหลดและติดตั้งให้เรียบร้อย 3.ดาวน์โหลดตัวติดตั้ง ที่ https://www.xamarin.com/download ใส่ข้อมูล ชื่อ, อีเมล, หน่วยงาน แล้วเลือกว่ามีการติดตั้ง Visual Studio ไว้แล้วหรือไม่ เลือกยอมรับข้อตกลง เลือก Download Xamarin Studio for OS X 4.เมื่อเริ่มติดตั้งจะมีหน้าจอให้ยอมรับข้อตกลง และแสดงความคืบหน้าในการติดตั้ง รอจนแจ้งผลติดตั้งเสร็จสิ้น 5.ตั้งค่าเปิดใช้งาน Remote Login สำหรับการเชื่อมต่อจากเครื่องพัฒนาอื่นไปที่ System Preferences > Sharing 6.เสร็จเรียบร้อยในฝั่ง macOS ติดตั้ง Xamarin บน Windows เพื่อใช้งานร่วมกับ Visual Studio 1.ดาวน์โหลดตัวติดตั้ง Visual Studio เวอร์ชั่นที่ต้องการใช้งาน สามารถใช้ได้ทั้ง Community, Professional, Enterprise (ในขณะที่เขียนผมใช้เวอร์ชั่น Enterprise 2015 with update 3) 2.เลือกติดตั้งแบบ Custom 3.ติดตั้ง Cross Platform Mobile Development Plugin ที่ตัวเลือกจะมีวงเล็บไว้ให้แล้วว่าเป็น Xamarin เลือกให้เรียบร้อยกด Next

Read More »

การใช้ jQuery ร่วมกับ library อื่นๆ ด้วยโหมด no-conflict

ในบางครั้งท่านผู้อ่านอาจจะมีปัญหา ในการนำ jQuery ไปใช้กับ ร่วมสคริปต์อื่นๆ หรือแม้กระทั่งพวก css framework ที่บางตัวจะมีการฝัง script ไว้ข้างในด้วย  ซึ่งอาจทำให้ script ของท่านทำงานผิดเพี้ยนไปจากที่ควรเป็น  วันนี้จะขอแนะนำเทคนิคในการแก้ปัญหาดังกล่าว นั่นก็คือ การปรับ jQuery ไปใช้งานในโหมด no-conflict นั่นเองค่ะ   สิ่งที่พึงระวังสำหรับมือใหม่ก็คือ ตัว jquery เองนั้นจะใช้ตัวแปร $  อ้างถึงฟังก์ชั่น jQuery  ดังนั้น ถ้ามีสคริปต์ตัวอื่นที่ใช้ตัวแปร $ นี้เหมือนกันล่ะก็  เกิดปัญหาขึ้นแน่นอนค่ะ วิธีแก้ปัญหา  วิธีที่ 1 คือให้สร้างตัวแปรเพิ่มขึ้นมาอีกตัวเพื่อใช้แทนเครื่องหมาย $ ตัวอย่างพร้อมคำอธิบาย <script src=”other_library.js”></script> <script src=”jquery.js”></script> <script> //ในที่นี้เราประกาศตัวแปร $j แทนตัว $ var $j = jQuery.noConflict(); $j(document).ready(function(){ $j(“div”).hide(); }); // ถึงตรงนี้ตัวแปร $ จะหมายถึงตัวแปรจากสคริปต์ other_library.js // mainDiv ดังนั้นคำสั่งข้างล่างนี้ $(‘main’) จึงหมายถึงการเรียกฟังก์ชั่น // จาก other_library ไม่ใช่การเรียกฟังก์ชั่นของ jquery window.onload = function(){ var mainDiv = $(‘main’); } </script> วิธีที่ 2 ในกรณีที่ไม่ต้องการประกาศตัวแปรเพิ่ม ในที่นี้เราสามารถใช้งานตัวแปร $ ได้แต่เป็นการเรียกใช้แบบ locally scope(เรียกใช้เฉพาะในบล็อคของ jQuery เอง) ตัวอย่างพร้อมคำอธิบาย <script src=”other_library.js”></script> <script src=”jquery.js”></script> <script> jQuery.noConflict(); jQuery(document).ready(function($){ // การใช้ตัวแปร $ ในนี้จะหมายถึง jQuery (locally scope) $(“div”).hide(); }); // ส่วนการใช้ตัวแปร $ นี้จะหมายถึงการเรียกใช้แบบ global scope // ซึ่งในที่นี้หมายถึงการเรียกใช้ $ ของ other_library นั่นเอง window.onload = function(){ var mainDiv = $(‘main’); } </script> การเรียกใช้งานแบบนี้จะทำให้เราไม่สับสนกรณีที่เขียนโค๊ดยาวๆ หรือใช้ไลบราลีหลายตัว สองวิธีข้างต้น จะสังเกตว่าเรา include สคริปต์ jQuery หลังสคริปต์ตัวอื่น กรณีที่เรามีการ include สคริปต์ jQuery ก่อนสคริปต์ตัวอื่น จะทำอย่างไร? ในกรณีที่เรา include jQuery มาก่อนและหากสคริปต์ที่ตามหลังใช้ตัวแปร $ จะถือว่าตัวแปร $ นั้นเป็นของสคริปต์ที่ประกาศที่หลัง(override) ซึ่งถ้าเราต้องการใช้งาน jQuery จะทำได้โดยการเรียกใช้ฟังก์ชั่น  jQuery โดยตรง  ดังตัวอย่างข้างล่างนี้ ตัวอย่างพร้อมคำอธิบาย <script src=”jquery.js”></script> <script src=”other_library.js”></script> <script> //เรียกใช้ jQuery ฟังก์ชั่นแบบเต็ม jQuery(document).ready(function(){ jQuery(“div”).hide(); });   // เรียกใช้ตัวแปร $ ที่ระบุไว้ใน other_library.js window.onload = function() { var mainDiv = $(‘main’); };   </script> สำหรับบทความนี้ก็ขอจบเพียงเท่านี้ หวังว่าต่อไปนี้ท่านผู้อ่านที่ใช้งาน jQuery ร่วมกับสคริปต์อื่นๆ คงจะไม่มีปัญหาสคริปต์ทำงานผิดเพี้ยนหรือสคริปต์ทำงานไม่ครบอีกแล้วนะคะ แหล่งอ้างอิง : http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/  

Read More »

Acrobat Reader DC รุ่นที่แจกฟรีนี่แหล่ะ ก็พอเพียงแล้ว — หยุดใช้โปรแกรมละเมิดลิขสิทธิ์เถอะ

จากที่ปฏิบัติหน้าที่ Helpdesk และได้เห็นนักศึกษาและบุคลากรของมหาวิทยาลัย ใช้โปรแกรมเถื่อนโดยเฉพาะ Adobe Acrobat ซึ่งจริงๆแล้ว เค้ามีตัวฟรี คือ Adobe Acrobat Reader ให้ใช้อยู่แล้ว อย่าไปละเมิดลิขสิทธิ์เค้าเลย ในบทความนี้ จะขอแนะนำความสามารถที่ “ของฟรี” มีให้ใช้ แต่บางคนอาจจะไม่รู้ ก็เลยไปละเมิดลิขสิทธิ์   ยุค Paperless หรือ ไร้กระดาษ ก็สามารถทำได้แล้ว ตัวอย่างเช่น มีเอกสาร PDF ที่ต้อง Print ใส่กระดาษ แล้วกรอกเอกสาร ลงลายเซ็นต์ แล้วก็ต้อง Scan กลับเข้าไปในระบบอีก … สุดท้ายก็ต้องเก็บกระดาษกองโต เพื่อรอเอาไปทิ้ง ทำไปเพื่ออะไร ?   ขอยกตัวอย่างการใช้งานกับเอกสารต่อไปนี้ http://group.psu.ac.th/docs/F_SD13.pdf http://www.personnel.psu.ac.th/fromper/form1.pdf   เริ่มจาก Download เอกสารมาเก็บไว้ในเครื่อง แล้วเปิดโปรแกรม Adobe Acrobat Reader DC นี่แหล่ะ แล้วคลิกที่ Fill & Sign ด้านขวามือ  ถ้าต้องการกรอกข้อมูลข้อความ ก็คลิกที่ Ab แล้วเลื่อนไปคลิกที่ตำแหน่งที่จะกรอกข้อมูล แล้วพิมพ์ไป  ตรงไหนที่เป็น Checkbox ก็เลือกได้ว่า จะเอาแบบ กากบาท หรือ เครื่องหมายถูก แล้วก็ไปคลิกที่ที่ต้องการ ต้องการใส่ลายเซ็นต์ ??? คลิกที่ Sign แล้วเลือก Add Signature จะใช้วิธี เซ็นต์บนกระดาษ แล้ว Scan เก็บภาพไว้ก็เลือก Image ส่วนใครจะเซ็นต์สด คลิก Draw แล้วใช้ S-Pen ให้คุ้มๆหน่อยครับ แล้วก็กดปุ่ม Apply (ทำครั้งเดียวนี่แหล่ะ หลังจากนั้นก็จะใช้งานได้ตลอด) จากนั้นก็เอามาวางในตำแหน่งที่ต้องการ แล้วก็ Save สิครับ รออะไร ??? กรณีเป็นเลขที่บัตรประชาชน เค้าก็สามารถเว้นระยะตัวอักษรได้อีก ให้เหมาะกับช่อง   หยุดละเมิดลิขสิทธิ์ แล้วทำงานแบบ Paperless กันเถอะครับ

Read More »

วิธีการติดตั้ง Docker บน Ubuntu 16.04

“อยากติดตั้ง Docker บน Ubuntu 16.04 ทำอย่างไร”          นอกจาก containner ที่เป็น lxd ของ Ubuntu แล้ว ก็ยังสามารถใช้ในรูปแบบ Docker เช่นเดียวกัน แต่ค่อนข้างยุ่งยากกว่าเล็กน้อย โดยถ้าเทียบประสิทธิภาพแล้วในส่วนของ lxd จะดีกว่าแต่ในแง่ของ Image ทาง Docker ยังมีมากกว่า (แต่อนาคตอะไรก็ไม่แน่นอน ขึ้นอยู่กับจะเอามาใช้ทำอะไรมากกว่า และมีคนทำมาให้ใช้อันไหนมากกว่า หรือถนัด Image เองแบบไหนมากกว่า สรุปชอบอันไหนใช้อันนั้นแล้วกันครับ) วิธีการติดตั้ง (Ubuntu 16.04) *Ref : https://docs.docker.com/engine/installation/linux/ubuntulinux/ เนื่องจากไม่มี docker ใน Ubuntu Package โดยตรง จึงต้องเพิ่ม source.list ก่อนดังนี้ sudo apt-get update sudo apt-get install apt-transport-https ca-certificates sudo apt-key adv –keyserver hkp://ha.pool.sks-keyservers.net:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D echo “deb https://apt.dockerproject.org/repo ubuntu-xenial maindeb https://apt.dockerproject.org/repo ubuntu-xenial main” | sudo tee /etc/apt/sources.list.d/docket.list deb https://apt.dockerproject.org/repo ubuntu-xenial maindeb https://apt.dockerproject.org/repo ubuntu-xenial main จากนั้น Update Package ให้ล่าสุดอีกครั้ง sudo apt-get update จากนั้นทำการติดตั้ง Linux Kernel Extra sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual ทำการติดตั้ง Docker Engine ดังนี้ sudo apt-get install docker-engine จากนั้นทำการ Start Docker Service sudo service docker start ทำการทดสอบติดตั้ง Image Hello-World ดังนี้ sudo docker run hello-world จากนั้นสามารถใช้คำสั่งตรวจสอบ Version Docker ได้ดังนี้ sudo docker version จะเห็นว่าเพียงแค่นี้ก็ได้ Docker มาใช้งานแล้วครับ แถมอัพเดต Version ให้ตลอดด้วยครับ

Read More »