Thứ Sáu, 3 tháng 8, 2012

// // Leave a Comment

Return trong khối lệnh Try-Finally C#

Theo thông lệ trong C#, finally sẽ luôn được thực thi nếu khối lệnh try xảy ra lỗi hoặc không!! Hỏi: nếu đặt lệnh return trong khối finally có là hợp lệ hay không ?

- Return và finally có tính tương tranh, ta hiểu chúng có tính "cuối cùng" khi thực thi một khối lệnh hoặc trong một phương thức.
- Vậy chúng thật sự là cuối cùng ??

Chúng ta sẽ thử cài đặt đoạn mã lệnh như sau:
01. Cài đặt sự tương tranh giữa return và finally (không xuất lỗi)


        int f1()
        {
            try
            {
                return 10;
            }
            finally
            {
                return 5;
            }
        }

02. Hoặc sửa lại như sau và có xuất lỗi


        int f2()
        {
            try
            {
                throw new Exception();
            }
            finally
            {
                return 5;
            }
        }


Trong C#, cả hai trường hợp trên đều là không hợp lệ: Các lệnh return là bị cấm trong khối lệnh finally. Đây là sự hạn chế tránh viết mã mang tính mơ hồ gây nhầm lẫn. C# đủ thông minh để làm tất cả các nhiệm vụ của bạn, nhưng không phải ngôn ngữ nào cũng "khuôn khổ" như vậy. Nhưng điều này là hợp lệ trong Python.
Read More

Thứ Hai, 7 tháng 5, 2012

// // 1 comment

Bài toán ba lô - The kanpsack Algorithm

Bài toán: Cho 1 cái ba lô được nhét đầy các đồ vật cho ở hình dưới (trọng lượng tính theo grams). Biết rằng ba lô nặng 3064 grams, bạn có thể xác định những vật có trong ba lô đó không ?



Vấn đề trở nên phức tạp và khó tính toán khi trong ba lô chứa 100 đồ vật. Tuy nhiên, nếu cách sắp xếp khối lượng đồ vật có vài thông tin đặc biệt "trapdoor" đã được biết trước, và người có được thông tin đó sẽ dễ dạng tìm được thông tin bí mật. Tức là, 100-bit thông tin đó xác định được những đồ vật có trong ba lô.
Read More

Chủ Nhật, 6 tháng 5, 2012

// // Leave a Comment

Vấn đề Explicit Interface C#

 Khi cài một hoặc nhiều interface theo cách khai báo tường minh (explicit implimentation), thì mặc nhiên các thành viên trong lớp đó có mức độ truy cập (access modifier) được đặt là private. Và khi đó ta không thể thêm hoặc thay đổi chúng.

 Ví dụ một trường hợp với thông báo lỗi của trình biên dịch là: The modifier 'public' is not valid for this item

namespace Test.InterfaceLib
{

    public class Customer : IMember
    {
        public string IMember.PrintName() //Error Here...
        {
            return this.GetType().Name + " called from interface i1";
        }
    }

    public interface IMember
    {
        string PrintName();
    }

    interface IUser
    {
        string PrintName();
    }
}

Giống như trong khi định interface, tất cả các thành viên của nó mặc định là public. Nếu cố add thêm 1 từ khóa (private, public, protected, internal) là điều không hợp lệ và ta gặp một lỗi tương tự như trên.

Read More

Thứ Ba, 10 tháng 4, 2012

// // 2 comments

Edit Control With Hint C# - Tạo mặt nạ gợi nhớ cho các controls nhập văn bản C#

Bạn đang muốn tạo một mặt nạ gợi nhớ trên ô nhập tài khoản người dùng hoặc mật khẩu tương tự như các ứng dụng có yêu cầu đăng nhập trên các web-blog có kiểu như dưới đây.

Tạo mặt nạ cho các control nhập liệu từ người dùng

Mã nguồn chương trình: Sử dụng ngôn ngữ lập trình C#

Read More

Thứ Sáu, 23 tháng 3, 2012

// // Leave a Comment

Các cách thức lây nhiễm malware


Một cách lây nhiễm mà chúng ta có thể chấp nhận được là kẻ tấn công xâm nhập cục bộ vào máy tính và thực thi malware. Tuy nhiên để làm được điều này không dễ chút nào, do đó kẻ tấn công sẽ tìm các cách khác.

Thông qua các phần mềm, tin nhắn hoặc thiết bị lưu trữ

Malware có thể được gửi thông qua phần mềm bằng nhiều cách khác nhau. Một người nhận được email có chứa một tập tin nào đó mà họ cho là vô hại và họ không biết rằng tập tin đó chính là malware. Malware cũng có thể gửi thông qua FTP. Vì FTP server vốn dĩ đã không an toàn. Các malware thường được tìm thấy giữa các mạng peer-to-peer (P2P) hoặc qua giao thức torrent. Malware cũng có thể gửi thông qua USB, CD-ROM, DVD và chúng có thể tự động lây nhiễm vào máy tính. Và như vậy chức năng AutoRun không phải là người bạn của bạn.

Active Inerception
Kĩ thuật này là một kĩ thuật phổ biến để chỉ những cuộc tấn công đánh chặn, nghe lén, bắt các gói tin. Máy tính của kẻ tấn công sẽ nắm giữa 2 máy tính đang trao đổi thông tin và thông tin sẽ qua máy tính của kẻ tấn công trước khi đến được máy bên kia. Ví dụ như kiểu tấn công mà bạn thường hay nghe – Man-In-The-Middle.
Backdoor

Backdoor được sử dụng với mục đích bỏ qua xác thực và các cơ chế bảo mật khác. Ban đầu, backdoor được các lập trình viên sử dụng để truy cập các ứng dụng nhưng ngay sau đó những kẻ xấu đã lợi dụng nó và phát triển thành một công cụ cực kì nguy hiểm. Để dễ hiểu về backdoor, bạn có thể hiểu như sau. Một kẻ trộm đột nhập vào nhà bạn thông qua một đường hầm A và chắc chắn bạn khó biết được điều này. Những lần đột nhập tiếp theo kẻ trộm cũng sẽ thông qua đường hầm này và đến nhà bạn. Đó là một ví dụ đơn giản để bạn hiểu về backdoor.

Read More

Thứ Ba, 13 tháng 3, 2012

// // Leave a Comment

Cuộc trò chuyện trên facebook


Tình cờ bắt gặp cuộc trò chuyện về phát triển nghề nghiệp và phát triển chuyên môn, của các bác đang nghiên cứu và làm việc ở nước ngoài. Thấy hay quá nên mình mạo muội, post vào đây:

Nhìn lương thấy mê ly! Làm PhD "cày xì khói" mà cũng chỉ bằng nữa cái này! :) 

 Hoai-Tuong Nguyen Deadline: 22 March 2012
Lương qui định của Đức cao thật. Nhưng cái job này dính vào dễ tiêu chứ có ngon xơi đâu. Nhìn đặc tả và thông tin project thì có vẻ như họ cần thuê gấp developer chứ không hẳn là pre-doc ;) Project này đã run được hơn 1 năm rồi. Có vẻ như EU reviewers phàn nàn hoặc là bị thiếu hụt nhân sự nên mới thuê thêm gấp gáp thế chứ làm pre-doc mà từ giờ đến 2013 xong rồi không có project mới để tiếp nối là đi về trắng tay ;)

Bác Huy Tran có kinh nghiệm thật! Tay ngang như em nhìn vào khó mà nhận ra được! Nhân đây hỏi bác pre-doc có khác với pre-doc assisstant không? Em thấy họ mentionned là pre-doc assisstant.

Le Chi Hieu Tất cả dự án thường offer các công việc ở dạng Short Term Contracts. Thường lương cho short term contract khá cao. Trong các dự án của EU, đặc biệt là các Framework Programmes như FP6 và FP7, thì khi viết proposals, lương và budget estimation cho nhân lực của dự án cũng đã dự tính rồi, đa số chọn lương ở hệ research associate. Không chi cao cho lương của nhân viên, thì tiền còn lại cũng phải return cho EC thôi. Mỗi quốc gia ở EU có hệ số lương khác nhau. Ở Đức và các nước Bắc Âu là cao nhất, đặc biệt là ở Thụy Điển, một phần do thuế thu nhập của họ đánh khá cao. Ví dụ, khi tính lương tháng cho một person month ở Đức và Bắc Âu, thường thì khoảng 8K tới 10 K Euro cho một person month. Ở UK, nếu tuyển Research Associate hay Fellow ở Level 6-7, thì khoảng 5K tới 7K cho một person month. Các nước như Romania và Spain, thì họ tính khoảng 3K tới 4K cho một person month.
Ởi các dự án EU, khi có thành viên làm dự án chuyển việc, thì họ tuyển người mới vào làm thôi, quan trọng là Principle Investigator và Coordinator của dự án đảm bảo progress của dự án. Nhiều ĐH ở EU cho PI có nhiều quyền thực hiện và quản lý budget, nhiều khi tuyển sinh viên PhD làm cho dự án EU lại tốt và rẻ hơn là trả tiền cho mấy bác có bằng PhD.

 Le Chi Hieu Làm công việc giảng dạy và tư vấn ở UK, thường phải kiêm luôn công việc tư vấn phát triển nghề nghiệp cho sinh viên. Ở UK, hầu hết các trường Đại Học và Cao Đẳng (Higher Education Institution) đưa chương trình "Lập Kết Hoạch Phát Triển Cá Nhân", Personal Development Planning PDP, như là một môn học và chương trình bắt buộc cho sinh viên.

PDP - Personal Development Planning is defined as 'a structured and supported process undertaken by an individual to reflect upon their own learning, performance and/or achievement and to plan for their personal, educational and career development'.

EU và các nước trong khối EU nói riêng đang chuẩn hóa một chính sách về PDP cho sinh viên, như là một yêu cầu quan trọng cho phát triển kỹ năng và nghề nghiệp, bên cạnh tri thức và hiểu biết về chuyên môn mà sinh viên được giảng dạy.
Read More

Thứ Hai, 20 tháng 2, 2012

// // 2 comments

Lấy Handle, Title của cửa sổ Windows đang hoạt động - C#


Snippet sử dụng hàm thư viện để lấy Handle của cửa sổ chương trình đang hoạt động sử dụng C#


// Khai báo thư viện hàm
using System.Runtime.InteropServices;

// Khai báo sử dụng hàm thư viện Api Win32, chú ý phải đặt trong 1 class nào đó
[DllImport("user32.dll")]
private static extern int GetForegroundWindow();
[DllImport("user32.dll")]
private static extern int GetWindowText(int hWnd, StringBuilder text, int count);


    // Cách thực hiện mã nguồn như sau, chú ý được viết trong 1 phương thức nào đó

    int chars = 256;
    StringBuilder buff = new StringBuilder(chars);
    int handle = GetForegroundWindow();
    if (GetWindowText(handle, buff, chars) > 0)
    {
        lbNameWindow.Text = buff.ToString();
        lbHandle.Text = handle.ToString();
        if (new IntPtr(handle) == this.Handle)
        {
            // Yes
        }
        else
        {
            // No
        }
   }
Read More

Thứ Năm, 9 tháng 2, 2012

// // Leave a Comment

Tài liệu tham khảo ngành khoa học máy tính (theo Demetris Zeinalipour)

Data Structures (and Algorithms) 
Algorithms
Operating Systems
Distributed Systems 
UNIX 
C/C++/C#/JAVA Problem Solving and Programming
Databases and Data Mining
Foundations & Theory of Computation
Computer Networks
Compilers
Software Engineering
Computer Architecture
Others
==========
Read More

Thứ Sáu, 3 tháng 2, 2012

// // Leave a Comment

Thông báo mở lớp các chương trình hỗ trợ sinh viên học tập!

Xin g.thiệu tới các bạn sinh viên và các anh chị đã đi làm rồi, hiện tại nhóm sinh viên BKIndex Group đã, đang và tiếp tục mở lớp các chương trình học tập hỗ trợ sinh viên ở các mảng kiến thức:


- Kỹ năng học tập và làm việc trên môi trường mạng (INT),
- Sử dụng Word, Excel, Power Point
- Lập trình C căn bản (Basic C),
- Cấu trúc dữ liệu và thuật toán (Advanced C),
- Lập trình C#.Net, lập trình Web, cơ sở dữ liệu,
- ...

Read More