Một số lưu ý khi setup docker cho dự án

Posted in Uncategorized

*** Run docker ***

  1. Để cài docker cần bật mode vitualization từ bios
  2. Cài HyperV và Container feature từ Control Panel > Program > Turn Windows Feature On or Off, khởi động lại máy sau khi cài xong
  3. Mở Powershell với quyền admin và chạy file install-dev-env.ps1, đợi cho choco cài xong
  4. Chạy docker cho windows cần chú ý Share Drives ổ có chứa source để tránh lỗi về quyền truy cập (mở settings của docker và chọn Share drives sau đó chọn ổ cần share và Apply).
  5. Việc tải các images dùng trong topenland có thể mất rất nhiều thời gian do đườn truyền internet, do vậy ae cố gắng pull image trước để mai có sẵn dùng
    Để pull image, mở console tại thư mục có chứa các file docker-compose.yml và chạy lệnh:
    $ docker-compose -f docker-compose.yml -f docker-compose.override.yml pull
    Để build
    $ docker-compose -f docker-compose.yml -f docker-compose.override.yml build
    Để tạo container
    $ docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d

*** Setup portainer ***

  • Tạo 1 folder là portainer, sau đó save file này vào và chạy docker-compose up -d
  • Portainer này dùng để quản lý docker với giao diện đồ họa
  • Sau khi chạy lệnh up thì mở trình duyệt tại http://localhost:9000
  • Lần đầu tiên sẽ yêu cầu tạo user => tạo user admin với password của ae, sau đó chọn host là local để quản lý docker trên máy của ae
  • Tham khảo thêm tại portainer.io

Hiểu về thuật toán QuickSort

Posted in Algorithm

Thuật toán dựa trên kỹ thuật chia để trị,được đề xuất bởi C.A.R Hoare
Ý tưởng như sau:

Sắp xếp dãy khóa k[1..n] thì có thể coi là sắp xếp đoạn từ chỉ số 1 tới chỉ số n trong dãy khóa đó.
Nếu đoạn đó có ít hơn 2 khóa thì không cần làm gì cả, nếu đoạn đó có ít nhất 2 khóa, ta chọn một khóa ngẫu nhiên nào đó làm chốt (pivot). Mọi khóa nhỏ hơn khóa chốt được xếp vào vị trí đứng trước chốt,mọi khóa lớn hơn chốt được xếp vào vị trí sau chốt.Sau phép hoán chuyển như vậy thì đoạn đang xét được chia làm 2 đoạn khác rỗng mà mọi khóa trong đoạn đầu đều <= chốt và mọi khóa trong đoạn sau đều >= chốt. Vấn đề trở thành sắp xếp 2 đoạn mới được tạo ra (độ dài ngắn hơn độ dài đoạn ban đầu) bằng phương pháp tương tự (gọi đệ quy)
Độ phức tạp là O(n*lgn) Continue reading

Các lỗi sai cơ bản trong C#

Posted in Tips

#1 Sử dụng kiểu dữ liệu tham chiếu như một kiểu nguyên thuỷ hay kiểu giá trị

Trong lập trình C++ hay nhiều ngôn ngữ khác có sử dụng kiểu dữ liệu tham chiếu, tức là các giá trị cửa kiểu dữ liệu đó tham chiều tới cùng một vùng nhớ. Để hiểu về kiểu dữ liệu nguyên thuỷ (value type hay primitive type) hay kiểu dữ liệu tham chiếu (reference type) bạn cần hiểu đôi chút về vùng nhớ trong đó có heap và stack. Continue reading

Giới Thiệu Về Prolog và Ứng Dụng Vào Hệ Giải Toán (Part2)

Posted in You don't know Dev!, You don't know Prolog

Chương II: Ứng Dụng Vào Hệ Giải Toán

Các phép toán đơn giản

Bài toán 1: Các phép toán số học cơ bản: + , – , *, /,mod.

Yêu cầu bài toán.

Cho 2 toán hạng a và b. Tính tổng, hiệu, tích, thương và chia lấy dư của 2 toán hàng đó.

  • Input: Cho 2 số a và b.
  • Output: Tính
  • Tổng: a + b = ?
  • Hiệu: a – b = ?
  • Tích: a * b = ?
  • Thương: a / b = ?
  • Chia lấy phần dư: a mod b =?.

Ý tưởng giải thuật. Continue reading

Giới Thiệu Về Prolog và Ứng Dụng Vào Hệ Giải Toán (Part1)

Posted in You don't know Dev!, You don't know Prolog

Chương I: Giới Thiệu Về Prolog

  1. Giới thiệu

Prolog là ngôn ngữ được sử dụng phổ biến nhất trong dòng các ngôn ngữ lập trình lôgich (Prolog có nghĩa là PROgramming in LOGic). Ngôn ngữ Prolog do giáo sư người Pháp Alain Colmerauer và nhóm nghiên cứu của ông đề xuất lần đầu tiên tại trường Đại học Marseille đầu những năm 1970. Đến năm 1980, Prolog nhanh chóng được áp dụng rộng rãi ở châu Âu, được người Nhật chọn làm ngôn ngữphát triển dòng máy tính thế hệ 5. Prolog đã được cài đặt trên các máy vi tính Apple II, IBM-PC, Macintosh. Continue reading