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á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.
Đâ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)
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
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()”
Sau đây là cú pháp đơn giản cho phương thức load() trong jQuery: [selector].load( URL, [data], [callback] );
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.
Ở đâ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.
Đ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.
Ở 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.
Đố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 đó:
url : chuỗi chứa đường dẫn tới file cần lấy và trả về dữ liệu
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.
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”.
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() ”.
“ 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ề.
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
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ô 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ả
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
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
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
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ý
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
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
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
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.
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
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.
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
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…
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.
Đú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.
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
“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.
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.
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ì
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é.
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.
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).
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.
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.
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ư ontimeout, onprogress không được sử dụng nhiều lắm.
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:
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:
Đâ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 GET, HEAD, POST.
Giá trị của Content-Type phải là một trong số các loại application/x-www-form-urlencoded, multipart/form-data, text/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:
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 POST, PUT 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ệ:
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.
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.
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:
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:
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 đó.
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.
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.
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.
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.
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.
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!
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.
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
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à 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’);
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.
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.
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.
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é.
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
Mô tả công việc System Administrators
Đả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.
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.
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.
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.
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):
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.
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.
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.
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.
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.
“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.
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.
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.
Cookie là gì?
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.
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.
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ữ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ì? 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 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
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”
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.