Home Blog Page 175

Nguồn học SQL uy tín chất lượng

11 trang web học SQL miễn phí

1) Codeacademy

Codeacademy là một trong những trang đáng tốt nhất để học trực tuyến về nhiều ngôn ngữ. Và học trên trang này thì hoàn toàn miễn phí!

Khóa học được chia thành bốn phần: thao tác dữ liệu, viết truy vấn, sử dụng các hàm tổng hợp và giao tiếp với nhiều bảng.

Mỗi bài học cũng có các bài tập để mọi người thực hành. Nếu không hoàn thành chính xác các bài tập này, bạn không thể tiếp tục các bài giảng tiếp theo. Nó là thứ cần thiết cho người mới bắt đầu vì nó đảm bảo bạn hiểu được chủ đề hiện tại trước khi chuyển sang chủ đề khác.

2) W3Schools

Trang này thì khá nổi tiếng rồi. W3schools rất tốt cho những ai muốn học nhanh chóng và dễ dàng. Các mô tả cho mỗi chủ đề là ngắn và rõ ràng, được sao lưu với nhiều ví dụ và bài tập. Khóa học trên trang đảm bảo rằng bạn sẽ nhanh chóng hiểu khái niệm về.

Một tính năng đặc biệt của W3schools là khả năng sửa đổi cơ sở dữ liệu. Với chức năng này, bạn có thể kiểm tra các truy vấn và lệnh. Đừng lo lắng về việc làm hỏng nó bởi vì bạn có thể khôi phục nó bất cứ lúc nào!

3) DataCamp

Có nhiều khóa học khác nhau ở trang này, cả miễn phí và trả phí. Bạn sẽ nắm bắt được mọi kiến thức một cách nhanh chóng.

4) Linkedln và Lynda

2 trang này có cả khóa học miễn phí lẫn trả phí. Các khóa học ở đây sẽ hướng dẫn bạn thông qua việc tạo và duy trì cơ sở dữ liệu của riêng bạn. Một số khái niệm chính được đề cập trong các lớp là tạo cơ sở dữ liệu, chức năng, kích hoạt, giao dịch và quản trị. Với rất nhiều lựa chọn, nền tảng này bao gồm các kỹ năng và kỹ thuật khác nhau cần có để tận dụng tối đa dữ liệu.

6) Udemy

Udemy có nhiều khóa học khác nhau mà bạn có thể chọn giữa tùy thuộc vào cấp độ kỹ năng của bạn.
Ngoài các lệnh và truy vấn, các khóa học cũng bao gồm các công cụ cơ sở dữ liệu như My SQL, Oracle và SQL Server cho tất cả các cấp.
Thật không may, hầu hết các khóa học trên Udemy đều được trả tiền. Nhung đừng lo, mình đã có sẵn link những khóa học miễn phí mà chất lượng cho các bạn.

7) SQLZoo

Đây là một trong những trang web phổ biến nhất. Nó cung cấp tất cả hướng dẫn và bài tập dành cho mọi đối tượng từ chưa biết gì đến chuyên nghiệp. Bạn sẽ tìm thấy các hướng dẫn tương tác, các ví dụ và bài tập trên trang web này. Nó bao gồm hầu hết các mệnh đề. Nó cũng bao gồm các khái niệm nâng cao, kèm theo đó là nhiều câu đó để kiểm tra kiến thức của bạn.

8) SQLBolt

Là một trang web tốt để tìm hiểu với các ví dụ tương tác đơn giản. Nó chứa một loạt các bài học và bài tập tương tác được thiết kế để giúp bạn nhanh chóng học ngay trong trình duyệt của mình. Nếu bạn là người muốn học hoặc bạn biết nhưng không cảm thấy thoải mái thì hãy ghé thăm trang web này.

9) Hackr.io

Trang web là nơi chứa rất nhiều tài liệu tham khảo về cần thiết cho bạn. Bao gồm sách, video, khóa học và bài tập thực hành. Trang có cả miễn phí lần trả phí.

10) EdX

Các bài học SQL của EdX dành cho người học trung cấp. Được cung cấp bởi Microsoft, nó tập trung vào việc sử dụng trong các sản phẩm của Microsoft bao gồm Azure, SQL Server và Transact-SQL. Tuy nhiên bạn sẻ chỉ được miễn phí trong thời gian giới hạn, nếu muốn học tiếp thì bạn cần phải trả tiền.

11) SQL-steps

Có rất nhiều bài hướng dẫn tuyệt vời giúp bạn dễ hiểu và thành thạo nhanh chóng

Và một vài trang web khác (cả miễn phí lẫn trả phí)

  • SQL Course from Stanford University
  • Tutorialspoint – “Learn SQL”
  • Udacity – “Intro to Relational Databases”
  • SQL Problems and Solutions
  • Essential SQL
  • SQLCourse
  • vv……

Một số khóa học SQL rất hay nhưng mất phí cho các bạn tham khảo

  • 1. Excel to MySQL: Analytic Techniques for Business by Duke University (Coursera)
  • 2. The Complete SQL Bootcamp (Udemy)
  • 3. SQL for Data Science Certification Course by UC Davis (Coursera)
  • 4. SQL Certification Courses (Coursera)
  • 5. Ultimate MySQL Bootcamp: From Beginner to Expert (Udemy)
  • 6. Foundation of Big Data Analysis with SQL (Coursera)
  • 7. Introduction to Structure Query Language by University of Michigan (Coursera)
  • 8. Modern Big Data Analysis with SQL Specialization (Coursera)
  • 9. MySQL for Data Analysis and Business Intelligence (Udemy)
  • 10. Database and SQL for Data Science (Coursera)
  • 11. SQL Certification (edX)
  • 12. Free SQL Courses Online (Udemy)
  • 13. Free SQL Training (LinkedIn Learning – Lynda)
  • 14. Learn SQL Online (Codecademy)
  • 15. SQL Classes Bundle Online (Pluralsight)
  • 16. SQL Tutorial: Learn SQL For Free | Codecademy
  • 17. SQL Course For Beginners: Learn SQL Using MySQL Database
  • 18. SQL Tutorial: Learn SQL with MySQL Database -Beginner2Expert

TÀI NGUYÊN VÀ CÁC TRANG GITBHUB TỐT NHẤT ĐỂ HỌC SQL MIỄN PHÍ

Có thể bạn quan tâm:

Xem thêm các việc làm về SQL trên TopDev

10 trang web hàng đầu để tìm hiểu WordPress

Các bạn tự vào google gõ tên web WordPress là ra nhé. Một số cái được mình lấy từ trang chủ của WordPress và dịch ra từ google dịch nên nghĩa có thể không sát. Mọi người có thể vào và tìm hiểu chi tiết bằng tiếng anh

1. WPBeginner của Awesome Motive Inc

Trang web dành cho người mới bắt đầu. Đây là nơi có nhiều tài nguyên tuyệt vời để thiết lập WP. Có nhiều loại bài học, chẳng hạn như video, bài viết, hướng dẫn và hướng dẫn, và nhiều hơn nữa.

2. Official WordPress Codex

Đây là trang web bao gồm toàn bộ các chủ đề dành cho người mới bắt đầu đến thành thạo. Nếu bạn muốn trở thành một chuyên gia về WP, bạn sẽ cần biết codex.

3. WP Apprentice by Kirk Biglione

Đây là web xử lý hầu hết các vấn đề cơ bản, vì vậy nếu bạn chưa từng làm việc với các trang web trước đây và bạn muốn xây dựng với WP thì đó là một nơi tuyệt vời để ghé thăm. Bạn cần 47$ để có quyền truy cập toàn bộ và trọn đời

4. WP Theming

Nếu bạn quan tâm nhiều hơn đến các theme và plugin thì đây sẽ là trang web bạn nên ghé thăm.

5. Tuts+ WordPress Lessons

Đay là nơi để tìm các tài liệu và hướng dẫn nâng cao hơn. Nếu bạn là người mới bắt đầu, bạn có thể gặp khó khăn trong việc nắm bắt một số khái niệm được khám phá ở đây. Nếu bạn có kinh nghiệm trước với WP, bạn sẽ cảm thấy như ở nhà. Các chủ đề bao gồm lập trình hướng đối tượng trong WP, sử dụng WooC Commerce, thẻ và nhiều hơn nữa.
Tham khảo cho bạn vị trí tuyển lập trình WordPress lương cao

6. Tom McFarlin’s Blog

Đây là nơi cung cấp các hướng dẫn toàn diện hơn về WP. Dành cho những người đã có kinh nghiệm

7. Paulund

Mục đích của trang web hướng tới là để chia sẻ các hướng dẫn cho các đoạn mã – các đoạn mã nhỏ có thể được sử dụng cho một chức năng hoặc mục đích cụ thể.

8. Otto on WordPress

Nếu bạn đã làm việc với WP trong nhiều năm và có nhiều kinh nghiệm về lập trình nói chung, thậm chí với các ngôn ngữ khác, thì đây là nơi tuyệt vời để bạn ghé thăm.

9. WPLift

Giống như hầu hết các trang web khác trong danh sách này, WPLift được dành riêng để cung cấp các hướng dẫn, mẹo và hướng dẫn hữu ích khi làm việc với WP.

10. Hongkiat

Trang web này được dành riêng để giảng dạy các nhà thiết kế, người viết blog và nhà phát triển các chủ đề khác nhau. Một trong những chủ đề đó là WP. Có hướng dẫn và hướng dẫn về mọi thứ, bao gồm cách cài đặt nền tảng, plugin và nhiều hơn nữa.
Và các trang web khác (có cả trả phí lần miễn phí)
  • WPSquare
  • WP Sessions
  • WordPress Visual Quickstart
  • WPExplorer
  • WP-Snippets
  • Pippin’s Plugins
  • Chris Lema’s Site
  • Easy WP Guide
  • WPSNIPP
  • WP-Snippets
  • Post Status
  • WpRecipes
  • Matt Report
  • wpMail.me
  • ManageWP
  • WordPress Tavern
  • Advanced WordPress Group
  • Andrew Nacin’s Blog
  • Hongkiat
  • Stack Overflow WordPress Exchange
  • WPMU Dev
  • Carrie Dil’s Blog
  • SiteGround WordPress Tutorial
  • CSS-Tricks
  • Torque
  • WordPress Essential Training with Morten Rand-Hendriksen (Lynda.com)
  • Team Treehouse with Zac Gordon
  • WordPress.tv by Automattic
  • WebDesign by iThemes
  • BlogAid by MaAnna Stephenson
  • BobWP by Bob Dunn
  Wordpress - Cách tối ưu web lên 99 điểm trên di động PageSpeed Insights
Xem thêm việc làm WordPress trên TopDev
Có thể bạn quan tâm:
TopDev via J2Team

AI-Powered Future: Data drive product – Trí tuệ nhân tạo vận hành Thế giới

TRÍ TUỆ NHÂN TẠO VẬN HÀNH THẾ GIỚI!!!

Không dừng lại với định nghĩa là robot có các đặc điểm giống con người, AI có thể bao gồm mọi thứ từ trợ lý thông minh, xe hơi tự lái đến các thuật toán tìm kiếm của Google và vũ khí tự trị.

Bạn đã hiểu đúng về AI ngày nay chưa?? Trong tương lai, trí tuệ nhân tạo có thể làm “sếp” của chúng ta hay không?


📌 Trí tuệ nhân tạo được gọi đúng là AI hẹp (narrow AI) bởi hiện tại AI chỉ được thiết kế để thực hiện các nhiệm vụ nhỏ, ví dụ như nhận dạng khuôn mặt, tìm kiếm trên big data hoặc lái xe tự động. Tuy nhiên, mục tiêu chung của các nhà nghiên cứu là tạo ra một dạng AI mạnh hơn (General AI – AGI). Mặc dù AI hẹp có thể vượt trội hơn con người ở bất kỳ nhiệm vụ cụ thể nào, như chơi cờ hoặc giải phương trình, AGI sẽ vượt trội hơn con người ở hầu hết mọi nhiệm vụ nhận thức.

◉ Tập đoàn Dữ liệu Quốc tế (IDC) dự đoán tốc độ tăng trưởng hàng năm cho AI trên toàn cầu sẽ là 50,1%, đạt 57,6 tỷ USD vào năm 2021.
◉ PwC ước tính lợi ích thu được từ AI của thế giới vào năm 2030 khoảng 15.700 tỷ USD (6.900 tỷ do đóng góp tăng năng suất và 9.100 tỷ do tác động bổ sung) và đóng góp 14% vào GDP toàn cầu.

AI đã và đang không ngừng phát triển, nâng cấp lên những phiên bản hoàn thiện hơn. Điều này có thể gây ra những thách thức nào cho các “ông lớn” công nghệ? Trong tương lai, trí tuệ nhân tạo có thể làm “sếp” của chúng ta hay không?

🔥 Cùng tìm hiểu câu trả lời tại Vietnam Web Summit 2019 bạn nhé!! Chủ đề AI-Powered Future: Data drive product sẽ cung cấp những thông tin thú vị về AI và những đột phá của nó trong tương lai. Bạn đã sẵn sàng khám phá chưa?!

Hé lộ một số Topics về Theme:

  • Anh Châu Thành Đức | AI Team Lead – Cinnamon AI Labs talks about “Knowledge Unmanagement, Unstructured data”
  • Chị Nguyễn Thị Thanh Uyên | Data Scientist, Knorex talks about “Reaching the right audience with AI-powered digital advertising”
  • Anh Lê Thanh Hưng | Developer Circles Lead at Facebook Developer Circle Hanoi talks about “Open Source Computer Vision, Deep learning như PyTorch, Detectron and Dense Pose tại Facebook AI”
  • và còn nhiều Topic chưa được hé lộ! 


=====

🎟 VIETNAM WEB SUMMIT mang đến hơn 200 chuyên đề hấp dẫn xoay quanh 6 nhóm chủ đề chính, đó là:

◾️ Digital Transformation: Survive and Thrive – Cách mạng số và những bước ngoặt lịch sử.
◾️ Beyond Digital Marketing: Humanize Customer Experiences – “Người hóa” trải nghiệm khách hàng thời đại số.
◾️ AI-Powered Future: Data drive product – Trí tuệ nhân tạo vận hành thế giới.
◾️ Operations in a ‘Serverless’ World – Vận hành doanh nghiệp trong thời đại serverless
◾️ Cloud-based & Intelligence-driven Cybersecurity – An ninh mạng và những giải pháp của thời đại mới.
◾️ The new era of web development – Kỷ nguyên mới của công nghệ phát triển web.

⏰ THỜI GIAN:

➖ Hồ Chí Minh: 06/12/2019 tại Melisa Center – 85 Thoại Ngọc Hầu, Hoà Thạnh, Tân Phú, Hồ Chí Minh
➖ Hà Nội: 13/12/2019 tại CTM Palace, 131 Nguyễn Phong Sắc, Cầu Giấy, Hà Nội

🌍 THÔNG TIN CHI TIẾT VÀ ĐĂNG KÝ:

Giảm ngay 50.000đ dành cho thành viên TopDev Blog
Đăng kí ngay tại: http://vietnamwebsummit.com/ve-tham-du/

👉🏼 THÔNG TIN LIÊN HỆ
Sponsor & Booth: Ms. Như Trương | 033 8847 836
Event team: event@applancer.net | 028 6681 3236
Ms. Thoa | thoa.nguyen@applancer.net | 038 5098 969

JQuery Ajax và kiến thức cơ bản

JQuery Ajax và kiến thức cơ bản

Bài viết được sự cho phép của tác giả Bui Thu Huyen

Giới Thiệu

AJAX – “Asynchronous JavaScript and XML” – là một bộ công cụ cho phép load dữ liệu từ server mà không yêu cầu tải lại trang. Nó sử dụng chức năng sẵn có XMLHttpRequest(XHR) của trình duyệt để thực hiện một yêu cầu đến server và xử lý dữ liệu server trả về.

jQuery cung cấp method $.ajax và một số methods tiện lợi giúp bạn làm việc với XHRs thông qua trình duyệt một cách dễ dàng hơn.

Download thư viện jQuery

Bạn có thể lên trang chủ jquery để download bộ mới nhất. http://jquery.com/download/

Phương thức “load()”

  1. Sau đây là cú pháp đơn giản cho phương thức load() trong jQuery: [selector].load( URL, [data], [callback] );
  2. Miêu tả chi tiết về các tham số: URL − URL của ngồn Server-Side để Yêu cầu (Request) được gửi tới. Nó có thể là CGI, ASP, JSP, hoặc PHP script mà tạo dữ liệu động hoặc ra khỏi databaseData − tham số tùy ý này biểu diễn một đối tượng mà các thuộc tính của nó được xếp theo thứ tự vào trong các tham số được mã hóa một cách thích hợp để được truyền tới Yêu cầu (Request). Nếu được xác định, Request được tạo bởi sử dụng phương thức POST. Nếu bị bỏ qua, phương thức GET được sử dụng.Callback − Một hàm callback được gọi sau dữ liệu phản hồi đã được tải vào trong các phần tử của tập hợp đã kết nối. tham số đầu tiên được truyền tới hàm này là văn bản phản hồi từ Server và tham số thứ hai là mã hóa trạng thái.
  3. Ví dụ
<html>
       <head>
          <title>The jQuery Example</title>
          <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
          <script type="text/javascript" language="javascript">
             $(document).ready(function() {
                $("#driver").click(function(event){
                   $('#stage').load('./result.html');
                });
             });
          </script>
       </head>
       <body>
          <div id="stage">
             STAGE
          </div>
          <input type="button" id="driver" value="Load Data" />
       </body>
    </html>

 

Ở đây, load() khởi tạo một AJAX request tới URL file đã xác định là ./result.html. Sau khi tải file này, tất cả nội dung sẽ được đưa đến vào trong phần tử

được tag với ID là stage.

Phương thức “get()” và “post()”

Ở 2 phương thức này thì trong đó phương thức “ get() ” giống “ load() ” về mặt kĩ thuật đó chính là dùng “method” là “GET” trong “ <form> ”. Tương tự “ post() ” sẽ tượng trưng cho “method” là “POST” của “ <form> ”. Cả 2 phương thức này đều cách viết tắt của phương thức “ajax()” mà chúng ta sẽ làm quen ở phần tới.

Phương thức “get()”

$(document).ready(function() {
		$('#load-du-lieu').click(function(e) {
			e.preventDefault();
			$.get('vidu1.html', function(ketqua) {
				$('#noidung').html(ketqua);
				$('#noidung').html($('#chuoi-can-lay').html());
			});
			
		});
	});

 

  • Đoạn code này cho bạn thấy rằng để sử dụng được phương thức “ get() ”, các bạn cần dùng đến biến “ $ ” (hay “ jQuery ”) sau đó sử dụng thẳng phương thức “ get()
  • Đối số truyền vào không thể tách lọc được dữ liệu trả về thẳng trong đường dẫn như phương thức “ load() ”.
  • Kết quả trả về sẽ thông qua đối số thứ 2 của phương thức “ get() ” là một Anonymous Function có đối số mặc định trả về là “ ketqua ”
  • Để tách lọc dữ liệu từ “ ketqua ” chúng ta cần phải ghi nó vào “DOM” hay một nơi nào đó trong cặp thẻ “ <body> ” của chúng ta. Sau đó chúng ta dùng tiếp “ $(‘#id-can-lay’).html() ” để tách lọc dữ liệu
  • Ngoài ra “ get() ” còn hỗ trợ bạn truyền dữ liệu sang file lấy dữ liệu.

Phương Thức “post()”

Cách dùng của phương thức “ post() ” sẽ giống với “ get() ” nhưng khác về kĩ thuật truyền dữ liệu mà thôi.

$(document).ready(function() {
        $('#load-du-lieu').click(function(e) {
            e.preventDefault();
            $.post('vidu2.php', {
                a: "content abc",
                b: "content bcd"
            },function(ketqua) {
                $('#noidung').html(ketqua);
            });
            
        });
    });

 

Nội dung của file “vidu2.php“:

<?php 
echo '<pre>' .print_r($_POST,true). '</pre>';

 

Ở ví dụ phương thức “ post() ” này, ở đối số thứ 2 thay vì là Anonymous Function như ở ví dụ “ get() ” mà chúng ta đã xem trước đó, thì đây là “một đối tượng” (Object) chứa những dữ liệu mà chúng ta cần truyền qua đường dẫn “vidu2.php” để nhận và trả về dữ liệu. Kết quả trả về sẽ được đưa vào đối số thứ 3 cho chúng ta.

Phương thức “ajax()”

Ngoài các hàm trên mà chúng ta thường hay dùng, jQuery còn cung cấp thêm cho ta một hàm ajax() tổng quát. Với hàm này, ta có thể tùy chỉnh cấu hình, thêm bớt các thông số chứ không bị bó hẹp như hai hàm trên.Chỉ cần sử dụng 1 hàm này có thể đáp ứng các yêu cầu về thực thi ajax.

 $(document).ready(function() {
        $('#load-du-lieu').click(function(e) {
            e.preventDefault();
            $.ajax({
                url: 'vidu2.php',
                type: 'POST',
                dataType: 'html',
                data: {
                    a: "content abc",
                    b: "content bcd"
                }
            }).done(function(ketqua) {
                $('#noidung').html(ketqua);
            });
            
        });
    });

 

Đối số đầu tiên chúng ta truyền vào cho phương thức “ ajax() ” chính là một đối tượng (Object) gồm các thuộc tính cấu hình để kĩ thuật AJAX của chúng ta có thể thực thi. Trong đó:

  1. url : chuỗi chứa đường dẫn tới file cần lấy và trả về dữ liệu
  2. type : phương thức gửi đi tương tự như của “ <form> ”, mặc định là “GET” nếu như các bạn không truyền vào.
  3. dataType : xác định dữ liệu trả về thuộc dạng nào? Nếu các bạn không truyền thì jQuery tự động nhận biết kiểu dữ liệu (script, html, json…). Tuy nhiên, tôi khuyến cáo các bạn nên truyền vào đầy đủ để nhận dữ liệu chính xác nhất. Và thông dụng nhất chính là “html”.
  4. data : truyền dữ liệu sang đường dẫn chỉ định để thực hiện xử lý và trả về dữ liệu. Tương tự như cách truyền dữ liệu của phương thức “ post() ”.
  5. “ done() ” : ở loạt các bài viết hướng dẫn các bài viết về kĩ thuật Ajax với phương thức “ ajax() ” trước đây trên Internet. Thay vì dùng “done()” chúng ta sẽ dùng thuộc tính “success” trong đối tượng truyền vào “ ajax() ” nhưng từ các phiên bản mới hơn của jQuery. Họ khuyến cáo chúng ta nên sử dụng các phương thức như “ done() , fail() , always() ” (Tương ứng: Hoàn thành, thất bại và luôn luôn thực hiện). Nên tùy vào nhu cầu mà bạn xài phương thức tương ứng. Và nên nhớ là đi kèm với phương thức “ ajax() ” hoặc lưu vào một tên biến rồi dùng sau để nhận kết quả trả về.

Tham khảo thêm vị trí tuyển dụng lập trình JQuery mới tại Topdev.

Bài viết gốc được đăng tải tại Viblo

Mẫu bảng mô tả công việc vị trí Solution Architect

Mô tả công việc Solution Architect mức lương hấp dẫn

Solution Architect là người đưa ra kiến trúc để xây dựng phần mềm đáp ứng được các yêu cầu về functional và non-functional của phần mềm đó. Ngoài ra, trong nhiều dự án thì Solution Architect cũng phải tham gia vào cả giai đoạn phân tích nghiệp vụ cùng với Business Analyst. Hy vọng, Mẫu bảng mô tả công việc Solution Architect này sẽ giúp các bộ phận nhân sự dễ dàng hơn cho việc tuyển dụng những vị trí này.

Mẫu bảng công việc Solution Architect

YÊU CẦU CÔNG VIỆC

  • Có kinh nghiệm cao với ít nhất một ngôn ngữ lập trình
  • Hiểu biết nhiều framework, biết cách áp dụng các framework đó để giải quyết các bài toán cụ thể.
  • Cần có tư duy thiết kế theo Pattern, áp dụng các Pattern sẵn có vào solution để tăng chất lượng và độ tin cậy.
  • Kỹ năng viết tài liệu một cách khoa học, logic, rõ ràng và dễ hiểu
  • Kỹ năng tư duy logic và thuật toán tốt, phân tích và giải quyết vấn đề
  • Luôn luôn nghiên cứu và học hỏi các công nghệ mới, xu thế mới, đưa các công nghệ đó áp dụng vào các solution của mình.
  • Có khả năng đọc hiểu tiếng Anh chuyên ngành

MÔ TẢ CÔNG VIỆC

  • Tham gia phân tích nghiệp vụ để định hướng sớm về Solution hoặc đưa ra các đề xuất điều chỉnh nghiệp vụ để tăng tính khả thi của phần mềm.
  • Đưa ra các giải pháp kiến trúc để đáp ứng được các yêu cầu về functional và non-functional
  • Phân tích, đánh giá các giải pháp và chọn ra giải pháp phù hợp nhất.
  • Code prototype, implement những xử lý core, xử lý phức tạp
  • Transfer lại cho Team về giải pháp, kiến trúc hệ thống.
  • Support team xử lý những vấn đề khó phát sinh trong quá trình implement.

Tham khảo thêm những công việc lập trình hot nhất thị trường tại đây

Web Service là gì?

web-service

Webservice là gì?

Webservice là tập hợp các giao thức và tiêu chuẩn mở được sử dụng để trao đổi dữ liệu giữa các ứng dụng hoặc giữa các hệ thống. Tóm gọm

  • Là phương thức giao tiếp giữa hai thiết bị qua mạng.
  • Là ứng dụng hoặc thành phần ứng dụng để giao tiếp.
  • Là tập hợp các tiêu chuẩn hoặc giao thức để trao đổi thông tin giữa hai thiết bị hoặc ứng dụng.

Các ứng dụng phần mềm được viết bằng các ngôn ngữ lập trình khác nhau và chạy trên các nền tảng khác nhau, có thể sử dụng các dịch vụ web để trao đổi dữ liệu qua mạng máy tính.

Web service hoạt động một cách độc lập không phụ thuộc bất kỳ ngôn ngữ nào. Các ứng dụng java, .net hoặc PHP… có thể giao tiếp với các ứng dụng khác thông qua web service.

Các thành phần của web service

Nền tảng web service cơ bản là XML HTTP. Tất cả các web service chuẩn đều hoạt động bằng các thành phần sau:

– SOAP (là viết tắt của Simple Object Access Protocol) – giao thức truy cập đối tượng đơn giản: SOAP là một giao thức dựa trên XML đơn giản cho phép các ứng dụng trao đổi thông tin qua HTTP.

– UDDI (Universal Description, Discovery and Integration): UDDI là một tiêu chuẩn dựa trên XML để mô tả, xuất bản và tìm kiếm các dịch vụ web.

– WSDL (Web Services Description Language) – ngôn ngữ định nghĩa web service: WSDL là một ngôn ngữ dựa trên XML để mô tả các dịch vụ web và cách truy cập chúng.

Các lợi ích mang lại từ Web service

Ngoài việc cho phép các ứng dụng được viết bằng các ngôn ngữ lập trình khác nhau giao tiếp với nhau, các dịch vụ web còn mang lại những lợi thế khác. Đầu tiên, họ cung cấp quyền truy cập vào các tính năng thông qua internet. Thật vậy, các tính năng được cung cấp bởi dịch vụ web cho ứng dụng khách được gọi thông qua giao thức HTTP. Do đó, chúng có thể được gọi qua internet. Tại thời điểm tất cả các ứng dụng được kết nối với internet, các dịch vụ web đã trở nên hữu ích hơn nhiều so với trước đây.

Web Services Framework

Ngoài ra, các dịch vụ web cho phép khả năng tương tác giữa các ứng dụng. Chúng cho phép các ứng dụng khác nhau giao tiếp với nhau và chia sẻ dữ liệu và dịch vụ. Do đó, thay vì phải viết mã cụ thể chỉ có thể được hiểu bởi các ứng dụng cụ thể, có thể viết mã chung có thể được hiểu bởi tất cả các ứng dụng.

Một ưu điểm khác của dịch vụ web là chúng sử dụng giao thức công nghiệp được tiêu chuẩn hóa để liên lạc. Bốn lớp (Service Transport, XML Messaging, Service Description và Service Discovery) sử dụng các giao thức được xác định rõ.

Cuối cùng, dịch vụ web có thể giảm chi phí liên lạc. Sử dụng SOAP thông qua giao thức HTTP, có thể sử dụng kết nối internet chi phí thấp để triển khai các dịch vụ web, các web service sử dụng an toàn và nhanh chóng.

Mẫu bảng mô tả công việc lập trình Game

Mô tả công việc lập trình Game mức lương hấp dẫn

Mô tả công việc lập trình Game (Game Developers) là nhà phát triển phần mềm tạo ra các trò chơi video. Game Developers sẽ tham gia vào các lĩnh vực khác nhau của game từ khái niệm và viết truyện cho đến lập trình.

Các lĩnh vực tiềm năng khác cho Game Developers bao gồm âm thanh, thiết kế, sản xuất và visual arts. Hy vọng, mẫu bảng mô tả công việc lập trình Game này sẽ giúp các bộ phận nhân sự dễ dàng hơn cho việc tuyển dụng những vị trí này.

Mẫu bảng công việc lập trình Game

YÊU CẦU CÔNG VIỆC

  • Kinh nghiệm làm việc, phát triển sp game đầy đủ
  • Thành thạo với C++ hoặc 1 trong các ngôn ngữ lập trình khác (Java, C, v.v.)
  • Kiến thức sâu về API và thư viện
  • Có kinh nghiệm về một hoặc nhiều chuyên ngành lập trình (AI, 3D Rendering, 3D animation, multiplayer/networking hoặc âm thanh)
  • Cập nhật các xu hướng, kỹ thuật chơi game mới nhất, thực tiễn và công nghệ tốt nhất
  • Có khả năng Debug và giải quyết các vấn đề kỹ thuật phức tạp xảy ra trong quá trình sản xuất trò chơi
  • Làm việc với các thành viên nhóm để đáp ứng nhu cầu của một dự án
  • Khả năng giải quyết vấn đề một cách sáng tạo và hiệu quả

Tìm việc làm Game đãi ngộ tốt trên TopDev

MÔ TẢ CÔNG VIỆC

  • Phát triển và triển khai phần mềm game;
  • Đảm bảo rằng thiết kế trò chơi được thực hiện đầy đủ và đạt được hiệu quả;
  • Tạo unit tests, quy trình xác nhận và ghi lại các thông số kỹ thuật;
  • Phối hợp chặt chẽ với Team Lead để tạo ra và bàn giao các task/ project cần thiết
  • Làm việc với với Quality Assurance, Game Producers, Game Designers, Artists và thiết kế âm thanh”

Có thể bạn muốn xem thêm: Game Editor, Game Artist, Game Master

Tìm việc IT lương cao, đãi ngộ tốt trên TopDev ngay!

Tất tần tật về Java

Mọi người cùng xem qua những nội dung hay nhất về Java, đây sẽ là một nguồn tại liệu cực kỳ quý giá dành cho hành trang của bất kỳ lập trình viên Java nào.

Dưới đây là tổng hợp 20 công cụ Java tốt nhất cho Developers bạn có thể tham khảo:

1) JUNIT:

JUnit là một công cụ kiểm tra mã nguồn mở cho ngôn ngữ lập trình Java. Đây là công cụ quan trọng để phát triển và triển khai dựa trên thử nghiệm.
Đặc trưng:
JUnit cung cấp hỗ trợ để viết và chạy thử nghiệm
Nó cung cấp các chú thích để xác định các phương pháp test
Cung cấp các xác nhận để thử nghiệm kết quả dự kiến
JUnit cho phép viết mã nhanh hơn, giúp tăng chất lượng
Liên kết tải xuống: http://junit.org/junit4/

2) NETBEANS:

NetBeans là IDE nguồn mở MIỄN PHÍ. Nó cho phép phát triển các ứng dụng máy tính để bàn, thiết bị di động và web.
Đặc trưng:
Nó cung cấp hỗ trợ đầy đủ cho Công nghệ Java mới nhất
Hỗ trợ chỉnh sửa mã nhanh & thông minh
quá trình quản lý dự án dễ dàng & hiệu quả
Phát triển giao diện người dùng nhanh chóng
Giúp viết mã không có lỗi
NetBeans IDE cung cấp hỗ trợ vượt trội cho các nhà phát triển C / C ++ và PHP
NetBeans IDE có thể được cài đặt trong bất kỳ HĐH nào hỗ trợ Java, từ Windows đến Linux đến các hệ thống Mac OS X

3) Maven Apache:

Apache Maven là một phần mềm công cụ quản lý dự án. Nó dựa trên khái niệm Mô hình đối tượng dự án (POM).
Đặc trưng:
Đơn giản thiết lập dự án tuân theo thực tiễn tốt nhất để có được một dự án mới hoặc mô-đun bắt đầu trong vài giây
Cho phép dễ dàng viết các plugin bằng Java
Truy cập ngay vào các tính năng mới với rất ít cấu hình bổ sung
Các tác vụ Ant để quản lý và triển khai phụ thuộc bên ngoài Maven
Quản lý phát hành và phân phối ấn phẩm
Liên kết tải xuống: http://maven.apache.org/doad.cgi

4) JRAT

JRat là Bộ công cụ phân tích thời gian chạy Java. Nó rất dễ sử dụng, trình lược tả hiệu năng nguồn mở cho nền tảng Java. Nó có thể giám sát việc thực hiện và đo lường hiệu suất của ứng dụng.
Đặc trưng:
Dễ dàng chuyển tập tin đến bất kỳ vị trí nào trên bất kỳ máy tính nào
Cho phép xem từ xa trên jRAT
Cung cấp hỗ trợ cho chuyển hướng trang web
JRat cho phép sửa đổi các tập tin hệ thống
Giúp người dùng xử lý trên hệ thống của họ
Chụp ảnh màn hình cho phép quản trị viên ghi lại các sự cố trên máy tính của khách hàng

5) MOCKITO:

Mockito là một Công cụ kiểm tra và thử nghiệm mã nguồn mở Java. Mockito là một khung mô phỏng Java mã nguồn mở phổ biến. Nó giúp các nhà phát triển viết mã sạch, được thiết kế tốt.
Đặc trưng:
Nó có thể được sử dụng để viết các bài test phong cách Phát triển hướng hành vi với các cú pháp đường cú pháp
Nó cung cấp cú pháp đẹp, dễ đọc. Nó cũng cung cấp một số chú thích cần thiết để giảm mã soạn sẵn
Mockito cho phép viết các bài test thoải mái
Liên kết tải xuống: http://site.mockito.org/

6) CLOVER:

Clover một công cụ Java để tạo báo cáo bảo mật mã từ các bài test mã nguồn. Nó có thể được thực thi như một plugin trong Ant, Eclipse hoặc Maven. Nó cũng có thể sử dụng để thu thập dữ liệu bảo mật của các bài test tích hợp.
Đặc trưng:
Nguồn mở và công cụ miễn phí sử dụng cho Java
Rất dễ sử dụng.
Tính năng tối ưu hóa thử nghiệm khiến việc chạy testsuite không bị ảnh hưởng trước mỗi lần đăng ký

7) EHCACHE:

Ehcache là một công cụ lưu trữ dựa trên tiêu chuẩn, mã nguồn mở cho ngôn ngữ Java. Nó là công cụ mạnh mẽ, đã được chứng minh, đầy đủ tính năng có thể được tích hợp với các thư viện và khung công tác phổ biến khác.
Đặc trưng:
API được tân trang lại tận dụng các tương tác Java và Cache
API rất đơn giản và dễ sử dụng
Có thể mở rộng đến hàng trăm bộ nhớ cache
Cho phép hộp tích hợp Spring Cache và Hibernate để hỗ trợ javax.cache
Liên kết tải xuống: http://www.ehcache.org/doads/

8) VISUALVM:

VisualVM là một công cụ trực quan để tích hợp các công cụ JDK dòng lệnh. Nó cũng cung cấp khả năng định hình nhẹ. Nó được thiết kế cho cả thời gian phát triển và sử dụng sản xuất.
Đặc trưng:
Nó hiển thị cả các quy trình Java cục bộ và từ xa
Giám sát hiệu suất quá trình và bộ nhớ
Nó có thể đọc thông tin cơ bản về quy trình Java bị lỗi
Liên kết tải xuống: https://visualvm.github.io/doad.html

9) ORACLE JDEVELOPER:

Oracle JDeveloper là một IDE phát triển Java miễn phí. Nó cho phép các nhà phát triển xây dựng Kiến trúc hướng dịch vụ đáng tin cậy với Java. Nó hỗ trợ vòng đời phát triển đầy đủ.
Đặc trưng:
Khả năng tạo các máy chủ hoạt động như các máy khách EJB
Nó hỗ trợ tạo và chỉnh sửa các chú thích Web Socket của các lớp Java
Cho phép chỉ định một lớp cấu hình để giữ dữ liệu Meta

10) FINDBUGS:

FindBugs là một dự án Java mã nguồn mở để phân tích tĩnh. Nó quét mã byte Java để xác định các lỗi tiềm ẩn. Nó giúp nhà phát triển truy cập tất cả các loại lỗi sớm trong giai đoạn phát triển.
Đặc trưng:
Có thể xác định các mẫu lỗi với độ chính xác hoàn toàn
Nó cung cấp hỗ trợ cho thư viện Guava, nhận ra nhiều mẫu lạm dụng phổ biến.
Hỗ trợ phát hiện các vấn đề được xác định bởi các chú thích JSR-305

11) JAVA DECOMPILER:

Java Decompiler là một công cụ Java phần mềm miễn phí, cấu trúc lại mã nguồn Java từ các tệp LỚP. Nó cho phép dịch ngược, các applet Java, các tệp JAR và ZIP để tạo mã nguồn Java chính xác.
Đặc trưng:
Công cụ hỗ trợ Kéo và Thả
Nó hiển thị mã nguồn màu
Hoạt động cho hầu hết các phiên bản Java
Liên kết tải xuống: http://jd.benow.ca/

12) GRADLE:

Gradle là một công cụ Java tự động hóa dự án. Nó được xây dựng dựa trên các tính năng của Apache Ant và Apache Maven. Nó cũng đóng vai trò là công cụ xây dựng mặc định cho nền tảng Android.
Đặc trưng:
Mô hình hóa tốt hơn các phụ thuộc bằng cách sử dụng plugin Thư viện Java giúp giảm kích thước của đường dẫn biên dịch
Nó đi kèm với một bộ đệm xây dựng từ xa với các công cụ quản lý thuận tiện
Gradle Wrapper cho phép thực thi các bản dựng Gradle trên các máy không được cài đặt
Nó hỗ trợ xây dựng đa dự án và xây dựng một phần
Nó có thể dễ dàng thích ứng với bất kỳ cấu trúc
Classpath thông minh của nó giúp tránh việc biên dịch không cần thiết khi giao diện nhị phân của thư viện không thay đổi
Liên kết tải xuống: https://gradle.org/

13) COBERTURA:

Cobertura là công cụ Java miễn phí tính toán tỷ lệ phần trăm mã được truy cập bằng các bài test. Nó cũng có thể được sử dụng để xác định phần nào của chương trình Java đang thiếu phạm vi kiểm tra.
Đặc trưng:
Nó lọc ra các lớp và gói không thú vị
Công cụ bytecode Java sau khi biên dịch xong
Cho phép tạo báo cáo bằng HTML hoặc XML
Liên kết tải xuống: http://cobertura.github.io/cobertura/

14) GROOVY:

Groovy là một công cụ mạnh mẽ với khả năng biên dịchp. Nó nhằm mục đích cải thiện năng suất của nhà phát triển.
Đặc trưng:
Cú pháp ngắn gọn, dễ đọc và diễn cảm
Nó tích hợp dễ dàng với bất kỳ chương trình Java nào để cung cấp một ứng dụng hiệu quả với các tính năng mạnh mẽ
Tích hợp liền mạch với Java và các thư viện bên thứ ba khác
Cú pháp linh hoạt & dễ uốn, tích hợp và tùy chỉnh nâng cao
Tuyệt vời để viết bài test
Liên kết tải xuống: http://groovy-lang.org/doad.html

15) YOURKIT:

YourKit là một công cụ sáng tạo để định hình các ứng dụng Java & .NET. Nó là bộ thiết lập tiêu chuẩn trong sự phát triển của các công cụ định hình.
Đặc trưng:
Quá trình cài đặt đơn giản
Môi trường thân thiện với nhà phát triển
Tích hợp liền mạch với IDE và máy chủ ứng dụng
Khả năng phân tích mạnh mẽ
Đường hầm SSH tích hợp hỗ trợ dễ dàng cấu hình trong các điều kiện mạng bị hạn chế
Chính sách cấp phép cho phép không giới hạn số lượng ứng dụng được định hình
Nó cung cấp web giám sát cấp cao, cơ sở dữ liệu, I / O

16) ECLIPSE:

Eclipse là một môi trường phát triển tích hợp nguồn mở cho Java. Nó cung cấp các tính năng hiện đại, số lượng lớn các công cụ mô hình hóa, các công cụ kiểm tra java và các khung phát triển.
Đặc trưng:
Phát triển theo mô hình
Tích hợp dễ dàng và liền mạch với JUnit
Cung cấp báo cáo chi tiết đầy đủ
Nó cũng dễ dàng để tùy chỉnh. Kết hợp với Máy chủ báo cáo lỗi tự động Ctrlflow
Eclipse cung cấp công cụ tốt nhất cho các dự án JEE
Liên kết tải xuống: http://www.eclipse.org/

17) SPARK:

Spark dựa trên Java để phát triển các ứng dụng web. Nó cho phép các nhà phát triển Java tạo các ứng dụng web mà không cần phải viết mã soạn sẵn.
Đặc trưng:
Khả năng hỗ trợ nhiều ngôn ngữ
Nó đi kèm với các công cụ cho các truy vấn tương tác / khai báo, truyền dữ liệu, học máy
Mã Spark có thể được sử dụng lại để xử lý hàng loạt
Liên kết tải xuống: https://spark.apache.org/doads.html

18) INTELLIJ IDEA:

IntelliJ IDEA là một IDE đa mục đích tập trung vào phát triển Java. Nó cung cấp hỗ trợ nâng cao cho phát triển ứng dụng web, di động.
Đặc trưng:
Nó phân tích mã nguồn giữa tất cả các tệp dự án và ngôn ngữ
Nó đưa ra danh sách các biểu tượng phù hợp nhất áp dụng trong bối cảnh hiện tại
Nó cho phép tái cấu trúc ngôn ngữ chéo
Tìm các đoạn mã trùng lặp khi đang bay
Kiểm tra và sửa chữa nhanh
Môi trường trung tâm biên tập
Nó cho phép người dùng sử dụng các phương thức tĩnh hoặc hằng số dễ dàng

19) APACHE JMETER:

Apache JMeter là một công cụ test mã nguồn mở. Nó được thiết kế để đo lường hiệu suất của các trang web.
Đặc trưng:
Công cụ này cũng có thể sử dụng để kiểm tra tự động và chức năng của các ứng dụng
Các plugin phân tích và hiển thị dữ liệu cho phép mở rộng cũng như cá nhân hóa
Liên kết tải xuống: http://jmeter.apache.org/doad_jmeter.cgi

20) JAVA DEVELOPMENT KIT:

Bộ công cụ cho người phát triển ứng dụng bằng ngôn ngữ lập trình Java) là một tập hợp những công cụ phần mềm được phát triển bởi Sun Microsystems dành cho các nhà phát triển phần mềm, dùng để viết những applet Java hay những ứng dụng Java – bộ công cụ này được phát hành miễn phí gồm có trình biên dịch, trình thông dịch, trình giúp sửa lỗi…
Liên kết tải xuống: https://java.com/en/doad/faq/develop.xml

Bộ sưu tập tài nguyên JAVA

Thư viện và phần mềm tuyệt vời cho ngôn ngữ lập trình Java
📷 GitHub📷
AKULLPP / AWESOME-JAVA
Một danh sách các khuôn khổ, thư viện và phần mềm tuyệt vời cho ngôn ngữ lập trình Java. – akullpp / awesome-java
Tài nguyên để viết Java
📷 GitHub📷
CXXR/BETTER-JAVA
Liên kết tài nguyên cho Java Web Techdegree
📷 GitHub📷
TREEHOUSE-PROJECTS/JAVA-RESOURCES

Tài nguyên dự án Java hàng đầu

1) RxJava: Reactive Extensions for the JVM
2) Spring Boot
3) Retrofit
4) Elasticsearch
5) OkHttp
6) Guava: Google Core Libraries for Java
7) MPAndroidChart
8) Glide
9) Spring Framework
10) Butter Knife
11) Lottie for Android
12) LeakCanary
13) Apache Dubbo
14) ZXing
15) EventBus
16) AndroidUtilCode
17) Universal Image Loader
18) Picasso
19) JADX
20) Fresco
21) Netty
22) libGDX
23) Hystrix
24) Fastjson
25) BRVAH
26) Material Dialogs
27) PhotoView
28) Tinker
29) Material-Animations
30) Plaid
31) SlidingMenu
32) Jenkins
33) ExoPlayer
34) greenDAO
35) Realm
36) Logger
37) Bazel
38) MyBatis
39) Dagger
40) Guice
41) Auto
42) JUnit 4
43) Mockito
44) JavaPoet
45) OpenRefine
46) j2objc
47) Rebound
48) ScribeJava
49) Moshi
50) Socket.IO-client Java

Xem qua Top những việc làm JAVA lương cao tại đây: Xem ngay

TẤT TẦN TẬT VỀ PHP – Tìm hiểu về PHP như thế nào?

tat-tan-tat-ve-php

Dưới đây là một vài nội dung tổng hợp được của Topdev cho bạn về học tài liệu tham khảo PHP.

Các trang web tốt nhất cho bạn để tìm hiểu về PHP

Các bạn tự vào google gõ tên web là ra nhé

1) PHP Manual

Hướng dẫn toàn diện về PHP và bao gồm mọi thứ, từ các lệnh cơ bản và cách sử dụng chúng cho đến các chức năng và bảo mật tổng thể. Nếu bạn cần biết điều gì đó – đây là bất cứ điều gì – về PHP bạn sẽ tìm thấy nó trang web.
Tìm việc làm php lương cao không yêu cầu kn

2) PHP 101

Đúng như tên gọi của nó, Trang web dành cho người chưa biết gì về php. Nếu bạn chỉ mới bắt đầu với PHP và bạn muốn tìm hiểu bằng ví dụ, thì đây là một nơi tuyệt vời để ghé thăm. Trang web cung cấp một loạt các hướng dẫn giải trí và hữu ích được viết bởi Vikram Vaswani – người sáng lập và CEO của Melonfire. Nội dung rõ ràng, súc tích và cực kỳ dễ hiểu đặc biệt là đối với người mới viết mã. Khi bạn hoàn thành toàn bộ hướng dẫn, bạn sẽ chuyển sang tạo một trang tổng hợp tin tức RSS đơn giản thông qua PHP. Nhược điểm duy nhất của trang web này là không có nhiều ảnh chụp màn hình để tham khảo, vì vậy bạn sẽ phải tìm hiểu sự xuất hiện của mã PHP bởi sự đơn độc của bạn – điều không nhất thiết phải là một công cụ giải quyết.

3) Killer PHP

Đây là trang web giúp bạn học các kỹ năng PHP có thể sử dụng nhanh nhất có thể

4) PHP Tutorial by Tizag

Đây là trang web có rất nhiều tài liệu tham khảo cho bạn, phần lớn tập trung vào định nghĩa của PHP, các lệnh và phương thức để sử dụng chúng.

5) Hacking With PHP (Formerly Practical PHP Programming)

Như tên gọi , đây là một trang có nhiều tài liệu tham khảo tuyệt vời cho những người thích các bài học áp dụng một cách tiếp cận thực tế.

6) PHP Tutorial by W3schools

Đây là trang web gần giống với trang thứ 4 (ý mình nói là về tài liệu, cái trang web hướng đến….k nói về giao diện nhé)
Trang này Miễn phí, nhưng nếu bạn muốn có chứng nhận từ W3schools, sẽ có giá $ 95.

7) Getting Started with PHP by Randy Hoyt

Nó sẽ giúp bạn sử dụng PHP để xây dựng một trang thương mại điện tử. Bạn sẽ học được các yếu tố, câu lệnh và các bước cần thiết – và sẽ sử dụng tốt chúng.
Trang này phải trả phí. Sau 14 ngày dùng thử miễn phí, có giá khởi điểm $ 25 / tháng

8) The Learn PHP Tutorial

Trang này sẽ hướng dẫn bạn qua những điều cơ bản của PHP. Nó tuyệt vời cho người mới bắt đầu và cung cấp một hướng dẫn trực quan hơn. Bạn sẽ không chỉ học PHP mà còn học những gì bạn có thể làm với nó thông qua các ví dụ và thực tiễn tốt nhất.

9) PHPBuddy

Đây là trang web chưa rất nhiều bài học và bài viết về lập trình với PHP.
Các tài nguyên PHP trực tuyến hữu ích khác

10) Keydata

Nếu bạn đang tìm kiếm các hướng dẫn cơ bản bao gồm mọi chủ đề về PHP thì đây là trang web nên ghé thăm. Bạn sẽ học các lệnh cơ bản, hàm, chuỗi, cú pháp và nhiều hơn thế.

11) SitePoint PHP

SitePoint có cách tiếp cận hiện đại hơn. Web này hợp hơn đối với những người trình độ trung cấp trở lên.

12) About.com

Là một nơi tuyệt vời để tìm tài liệu tham khảo cho bất cứ điều gì. Có khá nhiều hướng dẫn cụ thể hướng dẫn bạn cách sử dụng PHP để thực hiện những việc như hàm, vòng lặp, tạo biểu mẫu, gọi các hàm toán học đơn giản, sử dụng thời gian và lịch, chuyển hướng URL….

13) GoodPHPTutorials

Đây là nơi tuyệt vời để các bạn tìm hướng dẫn và tài liệu tham khảo PHP.

14) PHP Cheatsheetshttp://overapi.com/php

Trang này chủ yếu dành cho các lập trình viên từ trung cấp đến cao cấp

15) PHP The Right Way

Bạn sẽ tìm thấy các hướng dẫn mở rộng về các chủ đề PHP khác nhau và rất nhiều tài liệu tham khảo.

16) PHP Academy (YouTube)http://bit.ly/2NpUKoi

Nếu bạn là người học trực quan hơn và thích xem mã và cách thức hoạt động của PHP thì hãy ghé thăm kênh youtube này. Có hàng trăm bài hướng dẫn, kéo dài nhiều năm học. Nội dung mới được thêm vào hàng tuần – nếu không phải hàng ngày – và nó bao gồm một loạt các chủ đề liên quan đến PHP. Thật tuyệt nếu bạn đang tìm kiếm một cái gì đó cụ thể, như cách sử dụng PHP để tạo đăng ký người dùng và hệ thống đăng nhập hoặc thiết lập xác thực PHP.

17) FreaksPHP

Trang web này phù hợp với mọi cấp độ kỹ năng và bao gồm hơn 400 đoạn mã có thể sử dụng. Bạn có thể sử dụng với các dự án hiện tại hoặc nghiên cứu để tìm hiểu PHP.

18) PHPVideoTutorials

Trang web này cung cấp một số ít các video hướng dẫn liên quan đến PHP, có độ dài từ khoảng 6 phút đến 22 phút – tùy thuộc vào bài học.

19) DevelopPHP

Cung cấp rất nhiều video hướng dẫn liên quan đến PHP từ cấp độ sơ cấp đến trung cấp. Các video thực sự được lưu trữ qua YouTube và được nhúng trên trang web
Kết quả hình ảnh cho PhP
  10 Frameworks tốt nhất hiện nay cho PHP
  Nâng skill lập trình PHP như thế nào?

Và 1 vài trang web khác….

11) LateralCode
12) Sourcecodester
13) PHP for Kids
14) Webassist
15) TutorialsPoint PHP
16) HScripts
17) PHPJabbers
18) PHPEveryday
19) FreewebmasterhelpPHP
20) MPSoftware
21) VideoPHPBlog
22) CSS-Tricks
23) Webucator
24) MPSoftware.dk
26) Bento.io
27) Wikibooks
700 TẬP LỆNH VỀ PHP

Bộ sưu tập PHP – Webshells

Công cụ

Trình giải mã PHP Online :
FOPO PHP Deobfuscator ver. 0.1
Toolki’s PHP decoder
Trình làm đẹp PHP
Online:
Offline :

Xem ngay những tin đăng tuyển dụng IT mới nhất trên TopDev

Những dự án hay ho giúp bạn nhanh chóng “chạm tay” tới đỉnh lập trình

nhung-du-an-hay-ho-giup-ban-nhanh-chong-cham-tay-toi-dinh-lap-trinh

“Một người sau 1000 đào tạo mới lên được trình độ beginner, nhưng sau 10,000 ngày thực hành luyện tập mới lên được master.” Lý do vì sao?

Câu nói nổi tiếng của Mas Oyama đủ để tóm tắt tất cả những gì tôi muốn nói trong bài này. Chìa khóa để trở thành một developer chuyên nghiệp nằm ở 2 từ: NỖ LỰC. Việc dành hàng giờ code chai lì trên bàn phím từng bước giúp bạn phát triển thành một developer thực thụ.

Sau đây là 7 dự án nhỏ thú vị bạn có thể thử sức giúp bạn nâng cao kĩ năng lập trình nhanh chóng.

Dự án 1: Pac-man

Thử build game Pac-man là cách học nhanh nhất để hiểu rõ tường tận một game được build như thế nào. Bạn có thể build trên framework của JavaScript ví dụ như React hoặc Vue.

Những điều bạn có thể học được:

  • Chuyển động của các nhân vật 
  • Detect các key nào được nhấn 
  • Detect các va chạm
  • Bạn có thể nâng cấp bằng cách add thêm vào các chuyển động điều khiển cho các con ma trong game.

Bạn có thể tham khảo một vài dự án với GitHub tại đây.

  [Update] 43 kho lưu trữ Github JS phổ biến nhất 2024 -  Bạn đã biết hết chưa?

Dự án 2: Quản trị người dùng

Tạo 1 ứng dụng CRUD để quản lý người dùng sẽ giúp bạn nhiều thứ về những nguyên tắc cơ bản của lập trình. Nó phù hợp với các dev mới bắt đầu biết và học về lập trình.

Bạn sẽ học được:

  • Cách routing
  • Xử lý các mẫu và phương thức thẩm định cơ sở dữ liệu người dùng đưa vào
  • Tương tác với cơ sở dữ liệu – tạo, đọc, cập nhật và xóa các action.

Xem thêm dự án tại đây.

Dự án 3: Cập nhật thời tiết theo địa điểm của bạn

Nếu bạn muốn bắt đầu build một app thì tạo app thời tiết sẽ là một điểm bắt đầu lý tưởng. Bạn có thể tạo bằng Swift.

Ngoài việc tích lũy được chút kinh nghiệm build app, bạn chắc chắn sẽ học hỏi thêm được:

  • Cách tương tác với một API
  • Cách sử dụng chức năng định vị địa lý
  • Bạn có thể khiến app của bạn trở nên sống động hơn bằng add thêm phần nhập text để người dùng nhập vị trí để xác định thời tiết tại vị trí của mình.

Một API mà bạn có thể sử dụng để thu thập dữ liệu về thời tiết là OpenWeather API. Bạn có thể tìm thêm thông tin về OpenWeather API tại đây.

Dự án 4: Chat Box

Build một Chat Box là cách hay để tìm hiểu về socket. Bạn sẽ có nhiều lựa chọn về tech stalk để tiến hành. Node.js có thể là một lựa chọn tốt để bạn bắt đầu đấy.

Điều lớn nhất mà bạn học được từ dự án này đó là bạn sẽ biết được cách các socket hoạt động và cách ứng dụng chúng.

Nếu bạn chuyên lập trình Laravel và muốn thử làm việc với các socket, bạn có thể tham khảo bài viết này. Nó sẽ giúp bạn tìm hiểu sâu hơn cách ứng dụng một chat box trên bằng socket.

Dự án 5: GitLab Cl

Nếu bạn là một ma mới với CI (Continuous Intergration), bạn nên thử tìm tòi thêm về GitLab CI. Hãy thử lập ra nhiều môi trường và chạy thử trên đường truyền của bạn. Đây không phải là một chương trình quá “nặng”, nhưng tôi chắc là bạn sẽ học được nhiều thứ. Hiện nay nhiều team dev cũng sử dụng CI, và đây là công cụ tốt bạn nên trang bị cho bản thân.

Bạn sẽ học được những gì:

  • Hiểu biết về GitLab CI
  • Sử dụng hàm .gitlab-ci.yml để báo GitLab runner cần làm gì
  • Khai thác các trường

Xem cụ thể hơn tại đây.

  Triển khai CI/CD với Gitlab

Dự án 6: Công cụ phân tích Website

Bạn có thể thử tạo một scraper giúp phân tích cách vận hành của website và tạo một ranking cho chúng. Lấy ví dụ, bạn có thể kiểm tra được những alt tag bị mất trên các hình và những meta tag của SEO có còn hiện trên trang không. Bạn thậm chí còn có thể áp dụng scraper mà không cần tạo 1 UI.

Bạn sẽ học được gì:

  • Cách làm việc của một scraper
  • Tạo các DOM selector
  • Cách viết thuật toán

Dự án 7: Khai thác xu hướng social media

Khai thác xu hướng của social media là một cách tiếp cận với machine learning hiệu quả.

Bạn có thể bắt đầu bằng cách khai thác một platform mạng xã hội cụ thể nào đó, ví dụ như Twitter chẳng hạn.

Dev nhiều kinh nghiệm hơn thì có thể khai thác cùng lúc nhiều platform mạng xã hội và sau đó tổng hợp các dữ liệu đã thu thập lại.

Mày mò thực hiện với dự án này, bạn sẽ nắm được tổng quan về machine learning. Nghiên cứu kĩ hơn tại đây.

Kết luận: 

Những dự án trên có thể sẽ tiêu tốn của bạn kha khá thời gian để hoàn thành. Đừng quên quay lại đây và chia sẻ về kết quả anh em thu được nhé.

TopDev via Medium

CORS là gì? Giới thiệu tất tần tật về CORS

CORS là gì

Cors là gì? Vai trò của Cors? Nó là một nhu cầu rất thông dụng với các developer web đó là truy truy vấn qua API. Tuy nhiên, việc truy vấn và xử lý dữ liệu từ API nhiều khi cũng rất khó khăn.

Rất nhiều lập trình viên phải đối mặt với các vấn đề liên quan đến CORS. Vậy CORS là gì? Và lý do tại sao chúng ta cần CORS?

CORS là gì?

CORS là viết tắt của Cross-Origin Resource Sharing là một cơ chế cho phép nhiều tài nguyên khác nhau (fonts, Javascript, v.v…) của một trang web có thể được truy vấn từ domain khác với domain của trang đó.

Nói cách khác, CORS cho phép hoặc ngăn chặn các yêu cầu giữa các nguồn khác nhau trên web.

Tại sao chúng ta cần CORS?

CORS được sinh ra là vì same-origin policy, là một chính sách liên quan đến bảo mật được cài đặt vào toàn bộ các trình duyệt hiện nay. Chính sách này ngăn chặn việc truy cập tài nguyên của các domain khác một cách vô tội vạ.

Ta có ví dụ một kịch bản như sau:

  • Bạn truy cập một trang web có mã độc. Trang web đó sử dụng Javascript để truy cập tin nhắn Facebook của bạn ở địa chỉ https://facebook.com/messages.
  • Nếu bạn đã đăng nhập Facebook từ trước rồi. Nếu không có same-origin policy, trang web độc hại kia có thể thoải mái lấy dữ liệu của bạn và bất cứ điều gì chúng muốn.

Same-origin policy chính là để ngăn chặn những kịch bản như trên để bảo vệ người dùng, giúp an toàn hơn khi lướt web. Bạn có thể thử trên web console và sẽ nhận được lỗi ngay:

$.get('https://facebook.com/messages')
Access to XMLHttpRequest at 'https://facebook.com/messages' from
origin 'xxx' has been blocked by CORS policy: No
'Access-Control-Allow-Origin' header is present on the requested
resource.

Truy cập URL trên từ bất kỳ domain nào ngoài facebook.com bạn cũng sẽ nhận được lỗi như vậy. Đó chính là nhờ same-origin policy.

>> Tìm hiểu chi tiết: Lỗi CORS là gì?

Thế nhưng trong thế giới web, lập trình viên thường xuyên phải thực hiện truy vấn đến các domain khác, đặc biệt là khi làm việc với các API.

Đó là lúc chúng ta cần đến CORS. CORS sử dụng các HTTP header để “thông báo” cho trình duyệt rằng, một ứng dụng web chạy ở origin này (thường là domain này) có thể truy cập được các tài nguyên ở origin khác (domain khác).

Một ứng dụng web sẽ thực hiện truy vấn HTTP cross-origin nếu nó yêu cầu đến các tài nguyên ở origin khác với origin nó đang chạy (khác giao thức, domain, port). Sự khác biệt về giao thức ở đây là khác biệt kiểu như HTTP với FTP chứ không phải HTTP và HTTPS (dù nhiều trình duyệt không cho phép trộn lẫn các tài nguyên truy cập bằng HTTP và HTTPS nhưng đó là vấn đề khác, không liên quan đến CORS).

cors là gì

Các trường hợp cần đến CORS rất phổ biến trong thực tế. Một ví dụ rất điển hình như sau: một ứng dụng web chạy ở domain foo.com và nó cần truy vấn đến bar.com để lấy một vài dữ liệu (thường được thực hiện bởi JavaScript bằng cách sử dụng XMLHttpRequest).

Các trình duyệt đều cài đặt same-origin policy và tuân thủ nó rất chặt chẽ. Cài đặt XMLHttpRequest và kể cả Fetch API cũng đều tuân thủ chính sách này. Do đó những truy vấn như ở trên sẽ không thu được kết quả gì, trừ khi máy chủ trả về response có các header CORS phù hợp.

Như vậy, bằng việc sử dụng CORS, chúng ta có thể thúc đẩy việc giao tiếp trong ứng dụng web dễ dàng hơn rất nhiều.

Các truy vấn dùng CORS

Các truy vấn sau bắt buộc phải sử dụng CORS, theo tiêu chuẩn quốc tế.

  • Các truy vấn bằng XMLHttpRequest hoặc Fetch API đến một domain khác.
  • WebGL Texture
  • Ảnh, video được vẽ vào canvas sử dụng drawImage.
  • Web fonts truy vấn đến domain khác qua @fontface của CSS, trong đó trang web chỉ có thể sử dụng font dạng True Type nếu được cho phép.

  RESTful API là gì? Cách thiết kế RESTful API

Làm thế nào để sử dụng CORS?

Một hiểu lầm khá phổ biến, nhất là với các lập trình viên mới làm việc với API lại được làm việc với API của các hãng lớn, tài liệu đầy đủ, đó là cho rằng CORS là công việc của frontend. Nhưng thực ra CORS hoàn toàn là công việc của backend.

Các lập trình viên frontend thường không cần phải thao tác nhiều nếu cần dùng đến các truy vấn CORS (trừ một số ngoại lệ như không được sử dụng thư viện hoặc phải hỗ trợ IE 8). Khi một trình duyệt gửi một truy vấn đến máy chủ, nó sẽ tự động thiết lập một số HTTP header (ví dụ Origin) chứa các thông tin về nguồn gốc của truy vấn đó.

Về phía máy chủ, sau khi có được thông tin về nguồn gốc của truy vấn, nó có thể lựa chọn không phải hồi truy vấn đó, trả về lỗi hoặc trả về dữ liệu cần thiết. Trong trường hợp trả về dữ liệu, máy chủ cần thiết lập các HTTP header sao cho trình duyệt hiểu rằng truy vấn đó đã được chấp nhận.

Như vậy, chúng ta có thể thấy rằng, CORS giúp thúc đấy quá trình trao đổi dữ liệu giữa trình duyệt và máy chủ. CORS hoàn toàn không có liên quan gì đến việc trao đổi trực tiếp giữa ứng dụng web mà một máy chủ web khác, ví dụ backend của ứng dụng đó truy cập đến tài nguyên trên một origin khác, nó cũng không cần đến CORS.

Tạo truy vấn CORS bằng XMLHttpRequest

Trong phần này chúng ta sẽ tìm hiểu cách tạo ra các truy vấn CORS bằng JavaScript. CORS được hỗ trợ bởi hầu hết các trình duyệt hiện đại. Riêng với IE, nó chỉ hỗ trợ từ IE 8 trở lên mà thôi.

cors là gì

Tạo truy vấn

Các trình duyệt Chrome, Firefox, Safari đều sử dụng version mới của XMLHttpRequest do đó việc truy vấn CORS diễn ra hết sức thuận lợi. IE thì sử dụng XDomainRequest, nó hoạt động gần giống với XMLHttpRequest nhưng có nhiều hạn chế hơn.

Chúng ta có thể bắt đầu bằng cách tạo ra các object cần thiết. Dưới đây là một đoạn code như thế:

const createCORSRequest = (method, url) => {
    let xhr = new XMLHttpRequest();
    if ('withCredentials' in xhr) {
        // Kiểm tra XMLHttpRequest object có thuộc tính
		// withCredentials hay không
        // Thuộc tính này chỉ có ở XMLHttpRequest2
        xhr.open(method, url, true);
    } else if (typeof XDomainRequest != 'undefined') {
        // Kiểm tra XDomainRequest
        // Đây là đối tượng chỉ có ở IE và
		// là cách để IE thực hiện truy vấn CORS
        xhr = new XDomainRequest();
        xhr.open(method, url);
    } else {
        xhr = null;
    }
    return xhr;
}

const request = createCORSRequest('GET', 
	'https://jsonplaceholder.typicode.com/posts/1');
if (!request) {
    throw new Error('CORS is not supported');
}

Sau khi tạo được đối tượng XMLHttpRequest rồi thì chúng ta cần một số event handler, trong trường hợp này, chúng ta chỉ cần quan tâm 2 event onload và onerror là đủ. Ngoài ra còn một số event khác như ontimeoutonprogress không được sử dụng nhiều lắm.

request.onload = () => {
    const responseText = request.responseText;
    console.log(responseText);
}
request.onerror = () => {
    console.log('Error');
}

Thực ra các trình duyệt khác nhau lại có cách cài đặt rất khác nhau với event onerror. Ví dụ, Firefox trả về status là 0 và statusText luôn rỗng với mọi lỗi. Ngoài ra, các trình duyệt cũng thường không cho phép truy cập đến nội dung cụ thể của lỗi đã xảy ra, chúng ta chỉ biết rằng đã có lỗi mà thôi.

withCredentials

Mặc định, các truy vấn CORS không gửi hoặc thiết lập bất cứ cookie nào trên trình duyệt. Nếu muốn sử dụng cookie trong truy vấn đó, chúng ta phải đặt thuộc tính withCredentials của truy vấn bằng true:

xhr.withCredentials = true;

Tuy nhiên, đó cũng mới chỉ là một nửa mà thôi. Nửa còn lại thuộc về phía máy chủ, đó là HTTP header Access-Control-Allow-Credentials phải là true (chúng ta sẽ tìm hiểu ở phần sau).

Với giá trị withCredentials bằng true, cookie sẽ được tự động thêm vào cũng như thiết lập nếu có phản hồi từ máy chủ. Lưu ý rằng, cookie trong trường hợp này là third-party cookie và việc lưu trữ, truy cập cookie vẫn hoàn toàn thuân theo same-origin policy, do đó, chúng ta không thể truy cập cookie bằng document.cookie được. Nó hoàn toàn được xử lý tự động bởi trình duyệt.

Gửi truy vấn

Sau khi mọi việc đã hoàn tất, việc cuối cùng chúng ta cần làm là gửi truy vấn đi nữa mà thôi:

request.send();

Lúc này truy vấn sẽ được gửi đến máy chủ, và nếu máy chủ đó chấp nhận CORS thì nó sẽ trả về response tương ứng. Hoạt động của truy vấn lúc này hoàn toàn giống với truy vấn có chúng origin thông thường.

Tạo truy vấn CORS bằng jQuery

Hàm $.ajax của jQuery có thể được sử dụng cho các truy vấn thông thường lẫn truy vấn CORS (cookie cũng được hỗ trợ mặc định). Do đó nếu sử dụng jQuery thì công việc của lập trình viên cũng khá dễ dàng. Tuy nhiên, cần lưu ý một số điều như sau:

  • Truy vấn CORS của jQuery không hỗ trợ object XDomainRequest của IE, chúng ta cần sử dụng thêm plugin để hỗ trợ việc này.
  • Giá trị $.support.cors sẽ được gán là true nếu trình duyệt hỗ trợ CORS (với IE sẽ là false). Giá trị này có thể được sử dụng để kiểm tra xem CORS có được hỗ trợ hay không.

Dưới đây là một đoạn code sử dụng jQuery để tạo truy vấn CORS:

$.ajax({
	type: 'GET',
	url: 'https://jsonplaceholder.typicode.com/posts/1',
	success: data => {
		console.log(data);
	},
	error: () => {
		console.log('Error');
	}
})

Tạo truy vấn CORS bằng Fetch API

Chúng ta cũng có thể sử dụng Fetch API để tạo truy vấn CORS. Tuy nhiên, fetch mới chỉ xuất hiện từ ES6 nên nhiều trình duyệt vẫn chưa hỗ trợ nó (cụ thể là IE tất cả các phiên bản đều không hỗ trợ).

Fetch API cho chúng ta một phương thức đơn giản để tạo các truy vấn, và nó đã cài đặt sẵn việc hỗ trợ CORS nên chúng ta cũng có thể thao tác rất đơn giản, giống như jQuery vậy. Tuy nhiên, kết quả trả về của fetch là một Promise do đó các thao tác xử lý kết quả sẽ khác nhiều jQuery. Xem thêm nên học gì khi dùng jQuery.

Lập trình với fetch rất đơn giản, thậm chí còn đơn giản hơn của với jQuery:

fetch('https://jsonplaceholder.typicode.com/posts/1')
	.then(response => response.json())
	.then(console.log)

Cấu hình máy chủ hỗ trợ CORS

Đây là phần phức tạp nhất, cũng là phần quan trọng nhất đối với CORS. Như đã nói ở trên, thực ra việc hỗ trợ CORS hay không phụ thuộc hoàn toàn vào máy chủ chứ không phải client.

Có hai loại truy vấn CORS: loại truy vấn “đơn giản” và “không đơn giản”.

Một truy vấn đơn giản hoàn toàn không cần đến CORS preflight. Một truy vấn sẽ được gọi là đơn giản nếu nó thoả mãn những điều kiện sau:

  • Phương thức của truy vấn là một trong các loại GETHEADPOST.
  • Giá trị của Content-Type phải là một trong số các loại application/x-www-form-urlencodedmultipart/form-datatext/plain.
  • Không có event handler nào với event XMLHttpRequest.upload.
  • Không sử dụng đối tượng ReadableStream trong truy vấn.
  • Các HTTP header sau phải khớp:
    • Accept
    • Accept-Language
    • Content-Language
    • Last-Event-ID

Những truy vấn này được gọi là “đơn giản” bởi chúng có thể được coi là truy vấn thông thường từ trình duyệt mà không cần đến CORS, giống như submit một form HTML thông thường chẳng hạn.

Những truy vấn không phải “đơn giản” sẽ là truy vấn không đơn giản, và chúng cần CORS preflight. CORS preflight có nghĩa là trước khi truy vấn được gửi, nó cần phải gửi một truy vấn trước bằng phương thức OPTIONS. Mục đích của truy vấn “preflight” này là nhằm kiểm tra xem truy vấn thực sự có an toàn để gửi và nhận hay không.

Đối với truy vấn đơn giản

Một truy vấn CORS đơn giản như đã nói ở trên, có thể có gói tin HTTP dạng như sau:

GET /cors HTTP/1.1
Origin: https://api.topdevvn.com
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/...

Với các phương thức khác, gói tin HTTP cũng tương tự như vậy. Lưu ý rằng, một truy vấn CORS hợp lệ luôn luôn có Origin ở trong header. Giá trị của header này hoàn toàn được thiết lập tự động bởi trình duyệt, và không ai có thể thay đổi nó được. Giá trị của header này sẽ bao gồm scheme (http), domain (api.bob.com) và cổng (trong trường hợp dùng cổng mặc định thì không cần, ví dụ http dùng cổng 80). Giá trị của header chính là biểu thị nguồn gốc của truy vấn.

Một điểm lưu ý nữa là sự xuất hiện của header Origin không đồng nghĩa với việc truy vấn đó là cross origin. Dù tất cả các truy vấn cross origin đều có header này, nhưng một số truy vấn same origin cũng có header này. Điều đó phụ thuộc vào từng trình duyệt cụ thể.

Ví dụ, Firefox không có header này cho các truy vấn same origin nhưng Chrome và Safari vẫn thêm header nay khi truy vấn same origin nhưng sử dụng các phương thức POSTPUT hoặc DELETE. Đây là một diểm cần lưu ý với các lập trình viên backend, vì nếu không để ý có thể không thêm origin của chính app trong danh sách các domain được chấp nhận, điều đó khiến cho chính truy vấn same origin lại gặp lỗi.

Dưới đây là response của máy chủ phản hồi cho một truy vấn CORS hợp lệ:

Access-Control-Allow-Origin: https://api.topdevvn.com
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: FooBar

Tất cả các header liên quan đến CORS đều có phần đầu tiên là Acess-Control-. Ý nghĩa của từng header như sau:

  • Access-Control-Allow-Origin (bắt buộc): đây là header phải có trong mọi response cho một truy vấn CORS hợp lệ. Nếu không có header này, truy vấn sẽ bị lỗi, giá trị của nó có thể là giá trị của header Origin được gửi lên hoặc * biểu thị cho mọi origin.
  • Access-Control-Allow-Credentials (tuỳ chọn): Mặc định, cookie sẽ không được sử dụng trong các truy vấn CORS. Header này sẽ biểu thị giá trị logic rằng có thể sử dụng cookie hay không. Giá trị duy nhất của header này là true. Nếu không muốn sử dụng cookie thì thông thường người ta sẽ bỏ header này trong response chứ không phải đặt giá trị nó là false. Lưu ý rằng, header này chỉ hoạt động nếu phía client cũng đặt giá trị withCredentials = true như đã nói ở phần trước.
  • Access-Control-Expose-Headers (tuỳ chọn): Một đối tượng XMLHttpRequest có một phương thức getResponseHeader, phương thức này sẽ trả về giá trị của một header cụ thể trong response. Với các truy vấn CORS, phương thức này chỉ có thể truy cập được một số header đơn giản mà thôi. Nếu muốn phương thức này có thể truy cập nhiều header hơn, chúng ta cần đến giá trị của header này. Giá trị của header này là một danh sách các header có thể truy cập được, ngăn cách bằng dấu phẩy.

Đối với truy vấn cần preflight

Không phải truy vấn nào cũng là đơn giản do việc trao đổi dữ liệu giữa trình duyệt và máy chủ diễn ra rất đa dạng. Các phương thức PUT hay DELETE cũng thường xuyên được sử dụng. Ngoài ra kiểu dữ liệu JSON (Content-Type: application/json) cũng là lựa chọn của nhiều lập trình viên. Trong những trường hợp như vậy, trước khi truy vấn chính được thực hiện thì một truy vấn gọi là preflight sẽ được gửi đi trước.

Ở phía frontend, các truy vấn đơn giản hay phức tạp đều trông sẽ giống nhau. Truy vấn preflight hoàn toàn được thực hiện ngầm và trong suốt với người dùng. Truy vấn preflight sẽ được gửi đi trước nhằm xác định xem truy vấn thực sự có thể thực hiện được hay không.

Sau khi có được phản hồi tích cực, trình duyệt sẽ gửi truy vấn thực sự. Kết quả của truy vấn preflight có thể được cache nên nó không cần phải thực hiện cho mọi truy vấn.

  Tuốt tuồn tuột về HTTP Polling và SSE (Server-sent event)

  Cách làm HTTPS hoạt động trên local trong 5 phút

Dưới đây là một gói tin HTTP cho truy vấn preflight:

OPTIONS /cors HTTP/1.1
Origin: https://api.topdevvn.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: X-Custom-Header
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/...

Tương tự như truy vấn đơn giản, truy vấn này cũng tự động được thêm header Origin. Truy vấn preflight sẽ được thực hiện bằng phương thức OPTIONS với một số header đặc thù:

  • Access-Control-Request-Method: Đây là phương thức HTTP dùng trong truy vấn thực sự. Giá trị của header luôn luôn phải có, ngay cả khi các phương thức đó cũng là phương thức của một truy vấn đơn giản.
  • Access-Control-Request-Headers: Đây là danh sách (ngăn cách bằng dấu phẩy) các header được thêm vào truy vấn.

Truy vấn preflight là một cách để hỏi máy chủ rằng, liệu truy vấn thực sự có thể thực hiện được hay không. Mà máy chủ dựa vào hai header này để quyết định xem có chấp nhận truy vấn hay không. Nếu chấp nhận, máy chủ sẽ phản hồi như sau:

Access-Control-Allow-Origin: https://api.topdevvn.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: X-Custom-Header
Content-Type: text/html; charset=utf-8

Trong đó, response có thể có những header như sau:

  • Access-Control-Allow-Origin (bắt buộc): Tương tự như trường hợp truy vấn CORS đơn giản.
  • Access-Control-Allow-Methods (bắt buộc): Là một danh sách (ngăn cách bằng dấu phẩy) các phương thức HTTP được chấp nhận. Dù truy vấn preflight có hỏi về một phương thức cụ thể của truy vấn tiếp theo, giá trị của header này trong responses có thể bao gồm tất cả các phương thức được chấp nhận.
  • Access-Control-Allow-Headers (bắt buộc nếu truy vấn có header Access-Control-Request-Headers): Là danh sách các header (ngăn cách bằng dấu phẩy) được hỗ trợ. Tương tự như header trước, giá trị của header này cũng có thể bao gồm tất cả các header được chấp nhận.
  • Access-Control-Allow-Credentials (tuỳ chọn): Tương tự như trường hợp truy vấn CORS đơn giản.
  • Access-Control-Max-Age (tuỳ chọn): Truy vấn preflight không nhất thiết phải được thực hiện cho mọi truy vấn, mà kết quả của nó có thể cache được. Giá trị của header này chính là số giây mà giá trị của truy vấn preflight có thể được cache.

Một khi truy vấn preflight có được phản hồi và được chấp nhận, trình duyệt sẽ thực hiện truy vấn thực sự. Truy vấn lúc này tương tự như truy vấn CORS đơn giản và quá trình xử lý cũng như phản hồi hoàn toàn tương tự như vậy.

Nếu muốn từ chối truy vấn CORS, máy chủ có thể phần hồi một gói tin HTTP bình thường (mã 200) nhưng không có chứa HTTP header nào liên quan đến CORS. Trong trường hợp truy vấn preflight nhận được phản hồi như vậy, trình duyệt sẽ hiểu là truy vấn không được chấp nhận và nó sẽ không gửi thêm truy vấn nào nữa.

Về phía client, nếu trong trường hợp không thực hiện được truy vấn, event onerror sẽ được gọi. Tuy nhiên, như đã nó ở trên, trình duyệt cũng không thể truy cập được nhiều thông tin về lỗi đó, chỉ đơn giản là biết có lỗi mà thôi.

Hỗ trợ CORS của các framework

Laravel CORS

Khi chúng ta code vài ứng dụng dưới local mà có connect tới Laravel backed, thì bạn sẽ nhận cái thông báo error CORS ngay. Vì vậy cần tạo một middleware sau:

$ php artisan make:middleware Cors

Sau đó update header trong app/Http/Middleware/Cors.php

<?php
namespace App\Http\Middleware;
use Closure;
class Cors
{
  public function handle($request, Closure $next)
  {
    return $next($request)
      ->header(‘Access-Control-Allow-Origin’, ‘*’)
      ->header(‘Access-Control-Allow-Methods’, ‘GET, POST, PUT, DELETE, OPTIONS’)
      ->header(‘Access-Control-Allow-Headers’, ‘X-Requested-With, Content-Type, X-Token-Auth, Authorization’);
  }
}

Sau đó, đăng ký middleware trong app/Http/kernel.php

protected $routeMiddleware = [
  ‘auth’ => \App\Http\Middleware\Authenticate::class,
  ‘auth.basic’ => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
  ‘guest’ => \App\Http\Middleware\RedirectIfAuthenticated::class,
  ‘cors’ => \App\Http\Middleware\Cors::class, // <-- thêm vào hàng này
 ];

Nếu bạn muốn bật CORS bất kỳ route nào, chỉ cần add middleware này trong route registration. Ngoài ra bạn có thể dùng packgage ngoài tại barryvdh/laravel-cors.

Xem thêm việc làm Laravel lương cao lên đến 3000 USD

CORS Nodejs

Chúng ta sử dụng dòng code dưới đây để set một header trên response của bạn để bật CORS:

res.header("Access-Control-Allow-Origin", "*");

Bật CORS cho toàn bộ resource trên server

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

Chỉ định file nào đó

app.get('/file', function(req, res){
  var file = __dirname + '/file.zip';
  res.download(file); // Set disposition and send it.
});

Ví dụ đầy đủ:

var express = require('express');
var app = express();
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});
app.get('/', function (req, res) {
  var data = {
    "SmartPhone": [
      "iPhone",
      "Samsung"    ]
  };
  res.json(data);
});
app.get('/file', function(req, res){
  var file = __dirname + '/file.zip';
  res.download(file); // Set disposition and send it.
});

Ruby on Rails

Ruby on Rails cho phép chúng ta thiết lập cũng như thay đổi các header trong response khá dễ dàng, do đó, muốn chấp nhận truy vấn CORS, chúng ta có thể đơn giản là làm như sau:

skip_before_filter :verify_authenticity_token
before_action :cors_preflight_check
after_action :cors_set_access_control_headers

def cors_set_access_control_headers
  headers["Access-Control-Allow-Origin"] = "*"
  headers["Access-Control-Allow-Methods"] = "GET, POST"
  headers["Access-Control-Max-Age"] = "1728000"
end

def cors_preflight_check
  headers["Access-Control-Allow-Origin"] = "*"
  headers["Access-Control-Allow-Methods"] = "GET, POST"
  headers["Access-Control-Allow-Headers"] =
    "X-Requested-With, X-Prototype-Version"
  headers["Access-Control-Max-Age"] = "1728000"
end

Tham khảo thêm các việc làm Ruby on Rails cho bạn

Django

Với Django chúng ta phải sử dụng thêm một package, đó là Django CORS headers. Package này sẽ giúp chúng ta thiết lập các header cần thiết cho một truy vấn CORS, đồng thời cho chúng ta khả năng cấu hình URL nào cho phép CORS, URL nào thì không.

Với package này, chúng ta có thể cấu hình sao cho chỉ có API mới hỗ trợ CORS như sau:

CORS_ORIGIN_ALLOW_ALL = True
CORS_URLS_REGEX = r'^/api/v1/.*$'

Ngoài ra còn rất nhiều cấu hình khác nữa, cho phép chúng ta chỉ chấp nhận truy vấn CORS từ một vài origin nhất định chẳng hạn (CORS_ORIGIN_REGEX_WHITELIST). Nội dung chi tiết xin mới các bạn xem cụ thể tại README của package đó.

Xem thêm các vị trí tuyển dụng lập trình Django lương cao

Flask

Tương tự như Django, với Flask, chúng ta cũng phải sử dụng thêm một package, đó là Flask-CORS mới có thể chấp nhận các truy vấn CORS được.

from flask import Flask
from flask.ext.cors import CORS, cross_origin


app = Flask(__name__)
app.config['SECRET_KEY'] = 'The quick brown fox jumps over the lazy dog'
app.config['CORS_HEADERS'] = 'Content-Type'

cors = CORS(app, resources={r'/foo/*': {'origins': '*'}})


@app.route('/foo')
@cross_origin()
def foo():
	return 'Hello, world! CORS works'


if __name__ == '__main__':
	app.run()

Kết luận

Trên đây là tất cả những gì cơ bản để bạn biết CORS là gì, cách nó giúp các ứng dụng web dễ dàng hơn trong việc trao đổi thông tin cũng như hiển thị nội dung, tăng khả năng tương tác giữa các dịch vụ trên Internet. Hy vọng bài viết giúp ích cho mọi người trong quá trình làm việc.

Có thể bạn muốn xem thêm:

Xem thêm việc làm IT tại TopDev!

Chỉ sau 4 tháng đọc FreeCodeCamp, tôi đã là một full-stack developer

Bài viết được biên dịch từ lời chia sẻ của một web developer đến từ miền Nam Châu Âu nhận được gần 13k lượt xem trên FreeCodeCamp

Xin chào tất cả anh em đang quan tâm đến câu hỏi làm thế nào để trở thành một lập trình viên,

Tôi là một gã khờ 33 tuổi vừa được nhận vào vị trí full-stack developer lần đầu tiên trong cuộc đời sự nghiệp của tôi. Tôi thấy cần chia sẻ những kinh nghiệm quý giá này trên FreeCodeCamp – nơi đã giúp tôi thực hiện giấc mơ này. Việc nghiền ngẫm tất cả những chia sẻ của những người đi trước đã giúp tôi có động lực rất nhiều trên hành trình gian nan này.

Kẻ thất bại có “học thức”

Hành trình sự nghiệp của tôi những năm đầu đời quả không mấy tốt đẹp. Dù có trong tay tấm bằng đại học chuyên ngành xã hội học và tờ giấy chứng chỉ IT, tôi vẫn không thể kiếm cho mình một công việc tử tế. Thậm chí lúc cuộc khủng hoảng kinh tế đang diễn ra, tôi còn suýt phải đi đặt tờ rơi ở cửa kính trước của ô tô để kiếm sống. Cuối cùng, sau nhiều tháng ngập trong vô vọng, tôi chấp nhận làm việc tại một văn phòng bán bất động sản giá rẻ với mức lương bèo bọt vì không muốn tiếp tục phụ thuộc tài chính vào ba mẹ.

Thời gian trôi qua, công ty này trở nên tồi tệ hơn tôi nghĩ. Bất chấp sự đầu tư chăm chỉ vào công việc, mức lương không hề nhúc nhích, môi trường làm việc ngày càng xuống cấp, cũng chẳng tồn tại sự phát triển chuyên sâu về kiến thức nào cả. Tôi đã trên 30 tuổi và cảm giác của tôi lúc này về mọi thứ dường như kết thúc khi đối diện với sự cạnh tranh việc làm khốc liệt ở Nam Âu. Và rồi, Reddit đến để giải thoát tôi khỏi mớ bòng bong này, đập vào mặt tôi là hàng tá các tips từ những redditor có tiếng. Những lời khuyên hay ho đó đã vực tôi dậy và giúp tôi phát triển hướng đi mới: trở thành một software developer.

  10 Công cụ Go-To Tech dành riêng cho các Software Developer

Thay đổi ư?! Nó là cả một quá trình dài

Tôi bắt đầu từ từ học C++ và thực hành một số bài task nhỏ tập hack ranking (chỉ để vui thôi). Cũng chính từ những bước khởi đầu này đã giúp tôi khám phá ra niềm đam mê với code bấy lâu nay bị bỏ quên. Sau vài tháng luyện tập, tôi chuyển sang thực hành với những dự án có giá trị hơn từ Github. 

Quay lại với công việc của tôi vào năm ngoái, tình trạng trở nên báo động: tất cả những công việc đã được tự động hóa và tôi sẽ sớm trở thành người thừa. Tôi phải nhanh chân hơn nữa, sử dụng cả những thời gian rảnh ở nhà để chuẩn bị sẵn sàng cho việc bị sa thải. Đó thực sự là quãng thời gian năng suất nhất trong cuộc đời tôi:

  • Tôi tiết kiệm tối đa đến mức có thể, chỉ sử dụng tiền cho những nhu cầu thiết yếu: tiền thuê nhà, tiền hóa đơn, ăn uống, tiền xăng xe; những chi phí còn lại thì hạn chế tối thiểu.
  • Tháng 6: tôi thực hành với Linux shell, tôi học Git và đăng những dự án tốt nhất tôi thực hành bằng C++ lên Github
  • Tháng 7: học Python và Regex
  • Tháng 8: học chuyên sâu tiếng Tây Ban Nha (đạt chứng chỉ B2) và touch typing (khoảng giữa tháng 7 đến tháng 8, tôi thực sự cần một sự nghỉ ngơi khỏi lập trình để nâng cao một số kĩ năng mềm có lợi cho xin việc sau này)
  • Tháng 9: học lập trình web trên FreeCodeCamp, và tôi nhận ra tôi thích nó hơn là OOP.
  • Tháng 10: tạo Front-end React app
  • Cuối tháng 11: tự tạo full-stack MERN app
  Con đường mình đang đi để trở thành Fullstack Web Developer

Vào cuối năm ngoái, tôi tiết kiệm đủ tiền để duy trì cuộc sống sau thất nghiệp và tự tin thoát khỏi nơi khốn khiếp đó. Dù chỉ có 2 web app, tôi vẫn quyết định chọn đi theo lập trình web và rải hồ sơ ở khắp mọi nơi trên Linkedin. Thật ngạc nhiên, lần này tôi chỉ phải đi phỏng vấn ở 3 nơi. Vị trí đầu tiên làm việc với C++, trong khi công việc thứ 2 và thứ 3 liên quan đến lập trình web (front-end và full-stack) và tôi được cả 2 công ty sau nhận. Cuối cùng tôi chọn công ty thứ 3, tuy hơi xa nhưng ở một nơi phong cảnh lý tưởng, có thể chơi đá banh trong giờ nghỉ giải lao thay vì ngồi ngắm đống warehouse tẻ nhạt như trước kia. Lần nhảy việc này tôi chỉ mất 10 ngày để đi phỏng vấn và tìm việc.

Những bài học tôi rút ra từ quá trình tìm việc

Tôi biết chắc sẽ có nhiều bạn nghĩ điều kiện của tôi khá hơn so với mặt bằng chung: tôi sống ở châu Âu, đã có một nền tảng về IT từ thời trung học và được cung cấp tài chính từ gia đình. Nhưng tôi vẫn muốn đưa ra một số lời khuyên bởi ít hay nhiều nó cũng sẽ phần nào áp dụng được cho tình hình của bạn:

  • Nếu bạn đang có ý định thử sức với lĩnh vực này, xin chúc mừng bạn thật may mắn: thời điểm ngày nay có một sự khan hiếm nhân lực trong ngành lập trình đặc biệt là ở châu Âu. Khác xa với những lĩnh vực khác, các công ty không quan tâm đến bằng cấp, cái họ quan tâm là NĂNG LỰC THỰC SỰ.
  • Kĩ năng mềm là rất cần thiết, nếu bỏ qua nó bạn sẽ là kẻ thất bại. Tin hay không, bạn có cơ hội được nhận cao hơn khi bạn có một quan điểm sống tích cực và năng động. Hãy thể hiện một cách chân thành cho nhà tuyển dụng thấy bạn yêu thích những điều bạn làm và đừng ngại trình bày những điểm mạnh và điểm yếu của bạn. 
  • Hãy đánh bóng hồ sơ Linkedin của bạn: hồ sơ phải hoàn thiện, với dòng bio đầy đủ súc tích và một bức hình thật chuyên nghiệp. Nếu bạn đang thất nghiệp, hãy khéo léo ghi rằng bạn là một software/web developer “đang tìm kiếm cơ hội việc làm.” Hãy để nhà tuyển dụng thấy bạn đang tìm chứ không phải đang cần họ.
  • Hãy giữ resume của bạn đơn giản: sử dụng bản thiết kế tối giản với font chữ dễ đọc. Lọc sơ những kĩ năng bạn cần để trên CV, không nên quá chi tiết hoặc làm quá trình độ của bạn. Đừng liệt kê quá cụ thể công việc trước, hãy để những mô tả đó trên Linkedin. Không nên để thông tin về nơi ở và ngày tháng năm sinh của bạn.
  • Tạo một cover letter ấn tượng, nhưng hãy dành thời gian nghiên cứu công ty bạn sắp apply vào để viết sao cho phù hợp. Tránh văn phong mẫu sáo rỗng. Bạn nên thêm địa chỉ của bạn vào nữa.
  • Học Git, áp dụng nó và đăng tải những dự án của bạn lên Github. Hãy để tối thiểu 2-3 dự án tốt nhất của bạn với cách trình bày ấn tượng nhất. Hãy commit hàng ngày để gây ấn tượng với những nhà tuyển dụng, đừng đơn thuần chỉ commit cho 1 dự án rồi thôi.
  • Thật may mắn nếu bạn không hề gặp trở ngại nào khi viết code, nhưng ở một khía cạnh nào đó, nó đồng nghĩa với việc bạn không học thêm điều gì mới. Điều bạn cần làm đó là thoát ra khỏi vùng an toàn và chuẩn bị cho hướng đi mới trong tương lai.
  Cách viết CV giúp lập trình viên ghi điểm với nhà tuyển dụng

Hãy lập danh sách những yêu cầu của nhà tuyển dụng – điều họ mong muốn từ ứng viên. Cụ thể như sau:

  • “Yêu cầu tối thiểu 2 năm kinh nghiệm” đồng nghĩa với việc “không yêu cầu kinh nghiệm.” Apply!
  • “Yêu cầu bằng cấp liên quan” đồng nghĩa với “không yêu cầu bằng cấp”. Apply!
  • “Chúng tôi đang tìm kiếm một senior dev” đồng nghĩa với “thực ra thì một junior cũng có thể đáp ứng đấy!”. Apply!

Đọc điều thứ 3 một lần nữa, và sau đó apply. Đó là cách tôi lấy tự tin để đi phỏng vấn và thành công.

Những nguồn tham khảo đáng xem

  • Hãy bắt đầu với kiến thức giới thiệu về CS50 trong khoa học máy tính trên edX CS50’s Introduction to Computer Science, đây đơn giản là những tài liệu cho người mới miễn phí tốt nhất mà tôi từng tìm. Sau đó hãy đọc tiếp lập trình web CS50 bằng Python và JavaScript CS50’s Web Programming with Python and JavaScript.
  • Xem qua lộ trình mới nhất về thiết kế web qua video tại đây.
  • FreeCodeCamp là nguồn hiệu quả nhất để đi từ con số 0 lên con số 10. Ghi chú lại tất cả những gì bạn học được và thực hành nó.
  • Một số subreddit mà tôi theo dõi: r/learnprogramming, r/programming, r/webdev, r/web_design, r/reactjs, r/freecodecamp, r/cscareerquestions (tôi liệt kê một số tiêu biểu thôi nhé). Tôi tự tạo một tài khoản Reddit chỉ đơn thuần cập nhật các subreddit về CS, để đảm bảo rằng feed của tôi không bị nhiễm những thứ không liên quan khác.
  • Udemy: khóa học duy nhất tôi từng mua là MERN Stack Front To Back của Brad Traversy. Những video hướng dẫn rất tuyệt vời sẽ giúp bạn trở thành một chuyên gia trên các platform mạng xã hội. Tuy nó mất phí nhưng tin tôi đi, nó rất đáng đồng tiền bát gạo đấy.
  • Hướng dẫn của Net Ninja về Node/Express tại đây
  • Stack Overflow, cái này thì không cần phải động não quá nhiều. Search GG và đọc định nghĩa là đủ.
  • Học CSS qua các kênh Flexbox Froggy, Grid Garden. Xem xong bạn sẽ vận dụng khá tốt cho các buổi phỏng vấn đấy.
  • Các nguồn sách ebook về JavaScript miễn phí: The Road to Learn React, You Don’t Know JS, và Eloquent Javascript nếu bạn muốn thử cái gì khó hơn.
  • Hackerrank hoặc Leetcode để rèn luyện kĩ năng problem solving (giải toán) của bạn. Nếu bạn thực sự giỏi kĩ năng này bạn có thể apply vào Big-N.
  • Tính chần chừ không dám hành động có thể là một trở ngại lớn trong công việc của bạn. Nếu bạn đang là một con người như vậy, đừng lo lắng hãy yên vị ở một công ty tốt và bạn sẽ cải thiện được tính chất này. 

Và đó là tất cả những gì tôi muốn chia sẻ. Tuy dài dòng nhưng hi vọng bài viết đang và sẽ truyền động lực cho những anh em có chung ước mơ giống như tôi. Chúc may mắn!

TopDev via FreeCodeCamp

Đừng quên cập nhật các công việc lập trình Full Stack hấp dẫn tại đây

Mẫu bảng mô tả công việc lập trình NodeJS

Mẫu bảng mô tả công việc lập trình NodeJS

Lập trình NodeJS là người phát triển các server-side logic web ứng dụng bằng JavaScript và/hoặc các biến thể của JS (CoffeeScript, v.v), chịu trách nhiệm quản lý việc trao đổi dữ liệu giữa server và users, phát triển các thành phần back-ends, liên kết ứng dụng với các web services khác (thường là bên thứ 3) và hỗ trợ Front-End Developers trong việc tích hợp công việc của họ với các ứng dụng của NodeJS. Hy vọng, Mẫu bảng công việc lập trình NodeJS này sẽ giúp các bộ phận nhân sự dễ dàng hơn cho việc tuyển dụng những vị trí này.

Về lập trình viên NodeJS: Để thành một NodeJS Developer giỏi, các lập trình viên cần nắm rõ cấu trúc dữ liệu và giải thuật, kỹ thuật lập trình hướng đối tượng cũng như có kiến thức hoặc kinh nghiệm về Spring/ Hibernate/ Struts để cùng tham gia nghiên cứu, thiết kế, phát triển và tích hợp các các giải pháp và hệ thống ứng dụng phục vụ công việc quản trị, vận hành và điều hành cho sản phẩm công ty/ khách hàng.

Xem thêm các tin đăng việc làm nodejs trên TopDev

Mẫu bảng công việc lập trình NodeJS

YÊU CẦU CÔNG VIỆC

  • Thành thạo lập trình NodeJS
  • Có kinh nghiệm Web API, Web Services REST
  • Có kiến thức cơ bản về Front-End, như HTML5, CSS3.
  • Hiểu biết tốt về ngôn ngữ tạo server-side template.
  • Thực hiện các nền tảng thử nghiệm tự động và unit tests.
  • Thành thạo các công cụ tạo phiên bản code , chẳng hạn như Git.
  • Kỹ năng tư duy logic và thuật toán tốt, phân tích và giải quyết vấn đề
  • Có khả năng đọc hiểu tiếng Anh chuyên ngành

MÔ TẢ CÔNG VIỆC

  • Lập trình NodeJS tham gia quản lý việc trao đổi dữ liệu giữa server và users, phát triển các thành phần back-ends, liên kết ứng dụng với các web services khác (thường là bên thứ 3)
  • Tích hợp các yếu tố hướng tới người dùng được phát triển bởi Front-End Developers với server-side logic.
  • Thiết kế và triển khai các ứng dụng có độ trễ thấp, tính sẵn sàng cao và hiệu suất cao.
  • Thực hiện bảo mật và bảo vệ dữ liệu
  • Tích hợp các giải pháp lưu trữ dữ liệu.
  • Nghiên cứu công nghệ mới để áp dụng cho các dự án của công ty
  • Duy trì và phát triển các website, code và cấu trúc dữ liệu có sẵn của công ty
  • Thực hiện nâng cấp đều đặn để giúp phần mềm và các hệ thống trở nên bảo mật và hiệu quả hơn.

Tham khảo thêm những công việc lập trình hot nhất thị trường tại đây

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

Bài viết này mình sẽ giúp các bạn có cái nhìn tổng quan về MongoDB. Chúng ta không lạ gì với cơ sở dữ liệu quan hệ, còn với cơ sở dữ liệu phi quan hệ thì sao? MEAN stack (MongoDB, Express, AngularJS, NodeJS) đang dần thay thế cho LAMP stack (Linux, Apache, MySQL, PHP/Python). Để tìm hiểu về MongoDB thì đầu tiên chúng ta sẽ cùng tìm hiểu xem NoSql là gì nhé

1. NoSql

Đầu tiên về cơ sở dữ liệu phi quan hệ chúng ta cùng tìm hiểu về NoSql nhé, vậy NoSql là gì?.

  • NoSQL là 1 dạng CSDL mã nguồn mở và được viết tắt bởi: None-Relational SQL hay có nơi thường gọi là Not-Only SQL.
  • NoSQL được phát triển trên Javascript Framework với kiểu dữ liệu là JSON và dạng dữ liệu theo kiểu key và value.
  • NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của mô hình dữ liệu quan hệ RDBMS (Relational Database Management System – Hệ quản trị cơ sở dữ liệu quan hệ) về tốc độ, tính năng, khả năng mở rộng,…
  • Với NoSQL bạn có thể mở rộng dữ liệu mà không lo tới những việc như tạo khóa ngoại, khóa chính, kiểm tra ràng buộc .v.v …
  • NoSQL bỏ qua tính toàn vẹn của dữ liệu và transaction để đổi lấy hiệu suất nhanh và khả năng mở rộng.
  • NoSQL được sử dụng ở rất nhiều công ty, tập đoàn lớn, ví dụ như FaceBook sử dụng Cassandra do FaceBook phát triển, Google phát triển và sử dụng BigTable,…

Đến đây chắc các bạn cũng phần nào hiểu về NoSql rồi phải không, giờ chúng ta đi đến khái niệm MongoDB nhé.

2, MongoDB là gì?

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

  • MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng.
  • MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.
  • Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server…) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng
  • So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row , MongoDB sẽ dùng các document thay cho row trong RDBMS.
  • Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định.
  • Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB

Vậy là mình đã giới thiệu xong khái niệm và một số điểm khác cơ bản của MongoDB so với CSDL quan hệ rồi, tiếp theo sẽ là một vài thao tác với MongoDB để các bạn có thể hình dung rõ hơn nhé

3. Một số câu lệnh cơ bản trên MongoDB

CSDL MySQL MongoDB
Tạo csdl CREATE DATABASE test; use test;
Tạo bảng CREATE TABLE students (ten_cot – kieu_du_lieu); db.createCollection(‘students’);
Tạo bản ghi INSERT INTO studetns (‘name’, ‘gender’) VALUES(‘thanh’, ‘male’); db.students.insert({ name:’thanh’, gender: ‘male’});
Cập nhật UPDATE students SET name = ‘thanh update’ WHERE id = 1; db.students.update({ _id: 1 },{$set:{ name: ‘thanh update’ }});
Xóa bản ghi DELETE FROM students Where id = 1; db.students.remove({ _id: 1});
Tìm kiếm all SELECT * FROM students; db.students.find({});
Tìm kiếm SELECT * FROM students WHERE name = ‘thanh’; db.students.find({ name: ‘thanh’ });

4. Ưu điểm của mongoDB.

  • Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái.
  • Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS.
  • MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster:
  • Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất.
  • Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng.
  • Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Với một lượng dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL.

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

5. Nhược điểm của mongoDB.

  • Một ưu điểm của MongoDB cũng chính là nhược điểm của nó. MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận.
  • Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value do đó key sẽ bị lặp lại. Không hỗ trợ join nên dễ bị dữ thừa dữ liệu.
  • Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện…

6. khi nào nên dùng MongoDB

Ví dụ như các hệ thống realtime (thời gian thực) yêu cầu phản hồi nhanh, Các hệ thống bigdata với yêu cầu truy vấn nhanh hay các hệ thống có lượng request lớn thì MongoDB sẽ là sự lựa chọn ưu tiên hơn CSDL quan hệ. Tùy theo dự án và trường hợp cụ thể để sử dụng CSDL quan hệ hay sử dụng MongoDB đem lại hiệu quả cao.

Tham khảo các vị trí tuyển dụng lập trình MongoDB lương cao tại Topdev

TopDev via Viblo

Mẫu bảng mô tả công việc của IT Support

Mô tả công việc IT Support mức lương hấp dẫn

IT Support là người phụ trách phối hợp ăn ý với các bộ phận liên quan như Technical để có thể hỗ trợ và giúp đỡ khách hàng giải quyết những vấn đề lỗi kỹ thuật, hỏng hóc,… một cách nhanh chóng và hiệu quả cao. Tiến hành theo dõi và kiểm tra hệ thống liên tục và xuyên suốt trong quá trình sử dụng để đảm bảo rằng việc bảo trì và khắc phục sự cố luôn được xử lý kịp thời và nhanh chóng. Thu thập thông tin và các đóng góp phản hồi của khách hàng là công việc khá quan trọng, qua những thông tin nhận xét về sản phẩm dịch vụ công ty sẽ dễ dàng hơn trong việc rà soát, cải tiến và nâng cao chất lượng của sản phẩm dịch vụ hơn đồng thời phải thường xuyên chăm sóc và quan tâm tới khách hàng sử dụng sản phẩm dịch vụ của công ty.Hy vọng, Mẫu bảng mô tả công việc IT Support này sẽ giúp các bộ phận nhân sự dễ dàng hơn cho việc tuyển dụng những vị trí này.

Mẫu bảng công việc IT Support

YÊU CẦU CÔNG VIỆC

  • Tốt nghiệp các trường kỹ thuật hoặc có kiến thức về CNTT (Microsft, Oracle, Cisco, Jupiter)
  • Kinh nghiệm về giao tiếp và phục vụ khách hàng là lợi thế.
  • Có kỹ năng đào tạo, hướng dẫn sử dụng trang thiết bị CNTT, phần mềm cho người sử dụng.
  • Có khả năng làm việc độc lập cũng như làm việc nhóm tốt.

MÔ TẢ CÔNG VIỆC

  • Hỗ trợ giải đáp các yêu cầu về nghiệp vụ của sản phẩm đang cung cấp cho khách hàng
  • Tư vấn khách hàng khi có những yêu cầu cần thay đổi mới
  • Làm và chỉnh sửa báo cáo trên sản phẩm
  • Kiểm tra số liệu trên hệ thống đảm bảo data chính xác
  • Hỗ trợ về phần mềm nghiệp vụ, các hệ thống kiểm soát nội bộ, tin học văn phòng
  • Tiếp nhận và xử lý các sự cố về phần mềm nghiệp vụ, lỗi người dùng và các lỗi cơ bản của phần mềm.
  • Hướng dẫn sử dụng phần mềm và đề xuất giải pháp xử lý dữ liệu.
  • Chi tiết việc làm it support

Tham khảo thêm những công việc lập trình hot nhất thị trường tại đây

System Admin là gì? Mô tả công việc vị trí System Administrator

Mô tả công việc System Administrators mức lương hấp dẫn

System Admin là một nghề khá mới và được nhiều chuyên gia dự đoán sẽ là nghề HOT và hái ra tiền trong giai đoạn sắp tới. Vậy, System Admin là gì? Công việc này đòi hỏi những kỹ năng nào? Hãy cùng tìm hiểu về chi tiết mô tả công việc này trong bài viết hôm nay cùng TopDev nhé.

Mô tả công việc System Administrators mức lương hấp dẫn
System Admin là gì? Mô tả công việc vị trí System Administrator

System Admin là gì?

System Admin, viết tắt của System Administrator (Quản trị viên hệ thống), là người chịu trách nhiệm quản lý, vận hành và duy trì các hệ thống máy tính và mạng trong một tổ chức. Họ đảm bảo rằng các hệ thống hoạt động ổn định, an toàn và hiệu quả, đáp ứng được nhu cầu của người dùng và yêu cầu của công ty.

System Administrators thường duy trì các yếu tố cần thiết như hệ điều hành, ứng dụng kinh doanh, công cụ bảo mật, web-servers, email, PC, mạng cục bộ và mạng diện rộng cả phần cứng, phần mềm và phần cứng máy chủ tầm trung.

Mô tả công việc System Administrators

System Admin
Mô tả công việc System Administrators
  1. Đảm bảo hệ thống hoạt động hiệu quả:
    • Giám sát liên tục các thành phần phần cứng và phần mềm của hệ thống máy chủ và hệ thống mạng.
    • Đảm bảo hệ thống hoạt động trơn tru, không có các lỗi hỏng hóc kỹ thuật trong quá trình vận hành.
    • Thực hiện sửa chữa và khắc phục ngay lập tức các lỗi hệ thống khi chúng xảy ra.
    • Thay thế các thiết bị, phụ tùng hoặc chi tiết kỹ thuật khi không thể sửa chữa hoặc can thiệp kỹ thuật.
  2. Quản lý hệ thống mạng:
    • Đảm bảo hệ thống mạng luôn có đầy đủ các thành phần cần thiết, hoạt động trơn tru và thiết kế chuẩn chỉnh.
    • Thực hiện các thao tác để duy trì và nâng cấp phần mềm trong hệ thống mạng.
    • Thực hiện các nghiệp vụ chuyên môn để ngăn ngừa các sự cố như rò rỉ dữ liệu, chương trình hoạt động chậm, virus, và các thiết bị lỗi thời hoặc hoạt động kém.
  3. Bảo đảm an ninh mạng và hệ thống internet:
    • Thực hiện các biện pháp bảo mật để bảo vệ sự an toàn và bí mật dữ liệu của doanh nghiệp.
    • Triển khai các biện pháp bảo vệ để đảm bảo hệ thống mạng an toàn, không bị hack hoặc đánh cắp dữ liệu.
    • Xây dựng và tối ưu hóa các hàng rào bảo vệ để bảo vệ máy chủ và hệ thống mạng.
    • Thực hiện sửa chữa và khắc phục các lỗi thuộc về hệ thống mạng khi cần thiết.
  4. Hỗ trợ kỹ thuật và khắc phục sự cố:
    • Cung cấp hỗ trợ kỹ thuật cho người dùng cuối, giải quyết các vấn đề liên quan đến phần mềm và phần cứng.
    • Đào tạo người dùng về cách sử dụng hệ thống và các công cụ công nghệ thông tin.

Kỹ năng và kiến thức cần có của vị trí System Admin:

  • Kiến thức chuyên môn: Thành thạo các hệ điều hành (Windows, Linux, macOS), mạng và các thiết bị mạng.
  • Kỹ năng bảo mật: Khả năng thiết lập và quản lý các biện pháp bảo mật hệ thống, chống lại các mối đe dọa mạng.
  • Kỹ năng giám sát và phân tích: Sử dụng các công cụ giám sát để theo dõi hiệu suất hệ thống và phân tích log để phát hiện sự cố.
  • Kỹ năng khắc phục sự cố: Khả năng nhận diện và giải quyết các vấn đề kỹ thuật một cách nhanh chóng và hiệu quả.
  • Giao tiếp và hỗ trợ: Kỹ năng giao tiếp tốt để hỗ trợ người dùng và phối hợp với các bộ phận khác trong tổ chức.

>> Xem thêm: Câu hỏi phỏng vấn System Admin và cách trả lời ghi điểm

Mức lương và cơ hội nghề nghiệp của System Admin ở Việt Nam

Mức lương của System Admin tại Việt Nam

Mức lương của System Admin tại Việt Nam có thể khác nhau tùy thuộc vào nhiều yếu tố như kinh nghiệm, trình độ chuyên môn, quy mô công ty, và vị trí địa lý. Dưới đây là một số thông tin về mức lương trung bình (Theo Vietnam IT Market Report):

  1. Junior System Admin (dưới 2 năm kinh nghiệm): Mức lương trung bình: từ 8 triệu đến 15 triệu VND/tháng.
  2. Mid-level System Admin (2-5 năm kinh nghiệm): Mức lương trung bình: từ 15 triệu đến 25 triệu VND/tháng.
  3. Senior System Admin (trên 5 năm kinh nghiệm): Mức lương trung bình: từ 25 triệu đến 40 triệu VND/tháng.
  4. System Admin tại các công ty quốc tế hoặc các tập đoàn lớn: Mức lương có thể lên đến 50 triệu VND/tháng hoặc cao hơn, tùy thuộc vào trách nhiệm và yêu cầu công việc.

Cơ hội nghề nghiệp cho System Admin tại Việt Nam

Với sự phát triển không ngừng của ngành công nghệ thông tin và số hóa doanh nghiệp, nhu cầu về các chuyên gia quản trị hệ thống ngày càng tăng. Các công ty trong nhiều ngành nghề đều cần System Admin để đảm bảo hệ thống CNTT hoạt động ổn định và bảo mật.

System Admin có thể làm việc trong nhiều lĩnh vực khác nhau như tài chính, ngân hàng, giáo dục, y tế, sản xuất, và dịch vụ. Điều này mở ra nhiều cơ hội nghề nghiệp cho các chuyên gia trong lĩnh vực này.

Xem các vị trí tuyển dụng System Administrator tại TopDev

Có thể bạn muốn xem thêm:

Tham khảo thêm những công việc lập trình hot nhất thị trường tại đây

8 cạm bẫy lập trình viên dù biết vẫn khó tránh khỏi

Hãy thành thật với nhau. Một số trong chúng ta có lẽ đã theo đuổi nghề IT chỉ vì bố mẹ bắt buộc hoặc bởi vì bạn nghĩ rằng có thể kiếm được nhiều tiền theo cách này. Bạn không bắt đầu code ngay từ khi còn trẻ vì chả có đam mê với máy tính và cũng không thật sự thích phát triển phần mềm. Bạn sẽ mãi mãi luôn ở mức tầm thường. Kiếm chỉ đủ đồng tiền vì ngành này vẫn còn nhu cầu cao. Tuy vậy, bài viết này không hề dành cho cho những người như vậy.

Nếu bạn sẵn sàng vọc phá máy móc chỉ để hiểu cách chúng hoạt động. Nếu bạn luôn bỏ thời gian để học về cách làm game, viết ứng dụng. Nếu bạn tìm thấy chính mình trong phần mềm như một nghề nghiệp, bài viết này là dành cho bạn.

Bạn cần phải thay đổi cách bạn nghĩ về sự nghiệp của mình. Bạn không viết code cho đam mê nữa; bạn đang làm ra tiền. Hãy thể hiện sự đam mê cho các dự án phụ của bạn. Bằng mọi cách, hãy chắc chắn rằng bạn ít nhất vẫn thích công việc hiện tại của mình – thậm chí sẽ tốt hơn nếu bạn thích nó. Nếu không, hãy tìm một nơi bến khác trong khi nền kinh tế vẫn còn nóng.

Tuy nhiên, mục tiêu của bạn nên là có lương đạt tới tầm $401,000/mỗi năm để có đủ tiền mua một căn nhà, một chiếc xe hơi và làm bất cứ điều gì bạn muốn. Nếu không, bạn sẽ mãi mãi phải sống trong cực khổ.

Bạn cần phải suy nghĩ xa hơn về sự nghiệp chứ không dừng lại với chỉ công việc hiện tại. Để làm điều đó bạn cần phải tránh xa tám cạm bẫy này.

Cạm bẫy số 1: Chỉ làm về một công nghệ duy nhất

Tôi hiểu. Bạn thích Microsoft C # hoặc Java hoặc JavaScript hoặc Python hoặc Cobol. Tuy nhiên, hầu hết các công nghệ đều có vòng đời riêng biệt bao gồm nhưng lúc cao điểm, thích hợp và thoái trào. Có nghĩa là nếu bạn biết Cobol trong những năm 1980, thì điều đó thật tuyệt vời. Nếu bạn chỉ biết có mình nó vào đầu những năm 1990 thì bạn sẽ có nguy cơ mất việc.

Còn Java thì sao? Tôi đã từng kiếm được $ 300 một giờ với công việc tư vấn Java.

Còn hiện nay? Chả ai muốn phí tiền khi đã có sự giúp đỡ của internet và Google. Nếu bạn không nghĩ rằng JavaScript hay Python hay bất cứ thứ gì bạn thích sẽ giống như vậy thì bạn thật sự như một kẻ mù.

Cạm bẫy số 2: Đặt hết vào một công nghệ duy nhất

Vài năm trước, có vẻ như Ruby sẽ lên ngôi. Tại một thời điểm khác, Perl trông giống như nó sẽ đạt đến cùng cấp độ của Java. Dự đoán tương lai là rất khó khăn, vì vậy hãy luôn có những phương án thay thế để kịp thời xoay xở.

Cạm bẫy số 3: Yêu một cách mù quáng

Không bao giờ nói với Groovy user rằng nó đã “kết thúc”. Tuy nhiên, mọi người sẽ không phải trả phí bảo hiểm cho các nhà phát triển Groovy. Nếu sếp của bạn cho phép bạn sử dụng nó trên một dự án, có thể là vì anh ấy không quan tâm bạn sử dụng cái gì, nó không quan trọng lắm hoặc anh ta không biết gì.

Bằng mọi cách, hãy bám lấy công nghệ tốt nhấ và học chúng. Hãy sẵn sàng trở thành một trong những người đầu tiên biết điều đó và quảng cáo bản thân như một chuyên gia trong đó.

Tuy nhiên, cũng sẵn sàng để nhảy đi khi nhu cầu tuột xuống thấp hơn. Luôn có những công nghệ mới khác để yêu, dù đó là ngôn ngữ hay cơ sở dữ liệu.

Cạm bẫy số 4: Bị dị ứng với chính trị

Mọi tổ chức, dù lớn hay nhỏ đề có tồn tại một loại chính trị nào đó. Vì vậy, bạn cần trau dồi kỹ năng chính trị của mình. Nếu bạn không biết gì về chính trị, bạn sẽ là một con tốt trong các trò chơi của người khác. Không có nghĩa là bạn phải là kẻ ngốc, nhưng trong mọi công ty đều có một trò chơi chính trị đang diễn ra.

  32 cuốn sách học lập trình bạn nhất định phải đọc

Cạm bẫy số 5: Không quan tâm đến việc kinh doanh

“Tôi chỉ là một nhà phát triển, tôi không quan tâm đến kinh doanh” – Đây là điều mà tôi gọi là “tự sát sự nghiệp”. Bạn cần phải biết công ty của bạn có hoạt động tốt không? Thách thức kinh doanh chính của nó là gì? Các dự án quan trọng nhất là gì? Công nghệ hoặc phần mềm giúp đạt được chúng như thế nào? Công ty của bạn phù hợp với ngành công nghiệp tổng thể như thế nào? Nếu bạn không biết câu trả lời cho những câu hỏi đó thì tức là bạn đang làm việc trên các dự án không liên quan cho những người không liên quan trong các công ty không liên quan với số tiền tương đối không liên quan. Và bạn cũng sẽ rất dễ dàng bị thay thế.

Cạm bẫy số 6: Có tâm lý bị động

Một trong những công việc đầu tiên của tôi khi ấy có gặp một người đồng nghiệp hơn tôi vài tuổi. Anh ấy mắc sai lầm khi quyết định “đi nghỉ” mà không báo trước nên tôi đã phải hoàn thành toàn bộ dự án trong hai tuần. Dù vậy, có thể nói là tôi đã cứu anh ấy không bị mất việc. Tôi mong anh ta sẽ vui vì điều này. Nhưng anh ấy thì không. Trái ngược lại, anh ta nắm lấy mọi cơ hội để tôi bị sa thải. Nó dường như trở thành một nhiệm vụ của anh trong cuộc sống.

Tất nhiên, tôi đã hoàn thành công việc của mình. Tôi đã sáng tạo. Tôi luôn tìm ra những cách thức mới để hoàn thành công việc tốt hơn, nhanh hơn và giải quyết tốt vấn đề. Anh ấy giờ đã nghỉ hưu ngay sau khi tôi rời công việc đó. Đôi khi, chúng tôi có vô tình gặp ở quán cà phê nhưng giả vờ không nhớ nhau.

Lời khuyên của tôi là làm điều đúng đắn, nhưng hãy sẵn sàng đối mặt với những gì đang đến.

Cạm bẫy số 7: Không biết (hoặc quan tâm) giá trị của bạn

Nếu bạn nói rằng “tôi làm ở đây không vì tiền” thì hãy nên có một sở thích thay vì đi làm. Bằng mọi cách, đừng đi làm mỗi ngày chỉ để chật vật sống cho ngày tiếp theo. Nhưng cũng đừng đi làm ít hơn 50% so với những người khác. Hãy biết giá trị của bạn và thu nhập nó xứng đáng được hưởng.

Cạm bẫy số 8: Làm việc đối phó

“Nó chỉ là một công việc.” Không, đó là một bước trong sự nghiệp của bạn. Bạn sẽ không làm việc này mãi mãi. Vậy, bạn có thể học được gì ở đây? Bước tiếp theo là gì? Ai là nơi cuối cùng bạn muốn trở thành? Công việc này giúp bạn đạt được điều đó như thế nào?

Hãy phát triển khả năng nhận thức tình huống của doanh nghiệp. Nó sẽ làm cho chính bạn và những người bạn làm việc thoải mái hơn rất nhiều. Hơn nữa, đây không chỉ là một công việc, nó là một cuộc hành trình.

TopDev via infoworld

Có thể bạn quan tâm:

Truy cập ngay việc làm IT đãi ngộ tốt trên TopDev

Session là gì? Cookie là gì?

session là gì

Session là gì? –  Session, Cookie là 2 khái niệm được nhắc đến thường xuyên đối với các lập trình web. Khi mới bắt đầu tập làm web, nhiều bạn chắc hẳn rất hay nhầm lẫn giữa các khái niệm này. Sẽ có lúc bạn không biết lúc nào thì mình nên dùng session, lúc nào mình nên dùng cookie.

Session là gì?

Khái niệm session là gì không quá xa lạ với các fresher, Session là một phiên làm việc là một khái niệm phổ biến được dùng trong lập trình web có kết nối với database. Đặc biệt các chức năng như đăng nhập, đăng xuất người dùng sẽ khó có thể thực hiện được nếu không sử dụng session.

session là gì

Cách sử dụng Session

Một session bắt đầu khi client gửi request đến server, nó tồn tại xuyên suốt từ trang này đến trang khác trong ứng dụng web và chỉ kết thúc khi hết thời gian timeout hoặc khi bạn đóng ứng dụng. Giá trị của session sẽ được lưu trong một file trên server.

Ví dụ khi bạn đăng nhập vào một trang web và đăng nhập với tài khoản đã đăng ký trước đó. Server sau khi xác thực được thông tin bạn cung cấp là đúng thì nó sẽ sinh ra một tập tin chứa dữ liệu cần lưu trữ của người dùng.

Với mỗi session sẽ được cấp phát một định danh duy nhất SessionID. Khi kết thúc một phiên làm việc và bắt đầu một phiên mới, dĩ nhiên bạn sẽ được cấp một SessionID khác với trước đó. Bạn có thể tuỳ ý quyết định xem nên lưu trữ những thông tin nào vào Session. Nhưng thông thường chúng ta chỉ nên lưu những thông tin tạm thời trong session.

Giống khái niệm session là gì, khái niệm cookie cũng được dùng để lưu những thông tin tạm thời. Nhưng tập tin cookie sẽ được truyền từ server tới browser và được lưu trữ trên máy tính của bạn khi bạn truy cập vào ứng dụng.

Cách sử dụng Cookie

Cookie thường được tạo ra khi người dùng truy cập một website, cookie sẽ ghi nhớ những thông tin như tên đăng nhập, mật khẩu, các tuỳ chọn do người dùng lựa chọn đi kèm. Các thông tin này được lưu trong máy tính để nhận biết người dùng khi truy cập vào một trang web.

session là gì

Khi người dùng truy cập đến một trang web có sử dụng cookie, web server của trang đó sẽ tự động gửi cookie đến máy tính của người dùng. Khi truy cập đến các trang web sử dụng được cookie đã lưu, những cookie này tự động gửi thông tin của người dùng về cho chủ của nó (người tạo ra cookie). Tuy nhiên những thông tin do cookie ghi nhận không được tiết lộ rộng rãi, chỉ có website chứa cookie mới có thể xem được những thông tin này.

Mỗi cookie thường có khoảng thời gian timeout nhất định do lập trình viên xác định trước. Những thông tin được lưu vào cookie ví dụ như thông tin đăng nhập, thao tác người dùng, tần xuất ghé thăm website, thời gian truy cập… Tất cả chúng đều là những thông tin mang tính tạm thời và được lưu trong 1 khoảng thời gian.

Cookie được xem là một thành phần không thể thiếu được với những website có khối lượng dữ liệu lớn, có số lượng người dùng đông, và có những chức năng đi kèm với thành viên đăng ký.

  Đánh cắp Cookie bằng cách lợi dụng lỗi bảo mật XSS
Cookie Session session là gì session là gì
Cookie được lưu trữ trên trình duyệt của người dùng. Session không được lưu trữ trên trình duyệt.
Dữ liệu cookie được lưu trữ ở phía client. Dữ liệu session được lưu trữ ở phía server.
Dữ liệu cookie dễ dàng sửa đổi hoặc đánh cắp khi chúng được lưu trữ ở phía client. Dữ liệu session không dễ dàng sửa đổi vì chúng được lưu trữ ở phía máy chủ.
Dữ liệu cookie có sẵn trong trình duyệt đến khi expired. Sau khi đóng trình duyệt sẽ hết phiên làm việc (session)

 

Có thể bạn muốn xem thêm:

Xem thêm xin việc công nghệ thông tin lương cao tại TopDev!

Digital Transformation: Survive and Thrive – Cách mạng số và những bước ngoặt lịch sử

Những giá trị mà Digital Transformation có thể đem lại cho xã hội có thể kể đến lực lượng lao động được upgrade kỹ năng, automation thay thế sức người,… Trong đó, giá trị kinh tế tích lũy ước tính trong giai đoạn 2016 đến 2025 dao động từ khoảng 310 tỷ đô la đến 550 tỷ đô la. Về lợi ích phi kinh tế, digitalization có khả năng giảm phát thải CO2 từ 60 – 100 triệu tấn, cứu sống 20 đến 30 người và tránh 2.000 đến 3.000 người bị thương trong thập kỷ tới.

Nếu lúc trước là Kodak thì nay là Instagram, trước là Borders Books, nay là Amazon, trước là khách sạn, nay là Airbnb.

Sự thật là cứ 10 cái tên có trong danh sách Fortune 500 thì sẽ có 4 cái tên biến mất khỏi bảng xếp hạng trong vòng 10 năm tới, chính là nhường chỗ cho các công ty mới biết tận dụng công nghệ để để vượt trội.

Vậy các hướng đi của một doanh nghiệp trong việc ứng dụng công nghệ (Digitalize) là gì? Hay nói cách khác, đâu xu hướng Digital Transformation hiện nay?

IA (Intelligent Automation): Tự động hóa thông minh đã sẵn sàng cho sự phát triển bùng nổ. Trước đây, IA bị giới hạn trong việc hỗ trợ các quy trình rất phức tạp như xử lý tài chính trong ngân hàng và cung cấp dịch vụ trên các mạng viễn thông khổng lồ.

AI (Artificial Intelligence): Đến năm 2021, 75% ứng dụng doanh nghiệp thương mại sẽ được tích hợp AI và hơn 50% người tiêu dùng sẽ tương tác với AI. Đến năm 2020, các trợ lý kỹ thuật số và bot cá nhân sẽ ảnh hưởng đến 10% tổng doanh số.

Digital Transformation & Business Intelligence): nghe như khó có sự liên kết nhưng bạn có hình dung được đây là một tổ hợp giữa một hệ thống hiện đại góp phần giải quyết những phép tính khó và một quá trình xây dựng văn hóa digital. Nhìn chung đều hướng đến một doanh nghiệp dẫn đầu!

Big Data Analyst: hiểu khách hàng bằng những con số “biết nói”. Vì vấn đề cốt lõi không nằm ở việc bạn thu thập dữ liệu như thế nào mà thay vào đó, là bạn dùng dữ liệu để làm gì?

Thực tế, trên thế giới đã có nhiều câu chuyện về sự thành công của các manager khi áp dụng digital transformation. Ví dụ, thông qua dữ liệu và phân tích dự đoán, doanh nghiệp có thể giải quyết các vấn đề sản xuất và bảo trì trước, hoặc bệnh viện có thể cung cấp dịch vụ chăm sóc sức khỏe thông qua công nghệ chẩn đoán nâng cao.

Tóm lại: “Những phát minh công nghệ mang đến cho doanh nghiệp hai lựa chọn: đột phá để dẫn đầu hoặc là kẻ theo sau”

Trên đây chỉ là những phần nổi của tảng băng chìm mang tên Digital Transformation. Những bước ngoặt lịch sử mà cuộc cách mạng số này đem lại là gì? Tại sao đây được xem là phương pháp phát triển hàng đầu được nhiều công ty săn đón? Đây chắc chắn là một trong 6 topics nổi bật của Vietnam Web Summit 2019 mà bạn sẽ không muốn bỏ lỡ. Sân chơi công nghệ hot nhất nửa cuối năm đã trở lại, nơi hội tụ của những anh tài data, AI, Java,… cùng nhau chia sẻ và cập nhật thông tin, xu hướng nổi bật trong ngành.

Code giảm giá dành cho thành viên TopDev: TOPDEVBLOG@VWS2019  (số lượng có hạn, độc giả nhập mã tại trang mua vé)

Heroku là gì? Cách đưa ứng dụng lên Heroku

Heroku là gì? Cách đưa ứng dụng lên Heroku

Heroku là gì? Heroku là nền tảng đám mây cho phép các lập trình viên xây dựng, triển khai, quản lý và mở rộng ứng dụng (PaaS – Platform as a service).

Bạn có ý tưởng cần thử nghiệm và đo đạc các đánh giá của người dùng? Tuy nhiên để đưa một website hoạt động thì bạn cần nào là code, nào là cài đặt máy chủ, webserver...

Với Heroku, bạn chỉ cần tập trung chuyên môn vào code và deploy là bạn có thể đưa sản phẩm ngay đến người dùng để lấy ý kiến.

Heroku là gì?

Heroku là gì? Nó là nền tảng đám mây cho phép các lập trình viên xây dựng, triển khai, quản lý và mở rộng ứng dụng (PaaS – Platform as a service).

Nó rất linh hoạt và dễ sử dụng, cung cấp cho một con đường đơn giản nhất để đưa sản phẩm tiếp cận người dùng. Nó giúp các nhà phát triển tập trung vào phát triển sản phẩm mà không cần quan tâm đến việc vận hành máy chủ hay phần cứng…

Heroku là gì

Heroku hoạt động như thế nào?

Sau khái niệm Heroku là gì thì hãy cùng nhau tìm hiểu các hoạt động của nó. Heroku chạy các ứng dụng trong dynos – nó là một máy ảo mà có thể tăng giảm sức mạnh dự vào độ lớn của ứng dụng.

Hiểu đơn giản là dynos nhưng là các block, bạn muốn tăng tốc độ xử lý nhiều công việc phức tạp thì thêm block (scale chiều ngang) hoặc tăng kích thước block (scale chiều dọc) .

Heroku sẽ thanh toán phí tháng dựa trên số lượng dynos và kích thước mỗi dyno bạn sử dụng.

Heroku có ưu và khuyết điểm gì?

Bạn có thể dùng Heroku miễn phí cùng với vô vàn các addons hỗ trợ cực kỳ hữu ích thì đấy được coi là một trong những dịch vụ hấp dẫn. Hỗ trợ nhiều ngôn ngữ lập trình như:

Ngoài ra chúng ta còn được cung cấp Database, SSL miễn phí, hỗ trợ mạnh làm việc team cũng như liên kết với Github một cách đơn giản.

Khuyết điểm thì tất nhiên là có, việc miễn phí sẽ chỉ có giới hạn là 550 giờ mỗi tháng. Nếu muốn tăng lên 1000 giờ thì bạn cần cài đặt phương thức thanh toán trên đó. Tuy nhiên để kiểm nghiệm một ý tưởng hay một trang web nhỏ thì nhiêu đó là quá đủ để thu về kết quả.

Sau 2 đến 3 giờ nếu server không có người truy cập thì server sẽ chuyển sang trạng thái ngủ. Về việc server bị tắt khi không có traffic, cách đơn giản nhất là tự tạo traffic cho nó.

Cách dễ nhất là dùng Pingdom để ping trang blog của bạn thường xuyên giữ cho server không bị tắt.

Heroku có những tính năng gì?

  • Heroku Runtime

Nó cung cấp các smart container mà ứng dụng của bạn sẽ chạy trong đó. Nó xử lý mọi từ từ cấu hình, điều phối, cân bằng tải, backup, log, bảo mật…

  • Heroku Teams

Đây là một công cụ quản lý nhóm, kết hợp nhiều lập trình viên lại với nhau để xây dựng phần mềm tốt hơn.

Các nhóm này có thể tự tổ chức, kiểm soát, thêm thành viên và sử dụng các công cụ cộng tác như Heroku Pipelines.

  • Scale

Heroku có thể mở rộng quy mô ứng dụng ngay lập tức, cả theo chiều dọc và chiều ngang.

  • Add-ons

Mở rộng, nâng cao và quản lý các ứng dụng của bạn với các dịch vụ được tích hợp sẵn như New Relic, MongoDB, SendGrid, Searchify, Fastly, Papertrail, ClearDB MySQL, Treasure Data…

  • Code/data rollback

Heroku cho phép bạn khôi phục mã nguồn hoặc cơ sở dữ liệu của mình về trạng thái trước đó ngay lập tức.

  • App metrics

Với tính năng giám sát tích hợp lưu lượng, thời gian phản hồi, bộ nhớ, tải CPU và lỗi…bạn sẽ luôn biết được ứng dụng của bạn đang hoạt động ra sao.

  • Continuous delivery

Heroku Flow sử dụng Heroku Pipeline, Review Apps và tích hợp Github để xây dựng quy trình CI/CD gồm build, test, deploy…

  • GitHub Integration

Tích hợp Github giúp bạn có thể pull request, push, commit,…

Deploy ứng dụng sử dụng Heroku

Đây là một ví dụ về việc đưa một project Laravel lên Heroku. Đầu tiên hãy lên Heroku đăng ký một account.

Bước 1: Cài Heroku CLI

Bạn cài đặt theo link hướng dẫn dưới đây cho hệ điều hành mình đang dùng, do mình sử dụng MacOS nên sẽ cài thông qua homebrew

brew install heroku/brew/heroku

Sau đó xác định phiên bản của nó bằng command:

heroku --version

Bước 2: Cài đặt ứng dụng Laravel

Mở terminal và sử dụng command sau:

composer create-project laravel/laravel herokularavel --prefer-dist

Bước 3: Tạo một Procfile

Bên trong thư mục gốc của Laravel (root), tạo một file gọi là Procfile – chứa câu lệnh mà heroku sẽ chạy. Sau đó bỏ dòng này vào procfile:

# Procfile
web: vendor/bin/heroku-php-apache2 public/

Bước 4: Khởi tạo dự án với Git repo

git init

Bước 5: Đăng nhập vào Heroku từ terminal

heroku login

Bước 6: Tạo một ứng dụng Heroku

Gõ lệnh sau tại thư mục chứa code, Heroku sẽ yêu cầu bạn nhập tài khỏan, rồi tạo một “app” cho bạn, đồng thời thiết lập git để sẵn sàng “đẩy code lên Heroku”

heroku create
Creating app... done, ⬢ ironman-spiderman-12345
https://ironman-spiderman-12345.herokuapp.com/ | https://git.heroku.com/ironman-spiderman-12345.git

Nó sẽ tự động tạo một ứng dụng với tên random, ví dụ như: ironman-spiderman-12345. Bạn sẽ có một url là ironman-spiderman-12345.herokuapp.com

Bước 7: Setting một Laravel encryption key

Gõ lệnh sau:

php artisan key:generate --show

Nó sẽ show một key và bạn copy vào cho vào lệnh sau:

heroku config:set APP_KEY={Your copied key}

Bước 8: Push sự thay đổi lên Heroku

Sau đó add các file vào Git:

git add .

Commit các thay đổi:

git commit -m "laravel deploy to heroku"

Push nó lên Heroku server:

git push heroku master

Và bạn sẽ thấy:

Heroku là gì

  Jenkins là gì? Build và deploy code nhanh chóng với Jenkins
  Kubernetes là gì? Cùng tìm hiểu cách hoạt động của K8s
  Microservices là gì? Speed up Microservices 1: Tác dụng phụ và một số chiến lược cơ bản

Bước 9: Start ứng dụng

Để start ứng dụng trên Heroku, bạn gõ lệnh sau:

heroku open

Lúc này ứng dụng sẽ live trên url: https://ironman-spiderman-12345.herokuapp.com/ (cái này mình chỉ ghi ví dụ để bạn dễ mường tượng)

Tổng kết

Bài viết giúp các bạn biết về Heroku là gì, đồng thời hướng dẫn các bước cơ bản chạy một ứng dụng web app trên Heroku. Một số lưu ý:

  • Heroku hỗ trợ 1 free database PostgreSQL.
  • Khi chạy production, hầu hết các web app sẽ được chạy trên các “máy ảo”/”server”/”cloud” riêng. Người dùng sẽ tự cài đặt database, cài requirements và chạy code. Heroku là dịch vụ rất tiện nhưng khá đắt khi website bắt đầu lớn, theo mình chỉ thích hợp sử dụng test mà thôi.

Có thể bạn muốn xem thêm:

Xem thêm tuyển dụng ngành cntt hấp dẫn trên TopDev