UX Review: Đừng tưởng to như Facebook mà ko mắc lỗi UX cơ bản
Chúng ta thường nghĩ rằng với những công ty khổng lồ, lại còn ở bển, lỗi trải nghiệm người dùng chắc hẳn khó lòng mà xảy ra, mà có xảy ra thì ko thể nào quá cơ bản được. Trong bài này và một loạt bài tới, tôi sẽ cố gắng chứng minh điều ngược lại. Một sản phẩm đến từ những siêu công ty vẫn có thể dễ ...
Nested Classes (P3) Inner Class: Anonymous Classes
Anonymous classes giúp code của bạn trở nên ngắn gọn hơn. Nó cho phép bạn khai báo và khởi tạo 1 class ở cùng 1 thời điểm. Nó giống với local classed ngoại trừ việc nó ko có tên. Sử dụng nó nếu bạn cần sử dụng local class chỉ 1 lần. Declaring Anonymous Classes Trong khi local classes cần khai ...
Draw inverted circle and calculate zoom level based on radius in Google Maps
Trong bài viết này, chúng ta sẽ tìm hiểu về cách dùng các class có sẵn trong Google Maps SDK để làm những thứ không có sẵn. Cụ thể: Vẽ một hình tròn với bán kính cho trước có phần bên trong tranperancy và phần map bên ngoài hình tròn được fill bởi màu khác. Tính zoom level phù hợp dựa trên bán ...
Upload ảnh bằng Carrierwave tới Amazon S3
1. Giới thiệu Tại một số thời điểm trong quá trình sử dụng ứng dụng Rails của bạn, bạn sẽ muốn người dùng (có thể là admin hoặc người dùng bình thường) upload hình ảnh của họ. Thông thường, bạn sẽ muốn thay đổi kích thước của hình ảnh đó thành một kích thước cụ thể nào đó (Mà không phải thay đổi ...
Data Preprocessing and Data Wrangling in Machine Learning and Deep Learning
Deep learning and Machine learning are becoming more and more important in today's ERP (Enterprise Resource Planning). During the process of building the analytical model using Deep Learning or Machine Learning the data set is collected from various sources such as a file, database, sensors ...
Form_tag và sự khác biệt so với form_for
Trong Rails có hai phương thức để tạo thẻ <form></form> đó là: form_for và form_tag . Ta có thể tìm thấy rất nhiều ví dụ về form_for bởi chúng ta thường xuyên sử dụng nó để tương tác trực tiếp với models mà chúng ta đã tạo trong database. Tuy nhiên trong khá nhiều trường hợp ...
Tấn công giả mạo GPS sử dụng SDR | Phần 2
Trong phần 2 tôi thực hiện tạo các dữ liệu tọa độ theo lịch trình di chuyển giả mạo tại Hồ Gươm, Hà Nội, Việt Nam bằng cách sử dụng công cụ SatGen và gps-sdr-sim để chuyển đổi sang dạng dữ liệu GPS phát sóng. Sơ đồ thực hiện giả mạo GPS 2.2 Thực hiện giả mạo GPS di chuyển Khác với phương pháp ...
Những khái niệm đặc trưng trong Swift
Swift là một ngôn ngữ lập trình mới cho iOS, macOS, watchOS và tvOS apps, nó được xây dựng dựa trên những gì tốt nhất của C và Objective-C. Swift chứa những programming pattern an toàn và thêm vào nhiều tính năng mới giúp việc lập trình dễ dàng, linh hoạt hơn và thú vị hơn. Trong bài viết này, ...
Một vài kỹ năng dev cần biết
Nhân tiện chém gió với các bạn fresher bài Beginner / Fresher thì cần học cái chi thì mình phân tích sâu hơn 1 chút về các kỹ năng mà developer cần phải biết. Ở bài đó mình đã liệt kê ra 3 kỹ năng: Kỹ năng search solution trên google Kỹ năng hỏi / giao tiếp Kỹ năng sử dụng editor / ide. ...
Những điều cần biết về UI/UX trong kiểm thử phần mềm
Đối với một người designer thì việc có những hiểu biết về UI/UX là một điều cốt lõi, việc design ra một giao diện website đẹp, bắt mắt thân thiện, dễ sử dụng là vô cùng quan trọng Tương tự đối với một người developer thì việc tạo sản phẩm với UI/UX hài hòa chuyên nghiệp, thu hút người sử dụng là ...
Method swizzling
Method swizzling là quá trình hoán đổi implement của những selector có sẵn. Giả sử bạn có lớp A có 2 function là hello và goodbye. Bạn muốn hoán đổi như sau: Gọi vào function hello thì funtion goodbye được thực hiện và ngược lại. Đó là mục đích của medthod swizzling. Ở đây tôi sẽ thực hiện method ...
Một số trick cải thiện performance trong Ruby
Khi phát triển các ứng dụng với bất kì một ngôn ngữ nào, đặc biệt là với các ứng dụng lớn, với số lượng dữ liệu và các thao tác lớn thì vấn đề cải thiện performance cho những dòng code của bạn là việc hết sức quan trọng. Ruby cũng không phải là ngoại lê. Trong trang Viblo cũng có rất nhiều bài viết ...
Model-View-ViewModel Achitecture in Android without Data Binding library
Chào mọi người, chắc hẳn chúng ta khi bắt đầu start một dự án mới đều phải đau đầu suy nghĩ về kiến trúc dự án sẽ áp dụng, mô hình sẽ xây dựng sao cho phù hợp nhất, hiệu quả nhất, sẵn sàng mở rộng và dễ dàng bảo trì. Tuy nhiên, việc xác định đúng đắn Structure sẽ sử dụng không hề đơn giản và đòi ...
Tấn công giả mạo GPS sử dụng SDR | Phần 1
Giả mạo tín hiệu GPS là một kỹ thuật không mới và được nhiều nhóm nghiên cứu bảo mật trên thế giới thực hiện kiểm tra và thử nghiệm trên môi trường thực tế. Tuy nhiên, việc tấn công trên một khu vực rộng lớn yêu cầu các thiết bị phần cứng giá thành cao, hoạt động công suất lớn với mục đích dùng ...
Custom Rails Validator
Vừa rồi mình có gặp một yêu cầu là khi tạo name cho group thi không được có các từ bậy bạ, các từ thô tục trong đó. Nên mình đã tìm hiểu và viết một cái validation cho riêng trường hợp này. 1. Các class kế thừa khi tạo 1 class validator ActiveModel::Validator || ...
Kotlin for Android: combined with Rx - The awesome way
TATA, có lẽ hơi muộn màng khi đến bây giờ Google mới chính thức lên tiếng về việc support Kotlin Google I/O 2017 , anw, đối với "fan" Kotlin, đây thực sự là một điều tuyệt vời, rồi chúng ta sẽ thấy sự trỗi dậy mạnh mẽ của cộng đồng Kotlin, đặc biệt là đối với các developer Android native, khi trước ...
Bài 4: Kiểu phối màu tam giác cân (Split-Complementary hoặc Compound Harmony)
Kiểu phối màu này sử dụng kết hợp giữa kiểu 1: Tương phản (complementary) và kiểu 2. Tương tự (Analogous), bằng cách làm như sau: Bước 1: Chọn 1 cặp tương phản Bước 2: Thay 1 một màu trong cặp màu tương phản đó bằng bằng 2 màu bên cạnh của nó. Tại sao lại có loại phối màu này? Thứ 1 nó làm ...
Bài 3: Cách phối màu tương phản (Complementary Schemes)
Hai màu đối diện của bánh xe màu được gọi là màu tương phản. Đặc trưng của cách phối màu này là tính đối lập lớn, tạo nên 1 sự chấn động, rất phù hợp để làm nổi bật một thứ gì đó. Nó cũng rất dễ tạo cảm giác chói mắt, phản cảm, khó chịu khi sử dụng nhiều. Truy cập khóa học "Tự học để trở ...
Gem "acts_as_votable"
1. Giới thiệu: Acts As Votable là một Ruby Gem được viết riêng cho các mô hình Rails / ActiveRecord nhằm phục vụ cho việc giải quyết các chức năng như like, dislike, vote up, vote down một cách nhanh chóng ... 2. Cài đặt: Thêm vào Gemfile gem 'acts_as_votable', '~> 0.10.0' Sau đó ...
vimタブをスペースに置換する
一気に置換する方法があったのでメモ タブ⇒スペース :set expandtab :retab スペースの数 retabの引数は省略可。省略した場合or0を指定した場合tabstopの値が適用される。(vimrcで設定していない場合5?未確認) スペース⇒タブ :set noexpandtab :retab! スペースの数 ついでに通常の置換方法もメモ find & replace :%s/"置換前"/"置換後"/g