Công Nghệ

Review và giải thích sâu về framework, ngôn ngữ, AI, blockchain… ngắn gọn, dễ hiểu, cập nhật liên tục như git pull ‑‑rebase.

1826 bài viết

6 Công cụ miễn phí cực hay cho Startup

6 Công cụ miễn phí cực hay cho Startup

Bài viết được sự cho phép của tác giả Trung Đức 1. Beetle.email – EMAIL MARKETING INSIGHT Đúng như tên gọi, hệ thống này giúp bạn follow rất nhiều chiến dịch của các thương hiệu lớn cũng như timeline triển khai dự án và analytics của từng chiến dịch. Dựa vào những campaign này, và những số liệu thực tế, bạn hoàn toàn có thể có những chiến dịch Email Marekting phù hợp >>> Link: https://beetle.email/ 2. Templated.co Website cung cấp template viết bằng CSS và HTML5 miễn phí nhưng cực kì chất lượng Hiện website có khoảng 845 template, tất cả đều được thiết kế theo phong cách hiện đại. 10 Công cụ Go-To Tech dành riêng cho các Software Developer 11 công cụ hữu ích để kiểm tra và tối ưu hóa các file CSS Những template này đều hỗ trợ giao diện responsive, được thiết kế và code bởi Cherry + AJ và được xuất bản theo giấy phép Creative Commons. Bạn có thể sử dụng miễn phí những template này cho nhu cầu cá nhân hoặc thương mại. >>> Link: https://templated.co/ 3. Ruzzit.com Trang web giúp bạn nắm bắt xu hướng content “hot” nhất của các mạng xã hội hàng đầu thế giới. >>> Link: http://www.ruzzit.com/ 4. Compressor.io Công cụ giúp bạn có thể nén tối đa kích thước của ảnh mà vẫn giữ được một chất lượng “high quality” cho chúng >>> Link: https://compressor.io/ 5. EMOTIFY – EMOTIONAL INTELLIGENCE FOR YOUR WEBSITE Bạn thấy các tương tác cảm xúc của Facebook rồi chứ? Hệ thống này cũng tương tự, nó sẽ giúp bàn chèn những icon cảm xúc và người dùng sau khi đọc xong hoặc sử dụng xong sản phẩm của bạn, họ có thể phản hồi về những điều họ cảm thấy. Vì...

By stationd
Tại sao phải tham gia phát triển open-source

Tại sao phải tham gia phát triển open-source

Tác giả: Đạt Cao Mạnh Dạo quanh các trang/video nói về định hướng công việc của ngành IT cho các bạn mới ra trường ở Việt Nam. Mình thấy hầu hết con đường mà mọi người nói tới là Đi làm ở một công ty làm product hay outsource. Tích lũy đủ kinh nghiệm để lên các vị trí cao hơn. Tiếp tục học lên cao ở nước ngoài để kiếm các cơ hội làm việc quốc tế. Startup. Mỗi hướng đi đều có cái thuận lợi và khó khăn nhất định, nhưng mình chưa thấy ai nói về việc làm các project mã nguồn mở như là một con đường để phát triển cả. Mình hiện tại là commiter của Apache Solr và đã tham gia vào đóng góp cho project này được 5 năm. Hy vọng những thông tin dưới đây sẽ giúp ích được phần nào cho các bạn còn đang băn khoăn phải chọn hướng đi nào. Cơ hội công việc khi tham gia open-source Năm 2014 sau khi sử dụng Apache Solr một thời gian mình có mày mò vào page này https://lucene.apache.org/whoweare.html . Đó là danh sách những người đã và đang tham gia vào phát triển Solr (được gọi là các commiter của project đó). Tra cứu tên của họ thì thấy rằng hầu hết mọi người đều đang làm việc ở một số công ty nhất định. Như là Lucidworks, Elastic, Cloudera, Apple. Tương tự với Apache Spark thì hầu hết đều đang làm ở Databricks. Mình nhận ra rằng các project mã nguồn mở đều có một hoặc một vài công ty đứng sau nó. Giúp định hướng, tuyển dụng lập trình viên để tham gia phát triển các project đó. Điều đáng lưu ý ở đây là bất cứ ai...

By stationd
Những tựa sách nổi tiếng dành cho Software Developer – Phần 1

Những tựa sách nổi tiếng dành cho Software Developer – Phần 1

Tác giả: Andrew Giới thiệu Để thành công, không ai trong chúng ta không cần những lời khuyên giá trị từ những người đi trước. Những lời khuyên đó sẽ được đúc kết từ nhiều người, nhiều thế hệ và đã được chứng minh tính hợp lí của nó thông qua kết quả thực tế mà họ đạt được. Và sách chính là nơi chứa đựng những tinh túy ấy. Dưới đây tôi sẽ đề cập đến những tựa sách cho Software Developer đã được nhiều dev đánh giá là cực kỳ hữu ích với công việc hàng ngày của họ. Những tựa sách chất lượng sẽ giúp bạn có thêm kiến thức về software developing Những cuốn sách được các Software Developer lựa chọn nhiều nhất 1. Clean Code: A Handbook of Agile Software Craftsmanship – Robert C. “Uncle Bob” Martin Robert C. Martin là một Software Developer nổi tiếng thế giới. Trong cuốn sách này, Robert cùng các đồng nghiệp của anh ấy ở Object Mentor đã giới thiệu về những mô hình mang tính cách mạng về cách làm sạch code, loại bỏ những code xấu một cách nhanh nhất để công việc của bạn trở nên hiệu quả hơn. Xem thêm các việc làm Tester hấp dẫn tại Station D Nhiều người dùng đánh giá rằng cuốn sách này sẽ tạo ra những thách thức trong suy nghĩ của bạn về cách clean code và code như thế nào là code xấu. Quan trọng hơn, các Software Developer sẽ tìm được những thông tin hữu ích để đánh giá lại các giá trị trong nghề nghiệp và chuyên môn của mình. Biến Git và GitHub trở thành công cụ đắc lực cho Software Engineer Cách viết CV dành cho Software Developer 2. The Pragmatic Programmer: From...

By stationd
Ngoại truyện: Export file tự động với Selenium webdriver

Ngoại truyện: Export file tự động với Selenium webdriver

Bài viết được sự cho phép của tác giả To Thi Van Anh Tình cờ thì hôm vừa rồi mình có được một chị cùng công ty nhờ xem giúp chị ấy xem đoạn công việc của chị như thế này thì có thể automate được không. Mô tả bài toán đấy thì đại khái như thế này. Bên mình có một số các tài liệu liên quan dự án, chúng được tạo và lưu trữ online trên một hệ thống website nội bộ. Vì tình hình dự án chưa ổn định, nên nội dung trong các tài liệu có thể bị thay đổi thường xuyên. Do đó, để thuận tiện hơn cho việc theo dõi tiến độ và quản lý của mình thì chị ấy sẽ cần phải export, lưu trữ file đó trên máy tính khá nhiều lần và định kỳ, vấn đề ở đây là trên hệ thống đó có đến hàng trăm tài liệu cần được tải xuống mỗi lần. Kể cả trường hợp dù sau này có ổn định thì việc thực hiện cả đến trăm lần những thao tác tẻ nhạt và mất thời gian đó cũng làm mất khá nhiều thời gian. Nên cần một cách nào đó để giải quyết vấn đề này. Từ lời “nhờ vả” đó thì mình cũng bắt tay tìm hiểu kỹ hơn bài toán và vấn đề ở trên. Đầu tiên, kiểm tra tổng quát các bước được thực hiện trên thực tế như thế nào. Sau đó kiểm tra sơ bộ các element của các phần tử sẽ được tương tác. Tiếp đó lựa chọn ngôn ngữ, công cụ để code (ở đây tại vì mình mới làm quen với Python nên cũng muốn thử với nó xem sao, còn nếu không thì mình vẫn dùng...

By stationd
FE CREDIT TECHSPEC – TRẢI NGHIỆM LẬP TRÌNH VÀ LÀM VIỆC TẠI MÔI TRƯỜNG FINTECH HÀNG ĐẦU VIỆT NAM

FE CREDIT TECHSPEC – TRẢI NGHIỆM LẬP TRÌNH VÀ LÀM VIỆC TẠI MÔI TRƯỜNG FINTECH HÀNG ĐẦU VIỆT NAM

Fintech Việt Nam hiện có tốc độ phát triển đứng thứ hai Đông Nam Á. Câu hỏi đặt ra giờ đây không phải là liệu Fintech có thay đổi ngành dịch vụ tài chính hay không, mà là công ty nào sẽ áp dụng Fintech tốt nhất để vươn lên dẫn đầu? Tại Việt Nam hiện có 154 công ty hoạt động trong lĩnh vực fintech, khoảng 70% đã kêu gọi được vốn đầu tư chạm mốc kỷ lục – 117 triệu USD trong năm 2018. Cũng chính vì vậy, thị trường cạnh tranh khốc liệt đòi hỏi các công ty càng phải nâng cấp công nghệ để phù hợp với xu hướng chuyển đối số, FE CREDIT cũng không nằm ngoài cuộc chơi đó. Trong những năm vừa qua, FE CREDIT đã có những bước tăng trưởng và phát triển mạnh mẽ bằng những sản phẩm công nghệ vượt bậc của mình. Nhiều chuyên gia đánh giá đây cũng là một trong những môi trường công nghệ và tài chính năng động, phù hợp với các lập trình viên muốn tiến xa hơn trong sự nghiệp của mình, đặc biệt là ở mảng tài chính – doanh nghiệp. Trong thời gian gần đây, ngoài những chương trình đầu tư đình đám cho các startup fintech trong khu vực, FE CREDIT còn mở ra nhiều cơ hội nhằm giúp các bạn lập trình viên có thể trải nghiệm làm việc cùng đội ngũ quốc tế chuyên nghiệp nhất thông qua chương trình TECHSPEC. Hãy cùng tìm hiểu công việc của một lập trình viên tại FE CREDIT như thế nào nhé. Sau đây sẽ là chia sẻ của anh Nguyễn Tuấn Cường – Senior Software Developer tại FE CREDIT Chào anh Cường, anh có thể giới thiệu một chút về...

By stationd
Quy trình phát triển phần mềm

Quy trình phát triển phần mềm

I. Tổng quan về quy trình phát triển phần mềm Một quy trình tốt và hợp lí luôn tạo ra những sản phẩm đạt tiêu chuẩn. Nó giúp tương tác hóa các hoạt động và yếu tố với nhau một các nhịp nhàng, đem lại hiệu quả. Có thể cho rằng quy trình phần mềm đem lại chất lượng, năng suất, giá thành phần phềm, từ đó tăng tính cạnh tranh và đem lại lợi nhuận cao cho doanh nghiệp. 1. Khái niệm Quy trình phát triển phần mềm Quy trình phát triển phần mềm là một tập hợp các hoạt động tổ chức mà mục đích của chúng là xây dựng và phát triển phần mềm. Những câu hỏi được đặt ra ở đâu là: Nhân sự: Ai sẽ làm? Ai làm gì? Thời gian: Khi nào làm? Làm mất bao nhiêu thời gian? Phương pháp: Làm như thế nào? Công cụ: Dùng công cụ gì để làm công việc này? Chi phí: Chi phí bỏ ra bao nhiêu? Thu về bao nhiêu? (ước tính) Mục tiêu: Mục tiêu hướng đến là gì? Mỗi loại hệ thống khác nhau thì cần những quy trình phát triển khác nhau. 2. Các hoạt động cơ bản của quy trình phát triển phần mềm Có 4 thao tác là nền tảng của hầu hết các quy trình phát triển phần mềm: Đặc tả phần mềm: Định nghĩa được các chức năng, điều kiện hoạt động của phần mềm. Quy trình phát triển phần mềm: Là quá trình xây dựng các đặc tả. Đánh giá phần mềm: Phầm mềm phải được đánh giá để chắc chắn rằng ít nhất có thể thực hiện những gì mà tài liệu đặc tả yêu cầu. Tiến hóa phần mềm: Đây là quá trình hoàn thiện các...

By stationd
Tạo website với Firebase Hosting

Tạo website với Firebase Hosting

Bài viết được sự cho phép của tác giả Khiêm Lê Ngày nay thì các trang web là một phần không thể thiếu của Internet, đến nỗi nhiều người còn lầm tưởng Website chính là Internet. Cũng dễ hiểu thôi bởi vì website hầu như là công cụ để giao tiếp với người dùng Internet hiệu quả nhất. Trong bài viết hôm nay, mình sẽ hướng dẫn các bạn cách deploy static website lên Firebase Hosting. Cùng bắt đầu thôi! Youtube Video Tạo project Firebase và thiết lập Firebase CLI Đầu tiên thì các bạn cần truy cập vào console.firebase.google.com, tạo một project mới, bạn có thể xem lại bài viết này của mình để biết cách tạo project firebase. Tiếp theo, chúng ta cần tạo project Firebase trên máy mình. Firebase là gì? Tìm hiểu tính năng và ưu nhược điểm của Firebase Để tạo được project firebase trên máy, cần sử dụng Firebase CLI, các bạn mở command line, gõ lệnh “npm install -g firebase-tools”, lưu ý là máy bạn cần phải có nodejs trước nha. Nếu bị fail, các bạn mở lại command line với quyền admin và chạy lên câu lệnh trên. Sau khi cài đặt xong, các bạn kiểm tra bằng cách chạy lệnh “firebase –version”, nếu trả ra kết quả là phiên bản Firebase CLI thì bạn đã cài đặt thành công. Lưu ý là lúc các bạn đọc blog này có thể Firebase đã có phiên bản mới nên các bạn không cần bận tâm nếu version khác mình nha. Sau khi đã cài đặt Firebase CLI rồi, chúng ta cần phải đăng nhập vào tài khoản Google đã tạo project trước đó. Các bạn chạy tiếp lệnh “firebase login”, nó sẽ hỏi bạn có muốn Firebase thu thập thông tin sử dụng,...

By stationd
Giao tiếp Client / Server bằng gRPC

Giao tiếp Client / Server bằng gRPC

Bài viết được sự cho phép của tác giả Nguyễn Hữu Đồng Hế nhô các bạn, để tiếp tục cho bài viết trước hôm nay mình xin giới thiệu với các cách giao tiếp giữa client/server với tốc độ bàn thờ, mà mình vừa mới tìm hiểu. Trước hết gRPC theo google giới thiệu gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services. gRPC là một RPC framework gíup bạn kết nối giữa các service trong hệ thống, nó hỗ trợ load balancing, tracing, health checking và authentication, hỗ trợ từ ứng dụng mobile, trình duyệt cho tới back-end service. Sử dụng ứng dụng HTTP Client của Angular v4 Chạy ứng dụng Go trên server gRPC sử dụng Protocol Buffer để transfer data thay vì JSON/XML truyền thống nên tốc độ được gia tăng đáng kế, ngoài ra nó cũng dùng RPC thay cho REST API, trong việc thiết kế API, sự khác biệt giữa REST API vs RPC là REST được thiết kế để tập trung vào Resource còn RPC thì tập trung vào action, hành động. Bạn có thể xem kĩ hơn ở đây . Về cơ bản, khi làm việc với gRPC bạn định nghĩa các action, input message, output mesage trong service, sau đó protobuf compiler sẽ generate code ra file theo ngôn ngữ bạn sử dụng. Sau đó bạn sẽ triển khai các action của service như những gì đã bạn đã mô tả . Trong bài viết này, mĩnh sẽ triển khai một User Service cho...

By stationd
Một vài pattern để viết component của React cần dùng chung state

Một vài pattern để viết component của React cần dùng chung state

Bài viết được sự cho phép của tác giả Lưu Bình An compound component Khi gặp tình huống một component không thể đứng độc lập, mà nó buộc phải kết hợp với một component khác và cùng chia sẻ một bộ state và phương thức. Đó là lúc chúng ta cân nhắc cách viết compound component. Một ví dụ rất dễ thấy của compound component là element <select /> và <option /> , <option/> không thể đứng độc lập, nó luôn được đặt trong <select/> có thể truy xuất và gọi các phương thức tương tự như <select/> Tìm việc làm lập trình viên React Tại sao lại sử dụng compound component? Nếu bạn là người viết component, người khác sử dụng component này, các dev khác sẽ cảm ơn bạn rất nhiều. Bạn đóng gói mọi thứ logic vào bên trong component cha như vậy, người sau sẽ không cần bận tâm nữa. // parent component // xử lý event onChange, quản lý state selected value < RadioImageForm > < RadioImageForm.RadioInput /> < RadioImageForm.RadioInput /> < RadioImageForm.RadioInput /> </ RadioImageForm > Với child component của <RadioImageForm /> , để cho nó rõ ràng minh bạch là chúng ta sẽ sử dụng những giá trị cung cấp từ parent, chúng ta dùng kiểu viết <RadioImageForm.RadioInput /> export class RadioImageForm extends React . Component < Props , State > { static RadioInput = ( { currentValue , onChange , label , value , name , imgSrc , key , } : RadioInputProps ) : React . ReactElement => ( // ... ) ; onChange = ( ) : void => { // ... } ; state = { currentValue : '' , onChange : this . onChange , defaultValue : this . props . defaultValue || '' , } ; render...

By stationd
React Router Cheatsheet và mọi thứ bạn cần biết (Phần 1)

React Router Cheatsheet và mọi thứ bạn cần biết (Phần 1)

Tác giả: Reed Barger Nếu bạn đang xây dựng các ứng dụng React cho web, bạn sẽ cần sử dụng một router chuyên dụng để hiển thị các trang và điều hướng người dùng của bạn xung quanh chúng. Đó là lý do tại sao hôm nay chúng ta sẽ xem xét bộ React applications – React Router. Cài đặt React Router Bước đầu tiên để sử dụng React Router là cài đặt package thích hợp. Về mặt kỹ thuật, chúng là ba gói khác nhau: React Router, React Router DOM và React Router Native. Sự khác biệt chính giữa chúng nằm ở cách sử dụng. React Router DOM dành cho các ứng dụng web và React Router Native dành cho các ứng dụng di động được tạo bằng React Native. Điều đầu tiên bạn cần làm là cài đặt React Router DOM bằng cách sử dụng npm: npm install react-router-dom Setup React Router cơ bản Sau khi được cài đặt, có thể đưa thành phần đầu tiên vào để sử dụng bộ định tuyến React được gọi là BrowserRouter. Lưu ý rằng có nhiều loại router react-router-dom cung cấp ngoài BrowserRouter nhưng ở đây sẽ không đi sâu vào phân tích. Nếu chúng ta muốn cung cấp các tuyến trong toàn bộ ứng dụng của mình, nó cần được bao bọc xung quanh toàn bộ cây thành phần của chúng ta. Đó là lý do tại sao bạn thường sẽ thấy nó được bao bọc xung quanh hoặc bên trong thành phần ứng dụng chính: import { BrowserRouter as Router } from 'react-router-dom' ; export default function App ( ) { return ( < Router > { /* routes go here, as children */ } < / Router > ) ; } Đây là chức năng chính của BrowserRouter:...

By stationd
Domain-Driven Design

Domain-Driven Design

Bài viết được sự cho phép của tác giả Edward Thien Hoang Tôi đã có một bài viết về Domain Drive Development (DDD) – First thought để “đặt vấn đề” cho DDD, các bạn có thể tham khảo ở đó trước. Trong phạm vi bài viết này, tôi sẽ tham khảo và diễn đạt lại từ bài viết Domain-Drive Design của tác giả herbertograca. Domain-Drive Design do Eric Evans tạo ra trong cuốn sách nổi tiếng của ông về Domain-Driven Design: Tackling Complexity in the Heart of Software , xuất bản năm 2003. Cuốn sách của Eric Evans là chìa khóa chính thức hóa nhiều khái niệm phát triển phần mềm hiện nay. Cách thiết lập một dự án Symfony để làm việc với Docker Subdomains System Design Cơ Bản: Domain Name System (DNS) Tôi không thể đưa ra một đánh giá toàn diện về DDD trong một bài viết trên blog. Có quá nhiều khái niệm quan trọng liên quan đến DDD. May mắn thay, đó cũng không phải là mục tiêu ở đây. Tuy nhiên, những gì tôi sẽ làm là liệt kê các khái niệm DDD mà tôi thấy có liên quan đến cách tôi muốn tổ chức mã và cách tôi nghĩ về Kiến trúc: các khái niệm hệ thống rộng tạo thành nền tảng cho phát triển tính năng. Trong bài viết, tôi sẽ nói về: Ubiquitous language (Ngôn ngữ chung) Layers Bounded contexts Anti-Corruption Layer Shared Kernel Generic Subdomain UBIQUITOUS LANGUAGE Một vấn đề thường xảy ra trong phát triển phần mềm, xoay quanh sự hiểu biết về mã nguồn, nó là gì, nó làm gì, nó như thế nào, tại sao nó lại … nó thậm chí còn phức tạp hơn để hiểu mã nguồn khi nó sử dụng một thuật ngữ khác...

By stationd
Để học lập trình hiệu quả: Hãy tiếp cận tất cả những gì có thể!

Để học lập trình hiệu quả: Hãy tiếp cận tất cả những gì có thể!

Tác giả: Endy Austin Bạn có thể dành hàng tháng trời để đến phòng tập thể dục mà vẫn không thấy kết quả gì vì cách bạn tập luyện không đúng. Hầu hết chúng ta đều biết điều này. Và điều này cũng hoàn toàn đúng khi học lập trình. Bạn có thể dành hàng tháng trời để học, thử những thứ khác nhau, xem qua các hướng dẫn và vẫn cảm thấy như bạn là người mới bắt đầu. Vậy làm thế nào để học lập trình hiệu quả hơn? Học lập trình bằng cách nào để nhanh đạt được kế hoạch đặt ra? Học lập trình với mẹo 2 phút Nếu tôi nói với bạn rằng có một hướng dẫn dài 2 phút giúp bạn thành thạo JavaScript ngay lập tức, bạn có xem thử không? Dù bạn trả lời “có” hay “không”, điều đó không quan trọng. Nghĩa là, với điều kiện bạn hiểu sâu xa rằng chỉ một hướng dẫn ngắn thôi đã đi ngược lại nguyên tắc làm chủ bất kỳ miền nào. Tóm lại, đây là cách làm việc hiệu quả mà bạn nên tuân theo: Bắt đầu với một đống thông tin khổng lồ. So sánh kiến ​​thức mới với những gì bạn đã biết trước đây. Liệt kê những điểm khác nhau mà thông tin mới và cũ mang lại. Kiểm tra bản thân bằng cách tạo ra các kiến ​​thức của bạn từ đầu. Và cuối cùng, hãy hướng dẫn lại cho người khác. 10 câu nói cực hay về lập trình 10 lý do cho thấy tại sao bạn nên theo học ngôn ngữ lập trình Java Vì vậy, lần tới khi bạn nhìn thấy một hướng dẫn duy nhất trong đời hứa hẹn bạn sẽ thành thạo chỉ trong...

By stationd