Vào facebook rất nhanh bằng phần mềm Ultrasurf

Hiện nay một số nhà cung cấp internet tại Việt Nam cấm truy cập facebook, và rất nhiều người đã sử dụng phần mềm Ultrasurf để có thể truy cập facebook. Vậy Ultrasurf là gì?

Ultrasurf là một phần mềm dùng để fake IP và vượt tường lửa rất hiệu quả hiện nay đối với các website không cho các IP từ VN vào hoặc các trang web bị các nhà cung cấp dịch vụ (ISP) từ VN cấm truy cập… Các hacker cũng sử dụng phần mềm này để tránh lưu vết các hoạt động của mình trên internet.

UltraSurf là một phần mềm miễn phí giúp bạn vượt qua sự ngăn chặn của những ISP để có thể xem được tất cả các trang web mà bạn muốn trên toàn thế giới. Chương trình sẽ tự động tìm những proxy thông qua những server của nó và giúp bạn duyệt web nhờ vào chúng. Việc tìm kiếm proxy được thực hiện ngầm và khá nhanh chóng khiến cho người dùng cảm thấy như duyệt web bình thường mà không có sự chậm trễ nào. Các proxy sẽ được lựa chọn để đảm bảo bạn luôn được sử dụng proxy tốt nhất.

UltraSurf có thể hoạt động được với mọi trình duyệt và với mọi chức năng mà người dùng cần thiết, như việc lướt web, đăng nhập và gửi bài ở diễn đàn, sử dụng email, upload và download files, xem và nghe nhạc, video, …
Chương trình hoàn toàn miễn phí, bạn có thể download tại địa chỉ: http://ultrasurf.us/download/u.zip.

Sau khi download, bạn giải nén và chạy file u1301.exe, cửa sổ của UltraSurf xuất hiện:

sử dụng ultrasurf

Lúc này bạn có thể khởi động trình duyệt của mình và truy cập vào các trang web mà nhà cung cấp đang chặn (facebook) với tốc độ khá nhanh và ổn định.

Lưu ý: khi bạn không còn nhu cầu truy cập các trang web bị chặn, bạn nên tắt UltraSurf đi, để đảm bảo tốc độ truy cập internet như bình thường

Make your database avaiable on internet

March 22, 2011 3 comments

Bài viết này hướng dẫn cách làm cơ sở dữ liệu đang chạy trên một PC có thể được truy cập từ xa qua internet. Nhu cầu này xuất phát từ việc tôi muốn test một ứng dụng phân tán. Để có thể truy xuất dữ liệu từ xa qua internet, ta có thể tận dụng các dịch vụ của nhà cung cấp hệ cơ sở dữ liệu (Oracle, Microsoft SQL Server, MySQL,…) đó nếu đó là hệ cơ sở dữ liệu phân tán, hoặc sử dụng các kỹ thuật remote/webservices hỗ trợ bởi ngôn ngữ lập trình. Ở đây, tôi sử dụng cách truy cập dữ liệu thông qua dịch vụ của hệ cơ sở dữ liệu Microsoft SQL Server.

Phương pháp để thực hiện công việc này hoàn toàn giống bài viết “Đưa website từ PC lên Internet qua thuê bao ADSL“.

Bước 1: Thiết lập port forward trên Modem/router

Bạn thực hiện như bài viết trước, “Đưa website từ PC lên Internet qua thuê bao ADSL“, chỉ thay đổi là bạn điên thông số port mà dịch vụ Database Engine của MS SQL Server đăng sử dụng (thông thường là cổng 1433) vào phần External Port/Internal Port

Bước 2: Kiểm tra kết quả port forward

Bạn cũng làm như bước 2 của bài viết trước. Chỉ có điều, sau khi có IP thực trên internet, bạn hãy mở SQL Server Management, rồi điền IP đó vào mục [Server name] và điền các thông tin về authentication, và [Connect]…

Bước 3: Tạo và thiết lập một Dynamic DNS

Bước này hoàn toàn giống bước 3 của bài viết trước. Nếu bạn đã có DynDNS cho PC của bạn rồi thì bỏ qua bước này.

Bây giờ, bạn  có thể truy cập bất kỳ bảng cơ sở dữ liệu nào đang tồn tại trong PC của bạn thông qua Internet. Bạn có thể sử dụng bất kỳ công cụ quản lý database nào có hỗ trợ MS SQL Server, hoặc sử dụng thông số kết nối ConnectionString để truy xuất dữ liệu trên ứng dụng bạn đang lập trình. Và rõ ràng là vấn đề về bảo mật cơ sở dữ liệu là điều bạn phải hết sức thận trọng, bởi bất kỳ ai trên internet đều có thể truy cập vào toàn bộ cơ sở dữ liệu trong PC của bạn.

ODP.NET ORA-06502, problem of DBParameter

Gần đây tôi thường xuyên phải làm việc với Oracle trên C# NET. Để tương tác với Oracle db, tôi sử dụng bộ thư viện ODP.NET do chính Oracle cung cấp. Mới nhập môn đã thấy mọi thứ nằm ngoài tầm hiểu biết, mọi thứ đều không trơ tru như là MS SQL Server + ADO.Net. Phức tạp từ conversion kiểu dữ liệu giữa môi trường lập trình với database, add parameter cho command object, cấp phát bộ nhớ,… đến các syntax T-SQL trên Oracle cũng khác khá nhiều trên MS SQL.

ORA-06502: PL/SQL: numeric or value error: character to number conversion error

ORA-06502: PL/SQL: numeric or value error: character string buffer too small

Đó là 2 lỗi (cùng là một dạng lỗi về kiểu dữ liệu) mà tôi gặp ngày hôm nay, mà loay hoay không biết vì sao. Sau gần 1h tìm hiểu, đầu óc mới mở mang ra đôi chút.

1. Lỗi do thứ tự parameter khi add trên chương trình không khớp với thứ tự đã định nghĩa trong db

Tôi viết một function có tên TESTFUNCTION trên một db Oracle như sau:

FUNCTION TESTFUNCTION(pNUM NUMBER)

RETURN STRING

AS

pSTR STRING(50);

BEGIN

IF (pNUM=0) THEN

pSTR := ‘EQUAL ZERO’;

ELSE

pSTR := ‘NOT EQUAL ZERO’;

END IF;

RETURN pSTR;

END TESTFUNCTION;

Viết một hàm để thực hiện TESTFUNCTION trên VS 2005:

private void testing(int num)

{

DbProviderFactory objFactory = DbProviderFactories.GetFactory(“Oracle.DataAccess.Client”);

DbConnection objConnection = objFactory.CreateConnection();

DbCommand objCommand = objFactory.CreateCommand();

objConnection.ConnectionString = “…”; // your connection string

objCommand.Connection = objConnection;

 

// create input param for TESTFUNCTION

DbParameter inParam = objCommand.CreateParameter();

inParam.ParameterName = “pNUM”;

inParam.DbType = DbType.Int32;

inParam.Value = num;

objCommand.Parameters.Add(inParam);

 

// create return param for TESTFUNCTION

DbParameter returnParam = objCommand.CreateParameter();

returnParam.ParameterName = “pSTR”;

returnParam.DbType = DbType.String;

returnParam.Direction = ParameterDirection.ReturnValue;

objCommand.Parameters.Add(returnParam);

 

try

{

objCommand.CommandText = “MYPACKAGE.TESTFUNCTION”;

objCommand.CommandType = CommandType.StoredProcedure;

objConnection.Open();

objCommand.ExecuteNonQuery();

string s = returnParam.Value as string;

MessageBox.Show(s);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

objConnection.Close();

}

}

Thực hiện gọi “testing(0);” trên chương trình.

Exception:

ORA-06502: PL/SQL: numeric or value error: character to number conversion error

ORA-06512: at line 1

Cause: thứ tự của parameter không đúng.

Fix it: Đối với các function trả về giá trị phải add return parameter trước tiên, sau đó lần lượt add các param in/out theo đúng thứ tự mà function đã định nghĩa. Ở hàm [testing(int num)] Cần phải đưa đoạn code [create return param for TESTFUNCTION] lên trước đoạn [create input param for TESTFUNCTION]

ODP.net không hỗ trợ named parameters khi thông qua ADO.NET của .NET framework. Do đó khi gọi function/stored procedure của Oracle trên .NET phải add parameter theo đúng thứ tự mà  function/stored procedure đó định nghĩa.

Đối với các Oracle function có giá trị trả về (return value), parameter cho giá trị trả về đó luôn có thứ tự đầu tiên (index = 0)

 

2. Lỗi do parameter trên chương trình không đủ bộ nhớ để chứa dữ liệu trả về từ db

Sau khi thay đổi lại đúng thứ tự các parameter như TESTFUNCTION đã định nghĩa. Gọi lại “test(0);

Exception:

ORA-06502: PL/SQL: numeric or value error: character string buffer too small

ORA-06512: at line 1

Cause: returnParam không đủ bộ nhớ để lưu trữ dữ liệu trả về.

Fix it: Cần phải thiết lập giá trị cho thuộc tính Size của returnParam. Như vậy phải thêm dòng “returnParam.Size = 50;” sau dòng code khởi tạo đối tượng returnParam

.NET framework tự động cấp phát bộ nhớ cho các parameters được khởi tạo từ ADO.NET (OLEDB, ODBC, SQLClient). Đối với ODP.net thì không như vậy, do đó luôn phải chú ý về việc thiết lập bộ nhớ cho từng parameter khi làm việc với ODP.NET.

Lúc này, hàm testing được thực hiện thành công, và kết quả là hộp thoại đưa ra thông báo “EQUAL ZERO”.

Categories: .NET, C#, Database Tags: ,

Đưa website từ PC lên Internet qua thuê bao ADSL

March 16, 2011 1 comment

Bạn có nhiều tài nguyên muốn chia sẻ với bạn bè, bạn tạo ra một website nhỏ chạy trên PC và muốn publish nó trên internet,… Để làm được điều đó, bạn cần một hosting để chứa các tài nguyên, và một địa chỉ trên internet (domain name) để chỏ tới hosting đó. Bạn có thể kiếm các hosting và domain miễn phí hoặc có thể trả tiền thuê dịch vụ từ rất nhiều nhà cung cấp domain, hosting, máy chủ (ở việt nam có FPT, VDC, Netnam, Mắt bão, Nhân hòa,…). Các hosting miễn phí có rất nhiều nhược điểm: dung lượng thấp, tốc độ truy cập không ổn định, phải upload các tài nguyên cần chia sẻ từ PC lên host.

Trong bài viết này, tôi sẽ hướng dẫn cách publish lên internet một website đang chạy trên PC của bạn thông qua đường truyền ADSL tại nhà bạn mà không phải thuê hoặc kiếm 1 free hosting nào khác. Phương pháp này có ưu điểm: dung lượng phụ thuộc vào HDD của bạn, không mất thời gian upload tài nguyên lên host. Còn nhược điểm thì cũng như free hosting: tốc độ truy cập phụ thuộc nhiều vào đường truyền internet và cấu hình PC của bạn, mức độ an toàn dữ liệu hoàn toàn phụ thuộc vào cách bạn bảo mật cho PC, ngoài ra bạn còn phải tiêu tốn điện năng để PC hoạt động liên tục. Nếu bạn thực sự muốn thực hiện phương pháp này và bạn hoàn toàn mông lung về vấn đề bảo mật, tôi khuyên bạn hãy chuyển các dữ liệu quan trọng từ PC sẽ sử dụng làm hosting tới PC khác, HDD khác.

Yêu cầu

+ Hệ điều hành Windows. Bạn cũng có thể sử dụng bất kỳ hệ điều hành nào để thực hiện công việc này, nhưng trong bài viết này tôi chỉ hướng dẫn trên Windows OS.

+ Nếu bạn chỉ muốn chia sẻ tài nguyên có trên PC hoặc đưa 1 website cá nhân lên internet, thì PC của bạn cần có một web server như IIS hoặc Apache. Trong bài viết này tôi sử dụng Apache của XAMPP.

+ Để tận dụng các dịch vụ phân tán (DB Server như Microsoft SQL Server, Oracle, IBM DB, MySQL; Web server như IIS, Apache; FTP Server;…) đã cài đặt sẵn trên máy thì bạn cần thiết lập cơ chế truy cập các dịch vụ đó và chú ý tới việc các dịch vụ này có thể bị chặn lại bởi Firewall.

+ Modem kết nối internet và PC kết nối trực tiếp tới Modem

Thực hiện

Bước 1: Thiết lập port forward trên Modem/router

Truy cập vào địa chỉ Modem/router (thông thường là 192.168.1.1) thông qua web browser. Bạn sẽ nhận được yêu nhập username/password để truy cập router. Sau khi đã xác thực, web browser sẽ tài giao diện quản lý router lên màn hình.

Trên đây là giao diện quản lý cho router của hãng linksys. Click con trỏ vào mục [Application & Gaming]

Trên giao diện quản lý [Application & Gaming]

+ Application: điền tên ứng dụng (app) tùy ý bạn, ví dụ: apache server

+ External Port/Internal Port: gõ chính xác cổng giao tiếp mà app sẽ sử dụng, tôi thiết lập cổng 85 cho apache server nên sẽ điền 85 vào 2 mục này

+ Protocol: định nghĩa giao thức kết nối cho app là TCP

+ IP Address: gõ chính xác địa chỉ IP của PC bạn sử dụng, PC của tôi là 192.168.1.117

+ Enable: tích chọn vào ô này

Sau khi đã hoàn tất phần trên, click trỏ vào nút [Save Settings]. Router sẽ forward cổng port bạn đã chọn để thông qua tường lửa của router.

Bạn có thể kiểm tra xem địa chỉ Modem của mình bằng cách:

Ấn tổ hợp phím [Windows]+[R]

Trên hộp thoại [Run], mục [Open:], gõ “cmd”, ấn [Enter]

Cửa sổ [Windows command] xuất hiện, gõ “ipconfig”, ấn [Enter]

Bạn sẽ thấy địa chỉ router của mình ở dòng [Default Gateway] và địa chỉ của PC ở dòng [Ipv4 Address]

Bước 2: Kiểm tra kết quả port forward

Truy cập vào trang http://www.whatismyip.com, trang web này cung cấp dịch vụ đọc địa chỉ IP thực sự trên internet của modem bạn đang sử dụng. Hãy ghi lại địa chỉ này

Chú ý: địa chỉ IP này luôn thay đổi mỗi khi bạn restart Modem.

Truy cập vào địa chỉ IP trên cùng với cổng port bạn đã forward, ví dụ: 123.123.123.123:85/mantisbt. Mantisbt là gói website PHP tôi đã cài đặt sẵn trên Apache server.

Nếu thành công, web browser sẽ tải giao diện trang login của mantisbt giống như khi bạn truy cập vào localhost:85/mantisbt.

Nếu không kết nối thành công, bạn cần kiểm tra lại:

Truy cập vào địa chỉ localhost:85 để kiểm tra xem web server trên PC đã chạy chưa. Nếu chưa, hãy khởi động Web server Apache (XAMPP).

Địa chỉ IP của PC có đúng như IP đã thiết lập ở bước 1 không?

Cổng port của XAMPP có đúng như port đã thiết lập ở bước 1 không?

Vì địa chỉ IP trên internet của modem là không cố định. Do đó, mỗi khi bạn muốn truy cập bạn phải check lại địa chỉ trên internet. Điều đó dẫn đến 1 việc, những người đã từng truy cập vào website của bạn không thể truy cập lại nếu không biết được địa chỉ IP thực sự của bạn hiện tại. Để khắc phục điều này, tôi sử dụng Dynamic DNS.

Bước 3: Tạo và thiết lập một Dynamic DNS

DNS hay Domain Name System là 1 hệ thống dữ liệu sử dụng để chuyển đổi từ địa chỉ IP chỏ tới một Domain Name. Ví dụ domain google.com chỏ tới địa chỉ IP thực của Google server là 74.125.235.48, bạn có thể truy cập vào google theo domain nam hoặc địa chỉ IP của google, nhưng rõ ràng là địa chỉ IP sẽ rất khó nhớ. Dynamic DNS là một dịch vụ cung cấp domain name để chỏ tới một địa chỉ IP động trên internet, mỗi khi địa chỉ IP của bạn thay đổi thì dịch vụ này sẽ tự động cập nhật để domain name chỏ tới địa chỉ mới của bạn.

Để sử dụng dịch vụ này, bạn truy cập vào trang dyndns.com và đăng ký một tài khoản.

Sau khi đã kích hoạt tài khoản, bạn truy cập địa chỉ này để đăng ký host service

Hostname: điền tên host bạn muốn, ví dụ: fb2081

Service Type: chọn [Host with IP address]

IP Address: điền IP ở ngay phía dưới vào ô chữ

Sau đó ấn nút [Add To Cart] ở cuối trang.

Tiếp tục ấn nút [Proceed to checkout]

Ấn nút [Activate Services]. Lúc này bạn đã hoàn tất việc đăng ký sử dụng dịch vụ Dynamic DNS.

Để dyndns có thể cập nhật địa chỉ IP của bạn liên tục, bạn cần cài đặt công cụ [DynDNS Update Clients]. Hãy truy cập vào địa chỉ này để download chương trình về PC, rồi cài đặt.

Sau khi cài đặt và chạy  [DynDNS Update Clients], bạn truy cập vào domain name mà bạn vừa đăng ký sử dụng để xem kết quả. PC của bạn luôn luôn phải ở trạng thái đang hoạt động cùng với chương trình [DynDNS Update Clients], nếu không website kia sẽ không thể truy cập được trên internet.

 

Như vậy, chúng ta đã publish một website lên internet mà chưa phải tiêu tốn chi phí nào. Những khiếm khuyết lớn nhất của phương pháp này về vấn đề bảo mật, tốc độ truy cập, tiêu hao điện năng. Nếu mục đích của bạn là kinh doanh, cung cấp dịch vụ trên internet, hãy cân nhắc về việc thuê dịch vụ từ các nhà cung cấp có tiếng để được tận dụng đầy đủ các thế mạnh về nhân lực, tài nguyên, đường truyền tốc độ cao, cơ chế bảo mật, kiến thức, kinh nghiệm,… từ nhà cung cấp đó.

 

 

Categories: .NET Tags: ,

Auto generate stored procedures by Codesmith

Trong khi lập trình, bạn thường phải viết những đoạn code gần giống nhau (chỉ có những sự khác biệt rất nhỏ) và lặp đi lặp lại rất nhiều. Ví dụ như viết các stored procedure trên cơ sở dữ liệu, viết các trường (fields) và thuộc tính (properties) cho các lớp tương ứng với bảng trong cơ sở dữ liệu (thường gọi là business class)… và rất nhiều các công việc khác tương tự như vậy. Những công việc đó thường chiếm khá nhiều thời gian của lập trình viên (thường khoảng 50% thời gian), và gây ra sự chán nản vì sự lặp đi lặp lại. Không những thế, đối với các dự án gấp, chúng cũng phần nào là nguyên nhân gây ra sự chậm tiến độ.

Để giúp giảm bớt những công việc buồn tẻ đó, người ta đã phát triển ra các công cụ tự sinh mã cho lập trình viên – code generator tools. Những công cụ này sẽ tự tạo ra các đoạn mã thông dụng, mà người lập trình thường xuyên phải viết lặp đi lặp lại, dựa trên các dữ liệu đầu vào. Ví dụ, để công cụ này tạo ra các stored procedure cho 1 bảng dữ liệu MS SQL Server, bạn chỉ cần cho công cụ đó biết cách kết nối vào cơ sở dữ liệu chứa bảng đó và tên bảng. Công cụ sẽ thực hiện công việc của mình và đưa ra kết quả là những dòng mã t-sql chứa các storde procedure (read/insert/update/delete) để thao tác dữ liệu với bảng đó. Và công việc còn lại của bạn là dán những đoạn mã đó vào công cụ quản lý cơ sở dữ liệu (SQL Server Management Studio) để sinh ra các sp vào cơ sở dữ liệu.

Trong tài liệu này, tôi xin giới thiệu một trong số những công cụ sinh mã tốt nhất và được sử dụng phổ biến, đó là Codesmith được phát triển bởi Eric J.Smith. Công cụ này được bán với giá hơi chát: 299$ cho bản Professional Edition, 99$ cho Standard Edition. Công cụ này có rất nhiều các mẫu hữu ích để sinh các đoạn mã thông dụng. Bạn cũng có thể chỉnh sửa lại các mẫu này, hoặc tự tạo ra mẫu để sinh mã theo ý mình.

Tạo các stored procedure cho các bảng cơ sở dữ liệu

Trước hết, chúng ta nhìn qua giao diện sử dụng của chương trình CodeSmith Studio

Mở Codesmith studio trong thanh [Start Menu] trên [Taskbar] của windows

Giao diện của CodeSmith Studio được chia thành 3 khu vực.

Khu vực trên cùng là [Menubar] và [Toolbar].

Khu vực bên trái là cửa sổ làm việc chính của chương trình.

Khu vực bên phải gồm cửa sổ [Template Explorer] chứa các mẫu để sinh mã, và cửa sổ [Properties] thể hiện các thuộc tính của mỗi mẫu được chọn sử dụng.

Chúng ta sẽ sử dụng các mẫu sẵn có mà công cụ CodeSmith đã cung cấp để tạo ra các sp cho 1 bảng dữ liệu.

Trên cửa sổ [Template Explorer], trong mục [CodeSmith 5.1 Samples], mở file mẫu [Database]>[StoredProcedures]>[ StoredProcedures.cst]

Nội dung của file StoredProcedures.cst được thể hiện trên cửa sổ chính, và các tham số đầu vào được thể hiện trên cửa sổ [Properties]

Bạn sẽ nhận thấy các tham số đầu vào rất dễ hiểu, bạn có thể thay đổi tùy theo mong muốn của mình

Trên cửa sổ [Properties], chọn vào mục [SourceTable], ấn vào nút […] để chọn bảng dữ liệu bạn cần sử dụng.

Hộp thoại [Table Picker] xuất hiện, ấn nút [..] để chọn bảng dữ liệu

Hộp thoại [Data Source Manager] xuất hiện, ấn nút [Add] để thiết lập datasource

Hộp thoại [Data Source] xuất hiện

Trên hộp thoại này,

[Name]: tên data source, do bạn tùy đặt, ở đây tôi điền QLKho sql server

[Provider Type]: chứa danh sách các provider mà codesmith hỗ trợ. Với MS Sql server, bạn chọn SqlSchemaProvider

[Connection String]: thông số kết nối tới cơ sở dữ liệu. Bạn có thể gõ trực tiếp vào hoặc ấn vào nút […] để sử dụng công cụ tạo kết nối của codesmith.

Sau khi đã test kết nối thành công, ấn nút [OK], hộp thoại [Data Source] được đóng lại.

Ở hộp thoại [Data Source Manager] xuất hiện thêm datasource [QLKho sql server] mà ta vừa thiết lập. Ấn nút [Close] để đóng hộp thoại này lại.

Trên hộp thoại [Table Picker], ở mục [Data source], chọn vào dòng [QLKho sql server]

Danh sách các bảng trong cơ sở dữ liệu [QLKho sql server] được liệt kê trong mục [Tables].

Chọn một bảng dữ liệu bạn muốn, và ấn nút [Select]

Hộp thoại [Table Picker] được đóng lại, và tên bảng vừa được chọn được điền vào mục [SourceTable] trên cửa sổ [Properties]

Trên cửa sổ [Properties], bạn hãy thay đổi các tham số ở mục [Option] và mục [Procedure] nếu muốn.

Cuối cùng, trên cửa sổ chính của codesmith studio, ấn nút [Run] trên thanh [Toolbar] để thực hiện việc sinh mã.

Kết quả của việc sinh mã được thể hiện trên cửa sổ chính như hình dưới

Lúc này, bạn có thể copy toàn bộ nội dung đó và paste vào MS SQL Server Management Studio để thực hiện việc tạo các stored procedures trên cơ sở dữ liệu.

 

Categories: .NET, C# Tags:

Problem Binding nullable type to Control

January 24, 2011 Leave a comment

Binding data cho combobox tại hàm Form_Load:

Order order = new Order();

List<Customer> custList = new List<Customer>();

custList.Add(new Customer(1, “customer 1″));

custList.Add(new Customer(2, “customer 2″));

custList.Add(new Customer(3, “customer 3″));

custList.Add(new Customer(4, “customer 4″));

combobox1.DataBindings.Add(“SelectedValue”, order, “CustomerID”);

combobox1.DataSource = custList;

combobox1.DisplayMember = “Name”;

combobox1.ValueMember = “ID”;

Order class:

public class Order
{
private int? _id;
private int? _custID;
private List _listItems;

public int? ID
{
get { return _id; }
set { _id = value; }
}

public int? CustomerID
{
get { return _custID; }
set { _custID= value; }
}

public List ListItems
{
get{ return _listItems; }
set{ _listItems = value; }
}
}

Customer class:

public class Customer
{
private int? _id;
private string _name;

public Customer(int? id, string name)
{
_id = id;
_name = name;
}

public int? ID
{
get { return _id; }
set { _id = value; }
}

public string Name
{
get { return _name; }
set { _name = value; }
}
}

Chạy lên form, chọn 1 thằng customer trên combobox, rời khỏi combobox1 ->thằng combobox1 tự động quay trở về giá trị ban đầu (SelectedValue của nó không update khi sự kiện SelectedIndexChanged)

Ngồi mò mẫm cả tiếng mới mà không biết lý do tại sao -> thử thay đổi lại code của lớp Customer: chuyển từ int?(nullable) sang int -> combobox1 hoạt động bình thường trở lại -> tiếp tục search google để tìm hiểu nguyên nhân và cách thức để có thể binding nullable type vào winform controll.

Giải quyết vấn đề:

combobox1.DataBindings.Add(“SelectedValue”, cust, “Name”, true);

thiết lập tham số formattingEnabled = true giúp controll tự động định dạng (auto formatting) hiển thị cho dữ liệu. Tham số này thường được sử dụng cùng với thuộc tính FormatString của lớp Binding (thường được dùng khi dữ liệu cần hiển thị trên form dưới 1 định dạng khác tương ứng với Culture)

Categories: .NET, C# Tags:

Cloud Antivirus

April 28, 2010 1 comment

Chắc hẳn hầu hết các máy tính đều cài đặt ít nhất 1 phần mềm diệt virus. Và cũng chắc hẳn, tại Việt Nam, số đông các phần mềm đó đều bị sự dụng trái phép (crack, license không nguồn gốc). Chắc thêm 1 điều nữa, để có thể diệt các loại virus  mới, các bạn cần thường xuyên tải các gói cập nhật các loại virus từ nhà cung cấp về PC để phần mềm có thể nhận dạng những virus đó. Câu hỏi là:

(1) Khi có phiên bản mới hoặc vì lý do nào đó phần mềm diệt virus lậu trên PC của bạn không còn sử dụng được nữa? Bạn phải mất công kiếm tìm trên mạng các phần mềm lậu khác? Download các patch (để crack phần mềm) kéo theo trojan virus về PC? Chưa kể rằng patch đó chưa chắc đã crack được phần mềm..

(2) Khi tải các gói cập nhật các loại virus cho phần mềm, nó sẽ ngốn thêm tài nguyên của HDD và làm máy bạn chậm hơn???

Please wait a moment!!!Please wait a moment!!!

Có rất nhiều phần mềm diệt virus miễn phí, nhưng hầu hết mọi người đều không ưa sử dụng bởi chúng không đáng tin cậy bằng các phần mềm bản quyền. Để đảm bảo PC luôn ở trạng thái an toàn nhất, mỗi người đều chọn lấy 1 phần mềm antivirus của các hãng nổi tiếng như: Kaspersky, Symantec, Norton, Bitdefender, AVG,… Và tôi cũng không ngoại lệ, tôi thường cập nhật thông tin tại toptenreviews.com để lựa chọn cho mình “1 tấm khiên”. Và rồi tôi cũng thường thắc mắc về 2 vấn đề đã nêu trên vì nó luôn là sự khó chịu đối với tôi, đặc biệt là khi tìm kiếm các phiên bản lậu ngốn rất nhiều thời gian.

Cloud Antivirus là phần mềm diệt virus miễn phí dựa trên công nghệ điện toán đám mây (Cloud computing) do công ty Panda Security sản xuất. Đầu năm 2010, Panda đã hoàn thành phiên bản Cloud Antivirus 1.0.1

Khi nhận được thông tin về sản phẩm này, Cloud Antivirus, tôi đã thử sử dụng với 2 lý do:

1. Nó là miễn phí. Cái này thì chắc ai cũng hiểu cho tôi :D

2. Quan trọng là phần mềm này dựa trên nền tảng đám mây điện toán, một công nghệ đang rất hot và nhiều điều tranh cãi.

Với việc dựa trên nền công nghệ này, Cloud Antivirus có những ưu thế hơn hẳn các chương trình phần mềm truyền thống. Cơ sở dữ liệu về các loại virus của chương trình nằm ở ngoài PC của tôi, mà nó nằm trên các máy chủ ảo (cứ coi như nằm trên Internet). Do đó, không những nó không ngốn tài nguyên trên PC mà còn thường xuyên được cập nhật rất nhiều nhận dạng virus từ tất cả các PC sử dụng cùng phần mềm và từ chính hãng sản xuất. Cloud Antivirus hoạt động chủ yếu trên internet, do đó không ngốn RAM và CPU trên PC. Cũng vì thế, bộ cài đặt sử dụng cho PC rất nhẹ (thin client). Bộ cài đặt cho Cloud Antivirus 1.0.1 là 22.6MB. Sau khi cài đặt, chương trình chiếm 80MB ổ cứng (cũng ko thin cho lắm nhỉ). Tốc độ xử lý của Cloud Antivirus trên PC rất nhanh, giao diện đơn giản dễ sử dụng với tất cả mọi người.

Trong bài viết “Panda Cloud Antivirus – Is it netbook ready?”, Rick Robinette đã thử cài đặt Cloud Antivirus trên Aser AspireOne Mini-Netbook. Rick cho rằng nếu chương trình chạy tốt trên netbook thì có thể chạy tốt trên bất kỳ PC nào. Và kết quả rất khả quan,

In summary, the install file was approximately 18.5 MBs and occupied a footprint of approximately 56 MBs following the installation. The installation was very, very quick. The Windows XP Security Center immediately recognized the product as a Security product. The GUI (graphical user interface) is very attractive and simplistic (one of the easiest GUI’s I have experienced). I performed a system scan and found the scan time was comparable in speed and duration to the  previous antivirus software I had installed. I plan to continue using “Panda Cloud Antivirus” on the netbook, as my primary level of antivirus protection, for further review and testing. So far this cloud app is running smoothly on my netbook, but time will tell.

Bài viết “Panda Cloud Antivirus – Free Cloud Protection” của Bill Mullins cũng review về chương trình Cloud Antivirus,

If you download and install this product, I’d be very interested in your personal observations as to its speed, functionality and ease of use, and so on.

It’s too early yet for me to provide a personal assessment of this product; that will come later. I like to run test applications for a minimum of 30 days to properly assess an applications relative strength, and weaknesses.

One disappointment though: I run Windows 7 Beta on all my machines, including my test beds, and Panda Cloud Antivirus does not yet run on Win 7.

Hiện tôi đang sử dụng Cloud Antivirus v1.0.1 trên Win7 và không có vấn đề gì. Tra cứu thêm, được biết Microsoft đã đưa Cloud Antivirus vào danh sách các ứng dụng tương thích với win7.

Có điều tôi vẫn hơi băn khoăn về việc nhận dạng virus mới của chương trình, liệu các nhận dạng virus của chương trình này có được merge với các nhận dạng của các hãng khác không? Nếu câu trả lời là có thì tôi thực sự khuyên các bạn hãy loại bỏ các PM antivirus mà bạn đang dùng lậu khỏi PC và dùng 1 tấm khiên thế hệ mới.

Một thắc mắc nữa là liệu có khi nào Panda thi phí sử dụng dịch vụ phần mềm? Nếu điều này xảy ra thì phí chắc còn rẻ hơn mua Kaspersky 1 năm, nhưng nó vẫn luôn là vấn đề cần suy nghĩ đối với nhiều cá nhân ở Việt Nam.

Dù sao, tôi cũng đã quyết định sử dụng Cloud Antivirus cho bản thân.

Download Cloud Antivirus tại đây

Hình ảnh của Cloud Antivirus tại Bill Mullins’s blog:

8SP9YRSWKYDH

Follow

Get every new post delivered to your Inbox.

Join 53 other followers