Mình chưa hiểu log này lắm ở đây là log trên console (terminal) hay là log lưu lại trên file z. Nếu lưu trên console thì trên production làm sao debug đc
Mình dùng php có cách nào lấy thông tin user đơn giản không bạn vị dụ hệ điều hành tương ứng để đưa ra thông báo cài đặt ứng dụng tương ứng. không dùng thư viện liên quan các store
@phamngoctrio nếu bạn đi theo hướng web thì đơn giản là bạn code HTML đặt cái banner ở dưới, có button khi bấm vào thì mở CHplay hoặc app store là đc mà, về rating thì bạn sẽ phải gọi api để hiển thị (sẽ cách rách hơn và bạn sẽ k biết đc liệu user đã cài app đó chưa, nếu cài rồi thì sẽ k mở trực tiếp đc app mà luôn luôn chỉ mở đc store)
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, ...
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 ạ.
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."
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.
@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.
THẢO LUẬN
@thongnv2303 thank b
Mình chưa hiểu log này lắm ở đây là log trên console (terminal) hay là log lưu lại trên file z. Nếu lưu trên console thì trên production làm sao debug đc
Anh em sẽ cố gắng
Mình dùng php có cách nào lấy thông tin user đơn giản không bạn vị dụ hệ điều hành tương ứng để đưa ra thông báo cài đặt ứng dụng tương ứng. không dùng thư viện liên quan các store
Cảm ơn bạn việc kiểm tra được user đã cài chưa và cập nhật rất hay nhưng phức tạp quá mình bó tay
@maitrungduc1410 vì là platform nó xử lí thay mình nên nó còn biết show thông báo khi app cần update nữa.
@phamngoctrio nếu bạn đi theo hướng web thì đơn giản là bạn code HTML đặt cái banner ở dưới, có button khi bấm vào thì mở CHplay hoặc app store là đc mà, về rating thì bạn sẽ phải gọi api để hiển thị (sẽ cách rách hơn và bạn sẽ k biết đc liệu user đã cài app đó chưa, nếu cài rồi thì sẽ k mở trực tiếp đc app mà luôn luôn chỉ mở đc store)
cảm ơn bạn còn cách nào không bạn website mình dùng code php
cảm ơn bạn nhưng bạn có thể chi tiết hơn giúp mình được không
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, ...
Cảm ơn bạn nhiều 😍
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 installtrong 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ạynpm installkhi 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 -gchăng 🤔Em cảm ơn ạ.
nicee, cảm ơn bài viết của tác giả ạ ^^
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."
bài viết rất hay và bổ ích. Cảm ơn tác giả
bai viet hay !!!
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.
@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é
@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_fileMì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
@maitrungduc1410 em cảm ơn a ạ 🤟