개발하는거북이 어플 만들었어요

전체 글 18

[iOS] 딥 링킹 환경에서 콘솔 출력하기

개요종종 딥 링킹 등을 통해 외부 환경에서 앱을 실행하고, 그에 따른 결과를 디버깅해야 할 때가 있다.그러나 기본적으로 XCode에서는 앱 빌드 → 실행 프로세스를 통해서만 XCode 디버깅 모드와 연결되며, 이후 어플리케이션 종료 시 해당 연결이 끊기게 된다.즉, 일반적으로는 외부 환경에서 어플리케이션 실행 시 XCode가 이를 감지하지 못해, 콘솔 출력을 포함한 디버깅이 불가능하다.어떻게 문제를 해결할 수 있을 지에 대해 알아보자. 해결책1. Launch Option 변경Launch Option을 확인하면, 처음에는 ‘Automatically’로 설정되어 있을 것이다. 이를 ‘Wait for the executable to be launched’로 변경한다.해당 옵션으로 변경 시 CMD + R 이후 ..

앱 개발/iOS 2025.03.25

[iOS] 원격 푸시 알림 정리: FCM, APNs

개요이전에 React Native를 이용해 크로스플랫폼으로 어플을 제작한 경험이 있는데, 이 때는 FCM(Firebase Cloud Messaging) 서비스를 통해 원격 푸시 알림을 구현했었다. 누군가가 나를 초대했을 때 어플에 접속 중이 아니더라도 알림을 보여주어, 유저 리텐션 높이기에 긍정적인 영향을 주었던 기억이 난다.최근 회사에서는 네이티브 개발을 하면서 똑같이 원격 푸시 알림을 구현하는 업무를 맡게 되었는데, 네이티브의 경우 내가 알던 방식과 구현 방식이 살짝 달랐다.네이티브로 개발 시에는 어떤 방식으로 원격 푸시 알림을 구현할 수 있는지에 대해 조사해 보았다. 푸시 알림의 종류원격 푸시 알림에 대해 알아보기에 앞서, 먼저 푸시 알림의 종류에는 어떤 것들이 있는지부터 알아보자.푸시 알림은 ‘트..

앱 개발/iOS 2025.03.25

[GitHub] Issue의 개념, Issue 템플릿 생성하기

GitHub에는 협업을 돕기 위한 다양한 기능들이 있으며, 그 중 하나가 바로 Issue 기능이다.일반적으로 Issue는 ‘문제점’으로 번역되지만, 실제로는 단순한 버그 신고뿐만 아니라 기능 개발, 작업 요청, 개선 제안 등 개발과 관련된 다양한 항목을 관리하는 데 범용적으로 사용된다. 이러한 관리를 통해 프로젝트를 더욱 체계적으로 관리할 수 있다.이번 글에서는 실제 개발 과정에서 Issue를 어떻게 효과적으로 활용할 수 있는지, 그리고 Issue를 보다 간편하게 생성할 수 있도록 도와주는 Issue 템플릿 기능에 대해 알아보고자 한다.GitHub Issue란?GitHub Issue는 GitHub 저장소(repository)에서 작업 항목을 추적하고 협업하기 위한 도구이다. 작업 항목이라고 한다면, 버그..

GitHub 2025.03.23

[iOS] 생애주기 및 AppDelegate, SceneDelegate의 역할

개요iOS에서의 앱 생명주기는, iOS 13 전후로 작동 방식이 다르다.iOS 13부터는 앱 하나를 여러 개의 창으로 띄우는 멀티 윈도우 기능을 지원하게 되면서 생명주기 관리 방식이 기존보다 더 세분화되었으며, 이에 따라 앱의 생명주기 관리 구조 역시 변경되었다.앱 생명주기에 대해 설명하고 멀티 윈도우 도입 전후의 차이점을 비교하여, 실제로 이를 어떻게 핸들링할 수 있는지 설명하고자 한다. 목차앱의 상태 및 생명주기멀티 윈도우 도입에 따른 변화iOS 13 이전과 이후 변화된 생명주기 관리 방식iOS 13 이전과 이후, 생명주기를 고려한 iOS 호환성을 유지하는 방법 앱의 상태 및 생명주기앱의 생명주기란, 앱의 상태가 전환되는 일련의 과정을 말한다. 앱 상태의 경우 크게는 세 가지, 더 세분화된다면 다섯 ..

앱 개발/iOS 2025.03.10

[알고리즘 with Swift] VSCode에서 단일 파일 실행환경 구성하기

최근 iOS 개발자가 되기 위한 여정을 시작하고, Swift 문법 공부를 시작했다.최근 몇몇 기업에서는 코딩 테스트 자체를 모집 분야의 주 언어로만 가능하도록 제한하는 경향이 있다고 하여, PS 역시 기존 C++에서 Swift로 변경하면 좋을 것 같았다. 이에 내가 구성한 VSCode 내에서의 단일 파일 실행 환경 세팅 및, 자잘한 팁에 대해 공유해보고자 한다. 단일 Swift 파일 실행 명령어 XCode 또는 Swift만 설치되어 있다면, 의외로 단일 파일을 실행하는 것은 쉽다. 터미널 환경에서swift [실행할 swift 파일 경로] 명령어만 입력하면 별도의 빌드 과정 없이 단일 파일을 쉽게 실행해볼 수 있다.'그렇다면 단축키를 통해 저 터미널 명령어를 실행하면 되지 않을까?' 라는 생각 하에, VS..

알고리즘/Swift 2025.02.22

[iOS] XCode 단축키 VSCode처럼 설정하기

개요원래 VSCode에서 프론트엔드 개발 및 React Native 개발을 하다가, 최근 iOS 개발에 관심이 생겨 XCode를 사용하게 되었다. 사실 불편한 점이 여간 한두개가 아니었는데, 그 중 가장 불편했던 점이 단축키 관련 이슈였다.VSCode만으로 거의 몇년째 개발을 했고, 그 중에서 상당히 유용하게 썼던 단축키가 꽤 많았는데 대부분이 XCode에서 적용되지 않아서 결국 단축키 세팅을 VSCode처럼 변경했다. 나와 비슷한 고충을 겪는 사람이 있을 것 같아, 해당 설정을 공유해보고자 한다. 해당 설정을 바탕으로, 본인 입맛대로 추가 커스텀을 통해 사용하면 될 것 같다.주요 변경점으로는 아래와 같다.⌘+D : 현재 파일 내에서, 현재 선택된 영역과 동일한 이름을 가지는 다음 영역 선택(수정도 가능..

앱 개발/iOS 2025.02.22

[React Native] 새로고침 시 이미지가 깜빡일 때(image flickering)

React Native를 이용해 서비스를 개발하던 중, UX 측면에서 좋지 않은 현상 하나를 겪었다. 새로고침 시 이미지가 깜빡이는 현상(flickering)이 생기고 있었다.문제를 찾기 위해 디버깅을 해 보니, 그 이유는 AWS의 Presigned Url에 있었다. 이미지 관련 정보를 S3에서 동적으로 받아오는 형태로 아키텍처를 구성했는데, 동일한 리소스에 대한 요청에도 그때마다 다른 url 값을 반환하는 특성 상 Image 객체의 url이 변경되어, 원치 않는 리렌더링이 발생하는 것이었다. 이미지 자동 캐싱을 해 주는 react-native-fast-image 라이브러리를 써 봤을 때에도 별다른 효과가 없었고, 이후 조금 더 근본적인 해결책을 찾게 되었다. patch 파일을 통해 라이브러리 코드를 직..

[React Native] Android에서 그림자가 잘릴 때

문제 상황React Native를 이용해 프로젝트를 진행하고 있는데, IOS에서는 정상적으로 보이는 그림자가 Android에서는 좌우로 잘려 보인다.  원인const GeneralCommunity: React.FC = () => { const { postList, getPostListByBoardId } = useCommunityContext(); const { tokenHeader } = useContext(AuthContext); useEffect(() => { if (!tokenHeader) return; getPostListByBoardId(tokenHeader, 1, 0); }, [tokenHeader]); return ( ( // 그림자 효..

[BOJ] 2504 : 괄호의 값 / C++

SW마에스트로 합격을 위해 최근 열심히 코딩 테스트를 준비하고 있다.열심히 코테를 위한 뇌를 깨우고 있던 중, 첫 번째 난관에 봉착했다.꽤나 오랜 시간을 투자한 만큼 더이상 삽질하지 말자는 의미에서, 기존 내가 설계했던 방식에 대한 짧은 소개와 문제점, 그리고 올바른 풀이를 설명하고자 한다.이번 문제에서는 아이디어만큼 내가 여기서 겪었던 실패와 성공의 경험 역시 중요하다고 생각해 전반적인 흐름을 작성하였으니, 하나의 이야기를 보는 느낌으로 편하게 봐 주시면 될 것 같다. 문제https://www.acmicpc.net/problem/2504 2504번: 괄호의 값4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루..

알고리즘/C++ 2023.12.29

[React] 무한루프 예방을 위한 주의사항(useEffect, Event Handler)

리액트를 이용해 개발을 하다가, 처음 보는 오류를 마주하게 되었다. 기존의 동적인 요소와 상호작용이 되지도 않을 뿐더러, 사이트 자체가 아주 느려진 느낌이었다. 창이 꺼지는 데에도 많은 시간이 걸렸다. 추후에 어찌저찌 개발 툴을 열어 오류를 확인해 보니, 아래와 같은 오류 창이 떠 있었다. 음.. 누가 봐도 어딘가에서 코드를 잘못 써서 무한루프에 걸린 문제였다. 처음에는 'useEffect 내부에서 setState를 호출했으나, useEffect가 두 번째 인자인 dependency 배열을 받지 않았거나 렌더 시마다 dependency가 변경되었을 때 발생할 수 있는 오류'라는 내용을 보고 이 부분을 확인해보고자 하였다. 실제로, 아래 두 가지의 상황에서는 무한루프가 발생할 수 있다. 1. useEffe..