Backup tự động EC2 linux với S3

 

Backup EC2 instance trên AWS thì có rất nhiều cách, ví dụ: AWS Backup, Lambda, ... Những cách này đều có hướng dẫn chi tiết trong document của AWS, tuy nhiên sau bài Backup tự động Server, VPS Linux và lưu lên Google drive có nhiều bạn hỏi tôi có thể áp dụng cách này cho AWS EC2 được không ? Câu trả lời là : Hoàn toàn được. Ưu điểm của phương pháp này so với những phương pháp được giới thiệu của AWS là không cần thiết phải Backup toàn bộ Instance ( thường có dung lượng lớn, gây tốn chi phí) mà chúng ta chỉ backup những phần cần thiết như: MySQL data, Upload file.

Git reset hoạt động như thế nào ? Sự khác nhau của Sort, Hard, và Mixed resets ?


git reset
là một lệnh mạnh mẽ có thể sửa đổi lịch sử của Git repository của bạn và sửa các lỗi bạn đã mắc phải. Mặc dù cái tên khiến nó có vẻ đáng sợ khi sử dụng, nhưng nó thực sự khá dễ dàng. Hôm nay tôi có phỏng vấn 1 bạn Senior và thấy mặc dù bạn biết sử dụng lệnh này nhưng lại không hiểu rõ sự khác nhau giữa các cách dùm. Vì vậy trong lúc rảnh rỗi tôi cũng viết 1 bài dựa vào kinh nghiệm và tham khảo dịch lại một vài tài liệu nước ngoài với hi vọng một ai đó đọc được và thấy có ích cho họ.

Để trở thành một Full-stack developer giỏi


Full-stack developer là vị trí mà nhiều Dev mong muốn đạt được, cũng như nhiều nhà tuyển dụng săn đón. Kiến thức Full-Stack giúp dev có cái nhìn tổng thể về hệ thống, rất cần thiết và được đánh giá cao nếu họ muốn phát triển lên thành Team Leader, Product Manager hay Software Architect.

Review code React Native voi Coding Standard & Best Practices

Hiện tại chưa có một tổ chức nào đưa ra một tiêu chuẩn cụ thể cho React native. Sau một thời gian chinh chiến nhiều dự án, tôi xin chia sẻ coding rule mà tôi đã tham khảo từ nhiều tài liệu khác nhau cũng như kinh nghiệm coding. Đây là những điều mà theo tôi bạn nên biết trước khi bắt đầu một dự án React Native.

AWS serverless giải pháp xây dựng API nhanh chóng và hiệu quả (Có demo)

 


Sau một thời gian làm các dự án sử dụng AWS, tôi vừa mới thử lấy thành công cái chứng chỉ "Solutions Architect - Associate". Level căn bản thôi nhưng cũng cho nó bằng chị bằng em. Đang vui vì chủ đề AWS nên tôi viết một bài chia sẻ ở mức solution về AWS serverless. Hi vọng sẽ giúp ích cho một vài bạn muốn bắt đầu tìm hiểu. Bài viết này sẽ update thường xuyên ^^

Cài đặt Odoo từ source code cho developer


Tôi note cách cài đặt Odoo dành cho lập trình viên phát triển lên đây và sẽ update thường xuyên dành cho các bạn mới bắt đầu vào team Odoo của tôi.

Hướng dẫn mang tính chất nhanh gọn lẹ nên chỉ cần anh em theo step by step mà làm sẽ thành công.

DevOps Roadmap


Devops
là gì? 

Rất đơn giản: DevOps = Software Development + Information Technology Operations.

Devops là một quá trình đề cao sự hợp tác, kéo hai giai đoạn phát triển và vận hành xích lại gần nhau hơn.

Tìm kiếm trong cột có các giá trị được phân cách bởi dấu phẩy trong MySQL

Trong MySQL bạn muốn tìm kiếm giá trị trong một Column chứa giá trị được phân cách bởi các dấu phẩy. Ví dụ tạo một câu query lấy da dòng dữ liệu có chứa "sonarika" trong các dòng dữ liệu dạng: "yssyogesh,sonarika,anil,amit" .
Hôm nay tôi muốn đi sâu vào function FIND_IN_SET của MYSQL để giải quyết các vấn đề về tìm kiếm trong 1 tập hợp bằng câu Query mà không cần can thiệp bởi ngôn ngữ khác.


Regular Expression thường dùng

Regular Expression (RegEx) là một bộ cú pháp dùng để bắt chuỗi rất thông dụng và hầu hết ngôn ngữ lập trình đều hỗ trợ. RegEx rất tiện lợi và lập trình viên không thể không biết, tuy nhiên nhiều khi lâu ngày không dùng sẽ bị quên. Tôi cũng vậy nên tôi list ra đây một số các quy tắc cần nhớ để lâu lâu đọc ôn lại. Cũng như chia sẽ và tổng hợp những cú pháp thường dùng trong quá trình làm việc.

Tạo máy in PDF ảo trên MAC OS

Bạn muốn tạo một máy in PDF ảo trên MAC OS ? PDFwriter là một lựa chọn miễn phí rất tốt. PDFwriter dựa trên CUPS-PDF. Nó không sử dụng ghostscript để tạo các tệp PDF, thay vào đó nó sử dụng các khả năng pdf có sẵn của Mac OS X. Vì vậy theo tôi đây là máy ảo PDF miễn phí trên MAC OS.

Tăng bảo mật website bằng htaccess

Ngoài việc áp dụng các kỹ thuật trong Code hôm nay tôi muốn giới thiệu đến các bạn 3 kỹ thuật đối với file .htaccess để tăng tính bảo mật cho website của bạn. Các kỹ thuật này thêm các header bảo mật bổ sung cho tất các các tài nguyên của website bạn. Cụ thể, tôi sẽ giải thích các thêm  Header X-Security để bảo vệ chống lại các kiểu tấn công: Cross-site scripting (XSS), Page-framing và Content-sniffing. Việc thêm các header này rất đơn giản nhưng hiệu quả trong việc tăng tính bảo mật cho website của bạn rất cao.

Review code Laravel đẹp, chuẩn

Qua một thời gian dài làm việc, coding với Laravel, review code của các thành viên khác cũng như tham khảo từ nhiều cao thủ Laravel khác tôi xin tổng hợp lại một số code smell trong laravel và cách khắc phục. Hi vọng sau khi đọc bài này các bạn sẽ có một bộ souce Laravel đẹp, đúng chuẩn dễ dàng bảo trì và tối ưu nhất. Trong phần này tôi sẽ đề cập đến những vấn đề cơ bản nhất mà một lập trình viên từ  junior đến senior đều phải nắm vì vậy tôi cũng chỉ giải thích ngắn gọn nhất có thể. Các vấn đề về nguyên lý SOLID, các patterns... tôi sẽ tập trung trong một bài viết khác.


Backup tự động Server, VPS Linux và lưu lên Google drive

Bạn đang sử dụng 1 VPS, hay bạn đang có một Server và bạn không muốn dùng thêm dịch vụ backup của hãng khác ? Bạn thấy việc backup thủ công tạp và mất thời gian ? Bạn muốn backup dữ liệu tự động và lưu trữ vào một nơi khác mà không cần sử dụng RAID của server? Giải pháp tôi đưa ra là tạo một script tự động chạy backup và upload lên 1 Cloud server với Rclone. Trong bài viết tôi sử dụng VPS là Centos , Clound Server là Google Drive (15Gb)

Tự động căn chỉnh chiều cao Cột bằng CSS

Flexbox là một kiểu dàn trang tự động cân đối kích thước của các phần tử bên trong để hiển thị trên mọi thiết bị. Bạn không cần thiết lập kích thước của từng phần tử, không cần cho nó float, chỉ cần thiết lập nó hiển thị chiều ngang hay chiều dọc. Bạn có thể tìm hiểu toàn bộ về Flexbox tại đây. Trong bài viết này tôi sẽ nói về một tip về căn chỉnh tự động chiều cao của các cột trong một trang. 

Cài đặt MySQL trên server Linux từ A - Z

Có nhiều cách để cài đặt MySQL trên server Linux như sử dụng lệnh yum, ... để cài đặt. Tuy nhiên vì một lý do nào đó tất cả các cách bạn sử dụng đều không thể cài đặt. Hoặc bạn muốn cài một phiên bản MySQL cụ thể nào đó theo ý bạn thì bạn có thể áp dụng cách sau để cài đặt. Cách này sử dụng MySQL Yum Repository.

Cách Laravel chống SQL Injection, CSRF, XSS


Laravel đảm bảo ứng dụng web của bạn được bảo vệ chống lại 3 nguy cơ bảo mật nghiêm trọng : SQL injection, cross-site request forgery (CSRF), và cross-site scripting (XSS). Bài viết ngắn gọn sau giúp các bạn hiểu được cách mà Laravel thực hiện.

Laravel 5 Load Seed Data từ JSON

Trên laravel bạn muốn import dữ liệu từ 1 file Json có sẵn, sử dụng seeder của laravel, đây là một Tip hay dành cho bạn. Ở đây tôi muốn seed dữ liệu users.
- Giả sử tôi có 1 file users.json, tôi đặt file này trong thư mục database của laravel. File json của tôi có dạng:

[
  {
    "id": "1",
    "email": "admin@admin.com",
    "first_name": "Minh",
    "last_name": "Nguyen",
    "password": "$2y$10$5dIuEeS1C4oKij41rYFBU.SXtaztO2XqHHvT/U3Mi9wB86znOcqY2"
  },
  {
    "id": "2",
    "email": "aaaa@minhcat.info",
    "first_name": "Lan",
    "last_name": "Ngoc",
    "password": "$2y$10$5dIuEeS1C4oKij41rYFBU.SXtaztO2XqHHvT/U3Mi9wB86znOcqY2"
  },
  {
    "id": "3",
    "email": "bbbb@minhcat.info",
    "first_name": "Van",
    "last_name": "Test",
    "password": "$2y$10$5dIuEeS1C4oKij41rYFBU.SXtaztO2XqHHvT/U3Mi9wB86znOcqY2"
  }
]

- Tiếp theo tôi tạo file seeder trong thư mục /database/seeds
UserTableSeeder.php
 delete();
        $json = File::get("database/users.json");
        $data = json_decode($json);
        foreach ($data as $obj) {
          User::create(array(
            'id' => $obj->id,
            'email' => $obj->email,
            'first_name' => $obj->first_name,
            'last_name' => $obj->last_name,
            'password' => $obj->password
          ));
        }
    }
}
?>

- File migration để tạo tables users:
increments('id');
               $table->string('email')->unique();
               $table->string('first_name');
               $table->string('last_name');
               $table->string('password', 60);
               $table->rememberToken();
               $table->timestamps();
          });
     }
     /**
     * Reverse the migrations.
     *
     * @return void
     */
     public function down()
     {
          Schema::drop('users');
     }
}
 - Bây giờ bạn chỉ việc chạy lệnh: "php artisan db:seed" là dữ liệu sẽ được đưa vào database từ file json của bạn.

Tạo function dùng chung bằng Helpers trên Laravel 5

Có những function sẽ được bạn dùng đi dùng lại ở nhiều nơi (Controller, Model, Request, Service, View ...). Khi bạn dùng chức năng đó ở đâu bạn có thể viết lại function đó, tuy nhiên bạn sẽ gặp vấn đề khi có sự thay đổi trong function đó bạn sẽ phải tìm kiếm và sửa nhiều lần. Giải pháp đưa ra là bạn tạo ra một helper function được tự động load và có thể gọi ở bất cứ nơi nào.