Thursday, 20 June 2013

Script hay làm bằng tay?

Bình thường tớ sẽ luôn trả lời là script vì viết script rất vui :D

Nhưng khi cần thực hiện xong công việc càng nhanh càng tốt, ngồi viết script chưa hẳn đã là điều hay ho. Trước khi thò tay định viết scritp để thực hiện một công việc gì đó nhằm tự động hóa nó, mục đích chính là làm xong công việc nhanh hơn, chính xác hơn, hiệu quả hơn, bạn nên tự hỏi mình vài câu:

- Liệu bạn làm thủ công có nhanh hơn không?
Nếu câu trả lời là có, đừng viết! Nếu bạn không thạo việc viết scritp, bạn sẽ tốn thêm thời gian để debug, google cách làm, đọc document cách dùng thư viện... và kết quả là bạn làm tay sẽ nhanh hơn. Bởi vậy, cần thật thành thạo và chính xác thì mới mang lại hiệu quả. Ví dụ:
bạn cần đổi tên 10 thư mục, thêm vào mỗi tên 1 dòng chữ XXX. Nếu bạn biết viết 1 câu lệnh bash với for, if, mv, bạn sẽ hoàn thành công việc này sau khoảng 20 giây. Nhưng nếu không thạo cú pháp, bạn lại mất thời gian debug, google thì có thể mất đến 3 phút, làm tay còn nhanh hơn.

- Script này có được sử dụng lại không?

Một khái niệm phổ biến, script được dùng để "tự động hóa công việc lặp đi lặp lại nhiều lần". Bởi vậy hãy suy nghĩ kỹ xem việc viết script có đáng không.
Bạn có thể thành thạo phần nào đó của Python nhưng không chắc bạn thành thạo các thư viện cần thiết lúc viết script. Bash sẽ mang lại năng suất cao hơn khi phải thao tác với file, thư mục, sử dụng các chương trình CLI mà ít cần đến xử lý phức tạp nào khác.
Bạn viết 1 script để download khoảng 10 file và xử lý chúng, nếu script lỗi sau khi xử lý file thứ 3, có vẻ như bạn lại phải làm lại từ đầu ?!!!

- Có cần viết 1 script to làm toàn bộ công việc hay viết nhiều script nhỏ xử lý từng phần, kết hợp với làm bằng tay?
hãy làm những gì bạn thạo nhất. Với 2 file như thế này:
pkg-name-and-1.3.tar.bz2
another-pkg-name2-and-2.3.4.zip
bạn sẽ làm thế nào nếu phải convert chúng về định dạng .tar.gz và lấy tên từ version đổ đi? Tức bạn sẽ thu được 1.3.tar.gz và 2.3.4.tar.gz

việc rename là cực đơn giản với các những ai biết dùng regex, hoặc bạn chỉ cần 1 dòng python để cắt chuỗi ra rồi ghép lại.
Nếu bạn không biết cả 2, hãy làm bằng tay.
Việc convert giữa các định dạng có thể sẽ trở nên phức tạp khi bạn viết thành script. Hãy viết script những phần bạn thành thạo, và đơn giản. Hãy làm bằng tay những gì bạn không biết viết. Mục tiêu cuối cùng là hòan thành công việc sớm nhất có thể rồi còn về uống bia :v

Hết!
Kinh nghiệm đau thương sau nhiều ngày ngu dại :D