Bài 5 – Các Thẻ HTML

Hôm nay là một ngày cuối tuần . Buổi chiều , bầu trời có vẻ ảm đạm phía dưới dòng người vẫn cứ di chuyển không ngừng tạo nên một quang cảnh trái ngược như hai không gian tách biệt. Còn tôi thì đang đứng giữa hai không gian ấy cảm nhận từng cái se lạnh ở trên và vội vã ở dưới.

html-code

Tôi đóng các task công việc còn dang dở lại. Sau đó kiểm tra e-mail, vài bức thư điện tử lướt qua, không có gì quan trọng 7/10 toàn là thư quảng cáo, tôi lắc đầu ngao ngán :( . Tôi trầm ngâm một lúc để tay sau gáy nhìn lên trần nhà mông lung một tí rồi lại quơ con chuột di chuyển trên màn hình desktop . Chợt ánh mắt tôi tập trung vào một icon trên màn hình mà bấy lâu nay tôi không quan tâm đến .

Tôi bắt đầu kiểm tra nick Yahoo của mình , đã rất lâu từ ngày tôi dùng Facebook . Yahoo đã mờ dần trong tâm trí của tôi .

Đúng như tôi dự đoán . Có khá nhiều tin nhắn dành cho tôi, kể ra cũng hơn 1 năm từ ngày tôi không dùng Yahoo nữa. Hầu hết là những tin nhắn quan tâm, hỏi thăm tôi ra sao. Phần lớn là những người tôi quen qua mạng internet, nên dù gì tôi cũng thầm cảm ơn họ. Tôi kiểm tra từng tin nhắn khi ở gần cuối . Có nhiều tin nhắn khiến tôi chú ý . một nickname vô cùng ngộ nghĩnh *congchuaxxxxxx * gửi cho tôi một tin nhắn nội dung như sau :

– “Xin chào anh. Em biết là anh bận lắm. Nhưng anh có thể cho phép em kết bạn và trao đổi với anh về kiến thức web được không ạ ? “.

Tôi mỉm cười đáp :

– “Được thôi :) . Nhưng lần sau xin vui lòng cho tôi biết tên nhé ! “.

Sau khi trả lời ngắn gọn, tôi kiểm tra tiếp những tin nhắn tiếp theo và định logout . Nhưng ở góc màn hình thông báo đã có một nick mới online và tôi nhận ra ngay đó nick của cô gái ở trên.

Rất nhanh sau đó tôi nhận được ngay một tin nhắn khá dài . Điều này chứng minh rằng cô nàng quả là một cao thủ đánh chữ .

– “Dạ em xin lỗi . Em tên Lily . Em muốn kết bạn với anh vì em đang tìm hiểu về cách làm web . Nhưng hiện tại kiến thức của em còn giới hạn. Nên mong anh chỉ giúp em với . Em xin cảm ơn anh rất nhiều !”

Tôi trầm ngâm một tí . Cô nàng có một cái tên rất đẹp . Tôi đáp.

– “Chúng ta bắt đầu từ đâu đây ? ” – Tôi đi thẳng vào vấn đề.

Lily vẫn rất nhanh :

– “Em muốn hỏi về các thẻ trong HTML và cách hoạt động của chúng ?!”.

May mắn thật khi mà chỉ mới khi chiều Elly có chém gió với tôi hàng giờ về đề tài này . Quả thật tôi khá nễ Elly về khả năng học thuộc bài của cô ấy . Cô ấy có thẻ nhớ đến hàng chục cái thẻ HTML mà tôi không tài nào nhớ được.

Để xem nào, tôi tìm được một tập tài liệu nói về các thẻ trong HTML mà Elly đã gửi cho tôi khi chiều.

– “Xin chào Lily. Cô còn ở đó chứ ? ”

– “Vâng em đây” – Lily đáp.

– “Tôi có một số tài liệu về các thẻ HTML ở đây . Cô có thể xem qua “.

– “Vâng, nó sẽ có ích cho em”.

[box type=”info” ]

Thẻ HTML Là Gì ?

Các thẻ dùng để báo cho trình duyệt cách thức trình bày văn bản trên màn *hình hoặc dùng để chèn một mối liên kết đến các trang khác, *một đoạn chương *trình khác…*

Mỗi thẻ gồm một từ khoá *KEYWORD *– *bao bọc bới hai dấu bé hơn (<) và *lớn hơn (>).

Hầu hết các lệnh thể hiện bằng một cặp hai thẻ: thẻ mở () và thẻ *đóng (). Dấu gạch chéo *(“/”) kí hiệu thẻ đóng. Lệnh sẽ tác động vào *đoạn văn bản nằm giữa hai thẻ.*

Đoạn văn bản chịu tác động của lệnh

Một số thẻ không có cặp, chúng được gọi là các thẻ rỗng* *hay thẻ *đơn*. Chỉ *có thẻ mở *mà thôi.

Nhiều thẻ có  kèm các thuộc tính (attribute), cung cấp thêm các tham số chi *tiết hơn cho việc thực hiện lệnh. Các thuộc tính được chia làm hai loại: thuộc tính *bắt buộc và thuộc tính không bắt buộc hay tuỳ chọn.

Một thuộc tính là bắt buộc nếu như phải có nó thì thẻ lệnh mới thực hiện *được. *Ví dụ, để chèn một hình ảnh vào trang tài liệu ta dùng thẻ (Image). Tuy nhiên, cần chỉ rõ cái ảnh nào sẽ được dán vào đây. Điều này được thiết lập bằng thuộc tính SRC=”địa chỉ của tệp ảnh”. Thuộc tính SRC là bắt buộc phải có đối với thẻ .

[/box]

Để xem chi tiết danh sách các thẻ trong HTML bạn có thể xem ở đây : http://www.w3schools.com/tags/


Tôi chào Lily và logout . Quả là một ngày cuối tuần đầy thú vị !

Bài 4 – Trang Mã Nguồn HTML Và Trang Web

Tệ thật. Hôm nay quả là một ngày không máy vui vẻ đối với tôi . Tôi gặp khá nhiều rắc rối. Có lẽ với một bài viết về chuyên môn sẽ khiến tôi bình tâm lại.

Hôm nay Elly cũng không có mặt . Tuần trước nghe nói là cô ấy có một dự định đi thăm các trẻ mồ côi ở cô nhi viện Thiên Sứ.

Hôm nay tôi và các bạn sẽ cùng nhau tìm hiểu Mã nguồn HTML và Một trang Web là như thế nào .

Chúng ta có định nghĩa sau :

[box type=”info” ]

Trang mã nguồn HTML là một tệp văn bản bình thường gồm các kí tự ASCII, có thể được tạo ra bằng bất cứ trình *soạn thảo thông thường nào. Theo quy ước, tất cả các tệp mã nguồn của trang siêu văn bản phải có đuôi *là *.*html* hoặc *.htm.

[/box]

website

[box type=”info” ]

Khi trình duyệt (browser) đọc trang mã nguồn *HTML, *nó sẽ dịch các thẻ  *lệnh và hiển thị lên màn hình máy tính thì ta thường gọi là trang Web. Vậy trang *web không tồn tại trên đĩa cứng của máy tính *cục bộ. Nó là cái thể hiện của trang mã nguồn qua *vic *xử lý của trình duyệt.*

[/box]

Như sau này ta sẽ thấy, các trình duyệt khác nhau có thể hiển thị cùng một trang mã nguồn không hoàn toàn giống nhau.

[box type=”info” ]

Nói soạn thảo siêu văn bản tức là tạo ra trang mã nguồn HTML đúng quy *định để độ duyệt hiểu được và hiển thị đúng.*

[/box]

Sử dụng HTML để soạn thảo các trang siêu văn bản, về nguyên tắc cũng *không khác mấy so với dùng các bộ soạn thảo văn bản thông thường*. Chẵng hạn, trong soạn thảo văn bản thông thường, để làm nổi bật các tiêu đề ta phải đánh dấu nó và chọn cỡ to, căn chính giữa… Chương trình soạn thảo văn bản sẽ chèn các dấu hiệu thích hợp (ta không nhìn thấy được) vào đầu và cuối đoạn tiêu đề được chọn để thể hiện nó theo yêu cầu.

Với HTML c ng tương tự như vậy. Để làm nổi bật các tiêu đề ta cần đánh dấu điểm bắt đầu và điểm kết thúc của đoạn tiêu đề bằng cặp thẻ Heading, ví dụ

. ..

. Bộ duyệt sẽ hiển thị đoạn này với cỡ chữ to hơn và căn chính giữa.

Ví dụ, dòng sau đây trong tài liệu HTML

Tiêu đề mức 1

sẽ được trình duyệt hiển thị thành
[box type=”success” ]

Tiêu đề *mc 1*

[/box]

Hiện nay có nhiều công cụ soạn thảo siêu văn bản mạnh như Microsoft FrontPage, Dream Weaver.. với giao diện trực quan và tự động sinh mã HTML, *cho phép soạn thảo siêu văn bản như soạn thảo thông thường.
Tuy nhiên, *việc tìm hiểu cú pháp của HTML, nắm vững ý nghĩa của các thẻ khác *
nhau vẫn rất cần thiết để có thể tạo ra các trang Web động, tương tác với người sử *dụng, tức là các ứng dụng Web sau này.

Bài 2-3 : HTML Là Gì ? Những Đặc Điểm Của Nó ?

Bây giờ chúng ta đã dần dần dẫn nhập vào những nội dung chính . Và nội dung chính phải đi từ những điều cơ bản nhất . HTML là gì ?

WhatIsHtml

Tôi nghĩ câu hỏi này tôi có thể trả lời Andy ạ – Elly đáp !

Để phổ biến thông tin trên toàn cục, cần một ngôn ngữ phổ biến và dễ hiểu, một kiểu việc phổ biến tiếng mẹ đẻ mà toàn bộ các máy tính có thể hiểu được.  Ngôn ngữ phổ biến dùng bởi World Wide Web là HTML Hyper Text Markup Language).
HTML cho tác giả các ý nghĩa để:
Phổ biến các tài liệu trực tuyến với các heading, văn bản, bảng, danh sách,  ảnh,..v.v…

Truy tìm thông tin trực tuyến theo các liên kết siêu văn bản bằng việc kích vào một nút

Thiết kế các định dạng cho việc kiểm soát các giao dịch (transaction) với các thiết bị từ xa, đối với người dùng trong việc tìm kiếm thông tin, tạo các sản phẩm, đặt hàng,.v.v…

Bao gồm spread-sheets, video clips, sound clips, và các ứng dụng trực tiếp khác trong các tài liệu của họ.
Các trang Web đầy sinh động mà bạn thấy trên World Wide Web là các trang siêu văn bản được viết bằng ngôn ngữ đánh dấu siêu văn bản hay HTML HyperText Markup Language. HTML cho phép bạn tạo ra các trang phối hợp hài  hòa văn bản thông thường với hình ảnh, âm thanh, video, các mối liên kết đến các *trang siêu văn bản khác…*
Tên gọi ngôn ngữ dánh dấu siêu văn bản phản ánh đúng thực chất của công *cụ này:
*

Đánh dấu **(Markup)*: *HTML là ngôn ngữ của các thẻ đánh dấu **Tag. Các *thẻ này xác định cách thức trình bày đoạn văn bản tương ứng trên màn hình.*

Ngôn Ngữ (Language): *HTML là một ngôn ngữ tương tự như các ngôn ngữ *lập trình, tuy nhiên đơn giản hơn. Nó có cú pháp chặt chẽ để viết các lệnh thực 13 hiện việc trình diễn văn bản. Các từ khoá có ý nghĩa xác định được cộng đồng *Internet thừa nhận và sử dụng. Ví dụ b = bold, *ul = unordered list, …

Văn Bản **(Text): *HTML đầu tiên và trước hết là để trình bày văn bản và dựa *trên nền tảng là một văn bản. Các thành phần khác như hình ảnh, âm thanh, hoạt *hình.*. đều phải cắm neo vào một đoạn văn bản nào đó.

Siêu Văn Bản (Hyper): *HTML cho phép liên kết nhiều trang văn bản rải rác  *khắp nơi trên Internet. Nó có tác dụng che dấu sự phức tạp của Internet đối với  *người sử dụng. Người dùng Internet có thể đọc văn bản mà không cần biết đến văn *bản đó nằm ở đâu, hệ thống được xây dựng phức tạp như thế nào. HTML thực sự *đã vượt ra ngoài khuôn khổ khái niệm văn bản cổ điển.*

Cảm ơn Elly về những thông tin của cô. Tiếp theo chúng ta sẽ tìm hiểu về  Các đặc điể*m của siêu văn bản *

Điều tôi muốn đề cập đầu tiên đến các bạn là :

1/  Độc lập với phần cứng và phần mềm

HTML độc lập với phần cứng và phần mềm. Một tài liệu HTML được viết bằng một phần mềm soạn thảo cụ thể bất kỳ, trên một máy cụ thể nào đó đều có thể đọc được trên bất kì một hệ thống tương thích nào.

Điều này có nghĩa là các tệp siêu văn bản có thể được trình duyệt hiển thị trên MAC hay PC tùy ý mà không phải sửa chữa thay đổi gì. Sở dĩ có được tính *chất này là vì các thẻ chỉ diễn đạt yêu cầu cần phải làm gì chứ không cụ thể cần *làm như thế nào.

Cũng vì lẽ đó mà bạn không thể chắc chắn trang tài liệu siêu văn bản của *bạn sẽ hiện lên màn hình chính xác là như thế nào vì còn tuỳ theo trình duyệt thể *hiện các thành phần *HTML ra sao.
*Trong thực tiễn, HTML chỉ thực sự độc lập đối với phần cứng, chưa hoàn *
toàn độc lập đối với phần mềm. *Chỉ phần cốt lõi là chuẩn hoá, c n các phần mở rộng do từng nhà phát triển xây dựng thì không hoàn toàn tương thích nhau.

2/  Độc lp với khái niệm trang và *thtự các trang*

Một tính chất nữa là HTML độc lập với khái niệm trang. Văn bản được trình bày tùy theo kích thước của cửa sổ hiển thị: cửa sổ rộng bề ngang thì sẽ thu ngắn hơn, cửa sổ hẹp bề ngang thì sẽ được k o dài ra để hiển thị cho hết nội dung. Độ dài của văn bản HTML thực sự không bị hạn chế.

3/ Website và trang chủ **– homepage**

WebPage

CloudFlare Là Gì ? Sử Dụng Nó Ra Sao ?

cloudflareDù không giành chiến thắng tại TechCrunch Disrupt vừa qua, nhưng CloudFlare là một trong những dịch vụ thú vị nhất tại hội nghị này.

CloudFlare là một DNS đồng thời là mạng phân phối nội dung (Content Delivery Network – CDN) phân tán, có nhiều tính năng bảo mật thú vị. CloudFlare hứa hẹn tăng độ truy cập website của bạn trung bình là 30% và giảm đáng kể lượng bandwidth sử dụng cũng như server load bằng cách ngăn chặn spam bot và các loại tấn công khác nhằm vào website.

Theo Wikipedia:

[box type=”info” ]

CloudFlare is a content delivery network (CDN) and distributed domain name server (DNS) service marketed as improving website performance and speed and providing security. (CloudFlare là một dịch vụ CDN & DDNS kết hợp để gia tăng tốc độ & tính bảo mật cho website của bạn)

[/box]

Vậy CloudFlare hoạt động thế nào ?

WithoutCloudFlare

Qua hình ảnh trên có lẽ bạn đã hiểu được phần nào rôi chứ nhỉ ?

CloudFlare giống như một cái sàng, sàng lọc tất cả mọi truy cập từ Internet, bao gồm Người dùng thật, Hệ thống Crawler, và cả Hacker nữa, cũng sẽ truy cập vào website của bạn thông qua hệ thống của CloudFlare, rồi CloudFlare mới đẩy lượng truy cập (đã được sàng lọc) sang cho website bên bạn.

cacheing-the-uncacheable-cloudflares-railgun illustration-reflection-attack-1

illustration-smurf-attack

[box type=”info” ]

Cái lợi khi sử dụng:

Cái dễ nhận ra nhất là tiết kiệm băng thông, đây là do CloudFlare đã chứa và phục vụ các file tĩnh thay cho host của bạn. Ngoài ra, làm giảm khả năng highload cho host của bạn. Theo như CloudFlare quảng cáo và so sánh thực tế, mình nhận thấy:

  • Tiết kiệm băng thông: lượng băng thông giảm hẳn chỉ còn 1/2 hoăc 1/3 so với trước khi dùng
  • Cập nhật DNS: cái này không được đề cập tới trong quảng cáo nhưng là cái mình thấy ấn tượng, cập nhật DNS rất nhanh, chỉ trong vài phút

[/box]

[box type=”info” ]

Lợi bất cập hại ?

  • Nếu website của bạn có máy chủ đặt tại Việt Nam, khách truy cập cũng chủ yếu đến từ Việt Nam. Việc sử dụng CloudFlare làm chậm đi tốc độ tải trang của bạn rõ rệt.
  • Sử dụng CloudFlare thì không ai có thể biết được IP máy chủ của bạn.Điều này sẽ giúp bạn tránh được các Hacker dòm ngó tấn công local attack?. Nhưng vấn đề thực sự nằm ở chỗ nếu website của bạn không bảo mật kĩ thì kiểu gì bạn cũng sẽ bị tấn công không bằng cách này thì bằng cách khác.Và bạn cũng sẽ không bao giờ biết được IP thật sự của khách khi truy cập vào website của bạn.
  • Nếu bạn muốn chặn cả dải IP của Trung Quốc hoặc từ nước ngoài? Hay đơn giản là IP của những spammer dai như đỉa ? quên chuyện đó đi vì bạn không thể làm được điều đó trên máy chủ của bạn.Chặn ip của CloudFlare đồng nghĩa với việc bạn chặn luồng truy cập từ toàn thế giới.
  • Cả thế giới truy cập vào website của bạn thông qua một vài dải IP của CloudFlare. Điều này 100% khiến firewall của máy chủ hiểu lầm rằng CloudFlare đang tấn công vào máy chủ của bạn .Nguyên nhân do một vài IP của CloudFlare có luồng dữ liệu ra vào máy chủ quá lớn.Mình đã phân tích và chứng minh được rằng trường hợp nhiều bạn gặp lỗi “Site Offline” trong khi máy chủ vẫn bình thường là do Firewall đã tự động block hết ip của CloudFlare. Thử tưởng tượng xem một máy chủ Share Hosting mà có nhiều website cùng sử dụng CloudFlare thì nó sẽ tệ thế nào ?
  • Mặc dù được quảng cáo là giảm thiểu thiệt hại khi bị tấn công từ chối dịch vụ (DDoS) nhưng vô hình chung khi sử dụng CloudFlare chúng ta lại gặp được những vấn đề rất bất lợi. Cụ thể bạn sẽ không thể nào biết được địa chỉ thật sự của hacker.Nếu không sử dụng CloudFlare trường hợp hacker dùng 1 máy tính tấn công vào website của bạn,HP chỉ cần chặn IP đó ở firewall là xong.Nhưng khi sử dụng cloudflare luồng dữ liệu đi tới Máy chủ của bạn quá lớn, CloudFlare sẽ phân luồng dữ liệu đó ra nhiều luồng với nhiều địa chỉ IP khác nhau. Vô tình điều này sẽ làm Máy chủ của bạn sập nhanh hơn,quản trị bối rối hơn do có quá nhiều IP của CloudFlare cùng tấn công vào Website của bạn(tất nhiên nó cũng được giảm thiểu theo quảng cáo của CloudFlare).
  • Chỉ cần bật Captcha lên là bạn có thể ngăn chặn mọi cuộc tấn công ddos ? Bạn đừng nhầm, Hacker có những công cụ rất tốt có thể vượt qua được cả reCaptcha. Trong trường hợp ddos thông thường website của bạn vẫn cứ bị ảnh hưởng như thường. Điều này mình đã tự kiểm chứng rất nhiều.
  • Uptime website của bạn ngoài phụ thuộc vào máy chủ hosting còn bị phụ thuộc vào độ ổn định của CloudFlare.

[/box]

[box type=”note” ]

Kết luận

Bạn chỉ nên dùng khi:

  • Website đặt tại máy chủ nước ngoài, có lượng traffic chủ yếu ở VN hoặc lượng traffic toàn thế giới.
  • Bạn muốn che giấu địa chỉ ip máy chủ website của bạn.

[/box]

Homepage : https://www.cloudflare.com

Bài 1 – World Wide Web Là Gì ?

Thật sự mà nói tôi đã gia nhập thế giới Internet được 10 năm rồi . Ấy vậy mà có những thứ nhỏ nhặt tôi vẫn thường sử dụng mà không để ý đến như cái chúng ta đang đề cập đến đây

WWW hay còn gọi là World Wide Web là gì vậy ?

world-wide-web

Elly cô có ý kiến gì chứ ?

– Wow ! Tôi cũng như anh thôi cũng không để ý đến nó . Vậy nên tôi cũng không rõ nó là gì cả !

Tôi thở dài đáp :

– Đôi khi những cái nhỏ nhặt như thế lại hình thành nên những cái vĩ đại mà chúng ta không để ý đến . Tôi lò mò trên internet thông qua các công cụ tìm kiếm . Sau cùng tôi đúc kết lại được như sau :

[box type=”info” ]

World Wide Web (WWW) là một mạng các tài nguyên thông tin. WWW dựa trên 3 cơ chế để các tài nguyên này trở nên sẵn dùng cho người xem càng rộng  rãi nhất càng tốt:

– Cơ chế đặt tên cùng dạng đối với việc định dạng các tài nguyên trên WWW  (như các URL)

– Các giao thức, để truy nhập tới các tài nguyên qua WWW (như HTTP)
– Siêu văn bản, để dễ dàng chuyển đổi giữa các tài nguyên (như HTML). Các ràng buộc giữa ba cơ chế được nêu rõ dưới đây

[/box]

Qua thông tin trên . Tôi thấy có nhắc đến khái niệm về URL . Vậy nó là gì vậy – Elly đưa ra câu hỏi .

Đợi một tí, chúng ta sẽ có thông tin ngay đây – Tôi đáp.

[box type=”info” ]

Giới thiệu về URL:
Mọi tài nguyên sẵn dùng trên WWW – tài liệu HTML, ảnh, video clip, chương trình,… – có một địa chỉ mà có thể được mã hóa bởi một URL.

Các URL thường gồm 3 phần:
– Việc đặt tên của các cơ chế dùng để truy nhập tài nguyên
– Tên của máy tính lưu trữ (tổ chức) tài nguyên
– Tên của bản thân tài nguyên, như một đường dẫn
Ví dụ coi URL chỉ rõ trang W3C Technical Reports: http://www.w3.org/TR

URL này có thể được đọc như sau: Có một tài liệu sẵn dùng theo giao thức HTTP, đang lưu trong máy www.w3.org, có thể truy nhập theo đường dẫn “/TR”. Các cơ chế khác ta có thể thấy trong các tài liệu HTML bao gồm “mailto” đối với thư điện tử và “ftp” đối với FTP. Đây là một ví dụ khác về URL. Ví dụ này ám chỉ tới hộp thư (mailbox) của người dùng:

….đây là văn bản …  Mọi góp ý, xin gửi thư tới
Joe Cool

[/box]

[box type=”info” ]

* Các định danh đoạn (fragment identifiers):*

Một số URL ám chỉ tới việc định vị một tài nguyên. Kiểu này của URL kết  thúc với “#” theo sau bởi một dấu hiệu kết nối (gọi là các định danh *đoạn*). Ví dụ,  đây là một URL đánh dấu một móc tên là section2:
http://somesite.com/html/top.html#section
2

[/box]

[box type=”info”]

Các URL tương đối:
Một URL tương đối không theo cơ chế đặt tên. Đường dẫn của nó thường tham chiếu tới một tài nguyên trên cùng một máy như tài liệu hiện tại. Các URL tương đối có thể gồm các thành phần đường dẫn tương đối (như “..” nghĩa là một mức trên trong cấu trúc được định nghĩa bởi đường dẫn), và có thể bao gồm các dấu hiệu đoạn.

Các URL được giải quyết để cho toàn các URL sử dụng một URL gốc. Như một ví dụ của giải pháp URL tương đối, giả sử chúng ta có URL gốc

http://www.acme.com/support/intro.html”. URL tương đối trong đánh dấu dưới đây cho một liên kết siêu văn bản:

Suppliers sẽ mở rộng thành URL đầy đủ

http://www.acme.com/support/suppliers.html” trong khi URL tương đối trong việc đánh dấu cho một ảnh dưới đây

”logo” sẽ mở rộng thành URL đầy đủ “http://www.acme.com/icons/logo.gif”

Trong HTML, các URL được dùng để:
– Liên kết tới tài liệu hoặc tài nguyên khác, (xem A và LINK)
– Liên kết tới kiểu dạng bên ngoài hoặc kịch bản (script) (xem LINK và SCRIPT)
– Gồm một ảnh, đối tượng, hoặc applet trong một trang, (xem IMG, OBJECT, APPLET và INPUT)
– Tạo một bản dồ ảnh (xem MAP và AREA)
– Tạo một form (xem FORM)
– Tạo một khung tài liệu (xem FRAME và IFRAME)
– Trích dẫn một chỉ dẫn bên ngoài (xem Q, BLOCKQUOTE, INS và DEL)
– Tham khảo các quy ước siêu dữ liệu mô tả một tài liệu (xem HEAD)

[/box]

Ngày nay người ta dùng máy tính như một công cụ rất hữu ích để truy nhập Internet, chủ yếu là tìm kiếm thông tin. Các thông tin này có thể là các văn bản, hình ảnh âm thanh hay thông tin đa phương tiện… Với giao diện thân thiện bởi việc sử dụng các ký hiệu, biểu tượng rất gợi tả gần giống với các hình ảnh đời thường và chỉ cần những thao tác đơn giản ta đã có ngay thông tin cần tìm kiếm ở trước mặt.

Nhu cầu sử dụng máy tính để truy cập Internet tìm kiếm thông tin ngày càng nhiều và người sử dụng máy tính có trình độ tin học và tiếng Anh để hiểu các thông báo của máy khác nhau. Làm thế nào để mọi người có thể dễ dàng sử dụng máy tính để truy cập Internet như một công cụ phục vụ đắc lực cho việc tra cứu tìm kiếm thông tin trên mạng thông tin rộng lớn nhất toàn cục.

Việc này trở nên dễ dàng hơn bởi ý tưởng siêu văn bản (Hypertext). Siêu văn bản là các văn bản “thông minh” có thể giúp người đọc tìm và cung cấp cho họ các tài liệu liên quan. Người đọc không phải mất công tìm kiếm trong kho thông tin Internet vô tận.

Khái niệm siêu văn bản do nhà tin học Ted Nelson đề xuất vào năm 1965 như một ước mơ (“Computer Dreams”) về khả năng của máy tính trong tương lai. Ông hy vọng về các máy tính có trí tuệ như con người, biết cách truy tìm các thông tin cần thiết.

Dự án thực hiện siêu văn bản là của một kỹ sư trẻ người Anh tên là Tim Berners – Lee. Sau khi tốt nghiệp Đại học Oxfort (Anh) năm 1976, năm 1980 Tim đã viết một chương trình mô phỏng mối liên kết hai chiều bất kỳ trên một đồ thị như kiểu liên kết siêu văn bản. Năm 1989, trong khi làm việc tại Viện nghiên cứu kỹ thuật hạt nhân châu Âu (CERN) tại Berne (Thụy sỹ), thấy các đồng nghiệp rất vất vả trong việc tra tài liệu, Tim đã đưa ra một đề án lưu trữ siêu văn bản trên máy tính sao cho dễ dàng tìm kiếm tài liệu hơn.

Trong thế giới siêu văn bản WWW, người sử dụng có thể dễ dàng đi từ tài liệu này sang tài liệu khác thông qua các mối liên kết. Như vậy ta có thể du lịch trong xa lộ thông tin phong phú trong khi vẫn ngồi tại nhà. Kỹ thuật siêu văn bản  giúp cho ta không phải sang tận Luvrơ ở Paris mà vẫn có thể chiêm ngưỡng được các kiệt tác hội họa. Chính nó đã góp phần tạo ra bước phát triển bùng nổ của Internet trong những năm gần đây.

Chắc hẳn bây giờ các bạn đã hiểu WWW là gì, biết được lịch sử hình thành của nó.

Xin hẹn gặp các bạn ở bài viết sau. Tôi và Elly chúc bạn học tốt !

Giới Thiệu Về HTML

Xin chào các bạn . Vậy là chúng ta đang bước sang một công nghệ mới . Nói mới là do đây là bài viết đầu tiên của tôi ở chuyên mục này . Nó cũ vì do khái niệm HTML đã quá quen thuộc với chúng ta. Ở khắp mọi nơi ở đâu có website ở đó có HTML . Tuy nhiên để bắt đầu loạt bài viết ở chuyên mục này tôi sẽ không đi đâu đó quá xa mà vẫn đi từ những thứ căn bản nhất để cho các bạn chưa có tí gi về HTML vẫn hiểu nó là gì và nó làm việc ra sao ;).

HTMLIs

Nếu ở chuyên mục C# chúng ta có anh bạn của tôi Boo trợ giúp khá nhiều. Thì ở chuyên mục này xin mời các bạn làm quen với một cô nàng có một cái tên rất dễ thương Elly.

Elly xin chào các bạn và rất mong sẽ cùng các bạn đi hết giáo trình này.

Để tránh mất thời gian Elly xin cùng các bạn giới thiệu về ngôn ngữ HTML nhé :

[box type=”info” ]

Ngôn ngữ Siêu văn bản HTML (Hyper Text Markup Language) là ngôn ngữ biểu diễn văn bản cho phép ta đưa vào một văn bản nhiều thuộc tính cần thiết để có thể truyền thông quảng bá trên mạng toàn cục   WW (World Wide Web). HTML cho phép ta đưa hình ảnh đồ họa vào văn bản, thay đổi cách bày trí của văn bản, và tạo những tài liệu siêu văn bản có khả năng đối thoại tương tác với người dùng.

HTML chủ yếu xoay quanh khái niệm “thẻ” (tag) làm nền tảng. Một ví dụ về tag là . Hầu hết các chức năng trên HTML có thẻ mở và thẻ đóng tạo thành một cặp giới hạn một đoạn văn bản. Ví dụ là thẻ “bold” nghĩa là chữ béo. Toàn bộ đoạn văn bản giữa sẽ được thể hiện dưới dạng chữ béo (hay chữ đậm) khi văn bản đó được xem bằng một trình duyệt tương ứng. Ví dụ xin chào sẽ được hiện lên là xin chào.

Để tạo một siêu văn bản, ta có thể dùng bất cứ một chương trình soạn thảo nào (ví dụ: NC-Norton Commander, EDIT – của DOS, NotePad hay Write – của Windows 3.x, WordPad của Win95, WinWord 2.0 hay 6.0, FoxPro, Borland C++ IDE, Borland Pascal IDE, FrontPage, TextPad, v.v…), chỉ cần nắm được các thẻ của HTML, và khi ghi vào đĩa thì cần lưu dưới dạng file text. Tên file có đuôi mở rộng là HTM (hoặc HTML). Song có một hạn chế là dạng văn bản khi ta soạn với khi ta xem sau này (trên WWW) không giống nhau. Chính vì lẽ đó mà nhiều hang tung ra phần mềm soạn siêu văn bản What You See Is What You Get (WYSIWYGcái ta thấy cũng là cái ta có được).

Hãng Microsoft cũng đã tung ra một tiện ích được sử dụng rộng rãi. Ngoài ra, còn có nhiều tiện ích chuyển đổi từ dạng RTF (có thể soạn bằng WinWord hay WordPad) sang HTML, hay các phiên bản sau này của trình duyệt Web như NetScape có sẵn luôn chức năng này. Các tiện ích đó đều giống nhau ở chỗ cho phép ta gõ trực tiếp các thẻ vào văn bản nhưng cũng có thể dùng tổ hợp của thanh công cụ (toolbar), hộp thoại (dialog), thực đơn (menu) hay danh sách các lựa chọn (pop-up list). Để gạch dưới đoạn văn bản trong ví dụ vừa rồi, ta có thể gõ vào xin chào, dùng chuột chọn, rồi bấm vào nút Underline trên thanh công cụ. Văn bản sẽ tự động được chuyển thành xin chào (ở đây thì là cặp mở/đóng của tag có chức năng giới hạn đoạn văn bản cần được gạch dưới). 2 Ngày nay, do sự phát triển như thác lũ của mạng toàn cục, HTML cũng ngày càng trở nên phức tạp và hoàn thiện hơn để đáp ứng được những yêu cầu mới nảy sinh trong quá trình phát triển đó (như âm thanh, hình ảnh động,  .v…).

Người ta gọi đó là những phiên bản của HTML và đánh số để biểu thị. HTML 2, HTML 2+, HTML 3,… là để chỉ những phiên bản sau này. Một trong những điểm mạnh của HTML là một văn bản bất kỳ nếu tuân thủ tiêu chuẩn HTML đều có thể hiện lên màn hình hay in ra, tóm lại là hiểu được, bởi bất kỳ loại phần mềm hay máy tính nào mà người đọc có, không phân biệt trình duyệt nào (NetScape trên Windows hay Lynx trên UNIX, thậm chí cho người khiếm thị bằng phần mềm đặc biệt).

Người ta còn đang tranh cãi nhiều trên Internet về HTML “tốt”. Định hướng nguyên thủy của HTML là tạo ra một phương pháp vạn năng để lưu giữ và thể hiện thông tin. Sau này người ta coi HTML như một ngôn ngữ định hướng nội dung – “trong tài liệu có gì” quan trọng hơn nhiều so với “tài liệu có đẹp không”.

[/box]

Vậy là chúng ta đã biết được HTML là gì và nó sinh với một trọng trách vô cùng to lớn . Tiếp theo chúng ta sẽ đi vào tìm hiểu từng phần cốt lõi của nó . Hẹn gặp các bạn vào bài viết tiếp theo cùng Elly nhé !

Bài 3 – Kiểu Liệt Kê (Enumerator)

Xin chào . Tôi đã trở lại, cuối tuần hôm qua quả là một ngày mệt mỏi đối với tôi . Cứ tuần lại đến, tôi phải đèo gia đình mình đi siêu thị để mua một số nhu yếu phẩm hằng ngày . Điều làm tôi ngán ngẩm ở siêu thì này là mỗi mặt hàng họ lại phải để riêng một túi ni-lông đều này hiển nhiên vô cùng tốn kém và tôi lại nhận được thêm hàng tá túi ni-lông mỗi khi đi siêu thị về, và điều này không tốt cho môi trường tí nào !

Này Boo :

– Trong quá trình sử dụng ngôn ngữ C# tôi không thấy về việc tối ưu khi sử dụng các biến nhỉ ? . Tại sao không gói một tập hợp các phần tử có cùng yếu tố và chức năng vào một cái “túi” , và liệu trong C# có cung cấp cho chúng ta một cái “túi” như thế không :D.

– Sure . Có chứ , có lẽ cậu chưa biết . C# cung cấp một kiểu dữ liệu nói theo cách của cậu là một cái “túi” để gói các phần tử lại – Boo thạ thấp giọng và từ tốn đáp.

Hôm nay tôi sẽ chia sẻ với cậu về kiểu dữ liệu Enumerator . Đừng băn khoăn vì ngay sau đây tôi sẽ cậu một định nghĩa về nó :

[box type=”info” ]

Định nghĩa

Kiểu liệt kê đơn giản là tập hợp các tên hằng có giá trị không thay đổi (thường được gọi là danh sách liệt kê).[/box]EnumIs

[box type=”info” ]

* Cách khai báo và sử dụng *

Các bạn hãy xem lại ví dụ ở bài học số 2 về cách sử dụng biểu tượng hằng, chúng ta có hai biểu tượng hằng có quan hệ với nhau:
const int DoDong = 0;
*const int DoSoi = 100; *

Do mục đích mở rộng ta mong muốn thêm một số hằng số khác vào danh sách trên, như các hằng sau:
const int DoNong = 60;
const int DoAm = 40;
*const int DoNguoi = 20; *

Các biểu tượng hằng trên điều có ý nghĩa quan hệ với nhau, cùng nói về nhiệt độ của nước, khi khai báo từng hằng trên có vẻ cồng kềnh và không được liên kết chặt chẽ cho lắm. Thay vào đó C# cung cấp kiểu liệt kê để giải quyết vấn đề trên:
enum NhietDoNuoc

{

DoDong = 0,

DoNguoi = 20,

DoAm = 40,

DoNong = 60,

DoSoi = 100,

}

[/box]

Mỗi kiểu liệt kê có một kiểu dữ liệu cơ sở, kiểu dữ liệu có thể là bất cứ kiểu dữ liệu nguyên nào như int, short, long… tuy nhiên kiểu dữ lịêu của liệt kê không chấp nhận kiểu ký tự. Để khai báo một kiểu liệt kê ta thực hiện theo cú pháp sau:

[box type=”info” ]

* [thuộc tính] [bổ sung] enum <tên liệt kê> [:kiểu cơ sở]*
{
*   danh sách các thành phần liệt kê*
}

[/box]

Thành phần thuộc tính và bổ sung là tự chọn có thể có hoặc không.

Một kiểu liệt kê bắt đầu với từ khóa enum, tiếp sau là một định danh cho kiểu liệt kê:

enum NhietDoNuoc

Thành phần kiểu cơ sở chính là kiểu khai báo cho các mục trong kiểu liệt kê. Nếu bỏ qua thành phần này thì trình biên dịch sẽ gán giá trị mặc định là kiểu nguyên int, tuy nhiên chúng ta có thể sử dụng bất cứ kiểu nguyên nào như ushort hay long,..ngoại trừ kiểu ký tự. Đoạn ví dụ sau khai báo một kiểu liệt kê sử dụng kiểu cơ sở là số nguyên không dấu uint:

enum KichThuoc :uint { Nho = 1, Vua = 2, Lon = 3, }

Lưu ý là khai báo một kiểu liệt kê phải kết thúc bằng một danh sách liệt kê, danh sách liệt kê này phải có các hằng được gán, và mỗi thành phần phải phân cách nhau dấu phẩy. Ví dụ sau minh họa về cách sử dụng kiểu liệt kê

using System; using System.Collections.Generic; using System.Text; namespace Bien { class KieuEnum { enum NhietDoNuoc: int { DoDong = 0, DoNguoi = 20, DoAm = 40, DoNong = 60, DoSoi = 100, } static void Main() { System.Console.WriteLine( “Nhiet do dong: {0}”,(int)NhietDoNuoc.DoDong); System.Console.WriteLine(“Nhiet do nguoi: {0}”, (int)NhietDoNuoc.DoNguoi); System.Console.WriteLine(“Nhiet do am: {0}”, (int)NhietDoNuoc.DoAm); System.Console.WriteLine(“Nhiet do nong: {0}”, (int)NhietDoNuoc.DoNong); System.Console.WriteLine(“Nhiet do soi: {0}”,(int)NhietDoNuoc.DoSoi); Console.ReadLine(); } } }

[box type=”success” ]

Kết quả:

Nhiet do dong: 0

Nhiet do nguoi: 20

Nhiet do am: 40

Nhiet do nong: 60

Nhiet do soi: 100

[/box]

Chú ý: Mỗi thành phần trong kiểu liệt kê tương ứng với một giá trị số, trong trường hợp này là một số nguyên. Nếu chúng ta không khởi tạo cho các thành phần này thì chúng sẽ nhận các giá trị tiếp theo với thành phần đầu tiên là 0. Ta xem thử khai báo sau:

enum Thutu { ThuNhat, ThuHai, ThuBa = 10, ThuTu }

Khi đó giá trị của : ThuNhat là 0, giá trị của ThuHai là 1, giá trị của ThuBa là 10 và giá trị của ThuTu là 11. Chú ý: Kiểu liệt kê là một kiểu hình thức do đó bắt buộc phải thực hiện phép chuyển đổi tường minh với các kiêu giá trị nguyên:

int x = (int) ThuTu.ThuNhat;

Done . Tới trình bày xong rồi nhé .

Vâng ! Cảm ơn Boo. Lần sau chúng ta trò truyện tiếp nhé.

Bài 2 – Boxing Và UnBoxing (Phần Tiếp Theo)

Như lần trước khi trò truyện và trao đổi với bạn Boo . Chúng ta có nghe đến thuật ngữ Boxing và UnBoxing theo như bạn Boo của tôi nói rằng thì đây là quá trình :

Bạn có thể chuyển đổi từ kiểu dữ liệu này sang kiểu dữ liệu khác qua

Boxing

Chi tiết của quá trình Boxing được tôi kết luận lại như sau :

[box type=”info” ]

Boxing

Bạn có thể dễ dàng hình dung quá trình này thông qua tên gọi của nó, nghĩa là một giá trị được đưa vào bên trong một đối tượng. Nói cách khác, boxing là những xử lý cho phép kiểu dữ liệu giá trị như (int, unint, long…) được đối xử như kiểu tham chiếu ( các đối tượng). Và quá trình boxing được thực hiện ngầm định.

[/box]

Đây là chương trình minh họa quá trình trên.

using System; class Boxing { public static void Main() { int i = 123; object o = i; Console.WriteLine(The object value = {0}, o); Console.ReadLine(); } }

Vâng như vậy là chúng ta đã hiểu phần nào về việc Boxing một giá trị . Từ đó có thể uyển chuyển hơn trong việc sử dụng kiểu dữ liệu . Vậy một câu hỏi đặt ra là gì khi đã Boxing rồi thì làm sao để quay ngược lại quá trình đó . Hãy cùng tìm hiểu quá trình UnBoxing nhé . Và một lần nữa hãy nhờ bạn Boo của tôi giải quyết vấn để này cho chúng ta.

[box type=”info” ]

* Unboxing*

là quá trình ngược lại với boxing, tức là đưa từ một đối tượng ra một giá trị . Quá trình này sẽ được thực hiện một cách tường minh. Và để thực hiện được điều này bạn cần chắc chắn rằng đối tượng đã được boxing đúng kiểu giá trị đưa ra và sao chép giá trị từ thể hiện hay đối tượng vào biến kiểu giá trị

[/box]

Hình dưới đây mô tả quá trình unboxing. Như bạn thấy nó ngược lại với quá trình boxing ở trên

Unboxing

Đây là chương trình minh họa cả quá trình boxing và unboxing:

using System; public class Unboxing { public static void Main() { int i = 123; // Boxing object o = i; // Unboxing phải được thực hiện tường minh tường minh int k = (int) o; Console.WriteLine(k: {0}, k); } }

Nếu một đối tượng được Unboxing là null hay là tham chiếu đến một đối tượng có kiểu dữ liệu khác, một Exception (Ngoại lệ) sẽ được phát sinh, nói đơn giản là một cái lỗi ấy . Chúng ta sẽ cùng bàn về vấn đề này trong những bài sau nhé.

Một lần nữa xin cảm ơn bạn Boo !

Cậu còn phải ghi ơn tôi một chặng đường dài nữa đấy – Boo thản thiên đáp !

Giới Thiệu Về Khóa Học C#

Xin chào các bạn . Vậy là đã cuối tuần . Tôi còn nhớ lần trước có tự hứa với bản thân là sẽ tìm hiểu ngôn ngữ C# qua lời giới thiệu của anh bạn của tôi – Boo. Và hôm nay không có lý do gì tôi phải hoản nó lại khi tôi có khá nhiều thời gian rảnh lúc này.

Sau khi lang thang trên mạng như một bóng ma . Tôi đã tìm được khá nhiều tài liệu về ngôn ngữ này . Tôi xin chia sẻ với các bạn như sau :

C# là một ngôn ngữ mềm dẻo và rất phổ biến hiện nay. Nhiều lập trình viên đã lựa chọn ngôn ngữ này cho các ứng dụng của mình bởi sự thân thiện và những tính năng mạnh mà nó hỗ trợ. Bạn có thể yên tâm khi sử dụng C# để viết các phần mềm desktop hay các ứng dụng web. Và bây giờ cùng với tôi chúng ta sẽ tiếp cận ngôn ngữ này.

cs-design-goals

C# là một ngôn ngữ mềm dẻo và rất phổ biến hiện nay. Nhiều lập trình viên đã lựa chọn ngôn ngữ này cho các ứng dụng của mình bởi sự thân thiện và những tính năng mạnh mà nó hỗ trợ. Bạn có thể yên tâm khi sử dụng C# để viết các phần mềm desktop hay các ứng dụng web. Khóa học C# căn bản của chúng tôi sẽ giúp bạn tiếp cận với ngôn ngữ này.

Sau khi tìm hiểu cơ bản tôi rút ra những điều sau đây mà có lẽ anh bạn Boo của tôi cũng đang gặp phải :

  • Chúng ta phải có nền tảng cơ bản về .NET Framework – Bạn có thể xem tại đây hoặc không vì chúng ta sẽ đi sâu vào nó ở những chương kế tiếp
  • Chúng ta cần một trình biên dịch (IDE) ở đây tôi tìm được bộ Visual Studio (VS) 2005 có lẽ đây là sự khởi đầu cho những điều cơ bản . Tuy nhiên bây giờ bộ VS đã ra phiên bản 2015 ( hoặc cao hơn do tôi chỉ cập nhật tới đây ) . Riêng tôi thì sử dụng bộ VS 2013 :)

Tiếp theo chúng ta sẻ chuẩn bị tinh thần để tìm hiểu một khái niệm mới là Lập trình hướng đối tượng . Nằm bắt được  các kiến thức nền tảng của công nghệ .NET . Từ đó chúng ta sẽ có thể tự tin tiếp cận với những kiến thức cao hơn trong công nghệ .NET.

Hãy bắt đầu ngây bay giờ !


Chú Thích :

Framework có tên đầy đủ là .NET Framework, do hãng Microsoft tạo ra để tạo điều kiện thuận lợi cho sự phát triển các ứng dụng.

Vì vậy, nó được xem như là một thư viện chứa nhiều công nghệ của nhiều lĩnh vực hay là bộ khung, sườn để phát triển các phần mềm ứng dụng.

Tức là nó tạo ra các “vật liệu” ở từng lĩnh vực cho người lập trình viên, thay vì họ phải mất nhiều thời gian để tự thiết kế trước khi dùng. Do vậy, người lập trình viên chỉ cần tìm hiểu và khai thác các vật liệu này rồi thực hiện (tức là lập trình) để gắn kết chúng lại với nhau, tạo ra sản phẩm. Chính vì vậy, tùy vào cách sáng tạo của người lập trình viên mà sản phẩm tạo ra thể hiện những tính năng khác nhau nhưng vẫn nhất quán trong cách xây dựng, điều này sẽ tránh được những xung đột về phần mềm khi chúng cùng hoạt động.

Framework có 2 thành phần chính là Common Language Runtime (CLR) và NET Framework class library. CLR là một chương trình viết bằng .NET, không được biên dịch ra mã máy mà nó được dịch ra một ngôn ngữ trung gian Microsoft Intermediate Language (MSIL). Khi chạy chương trình, CLR sẽ dịch MSIL ra mã máy để thực thi các tính năng. Còn NET Framework class library cung cấp thư viện lập trình như cho ứng dụng, cơ sở dữ liệu, dịch vụ web…
Chẳng hạn, để thiết kế một trò chơi đua xe, nếu không có bộ Framework chuyên dụng cho game, người lập trình game phải tự tạo ra: khung xe, bánh xe, người, đường đi, cây, biển báo… rồi mới tính đến chuyện “lắp ghép” chúng lại với nhau để tạo ra không gian cho game; trong khi cũng với dạng trò chơi này, nhưng nếu dùng bộ Framework có sẵn đã được phát triển thì người lập trình viên chỉ cần viết các lệnh để lấy chúng ra từ Framework và ghép chúng lại.

Để dễ hiểu, chúng ta có thể hình dung, Framework bao gồm các nguyên vật liệu như gạch, cát, xi măng, sắt… nhưng tùy theo cách thiết kế của người kiến trúc sư mà tạo ra những căn nhà với hình dạng khác nhau.

Không phải mọi ngôn ngữ lập trình đều khai thác được Framework, muốn sử dụng các “vật liệu” trong bộ Framework, đòi hỏi người lập trình viên phải dùng các ngôn ngữ lập trình có hỗ trợ công nghệ .NET như VB.NET, C#.NET, ASP.NET…

Phiên bản đầu tiên Framework 1.0 được Microsoft phát hành vào ngày 13/2/2002. Tiếp theo đó là các phiên bản 1.1, 2.0, 3.0 và mới nhất hiện nay là 4.0. Nó được cập nhật thường xuyên tại trạng web www.microsoft.com/net.

Vì những lý do trên, nên nếu máy tính chưa được cài Framework hoặc đã cài nhưng chưa đúng phiên bản mà nhà sản xuất phần mềm sử dụng thì các lệnh “lắp ghép” trong các phần mềm sẽ không thực hiện được vì không có vật liệu.

Tải và cài Framework

Bạn không cần thiết phải cài đặt Framework trước khi dùng đến mà làm cho máy tính chậm đi. Khi thấy máy tính xuất hiện thông báo yêu cầu cài Framework, bạn truy cập trang webhttp://www.microsoft.com/downloads/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&displaylang=en rồi bấm chọn phiên bản để tải file cài đặt dotnetfx.exe tương ứng. Để giảm tải cho hệ thống, bạn chỉ cần cài đúng phiên bản Framework mà phần mềm yêu cầu, không cần phải cài phiên bản mới nhất; nhưng ngược lại thì không được, nghĩa là bạn không thể dùng phiên bản Framework thấp trong khi chương trình yêu cầu Framework phiên bản cao.

Các ứng dụng xây dựng dựa trên Framework là vậy. Còn khi cài các ứng dụng xây dựng trên nền Java thì bạn sẽ bắt gặp thông báo yêu cầu cài Java Runtime Environment (JRE).