Visual Studio 2010 JavaScript Intellisense Behavior

Source: http://odetocode.com/Blogs/scott/archive/2010/06/13/visual-studio-2010-javascript-intellisense-behavior.aspx

After I installed Visual Studio 2010 I was having a difficult time editing .js files in Visual Studio. I habitually type the “(” character as soon as the function I want to call is highlighted in the Intellisense window, but in 2010 this behavior was no longer auto-completing the function name.

At first I thought this behavior was due to the new “suggestion mode” in Intellisense, but no amount of toggling with CTRL+ALT+SPACE would bring back the auto-complete behavior.

It turns out the two Intellisense modes (completion mode and suggestion mode) are not included for every editor (“JScript” being a notable omission). After some digging I found I could change this behavior by going to Tools -> Options -> Text Editor -> JScript -> Miscellaneous and unchecking the “Only use Tab or Enter to complete” option.

Hope that helps.

Advertisements

DuckDuckGo is a great way to search the Internet, esp. for you developers

Inspired by this article, I try a couple search queries with DuckDuckGo and it’s love at first sight. I added the Search Add-on to Firefox and even twist Firefox’s about:config a bit to enable DuckDuckGo searching on-the-fly just wih my Adress bar.

Add to Firefox [X]

1. Click this link to open the Firefox add-ons site (in a new tab).

2. Click the Add to Firefox green button on the page that comes up.

3. To add to the address bar, type about:config into the address bar.

4. Then search for keyword.url and change it to https://duckduckgo.com/?q=

Why do I love DuckDuckGo? Because it’s so much fun to use and so incovenient to do a specially targeted query. It’s “bang” support make me feel good — the kind of feeling you get as programmer using some good programmed tool searching for some programming stuff.

Have a look and see.

Một vài Styler cho notepad++

Trong quyết tâm tạo dựng một không gian làm việc chuyên nghiệp hơn, hôm nay đến lượt notepad++ được tôi thay da đổi thịt bằng cách chế biến lại stylers.xml (file config về màu mè font chữ của notepad++). Tự làm một hồi không được mẫu nào vừa ý, tôi lang thang trên mạng và sưu tầm được mấy mẫu khá cool.

Sau khi chế biến thì bạn sẽ được notepad++ mới trông như là textMate hay Coda hay bất cứ thứ gì đang chạy trong Mac OS. Kiểu như thế này:

Và nhiều nữa…

Tất cả các style này đều được lấy từ đây. Nhưng mà bạn khoan hí hửng, đây là style cho textMate (file .tmTheme) chứ không phải notepad++ đâu. 😀 Nãy giờ tôi giỡn hả?

Không hẳn, có một anh chàng dễ thương đã viết nên cái script này cho phép bạn convert textMate style sang Notepad++ style. Bạn chỉ cần copy nội dung của file .tmTheme cần chuyển, dán vào và download file stylers.xml về.

Giờ bạn bắt đầu được rồi. Nhân tiện, for your convenience, tôi có làm sẵn vài file stylers.xml ở đây, bạn có thể down về xài liền. Suýt quên, để cài đặt style mới bạn thay file stylers.xml trong thư mục cài đặt notepad++ bằng file stylers.xml mới. Dựa vô tên mấy file style trong file .zip của tôi, bạn tự truy về tác giả nhé (không có cái nào do tôi làm cả).

p.s. post này được tôi soạn bằng Windows Live Writer, một chương trình quá tuyệt vời tôi vừa khám phá ra. Nó làm tôi thay đổi quan niệm về các ứng dụng của Microsoft luôn: xài thử một phát là bạn biết rằng Microsoft cũng biết thế nào là thiết kế đẹp và ứng dụng mở.

Suýt quên 2. nếu chưa có thì mấy bạn tải font DejaVu về xài nhé. Mấy cái style trên chủ yếu dùng font này. Cool open-source one!

Suýt quên 3. Theo mặc định các files thông số của notepad++ được cài vào thư mục %appdata% chứ không phải trong thư mục cài đặt. Để truy cập tới thư mục này bạn vào Start > Run gõ %appdata%\notepad++ rồi enter. Thay file stylers.xml trong đó bằng file của mình là được.

Decode một mật mã nhỏ [1]

Vừa rồi có một người nhờ tôi decode một đoạn code như thế này:

01010100 01101111 01101101 - 01101000 01110101 01101101 - 01100011 01110101 01100001 - 01110010 01101001 01100101 01101110 01100111 - 01100101 01101101.
01000101 01101101 - 01111001 01100101 01110101 - 01100001 01101110 01101000, - 01110110 01100001 - 01100101 01101101 - 01101101 01110101 01101110 01101110 - 01101110 01101111 01101001 - 01100011 01101000 01101111 - 01110100 01100001 01110100 - 01100011 01100001 - 01101101 01101111 01101001 - 01100010 01101001 01100101 01110100. - 01000101 01001101 - 01011001 01000101 01010101 - 01000001 01001110 01001000.

Đoạn code rõ ràng là mã nhị phân, hơn nữa các số lại được nhóm theo từng bộ 8 ký tự rất giống 8 bits của 1 byte. Những ký tự ‘-‘, ‘ ‘, ‘.’, ‘,’ có lẽ là những dấu ngắt từ và ngắt câu bình thường. Quan sát một chút, tất cả các số nhị phân này đều bắt đầu bằng 0 nên tôi mạnh dạn mở ngay calulator (calc) lên chuyển thử mấy số nhị phân đầu tiên ra thập phân. Ah, số thứ 3 và số thứ 6 có cùng giá trị. Tôi copy tất cả dán vào notepad thử tìm xem còn những số nào giống nhau. Có khá nhiều. Vậy rất có thể văn bản được mã hóa theo khóa kiểu Caesar. Nếu đúng vậy thì thật mừng 🙂 , vì cùng lắm thì tôi sẽ brute force attack.

Nhưng trước tiên phải chuyển hết văn bản sang số nhị phân đã. Tôi viết một đoạn code nhỏ để làm việc này cho nhanh.

#include
#include
using namespace std;

ifstream fin(“code.txt”);
ofstream fout(“decode.txt”);

int main() {
char ch;
int i,s,p;

while (!fin.eof()) {
fin.get(ch);
if (ch==’0′ || ch==’1′) {
s=0; p=128;
if (ch==’1′) s+=(ch-48)*p;
for (i=0; i < 7; i++) { p/=2; fin.get(ch); if (ch=='1') s+=(ch-48)*p; } fout << s; } else fout << ch; } return 0; }[/sourcecode] Chạy thử, file decode.txt cho ta: [sourcecode language='cpp']84 111 109 - 104 117 109 - 99 117 97 - 114 105 101 110 103 - 101 109. 69 109 - 121 101 117 - 97 110 104, - 118 97 - 101 109 - 109 117 110 110 - 110 111 105 - 99 104 111 - 116 97 116 - 99 97 - 109 111 105 - 98 105 101 116. - 69 77 - 89 69 85 - 65 78 72.[/sourcecode] Hừm, rõ ràng là mã hóa Caesar, những "ký tự" như 109 và 117 lặp lại khá nhiều (đây hẳn là các nguyên âm). Cụm 101 109 lặp lại 2 lần. Nhìn vào cấu trúc mỗi tiếng có không quá 5 ký tự, tôi đoán đây là văn bản Tiếng Việt, có lẽ không dấu. Tuy nhiên đoạn 110 110 - 110 làm tôi khá lúng túng, trong văn bản Tiếng Việt không dấu không thể tìm từ nào 2 ký tự cuối giống nhau cả. Liệu đây có phải đây là văn bản Caesar? Chắn chắn rồi.Nhận thấy số hiệu của các ký tự khá lớn, tôi nghĩ chắc phải (1) chia lấy dư cho 26 (số chữ cái từ A-Z) hoặc (2) lùi tất cả về cùng một lượng nào đó. Cũng có khả năng xấu nhất là (3) phải tìm bảng đối chiếu từng số với mỗi ký tự, công việc này chắc chắn là khó khăn hơn nhiều. (Dù sao thì nhờ vào một bảng phân bố số lượng các chữ cái thì việc này cũng không đến nỗi quá mất thời gian.)

Nguồn: https://i2.wp.com/upload.wikimedia.org/wikipedia/commons/4/41/English-slf.png

Vậy là tôi tiếp tục với đoạn mã C++. Thử (1) chia cho 26 xem sao.
//fout << s; fout << (char) (s%26 + 97); // cộng thêm 97 vì 97 là vị thứ của chữ 'a' trong bảng mã ASCII[/sourcecode] Kết quả: [sourcecode language='cpp'] g h f - a n f - v n t - k b x g z - x f. r f - r x n - t g a, - o t - x f - f n g g - g h b - v a h - m t m - v t - f h b - u b x m. - r z - l r h - n a u.[/sourcecode] Ký tự có vẻ loạn xạ ngầu. Không sao, thử dịch lên và xuống vài đơn vị xem sao. Thay vì xuất ra (char) (s%26 + 97) tôi thử ((s+1)%26 + 97) và ((s-1)%26+97). Vẫn không thành công. Có thể tiếp tục thử thêm nhiều trường hợp những tôi quyết định không làm nữa. Bởi vì cách làm này tương đương như cách sau. Chuyển qua phương án sau. Tôi thấy trong code số 65 là nhỏ nhất, nên quyết định shift tất cả về 65 đơn vị. Thử xem 🙂 . [sourcecode language='cpp']//fout << s; //fout << (char) (s%26); fout << (char) (s-65+97); // dịch lui 65 đơn vị, cộng thêm 97 vì 97 là vị thứ của chữ 'a' trong bảng mã ASCII[/sourcecode] Kết quả: [sourcecode language='cpp'] t - ˆ • - ƒ • - ’ ‰ … Ž ‡ - … . e - ™ … • - Ž ˆ, - – - … - • Ž Ž - Ž ‰ - ƒ ˆ - ” ” - ƒ - ‰ - ‚ ‰ … ”. - e m - y e u - a n h.[/sourcecode] Mới đầu thì toàn là ký tự loạn xạ, nhưng thật bất ngờ, đoạn cuối có một văn bản đọc được: "-em - yeu - anh". Vậy là đã có chút manh mối, có thể tiếp tục với cách decode này. Tại sao lại chỉ có 1 phần văn bản được decoded? (còn nữa.)