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à...

24 tháng 5, 2012

Địa chỉ ip 0.0.0.0 nghĩa là gì?

Đôi khi trên linux, nếu bạn chạy lênh route -n bạn sẽ có kết quả này:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.31.18      0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
38.96.196.94    192.168.1.2     255.255.255.255 UGH   0      0        0 wlan0
192.168.84.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.1.0     0.0.0.0         255.255.255.0   U     2      0        0 wlan0
192.168.110.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlan0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ppp0
0.0.0.0         192.168.1.2     0.0.0.0         UG    0      0        0 wlan0
Vậy, địa chỉ ip 0.0.0.0 khác gì với các địa chỉ IP khác.
0.0.0.0 là một địa chỉ IP đặc biệt, dùng để chỉ tất các địa chỉ IP mà một máy đang có.
Ví dụ bạn có một server có các địa chỉ IP như sau:
10.2.50.25
10.2.50.26
10.2.50.27
Khi đó nếu bạn khai báo như sau:
0.0.0.0:25
có nghĩa là bạn có thể kết nới tới cổng 25 của server tại bất cứ địa chỉ ip address nào của server (ví dụ 10.2.50.25 và 10.2.50.26 đều được).
Nó khác với nếu bạn chỉ khai báo:
10.2.50.25:25
thì bạn chỉ có thể kết nối tới cổng 25 của server tại địa chỉ ip 10.2.50.25, còn với các địa chỉ còn lại thì bạn không thể kết nối vào cổng 25

15 tháng 5, 2012

Cách sử dụng các tham số recipient_bcc_maps và sender_bcc_maps trong Postfix

1 - Làm thế nào để forward một bản sao của thư gửi tới một địa chỉ sang một địa chỉ khác.
  • Sử dụng tham số: recipient_bcc_maps.
    Tham số này sẽ yêu cầu postfix tự động tạo một bản sao copy bí mật thư gửi tới các địa chỉ hoặc domain chỉ định tới một địa chỉ chỉ định khác.
  • Nội dung: recipient_bcc_maps=hash:/đường/dẫn/tới/file/maps
    Lưu ý, tham số này có thể nhận nhiều giá trị, mỗi giá trị nằm  cách nhau một dấu phẩy và thứ tự ưu tiên truy vấn là từ trái qua phải.
  • Lệnh: postconf -e recipient_bcc_maps="hash:/đường/dẫn/tới/file/maps"
    Lệnh này sẽ edit nội dung của tham số recipient_bcc_maps, lưu ý các nội dung cũ sẽ bị ghi đè.
  • Nội dung file map:
    @domain.com       địa_chỉ_nhận@domain.com
     địa_chỉ_1@domain.com      địa_chỉ_2@domain.com
  • Sau đó cần map nó vào với postfix bằng lệnh:
    postmap /đường/dẫn/tới/file/maps
  • Sau đó khởi động lại postfix bằng lệnh:
    postfix reload.
2 - Làm thế nào để forward một bản sao của thư gửi đi từ một địa chỉ sang một địa chỉ khác
  • Sử dụng tham số: sender_bcc_maps.
    Tham số này sẽ yêu cầu postfix tự động tạo một bản sao copy bí mật thư gửi từ các địa chỉ hoặc domain chỉ định tới một địa chỉ chỉ định khác.
  • Nội dung: sender_bcc_maps=hash:/đường/dẫn/tới/file/maps
    Lưu ý, tham số này có thể nhận nhiều giá trị, mỗi giá trị nằm  cách nhau một dấu phẩy và thứ tự ưu tiên truy vấn là từ trái qua phải.
  • Lệnh: postconf -e sender_bcc_maps="hash:/đường/dẫn/tới/file/maps"
    Lệnh này sẽ edit nội dung của tham số sender_bcc_maps, lưu ý các nội dung cũ sẽ bị ghi đè.
  • Nội dung file map:
    @domain.com       địa_chỉ_nhận@domain.com
    địa_chỉ_1@domain.com      địa_chỉ_2@domain.com
  • Sau đó cần map nó vào với postfix bằng lệnh:
    postmap /đường/dẫn/tới/file/maps
  • Sau đó khởi động lại postfix bằng lệnh:
    postfix reload.

03 tháng 5, 2012

crontab trong Linux

Crontab trong linux tương tự như một tiến trình lập lịch, nó giúp người dùng có thể chỉ định khi nào thì hệ thống sẽ chạy một lệnh, kịch bản,.... đã định sẵn.
Tương ứng với mỗi người dùng sẽ có một crontab riêng.
Crontab sẽ không bị xóa khi hệ thống bị khởi động lại.
Crontab không hoạt động thay thế chức năng startup, và hoàn toàn không giống chức năng startup của hệ điều hành.
Để tạo mới, sửa một crontab, ta dùng lệnh sau:
crontab -e
Cấu trúc nội dung một crontab như sau:
Ví dụ: 0 12 14 2 * ls -l > /var/log/log.log
  • Mỗi lệnh trong crontab được đặt trong một dòng.
  • Comment được bắt đầu bằng ký tự "#"
  • Cấu trúc lệnh trong crontab:
    [min][space][hour][space][dayofmonth][space][monthofyear][space][dayofweek][space][command]
  • Trong đó:
    min: phút, (0-59)
    hour: giờ trong ngày, (0-23)
    dayofmonth: ngày trong tháng, (1-31)
    monthofyear: tháng trong năm, (1-12)
    dayofweek: ngày trong tuần (0-6, tương đương với Sunday-Saturday)
    command: là bất cứ lệnh hệ thống nào, cho phép gọi tới một file có quyền x.
  • Chú ý: crontab cho phép sử dụng các ký tự thay thế.
    Kiểu thay thế: * tương đương với bất cứ giá trị nào.
    Kiểu mỗi: */5 tương đương với cứ mỗi 5 đơn vị thời gian.
    Kiểu liệt kê: 2, 4, 6 cứ vào thời điểm 2, 4, 6 đơn vị thời gian.
    Kiểu khoảng: 9-17 lấy bất cứ giá trị nào nằm trong khoảng  từ 9 đến 17
Lệnh crontab:
crontab [-u user] [option] file
-u user: chỉ ra người dùng mà crontab của họ sẽ được chỉnh sửa.
-l : hiển thị nội dung crontab ra thiết bị hiển thị mặc định, ví dụ màn hình.
-r : xóa crontab.
-e : chỉnh sửa nội dung crontab ở chế độ soạn thảo.
-i : xóa crontab sau khi được người dùng chọn y/Y.
-s : unknow.

25 tháng 4, 2012

Chặn địa chỉ mail không mong muốn bằng Postfix

Có 2 cách để chặn 1 địa chỉ mail không mong muốn trong Postfix.
Cách 1: chặn bằng postfix
  • Tạo một file mà postfix có thể truy cập được:
    ví dụ: vi /etc/postfix/conf/postfix_firewall
  • Nhập nội dung file vừa tạo như sau:
    user@domain.com REJECT
    Trong đó:
    user@domain.com là địa chỉ cần chặn
    REJECT là thao tác thực hiện, ở đây nghĩa là từ chối và gửi thư thông báo cho người gửi (Có thể chọn DISCARD để hệ thống âm thầm loại bỏ thư này đi mà không báo lại cho người gửi)
  • Gõ lệnh:
    postmap hash:postfix_firewall 
  • Chạy lệnh:
    postconf -e smtpd_sender_restrictions="check_sender_access hash:/etc/postfix/conf/postfix_firewall"
  • Khởi động lại postfix bằng lệnh:
    postfix reload.
Xem thêm tại đây để biết cách cấu hình các tham số: http://www.postfix.org/access.5.html
Cách 2: áp dụng cho hệ thống postfix có sử dụng spam assassin
  • Mở file cấu hình của spam assassin:
    vi /etc/mail/spamassassin/local.cf (Đường dẫn này tùy lúc cài spam assassin quản trị đã cài như thế nào)
  • Thêm dòng sau:
    blacklist_from user@domain.com
    Trong đó: user@domain.com là địa chỉ cần chặn
  • Khởi động lại spam assassin:
    /etc/init.d/spamassassin restart
  • Khi đó mọi thư gửi từ địa chỉ user@domain.com sẽ bị hệ thống đưa vào thư rác.

20 tháng 4, 2012

Các tạo virtual IP (VIP) cho các máy chạy Linux

VIP là chức năng cho phép 1 card mạng có thể có nhiều ip.
Với khả năng này, một máy chủ duy nhất có thể triển khai nhiều webserver với nhiều địa chỉ ip khác nhau hoặc dùng vào mục đích cluster,...
Cách 1: sử dụng lệnh ifconfig.
Để tạo VIP, ta dùng lệnh sau:
ifconfig eth0:0 192.168.1.3
Lệnh này sẽ tạo thêm một VIP với tên thiết bị là eth0:0 và địa chỉ IP là 192.168.1.3.
Để kiểm tra lại ta gõ lệnh:
ifconfig eth0:0
eth0:0 Link encap:Ethernet HWaddr 00:14:6C:83:39:92
inet addr:192.168.1.28 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:33442 errors:0 dropped:0 overruns:0 frame:0
TX packets:38225 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20240563 (19.3 Mb) TX bytes:3483829 (3.3 Mb)
Interrupt:18
Sau khi tạo ra, VIP có thể được sử dụng như một card mạng thông thường.
Để xóa VIP ta dùng lệnh sau:
ifconfig down eth0:0
Cách 2: sử dụng lệnh iproute.
Để tạo VIP ta dùng lệnh sau:
ip addr add 192.168.1.28 dev eth1
với addr, add, dev là từ khóa.
192.168.1.28 là địa chỉ ip cần gán.
eth1: tên thiết bị thực tế sẽ thiết lập cho VIP.
Sau đó chạy lệnh:
ip show addr
để enable VIP đã tạo ra.
Kiểm tra lại bằng lệnh:
ifconfig
3: eth1: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:14:6c:83:39:92 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1
inet 192.168.1.28/32 scope global eth1
Để xóa VIP ta dùng lệnh:
ip addr del 192.168.1.28/32 dev eth1
với addr, del và dev là từ khóa
192.168.1.28/32 là địa chỉ ip của VIP (không cần phải dùng /32)
eth1 là tên card đã tạo VIP.
Link tham khảo: How to creating virtal ip address on linux
http://www.tecmint.com/create-multiple-ip-addresses-to-one-single-network-interface/

18 tháng 4, 2012

Các thủ thuật sử dụng trên Firefox (Cập nhật 18/04/2012)

Dưới đây là một số thủ thuật hay và hữu ích đối với người dùng Firefox.
1 - Tự động điền địa chỉ lên thanh địa  chỉ:
Khi đang gõ một địa chỉ trên thanh địa chỉ, bạn có thể:
Nhấn ctrl + enter: để có tên miền .com, ví dụ gõ "google" --> sẽ có "www.google.com"
Nhấn shift + enter: để có tên miền .net
2 - Phím tắt để đóng tab đang mở:
Khi đang xem một tab, nếu muốn đóng tab đó ngay lập tức hãy nhấn ctrl + w

09 tháng 4, 2012

Lập trình hướng đối tượng trong javascript

Một số lưu ý trước khi đọc bài viết:
  • Bài viết không hướng tới mục đích hướng dẫn người lập trình đi từng bước từ cơ bản tới nâng cao trong việc lập trình javascript.
  • Nội dung bài viết chỉ mang tính gợi nhớ, như một note list giúp người lập trình dựa theo đó mỗi khi cần sử dụng kỹ thuật lập trình hướng đối tượng trên javascript.
1 - Hàm khởi tạo đối tượng
function name_object(variables){
 }
2 - Kế thừa trong javascript:
Đặt hàm này phía sau hàm khởi tạo của đối tượng:
name_object.prototype = new parent_object();
name_object.prototype.constructor = name_object
3 - Biến private, biến public:
  • Biến private: là các biến được định nghĩa với từ khóa var ở bên trong hàm khởi tạo của một Object
    var variable;
    Lưu ý: khai báo như thế này cũng có thể coi là một biến private của Object
    function Car(param){
       this.member = param;//param là biến private
    }
    Một biến private chỉ có thể truy cập được từ một hàm private và hàm privileged (không thể truy cập được từ ngoài và cũng không thể truy cập được từ public method của chính Object đó)
  • Biến public: là biến được khai báo với từ khóa this.
    this.variable;
  • Trong một Object, ta dùng từ khóa this khi truy cập một thuộc tính để chỉ ra rằng ta đang muốn truy cập vào thuộc tính của chính Object này.
4 - Hàm private, hàm public:
  • Hàm private: là hàm được khai báo bên trong của hàm khởi tạo của Object, chỉ có thể được gọi thông qua hàm privileged
    var function_name = function(variables){
        function dec(){
       //đây là hàm private
       }

    }
  • Hàm public: là hàm được khai báo với từ khóa prototype

    Classname.prototype.method = function(){}
5. Static properties:
  • Là thuộc tính được khai báo theo mẫu Classname.propertyName = value 
6. Static method
  • Là method được khai báo theo mẫu Classname.methodName = function(){}
  • Có thể sử dụng static method mà không cần khởi tạo đối tượng.
5. Prototype là gì?
6. Một số lưu ý thú vị khi dùng javascript "Object "
  • Khi khởi tạo một đối tượng, nếu không dùng từ khóa new thì trong đối tượng nếu dùng this, this này sẽ là một global object (nếu dùng thì new thì this sẽ chính là đối tượng đó)
  • Thực chất các hàm trong lập trình hướng đối tượng của javascript cũng chỉ là một thuộc tính được gán giá trị là một hàm.
  • Prototype thường được dùng để tạo public method và trong việc kế thừa.
Tham khảo thêm tại:
Muốn nắm nhanh hơn thì bạn vui lòng chuyển qua bài này:
 http://dalmate-tech.blogspot.com/2013/05/lap-trinh-huong-oi-tuong-voi-javascript.html