Reverse proxy vs Forward proxy

Proxy hay Proxy Server làm nhiệm vụ đứng giữa client và web server ứng dụng. Nó có vai trò bảo vệ client hoặc webserver tùy theo loại của chúng.

Có 2 loại proxy:

1- Forward proxy thường được sử dụng trong các doanh nghiệp. Nó cùng với với tường lửa, router để bảo vệ, kiểm soát người dùng ra ngoài Internet. Proxy này ghi log, cho phép người dùng được truy cập các trang web nào, thời điểm nào… Đảm bảo tính ẩn danh của người dùng trước các web ghi lại thông tin người truy cập.

2- Reverse proxy thì ngược lại, nó tiến hành bảo vệ web server trước các client. Nó tiến hành ghi log, đứng trước bảo vệ các webserver đằng sau, ngăn không cho client gửi yêu cầu tới webserver trực tiếp. Nó cũng đóng vai trò như các bộ điều hướng, kiểm soát các client để phân bổ tới các ứng dụng định sẵn. Hơn nữa Reverse proxy có thể đóng thêm vai trò cân bằng tải (Load Balancer)

Tìm hiểu tiếp phần này thấy có khá nhiều thứ hay ho. Ta mở rộng thêm các khái niệm về Load Balancer, High-Availability đi kèm là HAProxy và Keepalived.

Đối với Apache thì có các module Proxy, module HAProxy, module Keepalived để làm Cân bằng tải.
Chuyên biệt hơn ta có Piranha Load Balancer, với cấu hình trực quan để làm Load Balancer.

Ta cũng có thể sử dụng NGINX làm proxy cho Apache.

Một số link tham khảo thêm:
https://tech.bizflycloud.vn/tong-quan-ve-haproxy-va-load-balancing-20180712085354307.htm
http://congdonglinux.vn/piranha-load-balancer/
https://anninhmang.edu.vn/cau-hinh-high-available-load-balancer-voi-haproxy-va-keepalived/
https://vicloud.vn/community/huong-dan-su-dung-apache-nhu-mot-reverse-proxy-bang-cong-cu-mod-proxy-tren-centos-7-376.html
https://thachpham.com/linux-webserver/nginx-reverse-proxy-cho-apache.html
https://kipalog.com/posts/Web-Server—Tan-man-PHP-Handler-va-Apache

WordPress Framework

WordPress Framework là nền tảng xây dựng nên các theme nói chung. Nghĩa là theme WordPress không cần xây dựng từ đầu mà có thể base trên một theme nào đó sử dụng WordPress Framework. Cái này có free và có trả phí. có thể làm theme, plugin…

Cần nghiên cứu để sửa theme cho blog.

Nếu bạn là một Hosting Provider để đáp ứng nhu cầu trên thì bạn nên quan tâm đến control Plesk. Plesk có thể đáp ứng nhu cầu của bạn.

C10K problem – Vấn đề C10K

Vấn đề C10K là vấn đề cần giải quyết cho webserver với 10.000 kết nối cùng một lúc. Cho tới bây giờ thì bài toán được nới rộng hơn tới hàng triệu kết nối cùng một lúc.

NGINX webserver

NGINX là một webserver mã nguồn mở ban đầu được thiết kế để giải quyết bài toán C10K (sử dụng kiến trúc hướng sự kiện, bất đồng bộ) thay cho Apache sử dụng kiến trúc tạo thread cho mỗi request.

Nhưng ngày nay NGINX còn được phát triển để dùng làm reverse proxy, HTTP load balancer và email proxy như IMAP, POP3, và SMTP.

Apache vs Apache Tomcat

Cũng hay tiếp xúc với phần này nhưng để nhìn nhận rõ xem sự khác nhau giữa Apache và Apache Tomcat thì mình chưa tìm hiểu kỹ.

Cả 2 phần mềm này đều được điều hành và phát triển bởi Apache Software Foundation. Nhưng cả hai đều là miễn phí và nguồn mở, chiếm phần lớn về thị phần webserver trên toàn thế giới.

Theo mình nắm được thì:

Apache là webserver hỗ trợ http và https, được sử dụng cho các website tĩnh (???) được viết bằng C dạng Module có hỗ trợ cho các ngôn ngữ lập trình để dựng ứng dụng như PHP, Python, Perl…

Apache Tomcat được viết bằng JAVA tạo riêng cho các app Java. Nó được coi là container chứa Servlet/JSP.

Apache là cơ bản, đa nền tảng, được sử dụng phổ biến nhưng hiệu suất khi có số lượng kết nối cùng lúc lớn thì kém hiệu quả. So với NGINX mới phát triển thì hiệu suất cao hơn nhiều, giải quyết được bài toán hàng chục ngàn kết nối cùng một lúc. Vấn đề hàng chục ngàn kết nối cùng lúc là vấn đề C10K.

DR testing – Disaster Recovery Testing

Lần đầu tiên mình nghe về DR test, đúng là từ trước đến nay chưa biết về khái niệm này. Đây là một phần công việc cho việc kiểm toán cuối năm của công ty.

DR testing viết tắt của Disaster Recovery Testing. Dịch ra tiếng việt là thử nghiệm khắc phục thảm họa. Phần này khá rộng đối với cả doanh nghiệp chứ không chỉ riêng trong các phần mềm của công ty.

Trong lĩnh vực phần mềm thì phần này nôm na là test các ứng dụng, server, cơ sở dữ liệu dự phòng xem có hoạt động tốt và đúng như hệ thống prod để chạy không. Việc này đáng lẽ ra là phải làm thường xuyên vì phần mềm và CSDL luôn được nâng cấp, do vậy đối với các phiên bản dự phòng thì luôn phải đảm bảo như trong PROD ít nhất là trước thời điểm sửa đổi.

Hàm tuyến tính và linear regression

Các bài toán có thể giải bằng linear regression là các bài toán có thể biểu diễn bằng một hàm tuyến tính.

Vậy hàm số tuyến tính là hàm số như thế nào? Hàm số tuyến tính là hàm số có dạng là một đường thẳng y=ax+b. Mở rộng ra ta có hệ phương trình tuyến tính là hệ phương trình có các phương trình là phương trình tuyến tính, hay nói cách khác là phương trình tuyến tính có nhiều hơn 1 biến.

Bởi vì nếu chỉ có 1 phương trình tuyến tính nhiều hơn 1 biến thì có vô số nghiệm, cần phần có các điều kiện hoặc nhiều hơn 1 phương trình tuyến tính thì mới có thể giải được.

Quay lại việc giải bài toán bằng LINEAR REGRESSION thì chỉ cần nó là hàm tuyến tính theo trọng số (w).

Monorepos vs Multilrepos

Lang thang trên mạng tự nhiên gặp bài viết này [1] nên tò mò xem Momorepos là gì? Sau đó tìm hiểu thêm google thì có bài viết [2] [3] [4] giải thích và cho ví dụ khá rõ ràng.

Thì ra nó liên quan đến việc quản lý mã nguồn của dự án. Trước đây mình không để ý lắm nên không biết phân biệt giữa 2 khái niệm này. Khi dùng SVN thì công ty mình dùng theo kiểu Monorepos(mặc dù chưa biết đến thuật ngữ đó), nghĩa là có một Repository duy nhất được tạo ra, các dự án khác nhau đều tống chung vào đó, mỗi dự án là một thư mục được tạo ra. Tất nhiên vẫn phân quyền được bình thường theo từng thư mục.

Sau này khi chuyển sang Gitlab cùng với việc phát triển Microservice nên trên Gitlab mỗi một project thì đều tạo Repository riêng cho nó. Tương đương trên github mình làm các project nhỏ nhỏ khác cũng như vậy.

Sơ sơ thì mỗi cái lại có ưu và nhược điểm nhưng thấy nhiều ý kiến cho rằng đối với Startup và Công ty lớn ưa chuộng việc dùng Monorepos hơn như Google, Facebook…

[1]: https://medium.com/@hoangbkit/why-monorepo-in-2018-89221acd4bfb
[2]: https://www.reddit.com/r/devops/comments/8vgqhq/what_do_you_prefer_and_why_mono_repo_or_multiple/
[3]: https://www.atlassian.com/git/tutorials/monorepos
[4]: https://medium.com/@patrickleet/mono-repo-or-multi-repo-why-choose-one-when-you-can-have-both-e9c77bd0c668

Config send email from oracle database server

ORA-24247: network access denied by access control list (ACL)

Kiểm tra bằng cách chạy câu lệnh

select * from dba_network_acls;

Nếu có data dạng:

 HOST LOWER_PORT UPPER_PORT ACL  ACLID
 mail.vstv.vn    1   1024    /sys/acls/send_mail.xml D285E04B69B942688587AB8FE5B41C69 

Chạy câu lệnh này:

BEGIN
   DBMS_NETWORK_ACL_ADMIN.create_acl (
     acl          => 'send_mail.xml',
     description  => 'Purpose of the acl is to send mail',
     principal    => 'INTRANET',
     is_grant     => TRUE,
     privilege    => 'connect',
     start_date   => SYSTIMESTAMP,
     end_date     => NULL);
 DBMS_NETWORK_ACL_ADMIN.assign_acl (
     acl         => 'send_mail.xml',
     host        => 'mail.trituenhantao.info',
     lower_port  => 1,
     upper_port  => 1024);
 COMMIT;
 END;

Rule of Machine Learning

Rule of Machine Learning is best practices.

This is document have 43 rule of Machine Learning.

http://martin.zinkevich.org/rules_of_ml/rules_of_ml.pdf?fbclid=IwAR342h4lFsSUdZMFFI7r0hB3YvrkPSRQaPP3dHGMfhRLCq2y1jdz0x_DZlw

I will translate this content of file to Vietnamese.