Gửi gmail với oauth2 bằng nodemailer

Gửi gmail với oauth2 bằng nodemailer

Để có thể gửi được gmail từ API, bạn cần yêu cầu quyền của chủ tài khoản gmail. Ngay cả khi mail đó là của bạn thì bạn cũng cần phải yêu cầu cấp quyền từ chính mình và trao quyền cho chính mình thì mới dùng mail đó để gửi được. Để gửi được gmail dùng oauth2 thì các bước cấu hình và chuẩn bị khá lằng nhằng, cần tập trung chú ý những điểm sau: Cấu hình chính xác credentials trên console của google...

Giới thiệu về thread từ phần cứng ra phần mềm.

Giới thiệu về thread từ phần cứng ra phần mềm.

1. Nhìn từ phần cứng lên. a, Sơ lược về bộ nhớ. - Bộ nhớ ngoài: là ổ cứng của bạn, ở đây lưu trữ những tệp tin, video, nhạc,... - Bộ nhớ trong(RAM): khi nói tới bộ nhớ là mặc định nói tớ bộ nhớ trong, là bộ nhớ để load dữ liệu từ bộ nhớ ngoài lên RAM khi chạy một chương trình cho CPU truy xuất. RAM có tốc độ truy xuất nhanh hơn bộ nhớ ngoài. - Bộ nhớ cache: là bộ nhớ nằm trong CPU, được load từ RAM lên, giúp cho c&aacut...

Tạo API gateway gọi assyn trong aws

Tạo API gateway gọi assyn trong aws

1. Giới thiệu. AWS: amazon web service là các dịch vụ web do amazon cung cấp trên cloud như là database (RDS đối với mysq, dynamodb đối với nosql), server (EC2), file storate (S3), lambda, .... Trang chủ AWS: https://aws.amazon.com Lambda: Là dịch vụ cung cấp giải pháp tự động tính toán khi nhận một sự thay đổi từ DB hoặc S3 (tự động) hoặc được gọi một cách thủ công (thông qua API Gateway). Assyn: Bình thường nếu gọi hàm lamda th&ig...

joins, preload, include và eager_load với active record trong rails

joins, preload, include và eager_load với active record trong rails

Xét ví dụ: bảng zombies có quan hệ một nhiều với bảng weapons như sau:        1.Joins joins là câu lệnh join 2 bảng bình thường trong sql: Zombie.joins(:weapons) #return 6 rows #<ActiveRecord::Relation [ #<Zombie id: 1, name: "Ashley", graveyard: "Glen Haven Memorial Cemetery">, #<Zombie id: 2, name: "Bob", graveyard: "Chapel Hill Cemetery">, #<Zombie id: 3, name: "Katie", graveyard: "...

Giải thích bản chất của đạo hàm, tích phân và vi phân

Giải thích bản chất của đạo hàm, tích phân và vi phân

Mở đầu Bài này mình xin được giải thích bản chất của 3 khái niệm quan trọng bậc nhất trong đại số giải tích là đạo hàm, tích phân và vi phân để chỉ ra chúng có ý nghĩa như thế nào. Bài viết này sẽ không đi sâu vào chứng minh công thức, định nghĩa mà chỉ tập trung vào nói rõ bản chất của đạo hàm, tích phân v&...

Cách sử dụng webpack trong laravel

Cách sử dụng webpack trong laravel

Giới thiệu Khi làm một trang web, bạn luôn muốn cho trang web của mình trả lời người dùng một cách nhanh nhất có thể. Nó giúp tăng hiệu năng người dùng và cũng giúp cho SEO của web được tốt hơn. Một trong những lý do lớn nhất khiến cho một website phản hồi chậm chính là thời gian của http request lớn. Mỗi lần website lấy các tài nguyên(css, js, images) từ server nó đều phải gửi http request tới, thời gian của http request này chính là thời gian mà đ...

Cách render and return trong sub method của controller rails

Cách render and return trong sub method của controller rails

Mở đầu Khi code hoặc refactor code trong rails, bạn có thể tách code trong action trong controller thành nhiều method con. Nhưng khi tách ra thành các method con, bạn có thể phải xử lý render hoặc redirect_to ngay trong method con. Nếu ở cả method con và method cha đều có render hoặc redirect_to thì rails sẽ ném lỗi bị lặp render hoặc redirect_to cho bạn. Dưới đây là một số cách để xử lý được lỗi trên ...

Một số trick trong postgreSQL

Một số trick trong postgreSQL

Bài này dùng postgre trong Rails và sẽ được update liên tục. Duyệt array và query từng phần tử trong array Bài toán đặt ra là cho một array các ids: ids = [1, 2, 3, 100000, 4, 5] Bạn muốn duyệt từng phần tử trong ids, với mỗi phần tử sẽ query vào bảng User trong DB và trả về giá trị tương ứng, nếu ko có record tương ứng với id thì trả về nil. Ví dụ id =...

Scope và closure trong javascript

Scope và closure trong javascript

Đối với những bạn lập trình web nói chung và lập trình js nói riêng thì những kiến thức về scope, closure là cần phải nắm rõ. Js là một ngôn ngữ lập trình khá khó, nếu không nắm rõ cách hoạt động thì sẽ gặp phải những vấn đề khá nan giải. Nhiều người ban đầu dùng js thì sẽ thấy rất dễ, càng làm vào sâu hơn sẽ thấy phức tạp dần với các vấn đề khó trong js l...

Ngôn ngữ lập trình lưu trữ biến như thế nào?

Ngôn ngữ lập trình lưu trữ biến như thế nào?

Mở đầu Có lẽ khi lập trình không nhiều người quan tâm tới cách bộ nhớ tổ chức lưu trữ và thao tác với biến như thế nào (vì nó hơi khó) nhưng khi nắm được nó bạn sẽ thấy được nhiều vấn đề rất tường minh, nó liên quan tới phần cứng của máy tính nên nắm được nó cũng giúp cho bạn có nền tảng vững hơn khi học sâu và rộng hơn về sau này. Ngôn ngữ phù hợp nhất để mô tả và giải thích cho việc lưu trữ...