@thanhnguyen Thường mình hay nhóm các service vào các lại cho đễ nhớ như: Server nào chạy database, cron, server nào làm storage. Tất cả các phần quản trị server thì luôn phải take note lại để transfer cho người mới thì lôi ra.
Còn vấn đề quên thì mình nghĩ là là do mindset và trách nhiệm của người quản trị, chứ solution có tốt bao nhiêu mà không take note lại thì vẫn vậy. Chưa kể càng scale thì độ phức tạp của infra structure càng cao hơn nữa.
Bên bạn làm theo hướng kia thì mình thấy khá ổn, ngoài ra việc chia thành từng queue riêng biệt cho một số chức năng thì bạn còn có thể dễ dàng chia tách queue sang nhiều server khác nhau chứ không phải chia queue xong rồi vẫn chỉ chạy trên 1 server Như vậy thì cũng ổn hơn.
Còn về cron, chạy trên một server mình nghĩ là không sao, vì khi chạy cron mình có thể bắn nó vào queue nữa Cron bạn cũng có thể tách nó ra thành nhiều cron chuyên biệt cho từng nhóm nhiệm vụ giống queue chẳng hạn nên với solution mình vẫn cảm thấy khá yên tâm.
Thank Kim.
Mĩnh cái mình đã triển khai ở hệ thống cũ cũng gần giống 80% memo của bạn.
Chỉ là thấy vẫn phải phân tách ra 2 loại server là loại có chạy cron , queue và 1 loại không chạy.
Nên sợ có khả năng người maintain sau quên hay sao đó.
Nên đang tìm cách làm nó tốt lên thui
Sr mình ở Hà Nội. Có gì khúc mắc bạn cứ post ảnh hay câu hỏi lên đây mn sẽ trả lời nhiệt tình nhé!
Lúc đầu làm quen có thể chạy thử demo của truffle petshop hoặc các tutorials để nắm luồng dữ liệu rồi tự code lại sau
Khi ta selecteProduct thì biến selectedProduct được set giá trị, băng với product ta vừa click, chỉ bằng về giá trị thôi còn địa chỉ thì ko bằng nhé vì mình dùng {...} để clone rồi
Tiếp theo ta se product.isEdit = true để hiển thị form input, thao tác này tác động trực tiếp vào object product gốc
Khi ta tiếp tục chọn Edit ở 1 hàng mới mà ko bấm Cancel ở hàng cũ, thì ta lại ko set isEdit = false ở hàng cũ đi, do đó form input của hàng cũ vẫn show ra, mà form input đó thì sẽ được bind với selectedProduct nên bạn sẽ thấy cứ chỗ nào có form input thì nó sẽ có chung 1 giá trị của selectedProduct
1 giải pháp đơn giản là:
khi click sang hàng mới ta gọi tới product ta vừa chọn (trước khi chon hàng mới) và set isEdit = false để đóng form input đi
vậy thì ta cần lưu lại cái gì đó của hàng cũ để khi click vào hàng mới ta còn biết lối để gọi lại: bạn có thể chọn lưu cả object product hoăc lưu index của nó cũng đc
Code demo:
ở data bạn thêm vào biến prevSelectedProduct: null, thể hiện cho sản phẩm vừa đc chọn trước sản phẩm hiện tại (nếu ko có thì để null)
ở hàm selecteProduct ban sửa lại như sau:
selecteProduct(product){if(this.prevSelectedProduct){// nếu trước đó có chọn 1 sản phẩm để editthis.prevSelectedProduct.isEdit =false// đóng form edit}this.selectedProduct ={...product }
product.isEdit =truethis.prevSelectedProduct = product // thiết lập giá trị mới},
THẢO LUẬN
Bạn ơi, bạn cho mình xin dataset với ạ
@dominhphong306 b có code tool fb chưa b
Bài dịch rất hay
@thanhnguyen Thường mình hay nhóm các service vào các lại cho đễ nhớ như: Server nào chạy database, cron, server nào làm storage. Tất cả các phần quản trị server thì luôn phải take note lại để transfer cho người mới thì lôi ra.
Còn vấn đề quên thì mình nghĩ là là do mindset và trách nhiệm của người quản trị, chứ solution có tốt bao nhiêu mà không take note lại thì vẫn vậy. Chưa kể càng scale thì độ phức tạp của infra structure càng cao hơn nữa.
Bên bạn làm theo hướng kia thì mình thấy khá ổn, ngoài ra việc chia thành từng queue riêng biệt cho một số chức năng thì bạn còn có thể dễ dàng chia tách queue sang nhiều server khác nhau chứ không phải chia queue xong rồi vẫn chỉ chạy trên 1 server
Như vậy thì cũng ổn hơn.
Còn về cron, chạy trên một server mình nghĩ là không sao, vì khi chạy cron mình có thể bắn nó vào queue nữa
Cron bạn cũng có thể tách nó ra thành nhiều cron chuyên biệt cho từng nhóm nhiệm vụ giống queue chẳng hạn nên với solution mình vẫn cảm thấy khá yên tâm. 
Bài viết rất hữu ích. Cám ơn bạn!
mình "triển khai theo ý tưởng" dc rồi b. Cảm ơn b nhiều nhé.
Thank Kim.
Mĩnh cái mình đã triển khai ở hệ thống cũ cũng gần giống 80% memo của bạn.
Chỉ là thấy vẫn phải phân tách ra 2 loại server là loại có chạy cron , queue và 1 loại không chạy.
Nên sợ có khả năng người maintain sau quên hay sao đó.
Nên đang tìm cách làm nó tốt lên thui
Buồn ghê
Đang xem thì ko có phần 2...
Sr mình ở Hà Nội. Có gì khúc mắc bạn cứ post ảnh hay câu hỏi lên đây mn sẽ trả lời nhiệt tình nhé! Lúc đầu làm quen có thể chạy thử demo của truffle petshop hoặc các tutorials để nắm luồng dữ liệu rồi tự code lại sau
anh có ở hồ chí minh không ah, có thể cà phê hướng dẫn em tí được không, em có xem nhưng vẫn chưa thử làm được.
anh có ở hồ chí minh không ah, có thể cà phê hướng dẫn em tí được không, em có xem nhưng vẫn chưa thử làm được.
anh có ở hồ chí minh không ah, có thể cà phê hướng dẫn em tí được không, em có xem nhưng vẫn chưa thử làm được.
sao ở trên có bảng Entity mà dưới ví dụ lại ko có vậy b ?
Cảm ơn tác giả về các bài viết rất chi tiết, mong sớm có những bài tiếp theo trong series này.
Nice Tutorial Bro, I wonder when will you post the next part, I cant wait for it. Keep it up, Bro!!
Bài viết rất hay, cám ơn bạn rất nhiều
chào bạn,
Bug này lí do như sau:
selecteProductthì biếnselectedProductđược set giá trị, băng vớiproductta vừa click, chỉ bằng về giá trị thôi còn địa chỉ thì ko bằng nhé vì mình dùng{...}để clone rồiproduct.isEdit = trueđể hiển thị form input, thao tác này tác động trực tiếp vào objectproductgốcEditở 1 hàng mới mà ko bấmCancelở hàng cũ, thì ta lại ko setisEdit = falseở hàng cũ đi, do đó form input của hàng cũ vẫn show ra, mà form input đó thì sẽ đượcbindvớiselectedProductnên bạn sẽ thấy cứ chỗ nào có form input thì nó sẽ có chung 1 giá trị củaselectedProduct1 giải pháp đơn giản là:
isEdit = falseđể đóng form input điproducthoăc lưu index của nó cũng đcCode demo:
databạn thêm vào biếnprevSelectedProduct: null,thể hiện cho sản phẩm vừa đc chọn trước sản phẩm hiện tại (nếu ko có thì đểnull)selecteProductban sửa lại như sau:email của chị là: hangpt248@gmail.com nhé. Có gì em có thể hỏi qua đây nhé
Idea thú vị. Cảm ơn bác đã chia sẻ.