전체 글

전체 글

    [Mastering SwiftUI] 단축키 정리

    안녕하세요 개발자 홍성호 입니다. SwiftUI 기초를 배우기 시작했습니다. 일단 전체적으로 훑는게 좋을 것 같아서 강의를 수강하겠습니다. 깔금하게 잘 설명해주시는데 나중에 영상을 만들 때 참고해야겠습니다. https://www.youtube.com/watch?v=rv3iJSGlRp0 용어 정리 Modifier: .foregorundColor 같은 것들 단축키 정리 맨날 까먹어서 나중에 다시 보려고 정리해둡니다ㅋㅋ Preview 에서 cmd 를 누른채로 View를 터치: Action Menu가 나옴 shift + cmd + L: show library Cmd 누른 채로 View 클릭: Action Menu가 뜸 View에 커서를 둔 채로 shift + cmd + A: Action Menu가 뜸 optio..

    [엘레강트 오브젝트] '생성자에 코드를 넣지 마세요' 적용해보기

    https://youtu.be/PLJR-Akvjcw 안녕하세요 개발자 홍성호 입니다. 엘레강트 오브젝트 책을 얼마전 부터 조금씩 보고 있는데 흥미로운 주제를 만나게 되었습니다. https://book.naver.com/bookdb/book_detail.nhn?bid=17651286 엘레강트 오브젝트 『엘레강트 오브젝트』 는 〈-ER로 끝나는 이름을 사용하지 마세요〉, 〈생성자 하나를 주 생성자로 만드세요〉, 〈생성자에 코드를 넣지 마세요〉, 〈가능하면 적게 캡슐화하세요〉, 〈최소한 book.naver.com (이책입니다...! 쬐끔밖에 읽지 않았지만 토론 주제가 많아서 완전 꿀잼입니다ㅋㅋ) '1.3 챕터 생성자에 코드를 넣지 마세요' 인데요. 생성자 내부에서 행위를 하지말고 메소드를 통해서 직접 실행할 ..

    [디자인패턴] Builder 패턴

    안녕하세요 개발자 홍성호 입니다. 요즘 Java 언어로 배우는 디자인 패턴 입문 책으로 사내 스터디에 참여하고 있는데요. 이번주는 빌더 패턴 차례라서 공부를 하게 되었습니다. 예전부터 빌더 패턴은 자주 접하게 되었던것 같아요. 객체 생성시에 지정해줘야하는 요소들이 다양할 때 빌더 패턴을 이용하고 있습니다. 빌더 패턴의 원래 의도가 맞는건지 점검해보고 싶었어요. 이팩티브 자바의 빌더 패턴 조금 찾아보니 이팩티브 자바의 빌더 패턴과, GoF의 빌더 패턴이 차이가 있었습니다. 아래의 글을 보면 자세히 알 수 있는데요. 이팩티브 자바의 빌더패턴은 생성자에 매개변수가 많을 때 사용합니다. https://johngrib.github.io/wiki/builder-pattern/ 이 패턴도 실무에서 많이 사용되고 있습..

    [Refactoring] Chapter 10: 조건부 로직 간소화

    조건문이 복잡해지는 경우 다루기가 굉장히 까다로워지는데 이것을 해결하기 위한 다양한 방법들을 제안합니다. 10.3 중첩 조건문을 보호 구문으로 바꾸기 함수 중간에 guard 로 로직을 중단하는 게 의도를 더 드러낼 수 있는 경우가 있습니다. Swift에서는 명시적으로 guard라는 구문이 있어서 편리하게 사용할 수 있는데, 언어 레벨에서 구문을 지원하기 때문에 많은 개발자들이 더 활발하게 사용하게 되는 것 같습니다. 중첩 조건문을 보호 구문으로 바꾸기 리팩터링의 핵심은 의도를 부각하는데 있다. 나는 if-then-else 구조를 사용할 때 if절과 else절에 똑같은 무게를 두어, 코드를 읽는 이에게 양 갈래가 똑같이 중요하다는 뜻을 전달한다. 이와 달리, 보호 구문은 "이건 이 함수의 핵심이 아니다. ..

    [Refactoring] Chapter 9: 테이터 조직화

    이번에는 데이터 구조에 집중한 리팩토링을 다룹니다. 9.2 필드 이름 바꾸기 데이터 구조는 무슨 일이 벌어지는지를 이해하는 열쇠다. p.334 데이터 구조는 단순히 값을 담아두는 공간이 아니라 프로그램을 더 잘 이해할 수 있도록 유도하는 역할을 해줍니다. 데이터 구조를 잘 선택하는 것만으로도 프로그램의 이해도를 높일 수 있다고 합니다. 알고리즘 문제를 풀다 보면 큐나 스택을 적절히 고르는 것만으로 문제가 쉽게 해결되는 것을 경험한 적이 있는데 실무에서도 동일하게 적용될 수 있을 것으로 기대됩니다. 데이터 구조가 중요한 만큼 반드시 깔끔하게 관리해야 한다. 다른 요소와 마찬가지로 개발을 진행할수록 데이터를 더 잘 이해하게 된다. 따라서 그 깊어진 이해를 프로그램에 반드시 반영해야 한다. p.334 앞선 챕..

    [Refactoring] Chapter 8: 기능이동

    https://youtu.be/blXUsTjVs58 안녕하세요! 오늘도 리팩토링 책 읽고 정리하는 시간을 가져보겠습니다. 이번 챕터는 기능 이동에 대한 내용입니다. 지금까지는 프로그램 요소를 생성 혹은 제거하거나 이름을 변경하는 리팩터링을 다뤘다. 여기에 더해 요소를 다른 컨텍스트(클래스나 모듈 등)로 옮기는 일 역시 리팩터링의 중요한 축이다. p.277 적절한 위치에 기능이 있는 것도 가독성을 증가시키고 이해를 잘 할 수 있도록 도와준다는 내용입니다. 좋은 소프트웨어 설계의 핵심은 모듈화가 얼마나 잘 되어 있느냐를 뜻하는 모듈성(modularity)이다. 모듈성이란 프로그램의 어딘가를 수정하려 할 때 해당 기능과 깊이 관련된 작은 부분만 이해해도 가능하게 해주는 능력이다. p.278 모듈성이 중요하다는..

    MySQL Workbench 써보기

    백엔드의 세계는 너무 넓어서 별거 아닌것도 같은데 대단해보이는ㅋㅋ 오늘은 로컬 환경에 연결된 DB 열어보겠습니다. DB 커넥션 열어두고 MySQL Workbench로 가봅니다. 오른쪽에 플러스 버튼 클릭 하면 이런게 뜹니다. connection name이랑 username, password 입력!!! 와우 성공ㅠㅠㅜㅜ 연결된 DB가 뜹니다 들어가봤는데요. 뭘해야할지 1도 모르겠는 상황 예본이형이 넘겨준 쿼리로 일단 시도했지만 안됩니다ㅋㅋ 데이터베이스를 선택해야 한다고 하네요! show databases 하면 고를 수 있도록 뜨고 user database이름 해주면 그걸 사용하게 됩니다. 그러고나서 적당한 쿼리를 입력해주고 나면 결과로 아래에 Output에 엑셀마냥 데이터가 뜹니다. 그리 대단한걸 해보진 ..

    Gradle 간단히 살펴보기

    백엔드 사이드 프로젝트를 구경해볼 수 있었는데 gradle로 프로젝트 의존성을 설정하는걸 보고 이게 뭔지 대충은 알아야겠다 싶었습니다. 개발자가 구현에만 집중할 수 있도록 빌드 자동화를 해두는 툴이라고 합니다. Gradle은 Groovy 언어로 되어 있음 간결함이 장점 하나의 레포에 멀티 프로젝트 구성 가능 상속 받아서 사용 가능 플러그인 짱짱함: 정적분석기(checkstyle, pmd, findBugs, Sonar, Lint), 테스트(jacoco, cobertura, clover, sonarqube) 출처: medium.com/@goinhacker/%EC%9A%B4%EC%98%81-%EC%9E%90%EB%8F%99%ED%99%94-1-%EB%B9%8C%EB%93%9C-%EC%9E%90%EB%8F%99..