Home Blog Page 103

Những cái bẫy cần tránh đối với tester mới

Những cái bẫy cần tránh đối với tester mới

Bài viết được sự cho phép của vntesters.com

Bạn là tester mới? Bạn hoang mang không biết khởi đầu từ đâu? Càng tìm hiểu bạn càng cảm thấy bị mù mờ? Bạn lạc lõng và hoài nghi về năng lực cũng như con đường phát triển của một kỹ sư kiểm thử? Bạn cũng đã tự hỏi mình đã làm gì sai? Bạn không sai nhưng có thể bạn đã bị rơi vào một trong những cái bẫy mà những bạn tester mới hay mắc phải. Những cái bẫy mà theo mình các bạn cần phải thoát ra càng sớm càng tốt để có thể bước những bước vững chắc trên con đường phát triển nghề kiểm thử.

Tìm hiểu các công việc tester cần có

Lạc trong định nghĩa, khái niệm

Những cái bẫy cần tránh đối với tester mới

Image credit: httpsbrownehr.com

Các định nghĩa, khái niệm trong kiểm thử gần như là những thứ các bạn mới vào nghề thường tiếp cận. Những câu hỏi như “Trường hợp kiểm thử là gì”, “các kỹ thuật kiểm thử”, “sự khác nhau giữa test plan và test strategy”, “sự khác nhau giữa bug, defect, error, fault”, “các loại kiểm thử” hay những câu hỏi tương tự được hỏi ở rất nhiều diễn đàn.

Vấn đề ở đây không hẳn là các bạn không tìm được câu trả lời mà chính xác hơn là các bạn bị lạc trong các định nghĩa và khái niệm. Bạn đọc ở chỗ này định nghĩa như vậy, thầy giáo dạy bạn định nghĩa khác. Bạn thấy trên Wiki định nghĩa khác và đọc ở một blog thì thấy định nghĩa khác. Sao lại như vậy? Vậy định nghĩa nào là đúng nhất. Các bạn nghĩ rằng ở đâu đó sẽ có một định nghĩa đúng nhất và bạn đi tìm nó với ý nghĩ bạn có thể tự tin tuyên bố mình đã biết về nó. Theo kinh nghiệm thực tế thì đây là nỗ lực gần như vô vọng vì bạn sẽ sớm lạc trong định nghĩa vì hầu như ai cũng có thể định nghĩa được và đều nghe “lọt tai”.

Từ Wiki đến các định nghĩa trong các giáo trình chứng chỉ quốc tế. Từ những nhân vật có tiếng trong giới kiểm thử trên thế giới đến những kỹ sư kiểm thử trên các diễn đàn đều có những định nghĩa của riêng mình. Đó là lí do của những tranh luận (có khi tranh cãi) triền miên ai đúng ai sai khi bàn về định nghĩa. Thực tế làm việc cho thấy hầu như chẳng ai đặt nặng vấn đề định nghĩa mà là cách bạn làm như thế nào.

Các bạn hãy tìm hiểu về định nghĩa nhưng đừng đặt nặng nó và tránh xa những tranh luận liên quan đến định nghĩa vì chẳng mang lại lợi ích gì.

Bằng cấp, chứng chỉ về kiểm thử

Những cái bẫy cần tránh đối với tester mới

Image credit: alphacertified.com.au

Có một thực tế là bằng cấp và chứng chỉ (quốc tế) đang ngày càng phổ biến và có một sức hấp dẫn khá lớn đối với cộng đồng kỹ sư kiểm thử nói chung và các bạn mới vào nghề nói riêng. Nhu cầu để học và lấy chứng chỉ cũng khác nhau.

Đa phần là để tìm được việc vì thấy nhiều công ty yêu cầu chứng chỉ ABC nào đó, để thăng tiến vì có chứng chỉ sẽ giúp thăng tiến nhanh hơn và vì nó là kiến thức chuẩn quốc tế. Chương trình thì có từ cấp tốc với chứng chỉ nội bộ cho đến luyện thi chứng chỉ quốc tế với những lời chào mời kiểu như học xong làm việc được ngay, được giới thiệu việc làm và kiến thức chuẩn quốc tế. Nhiều bạn sau khi có chứng chỉ xong cứ nghĩ rằng mình “oách” và cho rằng kiến thức mình là chuẩn quốc tế để rồi sau này khi làm việc và tiếp cận với những kiến thức khác, những cách tiếp cận khác bạn vẫn cứ bảo thủ cho rằng mọi người phải giống bạn vì bạn là chuẩn. Mình không bài trừ chứng chỉ. Mình chỉ muốn chỉ ra rằng các khóa học hay chứng chỉ không phải cây đũa thần trong nghề kiểm thử. Sẽ không có vấn đề gì nếu mọi người nhận thức được rằng nó chỉ là một dạng giấy thông hành, là một góc nhìn khác về kiểm thử và không có chuẩn mực gì ở đây cả.

Như đã nói ở trên, mình không bài trừ việc bạn tham gia các khóa học hay chứng chỉ nhưng để tránh việc “tiền mất tật mang”, các bạn cần tỉnh táo để nhận ra nhu cầu thực sự của mình cũng như những giá trị mà các khóa học hay chứng chỉ đem lại.

Đi tìm “low-fruit” trong kiểm thử

Những cái bẫy cần tránh đối với tester mới

Image credit: idnplace.com

Có một câu chuyện vui là gần đây mình có tham gia vào một nhóm thảo luận qua Skype và có một bạn đặt câu hỏi làm thế nào để viết test case cho một cái ứng dụng của bạn đó. Rất nhiều bạn trong nhóm đã đưa ra những test case cụ thể ngay lập tức, tuy nhiên cũng có một số bạn (trong đó có mình) đặt câu hỏi ngược lại để hỏi thêm về yêu cầu, về tính năng của app.

Kết quả là mình và một số bạn bị cho là có vấn đề về đọc hiểu kiểu như “một câu hỏi đơn giản vậy mà không hiểu” kèm theo nhiều lời lẽ bức xúc khác. Hay như thỉnh thoảng mình cũng gặp những câu hỏi đại loại như “Mình không biết viết test case/test plan/test design như thế nào, bạn nào có template mẫu thì cho mình xin với”. Mình không hiểu template mẫu thì sẽ giúp được gì cho bạn đó trong ngữ cảnh đó vì mỗi dự án mỗi khác nhau.

Hai ví dụ mình nêu trên mình gọi vui là hội chứng “low-fruit” trong kiểm thử. Về mặt hình tượng thì low-fruit chỉ những trái cây ở dưới thấp. Bạn chỉ cần với tay là hái được liền. Ý nghĩa của nó ám chỉ những hành động với mục đích mong đợi hiệu quả ngay lập tức mà chẳng cần bỏ chút nỗ lực nào. Kiểm thử không phải là toán học với kết quả chỉ đúng hoặc sai. Kiểm thử cần bạn suy luận, đặt câu hỏi, tìm hiểu, trao đổi thông tin và phụ thuộc nhiều vào yếu tố ngữ cảnh.

Việc các bạn đặt câu hỏi và tìm hiểu hoàn toàn được khuyến khích nhưng đừng đi tìm những giá trị tức thời vì nó có thể là cái bẫy có thể khiến bạn không thể tiến xa trong công việc kiểm thử.

  Automation skills cho tester già mà lười
  Con đường trở thành Business Analyst của Tester

Thái độ tiêu cực đối với kiểm thử

Nhiều bạn tester mới có cảm giác luôn bị Dev, quản lí dự án xem thường, chèn ép. Hay bạn đọc đâu đó kiểm thử là công việc thứ cấp, chẳng ai muốn làm. Kết quả là bạn dần mất niềm tin và trở nên bi quan vào công việc kiểm thử. Có 2 nguyên nhân có thể khiến bạn rơi vào tình trạng trên:

1)      Tiên trách kỉ

Nhiều bạn kỹ sư kiểm thử tự làm mình mất giá cũng như bị xem thường trong mắt người khác. Có nhiều cách khác nhau nhưng về cơ bản bạn sẽ tự làm mình mất giá bằng các cách sau:

  1. Bạn không trân trọng những giá trị cũng những đồng nghiệp khác, cụ thể hơn là Dev. Nhiều bạn tester nói chuyện với nhau toàn là nói xấu Dev sau lưng khi bạn đó tìm thấy lỗi trong sản phẩm. Khi bạn có thái độ đó, chẳng trách sao bạn bị nhận được thái độ tương tự khi bạn bị sót bug. Hãy trân trọng những giá trị của đồng nghiệp, mỗi người đều có vai trò và đóng góp khác nhau trong dự án. Hỗ trợ nhau để cũng làm một sản phẩm chất lượng tốt nên là mục tiêu chung mà mọi người hướng đến.
  2. Không tự hào về những việc mình làm. Nếu bạn không tự hào về kiểm thử, về những việc mình làm, những giá trị mình mang lại cho dự án thì bạn đừng mong đợi mọi người nhìn thấy điều đó. Hãy cho thấy bạn quí trọng và tự hào về công việc kiểm thử. Đây là công việc của bạn và bạn có quyền tự hào về nó.

2)      Hậu trách nhân

Có một thực tế là nhiều Dev, nhà quản lí cũng không hiểu về công việc kiểm thử dẫn đến những thái độ, suy nghĩ tiêu cực về kỹ sư kiểm thử. Có 2 thái độ mình quan sát thấy được từ họ:

  1. Tester chẳng mang lại giá trị gì. Nhiều bạn Dev có kinh nghiệm và cho rằng mình có thể viết được những đoạn code chạy ào ào và sẽ không bao giờ có lỗi. Cần gì tester? Tester có cảm giác mình như người thừa trong dự án và chẳng có tiếng nói nào.
  2. Có tester rồi, lo gì. Nhiều bạn Dev lại dựa vào đội test kiểu như là chốt chặn cuối cùng và duy nhất cho sản phẩm. Cho nên họ chẳng quan tâm đến chất lượng của đoạn code hay kiểu như đổ lỗi cho tester khi bị sót bug. Kết quả là tester luôn sống trong những lời chỉ trích đổ lỗi từ đồng nghiệp.

Nếu bạn rơi vào những dự án mà giá trị của tester không được nhìn nhận một cách đúng mực thì một là bạn phải “khai sáng” cho họ về kiểm thử, hai là bạn nên chuyển dự án/công ty tùy vào bạn thấy việc nào dễ làm hơn. Mắc kẹt ở giữa sẽ chỉ làm bạn mai một niềm tin vào bản thân và kiểm thử.

Lời kết

Bạn mới vào nghề và có rất nhiều thứ bạn cần phải biết và học. Bạn cảm thấy lạc trong mớ định nghĩa, khái niệm về kiểm thử, bạn có thể nhận thức sai về chứng chỉ kiểm thử, bạn đi tìm những giá trị “low-fruit” hoặc nhiều khi bạn cũng nghi ngờ về công việc kiểm thử mình đang làm.

Tuy nhiên, bạn không cần phải hoảng loạn vì bạn hoàn toàn có thể tránh được những bẫy đó. Bạn mới không có nghĩa là bạn dở hay thiếu năng lực. Bạn mới đơn giản chỉ vì bạn mới mà thôi. Bước những bước chậm rãi và tận hưởng niềm vui tự hào trong công việc. Bạn sẽ thành một kỹ sư kiểm thử tuyệt vời trong tương lai.

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

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

Xem thêm Tuyển dụng tester hcm, đà nẵng, hà nội hấp dẫn trên TopDev

Integration Test là gì

Integration Test là gì

Bài viết được sự cho phép của tác giả Lê Chí Dũng

Trong hôm nay mình cũng tìm hiểu lại một khái niệm là Integration Test còn gọi là test tích hợp từ các Unit Test

  04 Điều Cần Chú Ý Cho Người Mới Làm Automation Test
  A/B testing và những tiêu chí chính để đánh giá sự thành công của ASO

1. Khái niệm

  • Integration Testing là công việc kiểm thử tích hợp 1 nhóm các module riêng lẻ với nhau cùng với các Unit Test riêng lẻ trong từng module.
  • Một dự án phần mềm điển hình bao gồm nhiều module phần mềm, được code bởi nhiều người khác nhau. Tích hợp thử nghiệm tập trung vào kiểm tra truyền dữ liệu giữa các module.

2. Tại sao Integration Testing là cần thiết

Mặc dù mỗi module đều được unit test nhưng các lỗi vẫn còn tồn tại với các lý do khác nhau:

  • Một Module nói chung được thiết kế bởi một lập trình viên có hiểu biết và logic lập trình có thể khác với các lập trình viên khác. Kiểm thử tích hợp là cần thiết để đảm bảo tính hợp nhất của phần mềm.
  • Tại thời điểm phát triển module vẫn có thể có thay đổi trong spec của khách hàng, những thay đổi này có thể không được kiểm tra ở giai đoạn unit test trước đó.
  • Giao diện và cơ sở dữ liệu của các module có thể chưa hoàn chỉnh khi được ghép lại
  • Khi tích hợp hệ thống các module có thể không tương thích với cấu hình chugn của hệ thống
  • Thiếu các xử lý ngoại lệ có thể xảy ra

3. Intergration test case

Kiểm thử tích hợp khác với các trường hợp kiểm tra khác, nó tập trung chủ yếu vào các giao diện & lưu lượng dữ liệu / thông tin giữa các module. Ưu tiên được trao cho các liên kết tích hợp chứ không phải là các đơn vị chức năng.

Ví dụ 1 trường hợp mẫu Integration Test cho các kịch bản sau đây: Ứng dụng có 3 module gồm: ‘Login Page, ‘mail box’ và ‘delete mail’.

Trong đó tập trung chủ yếu vào phần Mail Box: Kiểm tra tích hợp của nó để delete mail.

Integration Test là gì

4. Cách tiếp cận / phương pháp / chiến lược của intergration test

Phương pháp tiếp cận Big Bang

Tại đây tất cả các thành phần được tích hợp cùng 1 lúc, sau đó sẽ tiến hành kiểm thử.

Ưu điểm:

Thuận tiện với các dự án nhỏ

Nhược điểm:

Khó khăn trogn việc phát hiện bug.

Có thể bỏ qua các bug giao diện nhỏ trong quá trình tìm bug

Mât thời gian dành cho tích hợp hệ thống nên làm giảm thời gian dành cho test.

Vì các module được kiểm thử cùng 1 lúc nên các module có nguy cơ bị cô lập trong quá trình kiểm thử

Phương pháp tiếp cận Incremental

Trong phương pháp này, kiểm tra được thực hiện bằng cách kết hợp hai hay nhiều module có liên quan một cách hợp lý. Sau đó, các phân hệ liên quan khác được thêm vào và kiểm tra sự hoạt động đúng đắn. Quá trình tiếp tục cho đến khi tất cả các module được tham gia và thử nghiệm thành công.

Quá trình này được thực hiện bằng cách sử dụng các chương trình giả gọi là Stub and Driver. Sơ khai và trình điều khiển không thực hiện toàn bộ logic lập trình các module nhưng chỉ mô phỏng giao tiếp dữ liệu với các module được gọi.

Stub: Được gọi bởi Module dưới Test.

Driver: Gọi Module để được kiểm tra.

Phương pháp Incremental được thực hiện bởi hai phương pháp khác nhau:

Bottom Up Top Down Bottom up Integration

Chiến lược Bottom Up

Mỗi module ở mức thấp hơn được thử nghiệm với các module cao hơn cho đến khi tất cả các module đều được kiểm tra. Nó được sử dụng cho Driver testing. Thể hiện bằng biểu đồ dưới đây:

Integration Test là gì

Ưu điểm:

  • Thu gọn phạm vi bug dễ dàng hơn
  • Không mất thời gian chờ tất cả các module được tích hợp

Nhược điểm:

  • Module quan trọng của hệ thống có thể dễ bị lỗi
  • Không giữ được nguyên mẫu đầu tiên của hệ thống

Top down Integration:

Trong tiếp cận từ trên xuống , kiểm tra được thực hiện từ trên xuống dưới theo dõi dòng kiểm soát của hệ thống phần mềm. Nó được sử dụng cho Stub testing

Integration Test là gì

Ưu điểm:

  • Thu gọn phạm vi bug dễ dàng hơn
  • Khả năng để có được một nguyên mẫu ban đầu.
  • Modules quan trọng đang được thử nghiệm trên mức ưu tiên; lỗi trong thiết kế lớn có thể được tìm thấy và cố định đầu tiên.

Nhược điểm:

  • Cần nhiều Stub.
  • Module ở mức độ thấp hơn sẽ được kiểm tra không đầy đủ.

5. Các bước thực hiện test tích hợp

  • Chuẩn bị Integration Test Plan
  • Thiết kế các kịch bản thử nghiệm, trường hợp, và Script (Test Scenarios, Cases, and Scripts ).
  • Thực hiện kiểm tra theo test case đã viết
  • Theo dõi & tái kiểm tra các lỗi ở trên.
  • Bước 3 và 4 được lặp đi lặp lại cho đến khi hoàn thành Integration là thành công.

6. Kết luận

Intergration test là 1 bước rất quan trọng trong suốt quá trình kiểm thử, phần mềm có được đảm bảo chất lượng hay không?hệ thống có vận hành theo đúng mong muốn người dùng hay không sẽ được kiểm tra qua bước này.

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

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

Xem thêm Tuyển tester làm việc online hấp dẫn trên TopDev

Khởi sắc sự nghiệp IT cùng các cơ hội tại công ty IT Hàn Quốc

KICC

Tiếp nối thành công của dự án hợp tác 2020, KICC HCMC cùng TopDev tiếp tục mang đến chương trình hợp tác năm 2021 với thông điệp “Make Your IT Career Outstanding – Khởi sắc sự nghiệp IT của bạn”. Theo đó là những hoạt động phối hợp với mục đích kết nối các việc làm ngành CNTT tại các doanh nghiệp IT Hàn Quốc với đối tượng Lập Trình Viên Việt Nam.

Mối quan hệ đầu tư chiến lược Hàn Quốc – Việt Nam

Hiện tại, Việt Nam là đối tác hợp tác kinh tế hàng đầu trong Chính sách hướng Nam mới và là một trong những đối tác kinh tế lớn nhất của Hàn Quốc tại khu vực ASEAN. Không chỉ có các doanh nghiệp lớn, tập đoàn đang từng bước xây dựng các chuỗi cung ứng chiến lược tại Việt Nam mà các doanh nghiệp nhỏ và vừa của Hàn Quốc cũng tăng cường xúc tiến đầu tư tại Việt Nam. 

Nỗ lực kết nối Công nghệ – Đổi mới sáng tạo

“Công nghệ” & “Đổi mới sáng tạo” là những lĩnh vực có tiềm năng vô tận, và là chìa khóa để mọi quốc gia bước vào kỷ nguyên phát triển nhanh và bền vững. Đặc biệt, đây cũng là lĩnh vực để hai quốc gia có thể phát huy tiềm năng, khai thác hiệu quả tiềm lực và nguồn lực từ mỗi bên để phát triển những giá trị rõ rệt cho nền kinh tế – thương mại cũng như thị trường lao động – xã hội thêm tính cạnh tranh.

Khởi sắc sự nghiệp IT tại các công ty Công nghệ Hàn Quốc ngay tại Việt Nam

Trong khuôn khổ hợp tác lần này, KICC HCMC cùng TopDev hứa hẹn mang đến những giá trị cho tổ chức/ doanh nghiệp:

  • Hỗ trợ, hợp tác và thúc đẩy tuyển dụng việc làm công nghệ thông tin cho các công ty IT Hàn Quốc
  • Quảng bá hình ảnh, sản phẩm/ dịch vụ và thương hiệu tuyển dụng của các công ty IT Hàn Quốc đến với Cộng đồng Lập trình viên Việt Nam
  • Hỗ trợ khách hàng tiềm năng của nhau cùng tiếp cận thị trường địa phương, tìm kiếm đối tác, khách hàng tiềm năng và mở rộng kinh doanh tại Việt Nam.

Cơ hội đầu tư tài năng Công nghệ vào các công ty IT Hàn Quốc dành cho các Lập trình viên: 

  • Trực tiếp tham gia các dự án công nghệ sử dụng nền tảng hiện đại, tiên tiến từ nước ngoài;
  • Được tạo điều kiện để phát triển bằng các công tác giáo dục và bồi dưỡng nâng cao năng lực chuyên môn và kỹ năng thường xuyên
  • Môi trường làm việc quốc tế, chuyên nghiệp tại các doanh nghiệp hàng đầu của Hàn Quốc;
  • Mức lương xứng đáng, phù hợp với kinh nghiệm và vị trí;
  • Tiếp cận nền tảng công nghệ hiện đại, sản phẩm lớn và nhiều dự án mang đầy tính sáng tạo, thử thách
  • Cơ hội nâng cao trình độ qua các chuyến công tác onsite tại Hàn Quốc, training sử dụng các công nghệ….

Đại diện từ TopDev cũng cho biết  “Những năm gần đây, Việt Nam là mảnh đất màu mỡ với các doanh nghiệp Hàn Quốc, chúng ta đã chứng kiến rất nhiều phi vụ đầu tư từ quốc gia này vào thị trường Việt. Qua lần hợp tác này, nguồn nhân lực trẻ từ Việt Nam cũng sẽ có nhiều sự lựa chọn hơn. Với sự hỗ trợ từ TopDev, phía các doanh nghiệp sẽ rút ngắn thời gian tìm nhân tài, mà song song với đó, lập trình viên Việt Nam cũng sẽ được trải nghiệm cơ hội nghề nghiệp tại doanh nghiệp công nghệ Hàn Quốc.

Thông tin chi tiết về dự án vui lòng truy cập tại đây


Về KICC HCMC và NIPA:

Được thành lập vào ngày 23 tháng 5 năm 2019, KICC HCMC (KICC Hồ Chí Minh) là văn phòng thứ 6 trên toàn cầu và thứ 2 tại Việt Nam. KICC là văn phòng quốc tế trực thuộc Bộ Khoa học – Công nghệ Thông tin Hàn Quốc (MSIT) và Cơ quan Xúc tiến Công nghệ Thông tin – Truyền thông (NIPA) với mục đích giúp đỡ việc kinh doanh quốc tế của những công ty về Công nghệ Thông tin (CNTT) của Hàn Quốc. KICC có 06 văn phòng ở Thung lũng Silicon (Mỹ), Tokyo (Nhật), Bắc Kinh (Trung Quốc), Singapore, Hà Nội (Việt Nam) và Hồ Chí Minh (Việt Nam).

NIPA là tổ chức phi lợi nhuận từ Chính phủ Hàn Quốc và là thành viên của Bộ Khoa học – Công nghệ Thông tin Hàn Quốc, chịu trách nhiệm trong việc hỗ trợ các công ty và các chuyên gia CNTT. NIPA hiện dẫn đầu trong kiến thức về cơ sở hạ tầng kinh tế xã hội và phát triển kinh tế quốc gia bằng việc xúc tiến khả năng cạnh tranh của toàn ngành công nghiệp thông qua sự tiến bộ kỹ thuật CNTT và công nghiệp.

Thông tin liên hệ:

  • Hotline: 84 28 35208135 (Vietnamese) | 84 28 35208136 (Korean)
  • E-mail: HCMC@nipa.kr
  • Địa chỉ: 135 Hai Bà Trưng, Phường Bến Nghé, Quận 1, Thành phố Hồ Chí Minh

Về TopDev – nền tảng tuyển dụng IT

Với hơn 300.000 profile lập trình viên đồng thời sở hữu Cộng đồng Lập trình viên lớn nhất Việt Nam, TopDev hiện là một trong những nền tảng tuyển dụng chuyên về IT hàng đầu tại Việt Nam.  Ngoài ra, TopDev là một trong những đơn vị tiên phong ở lĩnh vực IT tại Việt Nam, giúp xây dựng và phát triển thương hiệu tuyển dụng – Employer Brand cho hàng trăm công ty công nghệ trong và ngoài nước. Đây còn là đơn vị chuyên khảo sát, phân tích và phát hành các báo cáo quý, năm về thị trường và nhân lực IT tại Việt Nam. (Báo cáo thị trường IT tại đây).

Swift – ngôn ngữ lập trình hoàn hảo

Swift – ngôn ngữ lập trình hoàn hảo

Bài viết được sự cho phép của smartjob.vn

Trong sự kiện quan trọng WWDC năm 2014, một ngôn ngữ lập trình hoàn toàn mới được ra đời, đó là Swift.

Swift hứa hẹn sẽ là ngôn ngữ lập trình góp phần quan trong trong trải nghiệm sử dụng sản phẩm di động.

Sau khi ra mắt iPhone vào năm 2007, Steve Jobs đã khiến giới công nghệ công nhận rằng đây không phải là sự kiện để Apple ra mắt các sản phẩm phần cứng, mà là sự kiện để các lập trình viên có thể học hỏi về những “vũ khí” mới của họ trong cuộc chinh phục cộng đồng người dùng iOS và Mac OX S.

Ngôn ngữ lập trình Swift là một trong những sản phẩm lớn nhất mà Apple muốn giới thiệu đến các fan nhà Táo. Nó có thể giúp quá trình phát triển ứng dụng trở nên nhanh và dễ dàng hơn nhằm tạo ra những sản phẩm di động tốt nhất đến người sử dụng. Hay nói cách khác Swift được thiết kế để đáp ứng tất cả nhu cầu của lập trình viên.

Hãy cùng chúng tôi tìm hiểu để thấy được tầm quan trọng và ý nghĩa sâu xa mà ngôn ngữ lập trình mới như Swift có thể mang lại.

Xem thêm Việc làm swift hấp dẫn trên TopDev

1. Swift là gì?

Swift là một ngôn ngữ lập trình hướng đối tượng. Sự ra đời của Swift có thể giúp các lập trình viên dễ dàng tiếp cận bởi nó sử dụng mã nguồn mở.

2. Swift là ngôn ngữ lập trình bậc cao

Với các ngôn ngữ lập trình bậc thấp, bạn sẽ phải mô tả tất cả các hành vi độc lập cần thiết để thực hiện toàn bộ tác vụ. Thậm chí, nếu bạn quên không ra lệnh bằng tay thì máy vi tính có thể gặp lỗi khi thực hiện tác vụ. Thay vì thực hiện từng dòng lệnh từ người lập trình viên, máy tính sẽ nhận một câu lệnh “bậc cao” từ coder và tự thực hiện dòng lệnh này. Swift là ngôn ngữ có cấu trúc bậc cao có nhiều đặc điểm nổi trội của các ngôn ngữ lập trình tân tiến hiện nay: đơn giản, chính xác, không thừa lexic hay operator.

Khi C và Objective-C đã có tuổi đời cao thì Apple cần phải thay đổi ngôn ngữ mới nhanh hơn, vẫn là nền tảng xây dựng nên iOS và Mac OS thì Swift là ngôn ngữ lập trình hoàn hảo nhất.

  Các ưu nhược điểm của Swift so với Objective C
  Giới thiệu Scene và Segue trong Swift

3. Swift- ngôn ngữ lập trình hoàn hảo

Không ngoa khi nói rằng Swift là ngôn ngữ hoàn hảo. Nó mang tất cả các điểm mạnh của cả 2 loại ngôn ngữ script và compile. Và các tính năng dưới đây sẽ chứng minh điều đó:
Các dòng code của Swift ngắn và dễ đọc.. giúp đẩy nhanh quá trình phát triển ứng dụng và tăng hiệu quả cho quá trình bảo trì trong tương lai.

Hoạt động tương tự Objective C đơn giản với các lớp đối tượng được đơn giản hóa, và các dòng mã được sắp xếp hợp lý.

Swift tạo ra các ứng dụng có sức ép phần cứng thấp hơn Objective-C, người dùng sẽ được trải nghiệm game ấn tượng hơn trên các thiết bị iOS.

Lập trình viên Swift có thể dành nhiều thời gian để thực hiện các bài test ở mức độ tích hợp cao hơn thay vì tập trung kiểm tra, thử nghiệm các tính năng nhỏ lẻ.

X Code runtime được thực hiện trong thời gian thực cho Swift ngoài sự đơn giản và phương thức sắp xếp hợp lý hơn cho việc sáng tạo ứng dụng.

4. Nhược điểm của Swift

Ngoài các ưu điểm trên thì Swift có hạn chế lớn nhất là tuổi đời non nớt, các nhà phát triển ứng dụng di động cần phải có thời gian dài để làm chủ được ngôn ngữ này. Cộng đồng coder cần thời gian trải nghiệm và đánh giá.

Tuy nhiên đây không hẳn là một mối lo ngại thực sự cho Apple và người dùng. Trải qua giai đoạn này, Swift sẽ khiến các ứng dụng iOS và Mac lên một tầm cao mới.

Hi vọng bài viết này sẽ giúp các bạn hiểu thêm về ngôn ngữ lập trình mới trước khi quyết định có nên tìm hiểu sâu hay không. Chúc các bạn thành công và đừng quên truy cập website của chúng tôi thường xuyên để biết thêm thông tin nhé.

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

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

Xem thêm Việc làm swift hấp dẫn trên TopDev

Search cha con trong wordpress tưởng không dễ mà dễ không tưởng

Search cha con trong wordpress tưởng không dễ mà dễ không tưởng

Bài viết được sự cho phép của tác giả Võ Quang Huy

Tiếp tục seri về search trong wordpress hôm nay mình sẽ hướng dẫn cho bạn một chức năng mới và được rất nhiều người yêu cầu đó là bộ search cha con trong wordpress.

Phong cách search này rất được nhiều người sử dụng để làm trong các site bất động sản ví dụ như chọn Tỉnh thành phố => show các huyện của tỉnh đó. Hay là chọn huyện => show ra xã phường…

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

Chuẩn bị dữ liệu và phân tích bài toán

Mình sẽ sử dụng taxonomy để tạo ra danh mục gồm các quận huyện ở Đà Nẵng, trong quận huyện đó sẽ có các xã và phường nhé. Để biết cách tạo taxonomy các bạn xem vài viết: Tạo taxonomy trong wordpress

Search cha con trong wordpress tưởng không dễ mà dễ không tưởng

Mình sẽ tạo là một taxomony là khu-vuc có các Quận/Huyện trong Quận/Huyện thì là có các Xã/Phường. Chúng ta sẽ làm chức năng chọ quận huyện sẽ show ra xã phường 😀

Tạo form search cha con trong wordpress

Đây sẽ là pha xử lý đi vào lòng người kk

Tạo form search html

Các bạn dáng đoạn code html sau vào khu vực mà các bạn muốn hiện thì form search nha. Đây chỉ là code html thô chưa được css nên show ra ngoài giao diện sẽ không đẹp các bạn có thể css thêm để nó oke hơn nhé.

Form seach của chúng ta sẽ gôm các thành phần sau:

  • Dòng 2 => chỉ search với post type là bất động sản (value=”bat-dong-san”)
  • Dòng 3 đến 18 sử dụng thẻ select để cho phép chọn các Quận/Huyện (Chú ý trường‘parent’ => 0 đây là điều kiện để xác định chỉ lấy các quận huyện)
  • Dòng 17 đến dòng 21 dùng select để chọn Xã/Phường khi user chọn Quận huyện thì trường này mới show giá trị của xã phường tương ứng nên ngay lúc đầu sẽ không có giá trị ở trường này
  • Còn lại là thẻ input để nhập từ khóa và button thực hiển tìm kiếm

Làm chức năng chọn thằng cha show thằng con 😀

Các bạn copy đoạn code sau vào vị trí ngang hàng với form search trên nha. Nhớ là ngang hàng với  form search trên nha. Nhớ nha… Nhớ đó…

Sau khi chèn đoạn code này vào các bạn view-source sẽ thấy đoạn html được sinh ra như sau:

Search cha con trong wordpress

Mình đã copy nó vào sublime text để các bạn dễ nhìn.

Chúng ta sẽ được 1 list các thẻ div có class là datakhuvuc, phía trong nó chứa dữ liệu option value đây là các giá trị con của từng thằng cha.  Việc tiếp theo là viết 1 đoạn jquery khi chọn thằng cha trong form thì dựa vào slug mà lấy dữ liệu tương ứng ở đây để đẩy vào thẻ select Xã/Phường.

Chúng ta có đoạn jquery xử lý vấn đề này như sau: Các bạn chèn đoạn js vào footer.php, trên thẻ body đóng nha (</body>)

Bạn nào đã khai báo jquery rồi thì bỏ dòng đầu tiên nha.

Bây giờ chúng ta đã có thể chọn thằng cha và hiển thị thằng con rồi đó, các bạn có thê ra ngoài giao diện và test thử nha.

Xử lý dữ liệu chức năng search cha con trong wordpress

Sau khi hoàn thành phần front end chúng ta bắt tày vào xử lý phần backend nhé. Nếu các bạn có xem các bài trước thì biết trong wordpress file để hiển thị kết quả search là file search.php vì vậy chúng ta sẽ xử lý backend ở đây

Sau khi submit form thì website sẽ có đường dẫn như sau: domain.com/?post_type=bat-dong-san&quan-huyen=hai-chau&xa-phuong=binh-hien&s=nhà+đẹp

Chúng ta sử dụng phương thức GET để lấy dữ liệu và xử lý trong vòng lặp get post nha. Cắc bạn chèn đoạn code sau vào file search.php

Giải thích code: 

  • Dòng 2 lấy post type nếu không truyền thì mặc định là post
  • Dòng 3 lấy quận huyện nếu không truyền sẽ lấy giá trị rỗng tương đương với seach tất cả các quận huyện
  • Dòng 4 lấy khu vực đây là dữ liệu truyền vào để get bất động sản chính xác. Nếu không chọn xã phường thì mặc định nó sẽ lấy quận huyện, còn nếu chọn xã phương thì nó sẽ bỏ qua quận huyện và cho kết quả search chỉ ở xã phường đó thôi
  • Dòng 5 lấy từ khóa cần tìm kiếm
  • Từ dòng 13 đến hết là đoạn xử lý query get post

Tổng kết:

Như vậy hôm nay mình đã hướng dẫn cho các bạn cách để search cha con trong wordpress. Đây là một chức năng khá cần thiết cho các site bất động sản…

Nhưng nếu các bạn để ý sẽ thấy làm cách này chỉ thích hợp với nhưng dữ liệu vừa và nhỏ, những dữ liệu lớn và phần nhiều cấp thì dễ bị TOANG :)), vì thế mình sẽ cho ra một bài về chủ đề này nhưng sẽ dùng ajax trong wordpress để xử lý.

Nhớ like page và theo dõi blog huykira nhé. Ghé qua học wordpress nữa nha!

Chào cả nhà!

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

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

Xem thêm Tuyển dụng WordPress hấp dẫn trên TopDev

Các loại Design patterns

Các loại Design patterns

Bài viết được sự cho phép của tác giả Tino Phạm

Design patterns cung cấp các giải pháp cho những vấn đề thường gặp trong quá trình thiết kế phần mềm. Khi nói đến Design patterns nghĩa là chúng ta đang nói đến những thiết kế có thể tái sử dụng và tương tác của các đối tượng.

  Design pattern là gì? Tại sao nên sử dụng Design pattern?
  10 kênh Youtube học lập trình không thể bỏ qua dành cho Junior Web Developer / Designer

Các loại Design patterns

Có thể chia thành 4 nhóm patterns tùy  thuộc vào tính chất của vấn đề mà chúng muốn giải quyết

  1. Gang of Four Patterns
  2. Enterprise Patterns
  3. SOA and Messaging Patterns
  4. Model-View Patterns

Ưu điểm của Design Patterns

  1. Cung cấp các giải pháp cho các vấn đề phổ biến xảy ra trong thiết kế phần mềm.
  2. Cung cấp nền tảng chung cho các nhà phát triển. Có nghĩa là nhà phát triển có thể thực hiện những patterns này bằng bất kỳ ngôn ngữ nào.
  3. Cung cấp một thuật ngữ chuẩn và đặc trưng cho từng kịch bản cụ thể.

Bài viết gốc được đăng tải tại thangphampt.wordpress.com

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

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Golang toàn tập – Goroutines và Channels

Golang toàn tập – Goroutines và Channels

Bài viết được sự cho phép của tác giả Kiên Nguyễn

Được biết tới là một trong những ngôn ngữ hỗ trợ mạnh mẽ concurrency, Golang Goroutines và Channels thật ra có ý nghĩa như thế nào?. Có sự khác biệt nào giữa Golang Concurrency và Java Concurrency hay không?.

  Channel trong Golang là gì? So sánh Callback function và mutex lock với channel
  Golang là gì và tại sao bạn nên học Go?

Trước khi bắt đầu tìm hiểu sâu hơn, hãy cùng bắt đầu với hai khái niệm cơ bản nhất, Routines và Channels.

goroutines và channelsA hero – Goroutines with channel

Ngoài ra, golang cũng hỗ trợ functional programming. Có thể tìm hiểu qua về functional programming qua bài viết này.

Ok, bắt đầu ngay thôi!

1. Concurrency

Trước khi bắt đầu tìm hiểu Routines và Channels, hãy nắm bắt khái niệm về Concurrency (Tính toán đồng thời).

Making process on more than one task simultaneously is known as concurrency

Việc thực hiện nhiều hơn một task trên một process được biết tới là concurrency (đồng thời, cùng lúc)

Đã hiểu về Concurrency, tuy nhiên nhớ take note luôn là nó khác biệt hoàn toàn với Parallel. Thực hiện mọi việc đồng thời, nhưng có thể chỉ ở trên cùng một core, một process của CPU.

Parallel lại tận dụng đa lõi, thực hiện mọi việc đồng thời, nhưng trên nhiều tiến trình.

Sự khác biệt giữa concurrency và parallelNguồn ảnh / Source: ednsquare.com

2. Goroutines

Muốn một function có thể chạy đồng thời với function tất nhiên phải có khai báo. Không khai báo thì Go không thể biết được khi nào function đó được chạy Concurrency.

A goroutine is a function that is capable of running concurrently with other functions

Goroutine là function có thể chạy đồng thời với các function khác

Để khai báo một function sử dụng Routines, ta dùng từ khóa go.

// Function go f(0) được thực hiện đồng thời
package main
import "fmt"
func f(n int) { 
for i := 0; i < 10; i++ { 
fmt.Println(n, ":", i) 
} 
}
func main() { 
go f(0) 
var input string 
fmt.Scanln(&input) 
}

Đoạn code vừa viết phía trên có tới hai Goroutines. Cái đầu tiên tất nhiên là function main, tự bản thân nó đã là một Goroutines. Cái thứ hai sẽ được khởi tạo khi ta gọi function go f(0).

Ở các chương trình Java thông thường (hoặc Golang mà không có sử dụng từ khóa go). Dòng code số 11 sẽ được thực thi sau khi function f(0) hoàn tất. Nhưng với Routines, các dòng code từ dòng 11 trở đi vẫn được thực thi cùng lúc với function f (0)

// Chỉ với từ khóa go, đoạn code dưới đây tạo ra tới 10 Goroutines
func main() { 
for i := 0; i < 10; i++ { 
go f(i) 
} 
var input string 
fmt.Scanln(&input) 
}

Chốt hạ “The goroutines run simultaneously. – Goroutines chạy đồng thời”

3. Channels

Chỉ với từ khóa go, rõ ràng mà nói, tạo nhiều Goroutines không hề khó. Nhưng nếu các Goroutines muốn giao tiếp với nhau. Routines này chạy đồng bộ chờ kết quả routines khác?

Đấy, lúc đấy có ngay Channels.

Channels provide a way for two goroutines to communicate with each other and synchronize their execution

Channels cung cấp cách thức cho phép các goroutines giao tiếp với nhau và thực hiện đồng bộ hóa

Đối với channel, chiều gửi dữ liệu tuần theo chiều của mũi tên.

// Chỉ cần chú ý variable bên phải là bên gửi.
ch <- v // Gửi giá trị v tới channels ch
v := <-ch // Nhận giá trị từ channel ch, gán cho v.

Cũng giống như maps và slices, channels được khởi tạo ngay sao khi khai báo từ khóa chan.

ch := make(chan int)

Mặc định, việc gửi hay nhận ở goroutines này sẽ bị block cho tới khi goroutines khác thực hiện xong. Ví dụ dưới đây thực hiện tính toán đồng thời trên mảng s, cả hai routines sẽ thực hiện xong và cho kết quả cuối cùng.

package main

import "fmt"

func sum(s []int, c chan int) {
sum := 0
sum += s[0]
c <- sum // Gán tổng c cho sum
}

func main() {
s := []int{7, 2, 8, -9, 4, 0}

c := make(chan int)

// Mảng s ở routines này là [-9, 4, 0]
go sum(s[:len(s)/2], c)
// Mảng s ở routines này là [7, 2, 8, -9]
go sum(s[len(s)/2:], c)

x, y := <-c, <-c // Nhận giá trị từ c

fmt.Println(x, y, x+y)
}

Channels c sau khi chạy sẽ in ra kết quả là:

// Thực hiện tuần tự sum 1 cho tới sum 2
-9 7 -2

Program exited.

Xong, bài viết này cho thấy một cái nhìn tổng quan nhất về Concurrency trong Golang. Nếu có bất cứ câu hỏi hoặc phản hồi gì, vui lòng comment bên dưới bài viết.

4. Tham khảo

Cảm ơn vì đã đọc bài. Happy coding!

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

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

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Clean code – Tất cả từ một cái tên

Clean code – Tất cả từ một cái tên

Bài viết được sự cho phép của tác giả Kiên Nguyễn

Thông thường những bạn mới ra trường, thường những năm đầu code rầm rầm. Nếu được hướng dẫn bởi Senior thì còn được chỉ dạy về Clean code. Còn lại thì đa phần chưa quan tâm gì mấy tới clean code, hay tới design pattern, cứ code chạy là được.

Làm khoảng 1,2 năm thì bắt đầu có ý thức hơn, tìm hiểu về clean code để áp dụng. Nhưng đôi khi lại nghĩ clean code là cái gì đó phức tạp với các đoạn code dài loằng ngoằngthuật toán phức tạp.

  Viết code sạch (Clean code) được gì? Phần 1
  Clean Architecture: Đứng trên vai những gã khổng lồ

Thực tế không phải như vậy, clean ở đây đôi khi chỉ là cái cách đặt tên class, tên hàm, tên biến sao cho dễ hiểu. Hãy cùng Kieblog tìm hiểu Clean code từ những điều đơn giản nhất nha.

Clean code – Tất cả từ một cái tên
Luôn chú ý viết source sao cho người sau đọc dễ hiểu, không càm ràm. Đặc biệt là không chửi thề!

1. Clean code từ cái tên

Cùng xem một vài ví dụ dưới đây. Hãy tượng tượng bạn là leader và được giao review code. Các code nào sẽ được bạn đánh giá cao?. Cái code nào sẽ tiện để maintainance sau này?

// Khai báo biến tổng số ngày trong tháng
int d;
int totalDaysInMonth;
// Định nghĩa 2 biến start và end
class StartTimeEndTime {
private Date startmdhms;
private Date endmdhms;
}
và 
class StartTimeEndTime {
private Date startTimeStamp;
private Date endTimeStamp;
}

2. Don’t be cute – dễ thương làm gì

Nguyên tắc đặt tên cho bất cứ thứ gì khi lập trình tất nhiên là phải rõ nghĩ. Tuy nhiên, không phải rõ nghĩa nên viết thêm cho loằng ngoằng rắc rối cả ra.

Cuteness in code often appears in the form of colloquialisms or slang. For example, don’t use the name whack() to mean kill()Don’t tell little culture-dependent jokes like eatMyShorts() to mean abort().

Viết code cute sử dụng những từ như tiếng lóng hoặc không thông dụng gây ra hiểu lầm. Ví dụ, đừng sử dụng whack() để ám chỉ kill() process hay gì đó. Đừng sử dụng eatMyShorts() để ám chỉ abort()

Việc đặt tên tốt nhất theo quy chuẩn chung, để các lập trình viên khác có thể hiểu được. Môi trường làm việc bây giờ quốc tế hóa.

Source code commit lên git có thể cho nhiều người khác tham khảo nên chú ý phần Clean code.

// Định nghĩa 2 biến start và end
class StartTimeEndTime {
private Date startmdhms;
private Date endmdhms;
}
và 
class StartTimeEndTime {
private Date startTimeStamp;
private Date endTimeStamp;
}

Đừng sử dụng từ địa phương, cũng đừng sử dụng những từ ngữ không quá phổ thông.

3. Don’t pun – đừng chơi chữ

Chơi chữ ở đây không mang nặng tính chất như sử dụng nghĩa bóng, cũng không phải nói xiên xẹo, móc mỉa một số người.

Chơi chữ ở đây chỉ đơn giản được hiểu là:

Avoid using the same word for two purposes. Using the same term for two different ideas is essentially a pun.

Sử dụng cùng một từ cho hai mục đích khác nhau. Sử dụng cùng một thuật ngữ cho hai ý tưởng khác nhau thì gọi là chơi chữ.

Ví dụ dễ hiểu nhất với Pun – Chơi chữ là method add(). Giả sử ta viết method add để thêm một số phần tử vào array list đã có sẵn. Khi nào method này trở thành chơi chữ?

Cùng là method add nhưng lại insert một record mới vào database. Cùng method add nhưng lại dùng để thêm item vào một list (như thế không gọi là Clean code, vì sẽ khiến người đọc confuse)

// Insert thường dùng cho database
private void insert(RecordItem record) {
}

// Chú ý rõ nghĩa khi dùng, append dùng cho list, ...
private void append(String item) {
}

4. Class names và method names

Một số bạn bắt đầu quan tâm tới Clean code thường nghĩ về những đoạn code phức tạp, giải thuật phức tạp. Nhưng thực tế không phải vậy Clean code đôi khi chỉ đơn giản bắt nguồn từ một cái tên class, một tên biến.

Classes and objects should have noun or noun phrase names like Customer, WikiPage, Account, and AddressParser.

Classes và object nên là danh từ hoặc cụm danh từ. Ví dụ như Customer, WikiPage, Account và AddressParser

Clean code – Tất cả từ một cái tên
Đối với kĩ sư phần mềm, đôi khi nghĩ một cái tên mới là công việc chiếm nhiều thời gian nhất. Nguồn ảnh/ Source: Twitter

Một lưu ý khác là class name không bao giờ nên là động từ. Không ai viết class Flight, chỉ có interface Flightable, thay vào đó người ta viết class Bird.

Ngược lại với classes thì method lại nên là động từ hoặc cụm động từ.

Methods should have verb or verb phrase names like postPayment, deletePage, or save.

Method nên có động từ hoặc cụm động từ như postPayment, deletePage hoặc save.

Đối với các method thực hiện kiểm tra các điều kiện boolean, nên bắt đầu bằng is. Như ví dụ function isPosted dưới đây.

string name = employee.getName(); 
customer.setName("mike"); 
if (paycheck.isPosted())...

5. Tham khảo

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

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

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Top 10 ngôn ngữ lập trình giúp bạn kiếm bội tiền (Phần 1)

Top 10 ngôn ngữ lập trình giúp bạn kiếm bội tiền (Phần 1)

Bài viết được sự cho phép của smartjob.vn

Hiện nay, sự phát triển chóng mặt của công nghệ thông tin đã cho ra nhiều sản phẩm công nghệ khác nhau, từ những ứng dụng di động cho đến những website thương mại điện tử. Nhà đầu tư mạo hiểm  Marc Andreessen đã từng tuyên bố “Phần mềm đang nuốt dần thế giới”. Vậy ai sẽ là người viết ra các phần mềm?  Đó chính là các lập trình viên – những người luôn được các nhà tuyển dụng “trải thảm đỏ” săn đón. Ngôn ngữ lập trình có rất nhiều khiến bạn hoang mang nên học cái gì, bỏ cái gì? Dưới đây mình xin đưa ra một vài ngôn ngữ lập trình nổi trội hơn cả để giúp bạn dễ dàng định hướng trong việc học và làm về sau.

  10 lý do cho thấy tại sao bạn nên theo học ngôn ngữ lập trình Java
  4 ngôn ngữ phát triển game indie phổ biến

1. Python

Python – tên ngôn ngữ lập trình được đặt theo tên của nhóm hài kịch nổi tiếng, với cú pháp đơn giản và thanh lịch. Python luôn nằm trong top 10 ngôn ngữ lập trình phổ biến nhất ở tất cả các bảng xếp hạng lớn (TIOBE, RedMonk, PYPL), vậy tại sao Python được đánh giá cao như thế?

– Python là một trong những ngôn ngữ đáng tin cậy nhất hiện nay.

– Dễ dàng sử dụng vì có số lượng từ khóa ít, cấu trúc đơn gian và cú pháp được định nghĩa rõ ràng. Tất cả các điều này là Python thực sự trở thành một ngôn ngữ thân thiện với lập trình viên.

– Code của Python khá dễ đọc vì nó được định nghĩa khá rõ ràng và rành mạch.

Top 10 ngôn ngữ lập trình giúp bạn kiếm bội tiền (Phần 1)

Python là ngôn ngữ lập trình xây dựng các website nổi tiếng như YouTube, Google,…

– Python là một ngôn ngữ thông dịch. Trình thông dịch thực thi code theo từng dòng (và bạn không cần phải biên dịch ra file chạy), điều này giúp cho quá trình debug trở nên dễ dàng hơn và đây cũng là yếu tố khá quan trọng giúp Python thu hút được nhiều người học và trở nên khá phổ biến.

– Python có một thư viện chuẩn khá rộng lớn. Thư viện này dễ dàng tương thích và tích hợp với UNIX, Windows, và Macintosh.

Những website nổi tiếng được xây dựng bằng Python: YouTube, DropBox, Google, Yahoo Maps, Reddit, Bitly

Những công ty “trải thảm đỏ, đón nhân tài” Python: VNPT Software, Tập đoàn Zinna, Peacesoft group, Vega Corporation, Hanel Software,…

Tuyển dụng lập trình Python lương cao

2. Java

“Viết một lần, chạy mọi nơi” – câu khẩu hiệu nổi tiếng cộp mác ngôn ngữ lập trình Java đã cho thấy sự phổ biến của nó trong giới lập trình viên. Một số đặc điểm chính của Java “được lòng” lập trình viên.

– Tất cả các chương trình viết bằng Java đều chạy trong một máy ảo Java gọi và Java Virtual Machine (JVM)

– Độc lập nền: Nền tảng Java bao gồm 2 phần: JRE và API. Java code có thể chạy trên rất nhiều nền tảng như Windows, Linux, Sun Solaris, Mac/OS, …

– Lập trình hướng đối tượng giúp cho việc phát triển phần và bảo trì (năng cấp, sửa chữa) trở nên đơn giản theo một số luật nhất định.

– Công nghệ Java phát triển mạnh mẽ nhờ vào “đại gia Sun Microsystem” cung cấp nhiều công cụ, thư viện lập trình phong phú hỗ trợ cho việc phát triển nhiều loại hình ứng dụng khác nhau cụ thể như: J2SE (hỗ trợ phát triển những ứng dụng đơn, ứng dụng client-server), J2EE (hỗ trợ phát triển các ứng dụng thương mại), J2ME (hỗ trợ phát triển các ứng dụng trên các thiết bị di động, không dây,…).

Ứng dụng được xây dựng trên Java: Trò chơi, ứng dụng Android và ATM

Lập trình viên Java luôn được chào đón tại: VCCorp, FPT, VNPT, Công Ty Cổ Phần Công Nghệ Fuji, Công ty cổ phần truyền số liệu Việt Nam (DCV),…

3. PHP

Theo W3Techs, PHP được sử dụng trong 82% website trong thế giới Internet; đứng sau Java trong danh sách những ngôn ngữ lập trình phổ biến nhất, và nó đứng thứ 6 trên danh sách chỉ số cạnh tranh Tiobe. Dưới đây là lý do tại sao mà những người ủng hộ yêu mến PHP.

– Phổ biến vì nó được cài đặt trên một lượng lớn các máy chủ và dễ học vì có rất nhiều nguồn tài liệu trực tuyến.

– Đang tiếp tục phát triển: các tính năng hiện đại như closures và namespaces, cũng như hiệu suất cao và các framework mạnh mẽ. Trong phiên bản 7, PHP đã sử dụng Zend Engine hoàn toàn mới với tốc độ nhanh gấp hai lần,…

Top 10 ngôn ngữ lập trình giúp bạn kiếm bội tiền (Phần 1)

PHP đang là ngôn ngữ lập trình đứng thứ 6 trên danh sách chỉ số cạnh tranh Tiobe

Các website đang sử dụng PHP: Facebook, Twitter, Apple, Wikipedia, Blogs sites, Flickr

Lập trình viên Java luôn được chào đón tại: VCCorp, FPT, Công Ty TNHH Giải Pháp Brainos, Công Ty Cổ Phần Công Nghệ Fuji, Công ty cổ phần truyền số liệu Việt Nam (DCV),…

PHP jobs for Developer

4. Ruby

Trong danh sách những ngôn ngữ lập trình phổ biến nhất TIOBE tính đến hết tháng 1/2016 thì Ruby hiện đang là ngôn ngữ đứng thứ 10 trong bảng xếp hạng. Được phát triển bởi nhà khoa học máy tính người Nhật Bản -Yukihiro Matsumoto vào những năm 90s của thế kỷ trước, Ruby đã và đang trở thành một trong những ngôn ngữ lập trình tuổi đời còn ít nhưng lại được sử dụng rộng rãi. Nó cũng là một trong những ngôn ngữ tốt nhất để bắt đầu khi bạn mới học lập trình.

– Ruby là một trong những ngôn ngữ dễ học nhất

– Giống với Python, code của Ruby rất dễ đọc và viết mà không cần thiết phải học một số lượng lớn những dòng lệnh và những “từ điển” chuyên biệt khi mới bắt đầu.

– Ruby là một bước đệm để học Ruby on Rails – một framework để tạo ra các ứng dụng web.

Website dùng Ruby: Scribd, Yammer, Shopify, Github, Groupon

Những công ty có nhu cầu tuyển dụng lập trình viên Ruby, Ruby on rails: FPT Software, SoftTel, Tinhvan Group,…

5. Perl

Perl là là một ngôn ngữ lập trình được phát triển bởi một kỹ sư của NASA trong những năm cuối của thập niên 80. Đây là ngôn ngữ thông dụng trong lĩnh vực quản trị hệ thống và xử lí các trang Web do có các ưu điểm sau:

– Có các thao tác quản lí tập tin, xử lí thông tin thuận tiện

– Thao tác với chuỗi kí tự rất tốt

– Đã có một thư viện mã lệnh lớn do cộng đồng sử dụng Perl đóng góp (CPAN).

– Perl có cú pháp giống C và Shell, do đó những người đã có kinh nghiệm với C sẽ thấy Perl rất dễ học.

– Perl có thể chạy trên các môi trường khác nhau, như: Unix, Windows NT, Window 95/Window 98,..

Những công ty có nhu cầu tuyển dụng lập trình viên Perl: Fabrica Vietnam, Seta International, FPT,…

Để củng cố thêm niềm tin của các bạn về những ngôn ngữ trên, Smartjob xin đưa ra bảng mức lương trung bình của các lập trình (tính theo USD) được cập nhật vào ngày 27/4/2016.

Top 10 ngôn ngữ lập trình giúp bạn kiếm bội tiền (Phần 1)

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

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

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Top 8 xu hướng phát triển ứng dụng Web trong tương lai

Top 8 xu hướng phát triển ứng dụng Web trong tương lai

Bài viết được sự cho phép của tác giả Tino Phạm

Những chủ đề mình chia sẽ trong bài viết này không phải là những công nghệ mới. Chúng đã xuất hiện và được sử dụng từ trước đến giờ và đang có dấu hiệu tăng lên nhanh trong những năm gần đây.

Tuyển dụng web developer lương cao

  10 Java Web Framework tốt nhất
  10 trang web hàng đầu để tìm hiểu WordPress

1. Progressive Web Apps (PWA)

Xuất hiện vào năm 2015 và theo Wikipedia thì: Progressive Web Apps là những ứng dụng web mà nó được tải lên và làm việc như những trang web hoặc websites thông thường, nhưng nó còn cung cấp cho người dùng các tính năng như: working offline (làm việc khi không có internet), push notifications (gửi và nhận thông báo) và truy cập phần cứng của thiết bị mà điều này thường chỉ có thể làm với native applications.

Một vài ví dụ về Progressive Web Apps hiện nay: Tinder, Ola, Trivago, 9GAG, Alibaba, Aliexpress, 5 Miles,….

PWA là một chuẩn web mà nó mang lại cho người dùng cảm giác như sử dụng một native mobile application. Và đặc biệt hơn là người dùng không cần phải tải về và cài đặt nó từ app-store hay play-store.

Đã có rất nhiều công ty lớn đi đầu trong việc xây dựng ứng dụng Progressive Web Apps và nó đã giúp họ tăng lượt truy cập cũng như lượng khách hàng đáng kể. Chính vì thế trong những năm tới đây các ứng dụng web PWA sẽ trở nên phổ biến.

Bạn có thể tìm hiểu rõ hơn về Progressive Web Apps tại đây

2. Push Notifications

Một trong những xu hướng phát triển web trong những năm gần đây đó là website notifications.

Push notification giúp website của bạn tương tác với người dùng nhiều hơn. Họ có thể nhận các thông báo từ website của bạn như: các chương trình khuyến mại, giảm giá, thông báo về sản phẩm mới,… Bạn có thể kéo người dùng về website của bạn nhiều hơn và thường xuyên hơn nhờ vào các thông báo.

Khi truy cập một website nào đó bạn sẽ nhìn thấy một yêu cầu từ trình duyệt web dạng thế này:

Top 8 xu hướng phát triển ứng dụng Web trong tương lai

Nếu người dùng cho web nhận thông báo từ facebook. Vậy thì từ lúc này bất cứ khi nào bạn bè của bạn có đăng status mới, có comment nào liên quan tới bạn, hay có ai nhắn tin cho bạn thì bạn sẽ nhận được thông báo ngay lập tức (thực tế thì trễ vài giây) mặc dù lúc đó bạn không hề mở facebook trên máy tính hay trên thiết bị di động.

Điều tuyệt vời là với các ứng dụng web PWA như đã nói ở trên thì Push Notification khá là hữu ít, nó giúp mang lại cảm giác cho người dùng giống như đang dùng native app mobile, họ không cần truy cập vào website mà vẫn có thể nhận được các thông báo từ website mà họ đã cho phép nhận thông báo trươc đó.

Top 8 xu hướng phát triển ứng dụng Web trong tương lai

demo Push Notification

3. Chatbots and Artificial Intelligence(AI)

Chatbot là một chương trình máy tính cho phép cuộc hội thoại dựa trên văn bản hoặc cuộc gọi. Chatbots thường được sử dụng để tạo ra một hộp thoại với khách hàng như một phương tiện cung cấp thông tin hoặc hỗ trợ khách hàng.

Hầu hết các chatbots đều được truy cập thông qua các trợ lý ảo như Amazon Alexa, thông qua các ứng dụng nhắn tin như Facebook Messenger hoặc thông qua các ứng dụng và trang web của các tổ chức riêng lẻ.

Vì hiệu quả của chúng, các chatbots đang tạo nên sự thúc đẩy cho các tổ chức đang phát triển các chiến lược dịch vụ khách hàng của họ.

Hãy tưởng tượng một ngày nào đó khi các AI Chatbots đủ thông minh để có thể giao tiếp và hướng dẫn khách hàng của họ một cách tự động và giống như một nhân viên chăm sóc khác hàng online. Với một chatbot, họ có thể truy cập nhanh đến các dịch vụ và thông tin mà khách hàng đang quan tâm.

Top 8 xu hướng phát triển ứng dụng Web trong tương lai
AI Chatbot

Chatbots vẫn còn rất nhiều về sự gia tăng phổ biến và sử dụng, và được dự kiến ​​sẽ là chủ đạo cho một hoặc hai năm nữa. Bởi vì điều này, bây giờ sẽ là thời gian tốt nhất để tận dụng công nghệ vừa chớm nở này. Khách hàng của bạn sẽ thực sự đánh giá cao mức tăng dịch vụ và dễ dàng truy cập thông tin.

4. Blockchain Technology

Nhắc tới Blockchain chắc hẳn nhiều anh em sẽ nghĩ đến ngay “Bitcoin”. Một sự bùn nổ trong năm 2018. Vào thời gian đó vào các group chat trên Telegram thì thường xuyên thấy: “go to the moon”, “hold to die” các kiểu. Cuối cùng thì “go to the hell”, móa đau thiệt chứ. Thôi thì “ai cũng có một mơ ước mộng tưởng để mà ôm ấp ủ”.

Top 8 xu hướng phát triển ứng dụng Web trong tương lai
nguồn quora.com

Công nghệ Blockchain mở ra một xu hướng mới cho các lĩnh vực như tài chính ngân hàng, logistics, điện tử viễn thông, kế toán kiểm toán…

Không chỉ thế Blockchain còn là nòng cốt của Internet vạn vật (IoT). Các thiết bị điện tử có thể giao tiếp một cách an toàn và minh bạch, những nỗ lực bất chính trong thế giới Internet sẽ không thực hiện được, và còn nhiều điều nữa…

Hiện nay có rất nhiều công ty và tập đoàn lớn đang xây dựng mạng lưới Blockchain cho riêng mình. Vì thế chúng ta sẽ sớm thấy điều này có thể tạo ra một làn sóng cho tương lai.

5. Single page sites

Theo truyền thống, các trang web được tạo ra với mỗi chủ đề có trang riêng của nó. Đối với nhiều trang web, điều này có ý nghĩa hoàn hảo vì nó cho phép nội dung được nhóm theo các khối logic. Tuy nhiên, theo thời gian và sự phát triển của các ứng dụng web người thấy rằng ngày càng có nhiều người truy cập web trên thiết bị di động hơn là trên máy tính.

Với sự gia tăng về duyệt web trên thiết bị di động này, nhiều trang web đang chuyển sang thiết kế trang đơn, cho phép người dùng di động dễ dàng cuộn qua nội dung.

Top 8 xu hướng phát triển ứng dụng Web trong tương lai
nguồn electricsilk

Thiết kế tối giản và thời gian tải nhanh là xu hướng sẽ không biến mất sớm. Bởi vì các single page tải rất nhanh trên thiết bị di động, chúng được các công cụ tìm kiếm ưu tiên trên các trang nhiều trang… và chúng thuận tiện cho khách hàng truy cập trang web.

6. Static websites

Đối với các trang web không cần nhiều chuông và còi, chẳng hạn như trang web chỉ trình bày thông tin thì việc quay trở lại thiết kế HTML cơ bản có thể là lựa chọn thông minh. Loại trang web này tải ở tốc độ cực nhanh.

Các nhà thiết kế ngày nay đang sử dụng các trình tạo trang web tĩnh để kiểm tra nhiều khái niệm khác nhau. Các trang web như Jekyll cho phép người dùng thử các thiết kế tĩnh.

7. Typography

Về cơ bản Typography là sự kết hợp khéo léo nghệ thuật giữa typefaces, point size, line length, leading (line spacing), letter-spacing (tracking). Nhằm đem lại cho người xem cảm giác dễ đọc nhất, nổi bật nội dung, và truyền tải được ý đồ của người thiết kế tới người đọc.

Thiết kế typography là xu hướng nghệ thuật khá phổ biến trong thời gian gần đây khi mà sự phát triển của các hoạt động Marketing Online, chiến dịch Marketing trực tuyến, các thiết kế, hình ảnh đẹp trở thành yếu tố đóng vai trò quan trọng , hình thức thể hiện mới mẻ cho các con chữ thông thường.

Trong bối cảnh đó, Typography chính là một giải pháp hoàn hảo để thể hiện, biến hóa các nội dung chất lượng thành các sản phẩm thương mại hóa có khả năng thu hút người đọc hơn, nhiều sức hút hơn và tất nhiên tăng tương tác hơn trong các hoạt động Marketing truyền thống.

Top 8 xu hướng phát triển ứng dụng Web trong tương lai
nguồn merehead.com

8. Cyber security

An ninh mạng (Cyber security) chủ yếu tập trung vào việc bảo vệ hệ thống, mạng và dữ liệu khỏi các cuộc tấn công trên mạng. Hiệu quả an ninh mạng làm giảm nguy cơ tấn công mạng và bảo vệ các tổ chức và cá nhân khỏi việc khai thác trái phép hệ thống, mạng và công nghệ.

Top 8 xu hướng phát triển ứng dụng Web trong tương lai
nguồn Quora

Hy vọng với những thông tin trên sẽ giúp những người yêu thích lập trình web như bạn bắt đầu chuẩn bị và lập ra kế hoạch để phát triển các ứng dụng web phù hợp với xu hướng trong tương lai.

Hãy cho biết ý kiến của bạn bằng cách comment bên dưới nhé.

Tham khảo
1. https://inkbotdesign.com/web-development-trends/
2. http://merehead.com/blog/web-development-trends-2019/
3. https://www.coredna.com/blogs/web-development-trends
4. https://electricsilk.com/website-design-and-development-trends-for-2019/
5. http://merehead.com/blog/future-web-development-2019/
6. https://www.quora.com/What-will-be-the-latest-web-app-development-trends-in-2019
7. https://www.bluleadz.com/blog/web-design-theories-for-next-year

Bài viết gốc được đăng tải tại thangphampt.wordpress.com

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

Xem thêm Việc làm phát triển ứng dụng web hấp dẫn trên TopDev

Làm thế nào để trở thành một Technical Writer chuyên nghiệp? (Phần 2)

technical writer
Làm thế nào để trở thành một technical writer?

Tác giả: Edidiong Asikpo

Tiếp tục chuỗi bài chia sẻ thêm về những cách thức để có thể trở thành một Technical Writer chuyên nghiệp và tài năng hơn.

Nên bắt đầu từ đâu cho quá trình trở thành một Technical Writer?

“Bí mật của sự dẫn đầu là bắt đầu ngay từ bây giờ” – đây là một câu nói nổi tiếng của Mark Twain. Hãy bắt đầu ngay từ bây giờ để có thể trở thành một Technical Writer chất lượng và chuyên nghiệp nhất.

technical writer

Tham gia một số khóa học chuyên đào tạo kỹ thuật viết chuyên nghiệp

Technical writing là một vấn đề khó, yêu cầu người viết không chỉ cung cấp kiến thức mà còn cần diễn đạt nó một cách đơn giản và dễ hiểu nhất. Tham gia một khóa học chuyên nghiệp về kỹ thuật đôi khi có thể khiến bạn cảm thấy không cần, nhưng nó thật sự sẽ giúp bạn khám phá ra nhiều vấn đề hay ho và có những quyết định đúng đắn khi xây dựng thương hiệu blog của riêng mình.

Thường xuyên đọc sách và tin tức về công nghệ

Đọc sách là điều cần thiết vì nó sẽ giúp bạn làm giàu vốn từ vựng của mình, bắt kịp các xu hướng hiện tại, khám phá những gì đang diễn ra trong thế giới viết lách, và cũng giúp giữ cho tinh thần viết lách luôn sống động.

Đối với vấn đề này, bạn có thể tìm hiểu thêm các bài viết về công nghệ thông tin, xu hướng công nghệ cũng như kiến thức lập trình từ các trang web uy tín như trên freeCodeCamp, Hashnode, The Writing HTX và một số trang khác.

  Con đường để bạn trở thành tech lead
  CTO là gì - Những sự thật cần biết về Chief Technology Officer 

Bắt tay vào viết bài

Ngay cả khi bạn tham gia tất cả các khóa học viết về các vấn đề mang tính kỹ thuật và đọc tất cả các bài báo công nghệ bạn có thể tìm thấy, điều đó đương nhiên sẽ không khiến bạn trở thành một nhà văn hay một người sáng tạo bài viết chuyên nghiệp. Bạn cần thực sự viết để trở thành một nhà văn.

Bạn có thể tự hỏi làm thế nào để bạn thực sự bắt tay vào viết bài?

Đầu tiên, bạn cần nghĩ ra chủ đề mà bạn muốn viết. Sau đó, bạn nên thực hiện các nghiên cứu cần thiết, viết bản thảo của bài báo và đọc lại bài báo (nhiều hơn một lần). Khi bạn đã sẵn sàng, cuối cùng bạn có thể xuất bản bài viết trên blog của mình.

Bạn không cần phải xây dựng blog của mình từ đầu bởi vì nó tốn rất nhiều thời gian và sẽ khiến bạn mất tập trung thực sự, đó là viết. Sau khi bạn đã cảm thấy thoải mái với việc viết lách, bạn có thể đăng ký trở thành tác giả khách mời trên freeCodeCamp. Nếu được chấp thuận, bạn có thể đăng các bài viết của mình lên nền tảng này và thu hút được nhiều đối tượng độc giả hơn.

Duy trì việc viết và sáng tạo nội dung mới một cách đều đặn

Viết liên tục đóng một vai trò rất lớn trong việc giúp bạn trở thành một blogger giỏi hơn. Nó giúp tăng cao năng suất của bạn, thay đổi quan điểm và xây dựng sự tự tin của bạn.

Cũng giống như mọi kỹ năng khác, bạn sẽ viết tốt hơn khi bạn có thể viết một cách liên tục. Hãy đặt mục tiêu viết ít nhất một bài báo mỗi tháng, và bạn thật sự nhận ra sự thay đổi về cách kỹ năng viết của mình cải thiện nếu bạn tiếp tục thực hiện nó một cách nhất quán.

Nếu bạn cần một số trách nhiệm giải trình với sự nhất quán của mình với tư cách là một nhà văn kỹ thuật, bạn có thể thử tham gia cuộc thi #2Articles1Week Writing Challenge để đánh giá kỹ năng của mình.

Đóng góp cho các dự án Open Source

Tài liệu cho các dự án open source được cho là quan trọng như chính phần mềm. Vì vậy, nếu bạn mong muốn trở thành một technical writer chuyên nghiệp, bạn có thể đóng góp những gì mình biết cho một dự án bởi vì con người không thể sử dụng những gì họ không hiểu.

Nếu bạn đang làm việc trong một dự án hoặc cho một tổ chức open source miễn phí. Nhưng các đóng góp open source có thể giúp bạn cải thiện kỹ năng viết, mở rộng mạng lưới và giúp bạn nhận được các đề xuất và giới thiệu từ những người theo dõi mình. Nó cũng có thể giúp bạn tăng cơ hội được chấp nhận tham gia vào Google Season of Docs.

Xem thêm Lead Engineer trông như thế nào?

Google Season of Docs là gì và nó có tầm quan trọng như thế nào?

Google Season of Docs là chương trình thường niên do Google tổ chức. Mục tiêu của nó là tập hợp các technical writers và các tổ chức open sources lại với nhau để thúc đẩy sự hợp tác và cải thiện số lượng tài liệu trong nguồn dữ liệu open sources.

Sáng kiến ​​này được xem là cực kỳ quan trọng vì tài liệu của một dự án open source cung cấp lộ trình để người dùng không chỉ hiểu thêm về dự án mà còn đóng góp những gì mình biết cho nó.

Trong suốt chương trình, các technical writers được chấp nhận dành từ 3 – 5 tháng để xây dựng một bộ tài liệu mới, cải thiện cấu trúc của các tài liệu hiện có, phát triển các hướng dẫn cần thiết hoặc cải thiện các quy trình đóng góp và hướng dẫn của một tổ chức open sources.

Điểm thú vị của chương trình này là bạn có thể được trả từ 3000 – 15.000 USD để đóng góp cho các dự án open source với tư cách là một technical writer. Bạn cũng sẽ có nhiều cơ hội hơn khi tham gia vào Technical Writing Team và có thể được tổ chức open sources giữ lại để tiếp tục làm việc với tư cách là một technical writer sau khi chương trình kết thúc.

Những tips hay ho để bắt đầu quá trình trở thành Technical Writing

  • Làm theo hướng dẫn và xây dựng văn phong viết ổn định. Nó sẽ giúp bạn đi đúng hướng và tuân theo các nguyên tắc viết bài kỹ thuật, công nghệ một cách tốt nhất.
  • Làm cho các đoạn văn trong bài trở nên ngắn gọn hơn để chúng hỗ trợ các ý tưởng phát triển một cách gọn gàng và rõ ràng nhất. Đừng nhồi nhét mọi thứ vào một đoạn văn.
  • Viết những câu ngắn gọn, rõ ràng và chính xác bởi vì sự đơn giản luôn giúp cho mọi thứ trở nên dễ dàng hơn.
  • Sau khi viết bản nháp đầu tiên, hãy đọc to nội dung của bạn trong khi giả sử chính bản thân là người đọc. Điều này sẽ giúp bạn phát hiện ra những thứ có thể được diễn đạt lại theo một cách dễ hiểu hơn.
  • Chỉnh sửa bản nháp đầu tiên của bạn khi tập trung nhất.
  • Tìm kiếm phản hồi bằng cách tham khảo ý kiến ​​của các chuyên gia trong lĩnh vực đang viết vì không có ai có thể nắm được tất cả các vấn đề liên quan đến technical.

Phỏng dịch theo bài viết gốc tại freecodecamp.org

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

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Giới thiệu JMS – Java Message Services

Giới thiệu JMS – Java Message Services

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

Trong cuộc sống để có thể hiểu nhau thì chúng ta cần phải trao đổi thông tin với nhau, chúng ta có thể trao đổi thông tin bằng cách nói chuyện trực tiếp, qua điện thoại, email, zalo, skype, facebook, …

Trong phần mềm, các component của chương trình hoặc các chương trình trong một hệ thống cũng cần trao đổi thông tin với nhau để có thể chạy đồng nhất, việc trao đổi thông tin này thông qua message (tin nhắn).

Trong Java, nó cung cấp một số API cho phép các ứng dụng Java có thể tạo, gửi, nhận và đọc các message. Các API này gọi JMS (Java Message Service) API.

Tìm việc làm Java mới nhất lương up to 2000 USD

Giới thiệu JMS

Message là gì?

Message (Tin nhắn) là một phần thông tin. Nó có thể là một text, XML, JSON hoặc một Entity (đối tượng Java), … Message là dữ liệu rất hữu ích để giao tiếp giữa các hệ thống khác nhau.

Messaging là gì?

Messaging (nhắn tin) là việc trao đổi thông tin giữa các thành phần khác nhau trong cùng một hệ thống hoặc các hệ thống khác nhau. Nó có thể xảy ra theo cách đồng bộ hoặc không đồng bộ.

Ưu điểm của nhắn tin là khả năng tích hợp các nền tảng khác nhau, làm giảm tắc nghẽn hệ thống, tăng cường khả năng mở rộng và nâng cao độ tin cậy gửi nhận tin.

Có 2 mô hình nhắn tin: P2P (Point to Point) và Pub/Sub (Publisher/ Subscriber).

JMS là gì?

Java Message Service (JMS) API là một phần của đặc tả kỹ thuật Java Enterprice Edition (Java EE), là một API trung gian hướng thông báo Java (MOM) để gửi tin nhắn giữa hai hoặc nhiều client.

JMS mô tả các phương thức tạo bởi chương trình Java cho việc: tạo (Create), gửi (Send), nhận (Receive), đọc (Read) tin nhắn.

JMS cho phép giao tiếp giữa các thành phần khác nhau của một ứng dụng phân tán được kết nối lỏng lẻo, đáng tin cậy và hỗ trợ bất đồng bộ.

Giao tiếp giữa các client được tạo ra bởi message broker qua các tiêu chuẩn truyền tin bất đồng bộ như AMQP, MQTT.

JMS API là triển khai để xử lý vấn đề nhà sản xuất-người tiêu dùng.

JMS bao gồm 2 thành phần:

  • API : hỗ trợ chức năng cho người phát triển phần mềm.
  • SPI (Service Provider Interface) : cho phép các Provider tạo ra tool JMS tích hợp, định hướng cho mọi người sử dụng theo hướng chuẩn hóa.

Giới thiệu JMS – Java Message Services

Khi chúng ta phát triển Hệ thống nhắn tin Java với JMS API, thì chúng ta có thể triển khai cùng một ứng dụng trong bất kỳ JMS Provider software nào.

>>> Xem thêm: Học lập trình Java từ đâu và như thế nào?

MOM là gì?

MOM (Message-oriented middleware hay MQ – Message Queue) là một ứng dụng trung gian hỗ trợ gửi và nhận tin nhắn trong các ứng dụng phân tán.

Cơ chế MOM tương tự như database với việc nhận và gửi message, đảm bảo toàn vẹn dữ liệu, transaction và cân bằng cho việc gửi nhận dữ liệu.

Nơi lưu trữ dữ liệu và tương tác với MOM có tên gọi là Destination.

Một số MOM tiêu biểu:

# JMS PROVIDER ORGANIZATION
1. WebSphere MQ IBM
2. Weblogic Messaging Oracle Corporation
3. Active MQ Apache Foundation
4. Rabbit MQ Rabbit Technologies(acquired by Spring Source)
5. HornetQ JBoss
6. Sonic MQ Progress Software
7. TIBCO EMS TIBCO
8. Open MQ Oracle Corporation
9. SonicMQ Aurea Software

JMS Broker

Để gửi hoặc nhận tin nhắn, trước tiên, JMS Client phải kết nối với JMS message server (còn gọi là JMS Broker – nhà môi giới):

  • Một Connection mở ra một kênh liên lạc giữa client và broker.
  • Tiếp theo, client phải thiết lập một session để tạo, tạo và đọc tin nhắn. Bạn có thể nghĩ về session như một luồng thông báo xác định cho một cuộc trò chuyện cụ thể giữa client và broker. Bản thân client là producer hoặc consumer.
  • Transaction được tạo bởi client là transaction giữa producer và broker hoặc giữa broker và consumer, nhưng không bao giờ giữa producer và consumer.
  • Producer gửi tin nhắn đến destination (đích) mà broker quản lý. Consumer truy cập destination đó để lấy tin nhắn.
  • Tin nhắn bao gồm header (tiêu đề), optional properties (thuộc tính), và body (nội dung). Body chứa dữ liệu, header chứa thông tin broker cần định tuyến và quản lý tin nhắn và các thuộc tính có thể được xác định bởi các ứng dụng client hoặc bởi provider để phục vụ nhu cầu của chính họ trong việc xử lý tin nhắn.
  • Connection, Session, Destination, Message, Producer và Consumer là những đối tượng cơ bản tạo nên một ứng dụng JMS.

Giới thiệu JMS – Java Message Services

Các thành phần của JMS

  • JMS Provider :
    • JMS API là một tập hợp các interface, không chứa bất kỳ implementation nào. JMS Provider là một hệ thống bên thứ ba, chịu trách nhiệm implement JMS API để cung cấp các tính năng nhắn tin cho khách hàng.
    • JMS Provider còn được gọi là phần mềm MOM. JMS Provider cũng cung cấp một số thành phần UI để quản trị và kiểm soát phần mềm MOM này.
    • JMS Provider được viết trên chuẩn Java do đó sẽ chạy được trên đa nền tảng.
  • JMS Client : Là các chương trình độc lập hoặc các components (thành phần) của ứng dụng, được viết bằng Java có khả năng trao đổi message.
    • JMS producer/ publisher : là JMS client tạo và gửi tin nhắn.
    • JMS consumer/ subscriber : là JMS client nhận tin nhắn.
  • JMS Message : Là các object, định dạng trung gian chứa data để giao tiếp giữa JMS Client và Provider.
  • Administered object : hỗ trợ cơ chế quản lý và cấu hình cho JMS Object. Bao gồm:
    • ConnectionFactory Object: được sử dụng để tạo kết nối giữa ứng dụng Java và JMS Provider. Tương tự như khái niệm truy cập DataSource của kết nối dữ liệu.
    • Destination Object: là nơi lưu trữ cho message, là đối tượng JMS được JMS Client sử dụng để chỉ định đích của tin nhắn mà nó đang gửi và nguồn tin nhắn mà nó nhận được. Có hai loại Destination: Queue and Topic.
      • JMS Queue : Khu vực chứa các tin nhắn đã được gửi và đang chờ để đọc (chỉ bởi một consumer). Hàng đợi này đảm bảo các tin nhắn được nhận theo thứ tự gửi và mỗi tin nhắn chỉ được xử lý một lần.
      • JMS Topic : Một cơ chế phân phối để publisher gửi tin nhắn đến nhiều người đăng ký (subscriber).

Cơ chế giao tiếp JMS

JMS cung cấp cơ chế giao tiếp bao gồm:

  • Asynchronous: JMS tự động chuyển message đến người nhận khi message đến.
  • Reliable: một message chỉ được chuyển đến đúng một người nhận mà không có cơ chế nhân bản, do vậy, tín hiệu phản hồi hoàn tất nhận message từ người nhận sẽ gây nên xóa bỏ thông tin trên middleware object.

Các mô hình JMS

JMS hỗ trợ 2 mô hình trao đổi dữ liệu là P2P (Point to Point) và Pub/Sub (Publisher/ Subscriber). Các mô hình trao đổi này gọi là JMS message domain.

P2P (Point to Point)

Giới thiệu JMS – Java Message Services

  • Có ba thành phần chính là ứng dụng gửi (sender), Queue, ứng dụng nhận (receiver) tin.
  • Sử dụng Queue làm nơi lưu trữ. Queue giữ lại các tin nhắn cho đến khi client nhận hoặc đến thời gian timout thiết lập.
  • Định nghĩa 02 đối tượng cho việc gửi và nhận, đó là sender và receiver, và chỉ có một người gửi và một người nhận tin nhắn.
  • Mô hình này message chuyển đi tuần tự (FIFO).
  • Mô hình cho phép người nhận không cần active tại thời điểm gửi message.
  • Sử dụng tín hiệu acknowledge để kích hoạt cho việc nhận message ở người nhận hoàn tất.
  • Mô hình có tính bảo mật cao do một người gửi và một người nhận nhưng đôi lúc làm hệ thống bị block lại do chờ message đến.

Pub/ Sub (Publisher/ Subscriber)

Giới thiệu JMS – Java Message Services

  • Cũng có ba thành phần chính là phía gửi (sender), Topic, và phía nhận (receiver).
  • Mô hình sử dụng Topic làm nơi lưu trữ. Topic thực chất cũng là dạng queue nhưng có nhiều hơn một queue với các queue có đánh độ ưu tiên khác nhau.
  • Mô hình cho phép 1 người gửi và nhiều người nhận do vậy đối tượng được định nghĩa là Publisher và Subcriber.
  • Topic sẽ lưu lại toàn bộ tin nhắn mà không bị mất đi cho đến khi MOM được reset, hay xóa.
  • Mỗi Subscriber sẽ chỉ nhận được message từ topic sau khi đã subscription.
  • Không cần sử dụng thông tin acknowledge và message được chuyển đến các subscriber chỉ là bản copy.
  • Mô hình bảo mật không cao do gửi nhiều người nhận nhưng được ưu điểm đó là áp dụng thuận lợi cho hệ thống phân tán.
  • Mô hình Pub/Sub đòi hỏi đối tượng nhận phải active hay listener tại thời điểm gửi nhận message, nếu không message sẽ mất đi (non-durable). Do vậy, để message vẫn không mất đi nhưng được lưu trữ tạm thời trong MOM và cho phép người dùng truy cập vào MOM với tính xác thực thì chức năng durable phải được kích hoạt.

Cơ chế gửi nhận message trong JMS được chia thành hai thành phần:

  • Synchronous: đối tượng nhận và gửi message thông qua thực hiện phương thức receive và phương thức này giữ ứng dụng chờ đợi cho đến khi message tới.
  • Asynchronous: đối tượng nhận bắt buộc phải đăng ký cơ chế lắng nghe MessageListener để đón nhận message và phương thức được kích hoạt là onMessage để đón nhận và xử lý message.

Ưu điểm của JMS

  • Reliability (Độ tin cậy) : Tin nhắn trung gian (Messaging middleware) đảm bảo tin nhắc được phân phối đến người nhận (receiver). Nếu người nhận ngừng hoạt động vì một số lý do, hệ thống nhắn tin sẽ lưu trữ tin nhắn cho đến khi nó hoạt động trở lại. Đảm bảo một message chỉ được gửi một lần, tránh trường hợp bị mất message hoặc trùng lặp.
  • Asynchronous (Bất đồng bộ) : JMS Provider, client có thể gửi và nhận message không đồng bộ. Nghĩa là người gửi và người nhận không cần chờ nhau.
  • Ease of Integration (dễ tích hợp) : Nhiều ứng dụng có thể được viết bằng các ngôn ngữ lập trình khác nhau hoặc chạy trên các máy chủ khác nhau. Miễn là chúng sử dụng cùng một giao thức, một phần mềm trung gian nhắn tin có thể được sử dụng để thiết lập liên lạc giữa chúng.
  • Scalability (Khả năng mở rộng): Hệ thống nhắn tin giúp quảng bá tin nhắn đến nhiều receiver, giúp mở rộng.
  • Flexibility (Tính linh hoạt) : có thể gán các giao thức khác nhau cho các tin nhắn khác nhau, cho phép ta linh hoạt trong việc thiết kế kiến trúc của mình.
  • Loosely coupled (Kết nối lỏng lẻo) :
    • JMS API là đặc tả kỹ thuật nên được triển khai bởi tất cả các JMS Provider. Vì vậy chúng ta có thể thay đổi Provider hiện tại sang Provider mới với ít thay đổi (có nghĩa là chỉ cấu hình) hoặc không thay đổi mã ứng dụng JMS.
    • Tách biệt người gửi và người nhận, và người truyền tin trung gian sẽ lưu tin nhắn đến khi người nhận có thể xử lý.
  • Interoperability (Khả năng tương tác) : JMS API cho phép khả năng tương tác giữa các ngôn ngữ nền tảng Java khác như Scala và Groovy.

Nhược điểm JMS

JMS sẽ không bao gồm các tính năng sau, bởi vì JMS chỉ là hệ thống gởi nhận tin:

  • Load Balancing/Fault Tolerance
  • Error/Advisory Notification
  • Administration
  • Security
  • Wire Protocol
  • Message Type Repository

Vì một vài hạn chế của JMS nên đa phần trong các hệ thống distributed sẽ không sử dụng JMS mà sẽ sử dụng các libs được implement dựa trên JMS như Kafka, Zookeeper… các bạn có thể tham khảo thêm. Tuy nhiên, việc nắm được các khái niệm cơ bản của JMS sẽ giúp chúng ta nắm bắt được các third party nhanh chóng hơn.

JMS vs Socket

Ưu điểm của JMS:

  • Người gửi và người nhận không cần biết nhau.
  • Có thể dễ dàng đăng ký và hủy đăng ký
  • Hữu ích cho việc lưu trữ thông tin offline và cập nhật số lượng lớn. Vì vậy, người nhận có thể xử lý từng cái một.
  • Người gửi / người nhận có thể làm việc bất đồng bộ.

Ưu điểm Socket:

  • Socket cung cấp một kết nối trực tiếp.
  • Độ trễ thấp, vì không có máy chủ ở giữa (không có MoM)
  • Socket hoạt động ở lớp TCP để truyền dữ liệu ít hơn.

Trường hợp sử dụng JMS?

Một số trường hợp có thể sử dụng JMS:

  • Mong muốn các thành phần không phụ thuộc vào thông tin về interface của các thành phần khác, vì vậy các thành phần có thể dễ dàng thay thế.
  • Muốn ứng dụng chạy cho dù tất cả các thành phần có hoạt động hay không.
  • Ứng dụng cho phép một thành phần gửi thông tin cho người khác và tiếp tục hoạt động mà không cần chờ nhận được phản hồi ngay lập tức.

>>> Xem thêm: Class trong Java là gì? Object trong Java là gì?

AMQP là gì?

Giới thiệu JMS – Java Message Services

AMQP (Advanced Message Queuing Protocol – Giao thức xếp hàng tin nhắn nâng cao) là một giao thức internet mở và được chuẩn hóa để cho phần mềm trung gian hướng thông báo (MOM) truyền message tin cậy giữa các ứng dụng hoặc tổ chức. Các tính năng xác định của AMQP là định hướng tin nhắn, xếp hàng, định tuyến (bao gồm cả P2P và Publisher/Subscriber), độ tin cậy và bảo mật.

AMQP giúp các developer xây dựng một hệ sinh thái tin nhắn đồng nhất, đa dạng, kết nối các hệ thống một cách tương tác và hợp tác.

AMQP thường được so sánh với JMS (Java Message Service), hệ thống nhắn tin phổ biến nhất trong cộng đồng Java. Một hạn chế của JMS là các API được chỉ định, nhưng định dạng thông báo thì không. AMQP là một giao thức, nó mô tả về định dạng của dữ liệu được gửi qua mạng dưới dạng luồng byte dữ liệu truyền được chỉ định. Đặc tính này cho phép các thư viện được viết bằng nhiều ngôn ngữ và chạy trên nhiều hệ điều hành và kiến ​​trúc CPU, tạo nên một tiêu chuẩn nhắn tin đa nền tảng, có thể tương tác thực sự.

Một số điều quan trọng cần nhớ:

  • AMQP là một giao thức nhắn tin, không triển khai JMS API.
  • JMS là API và AMQP là một giao thức. Vì vậy, không có nghĩa gì khi nói rằng giao thức mặc định của JMS là gì, tất nhiên các ứng dụng client sử dụng HTTP/ HTTPS làm giao thức kết nối khi gọi Web Service.
  • JMS chỉ là một đặc tả API. Nó không sử dụng bất kỳ giao thức nào. JMS Provider như ActiveMQ có thể đang sử dụng bất kỳ giao thức cơ bản nào để làm JMS Transport cho JMS API, chẳng hạn: AMQP, MQTT, OpenWire, REST (HTTP), RSS và Atom, Stomp, …

Trong bài này, chúng ta đã tìm hiểu các khái niệm quan trọng của JMS. Trong các bài viết tiếp theo, chúng ta sẽ cùng hiểu hiểu về cách cài đặt và sử dụng JMS thông qua một số JMS Provider như Active MQ, Rabbit MQ, …

Tài liệu tham khảo:

Hướng dẫn cài đặt OpenSSL trên Windows 10

Hướng dẫn cài đặt OpenSSL trên Windows 10

Bài viết được sự cho phép của tác giả Trần Hữu Cương

Hướng dẫn cài đặt OpenSSL trên Windows 10.

Không giống như Ubuntu, Windows không tích hợp sẵn file thực thi openssl, ta cần phải cài đặt nó bằng tay để có thể generate được file .key.pem.crt

  Hướng dẫn tạo certificate SSL trên ubuntu (file key, pem)
  System Design Cơ Bản: HTTPS, SSL, AND TLS

Cách 1: download từ Shining Light Productions

Download từ địa chỉ https://slproweb.com/products/Win32OpenSSL.html

(tùy vào phiên bản windows đang sử dụng mà bạn tải bản 32bit hay 64bit nhé)

Hướng dẫn cài đặt OpenSSL trên Windows 10

Sau khi cài đặt ta sẽ tìm thấy file openssl.exe nằm trong folder bin mà mình vừa cài đặt:

Hướng dẫn cài đặt OpenSSL trên Windows 10

Cách 2: download từ Git For Windows

Download từ địa chỉ https://git-scm.com/download/win

Hướng dẫn cài đặt OpenSSL trên Windows 10

Ở đây mình tải bản Portable (bản không cần cài đặt)

Hướng dẫn cài đặt OpenSSL trên Windows 10

Click đúp vào file .exe nó sẽ giải nén ra folder PortableGit

File openssl.exe sẽ nằm trong folder usr/bin

Hướng dẫn cài đặt OpenSSL trên Windows 10

Sau khi cài đặt, chúng ta có thể chạy lệnh openssl trong commad line của folder chứa file openssl.exe, để có thể chạy lệnh openssl ở bất kỳ đâu, ta cần thêm folder chưa file openssl.exe vào enviroment của windows, ví dụ:

Hướng dẫn cài đặt OpenSSL trên Windows 10

Bây giở mở màn hình command line, ta có thể chạy lệnh openssl ở bất kỳ folder nào:

 Hướng dẫn cài đặt OpenSSL trên Windows 10

Okay, Done!

References:

https://zeropointdevelopment.com/how-to-get-https-working-in-windows-10-localhost-dev-environment/

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

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

Xem thêm Việc làm ngành cntt hấp dẫn trên TopDev

Selenium testing – Một vài kiểu có thể áp dụng

Selenium testing – Một vài kiểu có thể áp dụng

Bài viết được sự cho phép của tác giả Kiên Nguyễn

Selenium testing gồm những kiểu test nào?. Selenium có thể hỗ trợ được gì trong các loại test đó?. Tất cả sẽ có trong bài viết dưới đây.

Mà khoan, nếu chưa có cái nhìn tổng quan về Selenium thì đọc bài viết “Selenium là gì?” trước đã nha. Biết sơ qua rồi hẵng quay lại đọc bài này thì sẽ tốt hơn.

1. Acceptance testing – Kiểm thử chấp nhận

Gọi là kiểm thử chấp nhận vì đây là phần testing kiểm tra xem có đáp ứng được những gì khách hàng yêu cầu hay không?. Nếu release bản này thì khách hàng chấp nhận hay không?.

Ra đi làm tất nhiên mới biết, việc đáp ứng nhu cầu khách hàng nữ. Ý lộn “đáp ứng requirements” của khách hàng là yếu tố tiên quyết.

Tại sao?. Khách hàng trả tiền, khách hàng dùng sản phẩm.

Acceptance testing trong Selenium testing chỉ nhằm mục đích trả lời cho câu hỏi:

Are we building the right product?.

Chúng ta có đang tạo ra sản phẩm như khách hàng yêu cầu hay không?

Selenium Testing có thể giúp đỡ việc kiểm thử này như thế nào?

  • Viết automation tescase test các function nhỏ trên từng page
  • Viết automation testcase test flow của product
  • Viết testcase cho logic (nếu có).

Lưu ý là Acceptance testing cũng chỉ là một kiểu của Functional testing thôi nha. Giờ mới tới cái lớn nè.

2. Functional testing – Kiểm thử tính năng

It checks the system at different levels to ensure that all scenarios are covered and that the system does what’s supposed to do.

Kiểu kiểm thử này nhằm kiểm tra hệ thống ở nhiều cấp độ, đảm bảo tất cả các kịch bản (scenarios) được kiểm tra và hệ thống không gặp bất cứ lỗi nào.

Functional testing là một step quan trọng cần có. Selenium testing hỗ trợ tốt kiểm thử này bằng cách:

  • Vì là automation test nên có thể lặp đi lặp lại các thao tác nhiều lần.
  • Ngoài các thao tác bình thường của người sử dụng, automation còn giúp thực hiện các case nằm ngoài thao tác bình thường (click cùng lúc 2 button, click button trong lúc xử lý loading.
  • Đặc biệt mạnh mẽ khi kiểm thử luồng di chuyển (giữa các màn hình)

Cũng trả lời cho câu hỏi:

Are we building the product right?.

Chúng ta đang tạo ra sản phẩm đúng, chứ không sai phải không?

  Các kiểu “đợi chờ” trong Selenium Webdriver: Implicit wait, Explicit wait và Fluent wait
  Hướng dẫn và mô phỏng thuật toán sắp xếp Selection Sort

3. Performance testing – Kiểm thử hiệu năng

Performance testing giúp kiểm thử sản phẩm trong các trường hợp đặc biệt yêu cầu performance. Đối với các production có người dùng lớn, Selenium testing tỏ ra hiệu quả khi thực hiện testcase nhiều lần, cùng lúc. Mô tả kịch bản số lượng người dùng lớn.

As its name indicates, performance tests are done to measure how well an application is performing.

Giống như cái tên, performance test kiểm tra, đo lường đọ hiệu quả một sản phẩm.

Nếu table có 100 dòng thì việc xử lý click chọn hay select all như thế nào?. Nếu có hơn 1000000 dòng thi sao?. Với tốc dộ 4G LTE tiêu chuẩn thì page load tốt, nhưng nếu với 3G low thì sao?

Kiểm thử hiệu năng chia thành hai loại chính sau đây:

3.1 Load testing

Load testing is done to verify how well the application works under different defined loads (usually a particular number of users connected at once).

Kiểm tra độ tải của sản phẩm. Có hoạt động tốt như thế nào dưới các tải được xác định khác nhau (thường là một số lượng người dùng cụ thể được kết nối cùng một lúc).

3.2 Stress testing

Không biết nên dịch title là gì nên để yên vậy

Stress testing is done to verify how well the application works under stress (or above the maximum supported load).

Stress testing kiểm tra phần mềm hoạt động như thế nào dưới các áp lực. Tốc độ mạng, độ cũ của trình duyệt

Selenium có hỗ trợ kiết test này bằng cách thiết lập tốc độ mạng hoặc sử dụng các driver cũ hơn (Internet Explorer 9, Internet Explorer 11).

4. Tham khảo thêm về Selenium testing

Cảm ơn vì đã đọc bài, nếu thấy hay hãy chia sẻ bài đọc nha. Happy coding!

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

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

Xem thêm Tuyển tester các tỉnh thành hấp dẫn trên TopDev

1001 câu hỏi của học sinh cuối cấp muốn theo đuổi ngành công nghệ thông tin

1001 câu hỏi của học sinh cuối cấp muốn theo đuổi ngành công nghệ thông tin

Bài viết được sự cho phép của smartjob.vn

1001 câu hỏi của học sinh cuối cấp muốn theo đuổi ngành công nghệ thông tin

Vậy là những ngày hè oi ả đã đến, chỉ còn hơn 1 tháng nữa là học sinh trên mọi miền đất nước sẽ bước vào Kỳ thi Trung học phổ thông quốc gia đầy cam go và thách thức. Đại học là cánh cửa mà rất nhiều thí sinh sẽ phải bước qua để có bằng cấp, để vươn đến những chân trời mới. Hiện nay, Smartjob đã nhận được khá nhiều câu hỏi của các bạn học sinh đang thực sự lo lắng về tương lai của mình. Chúng tôi sẽ giải đáp tất cả mọi thắc mắc của các em để giúp các em được định hướng tốt hơn, có cái nhìn sâu sắc hơn về thực trạng của các trường IT mà các em có ý định theo đuổi.

  10 Kỹ năng quan trọng cần có của Front-end để tìm công việc dễ dàng hơn
  10 thói quen của một lập trình viên thành công
  1. Em yêu thích công nghệ thông tin, nhưng em thấy mình không đủ năng lực thi vào các trường lớn. Vậy em nên nộp đơn vào trường nào? Em có ý định học ở Hà Nội.

Trả lời: Em nên nhớ là học sinh sẽ được nộp đơn sau khi tham dự Kỳ thi trung học phổ thông Quốc gia. Em vẫn còn rất nhiều lựa chọn và vẫn có thể tự quyết khi biết điểm của mình. Một số lựa chọn em cần lưu tâm là Đại học Công nghiệp, ĐH Nông nghiệp, ĐH Kinh doanh và Công nghệ, ĐH Quốc tế Bắc Hà, ĐH Điện Lực, ĐH Tài nguyên và môi trường, ĐH Phương Đông,… Bên cạnh đó còn Bách Khoa Aptech, Arena (chủ yếu về thiết kế đồ họa). Học ở trường top dưới e sẽ cần phải nỗ lực hơn và cơ hội để e phát triển vẫn còn rất nhiều.

  1. Học CNTT có cần giỏi tin và toán không? Em học không tốt 2 môn này nhưng rất thích tìm tòi các thứ về máy tính, web hay game.

Trả lời: Không có 1 tiêu chuẩn nào cho 1 người là dân IT hết tuy nhiên em cần biết học IT có rất nhiều thuật toán, có những kiến thức khá trừu tượng đòi hỏi em phải có tư duy tốt. Tư duy logic và cái nhìn bao quát là hai yếu tố quan trọng quyết định việc em có thành công với ngành nghề này hay không. Mà em có tìm hiểu nhiều về máy tính nên có thể thấy em chỉ không giỏi các thuật toán còn các vấn đề về máy tính hẳn em cũng thông thạo. Có rất nhiều công việc mà em ít phải dùng đến các thuật toán như: Thiết kế web, Thiết kế đồ họa, Kỹ sư mạng, Thương mại điện tử,… Đó là những ngành học mà em hoàn toàn có thể theo đuổi.

Hướng dẫn cài đặt OpenSSL trên Windows 10

  1. Học CNTT có vất lắm không, em thấy các anh chị kêu lắm.

Trả lời: Học CNTT vất với những người lười, không có đam mêm. Học CNTT không vất với những ai thực sự yêu thích và đam mê với nó. Nếu em xác định theo đuổi ngành này, hãy xác định rằng sẽ phải hi sinh nhiều cho nó, dành nhiều thời gian cho nó thì em mới có thể thành công. Nhưng mà thực sự rất vất đấy =)). Kỹ thuật, y, dược không nhàn được đâu em.

  1. Học Công nghệ thông tin Đại học Công nghệ lớp chất lượng cao thế nào anh?

Trả lời: Anh không học những lớp đó và cũng không học trường đó nhưng cũng có bạn bên đấy. Thực sự thì học những trường thuộc Đại học Quốc Gia sinh viên được thầy cô quan tâm nhiều lắm. Em có thể hỏi bất cứ vấn đề gì qua mail, thầy cô luôn sẵn sàng trả lời. Học lớp Chất lượng cao thì em còn được quan tâm hơn nữa, kiến thức luôn đầy đủ, bạn bè tốt, thầy cô nhiệt tình, học bổng thì nhiều nữa. Bên cạnh đó tiếng Anh cũng được chăm chút, các em sẽ đạt 6.0 IELTS trong năm đầu tiên và sẽ chẳng phải lo đầu ra bởi các Tập đoàn lớn luôn săn đón sinh viên năm cuối tại ngôi trường này. Hiện tại đang là thời kỳ vàng của CNTT Việt Nam nên các em cần cố gắng nếu muốn theo học tại đây. Điểm đầu vào sẽ hơi cao chút nhưng anh tin đây là nơi lý tưởng các em có thể đặt nền móng cho tương lai của mình.

  1. Anh thấy học Bách Khoa thế nào, em nghe nói học cũng bình thường mà bị đuổi nhiều lắm. Thực sự em cũng sợ sợ nếu đăng ký vào đó, sợ mình không theo nổi.

Trả lời: Câu hỏi của em anh sẽ trả lời cho cả Đại học Bách Khoa Hà Nội và Bách Khoa Tp. Hồ Chí Minh bởi anh thấy môi trường ở đó tương tự như nhau. Đại học Bách Khoa luôn là 1 trong top 10 trường về Công nghệ thông tin hàng đầu Việt Nam, là cái nôi của rất nhiều nhân tài. Tuy nhiên có một rào cản là ở đó rất nặng về kiến thức hàn lâm, sẽ thực sự nhạt nhẽo và vô bổ nếu em không phải người kiên nhẫn, chăm chỉ. Nếu muốn học ở đó em phải cố gắng rất nhiều để theo kịp chương trình, cân đối giữa học tập và sinh hoạt hàng ngày. Khổ mỗi cái là Bách Khoa toàn đực rựa, lại toàn ông bẩn bựa với nhau, muốn kiếm gái phải sang trường khác, nhất là Kinh tế gần đó chứ sang Xây dựng thì thôi rồi Lượm ơi.

  1. Anh thấy học FPT thế nào?

Trả lời: Ồ câu hỏi của em đơn giản quá, chả biết thế nào là thế nào =)). FPT thì học ở ngoại thành Hà Nội, nói chung trường rất đẹp và đầy đủ tiện nghi. Trong số các trường về CNTT thì FPT là hàng chuẩn đó em. Sinh viên FPT luôn được đánh giá cao bởi ngay khi thi đầu vào đã toàn test IQ các kiểu rồi tư duy cũng rất tốt, được đào tạo bài bản. Không chỉ thế, nếu theo học FPT em sẽ được học các môn năng khiếu như Võ, Trượt Patin, các môn thể dục khác,… Ngoài ra, các hoạt động ngoại khóa cũng khá sôi nổi, không lo buồn chán (trừ khi em tự kỷ chỉ ở nhà học). Về đầu ra thì sinh viên FPT luôn được các Tập đoàn lớn săn đón, nếu không cũng được làm cho FPT luôn. Ớn mỗi cái học phí khá chát. Nếu nhà nào không có điều kiện, sinh viên sẽ phải đi làm thêm để có tiền đóng học và theo học. Đó là tư vấn của riêng cá nhân anh sau khi được sự góp ý của một số tiền bối bên FPT. Còn tình hình thực tế sẽ thay đổi theo từng năm và chỉ sinh viên ở đó mới nắm bắt được.

Tạm thời loạt bài sẽ dừng lại ở câu hỏi thứ 6 bởi mình thấy cũng khá dài rồi. Từ giờ đến đợt Tuyển sinh  Đại học, mình và đội ngũ Smartjob sẽ tiếp tục giải đáp những thắc mắc của các em để các em có được sự chuẩn bị tốt nhất cho bước ngoặt của cuộc đời mình. Cảm ơn các bạn đã chú ý đón đọc.

Bình Phạm

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

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

Xem thêm IT Jobs for Developer hấp dẫn trên TopDev

Làm thế nào để trở thành một Technical Writer chuyên nghiệp? (Phần 1)

technical writer
Làm thế nào để trở thành một Technical Writer? (Phần 1)

Tác giả: Edidiong Asikpo

Trở thành một Technical Writer không chỉ giúp bạn chia sẻ thêm những kiến thức mình biết đến với mọi người mà còn là một cách để tự trau dồi và củng cố những gì mình đã biết!

Technical Writer là gì?

Nói một cách dễ hiểu nhất, technical writer là một cách viết bài trong đó bao gồm những lời giải thích và hướng dẫn đơn giản, dễ hiểu về một chủ đề cụ thể nào đó trong lĩnh vực kỹ thuật, công nghệ.

technical writer
Một technical writer cần những gì?

Technical Writer cần có những kỹ năng gì?

Biết cách triển khai và giải quyết vấn đề

Có vẻ đây sẽ là một khó khăn đối với những người trước nay chỉ biết đến việc coding. Technical writing là quá trình cụ thể hơn, chuyên môn hơn so với việc viết về những vấn đề mang tính chung chung. Mỗi bài viết được chia sẻ về vấn đề kỹ thuật cần truyền đạt được ý tưởng, quan điểm, hướng dẫn và đề xuất những giải pháp hợp lý về mặt kỹ thuật.

Kỹ năng đầu tiên và quan trọng nhất mà mọi technical writer cần có là khả năng truyền đạt và chia sẻ một cách trơn tru bằng ngôn ngữ chính của mình. Bạn nên nắm rõ về các vấn đề ngữ pháp câu, chính tả, diễn đạt để không tạo cảm giác khó hiểu cho người đọc.

Xác định đối tượng độc giả

Xác định, hiểu và điều chỉnh nội dung bài viết của bạn cho một đối tượng cụ thể sẽ làm cho các bài báo hoặc tài liệu của bạn trở nên nổi bật. Đó là lý do tại sao bạn cần biết chính xác đối tượng độc giả của mình là ai.

Khi hiểu rõ nhu cầu của người đọc, bạn sẽ có thể điều chỉnh bài viết của mình để đáp ứng nhu cầu của họ và tự động truyền thông điệp một cách hiệu quả nhất.

  10 bí kíp để startup và FinTech startup thành công đột phá
  Con đường để bạn trở thành tech lead

Đặt tên tiêu đề bài viết phù hợp

Tên bài viết nên mang tính mô tả về nội dung bạn định chia sẻ để tăng tính hiệu quả. Chẳng hạn bạn đừng đặt tên bài viết là “Tìm hiểu sâu về React” (khi nội dung nói về các yếu tố kết xuất trong React) vì có thể làm thất vọng những độc giả đang mong đợi tìm hiểu mọi thứ về React sau khi đọc bài viết của bạn. Thay vào đó, hãy đưa ra một tiêu đề cụ thể mô tả chính xác những gì bạn đã viết trong bài viết của mình như “Cách kết xuất các phần tử trong React”.

Phát triển kỹ năng kỹ thuật của chính bạn

Là một người chuyên viết về các vấn đề kỹ thuật, mục tiêu của bạn sẽ là giúp người đọc hiểu các quy trình hoặc khái niệm phức tạp một cách dễ hiểu.

Để đạt được điều này, bạn cần phải làm quen với chủ đề mà bạn đang viết. Điều đó đồng nghĩa với việc nếu bạn muốn viết một bài báo hoặc tài liệu kỹ thuật về React.js, bạn phải có khả năng sử dụng React cá nhân.

Technical writer đương nhiên cũng không thể biết tất cả mọi thứ. Vì vậy, mặc dù bạn có thể quen thuộc với một công nghệ, đôi khi bạn sẽ phải nghiên cứu một ngôn ngữ hoặc khuôn khổ để hiểu nó tốt hơn trước khi bắt đầu viết về nó.

Điều này sẽ đảm bảo rằng bài viết của bạn là chính xác và truyền đạt dữ liệu cần thiết một cách hiệu quả nhất. Bạn chắc chắn không muốn chia sẻ thông tin sai lệch hoặc gây nhầm lẫn.

Xây dựng cách hành văn mang dấu ấn cá nhân

Bạn đã bao giờ tự hỏi tại sao mọi người lại thả những bình luận như “wow, cuối cùng tôi đã hiểu khái niệm này nhờ bài viết của bạn” hoặc “Tôi đã đọc các bài báo khác nhưng tôi không hiểu khái niệm này cho đến khi tôi đọc của bạn, cảm ơn bạn!” trong phần bình luận của các bài viết chưa?

Câu trả lời chính là vì giọng văn độc đáo của tác giả, cách diễn đạt của họ khác biệt với những người khác. Điều đó có nghĩa là gì? Nó có nghĩa là tất cả mọi người là duy nhất.

Vì vậy, nếu hai lập trình viên cùng viết về một chủ đề, một số độc giả sẽ hiểu một trong những bài viết của họ nhiều hơn họ hiểu bài kia. Trong khi những người khác sẽ hiểu bài viết thứ hai nhiều hơn hiểu bài viết đầu tiên. Tại sao? Bởi vì cả hai đều có một giọng nói riêng sẽ phù hợp với một số người và không phù hợp với những người khác.

Phỏng dịch theo bài viết gốc tại freecodecamp.org

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

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Phát triển lập trình Android cùng Kotlin

Phát triển lập trình Android cùng Kotlin

Kotlin là một plug-in giúp bạn tăng tốc lập trình Android. Vì sự bất tiện của việc truy xuất các control trên giao diện nên plug-in Kotlin ra đời. Hiện nay, nhiều công ty tại Việt Nam cũng đang tìm kiếm các lập trình viên có thể lập trình Android với Kotlin.

Về chuyên gia chia sẻ

  • Anh Toàn Trần hiện hiện đang là Vice President, Mobile tại LAZADA. Đồng thời anh cũng là chuyên gia trong mảng Kotlin, được công nhận bởi Google (GDE).
  • Anh đã gắn bó với công việc Software Developer được hơn 9 năm. Anh đã trải qua quá trình làm việc với nhiều công việc khác nhau nhưng khoảng 80% thời gian làm việc cho đến hiện tại chủ yếu đều liên quan đến phát triển app Android.

Tuyển lập trình android lương hấp dẫn up to 40M

Anh có gặp khó khăn nào khi chuyển từ nghiên cứu NLP sang lập trình Android không?

Nếu bạn là người làm thuần về nghiên cứu thì sẽ dễ dàng hiểu rằng ngôn ngữ sử dụng trong AI programming chủ yếu liên quan đến việc cố gắng xử lý logic như thế nào thôi, do đó khi chuyển sang làm về ứng dụng sẽ có một vài thứ bạn cần phải bổ sung. Phần chuyển giao giữa hai yếu tố này không yêu cầu bạn cần phải thông suốt mọi thứ ngay từ đầu mà chỉ cần có đam mê và cảm thấy hứng thú thì bạn có thể dành thời gian để bổ sung dần những kiến thức mình còn thiếu.

May mắn là thời gian đầu thực hiện việc nghiên cứu mình chủ yếu làm việc với Java nên sau này chuyển giao sang làm Android thì Java vẫn là ngôn ngữ chính. Nhờ vậy, về mặt ngôn ngữ không có giới hạn gì quá lớn nên có thể xem đây là điều khá thuận lợi cho mình khi bắt đầu lộ trình lập trình Android với Kotlin.

  Có nên học Kotlin?
  Java đang ngăn cản sự phát triển của Android và Kotlin không phải là cách giải quyết

Động lực nào để anh đưa ra sự thay đổi trên?

Cá nhân mình nghĩ khi còn trẻ chúng ta có nhiều lựa chọn hơn nên có thể dễ dàng hơn trong việc đưa ra quyết định, chứ không hẳn là vì một động lực quá to tát nào khác. Lúc đó mình đã làm việc trong nhóm nghiên cứu của các thầy được một thời gian, sau đó việc chuyển giao cũng diễn ra một cách hết sức tự nhiên.

Mình có hợp tác làm chung một số projects với bạn bè cũng như các dự án freelance và thấy khá thú vị. Mình cảm thấy việc có thể kiếm thêm thu nhập và tích lũy kinh nghiệm từ các dòng code trong phát triển phần mềm là một điều rất hay ho và quyết định gắn bó với công việc này.

Anh có thể chia sẻ về công việc hàng ngày tại Lazada?

Hiện tại ở Lazada mình đang là leader của một team với khoảng 6 thành viên. Công việc chính của mình là đảm bảo toàn bộ hệ thống ứng dụng dùng trong logistics được vận hành trơn tru ở tất cả các quốc gia mà Lazada hoạt động.

Một ngày mình phải làm khá nhiều việc nhưng có thể tóm tắt lại trong hai công việc quan trọng nhất là communicate – giao tiếp và trao đổi để đảm bảo các hoạt động được thông suốt giữa các stakeholders có liên quan đến công việc của mình. Cũng như khi mọi người cần giúp đỡ thì mình sẽ đóng vai trò giúp mọi người không bị block và công việc trôi chảy hơn.

Ứng dụng thương mại điện tử có gì khác so với các ứng dụng thông thường?

Khi làm việc để phát triển những ứng dụng ở mức vài trăm đến vài nghìn users so với vài chục triệu users, đây đã là hai câu chuyện khác nhau. Bất cứ khi nào có sự cố xảy ra thì ảnh hưởng của app lên user là rất lớn. Do đó, điều cần tập trung cao độ nhất của một ứng dụng có lượng user lớn là đảm bảo tính ổn định của hệ thống. Khi hệ thống có bất kỳ vấn đề nào xảy ra mà không có khả năng giải quyết sự cố trong thời gian thật, không biết nguồn cơn của vấn đề là từ đâu thì rắc rối sẽ rất lớn.

Điều gì khiến anh yêu thích ngôn ngữ lập trình Kotlin?

Mình đến với Kotlin theo một cách khá tình cờ. Năm 2015 – 2016, khi lần đầu tiên xuất hiện Kotlin chỉ là một dạng dự án đang được nghiên cứu. Mình vô tình biết được có nhiều người đã lập trình Android với Kotlin, vì thời điểm đó mình chỉ quan tâm đến các vấn đề của android nên đó cũng là lý do mình bắt đầu tìm hiểu về Kotlin.

Khi tìm hiểu sâu hơn, mình nhận thấy Kotlin có thể giải quyết được rất nhiều thứ. Kotlin ngắn gọn, viết ít nhưng vẫn giải quyết được mục tiêu đã đặt ra. Nó cũng rất chú trọng vào vấn đề readibility của ngôn ngữ.

Chẳng hạn như khi làm việc với Java 8 (dùng trong lập trình Android), bạn sẽ phải viết khá nhiều nhưng đạt được rất ít các tính năng cơ bản của feature. Trong khi đó, khi chuyển sang Kotlin, bạn sẽ có được tính năng feature gói gọn trong data class. Rất nhiều tính năng mình phải vật vã làm việc với Java thì lại trở thành một feature rất hiển nhiên trong Kotlin, đó chính là một trong những lý do mình quyết định lựa chọn nó. Sau đó may mắn là Google quyết định lựa chọn Kotlin trở thành first class language để hỗ trợ cho Android và trở thành trending của cả cộng đồng.

Anh có nhận xét gì về cộng đồng sử dụng Kotlin tại Việt Nam?

Đối với những người mình biết và đang làm trong mảng Android, hầu hết mọi người đều chuyên lập trình Android với Kotlin. Lí do là nhờ sự thuận tiện mà Kotlin mang lại khi sử dụng. Khi bạn đang làm việc với một hệ thống được build bằng Java thì bạn không cần shut down phần làm việc vẫn có thể chuyển 100% sang Kotlin. Vừa có thể làm việc bằng Java vừa có thể làm việc bằng Kotlin.

Sự kết hợp và chuyển tiếp giữa Kotlin và Java diễn ra rất tự nhiên, bạn có thể gọi Java code từ Kotlin và gọi Kotlin code từ Java. Bên cạnh đó, có thể thấy rằng phần lớn cộng đồng tập trung hơn ở mảng Kotlin vào Android, dùng Kotlin để build ứng dụng Android. Ngoài ra, hiện tại cũng có một số dev đang cố gắng thử nghiệm Kotlin trên backend development. Chẳng hạn như Spring vài framework của backend service, nhưng hiện tại vẫn chưa thật sự phổ biến.

Xem thêm 5 điều lập trình viên Java Developer chắc chắn sẽ thích ở Kotlin

Dự đoán của anh về ngôn ngữ này trong 5 năm sắp tới?

5 năm là khoảng thời gian khá dài, nhưng theo mình suy đoán thì mọi thứ vẫn sẽ ở đấy. Hiện tại Google đang chuyển đổi các libraries, các projects mà họ support cho Android development thành Kotlin code.

Nghĩa là toàn bộ thư viện đó sẽ được support theo feature của ngôn ngữ Kotlin, sử dụng Kotlin làm ngôn ngữ chính để lập trình Android với Kotlin. Điều đó sẽ giúp động viên cộng đồng developers cố gắng tuân theo các tiêu chuẩn của Kotlin khi sử dụng những projects mới của Google support cho developers.

Anh có thể chia sẻ bí quyết cho các bạn đang tìm hiểu về Kotlin không?

Nếu dành mỗi ngày một buổi để nghiên cứu thì sau khoảng một tuần, bạn sẽ nắm được hầu hết các feature căn bản của Kotlin. Còn để thật sự chuyên nghiệp và hiểu hết các vấn đề thì bạn phải đọc code, sử dụng code cũng như để biết được khi nào nên sử dụng feature nào, bạn phải luyện tập nhiều hơn. Sẽ phải mất ít nhất 1 – 3 tháng cho việc cải thiện kiến thức của mình về Kotlin và có thể thành thục việc lập trình Android với Kotlin.

Video demo cách tạo một ứng dụng bằng Jetpack Compose

Công việc đầu tiên về Android anh làm sau khi ra trường như thế nào?

Trong 3 tháng thực tập đầu tiên, mình chịu trách nhiệm chính trong việc assignment web với các công nghệ của Microsoft. May mắn là công ty mình làm việc lúc đó cho phép các thực tập sinh được phép chọn đường hướng phát triển công việc. Lúc đó công ty đang thiếu nhân sự tiếp nhận project mới về mobile app, và mình là người làm việc với dự án này. Sau đó mình lựa chọn đi theo con đường phát triển mobile app trên Android luôn.

Anh có thể chia sẻ kỷ niệm đáng nhớ trong quá trình làm việc của mình?

Kỷ niệm đáng nhớ nhất có lẽ là ở công việc thứ 3 của mình. Khi đó mình phải trải qua quá trình phỏng vấn với rất nhiều vòng. Đó cũng là lần đầu tiên mình được trải nghiệm khái niệm phỏng vấn hai chiều, nghĩa là người đi tìm việc đang cố gắng bán kỹ năng của mình và tìm kiếm công ty phù hợp với nhu cầu, bạn thấy công ty đó có thỏa mãn nhu cầu của mình không.

Tức là bạn cần có một bộ tiêu chuẩn riêng phù hợp với nhu cầu phát triển bản thân của mình và đồng thời bán kỹ năng mình có cho công ty đó để công ty, làm thế nào để công ty muốn mua bạn về làm việc ho họ. Quá trình phỏng vấn này của mình kéo dài 3 – 4 tháng trước khi mình ký hợp đồng chính thức.

Quan điểm của anh khi là leader có gì khác biệt so với khi còn là junior?

Mỗi công ty khác nhau sẽ có một bộ tiêu chuẩn khác nhau để định nghĩa xem bạn đang ở level nào và khi nào thì có thể đạt được level mới.

Vị trí leader đầu tiên là khi mình làm việc ở công ty software outsourcing chuyên về base startup cho các công ty bên Mỹ. Họ có một bộ tiêu chuẩn riêng về việc khi nào bạn sẽ sẵn sàng lên một vị trí mới và trở thành lead.

Trong đó tập trung làm rõ các vấn đề: thứ nhất bạn muốn trở thành một leader như thế nào? Một trong những tiêu chuẩn để thành leader là phải có khả năng giao tiếp tốt. Vì trong quá trình làm việc, bạn sẽ phải trao đổi và cộng tác liên tục với các stakeholders, với team, với nhiều thành phần khác nhau trong một công ty.

  10 tài liệu lập trình Android miễn phí từ cơ bản đến nâng cao

Khi có vấn đề xảy ra mỗi ngày thì giao tiếp trở thành yếu tố then chốt để bạn có thể giải quyết được vấn đề, giải quyết mâu thuẫn và những bài toán hóc búa có thể xảy ra. Leader phải giải quyết được các vấn đề này để sản phẩm của công ty có thể mang lại giá trị cuối cùng hữu ích cho người dùng. Do đó, khả năng giao tiếp trở thành một trong những yếu tố then chốt mà một leader cần có.

Thứ hai là yếu tố kỹ thuật, một trong những yếu tố quan trọng là bạn cần biết mình đang nói về vấn đề gì và có thể giải thích các yếu tố này một cách rõ ràng, có thể hỗ trợ người khác để giải quyết vấn đề.

Một yếu tố khác cũng rất cần thiết là giúp đỡ các thành viên trong team phát triển, để đạt được những vị trí mới trong sự nghiệp của họ.

Với vị trí hiện tại thì công việc của anh đang thiên về kỹ thuật hay phát triển con người nhiều hơn?

Công việc của mình chịu trách với cả hai mảng này nhưng nhiệm vụ chính vẫn là quản lý team và các dự án mà team chịu trách nhiệm, đảm bảo sản phẩm hoạt động tốt và team có thể gắn kết được với phần còn lại của cả công ty.

Còn về vấn đề phát triển con người thì nhiệm vụ chính của mình là cải thiện khả năng làm việc của cả team. Mình sẽ có một hệ thống đánh giá và hỗ trợ tất cả thành viên để đảm bảo mọi người cùng follow một giá trị của engineering và cải thiện engineering base của cả team cũng như đảm bảo product được tạo ra có thể match với practice của cả team.

Đồng thời mình cũng thường xuyên training và sharing kiến thức cho tất cả mọi người trong team và chịu trách nhiệm cho việc tuyển dụng nhân sự. Mình phải dành khá nhiều thời gian cho việc quản lý team và thời gian dành cho việc coding sẽ không còn nhiều. Do đó đối với những leads vẫn muốn dành thời gian cho việc coding, bạn không nên làm việc ở những phần quá quan trọng để tránh làm gián đoạn công việc của cả team.

Anh có lời khuyên nào dành cho các bạn theo đuổi mảng này không?

Một trong những mô hình phát triển phù hợp với khá nhiều người ở nhiều domain khác nhau là mô hình chữ T. Ở giai đoạn đầu, hãy cố gắng mở rộng kiến thức của bạn càng nhiều càng tốt. Vì ở giai đoạn đầu, lúc mới ra trường nhiều khi bạn vẫn chưa thật sự xác định được bạn muốn gì và thích làm gì.

Khi đã làm quen và biết được các công việc khác nhau bạn sẽ xác định được mình muốn đi theo hướng nào nhất. Sau đó hãy bắt đầu phát triển theo chiều sâu, tập trung vào chuyên môn mà mình thích nhất. Hơn nữa, nhờ việc đã làm quen với nhiều domain khác nhau nên khi làm việc, trong quá trình cộng tác với các team khác bạn sẽ có đủ kiến thức để hiểu được và giao tiếp tốt với team khác một cách hiệu quả.

Lời khuyên của mình khi muốn đánh giá xem khả năng của bạn đang ở đâu so với thị trường là apply và đi phỏng vấn. Khi đó bạn sẽ biết được nhà tuyển dụng offer bạn cho vị trí nào và giá trị mà mình có thể mang lại đang nằm ở mức nào.

Xem thêm các vị trí tuyển dụng việc it tại Topdev.vn

Phân tách dữ liệu với DataFrame trong Python

Phân tách dữ liệu với DataFrame trong Python

Bài viết được sự cho phép của tác giả Kien Dang Chung

Video trong bài viết

Trong bài trước, chúng ta đã thu thập và làm sạch dữ liệu, nhưng với những con số như vậy thật khó để nhận ra những quy luật hoặc có ý tưởng để thực hiện những bước tiếp theo. Đây là lúc chúng ta cần đọc dữ liệu đã thu thập được và thực hiện phân tách những dữ liệu cần thiết cũng như trực quan hóa chúng thông qua các biểu đồ.

Tìm việc làm python lương cao các công ty lớn

Xử lý file csv với Python

File cost_revenue_clean.csv là file đã được làm sạch những thông tin nhiễu, không chính xác và cả định dạng lại để máy tính có thể hiểu được. Chúng ta cần đưa dữ liệu này vào máy tính để có thể sử dụng cho các mô hình dự đoán, như vậy các dữ liệu này có thể biểu thị bằng các biểu đồ, nó chứa đựng nhiều thông tin hơn một bảng dữ liệu chỉ toàn các con số.

Trước khi bắt đầu, bạn nên làm quen với Jupyter một công cụ không thể thiếu khi lập trình ngôn ngữ Python. Jupyter cho phép bạn thực hiện các đoạn code Python trực tuyến hoặc bạn có thể cài đặt trên máy tính cá nhân. Ở phần tiếp theo này, giả định bạn đã cài đặt hoặc biết cách sử dụng Jupyter trực tuyến tại Jupyter.org.

  Trải nghiệm lần đầu viết thư viện Python từ ngôn ngữ biên dịch

Đầu tiên, chúng ta tải lên các file dữ liệu cost_revenue_clean.csv với nút Upload trong trang Jupyter. Sau đó, chúng ta sẽ sử dụng module pandas để có thể đọc file dữ liệu này.

import pandas

Pandas là một thư viện Python mã nguồn mở với nhiệm vụ cấu trúc và phân tích dữ liệu. Để đọc dữ liệu từ file csv chúng ta sử dụng phương thức read_csv().

data = pandas.read_csv('cost_revenue_clean.csv')

Trong Jupyter khi code xong, để thực thi bạn nhấn tổ hợp phím Shift + Enter hoặc bấm vào nút Run trong thanh menu nhanh.

Phân tách dữ liệu với DataFrame trong Python

Dữ liệu của chúng ta khoảng hơn 5000 bản ghi, do vậy để có thể nhìn dữ liệu này dưới góc nhìn khoa học, chúng ta sử dụng câu lệnh:

data.describe()

Phân tách dữ liệu với DataFrame trong Python

Chúng ta có các thông tin thống kê như sau:

  • count: tổng số các bản ghi trong dữ liệu
  • min, max: giá trị lớn nhất nhỏ nhất trong dải dữ liệu
  • mean: giá trị trung bình

Chú ý, khi làm việc với các số liệu dạng khoa học, các con số sẽ có định dạng khoa học theo kiểu hàm mũ, thay thế một phần số đó với e +n. Ví dụ:

12345678901 sẽ được hiển thị là 1.23e +10

  Viết một chatbot đơn giản với Python3

DataFrame

DataFrame là cấu trúc dữ liệu hai chiều giống kiểu dạng bảng dữ liệu, nó cho phép áp dụng các thuật toán trên các dòng và cột. DataFrame sử dụng cho rất nhiều các kiểu nhập liệu như:

  • Danh sách
  • Thư viện
  • Series

Để sử dụng DataFrame chúng ta cần import nó dưới dạng một thành phần của pandas.

from pandas import DataFrame

Chú ý, Jupyter hỗ trợ tự động hoàn thành (autocomplete) các từ khóa, do đó chỉ cần gõ vài ký tự trong từ khóa sau đó nhấn Tab là nó tự động chèn vào từ khóa đầy đủ giúp cho chúng ta gõ code nhanh hơn và tránh được những lỗi đánh máy như viết chữ hoa – thường.

Chúng ta thực hiện lấy ra các cột dữ liệu thông qua DataFrame được gọi là bóc tách hay phân tách dữ liệu từ dữ liệu gốc.

X = DataFrame(data, columns = ['product_budget_usd'])
y = DataFrame(data, columns = ['worldwide_gross_usd'])

Bài hướng dẫn dừng lại tại đây, trong bài tiếp theo chúng ta sẽ vẽ biểu đồ dữ liệu có được khi phân tách.

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

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

Xem thêm Việc làm it đà nẵng, hcm, hà nội hấp dẫn trên TopDev

Tìm hiểu và thực hành với PUG cơ bản

Bài viết được sự cho phép của tác giả Trần Anh Tuấn

Chắc hẳn các bạn đã nghe qua SASS SCSS hay LESS giúp cho việc code CSS được nhanh hơn, sử dụng được nhiều chức năng hay như dùng biến, mixins, functions(hàm)…. Có thể tái sử dụng code một cách hợp lý giúp cho việc code trở nên linh hoạt, nhanh lẹ tiết kiệm thời gian…

  5 bước tìm hiểu sơ lược thành phần một web HTML động
  Cách để tạo một Switch trên iPhone bằng HTML và CSS

Thì bên HTML cũng thế nó cũng có những engine như CSS giúp cho việc code trở nên nhanh chóng, tiện lợi tiết kiệm nhiều thời gian cho lập trình viên và 1 trong số đó chính là PUG. Hôm nay mình sẽ giới thiệu sơ sơ cơ bản về PUG cho các bạn biết nó là gì cũng như cách sử dụng chúng cơ bản trước nhé

# Khái niệm

PUG là một template engine cực kỳ mạnh giúp thay đổi hoàn toàn cách viết HTML với những cú pháp hoàn toàn mới, nhiều tính năng tiện ích và tất nhiên sẽ giải quyết những vấn đề mà HTML không thể làm được.

Nếu các bạn nào đã từng làm qua SASS SCSS hay LESS bên CSS thì nó cũng tương tự đó nhưng cái PUG này là dành cho HTML nà.

# Thuộc tính

Về các thuộc tính của PUG thì ở trang chủ của PUG đã trình bày rất chi tiết và kỹ càng nên mình sẽ không trình bày lại nữa. Các bạn có thể tham khảo ở đây. Ở bài viết này mình chủ yếu sẽ hướng dẫn các bạn cách sử dụng PUG đơn giản trước.

Việc code PUG sẽ giúp bạn tiết kiệm thời gian là vì trong HTML mỗi lần các bạn gõ thì các bạn phải gõ như thế này

<div class="header">
<div class="header-inner"></div>
</div>

Khi các bạn dùng PUG rồi thì nó sẽ lược bỏ bớt còn như thế này mà thôi. Và PUG sẽ render ra HTML y như đoạn code mà mình gõ ở trên.

.header
 .header-inner

Tìm hiểu và thực hành với PUG cơ bản

Trên đây là một front-end template workflow đơn giản mà mình tự tìm hiểu và xây dựng cho bản thân. Để giúp cho công việc cắt PSD một cách nhanh chóng tiện lợi bằng cách phân chia cấu trúc thư mục gọn gàng hợp lý cũng như sử dụng PUG để code HTML nhanh hơn và SCSS để code CSS lẹ hơn.

# Sử dụng

Để code thử PUG thì rất đơn giản các bạn vào Codepen thần thánh vào tạo một pen bất kỳ sau đó tại mục HTML chọn PUG như hình

DÀNH CHO BẠN:

Mình có khoá học HTML CSS từ cơ bản tới nâng cao cho người mới, nếu bạn quan tâm thì bạn có thể học thử miễn phí bằng việc nhấn vào đây nha.

Tìm hiểu và thực hành với PUG cơ bản

Và sau đó các bạn tập code thử. Các bạn có thể tham khảo Codepen mà mình code lúc tập luyện ở dưới đây

Nếu các bạn muốn xem lúc nó render ra HTML như thế nào thì các bạn nhấn vào nút mũi tên bên phải sau đó chọn View CompiledHTML thì Codepen sẽ tự động render từ PUG ra HTML cho các bạn dễ hình dung

Tìm hiểu và thực hành với PUG cơ bản

Và các bạn sẽ được kết quả như mong đợi. Nếu các bạn muốn chuyển về code PUG ban đầu thì chỉ cần nhấn View Uncomplied HTML là được nà.

Tìm hiểu và thực hành với PUG cơ bản

# Mixins

Sau khi các bạn đọc ở trang chủ của nó về những thuộc tính, điều kiện if else, vòng lặp,… thì trong số đó có một tính năng rất hay mà mình luôn dùng khi code với PUG đó là Mixins.

Bình thường khi các bạn cắt 1 template PSD chắc chắn sẽ gặp nhiều trường hợp dùng đi dùng lại cấu trúc tiêu đề giống nhau hoặc là hình ảnh, đường dẫn(link) hay là một block nhỏ nào đó thì việc dùng Mixins nó cho phép ta tạo một block trong PUG và sử dụng lại nhiều lần.

Ví dụ bạn code 3 item nào đó có cấu trúc giống nhau và trong HTML bạn code nó như thế này sau đó copy ra 3 lần và thay đổi nội dung tương ứng cho các item còn lại đúng không nào.

<div class="wrap">
<div class="item">
<h2 class="item-title">this is title</h2>
<p>Lorem ipsum</p>
<img src="demo.jpg"/>
</div><!--2 item con lai-->
</div>

Còn trong PUG thì mình sẽ code như thế này. Các bạn có thể xem thêm demo của mình tại Codepen luôn nhé

mixin item(title, desc, src)
 .item
 h2.item-title= title
 p= desc
 img(src=src)

.wrap
 +item("haha","hehe","demo.jpg")
 +item("haha2","hehe2","demo2.jpg")
 +item("haha3","hehe3","demo3.jpg")

Mình viết một cái Mixin đơn giản có tên là item với cú pháp mixin tênmixin(biến ở trong này) sau đó mình viết nội dung mà mình muốn để dùng lại cũng như là gán các biến vào các vị trí các thẻ HTML tương ứng với  dấu = để khi mình gọi nó ra bằng cú pháp +tenmixin(các giá trị tương ứng) khi tạo ở Mixin.

Nếu các bạn nào đã học JS tới phần function(hàm) thì đọc vô cái Mixin sẽ thấy nó na ná nhau và hiểu ngay. Còn bạn nào chưa dùng bao giờ thì chắc hơi bỡ ngỡ và cần phải luyện từ từ mới hiểu được hoặc học JS là sẽ hiểu liền nà.

Ngoài ra còn 2 Mixins hay khác nữa các bạn có thể tham khảo thêm tại Codepen này của mình luôn nhé. Mình có viết kèm giải thích trong Codepen cho các bạn hiểu luôn ý. Các bạn nhớ nhấn vào Codepen để xem code PUG nha

# Tạm kết

Đây chỉ mới là bước cơ bản mình hướng dẫn cho các bạn biết thôi, sau này mình sẽ hướng dẫn các bạn xây dựng hoàn chỉnh một frontend template workflow giống của mình ở trên. Sử dụng GULP để buid lên. Giúp các bạn tự tạo ra riêng cho bản thân một template để hỗ trợ cắt PSD được nhanh chóng.

Để cho mau hiểu hơn về PUG các bạn nên tham khảo code ở một số trang nước ngoài và trang chủ của PUG cũng như trên Youtube với từ khóa “pug html mixins, pug html if else, pug html tutorials….”. Cám ơn các bạn đã đọc bài viết và chúc các bạn một ngày tốt lành nhé..

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

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

Xem thêm Việc làm Developer hấp dẫn trên TopDev

Hướng dẫn tạo certificate SSL trên Windows (file key, pem)

Hướng dẫn tạo certificate SSL trên Windows (file key, pem)

Bài viết được sự cho phép của tác giả Trần Hữu Cương

Hướng dẫn tạo certificate SSL trên Windows (file key, pem)

Trong bài này mình sẽ tạo file .key, .pem, .crt để làm certificate chạy https

(Lưu ý: Với server chạy bằng Java bạn cần chuyển file pem, private key sang p.12 (PKCS#12))

(xem thêm: Hướng dẫn tạo certificate SSL trên ubuntu (file key, pem))

  Hướng dẫn tạo certificate SSL trên ubuntu (file key, pem)

Hướng dẫn tạo certificate SSL trên Windows (file key, pem)

Windows không tích hợp sẵn lệnh openssl do đó ta cần phải cài đặt openssl trước.

(Xem lại: Hướng dẫn cài đặt OpenSSl trên Windows)

1. Tạo file .key

openssl genrsa -des3 -out {ten_file.key} {do_dai_key}

Ví dụ:

openssl genrsa -des3 -out cert.key 2048

Hướng dẫn tạo certificate SSL trên Windows (file key, pem)

Khi generate private key, hệ thống sẽ yêu cầu nhập pass phrase, bạn nhập và nhớ pass phrase để generate public key nhé.

Kết quả:

Hướng dẫn tạo certificate SSL trên Windows (file key, pem)

2. Tạo file .pem

openssl req -x509 -new -nodes -key {ten_file.key} -sha256 -days 1024 -out {ten_file.pem}

Ví dụ:

openssl req -x509 -new -nodes -key cert.key -sha256 -days 1024 -out cert.pem

Nhập lại pass phrase mà bạn đã sử dụng để generate private key ở trên.

Sau đó nhập các thông tin của certificate

Hướng dẫn tạo certificate SSL trên Windows (file key, pem)

Kết quả:

Hướng dẫn tạo certificate SSL trên Windows (file key, pem)

Bạn cũng có thể tạo file .crt, chỉ cần đổi đuôi .pem thành đuôi .crt là được

Demo:

Đây là thông tin SSL Certificate hiển thị trên trình duyệt khi mình dùng 2 file trên apply cho website của mình:

Hướng dẫn tạo certificate SSL trên Windows (file key, pem)

Okay, Done!

References: https://zeropointdevelopment.com/how-to-get-https-working-in-windows-10-localhost-dev-environment/

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

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

Xem thêm Việc làm Developer hấp dẫn trên TopDev