Các bài viết ngắn – phần 13

Trực quan hóa dữ liệu JSON

Khi làm việc với dữ liệu (data), bạn có thể làm việc với một file JSON lớn tới vài trăm dòng là chuyện bình thường. Tệ hơn nữa là dữ liệu JSON của bạn ở dạng thu gọn (minify) thì thường sẽ cần chuyển sang định dạng đẹp hơn (beautify json) để dễ đọc.

Giới thiệu đến bạn một công cụ vô cùng tiện dụng, bạn có thể paste data JSON vào (thậm chí data ở dạng thu gọn) và JSON Crack sẽ trực quan hóa dữ liệu JSON của bạn thành đồ thị (graph).

Các điểm mạnh của JSON Crack:

– Dễ dùng: sử dụng ngay trên website, không cần đăng ký hay đăng nhập. Và có thể paste data, import file data vào

– Hỗ trợ tìm kiếm theo node, và di chuyển qua các node tìm được

– Cho phép tải đồ thị về, có thể sử dụng trên blogs, websites, …

– Dễ dàng chỉnh sửa data trực tiếp trên đồ thị

Bạn có thể lưu lại để khi nào cần thì sử dụng nhé. So cool ^^!

https://jsoncrack.com/

Form 2022 có gì mới ?

Một số công cụ làm việc với form mới có thể bạn chưa biết.

.requestSubmit() là lựa chọn tốt hơn giúp thay thế .submit() khi bạn muốn event 'submit' được trigger đồng thời muốn form được validate. Ví dụ mỗi khi submit như các field có required sẽ là bắt buộc.

Thuộc tínhsumitter của event, hay event.submitter cho phép xác định đâu là DOM thực hiện submit form khi form có nhiều nút có type="submit"

formdata event là một sự kiện khá mới được trigger khi một FormData được khởi tạo với new hoặc mặc định khi form được submit. e.formData là một FormData instance với các thuộc tính và phương thức cho phép truy cập vào các fields data ở dạng key / value. (đọc thêm về APIs FormData và ví dụ mình có thử ở đây). Vậy là bạn có thể truy cập tất cả data của form khi submit đồng thời có thể chỉnh sửa trước khi gọi trực tiếp API nếu cần.

showPicker() của thẻ input cho phép hiển thị UI của các lựa chọn của thẻ input, đó có thể là màu sắc, ngày tháng, …

Thuộc tính inert cho phép hiển thị form như ở trạng thái không focus, không click được, và thuộc tính này cũng không áp dụng các style mặc định vào các thành phần. inert tương tự như aria-hidden="true"

Bạn có thể xem các ví dụ minh họa ở bài viết:

https://css-tricks.com/whats-new-with-forms-in-2022/

Stack overflow trong JS

Như đã nói ở bài “Điều gì xảy ra khi chạy một chương trình JavaScript ?”, mỗi khi một chương trình JS chạy sẽ có một global execution context được khởi tạo, mỗi hàm được thực thi sẽ có một execution context của hàm đó được khởi tạo.

Execution context chứa toàn bộ các biến, hàm và các đối số truyền vào ở global hoặc ở hàm được thực thi.

Callstack chứa toàn bộ các execution contexts này theo thứ tự chúng được khởi tạo, và hoạt động theo nguyên lý LIFO (last-in-first-out).

Vì thế, JavaScript hoạt động synchronous.

Stack Overflow là hiện tượng tràn callstack khi một hàm được gọi đệ quy vô tận. Trình duyệt có số lượng callstack nhất định do đó nếu gọi vô tận sẽ dẫn đến tràn stack, gây lỗi “Maximum call stack size exceeded”

Ví dụ chương trình này sẽ gây lỗi stack overflow:

function callMySelf() {
  callMySelf()
}
callMySelf()

Lỗi thường gặp junior developer

Bài viết của một cựu lập trình viên từng làm việc tại Amazon trong 6 năm, bắt đầu từ vị trí thực tập và phát triển lên làm lead nhiều dự án. Anh chia sẻ những lỗi mình từng mắc phải khi làm junior developer:

Là một junior developer, bạn có quyền

Đừng ngần ngại, thiếu chủ động và tự đánh giá thấp bản thân mình. Những việc này dẫn đến thiếu trách nhiệm và thiếu nghiêm túc trong công việc. Nếu bạn viết code, hãy viết những dòng code tốt nhất của bạn dù quy mô dự án có lớn hay nhỏ.

Là một junior developer, bạn có từng cạnh tranh với đồng đội

Đừng chỉ tìm những lỗi sai của đồng đội và chỉ ra cho bằng hết trong các buổi review! Đó là cách tệ nhất mà bạn có thể làm cho những mối quan hệ lâu dài.

Thay vào đó, hãy tìm hiểu xem đồng đội đã làm được gì, tế nhị trong việc đưa ra các góp ý, chúc mừng khi họ hoàn thành công việc và giúp đỡ khi cần. Vì sau cùng, chúng ta là đồng đội của nhau.

Là một junior developer, bạn đã e ngại khi nói chuyện tăng lương

Bạn từng nghĩ việc yêu cầu tăng lương / thăng chức là ích kỷ, nếu làm tốt thì cuối cùng cũng sẽ được và bạn đã không hỏi. Bạn đã bắt đầu minh bạch hơn về mục tiêu và nguyện vọng nghề nghiệp của mình, bắt đầu những cuộc nói chuyện về vấn đề tế nhị này với người quản lý, vì bạn hiểu những cuộc nói chuyện như vậy vừa giúp hiểu về nghề và có tính xây dựng.

Là một junior developer, bạn đã thiếu sự hiểu biết về dự án

Trong các cuộc họp, hầu như bạn đã không lắng nghe xem đồng đội của mình làm gì, nhưng bạn đã hối tiếc khi gặp các vấn đề khi làm việc chung sau đó hay không hiểu bức tranh chung của dự án. Bạn đã khắc phục bằng cách chủ động lắng nghe và đặt thêm nhiều câu hỏi. Điều này giúp bạn nắm bức tranh chung của dự án và dễ dàng hơn khi làm những phần khác nhau của dự án.

Là một junior developer, bạn đã nhanh chóng tìm cách đổ lỗi cho người khác

Nếu có gì đó xảy ra với dự án như bug trên production chẳng hạn, bạn đã tìm cách đổ lỗi cho người khác hay từ chối nếu đó không phải mã của mình. Điều này từng làm khó bạn khi làm việc nhóm. Bạn đã khắc phục bằng cách tích cực hơn khi review code của đồng đội để giảm lỗi, và tạo nên một team hoạt động hiệu quả hơn.

Hi vọng bạn đọc những dòng tâm sự này sẽ nhận ra và nhanh chóng vượt qua các lỗi này nhé. 

Thực sự là mình đã từng trải qua tất cả các lỗi trên và cũng có nhiều lỗi đang khắc phục dần ^^ 

https://curtiseinsmann.hashnode.dev/from-an-ex-amazon-team-lead-5-mistakes-i-made-as-a-junior-software-engineer

Typescript 4.8

TypeScript 4.8 vừa mới được ra mắt

Nếu bạn chưa quen thuộc với TypeScript, thì đây là ngôn ngữ được xây dựng dựa trên JavaScript kết hợp với các cú pháp về phân loại dữ liệu(types). Các loại types sẽ giúp bạn kiểm soát các loại dữ liệu truyền vào cho từng loại tham số, và sẽ được kiểm tra khi chạy type-checker. Điều này giúp giảm đáng kể các lỗi về chính tả, các tham số chưa được khai báo, khác kiểu dữ liệu mong đợi, …

Vậy TypeScript 4.8 có gì mới?

Phiên bản này đem đến thêm nhiều nguyên tắc kiểm tra cho cờ –strictNullChecks cải thiện các types kết hợp (intersection reduction, union compatibility, narrowing)

– unknown nay được cho phép khi truyền vào biến có kiểu type là {} | null | undefined

– NonNullable nay được hiểu là T & {}

– một giá trị không phải là null hay undefined, có thể dùng {}

Cho phép extends với infer type

Một số cải thiện về hiệu suất với –build, –watch và –incremental

So sánh giá trị với mảng không cho phép, ví dụ arr === []

Không cho phép import / export types trong file JavaScript nữa

Chi tiết mời bạn đọc thêm ở link bên dưới https://devblogs.microsoft.com/typescript/announcing-typescript-4-8/

Nội dung này thuộc BeautyOnCode’s short posts là các bài viết ngắn tóm tắt nội dung và ý kiến cá nhân từ các nguồn như các slack channels (công ty, cộng đồng), các new letters, …

Các bài viết này cũng được đăng ở:

👉 BeautyOnCode trên Careerly (lời hứa với Careerly) Trên đây có gần 900 người theo dõi, và là trang tin công nghệ khá hay, bạn có thể tải app rồi theo dõi mình nhé.

👉 Blog BeautyOnCode, chuyên mục “Short Posts”

👉 Fanpage BeautyOnCode

👉Trang notion này tổng kết các bài viết

Nếu bạn thích đọc hàng ngày thì hãy follow các trang trên nhé. Chúc bạn đọc vui ^^

Nếu bạn nghĩ những nội dung này là hữu ích, bạn có thể khích lệ mình bằng cách:

Mời mình ☕️ cafe qua Ko-fi hay Momo

Theo dõi 👀 để nhận các bài viết mới trên: Careerly, fanpage, linkedin

Subscribe channel Youtube BeautyOnCode giúp mình với! 

🤘 Nhắn mình nhé 🤘

Hẹn gặp mọi người một ngày nào đó!

RELATED POST

Web Developer Learning Resources

Developer Roadmap roadmap.sh is a community effort to create roadmaps, guides and other educational content to help guide developers in…

Git

Bài này note lại vài tài liệu hay về git. How Git Commands work? https://www.youtube.com/watch?v=e9lnsKot_SQ Git Merge vs. Git Rebase…

Relation fields in Django Rest Framework Serializer

The Django model offers various types of relationships such as OneToOneField, ForeignKey, ManyToManyField, and GenericForeignKey.  To present or write data…

Các bài viết ngắn phần 31

Blog từ tiết kiệm đến miễn phí Chia sẻ kinh nghiệm viết blog từ tiết kiệm đến miễn phí Khi…