Roadmap DevOps – Mọi thứ bạn cần biết để đắc đạo

Roadmap DevOps – Mọi thứ bạn cần biết để đắc đạo

DevOps được xem là một trong những phần khó học nhất để trở thành một full-stackdeveloper. Chính vì vậy mà con đường chinh phục nó cũng vô cùng đấy thử thách

Bạn sẽ phải nắm rõ mọi thứ về Server để có thể bước tới trình độ cao hơn trong DevOps

Chặng đường đòi hỏi bạn thông thạo về nhiều khái niệm và tool khác nhau

Công ty bảo mật ít được biết đến tuyên bố có thể bẻ khóa mọi iPhone và lấy dữ liệu với tỷ lệ thành công 100%

Công ty bảo mật ít được biết đến tuyên bố có thể bẻ khóa mọi iPhone và lấy dữ liệu với tỷ lệ thành công 100%

Bất chấp những nỗ lực của Apple trong việc tăng cường bảo mật, các công ty công nghệ trên thế giới vẫn thi nhau tìm cách để vượt qua những bức tường kiên cố này. Mới đây nhất, lại có thêm một công ty bảo mật tên là DriveSavers, tuyên bố có thể bẻ khóa mọi iPhone với tỷ lệ thành công 100%.

Theo lời giới thiệu trên trang web của DriveSavers, công ty này cho biết phương pháp mới của họ có thể bẻ khóa iPhone chạy bất kỳ phiên bản iOS nào, ngay cả là iPhone Xs với iOS 12. Từ đó có thể lấy toàn bộ dữ liệu bên trong thiết bị.

Tuy nhiên mức phí cho việc bẻ khóa không hề rẻ, MacRumors cho biết để bẻ khóa một chiếc iPhone sẽ tốn khoảng 3.900 USD. Do đó mà dịch vụ này của DriveSavers dường như chỉ phục vụ được cho các cơ quan điều tra của Chính phủ, những người muốn bẻ khóa iPhone của nghi phạm để thu thập bằng chứng.

Và như thường lệ DriveSavers không tiết lộ bất kỳ thông tin gì về phương pháp bẻ khóa iPhone mà họ sử dụng.

Còn nhớ cách đây khoảng một tháng, Apple khẳng định rằng đã ngăn chặn các thiết bị bẻ khóa iPhone mà cảnh sát Hoa Kỳ đang sử dụng, bằng bản cập nhật iOS 12. Các thiết bị này được cung cấp bởi Grayshift và có giá bán lên tới 15.000 USD một bộ.

Apple hiện chưa có bình luận gì trước thông tin này. Có lẽ các kỹ sư phần mềm và bảo mật của Apple đang phải cố gắng tìm ra lỗ hổng mà công ty DriveSavers đã sử dụng, để bẻ khóa cả những chiếc iPhone với iOS 12.

Lập trình viên nhí khiến cả hai “ông lớn” Google và Microsoft để mắt tới: Viết code từ năm 6 tuổi, làm CEO khi mới lên 10

Lập trình viên nhí khiến cả hai “ông lớn” Google và Microsoft để mắt tới: Viết code từ năm 6 tuổi, làm CEO khi mới lên 10

Samaira Mehta – cô bé 10 tuổi lớn lên tại thung lũng Silicon đã thu hút sự theo dõi và ngưỡng mộ của nhiều người, đặc biệt là các công ty nổi tiếng trong làng lập trình bởi công việc lập trình viên khi tuổi đời còn rất trẻ.

Samaira Mehta là nhà sáng lập kiêm CEO của công ty CoderBunnyz. Cô bé không chỉ nhận được sự công nhận của truyền thông quốc gia mà còn giữ vai trò diễn giả tại nhiều hội nghị được tổ chức tại thung lũng Silicon. Mọi thứ bắt đầu từ khi em mới 8 tuổi và tạo ra một trò chơi có tên CoderBunnyz nhằm dạy những trẻ em khác cách viết code nhưng thực sự thì em đã học viết code kể từ khi lên 6.

“Powerpuff Girl” ngoài đời thực

Trò chơi CoderBunnyz đã giúp cô bé giành được giải nhì với số tiền thưởng lên tới 2.500 USD trong cuộc thi Think Tank Learning năm 2016. Điều này đã thu hút sự chú ý của các nhân viên marketing tại kênh Cartoon Network, những người đang tìm kiếm những cô gái trẻ có khả năng truyền cảm hứng như những “Powerpuff Girls” (*) đời thực. Mehta trở nên nổi tiếng hơn từ khi nhận lời tham gia vào một số video của Cartoon Network.

Kèm theo đó, cô bé được giới thiệu trên một số bản tin và bắt đầu bán trò chơi của mình trên Amazon. Cô bé hồ hởi chia sẻ với Business Insider: “Chúng cháu bán được 1.000 bộ, thu được khoảng 35.000 USD và trò chơi này xuất hiện trên thị trường chỉ mới một năm”.

Lập trình viên nhí khiến cả hai ông lớn Google và Microsoft để mắt tới: Viết code từ năm 6 tuổi, làm CEO khi mới lên 10 - Ảnh 1.

Bé Samaira Mehta bên giấy chứng nhận.

Tuy nhiên, không phải ngẫu nhiên mà cô bé làm được điều này. Khi cho ra mắt trò chơi CoderBunnyz, cô đã nhận được sự hỗ trợ nhiệt tình của cha – một kỹ sư tại Intel và Sun Microsystem về chiến lược marketing.

Mehta đã sử dụng trò chơi để thực hiện các hội thảo về viết code cho các trẻ em đang trong độ tuổi đến trường. Cô cũng tiến hành một chiến dịch mang tên “Yes, 1 Billion Kids Can Code” cho phép những người quan tâm mua tặng nhiều bộ trò chơi này cho các trường hoc. Sau đó, cô bé còn tiến hành nhiều hội thảo nhằm giúp các học sinh ở những trường học đó chơi thật thành thạo.

Mehta cho hay từ đầu 2018 tới nay, đã có tới 106 trường học đã sử dụng trò chơi của em để dạy học sinh về code. “Trong một thế giới có khoảng 1 tỷ trẻ em, có nhiều người sẵn sàng ủng hộ những bộ trò chơi Coder Bunnyz cho các trường học và cho những người cần tới trò chơi này trên toàn thế giới, những người muốn học về code,” Mehta nói thêm.

Doanh thu ổn định khiến Mehta quyết định bắt tay thực hiện dự định tiếp theo: một trò chơi nhằm dạy trẻ em viết code sử dụng trí thông minh nhân tạo (AI). Trò chơi mới có tên gọi là CoderMindz và cô bé dự định đây sẽ là AI boardgame đầu tiên.

Giống như CoderBunnyz, trẻ em sẽ được học những nguyên tắc cơ bản của AI với những nội dung như đào tạo một mô hình AI, suy luận và học cách thích nghi. Cuối cùng, những đứa trẻ có thể sử dụng những kỹ năng đó để chế tạo robot. Cô bé phát triển trò chơi này với sự giúp đỡ của em trai, Aadit, 6 tuổi – cùng độ tuổi với Mehta khi cô bé bắt đầu được cha dạy viết code.

Lập trình viên nhí khiến cả hai ông lớn Google và Microsoft để mắt tới: Viết code từ năm 6 tuổi, làm CEO khi mới lên 10 - Ảnh 2.

Em trai cô bé, Aadit Mehta.

Ngôi sao trẻ của thung lũng Silicon

Khi trò chơi ra mắt thành công, Mehta được mời tới nhiều hội thảo, trong đó có khoảng 60 hội thảo được tổ chức tại thung lũng Silicon với hơn 2000 trẻ em. Trong số đó cũng có một loạt các hội thảo được tổ chức tại trụ sở chính của Google ở Mountain View, California (Mỹ). Và đó cũng là nơi em gặp Stacy Sullivan, CCO của Google.

Mehta nói: “Sau nhiều hội thảo tại trụ sở của Google, cháu và cô Sullivan đã nói chuyện với nhau cả tiếng đồng hồ. Cô ấy nói cháu đang làm rất tốt và khi cháu tốt nghiệp đại học, cháu có thể tới làm việc cho Google”. Nữ coder trẻ tuổi tài năng đã đáp lại Sullivan rằng cô bé không biết liệu mình có muốn tới làm việc cho Google hay không vì cô thích làm một doanh nhân hơn.

Trong khi đó, Sullivan và nhiều người ở Google vô cùng ấn tượng với lập trình viên nhỏ tuổi này và mời cô bé làm diễn giả chính tại Hội thảo về đa dạng trong công nghệ diễn ra tại Google Launchpad, một startup của Google ở San Francisco (Mỹ), vào tháng 8.

Ngoài ra, cô bé cũng tham gia hàng loạt các buổi diễn thuyết khác, bao gồm cả một buổi diễn thuyết ở Microsoft và tại Girl’s Festival do World Wide Women (Trung tâm tài nguyên toàn cầu cho phụ nữ và các trẻ em gái về giáo dục, sức khỏe, giải trí, kế hoạch tài chính, công việc và quyền của phụ nữ) tài trợ vào đầu tháng này.

Lập trình viên nhí khiến cả hai ông lớn Google và Microsoft để mắt tới: Viết code từ năm 6 tuổi, làm CEO khi mới lên 10 - Ảnh 3.

Kể từ khi ra mắt trò chơi CoderBunnyz, cô bé cũng có cơ hội gặp gỡ với nhiều tên tuổi lớn khác. Một trong những khoảnh khắc đáng tự hào nhất của cô là khi nhận được bức thư khích lệ từ cựu đệ nhất phu nhân Michelle Obama.

Cô bé cũng từng gặp Mark Zuckerberg vào dịp Halloween khi cô đi xin kẹo trong khu phố của anh và nói chuyện về công việc viết code của cô. “Cháu cuối cùng đã gặp chú ấy. Chú ấy cho cháu socola. Cháu bảo với chú ấy cháu là một coder trẻ tuổi và chú ấy nói với cháu là cứ tiếp tục đi, cháu đang làm rất tốt,” Mehta nhớ lại.

Mehta hiện đang bắt đầu một loạt các cuộc phỏng vấn trên trang web CoderBunnyz, nơi cô bé giao lưu với những người trong lĩnh vực robot, trò chơi và giáo dục. Trong khi tái đầu tư toàn bộ tiền từ doanh nghiệp trẻ của mình vào việc sản xuất nhiều bộ trò chơi CoderBunnyz hơn và tạo ra trò chơi AI mới, cô bé cũng trích một phần lợi nhuận cho tổ chức từ thiện PATH. “Tổ chức này nhằm giúp đỡ những người vô gia cư và cũng giúp mọi người xây dựng lại các kỹ năng và cháu quan tâm tới người vô gia cư,” cô bé cho hay.

ASP.NET MVC là gì & tại sao bạn nên sử dụng nó?

ASP.NET MVC là gì & tại sao bạn nên sử dụng nó?

Có rất nhiều nhà phát triển web không hiểu ASP.NET MVC là gì. Nếu bạn là một nhà phát triển web và bạn đang tìm kiếm một công cụ hoàn hảo cho việc tạo ra các ứng dụng MVC dựa trên web, thì bài viết này là dành cho bạn. Nội dung bài viết sẽ cho bạn biết ASP.NET MVC là gì và tại sao nó cần được sử dụng bởi các nhà phát triển web như bạn.

Nào, bây giờ chúng ta hãy cùng đi vào chi tiết nhé!

Framework này cung cấp cho bạn sự dễ dàng sử dụng và khả năng kiểm soát hoàn toàn khi bạn muốn tạo ra một ứng dụng MVC tuyệt vời dựa trên web.

ASP.NET MVC là gì?

Học lập trình web trực tuyến bằng ASP.NET MVCASP.NET MVC là một framework tuyệt vời hỗ trợ pattern MVC cho ASP.NET. Nếu bạn muốn hiểu ASP.NET MVC làm việc như thế nào, bạn cần phải có một sự hiểu biết rõ ràng về mô hình MVC. MVC là cụm từ viết tắt của Model-View-Controller, nó phân chia pattern của ứng dụng thành 3 phần – model, controller và view.

  • Model giúp lưu trữ dữ liệu của ứng dụng và trạng thái của nó. Nó là một cơ sở dữ liệu hoặc cũng có thể chỉ là một tập tin XML.
  • View được coi là một giao diện người dùng được sử dụng bởi khách truy cập trang web của bạn để nhìn thấy các dữ liệu. Các trang ASPX thường được sử dụng để hiển thị view trong các ứng dụng ASP.NET MVC.
  • Controller chịu trách nhiệm xử lý các tương tác của người dùng với trang web. Nó được sử dụng để xác định loại view nào cần phải được hiển thị. Controller cũng được sử dụng cho mục đích giao tiếp với model.

Framework này là khá nhẹ và cung cấp khả năng kiểm thử, trong đó tích hợp với các tính năng hiện có của ASP.NET như xác thực (authentication) dựa trên membership và cả các master page.

Hiện nay Techmaster cũng đang có khóa học “Xây dựng mạng xã hội chia sẻ ảnh với ASP.NET MVC”. Giảng viên là anh Nguyễn Thanh Tùng, kiến trúc sư giải pháp .NET tại công ty MISA. Anh Tùng còn là chuyên gia công nghệ Microsoft (Microsoft Most Valuable Professional).

Tại sao bạn nên sử dụng nó?

Bạn nên sử dụng ASP.NET MVC framework cho việc tạo ra các ứng dụng web vì những lý do được liệt kê sau đây:

SoC

Một trong những lợi ích chính được đưa ra bởi ASP.NET MVC đó là Separation of Concern (phân tách mối bận tâm). Framework này cung cấp sự phân tách rất rõ gàng giữa model, logic nghiệp vụ, giao diện người dùng và dữ liệu.

Control

Khi bạn sử dụng framework ASP.NET MVC, bạn được cung cấp một bộ control rất mạnh mẽ trên JavaScript, HTML và CSS so với các control được cung cấp bởi một số hình thức truyền thống trên web.

Có khả năng kiểm thử

Học lập trình web trực tuyến bằng ASP.NET MVCFramework ASP.NET MVC hỗ trợ việc kiểm thử các ứng dụng web rất tốt. Vì vậy, nếu bạn muốn kiểm thử ứng dụng web của mình trước khi đưa chúng cho người sử dụng, bạn có thể chỉ cần sử dụng ASP.NET MVC.

Gọn nhẹ

Framework này không sử dụng View State, hỗ trợ bạn trong việc làm giảm băng thông của các request rất nhiều. Nhiều chuyên gia khuyên bạn nên sử dụng framework này nếu bạn quan tâm đến việc tạo ra các ứng dụng MVC tuyệt vời và hữu ích dựa trên web.

View và Size của Control

Các framework ASP.NET thường phải đối mặt với vấn đề của view state và kích thước của control trong HTML. Phần view lưu toàn bộ dữ liệu đã được rendered và do đó kích thước các tập tin HTML trở nên lớn hơn. Nếu bạn sử dụng một đường kết nối internet chậm, bạn sẽ quan sát thấy độ trễ trong việc tải các trang web và ứng dụng. Vấn đề này không còn tồn tại trong framework ASP.NET MVC cũng như nó không chứa một khái niệm về view ở trong đó. Bằng cách sử dụng ASP.NET MVC, bạn sẽ không còn phải đối mặt với các vấn đề về thời gian tải trang nữa.

Tích hợp

Khi bạn tích hợp MVC với jQuery, bạn có thể viết code của mình chạy trong các trình duyệt web. Điều này sẽ giúp giảm tải cho các web server của bạn.

Khả năng sử dụng

Bạn không cần phải có nhiều kiến ​​thức kỹ thuật khi sử dụng framework ASP.NET MVC. Tuy nhiên, bạn sẽ thích nó sau khi học được cách làm cho nó hoạt động. Framework này tốt hơn rất nhiều so với nhiều hình thức trang web khác. Lý do là nó hoạt động khá gần với các chiến lược làm việc của web và được coi là khá dễ dàng và thú vị để sử dụng.

API Services

Một lợi thế lớn khác đó là việc rendered bởi MVC giúp bổ sung thêm các API web services. Nếu bạn muốn thêm các service tới ứng dụng web của mình, thì bạn chắc chắn cần phải tìm hiểu làm thế nào những service này hoạt động.

43 thủ thuật hay và hữu ích với Javascript (Phần 1)

43 thủ thuật hay và hữu ích với Javascript (Phần 1)

Javascript là một trong những ngôn ngữ phổ biến nhất trong thế giới lập trình, ngôn ngữ không thể thiếu trong lập trình web thậm chí với JS chúng ta có thể code server hay cả mobile. Với Javascript chúng ta có thể tạo từ một alert đơn giản trên trình duyệt cho đến việc dùng nó điều khiển một con robot(sử dụng Nodebot & Nodruino).

Nếu các bạn đã từng gặp những hoàn cảnh trớ trêu khi code JS thì đừng nản chí, bởi vì nó là một mớ hỗn độn mà (facepalm).

Và hãy thông cảm cho JS bởi nó đã được sinh ra trong một hoàn cảnh trớ trêu như thế này:

Trong phạm vi bài viết này, Mình sẽ chia sẻ một bộ các thủ thuật về Javascript và các mẫu ví dụ mà ai trong chúng ta khi đụng đến Javascript đều nên biết và áp dụng một lần.

Lưu ý rằng các đoạn code ví dụ trong bài viết này đã được thử nghiệm trong phiên bản Google Chrome 30 trở lên, sử dụng Javascript V8 engine(V8 3.20.17.15)

1. Đừng quên từ khóa var khi khởi tạo biến lần đầu tiên

Bởi nếu không khai báo kèm từ khóa var thì việc gán giá trị cho biến đó sẽ tạo ra một biến global.

2. Sử dụng === thay vì dùng ==

Toán tử == (hoặc !=) sẽ tự động gán kiểu nếu cần. Trong khi đó, toán tử === (hoặc !==) sẽ không tự động thực hiện bất kỳ chuyển đổi nào. Nó thực hiện so sánh bởi cả giá trị và kiểu của dữ liệu. Cùng xem ví dụ sau:

3. undefined, null, 0, false, NaN, ”(chuỗi rỗng) tất cả đều là falsy values

Trong Javascript chúng ta có thể phân biệt 2 kiểu giá trị đó là falsy value và truthy value, falsy value là các giá trị khi ép kiểu về boolean sẽ trả về false, còn truthy thì ngược lại. Cách đơn giản để ép kiểu về boolean là dùng !!, nếu value đó là falsy thì trả về false, còn truthy thì ngược lại.

4. Sử dụng dấu ; để kết thúc câu lệnh

Sử dụng dấu ; cuối mỗi dòng lệnh là một điều cần làm, bạn sẽ không bị cảnh báo gì khi bạn không dùng nó, tuy vậy thì nó sẽ được thêm bởi các trình soạn thảo nếu bạn cài thêm tiện ích cho Javascript. Nếu muốn tìm hiểu thêm vì sao, bạn có thể tham khảo tại link sau: http://davidwalsh.name/javascript-semicolons

5. Khởi tạo constructor cho đối tượng

6. Cẩn thận mỗi khi sử dụng typeofinstanceof và constructor

  • typeof: là một toán tử Javascript được sử dụng để trả về một chuỗi là tên kiểu nguyên thủy của một biến, đừng quên là typeof(null) sẽ trả về đối tượng, và đối với phần lớn các kiểu đối tượng khác (Array, Date, …) cũng sẽ trả về là “object”.
  • constructor: là thuộc tính của prototype bên trong, nó cũng có thể bị ghi đè.
  • instanceof: là một toán tử Javascript khác, nó kiểm tra tất cả prototypes, trả về true nếu hàm tạo nó được tìm thấy và trả về false nếu không tìm được.

Cùng xem ví dụ sau:

7. Tạo một Self-calling Function (Một hàm gọi chính nó).

Hàm này cũng được gọi là Self-Invoked Anonymous Function hay Immediately Invoked Function Expression (IIFE). Nó là một hàm thực hiện tự động khi bạn tạo nó:

8. Lấy giá trị ngẫu nhiên từ một mảng

9. Lấy một số ngẫu nhiên từ một dải số cho trước

10. Tạo một mảng bởi các số từ 0 đến max

11. Tạo một bộ ngẫu nhiên các ký tự chữ và số

12. Trộn một mảng các số

Có thể bạn chưa biết hàm sort trong JS có thể sắp xếp theo 2 chiều – ASC hay DESC.

    • ASC:
    • DESC:

    Còn trường hợp bạn muốn random thì lựa chọn đơn giản đó là dùng hàm Math.random()(hàm trả về random một số trong khoảng 0->1) và trừ đi 0.5 để có thể trả về số âm hay dương, vì thế mảng được sort cũng sẽ random. Có một lựa chọn thay thế tốt hơn là triển khai sắp xếp ngẫu nhiên theo mã(ví dụ: mã Fish-Yates), hơn là dùng hàm sắp xếp gốc bởi Javascript. Bạn có thể xem thêm thảo luận ở đây hoặc bài viết này.

13. Chèn một mảng vào mảng khác

14. Chuyển đổi một tham số thành một mảng

Ví dụ:

15. Xác định một tham số truyền vào là một số?

16. Xác định một đối số truyền vào là một mảng

Lưu ý rằng nếu hàm toString() đã bị override, chúng ta không thể trả về đúng kết quả nếu dùng hàm này.

Hoặc dùng:

Bạn cũng có thể dùng instanceof nếu bạn không làm việc với nhiều ngữ cảnh. Truy nhiên nếu bạn làm việc với nhiều ngữ cảnh khác nhau, bạn sẽ nhận được kết quả sai. Cùng xem ví dụ sau:

17. Lấy các giá trị nhỏ nhất hay lớn nhất trong một mảng các số

18. Làm rỗng một mảng

19. Đừng sử dụng delete để xóa một thành phần khỏi mảng

Hãy sử dụng splice thay vì delete để xóa một item khỏi mảng. Sử dụng delete sẽ thay thế item bằng undefined/empty thay vì xóa nó khỏi mảng. Thay vì dùng:

Hãy dùng:

Hàm delete nên được dùng để xóa một thuộc tính của một đối tượng.

20. Cắt bớt mảng sử dụng length

Cũng như ví dụ trước, làm rỗng mảng, chúng ta cũng có thể dùng length để xén bớt một mảng.

Trường hợp bạn sử dụng length với giá trị lớn hơn độ dài mảng này thì các item undefined sẽ được thêm vào. Độ dài của mảng trong Javascript không phải là một thuộc tính chỉ đọc.

Google ra mắt website mới dành riêng cho web developer

Google ra mắt website mới dành riêng cho web developer

Google hiện đang cung cấp cho các nhà phát triển web một nơi để tìm hiểu, tạo và giải quyết các vấn đề trên web thông qua web.dev. Công ty đã công bố trang web tại Hội nghị thượng đỉnh dành cho nhà phát triển Chrome tại San Francisco vào đầu tuần này.

Web.dev cung cấp hướng dẫn và phân tích cho các nhà phát triển để kiểm tra trang web và ứng dụng của họ hoặc bắt đầu tìm hiểu cách họ có thể cải thiện chúng. Một số lĩnh vực học tập bao gồm thời gian tải nhanh, khả năng phục hồi mạng, bảo mật, khả năng phát hiện bug và khả năng truy cập.

Web.dev được tạo ra dựa trên một ý tưởng rằng nếu chúng ta làm cho những trải nghiệm chất lượng cao dễ xây dựng, nó sẽ cho phép tương tác có ý nghĩa hơn trên web — cho cả người dùng và nhà phát triển. Nói một cách đơn giản, nhóm phát triển nhận ra cách duy nhất để trang web trở nên tốt hơn là nếu chúng ta có thể giúp mọi người xây dựng thành công chúng” – Google nói.

Để cải thiện trang web và ứng dụng, web.dev sử dụng Google’s Lighthouse để chẩn đoán, hiểu cách thức và nơi nên bắt đầu để cải thiện. Nó bao gồm audit cho hiệu suất, khả năng truy cập và progressive web app, công ty giải thích.

Theo Google, trải nghiệm web nên thỏa mãn:

  • Dễ tiếp cận được người dùng
  • Giữ chân người dùng bằng sự đáng tin cậy
  • Thu hút người dùng bằng trải nghiệm nhanh và mượt mà
  • Chuyển đổi khán giả thành người dùng trung thành với các khả năng có ý nghĩa.

“Nếu bạn muốn tìm hiểu cách xây dựng web hoặc là để cải thiện và phát triển tốt hơn thì bạn đã đến đúng nơi. Chỉ với một kiến thức cơ bản về HTML / CSS / JS là tất cả những gì bạn cần để bắt đầu sử dụng các công cụ và hướng dẫn trên web.dev” – Google nhấn mạnh.

9 điều lập trình viên nào cũng nên nhớ khi làm việc với các headhunter và nhà tuyển dụng

9 điều lập trình viên nào cũng nên nhớ khi làm việc với các headhunter và nhà tuyển dụng

Có một quan niệm sai lầm phổ biến về làm việc với headhunter, nhà tuyển dụng và các công ty chuyên về tuyển dụng: trong khi các nhà tuyển dụng CNTT có thể là những người giúp kết nối các lập trình viên tài năng với những công ty phù hợp, họ vẫn chỉ là làm việc cho những công ty đó chứ không phải là cho bạn, người đang tìm kiếm việc làm.

Đầu tiên, hãy tránh xa các công ty tuyển dụng có tính phí xin việc, bởi vì những nhà tuyển dụng đã được trả một tỷ lệ phần trăm hoa hồng khi giới thiệu ứng cử viên sáng giá thành công. Ngoài ra, các headhunter thường đảm nhiệm vai trò tư vấn với một mức hoa hồng nhất định, do đó có thể nói những agency tuyển dụng đều đã có thu được lợi nhuận miễn họ có thể kết nối thành công nhân lực thích hợp cho các công ty thuê họ.

Dưới đây là 9 mẹo sẽ giúp bạn có thể làm việc dễ dàng hơn với những nhà tuyển dụng

Hãy biết chọn lọc, nhưng luôn sẵn sàng với cơ hội mới

Hãy cẩn thận và chọn lọc nhà tuyển dụng phù hợp, và lịch sự từ chối làm việc với những nhà tuyển dụng không đáng tin cậy hoặc không phù hợp với trường hợp của bạn.

Trước khi bạn đồng ý làm việc với một công ty hay một nhà tuyển dụng cá nhân, hãy phỏng vấn họ và cân nhắc những vấn đề như họ có uy tín không?

Một trong những cách tốt nhất để tìm một nhà tuyển dụng uy tín, là thông qua mạng lưới người quen biết.

Hãy hỏi bạn bè, các thành viên trong gia đình, ngay cả những đồng nghiệp mà bạn đã làm việc cùng. Mọi người sẽ nói về những trải nghiệm tồi tệ của họ trước tiên, vì vậy bạn sẽ dễ dàng biết được rõ hơn về những nơi tuyển dụng đấy

Luôn sẵn sàng nhận các cuộc gọi

Đôi khi các nhà tuyển dụng sẽ là những người chủ động và bạn nên luôn sẵn sàng nhận các cuộc gọi đó, Shravan Goli, giám đốc sản phẩm Coursera và cựu chủ tịch của Dice.com cho biết.

Đối với ứng cử viên, luôn luôn trả lời những cuộc gọi đầu tiên là một việc rất có lợi. Trong trường hợp nếu nhà tuyển dụng vẫn bám đuổi dù đã có bị từ chối hoặc gửi một công việc không phù hợp với niềm đam mê và sở thích bạn thì cứ việc chặn liên lạc với họ.

Hãy trung thực

Hãy chắc chắn rằng bạn trung thực với nhà tuyển dụng về mục tiêu công việc, kinh nghiệm làm việc, mức lương mong muốn, sở thích và các chi tiết khác, Myers nói.

“Với các công ty tuyển dụng, họ được thúc đẩy không chỉ để tìm cho bạn một vị trí phù hợp, mà còn cho bạn tiền lương cao hơn – vì họ nhận hoa hồng dựa trên số tiền đó. Với các chuyên gia tuyển dụng cho công ty mình, họ có động lực khác để chấp nhận một mức lương cao hơn cho bạn, bằng cách giao những công việc tương xứng với mức lương”

Không bao giờ trả tiền cho bất cứ khoản phí nào

Không bao giờ trả bất kỳ loại “phí đăng ký” hoặc bất kỳ khoản tiền nào khác cho bất kỳ thứ gì trong toàn bộ quá trình tuyển dụng! Tất cả các khoản phí của công ty tìm kiếm phải được trả bởi phía thuê họ.

Đặt câu hỏi phù hợp

Khi phỏng vấn, hãy đảm bảo rằng công việc chính xác là những gì mà nhà tuyển dụng mô tả. Bạn không muốn bị bỡ ngỡ vào những tuần làm việc mới với trách nhiệm và nghĩa vụ mà bạn chưa chuẩn bị, Myers nói.

Bạn nên đặt câu hỏi không chỉ về vai trò, lợi ích, đặc quyền và mức lương mà còn đào sâu hơn một chút để hiểu đầy đủ bối cảnh xung quanh và các thông tin nổi bật khác. Một số câu hỏi bạn nên hỏi bao gồm:

  • Tại sao lại công ty lại chọn bạn: Joseph Roualdes, người đứng đầu truyền thông của OpenGov, nói: “Tìm hiểu lý do tại sao một nhà tuyển dụng chọn liên lạc với bạn có thể giúp ta hiểu rõ hơn về cơ hội của bản thân trong việc ứng tuyển vào vai trò đó. “câu hỏi sẽ cung cấp cho bạn cái nhìn sâu sắc hơn về lý do tại sao họ nghĩ bạn phù hợp với công ty ”, anh nói.
  • Thông tin của bạn đã được tìm thấy ở đâu: Câu trả lời cho câu hỏi này sẽ cung cấp thông tin chi tiết về cách hiệu quả trong đăng tải công việc của bạn. Họ có tìm thấy bạn qua LinkedIn không? hay qua người quen?
  • Đã có bao nhiêu người ứng tuyển vị trí này? Goli nói: “Điều quan trọng là phải hiểu mối quan hệ giữa nhà tuyển dụng và công ty đang tuyển vị trí đó”, các chuyên gia công nghệ nên luôn hỏi liệu nhà tuyển dụng có làm việc thay mặt cho công ty không và liệu họ có từng tuyển thành công ai vào vị trí tương tự chưa? Nếu đã từng làm việc với nhau, nhà tuyển dụng sẽ có được thông tin tốt hơn về văn hóa và quá trình phỏng vấn của công ty đó “, Goli nói.
  • Tại sao công ty tuyển dụng vị trí này? Biết lý do tại sao công ty đang kiếm một người nào đó có thể giúp bạn tận dụng tốt lý lịch của mình và giúp trực tiếp chuẩn bị cho cuộc phỏng vấn được chu đáo hơn. Nó cũng có thể cho bạn biết nhiều thông tin có giá trị về công ty, phong cách quản lý và triển vọng cho sự phát triển nghề nghiệp. Đây có phải là vị trí mới không? Điều gì đã xảy ra với người cũ? Những cơ hội thăng tiến nếu tôi thành công trong vai trò này là gì? Những câu hỏi này sẽ giúp bạn xây dựng một chiến lược tốt hơn để có thể thành công trong việc ứng tuyển vào vị trí đó.

Ngoài ra, bạn nên yêu cầu bất kỳ hoặc tất cả những điều sau đây trước khi bạn đồng ý cho phép một nhà tuyển dụng giới thiệu bạn với bất kì công ty nào:

  • Cho tôi biết về các công ty và vị trí mà anh/chị sẽ đề xuất với tôi. Cơ hội hấp dẫn ở đây là gì?
  • Làm thế nào anh/chị lại có kết nối với công ty này?
  • Thời gian tuyển dụng là bao lâu?
  • Những gì anh/chị có thể cho tôi biết về team và người quản lý tôi sẽ làm việc cùng?
  • Tôi có thể mong đợi điều gì trong quá trình phỏng vấn?

Yêu cầu sự tôn trọng và giao tiếp rõ ràng

Hãy nhớ rằng bạn là nguồn thu nhập của nhà tuyển dụng, ngay cả khi bạn đòi hỏi phải lịch sự và tôn trọng HR cũng như đưa ra câu trả lời trung thực và nhanh chóng. Hãy kiên trì nhưng cũng nhớ rằng, bạn không phải là khách hàng duy nhất của nhà tuyển dụng, Myers nói.

Một quan niệm sai lầm phổ biến là, khi các nhà tuyển dụng nhận được yêu cầu tìm kiếm ứng viên họ mới xem xét các hồ sơ ứng viên đã có trong hệ thống của mình. Điều này làm nhiều người không nhận ra được tầm quan trọng của việc giữ liên lạc thường xuyên.

“Họ không quan tâm đến bạn trừ khi họ có offer job phù hợp với trình độ của bạn ngay tại thời điểm đó. Nếu bạn may mắn và gọi điện thoại hoặc e-mail vào đúng thời điểm, nhà tuyển dụng sẽ rất vui khi được nghe từ bạn bởi vì bạn đã cho họ cơ hội tuyệt vời để kiếm hoa hồng. Nếu không, đừng coi đó là vấn đề cá nhân khi nhà tuyển dụng trở nên lạnh nhạt với bạn. khách hàng của tôi thường gọi các nhà tuyển dụng và công ty tìm kiếm của họ cứ hai tuần một lần để duy trì liên lạc, “, anh nói.

Bắt tay với nhiều nhà tuyển dụng khác nhau

Không ký bất kỳ hợp đồng hoặc thực hiện bất kỳ thỏa thuận nào bắt buộc bạn làm việc chỉ với với một nhà tuyển dụng duy nhất, vì điều đó sẽ làm giảm cơ hội tìm kiếm công việc tốt của bạn.

Đôi khi tôi nghe nói về các công ty và nhà tuyển dụng yêu cầu người tìm việc ký một thỏa thuận độc quyền. Điều đó là không thể chấp nhận được. Nhiều lần, những bản hợp đồng ấy sẽ nói, ‘Nếu bạn bỏ công việc đó trong một khoảng thời gian nhất định, bạn sẽ phải trả tiền bồi thường cho chúng tôi. Bạn sẽ không muốn chịu trách nhiệm về điều đó đâu!”, anh nói.

Duy trì quyền kiểm soát

Bạn nên đảm nhận vai trò giám sát tương tự với các nhà tuyển dụng. Hãy đảm bảo hồ sơ của bạn được gửi bởi nhà tuyển dụng tiềm năng nào vì thông thường các công ty sẽ loại những ứng cử viên có hồ sơ nhận được từ nhiều nguồn khác nhau để tránh bị vướng vào cuộc chiến giữa các nhà tuyển dụng, Michael Spiro, giám đốc tuyển dụng khu vực của Experis Finance, viết trong một bài đăng trên blog.

Song song đó, hãy yêu cầu hồ sơ của bạn và các thông tin khác không được chuyển tiếp đến bất kỳ nhà tuyển dụng nào mà không có sự chấp thuận trước của bạn, Myers nói – “Trong khi nó có vẻ như không phải là một vấn đề lớn, các hồ sơ từ cùng một ứng cử viên thông qua nhiều nguồn khác nhau có thể giảm đi khả năng của bạn để được tuyển vào trong công ty đó”

Ngoài ra, bạn muốn chắc chắn rằng nhà tuyển dụng không chỉnh sửa hồ sơ của bạn hoặc bất kỳ tài liệu nào khác mà không có sự cho phép. Một lần nữa, đây là chìa khóa để duy trì sự kiểm soát và trách nhiệm cho con đường nghề nghiệp của riêng bạn. Nếu bạn cảm thấy hồ sơ của mình có thể đã bị thay đổi, bạn nên xem xét tìm kiếm một headhunter khác.

Một điều khác mà bạn không muốn dựa vào nhà tuyển dụng là thương lượng lương. Bạn phải tự mình tiến hành các cuộc đàm phán, hoặc ít nhất là tích cực tham gia vào quá trình đàm phán.

Mở rộng mạng lưới tìm kiếm công việc của bạn

Trong khi các nhà tuyển dụng có thể đóng một vai trò có giá trị trong bất kỳ quá trình tìm kiếm việc làm nào, Myers khuyên chỉ tập trung một phần nhỏ năng lượng tìm kiếm việc làm của bạn ở đây.

“Người duy nhất sẽ giúp bạn kiếm việc làm là chính bạn. Người tuyển dụng chỉ là một công cụ trong kho vũ khí để tìm việc. Khoảng 95% thời gian và nỗ lực tìm kiếm của bạn nên đến từ các mối quan hệ quen biết và 5% còn lại đến từ các hành động khác, trong đó có sự trợ giúp từ các nhà tuyển dụng. Tôi không thể nhấn mạnh đủ tầm quan trọng của điều này: đừng bao giờ chỉ dựa vào các nhà tuyển dụng để tìm công việc”, Myers nói.

Google sẽ sớm cho phép các nhà phát triển bắt buộc người dùng cập nhật ứng dụng

Google sẽ sớm cho phép các nhà phát triển bắt buộc người dùng cập nhật ứng dụng

Một số tính năng mới cập nhật của bộ công cụ Android App Bundle cho phép người dùng vừa cập nhật ứng dụng mà vẫn có thể sử dụng ứng dụng

Ngoài ra những nhà phát triển giờ đây còn có thể bắt buộc người dùng cập nhật ứng dụng thông qua tin nhắn.

Đối với tính năng mới, bộ công cụ mới cho phép ứng dụng cập nhật chạy nền bên dưới ngay cả khi nó đang được sử dụng. Theo chia sẻ từ Google mục đích chính của việc làm này là nhằm giúp cho người dùng có được trải nghiệm liên tục, không bị gián đoạn bởi thời gian chờ đợi cập nhật

Trong khi đó, về phía những nhà phát triển ứng dụng cũng có thể đảm bảo rằng người dùng của họ luôn cập nhật những phiên bản mới nhất, và được cập nhật một cách tự động

Google từ trước đến nay bị chỉ trích khá nhiều về việc thúc đẩy người dùng cập nhật ứng dụng, mặc dù vẫn có tính năng ” cập nhật ứng dụng khi sử dụng” nhưng có vẻ như điều này là chưa đủ. Android luôn bị đánh giá là thiếu an toàn và là khởi nguồn của hầu hết những vấn đề về bảo mật, phần mềm độc hại và một trong những nguyên nhân chính là do những ứng dụng trên CH Play lỗi thời và kém an toàn.

Google đã cố gắng giải quyết vấn đề này bằng cách cho phép người dùng cập nhật các ứng dụng sẵn có trên mấy trực tiếp từ CH Play. Các tính năng mới sẽ được triển khai thử nghiệm cho một số nhà phát triển đối tác. Sau đó nó sẽ mở rộng phạm vi ra trước khi được triển khai trên toàn hệ thống.

Các sai lầm thường mắc phải khi Debug

Các sai lầm thường mắc phải khi Debug

hắc hẳn tất cả chúng ta đều không còn lạ lẫm gì với các khái niệm Bug và Debug nữa rồi. Tuy nhiên tôi vẫn sẽ nhắc lại về hai khái niệm quen thuộc này:

Bug trong tiếng anh là bọ, bọ ở đây ám chỉ những lỗi trong chương trình, hệ thống làm cho chương trình, hệ thống đó không hoạt động được hoặc hoạt động khác với kì vọng đã đề ra. Bug tiềm ẩn ở mọi nơi ,chúng ta khó mà có thể lường trước được tất cả các tình huống mà chỉ có thể cố gắng để giảm thiểu tối đa số lượng của nó tuỳ thuộc vào công nghệ và khả năng của chúng ta vào thời điểm phát triển và bảo trì chương trình, hệ thống.

Debug chính là quá trình tìm kiếm ra bug và nguyên nhân gây ra bug, từ đó có thể đưa ra hướng giải quyết vấn đề bug gây ra.

Nguồn hình ảnh: Google

Lập trình viên là những người có “tiềm năng” tạo ra bug nhất và cũng chính là những người debug hiệu quả nhất, Bug và Debug sẽ theo chúng ta xuyên suốt quá trình phát triển và bảo trì ứng dụng.

Trong bài viết này tôi sẽ dựa vào kinh nghiệm của bản thân và kiến thức tìm hiểu được trên mạng để kể ra cho mọi người một số lỗi lập trình viên chúng ta thường gặp phải khi debug. Từ đây chúng ta có thể rút kinh nghiệm để biết mình thiếu gì và cần gì để phát triển kĩ năng debug-một kĩ năng cần có của một developer.

Log Messages không thành công

Chắc hẳn chúng ta đã có ít nhất một lần rơi vào hoàn cảnh gặp phải một bug làm crash app nhưng khi check log message lại không đủ dữ kiện để xác định nguồn gốc của bug hoặc thậm chí là không thấy gì được log ra.

Một cách giải quyết cho trường hợp này là chúng ta có thể đặt log và thử lại nhiều lần. Mục đích là để sau mỗi lần log và thử có thể dần khoang vùng được phần phát sinh bug.

Đọc hoặc hiểu sai Error Messages

Hồi mới học code tôi rất hay gặp những message khó hiểu và lúng túng trong việc giải quyết các lỗi này -> gây mất thời gian. Được một thời gian nhờ sự chỉ dạy tận tình của các đồng nghiệp cùng kinh nghiệm gặp rất nhiều bug, t đã có thể tự đọc và tìm hiểu về ý nghĩa của các error messages, tuy nhiên đôi khi vẫn hiểu chưa đúng hoặc chưa đầy đủ. Giải pháp là ngay khi đối mặt với error messages thì nên tìm hiểu (hỏi đồng nghiệp hoặc đơn giản là google-sama) dựa vào ngữ cảnh hiện tại để biết rõ ý nghĩa mà message muốn thể hiện.

Đặt sai vị trí Log

Việc đặt sai vị trí Log ngoài việc bởi chưa hiểu rõ flow của chương trình mà còn có thể do sơ xuất. Hậu quả là chúng ta bị đi chệch hướng khi tiến hành Debug -> mất thời gian và vì quay lại cũng có thể bị mất track, không biết mình sai ở đâu. Để chắc chắn rằng mình không Log sai ,chúng ta có thể thử lại nhiều lần trước khi chuyển sang bước debug tiếp theo.

Viết ra rất nhiều các dòng code mới mà không xen kẽ với debug

Chúng ta đều hiểu số lượng code càng lớn thì việc bới ra được bug trong đấy càng gặp nhiều khó khăn và tốn thời gian. Thay vào đó chúng ta có thể tự đặt các milestones nhỏ, sau khi có một số lượng code vừa đủ thì có thể build và chạy thử để nắm bắt được bug ngay khi nó xuất hiện.

Không thử sử dụng phương pháp loại trừ

Đôi khi sẽ có những lúc mà chúng ta gặp khó khăn trong việc tìm ra cội nguồn của lỗi trong một trường hợp đặc biệt. Thay vì cứ đào bới code và liên tục check log, ta có thể xem xét vấn đề của lỗi trong các trường hợp kém đặc biệt hơn, từ đó loại trừ dần các khả năng có thể xảy ra và dần dần tiến tới được nguồn gốc của lỗi.

Copy và Paste từ trên mạng

Đây là lỗi thường gặp ở các lập trình viên mới vào nghề. Những phần code trên mạng thường khác chung chung và thậm chí không hoàn toàn phù hợp với ngữ cảnh cụ thể của chương trình, hệ thống. Nếu muốn áp dụng phần code này vào chương trình thì cần xem xét và sửa đổi cho phù hợp đồng thời cũng phải lường trước phạm vi ảnh hưởng của nó.

Quên mất cách debug một lỗi đã gặp phải rồi

Có một kĩ thuật debug mà tôi tìm hiểu được đó là sau khi đã debug thành công một lỗi, chúng ta có thể tái hiện và debug lại lỗi ngay sau đó để nắm bắt hiểu rõ hơn vấn đề -> “Practice make perfect”

Quên mất mình đã code cái gì

Có thể bạn có hứng code và viết ra mấy trăm dòng code liên tục trong một block ,hôm sau chạy thử thì lại bị dính lỗi crash app và sau đó bạn phải ngồi track lại từng dòng code với vô số logic mà không nhớ rõ mình đã code cái gì ở đây. Thay vì vậy chúng ta có thể tách riêng từng phần của block đó thành những block nhỏ hơn, “chia để trị” không chỉ làm code của bạn dễ nhìn dễ đọc hơn mà còn làm đơn giản việc sửa đổi hệ thống.

Trên đây chỉ là một số lỗi chúng ta thường gặp phải mà tôi đúc kết + tham khảo được. Hi vọng là từ những lỗi này chúng ta có thể nâng cao được trình độ debug của mình. Cảm ơn các bạn đã đọc bài viết này của tôi.

Giới thiệu ngắn gọn về Design Patterns trong phát triển Web

Giới thiệu ngắn gọn về Design Patterns trong phát triển Web

Lời giới thiệu

Đây là bài viết về các Design Pattern dựa trên những gì tôi đã học được chủ yếu từ Gang of Four. Song song đó, tôi sẽ cố gắng tập trung vào full stack web với các ví dụ cực kỳ thiết thực. Hầu hết trong số đó sẽ là về JavaScript hoặc Python, vì các ngôn ngữ khác đã có nhiều tài liệu về chủ đề này.

Design Pattern là gì?

Giống như mọi người trong số các bạn tin rằng mình là người nấu ăn giỏi nhất trên thế giới nhờ vào sự đặc biệt, độc nhất vô nhị của mình, tất cả chúng ta đều có thể đồng ý rằng có một cuốn sách công thức tốt có thể biến hầu hết mọi người thành đầu bếp giỏi.

Lý do là khá đơn giản: tất cả những công thức nấu ăn đã được tạo ra bởi một người – sau khi đã trải qua rất nhiều sai lầm trên đường đi và đưa ra các sửa đổi thiết thực. Sử dụng những kiến ​​thức này sẽ giúp bạn tránh được nhiều cạm bẫy thường gặp và những quyết định sai lầm. Điều này cực kỳ hữu ích trong những trường hợp mà tưởng chừng như vô hại.

Đồng thời công thức nấu ăn có thể được sử dụng như một khuôn mẫu để dựa trên chứ không phải là một bộ quy tắc phải tuân theo một cách thô kệch.

Tương tự trong phát triển phần mềm cũng hoạt động theo cùng một cách. Điểm khác biệt chính là các dự án phát triển phần mềm thường kéo dài hơn cũng như kết quả của nó sẽ khá là ảnh hưởng đến bạn và cả những người xung quanh.

Nói cách khác, Design Pattern có thể xem như là một điểm khởi đầu tốt để giải quyết các vấn đề thường gặp.

Điểm bất cập của nó

Design pattern thật sự rất hữu ích nhưng nó cũng thay thế cả quá trình ra quyết định của bạn.

Đây là lập luận phổ biến nhất được đưa ra để chống lại việc sử dụng phương pháp tiếp cận bằng design pattern trong phát triển phần mềm: các giải pháp được cung cấp từ chúng có xu hướng không được hiệu quả vì nó có thể chỉ dành cho các vấn đề rất cụ thể.

Với tôi đây là một điểm yếu mà bạn phải luôn luôn cải thiện hoặc ít nhất là thích nghi với một trong những giải pháp cho nhu cầu của mình. Các Design Pattern đã vượt qua thử thách của thời gian sẽ cung cấp cho bạn lợi thế của việc biết trước hầu hết các điểm yếu của nó, vì vậy bạn sẽ có một sự hiểu biết tốt hơn về cách giải quyết các vấn đề có thể sảy ra.

Một lập luận phổ biến khác chống lại design pattern là việc một số kiểu (hay còn gọi là Gang of Four) đã trở nên một chút “lỗi thời” so với những gì chúng ta có ngày nay.

Vâng, tôi không thể không đồng ý với điều này, nhưng “Kiến thức là sức mạnh” và tôi thà có một công cụ tôi không sử dụng hơn là thiếu một công cụ mình cần.

Điều này, tuy nhiên, dẫn đến những lời chỉ trích khác mà tôi muốn nói tới ở đây. Một trong những rủi ro của design pattern là bạn có thể sẽ sử dụng chúng ngay cả trong các tình huống không cần đến.

Tôi đoán đây là một vấn đề khá phổ biến với bất kỳ thứ gì được số đông sử dụng. Thật không may, kinh nghiệm vẫn sẽ là cách tốt nhất để giúp bạn vượt qua trường hợp này.

Phân loại các design pattern

ngày nay, chúng ta vẫn phân loại các design pattern thành 3 nhóm sau:

Creational Patterns

  • Abstract Factory
  • Builder
  • Factory
  • Prototype
  • Singleton

Structural Patterns

  • Adapter
  • Bridge
  • Composite
  • Decorator
  • Facade
  • Flyweight
  • Proxy

Behavioral Patterns

  • Chain of responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Observer
  • State
  • Strategy
  • Template method
  • Visitor

Đây là một bài giới thiệu chung ngắn gọn và hy vọng không nhàm chán về các design pattern. Trong các bài viết tiếp theo tôi sẽ đi sâu vào những ví dụ thực tế và ít phức tạp hơn.