기본 콘텐츠로 건너뛰기

AI와 함께 춤을.. 아니, 코딩을.. (4) - 모노레포로 개발 환경 통합하기

바이브 코딩을 하는 가장 큰 이유는 아마도 개발 생산성 향상 일 것이다. 그래서인지 바이브 코딩을 하면서 자연스럽게 "어떻게 하면 효율을 더 높일 수 있을까?"를 고민하게 된다. 직접 코드를 작성하지 않으니, 그만큼 남는 시간을 프로세스 개선에 투자하게 되는 셈이다. 지난 포스팅에서 앱과 서버를 함께 개발할 때 명세 문서를 작성하고, 이를 기반으로 AI 에이전트에게 개발을 지시하는 방식을 소개했었다. 오늘은 이 방식을 실제로 사용하면서 겪었던 불편함과, 그것을 어떻게 개선했는지 이야기해보려 한다. 기존 개발 환경 앱에 기능을 추가하다 보니 서비스가 하나가 아니라 여러 개가 되었다. 당시 내 개발 환경을 간단히 그려보면 이런 구조였다. 개발 Macbook └─ 앱 프로젝트/ ├─ docs/ └─ src/ Ubuntu 서버 ├─ server1 프로젝트/ │ ├─ docs/ │ └─ src/ └─ server2 프로젝트/ ├─ docs/ └─ src/ iOS 앱 개발은 어쩔 수 없이 Mac에서 해야 했다. 서버는 DB도 돌려야 하고, 실제 운영 환경과 동일한 조건에서 개발하는 게 나을 것 같아 Ubuntu에서 진행했다. Macbook 용량도 부족한데 DB 서버를 계속 띄워놓기도 부담스러웠고, 초기에 API 서버가 PHP + Apache 조합이었던 것도 분리한 이유 중 하나였다. 기존 개발 프로세스 새로운 기능을 추가하거나 수정할 때는 이런 순서로 작업했다. VS Code에서 앱 프로젝트를 열고, Claude를 이용해 명세를 작성 한다. 작성된 명세를 구현이 필요한 각 프로젝트의 docs 폴더에 복사 한다. VS Code에서 각 프로젝트를 연다. 서버의 경우 VS Code의 원격 연결을 이용한다. 각 프로젝트에서 Claude를 실행하고, docs 폴더의 명세를 기반으로 개발을 지시 한다. 문제점 문제...

수경재배 상추 47일차 - 최종 수확량과 경제성 분석

상추 추수 이후 성장 현황 지난번 상추 추수 이후 많이 자랐습니다. 상추 잎을 따내고 나면 위 사진과 같이 앙상한 상추들이 보입니다. 역시 빛이 약하다보니 수경재배기의 LED 빛을 잘 받는 가운데 부분 이외의 포트에서 자라는 상추는 웃자람이 심하여 제대로 서 있질 못하게 되어 여기에서 더 키우는 것은 한계인 것 같아서 웃자람이 덜한 가운데 3포트만 남기고 나머지는 모두 따냈습니다. 12포트 50일 수확량과 경제성 분석 50일 약간 안되는 기간동안 12포트에 씨를 심어서 따낸 상추잎은 마트에서 소분해서 파는 봉지기준으로 4~5봉지 정도 되는 것 같습니다. 수경재배기 구입비용, 전기요금 등을 감안하면 한두번 키워서는 경제성이 형편없습니다. 그리고, 향후 투입될 양액 구매비용과 그로잉스펀지(수경재배기의 각 포트에 끼워서 상추를 키워내는 배지) 구매비용등을 감안하면... 장기적으로도 경제성은 없을 듯 합니다.. 그냥 재미로... 다음 재배 계획 새로 주문해 놓은 그로잉스펀지가 도착하면 12포트 대신 4~5포트만 심어서 키워서 웃자람이 덜하게 키워볼 예정입니다. 이 글은 이번 재배에 대해서는 마지막 포스트입니다..

[iOS/Flutter] CocoaPods CDN trunk URL SSL 인증서 오류 해결 방법

문제 배경 - Privacy Manifest 대응 중 발생 Apple에서 Privacy manifest 파일 추가를 요구하여 이와 관련된 수정 작업을 진행하고 있습니다. 이 요구에는 내가 개발한 소스 뿐만 아니라 서드파티 SDK를 사용하는 경우에 해당 서드파티 SDK도 privacy manifest을 포함해야 한다라는 요건이 있어서, 개발중인 프로젝트에 privacy manifest를 추가해야 하고, 서드파티 SDK도 privacy manifest를 포함한 버전으로 업데이트를 해야만 하게 되었습니다. NSUserDefaults 만 사용하더라도 privacy manifest 포함해야 하기 때문에 상당히 많은 서드파티 SDK를 함께 업데이트 해야한 합니다. 그리고, 서드파티들도 최근에 이것을 지원하고 있기 때문에 거의 최신 버전을 사용해야 합니다. 그리고, 이로 인해서 부득히 빌드 체인도 함께 업데이트 해야하게 되었습니다. 더더욱 flutter로 안드로이드도 함께 개발하다보니 안드로이드 빌드 체인도 함께 업데이트해야 해서 일이 커졌습니다. 오류 내용 - CDN trunk URL SSL 인증서 오류 업데이트를 위한 작업중 pod install 과정에서 아래와 같은 오류가 발생했습니다. CDN: trunk URL couldn't be downloaded: https://cdn.jsdelivr.net/cocoa/Specs/0/3/5/Firebase/10.25.0/Firebase.podspec.json Response: SSL peer certificate or SSH remote key was not OK 오류 메시지에 포함된 URL을 웹 브라우저로 접속해보면 인증서가 만료된 상태입니다. 뭔가 저장소 관리에 문제가 있는 모양입니다. 오류 내용으로 검색해보면 주기적으로 문의가 올라오는데, 된다고 하는 방법으로도 안되는 걸로 봐선 발생하는 경우에 발생하는 원인이 여러가지 일 수도 있는 것 같습니다. 해결 방법 - Podfile에 저장소 명시적 지정...

수경재배 상추 36일차 - 첫 수확과 솎아주기 후기

36일차 상추 성장 상태 그 동안 상추가 이 만큼 자랐습니다. 광량이 부족해서인지, 양분이 부족해서인지 밭에서 키우는 상추보다 잎이 여린데, 크기는 시중에 파는 상추 정도의 잎 크기가 되었습니다. 포트의 간격이 좁아서 자기네 끼리 가려서 빛을 받지 못하는 잎도 많아지고 해서 큰 잎을 위주로 솎아야 겠습니다. 첫 수확 - 두 사람이 먹기 충분한 양 이 만큼의 잎을 따 주었습니다. 두 사람 정도가 한 번 먹기에는 충분한 분량이 나왔네요. 솎아주기 후 재배기 상태 수경 재배기에는 이렇게 볼품 없는 상추들이 남았습니다. 곧 다시 풍성해지겠지요. 자라는 걸 보고 포트간의 간격이 너무 좁아서 크는데 문제가 있다고 생각되면 중간 중간 비워 주던가 해야겠습니다.

수경재배 상추 25일차 - 잎이 상추다워지고 물갈이 완료

25일차 성장 상태 - 상추다운 잎 수경 재배기에 상추를 파종한지 25일 되었습니다. 수경 재배기에 딸려 온 수경 포트가 뚤려 있는 구멍에 씨앗을 넣어두는 형태로 되어 있어서, 뿌리와 잎의 경계(줄기??) 부분이 흙에 심었을 때 처럼 잘 잡아주지는 못하는 형태여서 줄기 부분이 아직은 많이 가늘어서 누운 애들도 있고, 빠빳하게 하늘을 향해 서려면 좀 시간이 더 지나야 할 것 같습니다. 그럼에도 불구하고 그 동안 이만큼 자라서, 이제 상추가 좀 상추다워 졌습니다. 다음에는 씨앗을 스폰지에 끼우는 방식으로 해 봐야겠습니다. 2주 전 양액을 추가할 때에는 물이 줄어든것이 거의 눈에 띄지는 않았었습니다. 이번에는 잎이 커지면서 증산 작용도 활발해져서, 수조에 넣어 놓은 물도 700ml 가량이 줄어 들었습니다. 뿌리 성장 현황 이젠 뿌리도 많이 생겼지만, 아직은 갈 길이 먼 것 같습니다. 2주차 물갈이 - 양액 A/B 각 10ml 투입 지난 번에 양액을 넣어주고 2주가 흘러서, 전체 물갈이를 해주었습니다. 양액은 지난번과 같이 4L 수조에 A/B 용액 각 10ml씩 넣었습니다. 빨리 상추 쌈을 싸 먹는 날이 왔으면 좋겠네요..

수경재배 상추 10일차 - 첫 양액 투입과 A/B 용액 배합 방법

파종 10일 후 성장 현황 상추를 파종한지 10일이 지나서 상추들이 이만큼 자랐습니다. 뿌리 성장 상태 상추의 뿌리가 포트 밖으로 빠져나올 정도로 길게 자랐습니다. 그래도 아직은 뿌리의 가닥 수도 작고, 가늘고 약합니다. 사무실에 사람이 있는 동안은 난방을 하니까 괜찮은데, 저녁에는 아직도 기온이 많이 내려가기 때문에 성장이 더딘것 같습니다. 이제 낮기온도 꽤 올라가고 꽃도 피기 시작하니까 멀지 않아서 폭풍 성장을 할 것 같습니다. 양액 A/B 용액 배합 방법 수경재배기 메뉴얼에서는 2주에 한 번 전체 물을 갈아주고, 그 외에는 보충을 해주라고 되어 있습니다. 아직 상추가 싹이 작기도 하고, 10일 밖에 지나지 않았지만, 그 동안 물로만 키우고 있었기 때문에 오늘은 양액을 넣어 주기로 했습니다. 그래서 전체 물갈이를 할 예정입니다. 우선 양액을 준비합니다. 국내에서 많이 판매되는 양액이 있기는 합니다만, 수경재배기에 포함되어 있는 양액을 먼저 사용하려고 합니다. 수경재배기에 포함되어 있는 양액은 액체 상태가 아닌 알갱이 상태로 두 개의 병에 담겨 있습니다. 각 병에 물 100ml 씩을 넣고 알갱이가 다 녹을 때까지 섞어 줍니다. 병에 100ml 눈금이 표시되어 있기 때문에 눈금까지 넣어 주면 됩니다. 메뉴얼 상에는 역삼투압 방식으로 정수된 물을 사용하라고 하는데, 전 그냥 수돗물을 사용했습니다. 순수한 물을 사용하면 아무래도 양액의 농도나 같은 것들이 좀 더 정확해 지지 않을까 싶긴 합니다만, 사무실에 정수기도 없고.... 그렇다고 약국에 증류수를 사러가기도 뭐하고.. 근처에 약국도 없고.. ^^;;;;;;; 여튼, 알갱이가 다 녹을 때까지 섞어 줍니다. A용액은 약간 노란빛이 드는 액체가 되고, B용액은 투명색을 그대로 유지합니다. 양액 희석과 수조 채우기 2L 생수병에 물 2L를 채우고, A용액을 10ml 넣어준 다음에 B용액 10ml 를 추가하였습니다. A/B용액이 직접 만나게 되면 화학 반응이 일어날 수 있는 모양입...

[iOS] iOS App Store 유럽 연합(EU) 디지털 서비스법(DSA) 규정 준수 - 거래자 제공업체 계정?

앱에 대한 고객 리뷰를 보기 위해서 App Store Connect 에 접속을 하니, 불안감을 조성하는 붉은색 알림이 하나 표시되고 있었습니다. 디지털 서비스법에 따라 정보를 제공 하라는 메시지입니다. 일단, 무슨 법에 따라서 변경 하라는 메시지는 법을 잘모르는 입장에서는 괜히 부담이 많이 갑니다. 용어도 잘 모르겠고, 이것으로 인하여 나에게 미치는 영향도 잘 모르겠는 경우가 많아서 입니다. 그렇다고 무시하면 앱 배포가 중단될 수 있다는 협박성(?) 내용이 항상 뒤 따르기 때문에 잘 모르더라도 해야만 합니다. 그래서 규정 준수를 위하여 링크를 타고 들어가면 아래와 같은 절차를 만나게 됩니다. 디지털 서비스법은 유럽 연합(EU)에서 정한 법인 것은 알겠고, "거래자 제공업체 계정", "비거래자 제공업체 계정" 둘 중에 하나를 고르면 되는 것으로 보입니다. 심리적으로는 왠지 모르게 "거래자 제공업체 계정"에 해당할 것 같은데, 거래자가 뭔지 모르겠으니, "거래자 자격이 있는지 더 알아보기"를 클릭해서 해당 설명이 있는 페이지로 이동합니다. (불친절한) 애플 가이드 페이지가 보여지고, 거래자에 대한 설명은 아래와 같이 되어 있고, EU에서 제공하는 홈페이지 링크가 하나 걸려 있습니다. DSA에서는 거래자를 “개인 또는 공공 소유 여부와 무관하게 자신의 명의로 또는 자신을 대신하여 행동하는 사람 또는 모든 자연인,  그리고 무역, 비즈니스(Business), 기술 또는 직업과 관련된 목적을 위해 행동하는 모든 사람” 으로 정의합니다. 귀하가 거래자에 해당되는지 여부는 법률 고문과 상담하십시오.( # ) 위 문장을 제가 이해하기에는 앱스토어에 앱을 배포하는 모든 사람/회사는 거래자에 해당할 것 같습니다. 그럼 나는 "거래자 제공업체 계정"을 선택하면 될 것 같은데, 그럼 "비거래자 제공업체 계정" 선택이 필요 없지 않은가라는 의문이 들었습니다. 아니면 애플에서 ...

수경재배 상추 파종 3일차 - 싹이 돋았습니다

12포트 중 8포트 발아 성공 사무실 수경 재배기에 뿌려 놓은 상추 씨앗이 주말 동안 싹을 틔웠습니다. 오래된 씨앗이라서 싹이 날지 걱정했는데, 12 포트 중에서 8포트가 싹이 났습니다. 남은 포트와 뿌리 노출 문제 4포트가 아직 소식이 없는데, 조금 더 지켜보고 다시 파종 해야 겠습니다. 씨앗이 흙에 묻히는 구조가 아니라서 뿌리가 LED 빛에 노출되는 구조인데, 문제 없는지 모르겠네요. 뿌리에는 빛이 안가는게 좋을 것 같은데...