Category dotnet

String .Equals() vs ==

two pigeon perched on white track light + equal

พอดีเมื่อวันพฤหัสก่อน เห็นน้องที่ทำงานใช้ Operator == ในการตรวจสอบว่า String เป็นอันเดียวกันไหม แต่ผมเห็นแล้วรู้สึกแปลกๆ มันควรใช้ Method Equals() มากกว่าครับ ใน Blog ตอนนี้ผมแสดงความแตกต่างของ .Equals() กับ == โดยผมยกตัวอย่างเฉพาะในภาษา Java และ C# ที่ผมใช้งานหลักอยู่ครับ – JAVA – C# จาก Code ทั้ง 2 แบบ เราจะเห็นความแตกต่างกันของ String นะครับ (ตามตัวอย่างของ C# และ Java นะครับ)…

[.NET] ปัญหาราวๆ กับตัวเลขจอมแสบ

หากได้ทำงานเกี่ยวกับระบบด้วยการเงินแล้วเนี่ย ตัวเลขสำคัญมากนะครับ ปัญหาของผมเกิดจากการพัฒนาระบบงานบน .NET ด้วย C# แล้วต้องไปเทียบตัวเลขกับ ระบบงานที่เป็น VB6 แล้วปรากฏว่า มันหายไป 0.01 เลขปริศนาที่หายไป แต่ฝ่ายบัญชีไม่ยอมมมมมม ถ้าหายไปสัก 50 ล้าน มันยังหาได้ง่ายกว่าเลย แล้วใครหละที่เป็นโจร ? จริงแล้วมันเป็นปัญหาที่สะสมมานานตั้งแต่ของ VB6 ที่มีการปัดทศนิยมเศษ 5 แปลกๆ ทำให้ทีมที่ทำระบบเดิมในยุคนั้นมีการ Custom Function ขึ้นมาแก้ปัญหาจุจิกนี้ โดยเฉพาะครับ ซึ่งมีแนวคิดว่าเจอ 5 ปัดขึ้น สำหรับแนวคิดนี้นิยมใช้ในการบัญชี การเงินครับ หลังจากดู Legacy Code เรามาดูอัลกอริทึมที่ VB6…

[C#, DEVEXPRESS] พัฒนาระบบได้ โดยไม่จำเป็นต้องลง DevExpress

DevExpress เป็น Tools ที่ช่วยให้การพัฒนาฝั่ง UI ง่ายๆครับ แต่มันแพง ถ้าทีมเรามี Dev กันหลายๆคน จำเป็นไหมที่ต้องลง DevExpress หมดทุกเครื่อง คำตอบ คือ ไม่จำเป็นครับ (ไม่ใช่ให้ไปลงเถื่อนนะครับ) แต่เราสามารถแก้ไขปรับเปลี่ยนนิดหน่อย เพื่อให้ Dev คนอื่นๆที่ไม่ได้ต้องมาแก้ UI เช่น จัดการกับ Business Logic หรือ จัดการกับ Database สามารถทำงานได้ครับ โดยการแก้ไฟล์ licenses.licx ให้เป็นไฟล์เปล่าๆ ใน Project Main ของเราครับ

ลองวัดดวง Upgrade จาก Windows 8.1 ไปเป็น Windows 10

หลังจากที่ผมได้ใช้ Windows แท้ 5555 หลังจากใช้เถื่อนเพื่อการศึกษา พอมีข่าว Windows 10 ผมคิดว่าจะรอให้มีคนใช้ไปสักพักก่อนแล้วค่อย Upgrade แต่ดันน้องของผมดันกด Update ให้ 5555 มันก็เลยเป็นที่มาของ Blog ตอนนี้ครับ หลังจาก Upgrade มีอะไรที่ดีขึ้น หรือมีอะไรที่แย่ลง ลองมาดูกันครับ เริ่มต้นด้วยส่วนที่แย่ๆ กันก่อน โปรแกรมในกลุ่มยุค VBุ6 (ไม่รู้จะถีบไปให้ใช้ .NET หรือป่าว) มีปัญหากับภาษาไทย บางครั้งแสดง เป็นภาษาต่างด้าว โปรแกรมทำงานได้ช้าลงชัดเจนครับ ไม่แน่ใจว่าตัว Windows 10 มี Process อะไรที่มาครอบทำให้ App เก่ารุ่นพ่ออย่าง VB6…

[C#, Office Add in] เปิด Feature Debug Mode ให้กับตัว Excel Add-in (VSTO) ของเรา

เวลาเราทำตัว Add-in สำหรับ Microsoft Office นะครับ บ่อยครั้งเลย ที่เราเอาตัวที่ Build เรียบร้อยแล้ว ไป Deploy ที่เครื่อง User แต่ปรากฏว่า มันเงียบ….. แล้วตรูจะไปต่อยังไงเนี่ยยย วันนี้ผมมีทริปในการ Set ค่า เพื่อเปิด Debug Mode ของ VSTO ครับ Note: สำหรับ KM นี้ใช้กับ .NET Framework เท่านั้นครับ

[C#, Office Add in] วิธีแก้ปัญหาเมื่อลง VSTO ไม่ได้

สำหรับ Developer ที่ทำส่วนเสริมให้กับ Office หลายคนอาจจะเข้าใจว่ามีแต่ตัว VBA อย่างเดียวนะครับ แต่จริงๆแล้วเนี่ย MS Office สามารถให้เราปรับแต่ง Customize เพิ่มความสามารถด้วย .Net Framework ได้เหมือนกันนะครับ โดยเรียกรวมเป็น Office Add-in ซึ่งเมื่อ Code เสร็จ พอจะนำไปติดตั้งเราต้องลงตัว Visual Studio Tools for Office Runtime (VSTO)  เกริ่นมานานพอควรและ แต่เมื่อนำไปลงทดสอบที่ Site งาน พอดีดันไปเจอเครื่อง Windows 7 เครื่องนึงที่ลงไม่สำเร็จครับ โดยมี Message…

[C#] Constants Interfaces ของ Java เทียบเท่ากับอะไรใน C#

ก่อนจะมาเข้าเรื่องของ C# กันลองย้อนไปทาง Java ก่อน โดยเจ้าภาษา Java นี่ มันไม่มี Global Variables ให้ ซึ่งถ้าเราต้องการ Set ค่าคงที่แล้วต้องการให้ทุก Class เห็น และสามารถใช้งานได้ เราต้องทำ Constants Interfaces มองง่ายๆเลย คือ Interface ที่มีแต่ Constant แหละ ตามตัวอย่างเลย [java] public interface SecurityClassConst { public static final CASH = 1; public…

[C#] Shallow Copy กับ Deep Copy

C# Logo

จากบทความตอนที่แล้ว ความแตกต่างระหว่าง Shallow copy กับ Deep copy คราวนี้เรามาลองดูการใช้งานจริงในภาษา C# บ้างนะครับ สำหรับวิธีการ Copy Object ใน C# มีวิธีที่สามารถทำได้ทั้งหมด ดังนี้ Implement Interface ICloneable เป็น Interface ที่กำหนดกรอบคร่าวสำหรับการ Copy หรือ Clone ส่วนจะ Implement เป็น Shallow Copy หรือ Deep Copy แล้วแต่คนเขียน Code เลยครับ ข้อควรระวัง ไม่เป็น Type-Safe เพราะ Method…

สรุปงาน SQL Server 2014 in memory & MS Azure (24-Apr-15)

ดองไปนานสำหรับบทความนี้นะครับ (จริงทความส่วนใหญ่ ก็ดองไว้นะ 555) เข้าเรื่องดีกว่า คือ วันที่ 24 เมษายน 2558 ที่ผ่านมาเนี่ย ผมได้เข้าร่วมงาน SQLClub Meeting in Bangkok: 24.April.2015 โดยเนื้อหาของงานเป็นการนำเสนออยู่ 2 เรื่องครับ ได้แก่ SQL Server 2014 In-Memory OLTP โดยคุณ Nicolas Souquet Azure Machine Learning โดยคุณ Peter Myers สำหรับสรุปของในแต่ละหัวข้อ ผมขอสรุปคร่าวๆ ก่อนอื่นเลยขอเริ่มที่ SQL Server 2014…

[.NET] ปรับ Speed ให้ Visual Studio เร็วแรงทะลุนรก

วันนี้ผมได้สรุปเทคนิคในการปรับจูน IDE คู่ใจ จอมอึดอย่าง Visual Studio ให้เร็วแรงทะลุนรก กันนะครับ พวกความสวยงาม อะไรทั้งหลายให้ปิดไปซะ สามารถแก้ไขได้จากเมนู Tools >> Options หัวข้อ Environment >> General ดังรูป ตอนเปิดโปรแกรมขึ้นมา ถ้าไม่อยากให้มันไปโหลดข้อมูลจากเว็บมา เราก็เลือกให้มันแสดง Empty Environment ซะ สามารถแก้ไขได้จากเมนู Tools >> Options หัวข้อ Environment >> Startup ดังรูป [สำหรับ Visual Studio 2012, 2013 ขึ้นไป] ถ้าไม่อยากให้มัน Sync…