Học lập trình
Nơi chia sẻ, giao lưu, học tập của tất cả các bạn đam mê lập trình !
Mã hóa và giải mã trong C#
public string Encrypt(string toEncrypt, bool useHashing)
{
byte[] keyArray;
byte[] toEncryptArray = Encoding.UTF8.GetBytes(toEncrypt);
if (useHashing)
{
var hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(Encoding.UTF8.GetBytes("iloveit1208"));
}
else keyArray = Encoding.UTF8.GetBytes("iloveit1208");
var tdes = new TripleDESCryptoServiceProvider
{
Key = keyArray,
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
Để giải mã chuỗi đã được mã hóa, ta dùng hàm Decrypt sau:
public string Decrypt(string toDecrypt, bool useHashing)
{
byte[] keyArray;
byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
if (useHashing)
{
var hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(Encoding.UTF8.GetBytes("iloveit1208"));
}
else keyArray = Encoding.UTF8.GetBytes("iloveit1208");
var tdes = new TripleDESCryptoServiceProvider
{
Key = keyArray,
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform = tdes.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Encoding.UTF8.GetString(resultArray);
}
Ví dụ cách sử dung:
string s=”Chao mung cac ban den boi blog cua iloveit1208”;
string mahoa=Encrypt(s,true);
string giaima=Decrypt(mahoa,true);
Chúc các bạn thành công!
Kết nối C# với MySQL
using System.Data.Odbc;
private void Testdb() {
try{
//Connection string dùng DSN và MyODBC 3.51
string MyConString = "DSN=MySQL";
//hoặc Connection string dùng trực tiếp Provider MyODBC 3.51
/*string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
"SERVER=NgocDV;" +
"DATABASE=test;" +
"UID=zensoft;" +
"PASSWORD=nssh;" +
"OPTION=3";
*/
//tạo connection tới database
OdbcConnection MyConnection = new OdbcConnection(MyConString);
MyConnection.Open();
//xóa table testdb nếu đã có rồi
OdbcCommand MyCommand = new OdbcCommand("DROP TABLE IF EXISTS testdb",MyConnection);
MyCommand.ExecuteNonQuery();
//Tạo lại table testdb có 3 field
MyCommand.CommandText = "CREATE TABLE testdb(hoten varchar(40),namsinh int, diachi varchar(50))";
MyCommand.ExecuteNonQuery();
//Thử thêm 1 record dữ liệu
MyCommand.CommandText = "INSERT INTO testdb VALUES('Dao Van Ngoc',1983,'An Dong, An Duong, HP')";
MyCommand.ExecuteNonQuery();
//Thử thêm 1 record dữ liệu nữa
MyCommand.CommandText = "INSERT INTO testdb VALUES('Duong Thu Son',1983,'Trai Chuoi, Hong bang, Hp')";
MyCommand.ExecuteNonQuery();
//Thử thêm 1 record dữ liệu nữa
MyCommand.CommandText = "INSERT INTO testdb VALUES('Pham Tuan Hai',1985,'294 Tran Nguyen Han, HP')";
MyCommand.ExecuteNonQuery();
//Thử thêm 1 record dữ liệu nữa
MyCommand.CommandText = "INSERT INTO testdb VALUES('Nguyen Ha Son',1985,'10/10 Lạch tray, HP')";
MyCommand.ExecuteNonQuery();
//Hiệu chỉnh thử 1 field của 1 số record thỏa điều kiện
MyCommand.CommandText = "UPDATE testdb SET namsinh=1984 WHERE namsinh=1985";
MyCommand.ExecuteNonQuery();
//Đếm số record hiện có
MyCommand.CommandText = "SELECT COUNT(*) as TRows FROM testdb";
Console.WriteLine("Total Rows: " + MyCommand.ExecuteScalar());
//Duyệt đọc và hiển thị các record trong table
MyCommand.CommandText = "SELECT * FROM testdb";
OdbcDataReader MyDataReader;
MyDataReader = MyCommand.ExecuteReader();
while (MyDataReader.Read()) {
Console.WriteLine("Data: " + MyDataReader.GetString(0) + ", " +
MyDataReader.GetInt32(1) + ", " +
MyDataReader.GetString(2)); //BIGINTs not supported by MyODBC
}
//Đóng các đối tượng đã dùng
MyDataReader.Close();
MyConnection.Close();
}
catch (OdbcException MyOdbcException) {//Catch tất cả lỗi exception
for (int i=0; i < MyOdbcException.Errors.Count; i++) {
Console.Write("ERROR #" + i + "\n" + "Message: " +
MyOdbcException.Errors[i].Message + "\n" + "Native: " +
MyOdbcException.Errors[i].NativeError.ToString() + "\n" +
"Source: " + MyOdbcException.Errors[i].Source + "\n" +
"SQL: " + MyOdbcException.Errors[i].SQLState + "\n");
}
}
}
Những phần mềm hỗ trợ hay dành cho Visual Studio
Trang chủ: http://www.codeproject.com
Sau khi cài đặt, Code Project Browser sẽ tích hợp vào menu Tools của VS, bạn chỉ việc nhấn vào đây để bắt đầu. Chú ý là trong lần chạy đầu tiên, bạn cần nhập địa chỉ email và mật khẩu mà bạn đã đăng kí trên The Code Project.
Không chỉ là trình duyệt, công cụ này còn cho phép bạn mở mã nguồn mẫu của các bài báo chỉ với vài cú nhấn chuột. Thay vì phải tải về mã nguồn, giải nén và mở bằng VS, Code Project Browse làm tất cả việc này cho bạn.
Khi nhấn vào một link file .zip chứa mã nguồn, bạn sẽ được hỏi có mở dự án này không. Nếu có, add-in này sẽ tải dự án về, giải nén trong thư mục My Documents/ My Code Project Downloads và mở nó trong VS. Hơn thế nữa, bạn còn có thể quản lý các bài báo/dự án yêu thích trên Code Project thông qua công cụ này.
Bạn sẽ không phải duyệt Code Project bằng trình duyệt thông thường thêm một lần nào nữa! Bạn có thể tải và cài đặt add-in này từ địa chỉ http://www.codeproject.com/csharp/cpbrowser.asp
Ankhsvn: Quản lý phiên bản với Visual Studio
Trang chủ: http://ankhsvn.tigris.org
AnknSVN phiên bản mới nhất là 1.0.1.2736 (stable), dung lượng 3.88 MB, tải về tại địa chỉ:
http://ankhsvn.tigris.org/servlets/ProjectDocumentList?folderID=7315
Chú ý là để sử dụng AnkhSVN bạn cần tải và cài đặt Subversion trước. Phiên bản hiện tại là 1.45, tải từ địa chỉ: http://subversion.tigris.org/project_packages.html
Trang chủ: http://joel.fjorden.se/static.php?page=CodeStyleEnforcer
Code Style Enforce là một plug-in của DXCode cho Visual Studio 2005, giúp kiểm tra mã nguồn thông qua các quy tắc đã được định nghĩa sẵn. Được phát triển cho C#, nhưng CSE có thể làm việc với VB .NET (chưa được kiểm tra). Chuẩn mã nguồn hiện có thể cấu hình với những quy tắc nhất định. Quy tắc mặc định dựa trên chuẩn viết mã C# của IDesign (http://www.idesign.net), đây là chuẩn viết mã hoàn chỉnh nhất hiện có và có thể tải về miễn phí.
Mỗi khi mở một dự án mới, Code Style Enforcer sẽ hỏi bạn sử dụng các quy tắc chung dành cho tất cả các dự án hay dành riêng cho từng dự án một. Điều này rất có ích nếu bạn cùng lúc tham gia làm nhiều dự án với nhiều nhóm khác nhau.
Code Style Enforcer sẽ gạch chân những biến, method không tuân theo quy tắc, tất cả những gì bạn cần làm là nhấn chuột phải và chọn Correct CSE Violation, với 2 tùy chọn nhỏ hơn: Sửa ngay lập tức theo những gì mà công cụ đề xuất, hay xem trước những thay đổi đối với mã của bạn (chỉ xuất hiện trong một số trường hợp):
Code Style Enforcer hiện chỉ chạy được trên Visual Studio 2005, do công cụ này hoàn toàn dựa trên .NET 2.0. Phiên bản mới nhất là 2.1.29, dung lượng 564KB. Cần chú ý, để cài đặt, trước tiên bạn cần tải và cài đặt bổ sung DXCore cho Visual Studio, phiên bản mới nhất là 2.5.1, dung lượng 17.3MB, tải về từ địa chỉ http://www.devexpress.com/Downloads/NET/IDETools/DXCore/
Pinvoke.net: Đơn giản hóa Windows API
Trang chủ: http://www.Pinvoke.net
Sau khi cài đặt, PInvoke sẽ xuất hiện trong một menu riêng của Visual Studio. Khi cần sử dụng hàm API nào, bạn sẽ có 2 tùy chọn: Insert PInvoke signature: sử dụng các signature đã có sẵn của plug-in này hay là truy cập đến PInvoke.net để sử dụng các đoạn mã (có thể) chính xác và đầy đủ hơn.
PInvoke.Net tương thích với Visual Studio.NET 2003 (7.1) trở lên, chưa hỗ trợ VS 2008, dung lượng chỉ có 288 KB.
Power Toys Pack Installer: Luôn cập nhật Visual Studio của bạn
Trang chủ: http://www.codeplex.com/
Chương trình hiện có phiên bản mới nhất 1.0.1, dung lượng 504 KB, không cần cài đặt. Tải về từ địa chỉ: http://www.codeplex.com/PackInstaller/Release/ProjectReleases.aspx?ReleaseId=4274
Trang chủ: http://www.roland-weigelt.de/ghostdoc .
Công cụ này cho phép tự động tạo comment theo định dạng XML cho một method từ kiểu, tham số, tên của nó cũng như các thông tin ngữ cảnh khác. Tất cả những việc bạn cần làm là chọn một method cần chú thích, nhấn chuột phải và chọn Document This. Điều tuyệt vời là GhostDoc cho phép bạn thiết lập định dạng Comment và những quy tắc đoán tên kiểu, tham số... cho phù hợp với phong cách viết mã của bạn.
Sau khi cài đặt, GhostDoc sẽ bổ sung thêm vào Menu Tools của VS một Submenu với 2 mục nhỏ hơn: Configure GhostDoc cho phép cấu hình GhostDoc và Document This (đôi khi sẽ disable) sẽ tự động comment cho file .cs hiện tại.
Mặc dù GhostDoc không phải lúc nào cũng làm việc chính xác, nhưng công cụ này rất đáng cho bạn sử dụng.
Hiện phiên bản mới nhất của GhostDoc là 2.1.1, dung lượng 898KB. Có 2 phiên bản dành riêng cho Visual Studio 2005 và 2008, đều hỗ trợ VB (có hạn chế) và Windows Vista. Phiên bản gần nhất dành cho VS 2003 là 1.30, chỉ hỗ trợ C# và không hỗ trợ Vista.
CodeKeep: Quản lý và chia sẻ Codesnippets
Trang chủ: http://www.codekeep.net .
CodeKeep nâng Code Snippets lên một tầm cao mới khi cho phép các lập trình viên trao đổi, chia sẻ các Snippet mà mình tạo ra. Điều này giúp bạn tiết kiệm được rất nhiều thời gian và sức lực, đồng thời đặc biệt hữu ích cho các bạn lập trình viên trẻ muốn học hỏi kinh nghiệm từ các "Guru".
Để có thể sử dụng CodeKeep, bạn phải tạo một account mới tại trang chủ của dự án này. Account này cho phép bạn tải lên và chia sẻ các snippet dễ dàng hơn.
CodeKeep sẽ thêm một submenu với 5 tính năng thiết lập, quản lý, duyệt, tìm kiếm và bổ sung để bạn làm việc với snippet. Trong đó đáng kể nhất là chức năng tìm kiếm. Mỗi khi cần bổ sung đoạn mã làm công việc nhất định mà không muốn phải tự viết code, bạn có thể sử dụng tính năng này để tìm kiếm các snippet thực hiện công việc tương tự. Chỉ việc gõ từ khóa, chẳng hạn Shutdown Windows, nhấn nút Go, đợi trong giây lát và chọn snippet phù hợp để sử dụng. Thật là tiện lợi!
Phiên bản mới nhất của công cụ này là 2.5, chỉ tương thích với Visual Studio 2005, dung lượng 85KB, tải tại địa chỉ: http://www.codekeep.net/downloads/CodeKeepVS2005Addin2.5.zip.
Lời kết: trên đây chỉ là những bổ sung phổ biến nhất cho Visual Studio. Chắc chắn còn nhiều bổ sung hữu ích khác mà bài viết chưa nói tới, rất mong được các bạn trao đổi, chia sẻ kinh nghiệm. Ngoài ra, các bổ sung tuy hay, nhưng đồng thời chúng cũng làm Visual Studio nặng nề hơn, dễ bị "crash" hơn, vì vậy các bạn nên thận trọng và chỉ sử dụng các bổ sung thật sự cần thiết với mình.
Xây dựng Windows Service với C# – Phần 6
Xây dựng Windows Service với C# – Phần 5
Tạo một trình ứng dụng loại Setup để cài đặt (Install)Service:
Bước 13:
Từ menu à File --> Add Project --> New Project.
Đặt tên Projects là SetupGiamSatThuMuc
Bước 14:
Trong cửa sổ Solution Explorer, click phải chuột tại SetupGiamSatThuMuc --> Add Project Output
Từ cửa sổ Add Project Output Group --> chọn Primary Output --> click OK
Bước 15:
Trong cửa sổ Solution Explorer, click phải chuột tại mục SetupGiamSatThuMuc -->View --> Custom Actions.
Bước 16 :
Tại mục Custom Actions --> click phải chuột --> Add Custom Action
Bước 17 :
Xuất hiện cửa sổ Select Item in Project --> Double-click mục Application Folder, chọn mục Primary Output from swGiamSatThuMuc (Active) --> click OK.
Bước 18 :
Thực hiện việc build trình ứng dụng SetupGiamSatThuMuc (chú ý nhớ chọn định cấu hình cho Solution là Release ).