Đa số các bạn newbie thường phạm phải một sai lầm cơ bản: Quá mức quan tâm về tốc độ thực thi của code, của ngôn ngữ lập trình. Đây là một thói quen nên bỏ!
Trong bài viết hôm nay, mình sẽ giải thích về việc tối ưu code: Optimize code một cách pro nhất! Khi nào cần optimize, khi nào không nên optimize code?
Gần đây mình nhận được một số câu hỏi về chuyện “Nên tập trung vào 1 ngôn ngữ hay là học nhiều ngôn ngữ”. Đây là một vấn đề gây khá nhiều tranh cãi trong cộng đồng lập trình viên.
Thật ra, không có câu trả lời đúng cho câu hỏi này! Trong nội dung bài viết, mình sẽ phân tích những điểm lợi/hại của mỗi lựa chọn. Tuy nhiên, lựa chọn cuối cùng vẫn là do bản thân các bạn nhé.
Thật ra, ngay từ đầu các bạn đã đặt sai câu hỏi! Thay vì hỏi “nên học một hay nhiều ngôn ngữ”, các bạn nên hỏi là “nên phát triển bản thân theo chiều rộng (generalist) hay chiều sâu (specialist)?”.
Chào mừng các bạn đến với bài viết cuối cùng trong series SOLID. Ở bài viết này, mình sẽ nói về Dependency Inversion Principle – Nguyên lý Đảo Ngược Dependency.
1. Các module cấp cao không nên phụ thuộc vào các module cấp thấp. Cả 2 nên phụ thuộc vào abstraction.
2. Interface (abstraction) không nên phụ thuộc vào chi tiết, mà ngược lại. (Các class giao tiếp với nhau thông qua interface, không phải thông qua implementation.)
Đây là đây là bài viết thứ tư trong series “SOLID cho thanh niên code cứng”. Ở bài viết này, mình sẽ nói về Interface Segregation Principle – Nguyên lý phân tách interface.
Sau khi đọc và làm theo phần 2, các bạn đã có 1 con bot chạy được. Tuy nhiên, Cloud9 chỉ hỗ trợ các bạn code và deploy để test thứ chứ không hỗ trợ hosting. Sau khoảng 2,3 tiếng không sử dụng, cloud9 sẽ tự tắt server làm bot ngưng hoạt động. Do đó chúng ta phải deploy con bot lên một host khác.
Deploy bot lên OpenShift
Ở đây mình lựa chọn OpenShift vì nó free, tốc độ cũng khá nhanh, lại dễ deploy. Sau 24h không hoạt động thì nó mới cho host ngủ. Một lựa chọn khác là heroku, host heroku cũng sẽ tự ngủ sau 2, 3 tiếng không sử dụng. Các bạn làm theo video để deploy bot lên host nhé nhé.
Thấy các bạn test hộ nhiều quá, mình rất cảm động nên đã thêm chức năng “đàm luận nhân sinh” vào bot để các bạn có người chém gió nhe. Các bạn có thể tiếp tục trò chuyện với bot tại m.me/toidicodedao nhé
Ở phần trước, mình đã giới thiệu cơ chế hoạt động của bot Faceobok, cùng với một số khái niệm các bạn cần nắm rõ. Ở bài này, chúng ta sẽ bắt tay vào tạo fanpage và code nhé. Lần này mình hướng dẫn bằng video, các bạn bật phụ đề lên xem nhé.
Bước 1 – Tạo Fanpage, thêm chức năng Messenger
Các bạn làm theo clip dưới để tạo fanpage nhé. Với bạn nào đã có Fanpage thì xem đoạn sau để tích hợp chức năng Messenger vào fanpage.
Tính mình thích ngắn gọn, không muốn lê thê dài dòng nên video cũng rất ngắn gọn, chỉ khoảng 1-2 phút để không lãng phí thời gian của mọi người.
Cách đây 1,2 tháng, Facebook vừa ra mắt Facebook Messenger Platform, cho phép ta viết 1 con bot hỗ trợ tự động trả lời người dùng. Vốn đam mê công nghệ nên mình cũng tò mò viết thử 1 con. Các bạn có thể thử trò chuyện với bot tại: m.me/toidicodedao, hoặc xem video demo tại đây.
Đây là đây là bài viết thứ 3 trong series “SOLID cho thanh niên code cứng”. Ở bài viết này, mình sẽ nói về Liskov Substitution Principle – Nguyên lý Thay Thế Lít Kốp (LSP).
Như mình đã kể ở vài bài trước, hiện mình đang là UX Developer cho team iLancaster, chịu trách nhiệm phát triển app di động cho Đại học Lancaster. Dạo gần đây, app này đang mở rộng đối tượng người dùng, không chỉ phục vụ cho sinh viên/học sinh mà còn hướng tới toàn bộ dân cư của khu Lancaster nho nhỏ này nữa. Thế là, bác Brian trưởng nhóm liên hệ với đội “Campus in the City”, đội quảng cáo/PR của trường để tổ chức 1 cái event nho nhỏ nhằm giới thiệu app và lấy ý kiến của người dùng.
Event bắt đầu lúc 9h sáng tới hơn 4h chiều. Lúc ra đến nơi, chưa thấy ai giao việc nên mình nhảy vào sắp xếp dọn dẹp phụ luôn. Event nhỏ mà họ chuẩn bị cũng khá kĩ càng, nào poster, banner, slide, rồi cả leaflet mang về nữa.
Mỗi người được phát một cái áo xanh xanh của team để mặc. Mình tranh thủ ra tự sướng một tấm trước.