전체 글 (181) 썸네일형 리스트형 [iOS] 백그라운드에서 Bluetooth 태그 스캔 기능을 구현하라구요? - 1탄 안녕하세요!오늘은 제가 기능 구현하면서 공부하고 부딪혔던 부분에대해서 글을 적어보려고 합니다!ㅎㅎㅎ백그라운드..... 힘들었어요... 기기마다 스캔 빈도수가 꽤나 달라서..ㅜㅜ자! 그럼 시작해봅시다!회사에서 아래와 같은 요구 사항을 받았었는데요!"앱이 백그라운드에 있어도 Bluetooth 태그를 계속 찾을 수 있게 만들어주세요!" 처음에는 어렵지 않을꺼라고 예상했지만........iOS에서 백그라운드 Bluetooth 스캔은 Apple의 까다로운 백그라운드 정책 때문에 다소 복잡했어요,,ㅜㅜ 제일 컸던 부분은 iOS 13부터 시스템이 "내가 알아서 판단해줄게"라며 개입하기 시작해서메모리나 배터리 상태, 앱 접속 빈도수, 권한 이슈 등 다양한 상황으로 인해 기기마다 스캔 기능이 실행되는게 천차 만별이었는데.. [AWS] 인프라 구조 파악하기: 서버 2개가 돌아가고 있다면? 요즘 백엔드 업무도 같이 하고있는데요!! (인수인계가.. 없었음.. 맨땅에 해딩 중..)AWS 인프라 구조 파악을 하다가 서버 2개가 동시에 돌아가고 있더라구요이게 로드밸런싱인지, 아니면 웹서버/앱서버 분리 구조인지, 혹은 백업 서버인지 모르겠어서,실제 AWS 환경에서 이를 구분하는 방법을 단계별로 알아보겠습니다메인 서버가 2개?!CloudWatch 모니터링을 보니 메인 서버 두개가 모두 활발하게 트래픽을 처리하고 있었습니다. 이때 가능한 시나리오는 다음과 같습니다.1. 로드밸런싱두 서버가 동일한 역할을 하며 트래픽을 나눠서 처리성능 향상과 가용성 확보가 목적2. 웹서버 + 앱서버 분리웹서버: 정적 파일 서빙, 프록시 역할앱서버: 비즈니스 로직 처리, DB 연동3. 백업 서버 (Standby)평상시에는 .. [GitHub] 실수 없이 되돌리기: Git reset 옵션 완전 정복 안녕하세요!이번에는 Git의 Reset 명령어에대해 알아보도록하겠습니다!들어가며..Git을 쓰다 보면 reset, revert, checkout, restore처럼 비슷한 명령어들이 많아 헷갈릴 때가 있습니다.특히 reset은 Git의 히스토리를 직접 조작하는 명령어이기 때문에, 잘못 사용하면 복구하기 어려운 상황이 생길 수 있습니다.이 글에서는 먼저 Git reset 옵션의 작동 원리를 개념적으로 설명한 뒤, 각각의 옵션(--soft, --mixed, --hard)을 예시와 함께 살펴보고, 마지막에는 실제 상황에서 어떤 옵션을 선택해야 할지 정리해보겠습니다. 각 박스는 커밋을 나타내며, hello.txt 파일의 변경 이력을 V1 → V2 → V3 순서로 보여줍니다.커밋 해시(a1b2c3d 등)와 각 버.. [GitHub]Git 핵심 개념 한번에 이해하기: 3대 영역 + HEAD와 Branch 안녕하세요!이번 글에서는 Git의 기초기초왕기초인!! Git의 3대 핵심 영역과 HEAD/ Branch에대해 알아보겠습니다!들어가며..막상 Git 명령어들을 습관처럼 사용하다 보니까, 제가 쓰는 명령어들이 실제로 어떤 흐름으로 작동하는지 깊게 생각해본 적은 많지 않았던 것 같아요.사실 git reset, git checkout, git revert 같은 명령어들도 사용은 하는데, 어떤 게 뭘 되돌리는 건지 헷갈릴 때 많잖아요??이럴 때 Git의 핵심 구조를 제대로 알고 있으면 명령어가 다르게 작동하는 이유도 자연스럽게 이해되더라구요.즉, Git이 내부적으로 어떤 영역들을 기준으로 동작하는지, 지금 내가 Git 안에서 어느 위치에서 작업하고 있는지를 이해하는게 중요하다고 생각했습니다!그래서 이번 기회에 G.. [Concurrency] 병렬 처리 제대로 쓰기: async let vs TaskGroup 안녕하세요!이전 글들( [Concurrency] Task 톺아보기, [Concurrency] 천천히 알아보는 Task.detached(), 언제 어떻게 써야 할까? )에서 Swift Concurrency의 기초와 비구조화 Task에 대해 정리했는데요. 이번 글에서는 그 연장선으로, 구조화된 병렬 작업을 Swift에서 어떻게 더 유연하고 효율적으로 처리할 수 있는지 함께 살펴보려 해요!async let vs TaskGroup: 어떤 걸 언제 써야 할까?async let과 TaskGroup은 모두 구조화된 병렬 처리를 위한 도구지만, 사용하는 방식과 적절한 상황은 꽤 다릅니다.예를 들어, 이미지 여러 장을 한꺼번에 다운로드할 때는 async let이 직관적이고 간단하지만,반복문 안에서 비동기 작업을 여러 개.. 글또 마지막 글을 제출하며... 24년 10월, 저에게는 크나큰 도전이었던 글또와 함께한 6개월이라는 시간이 빠르게 지나갔고, 벌써 글또 10기의 마지막 글을 제출합니다.언제나 마지막이라고 생각하면 마음이 싱숭생숭해지고 아쉬움이 남는데요. 하지만 끝이 아닌 시작이라고 생각해보려 합니다!글또에서 얻은 습관들과 인연을 유지하는 것은 제가 하기 나름이기에 아쉬움은 잠시 뒤편에 두고 더 나은 삶과 관계를 이어가고 싶어요ㅎㅎ주저리주저리 그만하고, 그럼 회고를 시작해볼까요!!글또 10기 다짐, 목표 얼마나 이뤘어?글또 10기 시작을 다짐글로 열었으니, 초기 목표를 얼마나 달성했는지부터 확인해봐야겠죠?글을 가끔 열어보긴 했는데, 막상 목표 달성 여부를 정확히 판별하려니 조금 떨리네요...아래는 글또 다짐글에서 이번 활동 목표만 떼서 가져와 봤습니다.. [Concurrency] 천천히 알아보는 Task.detached(), 언제 어떻게 써야 할까? 안녕하세요!저번에 Task에 대한 글에서, detached는 따로 자세히 다뤄보자고 했었죠?이번 글에서는 detached에 대해 깊이 파헤쳐 보려고 합니다! 얼마 전에 앨런 Swift Concurrency for Swift 6 (Part-1) 강의를 듣다가, 이런 설명을 들었어요. " 내부Task에서 부모Task와 다른 우선순위를 적용하려면 detached를 사용해야 한다." "어? 그럼 내부 Task에서는 우선순위를 따로 설정하는건 적용이 안 되는 건가????" 하는 의문이 들었습니다.그래서 직접 실험해보았는데요! 아래처럼 내부 Task에도 우선순위를 설정하고 실행해보았어요.let task = Task(priority: .high) { print("부모.. [Concurrency] Task 톺아보기 안녕하세요!요즘 Concurrency 스터디를하고 있는데요! 스터디를하면서 공부한 내용을 시리즈로 정리해보려고 합니다 ㅎㅎ이 글은 Swift Concurrency를 공부하는 초급~중급 iOS 개발자를 대상으로 작성되었습니다.Task의 개념부터 실전 활용까지 차근차근 정리해두었으니, Concurrency를 익히고 싶은 분들께 도움 되었으면 좋겠습니다☺️들어가며..앱을 개발하다 보면 네트워크 요청, 데이터 처리, 파일 입출력 등 시간이 오래 걸리는 작업을 수행해야 할 때가 있습니다.이러한 작업을 UI를 담당하는 메인 스레드에서 동기적으로 실행하면, 앱이 멈추거나 사용자가 아무런 반응도 할 수 없는 상태가 될 수도 있습니다.그래서 지금까지는 GCD(Grand Central Dispatch)나 Operation.. 이전 1 2 3 4 ··· 23 다음