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

ก่อนอื่นมาดูปัญหากันก่อนครับ ว่าทำไมถึงต้องไปไล่ดูว่า มีการ 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 ได้เตรียมอะไรมาช่วยไว้บ้างครับ Code ที่ได้ปรับปรุง ผลการทดสอบ Reference

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

Blog น่าจะเขียนตามหลัง Trend ไปพอสมควรแล้ว หลังจากออกมาในทวิตเตอร์สักพักใหญ่ๆ แล้ว เราก็อ่าน แล้วปล่อยผ่านไป จนมานึกถึงอีกทีตอนเพื่อน ป. โท มาอวดว่าได้กินนะ มันเป็นขอที่หาโคตรรรรรยากกก แมร่ง Rare Item ดั่งไอติมกูลดิโก๊ะ พอกลับบ้าน อ้าวแถวบ้านตูรม มีเต็มตู้เลยหวะ ลองเหมาเลยและกัน โดยไอติมโมจิของออกมา 2 รสชาตินะครับ ได้แก่ แกะห่อออกมา หลังจากกินแล้ว Update เพิ่ม 2018-02-16 Reference

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

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

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

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

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

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

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

ต้องย้อนกลับไปช่วงวันคริสต์มาสปี 2017 ครับ พอดีวันนั้นเหลือบไปเห็นโปรโมชั่นที่่ยั่วมากๆ ลดหนังสือทุกเล่ม 50% ครับ ลองกดเครื่องคิดเลขดูแล้ว มันน่าจะคุ้มนะ ผมเลยจัดมา 2 เล่ม ที่คิดว่ามีประโยชน์กับการทำงาน และการทำ Project จบครับ ได้แก่ สำหรับชุด Combo มันเป็นชุดรวม pBook (Printed Book – หนังสือที่พิมพ์) และ E-Book ในรูปแบบต่างๆ เช่น pdf, ePub,  kindle และ liveBook โดยส่วนตัวผมมองว่าสมัยนี้ตัว Printed Book เหมือนของแถมมากกว่า เพราะเพิ่มอีก 5-10 USD ก็ได้มาแล้วครับ แถมมันลดราคาก็เลยจัดเต็มซะเลย ซึ่งพอเลือก Printed Book มันเลยมีค่าใช้จ่ายที่เพิ่มเข้าใจ ซึ่งนั่น คือ ค่าจัดส่ง(Shipping) ครับ สำหรับเมืองไทย จัดถูกจัดเป็นแบบ “All other international” โดยมี 2 แบบ หลังจากดูราคาแล้ว มือมันโดนมนต์สะกด 555 กดสั่งซื้อไปเรียบร้อยแล้ว โดยมีค่าเสียหาย ดังนี้ พอสั่งซื้อเสร็จ ตอนจ่ายเงิน เนื่องจากผมไม่มีบัตรเครดิตครับ ผมเลยใช้ K-Web Shopping Card แทนครับ พอสั่งเสร็จปุ๊บ เนื่องจากรอนาน ผมเลยเมล์ไปถาม Support ของทาง Manning โดยตืดต่อไปที่เมล์ [email protected] โดยเนื้อหาที่ต้องใส่ลงไปในเมล์ คือ หมายเลข Order หลังจากส่งไปทาง support ของ manning ตอบกลับไวมากครับ โดยได้หมายเลข Tracking กลับมาครับ จะพบว่า ได้ของมาแล้ว มาดูบรรจุภัณฑ์กันก่อนครับ ดูแข็งแรงทนทานดี แกะหนังสือออกมาดูครับ หนังสือหนักครับ แต่ความหนาน้อยกว่าที่ไปถ่ายเอกสารมาเองอีก

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

จาก Blog ตอนก่อนหน้าที่เราได้ทำอะไรไปหลายๆอย่าง ทั้ง มาใน Blog ตอนนี้ เรามาใช้ ลองเป็น End-User ของ Process ที่ทำครับ โดยหลังจาก Deploy Process เราต้องเข้าในส่วนของ Activiti Task กันครับ มาทวนภาพรวม Process กันก่อนครับ ดังรูป เริ่่มลองใช้งาน Process โดยต้อง Login เป็น User ที่อยู่ใน Group Employee ครับ สวมบทบาทเป็น Employee  กันครับ Manager เข้ามา Claim Task ว่าจะอนุมัติ หรือไม่ ? เมื่อ Employee แก้ข้อมูลใหม่ แล้วส่งงานกลับมาให้ Manager เมื่อฝ่ายบัญชีจัดการเสร็จแล้ว จบกระบวนการ จบไปแล้วกับ Blog เรื่องยาวครับ แม้ว่า Process ที่ทำเป็น Demo อาจจะไม่สมจริงเท่าไหร่นะครับ หากทุกท่านอ่านแล้วสงสัยอะไร สามารถทักมาได้ หรือทวงติงกรณีที่ผมเขียนผิดครับ ^__^

[ML] Setup Python สำหรับ Machine Learning ใน Anaconda

บทความนี้ ทดสอบบน Windows นะครับ โดยตอนนี้เป็นการ Setup Python ใช้พร้อมกับการทำ Machine Learning ใน Anaconda ครับ สิ่งที่ต้องเตรียม ทดสอบ Conda Update Conda และ Anaconda Tip: ถ้าหากลิมเปิด Anaconda Prompt โดยลืม Run As Administrator มันจะด่าเรา ดังรูป Update Machine Learning Library scikit-learn Tip: หากต้องการระบุ Version เฉพาะเจาะจงลงไป สามารถใช้คำสั่ง ดังนี้ Testing: scikit-learn และ Library ที่จำเป็นสำหรับ Machine Learning เดี๋ยว Blog ตอนถัดไป อาจจะลองทำเรื่อง Setup Enviroment สำหรับ Deep Learning นะครับ (ถ้าว่าง)  

[C#] ตั้งชื่อเล่นของ Class (Alias) ให้เรียกใช้งานได้ง่าย

เวลาเราพัฒนาระบบที่มันซับซ้อนๆมากๆ ปัญหาที่ปวดหัวที่สุดเลย คือ การตั้งชื่อ บางทีชื่อตัวแปรยาวๆ ถ้าย่อไป อาจจะงงได้ Dev เลยใช้ชื่อเต็มไป พอลองเอาตัวแปรเหล่านี้มาใช้ มันดูเกะกะรกตามากครับ กว่าจะรู้ว่า ตั้งชื่อเล่นของ Class (Alias) ให้เรียกใช้งานได้ง่ายกันดีกว่า โดย C# มันมีวิธีในการการตั้งชื่อเล่น(Alias) กันนะ มาดู Code เดิมกันดีกว่า ถ้าสังเกตุใน Code พบว่า RebalanceProcessExtensions.Col_OriginalNAV ชื่อ Class RebalanceProcessExtensions มันยาวมากๆ ครับ ถ้าทำไปนานๆ Code ตรึมครับ ดูยาก ที่นี้มาลองใช้ตัวช่วยกันดีกว่า ลองใช้ Class Alias โดยการย่อชื่อ Class ไว้ช่วง using ครับ โดย Code ที่ได้จะเป็นประมาณนี้ จาก Code ใหม่ ย่อจาก RebalanceProcessExtensions ไปเป็น RBExt แล้ว Code ที่เขียนออกมา สั้นลง และดูสบายตาขึ้น ครับ Reference

[BPMN] ลองเอา Process ที่ทำมา Deploy ขึ้นกัน

จาก Blog ก่อนหน้านี้ที่ได้ลองสร้าง Process ไปแล้ว คราวนี้ลองเอา Process ที่ทำ มาผูกให้เป็น Application โดยใช้ Activiti-App ตัว Kick Start ครับ เนื่องจาก Form ที่ทำโดยใช้ Activiti Designer ยังไม่สมบูรณ์ครับ เลยต้องเอามาปรับปรุงใน Kick Start  โดยการเพิ่ม Form ลงไป เพราะใน Process ที่ทำไว้ก่อนหน้านั้น เราได้กำหนดแค่ภาพรวม Workflow ไว้แล้ว จริงๆมาสร้าง Workflow ในตัว Kickstart ได้เลยนะ ไม่ต้องผ่านตัว Eclipse Designer ก็ได้ครับ เพิ่ม User และ Group ที่เกี่ยวข้อง มาปรับ Process ให้ตามขั้นตอน ดังนี้ – GUI Form Activity “Employee Request Budget” สำหรับ Employee ในกรอกจำนวนเงินที่ต้องการขอเบิก Activity “Manager Review / Approve” สำหรับให้ Manager ตรวจทาน และอนุม้ติ ผลการร้องขอเบิกเงิน – ปรับเรื่อง Owner ในแต่ละ Activity ให้ลงตาม Group ในที่นี้ยกตัวอย่างของ Activity Accountant Acknowledge โดยต้องให้ User ที่อยู่ในกลุ่ม Accountant เข้ามาจัดการครับ ส่วนที่ Group เหลือ Employee และ Manager ลองปรับตามได้ แปลง Process เป็น App เพื่อ Deploy หลังจาก Deploy (Publish…