Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

27 tháng 10, 2018

Mẹo nhỏ để học một ngôn ngữ lập trình mới

Bài viết này mình viết để hướng dẫn các bạn lập trình viên cách để học một ngôn ngữ lập trình mới.
Yêu cầu:

  • Bạn phải nắm vững một ngôn ngữ lập trình trước đó, mình khuyên nên là Java hoặc C vì 2 ngôn ngữ này có cách viết khá hệ thống và quy củ, các ngôn ngữ khác khiến người học bị rối khi chuyển ngôn ngữ nên mình không khuyên dùng (theo ý kiến chủ quan thì một số ngôn ngữ đó là Ruby on rails, Python, PHP)
  • Hãy tự tạo cho mình một phong cách viết code riêng (ví dụ cách thụt đầu dòng, cách đặt dấu '{') để tránh bị rối khi học quá nhiều ngôn ngữ lập trình.
  • Loại bỏ tư tưởng bắt buộc ngôn ngữ mới phải có được những tính năng như ngôn ngữ cũ (ví dụ đừng đòi hỏi java phải có con trỏ giống như C).
  • Khi gặp các ví dụ trong ngôn ngữ mới, hãy gõ lại nó bằng tay, tự chạy nó để cảm nhận.
  • Hãy viết ngôn ngữ mới theo cách mình đã viết ngôn ngữ cũ, ví dụ mình có thể viết javascript theo phong cách viết của Java (điều này rất tiện cho mình khi quay lại đọc code sau này, và đỡ phải nhớ quá nhiều quy ước viết code)
Kết quả mong muốn:

  • Nắm được cách sử dụng ngôn ngữ lập trình mới ở mức cơ bản (Cách sử dụng nâng cao hơn bạn sẽ tự hình thành được trong quá trình sử dụng ngôn ngữ lập trình này)
  • Lập trình Hello world không gặp lỗi ^.^
Bạn chuẩn bị những thứ như sau:

  • Lựa chọn một ebook dạy ngôn ngữ đó (nếu có), mình khuyên nên chọn những cuốn có tiêu đề kiểu "Học trong 7 ngày", "Học trong 21 ngày" vì thường những cuốn này có nội dung rất cô đọng và dễ hiểu.
  • Cài đặt IDE phù hợp, cái này thì tùy bạn chọn, các hướng dẫn cài đặt rất nhiều trên mạng.
Rồi, giờ là thứ tự học:
  • Học cách khai báo biến, các kiểu biến như số nguyên, xâu, số thực,...(trừ một số kiểu phức tạp như array, list, map,...)
  • Học các phép toán: cộng, trừ, nhân, chia, số mũ,...
  • Học cách sử dụng lệnh rẽ nhánh.
  • Học cách sử dụng vòng lặp.
  • Học cách sử dụng mảng, danh sách, từ điển (dictionary)
  • Học cách sử dụng hàm: tạo hàm, gọi hàm
  • Học về phạm vi của biến: toàn cục (local) hay toàn bộ (global)
  • Học cách sử dụng class: hàm khởi tạo, hàm, thuộc tính.
  • Học cách khai báo Object
  • Học mở rộng, nếu muốn:
    • Kế thừa.
    • Import thư viện
    • Học cách bắt Exception
    • Cách sử dụng comment
Với cách học này, mình thường chỉ tốn tối đa là 7 ngày để nắm được cách sử dụng một ngôn ngữ mới :)
Chúc các bạn vui vẻ,

19 tháng 9, 2018

Cài đặt Kerberos trên Linux

Lưu ý: Kerberos sử dụng giao thức dựa trên việc đồng bộ thời gian giữa các server thành phần nên yêu cầu các server phải đồng bộ thời gian với nhau ==> Sử dụng NTP. Thời gian lệch giữa các client  tối đa là 5 phút.

Cài đặt server KDC:

Bước 1: cài đặt phiên bản mới nhất của KDC

RHEL/CentOS/Oracle Linux
yum install krb5-server krb5-libs krb5-workstation
SLES
zypper install krb5 krb5-server krb5-client
Ubuntu/Debian
apt-get install krb5-kdc krb5-admin-server

Bước 2: Sửa file

vi /etc/krb5.conf
Đổi phần [realms] thành hostname của máy chủ cài đặt KDC, ví dụ:

[realms]
EXAMPLE.COM = {
   kdc = my.kdc.server
   admin_server = my.kdc.server
}

Bước 3: Một số thành phần, ví dụ HUE, yêu cầu phải có một ticket có thể làm mới được vì thế cần cấu hình để KDC hỗ trợ yêu cầu này bằng cách thêm tùy chọn sau vào file /etc/krb5.conf:
renew_lifetime = 7d

Lưu ý: Trên Ubuntu/Debian, các bước thiết lập được thực hiện khi cài đặt mới KDC, bạn có thể cài đặt lại bằng cách chạy lệnh dpkg-reconfigure krb5-kdc, vì thế có thể bỏ qua bước 1 và 2 ở trên.

Tạo cơ sở dữ liệu cho Kerberos:

Bước 1: Sử dụng tool kdb5_util:

RHEL/CentOS/Oracle Linux
kdb5_util create -s
SLES
kdb5_util create -s
Ubuntu/Debian
krb5_newrealm

Nhập mật khẩu cho database (lưu ý phải nhớ mật khẩu này, nếu không thì không thể giải mã được dữ liệu nữa)

Bước 2: khởi động máy chủ KDC và máy chủ quản trị KDC

RHEL/CentOS/Oracle Linux 6
/etc/rc.d/init.d/krb5kdc start
/etc/rc.d/init.d/kadmin start
RHEL/CentOS/Oracle Linux 7
systemctl start krb5kdc
systemctl start kadmin
SLES 11
rckrb5kdc start
rckadmind start
SLES 12
systemctl start krb5kdc
systemctl start kadmind
Ubuntu/Debian
service krb5-kdc restart
service krb5-admin-server restart

Bước 3(tùy chọn): khởi động KDC cùng với máy bằng cách:
RHEL/CentOS/Oracle Linux 6
chkconfig krb5kdc on
chkconfig kadmin on
RHEL/CentOS/Oracle Linux 7
systemctl enable krb5kdc
systemctl enable kadmin
SLES 11
chkconfig rckrb5kdc on
chkconfig rckadmind on
SLES 12
systemctl enable krb5kdc
systemctl enable kadmind
Tạo tài khoản quản trị Kerberos:
Có thể tạo tài khoản này từ các máy chạy KDC trong cùng mạng, sử dụng quyền admin. Trong hướng dẫn này, giả sử bạn sử dụng kadmin.local trên máy chạy KDC. kadmin.local cho phép bạn phân quyền mà không cần sử dụng tài khoản admin.
Bước 1: tạo tài khoản admin
kadmin.local -q "addprinc admin/admin"
Bước 2: xác nhận lại tài khoản này có đủ quyền cần thiết trong KDC ACL bằng cách kieer tra file kadm5.acl
RHEL/CentOS/Oracle Linux
vi /var/kerberos/krb5kdc/kadm5.acl
SLES
vi /var/lib/kerberos/krb5kdc/kadm5.acl
Ubuntu/Debian
vi /etc/krb5kdc/kadm5.acl
Ví dụ bạn có tài khoản admin@EXAMPLE.COM, bạn cần thêm dòng sau vào file:
*/admin@EXAMPLE.COM *
Bước 3: khởi động lại kadmin:
RHEL/CentOS/Oracle Linux 6
/etc/rc.d/init.d/kadmin restart
RHEL/CentOS/Oracle Linux 7
systemctl restart kadmin
SLES
rckadmind restart
Ubuntu/Debian
service krb5-admin-server restart

Bài tham khảo: https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.0.3/bk_ambari-security/content/optional_install_a_new_mit_kdc.html

07 tháng 9, 2018

Tản mạn một vài dạng lưu trữ database

1. Hbase

Hbase lưu trữ dữ liệu theo cấu trúc column family.
Có thể nhìn vào hình sau để hình dung:



Trong đó:

  • Một table có thể có nhiều column family.
  • Một column family có thể có nhiều column.
Một số note:
  • Có thể query Hbase theo dạng sql bằng cách sử dụng Hive
2.  MongoDB:
MongoDB lưu trữ dữ liệu phẳng dạng Json:
Có thể nhìn vào hình sau để hình dung: