Ngu ngơ học làm web (4) - Hoạt động của trình duyệt

tiếp theo của: Ngu ngơ học làm web (3) - Cơ bản về HTML
---------

Phần 4.       Hoạt động của trình duyệt


Trình duyệt đã làm gì, để từ đoạn mã HTML trong tập tin trangweb.html sau:

<!DOCTYPE html>
<html>
<head>
            <meta charset="UTF-8">
            <title>Document</title>
</head>
<body>
            Xin chào!
</body>
</html>

Cho ra kết quả là chữ ‘Xin chào!’ trên màn hình trình duyệt.

Đây là clip trình bày về quá trình hiển thị một trang web của trình duyệt. Vì trình bày bằng tiếng Anh, nên chịu khó một chút, không nghe được từ tiếng Anh nào cũng không sao, quan sát hình ảnh minh họa, vừa xem vừa hình dung. Nghe nhiều tiếng Anh cho quen, cứ quan sát một em bé học tiếng Việt thì rõ, em bé cứ nghe xong rồi bắt chước nói theo, em ấy có biết ngữ pháp, thi cử là gì đâu!!! thế mà vẫn hiểu và nói được tiếng Việt. Sau này học ngữ pháp sau, nếu thích.

Đầu tiên, người dùng phải chỉ cho trình duyệt biết vị trí của tập tin HTML. Vị trí của tập tin HTML được chỉ định bằng một địa chỉ dạng URL (Uniform Resource Locator). Địa chỉ này được nhập trên thanh địa chỉ (address bar) của trình duyệt. URL cũng xuất hiện trong các thẻ của HTML, như các thẻ: <a href=URL>, <img src=URL>, <script src=URL>, <link href=URL>.

URL có định dạng như sau:

Scheme://domain:port/path?query_string#fragment_id

Ví dụ URL:

https://en.wikipedia.org/wiki/Uniform_Resource_Locator

http://daotao.edu.vn/e-learning/ViewCourses.php?cSval=3151&SjTemp=158

file:///C:/Users/Win%208.1/Downloads/openemr/trangweb.html

Trong URL,

- Scheme (hay protocol) là giao thức được sử dụng để giao tiếp giữa web client và web server. Ví dụ: http, https, ftp, file.

- Domain là tên miền của web server, nơi chứa (các) trang web. Ví dụ: en.wikipedia.org, daotao.edu.vn.

- Port là cổng được sử dụng để giao tiếp giữa web client và web server, nếu không chỉ định rõ, thì giá trị của port sẽ được ngầm hiểu là 80.

- Path là đường dẫn (thư mục) của trang web hoặc nơi chứa các tài nguyên của một website tại web server. Ví dụ: wiki/Uniform_Resource_Locator, e-learning/ViewCourses.php, C:/Users/Win%208.1/Downloads/openemr/trangweb.html.

- Ngoài ra, URL cũng có thể chứa chuỗi truy vấn (query string) hoặc một định danh trên trang HTML (fragment_id).

Đây là định nghĩa về web client và web server:

- Web client là một chương trình có thể giao tiếp với web server, gửi yêu cầu và nhận thông tin từ web server, sau đó xử lý các thông tin nhận được, để hiển thị hoặc phục vụ các mục đích khác. Trình duyệt chính là một loại web client.

- Web server là một máy tính, cung cấp các dịch vụ WWW trên Internet. Web server gồm có: phần cứng, hệ điều hành, phần mềm web server, và nội dung của website.


Xem hình minh họa web client và web server dưới đây.





Sau khi người dùng nhập URL, gõ Enter, trình duyệt sẽ gửi một yêu cầu (request) tới web server.

Web server nhận và xử  lý request, sau khi xử lý xong, sẽ gửi kết quả về cho web client (ví dụ: gửi trang HTML về trình duyệt).

Tại trình duyệt, khi nhận được kết quả do web server trả về, trình duyệt sẽ thực hiện các việc sau:

- Phân tích (parsing) và tạo cây DOM (DOM tree)

+ Phân tích HTML

+ Phân tích CSS

+ Phân tích & thực thi Javascript

- Tạo cây kết xuất (Render tree)

- Dựng khung kết xuất (layout)

- Hiển thị (paint)

Có thể tìm hiểu kĩ hơn về các thành phần và hoạt động của trình duyệt ở trang web dưới đây, tuy nhiên vì viết bằng tiếng Anh và khá sâu, nên để đỡ mất thời gian, chỉ xem qua thôi, sau này nếu cần phần nào sẽ quay lại. http://taligarsiel.com/Projects/howbrowserswork1.htm

Quá trình hiển thị nội dung HTML được thực hiện dựa trên các đặc tả HTML và CSS của W3C (tổ chức tiêu chuẩn về web).


Trình duyệt gồm nhiều bộ phận, mỗi bộ phận có nhiệm vụ riêng. Hình sau là các bộ phận của trình duyệt.




Trong đó, rendering engine (tạm gọi là bộ phận kết xuất) có nhiệm vụ hiển thị nội dung web. Ví dụ, nếu nội dung web là HTML, bộ phận kết xuất sẽ thực hiện phân tích cú pháp HTML, CSS; sau đó, hiển thị kết quả lên cửa sổ trình duyệt.

Bộ phận kết xuất có thể hiển thị nội dung web dạng HTML, XML và hình ảnh. Để hiển thị các loại nội dung khác, trình duyệt sẽ sử dụng các bộ phận bổ sung như các plug-in, extension.

Các trình duyệt khác nhau thường sử dụng các bộ kết xuất khác nhau. Ví dụ, IE sử dụng Trident, Firefox sử dụng Gecko, Safari sử dụng WebKit, Chrome và Opera sử dụng Blink (một nhánh của Webkit). Đọc thêm về web rendering engine tại đây: https://en.wikipedia.org/wiki/Web_browser_engine.

Bộ phận kết xuất bắt đầu công việc của nó bằng cách lấy từng khối dữ liệu từ tầng mạng (networking layer), kích thước mỗi khối là 8KB.


Sau khi đã có dữ liệu, quá trình kết xuất sẽ được thực hiện theo quy trình sau:




Tạm dịch quy trình trên như sau:

- Tạo cây DOM (DOM tree)

- Tạo cây kết xuất (Render tree)

- Dựng khung kết xuất (layout)

- Hiển thị (paint)

Sau đây là chi tiết các bước của quy trình:

Tạo cây DOM

Đầu tiên, bộ phận kết xuất sẽ thực hiện phân tích cú pháp (parsing) mã HTML, mục đích là chuyển nội dung tài liệu HTML sang dạng DOM tree (tạm gọi là cây DOM).

DOM là viết tắt của Document Object Model (trong vi.wiki người ta dịch nó là Mô hình đối tượng tài liệu). DOM là một chuẩn của W3C, dùng để biểu diễn tài liệu HTML, XML; cho phép người lập trình có thể truy cập và xử lý nội dung của tài liệu HTML, XML bằng ngôn ngữ lập trình, ví dụ: JavaScript. DOM gồm ba loại là Core DOM, XML DOM và HTML DOM. Trong phần này chỉ quan tâm tới HTML DOM, để tiện trình bày, gọi tắt là DOM.

Ở dạng DOM, mọi phần tử (element) của tài liệu HTML đều được xem là các đối tượng, có thuộc tính và phương thức. Do đó, người lập trình có thể lấy, thay đổi, thêm, xóa các phần tử của tài liệu HTML. Mỗi phần tử được biểu diễn bằng một nút (node) trong cây DOM.

Trong tài liệu HTML, phần tử là các thành phần cấu tạo nên một tài liệu HTML. Mỗi phần tử được bắt đầu bằng thẻ mở (start tag), đến phần nội dung và kết thúc bằng thẻ đóng (end tag). Cấu trúc phổ biến của một phần tử là <tên thẻ> nội dung </tên thẻ>.

Ví dụ một số phần tử của HTML:

- <html></html>:  phần tử gốc của mọi phần tử trong tài liệu HTML.

- <head></head>: phần tử chứa phần đầu của tài liệu HTML, nơi đặt các tham chiếu, các khai báo cho tài liệu HTML.

- <body></body>: phần tử chứa phần thân của tài liệu HTML.

Nội dung tài liệu HTML sẽ được chuyển thành một trong các loại nút của cây DOM sau:

- Document: là nút gốc, đại diện cho toàn bộ tài liệu HTML.

- Element: tất cả các phần tử của HTML đều thuộc loại nút này.

- Text: phần văn bản trong tài liệu HTML thuộc loại nút này.

- Attribute: thuộc tính của các thẻ trong tài liệu HTML thuộc loại nút này.


- Comment: các chú thích trong tài liệu HTML thuộc loại nút này.

Dưới đây là hình minh họa kết quả chuyển từ tài liệu HTML sang cây DOM.




Tạo cây kết xuất (Render tree)

Sau khi đã có cây DOM, bộ phận kết xuất tiếp tục phân tích nội dung CSS, kết hợp với một số thông tin khác trong tài liệu HTML để tạo ra cây kết xuất.

Cây kết xuất chứa thông tin để hiển thị các phần tử của tài liệu HTML lên cửa sổ trình duyệt. Các thông tin gồm: chiều rộng, chiều cao, vị trí, màu, hướng của phần tử.

Một cách trực quan, cây kết xuất chứa các hình chữ nhật cùng với thông tin về màu và hướng. Đây là các hình chữ nhật (hay các khung) sẽ được hiển thị trong cửa sổ trình duyệt.


Cây kết xuất có cấu trúc gần giống với cây DOM. Tuy nhiên, các nút trên cây DOM nếu không được hiển thị sẽ không có trong cây kết xuất, ví dụ nút [Element:<head>] và các nút con của nó. Các nút được đánh dấu là “không hiển thị” cũng không xuất hiện trong cây kết xuất. Ngược lại, một số nút trên cây DOM sẽ có nhiều nút tương ứng trên cây kết xuất.

Hình dưới đây là ví dụ về cây DOM và cây kết xuất.



Dựng khung kết xuất (layout)

Sau khi đã có cây kết xuất, bộ phận kết xuất sẽ xác định tọa độ cho các nút trên cửa sổ trình duyệt. 
Quá trình này tạm gọi là dựng khung (layout).

Hiển thị (paint)

Bước cuối cùng, bộ phận kết xuất sẽ chuyển các dữ liệu cần thiết cho bộ phận UI Backend để xuất nội dung lên cửa sổ trình duyệt.


Lưu ý: quá trình kết xuất thường mất rất nhiều thời gian. Vì vậy, trình duyệt sẽ không thực hiện trọn vẹn từng bước ở trên, mà nó sẽ cố gắng thực hiện song song nhiều bước cùng lúc trên các khối dữ liệu. Nghĩa là, sẽ có những khối dữ liệu đang được phân tích để hiển thị, trong khi vẫn có những khối khác chưa được xử lý. Mục đích là hiển thị nội dung trang web càng sớm càng tốt.

Hình dưới đây là sơ đồ khối, minh họa quá trình kết xuất của WebKit.




Hình dưới đây là sơ đồ khối, minh họa quá trình kết xuất của Gecko.


-----------
Cập nhật [23/08/2020]
-----------

Ngu ngơ học làm web (3) - Cơ bản về HTML, web page, website, web application

tiếp theo của: Ngu ngơ học làm web (2) - Xem một số ứng dụng web
---------

Phần 3. Cơ bản về HTML, web page, website, web application


Vậy cái đầu tiên cần phải học là HTML. Để ý sẽ thấy các tài liệu hướng dẫn luôn viết kèm HTML với CSS, nhưng để đỡ rối, vì là người mới học, còn “ngu ngơ”, nên tạm tách ra để học HTML trước. 

Bước đầu học HTML là học ý nghĩa, mục đích của các thẻ và cố gắng hiểu trình duyệt nó sẽ xử lý cái thẻ đó như thế nào? Rồi dùng đi dùng lại nhiều lần cho nhớ. Học kiểu “nhồi sọ”, xin lỗi “sọ”!

Mở chương trình Notepad, nhập vào nội dung sau:

<!DOCTYPE html>
<html>
<head>
            <meta charset="UTF-8">
            <title>Document</title>
</head>
<body>
            Xin chào!
</body>
</html>

Lưu vào thư mục bất kì (nên tạo một thư mục để chứa các bài thực hành), với tên là trangweb.html. 

Khi lưu, trong mục Save as type, nhớ chọn là All Files (*.*), để máy tính nó không thêm cái đuôi .txt vào tập tin, mục Encoding chọn UTF-8.

Chuột phải vào tập tin trangweb.html, chọn Open with, chọn một trình duyệt bất kì, ví dụ chọn Chrome, xem kết quả.

Trên màn hình của trình duyệt sẽ xuất hiện chữ ‘Xin chào!’

Vậy là đã tạo được một trang web, chạy được, và kết quả là chữ “Xin chào!” xuất hiện trên trình duyệt. Tuy nhiên, địa chỉ trên thanh Address của trình duyệt thì hơi kì cục (ví dụ: file:///D:/html/trangweb.html), nó phải là http:// gì đó chứ, cái này sẽ tìm hiểu ở các phần sau.

Trang web, website, ứng dụng web là gì?

Xem clip sau: Phân biệt web page, website, web application https://www.youtube.com/watch?v=ylbQrYhfa18

Trang web (webpage), là các trang đơn vị để cấu thành website. Ví dụ, trang chủ, trang tin, trang quản trị, trang đăng nhập. Mỗi trang web thường phục vụ cho một mục đích cụ thể. Ví dụ đây là địa chỉ của một trang web: www.congty.com/index.html.

Với người dùng, trang web là một trang thông tin được thể hiện trên trình duyệt. Với hệ thống máy tính, trang web là một tập tin, thường được viết bằng ngôn ngữ HTML. Để tạo ra một trang web, cần kết hợp ngôn ngữ HTML với các thành phần khác như các ngôn ngữ kịch bản (script), các tập tin định dạng (style sheet), hình ảnh.

Trang web thường được chia thành hai loại: trang web tĩnh và trang web động.

Trang web tĩnh: là trang web chứa nội dung cố định, bất kì thời điểm nào khi người dùng truy cập thì nó cũng hiển thị đúng những nội dung như nó vốn có, người dùng không có khả năng tương tác với nó, không sử dụng cơ sở dữ liệu. Công cụ để tạo trang web tĩnh thường là HTML. Đường dẫn của trang web tĩnh trên thanh địa chỉ luôn kết thúc là phần mở rộng của tập tin, ví dụ .html, .php.

Trang web động: là trang web được tạo ra bởi các ngôn ngữ kịch bản (scripting language) và các đoạn mã cho phép người dùng tương tác (thêm, xóa, sửa) với cơ sở dữ liệu tại server, cho phép người dùng tương tác với trang web. Có nhiều ngôn ngữ lập trình để tạo ra các trang web động, ví dụ: PHP, Java, JavaScript, C#, Python.

Website: chưa biết từ tiếng Việt tương đương nên dùng luôn tiếng Anh, website là một tập hợp nhiều trang web, các trang web này được liên kết với nhau (interlinked) theo một cấu trúc cụ thể (well-structured), và nằm trong cùng một domain (hiểu nôm na là nằm trong cùng một thư mục).

Website chứa nhiều thông tin, cung cấp nhiều chức năng khác nhau. Ví dụ đây là địa chỉ của một website: www.congty.com. Có nhiều loại website như: website giới thiệu, website quảng bá sản phẩm, website thương mại điện tử, website tin tức.

Website tĩnh (static website) là website chỉ chứa các trang web tĩnh.

Website động (dynamic website) là website có chứa các trang web động.

Ứng dụng web: là một chương trình ứng dụng, được lưu trên server và chạy trên nền tảng web. Người dùng có thể sử dụng ứng dụng thông qua Internet, Intranet. Để tạo ra ứng dụng web, người ta thường sử dụng các ngôn ngữ lập trình, kết hợp với các framework, các CMS. Ví dụ các ứng dụng web: thư điện tử, bán hàng trực tuyến, diễn đàn, nhật kí mạng, bản đồ, quản lý nhân lực, quản lý y tế và chăm sóc sức khỏe (ví dụ cái ứng dụng openemr đã nói ở Phần 2).

So sánh sự khác nhau giữa website động và ứng dụng web:

Website động
Ứng dụng web
- Cũng cho phép người dùng tương tác và thêm nội dung, tuy nhiên phần lớn nội dung vẫn là do nhà phát triển tạo ra.
- Ít phức tạp và dễ phát triển hơn so với ứng dụng web.
- Hoạt động dựa trên sự tương tác từ người dùng
- Hầu hết nội dung và dữ liệu là do người dùng đóng góp
- Giống như một ứng dụng desktop
- Phức tạp và cần nhiều kĩ năng hơn để phát triển so với website động

Vậy trang web vừa tạo ở trên (trangweb.html) là một trang web tĩnh. Nó được tạo ra bằng ngôn ngữ HTML. À, thế là để tạo được một trang web tĩnh, để học ngôn ngữ HTML, để xuất kết quả, chỉ cần một trình duyệt và một chương trình soạn thảo văn bản là đủ (ví dụ, Chrome và Notepad).

Khi mới học làm web (một vài ngày đầu tiên), nên sử dụng chương trình Notepad. Nó có cái lợi là không phải đi kiếm đâu xa, máy tính chạy Windows nào cũng có Notepad, lập trình bằng Notepad bắt buộc phải gõ từng lệnh, từng thẻ, từng chữ, từng câu, do vậy mau nhớ ngôn ngữ HTML. Ngoài ra nó còn tạo ra cảm giác thú vị, khi từ một đoạn mã có vẻ luộm thuộm, xấu xí, nhưng khi xem trên trình duyệt thì thấy nó đẹp không ngờ.

Phiên bản mới nhất của HTML hiện nay là HTML5, vì vậy sẽ học luôn cái mới nhất cho tiện. Nhớ xem các clip và làm theo, làm theo hai, ba lần càng tốt. Cách học này bắt chước theo cuốn “Ngũ luân thư”.

Trong các bài viết đều có tham khảo các clip, bài viết, hình ảnh, và rất nhiều thứ khác trên mạng. Để tôn trọng vấn đề bản quyền và tôn trọng tác giả nên sẽ ghi rõ liên kết (link) của các tài nguyên. Vừa học vừa thầm cám ơn các tác giả. Mọi người đều có cái gì đó để mình học theo, “nhân vô thập toàn”, làm gì có ai hoản hảo, mình thấy hay thì theo, thấy không hay thì rút kinh nghiệm cho bản thân, quan trọng là họ đã chia sẻ để mình có cái mà học.

Đây là clip số 1: giới thiệu về trang web, do laptrinh.io chia sẻ trên youtube.

Đây là clip số 2: giới thiệu về công cụ và môi trường.

Theo clip số 2, để lập trình web tĩnh, chỉ cần Sublime Text và một trình duyệt là đủ. Lưu ý ở đây là vai trò của Notepad và Sublime Text là như nhau, đều dùng để viết mã, sau đó lưu nội dung đã viết thành một tập tin, vậy thôi. Tuy nhiên Sublime Text giúp viết mã chuyên nghiệp và nhanh hơn rất nhiều. Bạn cũng có thể sử dụng Visual Studio Code (hay gọi tắt là VS Code) để viết mã nhanh và chuyên nghiệp. 

Ở phần trên, đã tạo ra một trang web tĩnh (trangweb.html), tuy nhiên, mới chỉ làm theo vậy thôi, chứ chưa hiểu nội dung từng dòng mã, xem các clip sau để hiểu rõ hơn.

Đây là clip số 3: Tổng quan về một trang web.

Clip số 3 giới thiệu tổng quan các thành phần trong một trang HTML, hướng dẫn cách xem mã nguồn của một trang web (View page source), ý nghĩa của thẻ (tag) <!DOCTYPE html>, thẻ chú thích (comment), thuộc tính của thẻ (attribute). Xem mã nguồn rất quan trọng, nó giúp mình hiểu được họ đã viết mã như thế nào, từ đó bắt chước theo.

Đây là clip số 4: Cấu trúc cơ bản của một trang HTML, giới thiệu các thẻ <html>, <head>, <body>, <meta>, <title>.

Đây là clip số 5, giới thiệu về thẻ tiêu đề (heading): <h1>, <h2>, <h3>, <h4>, <h5>, <h6>; và thẻ hiển thị văn bản <p>.

Đây là clip số 6, hướng dẫn định dạng nội dung văn bản, dùng các thẻ: <strong>, <i>, <strike>, <em>, <sub>, <sup>.

Đây là clip số 7, hướng dẫn hiển thị kí tự đặc biệt.

Đây là clip số 8, một số thẻ định dạng văn bản khác: <blockquote>, <cite>, <address>.

Đây là clip số 9, hướng dẫn tạo một liên kết tới trang web khác, sử dụng thẻ <a>, thuộc tính href, target.

Tới đây, thấy các thẻ có vẻ đã nhiều và khó nhớ. Tất nhiên cứ làm nhiều lần thì sẽ nhớ, nó sẽ đi vào đầu mình khi nào không hay. Tuy nhiên, để ý là bản thân các thẻ, hay từ khóa, tự nó đã nói lên ý nghĩa, vì vậy nên bỏ thêm một chút thời gian để tìm hiểu về nghĩa của các thẻ hay các từ khóa, điều này sẽ giúp việc ghi nhớ nhanh hơn và thói quen làm việc có logic, thay vì học thuộc một cách máy móc. Ví dụ, tại sao liên kết tới trang web khác lại dùng thẻ <a>, à là vì thẻ <a> là viết tắt của chữ “anchor” có nghĩa là cái mỏ neo, hay cái móc. Tại sao muốn liên kết tới đâu? lại dùng thuộc tính “href”, à vì href là viết tắt của Hypertext REFerence. Muốn biết mấy thứ này cứ vào trang google, gõ từ khóa href stands for là có kết quả liền.

Đây là clip số 10, hướng dẫn hiển thị hình ảnh trên trang web, sử dụng thẻ <img>.

Đây là clip số 11, hướng dẫn liên kết bằng hình ảnh. Chỉ cần bao hình ảnh bằng thẻ <a>.

Đây là clip số 12, hướng dẫn hiển thị danh sách, sử dụng các thẻ <ul>, <ol>, <li>.

Đây là clip số 13, hướng dẫn tạo bảng, sử dụng các thẻ: <table>, <tr>, <td>, <th>.

Đây là clip số 14, hướng dẫn tạo form, sử dụng các thẻ <input>, <label>, <textarea>, <br>, <button>. Các phương thức gửi dữ liệu của form về  server gồm: GET, POST, PUT, PATCH, DELETE.

Đây là clip số 15, hướng dẫn về các kiểu của thẻ <input>.

Đây là clip số 16, hướng dẫn cách tạo danh sách lựa chọn, sử dụng thẻ <select>.

Khi làm theo 16 clip vừa qua, sẽ nhận thấy chúng ta chỉ làm việc với hai đối tượng là chương trình soạn mã (Notepad, Sublime Text hoặc VS Code) và trình duyệt; ngôn ngữ được sử dụng ở đây là HTML. Nghĩa là chúng ta đã sử dụng ngôn ngữ HTML để bắt trình duyệt thực thi các công việc mà chúng ta muốn.

HTML là viết tắt của HyperText Markup Language, thường được gọi là Ngôn ngữ Đánh dấu Siêu văn bản (hiểu là: ngôn ngữ đánh dấu văn bản thô (plain text) để tạo thành siêu văn bản, dùng các thẻ để đánh dấu). HTML không phải là ngôn ngữ lập trình, nó là ngôn ngữ đánh dấu, hay ngôn ngữ trình bày, được sử dụng kết hợp với các thành phần khác để tạo ra trang web. Để ý điều này để biết, muốn điều khiển trình duyệt một cách linh hoạt cần sử dụng thêm ngôn ngữ khác, ngoài ngôn ngữ HTML.

Trình duyệt là chương trình thực thi các chỉ dẫn trong tập tin HTML. Như ở trên đã nói, hiện nay có các trình duyệt phổ biến là: Chrome, Firefox, Safari, Opera, Internet explorer. Các trình duyệt có thể được cài trên các máy tính, trên thiết bị di động, được nhúng trong các ứng dụng khác, được nhúng trong các thiết bị dân dụng (tủ lạnh, tivi, xe hơi). Mỗi trình duyệt lại có rất nhiều phiên bản. Người dùng có thể sử dụng bất kì trình duyệt nào, với bất kì phiên bản nào. Cần lưu ý vấn đề này trong quá trình làm web, vì nó có liên quan đến tính tương thích, kết quả hiển thị.

[Xem và làm theo khóa học HTML của cione, giảng chi tiết hơn chút xíu]

- 1. HTML là gì?

- 2. Làm quen với HTML

- 3. Phần tử và thuộc tính

- 4. Tiêu đề và đoạn

- 5. Định dạng đoạn

- 6. Thẻ diễn giải nội dung

- 7. Danh sách

- 8. Hình ảnh

- 9. Hình ảnh (tt)

- 10. Thẻ Object, embed

- 11. Thẻ video

- 12. Nhúng trang lồng nhau (iframe)
https://www.youtube.com/watch?v=wmHU9V2CQAA&index=12&list=PL75xdq9Y-GaTpxBQSzqEsFhAQSbsF_bpP

- 13. Các thành phần của một liên kết

- 14. Tạo ra một liên kết

- 15. Thực hành tạo một liên kết

- 16. Thuộc tính target của một liên kết

- 17. Liên kết tới các fragment

- 18. Bảng

- 19. Tạo bảng có ngữ nghĩa

- 20. Form

- 21. Radio,  checkbox

- 22. Nhóm các control


Hai nhiệm vụ quan trọng của HTML cần nhớ là “cấu trúc” (structure) và “ngữ nghĩa” (meaning).

– Cấu trúc nghĩa là sử dụng HTML để tạo ra bố cục của nội dung trang web.

– Ngữ nghĩa là sử dụng HTML để tạo ra ngữ nghĩa cho nội dung của trang web thông qua ngữ nghĩa của các thẻ. 

Khi thực thi các chỉ dẫn trong tập tin HTML, trình duyệt sẽ thực thi theo trình tự nào? Trải qua những công đoạn nào? Phần tiếp theo sẽ tìm hiểu.
-----------
Cập nhật [23/08/2020]
-----------

Ngu ngơ học làm web (2) - Xem một số ứng dụng web

tiếp theo của: Ngu ngơ học làm web (1) - Các công cụ để làm web
---------

Phần 2. Xem một số ứng dụng web


Vào trang của Google, gõ từ khóa openemr, thấy xuất hiện đường dẫn của một dự án mở có tên là OpenEMR Project.

Theo đường dẫn, để tới trang của dự án OpenEMR Project.

Vào mục Demo, bấm vào liên kết để mở trang chủ của ứng dụng OpenEMR.

Nhập Username là admin, Password là pass, bấm Login để vào hệ thống.

Bấm thử vào các mục trong menu, nhập một số thông tin để xem một vài chức năng.

Phần giới thiệu cho biết đây là một ứng dụng web, dùng để quản lý trong lĩnh vực y tế và chăm sóc sức khỏe, nó là mã nguồn mở và miễn phí.

Vậy mình có thể lấy mã nguồn của nó về xem.

Để tải mã nguồn, vào lại trang chủ tại http://www.open-emr.org/ , chọn mục Download, chọn phiên bản phù hợp với hệ điều hành để tải về.

Mục đích của việc tải về máy là để xem mã nguồn, nên chọn bản trong mục ‘Windows: Pre-installed OpenEMR with the XAMPP Package’ hoặc bản trong mục ‘Windows’ đều được.

Sau khi tài về máy, thực hiện giải nén tập tin.

Quan sát thư mục mã nguồn openemr sẽ thấy, ngoài các thư mục con, nó còn có các tập tin dạng html, php, js. Vậy có thể đoán được là ứng dụng web này ít nhất có sử dụng html, php, javascript. Mở một số tập tin mã nguồn bằng WordPad để xem.

Giờ làm sao để cấu hình và chạy được ứng dụng openemr trên máy tính của mình (local)?
Openemr là một ứng dụng web, do vậy phải mở nó bằng một trình duyệt web (từ đây gọi tắt là trình duyệt) nào đó.

Hiện nay có một số trình duyệt phổ biến là: Chrome, Firefox, Safari, Opera, Internet explorer.

Tuy nhiên, trước khi có thể cấu hình và dùng trình duyệt để chạy ứng dụng openemr trên máy tính của mình, cần phải đi tìm hiểu một số thứ khác. Các thứ khác có thể rất nhiều, do vậy hãy kiên nhẫn đi từng bước. Để sau khi chạy được openemr, sẽ phát triển một vài chức năng để tích hợp vào hệ thống có sẵn, hoặc viết một ứng dụng web hoàn toàn mới, bằng một ngôn ngữ lập trình, bằng framework hoặc bằng CMS.

Xem thêm một ứng dụng web nữa được viết bằng framework PHP (ví dụ CakePHP).

Vào google, gõ từ khóa ‘cakephp project example github’. Chọn một kết quả tìm kiếm bất kì. Ví dụ vào trang https://github.com/cakephp/bookmarker-tutorial

Bấm vào mục Clone or download, chọn Download ZIP.

Sau khi tải về, giải nén tập tin, mở thư mục đã được giải nén để quan sát, để ý các phần mở rộng của các tập tin. Đặc biệt xem cấu trúc thư mục và các tập tin trong thư mục ‘src’.


Mở một số tập tin mã nguồn bằng WordPad để xem.
-----------
Cập nhật [11/08/2020]
-----------

Ngu ngơ học làm web (1) - Các công cụ để làm web

Ngu ngơ học làm web (1) - Các công cụ để làm web




Mở đầu


Tháng abc năm xyz. Muốn theo nghề làm web để kiếm tiền, không biết bắt đầu từ đâu. Đang loay hoay thì có ông bạn gọi điện, hỏi có làm web để kiếm tiền không? Dĩ nhiên là có chứ. Nhưng bắt đầu từ đâu? Ông bạn nói đang làm web bằng @#$%!#$%!!!, chóng mặt quá. Thử đi theo @, #, $, !... xem thế nào. Ngoài nông nghiệp, dân Việt “tay bo” đi theo nghề này chắc cũng ổn. Sau một năm lọ mọ, học cũng không toàn tâm toàn ý, vì còn nhiều việc khác, tôi (một người "ngu ngơ") đã có thể làm việc trong lĩnh vực làm web. Cuối tuần có thời gian rảnh, vừa viết lung tung lang tang để chia sẻ vừa để củng cố lại kiến thức cho bản thân.

Vì nhà nghèo, vì sở thích, và vì muốn tự trải nghiệm nên sẽ tự học, thầy dạy chính là các bạn, các thầy cô đã chia sẻ kiến thức, bài giảng trên Internet. Tài liệu này được viết dưới dạng ghi chép, gặp gì ghi đó, không có bố cục, không có cấu trúc sẵn. Đơn giản đây chỉ là ghi lại trải nghiệm của bản thân.

Để có tính cập nhật và giúp ích cho các bạn mới bắt đầu, mình sẽ cập nhật các video, các bài viết thường xuyên, tuy nội dung có thay đổi nhưng lộ trình thì không đổi.

Các bài viết có tiêu đề là “Ngu ngơ học làm web” là những bài học ở mức độ cơ bản, mức độ dành cho người chưa biết gì, nó tương đương với mức độ Nhớ (Remembering) của Thang đo Bloom, còn các mức cao hơn như là Hiểu (Understanding), Vận dụng vào thực tế (Applying), sẽ học ở các phần sau. Để học và làm được, chỉ cần dừng ở mức “Nhớ > Hiểu và Vận dụng vào thực tế là được”, đi làm rồi sẽ học tiếp.

Nếu quan tâm có thể đọc thêm về Thang đo Bloom [đọc]

Coi hành trình trở thành lập trình viên của "Ông dev" để có thêm "độ lầy lội". https://www.youtube.com/watch?v=y2Ile9kL174

Phần 1.       Các công cụ để làm web


Để theo nghề làm web, trước hết phải biết trong nghề này mọi người đang dùng các công cụ gì. Đây chính là “bức tranh lớn” của nghề làm web. Trong quá trình học/tự học, sẽ xem lại để biết mình đang đứng ở đâu, đã học được những gì và học gì tiếp theo.

Đây là clip nói về các công cụ đang được sử dụng trong nghề làm web (2022) và thứ tự các công cụ cần phải học (Web development in 2022). Hoặc xem clip này cho nhanh https://www.youtube.com/watch?v=7k7ETzqOxn8. Các clip này nói bằng tiếng Anh, tuy nhiên, không cần phải nghe hết mọi thứ, nếu yếu tiếng Anh, chỉ cần đọc được mấy từ khóa trên màn hình là được rồi.

Để ý là nếu không học theo thứ tự thì sẽ rất khó để nắm kiến thức, dẫn tới chán nản và bỏ cuộc. 

Xem thêm “Hành trình trở thành web developer”, buổi nói chuyện của toidicodao&codeaholicguy 


Xem thêm phần nói chuyện của tác giả Lưu Trường Hải Lân: 


Xem bài viết này để biết các công nghệ, ngôn ngữ, cơ sở dữ liệu, trình viết mã, các nghề nghiệp liên quan đến nghề CNTT:

Nghề làm web:

-----------
Cập nhật [7/10/2022]
-----------