Thứ Hai, ngày 01 tháng 2 năm 2016

TL;DR - Ý nghĩa của OpenGL và các thư viện glew, glu, glut,...

Bài này tổng hợp một số thư viện liên quan đến OpenGL mà hầu hết mọi người đều đụng phải nếu làm việc với OpenGL.

Tôi chỉ hướng tới khái niệm thôi, bạn tự tìm hiểu sâu hơn nếu cần.

OpenGL

OpenGL (Open Graphics Library - http://en.wikipedia.org/wiki/OpenGL)
  • Thư viện render đồ hoạ 2D và 3D
  • Cross-platform, viết bằng C
  • Tập trung vào việc tương tác với GPU

OpenGL-ES

OpenGL-ES (OpenGL for Embedded System - http://en.wikipedia.org/wiki/OpenGL_ES), thường được viết là GLES:
  • Tập con của OpenGL
  • Sử dụng cho các hệ thống nhúng như smartphone, tablet, game console,...

WebGL

WebGL (Web Graphics Library - http://en.wikipedia.org/wiki/WebGL):
  • Thư viện render đồ hoạ 2D và 3D cho trình duyệt
  • API cho JavaScript
  • Được viết dựa trên OpenGL-ES
  • Tương tác với GPU thông qua trình duyệt

GLU

  • Chứa các hàm tiện ích cho OpenGL
  • Tập trung vào mapping giữa các hệ trục toạ độ và các loại kích thước màn hình

GLEW

GLEW (OpenGL Extension Wrangler Library - http://en.wikipedia.org/wiki/OpenGL_Extension_Wrangler_Library):
  • Chứa các hàm tiện ích cho OpenGL
  • Tập trung vào việc load các OpenGL Extension

GLUT

GLUT (OpenGL Utility Toolkit - http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit):
  • Chứa các hàm tiện ích cho OpenGL
  • Tập trung vào việc dựng và quản lý cửa sổ, các sự kiện bàn phím và chuột

SDL

SDL (Simple DirectMedia Library - http://en.wikipedia.org/wiki/Simple_DirectMedia_Layer):
  • Thư viện phát triển cho OpenGL
  • Tương tác với phần cứng hoặc low-level
  • Làm việc với audio, keyboard, mouse, joystick, graphic hardware,...
  • Có thể được dùng ở các thư viện đồ hoạ khác như DirectX

QT

  • Là framework dùng để thiết kế GUI
  • Chứa khá nhiều widget
  • Được sử dụng khá nhiều trong giới làm OpenGL

Thứ Bảy, ngày 05 tháng 12 năm 2015

Free SSL cho Google App Engine

Let’s Encrypt (https://letsencrypt.org/) cung cấp một công cụ để mọi người có thể tạo SSL Certificate hoàn toàn miễn phí. Còn Google App Engine lại cung cấp một dạng hosting miễn phí cho các ứng dụng. Kết hợp lại chúng ta sẽ có một server hỗ trợ SSL.

Bài này hướng dẫn vài bước đơn giản để đưa SSL vào domain của bạn trên AppEngine.

Note: bạn phải sử dụng máy Mac hoặc Linux để chạy command line.

Trước hết, download client tool

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt

Tạo free certificate

sudo ./letsencrypt-auto -a manual certonly

Lúc này, nó sẽ yêu cầu bạn xác nhận domain bằng một thông báo đại loại thế này:

Make sure your web server displays the following content at http://www.example.com/.well-known/acme-challenge/{challenge 1} before continuing:
{response 1}
Content-Type header MUST be set to text/plain.
...
Press ENTER to continue

Bạn cần phải đưa vài dòng source code lên server AppEngine của mình. Lưu ý là không nhấn [ENTER] trước khi bạn đưa những dòng code xử lý request lên server của mình.

Đây là mẫu viết bằng Python, và bạn cần copy {challenge} và {response} vào đúng chỗ, để nó có thể xác nhận chính xác:

class LetsEncryptHandler(RequestHandler):

    def get(self, challenge):
        self.response.headers['Content-Type'] = 'text/plain'
        responses = {
                    '{challenge 1}': '{response 1}'
                    '{challenge 2}': '{response 2}'
                }
        self.response.write(responses.get(challenge, ''))

application = WSGIApplication([
    ('/.well-known/acme-challenge/([\w-]+)', LetsEncryptHandler),
])

Tiếp theo là trở lại command line và nhấn [ENTER]. Kết quả là bạn đã có certificate, nhưng nếu bạn mở file private key ra sẽ thấy dòng này -----BEGIN PRIVATE KEY-----. Và chia buồn với bạn là Google App Engine không support SSL theo phương thức này.

Bạn cần phải đổi sang RSA, với câu lệnh:

sudo openssl rsa -inform pem -in /etc/letsencrypt/live/www.example.com/privkey.pem -outform pem | less

Giờ thì bạn chỉ cần copy, và vào App Engine > Settings > SSL Certificates, tạo một Certificate và dán private key và public key tương ứng vào.

Nhớ đặt cái tên để còn biết. Hihi.

40 cách giúp bạn giữ lửa sáng tạo

Thông tin này khá thú vị, mọi người xem hình infography bên dưới nhé:


Thứ Hai, ngày 04 tháng 5 năm 2015

Làm sao để thẻ DIV trở thành unselectable?

Đôi khi vì nhu cầu, chúng ta cần làm cho các thẻ DIV trên trang web của mình không thể bôi đen hoặc chọn được. Nhiều người tò mò về việc làm thế nào làm được chuyện này. Thực ra phương pháp rất đơn giản, nhưng trước hết, tôi xin đề cập đến chuyện "Tại sao chúng ta cần việc này?"

Có 2 lý do chính:
  1. Vì ứng dụng cần như thế. Ví dụ bạn viết một cái game, và không muốn trình duyệt bôi đen khi người dùng nhấp đôi chuột hoặc Ctrl-A.
  2. Vì không muốn để người khác dễ dàng copy.

Thứ Bảy, ngày 25 tháng 4 năm 2015

HTTP/2 là gì?

Nói ngắn gọn, HTTP/2 là phiên bản tiếp theo của chuẩn HTTP. Chuẩn HTTP là chuẩn định nghĩa truyền nhận dữ liệu trên internet, là cái mà bạn luôn thấy ở các địa chỉ trang web.

Chuẩn HTTP/2 này đang gần hoàn thành, nếu không có gì thay đổi thì khoảng tháng 8 năm 2015 sẽ hoàn tất, và việc tiếp theo là triển khai và viết tài liệu hướng dẫn.

Kể từ khi phát hành HTTP/1.1 tới nay đã hơn 15 năm, nhưng chưa có một cải tiến nào đáng kể trong thế giới internet thay đổi không ngừng. Nay, IETF HTTP Working Group đề xuất phiên bản tiếp theo của HTTP với nhiều cải tiến lớn. Rất nhiều cải tiến được lấy cảm hứng từ SPDY của Google. Tôi sẽ điểm qua một số điểm nhấn chính đáng mong đợi.

Chủ Nhật, ngày 15 tháng 3 năm 2015

Để viết blog hiệu quả

Tôi viết bài này để chia sẻ kinh nghiệm của tôi về việc viết blog. Cách đây không lâu, có người nói rằng tôi thường hay viết blog, và viết cũng khá tốt, và người ta hỏi tôi về phương pháp làm sao viết hiệu quả, vì người ta cũng cố gắng viết nhưng hầu hết là không publish ra được. Người ta hỏi tôi chỉ bởi vì tôi đã viết khá nhiều blog và cũng đã viết khá nhiều bài.

Gần đây thì có một vài người đặt vấn đề này lại với tôi. Tôi nghĩ tôi có thể chia sẻ trên blog của mình để những người khác nữa có thể tìm hiểu và tham khảo cách tiếp cận của tôi. Đôi khi giúp ích cho một ai đó.

Thứ Bảy, ngày 14 tháng 3 năm 2015

Note: Tài khoản Viettel ADSL/FTTH cho thanh toán online

Bài viết ngắn này chỉ dùng để note lại và là guide cho những người chưa biết.

Bạn nào đã từng thanh toán hoá đơn trên Internet Banking chắc chắn biết những gì chúng ta cần là thông tin tài khoản (còn được gọi là mã khách hàng, hoặc số thuê bao). Để thanh toán bằng Internet banking, trước hết bạn phải có tài khoản đăng nhập vào dịch vụ Internet Banking của ngân hàng của bạn. Với điều kiện ngân hàng của bạn hỗ trợ dịch vụ Thanh toán hoá đơn ADSL của Viettel mới được.

Mặc dù bạn đang dùng cáp quang (FTTH) nhưng khi thanh toán bạn vẫn phải chọn dịch vụ là Thanh toán ADSL, với đúng nhà cung cấp là Viettel (có nhiều tỉnh thành, và bạn phải chọn đúng).

Biểu mẫu liên hệ

Tên

Email *

Thông báo *