-
[WWDC 20] Embrace Swift Type InferenceiOS/👨🏻💻 WWDC 와 테크세미나 2022. 5. 23. 01:01
안녕하세요 🥷🏻 이번 시간에는 WWDC 20: Embrace Swift Type Inference 영상을 요약해보았습니다. 그럼 시작해볼게요! 영상의 구성 - Leveraging type inference - How type inference works in compiler - Using Swift and Xcode to fix compiler errors Leveraging type inference 타입 추론을 사용하면 중복되거나 덜 중요한 정보(verbose, incidental) 를 코드에 담지 않을 수 있게 됩니다. 따라서 코드가 깔끔해지고, 생산성이 증가합니다. let text = "" 위의 타입 추론 예시는 아주 간단합니다. "" 라는 String literal 을 통해 컴파일러는 text ..
-
[WWDC 21] ARC in Swift: Basics and beyondiOS/👨🏻💻 WWDC 와 테크세미나 2022. 5. 15. 17:35
요약 👀 ARC 는 오브젝트(인스턴스)의 life time이 끝날 때 deallocate 해준다. 그렇다면 ARC 는 오브젝트의 life time 이 끝난지 어떻게 알수 있는 것일까? Referecne count 를 추적한다. ARC 최적화에 의하여, observed obejct life time 과 guaranteed mininum object life time 이 다를 수 있다. Observed object life time 은 미래에 스위프트 컴파일러 구현에 따라 변동 될 수 있으니, 이것에 의존하는 코드는 잠재적 버그를 포함한 것이므로 가능한 수정해야한다. 키워드 중심 정리 💎 object life time 스위프트에서 object life time 은 사용 기반 ( use-based ) 이다. ..
-
[CS] 유니코드(Unicode)와 UTF-8 (feat. 토스페이스)General/🟢 General 2022. 4. 5. 23:48
자고로 개발자는 유니코드에 대해서 모르면 안된다~ 스폴스키 아저씨의 말에 충격을 받고, 부랴부랴 정리해보았다. 생각해보니 프로그래머로서 유니코드에 대해 많이 접했지만 제대로 개념을 가지고 있지 않고 넘어갔다는 사실에 조금 부끄러웠다😳 유니코드는 중요하지만 개념은 그렇게 어렵지 않았다. 그럼 시작해보자! 문자열 인코딩에 대해 정리한 이전 글을 보면 더 이해가 쉬울수 있다. 이전 글도 조엘 온 소프트웨어와 위키를 참고해 작성하였다. 유니코드 전세계 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다. 다국어 환경에서 서로 호환이 되지 않던 기존의 문자열 인코딩들의 문제를 해결하였다. 따라서 유니코드는 컴퓨터 소프트웨어의 국제화(I18N) 와 지역화(L10N) 에 널리 사용되었다. ..
-
[Git] Cherry Pick 사용하기General/🟢 General 2022. 2. 20. 12:25
체리피킹은 어떤 회사의 제품이나 서비스 가운데 비용 대비 효율이 뛰어나거나 인기 있는 특정 요소만을 골라 합리적으로 소비하려는 현상을 가리키는 경제 용어이다. 체리피킹에 대해서 알고 계신가요? 나에게 이득이되는 점만 쏙 사용하고 나머지는 버리는 전략인데요. 예를 들어 스포티파이 무료체험 3개월만 사용하고 실제 유료 결제 구독은 하지 않는 거죠 😆 그런데 우리 프로젝트의 버전관리에서도 이런 전략을 취할 수 있습니다! Cherry Pick : 다른 브랜치에서 하나의 커밋만 가져와서 반영시키기 보통 다른 브랜치의 커밋을 내 브랜치에 반영하는 방법은 병합이나 리베이스 입니다. 병합은 브랜치가 분기된 시점부터의 모든 커밋을 내 브랜치에 반영하게 됩니다. 하지만 다른 브랜치가 아직 미완성 상태여서 모든 커밋을 가져..
-
[Design Patterns] 옵저버 패턴이란?General/🟢 General 2022. 2. 18. 00:01
키워드 : 옵저버, 구독, 이벤트, 알림, 폴링 옵저버는 Subscriber, Listener 등으로도 불립니다. 옵저버는 이벤트가 발생하면 수행할 동작을 정의해놓고 옵저버블을 감시, 구독합니다. 옵저버블은 자신을 구독하려는 옵저버를 등록하고 (register) , 이벤트가 발생했을때 등록된 옵저버들에게 알려줍니다.(notify) 위와 같은 방식으로 옵저버는 이벤트에 바로 반응할 수 있습니다. 폴링이라는 개념과 비교하여 이해해볼까요? 폴링은 옵저버블이 옵저버에게 알려주는 대신, 옵저버가 직접 이벤트가 발생하는지 주기적으로 감시하는 방법을 사용합니다. ( for , while 등을 떠올리면 됨 ) 하지만 주기가 아닐때 발생한 이벤트를 알지 못하고, 발생하지 않을 때도 자원을 점유하고 있기 때문에 오버헤드가..
-
[SOLID] 의존관계 역전 원칙이란?General/🟢 General 2022. 2. 17. 23:46
Dependency inversion principle 고수준의 모듈이 저수준의 모듈에 직접 의존하지 않고, 인터페이스에 의존한다. 저수준의 모듈도 이 인터페이스를 의존한다. 저수준의 입장에서 의존 받는 입장에서 의존 하는 입장으로 관계가 역전된다. 처음보면 이해가 잘 가지 않습니다. 아래 설명을 한번 볼까요? High Level Module 과 Low Level Module 보통 더 많은 정보를 가지고 있으면 하이레벨 ( 동물원 ) 상대적으로 적은 정보를 가지고 있으면 로우레벨이라고 설명합니다. (동물들) 정리하자면 동물원은 펭귄, 사자, 코끼리에 의존하고 있습니다. 이것이 보통은 자연스러운 관계입니다. 하지만 ... 프로그래밍 세계에서는... 양이나 소, 토끼 등 동물들이 계속 추가되면 동물원은 더 ..
-
[Git] Rebase 사용하기General/🟢 General 2022. 2. 13. 14:57
안녕하세요🐶 이번 시간에는 개념은 알았지만 실제 적용은 많이 해보지 않았던 rebase 에 대해 정리해보았습니다. 이제부터라도 깃이 제공하는 다양한 기능들을 제대로 사용해보려구요. 리베이스는 어려운 개념이 아닙니다. 그럼 시작할게요! 무엇을 하는 명령인가? 베이스 커밋을 갈아치기 한다. base 를 다시(re) 정한다. 목적 불필요한 병합 커밋을 줄여서 그래프를 깔끔하게 보이게 할 수 있다. 활용할 수 있는 상황 upstream 의 main 브랜치로 풀 리퀘스트를 보내려고 하는데, merge conflict 가 발생한다. 보통과 같은 상황이면 자신의 작업 브랜치로 main 을 머지해서 충돌을 해결한후, 다시 pr 을 보내면 된다. ( fast-forward merge 가 될 것 이다 ) 이렇게 하면 원래..
-
문자열 인코딩이란?General/🟢 General 2022. 2. 12. 10:55
위와 같이 웹 페이지가 알 수 없는 문자로 보이신 경험 있으신가요? 문자열 인코딩과 관련이 있는 문제입니다. 문자열 인코딩 문자열 인코딩이란, 사용자가 입력한 문자를 컴퓨터가 해석할 수 있는 신호로 변환하는 것입니다. 이 때, 신호로 변환하는 규칙이나 기준이 있어야할 것 입니다. 어제는 'a' 라는 문자를 0010 으로 저장하기로 했다가, 오늘은 0011 로 저장한다면 어제 저장해 놓은 글자는 오늘 알아볼 수 없게 될 것입니다. 이렇게 신호로 변환하는 규칙을 문자 집합 이라고 부릅니다. 가령 'a' 는 비트열 16진수 61로 저장하기로 정한다!!! 라는 규칙과 같은 것입니다. 저장된 문서의 인코딩 규칙을 알고 있고, 해당 규칙을 이해하고 있는 컴퓨터는 16진수 61을 만나면 'a' 라는 문자를 화면에 잘..
-
[책샀어요] 실용주의 프로그래머 절판과 자본주의의 쓴맛일상/💰 내돈내산 2022. 2. 7. 22:45
최근 조엘 온 소프트웨어를 다 읽고, 새로 읽을 책을 고르던 중 눈에 자주 밟힌 책이 있었습니다. 실용주의 프로그래머 라는 책인데요. 많은 유튜버와 블로그에서 추천해주는 책이어서 이번 기회에 읽어보려고 합니다. 문제는 2021년 12월 31일 절판되었다는 것인데요. 알라딘, yes24, 교보문고 눈을 씻고 찾아봐도 새상품을 파는 곳은 없었습니다. 판권 종료로 더이상 생산할 계획이 없다는 메시지도 붙여놓았더라구요... 그래서 중고를 구입하려고하니 가격이 당근에도 중고나라에도 없었답니다 :) 동네 도서관이나 대학 도서관에서 빌릴 수도 있겠지만, 코시국이기도하고 남의 책을 읽는 것을 썩 좋아하지 않아서 어쩔 수 없이 알라딘 중고매장에서 그나마 저렴한 가격으로 구입했습니다. 아직 학생이었다면 절대 못샀을 것 같..