Download / Upload file qua SFTP sử dụng Paramiko

Paramiko là 1 thư viện của Python giúp bạn có thể giao tiếp với server thông qua SSH 1 cách dễ dàng. Trong bài viết này tôi sẽ hướng dẫn bạn cách download và upload file lên server thông qua giao thức SFTP.

Bạn có thể tham khảo thêm toàn bộ API Docs của Paramiko tại http://docs.paramiko.org/en/2.0/

Tùy chỉnh SEO metadata với All in one SEO pack filters

Đối với chức năng SEO trên WordPress thì có lẽ plugin All in one SEO pack được rất nhiều người biết đến với khả năng SEO cho những website làm bằng WordPress rất tốt. Trong bài viết này tôi sẽ hướng dẫn các bạn tùy chỉnh các thẻ meta title, meta keyword, meta description cho website nếu các bạn đã cài đặt plugin All in one SEO pack phiên bản free.

Mặc định bản free của plugin này không hỗ trợ tùy chỉnh SEO cho các trang category và các trang taxonomy. Tuy nhiên chúng ta có thể sử dụng các filters được cung cấp bởi plugin này để tùy chỉnh, thêm đoạn code sau để chỉnh sửa lại meta title cho các trang category (thêm vào file functions.php)

Hàm custom_mt sẽ kiểm tra nếu đang ở trang category thì meta title sẽ là [tên category] + ” laptrinh.info articles & tutorials”, còn nếu là các trang khác thì sẽ trả về meta title mặc định được thiết lập bởi All in one SEO pack ($default_mt). Sau cùng ta sẽ add hàm đó vào filter aioseop_title.

Bạn có thể sử dụng thêm 2 filter aioseop_description và aioseop_keywords để tùy chỉnh meta description và meta keyword

Quản lý branch với TortoiseGit

Tạo 1 branch mới (nhánh mới)

– Việc đầu tiên khi tạo 1 branch mới, chúng ta sẽ tạo nó dưới local (máy của mình). Click phải vào thư mục chứa repository, trong menu chuột phải hiện ra bạn chọn “Create Branch …”

create-local-branch

– Bạn gõ tên branch mới vào mục Branch (trong ví dụ này là branch1) và click OK

name-branch

– Tiếp theo bạn sẽ chuyển từ branch hiện tại sang branch mới (nếu bạn đã chọn Switch to new branch ở bước trên thì không cần). Click phải vào thư mục chứa repository, chọn Switch/Checkout …

switch_checkout_branch

– Trong cửa sổ hiện ra, bạn chọn branch lúc nãy đã tạo và nhấn OK

switch-to-new-branch

– Bạn có thể commit những thay đổi vào branch mới tạo bằng cách click phải, chọn Git Commit -> [tên-branch-mới]

commit-to-new-branch

Push branch (nhánh) trên local lên trên Git server

– Khi chúng ta tạo branch mới và commit vào branch đó thì Git chỉ hiểu đó là local branch (branch được tạo trên máy của bạn), để cập nhật branch mới lên Git server cho người khác pull về máy của họ được, bạn cần push branch đã tạo ở local lên trên Git server.

push-local-branch-to-git-server

– Một cửa sổ hiện ra tương tự hình bên dưới và bạn nhấn OK

choose-local-branch-to-push

– Để chắc chắn branch mới có được tạo trên Git server hay không thì kết quả trả về nếu có dòng “* [new branch] branch1 -> branch1” nghĩa là bạn đã thực hiện thành công việc push 1 local branch lên trên Git server.

push-local-branch-success

– Sau khi bạn đã thực hiện việc push local branch thành công, thì trong các lần push sau, tên branch đã push sẽ xuất hiện trong phần Destination > Remote như hình bên dưới

push-local-branch-2nd

– Và màn hình kết quả sẽ không còn hiển thị [new branch] nữa

push-local-branch-success-2nd

Fetching the remote branch (lấy nhánh trên Git server về local)

– Sau khi bạn tạo branch (nhánh) mới và push nó lên Git server, những người khác muốn fetch nhánh đó về máy của họ, họ có thể làm như sau: click phải và chọn Create Branch …

create-branch-from-remote

– Tại cửa sổ hiện ra bạn điền tên branch vào mục Name, và chọn branch (nhánh) trên Git server mà bạn muốn lấy về (trong ví dụ này là remotes/origin/branch1) và nhấn OK

name-remote-branch

– Bạn có thể đánh dấu check vào Switch to new branch để tự động chuyển sang branch mới sang khi lấy về, hoặc bạn có thể chuyển branch theo hướng dẫn phía trên. Và đây là kết quả mỗi khi bạn commit và push lên nhánh mới sau khi chuyển nhánh.

push-local-branch-3rd

Merge branch (gộp nhánh)

– Khi chúng ta muốn merge những thay đổi của branch (nhánh) hiện tại đang làm việc vào branch master (nhánh chính), chúng ta sử dụng menu Checkout/Switch để chuyển sang lại branch master

switch-to-master-branch

– Tiếp theo chúng ta sẽ sử dụng menu Merge … để gộp nhánh (merge branch)

merge-branch

– Tại cửa sổ hiện ta, chúng ta sẽ chọn nhánh muốn merge vào nhánh master (trong ví dụ này chúng ta sẽ chọn nhánh branch1 để merge vào master)

merge-branch1-to-master

– Sau khi việc merge branch ở local đã được hoàn tất, đừng quên mọi thay đổi mới chỉ ở local, chúng ta cần push tất cả những thay đổi sau khi merge nhánh lên Git server. Ở đây chúng ta sẽ push nhánh master sau khi được merge thêm từ branch1 lên nhánh master ở trên Git server.

push-local-master-to-remote-master

Xóa nhánh ở local (Deleting the local branch)

– Sau khi đã merge 1 nhánh vào nhánh master, nếu không còn sử dụng nhánh đó bạn có thể xóa nhánh đó ở local bằng cách sau: menu chuột phải và chọn Checkout/Switch

checkout-switch-to-delete-local-branch

– Tiếp theo chọn […] để hiện ra toàn bộ nhánh ở local như hình bên dưới, chọn mục Refs > heads và xóa nhánh bằng cách chọn Delete Branch

delete-local-branch

Xóa nhánh trên Git server (Delete the remote branch)

– Để xóa nhánh không còn xài đến trên Git server, bạn làm tương tự như cách xóa nhánh local, nhưng ở mục Refs sẽ chọn remote

delete-remote-branch

Một số bài học thực tiễn về Ruby On Rails

Học lập trình điều quan trọng nhất là luôn thực hành, làm những bài tập thực tiễn sẽ giúp cho các lập trình viên mau lên tay nghề và kỹ năng code. Dưới đây là tổng hợp các bài viết về Ruby On Rails dưới dạng làm những project thực tế:

Kênh Youtube Mackenzie Child (bạn có thể xem tại website cá nhân của Mackenzie Child tại đây)
How To Build A Reddit Clone With Rails 4 (Xây dựng trang web tương tự Reddit với Rails 4)
How to build a blog in Rails 4 (Xây dựng trang blog với Rails 4)
How To Build A Pinterest Clone With Rails 4 (Xây dựng trang web tương tự mạng xã hội Pinterest với Rails 4)
How To Build A Movie Review App With Rails 4 (Xây dựng trang web đánh giá phim với Rails 4)
How To Build A Todo App With Rails 4 (Xây dựng trang web lưu những việc phải làm với Rails 4)
How To Build A Jobs Board With Rails 4 (Xây dựng trang web việc làm với Rails 4)
How To Build A Wikipedia Clone With Rails 4 (Xây dựng trang web bách khoa toàn thư Wikipedia với Rails 4)
How To Build A Forum With Rails 4 (Xây dựng trang diễn đàn với Rails 4)
– How To Build A Online Notebook App With Rails 4 (Xây dựng trang web ghi chú online với Rails 4)
– How To Build A Dribbble Type App In Rails 4 (Xây dựng trang web tương tự Dribbble với Rails 4)
– How to build a podcast network with Rails 4 (Xây dựng mạng xã hội âm nhạc và video với Rails 4)
– How to build a blog & portfolio with Rails 4 (Xây dựng 1 trang blog và portfolio với Rails 4)

Trang web Medium.com:
How to develop a social network using Ruby on Rails (Xây dựng trang mạng xã hội đơn giản với Ruby On Rails)

Kênh Youtube RailsCasts Reloaded: đây là kênh Youtube tổng hợp tất các video của website railscasts.com sau khi chủ nhân của RailsCasts đã không cập nhật từ khá lâu (năm 2013). Nếu bạn đang tìm những tutorial nâng cao về Ruby On Rails thì đây là địa chỉ không thể thiếu. Kênh này gồm 3 playlist chính

RailsCasts
RailsCasts REVISED
RailsCasts PRO

Trang web GoRails: nơi đây cũng tập hợp khá nhiều bài viết hay về Ruby On Rails, một số video miễn phí, và một số video bạn phải trả phí thành viên là 9$/tháng để có thể truy cập được.

Kênh Youtube Stuk.io: chỉ có khoảng 10 video về Ruby On Rails tại kênh này tuy nhiên chúng đều khá hữu dụng cho những người mới bắt đầu cũng như đã có kinh nghiệm lập trình Rails.

Trang web Sitepoint.com:
Build an Online Store with Rails (Xây dựng trang web bán hàng với Rails)

Trang web pchm.co:
How to Build a CMS in Ruby on Rails (Xây dựng CMS – hệ thống quản lý nội dung với Ruby On Rails)

Trang web modular-rails.samurails.com:
Modular Rails (Viết ứng dụng CRM đơn giản bằng Ruby On Rails theo kiểu module rồi đóng gói lại thành gem ruby)

….

Bài viết vẫn tiếp tục cập nhật

Thêm kích thước ảnh mới cho Media Library

– Khi upload ảnh vào media library, WordPress sẽ tạo nhiều kích thước khác nhau từ ảnh được upload. Các kích thước đó là:

+ thumbnail (mặc định tối đa là 150x150px)
+ medium (mặc định tối đa là 300x300px)
+ large (mặc định tối đa là 640x640px)
+ full (kích thước ban đầu của ảnh)

– Tùy thuộc vào kích thước ban đầu mà WordPress có tạo đủ 4 kích thước hay không. Trong bài viết này chúng ta sẽ học cách sử dụng WordPress filter có tên là image_size_names_choose để thêm vào 6 kích thước có tên là PC 1, PC 2, PC 3, PC 4, Mobile 1, Mobile 2 (đặt tên khác tùy bạn) với kích thước là 1920×1280, 65×43, 537×437, 182×122, 1440×750, 640×427. Thêm đoạn code sau vào file functions.php của theme

Căn bản MySQL

MySQL là 1 phần mềm quản lý cơ sở dữ liệu (database) mã nguồn mở giúp người dùng lưu trữ, sắp xếp và truy cập dữ liệu. MySQL là 1 phần mềm mạnh mẽ với nhiều tính năng linh hoạt, trong bài viết này tôi sẽ giới thiệu căn bản cách sử dụng MySQL thông qua dòng lệnh Linux.

Cài đặt MySQL lên CentOS hoặc Ubuntu

Cài đặt trên Ubuntu

Cài đặt trên CentOS

Truy cập vào MySQL shell (môi trường dòng lệnh của MySQL)

Sau khi gõ lệnh như trên và Enter, MySQL sẽ hỏi mật khẩu của user root, bạn gõ vào và Enter sẽ đăng nhập được và MySQL shell

Trước khi tiếp tục có 2 điều bạn cần lưu ý như sau:

– Tất cả các lệnh của MySQL đều kết thúc bằng dấu ; (chấm phẩy), nếu không kết thúc bằng ký tự ; lệnh sẽ không được thực thi.
– Một điều nữa không bắt buộc là lệnh của MySQL được viết bằng chữ in hoa và tên cơ sở dữ liệu (database), tên bảng (table), tên user được viết bằng chữ thường để phân biệt cho dễ dàng. Tuy nhiên, một điều bạn cần nhớ là các lệnh của MySQL không phân biệt viết hoa / viết thường.

Tạo / xóa cơ sở dữ liệu

– Trước tiên bạn có thể xem những database hiện có trong MySQL như sau

– Kết quả hiển thị sẽ tương tự như sau

– Tạo database mới

– Ví dụ tạo database mới tên là “events”

– Kết quả sau khi tạo database “events”

– Xóa database (trong ví dụ này là xóa database “events”)

Truy cập database

– Sau khi tạo database, bạn có thể truy cập vào database bằng lệnh sau (ví dụ database “events”)

– Bạn có thể xem toàn bộ tables trong database được chọn (“events”) như sau

Tạo table (trong ví dụ này là tạo table “potluck” trong database “events”)

– Dòng lệnh trên sẽ thực hiện các điều sau

a/ Tạo table “potluck” trong database “events”
b/ Tạo 5 column trong table “potluck” là “id”, “name”, “food”, “confirmed” và “signup_date”
c/ Column “id” với option “INT NOT NULL PRIMARY KEY AUTO_INCREMENT” nghĩa là kiểu lưu trữ của “id” là integer, NOT NULL = không được rỗng, PRIMARY KEY = khóa chính, AUTO_INCREMENT = tự động tăng +1 mỗi khi insert row mới vào trong table “potluck”
d/ Column “name” sử dụng kiểu giá trị VARCHAR và giới hạn bởi 20 ký tự
e/ Column “food” sử dụng kiểu giá trị VARCHAR và giới hạn bởi 30 ký tự
f/ Column “confirmed” sử dụng kiểu giá trị CHAR và chỉ cho phép lưu 1 ký tự (ví dụ “Y” hoặc “N”)
g/ Column “signup_date” được lưu theo kiểu ngày tháng năm (DATE) với kiểu format là yyyy-mm-dd (ví dụ 2016-10-26 => ngày 26 tháng 10 năm 2016)

– Sau khi tạo table “potluck” bạn có thể kiểm tra lại

– Để hiển thị toàn bộ thông tin về table “potluck” bao gồm tên các column, kiểu lưu trữ dữ liệu v.v… bạn có thể sử dụng lệnh sau

– Kết quả trên dòng lệnh sẽ như sau

Thêm thông tin vào table

– Bây giờ chúng ta sẽ insert 1 số thông tin vào table “potluck”

– Dòng lệnh sẽ trả về như sau nếu insert thành công

– Chúng ta sẽ thêm vài thông tin nữa

– Sau khi thêm xong, chúng ta sẽ hiển thị toàn bộ những gì đã thêm vào table “potluck” bằng cách chạy lệnh sau

– Kết quả trả về trên dòng lệnh sẽ như sau

Cập nhật thông tin đã thêm vào table

– Ví dụ

(Tìm tất cả những dòng trong table “potluck” có “name” là “Sandy”, sau đó cập nhật column “confirmed” thành “Y”)

Thêm / xóa column trong table

– Thêm column “email” vào table “potluck”

– Mặc định khi thêm mới column, MySQL sẽ xếp column đó ở phía dưới cùng của table. Bạn có thể chỉ định thứ tự của column được thêm vào như sau:

(Nghĩa là thêm mới column “email” đằng sau column “name”)

– Bạn có thể xóa column “email” bằng cách thực thi lệnh sau

Xóa dòng trong table

– Để xóa 1 dòng hoặc vài dòng trong table với điều kiện cho trước bạn chạy lệnh sau ([table name] là tên table, [column name] là tên column [field text] là giá trị so sánh với tên column)

– Ví dụ: xóa tất cả những dòng trong table “potluck” có column “name” là “Sandy”

 

20 dòng lệnh SSH thường sử dụng

Một số yêu cầu để bạn có thể kết nối SSH (đến VPS/Server Linux)

– Một SSH client như Putty (trên Windows) hoặc Terminal (môi trường dòng lệnh trên Mac/Linux)
– Một vps/server Linux với kết nối SSH đã được bật
– Một tách cafe nhâm nhi trong lúc chờ dòng lệnh chạy 😀
– Một máy tính có kết nối Internet (cái này là hiển nhiên rồi nhỉ :D)

Một số quy ước mà bạn cần nhớ

– Gõ phím Enter hay Return trên bàn phím sau mỗi dòng lệnh
– Thay domain.com bằng tên miền của bạn
– Thay xxx.xxx.xxx.xxx bằng địa chỉ IP server của bạn
– Thay tên file và các đường dẫn ví dụ bằng tên file và đường dẫn thật trên server của bạn.
– Nếu đường dẫn kết thúc là 1 dấu “/” thì nó là 1 thư mục
– Thư mục “/path/to/directory/” luôn kết thúc cuối cùng bằng dấu “/”
– File “/path/to/file” không có dấu “/” ở cuối
– File không nhất thiết phải có định dạng (extension) đi kèm (ví dụ .jpg, .txt …)

Các lệnh di chuyển và lấy thông tin file/folder

1/ Di chuyển đến thư mục khác

Ví dụ bạn muốn di chuyển đến thư mục download

2/ Di chuyển đến thư mục home

3/ Di chuyển đến thư mục cuối cùng mà bạn từng ở đó

4/ Di chuyển đến thư mục cha của thư mục đang đứng (ra ngoài 1 cấp)

5/ Hiển thị đường dẫn đầy đủ của thư mục đang đứng

6/ Hiển thị tất các file và thư mực trong thư mục đang đứng

7/ Hiển thị tất cả các file và thông tin kèm theo

8/ Hiển thị tất cả các file với định dạng kèm theo

Ví dụ

9/ Hiển thị toàn bộ file và thư mục với thông tin chi tiết kèm theo

10/ Thoát khỏi SSH client

Các lệnh quản lý file

11/ Copy (sao chép) và rename (đặt lại tên) file

Ví dụ: đổi tên file banner.jpg thành banner728px.jpg

Ví dụ: copy file banner.jpg vào thư mục ads

Ví dụ: copy file banner.jpg vào thư mục ads và rename thành banner728px.jpg

12/ Move (di chuyển) và rename (đặt lại tên) file

Ví dụ: di chuyển file banner.jpg vào thư mục ads

Ví dụ: di chuyển file banner.jpg vào thư mục ads và đổi tên thành banner728px.jpg

Ví dụ: di chuyển thư mục image vào trong thư mục media

Ví dụ: di chuyển thư mục image ra ngoài 1 cấp

13/ Xóa/remove file

Ví dụ: xóa file banner.jpg

14/ Xóa tất cả các file trong thư mục hiện tại

15/ Xóa tất cả các file kèm theo định dạng

Ví dụ: xóa tất cả file jpg trong thư mục hiện tại

16/ Copy (sao chép) thư mục với toàn bộ file và thư mục con trong nó

17/ Tạo thư mục

Ví dụ: tạo thư mục image

18/ Tìm file trong thư mục hiện tại

Ví dụ: tìm file banner.jpg trong thư mục hiện tại

19/ Tìm text trong file

Ví dụ: tìm chữ “sidebar” trong file index.php

20/ CHMOD – phân quyền truy cập cho file/folder

Một số kiểu phân quyền