전체 글

전체 글

    Mac에서 jEnv 사용하기

    자바 백엔드 프로젝트에 참여해보고 싶어서 하나도 모르지만 일단 시작해봅니다. 자바도 여러 버전이 있을텐데 버전 스위칭을 간편하게 하고 관리할 수 있는 툴이 있습니다. jEnv인데 한번 설치해보겠습니다. www.jenv.be/ jEnv - Manage your Java environment jEnv is a command line tool to help you forget how to set the JAVA_HOME environment variable www.jenv.be jenv 사용법은 madplay.github.io/post/manage-java-version-using-jenv 을 참고했습니다. Homebrew를 먼저 설치해야 아래 명령어를 실행할 수 있습니다. user@MacBook-Pro ~ ..

    [디자인패턴] Template Method 패턴

    안녕하세요 코찐 입니다. 오늘은 템플릿 메소드 패턴에 대해 공부해보겠습니다. 개념 상위 클래스에서 처리의 뼈대를 결정하고, 하위 클래스에서 그 구체적인 내용을 결정하는 디자인 패턴을 템플릿 메소드 패턴이라고 부릅니다. - Java 언어로 배우는 디자인 패턴 입문 p.71 반복되는 절차로 수행하는 작업을 추상화해둡니다. 각 절차에 들어갈 세부 내용은 구현체에서 결정하는 방식입니다. iOS 안에서의 예시 iOS 앱 개발자들은 이미 익숙한 패턴일텐데요. 저희가 흔히 사용하는 UIViewController에도 템플릿 메소드가 있습니다. 약속된 LifeCycle에 따라서 각 함수가 호출됩니다. 틀을 미리 제공하기 때문에 클라이언트는 실행되기 원하는 코드를 틀에 넣어주면 됩니다. 틀을 가지고 동작하는 내부 원리는 ..

    [디자인패턴] Iterator 패턴을 Swift로 구현해보기

    요즘 회사 스터디를 'Java 언어로 배우는 디자인 패턴 입문' 책으로 진행하고 있습니다. 예전에 읽었던 책이지만 스위프트로 다시 구현해보면 더 체득할 수 있는 것이 많겠다는 생각이 들었습니다. (예전에 썼던 글 홍보) [서평] 코드로 작성된 드라마, 디자인패턴 JAVA 언어로 배우는 디자인 패턴 입문을 읽고서 medium.com Iterator는 for i in array 에서 i를 추상화해서 사용하는 패턴입니다. 클라이언트는 컬렉션 요소를 직접 다루지 않고 데이터를 순회할 수 있습니다. 책의 예제 구현해보기 그럼 책의 예제를 함께 구현해보겠습니다. 결과물 코드는 github.com/cozzin/DesignPattern/tree/main/DesignPattern/Iterator 에 있습니다. cozzi..

    [Refactoring] Chapter 7: 캡슐화

    모듈을 분리하는 가장 중요한 기준은 아마도 시스템에서 각 모듈이 자신을 제외한 다른 부분에 드러내지 않아야 할 비밀을 얼마나 잘 숨기느냐에 있을 것이다. p.235 클래스는 본래 정보를 숨기는 용도로 설계되었다. p.235 7.1 레코드 캡슐화하기 저장하는 용도로는 레코드보다 객체를 선호하는 편이다. p.236 객체를 사용하면 어떻게 저장했는지를 숨긴 채 세 가지 값을 각각의 메서드로 제공할 수 있다. 사용자는 무엇이 저장된 값이고 무엇이 계산된 값인지 알 필요가 없다. p.237 덩치 큰 데이터 구조를 다룰수록 쓰기 부분에 집중한다. p.243 setter 부분에서 데이터의 변화가 일어나기 때문에 가변 데이터라면 쓰기 부분에 집중해야 한다. 데이터 구조의 읽기 전용 프락시를 반환하는 방법도 있다. 클라..

    [SLASH21] Day 1. Session: 테스트 커버리지 100%

    toss.im/slash-21/sessions/1-6 SLASH 21 toss.im 관심있는 주제라서 듣게 되었습니다. 테스트 커버리지를 지표로 쓰는것은 안좋다고 막연히 듣기만 헀었는데 클린 코더 책에서는 저런 말이 있다고 하네요. 저것도 읽어봐야겠습니다. 그러면 충분히 시도해보지 않았기 때문에 테스트 커버리지를 보는 것이 의미가 없는 것일까? 하는 생각이 들었고 iOS 환경에서는 뷰 로직을 검증하는 것을 필요없다는 주의였기 때문에 의구심이 들었습니다. 해당 세션 준비해주신 분은 테스트 커버리지 100%를 달성하고 그것을 꾸준히 유지해오고 있기 때문에 장단점과 노하우가 궁금해졌습니다. 커버리지가 낮으면 배포되지 않도록 설정했기 때문에 계속 유지됨 높은 테스트 커버리지의 이점 - 자신있게 누를 수 있는 배..

    커스텀 UIInputView height에 SafeArea 반영하기

    안녕하세요! 오늘은 커스텀 UIInputView를 다루다가 SafeArea bottom inset을 높이에 반영하는게 잘 되지 않아서 이슈를 파헤쳐 봤습니다. 🐞 버그가 있는 코드 버그가 있는 코드 부분은 복기를 위해서 남겨둡니다. 바쁘신 분들은 무시하셔도 좋습니다. 기존에 작업해둔 코드에서는 init 시점에 UIInputView를 사용하는 UIViewController를 주입받았습니다. init(viewController: UIViewController) { self.viewController = viewController } 그리고 나서 intrinsicContentSize를 계산해줬습니다. 기존에 주입 받았던 viewController를 활용해서 safeAreaInsets.bottom을 가져옵니다...

    [캐치#개발자​ 커리어 콘] 토크콘서트#첫번째​ 성장 “개발자의 역량 키우기”

    엔지니어로서 성장을 이끌어준 순간들 첫 번째 순간 "스터디" 이직 후 업무에 조금씩 익숙해지고 새로운 것들을 해야 하는 순간에 도저히 해내지 못하고 있었음 성장이 멈췄음을 느끼게 된 순간들 무엇인가 돌파구를 찾기 위해 시작한 '커널 스터디' 업무 지식들이 연결되기 시작 기술을 용도에 맞게 활용하기 위해서는 내부 구조에 대한 이해가 필요 두번째 순간 "글쓰기" 브런치에 글쓰기 -> 페이스북에 꾸준히 공유 집필 제안 책을 쓰는 과정은 너무 힘들지만 그 열매는 달다! 글을 쓰면서 생각이 정리되고 이를 통해 성장할 수 있다 더 열심히 글쓰기를 해야겠다는 생각이 들었습니다...! 세 번째 순간 "컴포트 존" 바닷가재가 성장하는 방법 껍질을 버리고 새로운 껍질을 만들어 낸다 업무의 영역을 넓혀 보거나 ex) 기존 ..

    [캐치 개발자 커리어 콘] 실리콘 밸리 출신이 말하는, 나를 위해 일하는 개발자

    요즘 개발자 성장에 관련된 세미나가 자주 열리는 것 같아요. 집에서 다양한 세미나를 접할 수 있다는게 정말 좋은 기회라고 생각합니다. www.catch.co.kr/CatchCafe/ProgramView/1028 성장 MEET UPㅣ캐치 카페에서 만나는 취업프로그램 신청하러 가기 www.catch.co.kr 한국어 + 자연어처리 가능한 개발자를 트위터에서 찾고 있었는데 링크드인으로 연락받아서 면접보고 트위터에 가게됨 에어비앤비에서 25% 인원 감축하면서 다른 일을 찾게 됨 때마침 옥소폴리틱스 사이드 프로젝트를 해둔게 있었는데(정치를 안싸우고 토론할 수 있지 않을까? 하는 생각으로 만든 플랫폼) 잘되고 있어서 일을 따로 찾을 필요가 없게됨 따로 일 시키는게 없는데 서비스가 더 잘되는 트위터, 에어비앤비 같은..