Skip to main content

Posts

Hello 2018

# State of plans from 2017 https://gist.github.com/hvnsweeting/2fd07f82d6845d983324c9f63eaed232 - Create and deliver at least 2 online courses: hoàn toàn fail, thu video xong xem lại thấy rất chán, không hay như dạy trực tiếp. - Get used to scientific Python: pandas, numpy, scipy, ...: done, PyMI giờ đã dạy data analysis cơ bản, viết vài bài blog về Data: https://medium.com/pymi - Get into ML and NLP: 50% done https://medium.com/pymi , đã học lại ML và hiểu nó là gì, để làm gì, không còn hứng thú nữa nên không tiếp tục. Thay vào đó là hứng thú với ngành thống kê, từ những câu chuyện sử dụng data để phân tích ra nhiều điều bí ẩn - đọc từ quyển: Freakeconomy, how to think like a freak - Learn some Javascript (ELM): làm xong trang tính năm tuổi với ELM: http://canchi.pymi.vn/ - Learn haskell Nth time: fail, sau khi xem xét học Haskell thì quyết định học Elixir, viết draft xong sách học elixir và code một vài toy project: https://github.com/hvnsweeting/elixir-hackerrank-fp https://githu...

Dùng git diff với patch

git diff hiển thị các thay đổi bạn đã thực hiện mà chưa add, commit. Output của git diff, trông, giống như diff (câu lệnh thường để so sánh 2 file). patch là câu lệnh nhận vào file diff, và sửa các file có thay đổi tương ứng. Trước khi GitHub trở nên phổ biến, người ta vẫn chia sẻ "bản vá" các phần mềm bằng các file diff, người nhận được sẽ patch (vá) các chương trình dựa vào file diff nhận được. Đây là một file diff:

pgrep để grep process

pgrep có cài sẵn trên mọi máy tính *NIX. Nó nằm trong gói procps, một package cơ bản, chứa các câu lệnh thường ngày như `ps`, `kill`, `top`... $ dpkg -S `which pgrep` procps: /usr/bin/pgrep `pgrep` thường chỉ được dùng để lấy đầu ra, làm đầu vào cho lệnh kill, mặc định, nó trả về list các PID của process có tên ứng với từ khóa tìm kiếm: ``` $ pgrep cron 978 ``` Thường sau đó sẽ là: kill -9 978 Hay trong 1 câu: ``` kill -9 $(pgrep cron) ``` Hay dùng luôn câu lệnh pkill: ``` pkill -9 cron ``` `pgrep` có option ít ai để ý tới: `-a`

Vượt qua giới hạn 1 deploy key của GitHub

GitHub cho phép gắn`SSH  deploy key` vào từng repo, giúp ta có thể clone repo đó về để deploy (cài đặt chạy thật). Thế nhưng mỗi key chỉ được gắn vào 1 repo duy nhất. Đây là giới hạn rất khó chịu nếu trên 1 máy tính (máy chủ) bạn cần clone về nhiều hơn 1 repo. Giải pháp tiêu chuẩn GitHub đưa ra là người dùng cần tạo 1 tài khỏan khác, gắn key vào, rồi add tài khỏan đó vào các repo. Như vậy tài khỏan này đóng vai trò như 1 người dùng bình thường, 1 key có thể clone nhiều repo. Xem thêm giải pháp này ở help của GitHub Vậy nếu không tạo được tài khỏan (bạn không phải admin) thì làm sao có thể clone nhiều repo? ... ... ... Đây là một giải pháp khá "hack", đòi hỏi có hiểu biết chi tiết về SSH, và hơi "không đẹp". Trước tiên, cần biết rằng khi ssh sử dụng private key, SSH client sẽ thử lần lượt theo thứ tự sau:

[Python] unittest với assertTrue

Đây không phải một bài viết dài giải thích test là gì, unittest là gì. Python unittest Khi sử dụng thư viện unittest của Python, ta thường dễ bị cuốn hút bởi method assertTrue, thường viết các method như sau: self.assertTrue(7 in thatlist) self.assertTrue(isinstance(res, list)) self.assertTrue(res > 0) self.assertTrue(res == [1,2,3,4]) Code vẫn chạy và test bình thường, nhưng nếu test fail, output sẽ rất khó hiểu:

7 init runlevel của hệ thống Linux

Khi để bài chứa tới 3 yếu tố đáng sợ, xác suất người ta sẽ đọc hết bài sẽ giảm còn 4 %. - 7 - init - runlevel Và để tránh thêm một yếu tố đáng sợ khác, tôi đã thay từ "SysV" bằng từ "hệ thống" - dù biết là rất sai. Bài này để giải thích khái niệm Runlevel - có thể gặp khi đi phỏng vấn sysadmin - mặc dù ... nó có gì đó hơi sai sai. Khi máy tính khởi động - không hề đơn giản - và không có trong bài này - trải qua nhiều bước, kernel (các UNIX/UNIX-like OS) sẽ chạy chương trình đầu tiên với PID 1 - chương trình đó có tên chung là init. Chương trình này, nhìn chung sẽ đảm nhiệm các công việc: bật, tắt, restart các chương trình cần bật lên cùng máy tính (và có thể nhiều việc khác nữa). Tưởng tượng bạn là người dùng Ubuntu giao diện bình thường, vậy ai sẽ chạy "chương trình giao diện (X)"?, ai sẽ bật phần mềm quản lý kết nối mạng / wifi ...? tất cả đều do init thực hiện. Init là gì? Init chỉ là tên chung ám chỉ chương trình được Kernel chạy đầu ti...

Thử làm một "lập trình viên Odoo"

Odoo là gì Ố đù tự mô tả về mình: Odoo is a suite of web based open source business apps. The main Odoo Apps include an Open Source CRM , Website Builder , eCommerce , Warehouse Management , Project Management , Billing & Accounting , Point of Sale , Human Resources , Marketing , Manufacturing , Purchase Management , ... Odoo Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps. Nó là một bộ các web app phục vụ các công việc trong kinh doanh như quản lý quan hệ khách hàng, quản lý project, tính tiền/ kế tóan, tuyển dụng ... đầy đủ đến mức nó là một giải pháp "ERP" cho doanh nghiệp. Đó là nhìn từ phía người dùng. Còn về phía lập trình viên, Odoo là gì?

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG