블로그
전체 6#카테고리
- 프론트엔드
- 웹 개발
- 백엔드
#태그
- 워밍업클럽
- 스터디
- 프론트엔드
- 1기
- 회고
- 발자국
- 인프런
- 인프런워밍업클럽
- 스터디0기
- 백엔드
- 워밍업스터디
- 0기
2024. 10. 03.
0
워밍업 클럽 2기(클린코드 & 테스트) 2번째 미션(DAY 4)
SOLDS - Single Responsibility Principle (SRP): 클래스는 하나의 책임만 가져야 하며, 변경이 필요할 때 그 책임 하나만 변경되어야 한다는 원칙이며, 해당 원칙을 고수 했을 때 클래스가 더 간단하고 유지보수가 용이해진다.O - Open/Closed Principle (OCP): 확장에 대해서는 열려 있어야 하지만, 수정에 대해서는 닫혀 있어야 한다는 원칙으로 기존 코드를 수정하지 않고도 새로운 기능을 추가할 수 있어야 한다.L - Liskov Substitution Principle (LSP): 자식 클래스는 부모 클래스의 기능을 대체할 수 있어야 한다는 원칙으로 자식 클래스가 부모 클래스를 대체해도 프로그램의 동작에는 문제가 없어야 한다.I - Interface Segregation Principle (ISP): 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다는 원칙으로 하나의 인터페이스 보단 여러개의 구체적인 인터페이스로 나눠 사용하는게 더 바람직 하다.D - Dependency Inversion Principle (DIP): 고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 둘 다 추상화에 의존해야 한다는 원칙으로 추상은 구현체에 의존해서는 안 되고, 구현체가 추상에 의존해야 한다.리펙터링public boolean validateOrder(Order order) { if (order.getItems().size() == 0) { log.info("주문 항목이 없습니다."); return false; } else { if (order.getTotalPrice() > 0) { if (!order.hasCustomerInfo()) { log.info("사용자 정보가 없습니다."); return false; } else { return true; } } else if (!(order.getTotalPrice() > 0)) { log.info("올바르지 않은 총 가격입니다."); return false; } } return true; }해당 코드를 리펙터링 해보자.public class OrderValidator { private static final Logger log = LoggerFactory.getLogger(OrderValidator.class); public boolean validate(Order order) { return hasItems(order) && hasValidTotalPrice(order) && hasCustomerInfo(order); } private boolean hasItems(Order order) { if (order.getItems().isEmpty()) { log.info("주문 항목이 없습니다."); return false; } return true; } private boolean hasValidTotalPrice(Order order) { if (order.getTotalPrice()
2024. 05. 05.
0
[인프런 워밍업 스터디 클럽 1기_FE] 1주차 회고록 정리
0기에 백엔드 스터디에 이어 1기 프론트엔드 스터디를 신청하고, 참여하였다.신청 이유신청하게된 가장 큰 이유는 자바스크립트 랑 JQuery 를 조금씩 사용했었는데, 사실 자바스크립트 를 제대로 공부했던 적이 없고, 이직하는 곳에서는 백엔드와 프론트엔드가 명확하게 나뉘게 되어 이직하기전 프론트엔드 지식을 조금이라도 학습하면 협업을 할때 도움이 많이 될것 같아 신청하게 되었다.자바스크립트 미션아직 1단계 완료 후 2단계를 진행하고 있다. 생각외로 많이 어려워서 진행 속도가 많이 느리다. 리액트 부분으로 넘어가면 훨씬 어려워진다고 했는데 0기때 왜 프로트엔드에서 우수 러너가 적게 나왔는지 새삼 느끼고 있다. 1주차 느낀점하필 이직 시기와 겹치는 바람에(심지어 지역이동..) 거주지를 알아보고, 이직회사에서 사용하는 기술을 다시 한번 살펴보는 등 스터디외에도 할게 너무 많아 정신없이 보내고있다. 우선순위를 잘 정해서 2주차를 진행해야할것 같다.정리현재 서포터로도 참여하고 있을 정도로 애정이 정말 많이 가는 스터디다. 이런저런일로 많이 바쁘고 정신이 없지만 조금이라도 함께하는 러너분들에게 도움이 되기 위해 노력해야겠다.
프론트엔드
・
워밍업클럽
・
스터디
・
프론트엔드
・
1기
・
회고
・
발자국
2024. 03. 19.
2
[인프런 워밍업 스터디 클럽 0기_BE] 후기
3주간의 스터디가 끝이났다. 정말 많은 걸 배울 수 있었고, 새로운걸 경험해 볼 수 있었다. 1. 코치님0기 백엔트 코치님은 최태현 코치님이다. 이전 찍으셨던 몇개의 강의(사실 전부..ㅎㅎ) 를 통해 내적 친밀감이 쌓여있었는데스터디 코치님 이라는 이야기를 듣고 꼭 스터디에 참여하고 싶다는 생각이 들었다. 강의를 통해서도 정말 많은걸 알려주시려 하고, 질문도 매우 친절하게 답변해주셨었는데 스터디를 진행하면서도 코치님은 질문 뿐만 아니라특강을 통해서 정말 많은걸 알려주시려고 하는 모습이 정말 대단하다고 느껴졌다.👍 현업에서 일을 하시면서 늦은 시간까지 이어지는 질문에도 친절하게 답변해주시는 모습을 보면서 나도 저런 좋은 영향력을 주위에 끼칠수 있는 개발자가 되고 싶다는 생각이 들었다. 2. 코드리뷰스터디를 처음 시작할때 커리큘럼을 보고 미니 프로젝트를 진행할때 다른 분들과 함께 코드리뷰를 하며 진행하면 어떨까?라는 생각이 들었었다. 할까말까 고민을 정말 많이 했었는데 개인적으로도 코드 리뷰를 해보고 싶었고, 좀 더 이 스터디기간동안 많은걸 배우고 싶어 용기를 내어 함께 진행해 볼 인원을 구했었다. 정말 다행히도 5분의 스터디원 분들이 함께해보자고 하셨고, 결과적으로 너무 만족스러운 시간을 보낼 수 있었다. 내 코드를 다른 사람에게 보여준다는건 지금도 쑥쓰럽긴 하지만 그렇기 때문에 코드 한줄을 작성할때도 정말 많은 생각을 하면서 작성할 수 있었다. 그리고 그 고민했던 내용을 함께 나누면서 정말 많은걸 배울 수 있었다. 다시 한번 함께 미니프로젝트를 진행했던 백엔드 스터디원분들 에게 감사하다는 말을 전해고 싶다.🙇♂ 3. 인프런보통의 회사에서 하기 어려운 이런 좋은 영향력을 전파하고 만드는걸 할 수 있다는게 늘 놀랍다. 해커톤이나 개발자 컨퍼런스 후원 기업에 매우 자주 인프런이 있는걸 볼 수 있고, 직접 인프콘 이라는(한번도 가보지 못했다. 나는왜 운이 없는것인가..💧) 큰 컨퍼런스를 열기도 하고. 전반적으로 개발자 생태계에 정말 좋은영향력을 널리 퍼트리고 있는 모습을 보면 정말 대단한 기업이라는 생각이 든다. 생각은 누구나 할 수 있지만 이걸 실천할수 있다는게 참 놀랍다. 이번 스터디도 그렇고 앞으로 더 많은 좋은 영향력을 널리 퍼트리려고 다양한 시도를하고 있는 모습을 보고 있으면 언제가는 인프런에서 일을 꼭 해보고 싶다 라는 생각이 듣다.(자바 개발자 안필요 하신가요💧) 4. 0기앞으로 이 워밍업 클럽이 0기에서 멈추는것이 아니라 1기 2기 쭉쭉 더 많은 사람들에게 좋은 경험이 될 수 있도록커져갔으면 좋겠다. 다음에 더 좋은 스터디가 열린다면 주변에 적극 추천해주고, 나도 다시 한번 참여해봐야겠다. 5. 마무리좋은 기회를 만들어주신 인프런 관계자 분들에게 정말 감사드린다. 특히 스터디 운영에 대해 이런저런 공지와 궁금증을해결해주신 셰리 에게 감사의 인사를 전하고 싶다. 더 많은걸 알려주시려 했던 최태현코치님 그리고 함께 했던 모든 백엔드 스터디 원 분들에게도 다시 한번 감사하다는 인사를 전하고 싶다. 주저리주저리 말이 많아졌는데, 혹시라도 미래에 있을 1기 신청을 고민하며 이 글을 보고 있다면 당장 신청 하라고 적극 권해 주고 싶다.
웹 개발
・
인프런
・
인프런워밍업클럽
・
스터디0기
・
백엔드
2024. 03. 10.
0
[인프런 워밍업 스터디 클럽 0기_BE] 3주차 회고록 정리
3주차 회고벌써 스터디가 종료되었다. 배운것도 너무 많고, 배워야 할것도 너무 많지만 확실한건 3주전의 나와 비교해 배운게 많다는것다른 미션들도 재미있고, 많이 배웠지만 미니 프로젝트 미션은 정말 많은걸 배울 수 있었다.다른 5분의 스터디원분들과 서로 코드리뷰를 하며 미니프로젝트를 진행했는데, 코멘트 하나하나 너무 많은걸 배울 수 있었어서 하길 잘했다는 생각이 든다.3주차 미션day11 ~ 15미션다양한 요구사항이 있는 미니 프로젝트를 진행했다.난이도가 조금은 쉬운듯 해서, 고민을 최대한 많이 하면서 다양한 방법을 시도하며 프로젝트를 진행했다TDD 를 적용하고, 각 레이어간의 추상화와 좋은 설계 등등 코드를 한줄 작성할때도 최대한 의미있는 코드를 작성하려 노력했다.4단계까지 있는 미션을 모두 진행하지는 못했다. 생각외로 TDD 가 정말 어려웠다. TDD 로 개발을 한다고 작정을 하고 개발을 진행해도 중간중간 기존 개발 습관들이 나와서 어려움이 많았다. 그러다 보니 하루에 5시간 이상을 프로젝트에 매달렸는데 2단계 미션까지 밖에 진행하지 못했다.다만, 다음주 수료식 전 까지 미션을 진행하고 다른 동료분들과 코드 리뷰를 함께 하기로 해서 다행이다.스터디 회고이 스터디를 참여할지 고민하는 분들에게 만약 다음 기수 스터디가 열린다면 무조건 참여하라고 말해주고 싶다.쉬도때도 없이 많은 질문들을 빠르게 답변해주고 많은걸 알려주시려는 코치님과 성장하고자 많은걸 배우고 공유하려하는 스터디 원 분들 등등 좋았던게 너무 많다.또 우리가 함께 만들어가는 스터디라는 취지 답게 스터디 안에서도 다양한것들을 시도해 볼 수 있어 좋았다.다른분들과 일주일 넘게 코드리뷰를 하면서, 정말정말 많은걸 배울 수 있었다.앞으로도 이런 기회가 많이 생겨 더 많은걸 배울 수 있었으면 좋겠다.
백엔드
・
워밍업스터디
・
0기
・
백엔드
・
회고
・
발자국
2024. 03. 03.
0
[인프런 워밍업 스터디 클럽 0기_BE] 2주차 회고록 정리
2주차 회고시간이 엄청 빠르게 지나간다.하루에 최소 4시간씩 짬짬이 공부를하고 있는데, 강의보고 미션 해결하고 4시간이 부족할때가 많다.마침 TDD 스터디를 병행하고 있어, 미니프로젝트를 TDD 로 구현을 해봤는데 매우매우 어렵다.2주차 미션Day06강의19 ~ 22강스프링 컨테이너에 대해 학습했다.미션4일차 미션에서 작성한 코드를 Controller - Service - Repository 로 분리를 진행했다.분리를 진행하면서, 새로운 Repository 가 만들어졌는데, 어떤 Repository 를 빈으로 등록하여 사용할지 지정할 수 있는@Primary 어노테이션과 @Qualifier 어노테이션을 학습하고 적용시켜봤다.6일차 미션 정리Day07강의23 ~ 26강Spring Data JPA 활용 법에 대해 학습했다.미션6일차 과제에 JPA 를 적용시켜 보자.JDBC 를 활용하여, DB 에 저장하고 조회하는 작업을 JPA 를 적용시켜 작업하도록 변경하였는데 매우매우 편리했다.JPA 는 확실히 배워야하는게 매우 많지만, 사용하는데 있어서는 매우 편리한것 같다.사용이 편리하다고 깊게 공부하지않고 막 사용하다보면 문제가 팡팡 터질수 있기 때문에 JPA 관련해서는 꼭 깊게 공부해봐야겠다.7일차 미션 정리 Day08 ~ 10강의23 ~ 32강JPA 에 대해 좀 더 깊은 학습을 진행했다.미션드디어 미니프로젝트 미션에 들어갔다.1단계 미션을 수행하는데 생각보다 시간이 너무 많이 들어갔다. 원래 목표는 2단계 미션은 끝내려고 했는데 1단계 미션밖에 끝내지 못했다.구현 내용이 그리 어렵지 않아, TDD 를 활용하여 개발을 진행하고 있는데 기존에 개발하던 방식과는 너무 많은 점 이 달라 오래걸리는것 같다. TDD 는 진짜 생각보다 도 더 어렵다. 개발을 하다보면 나도모르게 기존 방식대로 개발을 하고 있다.미니프로젝트 1단계 미션 정리정리이번주 예상했던 만큼 진도가 나가지는 않았지만, 배우고 새로운걸 적용시켜 볼 수 있어 너무 좋았다.좀 더 집중하고, 계획된 만큼 프로젝트를 진행하는 습관을 만들어가야겠다.
백엔드
・
워밍업스터디
・
0기
・
백엔드
・
회고
・
발자국
2024. 02. 25.
0
[인프런 워밍업 스터디 클럽 0기_BE] 1주차 회고록 정리
신청이유어느덧 워밍업 스터디를 시작한지 일주일이 지났다.현업에서 이미 백엔드 개발자로 일하고 있는 사람이 워밍업 스터디 를 참여하는지 의문이 들 수도 있지만,충분히 참여할 가치가 있다고 생각했다. 나는 지방에 거주하며 좋은 개발자로 성장하기 위해여러 고민들이 많았는데, 이번 기회를 통해 함께 성장할 좋은 동료도 만날 수 있을거란 생각도 했고,내 수준이 어느정도에 있는지 궁금하기도 하여, 신청하게 되었다.1주차 미션들day01강의1~5 강스프링 프로젝트를 생성하는 방법과 네트워크 기초에 대해 강의를 통해 학습할 수 있었다.이미 알고 있는 내용이였지만, 다시한번 복습할 수 있는 좋은 계기가 되었다.미션어노테이션 기술의 등장과 커스텀 어노테이션을 어떻게 만들어 사용해야 하는지 미션을 통해 학습할 수 있었다.평소 별 생각 없이 사용하던 기술에 대해 등장 배경과 원리를 좀 더 깊게 공부 할 수 있는 기회가 되어 많은 도움이 되었다.1일차 미션 정리day02강의6~10강스프링을 사용하여, 기본적인 API 를 방법에 대해 학습하였고, 기본적인 유저 생성, 조회 미션API 요청을 통해 간단한 동작을 진행 한 후 응답값을 반환하는 미션을 통해 GET, POST API 를 만드는데 익숙해지고동작 원리에 대해 학습 할 수 있다. 평소 별 생각없이 스프링에서 사용하던 것들이 우리가 개발을 편리하게 할 수 있도록 많은 작업을 해준다는걸 알 수 있었다. 어떤 기술을 사용할때 내부적으로 동작하는 원리를 얼마나 깊게 학습해야하는지 늘 고민이 많았는데 가끔은 내가 사용하는 기술에 대해 딮다이브 해보는것도 좋은 경험이 될 수 있다는걸 몸소 느낄수 있었다.2일차 미션 정리Day03강의11~13강기초적인 데이터베이스 사용법에 학습하였다.미션Java8 에서 적용된 기술인 람다식에 대해 깊게 학습할 수 있는 미션이 주어졌다.왜 람다식이라는 기술이 자바에 적용되었는지 다영한 키워드를 통해 학습 할 수 있었다. 자바는 오래된 언어이지만 이런 다양한 기술의 적용이 있기에 지금도 널리 쓰일 수 있는 언어가 된게 아닐까? 라는 생각이 들었다. 한편으로는 지금은 내가 자바를 사용하고 있지만, 어느순간 자바가 도태되어 사용하지 않는 언어가 되었을때 나는 어떻게 해야할까? 라는 생각을 하기도 했다.어느하나의 기술과 언어에 종속되지 않는 개발자가 되기 위해 항상 넓은 시야를 갖을 수 있도록 노력해야겠다.3일차 미션 정리Day04강의14~16강스프링에서 데이터베이스에 접근하여, 활용하는 방법에 대해 학습했다.평소 JPA 는 많이 사용해 봤지만 JDBC 기술은 많이 사용해보지 않았는데 사용해 볼 수 있어 좋았다.미션과일 정보를 데이터베이스에 저장하고, 조회, 수정하는 로직을 갖는 API 를 만들었다.NamedParameterJdbcTemplate 기술을 학습하고, 사용해 볼 수 있었다. 생각 이상으로 사용하는 로직이 복잡하여 JPA 가 정말 대단한 기술 이라는걸 다시한번 느낄 수 있었다. JPA 역시 내부적으로는 JDBC 를 사용하겠지만 사용하는 입장에서는 정말 편리하게 사용할 수 있게끔 만들어진 기술이라는게 참 놀랐다.(물론 사용하는 난이도에 비해 학습 난이도가 매우 높지만)4일차 미션 정리Day05강의17~18강API 를 레이어별로 나누어 작업하는 방식에 대해 학습했다. 이전 미션에서 부터 이미 레이어별로 로직을 나눠 개발을 진행했기 때문에 크게 어려운 점은 없었다.미션최대한 클린하지 않게 작성된 코드를 바탕으로 리펙토링을 진행하는 미션이 주어졌다.하나의 메서드안에 모든 로직이 작성되어 있고, if~else 분기문이 매우 많아 읽기 쉽지 않은 코드였는데, 역할에 따라 객체로 나누고 기능별로 메서드를 분리하는 작업을 바탕으로 리펙토링을 진행했다.미션 진행 후 스터디원분들의 코드도 많이 찾아봤는데, 각자의 방식과 근거로 리펙토링을 진행한 모습이 매우 인상적이였다.개발에는 정답이 없다는게 한편으로는 참 어렵고, 힘들때도 있지만 흥미로울때도 많다.5일차 미션 정리정리이번주 미션은 크게 어려움이 없이 진행할 수 있었다. 미션을 진행 하고 좀 더 깊게 공부하는 방식으로 진행하였는데 어떤 기술을 깊게 공부한다는건 쉽지 않은것 같다.하나를 학습 할때도 좀 더 깊고, 정확하게 학습할 수 있도록 노력해야겠다. 이것저것 공부할께 많다고 부랴부랴 공부하는 습관을 고쳐야겠다.
백엔드
・
워밍업스터디
・
0기
・
스터디
・
회고
・
발자국