[C#] ทำให้การ Debug เป็นเรื่องง่าย โดยการใช้ toString()

C# Logo

เคยสังเกตุบ้างไหม ว่าเวลาที่ต้องการดู Data ที่เก็บอยู่ใน Object มันข่างยากลำบากเหลือเกิน ถ้าเป็น List แล้วเนี่ย ถึงกับตายได้เลย จากรูปด้านล่าง ถ้ามีใน List มี 18 ตัว ถ้าอยากหา Object ที่สนใจต้องกดไล่ดูมากที่สุดถึง 18 ครั้ง จะมาน่ั่งไล่กดเปิดดูที่ละอันมันก็ ไม่คุ้มนะ เปลืองแรงไป ดังรูป แล้วมันมี Trick อะไรช่วยไหม ตอบเลยว่ามีครับ ใช้ toString() สิ โดยเพิ่มเข้าไปที่ Object ของเราเลย อย่างของผม ลอง Complie แล้ว Debug ดูอีกครั้ง โอ้วมันยอดมากกกครับ สบายขึ้นเยอะเลยย สามารถดูภาพรวมของ Data ที่เก็บใน Object ได้ ไม่ต้องเสียเวลาไปไล่นั่ง Click ดูที่ละอันด้วย ^__^

[WIN10] เอาไฟล์ hiberfil.sys ออก เพื่อเพิ่มพื้นที่ของ Harddisk

ก่อนจะลบมารู้กันก่อนว่าเจ้าไฟล์  hiberfil.sys มัน คือ อะไรครับ ที่เจอเจ้าไฟล์นี้ เพราะผมลองใช้ TreeSize ช่วยหาไฟล์ที่ใหญ่เกินครับ ขื่นปล่อยไว้นาน มันจะไม่ได้ลบออก 555 โดยเจ้าไฟล์นี้มันเป็นกระดาษทดของ Feature Hibernate ที่ช่วยให้เราทำ Snapshot ของ Program ที่เปิดไว้ จากนั้นปิดเครื่องไป พอเปิดเครื่องอีกครี่ง สามารถใช้งานต่อได้เลยครับ โดยตัว Hibernate มันจะใช้พื้นที่ประมาณ 50-75% ของหน่วยความจำครับ ซึ่งถ้าหาจะปิดมาดู ข้อดี-ข้อเสีย กันก่อนครับ ข้อดี ประหยัดพื้นที่ใน Disk ลงเยอะครับ ข้อเสีย ระบบเปิด-ปิด เครื่องช้าลง แต่สำหรับพวก SSD อาจจะไม่เห็นผลนะครับ ไม่สามารถ Hibernate ได้ สำหรับขั้นตอนการปิด Feature Hibernate  เพื่อเอาตัว hiberfil.sys ออกไป มี 2 วิธี ดังนี้ครับ วิธีที่ 1: ใช้ Command Line เปิดหน้าจอ Command Line ด้วยสิทธิ์ Admin (คลิกขว่า Run as Administrator ครับ) เลือก Run คำสั่งสำหรับเปิด / ปิดHibernate  ดังนี้ :เปิด Hibernate powercfg -h on :ปิด Hibernate powercfg -h off กด Enter วิธีที่ 2: กำหนดค่าที่ Registry ครับ เปิดหน้าจอ Regedit ครับ ไปที่ Reg Path HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power หา Key HibernateEnabled หาก Disable…

สรุปงาน Data Science Talk Chill #1

สำหรับวันนี ผมมาแบบ + 1 ครับ ตอนที่พี่ที่บริษัทชวนมา ไอ้เราก็บอกว่าไปด้วย แถมลืมจ่ายตังค์ให้พี่เค้าอีก ดองค่างานข้ามปีกันเลยทีเดียวครับ สำหรับงานวันที่สถานที่จัดงาน คือ ที่ LINK Collaboration Space @ MRT หัวลำโพง มันอยู่แถวอุทยานจุฬาผป 100 ปีครับ ฝั่งถนนบรรทัดทองครับ ทางเข้าก็ซ่อนแอบอยู่ข้างโรงเรียนครับ เดินหลงไปเหมือนกัน สำหรับงานในวันนี้เป็น Flash Talk ลั้นๆ ประมาณ 15 นาที โดยมี Session ดังนี้ NLP – Natural Language of Passion โดย ดร.อาร์ม [ NECTEC ] ทุกปัญหา ทุกเรื่อง มันมี Pattern อย่าง ดร. อาร์ม สนใจความแปลกในภาษาเขียนของชนชาติต่างๆ Math และองค์ความรู้ของฝั่ง IT มันมีความหลงไหล(Passion) ที่พยายามหา Pattern ของมัน Passion มาจากไหน ลองมาดู Pattern Finder Process เกลียด – เจอปัญหา อยากรู้คำตอบ สำรวจ Data – มันมีอะไรบ้าง ? สกัด information และ เบาะแส จาก Data หา Abstract pattern แก้ปัญหา โดยเริ่มจาก Abstract Pattern ทบทวนดูว่าเราได้อะไร จากการแก้ปัญหา ตาม Abstract Pattern นั้น Language of passion ตัวเอง- อะไรที่ตัวเองตื่นเต้น Wow…

[C#] มาดูกันว่า User Remote เข้ามาเปิดใช้ Application จากเครื่องไหน

C# Logo

ก่อนอื่นมาดูปัญหากันก่อนครับ ว่าทำไมถึงต้องไปไล่ดูว่า มีการ Remote จากเครื่อง User เพื่อมาใช้งาน Application ที่ติดตั้งบนเครื่อง Server หรือป่าว ? เพราะ IT ของลูกค้า อยากรู้ว่ามีใครใช้งานในระบบบ้าง แล้วใช้งานที่เครื่องไหน แต่บังเอิญว่ารอบนี้ ตัว Application ที่พัฒนาถูกไปติดตั้งบรเครื่อง Windows Server พอ User Remote เข้ามาใช้งาน ปรากฏว่าระบบลง Log และ Active User มาจากเครื่อง Serer ที่เป็น Windows Server ทั้งหมดเลยครับ โดยคำสั่ง C# ที่ใช้ดึงว่าเครื่องที่ Run Application อยู่ ชื่อเครื่องอะไร เป็นคำสั่งที่มีใน .Net Framework API ตามตัวอย่าง Code ด้านล่างเลยครับ มาที่โจทยฺ์ใหม่บ้าง เพราะ คำสั่ง Environment.MachineName; มันมีข้อจำกัด ถ้าเอา Application ไปดิดตั้งบน Windows Server มันจะไม่รู้ว่า User Remote มาจากเครื่องไหนครับ คำสั่งนี้จะดึงเฉพาะ แต่ชื่อเครื่อง ของ Server แทน โดยโจทย์ที่ทาง IT ของลูกค้าต้องการ ในกรณีที่มีการ Remote เข้ามาใช้งาน Application มีรูปแบบ ดังนี้ครั ชื่อเครื่องปลายทาง(ชื่อเครื่องต้นทาง) หลังจากรู้โจทย์แล้ว มาดูดีกว่าครับ ว่า C# ไม่สิต้องบอกว่า .Net Framework ได้เตรียมอะไรมาช่วยไว้บ้างครับ ตัว System.Windows.Forms.SystemInformation.TerminalServerSession เป็นตัวที่บอกว่า Application ที่เขียนขึ่น Run ผ่่าน Remote Desktop หรือป่าวครับ ถ้าใช่ Return…

[CR] ไอติมโมจิวานิลลา และชาเขียว จาก เนสท์เล่

Blog น่าจะเขียนตามหลัง Trend ไปพอสมควรแล้ว หลังจากออกมาในทวิตเตอร์สักพักใหญ่ๆ แล้ว เราก็อ่าน แล้วปล่อยผ่านไป จนมานึกถึงอีกทีตอนเพื่อน ป. โท มาอวดว่าได้กินนะ มันเป็นขอที่หาโคตรรรรรยากกก แมร่ง Rare Item ดั่งไอติมกูลดิโก๊ะ พอกลับบ้าน อ้าวแถวบ้านตูรม มีเต็มตู้เลยหวะ ลองเหมาเลยและกัน โดยไอติมโมจิของออกมา 2 รสชาตินะครับ ได้แก่ รสวานิลลา รสชาเขียว แกะห่อออกมา ไอติมโมจิเล็กไปนิด + ไม้จิ้มอันนึง หลังจากกินแล้ว ปริมาณ – น้อยไปนิด ราคา – 20 บาท ถ้าเทียบกับปริมาณ แอบแพงนะ พลังงาน – 70 kcal  และมีน้ำตาล 8 กรัม รสชาติ – ใช้ได้เลย ยิ่งถ้ารอไอติมละลายมาผสมกับแป้ง เหนียวนุ่มมมมมมมม กัดไปเจอแป้งโมจิขาว ๆ กับไอติมวานิลลา (ใจจริงอยากกินรสชาเขียวด้วย) กินไปอ่าน paper ไปเพลินดีครับ Update เพิ่ม 2018-02-16 ได้กินรสชาเขียวแล้ว รสชาติออกจะขมๆ ไม่หวานมาก แต่ผมก็กินแบบเดิม รอให้ไอติมมันละลายนิดนึงแล้วกิน อาหร่อยยย ^___^

[CR] CP ไก่ตุ่นน้ำแดง (กุ้ง+ไก่)

วันนี้ระหว่างเบื่อๆหลังจากการวิ่งมา วันนี้มาหาอะไรกินกันดีกว่าครับ มองไปมองมา อ่าาา “CP ไก่ตุ่นน้ำแดง” ราคา 25 บาท ลองมาแก้ดูครับ น่ากินเหมือนกันนะ เหมือนพุดดิ้งยังไงไม่รู้ แต่น้ำสีไม่แดงเลย (ส่วนตัวไม่แน่ใจว่า น้ำแดงต้องสีแดง หรือป่าวนะ) ลองตัดออกมา เนื้ออัดแน่นครับ เอามากินคู่กับข้าวกระเพราหมูก็อร่อยดีครับ สรุป ราคาน่าคบหาครับ 25 บาท สำหรับ CP ไก่ตุ่นน้ำแดง (กุ้ง+ไก่) เนื้อจับเป็นก้อนเลย ถ้าแยกไก่กับกุ้งออกมาเป็นคำๆได้ น่าจะดีครับ คะแนน 8/10 ครับ

[BPMN] Loop หรือ การทำซ้ำ

แม้ว่าตัว BPMN ถูกออกแบบมาสำหรับทางฝั่ง Business แต่มีการทำบางอย่าง ที่ยังต้องใช้มีการทำวนซ้ำ หรือ ถ้าในภาษา Technical ของ Developer ทั้งหลาย ว่าวนลูป (Loop) ครับ สำหรับใน BPMN สามารถเขียนได้ 2 แบบครับ ได้แก่ Loop Activity Non-Loop Activity Loop Activity โดย Loop Activity คือ Loop ที่เกิดกำหนด Property ของตัว Activity ครับ ถึงถ้าไปดูใน Spec ของ BPMN อยู่ในรูปแบบของ XML Tag StandardLoopCharacteristics มาลองดูตัวอย่างกันครับ ภาพด้านล่าง ผมเอามาจาก Tools Visual Paradigm Modeler ครับ เป็น สัญลักษณ์ลูกศรวน บนตัว Activity การกำหนด Attribute ใน XML Tag StandardLoopCharacteristics โดยอยู่ในส่วนของ Standard Loop Specification Note: แต่ Loop Activity BPMN-Engine ที่เป็น Open-Source ณ ปี 2018 ทั้งหมด ยังไม่ Support ครับ Non-Loop Activity ส่วน Non-Loop Activity นั้น มองภาพที่ใหญ่ขึ้นจาก Activity เดี๋ยวๆ โดยการสร้าง Loop จากการใช้ Exclusive Gateway นำมาประกอบกันครับ มาลองดูตัวอย่างกันครับ อย่าง Loop ที่ถ้าใช้ Loop Activity…

[CUSE] สรุปขั้นตอนการเปลี่ยนแผนการเรียนจากแผน ข ไปเป็นแผน ก

สรุปไว้เผื่อคนที่เรียนที่จุฬา แล้วอยากเปลี่ยนแผนการศึกษาตอน ป โท นะครับ จากแผน ข ไปเป็นแผน ก มีขั้นตอนคร่าวๆ ดังนี้ สู้ต่อไปนะทุกๆคนๆ ^___^ หวังว่าตัวเราเองจะสามารถจบได้ภายใน 2 ปี

[CR] ลองสั่งหนังสือจาก Manning

ต้องย้อนกลับไปช่วงวันคริสต์มาสปี 2017 ครับ พอดีวันนั้นเหลือบไปเห็นโปรโมชั่นที่่ยั่วมากๆ ลดหนังสือทุกเล่ม 50% ครับ ลองกดเครื่องคิดเลขดูแล้ว มันน่าจะคุ้มนะ ผมเลยจัดมา 2 เล่ม ที่คิดว่ามีประโยชน์กับการทำงาน และการทำ Project จบครับ ได้แก่ Activiti in Action ชุด Combo (ราคาเต็ม 49.99 USD หรือ 1,681.67 บาท) – ได้เข้าใจ BPMN-Engine แบบลึกซึ้ง หลังจากงมๆมานานโข Spring Boot in Action ชุด Combo (ราคาเต็ม 44.99 USD หรือ 1,531.47 บาท) – เอามาศึกษาเผื่อได้ใช้ทำ Project จบ หรือทำงานครับ สำหรับชุด Combo มันเป็นชุดรวม pBook (Printed Book – หนังสือที่พิมพ์) และ E-Book ในรูปแบบต่างๆ เช่น pdf, ePub,  kindle และ liveBook โดยส่วนตัวผมมองว่าสมัยนี้ตัว Printed Book เหมือนของแถมมากกว่า เพราะเพิ่มอีก 5-10 USD ก็ได้มาแล้วครับ แถมมันลดราคาก็เลยจัดเต็มซะเลย ซึ่งพอเลือก Printed Book มันเลยมีค่าใช้จ่ายที่เพิ่มเข้าใจ ซึ่งนั่น คือ ค่าจัดส่ง(Shipping) ครับ สำหรับเมืองไทย จัดถูกจัดเป็นแบบ “All other international” โดยมี 2 แบบ International Economy (ราคาแกว่งตามรอบ) เล่มแรกค่าส่ง 13.95 USD เล่มถัดไป 10 USD ส่งแบบไปรณีย์ ส่วนใหญ่มาทางเรือ หรือเกาะเครื่องบินโดยสารมา…

[BPMN] ลองใช้ Process ที่ได้เพิ่งสร้างกัน

จาก Blog ตอนก่อนหน้าที่เราได้ทำอะไรไปหลายๆอย่าง ทั้ง ติดตั้ง Tools ที่จำเป็น – ติดตั้ง Activiti Framework, ลง Eclipse Activiti Designer, เปลี่ยน Activiti Framework มาใช้ MySQL ลองสร้าง Process – ลองสร้าง Process โดยใช้ Activiti Designer ทำ Unit Test – Activiti สร้าง Unit Test Deploy Process – ลองเอา Process ที่ทำมา Deploy ขึ้นกัน มาใน Blog ตอนนี้ เรามาใช้ ลองเป็น End-User ของ Process ที่ทำครับ โดยหลังจาก Deploy Process เราต้องเข้าในส่วนของ Activiti Task กันครับ มาทวนภาพรวม Process กันก่อนครับ ดังรูป เริ่่มลองใช้งาน Process โดยต้อง Login เป็น User ที่อยู่ใน Group Employee ครับ สวมบทบาทเป็น Employee  กันครับ Login เข้าระบบด้วย User ที่อยู่ใน Group Employee ครับ เข้ามาที่ เลือก Task App ครับ มา Start Procrss ที่ Deploy ไว้กันเลย เจอ Process ที่สร้างไว้แล้ว เลือกเลยครับ ตรงนี้ เราเห็นแล้วว่า Active Process ขึ้นมาแล้วครับ NOTE: ถ้ากด Show…