가독성 좋게 정규식 설계하기
·
Programing Langauge/swift
👋 들어가기 전즐겨보는 유튜버 이도원님 영상 중 개네마리 1주년 영상이 있다.1주년 영상 답게 영상 시간도 길고, 재밌는 부분을 많은 타임링크 형태로 남겨준다. 개발자면, 해당 타임링크는 일정 정규식으로 충분히 잡을 수 있다. 하지만 정규식 작성이 항상 어려웠던 이유는 바로 가독성이 너무 떨어진다는 점.. 하지만 이번에 좋은 방법을 찾았다. 그 방법을 남겨보려고한다.🏁 학습할 내용타임링크 조건 verbose 모드 적용 verbose란정규식에서 verbose적용 후결과자주 쓸만한 정규식 패턴 모음⏰ 타임링크 조건xxxx:xx:xx 형식시간은 최대 4자리 (그 전에 숫자들 있으면 안됨)분은 0 ~ 59분까지, 한 자릿수일 때 앞에 0은 optional초 역시 분과 같음, 0 ~59초, 한자릿수일 때 앞..
매크로
·
Programing Langauge/swift
👋 들어가기 전슬슬 새로운 개념들을 조금 씩 배워나가야할 것 같다.."매크로" 해야지 해야지 했는데 선 뜻 시작하기 힘들었던 개념인 것 같다. 이번 포스팅 역시 한번에 작성이 끝나지 않을 수 있을 것 같은 예감이 든다. 시작이 반이니 일단 시작해보자.🏁 학습할 내용Overview매크로 의미등장 계기매크로의 종류동작 방식Freestanding MacroAttached Macro매크로 만들기SwiftSyntaxSwiftSyntaxMacrosSwiftSyntaxBuilder구현부 파헤치기선언부 파헤치기📝 Overview✅ 매크로 의미컴퓨터 과학에서 매크로 의미는 다음과 같다.입력 시퀀스가 출력 시퀀스로 매핑되는 규칙 또는 패턴을 의미 이 때 사용되는 매핑 패턴(과정)을 Source code에서 확장하는 ..
Mirror
·
Programing Langauge/swift
✊Mirror란한번도 쓰지 않았지만 항상 프로젝트를 하면 팀원이 쓰던 녀석.. 나도 한번 써보자.. 공식문서를 살펴보자.A representation of the substructure and display style of an instance of any type. 모든 타입의 인스턴스의 하위 구조 및 display stlye를 나타내는 리플렉션 API라고 한다. 모든 타입이라고하는데 진짜 그런 지 살펴보자. Mirror.DisplayStyle을 보면 swift의 거의 모든 타입을 커버하고 있다. ☝️주요 기능주요 기능은 다음과 같다.프로퍼티와 값 탐색타입 확인디버깅 및 로깅타입 정보 추출1️⃣ 프로퍼티와 값 탐색chidren을 통해 인스턴스의 모든 프로퍼티와 값을 탐색할 수 있다.struct Pers..
@inlinable
·
Programing Langauge/swift
👋 들어가기 전이번시간은 @inlinable이다. 생각보다 조금 어려운 개념이 있으니 차근차근 살펴보자.✊없다면 ?우리는 보통 메서드를 호출할 때 스택에 현재 상태를 보내고 상태를 저장하고다시 돌아오는 등 다양한 오버헤드가 존재한다.☝️@inlinable역할말 그대로 위에서 설명한 오버헤드를 줄이기위해 호출하는 쪽에메서드 내용 전체를 삽입한다.사용 영역함수메서드계산 프로퍼티subscript생성자장점오버헤드를 낮춰 컴파일러 최적화 가능모듈 경계를 넘어 사용 가능단점구현 내용이 공개됨코드 크기가 증가재귀 함수에서는 오히려 비효율적internal, public만 사용 가능✌️@usableFromInline전체적인 느낌은 위에 @inlineable과 동일하다 차이점만 간단하게 명시한다.동일한 모듈 내에 있는 ..
@frozen
·
Programing Langauge/swift
👋 들어가기 전이제는 더 이상 미룰 없다...swift에 사용되는 attribute를 슬슬 공부할 때가 온 것 같다. 여러가지 옵션과 최적화를 위해 사용하는 attribute를 frozen을 시작으로 차근 차근 알아보자.✊@frozen이 없을 때frozen을 설명하는 가장 대표적인 키워드는 enum이다. 왜냐하면 변화에 굉장히 민감히 반응한다. 다음과 같이 enum이 있을 때enum FontSize { case light, regular, medium} switch를 열어 모두 구현해도 다음과 같은 에러가 발생할 때가 있다.⚠️ Switch must be exhaustive .... 발생하는 원인은 추후 추가되거나 수정될 경우를 대비하라는 경고이다. 이 때 기본적으로 우리가 알고 있는 선택지는 `d..
lazy
·
Programing Langauge/swift
👋 들어가기 전뜬금없이 왠 lazy?  lazy 키워드를 많이 썼지만 장점만 바라보고 썼지어떤 단점과 위험성이 있는 지 생각해본적이 없었던 것 같다. 이번에 한번 정리해보자.✊Lazy란정의lazy는 지연 저장 프로퍼티라 불리며 처음 사용되기 전까지 메모리에 올라가지 않는다.왜 var만 가능할까?let은 선언과 동시에 값이 있어야한다. 하지만 lazy는 객체 선언 당시에 값이 없고 객체가 할당되고 그 값이 사용될 때 초기화되기 때문에정의에서 애초에 위배된다. 장단점✅ 장점최초 사용전까지 메모리에 오르지 않기 때문에 초기화 시점에 최적화가 가능하다.자주 사용하지 않는 객체일 경우 자원을 효율적으로 쓸 수 있다.❌ 단점치명적인 단점은 Thread Safe하지 않다.동기화 작업을 하기위해서는 별도의 작업이 더..