Monday, July 30, 2012

Cha ru con ngủ-Chưa đủ công lực không nên đọc

À ơi con ngủ đi con. À ơi bố kể chuyện cổ tích cho con nghe nhé. Ngày xửa ngày xưa trong giang hồ có 7 môn phái tên là Thiếu Lâm, Võ Đang, Nga Mi, Bạch Hạc, Điểm Thương, Côn Luân, Không Động. Trong đó Thiếu Lâm được mệnh danh là bắc đẩu của võ lâm với các bí kíp như La Hán Thập Bát Quyền, Giáng Long Thật Bát Chưởng, Long trảo thủ, Kim Cương Chưởng, hay Dịch Cân Kinh. Võ Đang là môn phái thứ hai, sau đó là các phái còn lại. Chưởng môn phái Võ Đang lúc bấy giờ là Trương Tam Phong chân nhân, một hôm ông đi vào rừng và nhặt được một đứa bé bị bỏ rơi, ông mang về nuôi và đặt tên đứa bé là Trương Vô Kỵ. Vô Kỵ lớn lên và được Trương Tam Phương dạy cho võ nghệ, đến năm 18 tuổi chàng đã trở thành một thanh niên tuấn tú, khỏe mạnh giỏi võ và rất đẹp trai. Đến đây thì con ngủ.

Sunday, July 29, 2012

[Tutorial] Send/Receive Mail Using SMTP/POP3 In C #

Xây dựng lớp SMTP – dùng để gửi mail

1. Các thuộc tính cần có của một bức thư (mail):
- Danh sách người nhận.
// Danh sách người nhận
private string[] _DanhSachNguoiNhan;
public string[] DanhSachNguoiNhan
{
get { return _DanhSachNguoiNhan; }
set { _DanhSachNguoiNhan = value; }
}
Danh sách Bcc.
// Danh sách Bcc
private string[] _DanhSachBcc;
public string[] DanhSachBcc
{
get { return _DanhSachBcc; }
set { _DanhSachBcc = value; }
}
Danh sách Cc.
// Danh sách Cc
private string[] _DanhSachCc;
public string[] DanhSachCc
{
get { return _DanhSachCc; }
set { _DanhSachCc = value; }
}
- Danh sách file attachment (đính kèm).
// Danh sách file đính kèm
private Attachment[] _DanhSachAttment;
public Attachment[] DanhSachAttment
{
get { return _DanhSachAttment; }
set { _DanhSachAttment = value; }
}
Subject (tiêu đề).
// Tiêu đề mail cần gửi
private string _Subject;
public string Subject
{
get { return _Subject; }
set { _Subject = value; }
}
Content (nội dung).
// Nội dung mail cần gửi
private string _Contents;
public string Contents
{
get { return _Contents; }
set { _Contents = value; }
}
Các công việc cần làm khi gửi mail
- Set danh sách người nhận.
public void setDanhSachNguoiNhan(string SendTo)// SendTo là danh sách người nhận truyền vào
{
if (SendTo == "")
{
MessageBox.Show("Bạn Chưa Nhập Địa Chỉ Một Người Nhận Nào", "Thông Báo");// nếu danh sách truyền vào trống thì thông báo
return;
}
DanhSachNguoiNhan = SendTo.Split(',');// tách các người nhận bằng dấu ",";
}
Set danh sách Cc.
public void setDanhSachCc(string Cc)
{
if (Cc != "")
{
DanhSachCc = Cc.Split(',');
}
}
Tương tự set danh sách Bcc.
- Set danh sách file đính kèm.
public void setDanhSachAttachment(string[] AttachmentPath)
{
DanhSachAttment = new Attachment[AttachmentPath.Length];
for (int i = 0; i < AttachmentPath.Length; i++)
DanhSachAttment[i] = new Attachment(AttachmentPath[i]);
}
Sau khi đã lấy đủ thông tin cần thiết, ta thực hiện gửi mail. Trong C# có hai namespace hỗ trợ việc gửi mail bằng smtp là:
using System.Net.Sockets;
using System.Net.Mail;
Hàm thực hiện việc gửi mail:
+ Tạo kết nối tới server: (ở đây mình làm là Gmail, tương tự các bạn có thể làm với Yahoo Mail,…)
SmtpClient SmtpServer = new SmtpClient();
SmtpServer.Credentials = new System.Net.NetworkCredential(user.TenTaiKhoan, user.MatKhau);
SmtpServer.Port = 587;
SmtpServer.Host = "smtp.gmail.com";
SmtpServer.EnableSsl = true;
Tạo một mail:
MailMessage smail = new MailMessage();
smail.From = new MailAddress(user.TenTaiKhoan, user.TenHienThi, System.Text.Encoding.UTF8);
Byte i;
for (i = 0; i < DanhSachNguoiNhan.Length; i++)
smail.To.Add(DanhSachNguoiNhan[i]);
if(DanhSachCc != null)
{
for (i = 0; i < DanhSachCc.Length; i++)
smail.CC.Add(DanhSachCc[i]);
}
if (DanhSachBcc != null)
{
for (i = 0; i < DanhSachBcc.Length; i++)
smail.Bcc.Add(DanhSachBcc[i]);
}
if (DanhSachAttment != null)
{
for (i = 0; i < DanhSachAttment.Length; i++)// danh sách file đính kèm (nếu có)
smail.Attachments.Add(DanhSachAttment[i]);
}
smail.Subject = Subject;
smail.Body = Contents;
smail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
Và gửi nó đi:
try
{
#region Tạo một bức thư điện tử
// Tạo một mail, phần code tạo một mail
#endregion
SmtpServer.Send(smail);
SmtpServer.Dispose();
return true;
}
catch
{ return false; }
*Chú thích : biến user.TenTaiKhoan và user.MatKhau là tên tài khoản và mật khẩu tài khoản gmail của bạn.

Vậy là xong lớp SMTP dùng để gửi mail. Bây giờ ta chỉ cần thiết kế một form gửi mail nữa là ok, các bạn lưu ý là nếu các bạn sử dụng code của mình thì chú thiết kế form cung cấp đủ các biến cho nó nhé!.
Bạn có thể vào đây:
http://www.mediafire.com/?eb4hk5buxj9898t
Bạn vào link trên để lấy class đó để bổ sung nhé!

Đo thời gian thực hiện chương trình C/C++/C#

Đo thời gian thực hiện chương trình C/C++/C# (Timer 4 newbie)
(Ngày cập nhật cuối: 30/3/2009)
Chủ đề bài báo: C/C++/C#
Trong các cuộc thi lập trình, các chương trình cài đặt các thuật toán cùng giải quyết một bài toán, chúng ta luôn có nhu cầu kiểm thử tốc độ thực hiện của các cài đặt bằng cách xem xét thời gian một đoạn chương trình hay một chương trình thực hiện là bao lâu. Trong bài báo nhỏ này, tôi xin cung cấp cách thức đo thời gian thực hiện của các chương trình được viết bằng các ngôn ngữ C/C++/C# trên DOS và trên Windows.
1. Đo thời gian thực hiện chương trình với ngôn ngữ C/C++ trên DOS
Đối với môi trường DOS chúng ta có thể dùng hàm clock() để đo thời gian thực hiện của chương trình cho cả chương trình viết bằng C và C++. Hàm clock() có khai báo nằm trong file header time.h, giá trị trả về của hàm là thời gian bắt đầu từ lúc chương trình chạy cho tới lúc gọi hàm, tính bằng số giây nhân với hằng số CLOCKS_PER_SEC, hằng số CLOCKS_PER_SEC có giá trị như CLK_TCK.
Ví dụ sau đo thời gian thực hiện của 600000000 vòng lặp rỗng:
// file timer4c.c
#include
#include
#include
int main( void )
{
long i = 600000000L;
clock_t start, finish;
double duration;
// Do thoi gian cua mot su kien
printf( “Thoi gian thuc hien %ld vong lap rong:”, i );
start = clock();
while( i– )
;
finish = clock();
duration = (double)(finish – start) / CLOCKS_PER_SEC;
printf( “%2.1f giay\n”, duration );
system(“pause”);
return 0;
}
2. Đo thời gian thực hiện chương trình với ngôn ngữ C trên Windows
Trên Windows chúng ta sử dụng hàm QueryPerformanceCounter(LARGE_INTEGER *) để thực hiện việc đo thời gian, hàm được khai báo trong file header windows.h. Hàm này có kiểu trả về là BOOL và trả về giá trị là thời gian tính bằng giây từ lúc chương trình bắt đầu chạy, tham số đầu vào là con trỏ tới một biến kiểu LARGE_INTEGER.
Ví dụ sau là chương trình đo thời gian thực hiện 600000000 vòng lặp rỗng:
// file timer4w.c
#include
#include
// khai bao cau truc va cac ham
typedef struct {
LARGE_INTEGER start;
LARGE_INTEGER stop;
} stopWatch;
void startTimer( stopWatch *timer) ;
void stopTimer( stopWatch *timer) ;
double LIToSecs( LARGE_INTEGER * L) ;
double getElapsedTime( stopWatch *timer);
void startTimer( stopWatch *timer)
{
QueryPerformanceCounter(&timer->start) ;
}
void stopTimer( stopWatch *timer)
{
QueryPerformanceCounter(&timer->stop) ;
}
double LIToSecs( LARGE_INTEGER * L)
{
LARGE_INTEGER frequency;
QueryPerformanceFrequency( &frequency ) ;
return ((double)L->QuadPart /(double)frequency.QuadPart) ;
}
double getElapsedTime( stopWatch *timer) {
LARGE_INTEGER time;
time.QuadPart = timer->stop.QuadPart – timer->start.QuadPart;
return LIToSecs( &time) ;
}
// su dung cac ham
int main()
{
long i = 600000000L;
stopWatch timer;
double duration;
// Do thoi gian cua mot su kien
printf( “Thoi gian thuc hien %ld vong lap rong:”, i );
startTimer(&timer);
while( i– )
;
stopTimer(&timer);
duration = getElapsedTime(&timer);
printf( “%2.1f giay\n”, duration );
system(“pause”);
return 0;
}
3. Đo thời gian thực hiện của chương trình với C++ trên Windows
Tương tự như đối với chương trình C trên Windows, ở đây ta cũng sử dụng hàm QueryPerformanceCounter(LARGE_INTEGER *), tuy nhiên ta xây dựng lớp CStopWatch để tiện dùng cho các chương trình khác nhau.
// file timer4w.cpp
#include
#include
using namespace std;
typedef struct {
LARGE_INTEGER start;
LARGE_INTEGER stop;
} stopWatch;
// khai bao lop CStopWatch
class CStopWatch {
private:
stopWatch timer;
LARGE_INTEGER frequency;
double LIToSecs( LARGE_INTEGER & L) ;
public:
CStopWatch() ;
void startTimer( ) ;
void stopTimer( ) ;
double getElapsedTime() ;
};
double CStopWatch::LIToSecs( LARGE_INTEGER & L)
{
return ((double)L.QuadPart /(double)frequency.QuadPart) ;
}
CStopWatch::CStopWatch()
{
timer.start.QuadPart=0;
timer.stop.QuadPart=0;
QueryPerformanceFrequency( &frequency ) ;
}
void CStopWatch::startTimer( )
{
QueryPerformanceCounter(&timer.start) ;
}
void CStopWatch::stopTimer( )
{
QueryPerformanceCounter(&timer.stop) ;
}
double CStopWatch::getElapsedTime()
{
LARGE_INTEGER time;
time.QuadPart = timer.stop.QuadPart – timer.start.QuadPart;
return LIToSecs( time) ;
}
// su dung lop CStopWatch
int main()
{
long i = 600000000L;
CStopWatch timer;
double duration;
// Do thoi gian cua mot su kien
printf( “Thoi gian thuc hien %ld vong lap rong:”, i );
timer.startTimer();
while( i– )
;
timer.stopTimer();
duration = timer.getElapsedTime();
printf( “%2.1f giay\n”, duration );
system(“pause”);
return 0;
}
4. Đo thời gian thực hiện của chương trình với C#
Bắt đầu từ .NET Framework 2.0, lớp StopWatch được cung cấp cho người dùng để tiến hành các công việc liên quan tới đo đếm thời gian thực hiện 1 tác vụ nào đó, lớp này nằm trong namespace System.Diagnostics.
Ví dụ sau đây là chương trình đo thời gian thực hiện 600000000 vòng lặp rỗng:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace Timer
{
class Program
{
static void Main(string[] args)
{
Stopwatch st = new Stopwatch();
st.Start();
long i = 600000000L;
Console.WriteLine(“Thoi gian thuc hien {0} vong lap rong:”, i);
while (i > 0)
–i;
st.Stop();
Console.WriteLine(“{0} giay”, st.Elapsed.ToString());
if (Stopwatch.IsHighResolution)
Console.WriteLine(“Timed with Hi res”);
else
Console.WriteLine(“Not Timed with Hi res”);
Console.ReadKey();
}
}
}
5. Tài liệu tham khảo
1. MSDN 9.0, clock function (ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/dv_vccrt/html/3e1853dd-498f-49ba-b06a-f2315f20904e.htm).
2. http://cplus.about.com/od/howtodothingsin1/a/timing.htm
3. http://cplus.about.com/od/howtodothingsi2/a/timing.htm
4. http://cplus.about.com/od/howtodothingsinc/a/timing.htm
5. Microsoft® Windows® Internals, Fourth Edition: Microsoft Windows Server™ 2003, Windows XP, and Windows 2000, Mark E. Russinovich, David A. Solomon

Mặc dù đã hết sức thận trọng và xem xét kỹ lưỡng các ví dụ đưa ra trong bài viết, tuy vậy vẫn có thể không tránh khỏi các sai sót, rất mong nhận được sự đóng góp ý kiến của các bạn độc giả. Mọi góp ý, thắc mắc xin gửi về địa chỉ email:
nguyenvannam031@yahoo.com.vn

Monday, July 23, 2012

Lệnh AND và OR trong SQL (SQL p4)

AND và OR

Hai toán tử AND và OR nối hai hoặc nhiều điều kiện trong mệnh đề WHERE lại với nhau.

Toán tử AND sẽ hiển thị 1 dòng nếu TẤT CẢ các điều kiện đều thoả mãn. Toán tử OR hiển thị một dòng nếu BẤT KỲ điều kiện nào được thoả.

Bảng dữ liệu dùng trong ví dụ

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes


Sử dụng AND để tìm những người có tên là Tove và họ là Svendson:

SELECT * FROM Persons
WHERE FirstName = 'Tove'
AND LastName = 'Svendson'
Kết quả trả về:

LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes


Sử dụng OR để tìm những người có tên là Tove hoặc họ là Svendson:

SELECT * FROM Persons
WHERE firstname = 'Tove'
OR lastname = 'Svendson'
Kết quả trả về:

LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes


Bạn cũng có thể sử dụng kết hợp AND và OR cùng với dấu ngoặc đơn để tạo nên các câu truy vấn phức tạp:

SELECT * FROM Persons WHERE
(FirstName = 'Tove' OR FirstName = 'Stephen')
AND LastName = 'Svendson'
Kết quả trả về:

LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

Toán tử BETWEEN…AND trong SQL (SQL p5)

Toán tử BETWEEN...AND lấy ra một miền dữ liệu nằm giữa hai giá trị. Hai giá trị này có thể là số, chuỗi văn bản hoặc ngày tháng.

SELECT tên_cột FROM tên_bảng
WHERE tên_cột
BETWEEN giá_trị_1 AND giá_trị_2

Bảng dữ liệu dùng trong ví dụ

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes
Pettersen Kari Storgt 20 Stavanger
Svendson Tove Borgvn 23 Sandnes
Ví dụ 1

Tìm tất cả những người có họ (sắp xếp theo ABC) nằm giữa Hansen (tính luôn Hansen) và Pettersen (không tính Pettersen):

SELECT * FROM Persons WHERE LastName
BETWEEN 'Hansen' AND 'Pettersen'

Kết quả trả về:

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes
Lưu ý quan trọng: Toán tử BETWEEN...END sẽ trả về những kết quả khác nhau trên các hệ CSDL khác nhau. Với một số hệ CSDL, toán tử BETWEEN...END sẽ trả về các dòng mà có giá trị thực sự “nằm giữa” hai khoảng giá trị (tức là bỏ qua không tính đến các giá trị trùng với giá trị của hai đầu mút). Một số hệ CSDL thì sẽ tính luôn các giá trị trùng với hai đầu mút. Trong khi đó một số hệ CSDL khác lại chỉ tính các giá trị trùng với đầu mút thứ nhất mà không tính đầu mút thứ hai (như ở ví dụ phía trên). Do vậy, bạn phải kiểm tra lại hệ CSDL mà bạn đang dùng khi sử dụng toán tử BETWEEN...AND.

Ví dụ 2

Để tìm những người có họ (sắp xếp theo ABC) nằm ngoài khoảng hai giá trị ở ví dụ 1, ta dùng thêm toán tử NOT:

SELECT * FROM Persons WHERE LastName

Từ khoá DISTINCT trong SQL (SQL p6)

Câu lệnh SELECT sẽ trả về thông tin về các cột trong bảng. Nhưng nếu chúng ta không muốn lấy về các giá trị trùng nhau thì sau?

Với SQL, ta chỉ cần thêm từ khoá DISTINCT vào câu lệnh SELECT theo cú pháp sau:

SELECT DISTINCT tên_cột FROM tên_bảng

Ví dụ: Tìm tất cả các công ty trong bảng đặt hàng

Bảng đặt hàng của ta như sau:

Company OrderNumber
Sega 3412
W3Schools 2312
Trio 4678
W3Schools 6798


SELECT Company FROM Orders

Sẽ trả về kết quả:

Company
Sega
W3Schools
Trio
W3Schools


Ví dụ: Tìm tất cả các công ty khác nhau trong bảng đặt hàng

Câu lệnh SQL sau:

SELECT DISTINCT Company FROM Orders

Sẽ trả về kết quả:

Company
Sega
W3Schools
Trio

Từ khoá ORDER BY trong SQL (SQL p7)

Sắp xếp các dòng

Mệnh đề ORDER BY được dùng để sắp xếp các dòng.

Ví dụ bảng Orders:

Company OrderNumber
Sega 3412
ABC Shop 5678
W3Schools 2312
W3Schools 6798


Để lấy danh sách các công ty theo thứ tự chữ cái (tăng dần):

SELECT Company, OrderNumber FROM Orders
ORDER BY Company

Kết quả trả về:

Company OrderNumber
ABC Shop 5678
Sega 3412
W3Schools 6798
W3Schools 2312


Lấy danh sách các công ty theo thứ tự chữ cái (tăng dần) và hoá đơn đặt hàng theo thứ tự số tăng dần:

SELECT Company, OrderNumber FROM Orders
ORDER BY Company, OrderNumber

Kết quả trả về:

Company OrderNumber
ABC Shop 5678
Sega 3412
W3Schools 2312
W3Schools 6798


Lấy danh sách các công ty theo thứ tự giảm dần:

SELECT Company, OrderNumber FROM Orders
ORDER BY Company DESC

Kết quả trả về:

Company OrderNumber
W3Schools 6798
W3Schools 2312
Sega 3412
ABC Shop 5678

Câu lệnh INSERT INTO trong SQL (SQL p8)

Câu lệnh INSERT INTO

Câu lệnh INSERT INTO được dùng để chèn dòng mới vào bảng.

Cú pháp:

INSERT INTO tên_bảng
VALUES (giá_trị_1, giá_trị_2,....)

Bạn cũng có thể chỉ rõ các cột/trường nào cần chèn dữ liệu:

INSERT INTO tên_bảng (cột_1, cột_2,...)
VALUES (giá_trị_1, giá_trị_2,....)

Chèn 1 dòng mới

Ta có bảng Persons như sau:

LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Câu lệnh SQL sau:

INSERT INTO Persons
VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')

sẽ tạora kết quả trong bảng Persons như sau:

LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Stavanger
Chèn dữ liệu vào các cột/trường cụ thể

Với bảng Persons như trên, câu lệnh SQL sau:

INSERT INTO Persons (LastName, Address)
VALUES ('Rasmussen', 'Storgt 67')

Sẽ tạo ra kết quả:

LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Stavanger
Rasmussen Storgt 67

Sunday, July 22, 2012

Adobe CS6 đã xuất xưởng

Vào cuối tháng 4, Adobe đã phát hành bộ CS6 và đã bắt đầu phân phối đến người dùng. Sau đây là một vài tính năng mới trong một số sản phẩm Flash, Dreamweaver, Photoshop, Illustrator.

1. Adobe Flash Professional CS6.
- Hỗ trợ tính năng kết xuất sản phẩm cuối dưới dạng html5 và js.
- Hỗ trợ tính năng Sprite-sheet generation (tạo một mảng các đối tượng từ một movieClip).
- Hỗ trợ mô phỏng thiết bị smartphone, tablet android và iOS.
- Cho phép nhúng AIR vào sản phẩm mà không cần phải cài đặt riêng lẻ. Điều này có nghĩa là bạn chỉ việc xuất bản tập tin AIR cho Android, iOS, Windows, Linux, MacOS,... và người dùng có thể cài đặt tập tin này lên thiết bị của họ mà không cần phải cài đặt thêm AIR.
- Tối ưu hóa tập tin, giải thuật....
- Hỗ trợ Stage3D
2. Adobe Dreamweaver CS6.
Chủ yếu tập trung vào html5, CSS3 và thiết kế trên các thiết bị di động.
3. Adobe Photoshop CS6
- Thêm công cụ mercury graphics engine
- Thêm các mẫu thiết kế mới
- Thêm mới thư viện hỗ trợ hiệu ứng Blur
- Thêm công cụ Crop
- Giao diện hiện đại hơn
- Hỗ trợ tạo video
...
4. Adobe Illustrator CS6
Tập trung tăng tốc độ xử lý, tính ổn định, làm việc với các tập tin cấu thành phức tạp. Hỗ trợ giao diện thân thiện, hiện đại hơn.

Saturday, July 21, 2012

Câu lệnh UPDATE trong SQL (SQL p9)

Câu lệnh UPDATE được sử dụng để cập nhật/sửa đổi dữ liệu đã có trong bảng.

Cú pháp:

UPDATE tên_bảng
SET tên_cột = giá_trị_mới
WHERE tên_cột = giá_trị

Ví dụ: bảng Person của ta như sau:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Storgt 67


Giả sử ta muốn bổ xung thêm phần tên cho người có họ là Rasmussen:

UPDATE Person SET FirstName = 'Nina'
WHERE LastName = 'Rasmussen'

Ta sẽ có kết quả như sau:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Storgt 67


Bây giờ ta lại muốn đổi tên và địa chỉ:

UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger'
WHERE LastName = 'Rasmussen'

Kết quả sẽ là:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger

Câu lệnh DELETE trong SQL (SQL p10)

Cú pháp:

DELETE FROM tên_bảng
WHERE tên_cột = giá_trị

Ví dụ: Bảng Person của ta như sau:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger


Ta xoá người có tên là Nina Rasmussen:

DELETE FROM Person WHERE LastName = 'Rasmussen'

Kết quả sau khi xoá:

LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger


Đôi khi ta muốn xoá tất cả dữ liệu trong bảng nhưng vẫn giữ lại bảng cùng với cấu trúc và tất cả các thuộc tính của bảng, ta có thể dùng câu lệnh:

DELETE FROM table_name

hoặc

DELETE * FROM table_name

Hàm COUNT lệnh đếm trong SQL (SQL p11)

SQL có sẵn lệnh để đếm các dòng trong CSDL.

Cú pháp của hàm COUNT:

SELECT COUNT(tên_cột) FROM tên_bảng

Hàm COUNT(*):

Hàm COUNT(*) trả về số lượng các dòng được chọn ở trong bảng.

Ví dụ ta có bảng Persons như sau:

Name Age
Hansen, Ola 34
Svendson, Tove 45
Pettersen, Kari 19
Câu lệnh sau sẽ trả về số lượng các dòng trong bảng:

SELECT COUNT(*) FROM Persons

và kết quả trả về sẽ là:

3

Câu lệnh sau sẽ trả về số lượng những người lớn hơn 20 tuổi:

SELECT COUNT(*) FROM Persons WHERE Age > 20

kết quả trả về sẽ là:

2

Hàm COUNT(column):

Hàm COUNT(column) sẽ trả về số lượng các dòng có giá trị khác NULL ở cột được chỉ định.

Ví dụ ta có bảng Persons như sau:

Name Age
Hansen, Ola 34
Svendson, Tove 45
Pettersen, Kari
Câu lệnh sau sẽ trả về số lượng những người mà cột Age trong bảng không rỗng:

SELECT COUNT(Age) FROM Persons

và kết quả trả về sẽ là:

2

Mệnh đề COUNT DISTINCT

Lưu ý: Các ví dụ dưới đây chỉ hoạt động với CSDL Oracle và MS SQL Server, không hoạt động trên MS Access (chưa thử nhiệm với các hệ CSDL khác!)

Từ khoá DISTINCT và COUNT có thể được dùng chung với nhau để đếm số lượng các kết quả không trùng nhau.

Cú pháp như sau:

SELECT COUNT(DISTINCT column(s)) FROM table

Ví dụ ta có bảng Orders như sau:

Company OrderNumber
Sega 3412
W3Schools 2312
Trio 4678
W3Schools 6798
Câu lệnh SQL sau:

SELECT COUNT(DISTINCT Company) FROM Orders

sẽ trả về kết quả là:

3

Hàm tính toán AVG, MAX, MIN, SUM trong SQL (SQL p12)

SQL có sẵn khá nhiều hàm để thực hiện đếm và tính toán.

Cú pháp:

Cú pháp để gọi hàm trong câu lệnh SQL như sau:

SELECT function(tên_cột) FROM tên_bảng

Bảng dữ liệu chúng ta sẽ dùng trong các ví sụ tiếp theo:

Name Age
Hansen, Ola 34
Svendson, Tove 45
Pettersen, Kari 19
Hàm AVG(column)

Hàm AVG trả về giá trị trung bình tính theo cột được chỉ định của các dòng được chọn. Các giá trị NULL sẽ không được xét đến khi tính giá trị trung bình.

Ví dụ:

Câu lệnh sau sẽ tính số tuổi trung bình của những người có tuổi trên 20:

SELECT AVG(Age) FROM Persons WHERE Age > 20

kết quả trả về sẽ là:

39.5

Hàm MAX(column)

Hàm MAX trả về giá trị lớn nhất trong cột. Các giá trị NULL sẽ không được xét đến.

Ví dụ:

SELECT MAX(Age) FROM Persons

kết quả trả về:

45

Hàm MIN(column)

Hàm MAX trả về giá trị nhỏ nhất trong cột. Các giá trị NULL sẽ không được xét đến.

Ví dụ:

SELECT MIN(Age) FROM Persons

kết quả trả về:

19

Lưu ý: Hàm MIN và MAX cũng có thể áp dụng cho các cột có dữ liệu là chuỗi văn bản. Dữ liệu trong cột sẽ được so sánh theo thứ tự tăng dần của từ điển

Hàm SUM(column)

Hàm SUM trả về tổng giá trị của cột. Các giá trị NULL sẽ không được xét đến.

Ví dụ:

Tìm tổng số tuổi của tất cả những người có trong bảng:

SELECT SUM(Age) FROM Persons

kết quả trả về:

98

Ví dụ:

Tìm tổng số tuổi của tất cả những người có tuổi lớn hơn 20:

SELECT SUM(Age) FROM Persons WHERE Age > 20

kết quả trả về:

79

Mệnh đề GROUP BY, mệnh đề HAVING trong SQL (SQL p13)

Các hàm tập hợp (ví dụ như SUM) thông thường cần thêm chức năng của mệnh đề GROUP BY.

GROUP BY…

Mệnh đề GROUP BY…được thêm vào SQL bởi vì các hàm tập hợp (như SUM) trả về một tập hợp của các giá trị trong cột mỗi khi chúng được gọi, và nếu không có GROUP BY ta không thể nào tính được tổng của các giá trị theo từng nhóm riêng lẻ trong cột.

Cú pháp của GROUP BY như sau:

SELECT tên_cột, SUM(tên_cột) FROM tên_bảng GROUP BY tên_cột

Ví dụ sử dụng GROUP BY:

Giả sử ta có bảng Sales như sau:

Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100
Câu lệnh SQL sau:

SELECT Company, SUM(Amount) FROM Sales

sẽ trả về kết quả:

Company SUM(Amount)
W3Schools 17100
IBM 17100
W3Schools 17100
Kết quả trả về ở trên đôi khi không phải là cái mà ta mong đợi. Ta thêm mệnh đề GROUP BY vào trong câu lệnh SQL:

SELECT Company, SUM(Amount) FROM Sales
GROUP BY Company

và kết quả trả về lần này sẽ là:

Company SUM(Amount)
W3Schools 12600
IBM 4500
Kết quả này đúng là cái mà ta mong muốn.

HAVING…

Mệnh đề HAVING…được thêm vào SQL vì mệnh đề WHERE không áp dụng được đối với các hàm tập hợp (như SUM). Nếu không có HAVING, ta không thể nào kiểm tra được điều kiện với các hàm tập hợp.

Cú pháp của HAVING như sau:

SELECT tên_cột, SUM(tên_cột) FROM tên_bảng
GROUP BY tên_cột
HAVING SUM(tên_cột) điều_kiện giá_trị

Ta sử dụng lại bảng Sales ở trên. Câu lệnh SQL sau:

SELECT Company, SUM(Amount) FROM Sales
GROUP BY Company
HAVING SUM(Amount) > 10000

sẽ trả về kết quả:

Company SUM(Amount)
W3Schools 12600

Sử dụng bí danh trong SQL (SQL p14)

Với SQL, bí danh có thể được sử dụng cho tên của cột và tên của bảng.Bí danh cột:

Cú pháp bí danh cột như sau:

SELECT tên_cột AS bí_danh_cột FROM tên_bảng

Bí danh bảng:

Bí danh bảng có cú pháp như sau:

SELECT tên_cột FROM tên_bảng AS bí_danh_bảng

Ví dụ sử dụng bí danh cột:

Ta có bảng Persons như sau:

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger
Câu lệnh SQL sau:

SELECT LastName AS Họ, FirstName AS Tên
FROM Persons

Sẽ trả về kết quả:

Họ Tên
Hansen Ola
Svendson Tove
Pettersen

Nối kết và khoá trong SQL (SQL p15)

Nối kết và khoá

Đôi khi chúng ta phải lấy dữ liệu từ hai bảng cùng một lúc, chúng ta thực hiện một kết nối.

Các bảng trong CSDL có thể quan hệ ràng buộc với nhau thông qua các khoá. Một khoá chính (primary key) là một cột mà trong đó mỗi giá trị của hàng phải là duy nhất. Mục đích của khoá là kết nối dữ liệu lại với nhau, từ nhiều bảng khác nhau mà không gây trùng lắp dữ liệu giữa các bảng.

Trong bảng Employees (nhân viên) ở ví dụ dưới đây có cột Employees_ID là khoá chính, bảo đảm rằng không thể có hai dòng nào có trùng Employees_ID. Employees_ID dùng để phân biệt hai nhân viên khi họ trùng tên.

Trong ví dụ dưới đây:

Employee_ID là khoá chính của bảng Employees.
Prod_ID là khoá chính của bảng Orders.
Cột Employeed_ID trong bảng Orders được sử dụng để kết nối với bảng Employees, chỉ đến nhân viên trong bảng Employees.
Bảng Employees:

Employees_ID Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari
Bảng Orders:

Prod_ID Product Employee_ID
234 Printer 01
657 Table 03
865 Chair 03
Kết nối hai bảng với nhau

Chúng ta có thể lấy dữ liệu từ hai bảng bằng cách kết nối chúng, tương tự như sau:

Ví dụ: Tìm xem ai đã đặt hàng sản phẩm và họ đã đặt món hàng gì:

SELECT Employees.Name, Orders.Product
FROM Employees, Orders
WHERE Employees.Employee_ID = Orders.Employee_ID

kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair
Ví dụ: Tìm xem ai đã đặt hàng máy in:

SELECT Employees.Name
FROM Employees, Orders
WHERE Employees.Employee_ID = Orders.Employee_ID
AND Orders.Product = 'Printer'

kết quả trả về:

Name
Hansen, Ola
Sử dụng JOIN

Ta có thể sử dụng từ khoá JOIN để kết nối dữ liệu từ hai bảng.

Ví dụ: INNER JOIN

Cú pháp:

SELECT cột_1, cột_2, cột_3
FROM bảng_1
INNER JOIN bảng_2
ON bảng_1.khoá_chính = bảng_2.khoá_ngoại

Ai đã đặt hàng và họ đã đặt món hàng nào:

SELECT Employees.Name, Orders.Product
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID

INNER JOIN trả về tất cả các dòng ở cả hai bảng khi chúng tương ứng với nhau. Nếu có một dòng ở bảng Employees không ứng với dòng nào ở bảng Orders, dòng đó sẽ không được tính.

kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair
Ví dụ: LEFT JOIN

Cú pháp:

SELECT cột_1, cột_2, cột_3
FROM bảng_1
LEFT JOIN bảng_2
ON bảng_1.khoá_chính = bảng_2.khoá_ngoại

Liệt kê tất cả các nhân viên và món hàng mà họ đặt (nếu có):

SELECT Employees.Name, Orders.Product
FROM Employees
LEFT JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID

LEFT JOIN trả về tất cả các dòng của bảng thứ nhất (Employees), ngay cả khi các dòng đó không ứng với dòng nào ở bảng thứ hai (Orders). Nếu có một dòng nào ở bảng Employees không ứng với bất cứ dòng nào ở bảng Orders thì dòng đó cũng vẫn được tính.

kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Tove
Svendson, Stephen Table
Svendson, Stephen Chair
Pettersen, Kari
Ví dụ: RIGHT JOIN

Cú pháp:

SELECT cột_1, cột_2, cột_3
FROM bảng_1
RIGHT JOIN bảng_2
ON bảng_1.khoá_chính = bảng_2.khoá_ngoại

Liệt kê tất cả các mặt hàng được đặt và tên người đặt hàng (nếu có):

SELECT Employees.Name, Orders.Product
FROM Employees
RIGHT JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID

RIGHT JOIN trả về tất cả các dòng ở bảng thứ hai (Orders), ngay cả khi các dòng đó không ứng với dòng nào ở bảng thứ nhất (Employees). Nếu có một dòng nào ở bảng Orders không ứng với bất cứ dòng nào ở bảng Employees thì dòng đó cũng vẫn được tính.

kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair
Ví dụ: Ai đã đặt hàng máy in:

SELECT Employees.Name
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID
WHERE Orders.Product = 'Printer'

kết quả trả về:

Name
Hansen, Ola

Gửi thư trong ASP.NET use C #

Lớp used to send email to 1 or more user, có allow Đình kem tep tin to email ...

Failed to send email is 1 job normal date and write ra 1 program send thư real simple but not ai also known. Minh xin Giới Thiệu with you lớp Email this.

bằng cách sử dụng hệ thống;
bằng cách sử dụng System.Data;
sử dụng System.Configuration;
bằng cách sử dụng System.Web;
sử dụng System.Web.Security;
bằng cách sử dụng System.Web.UI;
sử dụng System.Web.UI.WebControls,
sử dụng System.Web.UI.WebControls. WebParts
sử dụng System.Web.UI.HtmlControls;
bằng cách sử dụng System.Net.Mail; EmailClass không gian tên { public class Email { công cộng chuỗi Send_Email (string SendFrom, chuỗi SendTo, chuỗi Subject, Body chuỗi) { thử { System.Text.RegularExpressions. regex regex = new System.Text.RegularExpressions.Regex (@ "\ w + ([- + '.] \ w +) * @ \ w + ([.] \ w +) * \ \ w + ([-] \ w + ) * "); bool result = Regex.IsMatch (to), nếu (kết quả == false) { trở lại "address email is not valid"; } khác { System.Net.Mail.SmtpClient smtp = new SmtpClient () System.Net.Mail.MailMessage msg = new MailMessage (SendFrom, Send To, Subject, Body); msg.IsBodyHtml = true; smtp.Host = "smtp.gmail.com" ;/ / Use SMTP of the gmail smtp.Send (msg); trở lại "Email has been sent to:" "." + SendTo +; } } catch { return ""; } } công chuỗi Send_Email_With_Attachment (: SendTo chuỗi, chuỗi SendFrom, chuỗi Subject, Body chuỗi, chuỗi AttachmentPath)
{
thử
{
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex (@ "\ w + ([- + \ w +) * @ \ w + ([-] \ w +) * \ \ w + ([-] \ w +) * ").;

chuỗi từ = SendFrom;
string = SendTo;
chuỗi chủ đề = Tiêu đề;
chuỗi cơ thể = cơ thể;

bool kết quả = Regex.IsMatch (để);

nếu (kết quả == false)
{
trở lại "address email is not valid.";
}
khác
{
thử
{
MailMessage em = new MailMessage (từ, chủ đề, cơ thể);
đính kèm đính kèm = đính kèm (AttachmentPath);

em.Attachments.Add (đính kèm);
em.Bcc.Add (từ);
System.Net.Mail.SmtpClient smtp = new SmtpClient ();
smtp.Host = "smtp.gmail.com" ;/ / For example process using SMTP of the gmail
smtp.Send (em);
return "";
}
catch (Exception ex)
{
trở lại ex.Message;
}
}
}

catch (Exception ex)
{
trở lại ex.Message;
}
}

công chuỗi Send_Email_With_BCC_Attachment (: SendTo chuỗi, chuỗi SendBCC, SendFrom chuỗi, chuỗi Subject, Body chuỗi, chuỗi AttachmentPath)
{
thử
{
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex (@ "\ w + ([- + '] \ w +) * @ \ w + ([-] \ w +) * \ \ w + ([-] \ w +) * ");....
chuỗi = SendFrom;
chuỗi = SendTo; / / Danh list email is short way nhau bởi mark ","
chuỗi chủ đề = Tiêu đề;
chuỗi cơ thể = cơ thể;
chuỗi bcc = SendBCC;

bool kết quả = true;
String [] ALL_EMAILS = to.Split (';');

foreach (string EmailAddress trong ALL_EMAILS)
{
kết quả = Regex.IsMatch (EmailAddress),
nếu (kết quả == false)
{
trở lại "address email is not valid.";
}
}

nếu (kết quả == true)
{
thử
{
MailMessage em = new MailMessage (từ, chủ đề, cơ thể);
đính kèm đính kèm = đính kèm (AttachmentPath);
em.Attachments.Add (đính kèm);
em.Bcc.Add (bcc ), System.Net.Mail.SmtpClient smtp = new SmtpClient (); smtp.Host = "smtp.gmail.com" ;/ / For example process of the use SMTP gmail smtp.Send (em); return ""; } bắt (Exception ex) { trở lại ex.Message; } } khác { return ""; } } catch (Exception ex) { trở lại ex.Message; } } } }

Kết nối Database Access bằng Dreamweaver (ASP)

Hiện nay, đa số các Website đều có kết nối đến cơ sở dữ liệu (CSDL, database) dựa trên các ngôn ngữ phía chủ (server side) như ASP, PHP, JSP…

Tạo ứng dụng Web ASP có kết nối cơ sở dữ liệu bằng Dreamweaver MX
Hiện nay, đa số các Website đều có kết nối đến cơ sở dữ liệu (CSDL, database) dựa trên các ngôn ngữ phía chủ (server side) như ASP, PHP, JSP… Điều này làm tăng khả năng tương tác giữa trang Web với người dùng, đồng thời cho phép Webmaster (người quản trị trang Web) cập nhật thông tin một cách dễ dàng. Tuy nhiên, để thiết kế những Website như thế đòi hỏi bạn phải có những kiến thức nhất định về lập trình Web và CSDL. May mắn thay, với Dreamweaver MX (DW MX), những người thiết kế Web nghiệp dư chỉ biết HTML thuần túy vẫn có thể tự tạo cho mình những Website tương tác dễ dàng thông qua các thao tác trực quan và dễ hiểu.
Bài này sẽ hướng dẫn bạn từng bước tạo một Website ASP đơn giản có tích hợp CSDL bằng DW MX. Qua đó bạn có thể áp dụng vào Website của mình để nó ngày càng chuyên nghiệp hơn.
Chuẩn bị trước khi thiết kế
Bạn phải “sắm sửa” các thứ như sau:
- Một ứng dụng Web Server (trình chủ Web) để thử nghiệm trang Web như PWS (Personel Web Server) hay IIS (Internet Information Server).
- Hệ CSDL như MS Access, SQL Server, Oracle…Ở đây, ta sẽ chọn hệ CSDL MS Access cho đơn giản.
- Cuối cùng, dĩ nhiên là DW MX.
Cấu hình hệ thống thành máy chủ
Web Trước hết, bạn cần cấu hình máy của mình thành máy chủ Web (Web server). Việc này khá đơn giản, bạn kiểm tra xem máy của mình đã cài đặt trình chủ Web hay chưa bằng cách xem trong ổ C có thư mục Inetpub không. Nếu không thấy, bạn phải cài đặt trình chủ Web tùy theo hệ điều hành (HĐH) mà mình đang dùng. Nếu giới hạn ở các HĐH Windows, ta có hai trường hợp đáng chú ý:
- HĐH cho máy chủ (Win 2K, NT Server, XP Pro): Khi cài đặt Windows, IIS sẽ được cài đặt sẵn theo mặc định như là một thành phần (component) của Windows. Nếu chưa có, bạn hãy vào Add/Remove Windows Components trong Control Panel để cài đặt thêm IIS.
- HĐH cho máy trạm (Win 98, Win NT Workstation) : Bạn có thể cài đặt PWS từ đĩa Win 98. Bạn cũng có thể tải xuống PWS từ Website của Microsoft. (Xin tham khảo thêm trong cuốn “PHP và Web tiếng Việt, dễ ợt!” do e-CHÍP ấn hành).
Trình chủ Web sẽ chuyển một thư mục trên ổ cứng của bạn thành thư mục gốc của Website, theo mặc định là thư mục C:\Inetpub\wwwroot\. Sau khi có những thứ cần thiết, bạn nên sao chép thư mục GettingStarted có sẵn trong DW MX (thư mục này nằm trong\Macromedia\DreamweaverMX\Samples\) vào thư mục làm việc của mình, chẳng hạn C:\MyWebsite.
Tạo Dreamweaver Site
Sau khi khởi động DW MX, bạn cần xác lập Dreamweaver Site, tương tự như tạo Project trong Visual Basic. Việc này giúp bạn tiết kiệm thời gian và công sức trong quá trình thiết kế. Bạn vào Site\New Site để mở cửa sổ Site Definition và chọn thẻ Advanced.
XÁC LẬP LOCAL INFO
- Site Name – Tên Site: Tương tự như Project Name trong VB6, chỉ có ý nghĩa định danh đối với người thiết kế. Bạn có thể đặt bất cứ tên gì mình thích.
- Local Root Folder – Thư mục gốc cục bộ: Đây là đường dẫn (path) của thư mục dùng để lưu trữ các trang Web của bạn trên ổ cứng. Vì ta sẽ thiết kế bằng ngôn ngữ ASP, bạn hãy chọn đường dẫn C:\MyWebsite\GettingStarted\Develop\asp\ bằng cách nhấp vào biểu tượng thư mục kế bên.
- Refresh Local File List Automatically – Làm tươi danh sách tập tin cục bộ một cách tự động: Đánh dấu vào hộp kiểm ở mục này để DW MX tự động cập nhật danh sách các tập tin khi ta thực hiện các thao tác chỉnh sửa bên ngoài DW MX.
- Default Images Folder – Thư mục chứa hình ảnh mặc định: Đây là đường dẫn của thư mục chứa các tập tin hình ảnh mà ta sẽ chèn (insert) vào trang Web. Sau này, nếu bạn chèn một hình ảnh nào đó vào trang Web thì DW MX sẽ tự động sao chép hình ảnh đó vào thư mục này. Bạn hãy chọn đường dẫn C:\MyWebsite\GettingStarted\Develop \asp\Assets\images\.
XÁC LẬP REMOTE INFO
- Access – Truy nhập: Chọn phương thức truy nhập để DW MX truy nhập đến thư mục chứa Website của bạn trên máy chủ Web. Ở đây ta sẽ chọn Local/Network vì máy chủ Web chính là máy của bạn.
- Remote Folder – Thư mục xa: Đây là đường dẫn của thư mục trên máy chủ Web mà ta sẽ tải Website của mình lên. Đường dẫn mặc định của thư mục này là C:\Inetpub\wwwroot\..
- Refresh Remote File List Automatically – Làm tươi danh sách tập tin từ xa một cách tự động: Chức năng này tương tự như Refresh Local File List Automatically nhưng thực hiện trên Remote Folder.
- Automatically upload files to server on save – Tự động tải tập tin lên máy chủ khi lưu: Khi bạn lưu trang Web, DW MX sẽ tự động đưa tập tin ấy vào Remote Folder.
XÁC LẬP TESTING SERVER
- Server Model – Loại trình chủ: Xác định loại ngôn ngữ (công nghệ) phía chủ mà DW MX tự động triển khai khi thiết kế. Bạn sẽ thực hiện phần lớn công việc thông qua các thao tác trực quan, còn DW MX sẽ viết mã (operate code) hộ bạn. Ở đây ta sẽ chọn ngôn ngữ phía chủ là ASP và ký mã (script) là VBScript.
Ở phần này, bạn nên chú ý mục URL Prefix – Tiền tố URL. Theo mặc định đó là http://localhost/mywebsite/. Khi xem thử Website của mình bằng trình duyệt, bạn phải nhập đường dẫn nêu trên vào ô địa chỉ của trình duyệt. Xác lập xong, bạn nhấn OK để hoàn tất.
Kết nối trang Web với cơ sở dữ liệu
Ta hãy thử dùng một CSDL mẫu của DW MX mang tên GlobalCar (CSDL về các dịch vụ cho thuê ô-tô). Sau này, để kết nối với CSDL khác, bạn nhấn nút Define và chọn CSDL cần thiết.
Cụ thể, bạn nhấn vào tiêu đề cửa sổ Application để mở rộng cửa sổ ấy rồi thực hiện các bước sau:
Nhấn vào nút cộng (+), chọn Data Source Name (DSN) từ trình đơn để mở cửa sổ Data Source Name (DSN).
Nhập Connection Name là myConn.
Chọn CSDL GlobalCar trong danh sách Data Source Name (DSN).
Chọn Using Local DSN ở mục Dreamweaver Should Connect.
Nhấn nút OK để hoàn tất.
Kể từ đây, bạn có thể lấy dữ liệu từ CSDL GlobalCar để đưa vào trang Web của mình. Để làm quen, ta thử dùng một trang ASP có sẵn, ràng buộc nó với CSDL GlobalCar. Bạn thực hiện các bước như sau:
Bấm kép vào tập tin locationMaster.asp trong cửa sổ Files để mở tập tin này. Giao diện của trang ASP này đã được thiết kế sẵn, ta chỉ việc hiển thị các dòng dữ liệu của CSDL GlobalCar mà thôi.
Chọn thẻ Binding trong cửa sổ Application. Sau đó nhấn vào nút cộng (+) và chọn Recordset (Query) để mở cửa sổ Recordset. Hiểu nôm na thì record set là tập hợp các cột trong bảng nào đó của CSDL. Tập hợp các cột này có thể trích từ nhiều bảng (Table hoặc Query/View) khác nhau.
Đặt tên (Name) cho Recordset là rsLocation.
Chọn myConn ở mục Connection.
Chọn thử bảng Locations ở mục Table.
Ở mục Columns, ta để chế độ hiển thị mặc định là All để hiển thị tất cả các cột trong bảng Locations. Tuy nhiên, bạn cũng có thể hiển thị các cột có chọn lọc bằng cách chuyển sang chế độ Selected và chọn những cột mà mình muốn (ấn giữ phím Shift hoặc Ctrl khi nhấn).
Nhấn OK để hoàn tất.
Nhấn vào dấu + phía trước Recordset(rsLocations) để “xổ” các nhánh con của nó. Mỗi nhánh chính là một cột trong bảng Locations.
Tạo bảng để chứa dữ liệu trên trang Web bằng cách chọn Insert\Table trên thanh trình đơn, nhập Row: 1, Columns: 1 rồi nhấn OK.
Kéo và thả nhánh CODE từ thẻ Bindings vào bảng mà bạn vừa tạo ra để hiển thị dữ liệu của cột CODE trong bảng đó.
Tùy biến cách hiển thị dữ liệu
Đến đây, ta chỉ hiển thị được dòng đầu tiên trong cột CODE. Nếu muốn hiển thị toàn bộ cột CODE, bạn phải dùng vòng lặp hiển thị từng dòng trong cột. Bạn làm như sau:
Nhấn vào thẻ (nơi có các thẻ
) trong thanh trạng thái dưới cửa sổ thiết kế rồi chọn Insert\Application Objects\Repeated Region trên thanh trình đơn để mở cửa sổ Repeat Region.
Theo mặc định, Repeat Region hiển thị mỗi lần 10 dòng (Show 10 Records at a Time). Nếu bạn muốn hiển thị toàn bộ cột thì chọn Show All Records.
Nhấn OK để hoàn tất.
Tiếp theo, bạn cần thêm vào một thanh điều hướng dữ liệu (Navigation Bar) để hiển thị các dòng kế tiếp trong cột. Bạn di chuyển con trỏ xuống vị trí phía dưới bảng rồi chọn Insert\Application Objects\Recordset Navigation Bar trên thanh trình đơn để mở cửa sổ Recordset Navigation Bar. Bạn có thể giữ nguyên lựa chọn mặc định, nhấn luôn OK để chèn ngay thanh điều hướng vào trang. Bạn có thể chuyển các chuỗi “First”, “Previous”, “Next”, “Last” sang tiếng Việt, thành “Đầu – Trước – Sau – Cuối”.
Thế là xong! Ta đã có một trang Web có khả năng hiển thị thông tin một cách linh hoạt từ CSDL đã chọn. Bạn hãy nhấn F12 để xem nó chạy như thế nào trên trình duyệt. Bạn thấy đó, nhờ thanh điều hướng dữ liệu, người dùng có thể duyệt qua dữ liệu trong cột CODE của CSDL GlobalCar.

Làm phòng chat với ASP

Khi bạn truy xuất đến trang web, ví dụ http://www.vietchat.com/, thì trình duyệt web sẽ tải về đoạn mã java và chạy tại máy của bạn. Chương trình java này sẽ tạo một kết nối bằng đường socket của TCP/IP đến máy chủ. Kết nối này được xác lập và định vị bằng địa chỉ IP máy chủ, địa chỉ IP máy trạm, và cổng (port) cố định nào đó. Kết nối này là kết nối 2 chiều, nghĩa là dữ liệu sẽ được chuyển từ máy chủ về máy trạm và ngược lại. Khi nào bạn còn hiện diện trong phòng chat thì kết nối này còn duy trì. Chương trình java trên máy của bạn sẽ truyền nội dung chat đến máy chủ và từ máy chủ về máy bạn qua kết nối này. Loại phòng chat này chạy rất nhanh và có nhiều chức năng vì đây là những kết nối liên tục (không bị đứt quãng giữa chừng). Tuy nhiên nhược điểm là không dùng được cho người dùng internet ở bên trong 1 bức tường lửa (firewall) hay proxy server, vì firewall sẽ giới hạn người dùng chỉ được sử dụng 1 số cổng nhất định nào mà thôi. Firewall Việt Nam chỉ cho sử dụng một số cổng chuẩn (phổ biến) là cổng 80 (dùng cho HTTP), cổng 21 (dùng cho FTP)…Nếu chương trình sử dụng một cổng nằm ngoài danh sách cho phép của firewall VN thì coi như là bị khóa.
Để tránh nhược điểm này, người ta nghĩ ra cách làm phòng chat bằng HTML thuần tuý. Nguyên tắc như sau:

Trên máy trạm bạn sẽ truy xuất 1 trang web có ít nhất 2 frame, một trong 2 frame đó sẽ có form cho phép bạn nhập dữ liệu.
Dữ liệu bạn nhập vào được chuyển về máy chủ và ghi xuống một biến ở cấp application (biến ở cấp application là biến mà mọi người đang kết nối với máy chủ đều truy xuất được).
Frame thứ hai sẽ lấy thông tin chat từ máy chủ qua biến cấp application này. Do nội dung chat luôn luôn thay đổi nên frame thứ hai sẽ được đặt ở chế độ làm tươi liên tục. Nếu bạn đặt thời gian làm tươi là 5 giây thì cứ sau mỗi 5 giây, bạn mới thấy được những câu chat mới được gửi từ những người khác trong phòng chat.
Tuy nhiên chương trình chat kiểu này có nhược điểm: cách truyền dữ liệu theo kiểu trang web (nghi thức HTTP) là đường truyền 1 chiều, nghĩa là chỉ có máy trạm là chủ động ra yêu cầu cần dữ liệu, máy chủ nhận được yêu cầu thì trả lời, không có trường hợp ngược lại là máy chủ yêu cầu dữ liệu từ máy trạm. Chính lý do này ta cần phải làm tươi (refresh) nội dung của trang web trên máy trạm.

Thực hiện:

Cấu trúc trang web
Trong bài viết này, chúng tôi sẽ hướng dẫn cách làm 1 phòng chat bằng ngôn ngữ ASP. Cửa sổ chat gồm có 3 phần: 2 phần như đã nói trên, đó là phần nội dung chat và phần nhập liệu. Phần thứ ba là hiển thị danh sách những người đang có mặt trong phòng chat.

Do cửa sổ chat có 3 phần nên ta cần 3 frame như sau:



ASP CHATROOM









Sorry, your browser does not support frames.



Bạn lưu đoạn mã trên vào file frames.html, đây là phần khung chính của toàn bộ chatroom. Trong đó frame thứ nhất tên là users sẽ chứa danh sách users, frame này sẽ gọi file users.asp trên server. Frame này sẽ làm tươi sau mỗi 25 giây nên cần có đoạn mã làm tươi như sau:









Frame thứ hai là nội dung chat, tên frame là chat và chỉ đến file chat.asp trên server được làm tươi sau mỗi 10 giây. Bạn đánh đoạn code sau đây và lưu thành file có tên chat.asp:









Frame cuối là để nhập dữ liệu tên là input sẽ gọi file input.asp trên server mỗi khi user nhập dữ liệu và nhấn phím enter. Vì cần phải nhập dữ liệu bằng form, nên file input.asp sẽ có chứa form như sau:












Đến đây bạn đã có tất cả 4 files: frames.html, users.asp, chat.asp, và input.asp. Bây giờ xin mời bạn xem tiếp cách tổ chức dữ liệu trên máy chủ.

Tổ chức dữ liệu
Danh sách users và nội dung chat sẽ được chứa trong array. Giả sử ta chỉ cần giữ lại 20 câu chat sau cùng, ta cần array 20 phần tử. Và để đơn giản, ta giới hạn số người chat nhiều nhất là 10 người ==> cần array 10 phần tử. Cả hai biến này đều ở cấp application vì mọi users đều truy xuất được. Ta đặt tên 2 biến này là Application(“content”) và Application(“users”). Do nội dung chat là 1 array được dùng xoay vòng, ta cần 1 biến Application(“pointer”) để chỉ phần tử nào là mới nhất trong array. Tuy nhiên, cần thêm 1 biến đếm số users đang hiện diện trong phòng chat, biến này kiểu integer: Application(“count”). Để truy xuất phần tử thứ n trong array Application(“content”) ta dùng cú pháp: Application(“content” & n).

Để tiện cho việc lập trình, mỗi user cần lưu trữ 1 biến cấp session chứa tên đăng ký lúc vào phòng chat: Session(“nick”).

Các biến cấp application và cấp session sẽ được khởi tạo trong global.asa như sau:



Sub Application_OnStart

Application(“CHATSIZE”) = 20
Application(“MAXUSER”) = 10

u_array = ARRAY(“”, “”, “”, “”, “”, “”, “”, “”, “”, “”)
REDIM u_array(Application(“MAXUSER”))
Application(“users”) = u_array

c_array = ARRAY(“”, “”, “”, “”, “”, “”, “”, “”, “”, “”)
REDIM c_array(Application(“CHATSIZE”))
Application(“content”) = c_array

Application(“count”) = 0
Application(“pointer”) = 0

End Sub

Sub Application_OnEnd

End Sub

Sub Session_OnStart

Session.TimeOut = 10
Session(“nick”) = “”

End Sub

Sub Session_OnEnd

End Sub



Lập trình cho máy chủ
Lập trình cho máy chủ gồm những phần nhỏ sau đây: thêm 1 câu chat mới vào nội dung, hiển thị nội dung của phòng chat, và hiển thị danh sách các user đang ở trong phòng chat.

1. Thêm câu chat mới:

<%

dim msg
dim current_pointer

msg = Request(“input_text”)

‘không cho phép dùng html trong phần nội dung chat
msg = Server.HTMLencode(msg)

‘thay thế các hình cười và khóc
msg = REPLACE(msg, “:)”, “”)
msg = REPLACE(msg, “:(“, “”)

‘nối thêm tên của người gửi vào
msg = “” & Session(“nick”) & “: ” & msg

‘Lưu câu chat mới vào array
Application.lock
current_pointer = Application(“pointer”)
Application(“content” & current_pointer) = msg
Application(“pointer”) = (current_pointer + 1) MOD Application(“CHATSIZE”)
Application.unlock

%>

Bạn nối phần mã này vào file input.asp. Lưu ý: biến pointer sẽ tăng lên 1 để chỉ phần tử kế tiếp trong array content, nhưng khi đến phần tử cuối cùng thì phải quay về phần tử đầu tiên là 0, vì trong đoạn code trên có phần modify cho CHATSIZE.

2. Hiển thị nội dung chat

Vì array content được dùng xoay vòng, nội dung chat sẽ được hiển thị từ phần tử pointer đến phần tử cuối trong array, sau đó từ phần tử 0 đến phần tử trước pointer (nếu pointer > 0).

<%

for i = Application(“pointer”) to Application(“CHATSIZE”) – 1
if Application(“content” & i) “” then
Response.write Application(“content” & i) & “

end if
next

if Application(“pointer”) > 0 then
for i = 0 to Application(“pointer”) – 1
if Application(“content” & i) “” then
Response.write Application(“content” & i) & “

end if
next
end if

%>

Bạn nối đoạn mã này vào phần BODY của file chat.asp. Lưu ý: sau mỗi câu chat cần phải xuống hàng mới do đó trong đoạn mã trên, ta nối thêm kí tự xuống dòng “
” cho mỗi câu chat.

3. Hiển thị danh sách users:

<%

Response.write “

Co ” & Application(“count”) & ” nguoi trong phong chat



for i = 0 to Application(“count”) – 1
if Application(“users” & i) “” then
if Session(“nick”) = Application(“users” & i) then
Response.write “<” & Application(“users” & i) & “>

else
Response.write Application(“users” & i) & “

end if
end if
next

%>

Bạn chép đoạn mã này vào phần thân (body) của file users.asp. Lưu ý: tên của bạn sẽ được in nằm giữa hai dấu .

4. Logon và logoff:

Bây giờ đến phần khá quan trọng là logon và logoff. Khi người dùng vào phòng chat của bạn, trước họ sẽ được nhắc nhập vào tên “nickname” và khi người sử dụng rời khỏi phòng chat họ sẽ quay về trang web này. Ta cần phải có form để người dùng nhập nickname như sau:



ASP CHATROOM


Chao mung cac ban den voi ASP Chatroom


Moi ban nhap vao ten se dung trong luc chat (chi su dung chu, so va cac ki tu -, _)









Bạn lưu nội dung trên đây vào file index.asp, sau đó thêm đoạn mã bên dưới vào phần đầu của file để thêm người mới vào danh sách users khi logon:

<%

dim error
dim nick
dim numuser
dim current_pointer
dim error_msg(2)

nick = Request(“nickname”)

error_msg(0) = “—– ” & nick & “ vua vao chatroom —–”
error_msg(1) = “

—– Phong chat het cho, xin moi quay lai sau —–


error_msg(2) = “

—– Ten nay da co nguoi su dung, xin chon ten khac —–



‘chỉ thi hành đoạn mã này nếu user truy xuất trang này bằng nhấn nút submit trong form logon_form
if Request(“submit”) “” then
Application.lock
error = 0
numuser = Application(“count”)
if numuser >= Application(“MAXUSER”) then
error = 1 ‘chatroom đã đầy
else
if numuser > 0 then
for i = 0 to numuser – 1
if nick = Application(“users” & i) then
error = 2 ‘tên này đã có người dùng
exit for
end if
next
end if
end if

if error = 0 then
Application(“users” & numuser) = nick
Application(“count”) = numuser + 1
Session(“nick”) = nick

‘thêm câu chúc mừng user mới vào nội dung của chatroom
current_pointer = Application(“pointer”)
Application(“content” & current_pointer) = error_msg(0)
Application(“pointer”) = (current_pointer + 1) MOD Application(“CHATSIZE”)
Application.unlock

‘Chuyển user sang trang web có frame để chat
Response.Redirect “frames.html”
Response.End
else
Response.write error_msg(error)
Application.unlock
end if
end if

%>

Khi user ra khỏi phòng chat thì ta cần gọi file logoff để xóa tên user khỏi danh sách các user. Hơn nữa, ta cũng cần câu thông báo cho mọi người biết rằng user đó đã logoff. Lưu đoạn mã dưới đây vào file logoff.asp

<%

dim numuser
dim current_pointer

Application.lock
numuser = Application(“count”)

‘tìm vị trí của user này trong array chứa danh sách user
for i = 0 to numuser – 1
if Session(“nick”) = Application(“users” & i) then
index = i
exit for
end if
next

‘sau khi xóa user này xong, cần phải dồn array lại nếu đây không phải là user cuối cùng
if index < numuser – 1 then
for i = index to numuser – 2
Application(“users” & i) = Application(“users” & i + 1)
next
end if

‘thêm câu thông báo user mới vừa rời phòng chat
current_pointer = Application(“pointer”)
Application(“content” & current_pointer) = “—– ” & Session(“nick”) & “ vua roi chatroom —–”
Application(“pointer”) = (current_pointer + 1) MOD Application(“CHATSIZE”)

Application(“users” & numuser) = “”
Session(“nick”) = “”
Application(“count”) = numuser – 1
Application.unlock

Response.Redirect “index.asp”
Response.End

%>

Ta có thể đặt thêm nút nhấn trong file input.asp để user logoff như sau:













Tuy nhiên, nếu user không nhấn vào nút logoff mà đóng cửa sổ trình duyệt web lại thì sao? Để tránh trường hợp này, ta thêm đoạn mã javascript sau vào file frames.html:



ASP CHATROOM









Sorry, your browser does not support frames.



Đến đây, bạn có thể gộp các files trên lại và bỏ chung 1 vào thư mục nào đó và tạo 1 virtual folder trong IIS là có thể chạy được cái chatroom này rồi. Nhớ tạo ra 2 cái hình cười và mếu, bỏ vào thư mục con images!

Tạo một CSDL trong SQL (SQL p16)

Tạo một CSDL

CREATE DATABASE tên_CSDL

Tạo một bảng trong một CSDL

CREATE TABLE tên_bảng
(
tên_cột_1 kiểu_dữ_liệu,
tên_cột_2 kiểu_dữ_liệu,
.......
)

Ví dụ

Tạo một bảng tên Person có bốn cột: LastName, FirstName, Address và Age:

CREATE TABLE Person
(
LastName varchar,
FirstName varchar,
Address varchar,
Age int
)

Tạo bảng và đặt kích thước tối đa của các cột:

CREATE TABLE Person
(
LastName varchar(30),
FirstName varchar,
Address varchar,
Age int(3)
)

Kiểu dữ liệu sẽ qui định loại dữ liệu nào được phép lưu trữ trong cột. Sau đây là các kiểu dữ liệu thường dùng nhất trong SQL:

integer(n)
int(n)
smallint(n)
tinyint(n) Chỉ lưu trữ dữ liệu là số nguyên. Số lượng tối đa các chữ số được qui định bởi n.
decimal(n,d)
numeric(n,d) Lưu trữ số thập nhân. Số lượng tối đa các chữ số được qui định bởi n. Số lượng tối đa các chữ số sau dấu phảy thập phân được qui định bởi d.
char(n) Lưu trữ n ký tự.
varchar(n) Lưu trữ tối đa n ký tự.
date(yyyymmdd) Lưu trữ ngày tháng (dạng năm-tháng-ngày)

Tạo chỉ mục

Chỉ mục được tạo ra nhằm để các dòng trong bảng được truy xuất nhanh và hiệu quả hơn. Chỉ mục có thể được tạo trên một hoặc nhiều cột của bảng, và mỗi chỉ mục được đặt một tên. Người dùng không thấy được các chỉ mục này, chúng chỉ được dùng để tăng tốc cho CSDL.

Lưu ý: Sau khi bảng đã được tạo chỉ mục thì việc cập nhật thay thêm dòng mới vào bảng sẽ mất nhiều thời gian hơn là đối với bảng không có chỉ mục. Lý do là vì khi cập nhật bảng, các chỉ mục đồng thời cũng phải được cập nhật theo. Vì thế, ta chỉ nên tạo chỉ mục cho các cột thường xuyên dùng trong các tác vụ tìm kiếm.

Chỉ mục đơn nhất (Unique Index)

Chỉ mục đơn nhất sẽ bắt buộc hai dòng bất kỳ của bảng sẽ không được phép mang cùng giá trị ở cột được tạo chỉ mục.

Cú pháp:

CREATE UNIQUE INDEX tên_chỉ_mục
ON tên_bảng (tên_cột)

Chỉ mục đơn (Simple Index)

Khi không dùng từ khoá UNIQUE trong câu lệnh tạo chỉ mục, các giá trị trùng nhau trong cột sẽ được phép.

Cú pháp:

CREATE INDEX tên_chỉ_mục
ON tên_bảng (tên_cột)

Ví dụ

Tạo một chỉ mục đơn có tên là PersonIndex trên cột LastName của bảng Person:

CREATE INDEX PersonIndex
ON Person (LastName)

Nếu bạn muốn tạo chỉ mục sắp xếp giảm dần, bạn sử dụng thêm từ dành riêng DESC:

CREATE INDEX PersonIndex
ON Person (LastName DESC)

Nếu bạn muốn tạo chỉ mục trên nhiều cột:

CREATE INDEX PersonIndex
ON Person (LastName, Firstname)

Xoá chỉ mục

Bạn có thể xoá chỉ mục đã tạo bằng lệnh DROP.

DROP INDEX tên_bảng.tên_chỉ_mục

Xoá CSDL hoặc bảng

Thay đổi cấu trúc bảng trong SQL (SQL p17)

Thay đổi cấu trúc bảng.

Câu lệnh ALTER TABLE được sử dụng để thêm hoặc xoá cột trong một bảng.
ALTER TABLE tên_bảng
ADD tên_cột kiểu_dữ_liệu

ALTER TABLE tên_bảng
DROP COLUMN tên_cột

Lưu ý: Một số hệ CSDL không cho phép việc xoá bỏ cột trong bảng.

Ví dụ: ta có bảng Person như sau:

LastName FirstName Address
Pettersen Kari Storgt 20
Thêm một cột tên là City vào bảng Person:

ALTER TABLE Person ADD City varchar(30)

kết quả:

LastName FirstName Address City
Pettersen Kari Storgt 20
Xoá cột Address:

ALTER TABLE Person DROP COLUMN Address

kết quả:

LastName FirstName City
Pettersen Kari

Tạo database với phpmyadmin

Đầu tiên vào cpanel.
Sau đó bấm vào MySQL database hoặc tương tự như thế.
Vào giao diện của MySQL có 3 phần chính:
1)Create MySQL database
Tạo database: tuy bạn có ý tạo db tên là betobe nhưng khi thành nó sẽ là freecode_betobe
Điều này giải thích là nó lấy username_của_mình_trên_host_lam_tiền_tố
2)Create MySQL user
Tạo username cũng tương tự, ví dụ khi tạo là vnit thì user ra là freecode_vnit
Password: nhớ kỹ pass cũa user, password thì ko kèm tiền tố :D
3)Grant permissions on a MySQL database to a MySQL user
Tức là gán quyền cho user vào db. Sau khi bạn tạo user và db xong thì nó sẽ đựoc hiện trong 2 combo box: username và database (có bao nhiêu user và db thì hiện ra hết)
Bạn chọn một_user_nào_đó và gán quyền cho database_nào_đó và quyền_nào_đó :D
Nếu bạn chưa hiểu thì xem cái hình kèm theo, ở đây là user ninhthua_online được gán toàn quyền(ALL) cho db tên ninhthua_nuke. Sau đó bấm nút Grant Permission thôi.
Nếu sau này bạn tạo nhiều user và db quá mà ko biết user nào được gán cho db nào với quyền nào thì có thể xem đoạn code này thi vào MySQL:

ninhthua_online (Privileges: ALL PRIVILEGES)

Connection Strings
Perl $dbh = DBI->connect(“DBI:mysql:ninhthua_nuke:localhost”,”ninhthua_online”,””);
PHP $dbh=mysql_connect (“localhost”, “ninhthua_online”, “”) or die (‘I cannot connect to the database because: ‘ . mysql_error());
mysql_select_db (“ninhthua_nuke”);

Trên localhost:
phpMyAdmin là một ứng dụng quản trị cơ sở dữ liệu rất phổ biến hiện nay. Để có thể quản trị các cơ sở dữ liệu của mình bạn cần đăng nhập bằng Username và Password đã tạo ra ở bước setup hệ thống. Mặc định Username đăng nhập ở localhost sẽ là root


Sau khi đăng nhập bạn có thể sử dụng phần mềm quản trị cơ sở dữ liệu phpMyAdmin. Phía bên trái hình mô tả bên dưới là danh sách các database hiện bạn đang có (đã tạo). Để thao tác với database nào bạn chọn nó từ danh sách này. Phía bên phải là khung tạo database mới – đây là cái chúng ta sẽ sử dụng để tạo database cho các ứng dụng sắp cài đặt.

Công việc rất đơn giản: chỉ cần gõ tên database muốn tạo và nhấn Create là xong



Sau khi tạo dựng Database xong bạn sẽ thấy database này của mình trong danh sách các database ở mục trái. Tuy nhiên hiện nay chưa có table nào cả vì chúng ta chưa tạo cài dặt source code đi kèm với nó.



Tới đây công việc tạo database đã xong để bạn có thể chép source code của bạn vào thư mục www\ và tiến hành cài đặt với database này được rồi.

Note: nhắc lại một lần nữa là đây là cách tạo database trên localhost. Về căn bản tạo database trên hosting thật sự không giống như vậy mặc dù nó cũng sử dụng phpMyAdmin. Tạo database trên hosting phụ thuộc vào hosting bạn sử dụng và cơ chế phân quyền riêng.

SharePoint 2010 Site Directory Template

One of the favorite templates of SharePoint 2007 was the Site Directory. It allows users to tag their sites and make them searchable by their tags. A great template for your intranet. However, in SharePoint 2010 the Site Directory was not upgraded and is therefore not available when you try to create a site in the GUI.

Microsoft Consulting Services UK released a CodePlex version of the Site Directory which can be downloaded at http://spsitedirectory2010.codeplex.com/

SQL Server Service Accounts

Working on SharePoint 2010 installations requires many different supporting technologies, such as the .NET framework and SQL Server. And each of these technologies has its own setup requirements. Take SQL Server for example, in SQL Server each service represents a process or a set of processes to manage authentication of SQL Server operations with Windows. There is a default configuration of services in SQL Server 2008 , and configuration options for SQL Server services that you can set during SQL Server installation. If you do not configure SQL Server properly, you have no chance of getting SharePoint Server installed or working properly. So, here’s a great link to help configure SQL Server service accounts. I’ve also provided the information here, just in case, by some slim chance, the link moved and I am unable to locate the information.

Setting Up Windows Service Accounts
Each service in SQL Server represents a process or a set of processes to manage authentication of SQL Server operations with Windows. This topic describes the default configuration of services in this release of SQL Server, and configuration options for SQL Server services that you can set during SQL Server installation.

Depending on the components that you decide to install, SQL Server Setup installs the following services:

SQL Server Database Services – The service for the SQL Server relational Database Engine.
SQL Server Agent – Executes jobs, monitors SQL Server, fires alerts, and enables automation of some administrative tasks.
Note
For SQL Server and SQL Server Agent to run as services in Windows, SQL Server and SQL Server Agent must be assigned a Windows user account. For more information about how to customize account information for each service, see How to: Install SQL Server 2008 R2 (Setup).
Analysis Services – Provides online analytical processing (OLAP) and data mining functionality for business intelligence applications.
Reporting Services – Manages, executes, creates, schedules, and delivers reports.
Integration Services – Provides management support for Integration Services package storage and execution.
SQL Server Browser – The name resolution service that provides SQL Server connection information for client computers.
Full-text search – Quickly creates full-text indexes on content and properties of structured and semistructured data to provide document filtering and word-breaking for SQL Server.
SQL Server Active Directory Helper – Publishes and manages SQL Server services in Active Directory.
SQL Writer – Allows backup and restore applications to operate in the Volume Shadow Copy Service (VSS) framework.
Important
Always use SQL Server tools such as SQL Server Configuration Manager to change the account used by the SQL Server or SQL Server Agent services, or to change the password for the account. In addition to changing the account name, SQL Server Configuration Manager performs additional configuration such as setting permissions in the Windows Registry so that the new account can read the SQL Server settings. Other tools such as the Windows Services Control Manager can change the account name but do not change associated settings. If the service cannot access the SQL Server portion of the registry, the service may not start properly.
Important
For Analysis Services instances that you deploy in a SharePoint farm, always use SharePoint Central Administration to change the server accounts for PowerPivot service applications and the Analysis Services service. Associated settings and permissions are updated to use the new account information when you use Central Administration.
The remainder of this topic is divided into the following sections:

Thursday, July 19, 2012

Weekly News 16/7-22/7

-(Inquirer 18/7) Chinese newspaper slams PH, Vietnam for running to US for help: One of China’s top newspapers has assailed the Philippines and Vietnam for their alleged “attempt to grab islands and waters; (Atimes 18/7) Sea of trouble for ASEAN
-(Abs-cbnnews 17/7) China forming Spratlys government: China has started forming the backbone of a local government that will rule over the disputed Spratly Islands in the South China Sea; (Thediplomat 17/7) America’s ‘Rebalance’ Finds its Footing
-(Thenational 17/7) Beijing plays divide and conquer to win in South China Sea: Absent a diplomatic solution, China can only expect confrontations with the Philippines and Vietnam over fishing and natural resource exploration to continue and escalate; (Abs-cbnnews 17/7)Philippines warns China fishermen to stay away
-(FP 16/7) South China Sea issue divides Asean: For an organisation that chose “One Community, One Destiny” as the banner for its latest summit, Asean could not have imagined a more embarrassing outcome; (Nbr 16/7) ASEAN and the South China Sea: Deepening Divisions
-(Channelnewsasia 16/7) US Pacific chief affirms commitment to Philippines: The head of US forces in the Pacific reaffirmed American commitment to support the Philippines Monday, amid the country's continuing territorial dispute with China; (Xinhua 16/7) China manned sub may dive in South China Sea 2013
-(Eurasiareview 16/7) South China Sea Dispute Rocks ASEAN: In one of the most embarrassing moments in its four-decade history, ASEAN ended its annual talks in Cambodia this week without issuing its traditional joint statement; (Radioaustralia 16/7) South China Sea negotiations damage ASEAN's reputation
-(Globalresearch 16/7) ASEAN summit breaks up amid feuding over South China Sea: The lack of agreement at this week’s ASEAN summit is just the latest indication that the Obama administration’s strategy is recklessly inflaming regional tensions and thus the danger of military conflict; (Nationmultimedia 16/7) Key players holding Asean hostage!
-(Inquirer 15/7) Taiwan mulls extending runway in Spratlys – report: If approved, the project would extend by 500 meters (1,640 feet) the runway on Taiping Island, (Lowyinterpreter 16/7) Hope aground in South China Sea
-(Hindustantimes 15/7) Vietnam prefers Indian presence in South China Sea: Vietnam has decided to extend the contract for exploration of hydrocarbons in a crucial oil block in the region to ONGC Videsh Ltd; (Reuters 15/7 ) China frigate heads home, averts South China Sea standoff

Tình hình biển Đông căng thẳng hơn trong năm 2012

Thứ ba, 03 Tháng 7 2012
Những diễn biến mới như căng thẳng giữa Philippines và Trung Quốc xung quanh bãi cạn Scarborough và CNOOC mời thầu tại thềm lục địa Việt Nam là những đề tài được đề cập đến nhiều trong Hội thảo Biển Đông tại Washington DC. Phỏng vấn của RFA với Giám đốc Học viện Ngoại giao Đặng Đình Quý bên lề hội thảo.



Bản đồ chỉ rõ 9 lô dầu khí mà Tổng Công ty Dầu khí Hải Dương Trung Quốc mở thầu quốc tế hoàn toàn nằm trong vùng đặc quyền kinh tế 200 hải lý và thềm lục địa của Việt Nam (nguồn PVN).

Những diễn biến mới này cũng là đề tài được các học giả Việt Nam và Philippines đề cập đến rất nhiều trong cuộc hội thảo về an ninh biển Đông do Trung tâm chiến lược và nghiên cứu quốc tế tổ chức từ ngày 27 đến 28 tháng 6 vừa qua tại Washington DC.

Phóng viên Việt Hà có cuộc phỏng vấn ngắn với tiến sĩ Đặng Đình Quý, Giám đốc học viện ngoại giao quốc gia Việt Nam bên lề cuộc hội thảo.

Dần dần từng bước

Tàu chiến Haijian (Hải Giám) hiện đại của Trung Quốc tuần tiểu ngày đêm trên các khu vực tranh chấp ở Biển Đông. Nguồn báo TQ/peopledaily.cn.
Việt Hà: Thưa ông, xin ông cho biết là với những diễn biến gần đây trên biển Đông, nhất là việc Trung Quốc mời các công ty đấu thầu khai thác dầu khí thuộc vùng chủ quyền của Việt Nam, theo ông so sánh thì tình hình biển Đông năm nay so với năm ngoái thế nào?
TS. Đặng Đình Quý: Nó căng thẳng hơn vì nó nhiều hoạt động trên thực tế và những hoạt động đó nghiêm trọng hơn trước. Những năm trước thì còn ở mức độ thế nọ, mức độ thế kia, nhưng năm nay các hành động đó là tiến thêm một bước nữa trong việc khẳng định chủ quyền trên thực tế, trong tất cả các khu vực thuộc đường lưỡi bò. Đây là chiến lược mà Trung Quốc làm dần dần từng bước và liên tục như vậy theo hướng là dần dần đẩy tất cả mọi người ra khỏi đường lưỡi bò và chỉ còn một mình ở đấy duy nhất. Đó là hiện thực hóa yêu sách của họ. Điều đó hết sức nguy hiểm, nó tạo thành tiền lệ mà như thượng nghị sĩ Lieberman vừa nói là một hành động rất khiêu khích và nguy hiểm không chỉ đối với Việt Nam mà còn đối với tất cả các nước trong khu vực.

Biển Đông quan trọng với cả thế giới

Việt Hà: Trước hành động đó của Trung Quốc thì ngoài việc Việt Nam lên tiếng phản đối ra thì theo ông các nước như Việt Nam và Philippines là những nước bị ảnh hưởng nặng nề nhất bởi các hành động của Trung Quốc cần phải làm gì?

TS. Đặng Đình Quý: Tôi nghĩ là tất cả các nước trong khu vực Đông Nam Á, các nước liên quan trực tiếp là 5 nước 6 bên và tất cả các nước ở khu vực Đông Nam Á đều phải có những hành động lên tiếng trước các hành động như vậy. Ngoài những nước ở Đông Nam Á ra thì những nước sử dụng biển Đông như Mỹ, Nhật, Hàn, Úc, Ấn Độ cũng phải nên có thái độ rõ ràng với việc này.

Vì nếu chúng ta không có hành động rõ ràng thì các hành động tiếp theo sẽ tiếp tục leo thang và nó dẫn đến những hậu quả không lường trước được. Bởi vì Đông Nam Á hay là biển Đông không chỉ quan trọng với các nước liên quan mà còn quan trọng với tất cả các nước trên thế giới.



Việt Hà: Trong cuộc hội thảo ngày hôm nay, một số các chuyên gia cho rằng ASEAN có sự chia rẽ trong việc nói chuyện, bàn thảo với Trung Quốc về vấn đề biển Đông, theo ông thì Việt Nam và Philippines là những nước lên tiếng mạnh mẽ nhất về các hành động của Trung Quốc cần phải làm gì để đưa ASEAN lại gần lại với nhau?

TS. Đặng Đình Quý: Tôi không hoàn toàn nhất trí về chuyện ASEAN bị chia rẽ bởi vì trong vấn đề biển Đông thì các nước ASEAN có mức độ lợi ích khác nhau. Những nước có lợi ích liên quan trực tiếp như Philippines, Việt Nam, tiếp sau đó là Malaysia hay Brunei, tiếp theo nữa là Singapore hay Indonesia thì tất cả các nước đều có lợi ích cả nhưng mức độ không hoàn toàn như nhau. Vì lợi ích khác nhau nên quan điểm có lúc không đồng nhất, nhưng ASEAN thống nhất trong lập trường chung là duy trì hòa bình ổn định trên biển Đông và thống nhất giải quyết vấn đề qua hòa bình trên cơ sở luật pháp quốc tế là UNCLOS và DOC.

Bởi vì Đông Nam Á hay là biển Đông không chỉ quan trọng với các nước liên quan mà còn quan trọng với tất cả các nước trên thế giới.

TS. Đặng Đình Quý

Cái đó là thống nhất. còn Việt Nam, Philippines, Indonesia và các nước khác luôn hướng tới các việc tăng cường đoàn kết không chỉ trong vấn đề biển Đông mà còn trong tất cả các vấn đề khác liên quan đến an ninh và phát triển tại khu vực, và Việt Nam vẫn tiếp tục làm như thế.
Việt Hà: Vừa rồi Việt Nam có thông qua luật biển, ông đánh giá về tác dụng của luật này trong việc giúp Việt Nam bảo vệ chủ quyền?

TS. Đặng Đình Quý: Đây là một hoạt động rất bình thường của một quốc gia ven biển. Theo tôi ở góc độ cá nhân, đáng ra phải ra luật biển từ lâu rồi vì Việt Nam là thành viên của công ước quốc tế về luật biển 1982, quá trình này là quá trình nội luật hóa các cam kết quốc tế của mình, và điều này khẳng định chủ quyền và tạo ra cơ sở pháp lý cho việc Việt Nam thực hiện chủ quyền của mình, quản lý biển và phát triển biển, kinh tế biển, cho tương lai của Việt Nam, đồng thời cũng vì hòa bình ổn định trong khu vực. Điều này hoàn toàn phù hợp với xu hướng chung của quốc tế, nước nhỏ xưa nay luôn tuân thủ luật pháp quốc tế vì hòa bình của cả khu vực.

Việt Hà: Xin cảm ơn ông.
by http://nghiencuubiendong.vn

hoi xoay dap xoay ngay 9/6/2012

hoi xoay dap xoay ngay 9/6/2012




Hoi xoay dap xoay ngay 02/6/2012

Hoi xoay dap xoay ngay 02/6/2012. Xin cho ý kiến về video này nha..




DAMtv - Mr.Bean về Việt Nam??!?

Đây là một clip được quay vào đầu tháng 12 - lúc DAMtv vừa mới thành lập. ĐÂY KHÔNG PHẢI LÀ MỘT SẢN PHẨM CHÍNH THỨC, chỉ là 1 clip quảng cáo sơ bộ nho nhỏ theo hình thức nhại lại (nhại theo một số quảng cáo ở VN và thế giới). Vì clip này có những cái không hay của nó nên DAMtv không có ý định share rộng rãi như những clip trước.





Diễn viên:
Yin Trần, Dũng Khùng Dăng Mùng, Su Lùn, Thư Lê, Huỳnh Lập Lờ, Kaydy Trần, Lê Nhân, Nhật Kid, Ter Libra, Dorothy Hòa Trần, Duc Tran, Dore Mi, Huy Hoàng Trần.

Hóa trang: Huỳnh Lập Lờ.
Quay phim & Hậu kì: Hồng Tú

President Ho Chi Minh’s Biography (1890-1969)

Ho Chi Minh (alias Nguyen Sinh Cung, Nguyen Tat Thanh, and Nguyen Ai Quoc), was born on 19 May 1890 in Kim Lien Village, Nam Dan District, Nghe An Province.

His father was a patriotic scholar, his mother was a farmer. His older sister and brother both took part in the anti-French movements and were imprisoned by the colonial administration.

On 3 June 1911, Ho Chi Minh left the country. He lived on doing different jobs. He also participated in the revolutionary movements of many peoples while making great efforts to struggle for his nation’s independence and freedom. Ho Chi Minh was the first Vietnamese supporter to the Russian October Revolution and found the Marxism-Leninism the way to liberate the working class and peoples in colonial countries. In 1920, he took part in establishing the French Communist Party in the Tour Congress. In 1921, he founded the Union of French Colonial Nations; published the newspaper Le Paria in France (1922). In 1923, he became a member of the International Peasantry Committee. In 1924, he attended the Fifth Congress of Communist International and was appointed a standing member of the Oriental Department. In 1925, he participated in establishing the Union of Asian Oppressed Nations, and published the two famous books, The Indictment of French Colonialism (1925) and The Revolutionary Path (1927).

In 1925, he founded the Vietnamese Revolutionary Youth Association in Guangzhou (China) and organized “Communist League” as the core of the association, training communist cadres to lead the association and popularize Marxism-Leninism in Vietnam.

On 3 February 1930, he presided the Party Founding Conference in Jiulong (Hong Kong). The Conference approved the Brief Political Platform, Brief Policy and the Party Statutes drafted by Ho Chi Minh. He gave an appeal on the occasion of the Communist Party of Vietnam (later renamed the Indochina Communist Party, the Vietnam Workers’ Party and nowadays the Communist Party of Vietnam).

From 1930 to 1940, Ho Chi Minh engaged in activities to liberate the Vietnamese nationand other oppressed peoples under difficult conditions and hardships.

In 1941, he returned Vietnam, convening the 8th Conference of the Central Committee of the Indochina Communist Party, deciding the way for national salvation, establishing the Vietnamese Independent Alliance Association (Viet Minh), building armed forces and revolutionary bases, leading the people to launch the uprisings and prepare the general insurrection to seize power throughout the country.

After the August 1945 Revolution, on 2 September 1945, at Ba Dinh Square, Ho Chi Minh read the Declaration of Independence to establish the Democratic Republic of Vietnam; organized the free nationwide general selection to elect the National Assembly and approved the first democratic Constitution of Vietnam. The First National Assembly appointed Ho Chi Minh as the President of the Democratic Republic of Vietnam 91946).

Together with the Party Central Committee, President Ho Chi Minh appealed and lead the whole Party, the entire people and army to defeat all schemes of the imperialists, protecting and strengthening the revolutionary government.

On 13 December 1946, he gave the appeal to raise the anti-French resistance war for the sake of national independence and freedom.

Under the leadership of the Central Party Committee, headed by President Ho Chi Minh, our resistance war won a resounding victory at Dien Bien Phu (1954).

After the Northern part of Vietnam was liberated (1955), the Party Central Committee and President Ho Chi Minh put forward the two strategic tasks for the Vietnamese revolution: carrying out the socialist revolution and building socialism in the North; and struggling to liberate the South and reunify the country, fulfilling the people’s national democratic revolution in the whole country.

With the Party Central Committee, President Ho Chi Minh guided the great resistance war of the Vietnamese people to fight against the American aggressors as well as led the cause of socialist renewal and construction in North Vietnam.

President Ho Chi Minh creatively applied Marxism-Leninism into Vietnam’s specific conditions, setting up the sound guidelines to lead the Vietnamese evolution to greater victories.

He was the founder of the Marxist-Leninist party in Vietnam of the Vietnamese National Unity Front, of the Vietnamese people’s army and of the Democratic Republic of Vietnam, greatly contributing to strengthen international unity. He was a bright example of collectivism, sense of organization and revolutionary virtues.

President Ho Chi Minh was the great master of the Vietnamese revolution, the beloved leader of the Vietnamese working class and the entire nation, an eminent soldier, a brilliant activist of the international communist and national liberation movements.

Cười té ghế với Dam TV

Damtv này coi cười đau bụng lun :d Chỉ có thể là DAMTV..Xin mọi người cho lời bình về video này nha:)))




Chủ tịch Hồ Chí Minh trên bìa tạp chí TIME

Tạp chí Time của Mỹ ra đời năm 1923. Trong hơn 85 năm qua, đã năm lần hình ảnh Chủ tịch Hồ Chí Minh xuất hiện trên trang bìa tạp chí này.
Lần đầu tiên chân dung Hồ Chí Minh xuất hiện ở bìa số ra ngày 22-11-1954 với chủ đề “Hồ Chí Minh của Đông Dương”.

Bài viết cho ảnh trang bìa nói về sự kết thúc cuộc kháng chiến chống Pháp, miền Bắc VN sống dưới chế độ cách mạng của chính quyền Hồ Chí Minh. Tác giả mô tả lại quang cảnh Hà Nội ngày giải phóng, khi đoàn quân Việt Minh từ rừng núi tiến về. Tiếp đó, hành trình cách mạng của Chủ tịch Hồ Chí Minh được kể lại cùng với quá trình diễn ra cuộc kháng chiến chống thực dân Pháp.

Lần thứ hai chân dung Hồ Chí Minh xuất hiện ở bìa số ra ngày 16-7-1965 với chủ đề “VN: miền Bắc không khoan nhượng”.

Đây là một năm sau ngày Mỹ đưa máy bay ra ném bom phá hoại miền Bắc. Bài viết cho ảnh trang bìa mang đầu đề Bắc VN: nhà mác xít trong rừng sâu: “Hà Nội đã chuẩn bị cho cuộc chiến tranh toàn thể. Hồ Chí Minh là thế, vị thánh râu dài của nước VN cộng sản, ở tuổi 75 ông là lãnh tụ cộng sản già nhất, từng trải nhất. Ông Hồ của Bắc VN đã đưa ra lập trường cuối cùng và kiên định nhất của mình, và cả đất nước non trẻ của ông đã sẵn sàng chiến thắng hay là chết cùng với ông. Dù cho không lực Mỹ bỏ bom ngày càng sát gần Hà Nội đông dân cư nhưng vẫn không thấy ông Hồ tỏ ra có dấu hiệu nao núng”.

Lần thứ ba Hồ Chí Minh xuất hiện trên trang bìa tờ Time là trong bức ảnh chụp chung với nhà ngoại giao Shelepin số ra ngày 14-1-1966.

Bìa số này đăng hai bức ảnh, phía trên bức này là bức ảnh chụp tổng thống Mỹ Johnson và các cố vấn đang họp bàn tại Ranch. Chủ đề của số này là “Cuộc tấn công hòa bình của Mỹ và sự đáp trả của cộng sản”. Bài viết cho ảnh trang bìa là Nhiệm kỳ tổng thống: sự thay đổi trên sân khấu đề cập thông điệp liên bang hăng năm của tổng thống Mỹ lúc đó là Lyndon Johnson mà trọng tâm vẫn là vấn đề cuộc chiến VN. Hình ảnh Chủ tịch Hồ Chí Minh ở trang bìa để nhấn mạnh hơn điều mà bài báo nêu lên khi bình luận bản thông điệp hăng năm của tổng thống Mỹ: “Công việc đầu tiên và quan trọng nhất của ông ta sẽ phải là quyết xem nước Mỹ sẽ đi về đâu trong cuộc chiến tranh VN”.

Lần thứ tư chân dung Hồ Chí Minh xuất hiện trên trang bìa Time là số ra ngày 12-9-1969.

Lúc này lãnh tụ VN vừa mất nên chủ đề của số là “Kỷ nguyên mới ở Bắc VN” cùng với bài viết cho ảnh trang bìa có tên Di sản của Hồ Chí Minh: “Khi vị Chủ tịch Bắc VN qua đời vì bệnh tim tuần trước ở Hà Nội, ông đã để lại một di sản được hoàn tất rất ấn tượng. Ông đã đưa lại ý niệm quốc gia cho nước VN. Ông đã tiến tới thể hiện một hình thức “chủ nghĩa cộng sản dân tộc” vừa giúp ông tách ra khỏi quỹ đạo Xô – Trung, lại vừa thúc đẩy cả hai cường quốc đó săn đón ông.

Với nguồn tài nguyên hạn chế của một dân tộc châu Á nghèo khổ – cộng với sự giúp đỡ từ Bắc Kinh và Matxcơva – ông đã chống lại được hỏa lực to lớn của một nước công nghiệp mạnh nhất trên Trái đất. Khi làm thế, ông đã buộc một tổng thống Mỹ phải rời khỏi nhiệm sở và làm hoen ố ký ức về một tổng thống khác. Ông đã đi sâu vào xã hội Mỹ thông qua cuộc chiến tới mức tác động đến giới trẻ phản kháng, đến những người da đen lo lắng không yên, đến những cận vệ binh của các giá trị cũ đang bị đe dọa – chính ngay hình ảnh của đất nước. Cả cuộc đời Hồ Chí Minh là dành để tạo ra một nước VN thống nhất, thoát khỏi sự đô hộ của ngoại bang. Không một lãnh tụ dân tộc nào còn sống hiện nay ngoan cường đứng vững được lâu đến thế trước mũi súng kẻ thù. Sự qua đời của ông chắc chắn sẽ còn lan rộng ảnh hưởng ở Bắc VN, châu Á và xa hơn nữa”.

Lần thứ năm chân dung Hồ Chí Minh xuất hiện trên bìa tờ Time là số ra ngày 12-5-1975, gần hai tuần sau ngày giải phóng hoàn toàn miền Nam. Bức ảnh mang dòng chữ “Người chiến thắng” với chủ đề là “Cái gì tiếp theo ở châu Á?”. Bài viết Lời tạm biệt nghiệt ngã cuối cùng bình luận về thắng lợi của nhân dân VN. Sự nghiệp giải phóng dân tộc của Hồ Chí Minh và nhân dân VN đã chiến thắng. Nước Mỹ từ đây sẽ phải điều chỉnh lại đường hướng của mình trên thế giới, nhưng không dễ mà “bỏ VN lại phía sau”.

Nguyễn Văn Nam

Tuesday, July 17, 2012

Cách tạo luồng từ lớp Thread trong Java

// ThreadSync.java
class MyThread extends Thread {

static String message[]={"I","love","Java."};

public MyThread(String id) {

// Gọi hàm dựng (constructor) của lớp Thread cha

super(id);

}


public void run() {

Sync.displayList(getName(), message);

}


void waiting() {

try {

sleep(2000);

}

catch(InterruptedException e){

System.out.println("Interrupted");

}

}

};


class Sync {

public static synchronized void displayList(String name, String list[]) {

/* Nếu không dùng từ khóa synchronized thì sẽ không

đảm bào một luồng làm xong hết công việc của nó

rồi một luồng khác mới được bắt đầu chạy.

*/

for (int i=0; i< list.length; ++i) {

MyThread thread = (MyThread)Thread.currentThread();

// Hàm waiting đã định nghĩa ở trên

thread.waiting();

System.out.println(name + list[i]);

}

}

};


public class ThreadSync {

public static void main(String args[]) {

MyThread thread1 = new MyThread("Thread 1: ");

MyThread thread2 = new MyThread("Thread 2: ");

thread1.start(); // Hàm run của thread1 được gọi

thread2.start(); // Hàm run của thread2 được gọi

}

};

Monday, July 16, 2012

Fujifilm cáo buộc Motorola Mobility vi phạm bốn sáng chế về công nghệmáy ảnh số

Tuần trước, Fujifilm đã chính thức gửi đơn lên tòa án quận Bắc California cáo buộc Motorola Mobility vi phạm bốn sáng chế về kĩ thuật chụp ảnh và công nghệ máy ảnh số của họ. Công ty Nhật Bản cho biết, vụ việc bắt đầu từ tháng 8 năm ngoái khi đại diện của họ thông báo với công ty con của Google về việc các mẫu điện thoại và máy tính bảng bao gồm Droid X, Razr, Razr Maxx, Droid Bionic và Xoom, có trang bị một số công nghệ chưa được Fujifilm cấp phép. Cho tới nay, sau gần một năm đàm phán hai bên vẫn không đi đến một thỏa thuận nào và các hành vi vi phạm bản quyền của công ty Mỹ chưa có dấu hiệu dừng lại. Điều đó buộc Fujifilm phải đi đến quyết định khởi kiện để đòi quyền lợi hợp pháp của mình. Được biết, các sáng chế mà nguyên đề cập trong đơn kiện bao gồm (các sáng chế này đã được Văn phòng Thương hiệu và Sáng chế Hoa Kỳ cấp chứng nhận):

  • Sáng chế số 6,144,763 về công nghệ chuyển ảnh màu thành ảnh đen trắng.

  • Sáng chế số 6.915.199 về giải pháp kỹ thuật cho phép các thiết bị có thể trao đổi thông tin với nhau thông qua mạng điện thoại cố định.

  • Sáng chế số 7.327.886 về công nghệ nhận dạng khuôn mặt trong chụp ảnh kỹ thuật số.

  • Sáng chế số 5.734.427 về công nghệ cho phép người dùng có thể xem các hình ảnh có độ phân giải cao mà cảm biến thu được thông qua một ống ngắm (hoặc màn hình) có độ phân giải thấp.

Như vậy, đây là lần thứ hai Google Motorola Mobility dính vào một vụ kiện lớn trong năm sau khi khi giành thắng lợi trong một vụ việc tương tự với Apple.

Apple sẽ phát hành Mountain Lion 10.8 vào ngày 25/7

Trong tháng 7 này, sản phẩm của Apple được người dùng quan tâm nhiều nhất chắc hẳn là hệ điều hành OS X 10.8 Mountain Lion. Tại hội nghị WWDC 2012, Apple cho biết sẽ phát hành Mountain Lion vào tháng 7 với giá 20 USD, song không công bố ngày giờ cụ thể. Chính vì thế,nhiều tin đồn đã xuất hiện trong thời gian gần đây đề cập đến ngày phát hành OS X 10.8. Dự đoán mới nhất đến từ 9to5Mac, Apple sẽ phát hành phiên bản Mountain Lion vào ngày 25/7.

Trang tin dựa vào ngày báo cáo kết quả kinh doanh quý 3 của Apple để làm cơ sở cho nhận định của mình. Năm ngoái, Apple tổ chức buổi họp báo cáo kết quả kinh doanh vào ngày 19/7, và chỉ 1 ngày sau đó, OS X 10.7 Lion được phát hành. Năm nay, buổi họp của hãng được ấn định vào ngày 24/7, và nếu dự đoán trên là thật thì nhân viên các cửa hàng bán lẻ của Apple chỉ có 24 giờ đồng hồ để chuẩn bị cho ngày 25 bán ra. Công tác quan trọng và tốn thời gian nhất trong khâu chuẩn bị không gì khác hơn là cài đặt hệ điều hành mới cho toàn bộ các sản phẩm Mac lưu kho tại cửa hàng.
http://www.tinhte.vn/tags/mountain+lion/

THỬ NGHIỆM KIẾM TIỀN BẰNG QUẢNG CÁO CPM VỚI PROFITCPM.COM



  • Là chương trình kiếm tiền CPM bằng hình thức hiển thị banner (728x90, 300x250, 468x60 và 120x600 px).




  • Thanh toán được thực hiện sau ngày 15 của tháng tiếp theo khi bạn đạt tối thiểu $2.


  • Thanh toán bằng Paypal với mức thanh toán tối thiểu là $2. Chấp nhận trafic từ mọi quốc gia.


  • Nghiêm cấm sử dụng phần mềm hoặc proxy hoặc các phương tiện khác để tạo ra các điểm bị cấm.


  • Chấp nhận user đăng ký từ mọi quốc gia (tuy nhiên mỗi user chỉ được đăng ký một tài khoản).


Các bạn đăng ký theo link  đến trang chủhttp://www.profitcpm.com

Bạn điền đầy đủ các thông tin theo những mục dưới đây.


Lấy code chèn vào web.

Chọn mục Code trên thanh menu ngang.

Chọn định dạng quảng cáo phù hợp, bao gồm: 728x90, 300x250, 468x60 và 120x600 px. Nhấn Generate Code để lấy đoạn mã.


Copy đoạn mã vào vị trí bất kỳ trên blog của bạn.

Hướng dẫn kiếm tiền với Profitcpm

Xem thông tin về số tiền kiếm được bạn chọn mục Stats trên thanh menu
và bạn cũng nhận được 10% thu nhập của người mà đăng ký theo link giới thệu của bạn
các bạn đăng ký ủng hộ mình nhé http://www.profitcpm.com
chúc các bạn kiếm được nhiều $ nhé.

CÁCH RÚT TIỀN TỪ MONEYBOOKER VỀ TÀI KHOẢN NGÂN HÀNG

Việc rút tiền từ tài khoản Moneybookers về tài khoản ngân hàng tại Việt Nam (ở đây là tài khoản ngân hàng ACB) cũng rất đơn giản; và chỉ thực hiện được khi số dư trong tài khoản Moneybookers của bạn lớn hơn không.

Các bước thực hiện:

1/Trước hết bạn phải mở một tài khoản cá nhân tại ngân hàng ACB: giử lại tất cả các giấy tờ liên quan.

  • Đăng nhập vào tài khoản Moneybookers, nhấn chuột vào [Profile], tiếp theo là nhấn [ Add]tại dòng Bank Account.

  • Sau đó bạn làm theo các bước hướng dẫn trên màng hình.

Ghi Chú:


  • Bạn cần phải biết số Swift của ngân hàng mở tài khoản để khai báo.


Sau khi bạn khai báo mã số Swift, và tên chủ tài khoản đầy đủ, Moneybookers tự động kiểm tra và xác nhận số tài khoản ngân hàng ACB của bạn.

và bạn có thể rút tiền.

2/Rút tiền từ tài khoản Moneybookers vào tài khoản ngân hàng ACB:


  • Đầu tiên bạn đăng nhập vào tài khoản Moneybookers, nhấn chuột vào nút [Withdraw].

  • Nhập vào ô "amount" số tiền cần rút, nhấn [Next] và làm theo các bước hướng dẫn.

Sau đó nhấn nút [Withdraw] để xác nhận.

Ghi chú:


  • Số tiền rút phải nhỏ hơn mức cao nhất cho phép (được thể hiện rõ trong mỗi lần rút).

  • Đến nay, Moneybookers chỉ chấp nhận rút tiền về tài khoản ngân hàng với mức thấp nhất là 10.00 Euro (đối với người Việt Nam) mà thôi.

HƯỚNG DẪN KIẾM TIỀN VỚI CO.CC TÊN MIỀN MIỄN PHÍ CÓ DNS TỐT NHẤT

 Domain Co.cc  là một dich vụ cung cấp tên miền Free (miễn phí) thông dụng và tốt nhất hiện nay, vì chức năng của dịch vụ này tương đương với các dịch vụ trả phí khác như .com .net .info… và bạn toàn quyền sử dụng chức năng DNS, CNAME, A Records (thường thì tên miền miễn phí khác không hỗ trợ dịch vụ này) Hướng dẫn đăng ký tên miền Co.cc Full DNS
Một số tên miền “độc” thì bạn phải trả phí. Giá trị nhỏ nhất là 3$/tên miền giá trị.
  







1Bước đầu tiên: Đăng nhập vào Referral.
Dang_ky_cocc
1. Nếu bạn đã có Tài khoản tại CO.CC thì:
Click vào (1) Returninng user, sign in here để đăng nhập và click vào (3) Referralsđể đăng ký kiếm tiền cùng CO.CC
2. Nếu chưa có tài khoản CO.CC thì:
Click vào (2) để đăng ký tài khoản, khi đăng ký xong thì làm như phần 1 trên
2Đăng ký Referrakl để kiếm tiền:
Sau khi click vào Referral trong bước 1, bạn vào màn hình và điền các thông tin như dưới:Tao_Acc_Referral
Sau khi đăng ký xong, bạn sẽ được cấp một link giới thiệu của riêng mình ví dụ của mình là :http://www.co.cc/?id=182877
Bạn giới thiệu bạn bè đăng ký qua link đó sẽ được co.cc trả hoa hồng theo các mức như sau:
1. free domain: $0.10 USD
2. for sale: 10% ~ 40% commission. (40% for PayPal, 10% for CreditCard)
Nếu đăng ký các domain thông thường thì là 0.1$, còn nếu ai mua domain đẹp của co.cc qua link bạn thì bạn được trả 40% số tiền mà người mua trả cho co.cc.
3Quảng bá , kiểm tra danh sách và rút tiền:
Sau khi đã đăng ký Referral, bạn thực hiện các bước như hình dưới (tranghttp://www.co.cc/affiliates/affiliates.php của CO.CC)
Check_CoCCGet bannersđể lấy codebanner quảng bá mời mọi người
Sign up List: Kiểm tra List các domain đã đăng ký thông qua banner hoặc link
Withdraw funds: Rút tiền về tài khoản Paypal khi đủ số tiền quy định tối thiểu là 1 USD (nếu chưa có tài khoản Paypal bạn tham khảo: Hướng dẫn Paypal từ A - Z cho MMO Việt)