21 August 2015

C# StringBuilder เหนือกว่าต่อ string ธรรมดา

    เวลาเขียนโปรแกรมแล้วมีการต่อ string หลายๆคนอาจจะคุ้นชินกับการเขียนแบบ text = text + newText หรือ text += newText ส่วนตัวผมจะเขียนแบบหลังซะส่วนใหญ่ แต่ถ้าเวลาที่เราต้องเจอเคสที่ต้องต่อ string จำนวนมากๆเข้า ก็จะเริ่มรู้สึกว่าโปรแกรมเราทำงานช้าลง แต่มันยังมีอีกวิธีที่บางคนอาจจะยังไม่ทราบหรือเคยเห็นแล้วแต่ก็ไม่ได้สนใจอะไร นั่นคือการใช้คลาส StringBuilder คราวนี้ผมจะลองเขียนเปรียบเทียบระหว่างการใช้คลาส StringBuilder กับการต่อ string ธรรมดาที่เราคุ้นชินโดยจะมีการจับเวลาของการทำงานในแต่ละแบบ ดัง code ตัวอย่างครับ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace ConsoleTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Stopwatch sw1 = new Stopwatch();
            sw1.Start();
            UseStringBuilderClass();
            sw1.Stop();
            Console.WriteLine("UseStringBuilderClass " + sw1.ElapsedMilliseconds + " ms.");

            Stopwatch sw2 = new Stopwatch();
            sw2.Start();
            NotUseStringBuilderClass();
            sw2.Stop();
            Console.WriteLine("NotUseStringBuilderClass " + sw2.ElapsedMilliseconds + " ms.");

            Console.ReadKey();
        }

        static void UseStringBuilderClass()
        {
            StringBuilder str = new StringBuilder();
            for (int i = 0; i < 100000; i++) str.Append(i);
        }

        static void NotUseStringBuilderClass()
        {
            string str = "";
            for (int i = 0; i < 100000; i++) str += i;
        }
    }
}

21 April 2015

ASP.NET MVC : ViewData VS ViewBag Vs TempData

   สวัสดีครับ บทความนี้ผมจะมาเขียนเกี่ยวกับการใช้ ViewData, ViewBag และ TempData ทั้งการใช้งานและข้อแตกต่างแบบคร่าวๆ

02 April 2015

ปรับขนาดไฟล์รูปภาพด้วย Image Processor ใน Photoshop

   สวัสดีครับ หลายๆท่านอาจจะเคยเจอปัญหาเหมือนผมเวลาที่เราต้องการเอาไฟล์รูปจำนวนหลายๆไฟล์ไปอัพโหลดขึ้นเฟสบุ๊ค แต่ไฟล์เจ้ากรรมดันใหญ่ซะเหมือนเกิน ไฟล์หนึ่ง 2-3 MB ถ้าอัพทีหลายๆสิบรูปนะรอตายเลย ยิ่งถ้าเน็ตช้าๆแบบผมนะยิ่งไม่ต้องพูดถึงเลย

04 December 2014

แสดง Column Properties สำหรับ Table Design ใน MSSQL Server

     สำหรับผู้ที่ใช้งาน Microsoft SQL Server มักจะคุ้นเคยกับ Table Design ซึ่งเมื่อเรา New Table... ขึ้นมาก็จะพบหน้า Design โดยทั่วไปจะแสดง Column Properties คือ Column Name, Data Type และ Allow Nulls ดังรูป
     หลายคนอาจจะสงสัยว่า เอ๊ะ! มันโชว์มากกว่าไอ้สามคอลัมน์นี้ได้มั้ย ผมเองก็พยายามหามาเป็นพักเหมือนกันแต่ก็ไม่ประสบผลสำเร็จ ฮ่าๆ สุดท้ายจบที่ Stackoverflow ก็เลยเอามาแบ่งปันกันครับ โดยผมจะโชว์คอลัมน์ Description เพิ่มขึ้นมา อ่อ! ลืมบอกไปผมใช้ SQL Server 2008 R2 สำหรับทดลองครั้งนี้นะครับ
เริ่มแรกเปิดหน้าต่าง Run ขึ้นมา (All Programs >> Accessories >> Run) จากนั้นพิมพ์ regedit แล้วคลิก OK

08 June 2014

SET & MAI แตกต่างที่เหมือนกัน ???

    หลายๆท่านที่คิดจะเริ่มลงทุนในหุ้นหรือกำลังเริ่มที่จะศึกษาเกี่ยวกับธุระกิจที่อยู่ในตลาดหลักทรัพย์ อาจจะสงสัยว่า SET กับ MAI มันคืออะไร? แล้วมันต่างกันอย่างไร?
    ความจริงแล้ว SET กับ MAI ก็คือตลาดหลักทรัพย์เหมือนกันนี่แหละครับ แต่ที่ต่างกันคือ SET(Stock Exchange of Thailand) เป็นตลาดหลักทรัพย์ที่ก่อตั้งขึ้นเป็นแห่งแรก ทำหน้าที่เป็นตลาดทุน เพื่อให้กิจการต่างๆ สามารถระดมเงินทุนเพิ่มเติมจากสาธารณะได้ และ MAI(Market for Alternative Investment) ก็คือตลาดหลักทรัพย์ที่ก่อตั้งเป็นแหล่งที่สอง ทำหน้าที่เหมือนกับแห่งแรก
    แต่ตลาดใหม่นี้ จะเน้นไปที่กิจการขนาดกลางและขนาดย่อม (เอสเอ็มอี - SME) และกิจการเกี่ยวกับนวัตกรรม โดยได้ผ่อนผันหลักเกณฑ์ต่างๆ ลง เช่น ทุนชำระแล้วขั้นต่ำของหลักทรัพย์ในตลาดหลัก คือ 200 ล้านบาท ในขณะที่ขั้นต่ำของตลาดใหม่ ลดลงเป็น 40 ล้านบาท เป็นต้น เพื่อเปิดโอกาสให้กิจการขนาดเล็ก ที่ไม่สามารถเข้าตลาดหลักทรัพย์แห่งประเทศไทยได้ ได้มีหนทางในการระดมทุน รวมทั้งสนับสนุนอุตสาหกรรมการร่วมลงทุน (venture capital) เพื่อเพิ่มจำนวนบริษัทจดทะเบียนในตลาดหลักทรัพย์

ที่มา : วิกิพีเดีย สารานุกรมเสรี

18 March 2014

วิธีเช็คเวอร์ชัน .NET Compact Framework ใน Windows CE

    กลางเดือนมีนาอากาศในกรุงเทพช่างร้อนระอุ แอดมินเดินไปกินข้าวเที่ยงแต่ละทีตัวแทบไหม้ เมษานี่คงไม่ต้องพูดถึงหรอกมั้ง แอดมิดหล่ะอยากหนีร้อนไปขั้วโลกเหนือเสียจริง ฮ่าๆ
    อ่ะ ! ไร้สาระมามากพอและ เห็นแอดมินหายไปนานนี่ไม่ใช่โดนม็อบกวาดไปแล้วนะครับ พอดีช่วงที่ผ่านมาส่งแอพให้ Tester โดนตีกลับมา Error บาน แก้งานตาเหลือก สอนให้รู้ว่าโลกนี้มีอะไรให้เราเรียนรู้อีกเยอะ ตอนนี้ก็กำลังลองเล่น Windows CE คาดว่าจะถูกมอบหมายให้ Develop ในไม่ช้านี้ บทความนี้จะมาแบบง่ายๆ นิ่มๆ ก็คือการตรวจสอบเวอร์ชันของ .NET Compact Framework ที่อยู่บน Windows CE เพราะในการจะพัฒนาแอพบนระบบปฏิบัติการนี้จำเป็นต้องคำนึงถึงเป็นอย่างมาก

26 February 2014

Generate Script พร้อมข้อมูลบน SQL Server 2008R2

    สวัสดีครับท่านผู้อ่านทุกท่าน หลังจากที่ผมไม่ได้เขียนบทความซะนาน(มากๆ) พอดีวันนี้มีปัญหาเกี่ยวกับงานนิดหน่อยคือผมไป Backup ข้อมูลบนเซิฟเวอร์ซึ่งใช้ SQL Server 2008R2 แล้วกะว่าจะมา Restore บนเครื่องเพื่อเอางานกลับมาทำที่บ้านสักหน่อย แต่มันติดปัญหาตอน Restore เอ้า ! ทำไมไม่ได้ว่ะ ไปหาข้อมูลก็พบว่ามันเอาไฟล์ Backup ของ 2008R2 มาใช้กับ 2008 ไม่ได้ กำ ขี้เกียจลง SQL Server 2008R2 อ่ะทำไงดี ???

15 November 2013

ล้างข้อมูลใน Textbox ด้วย jQuery

    สวัสดีจร้าาาาา วันศุกร์สักทีนะเจ้าพวกมนุษย์เงินเดือนทั้งหลาย หลังจากที่ลุยงานกันมาทั้งสัปดาห์จะว่าเหนื่อยก็เหนื่อย จะว่าสบายก็สบาย ฮ่าๆ สรุปไงว่ะเนี่ย อ่ะๆ เอาเป็นว่าบทความนี้มาลองเล่น jQuery กันดีกว่า

    โจทย์ของเราคือทำฟอร์มล็อกอินโดยที่เราจะบอกกับผู้ใช้งานว่ากล่องใหนสำหรับกรอก Username กล่องไหนสำหรับ Password โดยที่ไม่ต้องใช้แท็กตัวอักษรสำหรับบอกให้ User รู้ สรุปง่ายๆก็คือบอกมันใน textbox นั่นแหละครับ แต่เพื่อให้ล้ำขึ้นมาหน่อยเวลา User บังเกิดเกล้าคลิกแล้วจะให้มันล้าง Textbox ด้วย ตามโค๊ดตัวอย่างนี้เลยครับ

ขั้นแรกอย่าลืมเพิ่มโค๊ดสำหรับเรียกใช้ jQuery นะครับ

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
</head>

12 November 2013

เปรียบเทียบ Flat Design ของแอพบน iOS7 VS WP8

    สวัสดียามดึก พอดีแอดมินได้ไปเห็นบทความเปรียบเทียบ Flat Design ของแอพต่างๆระหว่าง iOS7 กับ Windows Phone 8 เรามาลองดูกันดีกว่า ว่าจะเหมือนหรือแตกต่างกันเท่าไหร่

Facebook

08 November 2013

ตัวอย่างการใช้งาน Triggers บน SQL Server

    มาตามสัญญาาาาาาาาา บทความที่แล้วผมก็ได้พูดถึง Triggers ไปแล้วนะครับว่ามันคืออะไร แนวคิดเป็นยังไง แต่มาบทความนี้เราจะมาลองใช้งาน Triggers กัน ผมจะทดลองเขียนบน SQL Server ซื่งจะให้ภาษา T/SQL เช่นเดียวกับ Stored Procedures ถ้าพร้อมแล้ว เปิด SQL Server Management ขึ้นมาเลยครับ

    ขั้นตอนแรก ผมจะสร้างเทเบิลมาก่อน 2 เทเบิล โดย Table_A คือตัวที่จะทำการเขียน Triggers ฝังไว้ ส่วน Table_B คือเทเบิลผลลัพธ์ โดยภายในจะมีฟิลด์สองฟิลด์เหมือนกันทั้งสองเทเบิลคือ id Type:int (auto run indentity) และ txt Type:nvarchar(50) แต่ความจริงแล้วการทำ Triggers ไม่ได้จำกัดนะครับว่าเทเบิลจะต้องเหมือนกัน
*** หมายเหตุ *** Type ของฟิลด์ txt เป็น nvarchar(50) ไม่ใช่ text ตามรูปนะครับ


29 October 2013

อยากได้ Like Page เพิ่ม มาแลกกับเราสิ !

    เพจคุณไลค์น้อยรึเปล่า ถ้าคุณพึ่งตั้งเพจใหม่แล้วต้องการให้คนมาไลค์เยอะๆ เราช่วยคุณได้ (แหม่ทำยังกับเพจเราคนไลค์เยอะตาย 55+) เอาเป็นว่าหลังจากที่ผมทดลองแล้วถือว่าโอเคนะครับ มีคนมาไลค์เพิ่มขึ้นไวมากแต่ติดตรงที่เหรียญหมดซะก่อน ฮ่าๆ ถ้าอยากได้ไลค์เพิ่มบ้างก็ลองทำดูนะครับ

  1. เข้าไปยังเว็บไซต์ sysLIKE
  2. คลิก สมัครสมาชิก และทำการกรอกข้อมูลต่างๆเพื่อสมัครสมาชิก

26 October 2013

Triggers ถ้าฉันทำ เธอต้องทำด้วยนะ !

    สวัสดีไอ้พวกมนุษย์ ! ในที่สุดแอดมินก็ได้มาเขียนบทความของ Gunghun.com เต็มตัวสักทีนะครับ หลังจากที่วุ่นวายกับการย้ายบทความจาก Gushared.com เพราะว่าโฮสกำลังจะหมดอายุเร็วๆนี้ แอดมินเลยคิดว่าถ้าเราหันมาใช้ Blogger แทน จะได้ไม่ต้องเสียค่าเช่าโฮสแล้วก็ถือโอกาสเปลี่ยนชื่อเว็บซะเลย และสำหรับบทความนี้ก็จะพูดเกี่ยวกับเรื่อง Triggers ว่ามันคืออะไร

    Triggers ถ้าจะพูดให้เข้าในง่ายๆ ก็คือการเขียนโปรแกรมฝังไว้ที่เทเบิลเพื่อดักจับเหตุการณ์ (INSERT, UPDATE, DELETE) ที่เกิดขึ้นกับเทเบิลนั้นๆ เพื่อกระทำการใดๆกับเทเบิลเป้าหมายที่ต้องการ ตัวอย่างเหตุการณ์ที่ใช้ Triggers เช่น การจัดเก็บข้อมูลในการซื้อขายผลไม้ ซึ่งจะมีเทเบิลรายการซื้อขาย เทเบิลสรุปยอดและเทเบิลการจัดการสต๊อก ปกติแล้วเมื่อมีการซื้อขาย เราจะต้องอัพเดตข้อมูลสามเทเบิลนี้โดยการเพิ่มข้อมูลเข้าไปทีละเทเบิลๆ ตามรูป

20 October 2013

ปุ่ม 3D บนเว็บไซต์ !

[ย้ายบทความจาก Gushared.com]
    ถ้าพูดถึงความประทับใจในการเข้าเว็บไซต์ เว็บไซต์แบบไหนล่ะที่คุณเข้าแล้วคุณรู้สึกว่า เห้ย ! แมร่งเจ๋งหว่ะ ถ้าสำหรับผมแล้วเว็บไซต์ที่จะทำให้ผมประทับใจได้จะต้อง ดูสะอาดตา ใช้งานง่ายแบบว่าใครเข้ามาก็ใช้งานเป็นเลย มีความแปลกประหลาดแหวกแนวไปจากเว็บไซต์เดิมๆที่เคยใช้
    ผมได้ลองเข้าไปเว็บไซต์ cssdeck.com ไปเจอตัวอย่างการทำปุ่มแบบ 3D ของคุณ simonpicos เห้ย! แมร่งแนวว่ะ ก็เลยเอามาลองทำดูบ้าง ตามด้านล่างนี้เลยครับ (ลองคลิกปุ่มดูนะครับ >.<)

Support : Chrome, Safari, Firefox และ Opera

Memory Address กับเรื่องลิสต์ๆ

[ย้ายบทความจาก Gushared.com]
    ถ้าเปรียบหน่วยความจำให้เข้าใจง่ายๆ ก็คงต้องเปรียบเหมือนห้องเก็บของที่มีทั้งขนาดและหมายเลขห้องเพราะเวลาที่เราจะให้ใครไปหยิบของจากห้องเก็บของ เราจะได้บอกเค้าถูกว่าจะต้องไปหยิบจากห้องไหนหรือเวลาที่จะเอาของไปเก็บ ถ้ามีของเยอะๆจะต้องใช้ห้องเก็บกี่ห้องและเลขห้องไหนบ้าง
    หน่วยความจำ สิ่งที่คนเขียนโปรแกรมมือใหม่มักจะละเลยและไม่คำนึงถึง แต่สำหรับการเขียนโปรแกรมแล้วเป็นสิ่งที่จะลืมไม่ได้เพราะการเขียนโปรแกรมบางรูปแบบค่อนข้างที่จะต้องคำนึงถึงเรื่องการใช้งานหน่วยความจำ ตัวอย่างเช่น
//Programming Language : C#
List a = new List(){1, 2, 3};
List b = a;
b.RemoveAt(0);   //Remove data index 0.
//Result
a = 2, 3
b = 2, 3

19 October 2013

รีวิว กระเป๋า 7-11 แสตมป์ 300 ดวง

[ย้ายบทความจาก Gushared.com]
    หลังจากที่ผมเข้าๆออกๆ 7-11 อยู่หลายสิบรอบโดยมีเป้าหมายแรกคือโต๊ะปิกนิกแสตมป์ 1000 ดวง แต่หลังจากที่ได้หาข้อมูลจากอินเตอร์เน็ตแล้วก็คำบอกเล่าจากคนรอบข้างก็พบว่าไม่ได้น่าแลกมาใช้เลย ผมก็เลยตัดสินใจไปแลกกระเป๋าสะพายมาแทน
    กระเป๋าตัวอย่างที่ผมรีวิวนี้เป็นสีดำแดง ตัวประเป๋าเป็นแบบสะพายหลังสองสาย มีหูหิ้วด้านบน

18 October 2013

จับข้อมูลยัดใส่ Stored Procedures

[ย้ายบทความจาก Gushared.com]
    สวัสดีครับ ครั้งที่แล้วผมได้เสนอบทความเกี่ยวกับตัวอย่างการใช้งาน Stored Procedures ไปแล้วนะครับ ซึ่งจะแสดงให้เห็นเกี่ยวกับการสร้าง การเรียกใช้ Stored Procedures แบบง๊ายยยยยยยย ฝุดๆ เล๊ยยยย
    แต่มาบทความนี้จะเป็นตัวอย่างในการส่งข้อมูลไปยัง Stored Procedures เพื่ออะไรบางอย่าง เช่น เพิ่มข้อมูลลงดาต้าเบสหรืออาจจะเป็นการประมวลผลอื่นๆ และตัวอย่างนี้ก็คือการส่งข้อมูลเพื่อทำการเพิ่มข้อมูลลงดาต้าเบส โดยแบ่งเป็น 2 ส่วน ดังนี้

17 October 2013

สิ่งเล็กๆ ที่เรียกว่า Stored Procedures

[ย้ายบทความจาก Gushared.com]
    ช่วงหลังๆถ้าใครได้ติดตามเราจะเห็นว่าผมได้พูดเกี่ยวกับ Stored Procedures แต่มาคราวนี้เราจะมาลองใช้งานมันดู โดยหลักๆผมจะแบ่งเป็นสองส่วน ส่วนแรกจะเป็นการสร้าง Stored Procedures ใน SQL Server และส่วนที่สองจะเป็นส่วนของตัวอย่างการเรียกใช้งาน
ส่วนที่ 1 : การสร้าง Stored Procedures หลังจากที่เราเข้าโปรแกรม SQL Server เรียบร้อยแล้ว คลิกขวาที่ดาต้าเบส -> Programmability -> Stored Procedures -> New Stored Procedure...

[C#] เซ็ตปุ่ม Enter เพื่อคลิก Button

[ย้ายบทความจาก Gushared.com]
    บทความนี้เป็นบทความที่ค่อนข้างจะสั้น เพราะไม่มีอะไรมากมาย แค่ให้รู้ว่าถ้าเราสร้าง Button ขึ้นมาบน Windows Forms Application แล้วต้องการให้กดปุ่ม Enter บนคีย์บอร์ดแทนการคลิกบน Button มันต้องทำยังไง อย่ารอช้าเริ่มกันเลยดีกว่า!

[C#]จับเวลาการทำงานของโปรแกรม

[ย้ายบทความจาก Gushared.com]
    "เวลา" สิ่งเล็กๆที่บางครั้งเราอาจจะมองข้ามไป เวลาเขียนโปรแกรมแอดมินเองก็ไม่ค่อยจะสนใจหรอกครับว่าโปรแกรมมันจะใช้เวลาทำงานเท่าไหร่ จนเมื่อมาทำงานเนี่ยแหละครับ Requirement ต้องการให้โปรแกรมต้องทำงานเสร็จภายใน 2 นาที *o* ว๊ากกกก จะทำไงเนี่ย! ไอ้โปรแกรมเราก็คำนวณเยอะซะเหลือเกิน สุดท้ายแล้วแอดมินก็ต้องทำจับเวลาดูทีละส่วน ว่าส่วนไหนมันใช้เวลาเยอะเป็นพิเศษ แล้วค่อยปรับอัลกอริทึมใหม่ แต่ประเด็นคือ เราจะจับเวลาเป็นส่วนๆ ยังไงหล่ะ ? เนี่ยแหละครับที่แอดมินอยากบอก
    Stopwatch หลายคนอาจจะรู้จักแล้ว หลายคนไม่เคยคิดจะใช้มัน Stopwatch เป็นคลาสที่ติดมากับ .NET Framework อยู่แล้วเหลือแค่รอให้เราเรียกใช้มัน โดยหลักๆแล้ว เราจะใช้แค่เริ่มนับเวลา หยุด แล้วก็ดูเวลาที่นับได้ แอดมินก็จะแสดงตัวอย่างแค่นี้แหละ หึหึ
using System.Diagnostics;   // อย่าลืม !
Stopwatch sw = new Stopwatch();  //ทำการเรียกใช้คลาส Stopwatch 
sw.Start();   //เริ่มนับเวลา
sw.Stop();    //หยุดนับเวลา
sw.Elapsed;   //เรียกดูค่าเวลาที่นับ รูปแบบ TimeSpan(Hours:Minutes:Seconds.Milliseconds)

16 October 2013

[C#] Return หลายค่าใน Method เดียว

[ย้ายบทความจาก Gushared.com]
    หลายๆคนที่เขียนโปรแกรม อาจจะเคยต้องการให้เมธอด return ค่ากลับมาให้เรามากกว่าหนึ่งค่าจากเมธอดเดียว บางคนอาจจะเคยใช้ out แล้ว แต่บางคนอาจจะยังไม่รู้จัก เอาแบบไม่อ้างหลักการอะไรมากมายนะครับ เหตุผลที่ผมจะใช้ out ก็ต่อเมื่อต้องการให้เมธอดนั้น return ค่ากลับมามากกว่าหนึ่งค่าโดยที่ไม่ต้องใช้ object หรือ struct โดยสามารถศึกษาได้ตามตัวอย่างโค๊ดง่ายๆด้านล่างนี้ครับ