Thứ Tư, 14 tháng 12, 2011

Tổng Hợp Các Đoạn Code JavaScRipt Hay Cho Website

Không Cho Click Chuột Phải ...


function right(e) {
if (navigator.appName == 'Netscape' &&
(e.which == 3 || e.which == 2))
return false;
else if (navigator.appName == 'Microsoft Internet Explorer' &&
(event.button == 2 || event.button == 3)) {
alert('Chuc Mot Ngay Vui ve - Gui Wedsite Cho Ban Be Cua Minh Nha !');
return false;
}
return true;
}
document.onmousedown=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
window.onmousedown=right;


-----------------------------------------------------
CODE Làm Thanh Tiêu Đề Web Chạy Trên Task Manager Khi Đóng Mở Web ..
---------------------------------------------------------------


title_tmp1=document.title
if (title_tmp1.indexOf(">>")!=-1){
title_tmp2=title_tmp1.split(">>");
title_last="*~*"+title_tmp2[1];
title_last=title_last + "*~*" + title_tmp2[2];
}else{

if (title_tmp1.indexOf("*~*")!=-1){
title_tmp2=title_tmp1.split("*~*");
title_last="*~*"+title_tmp2[1];
if (title_last=="*~*"){title_last="*~*"};
if (title_last=="*~*"){title_last="*~*"};
}
else { title_last=" wWw.KyNiemB2.Top1.Vn "}
}


title_new=""+title_last+""
step=0

function flash_title()
{
step++
if (step==8) {step=1}
if (step==1) {document.title='[----*'+title_new+'*----]'}
if (step==2) {document.title='[---*-'+title_new+'-*---]'}
if (step==3) {document.title='[--*--'+title_new+'--*--]'}
if (step==4) {document.title='[-*---'+title_new+'---*-]'}
if (step==5) {document.title='[--*--'+title_new+'--*--]'}
if (step==6) {document.title='[---*-'+title_new+'-*---]'}
if (step==7) {document.title='[----*'+title_new+'*----]'}
setTimeout("flash_title()",180);
}
flash_title()



-------------------------------------------------------------
CODE Chống Click Chuột Phải ... Và Làm "Giật Giật Web Nêu Người Xem Cứ Cố ý Click Right ...
-----------------------------------------------------------------

document.onmousedown=click
var times=0
var times2=10
function click() {
if ((event.button==2) || (event.button==3)) {
if (times>=1) { earthquake() }
alert("Ban Ko Dc Click Chuot Phai");
times++ } }
function earthquake() {
alert("Ban Ko Dc Click Chuot Phai");
window.moveTo(0, 0)
window.moveTo(1, 1)
window.moveTo(2, 2)
window.moveTo(3, 3)
window.moveTo(4, 4)
window.moveTo(5, 5)
window.moveTo(6, 6)
window.moveTo(7, 7)
window.moveTo(8, 8)
window.moveTo(9, 9)
window.moveTo(10, 10)
window.moveTo(9, 9)
window.moveTo(8, 8)
window.moveTo(7, 7)
window.moveTo(6, 6)
window.moveTo(5, 5)
window.moveTo(4, 4)
window.moveTo(3, 3)
window.moveTo(2, 2)
window.moveTo(1, 1)
alert("Giat Nhu Fiml Nha??!")
tremmors()
}
function tremmors() {
window.moveTo(0, 0)
window.moveTo(1, 1)
window.moveTo(2, 2)
window.moveTo(3, 3)
window.moveTo(4, 4)
window.moveTo(5, 5)
window.moveTo(6, 6)
window.moveTo(7, 7)
window.moveTo(8, 8)
window.moveTo(9, 9)
window.moveTo(10, 10)
window.moveTo(11, 11)
window.moveTo(12, 12)
window.moveTo(9, 9)
window.moveTo(8, 8)
window.moveTo(7, 7)
window.moveTo(6, 6)
window.moveTo(5, 5)
window.moveTo(4, 4)
window.moveTo(3, 3)
window.moveTo(2, 2)
window.moveTo(1, 1)
tremmors()
}


--------------------------------------------
TITLE Chạy .....
--------------------------------------------

var txt=" ..:: WelCome To Website | wWw.KyNiemB2.Top1.Vn | Mang Giai Tri Online -> 12B2 THPT EaH'Leo - Daklak - Design : HoangVu Entertainment© -";
var expert=200;
// speed of roll
var refresh=null;
function marquee_title(){
document.title=txt;
txt=txt.substring(1,txt.lenghth)+txt.charAt(0);
refresh=setTimeout("marquee_title()",expert);
}
marquee_title();

->

Dot Net Remoting Overview

review this link http://nthoai.blogspot.com/search/label/.NET%20Remoting

Sử dụng Log4Net trong C#

review link http://nthoai.blogspot.com/search/label/Log4Net

Thứ Ba, 29 tháng 11, 2011

Các ký tự siêu thường dùng (vô cùng quan trọng cần phải nắm)

. : đại diện cho 1 ký tự bất kỳ trừ ký tự xuống dòng \n.
\d : ký tự chữ số tương đương [0-9]
\D : ký tự ko phải chữ số
\s : ký tự khoảng trắng tương đương [ \f\n\r\t\v]
\S : ký tự không phải khoảng trắng tương đương [ ^\f\n\r\t\v]
\w : ký tự word (gồm chữ cái và chữ số, dấu gạch dưới _ ) tương đương [a-zA-Z_0-9]
\W : ký tự không phải ký tự word tương đương [^a-zA-Z_0-9]
^ : bắt đầu 1 chuỗi hay 1 dòng
$ : kết thúc 1 chuỗi hay 1 dòng
\A : bắt đầu 1 chuỗi
\z : kết thúc 1 chuỗi
| : ký tự ngăn cách so trùng tương đương với phép or (lưu ý cái này nếu muốn kết hợp nhiều điều kiện)
[abc] : khớp với 1 ký tự nằm trong nhóm là a hay b hay c.
[a-z] so trùng với 1 ký tự nằm trong phạm vi a-z, dùng dấu - làm dấu ngăn cách.
[^abc] sẽ không so trùng với 1 ký tự nằm trong nhóm, ví dụ không so trùng với a hay b hay c.
() : Xác định 1 group (biểu thức con) xem như nó là một yếu tố đơn lẻ trong pattern .ví dụ ((a(b))c) sẽ khớp với b, ab, abc.
? : khớp với đứng trước từ 0 hay 1 lần. Ví dụ A?B sẽ khớp với B hay AB.
* : khớp với đứng trước từ 0 lần trở lên . A*B khớp với B, AB, AAB
+ : khớp với đứng trước từ 1 lần trở lên. A+B khớp với AB, AAB.
{n} : n là con số, Khớp đúng với n ký tự đúng trước nó . Ví dụ A{2}) khớp đúng với 2 chữ A.
{n, } : khớp đúng với n ký tự trở lên đứng trước nó , A{2,} khớp vói AA, AAA ...
{m,n} : khớp đùng với từ m->n ký tự đứng trước nó, A{2,4} khớp vói AA,AAA,AAAA.

Learn Regular Expression (Regex) syntax with C# and .NET

What are Regular Expressions?
Regular Expressions are a powerful pattern matching language that is part of many modern programming languages. Regular Expressions allow you to apply a pattern to an input string and return a list of the matches within the text. Regular expressions also allow text to be replaced using replacement patterns. It is a very powerful version of find and replace.
There are two parts to learning Regular Expressions;
learning the Regex syntax
learning how to work with Regex in your programming language
This article introduces you to the Regular Expression syntax. After learning the syntax for Regular Expressions you can use it many different languages as the syntax is fairly similar between languages.
Microsoft's .NET Framework contains a set of classes for working with Regular Expressions in the System.Text.RegularExpressions namespace.
Download the Regular Expression Designer
When learning Regular Expressions, it helps to have a tool that you can use to test Regex patterns. Rad Software has a Free Regular Expression Tool available for download that will help as you go through the article.
The basics - Finding text
Regular Expressions are similar to find and replace in that ordinary characters match themselves. If I want to match the word "went" the Regular Expression pattern would be "went".
Text: Anna Jones and a friend went to lunch
Regex: went
Matches: Anna Jones and a friend went to lunch
went
The following are special characters when working with Regular Expressions. They will be discussed throughout the article.
. $ ^ { [ ( | ) * + ? \
Matching any character with dot
The full stop or period character (.) is known as dot. It is a wildcard that will match any character except a new line (\n). For example if I wanted to match the 'a' character followed by any two characters.
Text: abc def ant cow
Regex: a..
Matches: abc def ant cow
abc
ant
If the Singleline option is enabled, a dot matches any character including the new line character.
Matching word characters
Backslash and a lowercase 'w' (\w) is a character class that will match any word character. The following Regular Expression matches 'a' followed by two word characters.
Text: abc anaconda ant cow apple
Regex: a\w\w
Matches: abc anaconda ant cow apple
abc
ana
ant
app
Backslash and an uppercase 'W' (\W) will match any non-word character.
Matching white-space
White-space can be matched using \s (backslash and 's'). The following Regular Expression matches the letter 'a' followed by two word characters then a white space character.
Text: "abc anaconda ant"
Regex: a\w\w\s
Matches:
"abc "
Note that ant was not matched as it is not followed by a white space character.
White-space is defined as the space character, new line (\n), form feed (\f), carriage return (\r), tab (\t) and vertical tab (\v). Be careful using \s as it can lead to unexpected behaviour by matching line breaks (\n and \r). Sometimes it is better to explicitly specify the characters to match instead of using \s. e.g. to match Tab and Space use [\t\0x0020]
Matching digits
The digits zero to nine can be matched using \d (backslash and lowercase 'd'). For example, the following Regular Expression matches any three digits in a row.
Text: 123 12 843 8472
Regex: \d\d\d
Matches: 123 12 843 8472
123
843
847
Matching sets of single characters
The square brackets are used to specify a set of single characters to match. Any single character within the set will match. For example, the following Regular Expression matches any three characters where the first character is either 'd' or 'a'.
Text: abc def ant cow
Regex: [da]..
Matches: abc def ant cow
abc
def
ant
The caret (^) can be added to the start of the set of characters to specify that none of the characters in the character set should be matched. The following Regular Expression matches any three character where the first character is not 'd' and not 'a'.
Text: abc def ant cow
Regex: [^da]..
Matches:
"bc "
"ef "
"nt "
"cow"
Matching ranges of characters
Ranges of characters can be matched using the hyphen (-). the following Regular Expression matches any three characters where the second character is either 'a', 'b', 'c' or 'd'.
Text: abc pen nda uml
Regex: .[a-d].
Matches: abc pen nda uml
abc
nda
Ranges of characters can also be combined together. the following Regular Expression matches any of the characters from 'a' to 'z' or any digit from '0' to '9' followed by two word characters.
Text: abc no 0aa i8i
Regex: [a-z0-9]\w\w
Matches: abc no 0aa i8i
abc
0aa
i8i
The pattern could be written more simply as [a-z\d]
Specifying the number of times to match with Quantifiers
Quantifiers let you specify the number of times that an expression must match. The most frequently used quantifiers are the asterisk character (*) and the plus sign (+). Note that the asterisk (*) is usually called the star when talking about Regular Expressions.
Matching zero or more times with star (*)
The star tells the Regular Expression to match the character, group, or character class that immediately precedes it zero or more times. This means that the character, group, or character class is optional, it can be matched but it does not have to match. The following Regular Expression matches the character 'a' followed by zero or more word characters.
Text: Anna Jones and a friend owned an anaconda
Regex: a\w*
Options: IgnoreCase
Matches: Anna Jones and a friend owned an anaconda
Anna
and
a
an
anaconda
Matching one or more times with plus (+)
The plus sign tells the Regular Expression to match the character, group, or character class that immediately precedes it one or more times. This means that the character, group, or character class must be found at least once. After it is found once it will be matched again if it follows the first match. The following Regular Expression matches the character 'a' followed by at least one word character.
Text: Anna Jones and a friend owned an anaconda
Regex: a\w+
Options: IgnoreCase
Matches: Anna Jones and a friend owned an anaconda
Anna
and
an
anaconda
Note that "a" was not matched as it is not followed by any word characters.
Matching zero or one times with question mark (?)
To specify an optional match use the question mark (?). The question mark matches zero or one times. The following Regular Expression matches the character 'a' followed by 'n' then optionally followed by another 'n'.
Text: Anna Jones and a friend owned an anaconda
Regex: an?
Options: IgnoreCase
Matches: Anna Jones and a friend owned an anaconda
An
a
an
a
an
an
a
a
Specifying the number of matches
The minimum number of matches required for a character, group, or character class can be specified with the curly brackets ({n}). The following Regular Expression matches the character 'a' followed by a minimum of two 'n' characters. There must be two 'n' characters for a match to occur.
Text: Anna Jones and Anne owned an anaconda
Regex: an{2}
Options: IgnoreCase
Matches: Anna Jones and Anne owned an anaconda
Ann
Ann
A range of matches can be specified by curly brackets with two numbers inside ({n,m}). The first number (n) is the minimum number of matches required, the second (m) is the maximum number of matches permitted. This Regular Expression matches the character 'a' followed by a minimum of two 'n' characters and a maximum of three 'n' characters.
Text: Anna and Anne lunched with an anaconda annnnnex
Regex: an{2,3}
Options: IgnoreCase
Matches: Anna and Anne lunched with an anaconda annnnnex
Ann
Ann
annn
The Regex stops matching after the maximum number of matches has been found.
Matching the start and end of a string
To specify that a match must occur at the beginning of a string use the caret character (^). For example, I want a Regular Expression pattern to match the beginning of the string followed by the character 'a'.
Text: an anaconda ate Anna Jones
Regex: ^a
Matches: an anaconda ate Anna Jones
"a" at position 1
The pattern above only matches the a in "an".
Note that the caret (^) has different behaviour when used inside the square brackets.
If the Multiline option is on, the caret (^) will match the beginning of each line in a multiline string rather than only the start of the string.
To specify that a match must occur at the end of a string use the dollar character ($). If the Multiline option is on then the pattern will match at the end of each line in a multiline string. This Regular Expression pattern matches the word at the end of the line in a multiline string.
Text: "an anaconda
ate Anna
Jones"
Regex: \w+$
Options: Multiline, IgnoreCase
Matches:
Jones
Microsoft have an online reference for Regex in .NET: Regular Expression Syntax on MSDN
To learn more about Regular Expression syntax see the next article: C# Regular Expression (Regex) Examples in .NET

Thứ Năm, 17 tháng 11, 2011

1 Số lệnh trong Run

1. Character Map = charmap.exe (rất hữu dụng trong việc tìm kiếm các ký tự không thông dụng)
2. Disk Cleanup = cleanmgr.exe (dọn dẹp đĩa để tăng dung lượng trống)
3. Clipboard Viewer = clipbrd.exe (Xem nội dung của Windows clipboard)
4. Dr Watson = drwtsn32.exe (Công cụ gỡ rối)
5. DirectX diagnosis = dxdiag.exe (Chẩn đoán và thử DirectX, card màn hình & card âm thanh)
6. Private character editor = eudcedit.exe (cho phép tạo ra hoặc sửa đổi các ký tự(nhân vật?))
7. IExpress Wizard = iexpress.exe (Tạo ra các file nén tự bung hoặc các file tự cài đặt)
8. Mcft Synchronization Manager = mobsync.exe (cho phép đồng bộ hóa thư mục trên mạng cho làm việc Offline. Không được cung cấp tài liệu rõ ràng).
9. Windows Media Player 5.1 = mplay32.exe (phiên bản cũ của Windows Media Player, rất cơ bản).
10. ODBC Data Source Administrator = odbcad32.exe (Làm một số việc với các cơ sở dữ liệu)
11. Object Packager = packager.exe (Làm việc với các đối tượng đóng gói cho phép chèn file vào, có các file trợ giúp toàn diện).
12. System Monitor = perfmon.exe (rất hữu ích, công cụ có tính cấu hình rất cao, cho bạn biết mọi thứ bạn muốn biết về bất kỳ khía cạnh nào của hiệu suất PC, for uber-geeks only )
13. Program Manager = progman.exe (Legacy Windows 3.x desktop shell).
14. Remote Access phone book = rasphone.exe (Tài liệu là ảo, không tồn tại).
15. Registry Editor = regedt32.exe [also regedit.exe] (dành cho việc chỉnh sửa Windows Registry).
16. Network shared folder wizard = shrpubw.exe (Tạo các thư mục được chia sẻ trên mạng).
17. File siganture verification tool = sigverif.exe
18. Volume Contro = sndvol32.exe (Tôi bổ sung cái này cho những người bị mất nó từ vùng cảnh báo của hệ thống).
19. System Configuration Editor = sysedit.exe (Sửa đổi System.ini & Win.ini giống như Win98! ).
20. Syskey = syskey.exe (bảo mật cơ sở dữ liệu tài khoản WinXP – cẩn thận khi sử dụng, Nó không được cung cấp tài liệu nhưng hình như nó mã hóa tất cả các mật khẩu, Tôi không chắc về chức năng đầy đủ của nó).
21. Mcft Telnet Client = telnet.exe
22. Driver Verifier Manager = verifier.exe (có vẻ như là một tiện ích theo dõi hoạt động của các Driver(trình điều khiển) phần cứng ,có thể hữu ích đối với người gặp sự cố với các Driver. Khộng được cung cấp tài liệu)
23. Windows for Workgroups Chat = winchat.exe (Xuất hiện như là 1 tiện ích WinNT cũ cho phép chat trong mạng LAN,có file trợ giúp).
24. System configuration = msconfig.exe (Có thể sử dụng để quản lý các chương trình khởi động cùng với Windows)
25. gpedit.msc được sử dụng để quản lý các chính sách nhóm và các quyền hạn.
here are more 99 commands
Accessibility Controls: access.cpl
Add Hardware Wizard: hdwwiz.cpl
Add/Remove Programs:cappwiz.cpl
Administrative Tools: control admintools
Automatic Updates: wuaucpl.cpl
Bluetooth Transfer Wizard: fsquirt
Calculator: calc
Certificate Manager: certmgr.msc
Character Map: charmap
Check Disk Utility:chkdsk
Clipboard Viewer: clipbrd
Command Prompt: cmd
Component Services: dcomcnfg
Computer Management: compmgmt.msc
Date and Time Properties: timedate.cpl
DDE Shares: ddeshare
Device Manager: devmgmt.msc
Direct X Control Panel (If Installed)*: directx.cpl
Direct X Troubleshooter: dxdiag
Disk Cleanup Utility: cleanmgr
Disk Defragment: dfrg.msc
Disk Management: diskmgmt.msc
Disk Partition Manager: diskpart
Display Properties: control desktop
Display Properties: desk.cpl
Display Properties (w/Appearance Tab Preselected): control color
Dr. Watson System Troubleshooting Utility: drwtsn32
Driver Verifier Utility: verifier
Event Viewer: eventvwr.msc
File Signature Verification Tool: sigverif
Findfast: findfast.cpl
Folders Properties: control folders
Fonts: control fonts
Fonts Folder: fonts
Free Cell Card Game: freecell
Game Controllers: joy.cpl
Group Policy Editor (XP Prof): gpedit.msc
Hearts Card Game: mshearts
Iexpress Wizard: iexpress
Indexing Service: ciadv.msc
Internet Properties: inetcpl.cpl
IP Configuration (Display Connection Configuration): ipconfig /all
IP Configuration (Display DNS Cache Contents): ipconfig /displaydns
IP Configuration (Delete DNS Cache Contents): ipconfig /flushdns
IP Configuration (Release All Connections): ipconfig /release
IP Configuration (Renew All Connections): ipconfig /renew
IP Configuration (Refreshes DHCP & Re-Registers DNS): ipconfig /registerdns
IP Configuration (Display DHCP Class ID): ipconfig /showclassid
IP Configuration (Modifies DHCP Class ID): ipconfig /setclassid
ava Control Panel (If Installed): jpicpl32.cpl
Java Control Panel (If Installed): javaws
Keyboard Properties: control keyboard
Local Security Settings: secpol.msc
Local Users and Groups: lusrmgr.msc
Logs You Out Of Windows: logoff
Microsoft Chat: winchat
Minesweeper Game: winmine
Mouse Properties: control mouse
Mouse Properties: main.cpl
Network Connections: control netconnections
Network Connections: ncpa.cpl
Network Setup Wizard: netsetup.cpl
Notepad: notepad
Nview Desktop Manager (If Installed): nvtuicpl.cpl
Object Packager: packager
ODBC Data Source Administrator: odbccp32.cpl
On Screen Keyboard: osk
Opens AC3 Filter (If Installed): ac3filter.cpl
Password Properties: password.cpl
Performance Monitor: perfmon.msc
Performance Monitor: perfmon
Phone and Modem Options: telephon.cpl
Power Configuration: powercfg.cpl
Printers and Faxes: control printers
Printers Folder: printers
Private Character Editor: eudcedit
Quicktime (If Installed): QuickTime.cpl
Regional Settings: intl.cpl
Registry Editor: regedit
Registry Editor: regedit32
emote Desktop: mstsc
Removable Storage: ntmsmgr.msc
Removable Storage Operator Requests: ntmsoprq.msc
Resultant Set of Policy (XP Prof): rsop.msc
Scanners and Cameras: sticpl.cpl
Scheduled Tasks: control schedtasks
Security Center: wscui.cpl
Services: services.msc
Shared Folders: fsmgmt.msc
Shuts Down Windows: shutdown
Sounds and Audio: mmsys.cpl
Spider Solitare Card Game: spider
SQL Client Configuration: cliconfg
System Configuration Editor: sysedit
System Configuration Utility: msconfig
System File Checker Utility (Scan Immediately): sfc /scannow
System File Checker Utility (Scan Once At Next Boot): sfc /scanonce
System File Checker Utility (Scan On Every Boot): sfc /scanboot
System File Checker Utility (Return to Default Setting): sfc /revert
System File Checker Utility (Purge File Cache): sfc /purgecache
System File Checker Utility (Set Cache Size to size x): sfc /cachesize=x
System Properties: sysdm.cpl
Task Manager:taskmgr
Telnet Client:telnet
User Account Management:nusrmgr.cpl
Utility Manager:utilman
Windows Firewall:firewall.cpl
Windows Magnifier:magnify
Windows Management Infrastructure:wmimgmt.msc
Windows System Security Tool:syskey
Windows Update Launches:wupdmgr
Windows XP Tour Wizard:tourstart

117 CÂU LỆNH TRONG CMD

1. Accessibility Controls – access.cpl
2. Accessibility Wizard – accwiz
3. Add Hardware Wizard – hdwwiz.cpl
4. Add/Remove Programs – appwiz.cpl
5. Administrative Tools – control admintools
6. Automatic Updates – wuaucpl.cpl
7. Bluetooth Transfer Wizard – fsquirt
8. Calculator – calc
9. Certificate Manager – certmgr.msc
10. Character Map – charmap
11. Check Disk Utility – chkdsk
12. Clipboard Viewer – clipbrd
13. Command Prompt – cmd
14. Component Services – dcomcnfg
15. Computer Management – compmgmt.msc
16. Control Panel – control
17. Date and Time Properties – timedate.cpl
18. DDE Shares – ddeshare
19. Device Manager – devmgmt.msc
20. Direct X Troubleshooter – dxdiag
21. Disk Cleanup Utility – cleanmgr
22. Disk Defragment – dfrg.msc
23. Disk Management – diskmgmt.msc
24. Disk Partition Manager – diskpart
25. Display Properties – control desktop
26. Display Properties – desk.cpl
27. Dr. Watson System Troubleshooting Utility – drwtsn32
28. Driver Verifier Utility – verifier
29. Event Viewer – eventvwr.msc
30. Files and Settings Transfer Tool – migwiz
31. File Signature Verification Tool – sigverif
32. Findfast – findfast.cpl
33. Firefox – firefox
34. Folders Properties – control folders
35. Fonts – control fonts
36. Fonts Folder – fonts
37. Free Cell Card Game – freecell
38. Game Controllers – joy.cpl
39. Group Policy Editor (for xp professional) – gpedit.msc
40. Hearts Card Game – mshearts
41. Help and Support – helpctr
42. HyperTerminal – hypertrm
43. Iexpress Wizard – iexpress
44. Indexing Service – ciadv.msc
45. Internet Connection Wizard – icwconn1
46. Internet Explorer – iexplore
47. Internet Properties – inetcpl.cpl
48. Keyboard Properties – control keyboard
49. Local Security Settings – secpol.msc
50. Local Users and Groups – lusrmgr.msc
51. Logs You Out Of Windows – logoff
52. Malicious Software Removal Tool – mrt
53. Microsoft Chat – winchat
54. Microsoft Movie Maker – moviemk
55. Microsoft Paint – mspaint
56. Microsoft Syncronization Tool – mobsync
57. Minesweeper Game – winmine
58. Mouse Properties – control mouse
59. Mouse Properties – main.cpl
60. Netmeeting – conf
61. Network Connections – control netconnections
62. Network Connections – ncpa.cpl
63. Network Setup Wizard – netsetup.cpl
64. Notepad notepad
65. Object Packager – packager
66. ODBC Data Source Administrator – odbccp32.cpl
67. On Screen Keyboard – osk
68. Outlook Express – msimn
69. Paint – pbrush
70. Password Properties – password.cpl
71. Performance Monitor – perfmon.msc
72. Performance Monitor – perfmon
73. Phone and Modem Options – telephon.cpl
74. Phone Dialer – dialer
75. Pinball Game – pinball
76. Power Configuration – powercfg.cpl
77. Printers and Faxes – control printers
78. Printers Folder – printers
79. Regional Settings – intl.cpl
80. Registry Editor – regedit
81. Registry Editor – regedit32
82. Remote Access Phonebook – rasphone
83. Remote Desktop – mstsc
84. Removable Storage – ntmsmgr.msc
85. Removable Storage Operator Requests – ntmsoprq.msc
86. Resultant Set of Policy (for xp professional) – rsop.msc
87. Scanners and Cameras – sticpl.cpl
88. Scheduled Tasks – control schedtasks
89. Security Center – wscui.cpl
90. Services – services.msc
91. Shared Folders – fsmgmt.msc
92. Shuts Down Windows – shutdown
93. Sounds and Audio – mmsys.cpl
94. Spider Solitare Card Game – spider
95. SQL Client Configuration – cliconfg
96. System Configuration Editor – sysedit
97. System Configuration Utility – msconfig
98. System Information – msinfo32
99. System Properties – sysdm.cpl
100. Task Manager – taskmgr
101. TCP Tester – tcptest
102. Telnet Client – telnet
103. User Account Management – nusrmgr.cpl
104. Utility Manager – utilman
105. Windows Address Book – wab
106. Windows Address Book Import Utility – wabmig
107. Windows Explorer – explorer
108. Windows Firewall – firewall.cpl
109. Windows Magnifier – magnify
110. Windows Management Infrastructure – wmimgmt.msc
111. Windows Media Player – wmplayer
112. Windows Messenger – msmsgs
113. Windows System Security Tool – syskey
114. Windows Update Launches – wupdmgr
115. Windows Version – winver
116. Windows XP Tour Wizard – tourstart
117. Wordpad – write

Thứ Năm, 28 tháng 7, 2011

SQL Error Codes

This document contains SQL error messages.

For some error codes, there are two possible error messages. When possible (usually at SQL compile time), error messages include explicit references to tables, views, or other entities. For those codes with two messages, the distinct messages are separated below by “OR”.
Note:
While this document lists error codes as negative values, JDBC and ODBC clients always receive positive values. For example, if an ODBC or JDBC application returns error code 30, look up error code -30 in this table.
SQL Error Codes
Error Code Description
100 No (more) data
0 Successful Completion
-1 Invalid SQL statement
-2 Exponent digits missing after ‘E’
-3 Closing quote (“) missing
-4 A term expected, beginning with one of the following: identifier, constant, aggregate, %ALPHAUP, %EXACT, %SQLSTRING, %SQLUPPER, %STRING, %UPPER, $$, :, +, -, (, NOT, EXISTS, or FOR
-5 Column number specified in ORDER does not match SELECT list
-6 ORDER must specify column number, not names, when after UNION
-7 ORDER column is not in the SELECT list
-8 Invalid DATEPART code for DATEPART(), DATENAME(), DATEADD(), or DATEDIFF()
-9 Incompatible SELECT lists used in UNION
-10 The SELECT list of the subquery must have exactly one item
-11 A scalar expression expected, not a condition
-12 A term expected, beginning with one of the following: identifier, constant, aggregate, $$, :, (, +, -, %ALPHAUP, %EXACT, %SQLSTRING, %SQLUPPER, %STRING, or %UPPER
-13 An expression other than a subquery expected here
-14 A comparison operator is required here
-15 A condition expected after NOT
-16 A qualifier SOME or ALL expected after the FOR in the for-expression
-17 A for-condition expected after the ( in the for-expression
-18 IS (or IS NOT) NULL predicate can be applied only to a field
-19 An aggregate function cannot be used in a WHERE clause
-20 Name conflict in the FROM list over label
-22 ORDER must specify column names, not numbers, when after ‘SELECT *’
-23 Label is not listed in FROM
-25 Input encountered after end of query
-26 Missing FROM clause
-27 Ambiguous labels for field
-28 Host variable name must begin with either % or a letter
-29 Field ambiguous/not found
-30 Table or View not found
-31 Field not (Found/Unique) in Table(s)
-32 Outer-join symbol ( =* or *= ) must be between two fields
-33 No field(s) found for table
-34 %INORDER: FROM order inconsistent with outer join order
-35 INSERT/UPDATE/DELETE not allowed for non-updatable view
-36 WITH CHECK OPTION (CHECKOPTION class parameter) not allowed for non-updatable views
-37 SQL Scalar/Aggregate/Unary function not supported for Stream fields
-38 No master map for table
-39 No RowID field for table
-40 ODBC escape extension not supported
-41 An extrinsic function call must have the form ‘$$tag^routine(…)’
-42 Closing quotes (“”) missing following pattern match
-43 Table is ambiguous within #IMPORT schema name list
-44 Duplicate method or query characteristic
-45 Duplicate method in Cache’ ObjectScript query body
-46 Required method missing in Cache’ ObjectScript query body
-47 Invalid method or query characteristic
-48 Invalid trigger REFERENCING clause for the trigger’s event
-49 Trigger REFERENCING clause cannot be specified when trigger language not SQL
-50 Trigger specifies UPDATE OF clause when trigger language not SQL
-51 SQL statement expected
-52 Cursor (Already/Was Not) DECLAREd
-53 Constant or variable expected as new value
-54 Array designator (last subscript omitted) expected after VALUES
-55 Invalid GRANT TO or REVOKE FROM
-56 GRANT/REVOKE Action not applicable to an object of this type
-57 Trigger specifies WHEN clause when trigger language not SQL
-58 Duplicate field found in trigger UPDATE OF clause
-59 Cannot have more than one field
-60 An action (%ALTER, SELECT, UPDATE, etc.) expected
-61 Cursor not updatable
-62 Additional new values expected for INSERT/UPDATE
-63 Data Exception – invalid escape character
-64 Incompatible SELECT list is used in INSERT
-65 Positive integer constant or variable expected
-66 Redundant Fields Found in SELECT list
-67 Aggregate not valid in subquery of FROM clause
-68 DISTINCT not valid in subquery of FROM clause
-69 SET = not allowed with WHERE CURRENT OF
-70 Multi-Line Field only valid for LIKE, Contains ([), or NULL Comparison.
-71 Multi-Line Field must be the Left operand of the Comparison.
-72 Multi-Line Field not valid in ORDER BY clause.
-73 Aggregates not supported in ORDER BY clause.
-74 Duplicate alias names found.
-75 and/or required before FROM in TRIM function.
-76 Cardinality mismatch between the SELECT-list and INTO-list.
-77 Qualified column reference not allowed in this JOIN context.
-78 Invalid transaction state.
-79 Referencing key and referenced key must be the same size
-80 Integer expected
-81 Column Constraint expected
-82 Multiple table %DESCRIPTION definitions found
-83 Multiple table %FILE definitions found
-84 Multiple table %NUMROWS definitions found
-85 Multiple table %ROUTINE definitions found
-86 Invalid field definition, no datatype defined
-87 Invalid table name
-88 Invalid field name
-89 Invalid index name
-90 Invalid view name
-91 cannot be specified more than once.
-92 cannot be READ UNCOMMITTED if READ WRITE specified.
-93 for the DIAGNOSTICS SIZE must be exact numeric.
-94 Unsupported usage of OUTER JOIN.
-95 Operation Disallowed by Operation Table
-96 Specified is not supported.
-97 Duplicate names found.
-98 License Violation
-99 Privilege Violation
-101 Attempt to open a cursor that is already open
-102 Operation (FETCH/CLOSE/UPDATE/DELETE/…) attempted on an unopened cursor
-103 Positioned UPDATE or DELETE attempted, but the cursor is not positioned on any row
-104 Field validation failed in INSERT
-105 Field validation failed in UPDATE
-106 Row to DELETE not found
-107 Cannot UPDATE RowID or RowID based on Fields
-108 Required field missing; INSERT or UPDATE not allowed
-109 Cannot find the row designated for UPDATE
-110 Locking conflict in filing
-111 Cannot INSERT into a ‘Default Only’ RowID or RowID based on field
-112 Access violation
-113 %THRESHOLD Violation
-114 One or more matching rows is locked by another user
-115 Cannot INSERT/UPDATE/DELETE on a read only table
-116 Cardinality mismatch on INSERT/UPDATE between values list and number of table columns.
-117 Aggregates not supported in Views
-118 Unknown or non-unique User or Role
-119 UNIQUE or PRIMARY KEY Constraint failed uniqueness check upon INSERT
-120 UNIQUE or PRIMARY KEY Constraint failed uniqueness check upon UPDATE
-121 FOREIGN KEY Constraint failed referential check upon INSERT of row in referencing table
-122 FOREIGN KEY Constraint failed referential check upon UPDATE of row in referencing table
-123 FOREIGN KEY Constraint failed referential check upon UPDATE of row in referenced table
-124 FOREIGN KEY Constraint failed referential check upon DELETE of row in referenced table
-125 UNIQUE or PRIMARY KEY Constraint failed uniqueness check upon creation of the constraint
-126 REVOKE with RESTRICT failed.
-127 FOREIGN KEY Constraint failed referential check upon creation of the constraint
-130 Before Insert trigger failed
-131 After Insert trigger failed
-132 Before Update trigger failed
-133 After Update trigger failed
-134 Before Delete trigger failed
-135 After Delete trigger failed
-136 View’s WITH CHECK OPTION validation failed in INSERT
-137 View’s WITH CHECK OPTION validation failed in UPDATE
-140 Invalid length parameter passed to the SUBSTRING function
-141 Invalid input value passed to the CONVERT function
-201 Table or View name not unique
-300 DDL not allowed on this table definition
-304 Attempt to add a NOT NULL field with no default value to a table which contains data
-305 Attempt to make field required when the table has one or more rows where the column value is NULL
-306 Column with this name already exists
-307 Primary key already defined for this table
-310 Foreign key references non-existent table
-311 Foreign key with same name already defined for this table
-314 Foreign key references non-unique key/column collection
-315 Constraint or Key not found
-317 Cannot DROP Constraint – One or more Foreign Key constraints reference this Unique constraint
-319 Referenced table has no primary key defined
-320 Cannot DROP table – One or more Foreign Key constraints reference this table
-324 Index with this name already defined for this table
-325 Index cannot be dropped because it is the IDKEY index and the table has data
-333 No such index defined
-340 Transaction failed to start.
-341 Transaction failed to COMMIT. Implicit ROLLBACK performed.
-342 Transaction failed to ROLLBACK.
-343 Not in a transaction.
-344 Invalid Transaction Sate – Active SQL-Transaction.
-345 Invalid condition number.
-346 Transaction failed to COMMIT. Implicit ROLLBACK also failed.
-347 Transaction failed to COMMIT
-358 SQL Function (function Stored Procedure) name not unique
-359 SQL Function (function Stored Procedure) not found
-360 Class not found
-361 Method or Query name not unique
-362 Method or Query not found
-363 Trigger not found
-364 Trigger with same EVENT, TIME, and ORDER already defined
-365 Trigger name not unique
-366 Schema name mismatch between trigger name and table name
-370 Embedded SQL CALL Statement can only be used for Method Procedures
-371 :HVar = CALL … Specified for a Procedure which does not return a value
-372 Support for extrinsic function calls are disabled
-373 An extrinsic function call may not call a % routine
-374 Cannot alter the datatype of a field to/from a stream type when the table contains data
-400 Fatal error occurred
-401 Fatal Connection error
-402 Invalid Username/Password
-405 Unable to read from communication device
-406 Unable to Write to Server
-407 Unable to Write to Server Master
-408 Unable to start server
-409 Invalid server function
-410 Invalid Directory
-411 No stream object defined for field
-412 General Stream Error
-413 Incompatible Client/Server Protocol
-415 Fatal error occurred within the SQL filer
-421 Warning: UPDATE or DELETE statement does not contain a WHERE clause
-422 SELECT request processed via ODBC, JDBC, or Dynamic SQL cannot contain an INTO clause
-425 Error processing Stored Procedure request
-426 Error preparing Stored Procedure
-427 Invalid Stored Procedure Name
-428 Stored Procedure Not Found
-429 Invalid number of input/output parameters for Stored Procedure
-430 Cannot initialize procedure context
-450 Unable to send client message
-451 Unable to receive server message
-452 Message sequencing error
-453 Error in User Initialization Code
-460 General error
-461 Communication link failure
-462 Memory allocation failure
-463 Invalid column number
-464 Function sequence error
-465 Invalid string or buffer length
-466 Invalid parameter number
-467 Column type out of range
-468 Fetch type out of range
-469 Driver not capable
-470 Option value changed
-471 Duplicate cursor name
-500 Fetch row count limit reached
-10050 WinSock: Network is down
-10051 WinSock: Network is unreachable
-10052 WinSock: Net dropped connection or reset
-10054 WinSock: Connection reset by peer (due to timeout or reboot)
-10055 WinSock: No buffer space available
-10056 WinSock: Socket is already connected
-10057 WinSock: Socket is not connected
-10058 WinSock: Cannot send after socket shutdown
-10060 WinSock: Connection timed out
-10061 WinSock: Connection refused
-10064 WinSock: Host is down
-10065 WinSock: No route to host
-10070 WinSock: Stale NFS file handle
-10091 WinSock: Network subsystem is unavailable
-10092 WinSock: WINSOCK DLL version out of range
-10093 WinSock: Successful WSASTARTUP not yet performed
-11001 WinSock: Host not found
-11002 WinSock: Nonauthoritative host not found

Các nguyên tắc cần biết khi lập trình 2

1. Sự khác nhau giữa các lớp Trace và Debug?

- Trace dùng để theo dõi các hành động xảy ra. Nó hoạt động trong các đóng gói cả Debug lẫn Release. Trace là khả năng của chương trình tự đưa ra các thông tin về hành động của mình.

- Debug dùng để tìm và sửa các lỗi trong chương trình. Nó chỉ hoạt động trong đóng gói Debug.

2. Sự khác nhau giữa static readonly và const?

- Static readonly là hằng số được khởi tạo khi thực thi chương trình.

- Const là hằng số được khởi tạo khi biên dịch chương trình.

3. Sự khác nhau giữa String và StringBuilder?

- String là lớp không thay đổi. Mọi phương thức sẽ tạo ra một biến String mới.

- StringBuilder là lớp thay đổi. Các phương thức của biến sẽ ảnh hưởng đến đến biến StringBuilder hiện tại.

4. Sự khác nhau giữa “” và String.Empty?

- “” sẽ tạo thêm 1 đối tượng khi làm việc với nó (so sánh, copy…)

- String.Empty không tạo đối tượng nào cả. String.Emtpy nằm trong mscorlib.

Khi kiểm tra 1 String có rỗng hay không nên dùng String.Length == 0 để có tốc độ nhanh nhất.

5. Có thể gán một struct bằng null hay không?

- Có thể nếu bạn lập trình với C# 2.0. Ví dụ: int? var = 1; var = null;

6. Sự khác nhau giữa == và phương thức Equals?

- == so sánh theo kiểu giá trị.

- Equals so sánh theo kiểu tham chiếu.

7. Sự khác nhau giữa throw và throw ex?

- throw đế đưa lại toàn bộ các tầng theo dõi của lỗi ra.

- throw ex bỏ bớt các tầng theo dõi bên dưới phương thức gọi throw ex.

8. Connection Pooling dùng để làm gì?

- Cho phép tăng tốc độ của các ứng dụng Web bằng cách dùng lại các kết nối thay vì tạo các kết nối mới với mỗi yêu cầu.

9. .NET có hỗ trợ thừa kế từ nhiều lớp hay không (multiple inheritance)? Tại sao?

- Không. Vì sẽ không hiểu được khi gọi 1 phương thức mà 2 lớp cha cùng override nó.

10. Sự khác nhau giữa abstract class và interface?

- Có thể thừa kế từ nhiều interface nhưng chỉ có thể thừa kế từ 1 abstract class.

- Có thể viết sẵn các thực thi trong Abstract class, nhưng interface thì không.

- Interface dùng để gom các hành động cần được hiện thực , các khả năng của một đối tượng (ví dụ con người và xe cộ cùng có khả năng đi lại, nhưng con người không cùng tính chất với xe cộ), còn abstract class cho các lớp thừa kế cùng 1 loại, tính chất hay trạng thái (ví dụ đàn ông, phụ nữ, trẻ con, người già đều là con người).

- Abstract class có tốc độ thực thi nhanh hơn interface.

- Thêm 1 tính năng mới vào interface sẽ phá vỡ toàn bộ các lớp hiện thực, còn abstract thì không.

11. Hàm GetHasCode() trong System.Object dùng để làm gì?

- Trả về giá trị của một đối tượng. Chú ý hàm này mặc định không trả về giá trị duy nhất hoặc không đổi. Hàm này có thể override.

12. Sự khác nhau giữa DataSet và DataReader?
- DataSet có thể đọc và ghi trong khi DataReader chỉ có thể đọc.
- DataSet có thể chứa nhiều bảng còn DataReader chỉ có thể chứa 1 bảng.
- DataSet làm việc ở chế độ không kết nối còn DataReader làm việc ở chế độ kết nối.
- DataSet có thể di chuyển tới và trở lại còn DataReader thì chỉ có thể di chuyển tới.
- DataSet truy cập chậm hơn DataReader.

13. Sự khác nhau giữa các phuơng thức Copy và Clone?
- Clone chỉ copy cấu trúc trong khi Copy copy cả cấu trúc lẫn dữ liệu.

14. Sự khác nhau giữa Dispose, Destructor và Finalize?
- Destructor sẽ được chuyển thành Finalize khi biên dịch. Hàm Finalize được gọi bởi .NET Runtime và chúng ta không thể đoàn được nó được gọi khi nào, nhưng nó chắc chắn sẽ được gọi.
- Dispose sẽ giải phóng bộ nhớ ngay khi nó được gọi. Lưu ý nếu lớp nào override Dispose mà quên gọi thì các đối tượng sẽ không tự giải phóng bộ nhớ.

15. Serialization là gì?
- Là sự chuyển chuyển đối tượng thành 1 luồng các bytes.

16. Sự khác nhau giữa XmlSerializer, BinaryFormatter và SoapFormatter?
- XmlSerializer dùng cho dịch vụ Web.
- BinaryFormatter/SoapFormatter dùng cho Remoting.
- SoapFormatter dùng để tuần tự hóa 1 đối tượng thành SOAP.
- BinaryFormatter dùng để tuần tự hóa 1 đối tượng thành dạng nhị phân.
- XmlSerializer chỉ chuyển đổi các tính chất public còn BinaryFormatter/SoapFormatter chuyển đổi cả public lẫn private.

17. Sự khác nhau giữa overriding và shadowing?
- Overriding cung cấp sự hiện thực mới của 1 hàm ở lớp thừa kế nhưng không thay đổi số biến, kiểu trả về, mức truy cập còn shadowing thì có thể thay đổi (từ khóa new trong C#).

18. Sự khác nhau giữa class, object, struct và interface?
- Class là cấu trúc dữ liệu định nghĩa bởi người dùng chứa các tính chất và phương thức. Object là một trường hợp cụ thể của class. Class không chiếm bộ nhớ, còn Object được tạo trong bộ nhớ.
- Class là cấu trúc dữ liệu định nghĩa bởi người dùng chứa các tính chất và phương thức. Struct là kiểu giá trị được lưu trữ trong stack còn class là kiểu tham chiếu (các object) được lưu trữ trong heap.
- Khi struct được khởi tạo không bằng hàm khởi tạo người dùng sẽ phải khởi tạo tất cả các Fields trước khi sử dụng nó.

- Interface là một hợp đồng gồm một nhóm các phương thức cần được hiện thực.

19. Sự khác nhau giữa Property và Field?
- Property dùng để quản lý sự truy cập đến Field. Dùng Property để đảm bảo Field không bị gán các giá trị không hợp lệ.

20. Sự khác nhau giữa static Method, static constructor với method và constructor thông thường?
- Static method có thể gọi mà không cần khởi tạo biến. Static constructor chỉ được gọi đúng một lần khi object đầu tiên được khởi tạo.

21. Các biến tĩnh và chỉ dẫn chương trình được lưu ở đâu?
- Ở 1 vùng bộ nhớ đặc biệt gọi là Permanent Storage area.
22. Sự khác nhau giữa stack và heap?
- Stack và heap là các vùng bộ nhớ. Heap nằm giữa stack và Permanent Storage area, và độ lớn có thể thay đổi khi thực thi chương trình.

23. Sự khác nhau giữa Boxing and Un-Boxing?
- Boxing là chuyển đổi kiểu giá trị thành kiểu tham chiếu. Un-Boxing ngược lại.

24. Mục đích của thừa kế (inheritance)?
- Để tái sử dụng.

25. Mục đích của đa hình (poymophism)?
- Một hành động có thể xảy ra theo nhiều cách khác nhau.

26. Sự khác nhau giữa Compile Time Polymorphism và Run Time Polymorphism?
- Compile Time Polymorphism – ví dụ Overloading, một hàm có thể có nhiều cách biểu diễn.
- Run Time Polymorphism – ví dụ Overriding, một hàm có thể có nhiều cách xử lý.

27. Sự khác nhau giữa delegate và event?
- delegate là một lớp (class) đại diện cho hàm con trỏ kiểu an toàn hoặc hàm gọi (call backs) chỉ đến địa chỉ tham chiếu của một (hay nhiều) hàm. Con trỏ hàm chứa trong delegate được gắn vào một đối tượng đích (target) và khi delegate được kích hoạt phương thức sẽ được gọi ở đối tượng đích. Sự hữu ích của delegate không nằm ở chỗ giữ địa chỉ tham chiếu của các hàm mà để định nghĩa và dùng các tên hàm khi runtime thay vì compile time.
- event cho phép xác định một delegate sẽ được gọi khi có sự xuất hiện của “sự kiện” nào đó. event là một modifier trong khi delegate là một lớp. event cho phép một delegate được khai báo trong interface.

29. AppDomain là gì?
- Là một miền riêng biệt lưu trữ code và dữ liệu cho một application. Một process có thể chứa nhiều AppDomains.
Khi bạn copy một DLL mới vào bin, ASP.NET runtime sẽ không thể đưa nó vào một AppDomain đang chạy.Nó sẽ dừng từ từ AppDomain cũ (dừng hẳn khi nó dừng tất cả các requests) và mở một AppDomain mới.

30. Sự khác nhau giữa publish và published interfaces.
- publish interface là interface mà bạn có thể sửa tất cả những code nào dùng nó còn published interface là interface mà bạn không thể sửa code dùng nó.

31. Sự khác nhau giữa try{}catch{} và try{}catch{Exception ex}?
- Chúng giống hệt nhau.

32. Sự khác nhau giữa 1/0; và try{1/0;} catch {throw;}
- Chúng giống hệt nhau. Vì vậy nếu không xử lý catch thì đừng catch.

33. Sự khác nhau giữa Remoting và Web service?
- Web service không có trạng thái, không cần biết đến client chỉ sử dụng trên HTTP, hỗ trợ không đồng nhất các môi trường, tốc độ chậm hơn Remoting.
- Remoting có trạng thái kết nối, hỗ trợ nhiều giao thức hơn HTTP, TCP…, đòi hỏi môi trường đồng nhất, tốc độ nhanh đặc biệt khi dùng trên TCP.

34. Sự khác nhau giữa error và exception?
- Error là lỗi của chương trình còn exception là lỗi chương trình được phát hiện và có thể xử lý.

35. Sự khác nhau giữa Procedure và OO?
- Procedure gồm các hàm và các biến, tất cả các hàm đều có thể truy cập đến tất cả các biến. Không thể quản lý các biến.
- OO gom hàm và biến vào các đơn vị object. Các hàm và biến được quản lý trong nội bộ object. Các object tương tác với nhau thông qua các interfaces.

36. CLR, CTS, CLS, MSIL, JIT, PE, GAC là viết tắt của những gì?
- Là Common Language Runtime: môi trường để chạy các ứng dụng .NET
- Là Common Type System: mô tả các loại dữ liệu trong .NET.
- Là Common Language Specification: mô tả các quy định và chuẩn cho các ngôn ngữ trong .NET
- Là Microsoft Intermediate Language: ngôn ngữ thông dịch của .NET.
- Là Just In Time: trình biên dịch MSIL thành mã máy.
- Là Portable Executable: file chứa MSIL.
- Là Global Assembly Cache: nơi lưu trữ các Asembly dùng chung.

37. Các mâu thuẫn giữa OO và RDBMS?
- Cấu trúc cấp bậc trong OO có thể là vô tận trong khi ở RDBMS chỉ có 4 loại table, row, column, cell.
- Các đối tượng trong OO bản thân là phân biệt trong khi trong RDBMS cần phải có primary-key.
- Các đối tượng trong OO có thể tham chiếu đến nhau rất đơn giản nhưng trong RDBMS thì phức tạp thông qua JOIN
- Sự thừa kế trong OO là đơn giản trong khi trong RDBMS hầu như không có khái niệm đó. Một bảng cần chứa tất cả các tính chất, có khi là thừa.
- Các đối tượng trong OO có thể có các hành động tác động đến tối tương khác.trong RDBMS thì phức tạp thông qua TRIGGER
- Khả năng truy cập trong OO là hạn chế trong khi ở RDBMS là không giới hạn.

38. Sự khác nhau giữa Response.Redirect và Server.Transfer.
- Response.Redirect đơn thuần là chuyển bạn đến một trang mới giống như bạn gõ địa chỉ trang đó trên browser và request đến server.
- Server.Transfer cũng chuyển bạn đến trang mới nhưng ở phía server, làm giảm request đến server, giữa nguyên URL của bạn và có thể chuyển cả các query string và biến trên form đên địa chỉ mới, chỉ thực hiện giữa các trang trên cùng 1 host.

39. Vai trò của ASPX page và ASPX page code-behind trong MVC.
- ASPX page là View còn ASPX page code-behind là Controller.

40. Làm thế nào để try/catch trên toàn bộ 1 ASPX page.
- Dùng Page_Error event.

41. Sự khác nhau giữa Cohesion và Coupling
- Cohesion là sự liên kết giữa các thành phần trong một module. Một thiết kế tốt nên có sự liên kết giữa các thành phần thật chặt chẽ.
- Coupling là sự kết nối giữa các module với nhau. Một thiết kế tốt nên có sự kết nối thật lỏng lẽo giữa các module.

42. Refractoring là gì?
- Là sự thiết kế lại cấu trúc của code bằng cách thay đổi cấu trúc bên trong mà không ảnh hưởng đến các hành vi bên ngoài (interface) của đoạn code (module, system) đó.

43. Phân biệt HttpApplication, Session, ViewSate và HttpContext?
- Cả 4 thành phần trên đều dùng để lưu dữ liệu của một Web Application.
- HttpApplication có tác dụng trong toàn bộ quá trình thực thi của Web Application.
- Session có tác dụng trong 1 lần ghé thăm (visit) của người dùng. Nó kết thúc khi gặp timeout.
- ViewState có tác dụng trong trong 1 trang web.
- HttpContext có tác dụng trong 1 request.

Các nguyên tắc cần biết khi lập trình 1

1. Program To An Interface, Not An Implementation. Lập trình trên các interface, tránh lập trình trên sự hiện thực hóa.

Khi cần gọi hàm, phương thức của một lớp chúng ta nên gọi từ interface mà lớp đó hiện thực hóa tránh gọi chính lớp đó.

2. Favor object composition over class inheritance. Chúng ta nên ưu tiên sự kết hợp hơn là thừa kế.

Khi cần thêm một chức năng nào đó vào nên viết riêng ra một lớp và tạo một instance của lớp đó trong lớp cần gọi thay vì thừa kế từ lớp cần gọi.

3. If your system is too complex, add more objects. Nếu hệ thống của bạn quá phức tạp hãy thêm vào các đối tượng.

Điều này mới nghe có vẻ vô lý . Thêm vào có thể làm phức tạp hơn chứ. Thực ra khi thêm vào chúng ta sẽ tách hệ thống thành các đối tượng nhỏ hơn, dễ hiểu, dễ quản lý hơn.

4. Rewrite code that needs comments. Hãy viết lại những đoạn code mà cần chú thích.

Các đoạn code mà bạn phải chú thích để người khác hiểu thể hiện rằng nó không rõ ràng, khó hiểu. Hãy viết lại nó theo cách rõ ràng, dễ hiểu.

5. Don’t catch or throw base exception types. Đừng bắt hoặc ném những loại exception cơ bản.

Khi bắt hoặc ném các exception cơ bản sẽ làm cho chương trình của bạn lúc nào cũng chạy ngay cả khi có lỗi hoặc cạn bộ nhớ hệ thống. Điều này có thể gây ra những hậu quả nghiêm trọng. Ngoài ra khi làm vậy chính bạn đã dấu đi những lỗi của chương trình. Tóm lại chỉ nên bắt và ném những exception nào mà bạn có thể xử lý.

6. Use finally blocks liberally. Hãy sử dụng finally thoải mái và tùy nghi.

Cho dù có lỗi xảy ra chăng nữa thì đoạn code nằm trong finally bao giờ cũng được chạy. Nó đảm bảo chắc chắn bạn đã làm những điều cần thiết khi lỗi xảy ra với chương trình.

7. Put a single catch (Exception ex) per thread.

Mỗi thread cần được bắt bằng 1 Exception cơ bản. Điều này sẽ giúp bạn truy lỗi dễ dàng hơn.