Nên học và làm C# hay VB.NET

Kính gủi các bạn,

Hôm nay tôi xin mở chủ đề về học ngôn ngữ lập trình nào thích hợp cho các bạn. Tôi đã làm và tiếp xúc với khá nhiều người lập trình giỏi có, trung bình và yếu có. Tôi rút ra một điều rằng, hầu hết các bậc thầy về lập trình điều không có khái niệm về ngôn ngữ lập trình. Họ có thể làm bất cứ ngôn ngữ nào từ “thượng vàng đến hạ cám” từ .NET, Java, PHP cho đến các ngôn ngữ cấp trung bình và thấp như C++, Pascal.. Điều đó cho ta thấy rằng ngôn ngữ lập trình chỉ đóng góp một phần trong công việc và dự án.

Có nhiều bạn hỏi tôi rằng : “Nên học và làm C# hay VB.NET”, họ nói với tôi rằng họ có dự định là sẽ học và làm C# vì C# nhanh hơn, mạnh hơn, thuần túy hướng đối tượng hơn …VB.NET.

Thiết nghỉ chúng ta đang mù mờ về môi trường lập trình .NET. DotNet Frame. Microsoft đã rất khôn khéo khi xây dựng .NET Framework:

  • Tính nhất quán trong nhiều ngôn ngữ lập trình : Với .NET Framewor, bạn có thề sử dụng C#, VB.NET, J# để phát triển ứng dụng, tuy nhiên bắt buộc phải thông qua môi trường .NET Framework.
  • Framework mang lại cho chúng ta rất nhiều tiện ích được tích hợp sẵng và chỉ cần Plug and Play (cắm là chạy)

Nên dùng C# hay VB.NET ?

  • Theo tôi C# hay bất kỳ ngôn ngữ lập trình phụ thuộc vào .NET Framework. Chính vì vậy về mặc xử lý chương trình là như nhau.
  • .NET Framework có điểm mạnh là kế thừ toàn vẹn kiến trúc lập trình hướng đối tượng của Java vì vậy C# hay VB.NET điều là như nhau, C#, VB.NET điều thừa hưởng được mô hình lập trình hướng đối tượng.
  • Đối với những người đã viết ứng dụng từ VB5, VB6 thì VB.NET là thứ không thể thay đổi.

 

Kết luận :

  • Tùy vào sử thích và thói quen mà chọn ngôn ngữ lập trình cho thích hợp và kiếm tiền được từ nó.

Kỹ thuật sử dụng câu SQL động

Trong một số trường hợp chúng ta muốn lặp từng dòng dữ liệu để làm một việc gì đó thường dùng Cursor. Tuy nhiên trong thực tế Cursor rất chậm và sẽ Lock table khi chạy. Tôi xin viết vài câu lệnh đơn giản bằng SQL động để phục vụ một số công việc mà không cần phải dùng Cursor.

Yêu cầu tôi đặt ra là đếm tất cả số dòng của tất cả Table trong Database.

2013-05-24_234459

–Khai báo biến chứa câu lệnh, lưu ý phải thiết lập biến ban đầu là rỗng
declare @strSQL nvarchar(max) = ”

–Lấy tên table từ danh sách đối tượng trong sys.objects với type=’u’ (User table)
select @strSQL = @strSQL + ‘Select count(1) as DemTongSoDong,”’ + Name + ”’ as TableName from ‘ + name + ‘;’
from sys.objects
where type = ‘U’

–Xử lý câu SQL
exec( @strSQL )

P/s: các bạn chú ý biến @strSQL là biên kiểu nvarchar nên giá trị chuỗi cộng dồn có thể >8000 và sẽ execute lỗi, vì vậy nên cân nhắc số lượng table trong database có quá nhiều sinh ra tràng kiểu dữ liệu hay không.

Tùy vào nhu cầu mà các câu lệnh SQL động sẽ phức tạp hơn rất nhiều.

Cisco VPN Client và Windows 7 64bit, Windows 8

Cisco VPN Client và Windows 7 64bit, Windows 8

Thường chúng ta sử dụng Cisco VPN Client để remote chạy rất tốt trên Windows 7 32bit. Tuy nhiên với Windows 7  64bit và Windows 8 đôi khi không remote được và báo lỗi.

Các bước sửa lỗi như sau:

1- Download bản VPN Client 64bit cho W7 hoặc W8 64bit.

2- Vào Registry tìm đến key : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CVirtA

Xem Key Display Name xem có ký tự nào dư thừa thì xóa đi và để lại “Cisco Systems VPN Adapter”

Thiết lập SQL Server từ Windows Authentication Mode thành Mixed Mode

Thiết lập SQL Server từ Windows Authentication Mode thành Mixed Mode

Như chúng ta đã biết, khi cài đặt Microsoft SQL Server và không có tùy chỉnh trong quá trình cài đặt, SQL sẽ dùng cơ chế mặc định để kết nối vào Server là Windows Authentication mode. Vì lý do bảo mật cũng như tiện lợi trong quá trình sử dụng client kết nối vào Database, chúng ta chuyển qua thành chế độ Mixed Mode.

 

Đầu tiên đăng nhập vào SQL Server với chế độ Windows Authentication Mode

01

 

 

Chọn Server và chọn properties

 

02

 

 

Chuyển chế độ “Windows Authentication Mode” thành “SQL Server and Windows Authentication Mode

08

 

 

Vào phần Security, chọn login, User SA, chọn properties

04

 

Thiết lập mật khẩu cho User SA

05

 

 

Vào phần Status và Enable User Này lên

06

 

 

Restart lại Service của SQL

07

Windows Command Line – NET USE

NET USE

The NET utilities are NetBIOS applications, this means that they rely on WINS (or the local LMHOSTS file) to resolve computer names to IP addresses.

The NET Command is used to connect to a File/Printer Share as follows:

Join a file share (Drive MAP)
NET USE [driveletter:] \\ComputerName\ShareName /PERSISTENT:YES

NET USE [driveletter:] \\ComputerName\ShareName\folder1\folder2 /PERSISTENT:No

Make all future connections persistent (auto-reconnect at login)
NET USE /Persistent:Yes
or
NET USE /P:Yes

Make all future connections non-persistent (reconnect with login script)
NET USE /Persistent:No
or
NET USE /P:No

Join a file share (Drive MAP) – with a long share name
NET USE [driveletter:] “\\ComputerName\ShareName

Connect a user to their HOME directory
NET USE [devicename | *] [password | *]] [/HOME]
This requires the users Home server/folder to be defined in ADUC

Join a password protected file share (Drive MAP)
NET USE [driveletter:] \\ComputerName\ShareName[\volume] [password | *] [/USER:[domainname\]username] [/PERSISTENT:No]

In the above command /USER can also be specified as:
[/USER:[dotted domain name\]username]
[/USER:[username@dotted domain name]

In a script, to map a drive and wait until the mapping has completed before continuing:
START /wait NET USE [driveletter:] \\ComputerName\ShareName
This will be a little slower, but ensures that files can be read from the mapped drive.

Join a Printer Share
NET USE [LPTx:] \\ComputerName\printer_share /PERSISTENT:YES

Join a Printer Share – with a “long” share name
NET USE [LPTx:] “\\ComputerName\printer_share

Disconnect from a share
NET USE [driveletter:] /DELETE

Disconnect from a share and close all resources (undocumented)
NET USE [driveletter:] /DELETE /Y

Examples

NET USE H: /Home
NET USE J: \\MainServer\Users\%Username%
NET USE W: \\MainServer\GroupShare /Persistent:No
NET USE \\MainServer\SharedPrinter

NET USE command can map a network printer to an LPT port (for DOS type applications that print to a port.) but this does not add the printer to the Control Panel GUI.

By default all mapped drives have a 15 minute idle session timeout, you can modify this with the NET CONFIG command. In windows XP the explorer icon will change to show this change in status, this behaviour is designed to improve overall performance.

Drive Descriptions

Recent versions of Windows display a drive description for each share, this can be edited in the Explorer GUI. The text is stored in the registry.

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##ComputerName#ShareName
_LabelFromReg=<description of drive mapping>
   (string REG_SZ)

Windows Command Line – NET

NET

The NET Command is used to manage services as follows:

Syntax
      NET START [service]
      NET STOP [service]
      NET PAUSE [service]
      NET CONTINUE [service] 

Key
   service : The service name as shown in Control Panel, Services

To list the basic Services:

NET HELP SERVICES

To list the running Services:

NET START

Error/return codes

The NET command does not return the documented Win32_Service class return codes (Service Not Active,Service Request Timeout, etc) and for many errors will simply return Errorlevel 2.

It will however echo its own errors on screen:

“The service table is locked. More help is available by typing NET HELPMSG 2180”
“The service table is full. More help is available by typing NET HELPMSG 2181”
“The requested service has already been started. More help is available by typing NET HELPMSG 2182”
“The service name is invalid. More help is available by typing NET HELPMSG 2185”
“The service is not responding to the control function. NET HELPMSG 2186”
“The service control is busy. NET HELPMSG 2187”
“Invalid service program name. NET HELPMSG 2188”
“The service could not be controlled in its present state. More help is available by typing NET HELPMSG 2189”
“The service ended abnormally. More help is available by typing NET HELPMSG 2190”
“The requested pause or stop is not valid for this service. More help is available by typing NET HELPMSG 2191”
“could not find service name. More help is available by typing NET HELPMSG 2192”
“service control dispatcher pipe read failed. More help is available by typing NET HELPMSG 2193”
“A thread for the new service could not be created. More help is available by typing NET HELPMSG 2194”

You can detect these errors by searching the output text with an ‘old school’ FIND command as follows:

NET START alerter 2>&1|FIND “2182”
IF errorlevel 1 goto :sub_already_started

Windows Command Line – COPY

COPY

Copy one or more files to another location.

Syntax
      COPY source destination [options]

      COPY source1 + source2.. destination [options]

Key
     source :  Pathname for the file or files to be copied.
        /A  :  ASCII text file (default)
        /B  :  Binary file copy - will copy extended characters.
destination :  Pathname for the new file(s).
        /V  :  Verify that the new files were written correctly.
        /N  :  If at all possible, use only a short filename (8.3) when creating
               a destination file. This may be necessary when copying between disks
               that are formatted differently e.g NTFS and VFAT, or when archiving 
               data to an ISO9660 CDROM.

        /Z  :  Copy files in restartable mode. If the copy is interrupted 
               part way through, it will restart if possible. (use on slow networks)

        /Y  :  Suppress confirmation prompt (Windows 2000 only)

        /-Y :  Enable confirmation prompt (Windows 2000 only)

Prompt to overwrite destination file

NT 4 will overwrite destination files without any prompt, Windows 2000 and above will prompt unless the COPY command is being executed from within a batch script.
To force the overwriting of destination files under both NT4 and Windows2000 use the COPYCMD environment variable:

SET COPYCMD=/Y

This will turn off the prompt in Win2000 and will be ignored by NT4 (which overwrites by default)

Binary copies
“COPY /B … ” will copy all the files in binary mode , you can also put /B after any one file to copy just that file in binary.

Combine files
To combine files, specify a single file for the destination, but multiple files as the source. To specify more than one file use wildcards or list the files with a + in between each (file1+file2+file3)
When copying multiple files in this way the first file must exist or else the copy will fail, a workaround for this is COPY null + file1 + file2 dest1

COPY will accept UNC pathnames

Copy from the console (accept user input)

COPY CON filename.txt
Then type the input text followed by ^Z (Control key & Z)

To do this in Powershell use the following function:

function copycon {
[system.console]::in.readtoend()
}

Examples:

In the current folder
COPY oldfile.doc newfile.doc

Copy from a different folder/directory:
COPY “C:\my work\some file.doc” “D:\New docs\newfile.doc”

Specify the source only, with a wildcard will copy all the files into the current directory:
COPY “C:\my work\*.doc”

Specify the source with a wildcard and the destination as a single file, this is generally only useful with plain text files.
COPY “C:\my work\*.txt” “D:\New docs\combined.txt”

Quiet copy (no feedback on screen)
COPY oldfile.doc newfile.doc >nul

COPY is an internal command.

Windows Command Line – CD

CD

Change Directory – Select a Folder (and drive)

Syntax
      CD [/D] [drive:][path]
      CD [..]

Key
   /D : change the current DRIVE in addition to changing folder.

CHDIR is a synonym for CD.

Examples

Change to the parent directory:
C:\Work> CD ..

Change to the grant-parent directory:
C:\Work\backup\January> CD ..\..

Change to the ROOT directory:
C:\Work\backup\January> CD \

Display the current directory in the specified drive:
C:\> CD D:

Display the current drive and directory:
C:\Work> CD

Display the current drive and directory:
C:\Work> ECHO “%CD%”

In a batch file to display the location of the batch script file (%0)
C:\> ECHO “%~dp0”

In a batch file to CD to the location of the batch script file (%0)
C:\> CD /d “%~dp0”

Move down the folder tree with a full path reference to the ROOT folder…
C:\windows> CD \windows\java
C:\windows\java>

Move down the folder tree with a reference RELATIVE to the current folder…
C:\windows> CD java
C:\windows\java>

Move up and down the folder tree in one command…
C:\windows\java> CD ..\system32
C:\windows\system32>

If Command Extensions are enabled the CD command is enhanced as follows:

The current directory string is not CASE sensitive.
So CD C:\wiNdoWs will set the current directory to C:\Windows

CD does not treat spaces as delimiters, so it is possible to CD into a subfolder name that contains a space without surrounding the name with quotes.

For example:
cd \My folder

is the same as:
cd “\My folder”

An asterisk can be used to complete a folder name
e.g. C:> CD pro* will move to C:\Program Files

CHDIR is a synonym for CD

Tab Completion

This allows changing current folder by entering part of the path and pressing TAB

   C:> CD Prog [PRESS TAB] 
   Will go to C:\Program Files\

Tab Completion is disabled by default, it has been known to create difficulty when using a batch script to process text files that contain TAB characters.

Tab Completion is turned on by setting the registry value shown below

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
“CompletionChar”=dword:00000009

Changing the Current drive

Enter the drive letter followed by a colon
C:> E:
E:>

To change drive and directory at the same time, use CD with the /D switch
C:> cd /D E:\utils
E:\utils\>

CD is an internal command.

Tìm hiểu Windows Command Line

Tìm hiểu Windows Command Line

Khi chúng ta làm việc với hệ điều hành Windows nhiều chức năng Microsoft đã xây dựng sẵng, nhưng có một số chức năng phải dùng đến lệnh Command Line.

Sau đây tôi xin bàn một chút về lệnh trong Windows và cách khai thác lệnh hiệu quả.

Để khởi động cơ chế dòng lệnh trong Windows ta dùng Start/Run gõ CMD hoặc nhấn phím Windows + R để hiện cửa sổ nhập CMD.

2013-05-15_233757

Các bạn lưu ý rằng tất cả các thao tác trên giao diện quản lý điều có thể sử dụng dòng lệnh để điều khiển, nhưng ngược lại thì không. Vậy chạy lệnh trên Command Line giúp ích gì cho chúng ta ?

  1. Không nhất thiết phải Remote vào máy cần thực thi lệnh.
  2. Dòng lệnh tốn ít tài nguyên của máy chủ.
  3. Dòng lệnh truy cập sát sườn hệ điều hành hơn và giúp người quản trị thao tác dưới tần thấp nhất của hệ điều hành.

Để biết được danh sách các dòng lệnh cơ bản, chúng ta chỉ cần gõ “help

2013-05-15_234312

 

Muốn biết từng dòng lệnh bên trong thực thi với mục đích gì, các tham số truyền ra sao, chúng ta gõ tiếp Lệnh /? Ví dụ COPY /?

2013-05-15_234512

 

Ngoài ra còn một số lệnh phức tạp hơn về mạng v.v.v không xuất hiện khi bạn gõ Help, tuy nhiên các bạn có thể vào Help của Windows và tìm “Command Line A-Z” và tự tìm hiểu.

Microsoft SQL Server 2012 (Phần 01)

Microsoft SQL Server 2012 – Giới thiệu – Phần 01

Như chúng ta đã biết, đầu năm 2012 Microsoft tung ra bản SQL Server 2012 theo như thông tin của họ phiên bản này có rất nhiều cải tiến so với các phiên bản cũ, Microsoft tập trung vào tối ưu xử lý câu lệnh SQL và độ ổn định của hệ thống.

Các phiên bản trong SQL 2012 và tùy thuộc vào nhu cầu cũng như quy mô của doanh nghiệp mà chọn lựa cho thích hợp

2013-05-15_231144

SQL Server 2012 Enterprise Edition

2013-05-15_231517

2013-05-15_231627

  1. Tính năng : AlwaysOn giúp người sử dụng xây dựng kiến trúc nhiều máy chủ thành một mạng lưới các Node, khi Node chính của hệ thống gặp sự cố thì hệ thống tự kích hoạt Node khác trong mạng lưới lên thay thế trong vòng 9 giây. Vì vậy giảm tối thiểu thời gian ngừng hệ thống trong quá trình chuyển đổi.
  2. Tính năng : xVelocity giúp tăng tốc độ xử lý câu lệnh TSQL  lên từ 10 đến 100 lần so với các phiên bản trước. Nếu Table của bạn được thiết lập Index là None Cluster Index
  3. Tính năng Power View cung cấp cho người sử dụng những công cụ truy xuất dữ liệu SQL một cách trong suốt.