Bài viết của bạn rất hay, rõ ràng mạch lạc, dễ hiểu và hữu ích. Cám ơn bạn nhé. Lỗi này mặc dù ít gặp ở các web sử dụng framework, nhưng có những đự án phải maintain những website code thuần hoàn toàn, khách hàng lại không muốn đập đi xây lại, nên vẫn phải xử lý những vấn đề này vì nó đầy rẫy trong đống code mà đội dự án phải tiếp nhận.
Thực chất nếu người dùng muốn copy thì bạn chặn thế nào họ mò thì vẫn copy được thôi. Việc chống như này rất dễ gây ảnh hưởng tới trải nghiệm người dùng. Bạn vừa không chống copy được lại vừa giảm trải nghiệm người dùng. Mình thấy việc này mất nhiều hơn là được
trong 1 group có nhiều reserve record, so sánh như thế thì không được
về phần concat lồng group concat là để kết quả hiển thị kiểu "1,1,1,1,1,1,". Code thì chẳng có cái éo gì là may mắn chạy được đâu.
vì theo cơ chế của mysql mình đã giải thích bên trên, khi có nhiều custom column thì không thể xác định thằng nào sẽ được thực thi trước, mình đặt statement tính toán trong case when để xác định statement đó sẽ được thực thi trước, gắn vào @temp rồi mới thực thi statement sau.
Mong bạn đọc kỹ trước khi kết luận mình dùng case when vô tội vạ
render là hàm chạy mặc định nếu bạn có thay đổi state hoặc props của component. componentDidMount được chạy sau khi render, chạy xong bạn update lại state => render được chạy lại. api bạn đang fetch data quá nhanh. bạn thử sleep trong đó khác thấy sự khác biệt
Trong trường hợp này khi bạn truy cập vào url /products/ thì lúc đó sẽ gọi tới API /products để lấy danh sách sản phẩm từ backend, mà tại bước thêm mới sản phẩm ở trong bài thì mình chưa viết tới phần lấy danh sách sản phẩm nhé (ở ngay phần sau),nên bạn sẽ ko thấy có gì ở trên màn hình, điều này là đúng nhé
cả bài này ta chỉ có 1 route giao diện là localhost:8000 nhé bạn, mở url đó ở trình duyệt nhé
THẢO LUẬN
Bài viết của bạn rất hay, rõ ràng mạch lạc, dễ hiểu và hữu ích. Cám ơn bạn nhé. Lỗi này mặc dù ít gặp ở các web sử dụng framework, nhưng có những đự án phải maintain những website code thuần hoàn toàn, khách hàng lại không muốn đập đi xây lại, nên vẫn phải xử lý những vấn đề này vì nó đầy rẫy trong đống code mà đội dự án phải tiếp nhận.
thank chị
Thực chất nếu người dùng muốn copy thì bạn chặn thế nào họ mò thì vẫn copy được thôi. Việc chống như này rất dễ gây ảnh hưởng tới trải nghiệm người dùng. Bạn vừa không chống copy được lại vừa giảm trải nghiệm người dùng. Mình thấy việc này mất nhiều hơn là được
Hình như gửi request đang bị lỗi gì đó thì phải ạ!
Lỗi này bị phía server, khả năng cao bạn đang sai chỗ nào đó
bạn click vào dòng lỗi kia xem chi tiết lỗi server trả về là gì là gì nhé, mình vừa mới test lại sáng nay từ đầu đến cuối bài vẫn chạy bt nhé
Chào bạn, bạn hãy tham khảo chi tiết Demo trong mục Tài liệu tham khảo nhé
Chào bạn, mình làm đến đoạn thêm mới như hướng dẫn của bạn thì có lỗi 500 ạ!
Bài viết hay quá! Cảm ơn anh

@phamtuyen tuần tự như này bạn ạ willMount -> render -> didMount -> render
không có gì b ạ
à b đăng kí tham gia viblo_Mayfest chưa
viết 4 bài là được quà rồi 
oh thì ra là vậy. Tks bạn, tại mình chỉ nghĩ hàm render chạy sau khi run app là nó ko chạy nữa.
Nếu bạn muốn thử thì app bị pack là cái này
https://play.google.com/store/apps/details?id=com.funnybean.mandarin&hl=en
cảm ơn bạn mình sẽ update lại post .
Cảm ơn bạn, để mình thử app đó xem sao. Mình cũng đọc qua về các kỹ thuật pack như vậy mà chưa gặp bao giờ ^^
Mong bạn đọc kỹ trước khi kết luận mình dùng case when vô tội vạ
render là hàm chạy mặc định nếu bạn có thay đổi state hoặc props của component. componentDidMount được chạy sau khi render, chạy xong bạn update lại state => render được chạy lại. api bạn đang fetch data quá nhanh. bạn thử sleep trong đó khác thấy sự khác biệt
chào bạn,
Trong trường hợp này khi bạn truy cập vào url
/products/thì lúc đó sẽ gọi tới API/productsđể lấy danh sách sản phẩm từ backend, mà tại bước thêm mới sản phẩm ở trong bài thì mình chưa viết tới phần lấy danh sách sản phẩm nhé (ở ngay phần sau),nên bạn sẽ ko thấy có gì ở trên màn hình, điều này là đúng nhécả bài này ta chỉ có 1 route giao diện là
localhost:8000nhé bạn, mở url đó ở trình duyệt nhéNhớ follow theo bài của mình từ đầu tới cuối nhé
Bạn ơiiiiii Dòng code sau thiếu dấu "
val name : String "thanh"
println("My name $name)
em muốn covert giờ utc sang dạng ('Y-m-d) thì làm sao ạ. Và convert giờ ('Y-m-d') sang utc