Chào mừng anh em đến với chuyên mục Coder ký sự, dạo là gần đây mình có đang xây dựng 1 ứng dụng quản lý sản xuất. Backend sử dụng spring, frontend sử dụng vue2. Vì trước đây mình chưa hề code Spring nên mọi chuyện tương đối khó khăn khi mà phải tiếp quản 1 project xây dựng từ những phiên bản khá cũ (java-11, vue2). Mình đã quyết định dùng ChatGPT như 1 người bạn đồng hành trong project này.
Mọi việc diễn ra hết sức suôn sẻ đã khiến bản thân mình ngập chìm trong chiến thắng. Nó thuận lợi tới mức thi thoảng mình còn giật mình nhận ra mình sắp lụt nghề AI. Để rồi mình lệ thuộc vào chatGPT tới mức là cái đếch gì cũng viết prompt để hỏi nó. Thế rồi chuyện gì đến cũng phải đến, Vì hệ thống chỉ dùng tại Nhật nên thay vì thiết định timezone=UTC thì mình đã chuyển serverTimezone=Asia/Tokyo để khi lưu thông tin vào database sẽ lưu múi giờ +9 cho đỡ phải convert thời gian qua lại giữa client và server.
Chia sẻ thêm cho anh em việc tại sao nên đặt timezone là UTC. Giả sử dự án chúng ta đặt timezone là +7 ở việt nam, thì nếu người dùng ở việt nam thao tác vào lúc 9h => khi insert vào DB cũng là 9h đúng không?, và khi lấy data ra thì vẫn là 9h. Nó hoàn toàn không phát sinh vấn đề gì cả trong trường hợp này. Tuy nhiên nếu client ở 1 múi giờ khác là +9 ở Nhật bản chẳng hạn, Khi người dùng thao tác lúc 9h Nhật, insert vào DB sẽ bị convert về múi giờ +7 là 7h, Khi này trong DB sẽ là 7h => nếu không xử lý ở phía client là chuyển data từ +7 sang +9 thì thời gian hiển thị client sẽ là 7h trong khi người dùng thao tác là 9h cơ => thời gian bị sai. Giải pháp đặt ra ở đây là Client phải tiến hành chuyển timezone khi nhận data từ server trả về theo múi giờ hiện tại của client.
Quay trở lại vấn đề, Vì quá lệ thuộc vào chatGPT nên mình đã hỏi nó cách chuyển timezone trong spring. Mình đã nhận được câu trả lời ưng ý là sửa vào chuỗi kết nối DB trong file .properties. Nhưng định mệnh nó đưa code nó có thêm cả comment ạ đại loại comment sẽ như này:
# chuyển timezone sang Asia/Tokyo
Mình đếch biết là comment UTF-8 vào file này sẽ bị lỗi khi build ae ạ.
Cái khốn nạn là sau khi sửa ở file .properties mình đã không mvn clean install lại mới đau. Sau khi sửa code và commit 7x7x49 lần thì đùng 1 cái mình mvn clean install và nhận được 1 ERROR đỏ chói như sau:
Vì đã quá lệ thuộc vào chatGPT nên ngay sau khi lỗi thì mình đã copy mã lỗi và nhờ tác giả của đoạn code fix giùm. Nhưng đinh công mệnh chỉ nhận được những câu nói vô nghĩa, vô thưởng, vô phạt như 1 sự chối bỏ quá khứ đầy đau thương. Hắn đã bỏ lại mình mớ hỗn độn trong sự hỗn loạn các bác ạ.Quá hoang mang sờ tai, mình bắt đầu điên cuồng search google với hi vọng là không phải rollback lại code từ hôm qua. Nhưng kết quả nhận được làm mình thất vọng hơn nữa, từ những comment được đánh tích trên stackoverflow tới những comment uy tín trên github mà minh chứng là nó đã nhận được 1 đống icon đồng tình. Nhưng kết quả vẫn vô vọng. Hạ version của maven-resource đã không có hiệu quả, chuyển propeties cũng không giúp ích gì.
Sau 30p lùng sục đọc cmt trên internet không có kết quả thì mình đã quyết định…rollback code. Mình cố gắng lục tìm trong kí ức những giai đoạn mình có thể gây ra lỗi này, rồi bắt đầu rollback lại từng commit 1 trước đó với hi vọng tìm được giai đoạn mình đã sửa code và gây ra lỗi. Nhưng than ôi đời đâu như là mơ, Trong 1 ngày em đã commit 16 lần (em luôn có thói quen sau khi code xong 1 chức năng nhỏ sẽ commit luôn). hết showdiff rồi rollback trong tuyệt vọng thì cuối cùng em cũng phát hiện ra commit mà không bị lỗi. Chính là khứa này => Comment có chứa UTF8 ạ.
Em thầm chửi thầm trong bụng, đệch mợ comment mà chúng nó cũng đọc ư????? Tuy rằng e lệ thuộc vào chatGPT nhưng lúc nào e cũng check code trước khi đưa vào project. Sau em tìm hiểu ra không phải là thằng spring này nó đọc cả comment, mà là file chứa kí tự UTF-8 nên hệ thống đang nhận diện chúng là 1 kiểu file khác dẫn đến khi build sẽ bị lỗi.
Thế là thôi xong mất toi 3 tiếng đồng hồ vì 1 lỗi ngớ ngẩn là copy cả comment có chứa kí tự UTF8 của chatGPT. =))
Qua câu chuyện này em rút ra 3 điều
- ChatGPT ưu việt thật đấy nhưng phải check thật kỹ code trước khi đưa vào hệ thống của mình, vì việc sửa nó sẽ tốn rất nhiều thời gian, mình sẽ không phán đoán được phạm vi cần sửa và đặc biệt là chatGPT sẽ không hiểu được bối cảnh 1 cách chi tiết để có thể khắc phục lỗi do chính nó gây ra.
- Không sử dụng kí tự UTF-8 trong các file .properties KỂ CẢ COMMENT
- Nghề IT tương lai có thể bị lụt nghề do AI, nhưng hiện tại là nó giúp ích rất nhiều cho ae IT, nếu tận dụng chúng 1 cách hiệu quả thì ae coder chúng ta sẽ bớt vất vả đi rất nhiều.
Thân ái và chào tạm biệt anh em ở số sau.