[PowerShell] Integrated PowerShell with C# Application

powershell

มาต่อบทความการใช้ C# กับ PowerShell สักที หลังจากไปลองสร้าง Winform Application จาก PowerShell เพียวๆกันแล้ว โดยคราวนี้ เราใช้โจทย์ของคราวที่แล้วแหละ โดยมีการออกแบบหน้าจอ ดังรูป จัดการ Add Code Event ต่างๆให้เรียบร้อย (อันนี้ผมใช้ Pattern MVP นะครับ เผื่อคนโหลดไปแกะ Code)จากนั้น เราต้องทำให้ C# รู้จักกับ PowerShell กันก่อน โดยการ Add Reference DLL เข้ามาใน Project ครับ โดยเราจะ Add DLL System.Management.Automation แต่ก่อนที่เรา Add DLL เข้ามาใน Project ของเรา ผมอยากให้ตรวจสอบ Version ของ PowerShell ครับ เพราะมันต้องเลือกให้เหมาะกับเวอร์ชัน Target Framework ในของ Project เราด้วยนะครับ โดยผมได้สรุปเป็นข้อมูล ดังนี้ .Net Framework PowerShell .NET Framework 3.5 PowerShell 2.0 .NET Framework 4.0 PowerShell 3.0 .NET Framework 4.5 PowerShell 4.0 เมื่อตรวจสอบเวอร์ชั่นของ DLL และ Target Framework ของ Project เราเรียบร้อยแล้ว เริ่มทำการ Add Reference DLL System.Management.Automation ซึ่งอยู่ใน Path C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\-เวอร์ชั่น- โดยของผมก็จะเป็น C:\Program Files (x86)\Reference…

[Visual Basic] Run time error 28- Out of stack space

หลายครั้งที่เราเขียนโปรแกรม อาจจะเจอ Error มาบ้าง แต่ Error วันนี้ผมว่าเป็นกรณีศึกษาที่ดีสำหรับคนที่เขียน VBA กับ VB6 นะครับ โดยเฉพาะคนที่ชอบเขียนโปรแกรม โดยอาศัย Event ต่างๆนะครับ ระวังจะทำให้เกิด Recursive ของ Event ทำให้เกิด Run time error 28- Out of stack space ดังตัวอย่างต่อไปนี้ ถ้ามีโจทย์ หรือ Business ที่ว่า ถ้า Check Box A ถูกติ๊กแล้ว  Check Box B ต้องไม่ติ๊ก เมื่อเรา Assign ค่าให้กับ Check Box จะทำให้เกิด Event Check ขึ้นนะครับ ทำให้โปรแกรมของเราเกิด Error นะครับ ท้าย่ที่สุดต้องมากำหนด Flag ดัก เพื่อมากันเรื่องนี้ครับ    

ปิด “Security and NQ Mobile” ไม่ให้มีแถบแสดงเตือนมากดให้เสียตังค์อีก

หลายคนคงได้อัพ ROM Kitkat ของ Lenovo กันแล้ว อย่างใน Blog ที่แล้วผมได้มีประเด็นอยู่ คือ ตัว Antivirus ที่ให้มา 2 ตัว ได้แก่  Security and NQ Mobile กับ Norton Mobile (ฝังมากับ ROM เลย เอาออกได้ แต่ยากครับ) ซึ่งแต่ละตัวมี Pop up ให้เรากด เพิ่ม Load โปรแกรม หรือ Update ข้อมูล ทำให้เราอาจจะต้องเสียตังค์ฟรี ทำให้เครื่องช้า และเปลืองแบตด้วย วันนี้ผมนำเสนอวิธีปิดการทำงานของโปรแกรม เพื่อไม่ให้มีการแจ้งเตือนมากกวนใจเราอีกนะครับ ดังนี้ครับ วิธีแรกถอนรากถอนโคน โดยการ Root ครับ (แต่ ROM Version ใหม่ ถ้าเรา Root แล้ว เวลา Update ระบบมันจะลบข้อมูลเดิมออกไปด้วย ตรงนี้ โดยวิธีนี้ผมไม่ขอกล่าวถึงนะครับ ลองไปหาวิธีดูครับ โดยมี App Framaroot  กดปุ่มเดียวจบครับ แต่ไม่แน่ใจว่ารองรับ ROM Version ใหม่ๆ หรือยัง (ณ วันที่ 28-09-2014  ROM ของ Lenovo เป็น Version ล่าสุดจะเป็น P780_ROW_S226_140919) ครับ วิธีที่สองปิดการทำงานของโปรแกรมพอ (อาจจะมีบาง Service บางส่วนที่ยังทำงานอยู่ แต่อย่างน้อยก็ไม่มีหน้าจอ หลอกให้เรากดไปแล้วเสียเงินครับ) โดยผมลองปิดตัว Security and NQ Mobile ครับ ตามมากันได้เลย เ้ข้าไปที่ “Setting” (รูปฟันเฟือง) เลื่อนลงมาล่างสุด เลือกเมนู  “แอปพลิเคชั่น”หรือ…

Economy of Scale กับ Return to Scale

จริงๆ ผมไม่ค่อยรู้ความหมายของคำนี้หรอก 55 แต่พอลงทุนให้หุ้น ผมต้องหาความรู้เพิ่มเติมเหมือนกัน เพราะ เราจะมั่นใจว่าเงินมันทำงานแทนเราได้ เราต้องมีความรู้ก่อน เพื่อจัดสรรให้เงินมันทำหน้าที่ของมันได้เหมาะสม วันนี้มีศัพท์สองคำมาแนะนำกับนะครับ คือ Economy of Scale กับ Return to Scale ว่านักลงทุนอย่างแรก ควรรู้ไปเพื่ออะไร มันมีผลอะไรกับหุ้นของเราบ้าง เริ่มต้นกันที่ Economy of Scale Economy of Scale แปลตรงตัว คือ การประหยัดของขนาด ถ้าพูดง่ายๆ คือ การลดต้นทุนต่อหน่วยให้ลดลง โดยการขยายกำลังการผลิตให้มากขึ้น ถึงตอนนี้หลายๆคนอาจจะลงสงสัยว่า ทำไมผลิตเพิ่ม แล้วต้นทุนถึงต่ำลง เราต้องมองไปที่ค่าใช้จ่ายในการผลิต มันจะส่วนที่เป็นที่คงที่ กับแปรผ้น โดย มาถึงตรงนี้หลายคนอาจะงงนะครับ เดี๋ยวผมยกตัวอย่างให้ง่ายๆ เช่น โรงงานชาเขียว มีเครื่องจักรผลิตชาเขียว 2 เครื่อง ถ้าผลิต ชั่วโมงละ 100 ขวด ต้นทุน 2,000 บาท ทุนขวดละ 20 บาท ถ้าเราผลิดเพิ่มหละเป็น 200 ขวดหละ ทุนลดลงไปเหลือ 10 บาท (ยังไม่รวมค่าวัตถุดิบเข้ามานะครับ) จากตัวอย่างนี้ จะเห็นแล้วค่าใช้จ่ายในส่วนของเครื่องจักรที่เป็น Fix Cost ทำไมต้นทุนที่ได้ถึงถูกลงครับ ถึงตรงนี้แล้ว ผมว่าหลายคนคงคิดว่ามันน่าจะดีนะ ถ้าเราทำให้ทุนมันลดได้ แต่ทำอย่างไร จากตัวอย่างที่ยกไป โรงงานอาจจะซื้อเครื่องจักรเพิ่ม (ถ้าในตลาดหุ้น อาจจะเป็นการขายหุ้นเพิ่มทุน เพื่อเอาเงินเหล่าเม่าไไปหาเรื่องจักรเพิ่ม) หรือปรับ Flow การทำงานแทน จากตอนกลางวันเป็นตอนกลางคืน เพราะ อากาศเย็นกว่าทำให้ไม่ต้องพักเครื่องบ่อยๆ หรือ จัดลำดับการผลิดของแต่ละหน่วยย่อยๆ เมื่อเห็นว่า Economy of Scale มีจุดเด่นอย่างนี้ แล้ว มันจะมีจุดตาย หรือไม่ ? มี ครับ เพราะ…

[PowerShell] Create Winform by PowerShell

หลังจากที่ได้ลองเล่น Powershell มาสักพักแล้ว ผมมี idea ขึ้นมา เนื่องจาก Workshop ที่แล้ว ผมได้ทำบน Console ซึ่งอาจจะไม่สะดวกมากนั้น คราวนี้ผมลองสร้างเป็น Winform เล็กๆขึ้นมาแทนครับ(จริงๆ กะลองกับ C# ก่อน แต่มาเจอการใช้ประยุกต์ใช้งานแบบนี้ เลยลองมาเล่นก่อน 555) มาถึงตรงนี้หลายๆคนอาจะมีคำถาม ผมเลยทำ Q/A สรุปได้เลยครับ Q: Power Shell มีความสามารถในการสร้าง Winform ด้วยเหรอ ?A: มีครับ เนื่องจากตัว PowerShell เองมีพื้นฐานมาจาก .Net Framework ทำให้สามารถเรียกใช้ library ของ Winform ได้ครับ Q: ต้องสร้าง Power Shell จาก Command ตรงๆเลย หรือ ไม่มี Tools ลากวางแบบ Visual Studio ?A: มีครับ โดย Tools ชื่อ Power Shell Studio มีทั้ง Version Community(ฟรี) และ License(เสียตังค์) แต่ในบทความนี้ผมของ Hard Code นะครับ อิอิ ใน Winform ที่ผมเขียนขึ้น จะมี Control ที่จำเป็นต่างๆ ในการรับค่า Parameter ต่างๆ ได้แก่ Textbox กับ MaskTextBox และการแสดงผลนั้น ผมใช้ตัว DataGridView ครับ โดยหน้าตาของโปรแกรมที่ได้มีลักษณะ ดังนี้ หลังจากเห็น Output แล้ว เรามาลองดู Code ที่ละส่วนกัน โดยผมแยกเป็นส่วนของ UI กับ…

[PowerShell] Getting File by File Version

powershell

จากบทความที่แล้ว ที่ได้เกริ่นสาเหตุของปัญหาไปแล้ว ว่ามี Program หลากหลายเวอร์ชั่นมากในการทดสอบ วันนี้ผมเลยได้ลองเขียน Code ในการหาไฟล์ .exe, ocx, dll ในโพลเดอร์ที่เก็บ Program ทั้งหมด ตาม Version ของลูกค้า และ ชื่อไฟล์ที่ต้องการทดสอบครับ โดย Code คร่าวออกมาเป็นประมาณนี้ครับ ผลลัพธ์ที่ได้ (ขอปิดชื่อไฟล์นิดนึง งานบริษัทและ)และสุดท้าย คือ แก้พวกค่า Path หรือเงื่อนไขต่างๆ ให้รับข้อมูลจากผู้ใช้เองเลย จะได้ไม่ต้องมาแก้ Code บ่อยๆครับ ดังนี้ ต่อไปจะเป็นการลองใช้ Code ชุดนี้ ไปประยุกต์กับ C# ทำ Application เล็กๆกันครับ

[PowerShell] เริ่มต้นจัดการปัญหาด้วย PowerShell

powershell

ไม่ได้เขียน Blog ซะนานเลย ช่วงนี้งานที่ทำงานเยอะขึ้น และขึ้นโปรเจคใหม่ด้วย ตอนนี้เข้าเรื่องดีกว่า เมื่อมี Program ก็ต้องมี Bug หรือ Defect เป็นของคู่กัน การตรวจสอบเคสที่มาจากลูกค้า เพื่อหา Bug หรือ Defect  และปัญหาที่พบว่า Program มี Version ที่หลากหลายมาก ทำให้การหาไฟล์ Program นั้นลำบากมาก แต่เมื่อมีปัญหา ย่อมมีโอกาสตามมา โดยผมลองใช้ Power Shell ในการแก้ปัญหาคร่าวๆ ลองที่ละ Step และท้ายที่สุด คือ การนำไปใช้ร่วมกับ C# เพือให้ง่ายกับการใช้งานครับ มาถึงตอนนี้หลายคนอาจจะสงสัยว่าทำไมต้อง Power Shell แล้ว ไอ้เจ้า Power Shell มัน คือ อะไร Power Shell คือ ชุดคำสั่งแบบ command line shell และ task-based scripting technology เพื่อใช้ช่วยในการจัดการกับระบบ (มองว่าเป็น dos-commandline เวอร์ชั้น Upgrade) เหมือนกับทางค่าย Open Source อย่าง Unix Shell หรือ Linux Shell อย่าง bash เป็นต้น โดยถึงแม้ว่าหน้าที่เหมือนกัน แต่การทำงานในส่วนลึกนั้นแตกต่างกันมาก โดยผมขอสรุปแยกไว้ ดังนี้ Unix Shell หรือ Linux Shell เป็นการทำงานผ่าน Raw Text Power Shell หรือ Windows Power เป็นการทำงานแบบ Object-based approach โดยมีพื้นฐานการทำงานมาจาก .Net Framework…

7 เทคนิคการเลือกหุ้น (ให้ได้กำไร ง่ายๆครับ)

7 เทคนิคการเลือกหุ้น (ให้ได้กำไร ง่ายๆครับ) หุ้นตัวนั้นต้องมีอัตรา ผลตอบแทนต่อส่วนผู้ถือหุ้น (ROE) สูง 15-20%ขึ้นไป ROE จะบ่งบอกความสามารถของผลตอบแทนต่อส่วนของผู้ถือหุ้น “ยิ่งสูง ยิ่งดี” แต่บางครั้งก็มีตัวหลอก เหมือนกัน หากบริษัทนั้นมีหนี้สินจำนวนมาก ฉะนั้นต้องดูดีๆ อย่ารีบเชื่อทันที! หุ้นตัวนั้นต้องมีอัตราผลตอบแทนต่อสินทรัพย์ (ROA) สูงกว่า 10% ต้องมี PEG ratio น้อยกว่า 1 เท่า คือการเทียบค่า P/E ratio กับการเจริญเติบโตของกำไรสุทธิ (Growth) หาโดยเอาค่า P/E ratio ตั้งหารด้วยเปอร์เซ็นต์การเจริญเติบโตนั้น บริษัทใดที่ราคาหุ้นต่ำจะน่าซื้อ ถ้าค่า PEG ratio เกิน 1 แสดงว่าราคาหุ้นสูงเกินไป ต้องมีอัตราเงินปันผลตอบแทน (Dividend Yield) อยู่ในระดับ 3.5-4% ขึ้นไป ถามว่าทำไมต้องเป็นตัวเลขนี้ เพราะเป็นตัวเลขที่มากกว่าอัตราเงินเฟ้อที่ปกติจะอยู่ระดับ 3% หุ้นตัวนั้นต้องมีกระแสเงินสดสูงๆ ยิ่งไม่ต้องจ่ายหนี้ “ผมจะชอบมากเป็นพิเศษ” ผู้บริหารต้องไว้ใจได้ (โปร่งใส) พูดแล้วทำได้จริง ซึ่งเราต้องไปคุยกับผู้บริหารบ่อยๆ ยิ่งเขา ถือหุ้น 20-25% ผมยิ่งชอบเพราะมันจะบ่งบอกว่า เขาจะทุ่มเทในการทำงานมากขนาดไหน จะดูปัจจัยทางกายภาพ ธุรกิจนี้มีความแข็งแรง มากน้อยแค่ไหน โอกาสเติบโตของรายได้และกำไรเป็นอย่างไร สินค้าหรือธุรกิจหลักจะเติบโตไปตาม ชีวิตประจำวันที่เปลี่ยนแปลงไปหรือไม่ และลูกค้านิยมชมชอบสินค้ามากหรือน้อยแค่ไหน ที่สำคัญจะดูว่า คู่แข่งของเขามีใครบ้าง หากจะมีคู่แข่งเกิดขึ้นใหม่จะเข้ามาในธุรกิจนี้ได้ง่ายหรือยาก “ผมไม่นิยมดูเส้นเทคนิคและไม่เคยนำมาประยุกต์ใช้ เพราะไม่เข้าใจในหลักการ ส่วนใหญ่จะดูเพียงราคา ณ ปัจจุบัน เพื่อนำมาเปรียบเทียบกับมูลค่าที่ประเมินไว้ว่ามันมีส่วนลด (Margin of Safety) เป็นที่น่าพอใจหรือไม่ เช่น ถ้ามีส่วนลด 40-50% จากมูลค่าที่คิดไว้ ก็พอใจที่จะซื้อแล้ว” คุณหมอยังบอกด้วยว่า ตั้งแต่ใช้หลักการพวกนี้ ไม่เคยขาดทุนเลยครับ Credit:เล่นหุ้นตามเซียน

ทำไม Method หรือ Function ที่ดีควรมีความยาวไม่เกิน 1 หน้าจอ หรือ 20 บรรทัด หรือ กฏอื่นๆอีกมากมาย

สำหรับบางคนที่เพิ่งเรียนเรียน Programming หรือ เพิ่มเริ่มทำงานใหม่ๆ อาจจะสงสัยว่าทำไมอาจารย์ หรือ พี่ที่ทำงานถึงมีข้อกำหนดในการเขียน Code ขึ้นมา ซึ่งบางข้ออาจจะดูไม่จำเป็นเลย เช่น หากเรามองแค่ผิวเผินแล้ว อาจจะคิดในใจว่าต้องการความเป็นระเบียบ ให้ Code สวยงาม เพื่อที่เรา หรือคนอื่นมาเขียนต่อภายหลังได้ง่าย แต่ถ้ามองลึกๆลงไป มันอาจจะเป็นกุศโลบายอย่างหนึ่งก็ได้ ซึ่งแฝงไปด้วยแนวคิด และทฤษฏีที่ซับซ้อน โดยผมจะอธิบาย แต่ละข้อเลยยะครับ ข้อแรก Method ที่เขียนขึ้นมาควรจะไม่เกิน 20 บรรทัด หรือ แสดงไม่เกินไม่เกิน 1 หน้าจอ หากเรามองลึกลงไป ทำไมต้องไม่เกิน 20 บรรทัด หรือ 1 หน้าจอ ซึ่งแนวคิดนี้จะลึกให้เราต้องกำหนดการทำงานของ Method ให้กระชับ และมีหน้าที่เดียว ข้อสอง การกำหนด Tab เยื้องของ IF ELSE และไม่ควรมี IF ซ้อนกันเกิน 3 ชั้น ทีมีการกำหนดให้แสดงการกำหนด Tab เยื้องของ IF ELSE เพิ่มความสวยงามแหละ และแสดงให้เห็นถึงความซับซ้อนของ code มองง่ายๆ เลย ถ้า Code ทีเราเขียนขึ้นมามี IF ซ้อนกันเยอะแล้วเนี่ย แสดงว่า logic ภายใน method นั้นมันซับซ้อนเกินไป ซึ่งจะมีผลกับการ maintain code ในอนาคต ถ้าเกิดมีการเพิ่มเงื่อนไขลงไปอีก แต่เราจะรู้ได้อย่างไรว่ามันจะไม่ไปกระทบกับ IF เดิมๆ ที่มีอยู่ก่อนแล้ว แนวทางแก้ไข ทางแก้ไขมีง่าย แต่มีศัพท์เรียกรวมๆว่าการ Refactor Code แต่เราจะ Refactor อย่างไร มีแนวคิด และแนวคิดที่เข้ามาช่วย ดังนี้

ลงทุนด้วยหลักกาลามสูตร

ตอนแรกหลายๆคนอาจจะงงว่าไอ้หลักกาลามสูตร มันเอาประยุกต์ใช้กับการลงทุนได้ด้วยเหรอ ? ส่วนตัวผมจริงๆหลักการนี้มันปรับใช้กับทุกเรื่องได้ครับ ไม่จำเป็นต้องเป็นหุ้นหรอก แต่ผมอยากจะเตือนเม่ารายใหม่ที่ตามมาเล่นหุ้น เพราะ คิดว่ามันได้เงินเยอะ มันหอมหวาน แต่อีกด้านของมันขาดทุน เจ๊ง (จริงๆผมก็มือใหม่นะ เพิ่งเล่นมาจริงๆ ประมาณ 5 เดือนได้เอง) มาเข้าเรื่องดีกว่า “ลงทุนด้วยหลักกาลามสูตร ” อย่าเพิ่งเชื่อโดยฟังตามกันมา >> ไปเชื่อโพยหุ้น โดนไม่ได้ศึกษาพื้นฐานหุ้นนั้นก่อน อย่าเพิ่งเชื่อโดยถือว่าเป็นของเก่าเล่าสืบๆ กันมา >> ซื้อหุ้น เพราะ เมื่อก่อนหุ้นตัวนี้ มีอายุในตลาดมาอย่างยาวนานนน อย่าเพิ่งเชื่อเพราะข่าวเล่าลือ >> ช่วงนี้เทรน Solar Farm (ปี 2557)หุ้นอะไรเล่นข่าวนี้ราคาขึ้้นหมด แต่อย่าลืมตรวจสอบข่าวด้วย อย่าเพิ่งเชื่อโดยอ้างคัมภีร์หรือตำรา >> อันนี้เจอกับตัวเลย เพิ่งหัดดูกราฟ เห็นมี Pattern ตามนี้เลย ตัวสินใจซื้อปรากฏได้หนาวบนดอยแทน อย่าเพิ่งเชื่อโดยคิดเดาเอาเอง >> มันเหม่งๆนะ แล้วก็ขายหมู หรือ Cutloss ไป หรือซื้อเพราะสัญชาตญาณ อย่าเพิ่งเชื่อโดยคิดคาดคะเนอนุมานเอา >> อันนี้มือใหม่น่าจะเจอราคา เช่น หุ้น GU 3 บาท อีก 2 เดือน ราคาไป 9 บาท เลยตัดสินใจซือ เพราะ คิดว่าอีก 5 เดือนมันจะไป 24 บาท (เคยมีรุ่นน้องมาถามจริงๆนะ 55) อย่าเพิ่งเชื่อโดยตรึกเอาตามอาการที่ปรากฏ >> อันนี้ไม่มีอะไรแนะนำา พยายามตรวจสอบข้อมูลให้มันรอบด้าน อย่าเพิ่งเชื่อเพราะเห็นว่าต้องกับความเห็นของตน อย่าเพิ่งเชื่อว่าผู้พูดควรเชื่อได้ >> ช่วงนี้ Fanpage กลุ่มหุ้น โผล่กันเป็นดอกเห็ด ว่าแต่อันไหนจริง อันไหนหลอกหละ ลองคิดกันนะ อย่าเพิ่งเชื่อว่าผู้พูดนั้นเป็นครูของเรา >> ช่วงนี้มีอบรมสร้าเงินล้านมากมาย แต่ยังไงอย่างหลงเชื่อหน้ามืดตามั่วลงทุนตามที่คนสอนบอกนะครับ ควร Cross Check หาข้อมูลก่อน ท้ายที่สุดแล้ว สิ่งที่สำคัญที่สุด…