TopDev
Sort by
1 results
HIGHLIGHT COMPANY

COMPANY INFORMATION

job-imageCÔNG TY CỔ PHẦN TẬP ĐOÀN GTẬP ĐOÀN G-GROUP
Thành phố Hà Nội, Thành phố Hồ Chí Minh Hơn 1000

RELATED POSTS

Marketplace Illustration
"Oxy hóa" nền tảng IoT nông nghiệp bằng Rust

Bài viết được sự cho phép của tác giả Nguyễn Hồng Quân Trong giới lập trình, "oxy hóa" là một cách nói vui ám chỉ việc viết lại (một phần hoặc toàn bộ) một phần mềm bằng ngôn ngữ Rust, đây là một lối chơi chữ, vì "Rust" còn có nghĩa là "rỉ sét", một hiện tượng do sự oxy hóa gây nên. Gần đây mình cũng mạnh dạn oxy hóa một phần nền tảng IoT nông nghiệp của AgriConnect. Động lực khiến mình viết lại nền tảng IoT của AgriConnect bằng Rust là để giảm tải hệ thống, tăng cường khả năng chịu áp lực trong tương lai. Phần mềm mình đang nói đến ở đây có tên mã là "Hạt Thóc". Nghe tên khiêm tốn, nhỏ bé thôi nhưng nó vận hành theo kiểu SaaS (Software as a Service), tức một phần mềm sẽ vận hành cùng lúc nhiều trang trại khách hàng. [...]

Marketplace Illustration
Tận dụng phong cách xử trí lỗi của Rust trong lập trình web

Bài viết được sự cho phép của tác giả Nguyễn Hồng Quân Gần đây, tôi chuyển đổi website này sang viết bằng Rust và rất tâm đắc với phong cách xử trí lỗi (error handling) của Rust, khi ứng dụng vào việc viết web. tôi sẽ trình bày tại sao. Trước Rust, hầu hết các ngôn ngữ lập trình tôi kinh qua đều dùng phong cách xử trí lỗi là exception handling. Một hàm đang chạy nửa chừng, nếu gặp lỗi sẽ bắn ra một exception và dừng ngay tại đó. Hàm nào gọi nó bên ngoài sẽ dùng cấu trúc try ... except, try ... catch để phòng bị, bắt những exception này và có hướng xử trí tương ứng khi exception xảy ra. Cách làm này có ưu điểm là không cần nghĩ nhiều, giúp lập trình viên làm nhanh, cho ra sản phẩm lẹ. Tuy nhiên nó có nhược điểm là nhìn vào signature (mô tả kiểu dữ liệu đầu vào và đầu [...]

Marketplace Illustration
Viết test trong Rust the idiomatic way

Bài viết được sự cho phép của tác giả Huy Trần Chống chỉ định: cái tiêu đề đặt nữa tây nữa việt là cố ý, để câu view, chứ thực ra không phải tại mình không biết dịch chữ idiomatic ra đâu :v À nhân tiện nói luôn, idiomatic way có nghĩa là một cách chính thống, ở đây bàn về cách viết test được cộng đồng Rustlang công nhận và khuyến khích.Testing là một chức năng quan trọng mà bất kì ngôn ngữ nào cũng cần phải có, viết unit test cũng là một việc mà bất kì lập trình viên nào cũng cần phải làm, thậm chí với một vài cộng đồng như Golang và Ruby thì người ta bảo thủ tới mức xem việc publish một project không có unit test giống như là một cái tội luôn vậy đó :)) Đối với Go thì chúng ta có go test, đối với Ruby chúng ta có thể chạy test thông qua rake (đúng không nhỉ? mộ [...]

Marketplace Illustration
Rust là gì? Có ăn được không?

Bài viết được sự cho phép của tác giả Huy Trần Rust (đọc là /rʌst/) là một ngôn ngữ lập trình hệ thống (system programming language) được quảng bá là có tốc độ cực kì nhanh, ngăn chặn được phần lớn mọi bug crash (segfaults), ngăn chặn được data race, rất memory safe mà lại không cần tới garbage collector! Cú pháp cơ bản của một chương trình Hello World trong Rust như thế này: fn main() { println!("hello, {}", "world"); } Bạn thấy gì qua đoạn chương trình trên nào? Có vẻ vừa giống C, vừa giống Go hay Swift, Java, C#,... mỗi thứ một tí, đúng không? Tại sao nên dùng Rust? Chắc các bạn cũng biết đến khả năng kiểm soát tài nguyên khi làm việc với các ngôn ngữ như C/C++ hay Java, Python, Ruby, JavaScript,... Với C/C++, bạn được: Toàn quyền kiểm soát mọi thứ (malloc, free,...) Thường xuyên đau đầu với memory leak, data race, segfaults,... Đối với thiên đường JavaScript hay Ruby, bạn: Chẳng [...]

Marketplace Illustration
Triển khai bài toán duyệt cây nhị phân với Rust

Bài viết được sự cho phép của tác giả Huy Trần Các bài giới thiệu về Rust thì nhiều quá rồi nhưng chưa thấy bài nào nói về việc sử dụng Rust hết, nên hôm nay mình sẽ bắt đầu viết một vài bài áp dụng Rust để implement một số thuật toán cơ bản, mở đầu sẽ là: Thuật toán duyệt cây nhị phân với Rust. Sao? Không thích thuật toán à? Từ từ, đừng bỏ đi vội, mặc dù đề bài có vẻ khô khan nhưng qua bài viết này các bạn sẽ học được kha khá kiến thức quan trọng trong Rust: Làm việc với struct Sử dụng kiểu Option<> Sử dụng kiểu Box<> Khai báo biến trong Heap và Stack Sử dụng các attribute để tùy biến Rust compiler Sử dụng pattern matching Làm việc với macro Khai báo method dùng impl Thao tác cơ bản với String Và quan trọng nhất là cách sử dụng các thông báo lỗ [...]

Marketplace Illustration
Cài đặt Rust trên Arch Linux

Bài viết được sự cho phép của tác giả Huy Trần Việc cài đặt Rust trên môi trường Arch Linux khá là đơn giản. pacman có sẵn gói rust và cargo, bạn có thể chọn cách cài đặt trực tiếp 2 packages này. Tuy nhiên ở bước cài đặt công cụ hỗ trợ cho các IDE, chúng ta thường dùng racer và engine này yêu cầu chúng ta phải có source code của Rust nằm sẵn trong máy. Nếu chọn cách cài đặt từng gói, thì chúng ta có thể cài đặt Rust source code thông qua yaourt với gói rust-srcAUR, rồi phải set biến môi trường RUST_SRC_PATH khá là phiền phức. Cho nên, cách cài đặt đơn giản nhất đó là dùng rustup. Package này gồm có: rustup, rustc và cargo. Và bước cài đặt Rust source cũng đơn giản hơn. [irp posts="47061" name="Dynamic typing trong Rust với std::any::Any"] [irp posts="48134" name="Rust và Lập trình Web"] Xem thêm tuyển dụng Linux lương cao trên TopDev Các bước [...]

Marketplace Illustration
Rust và Lập trình Web

Bài viết được sự cho phép của tác giả Huy Trần "Rust có làm được Web không nhỉ?" - Đây là câu hỏi của rất nhiều người, trong đó có mình. Một trong những mục tiêu được đặt ra khi mình bắt đầu học Rust đó chính là sử dụng Rust để làm web apps. Và sau gần 1 năm thì mình cũng học được vài thứ. Vì thế mình viết bài này để chia sẽ lại kinh nghiệm Làm web với Rust của mình. Xem thêm các việc làm Web developer jobs hấp dẫn trên TopDev Có rất nhiều phương pháp để làm web dùng Rust, ví dụ như là, compile Rust code ra thành client-side JavaScript code dùng WebAssembly, viết RESTful API, hoặc xây dựng ứng dụng web được render từ phía server, giống như những năm 2012 vậy :v Chúng ta sẽ đi vào từng phương pháp một. 1. Client-side JavaScript trong Rust Cách đầu tiên, hoàn toàn là frontend, mà mình nghiên cứu đó là dùng Rust để viết web theo dạng component-based như [...]

Marketplace Illustration
Viết Reminder Parser dùng Rust

Bài viết được sự cho phép của tác giả Huy Trần  Khi dùng Google Calendar hoặc Reminder.app của macOS, mình rất thích chức năng tạo nhanh một event bằng cách nhập vào nội dung một cách tự nhiên như khi đang nói, ví dụ: get hair cut at 10am every Sunday hoặc là doctor appointment at 1pm on Monday Khi nhận được input như này, một event mới sẽ được tạo ra với ngày và giờ tương ứng, còn nội dung của event sẽ là phần text mở đầu, ví dụ "get hair cut", hoặc "doctor appointment". Thường thì cái gì mình thích, mình sẽ tìm cách clone lại, chức năng này cũng ko ngoại lệ. Vì bài viết này là phần tiếp theo của bài viết trước, chúng ta sẽ tiếp tục dùng Rust và Nom. Recommend các bạn đọc kĩ phần trước, và chuẩn bị những kiến thức cơ bản của Rust, nhất là về Result, Option, cargo test, trước khi đọc tiếp bài này. Các [...]

Marketplace Illustration
Dynamic typing trong Rust với std::any::Any

Bài viết được sự cho phép của tác giả Huy Trần Xét một tình huống thường gặp trong lập trình: Giả sử ta có một interface kiểu Shape, và 2 class là Rectangle, Circle cùng implement interface Shape, sau đó ta tạo một danh sách tên là shapes để chứa tất cả các đối tượng có implement Shape. [irp posts="18057" name="Tại sao team Discord chuyển từ Go sang Rust?"] [irp posts="37402" name="Hướng dẫn và sử dụng jquery plugin typing để giả hiệu ứng gõ văn bản"] Xem thêm tuyển dụng C# lương cao trên TopDev Trong Rust code sẽ nhìn như thế này: pub trait Shape {} pub struct Rectangle {} impl Shape for Rectangle {} pub struct Circle {} impl Shape for Circle {} fn main() { let shapes: Vec<Box<dyn Shape>> = vec![ Box::new(Rectangle {}), Box::new(Circle {}), ]; } Trong quá trình làm việc với mảng shapes, có lúc chúng ta muốn lấy một giá trị ra và cast nó về kiểu Rectangle hoặc Circle để sử dụng, thường thì chúng ta sẽ làm như này: let rect: &Rectangle = shapes.get(0).unwrap().as_ref(); Xong rồi sẽ bị Rust chửi vào mặ [...]

Marketplace Illustration
Tại sao team Discord chuyển từ Go sang Rust?

Tác giả: Jesse Howarth Ngôn ngữ Rust đang dần trở thành sự lựa chọn hàng đầu cho rất nhiều domain. Điển hình với Discord, chúng ta có thể thấy thành công của Rust trên cả client side và server side. Ví dụ, chúng tôi dùng nó cho đường pipeline mã hoá video từ Go Live (client side) và dùng cho Elixir NIFs (server side). Mới đây nhất, chúng tôi đã tiến hành cấp tốc cải thiện hiệu suất dịch vụ bằng cách chuyển từ Go sang Rust. Bài viết này sẽ giải thích thêm tại sao nó lại thích hợp với Discord chúng tôi, quy trình nó thế nào và kết quả hậu chuyển đổi ra sao. The Read States service Discord là một công ty thiên sản phẩm, nên hãy bắt đầu câu chuyện bằng một số chi tiết về product. Mảng dịch vụ mà chúng tôi thay Go bằng Rust được gọi là dịch vụ “Read States” - Theo dõi trạng thái đọc tin nhắn. Mục đích tố [...]