CÁCH ĐỂ TRAU DỒI NIỀM ĐAM MÊ HỌC LẬP TRÌNH !

 

Viết code thật quá rắc rối, bạn bị đổi qua nhiều team và phải học nhiều thứ framework lẫn CMS, thậm chí nhiều ngôn ngữ khác nhau. Cảm giác chán nản khi phải liên tục thay đổi ngôn ngữ ruột của mình và làm dự án với thứ ngôn ngữ và framework mà khách hàng yêu thích. Mình đã từng ở trong hoàn cảnh đó, và hơn ai hết mình hiểu cảm giác bị chuyển team và học một thứ gì đó quá mới mẻ.
Vậy làm cách nào mà mình vượt qua được và biến lập trình thành một niềm đam mê. Thật ra thì cũng có những lúc mình suy nghĩ quẩn rằng sẽ bỏ hẳn lập trình và về quê cuốc ruộng. Nhưng sau khi rút ra được 3 quy tắc này, điều kì diệu đã đến.

Quy tắc 1: Hãy thành thật với chính mình
Nguyên tắc đầu tiên và cơ bản nhất là phải thành thật với chính mình, nếu muốn tiến bước trên con đường này.Thay vì để người khác viết những ước mơ của bạn, hãy tự tay làm lấy và tránh xa những ai không có ý động viên, giúp đỡ mình.

Quy tắc 2: Hãy kiên nhẫn và đọc sách nhiều hơn
Code chỉ là sản phẩm cuối cùng sau các bước quan trọng nhất của một dự án. Tranh thủ thời gian nghỉ trưa, đừng ngủ và đọc 30 phút. Tối về đọc thêm 1 giờ nữa là có 1,5h mỗi ngày rồi. Sách lập trình rất hay, học thêm nhiều cái hay cái chuẩn mà không đọc sẽ không bao giờ biết được.

Thứ hai, bạn phải kiên nhẫn, khi gặp vấn đề khó hoặc không được rõ ràng hoặc thậm chí code nhiều lần mà không ra. Nhưng đừng bỏ cuộc. Điều gì đó hay ho sẽ đến trước khi bạn bắt đầu nản và bỏ cuộc.

Quy tắc 3: Thực hành … Thực hành … và thực hành!!
Chỉ thêm 1 điều cuối cần làm, đó là thực hành. Đó là cách duy nhất. Nếu bản chất mình không phải là một thiên tài, thì phải đánh đổi bằng sự cố gắng. Đây là cách duy nhất để đạt được những gì bạn mong muốn. Một khi bạn code đủ nhiều, bạn sẽ cảm thấy thoải mái với các vấn đề chưa được giải quyết. Các bạn sẽ nhớ là mình đã code rất nhiều và sự tự tin sẽ giúp bạn tạo ra các giải pháp cho các vấn đề tiếp theo.

Ngoài ra, hãy nhớ rằng bạn không phải là người duy nhất đang đối mặt với vấn đề chán nản này, tin vào chính mình và hy vọng bạn có thể vượt qua nỗi sợ hãi này.

Đừng ngại ngùng và chờ đợi may mắn, hãy đến với WINDStudy để thực hiện mơ trở thành lập trình viên nhé !.

Giải pháp truy xuất dữ liệu hình ảnh trong database.

Theo cách thông thường khi thiết kế và viết một ứng dụng mobile thì các hình ảnh sẽ được lưu vào file system , database chỉ chịu trách nhiệm lưu thông tin đường dẫn cũng như các thông số khác về hình ảnh đó (width, height, location…). Khi app cần hiển thị dữ liệu thì sẽ request đến server thông qua REST API. Server sẽ trả thông tin url của tấm ảnh. Điều được chú ý nhất là dữ liệu hình ảnh phải được lưu trên database.

Lợi ích khi lưu dữ liệu hình ảnh vào File system

Vấn đề lợi ích khi lưu ảnh vào file system đã được đề cập rất nhiều trên mạng. Nói tóm lại nó có thể có lợi ích lớn đối với ứng dụng có yêu cầu như sau:

  • Ứng dụng có logic nhỏ và đơn giản.
  • Hình ảnh là hình ảnh tĩnh và không thường thay đổi.
  • Không quan tâm đến vấn đề security
  • Chứa các file cực lớn vi dụ như file hình ảnh bản đồ…

Lợi ích khi lưu dữ liệu hình ảnh vào Database

Có lợi ích lớn đối với ứng dụng có yêu cầu như sau:

  • Là ứng dụng rất lớn, chứa nhiều hình ảnh có thể thay đổi thường xuyên. ví dụ một hệ thống HR có dữ liệu hơn 200,000 nhân viên và liên tục thay đổi số lượng nhân viên cũ, mới
  • Hình ảnh nhạy cảm, cần được bảo vệ. ví dụ như hình ảnh chụp X-quang của bệnh nhân …
  • Yêu cầu hình ảnh phải được ràng buộc thống nhất, không trùng lấp và luôn luôn sẵn sàng khi được Request
  • Yêu cầu về các vấn đề bảo trì

Giải pháp request dữ liệu hình ảnh được lưu trong Database trên Server

  1. Cách như bình thường một ứng dụng hay làm là request đến server để lấy thông tin url của hình ảnh rồi hiển thị. Cái khác ở chỗ url của hình ảnh lúc này không phải là đường dẫn đến file hình ảnh được lưu trong file system. Mà là url request  đến server để trả về nội dung của tấm hình đó. Khi gặp các url này server sẽ căn cứ vào tham số id của file mà request database để lấy data hình ảnh sau cùng là trả về cho client / app
    Như vậy ta thấy rằng server sẽ phải đảm nhiệm rất nhiều request. Từ đó làm giảm performance của server. Thử nghiệm cho thấy chỉ cần 1 client request nhiều tấm ảnh cùng lúc cũng đủ làm 100% cpu của server. Giải pháp này không khả thi mặc dù hình ảnh load rất nhanh

  2. Giải pháp tiếp theo là khi app request đến server. Server sẽ trả về json có dữ liệu của hình ảnh dưới dạng base64. Cách này khắc phục được những nhược điểm của giải pháp trên là request đến server quá nhiều. Nhưng cũng chưa là giải pháp tối ưu vì khi chuyển dữ liệu của hình ảnh sang base64, server phái tốn performance để encode. Và dữ liệu dưới dạng base64 có dung lượng lớn hơn binary khoảng 30%. Như vậy về lý thuyết dữ liệu truyền qua mạng sẽ lâu hơn.
  3. Giải pháp cuối cùng là tìm cách gứi data về client dưới dạng binary trong cùng một request. Thông thường mọi người quen với việc client dùng multipart/form-data để gửi nhiều file lên server. Chúng ta sử dụng ngược lại để trả nhiều file hình ảnh từ server về client. Cái khó ở đây là không có thư viện hỗ trợ việc đọc dữ liệu trả về của multipart nên chúng ta phải tự xây dựng tài liệu về việc gửi và đọc thông tin theo format của multipart ở đây . Kết quả rất khả quan, chúng ta tốn khoảng dươi 1.3 giây cho việc đọc dữ liệu của 30 file hình trong multipart và lưu thành file hình ảnh trên điện thoại. Sau đó hiển thị hình ảnh đó ra gần như tức thời.

     

Như vậy tôi đã thử nghiệm qua các giải pháp để truy xuất dữ liệu hình ảnh được lưu trong database. Giải pháp cuối cùng được cho là hiệu quả nhất khi giải quyết được vấn đề nhiều request cũng như tối ưu dung lượng của dữ liệu truyền qua mạng. Các bạn có thể tham khảo biết đâu một ngày nào đó có khách hàng nào yêu cầu.