@frozen
·
Programing Langauge/swift
👋 들어가기 전이제는 더 이상 미룰 없다...swift에 사용되는 attribute를 슬슬 공부할 때가 온 것 같다. 여러가지 옵션과 최적화를 위해 사용하는 attribute를 frozen을 시작으로 차근 차근 알아보자.✊@frozen이 없을 때frozen을 설명하는 가장 대표적인 키워드는 enum이다. 왜냐하면 변화에 굉장히 민감히 반응한다. 다음과 같이 enum이 있을 때enum FontSize { case light, regular, medium} switch를 열어 모두 구현해도 다음과 같은 에러가 발생할 때가 있다.⚠️ Switch must be exhaustive .... 발생하는 원인은 추후 추가되거나 수정될 경우를 대비하라는 경고이다. 이 때 기본적으로 우리가 알고 있는 선택지는 `d..
실행파일 배포하기
·
Programing Langauge/python
👋 들어가기 전 파이썬을 통해 노가다 작업을 조금 편하게 할 수 있는 툴을 드디어 완성했다.여기에서 배운 경험은 다음과 같다.selenium을 통한 web crawlingtkinter을 통한 gui 작업dotenv를 통한 데이터 숨김gspread를 통한 sheet 연동 작업cloudinary을 통한 이미지 호스팅firebase와 google auth를 이용한 firebase remote config를 통한 버전 관리 생각보다 짧은 시간안에 많은 영역을 배웠다. 이번 포스팅은 마지막을 장식할 실행 파일 추출이다.열심히 만든 프로그램을 작업자분들께 배포하기위해 실행파일로 추출해보자.📦 관련 패키지 설치찾아보니 제일 유명한게 `pyinstaller`이 대표적이다.pip install pyinstaller?..
with
·
Programing Langauge/python
👋 들어가기 전현재 이미지 파일을 읽어 base 64로 변경하는 작업을 하고있는데파이썬에서 특별한 keyword를 찾아 정리해본다.with를 쓰지 않을 때 파일을 읽고 쓸때는 다음과 같이 작업을 해줘야했다.f = open('example.txt', 'r')sen = f.readline()f.close() 열었으면 닫아야한다.충분히 휴먼에러가 발생할 수 있는 부분이다. 또한 예외가 발생할경우 close 호출이 생략될 수도있다.⛑  with 사용사용 예시1. 파일 열기 (open())2. 데이터베이스 연결 (sqlite3.connect())3. 멀티스레드 락 (threading.Lock())4. 네트워크 연결 (socket) with를 사용하면 작업이 끝나면 알아서 close를 호출해준다.with open..
메서드 체이닝
·
Programing Langauge/python
👋 들어가기 전준비중이던 과정이 끝나고 새로운 사이드 프로젝트를 시작했다. 사이드 프로젝트를 시작하기 전에 먼저데이터를 관리할 수 있는자동화 환경을 만들어놔야 될 것같다. 오랜만에 파이썬을 통해 자동화를 만드며 학습하는 내용을 이번 포스팅부터 정리해보자.⛓️‍💥 체이닝swift에서는 자주 사용했지만 파이썬은 indent를 굉장히 중요시여겨 보통은 줄바꿈을 포함한체이닝을 써보지 않았다. 찾아보니 방법이 없는 것은 아니다.1. 백슬래쉬`\`를 쓴 이후 줄바꿈을하면 가독성이 좋게 체이닝을 진행할 수 있다. request = RequestBulder()\ .method(Method.get)\ .url("https://picsum.photos/200/300")\ .b..
lazy
·
Programing Langauge/swift
👋 들어가기 전뜬금없이 왠 lazy?  lazy 키워드를 많이 썼지만 장점만 바라보고 썼지어떤 단점과 위험성이 있는 지 생각해본적이 없었던 것 같다. 이번에 한번 정리해보자.✊Lazy란정의lazy는 지연 저장 프로퍼티라 불리며 처음 사용되기 전까지 메모리에 올라가지 않는다.왜 var만 가능할까?let은 선언과 동시에 값이 있어야한다. 하지만 lazy는 객체 선언 당시에 값이 없고 객체가 할당되고 그 값이 사용될 때 초기화되기 때문에정의에서 애초에 위배된다. 장단점✅ 장점최초 사용전까지 메모리에 오르지 않기 때문에 초기화 시점에 최적화가 가능하다.자주 사용하지 않는 객체일 경우 자원을 효율적으로 쓸 수 있다.❌ 단점치명적인 단점은 Thread Safe하지 않다.동기화 작업을 하기위해서는 별도의 작업이 더..
Dynamic Key decoding
·
Programing Langauge/swift
👋 들어가기 전또 다시 오랜만에 포스팅을 하게 됐다. 지금은 익명의 프로젝트에 급작스럽게 합류하여 앱 개발을 하던 중 신선한 경험을 하게되어그 경험을 적어보려한다.  이번 시간의 주제는 동적 키 형태를 디코딩 하는 방법을 간단하게 정리해보자.✊ 문제발생만약 서버에서 다음과 같은 형태로 데이터를 보낸다면 우리는 어떻게 처리해야할까 ??// Case1{ "data": { "a":100 }}// Case2{ "data": { "b": nil }}// Case3{ "data": { "c": -100 }} 어디가 불편할까 ??  data안의 key값이 계속 변하는 상황이다..☝️서버 개발자님 "해줘"서버 개발자님 key값 통일해주세요 ~~ 단 칼에 거절 백엔드 상황을 들어보니 충분히..