Archive

Archive for the ‘C#’ Category

Base64 Encode/Decode

ธันวาคม 16th, 2009

static public string EncodeTo64(string toEncode)

{

byte[] toEncodeAsBytes

= System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);

string returnValue

= System.Convert.ToBase64String(toEncodeAsBytes);

return returnValue;

}

static public string DecodeFrom64(string encodedData)

{

byte[] encodedDataAsBytes

= System.Convert.FromBase64String(encodedData);

string returnValue =

System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes);

return returnValue;

}

————————

string myData = “Here is a string to encode.”;

string myDataEncoded = EncodeTo64(myData);

Console.WriteLine(myDataEncoded);

string myDataUnencoded = DecodeFrom64(myDataEncoded);

Console.WriteLine(myDataUnencoded);

Console.ReadLine();

C#

Twitter api sample

ธันวาคม 9th, 2009
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Twitterizer.Framework;

namespace TwitterSample
{
    class Program
    {
        static void Main(string[] args)
        {
            if (Twitter.VerifyCredentials("twitter_user", "twitter_password"))
            {
                Twitter twitter = new Twitter("twitter_user", "twitter_password", "my_app");

                PrintReplies(twitter);
                PrintFollowers(twitter);
                PrintFriends(twitter);
                PrintDirectMessages(twitter);
                PrintFriendsTimeline(twitter);
                PrintPublicTimeline(twitter);
                PrintUserTimeline(twitter);

                //post a message
                twitter.Status.Update("Testing 123, Testing");
            }
            Console.ReadKey();
        }

        public static TwitterUser GetUserInfo(Twitter twitter, string userId)
        {
            TwitterUser user = twitter.Status.Show(userId);

            return user;
        }

        public static void PrintReplies(Twitter twitter)
        {
            TwitterStatusCollection col = twitter.Status.Replies();

            Console.WriteLine("Replies");

            foreach (TwitterStatus status in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Created:                " + status.Created);
                Console.WriteLine("ID:                     " + status.ID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToStatusID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToUserID);
                Console.WriteLine("IsFavorited:            " + status.IsFavorited);
                Console.WriteLine("IsTruncated:            " + status.IsTruncated);
                Console.WriteLine("RecipientID:            " + status.RecipientID);
                Console.WriteLine("Source:                 " + status.Source);
                Console.WriteLine("Text:                   " + status.Text);
                Console.WriteLine("TwitterUser.ScreenName: " + status.TwitterUser.ScreenName);
            }
        }

        public static void PrintFollowers(Twitter twitter)
        {
            TwitterUserCollection col = twitter.User.Followers();

            Console.WriteLine("Followers");

            foreach (TwitterUser user in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Description:       " + user.Description);
                Console.WriteLine("Friends_count:     " + user.Friends_count);
                Console.WriteLine("ID:                " + user.ID);
                Console.WriteLine("IsProtected:       " + user.IsProtected);
                Console.WriteLine("Location:          " + user.Location);
                Console.WriteLine("NumberOfFollowers: " + user.NumberOfFollowers);
                Console.WriteLine("ProfileImageUri:   " + user.ProfileImageUri);
                Console.WriteLine("ProfileUri:        " + user.ProfileUri);
                Console.WriteLine("ScreenName:        " + user.ScreenName);
                if (user.Status != null)
                {
                    Console.WriteLine("Status.Text:       " + user.Status.Text);
                }
                Console.WriteLine("TimeZone:          " + user.TimeZone);
                Console.WriteLine("UserName:          " + user.UserName);
            }
        }

        public static void PrintFriends(Twitter twitter)
        {
            TwitterUserCollection col = twitter.User.Friends();

            Console.WriteLine("Friends");

            foreach (TwitterUser user in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Description:       " + user.Description);
                Console.WriteLine("Friends_count:     " + user.Friends_count);
                Console.WriteLine("ID:                " + user.ID);
                Console.WriteLine("IsProtected:       " + user.IsProtected);
                Console.WriteLine("Location:          " + user.Location);
                Console.WriteLine("NumberOfFollowers: " + user.NumberOfFollowers);
                Console.WriteLine("ProfileImageUri:   " + user.ProfileImageUri);
                Console.WriteLine("ProfileUri:        " + user.ProfileUri);
                Console.WriteLine("ScreenName:        " + user.ScreenName);
                if (user.Status != null)
                {
                    Console.WriteLine("Status.Text:       " + user.Status.Text);
                }
                Console.WriteLine("TimeZone:          " + user.TimeZone);
                Console.WriteLine("UserName:          " + user.UserName);
            }
        }

        public static void PrintDirectMessages(Twitter twitter)
        {
            TwitterStatusCollection col = twitter.DirectMessages.DirectMessages();

            Console.WriteLine("DirectMessages");

            foreach (TwitterStatus status in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Created:                " + status.Created);
                Console.WriteLine("ID:                     " + status.ID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToStatusID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToUserID);
                Console.WriteLine("IsFavorited:            " + status.IsFavorited);
                Console.WriteLine("IsTruncated:            " + status.IsTruncated);
                Console.WriteLine("RecipientID:            " + status.RecipientID);
                Console.WriteLine("Source:                 " + status.Source);
                Console.WriteLine("Text:                   " + status.Text);
                Console.WriteLine("TwitterUser.ScreenName: " + status.TwitterUser.ScreenName);
            }
        }

        public static void PrintFriendsTimeline(Twitter twitter)
        {
            TwitterStatusCollection col = twitter.Status.FriendsTimeline();

            Console.WriteLine("FriendsTimeline");

            foreach (TwitterStatus status in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Created:                " + status.Created);
                Console.WriteLine("ID:                     " + status.ID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToStatusID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToUserID);
                Console.WriteLine("IsFavorited:            " + status.IsFavorited);
                Console.WriteLine("IsTruncated:            " + status.IsTruncated);
                Console.WriteLine("RecipientID:            " + status.RecipientID);
                Console.WriteLine("Source:                 " + status.Source);
                Console.WriteLine("Text:                   " + status.Text);
                Console.WriteLine("TwitterUser.ScreenName: " + status.TwitterUser.ScreenName);
            }
        }

        public static void PrintPublicTimeline(Twitter twitter)
        {
            TwitterStatusCollection col = twitter.Status.PublicTimeline();

            Console.WriteLine("PublicTimeline");

            foreach (TwitterStatus status in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Created:                " + status.Created);
                Console.WriteLine("ID:                     " + status.ID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToStatusID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToUserID);
                Console.WriteLine("IsFavorited:            " + status.IsFavorited);
                Console.WriteLine("IsTruncated:            " + status.IsTruncated);
                Console.WriteLine("RecipientID:            " + status.RecipientID);
                Console.WriteLine("Source:                 " + status.Source);
                Console.WriteLine("Text:                   " + status.Text);
                Console.WriteLine("TwitterUser.ScreenName: " + status.TwitterUser.ScreenName);
            }
        }

        public static void PrintUserTimeline(Twitter twitter)
        {
            TwitterStatusCollection col = twitter.Status.UserTimeline();

            Console.WriteLine("UserTimeline");

            foreach (TwitterStatus status in col)
            {
                Console.WriteLine("------------------------------------------");
                Console.WriteLine("Created:                " + status.Created);
                Console.WriteLine("ID:                     " + status.ID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToStatusID);
                Console.WriteLine("InReplyToStatusID:      " + status.InReplyToUserID);
                Console.WriteLine("IsFavorited:            " + status.IsFavorited);
                Console.WriteLine("IsTruncated:            " + status.IsTruncated);
                Console.WriteLine("RecipientID:            " + status.RecipientID);
                Console.WriteLine("Source:                 " + status.Source);
                Console.WriteLine("Text:                   " + status.Text);
                Console.WriteLine("TwitterUser.ScreenName: " + status.TwitterUser.ScreenName);
            }
        }
    }
}

C#

สร้าง class แบบ dynamic

กันยายน 2nd, 2009
using System;  
using System.Diagnostics;  
class Foo { }  
static class Program  
{  
    static void Main()  
    {  
        Type type = typeof(Foo);  
        const int count = 5000000;
        GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
        RunTestWithActivator(type, count);
        GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
        typeof(Program).GetMethod(“RunTestWithGenerics”).  
            MakeGenericMethod(type).Invoke(nullnew object[] { count });  
    }  
    public static void RunTestWithActivator(Type type, int count)  
    {  
        Stopwatch watch = Stopwatch.StartNew();  
        for (int i = 0; i < count; i++)  
        {  
            object obj = Activator.CreateInstance(type);  
        }  
        watch.Stop();  
        Console.WriteLine(“With Activator: {0}”, watch.ElapsedMilliseconds);  
    }  
    public static void RunTestWithGenerics<T>(int count) where T : new() {  
        Stopwatch watch = Stopwatch.StartNew();  
        for (int i = 0; i < count; i++)  
        {  
            T t = new T();  
        }  
        watch.Stop();  
        Console.WriteLine(“With generics: {0}”, watch.ElapsedMilliseconds);  
    }  

C#

C# อ่านเขียน app.config ของโปรแกรม

สิงหาคม 25th, 2009

อ่าน

string value = ConfigurationManager.AppSettings["appvalue"]; 

เขียน

System.Configuration.Configuration config =ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);   

config.AppSettings.Settings["appvalue"].Value = “3″;        

config.Save(ConfigurationSaveMode.Modified);   

ConfigurationManager.RefreshSection(“appSettings”);  

 

C#

ทดสอบ คอมไ ฟล์ และใช้งาน Mono (บน CentOS linux)

มกราคม 11th, 2009

จะเป็นการทดสอบสร้างโปรแกรมง่ายๆครับ และทดสอบ run เพื่อแสดงข้อความง่ายๆ

 

[root@ns1 test_mono]# echo ‘class Hello{static void Main(){System.Console.Write(”Sourcecode.in.th\n”);}}’ >> program.cs

[root@ns1 test_mono]# mcs program.cs

[root@ns1 test_mono]# mono program.exe

Sourcecode.in.th

[root@ns1 test_mono]#

C#, Linux, OpenSource

สร้าง Windows Service ด้วย C#

ธันวาคม 15th, 2008

เป็นการ service เพื่อทำงานในลักษณะ background process ตัวอย่างที่เห็นได้ชัดคือพวก
apache, tomcat , fax service ของ microsoft ก็ใช้งานในลักษณะนี้

เริ่มต้นจากการสร้าง windows service

System.IO.StreamWrite file;

protected override void OnStart(string[] args)
{
    // create or open the file. Default path is "C:\windows\System32\"
    file = new StreamWriter( new FileStream("ServiceTest.log", System.IO.FileMode.Append ) );
    this.file.WriteLine("Starting Service");
    this.file.Flush();
}

protected override void OnStop()
{
    this.file.WriteLine("Stopping Service");
    this.file.Flush();
    this.file.Close();
}

จากนั้นให้สร้าง installer class โดยเพิ่ม using System.ServiceProcess; เข้าไปพร้อมโค้ดต่อไปนี้

ServiceInstaller si = new ServiceInstaller();
ServiceProcessInstaller spi = new ServiceProcessInstaller();

si.ServiceName = “Service1″; // this must match the ServiceName specified in WindowsService1.
si.DisplayName = “Devhood Tutorial Service”; // this will be displayed in the Services Manager.
this.Installers.Add(si);

spi.Account = System.ServiceProcess.ServiceAccount.LocalSystem; // run under the system account.
spi.Password = null;
spi.Username = null;
this.Installers.Add(spi);

เพื่อให้โปรแกรมทำงานได้ ต้องทำการติดตั้ง service ด้วยวิธี “installutil.exe C:\project\WindowsService1\bin\WindowsService1.exe” และใช้ “installutil.exe /u” ในการเอา service ออก

คุณสามารถดูผลของ service ว่าได้ติดตั้งไว้แล้วจาก Computer Management ในส่วนของ services

C#

ตัวอย่างโค้ด สร้าง Thread ด้วย C#

ธันวาคม 11th, 2008

เป็นตัวอย่างการสร้าง thread ใหม่ขึ้นมาใช้งาน

———————

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace ConsoleApplication1
{
class Program
{

static void PrintHellowFromThreadName() {
while(true) {
Console.WriteLine(”Hellow, from thread {0}”, Thread.CurrentThread.Name);
}

}

public void Start() {
PrintHellowFromThreadName();
}

static void Main(string[] args)
{
Thread.CurrentThread.Name = “Main Thread”;
Program obj = new Program();
Thread thread = new Thread(new ThreadStart(obj.Start ));
thread.Name = “Forked thread”;
thread.Start();

PrintHellowFromThreadName();

}
}
}

C#

ตัวอย่างการดึงข้อมูลจาก MySQL ด้วย C#

ธันวาคม 2nd, 2008

1. ทำการ add Reference เข้าไปใน C# โดย Add Reference ชื่อ MySql.Data
2. เพิ่ม using MySql.Data.MySqlClient;
3. โค้ดตัวอย่างการดึงข้อมูลมาใส่ใน Data Grid

string MyConString = “SERVER=localhost;” +
“DATABASE=test;” + “UID=root;” +
“PASSWORD=xxxxxxx;”;

DataSet myData = new DataSet();
MySqlConnection connection;
MySqlCommand command;
MySqlDataAdapter myAdapter;

connection = new MySqlConnection(MyConString);
command = connection.CreateCommand();

myAdapter = new MySql.Data.MySqlClient.MySqlDataAdapter();

command.CommandText = “select * from test.t1?;
command.Connection = connection;
myAdapter.SelectCommand = command;

//clear first
myData.Tables.Clear();

myAdapter.Fill(myData,”t1?);
this.gridView1.DataSource = myData.Tables["t1"];

ตัวอย่างโค้ดการ InSert
MySql.Data.MySqlClient.MySqlConnection conn;
MySql.Data.MySqlClient.MySqlCommand cmd;

conn = new MySql.Data.MySqlClient.MySqlConnection();
cmd = new MySql.Data.MySqlClient.MySqlCommand();

conn.ConnectionString = MyConString;

try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = “INSERT INTO test.t1 (name,email,note,val) VALUES(?name, ?email,?note, ?val)”;
cmd.Prepare();

cmd.Parameters.Add(”?name”, MySqlDbType.VarChar, 50);
cmd.Parameters.Add(”?email”, MySqlDbType.VarChar, 50);
cmd.Parameters.Add(”?note”, MySqlDbType.Text);
cmd.Parameters.Add(”?val”, MySqlDbType.Float);

cmd.Parameters["?name"].Value = this.txtName.Text;
cmd.Parameters["?email"].Value = this.txtEmail.Text;
cmd.Parameters["?note"].Value = this.txtNote.Text;
cmd.Parameters["?val"].Value = float.Parse(this.txtValue.Text);

cmd.ExecuteNonQuery();
MessageBox.Show(”Insert data successfully.”, “Infomation”, MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtName.Text = “”;
this.txtEmail.Text = “”;
this.txtNote.Text = “”;
this.txtValue.Text = “”;

}catch (MySql.Data.MySqlClient.MySqlException ex){
MessageBox.Show(”Error ” + ex.Number + ” has occurred: ” + ex.Message,
“Error”, MessageBoxButtons.OK, MessageBoxIcon.Error);
} finally{
conn.Close();
}

C#