안녕하세요.
해루@모그리입니다.
모험의 시작, Haerubot 1.0.2.6 업데이트에 대해 안내드립니다.
#1 국가 또는 지역 설정에서 형식이 '한국어(대한민국)'가 아닌 컴퓨터 환경에서 해루봇이 강제 종료되던 버그를 수정했습니다.
발신자 nas***** 님의 메일 제보입니다.
이유도 영문도 알 수 없이 그냥 다짜고짜 해루봇이 강제로 종료되던 PC가 있었을 겁니다.
백신도 없고 포맷도 했고 클리너 프로그램도 없고 완전 클린한 PC입니다. 설치 가이드를 꼼꼼히 보고 완벽하게 따라서 설치했고, 실행도 잘 되는 것 같았는데 어째서인지 뭔가 데이터를 받아오는가 싶더니 아무런 출력없이 그냥 꺼집니다. 아주 답답한 상황입니다.
"Plugins": [
{
"Type": "exe",
"Title": "Haerubot",
"FolderName": "Haerubot",
"FileName": "Haerubot.exe",
"InstallDate": 1654343054,
"IsEnabled": null,
"LastUpdateCheck": 1646566400,
"Size": 824822,
"DownloadLink": "https://github.com/HAERUHAERU/Haerubot-official/releases/download/1.0.2.5/Haerubot.zip"
},
{
"Type": "exe",
"Title": "Haerubot Updater",
"FolderName": "Haerubot",
"FileName": "Haerubot-updater.exe",
"InstallDate": 0,
"IsEnabled": null,
"LastUpdateCheck": 0,
"Size": 0,
"DownloadLink": null
},
{
"Type": "exe",
"Title": "Advanced Combat Tracker",
"FolderName": "Advanced Combat Tracker",
"FileName": "Advanced Combat Tracker.exe",
"InstallDate": 0,
"IsEnabled": null,
"LastUpdateCheck": 0,
"Size": 0,
"DownloadLink": null
}
],
위의 코드는 제보자의 컴퓨터에서 생성된 Haerubot.bin 파일입니다.
bin 파일을 까보면 위와 같은 다운로드 및 설치에 필요한 주요 데이터로 구성되어 있습니다.
이상하게도 Haerubot Updater부터 데이터가 없었습니다. 거기서 강제로 종료돼서 그런 것일까요?
그래서 로컬의 Haerubot-updater 파일에 접근을 하지 못해서 그런 것일까? 어떤 이유가 있는 것인가? 다운로드라서 차단된 파일? 뭔가에 보호되는 것인가? 경로가 다른가? 등 약간 이상한 쪽으로 삽질하게 됩니다.
Haerubot Updater의 데이터를 담은 Haerubot.bin 파일을 전달해 드렸습니다. 자동 동기화를 OFF 한 설정 파일을 넘겨 드렸기에 동기화가 진행되지 않았고, 실행은 잘 됐습니다만 역시 동기화를 시도하는 기능은 일절 사용할 수 없다고 하셨습니다.
앞서 생각한대로 Haerubot-updater.exe 파일 버전을 비교하는 부분에서 문제가 생긴 건가 싶어서 거기에 예외 처리 구문을 넣은 임시 해루봇 파일을 제보자께 전달했습니다. 해루봇이 강제로 종료되는 경우가 몇 가지 있는데 게 중 하나가 Haerubot-updater.exe 파일이 해루봇 폴더에 없으면 강제로 종료됩니다. 하지만 일반적인 사용자들이 그렇게 파일을 분리시킬 이유가 전혀 없기에 거기에 대해서는 굳이 예외 처리를 하고 있지 않습니다. 그 외에는 뭐 백신이나 클리너 프로그램의 강제 삭제가 이유가 됩니다.
String '05/21/2022 11:08:50' was not recognized as a valid DateTime.
String '12/23/2021 23:50:59' was not recognized as a valid DateTime.
제보자께서 회신을 주셨습니다.
아니 이것은! 이 오류는!
이 문자열은 유효한 DateTime으로 인식되지 않았다는 오류입니다.
날짜 형식이 다른 것입니다!
로그 영역을 보면 날짜 형식이 한국과 사뭇 다릅니다.
제보자께서는 현재 해외에 계시거나, 국내에 계시더라도 PC의 날짜 형식이 한국어(대한민국)가 아닌 것입니다!
지금 생각해보니 해루봇 실행 스크린샷을 봤었더라면 바로 눈치챘을 것 같았던 오류였습니다.
안타까운 점은 바로 꺼지니까 제보자께서도 스크린샷을 찍을 겨를이 없었던 것입니다.
위와 같이 날짜 형식을 변경하시고 나서는 완벽하게 동작한다고 하셨습니다.
이럴 수가.
그러면 저에게 해루봇이 꺼진다고 하셨던 일부 유저분들은 다 이런 이유가 아니었을까요?
클리너도 백신도 아니면 꺼지는 이유는 바로 날짜 형식뿐입니다.
1.0.2.6 버전에서 이 문제를 수정했습니다.
어떤 날짜 형식이더라도 표준 날짜 형식으로 처리할 수 있도록 내부 로직을 변경했습니다.
참고로 구 해루봇에서도 이런 문제가 없었냐? 하시면 당연히 있었습니다. 그때는 사용자의 PC 날짜 형식을 강제로 변경해버렸습니다. 그런데 그게 굉장히 불편한 일이라고 판단돼서 빼고, 에포크 시간을 기준으로 작업했었는데 일부분에서 문제가 발생해버렸네요.
아무튼 구 해루봇 방식보다 신 해루봇의 날짜 처리 로직이 훨씬 깔끔합니다.
사용자의 제어판 설정을 일절 건들지 않고 처리하게 됩니다.
#2 해루봇 빌드 데이터를 일시에서 버전으로 변경합니다.
해루봇을 사용하는 한국 유저들이 한국 시간을 사용하지 않을 수도 있다는 점을 깨달았습니다.
외국계 회사에서 일을 하시거나 해외 로밍 시간이 필요하신 분들은 시간을 달리 보실 수도 있을 테니까요.
빌드 시간으로 표시하던 해루봇 버전을 다시 어셈블리 파일 버전으로 표시할 수 있도록 변경했습니다.
#3 해외에 거주하시는 한국 유저들이 있을 수도 있기에 모든 검증을 로컬 타임이 아니라 UTC(협정 세계시)로 변경합니다.
해루봇은 정말로 한국 유저 타겟으로 만들어진 프로그램이라 국제화에 크게 신경을 쓰지 않았었습니다. 이번 기회에 유저 인터페이스에 노출되는 날짜 외 모든 데이터는 UTC(협정 세계시)기준으로 처리할 수 있게 변경했습니다.
이상입니다.
오늘도 즐거운 모험 되시길!
'✏️ 패치노트' 카테고리의 다른 글
1.0.3.0 패치노트 (같은 분류라서 6월 9일부터 이어서 작성함) (6) | 2022.06.09 |
---|---|
1.0.2.7 패치노트 (Haerubot Updater 1.0.0.2) (8) | 2022.06.08 |
1.0.2.5 패치노트 (2022-06-03 20:02:29) (0) | 2022.06.03 |
1.0.2.4 패치노트 (2022-06-03 00:34:52) (0) | 2022.06.02 |
1.0.2.3 패치노트 (2022-05-31 19:27:24) (0) | 2022.05.31 |