Thứ Hai, 28 tháng 12, 2009

Internet đã phát triển thế nào (phần cuối)

TTO - Trải qua một chặng đường phát triển cho đến ngày nay, Internet có nhiều cột mốc ghi dấu ấn lịch sử công nghệ mà trong phần cuối bạn sẽ có dịp lướt qua.


Internet tựa như một xa lộ với các luồng dữ liệu di chuyển liên tục không ngừng - Ảnh minh họa: Google

2001: Wikipedia được tung ra


Với sự sụp đổ của .com vẫn đang tiếp diễn mạnh mẽ, Wikipedia tung ra vào năm 2001, website đã mở đường cho các dịch vụ từ điển bách khoa toàn thư mở lớn nhất trên Internet.
2003: Xu hướng VoIP
Năm 2003, Skype ra đời giúp người dùng có thể hội thoại thông qua Internet qua giao thức Voice over IP (VoIP).
2003: MySpace trở thành mạng xã hội phổ biến nhất
Cũng trong năm 2003, MySpace đã mở ra cánh cửa phát triển mạng xã hội liên kết con người trên toàn thế giới với nhau. Sau đó nó phát triển để trở thành mạng xã hội phổ biến nhất thời điểm đó.
2003: Đạo luật CAN-sPAM Act ra đời
Đạo luật chống spam mang tên CAN-sPAM Act ra đời năm 2003, được ký bởi tổng thống Mỹ thời bấy giờ là George W. Bush. Các đại gia Microsoft, America Online, Yahoo và EarthLink cùng nhau liên minh, nỗ lực tiêu diệt tệ nạn thư rác.
2004: Web 2.0
Mặc dù được đưa ra vào năm 1999 bởi Dracy DiNucci nhưng đến năm 2004 thuật ngữ "Web 2.0" mới được sử dụng rộng rãi để mô tả các website hướng người dùng và cung cấp khả năng tương tác, mang theo nền tảng web kiểu mới, trau chuốt và lộng lẫy hơn.
2004: Phương tiện truyền thông xã hội và Digg


Thuật ngữ "social media" được tin tưởng để sử dụng đầu tiên bởi Chris Sharpley, được đưa ra trong cùng năm với "Web 2.0".
Digg, một trang tin tức xã hội, được tung ra vào tháng 11-2004, mở đường cho các site như là Reddit, Mix và Yahoo! Buzz. Digg tìm kiếm và tạo ra những nội dung web, những tin tức liên quan thông các link web được chính cộng đồng đăng lên và bình luận.
2004: Mạng xã hội Facebook


Facebook được tung ra vào năm 2004, mặc dù ở cùng thời điểm nó chỉ được mở cho học sinh đại học và được gọi là "The facebook", sau đó từ "The" được bỏ đi và chỉ còn Facebook như hiện tại, và địa chỉ TheFacebook.com vẫn còn hoạt động, được chuyển tới Facebook.com.
2005: YouTube ra đời
YouTube được tung ra vào năm 2005 cung cấp dịch vụ lưu trữ và chia sẻ video trực tuyến miễn phí cho công chúng. Cho đến ngày nay, nhờ sự hậu thuẫn của Google, YouTube đã trở thành dịch vụ chia sẻ video số 1 trên Internet.
2006: Twitter ra mắt
Một năm sau khi Youtube ra đời, Twitter cũng lục đục ra mắt người dùng toàn cầu tạo nên cơn sốt tiểu blog với các đoạn blog ngắn gọn trong 160 ký tự và ngày nay Twitter đã trở thành tiểu blog được yêu thích của nhiều chính trị gia, nghệ sĩ, người dùng toàn cầu…
2007: Chương trình Tivi trực tuyến chính


Hulu được ra mắt vào năm 2007 như một sự mạo hiểm khi cạnh tranh chung với các đại gia tivi trực tuyến như ABC, NBC, và Fox để trở thành kênh tivi trực tuyến phổ biến nhất hiện nay.
2007: The iPhone và Mobile Web


Sự đổi mới lớn nhất của năm 2007 chắc chắn chính là là iPhone - chiếc điện thoại con cưng của Apple, tạo nên cơn sốt điện thoại di động màn hình cảm ứng đa điểm cho người dùng toàn cầu và cho đến thời điểm hiện tại sức hút của nó vẫn không suy giảm.
2008: Bầu cử qua Internet


Bầu cử tổng thống cũng được diễn ra trên Internet năm 2008 trong các chiến dịch tranh cử tổng thống Mỹ. Đó là năm đầu tiên những ứng cử viên quốc tế lợi dụng được đầy đủ tất cả các dịch Internet cung cấp để chiến thắng đối phương trên mặt trận này. Hillary Clinton khởi đầu với chiến dịch diễn thuyết qua Youtube. Hầu như tất cả ứng viên tổng thống đều có một trang facebook hay twitter hoặc là cả hai.
Ron Paul lập kỷ lục gây quỹ mới bằng cách nâng lên 4.3 triệu đôla trong một ngày thông qua đóng góp trực tuyến và đánh bại kỷ lục của mình chỉ trong vài tuần sau bằng cách nâng lên 4.4 triệu đôla trong một ngày.
Cuộc bầu chọn năm 2008 đã đặt Internet ở vị trí đứng đầu cho chính trị và các chiến dịch, một xu hướng mà dường như không thể thay đổi khác trong tương lai sắp tới.
2009: Chính sách ICANN thay đổi
Tại hội nghị diễn ra ở Paris, ICANN đã bỏ phiếu chấp nhận thông qua quy định mới, theo đó cho phép các công ty mua tên miền cấp cao mới tùy ý muốn. Chẳng hạn, thay vì hạn chế các trang web kết thúc với đuôi .com hay .org, Hãng eBay có thể có những trang web sử dụng đuôi .ebay, hay thành phố New York có thể sử dụng tên miền cấp cao .nyc.
Tương lai?
Đâu là tương lai của Internet hiện đại ngày nay? Liệu 5, 10 hay 20 năm nữa Internet sẽ có bước phát triển như thế nào? Sắp tới liệu lại có thêm một giao thức Internet, mô hình mạng xã hội mới hay những website tạo bước ngoặt cho lịch sử Internet nữa hay không? Chúng ta hãy chờ đợi những điều Internet mang tới cho chúng ta ở trước mắt.
KIM NGÂN tổng hợp

Internet đã phát triển như thế (phần 2)

TTO - Những chặng đường phát triển Internet lần lượt được tái hiện qua các cột mốc lịch sử trong làng công nghệ thông tin thế giới.


Internet là một bức tranh đầy màu sắc - Ảnh minh họa: Google




1982: Emoticon đầu tiên xuất hiện


Trong khi nhiều người công nhận Kevin MacKenzie với sự phát minh của emoticon vào năm 1979 thì vào năm 1982 Scott Fahman đã đề nghị sử dụng :-) sau một câu nói đùa hơn là bản gốc của biểu tượng đó -) mà MacKenzie nghĩ ra. Từ đó emoticon hiện đại ra đời.
1983: các máy tính Arpanet chuyển sang TCP/IP
Tháng 1-1983 là thời điểm cuối cùng các máy tính sử dụng mạng Arpanet chuyển sang các giao thức TCP/IP được phát triển bởi Vinton Cerf. Hàng trăm máy tính bị ảnh hưởng bởi sự chuyển đổi này. Tên server cũng được phát triển vào năm 1983.
1984: hệ thống tên miền (DNS)


Hệ thống tên miền được tạo ra vào năm 1984 cùng với các hệ thống máy chủ tên miền đầu tiên (gọi là DNS). Hệ thống tên miền rất quan trọng, vì nó làm cho địa chỉ trên Internet thân thiện với con người hơn so với các số địa chỉ IP khó nhớ. DNS server cho phép những người sử dụng Internet đánh vào một tên miền dễ nhớ và sau đó chuyển đổi nó đến các địa chỉ IP một cách tự động.
1985: các cộng đồng ảo
Năm 1985 đã đánh dấu sự phát triển The Well (viết tắt của Whole Earth Lectronic Link), một trong những cộng đồng ảo xưa nhất vẫn hoạt động. Nó được phát triển bởi Stewwart Brand và Larry Brilliant vào tháng 2-1985. Tạp chí Wired đã gọi The Well là “cộng đồng online có ảnh hưởng nhất trên thế giới”.
1986: chiến tranh các giao thức
Những cuộc chiến tranh giữa các giao thức mạng bắt đầu vào năm 1986. Các nước châu Âu vào lúc đó đang theo đuổi mô hình Open Systems Interconnection (OSI), trong khi Mỹ đúng đắn khi lựa chọn sử dụng giao thức Internet/Arpanet và kết quả cuối cùng họ đã thắng khi lựa chọn giao thức mạng tối ưu nhất.
1987: sự phát triển của Internet
Trước năm 1987 có gần 30.000 vị trí IP được xác định trên Internet. Nghi thức Arpanet đầu tiên đã bị giới hạn đến con số 1.000, sự phát triển của chuẩn TCP/IP đã làm số lượng có thể tăng lên được rất nhiều.
1988: IRC- Internet Relay Chat


Cũng vào năm 1988, Internet Relay Chat (IRC) đã được triển khai lần đầu tiên, mở đường cho sự ra đời các chương trình chat thời gian thực và các chương trình gửi tin nhắn tức thời mà chúng ta sử dụng ngày nay.
1989: AOL được ra mắt


Khi Apple tung ra chương trình AppleLink vào năm 1989, dự án này được đặt lại tên và America Online ra đời. AOL, vẫn tồn tại ngày nay, sau đó đã làm cho Internet trở nên phổ biến với những người sử dụng Internet bình dân hơn.
1989: kế hoạch đề xuất cho World Wide Web


1989 ra mắt kế hoạch đề xuất cho World Wide Web được viết bởi Tim Berners-Lee. Nó được công bố đầu tiên ở số báo phát hành tháng 3 của tạp chí MacWorld, và sau đó được phân phối lại vào tháng 5-1990. Nó được viết để thuyết phục tổ chức CERN rằng một hệ thống siêu văn bản toàn cầu trong sự quan tâm nhất của CERN. Thời điểm ra đời nó được gọi “Mesh”, thuật ngữ World Wide Web đã được đặt ra trong khi Berners-Lee đang viết code vào năm 1990.
1990: cuộc gọi thương mại đầu tiên ISP
Năm 1990, The World đã cung cấp những cuộc gọi thương mại Internet đầu tiên. Cùng năm đó Arpanet ngừng phát triển.
1990: những nghi thức World Wide Web hoàn thành
Năm 1990, mã lệnh cho World Wide Web được viết bởi Tim Berners - Lee đã hoàn thành, chúng dựa trên kế hoạch đề xuất của ông ấy từ những năm trước đó, đi cùng là những tiêu chuẩn cho HTML, HTTP và các URL.
1991: trang web đầu tiên được tạo ra


1991 đã mang lại một số sự đổi mới chính cho thế giới Internet. Trang web đầu tiên được tạo ra và nhiều thứ như là email đầu tiên giải thích email là gì, mục đích của nó là để giải thích World Wide Web là gì.
1991: nội dung đầu tiên dựa trên giao thức tìm kiếm
Cũng vào năm 1991, ra mắt Gopher - bộ máy tìm kiếm đầu tiên kiểm tra những nội dung tập tin thay vì chỉ tìm tên tập tin.
1991: MP3 trở thành một tiêu chuẩn
Định dạng MP3 đã được ra mắt như là tiêu chuẩn cho tập tin nhạc vào năm 1991. Những tập tin MP3 được nén khá nhiều, MP3 sau đó trở thành một định dạng tập tin phổ biến để chia sẻ những bài hát và album nhạc thông qua Internet đến thời điểm hiện tại.
1991: webcam đầu tiên


Một trong những sự phát triển thú vị ở thời điểm này là sự ra mắt của chiếc webcam đầu tiên. Nó được triển khai ở phòng thí nghiệm của Đại học Cambridge, và mục đích duy nhất của nó là để giám sát một máy nghiền cà phê để những người quan sát tránh thời gian lãng phí khi đi kiểm tra một máy nghiền cà phê còn hay hết nguyên liệu.
1993: Mosaic - trình duyệt web có giao diện đồ họa đầu tiên


Mosain - trình duyệt Internet có giao diện đồ họa đầu tiên phát hành vào năm 1993 được cho phép download một cách rộng rãi. Mosaic không phải là trình duyệt web đầu tiên, nhưng nó được xem là trình duyệt mang tính cách mạng giúp mọi người có thể truy cập Internet dễ dàng hơn so với trước đây.
1993: chính phủ cũng tham gia "cuộc vui"
Năm 1993, cả Nhà Trắng và Liên Hiệp Quốc đều chính thức online, đánh dấu sự bắt đầu của những tên miền .gov và .org.
1994: Netscape Navigator


Đối thủ cạnh tranh lớn của Mosaic là Netscape Navigator được phát hành vào năm 1994 - một năm sau khi Mosaic ra mắt.
1995: thương mại hóa Internet
1995 thường được công nhận là năm đầu tiên web trở nên thương mại hóa. Đầu tiên, mã hóa bảo mật SSL (Secure Sockets Layer) được phát triển bởi Netscape, giúp con người giao dịch trên mạng an toàn hơn.
Thêm vào đó, năm 1995 cũng đã đánh dấu kỷ nguyên của thời đại mua hàng trên mạng của hai đại gia lớn, mà tầm ảnh hưởng của nó đến với con người và Internet hiện đại ngày nay là không thể thiếu được, đó là Echo Bay (sau này đổi thành eBay) và Amazon.com. Amazon khởi đầu chật vật khi không thể tạo ra lợi nhuận trong sáu năm cho đến năm 2001.
1995: ra mắt Geocities, Cộng hòa Vatican cũng lên mạng và JavaScript ra đời
Sự kiện ấn tượng của năm 1995 đó là việc ra mắt Geocities (hiện tại Geocities đã đóng cửa vào ngày 26-10-2009).
Quốc gia bé nhỏ Vatican cũng lần đầu tiên online vào năm 1995.
Sun Microsystems cho ra mắt Java và JavaScript năm 1995. ActiveX cũng được Microsoft tung ra vào năm sau đó.
1996: dịch vụ web đầu tiên (webmail)


Vào năm 1996 dịch vụ webmail mang tên Hotmail ra đời, hiện tại Hotmail vẫn còn được sử dụng và nâng cấp lên thành Windows Live Hotmail.
1997: thuật ngữ “weblog” được đặt ra
Khi các blog được ra mắt trên Internet dưới nhiều hình thức khác nhau, thuật ngữ “weblog” ra đời.
1998: các câu chuyện xâm nhập online vào Internet thay vì các phương tiện truyền thông truyền thống
1998, mẫu tin đầu tiên được xâm nhập online vào hệ thống Internet là scandal của tổng thống Bill Clinton với người tình Monica Lewinsky.
1998: Google!


Google đã bước những bước đi đầu tiên vào năm 1998, tạo nên cuộc cách mạng hóa cách mà mọi người tìm kiếm thông tin trực tuyến trên Internet.
1998: chia sẻ tập tin qua Internet ra đời


Cũng vào năm 1998, Napster ra đời, mở ra hình thức chia sẻ tập tin qua Internet.
1999: dự án SETI@home
1999 là năm ra đời dự án SETI@home tại Đại học Berkely. Dự án này kết hợp sức mạnh xử lý CPU của hơn 3 triệu máy tính trên toàn thế giới, chương trình chỉ sử dụng bộ xử lý của máy tính khi nó đang trong thời gian rỗi. Chương trình này phân tích dữ liệu sóng radio thu được từ vệ tinh để tìm kiếm những dấu hiệu về văn minh ngoài Trái đất.
2000: bong bóng kinh tế toàn cầu vỡ tung
2000 là năm sụp đổ của nền công nghiệp .COM (dotCOM), kết quả là làm mất một lượng khổng lồ vốn đầu tư. Hàng trăm công ty đóng cửa, một vài công ty khác thì chưa tìm ra được lợi nhuận cho các nhà đầu tư của họ. NASDAQ đã liệt kê một số lượng lớn công ty công nghệ bị ảnh hưởng bởi bong bóng kinh tế bị vỡ này.
KIM NGÂN tổng hợp

Internet đã phát triển như thế

TTO - Internet đã là từ ngữ quen thuộc với mọi người ở mọi lứa tuổi, len lỏi vào từng nhà, trở thành một phương tiện không thể thiếu trong công việc, sinh hoạt, giải trí hằng ngày của hàng triệu triệu người trên thế giới.

Ảnh minh họa: Internet
Tuy nhiên, trong chúng ta mấy ai biết đến thời điểm hình thành, quá trình phát triển để trở thành mạng Internet toàn cầu như ngày hôm nay, ảnh hưởng của nó trong cuộc sống. Bài viết này mang chúng ta ngược dòng thời gian trở về những ngày sơ khai của Internet, tìm hiểu những cột mốc quan trọng của Internet từ năm 1969 đến năm 2009 ngày hôm nay.

1969: Arpanet

Arpanet được vận hành trên công nghệ packet switching (chuyển mạch gói dữ liệu) mới nhất thời bấy giờ. Vào ngày 29-10-1969 lần đầu tiên các máy tính tại Đại học Stanford và Đại học UCLA (University of California, Los Angeles) được kết nối với nhau thông qua mạng Arpanet này. Arpanet được coi như mô hình mạng đầu tiên khai sinh ra Internet ngày hôm nay.
Tin nhắn đầu tiên được truyền qua mạng được cho là “Login”, nhưng theo báo cáo lại thì đường truyền tin giữa hai nơi này bị “đứt” khi chỉ mới đi tới chữ cái “g”.
Tên gọi ARPA-NET xuất phát từ The Advanced Research Project Agency là tổ chức tài trợ chi phí nghiên cứu cho chương trình này.
1969: Unix

Một cột mốc quan trọng khác của Internet trong thập niên 1960 là sự khởi đầu của Unix: hệ điều hành có ảnh hưởng to lớn trong sự phát triển của Linux và FreeBSD (các hệ điều hành phổ biến nhất vận hành máy chủ web dịch vụ lưu trữ web ngày hôm nay).
1970: Arpanet network
Vào năm 1970, một mạng Arpanet đã được thiết lập giữa Đại học Harvard, MIT (Học viện kỹ thuật Massachuset) và BBN (công ty tạo ra bộ vi xử lý giao diện dòng tin mà các máy tính sử dụng để kết nối vào mạng).
1971: thư điện tử - email

Vào năm 1971, một sự kiện quan trọng có ý nghĩa hết sức to lớn và trở thành thứ không thể thiếu được trong cuộc sống công nghệ ngày hôm nay là thư điện tử - email ra đời. Email được phát triển bởi Ray Tomlinson, người đã có đề nghị sử dụng ký tự @ để ngăn cách giữa usernamecomputer name (sau này là domain name).
1971: dự án Gutenberg và eBooks

Michael Hart và Gregory Newby tại hội nghị HOPE
Một trong những bước phát triển ấn tượng nhất năm 1971 là khởi đầu của dự án Gutenberg. Dự án Gutenberg hướng đến những người không quen với các công việc, thao tác trên nền web, Gutenberg là một nỗ lực toàn cầu để thực hiện những cuốn sách và tài liệu cho cộng đồng miễn phí gọi là ebook và các định dạng tài liệu điện tử khác.
Dự án này được khởi nguồn khi Michael Hart được tiếp cận với một khối lượng lớn thời gian tính toán với máy tính, con số và nhận ra tương lai của máy tính không chỉ dừng lại ở các công việc tính toán thông thường, hiện tại việc tìm kiếm thông tin, tài liệu chỉ có trong thư viện.
Ông đã tự mình đánh máy bản Tuyên ngôn độc lập của Mỹ (thời đó không có các thiết bị quét ảnh hay nhận dạng chữ viết tay như máy scan ngày nay) và sau đó phát động dự án Gutenberg để tạo ra các thông tin tài liệu, văn bản trên giấy tờ thành các định dạng điện tử và có thể xem trên máy tính. Đây là nguyên nhân khai sinh ra eBook ngày nay.

Tin bài liên quan
1972: Cyclades
Đến năm 1972, nước Pháp cũng cho ra mắt một mạng riêng của mình và tương tự Arpanet với nền tảng công nghệ Packet switching có tên gọi là Cyclades.
Sau đó Cyclades ngừng phát triển, tuy nhiên nó đã đi tiên phong cho ý tưởng quan trọng là các máy chủ phải có trách nhiệm truyền dữ liệu chứ không phải là mạng của chính nó.
1973: hệ thống mạng xuyên Đại Tây Dương và sự phổ biến của email
Năm 1973, một bước nhảy vọt của Internet thời đầu khi đã có thể tạo ra mạng Arpanet có đường truyền xa xuyên qua Đại Tây Dương kết nối với Đại học UCL (University College of London). Cũng trong năm đó, thư điện tử email đã trở nên phổ biến và chiếm tới 75% hoạt động trong mạng Arpanet.
1974: sự ra đời của giao thức TCP/IP

Có thể nói 1974 là năm đột phá của lịch sử phát triển Internet, một đề xuất được đề nghị để liên kết các mạng Arpanet lại với nhau tạo thành một mạng mới gọi là “liên mạng”, sẽ không có điều khiển trung tâm và làm việc trên một giao thức truyền dẫn mới, đây là tiền đề ra đời của giao thức TCP/IP còn tồn tại đến ngày nay.
1975: phần mềm Email Client cho máy trạm

Với sự phổ biến của email, các chương trình gửi/nhận thư điện tử hiện đại đầu tiên đã được phát triển bởi John Vittal, một lập trình viên tại Đại học Nam California, vào năm 1975 gọi là MSG. Chức năng tiên tiến nhất chương trình này đã làm được lúc bấy giờ đó là bổ sung chức năng "Reply" và "Forward" cho Email Client.
1977: ra mắt modem máy tính

1977 là năm đáng nhớ trong sự phát triển của Internet như chúng ta biết ngày nay. Đó là năm mà modem máy tính đầu tiên được phát triển bởi Dennis Hayes và Dale Heatherington, được giới thiệu và bán cho những người dùng máy tính nối mạng lúc đầu.
1978: sự ra đời của Bulletin Board System (BBS)
Bulletin board system (BBS) là một hệ thống máy tính chạy các phần mềm cho phép người dùng kết nối và đăng nhập vào hệ thống sử dụng phần mềm đầu cuối, BBS được phát triển tại Chicago năm 1978.
1978: Spam ra đời
1978 cũng là năm mang lại những tin nhắn email thương mại không được yêu cầu (sau đó được biết đến như là spam - thư rác), được gửi đến 600 người sử dụng Arpanet ở Califonia bởi Gary Thuerk.
1978: MUD - những hình thức đầu tiên của trò chơi nhiều người

Tiền thân của Word of Warcraft và Second Life được phát triển vào năm 1979 và được gọi là MUD (viết tắt của MutiUser Dungeon). Các MUD là những thế giới ảo hoàn toàn dựa trên các văn bản, kết nối những yếu tố của luật trò chơi, sự ảnh hưởng lẫn nhau, các điều tưởng tượng và trò chuyện trực tuyến.
1979: Usenet ra đời
Năm 1979 dẫn đường với sự ra mắt của Usenet, được tạo bởi hai sinh viên đã tốt nghiệp. Usenet là một hệ thống thảo luận dựa trên nền Internet, cho phép người dùng trên toàn cầu nói chuyện về cùng một chủ đề bằng cách đưa ra những tin nhắn công khai đã được phân loại bởi những nhóm thông tin.
1980: phần mềm Enquire
Tổ chức Nghiên cứu hạt nhân châu Âu (thường được biết đến với tên gọi CERN) cho ra mắt ứng dụng Enquire (được viết bởi Tim Berners-Lee), một ứng dụng siêu văn bản cho phép các nhà khoa học tại các phòng nghiên cứu có thể lưu lại các phần mềm, con người và các dự án bằng cách sử dụng siêu văn bản này (siêu liên kết).
(còn tiếp)
KIM NGÂN tổng hợp

Thứ Năm, 10 tháng 12, 2009

Có nên sử dụng “using namespace std” hay không?

Translate to Vietnamese by kiennguyen
Nguồn: http://www.parashift.com/c++-faq-lit....html#faq-27.5
Câu trả lời là KHÔNG
Mọi người thường không thích việc phải gõ std:: ở mọi nơi, họ thích sử dụng “using namespace std” hơn vì chỉ với một vài thao tác gõ phím trình dịch sẽ thấy được tất cả các tên trong namespace std. Tuy nhiên điều đó cũng có nghĩa là trình dịch sẽ nhìn thấy cả các tên của namespace std mà bạn không hề có ý định sử dụng chúng. Nghĩa là bạn có thể vô tình tạo ra các tên xung đột với nhau hoặc các tên có ý nghĩa không rõ ràng. Ví dụ, chương trình của bạn sử dụng một biến đếm hoặc một hàm tên là count. Tuy nhiên thư viện chuẩn cũng có một hàm tên là count và điều này có thể gây ra sự nhập nhằng.

Ý nghĩa của việc sử dụng các namespace là để ngăn ngừa việc xung đột giữa các đoạn code được phát triển một cách độc lập. Việc sử dụng “using namespace XYZ” (hay còn gọi là using-directive) sẽ đặt một namespace vào một namespace khác và điều này đi ngược lại với mục đích ban đầu của các namespace.
Sử dụng using-directive là cách đơn giản nhất để chuyển các chương trình C++ cũ sang việc sử dụng các namespace. Tuy nhiên bạn không nên tiếp tục sử dụng chúng trong các chương trình mới.

Nếu vẫn muốn tránh việc gõ std:: ở mọi nơi, bạn có thể sử dụng using-declaration để chỉ rõ ra các tên mà trong namespace std mà bạn muốn sử dụng. Ví dụ đoạn code dưới đây sử dụng using-declaration để chỉ rõ ra bạn muốn sử dụng và chỉ sử dụng tên cout của namespace std mà thôi:



cpp Code:
#include < iostream >

#include < vector >
void f(const std::vector& v)
{
    using std::cout; // Sử dụng tên cout trong namespace std
    cout << "Values:";
    for (std::vector::const_iterator p = v.begin(); p != v.end(); ++p)
        cout << ' ' << *p;
    cout << '\n';
}




Nếu sử dụng std:: ở mọi nơi, đoạn code trên sẽ như sau


cpp Code:
#include < iostream >

#include < vector >
void f(const std::vector& v)
{
    std::cout << “Values:;
    for (std::vector::const_iterator p = v.begin(); p != v.end(); ++p)
        std::cout << ‘ ‘ << *p;
    std::cout << ‘\n’;
}



Theo quan điểm cá nhân thì bạn nên sử dụng std:: ở mọi nơi, vì như vậy còn nhanh hơn là việc phải nghĩ xem với một tên trong namespace nào đó, có cần thiết phải sử dụng using-declaration hay không và nếu có thì sử dụng trong phạm vi nào.
Tất nhiên, cả hai cách nói trên đều tốt. Điều quan trọng là bạn là thành viên của một nhóm làm việc và bạn phải tuân theo những chuẩn chung do nhóm của bạn đề ra

Thứ Hai, 7 tháng 12, 2009

Nữ giáo sư trẻ nhất thế giới - 19 tuổi

Thần đồng Alia Sabur, người Mỹ trở thành giáo sư trẻ tuổi nhất thế giới khi mới 19 tuổi.



Sinh năm 1989 tại Mỹ, Alia nổi bật trong danh sách các thần đồng có trí tuệ siêu phàm khi mà tỷ lệ thần đồng được phát hiện thường nghiêng về các bé trai.

Alia biết nói, biết đọc khi mới tròn tám tháng tuổi. Lên 2, Alia đã đọc trọn cả cuốn tiểu thuyết Chalotter’s web và viết thạo. Con số biểu thị lớp học mà Alia đã hoàn thành luôn lớn hơn số tuổi của cô bé.

Khi những bạn khác cùng tuổi rời trường mầm non thì cô đã kết thúc chương trình giáo dục dành cho học sinh tiểu học. Cô bé học xong chương trình lớp chín năm tám tuổi. Bố mẹ cô phải rất vất vả để tìm trường học phù hợp với khả năng nhận thức của con gái họ. Ngay cả những trường tư thục tốt nhất ở Manhattan cũng không đáp ứng được trước sự tiến bộ quá nhanh của cô.

Alia kể rằng giáo viên của cô thường nói: “Em tìm cái gì đó mà làm. Tôi phải dạy cả lớp”. Vậy nên, khi chẳng có gì mới để học, cô ngồi đọc sách.

10 tuổi, Alia được nhận vào trường Đại học Stony Brook của New York. Vì cô còn quá bé nên ngày nào mẹ cô cũng phải đưa con gái đi học. Cô bé còn mang theo cả những con thú nhồi bông đến khoa vật lý của trường đại học.

Mẹ cô kể, hôm diễn ra buổi thi tốt nghiệp môn toán ứng dụng, cô đến phòng thi muộn tới hai tiếng. Cô ngồi xuống bàn và làm xong bài thi trong vòng 15 phút. Mẹ cô hỏi: “Alia, chỉ 15 phút thôi ư?”, cô bé trả lời: “Tốt mẹ ạ!”.

Quả đúng như vậy, khi cô đạt điểm xuất sắc cho môn toán ứng dụng, giáo sư của cô đã gửi tin nhắn, nói đùa: “Có lẽ em nên đến muộn trong mọi buổi thi tốt nghiệp.”

Sau khi giành được bằng cử nhân ngành toán ứng dụng, Alia Sabur được nhận học bổng của chương trình đào tạo liên thông từ bậc thạc sĩ lên tiến sĩ chuyên ngành khoa học vật chất tại Đại học Drexel thuộc bang Philadelphia, Mỹ.

Alia Sabur luôn quan tâm đến các nghiên cứu vật lý ứng dụng trong y khoa. Đề tài nghiên cứu cho luận án tiến sĩ của cô bé là hiện tượng gấp nếp protein. Alia hy vọng rằng nghiên cứu của cô sẽ giúp tìm ra phương thuốc chữa bệnh Alzemer và bò điên (cả 2 bệnh này đều có liên quan đến hiện tượng protein bị gấp nếp một cách bất thường). Mục tiêu của cô nhằm làm sáng tỏ nguyên nhân gấp nếp không tự nhiên đó và tìm cách khôi phục chúng trở về cấu trúc bình thường.

Cô cũng đã thực hiện một nghiên cứu có tính đột phá nhằm tiến tới phát triển các que thăm tế bào dựa trên công nghệ ống nano sử dụng trong y học. Các que thăm này sẽ cho phép khả năng đo phản ứng của các chất dạng nano được truyền vào các tế bào riêng lẻ.

Không chỉ là một thần đồng trong lĩnh vực khoa học tự nhiên, Alia còn là một tài năng âm nhạc. Cô bé chơi Clarinet từ khi sáu tuổi. Năm 11 tuổi cô trở thành nghệ sĩ chơi Clarinet trong dàn nhạc giao hưởng Rockland.

Alia từng học âm nhạc dưới sự hướng dẫn của những người thầy danh tiếng như Ricardo Morales, David Weber. Cô bé từng đạt các giải thưởng cao tại các cuộc thi biểu diễn âm nhạc như: giải Nhất trong cuộc thi biểu diễn Clarinet dành cho nghệ sĩ trẻ xuất sắc.

Năm 2006, Alia tốt nghiệp Nhạc viện Julliard. Ngoài ra, Alia Sabur còn là một võ sinh Taekwondo, được đeo đai đen khi chín tuổi.

Tháng 2/2008, khi chưa đầy 19 tuổi, Alia được phong làm giáo sư chính thức của đại học Konkuk (Seoul, Hàn Quốc). Cô trở thành giáo sư chính thức trẻ tuổi nhất trên thế giới. Hiện cô đang giảng dạy tại khoa vật lý của trường đại học này.

Alia tâm sự: “Bố mẹ tôi luôn khuyến khích tôi trong bất cứ việc gì tôi muốn theo đuổi. Tôi tin rằng tôi được hưởng khả năng trời cho và một môi trường nuôi dưỡng, giáo dục tốt”.

Chủ Nhật, 6 tháng 12, 2009

Stored Procedures

Khi dùng Query Analyzer chúng ta có thể đặt tên và save các nhóm câu lệnh SQL vào một file dưới dạng script để có thể sử dụng trở lại sau này. Tuy nhiên thay vì save vào text file ta có thể save vào trong SQL Server dưới dạng Stored Procedure. Stored Procedure là một nhóm câu lệnh Transact-SQL đã được compiled (biên dịch) và chứa trong SQL Server dưới một tên nào đó.

Ưu Ðiểm Của Stored Procedure
Stored Procedure có một số ưu điểm chính như sau:
·                                 Performance : Khi thực thi một câu lệnh SQL thì SQL Server phải kiểm tra permission xem user gởi câu lệnh đó có được phép thực hiện câu lệnh hay không đồng thời kiểm tra cú pháp rồi mới tạo ra một execute plan và thực thi. Nếu có nhiều câu lệnh như vậy gởi qua network có thể làm giảm đi tốc độ làm việc của server. SQL Server sẽ làm việc hiệu quả hơn nếu dùng stored procedure vì người gởi chỉ gởi một câu lệnh đơn và SQL Server chỉ kiểm tra một lần sau đó tạo ra một execute plan và thực thi. Nếu stored procedure được gọi nhiều lần thì execute plan có thể được sử dụng lại nên sẽ làm việc nhanh hơn. Ngoài ra cú pháp của các câu lệnh SQL đã được SQL Sever kiểm tra trước khi save nên nó không cần kiểm lại khi thực thi.
·                                 Programming Framework : Một khi stored procedure được tạo ra nó có thể được sử dụng lại. Cũng giống như các ngôn ngữ lập trình khác stored procedure cho phép ta đưa vào các input parameters (tham số) và trả về các output parameters đồng thời nó cũng có khả năng gọi các stored procedure khác.
·                                 Security : Truy xuất dữ liệu trực tiếp của một user nào đó vào một số tables, ta có thể viết một stored procedure để truy xuất dữ liệu và chỉ cho phép user đó được sử dụng stored procedure đã viết sẵn. Stored procedure có thể được encrypt (mã hóa) để tăng cường tính bảo mật.
Các Loại Stored Procedure
Stored procedure có thể được chia thành 5 nhóm như sau:
1.                              System Stored Prcedure : Là những stored procedure chứa trong Master database và thường bắt đầu bằng tiếp đầu ngữ sp_ . Các stored procedure này thuộc loại built-in và chủ yếu dùng trong việc quản lý database (administration) và security. Ví dụ bạn có thể kiểm tra tất cả các processes đang được sử dụng bởi user DomainName\Administrators bạn có thể dùng sp_who @loginame='DomainName\Administrators' . Có hàng trăm system stored procedure trong SQL Server. Bạn có thể xem chi tiết trong SQL Server Books Online.
2.                              Local Stored Procedure : Ðây là loại thường dùng nhất. Chúng được chứa trong user database và thường được viết để thực hiện một công việc nào đó. Thông thường người ta nói đến stored procedure là nói đến loại này. Local stored procedure thường được viết bởi DBA hoặc programmer. Chúng ta sẽ bàn về cách tạo stored prcedure loại này trong phần kế tiếp.
3.                              Temporary Stored Procedure : Là những stored procedure tương tự như local stored procedure nhưng chỉ tồn tại cho đến khi connection đã tạo ra chúng bị đóng lại hoặc SQL Server shutdown. Các stored procedure này được tạo ra trên TempDB của SQL Server nên chúng sẽ bị delete khi connection tạo ra chúng bị cắt đứt hay khi SQL Server down. Temporary stored procedure được chia làm 3 loại : local (bắt đầu bằng #), global (bắt đầu bằng ##) và stored procedure được tạo ra trực tiếp trên TempDB. Loại local chỉ được sử dụng bởi connection đã tạo ra chúng và bị xóa khi disconnect, còn loại global có thể được sử dụng bởi bất kỳ connection nào. Permission cho loại global là dành cho mọi người (public) và không thể thay đổi. Loại stored procedure được tạo trực tiếp trên TempDB khác với 2 loại trên ở chỗ ta  thể set permission, chúng tồntại kể cả sau khi connection tạo ra chúng bị cắt đứt và chỉ biến mất khi SQL Server shut down.
4.                              Extended Stored Procedure : Ðây là một loại stored procedure sử dụng một chương trình ngoại vi (external program) vốn được compiled thành một DLL để mở rộng chức năng hoạt động của SQL Server. Loại này thường bắt đầu bằng tiếp đầu ngữ xp_ .Ví dụ, xp_sendmail dùng đề gởi mail cho một người nào đó hay xp_cmdshell dùng để chạy một DOS command... Ví dụ  xp_cmdshell 'dir c:\' . Nhiều loại extend stored procedure được xem như system stored procedure và ngược lại.
5.                              Remote Stored Procedure : Những stored procedure gọi stored procedure ở server khác.
Viết Stored Procedure
Ta cũng có thể dùng các lệnh CREATE, ALTER, DROP để tạo mới, thay đổi hay xóa bỏ một stored procedure.
Ví dụ: Tạo một stored procedure dùng Enterprise Manager click lên trên Stored Procedure -> New Stored Procedure....
Ta sẽ tạo ra một stored procedure để insert một new order vào Orders table trong Practice DB. Ðể insert một order vào database ta cần đưa vào một số input như OrderID, ProductName và CustomerName. Sau đó ta trả về kết quả cho biết việc insert đó có thành công hay không. Result = 0 là insert thành công.
             CREATE PROCEDURE AddNew
             @OrderID smallint,
             @ProductName varchar(50),
             @CustomerName varchar(50),
             @Result smallint=1 Output
             AS

             DECLARE @CustomerID smallint
             BEGIN TRANSACTION
             If not Exists(SELECT CustomerID FROM Customers WHERE [Name]=@CustomerName)
             --This is a new customer. Insert this customer to the database
                             BEGIN
                                            SET @CustomerID= (SELECT Max(CustomerID) FROM Customers)
                                            SET @CustomerID=@CustomerID+1
                                            INSERT INTO Customers VALUES(@CustomerID,@CustomerName)
                                            If Exists(SELECT OrderID FROM [Orders] WHERE OrderID=@OrderID)
                                            --This order exists and could not be added any more so Roll back
                                                           BEGIN
                                                                          SELECT @Result=1
                                                                          ROLLBACK TRANSACTION
                                                           END
                                            Else
                                            --This is a new order insert it now
                                                           BEGIN
                                                                          INSERT INTO [Orders](OrderID,ProductName,CustomerID) VALUES(@OrderID,@ProductName,@CustomerID)
                                                                          SELECT @Result=0
                                                                          COMMIT TRANSACTION
                                                           END
                             END
             Else
             --The customer exists in DB go ahead and insert the order
                             BEGIN
                                            If Exists(SELECT OrderID FROM [Orders] WHERE OrderID=@OrderID)
                                            --This order exists and could not be added any more so Roll back
                                                           BEGIN
                                                                          SELECT @Result=1
                                                                          ROLLBACK TRANSACTION
                                                           END
                                            Else
                                            --This is a new order insert it now
                                                           BEGIN
                                                                          INSERT INTO [Orders](OrderID,ProductName,CustomerID) VALUES(@OrderID,@ProductName,@CustomerID)
                                                                          SELECT @Result=0
                                                                          COMMIT TRANSACTION
                                                           END
                             END
             Print @Result
             Return
Dùng lệnh CREATE PROCEDURE tạo một stored procedure (nếu là temporary stored procedure thì thêm dấu # trước tên của procedure. Nếu muốn encrypt thì dùng WITH ENCRYPTION trước chữ AS) và các input hoặc ouput parameters. Nếu là output thì thêm keyword OUTPUT đằng sau parameter. Ta có thể cho giá trị default cùng lúc với khai báo data type của parameter. Kể từ sau chữ AS là phần body của stored procedure.
Trong ví dụ ở trên trước hết ta khai báo một biến @CustomerID sau đó bắt đầu một transaction bằng BEGIN TRANSACTION (toàn bộ công việc insert này được thực hiện trong một Transaction nghĩa là hoặc là insert thành công hoặc là không làm gì cả- all or nothing). Trước hết ta kiểm tra xem người khách hàng là người mới hay cũ. Nếu là người mới thì ta "tiện tay" insert vào Customers table luôn còn nếu không thì chỉ insert vào Orders table mà thôi. Nếu là người customer mới ta lấy CustomerID lớn nhất từ Customers table bỏ vào biến @CustomerID và sau đó tăng lên một đơn vị dùng cho việc Insert Customer ở dòng kế tiếp.
Sau khi insert người customer mới ta tiếp tục công việc bằng việc kiểm tra xem Order muốn insert có tồn tại chưa (vì nếu order đã tồn tại thì khi insert SQL Server sẽ báo lỗi do OrderID là Primary key). Nếu như order trên vì lý do nào đó đã có trong DB thì ta roll back và trả kết quả =1 còn nếu không thì ta insert một order mới vào và commit transaction với kết quả trả về =0.
Các ví Dụ tham khảo nữa nhe:
CREATE procedure XOA_KHACHHANG
          (
          @MSKH char(10)
          ) as
Begin
          if (exists(select *from KHACHHANG where MSKH=@MSKH))
          begin
          if(not exists(select *from HOADON where MSKH=@MSKH))
            begin
            delete KHACHHANG where MSKH=@MSKH
              if @@rowcount=0
                                  raiserror ('Xoa khach hang khong thanh cong',1,1)
              else
                                  raiserror ('Xoa khach hang thanh cong',1,1)        
             end
                      else
              raiserror ('Khong the xoa khach hang nay ',1,1)
            end
            else
            raiserror ('Khavh hang nay khong ton tan',1,1)

            end

CREATE procedure SUA_KHACHHANG
          (
          @MSKH char(10),
          @TENKH  varchar(50),
          @DIACHI  varchar(100),
          @PHAI     char(5),
          @DIENTHOAI varchar(15)
          ) as
Begin
          if (exists(select *from KHACHHANG where MSKH=@MSKH))
begin
if isnumeric(@DIENTHOAI)=1 or @DIENTHOAI=''      
begin
          if @DIENTHOAI='' or DATALENGTH(@DIENTHOAI)=6 or DATALENGTH(@DIENTHOAI)=7 or DATALENGTH(@DIENTHOAI)=8 or DATALENGTH(@DIENTHOAI)=9 or DATALENGTH(@DIENTHOAI)=10 or DATALENGTH(@DIENTHOAI)=11
          begin
           if @DIENTHOAI=''
           set @DIENTHOAI=null
           update KHACHHANG
           set TENKH=@TENKH,DIACHI=@DIACHI,PHAI=@PHAI,DIENTHOAI=@DIENTHOAI where MSKH=@MSKH
            if @@rowcount=0
                      raiserror ('Sua khach hang khong thanh cong',2,2)
            else
                      raiserror ('Sua khach hang thanh cong',2,2)
          end
          else
            raiserror ('So dien thoai ko hop le',3,1)
end
else
raiserror ('So dien thoai ko hop le',3,1)
end
else
raiserror ('khach hang nay khong ton tai',4,2)
end 

Thứ Sáu, 4 tháng 12, 2009

OpenDNS - Tăng tốc duyệt web và hơn thế nữa

OpenDNS là dịch vụ DNS (Domain Name System) cung cấp cho người dùng internet địa chỉ DNS giúp bạn truy cập web nhanh chóng, dễ dàng và an toàn hơn bao giờ hết.

Những tính năng ưu việt của OpenDNS so với DNS thông thường:

1. An toàn hơn: OpenDNS có khả năng nhận diện các trang phishing có ý đồ xấu muốn lấy cắp thông tin cá nhân hay lừa đảo để lấy tiền của bạn. Chức năng này hoạt động không tùy thuộc vào hệ điều hành hay trình duyệt mà bạn đang sử dụng. Khi vào 1 trang phishing bạn sẽ nhận được cảnh báo như hình trên.


2. Nhanh hơn: Máy tính của bạn cần dùng đến DNS khi bạn truy cập vào một website nào đó hay gửi đi một email chẳng hạn. Có 2 yếu tố chính làm cho DNS trở nên nhanh hơn, đó là bộ nhớ cache lớn và hệ thống mạng tốt. OpenDNS có hệ thống cache rất lớn đặt tại các giao điểm của mạng internet. Điều này thực sự làm tăng tốc độ duyệt web của bạn lên rất nhiều.

3. Thông minh hơn: Thông thường, khi bạn gõ sai địa chỉ web thì trình duyệt sẽ không thể truy cập trang web đó được. Nhưng với OpenDNS thì khác. Khi bạn gõ sai tên miền, ví dụ như yahoo.cmo hay google.mco thì OpenDNS sẽ tự động chỉnh lại cho đúng thành yahoo.com và google.com. Nếu một khi OpenDNS không sửa lỗi được khi bạn gõ sai thì nó sẽ hiển thị lên các kết quả tìm kiếm các trang có tên miền gần giống như vậy để bạn có thể dễ dàng lựa chọn.

4. Những lợi ích khác khi sử dụng OpenDNS:
- Hoàn toàn miễn phí.
- Dễ sử dụng. Bạn chỉ cần thiết lập cấu hình DNS 1 lần duy nhất để nó hoạt động mãi. Nếu không thích dùng OpenDNS nữa bạn cũng có thể dễ dàng trở về thiết lập như ban đầu.
- Không cần cài đặt bất cứ phần mềm nào.
- Có thể chạy trên mọi hệ điều hành, mọi trình duyệt web.



Nếu bạn đang sử dụng Hệ Điều Hành Window XP thì bạn có thể cấu hình theo hướng dẫn sau:

Bước 1: Vào Control Panel từ Start menu.




Bước 2: Chọn Network Connections từ Control Panel




Bước 3: Mở biểu tượng kết nối từ cửa sổ Network Connections




Bước 4: Click Properties button.




Bước 5: Chọn Internet Protocol (TCP/IP) và click Properties




Bước 6: Chọn Use the following DNS server addresses và đánh OpenDNS addresses vào ô Preferred DNS server( 208.67.222.222 ) và ( 208.67.220.220 ) Alternate DNS server.





Bài đăng phổ biến