mình thấy test driven cho chatgpt khá ổn tuy nhiên nhiều khi nó chưa tự tư duy trực tiếp được nguyên nhân của việc không pass bài test. nên vẫn cần có người chỉ ra cho nó ấy
theo mình vấn đề của bài toán C, D là nó quá phức tạp kể cả với human. Thực tế thì ta có thể cấu trúc lại nó thành tổ hợp của nhiều bài toán E, F, nơi mà mỗi thành phần của chương trình chỉ làm duy nhất 1 công việc. Mấy ông software architecture sẽ thích điều này vì có 1 thằng đàn em giỏi mà ko cãi.
Mình cảm thấy việc phát triển phần mềm bằng chat gpt có thể kết hợp với phương pháp test driven. Ta lần lượt viết ra các test case kì vọng. Để chương trình pass qua dần hết các testcase thì cuối cùng ta thu dc 1 chương trình thỏa mãn feature requirement của chúng ta.
@pasestars Yep. Đọc kỹ phần mô tả của em thì cũng same same cách mà trước dự án anh dùng. Và như anh có viết ở trên, thì giải pháp này vẫn có một vấn đề mình có thể gặp phải, đó là Dev trong dự án không tuân thủ cách làm chung như em mô tả. Có thể do quên, hoặc mới vào nên chưa nằm được trong code base của dự án có sẵn class hỗ trợ việc xử lý thời gian như trên rồi.
Đó là sự ĐÁNH ĐỔI (Tradeoff), chấp nhận rằng có thể kết quả sẽ có thể bị sai bởi lỗi áp dụng từ phía con người. Để xác suất xảy ra sai sót thấp nhất có thể, thì cần có document hướng dẫn chi tiết cho Dev mới. Trong quá trình code thì Dev sẽ phải là người cẩn thận đầu tiên, sau đó Dev Lead hoặc SA là người review cũng phải soi kỹ những đoạn code với DateTime. Và cuối cùng là Tester sẽ test kỹ những trường hợp này.
Tựu chung thì con người vẫn là mắt xích yếu nhất trong quá trình làm sản phẩm
Chỗ này em có cách xử lý đơn giản hơn và cách chốt lại để xử lý vấn đề này nhanh nhất: "Thời gian phải có múi giờ".
Vì kiểu dữ liệu DateTime của C# có một trường Kind để xác định múi giờ, có 3 dạng chính là DateTimeKind.Utc, DateTimeKind.Local, DateTimeKind.Unspecified. Nếu thời gian Frontend gửi lên Backend thì mặc định sẽ có múi giờ, trường hợp này đã có múi giờ nên chúng ta có thể không quan tâm.
Nếu Backend lấy dữ liệu từ cở sở dữ liệu quan hệ ra (ở đây là MySQL đang không lưu múi giờ), BE sẽ nhận định Kind của DateTime là DateTimeKind.Unspecified, khi đó thời gian của Backend lấy ra sẽ bị mất múi giờ, dẫn đến thông tin về thời gian sẽ bị sai. Cách làm ở đây sẽ là thống nhất múi giờ của Backend khi Insert vào Database và thời gian của Backend khi lấy dữ liệu ra của Database là cùng một múi giờ. Ví dụ trong trường hợp này sử dụng múi giờ Local +0700 làm múi giờ mặc định. Khi đó tất cả thời gian được tạo và được quản lý bên Backend. Khi lấy ra dữ liệu, nếu biết Kind của DateTime, thì mặc định trong ASP .NET 6 trở lên đã có System.Text.Json hỗ trợ xử lý thêm phần múi giờ khi convert sang JSON. Có thể thêm cấu hình sau đây vào System.Text.Json trong ASP .NET Core
chào a ạ, e khá kém lập trình và đang tìm hiểu về docker, tuy nhiên thì có quá nhiều ngôn ngữ lập trình và framework. 1 cái app có hàng tá module và pakage, e không biết bắt đầu từ đâu để build, để run...e muốn hỏi a có keyword nào để em có thể bắt đầu tim hiểu cách đóng gói ứng dụng được không,hay cần phải tìm hiểu hết các ngôn ngữ,framework,..ms có thể thành thạo docker?
Em cũng giống với bác, cũng phải đăng nhập vào để vote bài này 😄
Và em cũng công nhận với bác là nếu không hiểu hoặc không nắm rõ phần deep copy và shallow copy này đúng là chả hiểu lỗi từ đâu ra. Em mới gặp con bug nhỏ xíu về vụ này mà loay hoay hết cả tuần! @@
THẢO LUẬN
mình thấy test driven cho chatgpt khá ổn tuy nhiên nhiều khi nó chưa tự tư duy trực tiếp được nguyên nhân của việc không pass bài test. nên vẫn cần có người chỉ ra cho nó ấy
theo mình vấn đề của bài toán C, D là nó quá phức tạp kể cả với human. Thực tế thì ta có thể cấu trúc lại nó thành tổ hợp của nhiều bài toán E, F, nơi mà mỗi thành phần của chương trình chỉ làm duy nhất 1 công việc. Mấy ông software architecture sẽ thích điều này vì có 1 thằng đàn em giỏi mà ko cãi.
Mình cảm thấy việc phát triển phần mềm bằng chat gpt có thể kết hợp với phương pháp test driven. Ta lần lượt viết ra các test case kì vọng. Để chương trình pass qua dần hết các testcase thì cuối cùng ta thu dc 1 chương trình thỏa mãn feature requirement của chúng ta.
Cho mình xin file excel để ôn thi với
@tmsangdev em config 1 lần xong mấy ông khác chỉ việc dùng bình thường thôi ạ. Nhưng mà quy chuẩn vẫn phải có thật.
Cho mình xin link phần 1 với ạ
Em cảm ơn anh đã ghé qua bài viết nhaa 🌻🌻
@maitrungduc1410 Dạ vâng. Chúc anh nhiều sức khỏe và ra nhiều bài viết hay ạ
@manhhung1511 cố gắng e ạ
))
@pasestars Yep. Đọc kỹ phần mô tả của em thì cũng same same cách mà trước dự án anh dùng. Và như anh có viết ở trên, thì giải pháp này vẫn có một vấn đề mình có thể gặp phải, đó là Dev trong dự án không tuân thủ cách làm chung như em mô tả. Có thể do quên, hoặc mới vào nên chưa nằm được trong code base của dự án có sẵn class hỗ trợ việc xử lý thời gian như trên rồi. Đó là sự ĐÁNH ĐỔI (Tradeoff), chấp nhận rằng có thể kết quả sẽ có thể bị sai bởi lỗi áp dụng từ phía con người. Để xác suất xảy ra sai sót thấp nhất có thể, thì cần có document hướng dẫn chi tiết cho Dev mới. Trong quá trình code thì Dev sẽ phải là người cẩn thận đầu tiên, sau đó Dev Lead hoặc SA là người review cũng phải soi kỹ những đoạn code với DateTime. Và cuối cùng là Tester sẽ test kỹ những trường hợp này. Tựu chung thì con người vẫn là mắt xích yếu nhất trong quá trình làm sản phẩm
@tmsangdev trong DB như nào cũng được anh, thời gian hiện tại không phụ thuộc vào db nữa ạ.
Vậy trong DB em sẽ dùng TIMESTAMP đúng ko man
Chỗ này em có cách xử lý đơn giản hơn và cách chốt lại để xử lý vấn đề này nhanh nhất: "Thời gian phải có múi giờ". Vì kiểu dữ liệu DateTime của C# có một trường Kind để xác định múi giờ, có 3 dạng chính là DateTimeKind.Utc, DateTimeKind.Local, DateTimeKind.Unspecified. Nếu thời gian Frontend gửi lên Backend thì mặc định sẽ có múi giờ, trường hợp này đã có múi giờ nên chúng ta có thể không quan tâm. Nếu Backend lấy dữ liệu từ cở sở dữ liệu quan hệ ra (ở đây là MySQL đang không lưu múi giờ), BE sẽ nhận định Kind của DateTime là DateTimeKind.Unspecified, khi đó thời gian của Backend lấy ra sẽ bị mất múi giờ, dẫn đến thông tin về thời gian sẽ bị sai. Cách làm ở đây sẽ là thống nhất múi giờ của Backend khi Insert vào Database và thời gian của Backend khi lấy dữ liệu ra của Database là cùng một múi giờ. Ví dụ trong trường hợp này sử dụng múi giờ Local +0700 làm múi giờ mặc định. Khi đó tất cả thời gian được tạo và được quản lý bên Backend. Khi lấy ra dữ liệu, nếu biết Kind của DateTime, thì mặc định trong ASP .NET 6 trở lên đã có System.Text.Json hỗ trợ xử lý thêm phần múi giờ khi convert sang JSON. Có thể thêm cấu hình sau đây vào System.Text.Json trong ASP .NET Core
Hoặc nếu dùng ASP .NET 7 hoặc 8 thì có kiểu dữ liệu mới là DateTimeOffset cũng có thể giải quyết vấn đề này một cách đơn giản.
chào a ạ, e khá kém lập trình và đang tìm hiểu về docker, tuy nhiên thì có quá nhiều ngôn ngữ lập trình và framework. 1 cái app có hàng tá module và pakage, e không biết bắt đầu từ đâu để build, để run...e muốn hỏi a có keyword nào để em có thể bắt đầu tim hiểu cách đóng gói ứng dụng được không,hay cần phải tìm hiểu hết các ngôn ngữ,framework,..ms có thể thành thạo docker?
Cảm ơn tác giả, mình cũng mới bắt đầu học CSS được 2 tuần, rất là bổ ích ạ!
Em cũng giống với bác, cũng phải đăng nhập vào để vote bài này 😄
Và em cũng công nhận với bác là nếu không hiểu hoặc không nắm rõ phần deep copy và shallow copy này đúng là chả hiểu lỗi từ đâu ra. Em mới gặp con bug nhỏ xíu về vụ này mà loay hoay hết cả tuần! @@
chào bạn, thay vì "import tensorflow as tf" như bình thường thì bạn thay dòng này thành "import tensorflow.compat.v1 as tf tf.disable_v2_behavior()" thử xem nhé, chúc bạn thành công. Nguồn: https://stackoverflow.com/questions/62598537/module-tensorflow-has-no-atributte
ơ thằng em nè, lâu quá mới thấy xuất hiện
@tuanbaht một comment đầy động lực. mình sẽ cố gắng. cảm ơn bro nhá 🤜🤛
🥰