Cross-Domain Ajax Requests
Same-origin policy là một khái niệm quan trọng trong mô hình bảo mật thông tin web. Đây là một chính sách dành cho các browser, browser chỉ được cho phép các đoạn script ở trang web thứ nhất truy cập vào dữ liệu ở trang web thứ hai khi mà hai trang đó có cùng nguồn (same-origin). Chính sách này ...
Object-Relational Mapping (Ruby Active Record)
I.What is Object-relational mapping ? Object/Relational Mapping (ORM) in computer science is a programming technique for converting data between incompatible type systems in object-oriented programming languages. ORM creates a "virtual object database" that can be used from within ...
React Drag and Drop
Phải nói là trước đây dù cũng có tìm hiểu về Angular JS nhưng chẳng hiểu sao mình không có cảm hứng code lắm với thằng Ăng ngu lờ. Với thằng React thì ngược lại =)), đây là lần đầu tiên mà mình hứng thú code front-end sau chuỗi dài tháng ngày only back-end. Trong bài viết trước thì mình có giới ...
Design Patterns: The Facade Parttern
Design Patterns: The Facade Parttern## Tại sao chúng ta nên sử dụng design patterns trong lập trình ? Code của chúng ta có thể làm việc hiệu quả mà không có nó được không ? Để trả lời câu hỏi trên chúng ta đặt ra câu hỏi như sau: "Bạn muốn sống trong một ngôi nhà sang trọng hay một ngôi nhà ...
Abstract Factory Design Pattern
Design Pattern là gì? Design Pattern ban đầu đơn giản là một khái niệm kiến trúc do Christopher Alexander gây dựng. Lần đầu tiên được ứng dụng vào phần mềm vào năm 1987 bởi Kent Beck and Ward Cunningham. Hai ông trình bày ý tưởng của mình trong một hội nghị. Sau đó Design Pattern trở thành khái ...
Flashcard ứng dụng thuật toán SuperMemo (Phần 1 + 2)
1.1. Flashcard Flashcard hoặc Flash Card là loại thẻ mang thông tin (từ, số hoặc cả hai), được sử dụng cho việc học bài trên lớp hoặc trong nghiên cứu cá nhân. người dùng sẽ viết một câu hỏi ở mặt trước thẻ và một câu trả lời ở trang sau. Người ta thường dùng flashcard học từ vựng tiếng Anh rất ...
Upload image với gem CarrierWave
Gem CarrierWave hỗ trợ upload tập tin và hình ảnh một cách đơn giản và linh hoạt đối với các ứng dụng Ruby. Cài đặt : Cũng như các gem khác, để cài đặt chúng ta thêm gem CarrierWave vào trong Gemfile và sau đó bundle install. gem 'carrierwave' Để hiểu rõ về phương thức hoạt động ...
Make your own Ruby gem
1.RubyGems, So what is it? #### gem "GEM_NAME" in Gemfile <=> gem install GEM_NAME (what 's different between them) 2.Gem command basic 3.My first gem. Let's get started 1. RubyGems, So what is it? gem là một package managercủa Ruby. Quản lý các thư viện của Ruby. ...
[ThaoVTP] Tìm hiểu về SQL và một số câu lệnh SQL cơ bản
1.1. SQL là gì? SQL là một ngôn ngữ tiêu chuẩn để truy cập cơ sở dữ liệu (database). SQL là viết tắt của cụm từ Structured Query Language (Ngôn ngữ truy vấn cấu trúc). Cho phép bạn truy cập và thao tác với database. Ngoài ra, SQL là một tiêu chuẩn ANSI (American National Standards Institute- Viện ...
Những cú sốc của lập trình viên Java khi bắt đầu học Ruby
Tác giả: Nakaide Ngày post: 8/4/2015 Nguồn: https://moneyforward.com/engineers_blog/2015/04/08/to-ruby-from-java/ Người dịch: Phạm Cẩm Anh Tác giả vốn quen thuộc với các ngôn ngữ biên dịch như C/C++/Java nhưng đã bắt đầu làm Ruby (Ruby on Rails) từ khi gia nhập công ty Money Forward. Tác ...
Giới thiệu về Scale-Invariant Feature Transform
Scale-Invariant Feature Transform (SIFT) là giải thuật trong lĩnh vực Computer Vision, dùng để nhận dạng và miêu tả những điểm đặc trưng(local features) trong ảnh. Giải thuật lần đầu được giới thiệu bởi David Lowe năm 1999. Giải thuật này(cùng với giải thuật anh em là SURF) được ứng dụng rộng rãi ...
Query performance optimization - MySQL
Khi làm việc với dữ liệu lớn thì tốc độ truy vấn dữ liệu là cả vấn đề. Việc tối ưu câu lệnh query, đánh index, tối ưu schema luôn phải thực hiện xong hành với nhau. Topic này xin được trình bày một số "mẹo" tối ưu query thực hiện với MySQL. Count() là hàm đặc biệt, nó làm việc theo hai cách rất ...
Quan điểm test
Như các bạn đã biết, trong quá trình kiểm tra chất lượng một sản phẩm phần mềm, việc tạo danh sách các mục cần phải kiểm tra có chất lượng tốt đóng một vai trò hết sức quan trọng. Bởi vì nó liên quan trực tiếp đến 1. tìm ra đầy đủ hay không đầy đủ những điểm khiếm khuyết của phần mềm và 2. chi phí ...
ElasticSearch in 5 minutes
Elasticsearch, so what's it? How does it work? Installing and running ElasticSearch. Directory Layout Indexing Data. Searching. Shutdown. **Reference ** API : https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html Search API : https://www.elastic.co/guide/e ...
Những điều bạn nên nhớ để viết code tốt
Bạn muốn viết code tốt. Bạn muốn trở thành người lập trình giỏi. Bạn quan tâm đến chất lượng những dòng code của mình. Vậy những điều bạn nên nhớ là: Ở trong bất kỳ tình huống nào, đừng cho phép mình viết ra những dòng code chỉ để thực hiện được chức năng mình mong muốn. Bạn phải luôn cố gắng ...
Simple Fuzzy Search
Fuzzy Seach (tìm kiếm "mờ"), hay còn hay được gọi là Approximate Search (tìm kiếm "xấp xỉ") là khái niệm để chỉ kỹ thuật để tìm kiếm một xâu "gần giống" (thay vì "giống hệt") so với một xâu cho trước. Chẳng hạn như bạn bạn nhập vào ô tìm kiếm từ khoá "tran dc thag" để tìm kiếm về tên một ...
[Typography] Beautiful stranger
Sử dụng thủ pháp viết tay trong nghệ thuật chữ luôn tạo được ấn tượng mạnh mẽ và dấu ấn cá nhân rõ nét trong sản phẩm thiết kế. Đây là cách được nhiều nhà thiết kế trên thế giới đưa vào ấn phẩm của mình, như một sự khẳng định tính độc nhất và sáng tạo. Handwritten typography có thể đứng độc ...
初めてでもできるSQL (2)DB作成および接続 ( Linux )
1. 起動 マウス右クリック→Open Terminal su と入力します。その際パスワードも入力します。 その後、画面の末尾が# と表示されれば操作は成功です。 【注意】末尾が$$まま変わらない場合は、絶対に先へ進まず、手順を確認してください。 /opt/lampp/lampp start /opt/lampp/bin/mysql 画面の末尾がmysql> と表示されればMySQLでの操作が可能です。 2. 終了 exit /opt/lampp/lampp stop exit 画面の末尾が$$と表示されれば操作は成功で ...
Design Pattern - Command
Command có thể gọi là một pattern đa năng Vì sao ư, hãy cũng tìm xem vì sao nhé. Tưởng tượng bạn đang xây dựng SlickUI(là một framework GUI). Bạn đang bận rộn tạo ra những button đẹp, những dialogs tuyệt vời và những icon bắt mắt. Nhưng mỗi lần bạn kết thúc công việc tạo ra framework giao diện ...
Giới thiệu về Celluloid - Part 1
Ở thời điểm vài năm trước đây, có một phương pháp rất đơn giản để cải thiện code. Nếu bạn cảm thấy những dòng code cần xử lý nặng của mình chạy chậm hơn những gì mình mong muốn, cách đơn giản nhất là chỉ việc ngồi đợi đến phiên bản nâng cấp phần cứng tiếp theo, tốc độ CPU sẽ được cải thiện và ...