블로그 이전합니다. (Tistory -> Velog)
·
📝 Etc
안녕하세요.그동안 기술 블로그 플랫폼으로 Tistory를 사용해왔는데, 이번에 Velog로 블로그를 이전하게 되어 이렇게 글을 남깁니다.처음 블로그를 시작했을 때는 ‘일단 기록부터 해보자’는 생각으로 큰 고민 없이 Tistory를 선택했고, 앱으로 확인도 가능하고 통계도 볼 수 있어서 꽤 만족하며 사용했습니다. 다만 글을 쓰다보니, 내가 정말로 이해하고 경험한 내용을 정리하고 있는지, 아니면 좋아요나 조회수를 좀 더 의식해가는건 아닌지 스스로 돌아보게 되었습니다. 또 평소에 Notion에 Markdown 형식으로 정리를 많이 하다 보니, 글 작성 환경과 가독성 면에서 Velog가 더 잘 맞겠다는 판단이 들었고 이번에 Velog로 옮기게 되었습니다.앞으로는 다른 사람의 반응보다는 제가 공부하고 경험한 내..
CI/CD란 무엇일까?
·
📝 Etc
오늘은 CI/CD에 대해서 작성해보겠습니다. CI/CD란?CI/CD는 개발자라면 한 번쯤은 다들 들어봤을 만한 단어일 것입니다. CI/CD는 애플리케이션 개발 단계부터 배포 때까지의 모든 단계를 자동화를 통해서 좀 더 효율적이고 빠르게, 사용자에게 자주 배포할 수 있는 개념입니다. CI/CD의 개념만을 두고 보자면 자동화와 직접적으로 관련은 없을 수도 있습니다. 하지만 그럼에도 불구하고, '자동화'라는 키워드는 CI/CD라는 단어에 거의 항상 따라붙습니다. 또한 CI/CD는 DevOps 엔지니어의 핵심 업무라고 불리기도 합니다. CI (Continuous Integration)CI (Continuous Integration)는 "지속적인 통합"이라는 의미를 가지고 있습니다. 애플리케이션의 버그 수정이나..
커밋 메시지를 꾸며주는 깃모지(Gitmoji)를 사용해보자!
·
⚙️ Git
Gitmoji란?Gitmoji는 깃허브의 커밋 메시지를 작성할 때 feat, refactor, bug, chore 등의 텍스트를 이모지로 대체하는 방식으로, git + emoji를 합쳐 만든 단어입니다. 커밋 메시지 앞의 feat, bug 대신 이모지를 넣어주면 한눈에 보기도 쉽고, 커밋 로그를 시각적으로 구분하기에도 좋습니다. 개인적으로는 커밋 메시지를 볼 때 꾸며진 느낌이 좋아서 사용하고 있습니다. 🙂 Gitmoji를 사용하면 아래와 같은 형태로 커밋 메시지를 확인할 수 있습니다. 아래는 제가 개인 프로젝트를 진행할 때 사용한 예시입니다.이모지타입설명✨feat:새 기능 추가🐛fix:버그 수정♻️refactor:리팩토링 (동작 변경 없음)📝docs:문서, README 수정🎨style:코드 포맷..
장바구니 셀 동적 높이 조절 + 스크롤 문제 해결
·
🖋️ TIL Journal
1. 작은 화면에서 장바구니 화면 접근 불가능한 문제팀 프로젝트에서 장바구니 역할을 맡아 구현했는데, 초기 구조는 상품 목록 영역(ProductPageView)과 장바구니 영역(cartView)이 각각 개별 View로 분리된 구조였다. 큰 화면에서는 문제가 없었지만, 작은 화면(iPhone SE 등)에서는 상품 목록 영역이 커질수록 장바구니 영역 자체가 화면 아래로 밀려 거의 보이지 않는 문제가 발생했다.이로인해 장바구니 View 자체가 화면에 들어오지도 않아 접근할 수 없고, 결과적으로 작은 화면에서는 장바구니 + 하단 버튼이 사실상 가려지는 UX 문제가 생겼다. 2. 해결 방향: 화면 전체를 하나의 스크롤로 만들기이 문제를 해결하려면 특정 영역만 스크롤되는 구조가 아니라, 상품 목록 → 장바구니 →..
enumerated()가 제네릭에서 안 된다고..?
·
🖋️ TIL Journal
💡 왜 enumerated()가 제네릭에서는 안될까?이번 주 개인 과제를 구현하고 있는데 방금 전에도 잘 사용하던 enumerated()가 갑자기 동작하지 않았다. 뭐가 문제일까 하고 전에 쓴 코드와 비교하는 도중, Array나 Array 에서는 잘 되던 코드가 제네릭 타입 T로 바꾸자마자 작동하지 않는 것이었다. 🔍 이유는 제네릭 T에는 Sequence 제약이 없기 때문!평소에 그냥 사용만해서 잘 몰랐지만, enumerated()는 모든 타입에서 다 쓸 수 있는건 아니었다. Swift에서는 Sequence 프로토콜을 채택한 타입에서만 사용할 수 있다고 한다. 제네릭 T는 타입이 아직 확정되지 않아 Sequence임이 보장되지 않는다. 따라서 enumerated()를 사용하려면 “T는 Sequen..
실수로 날린 커밋, reflog로 되살리기
·
🖋️ TIL Journal
너무 졸렸다..이번주 내내 붙잡고 있던 개인 과제를 드디어 마무리했다. 아침 9시부터 밤 11시 넘게 작업해서 Lv6까지 완성했고, 이제는 push만 하면 되는 상태였다. 마지막 커밋도 다 마치고, 습관적으로 git push를 날렸다. 그런데… 응? PR(Pull Request) 버튼이 안 보이네..? 왜..? 알고 보니 같은 브랜치에서 동일한 주소로 보낸 PR이 아직 열려 있었던 것이다.. 알고보니 같은 브랜치에 동일한 주소로 PR이 열려있으면, commit이 그 PR에 합쳐진다. 무의식중에는 알고 썼는데, 피곤하고 자고싶은 마음에 머릿속으로 생각을 못하고 push를 질러버린 나였다.. 하지만 진짜 문제는 이게 아니였다는게 함정.. 😂😂 😱 나는 왜 reset을 쳤는가...PR이 이상하게 합쳐..
[오늘의 Swift 지식] Optional이란? 🤔
·
📌 Swift
📃 Optional이 뭘까?optional은 Type casting이나 nil value 체크 등에 있어서 중요한 역할을 합니다. optional은 '?' 키워드로 사용되며, "이 변수에는 값이 들어갈 수도 있고, 아닐 수도 있어"라는 뜻입니다. 우선 아래의 예시를 봅시다.var name: String = "Jack" // OKname = nil // Error ('nil' cannot be assigned to type 'String') 자, 우리는 name 변수에 'Jack'이라는 값을 할당해주고, 그 값에 다시 nil을 할당해주었습니다. 어라.. 근데 오류가 났네요..? 🤬 오류가 난 원인은 optional 변수가 아닌데 nil을 할당해주었기 때문입니다. 기본적..
[오늘의 Swift 지식] Optional Binding이란? 🧐
·
📌 Swift
이 글을 읽기 전에 Optional에 대해 자세히 모르시는 분은이 글을 먼저 읽고 오시는 것을 추천드립니다. 😊 옵셔널 바인딩(Optional Binding)이란?Optional Binding은 Optional 타입으로 선언된 변수에 값이 존재하는지 확인하고, 안전하게 값을 추출하는 기법입니다. 옵셔널 바인딩은 if let 또는 if var 구문을 사용하여 옵셔널 값을 안전하게 언래핑(Unwrapping) 할 수 있습니다. 옵셔널 값이 존재하면 if 구문 내에서 해당 값을 사용할 수 있으며, 값이 nil이면 if 구문이 실행되지 않고 건너뛰게 됩니다. 글만으로는 부족하니, 아래 코드를 보면서 보도록 할게요 😋if let name = optionalName { print(name) // optio..