Bảo vệ Rails app của bạn với Rack::Attack

Câu chuyện của mình được bắt đầu khi một trang web của mình đang chạy ngon ơ như bình thường, bỗng dưng vào 1 ngày đẹp trời mình ngồi vào xem report thì thấy có thời điểm lượng request tăng ầm ầm. Khá là bất ngờ và mình quyết định tìm tòi sâu hơn và thấy lượng request chủ yếu tới từ action login. ...

Tác giả: Trịnh Tiến Mạnh viết 13:45 ngày 12/08/2018

Domain Driven Design (Phần 2)

Phần trước mình đã tóm lược về kiến trúc của Domain Driven Design (DDD). Phần này mình sẽ tập trung đi sâu vào các khuôn mẫu (building blocks) được sử dụng trong DDD. Mục đích của những khuôn mẫu này là để trình bày một số yếu tố chính của mô hình hóa hướng đối tượng và thiết kế phần mềm từ quan ...

Tác giả: Trịnh Tiến Mạnh viết 13:45 ngày 12/08/2018

Tìm hiểu và hướng dẫn setup web server Nginx : Các biến môi trường và bổ từ của module HTTP trong NGINX

INDEX 1, Tìm hiểu và hướng dẫn setup web server Nginx : Các khái niệm cơ bản và các chỉ thị trong NGINX 2, Tìm hiểu và hướng dẫn setup web server Nginx : Các biến môi trường và khối location của module HTTP trong NGINX MỞ ĐẦU Trong bài viết trước, chúng ta đã đi tìm hiểu khái quát về ...

Tác giả: Bùi Văn Nam viết 13:45 ngày 12/08/2018

Data Binding trong AngularJS và các Directive dùng trong Data Biniding

Trong bài viết trước mình đã nhắc đến Directive và Custom Directive. Vì vậy 1 phần nào đó chúng ta đều hiểu được Directive là 1 trong những tính năng mạnh mẽ nhất của AngularJS. Vậy mình sẽ vào phần chính luôn đó là Data binding Directive. Data Binding Directive Trong Data Binding giúp thể ...

Tác giả: Trịnh Tiến Mạnh viết 13:45 ngày 12/08/2018

Phân đoạn hình ảnh trong OpenCV

I. Phân đoạn hình ảnh sử dụng watersheds Việc chuyển đổi đầu nguồn là một thuật toán xử lý hình ảnh phổ biến được sử dụng để nhanh chóng phân khúc một hình ảnh thành các vùng đồng nhất. Nó dựa trên ý tưởng rằng khi hình ảnh được xem như là một cứu trợ topo, vùng đồng nhất tương ứng với lưu ...

Tác giả: Tạ Quốc Bảo viết 13:45 ngày 12/08/2018

LauchMode trong Android Activity: standard, singleTop, singleTask, singleInstance

Nguồn: https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en Tác giả: nuuneoi (Android GDE, CTO & CEO at The Cheese Factory) Người dịch: Phạm Văn Khắc Trước khi đi sâu vào từng loại launch mode của activity, chúng ta cần hiểu một thuật ngữ quan trọng: 'Task'. ...

Tác giả: Bùi Văn Nam viết 13:45 ngày 12/08/2018

Những điều cơ bản về Agile. Daily Scrum

Stand-up meeting (hay “daily-scrum ”) là một cuộc họp nhóm hằng ngày nhằm giúp các thành viên trong nhóm cập nhật hiện trạng công việc. Cuộc họp daily-scrum không được sử dụng để giải quyết vấn đề. Các vấn đề được nêu lên được thực hiện offline và thường được xử lý bởi các phân nhóm có ...

Tác giả: Bùi Văn Nam viết 13:45 ngày 12/08/2018

CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN QUYẾT ĐỊNH ĐỊNH GIÁ BÁN SẢN PHẨM TRONG DOANH NGHIỆP

Định giá bán sản phẩm có vai trò quan trọng đối với sự tồn tại và phát triển của doanh nghiệp vì nó tác động tới mức doanh thu và lợi nhuận của doanh nghiệp:giá bán cao tạo ra mức lợi nhuận lớn, giá bán thấp thì có thể gây thiệt hại cho doanh nghiệp. Giá bán sản phẩm còn thể hiện trình độ tổ chức ...

Tác giả: Tạ Quốc Bảo viết 13:45 ngày 12/08/2018

Một số thay đổi trong phiên bản PHP 7.1 sắp tới

Dưới đây là một số thay đổi sẽ được giới thiệu (hoặc loại bỏ) trong PHP 7.1: Catch cùng lúc nhiều exceptions. Bổ từ truy cập cho các class constants. Nullable types. Void return type. Negative string offsets. Cho phép keys xác định trong hàm list(). Destruct mảng với cú pháp ...

Tác giả: Hoàng Hải Đăng viết 13:45 ngày 12/08/2018

Tối ưu hiệu suất Ruby

1. Mở đầu Không phải bàn cãi nhiều, ai trong chúng ta cũng biết rằng Ruby là một ngôn ngữ tuyệt vời, nó giúp cho việc xây dựng nên một ứng dụng web trở nên đơn giản và nhanh chóng hơn bao giờ hết. Nhưng song song với điều đó, luôn có ý kiến cho rằng các ứng dụng viết bằng ngôn ngữ Ruby (hay các ...

Tác giả: Bùi Văn Nam viết 13:45 ngày 12/08/2018

Annotation, sử dụng annotation với reflection trong java

Trong bài viết trước mình có giới thiệu qua về reflection và một số thành phần của nó trong java. Hôm nay, mình sẽ giới thiệu về một thành phần quan trọng của Reflection đó là annotation. (Nếu bạn nào chưa đọc bài viết trước của mình giới thiệu về reflection thì có thể tham khảo tại đây: ...

Tác giả: Hoàng Hải Đăng viết 13:45 ngày 12/08/2018

Hook methods trong Ruby (phần 2)

Trong bài viết trước, chúng ta đã đề cập tới 2 cách thức sử dụng hook method trong ruby là: included extended Các bạn có thể xem lại ở link sau: https://viblo.asia/dieunb/posts/mrDkMOglGzL Tiếp theo, chúng ta sẽ cùng nhau xem xét 3 cách thức khác để sử dụng hook trong ruby là: ...

Tác giả: Bùi Văn Nam viết 13:45 ngày 12/08/2018

Gần 40 tiện ích mở rộng siêu hữu ích cho Testing của Chrome_Phần 2

Tiếp theo phần 1 giới thiệu các tiện ích của Chrome hỗ trợ cho việc test giao diện, Automation test, và lấy test evidence. Trong phần này tôi sẽ tiếp tục giới thiệu các tiện ích tuyệt vời khác của Chrome mà bạn không thể bỏ qua trong quá trình testing. Bài viết tham khảo từ link: ...

Tác giả: Trịnh Tiến Mạnh viết 13:45 ngày 12/08/2018

Theme cho Sublime text 3

Sublime text là trình editor vô cũng mạnh mẽ. Nó không chỉ có nhiều tính năng mà còn có giao diện khá đẹp. Tuy nhiên chúng ta vẫn có thể làm cho giao diện của Sublime text đẹp hơn nữa với việc cài thêm Themes và Color scheme. Bài viết này sẽ giới thiệu đến bạn 1 vài theme khá đẹp dành cho Sublime ...

Tác giả: Trịnh Tiến Mạnh viết 13:45 ngày 12/08/2018

Những lỗ hổng bảo mật trên di động và kiểm thử bảo mật di động

Vì sao cần kiểm thử bảo mật? Sự phát triển của điện thoại thông minh đã làm đơn giản hóa cuộc sống của chúng ta, dù là kết nối với bạn bè, gia đình, ngân hàng, thanh toán hóa đơn hay đặt vé xem phim trực tuyến,... Tuy nhiên nó cũng đã làm cho những người sử dụng smart phone và các nhà cung cấp ...

Tác giả: Bùi Văn Nam viết 13:45 ngày 12/08/2018

Sử dụng gem Sorcery để gửi mail (P.2)

1. Giới thiệu Như ở phần trước, mình đã giới thiệu về chức năng khi tạo mới 1 user sẽ gửi mail để xác nhận tài khoản của gem Sorcery. Vậy khi sử dụng 1 thời gian, vào một ngày đẹp trời bạn bỗng quên password, vậy làm thế nào để bạn đăng nhập vào tài khoản thì ở bài viết này mình sẽ giới thiệu về ...

Tác giả: Bùi Văn Nam viết 13:45 ngày 12/08/2018

Mobile Testing - UI

Giả sử chúng ta đang sử dụng một ứng dụng điện thoại di động, và điều thú vị là bạn gặp các tình huống sau: Button bị mất Chữ bị hiển thị thiếu Việc kiểm soát bị cắt giảm Quả thực đây là một việc khó chịu cho bất kỳ người sử dụng. Để đảm bảo rằng chúng tôi cung cấp những trải ...

Tác giả: Trịnh Tiến Mạnh viết 13:45 ngày 12/08/2018

MySql - Optimizing SELECT Statements

Truy vấn trong các mệnh đề SELECT làm nhiệm vụ thực hiện tất cả các hoạt động tìm kiếm, tra cứu trong cơ sở dữ liệu. Việc tối ưu các câu lệnh này luôn là ưu tiên hàng đầu. Tốc độ của SELECT Các việc cần lưu ý để tối ưu truy vấn: Để làm truy vấn SELECT...WHERE nhanh hơn, đầu tiên là kiểm tra ...

Tác giả: Bùi Văn Nam viết 13:45 ngày 12/08/2018

Wearables Device : Một ngành công nghiệp mới đầy tiềm năng

Wearables là gì? Wearables dịch nghĩa thô là “những vật dụng gì có thể đeo, mang được trên người”. Nhưng trong thời đại công nghệ ngày nay thì nó được biết đến nhiều hơn như là một từ được dùng để gọi chung tất cả những phụ kiện có tích hợp bộ xử lý máy tính, công nghệ điện tử và nhiều ...

Tác giả: Bùi Văn Nam viết 13:45 ngày 12/08/2018

JavaScript Callback Function

1 Function trong javascript Ta thường nghĩ function là một hàm nhận các giá trị đầu vào (input) thực hiện một số lệnh nào đó rồi trả về kết quả (output). Trong javascript function cũng là một đối tượng (object) nó có thể thực thi như một hàm hoặc một class giống với String, Array, Number, ... Như ...

Tác giả: Trịnh Tiến Mạnh viết 13:45 ngày 12/08/2018