THẢO LUẬN

Về phần "Extension Functions" khi so sánh Java với Kotlin, bạn đang so sánh hai vấn đề hoàn toàn khác nhau: giữa việc kế thừa trong Java và việc sử dụng một function with receiver trong Kotlin. Ngoài ra, sử dụng function with receiver trong Kotlin như ví dụ của bạn đưa ra cũng không giúp "thêm phương thức mới vào lớp mà không cần mở rộng" như bạn đã nói.

Thông tin thêm: Trong Java hay Kotlin, một lớp đã được định nghĩa thì không thể thêm phương thức mới vào mà không mở rộng được (trừ khi dùng những cách không bình thường), nên người ta mới sinh ra Adapter Pattern để giải quyết vấn đề này trong nhiều trường hợp. Chức năng dạng này xuất hiện trong các ngôn ngữ lập trình hàm dưới dạng typeclass, cũng như một số ngôn ngữ như C++ với concept, Swift với protocol, Rust và Scala với trait, ...

0
Avatar
đã bình luận cho bài viết
Jul 5th, 2023 5:09 p.m.

Cảm ơn bạn nhiều 😍

+1
Jul 5th, 2023 4:39 p.m.

Hello anh, em xin phép hỏi một câu ạ 😅.
Em thấy trong file .dockerignore của anh có ingnore node_modules và anh có chú thích rằng là do mình có chạy npm install trong Dockerfile Em thấy nó đang hơi mâu thuẫn với việc mình phải tạo container tạm thời để chạy npm install khi dev ạ. Anh có thể giải thích cho em rõ hơn chút được k ạ.
Em đang nghĩ là có thể do npm install -g chăng 🤔
Em cảm ơn ạ.

0
Avatar
đã bình luận cho bài viết
Jul 5th, 2023 4:36 p.m.

nicee, cảm ơn bài viết của tác giả ạ ^^

+1
Jul 5th, 2023 3:59 p.m.

Mình hiểu mục đích của bạn, và trước cũng có rất nhiều người nghĩ đến cái này Nhưng mà nếu vậy mọi method trong repo cũng đều phải có trong interface thì khi này bạn dùng mới có giá trị Hoặc không thì chí ít cũng là các public method phải có Vì chỉ cần 1 cái không có thì ắt sẽ sinh ra rủi ro khi bạn đổi db (ví dụ như có tầm 20 cái method trong repo mà có 19 cái trong interface, rủi ro là 1 service nào đó gọi đúng cái method đó trong repo mà lúc đổi db team dev không biết lại chẳng tạo method 20 này thì chắc chắn là toang) Và cũng như trên mình nhận định ngoài chuyện nó lưu cả 2 db đã hiếm thì chuyện đổi db có khi lại càng không và vì nó quá quá hiếm nên mình nghĩ không nên mà chỉ nên viết là 1 optional trong ngữ cảnh như bạn nói trên, chứ mọi người thấy vậy lại cứ làm theo thì tốn effort mà thấy nó lại rắc rối hơn thôi. Mình thấy đây là 1 bài rất hay có nói rõ về cách dùng repo https://martinjoo.dev/domain-driven-design-with-laravel-repositories Và mình thấy câu chốt của ông này khá hợp lý cho cách dùng phổ biến kia theo trải niệm của ổng là "This is the reason behind the interfaces. Now, here's my opinion on it: this is number one bullshit."

0

bài viết rất hay và bổ ích. Cảm ơn tác giả

0
Jul 5th, 2023 2:43 p.m.

Hello anh ạ, Em có một thắc mắc đó là tại sao trong docker-compose.yml mình lại có thể định nghĩa service webserver với image nginx:1.17-alpine trong khi đó mình mới chỉ build mỗi image php-fpm ạ. Em cảm ơn a.

0

@kiendev Lý thuyết là vậy nhưng việc cho vào thực tế để chạy production thì tất nhiên sẽ còn nhiều cái cần phải xử lý 😅 Thank b đã góp ý nhé

0

@kiendev Bạn có thể đo thời gian chunk file là biết ngay mà. Việc chunk file là lấy từng phần nhỏ trong file gốc nên nó không quá chậm đâu trừ khi bạn chia batch size lớn + việc chunk file này nó phụ thuộc vào ở dưới máy local của bạn nên không sao. Bạn có thể tạo 1 file ảo dùng lệnh để test nhé

mkfile -n 100g temp_100GB_file

Mình thấy nếu chậm thì sẽ bị chậm ở đoạn gọi lên API BE lưu các phần chia nhỏ file thôi. Hiện tại, mình có F12 lên thì thấy Zalo cũng đang làm tương tự vậy. Zalo hiện tại thì upload quá là ok rồi.

Mình có sample trong source github gửi bài viết hoặc test ở đây nhé => https://codepen.io/nguyenvantuan2391996/pen/JjeyrZW

Screen Shot 2023-07-05 at 21.15.31.png

Screen Shot 2023-07-05 at 21.15.40.png

0
Jul 5th, 2023 12:42 p.m.

@maitrungduc1410 em cảm ơn a ạ 🤟

+1
Jul 5th, 2023 10:28 a.m.

Chuẩn mà em 0.5 * Math.log(1.5) = 0.2027325540540822

Screenshot from 2023-07-05 17-27-59.png

0

hi bạn ơi , mình có thể xin contact của bạn để trao đổi 1 số vấn đề không ạ

+1

Bài viết hay ho, cơ mà không biết tác giả đã thử test performance chưa? Mình thì không tự tin lắm với việc chunk file vài GB đổ lên bằng JS.

0
Jul 5th, 2023 8:09 a.m.

cảm ơn bạn, mình sẽ ra tiếp những bài viết tiếp theo trong thời gian tới 😄

0
Jul 5th, 2023 7:49 a.m.

các tham số đó e truyền cái nào trước cũng đc nhé, Docker sẽ lo tất 😄.

  • -w: set working dir là /app
  • -v $(pwd):/app: mount folder hiện tại đang chạy command ở môi trường gốc vào /app bên trong container
0
Jul 5th, 2023 7:31 a.m.

bạn viết series này cực kì detail và dễ hiểu. Thanks bạn. Hi vọng sớm có những bài viết hay khác.

0
Jul 5th, 2023 7:20 a.m.

ok bạn, follow mình để nhận được những thông báo bài viết mới nhất nha. Good day you !

0
Jul 5th, 2023 7:13 a.m.

Chờ phần tiếp

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí