본문 바로가기

분류 전체보기

(179)
[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..
혼자 자라면 풀, 함께 자라면 숲! - "함께 자라기"를 읽고 자! 자라고, 함께 성장하자! 요즘 글또 10기 활동을 하면서 성윤님 추천으로 '함께 자라기' 책을 알게 되었습니다! (개발자들 사이에서는 이미 유명한 책이라고 하더라구여.. 👀)평소에 함께 성장하는 과정을 좋아하는 저에게 '함께 자라기'라는 키워드는 정말 매력적으로 다가왔습니다사실, 글또라는 커뮤니티 자체가 '함께 자라기'의 좋은 예시가 아닐까 싶었고요.혼자만의 성장도 물론 중요하지만, 함께 배우고 서로에게 시너지를 주면서 성장하는 것만큼 이상적인 경험이 또 있을까요?저는 어떻게 하면 더 잘 함께 성장할 수 있을지 배울 수 있기를 기대하며 읽기 시작했습니다.책은 “자라기”, “함께”, “애자일” 이렇게 세 개의 챕터로 구성되어 있지만, 이번 글에서는 “자라기”와 “함께” 챕터를 중심으로 이야기를 풀어..
iOS 개발자를 위한 세션과 JWT의 차이점: 기억하는 자 vs. 증명하는 자 들어가며..안녕하세요! 요즘 서버 측 인증 방식이 궁금해서 공부해보았습니다.JWT와 세션(Session)은 많이 사용되는 인증 방식으로, 각각이 어떻게 작동하는지 그리고 iOS 개발과 어떻게 연결되는지 알아보겠습니다. 처음에는 단순히 어떤 방식이 더 좋은지 알고 싶었지만, 공부하면서 인증이 처리되는 흐름을 이해하는 것이 개발 과정에서 훨씬 더 중요하다는 것을 느꼈습니다.이 글에서는 JWT와 세션의 차이점을 정리하고, 각각의 특징을 같이 알아보아요 :)JWT(JSON Web Token)JSON 객체를 이용해 정보를 안전하게 표현하는 방식으로, 일반적으로 인증(Authentication)과 정보 교환을 목적으로 사용됩니다.특히, 무상태(Stateless) 방식으로 동작하기 때문에 서버가 클라이언트의 인증 상..