Mới nghỉ Tết xong, nhoáng cái đã một tuần trôi qua, thế rồi lại chẳng mấy chốc mà lại đến Tết nữa thôi… còn nhiều nợ quá chưa trả được. Hihi
Hôm nay nhân một ngày không có nhiều bận rộn như mọi ngày mới lại ngồi viết cái gì đó cho khỏi quên cảm giác viết blog :))) dù biết rằng số lượng và độ đều đặn đã giảm dần trong khoảng thời gian gần đây.
Dưới đây là danh sách một số ứng dụng mà mình đánh giá khá cao về mức độ hữu ích mà nó đem lại, và mình nghĩ là nó cũng sẽ hữu ích với các bạn trong công việc kiểm thử, và những việc khác nữa nếu như bạn biết cách áp dụng và tận dụng được những cái mà các công cụ này cung cấp.
Ứng dụng web này cung cấp một công cụ giúp bạn có thể đếm số lượng ký tự, số lượng từ có trong một đoạn, một câu văn bất kỳ nào đó, sẽ hữu ích trong trường hợp tạo hoặc kiểm tra dữ liệu test mà có yêu cầu về số lượng từ, ký tự nhập vào. Các ký tự tiếng việt, dấu cách, ký tự đặc biệt… đều thoải mái. Các bạn có thể truy cập cụ thể vào link phía trên để tìm hiểu chi tiết hơn nhé.
Đơn giản hơn chúng ta cũng có thể sử dụng MS Word để kiểm tra số lượng từ và ký tự nếu thấy thuận tiện hơn
Chúng ta có thể sử dụng ứng dụng này để tạo dữ liệu test trong trường hợp cần một lượng dữ liệu text lớn, một đoạn văn dài, ví dụ như các trường ghi chú, hoặc thông tin chi tiết, mô tả nào đó…. Ta có thể tùy chọn số lượng ký tự/ từ/ đoạn văn mong muốn, ứng dụng này sẽ cho đầu ra tương ứng phù hợp với yêu cầu đã chọn. Sau đó chỉ cần click nut copy là bạn có thể paste vào bất cứ textbox nào!
Một ứng dụng mình nghĩ cũng rất là hay ho :)) giúp bạn có thể thay đổi cách viết/hiển thị của một đoạn text thành viết hoa, viết thường, thành hoa thường lẫn lộn, viết hoa các chữ cái đầu, chỉ viết hoa chữ cái đầu câu, … không phụ thuộc vào đầu vào của bạn viết như thế nào, chỉ cần lựa chọn các yêu cầu thay đổi chỉ sau một cú click chuột là bạn sẽ có được đầu ra tương ứng. Điều này cũng khá hữu ích trong việc tạo các dữ liệu test liên quan đến text. Ngoài ra còn cực kỳ hữu ích trong trường hợp có nhiều đoạn text, hoặc đoạn text dài thì ta có thể thay đổi kiểu viết hoa viết thường (hay kiểu mix giữa hoa thường :v) một cách đơn giản và nhanh chóng hơn bao giờ hết!
Ứng dụng này giúp bạn giải mã/mã hóa một URL bất kỳ nào đó, chỉ cần copy và paste vào textbox trên ứng dụng, click Decode / Endcode thì bạn sẽ có ngay kết quả tương ứng. Ứng dụng giúp chúng ta dễ dàng giải mã các URL JavaScript rối rắm khó đọc thành một đường dẫn có thể đọc được.
“Rubular a Ruby regular expression editor”, đây là ứng dụng hỗ trợ bạn tạo và kiểm tra cú pháp regular expression (biểu thức chính quy), (nếu bạn chưa quen thuộc với thuật ngữ này thì có thể tìm hiểu tại đây để hiểu thêm nhé), hiện nay có rất nhiều ứng dụng hỗ trợ bạn trong việc này, Rubular là một trong những ứng dụng đó nhé! Từ biểu thức bạn tạo, copy dữ liệu cần kiểm tra sau đó kiểm tra kết quả. Bên cạnh đó bạn cũng có thể tạo cho mình một permalink để có thể chia sẻ link biểu thức cùng với dữ liệu test và kết quả vừa làm với người khác.
Numverify giúp bạn kiểm tra định dạng số điện thoại, tạo mã JSON về thông tin của số điện thoại đó một cách nhanh chóng, chỉ cần paste vào đó một số điện thoại bất kỳ, ứng dụng sẽ giúp bạn kiểm tra dãy số đó đã đúng định dạng của một số điện thoại hay chưa? Số điện thoại này thuộc quốc gia nào, thuộc nhà mạng nào, hay số này là thuê bao di động hay cố định… Bạn cũng có thể xem thông tin đó dưới dạng mã JSON, Numverify hỗ trợ kiểm tra thông tin số điện thoại của 232 nước trên thế giới.
Wepay cung cấp môi trường, dữ liệu để chúng ta có thể sử dụng những tài khoản ngân hàng, hay các thẻ tín dụng ảo, rất hữu ích khi bạn cần test những hệ thống cần thông tin liên quan đến tài khoản ngân hàng, thông tin dữ liệu thẻ tín dụng, thanh toán…v…v… Chi tiết các bạn hãy truy cập vào link phía trên để tìm hiểu thêm nhé!
Ứng dụng này giúp bạn tạo ra các file với kích thước dung lượng của file tùy ý, tùy chọn tên file, định dạng file mong muốn một cách nhanh chóng. Chỉ sau một vài thao tác, bạn đã có một file bất kỳ và dung lượng như ý, sẽ rất tiện lợi trong những trường hợp tạo dữ liệu test cho hệ thống cần file đính kèm.
Rồi tạm thời thế đã nhỉ, mình nghĩ đây là một trong những những công cụ hay ho và hữu ích trong việc tạo các dữ liệu test, bạn có đang dùng những công cụ hay tiện ích nào khác nữa không? Cùng chia sẻ với mình ở bình luận phía dưới nhé! Mình đặc biệt thích số 8 và số 3 vì mình sử dụng nó nhiều nhất trong số những danh sách trên. Hi vọng cũng góp phần giúp ích cho các bạn trong công việc chuẩn bị dữ liệu kiểm thử cũng như trong quá trình kiểm thử của các bạn.
Bài viết được sự cho phép của BQT Kinh nghiệm lập trình
Khi bạn sử dụng máy tính mỗi ngày và trong một thời gian dài thì sẽ không thể tránh khỏi việc tồn tại một vài thư mục nào đó có dung lượng rất lớn (nếu như sau bao năm bạn đã không dọn dẹp máy tính).
Hay là trước đó bạn đã tải về rất nhiều tài liệu học tập rồi để đấy mà quên béng đi mất, cho đến khi máy tính của bạn sắp full bộ nhớ, bạn muốn tìm những file đang chiếm nhiều dung lượng (mà không cần thiết) để xóa bớt đi.
Bạn có đang mất công mở từng thư mục ra để xem nó đang ở đâu, và đang chiếm bao nhiêu dung lượng không? Vâng, nếu bạn đang làm như thế thì đúng là thất sách đấy, làm như vậy sẽ tốn rất mất thời gian của bạn.
Để giải quyết cho vấn đề trên thì trong bài viết này mình sẽ giới thiệu đến bạn phần mềm TreeSize, giúp bạn tiết kiệm được rất nhiều thời gian cho việc tìm kiếm file có dung lượng lớn.
Làm thế nào để tìm ra các file có dung lượng lớn trên Windows?
+ Bước 1: Bạn truy cập vào trang này (link dự phòng / link dự phòng) để tải phần mềm TreeSize. Hiện tại thì có 3 phiên bản khác nhau nhưng chỉ có bản TreeSize Free là miễn phí, bạn tải bản Free cho mình nhé.
=> Sau khi tải xong thì bạn tiến hành cài đặt như hướng dẫn có sẵn cho đến khi quá trình cài đặt kết thúc là xong. Rất dễ thôi!
Và bên dưới là các bước cài đặt mà bạn có thể tham khảo nếu cần
+ Bước 2: Sau đó bạn mở phần mềm TreeSize Free lên để sử dụng. Giao diện khá giống với Windows Explorer. Bạn tìm đến phần Select Directory để chọn phân vùng ổ cứng mà bạn muốn quét.
Hoặc chọn biểu tượng Folder phía trên để chọn từng Folder mà bạn muốn.
+ Bước 3: Sau khi chọn xong, sẽ có thông báo xuất hiện yêu cầu bạn Restart lại TreeSize với quyền Admin để phần mềm có thể mở các thư mục.
Vì nếu không thì bạn chỉ có thể xem được thông tin bên ngoài chứ không truy cập được vào Folder hay File được. Bạn nhấn Do not show again để lần sau nó không xuất hiện nữa rồi nhấn Restart as administrator.
Phần mềm sẽ bắt đầu quét ổ cứng được chọn, rồi nó sẽ hiển thị ra các thông tin như kích thước tệp, tỉ lệ phần trăm,.. các thứ.
Bạn có thể sử dụng TreeSize như là một File Explorer vì bạn có thể mở, xóa, sao chép, di chuyển file,… một cách hoàn toàn bình thường.
Nếu bạn muốn biết những Folder nào đang chiếm tỉ lệ phần trăm bao nhiêu thì có thể nhấn vào biểu tượng % như trong hình bên dưới để xem nhé.
Sử dụng tính năng này thì bạn sẽ biết chắc chắn những Folder đang chiếm quá nhiều dung lượng ổ cứng của bạn.
Để xem tỉ lệ phần trăm của các Folder con nằm trong một Folder mẹ thì bạn có thể nhấn chọn vào Folder mẹ.
Sau đó, tìm đến tính nănng Expand => và nhấn chọn level 1 để kiểm tra.
Bạn có thể thấy kết quả như hình dưới.
Còn nếu bạn muốn xem các Folder khác mà nằm trong các Folder con thì bạn có thể chọn level 2 hoặc level 3… tùy bạn, nhưng mình vẫn khuyên là làm từng bước và chỉ nên chọn level 1 để đỡ rối.
Lời Kết
Vậy là mình đã hướng dẫn xong cho bạn cách tải và sử dụng phần mềm TreeSize Free để tìm kiếm các File và Folder đang chiếm dung lượng lớn trong ổ cứng của bạn rồi nhé.
Nói tóm lại là công cụ này sẽ giúp bạn tiết kiệm rất nhiều thời gian so với việc bạn tự kiểm tra từng Folder đấy. Nó cũng có giao diện khá quen thuộc của File Explorer nên bạn có thể sử dụng một cách dễ dàng ngay từ lần đầu tiên.
Hi vọng là bài viết này sẽ hữu ích với bạn. Chúc bạn thực hiện thành công!
Chào các bạn! Mục đích bài viết này của mình là chia sẻ những kỉ niệm của những ngày đầu làm Tester với những bạn đã và đang có mục tiêu trở thành tester trong tương lai.
Mình bắt đầu tìm hiểu về kiểm thử phần mềm từ năm cuối đại học, vì ở trường mình không được học môn này nên về cơ bản đều phải tự tìm hiểu hết :((…
Những nguồn tin nào mình chưa hiểu hay có thắc mắc gì cần giải đáp thì mình post bài lên các diễn đàn như testingvn, diễn đàn testervn…Bảo vệ tốt nghiệp xong, thấy kiến thức mình còn quá ít, chỉ mới tìm hiểu cơ bản về kiểm thử, tìm tòi trên mạng, mình bắt đầu tham gia một khóa học kiểm thử trong 3 tháng…
.Sau 3 tháng, kết quả có khả quan hơn chút, nhưng vốn tiếng anh của mình còn kém nên đi xin việc rất khó khăn…Hầu như công ty nào có nhu cầu tuyển tester mình đầu apply vào nhưng qua vòng test đến vòng phỏng vấn đều “tạch” …:((….lúc đó thực sự nản luôn ấy…
Cuối cùng mình xin đi thực tập không lương ở một công ty gia công phần mềm trên đường Phạm Ngọc Thạch….thật may là mọi chuyện đều ổn. Những ngày đầu, có khó khăn hay thắc mắc gì các anh chị trong team đều hỗ trợ rất nhiệt tình….mình cố gắng học việc và học hỏi môi trường, cách làm việc, kinh nghiệm…nói chung học được gì thì học tất ^^…Và giờ thì mình thấy rất ổn. Hi vọng các bạn đừng bỏ cuộc, hãy kiên nhẫn, rồi sẽ có kết quả.
Mọi thức đều có level từ thấp đến cao… và developer cũng cũng chia level khác nhau từ intern, fresher, junior, senior, tech lead…
Việc để đạt 1 level mới của developer là cả một chặng đường dài, việc này đòi hỏi thời gian và công sức. Tuy nhiên để “thuận giò xuôi bướm” hơn, 5 Tips sau sẽ giúp ta sử dụng thời gian, công sức hiệu quả.
Mọi dòng code bạn viết ra đều tiềm ẩn khả năng gây lỗi, mọi phần mềm đều có lỗi không nhiều thì ít. Vì vậy, để trở thành một dev có tâm và có tầm, bạn cần rèn luyện kĩ năng tìm bug, fix bug, bạn cần trở thành một cao thủ xử lý bug và bug không thể lọt qua những business flow thông thường được.
Tuy nhiên, mình thấy rằng các bạn dev thường lảng tránh quá trình debug, khiến cho skill debug không tốt. Mỗi khi phát hiện bug, họ thường tìm kiếm đến một dev khác trình cao hơn để tìm kiếm sự trợ giúp.
Hệ quả là dev trình cao ngày càng cao bởi vì họ được tiếp xúc với nhiều bug, họ học được cách phán đoán, cách debug và xử lý bug, còn bạn nhờ vả mà không quan sát thì không nắm được gì cả!
Để có thể nâng cao khả năng dev và debug, mình nghĩ rằng:
Học cách tự giải quyết các vấn đề của bản thân, độc lập debug và xử lý bug.
Đừng vội đi nhờ sự trợ giúp còn bản thân thì ngồi nhìn, chỉ nên tìm kiếm sự trợ giúp khi bạn đã thật sự cố gắng hết sức và Nên áp dụng Mob programming cho bản thân mình là Driver và người giúp mình là behavior.
Bạn có thể sẽ hoàn thành task chậm hơn, mệt mỏi hơn vì debug và fix bug của chính mình, nhưng bạn sẽ học được nhiều thứ hơn là kinh nghiệm debug.
2. Quan sát mọi thứ hoạt động
Công việc dành cho các vị trí fresher, junior thường khá đơn giản, thông thường là làm theo một cái gì đó có sẵn.
Ví dụ: sửa một function dựa trên function đã có
Lý do: bởi trình độ của fresher, junior chưa đủ để có thể tự làm một công việc độc lập ở mức mediate task. Việc này không có gì sai, làm theo những thứ có sẵn do các anh senior làm sẽ giúp chúng ta học được nhiều điều về chuẩn viết code và thuật toán họ dùng.
Tuy nhiên, nếu bạn quá dựa dẫm vào những thứ có sẵn, chỉ biết copy/ paste từ những thứ có sẵn, chỉnh sửa chút cho phù hợp mà chưa thật sự hiểu gì về nó thì không tốt! Một nguy cơ tìm ẩm bug có thể xảy ra vì sự sai lệch thuật toán mà bạn viết thêm vào!
Để có thể phát triển nhanh, tốt nhất thì mình nghĩ:
Bạn cần giữ một cái đầu mở, một cái đầu tò mò. Đừng dễ dãi với những gì bạn làm, hãy tò mò, hãy hiểu tại sao nó lại được làm ra như vậy.
Hãy cố gắng hiểu tại sao mấy thánh trên stackoverflow lại hướng dẫn như vậy chứ đừng chỉ copy/paste code của họ.
Hãy hiểu tại sao code cũ lại được code như vậy chứ đừng chỉ bắt chước làm theo.
Có thể bạn sẽ hoàn thành task chậm hơn, mệt mỏi hơn, đôi khi còn bị sếp chỉ trích vì làm việc chậm không bằng X, Y, Z. Tuy nhiên, hãy nghĩ cho bản thân bạn, học cách mọi thứ hoạt động sẽ tốt cho bạn và sản phẩm bạn làm ra.
3. Đừng chỉ hoàn thành task, hãy nhìn vào bức tranh lớn
Công việc dành cho các vị trí thấp thường rất đơn giản, những công việc này thông thường chỉ là một phần nhỏ trong một hệ thống lớn.
Vì vậy, các bạn dễ rơi vào tình trạng như con tốt trên bàn cờ, không hiểu được toàn bộ thế cục, không mở mang được đầu óc, không học được những kiến thức phức tạp hơn.
Đôi khi công ty trả lương để bạn hoàn thành task, chứ không để tìm hiểu những thứ chúng ta không có trách nhiệm. Giả sử như task của bạn là sửa 1 con số 0 –> 1 trên form thì dĩ nhiên là họ không muốn bạn dành cả tiếng đồng hồ để tìm hiểu cách hoạt động mọi thứ.
Tuy nhiên, việc luôn cố gắng nhìn vào bức tranh lớn hơn giúp chúng ta học hỏi được nhiều thứ hơn, hiểu về hệ thống hơn biết chính xác hơn công việc của mình, lâu dần chúng ta có thể đảm nhiệm nhiều công việc phức tạp hơn, như vậy cũng có lợi cho đồng đội và công ty.
Để không trở thành con tốt thì mình nghĩ:
Hãy dành thời gian tìm hiểu xem những thứ bạn đang được giao làm nằm ở đâu trong hệ thống, nhiệm vụ của nó là gì, tại sao người ta lại làm như vậy…
Bạn sẽ học được cách họ thiết kế hệ thống, cách hoạt động của một hệ thống lớn hơn, thậm chí là cách nghiệp vụ của họ vận hành…
Đừng chỉ chăm chăm làm việc như một tên lính đánh thuê, sai đâu đánh đó, như vậy không tốt cho lối suy nghĩ mở của bạn.
4. Tìm và vá lỗ hổng kiến thức
Đã bao giờ bạn rơi vào tình trạng đang làm trên ngôn ngữ nào đó nhưng không biết học nó như thế nào chưa? Nếu bạn đã từng thì lý do là bởi bạn đã bỏ qua một việc quan trọng đó là theo dõi và vá lỗ hổng trong kiến thức của bản thân.
Có một thời gian mình luôn gặp khó khăn trong việc xử lý bất đồng bộ của JS nó làm mình vướn vào 1 đống promise và callback hell, nhưng tại thời điểm làm việc thì mình không có đủ thời gian để học bài bản, sau đó thì mình lại quên mất là mình cần vá lại kiến thức đó.
Kết quả là những lần sau gặp phải mình lại tốn rất nhiều thời gian, mọi chuyện cứ lặp lại vài lần như vậy.
Cuối cùng mình quyết định tạo một danh sách để nhắc bản thân cần cải thiện kiến thức này, sau đó thì mình không quên nữa và tình hình được cải thiện.
Mình giữ thói quen mỗi khi gặp kiến thức gì mình không biết, kiến thức gì quan trọng mà mình chưa hiểu mình đều đưa vào danh sách “lỗ hổng kiến thức” để cải thiện dần.
Kết quả khá khả quan. Đôi khi không phải chúng ta không có thời gian để cải thiện mà chỉ đơn giản là chúng ta không biết bản thân cần cải thiện gì mà thôi. Vì vậy việc theo dõi lỗ hổng kết thức sẽ giúp bạn dần lấp đầy khoảng trống, nâng cao khả năng hơn.
5. Rèn luyện bản thân
Ngoài công việc dev ở công ty, thì hãy dành thời gian rèn luyện bản thân mỗi ngày. Chúng ta có rất nhiều lĩnh vực, kiến thức cần rèn luyện ngoài kỹ thuật, hãy dành thời gian cho chúng như tạo 1 thói quen tốt cho bản thân.
Đọc sách về soft skill, clean code, sách về lịch sử, một giờ học tiếng Anh, một giờ tập gym hoặc đi bộ… sẽ giúp bạn trở thành một con người tốt hơn về 1 mặc nào đó, một con người tốt hơn thì cũng là một developer pro hơn.
CSS là viết tắt của Cascading Style Sheets, nó là một ngôn ngữ được sử dụng để tìm và định dạng lại các phần tử được tạo ra bởi các ngôn ngữ đánh dấu (HTML). Nói ngắn gọn hơn là ngôn ngữ tạo phong cách cho trang web. Bạn có thể hiểu đơn giản rằng, nếu HTML đóng vai trò định dạng các phần tử trên website như việc tạo ra các đoạn văn bản, các tiêu đề, bảng,…thì CSS sẽ giúp chúng ta có thể thêm style vào các phần tử HTML đó như đổi bố cục, màu sắc trang, đổi màu chữ, font chữ, thay đổi cấu trúc…
CSS được phát triển bởi W3C (World Wide Web Consortium) vào năm 1996, vì HTML không được thiết kế để gắn tag để giúp định dạng trang web.
Phương thức hoạt động của CSS là nó sẽ tìm dựa vào các vùng chọn, vùng chọn có thể là tên một thẻ HTML, tên một ID, class hay nhiều kiểu khác. Sau đó là nó sẽ áp dụng các thuộc tính cần thay đổi lên vùng chọn đó.
Mối tương quan giữa HTML và CSS rất mật thiết. HTML là ngôn ngữ markup (nền tảng của site) và CSS định hình phong cách (tất cả những gì tạo nên giao diện website), chúng là không thể tách rời.
Bố cục và cấu trúc một đoạn CSS
Bố cục của một đoạn CSS
Bố cục CSS thường chủ yếu dựa vào hình hộp và mỗi hộp đều chiếm những khoảng trống trên trang của bạn với các thuộc tính như:
Padding: Gồm không gian xung quanh nội dung (ví dụ: xung quanh đoạn văn bản).
Border: Là đường liền nằm ngay bên ngoài phần đệm.
Margin: Là khoảng cách xung quanh bên ngoài của phần tử.
Cấu trúc của một đoạn CSS
Một đoạn CSS bao gồm các phần như thế này:
vùng chọn {thuộc tính : giá trị;thuộc tính: giá trị;.....}
Nghĩa là nó sẽ được khai báo bằng vùng chọn, sau đó các thuộc tính và giá trị sẽ nằm bên trong cặp dấu ngoặc nhọn {}. Mỗi thuộc tính sẽ luôn có một giá trị riêng, giá trị có thể là dạng số, hoặc các tên giá trị trong danh sách có sẵn của CSS. Phần giá trị và thuộc tính phải được cách nhau bằng dấu hai chấm, và mỗi một dòng khai báo thuộc tính sẽ luôn có dấu chấm phẩy ở cuối. Một vùng chọn có thể sử dụng không giới hạn thuộc tính.
Định nghĩa của các phần này như sau:
Bộ chọn (Selector): là mẫu để chọn phần tử HTML mà bạn muốn định nghĩa phong cách. Các selector được áp dụng cho các trường hợp sau:
Tất cả phần tử theo một dạng cụ thể nào đó, ví dụ phần tử tiêu đề h1.
Thuộc tính id và class của các phần tử.
Các phần tử dựa vào mối liên quan với các phần tử khác trong cây phân cấp tài liệu.
Khai báo (Declaration): Khối khai báo chứa một hoặc nhiều khai báo, phân tách với nhau bằng các dấu chấm phẩy. Mỗi khai báo gồm tên và giá trị đặc tính CSS, phân tách bằng dấu phẩy. Khai báo CSS luôn kết thúc bằng dấu chấm phẩy, khối khai báo nằm trong các dấu ngoặc móc. Trong ví dụ dưới đây, các phần tử <p> sẽ được căn giữa, chữ màu đỏ.
p { color: red; text-align: center;}
Thuộc tính (Properties): Những cách mà bạn có thể tạo kiểu cho một phần tử HTML. (Với trường hợp này thì color được xem là một trong những thuộc tính của phần tử p). Chính vì vậy, với CSS thì bạn chỉ cần lựa chọn thuộc tính mà chính bạn muốn tác động nhất trong bộ quy tắc của mình.
Giá trị thuộc tính: Ở bên phải của thuộc tính sau dấu hai chấm(:), chúng ta sẽ sở hữu giá trị thuộc tính mà việc lựa chọn trong số đó sẽ xuất hiện nhiều lần để có thể cho một thuộc tính cụ thể nào đó.
HTML là ngôn ngữ đánh dấu với HTML từng thẻ sẽ được dùng với ý nghĩa khác nhau.
<html><head><metacharset="utf-8"><title>CSS là gì</title></head><body><h1>Tiêu Đề - Phần Tử H1</h1><p>Nội dung văn bản, phần tử P</p><div>Nội dung văn bản, phần tử DIV</div></body><html>
HTML được dùng để thêm nội dung và mô tả ý nghĩa của từng nội dung sử dụng các thẻ, tuy nhiên nó không quy định cách thức hiển thị các nội dung trên trang như thế nào.
Ngược lại với HTML, CSS không được sử dụng để thêm nội dung hay mô tả ý nghĩa của nội dung trên trang. CSS được sử dụng để thiết lập cách trình bày hay hiển thị của nội dung trên trang web.
body {
color: red; /* thiết lập màu chữ */
font-size: 14px; /* thiết lập cỡ chữ */
}
h1 {
color: black; /* thiết lập màu chữ mới cho các phần tử h1 */
font-size: 18px; /* thiết lập cỡ chữ mới cho các phần tử h1 */
}
p {
color: blue; /* thiết lập màu chữ mới cho các phần tử p */
}
Tại sao sử dụng CSS?
Đây là ba lợi ích chính của CSS:
1. Giải quyết một vấn đề lớn
Trước khi có CSS, các thẻ như phông chữ, màu sắc, kiểu nền, các sắp xếp phần tử, đường viền và kích thước phải được lặp lại trên mọi trang web. Đây là một quá trình rất dài tốn thời gian và công sức. Ví dụ: Nếu bạn đang phát triển một trang web lớn nơi phông chữ và thông tin màu được thêm vào mỗi trang, nó sẽ trở thành một quá trình dài và tốn kém. CSS đã được tạo ra để giải quyết vấn đề này. Đó là một khuyến cáo của W3C.
Nhờ CSS mà source code của trang Web sẽ được tổ chức gọn gàng hơn, trật tự hơn. Nội dung trang web sẽ được tách bạch hơn trong việc định dạng hiển thị. Từ đó, quá trình cập nhập nội dung sẽ dễ dàng hơn và có thể hạn chế tối thiểu làm rối cho mã HTML.
2. Tiết kiệm rất nhiều thời gian
Định nghĩa kiểu CSS được lưu trong các tệp CSS bên ngoài vì vậy có thể thay đổi toàn bộ trang web bằng cách thay đổi chỉ một tệp. Sử dụng CSS sẽ giúp bạn không cần thực hiện lặp lại các mô tả cho từng thành phần. Từ đó, bạn có thể tiết kiệm được tối đa thời gian làm việc với nó, làm code ngắn lại giúp kiểm soát dễ dàng hơn các lỗi không đáng có.
CSS tạo ra nhiều style khác nhau nên có thể được áp dụng với nhiều trang web, từ đó giảm tránh việc lặp lại các định dạng của các trang web giống nhau.
3. Cung cấp thêm các thuộc tính
CSS cung cấp các thuộc tính chi tiết hơn HTML để định nghĩa giao diện của trang web. CSS giúp người dùng nhiều styles trên một trang web HTML nên khả năng điều chỉnh trang của bạn trở nên vô hạn.
CSS được xuất hiện lần đầu tiên vào ngày 10/10/1994 bởi Håkon Wium Lie. Bắt đầu đó, các phiên bản của CSS dần được hình thành qua nhiều giai đoạn. Từ lúc xuất hiện đến nay, CSS đã có nhiều phiên bản khác nhau. Các phiên bản mới sẽ giúp vá các lỗi của phiên bản cũ và mang đến nhiều cải tiến hơn.
Phiên bản 1
Với phiên bản đầu tiên CSS có những đặc điểm cụ thể như: thuộc tính font chữ, màu văn bản, hình nền, các thuộc tính văn bản, căn lề, định vị cho các yếu tố, nhận dạng duy nhất và phân loại chung các nhóm thuộc tính.
Phiên bản 2
CSS phiên bản 2 được W3C phát triển vào tháng 5 năm 1998. Với những cải tiến từ phiên bản CSS đầu tiên và mang đến những cải tiến mới như định vị tuyệt đối, tương đối và cố định các yếu tố chỉ mục z. Khái niệm về các loại phương tiện, hỗ trợ cho các biểu định kiểu âm thanh và văn bản hai chiều. Xuất hiện các kiểu font chữ mới để định dạng văn bản.
CSS 2.1
Ngoài ra, sau phiên bản 2 còn có một sự nâng cấp khác là CSS 2.1 được release vào tháng 4 năm 2011. Nhằm mục đích sửa lỗi và loại bỏ những tính năng kém hoặc không tương thích cho người dùng.
CSS3
CSS3 là phiên bản thay thế cho CSS2 với sự thay đổi đáng chú ý là module. Các module có khả năng mở rộng các tính năng được xác định trong CSS2. Nhằm duy trì khả năng tương thích ngược.
Đặc biệt, CSS3 mang đến các bộ chọn (selector) và thuộc tính (properties) mới cho phép linh hoạt hơn với bố cục và trình bày trang. Nhờ đó, người lập trình có thể tạo ra các hiệu ứng hình ảnh mà không cần tạo ra hình ảnh trước đó.
CSS 4
CSS 4 là phiên bản kế thừa CSS 3 hiện vẫn đang được cập nhật, phát triển và được dự đoán sẽ có rất nhiều phương thức mới được thêm vào như: Mutability, Hyperlink…
Để CSS có thể thực thi trên website hoặc HTML Documents thì phải tiến hành nhúng CSS vào website. Nếu không, các định dạng CSS sẽ không thực thi trên HTML. Có 3 cách nhúng CSS vào website:
Inline CSS – Nhúng trực tiếp vào tài liệu HTML thông qua cặp thẻ <style> </style>.
Internal CSS – dùng thẻ <style> bên trong thẻ <head> của HTML để tạo ra nơi viết mã CSS.
External CSS – Tạo một tập tin .css riêng và nhúng vào tài liệu HTML thông qua cặp thẻ <link>.
Inline CSS
Đặt thuộc tính style vào thẻ mở của phần tử HTML, giá trị của thuộc tính style là các cặp thuộc tính định dạng CSS. Mã CSS chỉ tác động nên chính phần tử đó.
Internal CSS
Đặt các cặp thuộc tính định dạng CSS vào bên trong cặp thẻ <style type=”text/css”></style>
Cặp thẻ <style type=”text/css”></style> thì được đặt bên trong cặp thẻ <head></head>
External CSS
Với External CSS: Ta đặt các thuộc tính định dạng vào bên trong tập tin CSS. Đây là một tập tin hoàn toàn độc lập so với file (File này thường được đặt phần mở rộng là .css) sau đó dùng thẻ link <link rel=”stylesheet” type=”text/css” href=”đường dẫn đến tập tin CSS”> đặt ở phần head (cặp thẻ <head></head> của các tập tin HTML) để có thể thực hiện nhúng tập tin CSS vào trang web.
THam khảo thêm các vị trí cho lập trình IT tại đây
HTML hay HyperText Markup Language, là thành phần quan trọng nhất và là khung sườn của World Wide Web. Tuy nhiên, nếu chỉ riêng HTML thôi thì khá đơn điệu bởi vì nó chỉ có thể cung cấp các trang web tĩnh; nhằm đáp ứng nhu cầu ngày càng tăng về các tính năng ấn tượng hơn, HTML đã được kết hợp với các thành phần khác như CSS, Javascript…
Tuy nhiên website ngày càng khá cồng kềnh và các trình duyệt khác nhau thực hiện những tính năng theo cách riêng của chúng. HTML5 sinh ra để giải quyết những vấn đề lớn của HTML, giúp cho trang web trở nên hiệu quả và đẹp đẽ hơn.
HTML5 là gì?
HTML5 là một ngôn ngữ cấu trúc và trình bày nội dung cho World Wide Web. Đây là phiên bản thứ 5 của ngôn ngữ HTML, được giới thiệu bởi World Wide Web Consortium (W3C). HTML5 vẫn sẽ giữ lại những đặc điểm cơ bản của HTML4 và bổ sung thêm các đặc tả nổi trội của XHTML, DOM cấp 2, đặc biệt là JavaScript.
Với sự ra đời của HTML5 cùng với các ứng dụng cần những hiệu ứng đồ họa và chuyển động đặc biệt, lập trình viên có thể sử dụng Canvas với kiểu bitmap hoặc SVG với kiểu vector. Không chỉ áp dụng cho việc thiết kế các trang web trực quan, HTML5 còn được áp dụng để tạo ra các thư viện đồ họa giúp tạo ra các ứng dụng đồ thị, game trong cả môi trường 2D và 3D như những ứng dụng trên desktop.
HTML5 có gì mới?
HTML đã hoạt động rất tốt, nhưng nó rõ ràng là có một số nhược điểm. Dựa vào đó HTML5 được xây dựng dựa trên các nguyên tắc sau đây:
Ít phụ thuộc vào các plugin cho các chức năng.
Scripting nên được thay thế bằng markup bất cứ khi nào có thể.
Chạy được trên bất kỳ thiết bị (ví dụ, có sẵn trên tất cả các thiết bị và cung cấp các trải nghiệm giống nhau đối với người dùng).
Hỗ trợ và chạy trên bất kỳ trình duyệt nào.
2. HTML5 đã bổ sung thêm rất nhiều các thẻ đánh dấu (markup) mới:
Các thẻ <header> và <footer> giúp bạn tách các phần trên và dưới của các block nội dung. Để có thể sử dụng nhiều lần trên một trang duy nhất.
Thẻ <article> giúp xác định một phần cụ thể về nội dung, ví dụ, một bài blog hoặc một bình luận của độc giả.
Thẻ <nav> để xác định những phần nào được coi là khối điều hướng.
Thẻ <section> cho phép bạn xác định một phần nội dung nào đó; tương tự như các thẻ <div> hiện nay.
Các thẻ <audio> và <video> để đánh dấu những nội dung bao gồm âm thanh hoặc video.
Thẻ <canvas> cho phép bạn vẽ đồ họa sử dụng một ngôn ngữ kịch bản riêng biệt. SVG, canvas và những hình dạng vector đều được hỗ trợ bởi HTML5.
Thẻ <embed> dùng để nhúng các nội dung hoặc các ứng dụng bên ngoài vào trang web.
Có nhiều element được giới thiệu trong HTML. Một vài trong số chúng là quan trọng nhất: summary, time, aside, audio, command, data, datalist, details, embed, wbr, span, figure, footer, header, article, hgroup, bdi, canvas, keygen, mark, meter, nav, output, progress, rp, rt, ruby, section, source, track, video.
3. HTML5 cũng bỏ đi một số thẻ: <acronym>, <applet>, <font>, <frame>, <frameset>, <noframes>, và một số khác như isindex, basefont, dir, big, center, strike…
4. HTML5 không còn thuộc tính type trong thẻ <script> và <link>: Trong những phiên bản HTML trước đây trong thẻ <script> và <link> bạn cần khai báo thêm thuộc tính type cho chúng. Việc khai báo thuộc tính này là không cần thiết là vì hai thẻ trên đã hàm ý rằng chúng là các thẻ tham chiếu đến stylesheets và các tập mã lệnh.
5. HTML5 sử dụng web SQL databases, application cache để lưu dữ liệu tạm trong khi HTML chỉ có cache của trình duyệt.
6. HTML5 hỗ trợ hoàn toàn cho JavaScript để chạy nền nhờ vào JS web worker API.
Các ưu điểm của HTML5
1. HTML5 đa nền tảng và responsive.
Bạn không phải trả tiền bản quyền nếu bạn quyết định sử dụng HTML5 cho trang web của mình. Nó đa nền tảng, có nghĩa là bạn có thể sử dụng nó trên hầu hết mọi thiết bị. Nó hoạt động giống nhau cho dù bạn truy cập một trang web thông qua máy tính để bàn, máy tính xách tay, điện thoại thông minh hay thậm chí là tivi của bạn. Miễn là trình duyệt bạn đang sử dụng hỗ trợ HTML5, thì rất có thể nó sẽ hoạt động như bình thường.
HTML5 cho phép phát triển các ứng dụng thích ứng với các độ phân giải, kích thước màn hình, tỷ lệ và nguyên tắc khác nhau. Các tính năng nâng cao trong các thiết bị hiện đại có thể được thực hiện với HTML5, chúng cung cấp trải nghiệm người dùng phù hợp với ngữ cảnh trong nhiều thiết bị như điện thoại thông minh & máy tính bảng.
2. Nó hỗ trợ âm thanh và video.
Thông qua việc sử dụng phần tử CANVAS, bạn có thể chạy nhiều thành phần khác nhau thông qua trang web của mình, trang web đã từng yêu cầu ứng dụng nhúng hoặc phần mềm được cài đặt ở phía người dùng (Flash, Silverlight…). Điều đó có nghĩa là HTML5 cho phép bạn tạo đồ họa động, kết hợp trò chơi trực tuyến và sử dụng video tương tác. Thậm chí có những trò chơi và video offline hiện có thể thực hiện được nhờ những gì HTML5 cung cấp.
3. Code bằng HTML5 rõ ràng và nhất quán.
Nó đơn giản, dễ hiểu và rất dễ đọc. Bạn có thể nhanh chóng tách nội dung khỏi style, giúp dễ dàng hơn trong việc code rõ ràng. Không mất nhiều thời gian để các lập trình viên mới học ngôn ngữ với cấu trúc này, có nghĩa là bất kỳ ai có đam mê trong lĩnh vực này đều có thể học theo.
4. Có nhiều layout elements hơn cho nội dung của bạn.
Nếu bạn đã quen với các phiên bản HTML cũ hơn, thì bạn biết các tùy chọn của mình đã có: Div, Heading, Paragraph và Span. Với HTML5, bạn có rất nhiều elements để sử dụng khi thiết kế bố cục trang của mình. Headers, footers, areas, và sections đều sẵn sàng giúp bạn làm việc tốt hơn.
5. Cung cấp lợi ích tối ưu hóa công cụ tìm kiếm.
SEO ngày nay hướng về giá trị nội dung hơn bất kỳ thứ gì khác, mà HTML5 giúp bạn cung cấp nội dung theo những cách hấp dẫn hơn. Bạn có thể tăng chuyển động thông qua tính năng mới như <form> chẳn hạn.
6. HTML5 hỗ trợ bở một cộng đồng đông đảo.
Điều đó có nghĩa là bạn có thể tự mình tìm thấy sự hỗ trợ cần thiết để khắc phục lỗi. Cũng có nghĩa là bạn sẽ gặp ít vấn đề về update hơn theo thời gian vì các bản cập nhật có thể theo thời gian thực.
7. Local storage và caching.
Local storage là một nâng cấp cực lớn của HTML5. Trong những ngày trước-HTML5, nếu lập trình viên muốn lưu bất kỳ thông tin nào, họ phải tạo cookies.
Các cookie được sử dụng để theo dõi dữ liệu người dùng duy nhất trong nhiều năm nhưng chúng có những nhược điểm nghiêm trọng. Lỗ hổng lớn nhất là tất cả dữ liệu cookie của bạn được thêm vào mỗi HTTP request header. Điều này có thể dẫn đến tác động đến thời gian phản hồi của server. Vì vậy, bạn nên làm là giảm kích thước cookie.
Với HTML5, chúng ta có thể làm tốt hơn bằng cách sử dụng session Storage & local Storage thay cho cookie. Nó không phải là cơ sở dữ liệu vĩnh viễn nhưng cho phép bạn lưu trữ dữ liệu có cấu trúc tạm thời.
Với HTML 5, Trong khi xây dựng trang web, Bạn có thể chỉ định các tệp mà trình duyệt sẽ lưu vào bộ nhớ cache. Vì vậy, nếu bạn reload trang khi bạn đang offline, trang vẫn sẽ hiển thị chính xác. Loại bộ nhớ đệm này có nhiều ưu điểm như duyệt ngoại tuyến, tệp tải nhanh hơn nhiều và giảm tải trên máy chủ.
8. Tái sử dụng.
Từ góc độ kinh doanh, HTML5 giúp bạn tiết kiệm thời gian và tiền bạc. Bởi vì nó có thể được triển khai trên nhiều nền tảng, bạn không còn bị ép buộc bất kỳ đâu. Bạn có thể phát triển một lần, sử dụng cùng một mã, tại bất kỳ hệ thống nào.
9. Nó hoạt động tốt với tính nhất quán tuyệt vời.
HTML5 giúp bạn nhúng video và âm thanh biểu đồ, animation và nhiều loại nội dung phong phú khác, mà không cần sử dụng bất kỳ plugin hoặc chương trình bên thứ ba nào. Vì chức năng hiện được tích hợp sẵn trong trình duyệt và bạn có thể truy cập các ứng dụng HTML5 mà không cần tải xuống chúng vào điện thoại của bạn.
10. Xử lý lỗi tốt hơn
Một trong những khác biệt chính giữa HTML và HTML5 là xử lý lỗi tốt hơn. Tại sao điều đó lại cần thiết?
Khi làm việc hay học HTML, trong quá trình coding, không ai có thể viết một mã code mà không bao giờ bị lỗi cả. Chỉ là chưa mà thôi.
Một trong những mục tiêu lớn nhất của việc phát triển HTML5 là giúp dễ dàng hơn trong việc tạo khai báo cú pháp, giúp xử lý code HTML bị lỗi tốt hơn.
Ngày nay có một loạt các chuẩn video khác nhau dựa trên trình duyệt mà bạn đang sử dụng. Có ba định dạng video chính hiện đang được sử dụng: Ogg, H.264 và VP8 / WebM. Đầu tiên được hỗ trợ bởi mọi thứ ngoại trừ Internet Explorer. Thứ hai được hỗ trợ bởi mọi thứ ngoại trừ Firefox. Đối với thứ ba, nó được hỗ trợ đầy đủ bởi mọi thứ, mặc dù nó có thể yêu cầu cài đặt thủ công.
2. Nó yêu cầu các trình duyệt hiện đại để sử dụng.
Nếu bạn có người dùng cố gắng truy cập trang web của mình thông qua một trình duyệt cũ hơn, thì bạn sẽ không thể truy cập được HTML5. Phải giải quyết sự thiếu tương thích nhất định với Internet Explorer. Từ góc độ kinh doanh, nếu khách truy cập trang web của bạn không thể truy cập vào một trang web đầy đủ chức năng, điều đó sẽ tạo ra một vấn đề. Họ sẽ không đổ lỗi cho trình duyệt hoặc IE cũ hơn của họ. Họ sẽ đổ lỗi cho bạn.
3. Có những vấn đề bản quyền phải được xem xét.
Rich media của bạn được cung cấp ở dạng nén, nhiều định dạng do bạn có thể gặp phải nhiều khả năng tương thích với trình duyệt. Điều đó có nghĩa là có những vấn đề cấp phép bản quyền mà bạn phải xem xét.
4. Khả năng đáp ứng nhiều thiết bị có thể là một vấn đề đau đầu.
Mục tiêu của việc tạo một trang web hiện đại là làm cho nó khả dụng trên tất cả thiết bị, responsive sẽ là thế mạnh cực lớn của nó. Tuy nhiên nếu bạn đang phát triển một trang web, bạn phải xem nội dung của mình trên tất cả các loại thiết bị và trình duyệt để đảm bảo nội dung giống nhau vì luôn có khả năng nội dung đó không hiển thị như bình thường.
5. HTML5 vẫn đang hoàn thiện từng ngày.
Mặc dù một số người có thể coi đây là một lợi thế, nhưng sự phát triển không ngừng của ngôn ngữ thực tế có trong HTML5 đòi hỏi bạn phải luôn cố gắng. Bản thân ngôn ngữ này khá ổn định. Về lý thuyết, bất cứ điều gì có thể thay đổi bất cứ lúc nào. Trên thực tế, đây là một mối đe dọa hơn là một bất lợi thực sự vào lúc này.
6. Chơi game gặp khó khăn với JavaScript trong HTML5.
JavaScript là ngôn ngữ kịch bản duy nhất của HTML5. Nó là một ngôn ngữ rất có linh động, lý tưởng cho nhiều ứng dụng. Tuy nhiên, từ góc độ chơi game, vẫn thiếu các tính năng cần thiết cho trải nghiệm chơi game mạnh mẽ.
Nếu bạn đang bắt đầu phát triển trang web hoặc đang tìm cách cập nhật trang web cũ hơn của mình, thì HTML5 sẽ là tùy chọn hiệu quả nhất dành cho bạn. Mặc dù nó có thể không hoàn hảo cho mọi giải pháp, nhưng bạn sẽ thấy rằng những ưu điểm và nhược điểm của HTML5 hạn chế những tiêu cực, làm nổi bật những mặt tích cực và cung cấp cho bạn một nền tảng đơn giản làm nổi bật tất cả những điểm mạnh của bạn.
HTML là viết tắt của cụm từ Hypertext Markup Language (tạm dịch là Ngôn ngữ đánh dấu siêu văn bản). HTML được sử dụng để tạo và cấu trúc các thành phần trong trang web hoặc ứng dụng, phân chia các đoạn văn, heading, titles, blockquotes… và HTML không phải là ngôn ngữ lập trình.
Một tài liệu HTML được hình thành bởi các phần tử HTML (HTML Elements) được quy định bằng các cặp thẻ (tag và attributes). Các cặp thẻ này được bao bọc bởi một dấu ngoặc ngọn (ví dụ <html>) và thường là sẽ được khai báo thành một cặp, bao gồm thẻ mở và thẻ đóng. Ví dụ, chúng ta có thể tạo một đoạn văn bằng cách đặt văn bản vào trong cặp tag mở và đóng văn bản <p> và </p> :
<p>Đây là cách bạn thêm đoạn văn trong HTML.</p>
Nhưng một số thẻ đặc biệt lại không có thẻ đóng và dữ liệu được khai báo sẽ nằm trong các thuộc tính (ví dụ như thẻ <img>).
Cha đẻ của HTML là Tim Berners-Lee, cũng là người khai sinh ra World Wide Web và chủ tịch của World Wide Web Consortium (W3C – tổ chức thiết lập ra các chuẩn trên môi trường Internet). Các thiết lập và cấu trúc HTML được vận hành và phát triển bởi World Wide Web Consortium (W3C). Bạn có thể kiểm tra tình trạng mới nhất của ngôn ngữ này bất kỳ lúc nào trên trang W3C’s website.
Khi bạn gõ ra 1 tên miền, trình duyệt mà bạn đang sử dụng (chẳng hạn như Chrome) sẽ kết nối tới 1 máy chủ web, bằng cách dùng 1 địa chỉ IP, vốn được thấy bằng cách phân giải tên miền đó (DNS). Máy chủ web chính là 1 máy tính được kết nối tới internet và nhận các yêu cầu tới trang web từ trình duyệt của bạn. Máy chủ sau đó sẽ gửi trả thông tin về trình duyệt của bạn, là 1 tài liệu HTML, để hiển thị trang web!
Một tập tin HTML sẽ bao gồm các phần tử HTML và được lưu lại dưới đuôi mở rộng là .html hoặc .htm. Khi một tập tin HTML được hình thành, việc xử lý nó sẽ do trình duyệt web đảm nhận. Trình duyệt sẽ đóng vai trò đọc hiểu nội dung HTML từ các thẻ bên trong và sẽ chuyển sang dạng văn bản đã được đánh dấu để đọc, nghe hoặc hiểu (do các bot máy tính hiểu).
Bạn có thể xem chúng bằng cách sử dụng bất kỳ trình duyệt web nào (như Google Chrome, Safari, hay Mozilla Firefox). Trình duyệt đọc các files HTML này và xuất bản nội dung lên internet sao cho người đọc có thể xem được nó.
Thông thường, trung bình một web chứa nhiều trang web HTML, ví dụ như: trang home, trang product, trang blog…
Cấu trúc một đoạn HTML
Mỗi trang HTML chứa một bộ các tag (cũng được gọi là elements). Mỗi thẻ sẽ có những tác dụng nhất định, giúp xây dựng nên một cấu trúc hoàn chỉnh cho Website. Bạn có thể xem như là việc xây dựng từng khối của một trang web. Nó tạo thành cấu trúc cây thư mục bao gồm section, paragraph, heading, và những khối nội dung khác.
Hầu hết các HTML elements đều có tag mở và tag đóng với cấu trúc như <tag></tag>.
Để biết bố cục HTML của một trang web như thế nào, bạn có thể xem code ví dụ của một trang HTML được cấu trúc như thế nào:
<!DOCTYPE html><html><head><title>Page Title</title></head><body><h1>The Main Heading</h1><h2>A catchy subheading</h2><p>First paragraph</p></body></html>
Trong đó:
<!DOCTYPE html>: khai báo kiểu dữ liệu hiển thị
<html> và </html>: cặp thẻ bắt buộc, element cấp cao nhất, có nhiệm vụ đóng gói tất cả nội dung của trang HTML
<head> và </head>: khai báo các thông tin meta của trang web như: tiêu đề trang, charset
<title> và </title>: cặp thẻ nằm bên trong thẻ <head>, dùng để khai báo tiêu đề của trang
<body> và </body>: cặp thẻ dùng để đóng gói tất cả các nội dung sẽ hiển thị trên trang
<h1></h1>, <h2></h2>: định dạng dữ liệu dạng heading. Thông thường có 6 cấp độ heading trong HTML, trải dài từ <h1> tới <h6>. Trong đó, <h1> là cấp độ heading cao nhất và <h6> là cấp độ heading thấp nhất.
<p> và </p>: cặp thẻ chứa các đoạn văn bản của trang web
Các tag thông dụng của HTML
HTML tags được sử dụng chủ yếu là 2 loại chính: block-level tags và inline tags.
Elements Block-level : đây là loại tag cấp cao nhất, sẽ sử dụng toàn không gian trang web và luôn bắt đầu dòng mới của trang web. 3 block-level tags mà tất cả các trang HTML đầu cần có đó là <html></html>, <head></head> và <body></body>.
Inline elements chỉ chiếm phần nhỏ không gian web và không bắt đầu dòng mới của trang web. Chúng thường dùng để định dạng nội dung bên trong của block level elements.
Block-Level Tags
3 block level tags của mỗi trang HTML cần có những tag như là <html>, <head>, và <body>.
Tag <html></html> là element cao nhất dùng để đóng gói mỗi trang HTML.
Tag <head></head> chứa các thông tin meta như là tiêu đề trang và charset.
Cuối cùng, <body></body> tag dùng để đóng gói tất cả nội dung sẽ hiện trên trang.
<html><head><!-- META INFORMATION --></head><body><!-- PAGE CONTENT --></body></html>
Inline Tags
Inline tags thường được dùng để định dạng, tạo bố cục cho nội dung bên trong của block-level tags.. Ví dụ như, tag <strong></strong> sẽ định dạng chữ in đậm, trong khi đó tag <em></em> sẽ định dạng chữ in nghiên.
Hyperlinks cũng là yếu tố element mà cần tag <a></a> và attributes href để xác định link cụ thể: <a href="https://topdev.vn/">Click me!</a>
Ảnh cũng là element inline. Bạn có thể thêm ảnh bằng cách sử dụng tag <img>mà không cần tag đóng. Nhưng bạn cũng cần sử dụng attribute src để xác định nguồn ảnh, ví dụ như:
HTML là một ngôn ngữ đánh dấu siêu văn bản nên nó sẽ có vai trò xây dựng cấu trúc siêu văn bản trên một website, hoặc khai báo các tập tin kỹ thuật số (media) như hình ảnh, video, nhạc. Tuy nhiên, HTML có ưu và nhược điểm của riêng nó.
Ưu điểm:
Được sử dụng rộng rãi, có rất nhiều nguồn tài nguyên hỗ trợ và cộng đồng sử dụng lớn.
Học đơn giản và dễ hiểu.
Mã nguồn mở và hoàn toàn miễn phí.
Markup gọn gàng và đồng nhất.
Tiêu chuẩn thế giới được vận hành bởi World Wide Web Consortium (W3C).
Dễ dàng tích hợp với các ngôn ngữ backend như PHP, Python…
Khuyết điểm:
Được dùng chủ yếu cho web tĩnh. Đối với các tính năng động như update hay realtime thời gian thực, bạn cần sử dụng JavaScript hoặc ngôn ngữ backend bên thứ 3 như PHP.
Với những ưu và khuyết điểm trên, điều đó không có nghĩa là chỉ sử dụng HTML để tạo ra một website mà HTML chỉ đóng một vai trò hình thành trên website. Một website chuẩn sẽ được hình thành bởi:
HTML – Xây dựng cấu trúc và định dạng các siêu văn bản.
CSS – Định dạng các siêu văn bản dạng thô tạo ra từ HTML thành một bố cục website, có màu sắc, ảnh nền,….
Javascript – Tạo ra các sự kiện tương tác với hành động của người dùng (ví dụ như là chat, update nội dung, hiệu ứng slide).
PHP – Ngôn ngữ lập trình để xử lý và trao đổi dữ liệu giữa máy chủ đến trình duyệt.
MySQL – Hệ quản trị cơ sở dữ liệu truy vấn có cấu trúc.
Nếu website là một cơ thể hoàn chỉnh thì HTML chính là bộ xương của cơ thể đó. Dù website thuộc thể loại nào, giao tiếp với ngôn ngữ lập trình nào để xử lý dữ liệu thì vẫn phải cần HTML để hiển thị nội dung ra cho người dùng xem.
HTML, CSS và Javascript bổ trợ cho nhau như thế nào?
Tuy HTML được đánh giá là khung sườn cho website nhưng nó vẫn chưa đủ khả năng xây dựng một trang web chuyên nghiệp. Do đó, các lập trình viên thường chỉ sử dụng HTML để thêm các element dạng văn bản và xây dựng giao diện cấu trúc cho phần nội dung trên trang.
Với khả năng tương thích cao, HTML khi kết hợp cùng CSS và Javascript sẽ có thể giúp tăng trải nghiệm cho người dùng và thiết lập được các chức năng cao cấp khác. Cụ thể:
CSS đóng vai trò chính trong việc thiết kế, xây dựng background, màu sắc và các hiệu ứng cho trang
CSS (Cascading Style Sheets) lại là một ngôn ngữ giúp định hình phong cách cho website. Chúng ta sử dụng CSS để định dạng phần nội dung được chỉ định trong tài liệu HTML. Nói thêm, CSS được phát triển bởi W3C vào năm 1996 nhằm hỗ trợ nhiều tính năng mà HTML chưa thể làm được, ví dụ như gắn tag để định dạng trang web.
Javascript có nhiệm vụ giúp tạo ra các chức năng động như: thư viện hình ảnh, slider, pop-up…
Website có hai loại chính:
Website tĩnh (static web) – Là một website không giao tiếp với máy chủ web để gửi nhận dữ liệu mà chỉ có các dữ liệu được khai báo sẵn bằng HTML và trình duyệt đọc.
Website động (dynamic web) – Là một website sẽ giao tiếp với một máy chủ để gửi nhận dữ liệu, các dữ liệu đó sẽ gửi ra ngoài cho người dùng bằng văn bản HTML và trình duyệt sẽ hiển thị nó. Để một website có thể giao tiếp với máy chủ web thì sẽ dùng một số ngôn ngữ lập trình dạng server-side như PHP, ASP.NET, Ruby,..để thực hiện. Ví dụ như một website làm bằng WordPress là website động.
Các phần mềm để lập trình HTML
Để lập trình web hiệu quả và tiết kiệm thời gian, công sức, bạn có thể sử dụng các phần mềm lập trình HTML miễn phí và hiệu quả dưới đây:
HTML là thành phần cực kỳ quan trọng của một website. Các thiết lập và cấu trúc HTML được vận hành và phát triển bởi World Wide Web Consortium (W3C). Bạn có thể kiểm tra tình trạng mới nhất của HTML bất kỳ lúc nào trên trang W3C’s website.
Soạn một đoạn HTML đầu tiên
Soạn thảo văn bản HTML ở đây nghĩa là chúng ta sẽ tập viết một văn bản được định dạng bằng các thẻ HTML chứ không phải là tạo ra một tập tin HTML hoàn chỉnh.
Hãy sử dụng Sublime Text để soạn thảo, Sublime Text là một chương trình soạn thảo văn bản (Text Editor) miễn phí mà thường là phục vụ cho việc soạn thảo các loại văn bản đơn giản cho đến các đoạn code phức tạp.
Bản miễn phí của Sublime Text sẽ tự động hiển thị bảng hỏi bạn mua bản quyền sau vài lần ấn Save, bạn có thể ấn No để từ chối.
Hy vọng với thông tin bài viết này bạn đã hiểu rõ hơn về HTML là gì? Đừng quên cập nhật thêm các kiến thức kinh nghiệm bổ ích về HTML và ngành lập trình công nghệ nhé! Chúc các bạn có những điều mới mẻ thú vị hơn cho hành trình nghề Dev sắp tới.
XAMPP là viết tắt của 5 module được tích hợp bên trong nó bao gồm là Cross-Platform (X), Apache (A), MariaDB (M), PHP (P) và Perl (P). XAMPP là một phần mềm nguồn mở và miễn phí dùng để tạo web server trên máy tính cá nhân (Localhost), XAMPP tương thích với các hệ điều hành phổ biến như : Linux, MacOS, Windows,..
Ưu điểm lớn nhất của XAMPP là mã nguồn mở và tính dễ sử dụng, tương đối đơn giản, gọn nhẹ nên được sử dụng ngày càng phổ biến hiện nay.
XAMPP được ứng dụng rộng rãi từ người dùng phổ thông đến lập trình viên, nhằm để vận hành cũng như phát triển các website dùng ngôn ngữ lập trình PHP như: WordPress, Joomla!, Magento, Drupal, OpenCart, phpBB,..
Localhost là gì?
Localhost là được ghép từ hai chữ “local” và “host”, localhost là tên gọi của máy chủ được vận hành trên máy tính bạn đang dùng mà không cần phải kết nối mạng.
Localhost bao gồm nhiều ứng dụng đi kèm với nhau và tất cả các ứng dụng đó sẽ kết hợp với nhau để tạo ra một môi trường có thể chạy mã nguồn sửng dung ngôn ngữ lập trình Php trên máy tính của chính bạn bao gồm:
Webserver là Apache, đây là webserver được sử dụng thông dụng nhất.
PHP để xử lý code PHP.
MySQL để lưu trữ và xử lý cơ sở dữ liệu (database), đây là cơ sở dữ liệu được dùng phổ biến nhất trong thế giới web.
Phần mềm PHPMyAdmin để xem và quản lý cơ sở dữ liệu MySQL.
Sử dụng localhost rất tiện lợi do có tốc độ xử lý nhanh vì web server lúc này đã nằm ngay trên máy tính của bạn.
Localhost vận hành như thế nào?
Khi set up Localhost vào máy tính, thì máy tính của bạn đã có sẵn một Webserver để chạy ứng dụng website với địa chỉ là http://127.0.0.1. Đây là địa chỉ IP dạng localhost, ngoài ra bạn cũng có thể chạy localhost với đường dẫn là http://localhost.
Khi cài Localhost, mỗi khi cần sử dụng bạn sẽ cần mở bảng điều khiển của localhost lên và kích hoạt cho nó khởi động các ứng dụng đi kèm.
Sau khi tải file cài đặt về xong và double click file vừa download hoặc chạy bằng quyền administrator bằng cách right click lên file vừa download > Run as administrator. Nếu máy tính bạn có chương trình duyệt virus sẽ xuất hiện hộp thoại “Question”, không cần lo lắng, cứ chọn “Yes”:
Ngay sau đó là hộp thoại “Warning” về quyền User điều khiển. Nếu bạn chạy bằng quyền administrator thì không cần quan tâm tới cảnh báo này, chọn “Ok” để tiếp tục. Còn muốn an toàn hơn thì bạn cứ việc chọn cài XAMPP ở ổ đĩa khác với ổ cài Window là được (chọn ổ đĩa tại bước Setup – Installation folder).
Hãy chạy nó, sau đó chọn Next.
Tại màn hình này chọn các ứng dụng kèm theo của bộ XAMPP, bạn có thể bỏ những phần không cần thiết đi nhe, tuy nhiên cứ chọn hết và “Next” thôi, vì sau này sẽ có dịp dùng đến.
Ở phần chọn đường dẫn, bạn hãy chọn đường dẫn cần lưu cài đặt của XAMPP. Lưu ý rằng đường dẫn này bạn phải nhớ vì khi cài đặt web lên localhost, bạn phải truy cập vào thư mục này. Bạn nên để mặc định là c:\xampp. Tiếp tục ấn Next.
Ở trang kế tiếp, bạn bỏ chọn phần “Learn more about Bitnami for XAMPP“. Và ấn Next 2 lần nữa để bắt đầu quá trình cài đặt XAMPP.
Sau khi cài xong, ấn nút Finish để kết thúc cài đặt và mở bảng điều khiển của XAMPP. Tuy nhiên, hãy khởi động lại máy sau khi cài đặt xong để tránh tình trạng không khởi động được localhost.
Khởi động Localhost
Bây giờ bạn hãy vào thư mục c:\xampp và mở file xampp-panel.exe lên để bật bảng điều khiển của XAMPP.
Bảng điều khiển của XAMPP
Bạn để ý sẽ thấy hai ứng dụng Apache và MySQL có nút Start, đó là dấu hiệu bảo 2 ứng dụng này chưa được khởi động, hãy ấn vào nút Start của từng ứng dụng để khởi động Webserver Apache và MySQL Server lên thì mới chạy được localhost.
Nếu cả hai ứng dụng chuyển sang màu xanh như hình dưới là đã khởi động thành công.
Sau khi khởi động xong, bạn hãy truy cập vào website với địa chỉ là http://localhost sẽ thấy nó hiển thị ra trang giới thiệu XAMPP như hình dưới.
Những lỗi thường gặp khi khởi động webserver và cách sửa lỗi
Để cho việc sử dụng XAMPP về sau được trơn tru, không lỗi lầm gì. Bạn cần có một số thiết lập sau:
Bước 1: Bạn vào thư mục đã cài đặt phần mềm XAMPP trong ổ C theo đường dẫn này: C:\xampp;
Bước 2: Trong thư mục này bạn tìm đến tập tin xampp-control.exe >> nhấn chuột phải và chọn vào mục Properties để mở cửa sổ thuộc tính của nó lên.
Bước 3: Chọn tab Compatibility và tick vào mục Run this program as an administrator để phần mềm này được chạy với quyền Administrator, tiếp theo là nhấn vào Apply và OK để áp dụng tùy chỉnh này.
Khi cài xong thì sẽ dễ gặp lỗi không khởi động được Apache là do xung đột port 80. Port này có rất nhiều chương trình sử dụng như Skype, IIS, World Wide Web Publishing service, HTTP Server API, … Cách giải quyết là tắt các chương trình trên sau đó khởi động lại Apache là được:
Skype, IIS hay HTTP Server API, … thì close ứng dụng tương ứng.
World Wide Web Publishing service thì nhấn tổ hợp phím: Window + R > gõ services.msc > tìm trong hộp thoại vừa hiện ra “World Wide Web Publishing Service” > click chuột phải chọn “Stop”.
Cách tốt nhất là các bạn nên đổi port của Apache sang port khác. Cách giải quyết nằm phía bên dưới bài viết.
Sau khi tắt ứng dụng tương ứng xong thì click chọn “Start” để khởi động lại Apache, màn hình như bên dưới là thành công.
Gõ lên trình duyệt http://localhost/ nếu xuất hiện chữ “It works!” (hoặc hiển thị màn hình dashboard của Xampp) là bạn đã cài đặt thành công.
phpMyAdmin
phpMyAdmin đã được tích hợp sẵn bên trong bộ cài đặt Xampp, nên khi cài xong Xampp hoàn thành thì ta có thể sử dụng được phpMyAdmin.
Click vào button “Admin” tương ứng với “MySQL” để mở trang phpMyAdmin
Cấu trúc thư mục làm việc và thao tác trên localhost
1. Cấu trúc folder và file
Thư mục thao tác từ đây về sau chính là C:\xampp\htdocs\. Bây giờ bạn hãy vào thư mục C:\xampp\htdocs\ và tạo một thư mục tên “myproject”, thư mục này sẽ chứa website của mình.
Để chạy được các file có trong project này, bạn cần gõ lên trình duyệt http://localhost/myproject/ khi này nếu không có file index thì các file hay folder bên trong sẽ được liệt kê đầy đủ.
Tiếp tục thử tạo file hello-world.php với nội dung bên trong là đoạn code PHP
<?php
echo "Hello World!";
?>
Sau đó gõ lên trình duyệt http://localhost/myproject/hello-world.php ta sẽ thấy được kết quả như bên dưới:
Hello World!
Như ở trên đã hướng dẫn bạn tạo một thư mục tên là myproject trong thư mục htdocs và bạn có thể sử dụng đường dẫn http://localhost/myproject để chạy. Vậy bây giờ có thể nói, thư mục C:\xampp\htdocs\myproject chính là thư mục gốc của tên miền http://localhost/myproject.
Nếu bạn click vào file ảnh đó thì trình duyệt sẽ hiển thị ảnh với đường dẫn là http://localhost/myproject/tên-tập-tin. Đây được xem là một link ảnh trong website của bạn.
Tương tự, hãy thử tạo một thư mục bất kỳ rồi copy một tập tin nào đó vào, thì bây giờ bạn có thể truy cập xem ảnh với đường dẫn là http://localhost/myproject/tên-folder/tên-tập-tin.
Như vậy bạn có thể hiểu, cái đường dẫn trên website nó sẽ phân thứ cấp tùy theo cấu trúc thư mục và file trong đó.
2. Cơ sở dữ liệu MySQL (Database)
Khi tạo database, bạn phải nhớ là nó bao gồm 3 thành phần chính là:
Tên user của database.
Mật khẩu của user database.
Tên database.
Database Host (thường thì điền là localhost, bất kể là bạn dùng ở localhost hay host bình thường).
Đối với localhost, bạn không cần tạo user cho database mà sẽ sử dụng thông tin user như sau:
Tên user database: root
Mật khẩu: bỏ trống
Do vậy, chúng ta chỉ cần tạo database là đủ.
Để tạo database, bạn hãy truy cập vào localhost với đường dẫn http://localhost/phpmyadmin. Sau đó bạn nhấp vào menu Databases. Phpmyadmin là phần mềm quản lý database
Sau đó ở phần Create databsae, bạn nhập tên database cần tạo vào ô Database name, phần Collation bạn hãy chọn là utf8_unicode_ci như hình dưới rồi ấn nút Create kế bên.
Tạo xong hãy nhìn bên menu tay trái, nếu nó xuất hiện tên database vừa tạo là thành công. Vậy bây giờ, chúng ta tạm có một databse với các thông tin như:
Database Host: localhost
Database user: root
Database password: trống
Database name: topdevblog
3. Cách đổi port mạng cho Localhost
Mặc định Localhost sẽ sử dụng cổng 80, tuy nhiên nếu như đã nói ở trên là có rất nhiều phần mềm dùng port 80. Để tránh bị đụng gây ra lỗi, bạn nên thiết lập cho Apache trong Localhost sử dụng một cổng khác, như 8080 chẳng hạn.
Trước khi đổi, các bạn lưu ý là sau khi đổi xong thì bạn phải truy cập vào website với tên miền http://localhost:8080 thay vì chỉ là http://localhost.
Để đổi port, bạn mở bảng điều khiển XAMPP lên và chọn nút Config của Apache, sau đó chọn Apache (httpd.conf).
Sau đó bạn tìm dòng này:
Listen 80
Đổi thành
Listen 8080
Sau đó bạn Stop cái Apache và Start lại rồi thử truy cập vào localhost theo đường dẫn http://localhost:8080. Nếu truy cập được thì bạn đã làm thành công.
Cài đặt WordPress trên Localhost
Sau khi cài đặt xong một localhost hoàn chỉnh rồi, bây giờ có thể tiến hành cài đặt WordPress vào localhost để khởi tạo một website.
Trước khi cài đặt, các bạn nên tạo một thư mục riêng tại thư mục “C:\\xampp\htdocs” để dễ dàng quản lý.
Sau đó giải nén ra sẽ có được một thư mục mang tên wordpress. Tiếp tục, hãy truy cập vào thư mục wordpress, bạn sẽ thấy có một số thư mục tên là wp-admin, wp-includes, wp-content và một số tập tin tên là index.php, wp-config-sample.php,…Tất cả tập tin và thư mục này, chúng ta gọi nó là mã nguồn WordPress.
2. Copy code WordPress vào Localhost
Bây giờ, hãy copy toàn bộ file và thư mục này vào thư mục website của bạn trong localhost (ví dụ: C:\xampp\htdocs\blog). Nghĩa là bạn chỉ copy các file và thư mục mã nguồn thôi, không copy cả thư mục wordpress vì chúng ta cần cài WordPress vào tên miền http://localhost/blog mà, nếu bạn copy cả thư mục wordpress vào thì website của bạn sẽ có đường dẫn là http://localhost/blog/wordpress/.
3. Tạo một database
Để chạy được WordPress thì localhost của bạn phải có một database dùng MySQL để nó có thể lưu trữ các dữ liệu bao gồm bài viết, page…
4. Chạy website để cài đặt
Sau khi copy xong, hãy mở bảng điều khiển của XAMPP lên và khởi động Apache và MySQL. Sau đó truy cập vào website với đường dẫn http://localhost/blog
Lúc này, nó sẽ hiện ra bảng chọn ngôn ngữ cần cài đặt cho WordPress, hãy chọn là English và ấn Continue.
Ở bước tiếp theo, nó sẽ nhắc nhở cho bạn là chưa tiến hành đổi file wp-config-sample.php thành wp-config.php và khai báo thông tin database vào đó. Hãy ấn Let’s Go để nó tự làm việc đó cho bạn.
Trên localhost, User Name của database là root, mật khẩu có thể để trống (vẫn có cách thiết lập nhưng không cần thiết) và Database Host là localhost.
Table Prefix nghĩa là tiền tố của database chứa dữ liệu WordPress, mặc định nó sẽ là wp_, chúng ta có thể đổi nó thành bất cứ cái gì nhưng phải bắt buộc có _ đằng sau.
Khi nhập xong thông tin database, hãy ấn nút Submit để làm bước kế tiếp. Nếu bước kế tiếp nó hiện ra như hình dưới thì nghĩa là bạn đã nhập thông tin database chính xác, hãy ấn nút Run the install để bắt đầu cài đặt.
Ở bước cài đặt này, các bạn sẽ cần phải thiết lập các thông tin quan trọng cho website như Tên của website, tên tài khoản admin cùng mật khẩu,…Nhập xong hãy ấn nút Install WordPress.
Và nếu nó hiện chữ Success! như thế này là bạn đã cài đặt thành công, click vào nút Log in để đăng nhập vào bảng quản trị WordPress.
Và ở đây, nếu truy cập vào tên miền chính như http://localhost/blog, nó sẽ ra trang chủ của website WordPress.
Còn nếu muốn truy cập vào trang quản trị Admin của WordPress thì sẽ thêm /wp-admin vào đường dẫn thành http://localhost/blog/wp-admin.
Hy vọng với bài viết này bạn sẽ hiểu rõ hơn về Xampp là gì? Cũng như cách sử dụng và cài đặt xampp như thế nào. Nếu còn thắc mắc gì hay có góp ý thêm cho chúng mình. Inbox gửi thông tin, chúng mình luôn lắng nghe ạ
Bài viết được sự cho phép của tác giả Edward Thiên Hoàng
DNS là viết tắt của cụm từ Domain Name System, mang ý nghĩa đầy đủ là hệ thống phân giải tên miền. Hiểu một cách ngắn gọn nhất, DNS cơ bản là một hệ thống chuyển đổi các tên miền website mà chúng ta đang sử dụng, ở dạng http://www.tenmien.com sang một địa chỉ IP dạng số tương ứng với tên miền đó và ngược lại.
Thao tác này của DNS giúp liên kết các thiết bị mạng với nhau nhằm mục đích định vị và gán một địa chỉ cụ thể cho các thông tin trên internet.
Về chức năng, DNS có thể được hiểu như một “người phiên dịch” và “truyền đạt thông tin”. DNS sẽ làm công việc dịch tên miền thành một địa chỉ IP gồm 4 nhóm số khác nhau. Ví dụ như http://www.tenmien.com thành 421.64.874.899 hoặc ngược lại dịch một địa chỉ IP thành tên miền.
Khi “dịch” như thế, trình duyệt sẽ hiểu và đăng nhập vào được. Và khi người dùng đăng nhập vào một website, thay vì phải nhớ và nhập một dãy số địa chỉ IP của hosting, thì chỉ cần nhập tên website là trình duyệt tự động nhận diện.
Mỗi máy tính trên Internet đều có một địa chỉ IP duy nhất. Địa chỉ IP này được dùng để thiết lập kết nối giữa server và máy khách để khởi đầu một kết nối. Bất kỳ khi nào, bạn truy cập vào một website tùy ý hoặc gửi một email, thì DNS đóng vai trò rất quan trọng trong trường hợp này.
Trong vô vàn trang web trên thế giới, sẽ không có ai có thể nhớ hết từng dãy số địa chỉ IP trong mỗi lần đăng nhập. Do đó, khái niệm tên miền được đưa ra, từ đó mỗi trang web sẽ được xác định với tên duy nhất.
Tuy nhiên, địa chỉ IP vẫn được sử dụng như một nền tảng kết nối bởi các thiết bị mạng. Đó là nơi DNS làm việc phân giải tên domain thành địa chỉ IP để các thiết bị mạng giao tiếp với nhau. Đồng thời, bạn cũng có thể tải một website bằng cách nhập trực tiếp địa chỉ IP thay vì nhập tên domain của website đó.
DNS đóng vai trò như một “người phiên dịch”
CÁC LOẠI DNS SERVER VÀ VAI TRÒ CỦA NÓ
ROOT NAME SERVERS LÀ GÌ?
Đây là máy chủ tên miền chứa các thông tin, để tìm kiếm các máy chủ tên miền lưu trữ (authority) cho các tên miền thuộc mức cao nhất (top-level-domain).
Máy chủ ROOT có thể đưa ra các truy vấn (query) để tìm kiếm tối thiểu các thông tin về địa chỉ của các máy chủ tên miền authority thuộc lớp top-level-domain chứa tên miền muốn tìm.
Sau đó, các máy chủ tên miền ở mức top-level-domain có thể cung cấp các thông tin về địa chỉ của máy chủ authority cho tên miền ở mức second-level-domain chứa tên miền muốn tìm. Quá trình tìm kiếm tiếp tục cho đến khi chỉ ra được máy chủ tên miền authority cho tên miền muốn tìm. Theo cơ chế hoạt động này thì bạn có thể tìm kiếm một tên miền bất kỳ trên không gian tên miền.
Một điểm đáng chú ý khác, quá trình tìm kiếm tên miền luôn được bắt đầu bằng các truy vấn gửi cho máy chủ ROOT. Nếu như các máy chủ tên miền ở mức ROOT không hoạt động, quá trình tìm kiếm này sẽ không được thực hiện.
Để tránh điều này xảy ra, trên mạng Internet hiện tại có 13 hệ thống máy chủ tên miền ở mức ROOT. Các máy chủ tên miền này nói chung và ngay trong cùng một hệ thống nói riêng đều được đặt tại nhiều vị trí khác nhau trên mạng Internet.
Các nhánh gốc của máy chủ hay còn gọi là Root name server
Hiện nay tại các nhà đăng ký tên miền, việc Quản lý DNS dễ dàng hơn bao giờ hết. Bạn có thể Quản lý bản ghi DNS dễ dàng thêm mới, thay đổi IP, thay đổi địa chỉ phân phối email.
LOCAL NAME SERVERS LÀ GÌ?
Server này chứa thông tin, để tìm kiếm máy chủ tên miền lưu trữ cho các tên miền thấp hơn. Nó thường được duy trì bởi các doanh nghiệp, các nhà cung cấp dịch vụ Internet (ISPs).
Hệ thống máy chủ DNS riêng của mỗi đơn vị
CƠ CHẾ HOẠT ĐỘNG CỦA DNS LÀ GÌ?
Giả sử bạn muốn truy cập vào trang có địa chỉ matbao.vn
Trước hết chương trình trên máy người sử dụng gửi yêu cầu tìm kiếm địa chỉ IP ứng với tên miền matbao.vn tới máy chủ quản lý tên miền (name server) cục bộ thuộc mạng của nó.
Máy chủ tên miền cục bộ này kiểm tra trong cơ sở dữ liệu của nó có chứa cơ sở dữ liệu chuyển đổi từ tên miền sang địa chỉ IP của tên miền mà người sử dụng yêu cầu không. Trong trường hợp máy chủ tên miền cục bộ có cơ sở dữ liệu này, nó sẽ gửi trả lại địa chỉ IP của máy có tên miền nói trên.
Trong trường hợp máy chủ tên miền cục bộ không có cơ sở dữ liệu về tên miền này nó sẽ hỏi lên các máy chủ tên miền ở mức cao nhất (máy chủ tên miền làm việc ở mức ROOT). Máy chủ tên miền ở mức ROOT này sẽ chỉ cho máy chủ tên miền cục bộ địa chỉ của máy chủ tên miền quản lý các tên miền có đuôi .vn.
Tiếp đó, máy chủ tên miền cục bộ gửi yêu cầu đến máy chủ quản lý tên miền Việt Nam (.VN) tìm tên miền matbao.vn.
Máy chủ tên miền cục bộ sẽ hỏi máy chủ quản lý tên miền vnn.vn địa chỉ IP của tên miền matbao.vn. Do máy chủ quản lý tên miền vnn.vn có cơ sở dữ liệu về tên miền matbao.vn nên địa chỉ IP của tên miền này sẽ được gửi trả lại cho máy chủ tên miền cục bộ.
Cuối cùng, máy chủ tên miền cục bộ chuyển thông tin tìm được đến máy của người sử dụng. Người sử dụng dùng địa chỉ IP này để kết nối đến server chứa trang web có địa chỉ matbao.vn.
Cách thức hoạt động của DNS
NGUYÊN TẮC LÀM VIỆC CỦA DNS LÀ GÌ?
Mỗi nhà cung cấp dịch vụ vận hành và duy trì DNS server riêng của mình, gồm các máy bên trong phần riêng của mỗi nhà cung cấp dịch vụ đó trong Internet.
Tức là, nếu một trình duyệt tìm kiếm địa chỉ của một website bất kỳ thì DNS server phân giải tên website này phải là DNS server của chính tổ chức quản lý website đó chứ không phải là của một tổ chức (nhà cung cấp dịch vụ) nào khác.
INTERNIC (Internet Network Information Center) chịu trách nhiệm theo dõi các tên miền và các DNS server tương ứng. INTERNIC là một tổ chức được thành lập bởi NFS (National Science Foundation), AT&T và Network Solution, chịu trách nhiệm đăng ký các tên miền của Internet. INTERNIC chỉ có nhiệm vụ quản lý tất cả các DNS server trên Internet chứ không có nhiệm vụ phân giải tên cho từng địa chỉ.
DNS có khả năng tra vấn các DNS server khác để có được một cái tên đã được phân giải. DNS server của mỗi tên miền thường có hai việc khác biệt.
Thứ nhất, chịu trách nhiệm phân giải tên từ các máy bên trong miền về các địa chỉ Internet, cả bên trong lẫn bên ngoài miền nó quản lý.
Thứ hai, chúng trả lời các DNS server bên ngoài đang cố gắng phân giải những cái tên bên trong miền nó quản lý. DNS server có khả năng ghi nhớ lại những tên vừa phân giải. Để dùng cho những yêu cầu phân giải lần sau. Số lượng những tên phân giải được lưu lại tùy thuộc vào quy mô của từng DNS.
SỬ DỤNG DNS NHƯ THẾ NÀO?
Vì tốc độ của DNS khác nhau, nên người sử dụng có thể tự chọn DNS server cho riêng mình. Trong trường hợp sử dụng DNS của nhà cung cấp mạng, người sử dụng không cần phải điền địa chỉ DNs vào kết nối mạng của mình.
Còn nếu trong trường hợp sử dụng máy chủ DNS khác, sẽ phải điền địa chỉ cụ thể của máy chủ đó vào. Để thay đổi DNS Server bạn có thể làm như sau:
Bước 1: Trước tiên, bạn vào phần Control Panel, nhấn Start Menu lên sau đó gõ Control Panel là thấy.
Bước 2: Tại đây bạn truy cập vào View network status and tasks.
Bước 3: Sau đó truy cập vào mạng internet bạn đang sử dụng
Bước 4: Tiếp theo nhấn vào phần Properties, nơi đây sẽ cho phép chúng ta thay đổi DNS máy tính.
Bước 5: Bạn sẽ thấy có một phần tên là Internet Protocol Version 4, hãy nhấn vào đó.
Bước 6: Trong Internet Protocol Version 4 lựa chọn Use the following DNS server addresses và tiến hành đổi DNS tại đây.
Cuối cùng nhấn vào OK để xác nhận thiết lập vừa rồi, như vậy là chúng ta đã hoàn tất công đoạn thay đổi DNS.
DNS SERVERS VÀ ĐỊA CHỈ IP
Như đã đề cập ở trên, nhiệm vụ chính của một DNS (Domain Name Server) là giải quyết (hay nói cách khác là biên dịch) một tên miền thành một địa chỉ IP. Điều này nghe có vẻ đơn giản nhưng thực tế thì không hề đơn giản một chút nào cả. Lý do là bởi vì:
– Có hàng tỷ các địa chỉ IP đang được sử dụng.
– Máy chủ DNS đang xử lý “hàng tỷ” các yêu cầu trên Internet vào các thời điểm bất kỳ.
– Mỗi ngày có hàng triệu người đang thêm và thay đổi tên miền cũng như địa chỉ IP.
Để giải quyết các vấn đề, máy chủ DNS dựa vào hiệu suất mạng và các giao thức Internet. Đối với địa chỉ của IP, mỗi một máy tính trên mạng Internet đều có một địa chỉ IP duy nhất (bao gồm chuẩn IPV4 và IPV6) do IANA (Internet Assigned Numbers Authority) quản lý.
DNS nói chung là một phần vô cùng thiết yếu và quan trọng trong quản trị mạng và website. Hy vọng với những thông tin chi tiết mà Mắt Bão cung cấp cho bạn phía trên, bạn sẽ phần nào hiểu rõ hơn về khái niệm DNS và cách sử dụng nó một cách hiệu quả.
Một buổi chiều đẹp trời, anh ấy check mail và tình cờ nhìn thấy chức năng Unsubscribe mà Google đã khéo léo thêm vào bên dưới mỗi thanh tiêu đề. Thật là một chức năng hữu ích! anh thầm nghĩ, và không ngại ngần dành suốt 5 tiếng đồng hồ tiếp theo để click vào từng cái nút ấy. Thậm chí, anh còn search cả những email spam cũ, đã lâu ngày không thấy gửi tiếp. Đã diệt thì phải trừ tận gốc. Anh nghĩ thế. Xong xuôi đâu vào đấy, anh vươn vai thở phào một cái và tắt máy đi ngủ, lòng tràn đầy vui sướng vì một ngày mai không còn nhìn thấy mail spam.
Anh vừa đi vừa chửi, anh chửi thằng Google vì cái nút Unsubscribe vô dụng, anh chửi cái hộp mail vì càng lúc càng đầy thêm những mail quảng cáo, anh chửi đám dịch vụ vì ngay khi anh vừa bấm nút unsubscribe, chúng liền gửi thêm hàng tá, hàng tá email quảng cáo vào cái hộp mail xấu số của anh. Tính từ đêm qua đến lúc thức dậy, anh nhận thêm hơn 200 email quảng cáo, có cả những mail đến từ những dịch vụ đã ngừng gửi mail cho anh từ lâu lắm rồi.
Sau nhiều đêm trằn trọc suy nghĩ, anh đi đến một kết luận: Thôi mình đếu xài Gmail nữa vậy.
Thay vào đó, là quay lại cách đọc mail của mấy ông già thời cổ đại: fetch toàn bộ mail về máy tính, rồi dùng Mutt (nếu thích xài terminal) hoặc Thunderbird (nếu thích xài GUI) để đọc.
Mấu chốt của việc trên nằm ở chỗ fetch toàn bộ mail về máy tính. Tức là sẽ dùng các công cụ như offlineimap hoặc mbsync để tải toàn bộ mail từ Google về máy tính, thường là thông qua giao thức IMAP hoặc POP3. Dữ liệu email sẽ được lưu vào máy tính dưới dạng file, các file này thường sẽ được lưu dưới định dạng Maildir hoặc Mbox.
Một khi đã có dữ liệu mail nằm trong máy tính, ta có thể dùng các trình đọc mail có hỗ trợ giao thức Maildir hoặc Mbox, là Mutt hoặc Thunderbird.
Và vì có dữ liệu mail nằm trong máy tính (kể cả các mail spam), ta có toàn quyền xử lý, phân loại email theo ý mình mà không cần phụ thuộc vào Gmail. Đến đây thì chấp cả họ nhà tụi spammer, ta có thể chủ động tìm và xóa đám mail rác ngay trên máy tính.
Để xóa mail rác từ máy tính, có 10000001 cách, ví dụ, đoạn lệnh sau sẽ tìm tất cả các mail có chứa từ khóa thefullsnack.com trong thư mục ~/mail/inbox và đưa hết vào thư mục ~/mail/trash, để lần sync tiếp theo nó sẽ bị xóa, hoặc thích thì có thể thay bằng lệnh rm để xóa nó luôn.
Để scale up, có thể viết một script chứa tất cả các regex pattern (vì lệnh rg hoặc ag sử dụng regex để search) cần lọc, và chạy script này mỗi lần sync email từ server về.
Quá nhiều thứ cần làm một cách thủ công… có thể khắc phục bằng cách viết script, dù sao đây cũng là cái giá phải trả để giành được quyền kiểm soát hoàn toàn cái inbox của mình.
Bài viết được sự cho phép của BBT Tạp chí Lập trình
Tách phương thức: Tách từ một phương thức dài lấy một phương thức mới nhỏ hơn. Việc chia từ một phương thức dài thành nhiều phương thức nhỏ sẽ làm mã tốt hơn như: dễ hiểu, để bảo trì, dễ tái sử dụng hơn.
Sao và dán đoạn mã muốn tách từ phương thức ban đầu vào phương thức mới.
Tìm tất cả các tham chiếu ở đoạn mã sao tới các biến của phương thức ban đầu. Các biến này sẽ là các biến cục bộ và tham số của phương thức mới.
Khai báo biên cục bộ cho tất cả các biến tạm ở đoạn mã sao.
Tìm tất cả các biến ở hàm gốc bị thay đổi giá trị ở đoạn mã sao. Nếu chỉ có một bị thay đổi thì có thể truyền giá trị đó vào bằng đối số và gán cho giá trị tương ứng. Nhưng nếu có nhiều hơn thì phải chú ý!
Truyền tất cả mọi biến được tham chiếu chỉ để đọc ở mã được sao vào phương thức mới như tham số.
Biên dịch để kiểm tra xem mọi biến cục bộ đã được xử lý.
Ví dụ có biến cục bộ chỉ để đọc: Trong trường hợp này ta đơn giản là truyền chúng theo tham số. Ở ví dụ trên ta có thể tách phương thức để in ra thông tin chi tiết từ phương thức printOwning
Và bạn có thể truyền vào số lượng biến cục bộ tùy thích.
Ví dụ có gán giá trị cho biến cục bộ:
Trong trường hợp này chúng ta chỉ đề cập tới trường hợp biến cục bộ của hàm gốc, nếu là có thay đổi giá trị cho tham số thì xem kỹ thuật tái cấu trúc xóa gán cho tham số.
Từ phương thức printOwing có ở trên:
[sourcecode language=”java”] void printOwing() {
Enumeration e = _orders.elements();
double outstanding = 0.0;
printBanner();
// calculate outstanding
while (e.hasMoreElements()) {
Order each = (Order) e.nextElement();
outstanding += each.getAmount();
}
printDetails(outstanding);
}
[/sourcecode]
Ta có thể tách thành:
[sourcecode language=”java”] void printOwing() {
printBanner();
double outstanding = getOutstanding();
printDetails(outstanding);
}
double getOutstanding() {
Enumeration e = _orders.elements();
double outstanding = 0.0;
while (e.hasMoreElements()) {
Order each = (Order) e.nextElement();
outstanding += each.getAmount();
}
return outstanding;
}
[/sourcecode]
Tách lớp: tách một phần của lớp đã tồn tại thành một lớp mới. Một lớp có kích thước tăng dần và tới trở nên khó hiểu và khó bảo trì. Lúc đó ta phải tách nhỏ lớp đó ra.
Các bước:
Cách chia trách nhiệm của các lớp
Tạo lớp mới để chia sẻ trách nhiệm với lớp ban đầu
Tạo một liên kết từ lớp ban đầu tới lớp mới
Thực hiện viên di chuyển từng trường và phương thức từ lớp cũ sang lớp mới
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh
Thông thường, khi deploy các ứng dụng lên môi trường production, chúng ta sẽ deploy lên nhiều server khác nhau. Việc quản lý log trên nhiều server sẽ gây ra rất nhiều khó khăn, mất thời gian mà không hiệu quả. Sẽ tốt hơn nếu chúng ta sử dụng giải pháp centralize tất cả các file logging. Điều này có nghĩa là chúng ta sẽ cài đặt để các server đang deploy ứng dụng có thể gửi tất cả các log message của ứng dụng về một server chính, trên server chính chúng ta sẽ sử dụng các công cụ để các log message có thể hiển thị một cách trực quan nhất.
Trong thế giới ELK (Elasticsearch-Logstash-Kibana), để hiện thực được ý tưởng trên, các bạn có thể dùng các công cụ Beats để thực hiện. Beats là các công cụ có nhiệm vụ chính là data shipper, bao gồm: Filebeat, Metricbeat, Packetbeat, Winlogbeat, Auditbeat, Heartbeat, Functionbeat. Trong bài viết này, mình sẽ hướng dẫn các bạn cài đặt công cụ Filebeat các bạn nhé!
Đầu tiên, tương tự như khi cài đặt Elasticsearch hay Kibana, nếu server của các bạn chưa cài đặt Elasticsearch hoặc Kibana repository, thì các bạn cần cài đặt repository của Filebeat vào
Các bạn cần thêm Filebeat public signing key trước bằng cách chạy câu lệnh sau:
Bây giờ thì các bạn có thể chạy câu lệnh sau để cài đặt Filebeat rồi:
sudo yum install filebeat
Nhập “Y” để tiếp tục các bạn nhé!
Kết quả cài đặt:
Sau khi cài đặt xong, các bạn có thể bắt đầu cấu hình để Filebeat có thể thực hiện nhu cầu của chúng ta. Tập tin cấu hình của Filebeat có tên là filebeat.yaml nằm trong thư mục /etc/filebeat của CentOS đó các bạn!
Trong những bài viết tới, mình sẽ hướng dẫn các bạn cách cấu hình Filebeat các bạn nhé!
Laravel framework có một vài yêu cầu về hệ thống. Hiển nhiên là các yêu cầu này đã được đầy đủ trong Laravel Homestead, vì thế Laravel rất khuyến khích các bạn sử dụng Homestead cho môi trường phát triển. Tuy nhiên với những bạn không rành cấu hình phức tạp có thể dùng web server phổ biến trên localhost là XAMPP.
Để có thể cài Laravel, bạn phải đáp ứng được các yêu cầu bắt buộc sau:
PHP >= 7.1.3
OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
XML PHP Extension
Ctype PHP Extension
JSON PHP Extension
Đối với Windows: sử dụng phần mềm tạo Webserver trên Windows như Openserver, Wamp, Xampp, Ampps…
Cài đặt Laravel
Cài đặt Composer
Laravel sử dụng Composer để quản lý các thư viện phụ thuộc. Vì vậy, trước khi sử dụng Laravel, cần đảm bảo rằng đã cài đặt trình soạn thảo trên máy.
Sau khi cài đặt xong, bạn di chuyển vào thư mục htdocs của XAMPP. Sau đó mở cửa sổ lệnh (đối với windows thì nhấp Shift + chuột phải và chọnCommand Window Herehoặc Git Bash Here) và gõ:
laravel new blog
Trong đó blog chính là tên thư mụclaravel project của bạn. Vậy là chúng ta đã cài đặt xong Laravel rồi đấy.
Cài đặt Laravel thông qua Composer
Di chuyển thẳng vào thư mục htdocs của XAMPP, tại đây mở cửa sổ lệnh và gõ lệnh:
composer create-project –prefer-dist laravel/laravel blog
Trong đó blog chính là tên thư mục laravel project của bạn.
Cài đặt Laravel thủ công
Clone project laravel trên github tại địa chỉ https://github.com/laravel/laravel sau đó tại thư mục gốc của project chạy lệnh terminal sau:
composer install
Sử dụng framework Laravel
Sau khi cài đặt hoàn tất, mở WebServer của bạn lên, đến thư mục public trong thư mục Laravel project hoặc từ thư mục Laravel project, gõ lệnh:
php artisan serve
Khi đó trên màn hình console xuất hiện thông báo: ”Laravel development server started on http://localhost:8000/”.
Vào trình duyệt gõ:
http://localhost:8000
Cấu hình laravel
Quyền hạn thư mục
Phải chắc chắn rằng 2 thư mục storage và bootstrap/cache phải có quyền write bởi web server (nginx, apache,…) ,nếu không có quyền ghi thì Laravel sẽ không chạy được. Trên windows thông thường không cần phải cấu hình gì, còn trên linux, macOS chạy lệnh sau:
# Nginxchown -R nginx:nginx /home/chungnguyenblog
# Cho phép quyền ghi cho thư mụcchmod -R 777 storage/ bootstrap/cache/
Nếu bạn dùng hosting không chạy được lệnh thông qua ssh thì bạn nên dùng các ftp client như File Zilla:
1. Click chuột phải vào folder
2. File Permissions…
3. Numberic Value 777
4. Check vào ô Recurse into subdirectories và nhấp OK.
Application Key
Nếu cài laravel theo cách 1 và cách 2 thì Application Key mặc định được tạo, nếu làm thủ công bạn phải đổi tên hoặc copy file .env.example thành .env, sau đó chạy lệnh terminal sau:
php artisan key:generate
Nếu application key không được thiết lập, các user sessions và các dữ liệu mã hoá khác sẽ không được bảo mật an toàn. Và project sẽ báo lỗi không chạy được.
Quyền hạn thư mục và Application Key không được cấu hình đầy đủ thì 99% project sẽ báo lỗi khi đưa lên vps – hosting và khiến những bạn newbie rất bối rối không biết cách xử lý.
Trong lập trình ứng dụng web, XML được sử dụng nhiều nhất là xây dựng các API Service. Các API sẽ trả kết quả về dạng XML hoặc JSON để các hệ thống khác có thể nói nói chuyện với nhau được. Hiện nay tuy JSON được sử dụng phổ biến hơn, nhưng XML cũng vẫn đang được dùng bởi nhiều hệ thống lớn. Cùng TopDev tìm hiểu XML là gì thật chi tiết trong bài viết dưới đây!
XML là gì?
XML là từ viết tắt của từ Extensible Markup Language là ngôn ngữ đánh dấu mở rộng được thiết kế để lưu trữ và truyền tải dữ liệu một cách có cấu trúc. Tác dụng chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các nền tảng và các hệ thống được kết nối thông qua mạng Internet.
Ngôn ngữ XML do Tổ chức World Wide Web Consortium (W3C) đề xuất, được tạo ra để hỗ trợ việc xây dựng các dịch vụ API. XML có khả năng truyền và đọc nhiều loại dữ liệu khác nhau. Kết quả từ API thường được trả về dưới dạng XML, cho phép các hệ thống khác nhau dễ dàng giao tiếp với nhau.
Ví dụ khi ta xây dựng một ứng dụng bằng php và một ứng dụng bằng Java thì hai ngôn ngữ này không thể hiểu nhau, vì vậy ta sẽ sử dụng XML để trao đổi dữ liệu. Chính vì vậy, XML có tác dụng rất lớn trong việc chia sẻ, trao đổi dữ liệu giữa các hệ thống.
Ưu và nhược điểm của XML
Ưu điểm của XML
Ưu điểm lớn nhất của XML là sự độc lập. XML được sử dụng để mô tả dữ liệu dưới dạng text, nên hầu hết các phần mềm hay các chương trình bình thường đều có thể đọc được chúng.
XML có thể đọc và phân tích nguồn dữ liệu khá dễ dàng nên nó được sử dụng với mục đích chính là trao đổi dữ liệu giữa các chương trình, các hệ thống khác nhau. XML được sử dụng cho Remote Procedure Calls nhằm phục vụ cho các dịch vụ của website.
Tương thích tốt với các công nghệ khác: XML dễ dàng tích hợp với các ngôn ngữ và công nghệ khác như HTML, CSS, JavaScript, và đặc biệt là các giao thức web như SOAP (Simple Object Access Protocol) để trao đổi dữ liệu.
Hỗ trợ tốt cho cấu trúc dữ liệu phân cấp: XML có khả năng biểu diễn các cấu trúc dữ liệu phân cấp, chẳng hạn như cây dữ liệu. Điều này giúp XML lý tưởng cho việc mô tả các cấu trúc phức tạp như cấu trúc thư mục hoặc tài liệu.
Nhược điểm của XML
Tốn kém tài nguyên: XML có cú pháp dài và phức tạp, điều này dẫn đến tệp XML thường lớn hơn nhiều so với các định dạng khác như JSON. Kích thước lớn làm cho XML ít hiệu quả khi cần truyền tải dữ liệu qua mạng hoặc lưu trữ trên thiết bị có dung lượng giới hạn.
Tốc độ xử lý chậm: Do XML yêu cầu cú pháp phức tạp và cấu trúc dữ liệu phân cấp, việc phân tích và xử lý các tệp XML tốn thời gian và tài nguyên hơn so với các định dạng đơn giản hơn như JSON. Điều này có thể gây ra vấn đề về hiệu suất trong các ứng dụng thời gian thực.
Thiếu tính năng xử lý trực tiếp: XML không có cơ chế xử lý trực tiếp các kiểu dữ liệu khác nhau (như số nguyên, số thực, boolean) như JSON. Tất cả dữ liệu trong XML đều ở dạng chuỗi, điều này đòi hỏi việc chuyển đổi dữ liệu thủ công, gây ra rắc rối cho các nhà phát triển.
Text, hoặc dữ liệu là ký tự, như TopDev và (084) 123-4567.
Sơ đồ sau minh họa qui tắc cú pháp để viết các kiểu đánh dấu và text khác nhau trong một tài liệu XML.
Chúng ta đi vào giải thích chi tiết cho từng phần:
1. Khai báo XML (XML Declaration)
Tài liệu XML có thể tùy ý có một phần khai báo XML. Nó được viết như sau:
<?xml version="1.0" encoding="UTF-8"?>
Ở đây, version là phiên bản XML và encoding xác định mã hóa ký tự được sử dụng trong tài liệu.
2. Các qui tắc cú pháp để khai báo XML
Khai báo XML (XML declaration) là phân biệt kiểu chữ và phải bắt đầu với “<?xml>” ở đây “xml” viết ở dạng chữ thường.
Nếu tài liệu chứa khai báo XML, thì nó phải là lệnh đầu tiên của tài liệu XML.
Khai báo XML phải là lệnh đầu tiên của tài liệu XML.
Một HTTP Protocol có thể ghi đè giá trị của encoding mà bạn đặt trong khai báo XML.
3. Tags và Elements
Một XML file được cấu thành bởi một số phần tử XML (Element), còn được gọi là XML-node hoặc XML-tags. Tên các phần tử XML được bao trong các dấu < > như sau:
<element>
4. Qui tắc cú pháp (Syntax Rules) cho các thẻ và phần tử
Cú pháp phần tử: Mỗi phần tử XML cần được bao trong hoặc với phần tử bắt đầu hoặc kết thúc như sau:
<element>....</element>
Hoặc đơn giản theo cách:
<element/>
Lồng các phần tử: Một phần tử XML có thể chứa nhiều phần tử XML khác như là con của nó, nhưng các phần tử con này phải không đè lên nhau, ví dụ: Một thẻ đóng của một phần tử phải có cùng tên như thẻ mở kết nối với nó.
Phần tử gốc (Root Element): Một tài liệu XML có thể chỉ có một phần tử gốc. Ví dụ sau minh họa một tài liệu XML sai cú pháp, bởi vì cả hai phần tử x và y xuất hiện ở cấp cao nhất mà không phải là một phần tử gốc.
<x>...</x><y>...</y>
Còn đây là ví dụ về đúng cú pháp:
<root><x>...</x><y>...</y></root>
Phân biệt kiểu chữ: Tên của các phần tử XML là phân biệt kiểu chữ. Nghĩa là tên của thẻ mở và thẻ đóng phải cùng kiểu.
Ví dụ, <contact-info> là khác với <Contact-Info>.
5. Thuộc tính (Attributes)
Một thuộc tính xác định thuộc tính cho phần tử, sử dụng một cặp tên/giá trị. Một phần tử XML có thể có một hoặc nhiều thuộc tính. Ví dụ:
<ahref="https://topdev.vn/">TopDev</a>
Ở đây href là tên thuộc tính và https://topdev.vn/ là giá trị thuộc tính.
6. Qui tắc cú pháp cho thuộc tính trong XML
Tên thuộc tính trong XML là phân biệt kiểu chữ (không giống như HTML). Tức là, HREF và href là hai thuộc tính khác nhau trong XML.
Cùng một thuộc tính không thể có hai giá trị trong một cú pháp. Ví dụ sau là sai cú pháp bởi vì thuộc tính b được xác định hai lần:
<ab="x"c="y"b="z">....</a>
Tên thuộc tính được định nghĩa không có sự trích dẫn, trong khi giá trị thuộc tính phải luôn luôn trong các dấu trích dẫn. Ví dụ sau là sai cú pháp:
<ab=x>....</a>
Trong ví dụ này, giá trị thuộc tính không được định nghĩa trong các dấu trích dẫn.
7. Tham chiếu trong XML
Tham chiếu (References) thường cho phép bạn thêm hoặc bao phần text hoặc phần đánh dấu bổ sung trong một tài liệu XML. Các tham chiếu luôn luôn bắt đầu với biểu tượng “&” , đây là ký tự dành riêng và kết thúc với ký tự “;”. XML có hai kiểu tham chiếu:
Tham chiếu thực thể (Entity Reference): Một tham chiếu thực thể chứa một tên giữa dấu tách mở và dấu tách đóng. Ví dụ: & có amp là tên. Tên tham chiếu tới một chuỗi văn bản hoặc đánh dấu đã được định nghĩa trước.
Tham chiếu ký tự (Character Reference): Chứa các tham chiếu, ví dụ A, chứa một dấu băm (#) được theo sau bởi một số. Số này luôn luôn tham chiếu tới mã hóa Unicode của ký tự. Trong ví dụ này, 65 tham chiếu tới chữ cái “A”.
8. Text trong XML
Tên của phần tử XML và thuộc tính XML là phân biệt kiểu chữ, nghĩa là tên của phần tử mở và phần tử đóng phải ở được viết cùng kiểu.
Để tránh các vấn đề về mã hóa ký tự, tất cả XML file nên được lưu ở dạng Unicode UTF-8 hoặc UTF-16.
Các ký tự whitespace như khoảng trắng, tab và ngắt dòng giữa các phần tử XML và giữa các thuộc tính XML sẽ bị bỏ qua.
Một số ký tự được dành riêng trong cú pháp XML. Vì thế, chúng không thể được sử dụng một cách trực tiếp. Để sử dụng chúng, một số thực thể thay thế được sử dụng, các thực thể này được liệt kê trong bảng dưới:
Ký tự không được phép sử dụng
Thực thể thay thế
Miêu tả
<
<
Nhỏ hơn
>
>
Lớn hơn
&
&
Và
‘
'
Dấu nháy đơn
“
"
Trích dẫn kép
Bạn có thể tham khảo video tóm tắt về XML:
Mặc dù vẫn tồn tại một số nhược điểm, XML vẫn là một công cụ mạnh mẽ và phổ biến trong việc lưu trữ và trao đổi dữ liệu, đặc biệt trong các ứng dụng yêu cầu tính linh hoạt và cấu trúc rõ ràng. Hi vọng qua bài viết này của TopDev, bạn đã hiểu được XML là gì, cú pháp cũng như ưu nhược điểm của XML. Theo dõi TopDev để cập nhật kiến thức công nghệ mỗi ngày!
CV IT chưa hoàn hảo có phải là nguyên nhân khiến ứng viên e dè buổi interview? Nhà tuyển dụng cũng bị “bỏ rơi”, tại sao không? Thực tế, đó vẫn là một vấn đề nan giải của chuyện tuyển dụng. Nhiều nhà tuyển dụng đã phải chờ đợi ứng viên trong vô vọng khi thấy họ “mất tích” trong buổi phỏng vấn. Và vấn đề về thư mời phỏng vấn cũng là một trong những thắc mắc đáng quan tâm. Có rất nhiều giả thiết đã được đặt ra cho sự vắng mặt của các ứng viên. Cùng TopDev phân tích một số lý do khiến ứng viên “bốc hơi” và các giải pháp được đề xuất.
Ứng viên có nhiều hơn 1 sự lựa chọn
Ứng viên có nhiều sự lựa chọn hơn trong việc “thả” CV IT Administrator cho nhiều doanh nghiệp
Một ứng viên tài năng chắc chắn họ không chỉ có một sự lựa chọn. Họ thường nộp CV cho nhiều công ty khác nhau. Thậm chí nhiều vị trí khác nhau như freelancer it,… Chẳng hạn, bạn nộp nhiều CV IT Administrator cho cùng một vị trí là ở nhiều doanh nghiệp khác nhau. Điều đó làm gia tăng các cơ hội và sự lựa chọn của họ. Thực tế, doanh nghiệp của bạn có thể vuột mất ứng viên tiềm năng chỉ vì các lợi thế khác từ đối thủ: offer mức lương cao hơn, môi trường năng động, dễ phát triển,…
Xem thêm các vị tri tuyển dụng IT nổi bật tại LASTMILE
Giải pháp
Hãy quan tâm đến việc tối ưu hóa thời gian tuyển dụng. Đồng thời, cần đầu tư cho việc phát triển xây dựng thương hiệu tuyển dụng. Nếu khoanh vùng được các ứng viên tiềm năng, hãy sắp xếp phỏng vấn họ càng sớm càng tốt. Đừng chần chờ vì bạn không biết được rằng họ đã onboard tại một công ty khác hay chưa.
Chưa sẵn sàng về kinh nghiệm và kỹ năng
Đây là những ứng viên thường do dự. Họ vì một lý do nào đó mà chưa có những tìm hiểu kỹ về vị trí công việc, môi trường – văn hóa doanh nghiệp. Và điều quan trọng là họ vẫn còn chưa tự tin về năng lực của bản thân liệu có đáp ứng được nhu cầu công việc hay không? Điều đó làm họ có cảm giác lo sợ cho buổi phỏng vấn trực tiếp…Vậy nên bốc hơi đối với họ là giải pháp tốt nhất.
Kinh nghiệm còn “non” là một trong những nguyên nhân khiến ứng viên e ngại về sự thể hiện của mình.
Thực tế cho thấy, kinh nghiệm và kỹ năng của bạn được phản ánh rõ qua CV. Ví dụ, bạn ứng tuyển vị trí ngành CNTT thông qua IT Programmer CV hay CV IT Administrator. Tuy vậy, CV của bạn chị đạt mức trung bình đối với nhà tuyển dụng. Đây cũng là một nỗi lo lắng mà nhiều ứng viên tự viễn cảnh ra cho mình. Từ đó, sự áp lực đã khiến họ thiếu đi sự tự tin.
Ngoài ra, trường hợp này sẽ bao gồm những ứng viên còn ít kinh nghiệm, đặc biệt là các sinh viên mới ra trường. Đôi khi, họ đã đến nơi phỏng vấn nhưng thiếu can đảm. Hoặc vì những khó khăn được vẽ ra từ nhiều nguồn làm họ có chút do dự, thiếu sự quyết đoán trong việc có nên phỏng vấn hay không.
Giải pháp
Thiết lập bản mô tả công việc (Job Description) cần đảm bảo các thông tin chi tiết về vị trí công việc, các kỹ năng cần thiết,… Đồng thời lưu ý gợi nhắc ứng viên về việc đầu tư CV vì CV cho sinh viên IT mới ra trường dường như còn nhiều mặt hạn chế (do chưa nhiều kinh nghiệm). Một thư mời phỏng vấn chuyên nghiệp sẽ tạo dấu ấn tốt hơn đối với ứng viên.
Nên có những ghi chú về các yêu cầu để ứng viên có sự chuẩn bị tốt nhất
Phỏng vấn qua Skype, Hangouts,… để nắm bắt nhu cầu trước buổi phỏng vấn chính thức. Nếu địa điểm gần, hãy nhắc ứng viên trước buổi phỏng vấn. Đồng thời quan tâm đến thư mơi phỏng vấn. Nếu địa điểm ở xa, thảo luận về việc lựa chọn hình thức phỏng vấn trực tuyến tại nhà hoặc một địa điểm thuận lợi với ứng viên, tương ứng với khung thời gian phù hợp.
Ứng viên bận hoặc quên mất lịch trình phỏng vấn
Hầu hết các ứng viên đều liên lạc để thông báo với nhà tuyển dụng về việc không tham gia phỏng vấn. Thế nhưng, không tránh những trường hợp ứng viên quên buổi phỏng vấn. Ví dụ bạn có một buổi interview cho vị trí freelancer it, App Mobile Developer. Tuy vậy, bạn đã quên mất đi việc đó vì nhiều lý do phát sinh. Cho đến khi có email follow-up thì họ mới nhớ CV IT Administrator.
Ứng viên có thể quên buổi interview với nhiều lý do phát sinh khác nhau.
Điều này càng làm cho phía nhân sự tuyển dụng đặc biệt quan tâm đến việc take care các ứng viên trong danh sách cần phỏng vấn. Đôi khi, một nhà tuyển dụng rất nghiêm khắc sẽ loại ngay ứng viên quên buổi phỏng vấn. Tất nhiên, đây là cách thức phù hợp nếu số lượng ứng tuyển quá nhiều. Song, việc đó có thể khiến bạn vô tình làm mất đi các ứng viên tài năng. Nhiều vị trí
Giải pháp
Nhà tuyển dụng cần linh hoạt hơn trong công tác phỏng vấn ứng viên. Cụ thể, việc dời lịch phỏng vấn sang một thời điểm khác là cách thức phù hợp nhất. Điều này cho thấy chính nhà tuyển dụng đang tạo ra cơ hội cho chính ứng viên và cả tổ chức/doanh nghiệp của mình.
Đồng thời, để hạn chế tình trạng này, phía nhân sự cần chủ động nhắc nhở ứng viên trước buổi phỏng vấn từ 1-2 ngày. Hoăc doanh nghiệp có thể sử dụng các phần mềm quản lý tuyển dụng để tối ưu hóa quy trình.
Lời kết
Thực tế, có rất nhiều lý do tác động khiến các ứng viên không thể tham gia buổi phỏng vấn. Và tất nhiên, các doanh nghiệp nói chung và phìa nhà tuyển dụng nói riêng vẫn có những chiến lược phù hợp nhằm khắc phục trình trạng này. Mọi nỗ lực sẽ có kết quả nếu họ thật sự quan tâm đến các ứng viên của mình. TopDev hi vọng bài viết đã có những phân tích giúp mọi người nhìn nhận vấn đề này một cách rõ ràng hơn. Từ đó tim kiếm các cách thức kiểm soát quy trình phỏng vấn ứng viên thật hiệu quả.
Tuyển Dụng Nhân Tài IT Cùng TopDev Đăng ký nhận ưu đãi & tư vấn về các giải pháp Tuyển dụng IT & Xây dựng Thương hiệu tuyển dụng ngay!
Hotline: 028.6273.3496 – Email: contact@topdev.vn
Dịch vụ: https://topdev.vn/page/products
DOM là gì? Tìm hiểu và thao tác DOM trong Javascript
Với lập trình web, kiến thức về DOM và khả năng thao tác DOM là hai yếu tố quan trọng nhất. DOM cho bạn khả năng thay đổi mọi thứ của trang web, khi mà mọi nội dung đều có thể được thêm bớt xóa sửa để mang lại trải nghiệm và nội dung tốt nhất.
Và Javascript là một ngôn ngữ được sử dụng trên các Browser nên nó đóng một vai trò quan trọng trong các website. Javascript giúp cho việc thao tác với các tài liệu HTML kết hợp với các cú pháp riêng của nó để tạo nên các trải nghiệm thân thiện của web. Để thao tác được với các thẻ HTML thì nó phải thông qua một cơ chế ta gọi là DOM.
DOM là gì?
DOM là tên gọi viết tắt của (Document Object Model – tạm dịch Mô hình Các Đối tượng Tài liệu). Là một chuẩn được định nghĩa bởi W3C (Tổ Chức Web Toàn Cầu – World Wide Web Consortium). DOM được dùng để truy xuất và thao tác trên các tài liệu có cấu trúc dạng HTML hay XML bằng các ngôn ngữ lập trình thông dụng như Javascript, PHP…
Trong mỗi thẻ HTML sẽ có những thuộc tính (Properties) và có phân cấp cha – con với các thẻ HTML khác. Sự phân cấp và các thuộc tính của thẻ HTML này ta gọi là selector và trong DOM sẽ có nhiệm vụ xử lý các vấn đề như đổi thuộc tính của thẻ, đổi cấu trúc HTML của thẻ.
Có thể thấy tất cả các thẻ HTML sẽ được quản lý trong đối tượng document. Thẻ cao nhất là thẻ html, tiếp theo là phân nhánh body và head. Bên trong head thì có những thẻ như style, title,… và bên trong body thì là vô số các thẻ HTML khác. Như vậy trong Javascript, để thao tác với các thẻ HTML ta phải thông qua đối tượng document.
HTML DOM giúp thao tác dữ liệu theo mô hình hướng đối tượng. Các phần tử bên trong 1 tài liệu có cấu trúc được định nghĩa thành các đối tượng, phương thức và thuộc tính để có thể truy xuất dễ dàng mà vẫn đảm bảo tính cấu trúc.
Mỗi phần tử là một đối tượng, sở hữu các thuộc tính và các phương thức để làm việc với các thuộc tính đó như thêm, xóa, sửa, cập nhật. Bên cạnh đó, bạn cũng có thể thêm bớt các phần tử tùy thích, giúp cho nội dung và cấu trúc của trang web luôn cập nhật động. Nó định nghĩa sau đây:
Đối với HTML DOM, mọi thành phần đều được xem là một node (nút), được biểu diễn trên 1 cây cấu trúc dạng cây gọi là DOM Tree. Các phần tử khác nhau sẽ được phân loại node khác nhau nhưng quan trọng nhất là 3 loại: node gốc (document node), node phần tử (element node), node văn bản (text node).
Node gốc: chính là tài liệu HTML, thường được biểu diễn bởi thẻ <html>.
Node phần tử: biểu diễn cho 1 phần tử HTML.
Node văn bản: mỗi đoạn kí tự trong tài liệu HTML, bên trong 1 thẻ HTML đều là 1 node văn bản. Đó có thể là tên trang web trong thẻ <title>, tên đề mục trong thẻ <h1>, hay một đoạn văn trong thẻ <p>.
Ngoài ra còn có node thuộc tính (attribute node) và node chú thích (comment node).
Quan hệ giữa các node
Node gốc (document) luôn là node đầu tiên.
Tất cả các node không phải là node gốc đều chỉ có 1 node cha (parent).
Một node có thể có một hoặc nhiều con, nhưng cũng có thể không có con nào.
Những node có cùng node cha được gọi là các node anh em (siblings).
Trong các node anh em, node đầu tiên được gọi là con cả (firstChild) và node cuối cùng là con út (lastChild).
Các loại DOM trong Javascript
Javascript cung cấp cho chúng ta nhiều loại DOM để xử lí HTML và CSS dễ dàng hơn.
DOM document: lưu trữ toàn bộ các thành phần trong documents của website.
DOM element: truy xuất tới thẻ HTML nào đó thông qua các thuộc tính như tên class, id, name của thẻ HTML.
DOM HTML: thay đổi giá trị nội dung và giá trị thuộc tính của các thẻ HTML.
DOM CSS: thay đổi các định dạng CSS của thẻ HTML.
DOM Event: gán các sự kiện như onclick(), onload() vào các thẻ HTML.
DOM Listener: lắng nghe các sự kiện tác động lên thẻ HTML.
DOM Navigation dùng để quản lý, thao tác với các thẻ HTML, thể hiện mối quan hệ cha – con của các thẻ HTML
DOM Node, Nodelist: thao tác với HTML thông qua đối tượng (Object).
Mọi nội dung đều có thể được cập nhật động thông qua các thuộc tính và phương thức của DOM. Từ thay đổi định dạng chữ, nội dung chữ đến thay đổi cấu trúc các node và cả thêm node mới. Bạn cần hiểu rõ cách thao tác DOM và ý nghĩa của từng thuộc tính, phương thức.
Các Thuộc tính và Phương thức thường gặp
Thuộc tính:
id: Định danh – là duy nhất cho mỗi phần tử nên thường được dùng để truy xuất DOM trực tiếp và nhanh chóng.
className: Tên lớp – Cũng dùng để truy xuất trực tiếp như id, nhưng 1 className có thể dùng cho nhiều phần tử.
tagName: Tên thẻ HTML.
innerHTML: Trả về mã HTML bên trong phần tử hiện tại. Đoạn mã HTML này là chuỗi kí tự chứa tất cả phần tử bên trong, bao gồm các node phần tử và node văn bản.
outerHTML: Trả về mã HTML của phần tử hiện tại. Nói cách khác, outerHTML = tagName + innerHTML.
textContent: Trả về 1 chuỗi kí tự chứa nội dung của tất cả node văn bản bên trong phần tử hiện tại.
attributes: Tập các thuộc tính như id, name, class, href, title…
style: Tập các định dạng của phần tử hiện tại
value: Lấy giá trị của thành phần được chọn thành một biến.
Phương thức:
getElementById(id): Tham chiếu đến 1 node duy nhất có thuộc tính id giống với id cần tìm.
getElementsByTagName(tagname): Tham chiếu đến tất cả các node có thuộc tính tagName giống với tên thẻ cần tìm, hay hiểu đơn giản hơn là tìm tất cả các phần tử DOM mang thẻ HTML cùng loại. Nếu muốn truy xuất đến toàn bộ thẻ trong tài liệu HTML thì hãy sử dụng document.getElementsByTagName('*').
getElementsByName(name): Tham chiếu đến tất cả các node có thuộc tính name cần tìm.
getAttribute(attributeName): Lấy giá trị của thuộc tính.
setAttribute(attributeName, value): Sửa giá trị của thuộc tính.
appendChild(node): Thêm 1 node con vào node hiện tại.
removeChild(node): Xóa 1 node con khỏi node hiện tại.
Mặt khác, các phần tử DOM đều là các node trên cây cấu trúc DOM. Chúng sở hữu thêm các thuộc tính quan hệ để biểu diễn sự phụ thuộc giữa các node với nhau. Nhờ các thuộc tính quan hệ này, chúng ta có thể truy xuất DOM gián tiếp dựa trên quan hệ và vị trí của các phần tử:
Chúng ta có thể truy xuất mọi phần tử html bằng cách sử dụng các phương thức :
document.getElementById()
document.getElementsByTagName()
document.getElementsByClass()
Ví dụ:
<!DOCTYPE html><html><head><meta charset="utf-8"><title>DOM</title></head><body><h1 id="txt1">Truyxuấtbằngid</h1><script type="text/javascript">varx = document.getElementById('txt1');// Truy xuất thẻ h1 có id 'txt1'x.innerHTML = "Thay đổi";//Thay đổi nội dung của thẻ h1</script></body></html>
ở ví dụ trên mình đã truy xuất và thay đổi nội dung của thẻ h1 bằng phương thức document.getElementById().
<!DOCTYPE html><html><head><meta charset="utf-8"><title>DOM</title></head><body><h1 id="txt1">TruyxuấtbằngTagName</h1><script type="text/javascript">varx = document.getElementsByTagName('h1');//Truy xuất các thẻ có TagName là h1x[0].innerHTML = 'Thay đổi';//Thay đổi nội dung của thẻ h1 đầu tiên trong html</script></body></html>
ở ví dụ này đã truy xuất và thay đổi nội dung của thẻ h1 bằng document.getElementsByTagName()
Chú ý:
Truy xuất bằng document.getElementById() giá trị trả về chính là phần tử có id đó.
Truy xuất bằng document.getElementsByTagName() hoặc document.getElementsByClass() giá trị trả về sẽ là một mảng, vậy nên ta cần truy xuất phần tử của mảng để xác định được phần tử mong muốn.
Thay tất cả các tham chiếu bằng getter/ setter tương ứng.
Chuyển dữ liệu đó thành private (riêng tư).
Kiểm tra lại lần cuối xem còn có tham chiếu nào không.
Biên dịch và kiểm thử lại lần cuối.
[sourcecode language=”java”] private int low, height;
public boolean isIn(int arg){
return (low>=arg)&&(arg<=height);
}
[/sourcecode]
Hình 1. Mã chưa được bao gói
[sourcecode language=”java”] private int low, height;
public boolean isIn(int arg){
return (getLow()>=arg)&&(arg<=getHeight());
}
public int getHeight() {
return height;
}
public int getLow() {
return low;
}
[/sourcecode]
Hình 2. Mã đã được bao gói
Tạo một kiểu chung cho những kiểu có chung mã.
Từ những kiểu cụ thể, tạo ra một kiểu chung chứa thuộc tính và phương thức chung cho tất cả các kiểu cụ thể. Mã bị lặp là nguyên nhân chính làm ta phải tiến hành việc tái cấu trúc này.
Việc tái cấu trúc này làm chúng ta phải viết ít mã hơn, nhiều mã được chia sẻ hơn, nên việc bảo trì, đọc cũng dễ dàng hơn.
Thay các câu lệnh điều kiện bằng các sử dụng tính đa hình.
Khi bạn có một câu lệnh điều kiện phụ thuộc vào loại của đối tượng. Vấn đề lớn nhất của câu lệnh điều kiện này là xuất hiện ở nhiều nơi, và mỗi lần mà bạn muốn thêm một loại mới vào thì bản phải cập nhật ở tất cả những nơi này. Khi đó tính đa hình của lập trình hướng đối tượng sẽ giúp bạn.
Cách thức tiến hành việc tái cấu trúc: Tạo một phương thức trừu tượng ở lớp cha và chuyển khối lệnh ở lệnh điều kiện vào phương thức ghi đè ở mỗi lớp con.
[sourcecode language=”java”] double getSpeed() {
switch (type) {
case EUROPEAN:
return getBaseSpeed();
case AFRICAN:
return getBaseSpeed() – getLoadFactor() *
_numberOfCoconuts;
case NORWEGIAN_BLUE:
return (_isNailed) ? 0 : getBaseSpeed(_voltage);
}
throw new RuntimeException ("Should be unreachable");
}[/sourcecode]
Hàm replace() của một chuỗi trong JavaScript có một biến thể dùng kèm với một callback. Cái này thì không mới, đã ghi trong document từ rất lâu rồi, nhưng kì thực thì mình chưa bao giờ cần phải replace thứ gì phức tạp tới mức phải dùng tới callback, nên cũng chả quan tâm gì mấy. Chỉ đơn giản là theo cú pháp:
Hàm callback sẽ được gọi mỗi lần chúng ta tìm ra một nội dung được khớp với từ khóa, với 3 tham số là matched (nội dung trùng khớp), index (vị trí của matched trong chuỗi input) và original (chính là chuỗi input). Giá trị trả về của callback sẽ được replace vào vị trí xuất hiện của matched.
Sử dụng callback như thế này sẽ giúp cho chúng ta thực hiện được các thao tác phức tạp hơn nhiều lần so với cách replace thông thường.
Ví dụ: Chúng ta cần replace kí tự "a" xuất hiện ở vị trí thứ 2 trong chuỗi "abcabc" thành kí tự "$".
Trong trường hợp này thì bạn sẽ viết regex như thế nào nếu dùng với cú pháp mặc định ở đầu bài? Rồi nếu yêu cầu thay đổi từ vị trí thứ 2 sang một ví trí thứ n nào đó thì sao? Đoạn regex bạn viết ra liệu có phức tạp không? Sau vài tháng liệu bạn đọc lại đoạn regex đó thì có còn hiểu gì nữa không? Hay lỡ mà bạn nghỉ việc, rồi thằng developer xấu số nào đó nhận maintain cái đống code của bạn, nó có gọi điện cho bạn để chửi, hay thậm chí là dọa giết luôn không?
Còn nếu dùng callback của hàm replace(), bạn chỉ cần viết thế này:
Mặc dù dài dòng, nhưng cách viết dùng callback trên rõ ràng là dễ hiểu hơn và có khả năng maintainable cao hơn, cho chính người viết ra nó hoặc người khác phải làm việc với nó.
Bài viết được sự cho phép của tác giả Edward Thiên Hoàng
SSL là chữ viết tắt của Secure Sockets Layer (Lớp socket bảo mật). Một loại bảo mật giúp mã hóa liên lạc giữa website và trình duyệt. Công nghệ này đang lỗi thời và được thay thế hoàn toàn bởi TLS.
TLS là chữ viết tắt của Transport Layer Security, nó cũng giúp bảo mật thông tin truyền giống như SSL. Nhưng vì SSL không còn được phát triển nữa, nên TLS mới là thuật ngữ đúng nên dùng.
HTTPS là phần mở rộng bảo mật của HTTP. Website được cài đặt chứng chỉ SSL/TLS có thể dùng gaio thức HTTPS để thiết lập kênh kết nối an toàn tới server. Tóm lại, các điều cơ bản bạn cần nắm rõ về SSL là:
Mục tiêu của SSL/TLS là bảo mật các thông tin nhạy cảm trong quá trình truyền trên internet như, thông tin cá nhân, thông tin thanh toán, thông tin đăng nhập.
Nó là giải pháp thay thế cho phướng pháp truyền thông tin văn bản dạng plain text, văn bản loại này khi truyền trên internet sẽ không được mã hóa, nên việc áp dụng mã hóa vào sẽ khiến cho các bên thứ 3 không xâm nhập được bào thông tin của bạn, không đánh cắp hay chỉnh sửa được các thông tin đó.
Hầu hết mọi người đều quen thuộc với các chứng chỉ SSL/TLS, đang được dùng bởi các website lớn và các webmaster nghiêm túc trong việc bảo vệ các giao dịch người dùng.
Bạn có thể biết được website có đang dùng chứng chỉ bảo mật SSL/TLS hay không đơn giản bằng cách nhìn vào icon trong URL ngay trong thanh địa chỉ.
Vậy trước tiên, hãy cùng nhau tìm hiểu về chứng chỉ SSL nhé.
CHỨNG CHỈ SSL/TLS HOẠT ĐỘNG NHƯ THẾ NÀO?
Chứng chỉ SSL/TLS hoạt động bằng cách tích hợp key mã hóa vào thông tin định danh công ty. Nó sẽ giúp công ty mã hóa mọi thông tin được truyền mà không bị ảnh hưởng hoặc chỉnh sửa bởi các bên thứ 3.
SSL/TLS hoạt động bằng cách sử dụng public và private key, đồng thời các khóa duy nhất của mỗi phiên giao dịch. Mỗi khi khách truy cập điền vào thanh địa chỉ SSL thông tin web browser hoặc chuyển hướng tới trang web được bảo mật, trình duyệt và web server đã thiết lập kết nối.
Trong phiên kết nối ban đầu, public và private key được dùng để tạo session key, vốn được dùng để mã hóa và giải mã dữ liệu được truyền đưa. Session key sẽ được sử dụng trong một khoảng thời gian nhất định và chỉ có thể dùng cho phiên giao dịch này.
Nếu có khóa màu xanh ngay đầu địa chỉ web thì tức là website đã thiết lập đúng SSL/TLS. Bạn có thể nhấn vào nút màu xanh đó để xem ai là người giữ chứng chỉ này.
KHI NÀO VÀ VÌ SAO SSL/TLS LÀ MỘT ĐIỀU BẮT BUỘC?
SSL/TLS là yếu tố bắt buộc khi bạn cần xử lý các thông tin nhạy cảm như thông tin đăng nhập và mật khẩu, hoặc khi phải xử lý các thông tin thanh toán.
Mục tiêu của SSL/TLS là đảm bảo chỉ có một người nhận mà người gửi chỉ định mới có thể truy cập vào thông tin dữ liệu được truyền đi. Việc này đặc biệt quan trọng khi có rất nhiều thiết bị và server mà thông tin phải đi qua từ lúc gửi đến lúc chính thức tới đúng nơi.
Có 3 lý do chính mà một website hiện đại buộc phải có SSL/TLS:
Khi bạn cần chứng thực: Bất kỳ server nào cũng có thể giả dạng là server của bạn, đánh cắp thông tin được truyền đưa. SSL/TLS cho phép bạn xác thực danh tính của server để người dùng biết chắc họ đang giao tiếp với đúng người mà họ muốn giao tiếp.
Để tăng độ tin cậy: Nếu bạn đang chạy một site ecommerce mà bạn cần người dùng đưa các thông tin quan trọng đối với họ, thì ít nhất họ cần biết thông tin họ gửi phải được bảo mật trước thì họ mới tin bạn. Sử dụng SSL/TLS là cách dễ nhất để cho khách truy cập tin tưởng, hơn bất kỳ lời cam kết nào được đưa ra từ phía bạn.
Khi bạn cần tuân thủ chuẩn của ngành của bạn: Trong một số ngành nhất định, như ngành tài chính, bạn sẽ bắt buộc áp dụng một số chuẩn bảo mật. Bạn cũng có thể tham khảo chỉ dẫn về Payment Card Industry (PCI) mà bạn cần tuân thủ nếu bạn muốn nhận thanh toán qua thẻ tín dụng trên website của bạn. Một trong số các yêu cầu thiết yếu là việc sử dụng chứng chỉ SSL/TLS.
Hãy nhớ là SSL có thể được dùng trên hầu hết mọi thiết bị, giúp nó trở thành chuẩn bảo mật linh hoạt nhất trong thời đại công nghệ đa thiết bị hiện nay. Ưu điểm của SSL chỉ có tăng lên theo gian, giá thành lại giảm đi rất nhiều cho tới mức thấp nhất như hiện tại, vậy bạn đâu có gì để mất đâu phải không, mà còn không thiết lập ngay SSL cho website của bạn?
SSL/TLS CÓ GÂY ẢNH HƯỞNG CHO SEO KHÔNG?
Câu trả lời ngắn là: vâng, có.
Google đổi thuật toán xếp hạng từ năm 2014 để ưu tiên xếp những website sử dụng SSL certificate trước, và sau đó Google liên lục nhấn mạnh tầm quan trọng của SSL certificate. Chính thức xác nhận rằng các site có SSL đã xếp hạng cao hơn những website chưa có áp dụng chuẩn bảo mật tương tự, mặc dù các site bảo mật chỉ chiếm 1% kết quả tìm kiếm, nhưng 40% các site có chứng chỉ SSL lại nằm ở trang đầu tiên.
Trong hầu hết các trường hợp thực tế, SSL tạo ra sự khác biện nhỏ về vấn đề tối ưu hóa tìm kiếm (SEO), việc cài đặt một chứng chỉ SSL vào một website chưa có chứng chỉ nào sẽ có hiệu quả thấp hơn so với việc tạo ra một bài nội dung mạnh thu hút lượng lớn link đổ về. Nhưng không có nghĩa là bạn nên xem nhẹ yếu tố này.
Hãy nhớ yếu tố quan trọng mà trình tìm kiếm xác định website nào lên hạng cao. Một trong các yếu tố đó là cách mọi người được đưa về site của bạn, có một chứng chỉ SSL sẽ quyết định xem người đó có click vào link của bạn khi thấy bạn trên trìm kiếm không, hoặc bỏ qua kết quả có bạn. Rất nhiều yếu tố tăng hạng sẽ bị ảnh hưởng bởi vệc bạn có hay không có sử dụng chứng chỉ SSL.
Thiết lập một chứng chỉ SSL là một trong các cách giúp tăng hiệu quả SEO, nhưng không chỉ có vậy. Khách truy cập sẽ cảm thấy yên tâm hơn, thời gian onsite sẽ lâu hơn, tất cả các yếu tố liên quan đến bảo mật đều được cải thiện, và vì vậy đó là chính là lý do thăng hạng thực sự của website của bạn.
SSL/TLS THÌ LIÊN QUAN GÌ TỚI HTTPS?
Khi bạn thiết lập chứng chỉ SSL, bạn sẽ cần cấu hình nó truyền dữ liệu qua HTTPS. 2 công nghệ này đi đôi với nhau mà bạn không thể chỉ dùng 1 trong 2.
URLs sử dụng 1 trong 2 giao thức là HTTP (Hypertext Transfer Protocol)hay HTTPS (Hypertext Transfer Protocol Secure). Giao thức này sẽ quyết định lượng dữ liệu được truyền đi và ghi nhận như thế nào.
Có nghĩa là hễ bạn truy cập URL, nếu bạn truy cập từ HTTPS thì có nghĩa là kết nối HTTP đó đang được bảo vệ bởi chứng chỉ SSL.
CHROME XÁC ĐỊNH WEBSITE CÓ SỬ DỤNG SSL/TLS KHÔNG
Hầu hết các trình duyệt lớn như Google, Firefox hay Mircrosoft Edge sẽ tự hiển thị những site nào họ truy cập có an toàn không. Giả sử như Chrome, bạn sẽ thấy ô khóa màu xanh ghi chử “secure”. Người dùng có thể xem thêm thông tin chi tiết của chứng chỉ SSL bằng cách click vào nó.
Hơn nữa, trong phiên bản Chrome 68 phát hành tháng Bảy 2018, website không có chứng chỉ SSL/TLS sẽ hiện cảnh bảo “không an toàn” như sau:
Các trình duyệt sẽ ngày càng mạnh tay hơn trong việc hiển thị website có bảo mật không, vậy nên cách tốt nhất là các website owner nên tự tìm cách gia tăng tính bảo mật cho website từ bây giờ là tốt nhất. Bằng cách này, khách truy cập sẽ luôn biết được rằng site của họ rất an toàn mỗi khi truy cập.
LÀM THẾ NÀO ĐỂ THÊM SSL/TLS VÀO WEBSITE CỦA BẠN?
Thêm chứng chỉ SSL/TLS vào website là một quá trình phức tạp và thường chỉ nên thực hiện nếu bạn là chuyên viên website.
Bước đầu tiên là truy cập SSH access trước khi cài đặt client ACME. Vào lúc này, bạn có thể tạo ra certificate SSL/TLS và cài nó vào khu vực quản trị trong web host của bạn. Chúng tôi đã viết bài hướng dẫn chi tiết tại đây, bạn có đọc qua và tự thực hiện được ngay.
Nếu bạn đang tìm nhà cung cấp chứng chỉ SSL/TLS, vậy không cần tìm đâu xa ngoài Hostinger. Chúng tôi có chứng chỉ SSL/TLS trọn đời cho bạn, bạn chỉ cần thanh toán một lần. Ngoài ra, chứng chỉ miễn phí cũng được tặng khi mua gói Hosting Doanh Nghiệp của chúng tôi.
Khi bạn có chứng chỉ này, bạn có thể buộc chạy HTTPS bằng cách dán code snippet vào trong file .htaccess của bạn.
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh
Kibana là một công cụ giao diện dùng để search và hiển thị log được cung cấp bởi Elasticsearch. Trong bài viết này, mình sẽ hướng dẫn các bạn cài đặt công cụ này trên CentOS các bạn nhé!
Đầu tiên, cũng giống như khi cài đặt Elasticsearch, vì mặc định CentOS không chứa package cài đặt của Kibana, nên các bạn cần thêm repository của Kibana vào.
Nếu các bạn đã cài đặt Elasticsearch trước đó rồi sử dụng repo với baseUrl là https://artifacts.elastic.co/packages/7.x/yum thì không cần làm bước này các bạn nhé.
Nếu các bạn chưa cài đặt Elasticsearch thì các bạn cần thêm Kibana public signing key vào máy của mình để package manager trust package từ Kibana repository:
Bây giờ thì các bạn có thể chạy câu lệnh sau để cài đặt Kibana rồi:
sudo yum install kibana
Nhập “Y” để tiếp tục các bạn nhé!
Kết quả cài đặt:
Các bạn cần start Kibana lên sau khi cài đặt xong, bằng câu lệnh:
sudo systemctl start kibana
Nếu muốn start nó khi khởi động máy thì chạy câu lệnh sau các bạn nhé:
sudo systemctl enable kibana
Mặc định thì Kibana sẽ chạy ở port 5601 và chỉ truy cập được bằng localhost nên sau khi đã start Kibana, các bạn có thể truy cập tới nó sử dụng URL sau: http://localhost:5601.
Kết quả của mình như sau:
Nếu các bạn đã có data để display, thì có thể nhấn vào lựa chọn Explore on my own để cấu hình, còn không thì nhấn vào Try our sample data để xem Kibana work như thế nào nhé!
Mình sẽ chọn Try our sample data.
Chọn Add data cái nào cũng được các bạn nhé!
Installed:
Các bạn có thể nhấn vào View data rồi chọn Dashboard để bắt đầu vọc nhé!