Java Thread: notify() and wait()

Để tránh các vấn đề thường gặp với multithreading: Hai hay nhiều thread tranh nhau sử dụng chung tài nguyên - race condition. Thread này chiếm giữ tài nguyên của thread khác yêu cầu đến -> dẫn đến bị tắc nghẽn - deadlock. Các thread khác chiếm hết tài nguyên -> có thread không được ...

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

Sass-based grid framework - Susy

Nếu là một designer hẳn bạn sẽ biết grid layout luôn là người bạn tốt của chúng ta. Grid layout giúp việc thiết kế, cấu trúc một trang web dễ dàng và hiệu quả hơn cũng như thân thiện với người dùng. Tuy nhiên các vấn đề về sắp xếp làm sao để các thành phần không chèn, đè lên nhau lại là cả vấn ...

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

Data Migrations in Rails

https://robots.thoughtbot.com/data-migrations-in-rails Bất cứ lúc nào, khi chúng ta cần phải thay đổi dữ liệu thực tế trên môi trường production. Dĩ nhiên tùy chọn đầu tiên xuất hiện trong đầu là sử dụng Rails migration, đặc biệt kể từ khi migration xuất hiện trong các task chính của, data ...

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

Tối ưu hóa CSS

Tiếp theo phần blog tối ưu hóa code ROR lần trước, lần này mình đề cập đến một vấn đề mà không ít developer thường hay bỏ sót. Một phần có thể tối ưu hóa được, giúp một phần cho trang web chạy nhanh hơn đó chính là CSS. Nhiều lập trình viên thường chỉ chú ý đến việc tối ưu thuật toán, tối ưu xử lí ...

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

Laravel 5.2 - New Features

Laravel 5.2 đã được phát hành từ ngày, nó có khá nhiều điểm mới so với phiên bản 5.1 như hỗ trợ multiple authentication driver, implicit model binding, simplified Eloquent global scopes, authentication scaffolding, middleware groups, rate limiting middleware, array validation improvements, and ...

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

Phát triển game dựa trên game engine đa nền tảng cocos2d-x (P1)

Theo như tiêu đề bài viết, đây sẽ là 1 series tập trung vào việc phát triển game dựa trên game engine đa nền tảng cocos2d-x. Đối tượng bài viết hướng tới là những lập trình viên bắt đầu tiếp cận với cocos2d-x và cả những người đã tìm hiểu và sử dụng qua nền tảng này. Vì vậy level sẽ được nâng dần ...

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

Chương 1: Bắt đầu với Selenium IDE

Kiểm thử tự động đang dần trở lên phổ biến trong những năm qua do các đội không có thời gian hay tiền bạc để đầu tư vào đội kiểm thử lớn để đảm bảo các ứng dụng làm việc như họ mong muốn. Người phát triển cũng muốn chắc chắn rằng code họ viết làm việc như họ muốn. Jason Huggins cũng thấy được vấn ...

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

Tạo Và Sử Dụng Module Trong Ruby on Rails

Chào các bạn, như bài viết trước mình cũng có 1 bài viết giới thiệu về Ruby on Rails, bài biết hôm nay mình lại tiếp tục với chủ đề với tạo và sử dụng Module như thế nào trong Ruby on Rails. Trong Ruby on Rails với tính linh hoạt của module nên nó được sử dụng khá nhiều trong các dự ...

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

Tìm hiểu về movie Maker trên android - Phần 2

Tiếp tục ở phần 1 Ở phần này mình sẽ giới thiệu tạo ra video đơn giản nhất và viết demo hướng dẫn Mục tiêu Tạo ra video demo với zoom hình ảnh đầu vào Add audio sau khi có video Xuất ra video cuối cùng với thời lượng bằng thời lượng video tạo ra ban đầu (cho dù audio add vào có độ dài hơn) ...

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

Những điều cần biết về java.util.concurrent trong lập trình đa luồng

Viết code đa luồng vừa làm việc tốt vừa bảo vệ được các ứng dụng trước các lỗi là khó khăn, đó là lý do mà chúng ta có java.util.concurrent . Tôi sẽ giới thiệu các class của java concurrent: CopyOnWriteArrayList , BlockingQueue , ConcurrentMap đã đáp ứng các yêu cầu lập trình multithread như ...

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

Một số kĩ thuật tối ưu tốc độ Swift

1. Khởi động whole module optimization Ở Xcode7 thì chúng ta có thể khởi động Whole Module Optimization trong build setting để có thể tối ưu tốc độ của Swift. Đối với cấp độ None hoặc Fast thì trình biên dịch làm việc với từng file source một. Khi định nghĩa các generic function trong ...

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

Tìm hiểu 2D graphic trong android qua ví dụ

Có 2 cách phổ thông nhất để vẽ 2d lên android: Vẽ tới một Canvas Vẽ tới một view Canvas là gì? Theo ý mình hiểu thì nó kiểu như một cái để mình vẽ lên chẳng hạn như bảng, giấy hoặc bất cứ thứ gì mà khi mình cầm bút or phấn vẽ lên đó thì có thể nhìn thấy. Có giấy phải cung cấp bút mới vẽ ...

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

LibGDX Tutorial 10: Scene2D Phần 2 - Sử dụng các Actions

Phần tiếp theo của Scene2D tutorial, chúng ta sẽ xem làm thế nào để các Actors hoạt động được sử dụng các Actions. Hãy nhìn vào một ví dụ: package com . thinhhung . game ; import com . badlogic . gdx . ApplicationListener ; import com . badlogic . gdx . Gdx ; import com . badlogic . ...

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

Làm sao để cân bằng giữa công việc và cuộc sống

Làm việc trong ngành Công nghệ thông tin (CNTT) là một nghề thú vị, hấp dẫn nhưng cũng có rất nhiều áp lực. Có đôi khi chúng ta phải chấp nhận sự "cạnh tranh" không mong muốn giữa thời gian dành cho công việc và thời gian dành cho cuộc sống gia đình mình. Vậy bạn đã có cách nào để có thể điều ...

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

Giới thiệu về Jenkins: Một Open Source Continuous Integration Server

Jenkins là một máy chủ tích hợp liên tục có thể mở rộng. Nó build và test phần mềm của bạn một cách liên tục và theo dõi sự thi hành và trạng thái của các remote jobs. Nó giúp cho team members và users thường xuyên có được code chạy ổn định. Cài đặt Jenkins Trong bài viết này tôi sử dụng ...

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

Sử dụng ssh với 2 tài khoản github cùng 1 lúc

Tình huống Làm việc trong hai repository khác nhau, bắt buộc phải sử dụng hai tài khoản github khác nhau. Dùng giao thức ssh để tương tác mình sẽ hướng dẫn các bạn sử dụng 2 tài khoản github cùng 1 lúc. Github quy định mỗi ssh key chỉ được gắn cho một tài khoản. Mình sẽ tạo hai ssh key, với ...

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

Media Playtrack trong Android (phần 2)

Kết thúc phần trước, chúng ta đã tìm hiểu đến phần wakelock trong media, hôm nay chúng ta sẽ tiếp tục các đặc tính khác trong media playtrack. Chạy như một service nền Service thường được dùng cho các công việc chạy trong background, chẳng hạn như lấy email, đồng bộ hóa dữ liệu... Trong cac ...

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

Symfony form (P2)

Symfony Form (P2) Phần 1 bạn có thể đọc tại đây https://viblo.asia/cuongnv_540/posts/157G5orlRAje Thay đổi các widgets mặc định Trở lại với ví dụ của chúng ta. Với trường Type bạn có thể thấy kiểu dữ liệu là text. Người dùng có thể nhập bất kì thứ gì họ muốn. Như vậy có thể gây khó ...

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

Googleweblight – Move Fast, Break Things?

Nếu bạn chưa biết GoogleWeblight là gì: https://support.google.com/webmasters/answer/6211428?hl=en đây là những gì Google miêu tả về GoogleWeblight: Google sẽ chạy nhanh, nhẹ hơn cho những người dùng mobile ở những quốc gia có kết nối mạng chậm. Để làm được điều này, chúng tôi convert trang web ...

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

Giới thiệu những plugin hữu ích khi dùng Sublime Text editor

Trong thế giới lập trình, ắt hẳn bạn đã từng dùng ít nhất một công cụ nào đó để phát triển các ứng dụng của mình. Một trong số đó có thể bạn đã từng nghe hoặc dùng đến là Sublime Text, hiện đã ở bản 3. Nó là một công cụ editor mã nguồn đa nền tảng với Python API. Nó hỗ trợ rất nhiều ngôn ngữ lập ...

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