기본 콘텐츠로 건너뛰기

라벨이 SystemNavigator인 게시물 표시

AI와 함께 춤을 - 25년차 개발자의 AI 코딩 여정기 (ChatGPT에서 Claude Code까지)

ChatGPT가 본격적으로 서비스를 시작하면서 나 뿐만 아니라 우리 모두의 삶에 많은 것이 달라졌다. 🤖 ChatGPT와의 첫 만남 회사 대표의 강권에 힘입어 ChatGPT가 서비스를 시작하자마자 유료 구독을 해서 사용하기 시작했다. 그런데 나는 인터넷을 업무 외 용도로는 크게 사용하지 않는 편이다. 인터넷 쇼핑도 거의 안 하고, 배달앱은 아직도 사용하지 않고 있다. 인터넷에서 하는 거라고는 개발을 위한 검색, 게시판 읽기, 가끔 궁금한 것 찾아보기 정도다. 그러다 보니, ChatGPT가 처음 나왔을 때 나에겐 크게 쓸모가 없었다. 그때는 ChatGPT에 환각이 많았기 때문에 개발 관련해서 뭔가를 물어보면 쓸 만한 답변을 하질 못했다. 답변을 받았더라도 이를 검증하기 위해 다시 구글링을 해야 했기 때문에 크게 도움이 되진 않았다. 💡 우연히 시작된 AI 코딩 ChatGPT를 코딩에 사용한 것은 우연한 기회였다. 집사람 친구 딸이 학교에서 코딩 숙제가 나왔는데 도저히 모르겠다고 도움을 요청해 왔다. 간단한 계산기였던가 그랬던 것 같은데, 직접 코딩해서 돌아가는지 확인하는 것까지는 귀찮아서 혹시나 하는 마음에 ChatGPT에 작성을 지시했다. 어라. 대충 눈으로 컴파일했을 때 문제없이 동작할 것 같은 코드가 나와서 그걸 보내줬다. 그러면서 개발에 ChatGPT를 사용하기 시작했다. 간단한 함수 단위로 머리 쓰기 싫을 때 작성을 맡기고 복사해서 붙여넣는 방식이었다. 그럼에도 이걸 적극적으로 사용할 수 없었던 것은 코딩에도 환각이 발생했기 때문이다. 코드에서 환각이 발생할 일이 뭐가 있겠냐 싶겠지만, 정확히 기억은 안 나는데 무엇인가를 구현해야 했는데 잘 모르는 부분이라 GPT에게 요청했다. 언제나 그렇듯이 매우 그럴듯한 코드를 뽑아줬다. 다만 존재하지 않는 패키지를 사용하라는 가이드와 함께... 그래서 간단한 함수 작성 같은 경우에만 쓰다가 이것도 귀찮아서 잘 사용하지 않게 되었다. ⚡ GitHub Copilot — ID...

[flutter] 모바일 앱 재시작 또는 종료

모바일 앱을 개발하다 보면 앱을 재실행 시키거나 코드에 의한 종료를 해야하는 경우가 발생합니다. 예를 들어서 앱의 전반에 걸쳐서 영향을 끼치는 설정을 초기화하고 새로 로딩해야 하는 경우가 있습니다. 이런 경우에는 해당 설정값만 다시 로딩하는 방법도 있겠지만, 이 값이 여러곳에 영향을 끼친다던가 초기화 해야하는 값들이 많다던가 하면 머리가 아파지고, 앱을 재시작 시켜서 자연스럽게 설정값을 읽어들지게 하는게 자연스러울 수 있습니다. 그런데, iOS와 안드로이드 모바일 환경에서는 코드에 의해서 앱을 재실행 시키거나, 종료 시키는 것에 대해서는 권장하지 않으며, iOS의 경우에는 이런 기능이 들어가면 앱 스토어 심사 단계에서 거부될 수 있습니다. 그래도 좋은 사용자 경험을 위해서 앱의 종료나 재시작이 꼭 필요한 경우에는 구현을 하는게 좋습니다. 앱 재시작 설정 초기화 후 앱을 재로딩이 필요한 경우라면 앱이 자동으로 재시작 되는 것이 앱이 종료되는 것 보다는 더 좋은 사용자 경험을 제공합니다. 그런데 iOS에서는 앱을 재시작 시킬 수 있는 방법을 찾지 못해서 안드로이드에서 재실행 시키는 방법만 정리하도록 하겠습니다. flutter 에서 제공하는 기능만으로 앱을 재시작 시키는 방법은 아직 찾지 못했고, 메소드 채널을 이용하여 네이티브 코드로 구현하셔야 합니다. PackageManager packageManager = getPackageManager(); Intent intent = packageManager.getLaunchIntentForPackage(getPackageName()); ComponentName componentName = intent.getComponent(); Intent mainIntent = Intent.makeRestartActivityTask(componentName); startActivity(mainIntent); System.exit(0); 참고 : https://ideaj...