개발자되는중
블로그
전체 42024. 03. 18.
0
워밍업 클럽 0기 백엔드 후기
이번 스터디를 진행하면서 개발 실력이나 개인적인 깨닫음이나 얻어가는 것이 많았다.스터디 방식은 매일 정해진 분량의 강의를 듣고 주차별 날짜별로 정해진 과제를 하고 과제를 블로그에 올리는 방식으로 진행이 되었다. 그리고 최태현 멘토님께서 주차별로 한 번씩 강의나 과제와 관련된 라이브 강의를 진행했었다.공부한 내용들은 간단하게 아래 정리해보았다.자바의 역사와 개발환경JDK, JVM, JRE 용어가 각각 무슨 뜻인지 배우고, 자바8이 왜 중요한지 자바8에서 어떤 것이 업데이트 되었었는지 배웠었다.HTTPHTTP request와 HTTP reponse의 메시지가 어떻게 구성되어 있는 지에 대해 배웠다. HTTP 3-way hand shake에 대해 라이브 강의도 진행했었다.SpringBoot, Spring MVC로 REST API 설계도서관 대출반납 웹사이트를 만들면서 GET, POST, PUT 메서드를 만들어 보면서 REST API를 만들어 보았다. Spring MVC를 이용해서 REST API를 직접 만들었다.clean code, 레이어드 아키텍처, 람다식기존에 진행했던 유저 등록 메서드가 어떤 점이 문제인지를 확인하고 레이어드 아키텍처 방식을 적용해 코드를 분리하는 것을 배웠다. 그리고 초난감 주사위 프로그램을 클린코드로 수정해보는 것을 과제로 진행을 했었다.추가로 라이브 강의 때 엔티티와 도메인을 분리하는 헥사고날 아키텍처가 왜 등장했고 왜 쓰는지 간단한 개념을 설명했었다. JPA를 왜 쓰는가? 어떻게 사용하는가? JPA를 사용해야 될 때 주의해야 될 점은 무엇인가?기존에 JPA를 사용하지 하고 DB와 연결 했을 때 생기는 문제점들(패러다임 불일치 문제, 유지보수의 어려움 등)에 대해 알아보았다. JPA의 구현체인 하이버네이트가 어떤 구조로 만들어져있는지 배웠다. (JPA의 구현체가 하이버네이트 외에도 EclipseLink, OpenJPA 등이 존재한다.) 그리고 강의에서 기존에 작성한 코드를 JPA 하이버네이트를 사용해서 다시 코드를 수정했다.JPA의 영속성 개념, JPA를 사용해야 될 때 주의해야 될 점은 무엇인가?트랜잭션이 무엇인지 개념과 영속성 컨텍스트의 특징 4가지(Dirty Check, lazy loading, first-level cache, Write-Behind)에 대해 공부했다. 영속성 컨텍스트를 이용해서 기존 코드를 리펙토링하는 것을 강의에서 실습을 했었다.서버 빌드 및 배포, AWS AWS에서 스프링 부트 프로젝트를 빌드하고 배포를 실습했다. 최태현 멘토님이 AWS를 사용할 때 어떻게 사용하면 되는지 자잘한 팁? 같은 것도 알려주셨다.미니 프로젝트(최종 프로젝트)지금까지 배운 내용을 바탕으로 주어진 명세서를 보고 스프링부트로 REST API 서버를 만드는 것을 마지막 과제로 진행했다.+ 코드 리뷰 스터디(미니 프로젝트 코드 리뷰 스터디)워밍업 클럽 0기를 진행하면서 많은 참여자분들이 과제를 하고 강의를 듣는 것에서만 그치지 않고 강의나 과제와 관련된 스터디를 진행하였다. 나도 스터디에 참여해서 처음으로 작성한 미니프로젝트 코드에 대해 코드리뷰를 받아보고 다른 분들의 코드 리뷰도 작성하였다.+ 인프런 워밍업 스터디 0기 오프라인 수료식마지막 수료식은 오프라인에서 진행을 했었다. 수료식에서 개발 공부나 커리어 관련 QnA와 네트워킹을 진행을 했었다. 총평:과제가 눈에 보기에는 간단하지만 깊게 들어가면 어려운 과제들이 많았다. 과제의 수준은 이전에 스프링 부트와 자바에 대해 깊게 공부를 해본 적이 없어서 살짝 어려웠지만 시간을 들여서 어떻게든 다 풀고 제출했다. 과제를 진행하고 나서 내가 작성한 코드와 다른 분들과 코드를 비교도 해볼 수 있고, 최태현 멘토님이 매일 과제 마다 질문 답변과 과제에 대한 작은 피드백 및 조언을 남겨주셨는데 이게 크게 도움이 되었다. 온라인 스터디임에도 불구하고 인프런 스터디에 참여하는 스터디원과 멘토님 모두가 정말 적극적으로 질문하고 과제를 올리고 정보를 공유해서 자극을 나도 많이 자극을 받았고 더 스터디에 집중해서 스터디에 참여할 수 있었던 것 같다. 확실히 강의만 듣는 것보다 직접 코드를 작성하고 또 작성하고 작성하는 것이 제일 공부가 잘 되는 것 같다. 앞으로 공부를 할 때는 조금이라도 강의를 들을 때도 이번 스터디를 진행했던 것처럼 강의 내용을 복습할 수 있는 간단한 프로젝트를 진행하면서 공부를 해봐야겠다. 이번 스터디를 참여하신 모든 스터디원 분들과 이번 스터디를 운영하고 이끌어 주신 인프런과 최태현 멘토님께 정말 감사합니다!
웹 개발
・
인프런
・
인프런워밍업클럽
・
스터디0기
2024. 03. 10.
1
[인프런 워밍업 스터디 클럽] 0기 - 마지막 발자국 미니프로젝트 완료~배포
미니 프로젝트 1단계 완료미니 프로젝트를 하면서 크게 깨닫은 점은 공부하게 된 것은 직접 프로젝트를 해봐야 강의나 책으로 배운 지식이 이해가 된다는 점이다.강의 자료를 따라치는 것이 아니라 직접 뭔가를 만들다 보면 문제를 겪고 해결하면서 뭔가를 배우게 되는 것 같다.- 동일 데이터 중복 입력 막기 2024-02-27 19:36:43.073 ERROR 28072 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.IncorrectResultSizeDataAccessException: query did not return a unique result: 3; nested exception is javax.persistence.NonUniqueResultException: query did not return a unique result: 3] with root cause 완전히 동일한 팀 이름을 가진 팀을 2개 이상 등록하고, findByName을 통해 DB에서 해당 이름을 가진 팀을 조회해서 가져오는 중에 이런 에러가 발생했다.구글링해보니 단일 결과가 예상되는 JPA 리포지토리의 메서드의 리턴 값이 복수로 나왔을 때 이런 에러가 발생한다고 한다.처음부터 동일한 데이터가 중복해서 등록되는 것을 막았다면 이런 에러를 피할 수 있다.나는 해당 해당 팀명에 unique key를 걸어서 처음부터 동일한 팀이름이 등록되지 않도록 막았다. create table team ( id bigint auto_increment, name varchar(255) not null, primary key (id), unique key (name) ); 최태현 멘토님이 코드리뷰 시간에 이와 비슷한 내용에 대해 이야기했었다.만약에 어떤 사람이 회원 가입 버튼을 매운 짧은 시간에 여러번 눌러서 동일한 데이터가 중복해서 들어가게 되는 경우가 있다고 한다.이런 일이 벌어지는 원인은 스프링은 보통 요청에 대해 1개의 스레드가 할당 된다. 한 스레드가 요청을 처리 하고 있는 사이에 다른 스레드가 다른 요청을 처리하게 된다.거의 동시에 같은 요청이 2번 들어 왔을 때 한 스레드가 등록을 진행하고 있는 사이에 다른 스레드가 요청을 처리하는 바람에 이런 일이 발생하는 것이다.이를 해결 하기 위해서 중복이 되면 안되는 데이터에 unique key를 걸어 놓거나 낙관적 락/비관적 락/ 유저 락 을 이용한다고 한다.[\[Spring\] 스프링 동시성 처리 방법(feat. 비관적 락, 낙관적 락, 네임드 락) — 성장하는 성하 Blog](https://ksh-coding.tistory.com/125)- 셀프 피드백 🤔 다른 방법으로 중복 데이터를 등록을 막을 수 있는 방법이 없을까?🤔실제 서비스를 운영하다 보면 중복 데이터 등록 말고 또 어떤 문제를 겪을 수 있을까?🤔 어떻게 하면 해당 문제를 미연에 방지 할 수 있을까?사실 서비스 운영 중에 생길 수 있는 문제는 검색해보면 된다Feedback: 실전에 가까운 프로젝트를 해보는 것이 좋을 것 같다.지금도 보면 유저 로그인을 스크립트 코드나 매크로를 이용해서 악의적으로 수백번 등록할 수 있는데 이를 어떻게 막아봐야 될 것 같다. 배포: Amazon linux2와의 싸움처음으로 AWS EC2를 이용해서 배포를 했다.글쓴이는 이전에도 라즈베리파이에 flask 서버를 올려서 배포를 해본적이 있었다.아래는 mysql을 설치 중에 나온 에러 메시지다.에러 메시지는 찍어 놓은게 없어서 일단 비슷한 에러를 겪은 사람의 에러 메시지를 가져왔다.[error "GPG key a is already installed" It happens](https://stackoverflow.com/questions/77884025/im-using-amazon-linux-and-trying-to-install-mysql-in-ec2-but-i-keep-getting-th)ient-8.0.36-1.el9.x86_64.rpm: Already downloaded [SKIPPED] mysql-community-client-plugins-8.0.36-1.el9.x86_64.rpm: Already downloaded [SKIPPED] mysql-community-common-8.0.36-1.el9.x86_64.rpm: Already downloaded [SKIPPED] mysql-community-icu-data-files-8.0.36-1.el9.x86_64.rpm: Already downloaded [SKIPPED] mysql-community-libs-8.0.36-1.el9.x86_64.rpm: Already downloaded [SKIPPED] mysql-community-server-8.0.36-1.el9.x86_64.rpm: Already downloaded MySQL 8.0 Community Server 3.0 MB/s | 3.1 kB 00:00 GPG key at file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022 (0x3A79BD29) is already installed The GPG keys listed for the "MySQL 8.0 Community Server" repository are already installed but they are not correct for this package. Check that the correct key URLs are configured for this repository.. Failing package is: mysql-community-client-8.0.36-1.el9.x86_64 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022 Public key for mysql-community-client-plugins-8.0.36-1.el9.x86_64.rpm is not installed. Failing package is: mysql-community-client-plugins-8.0.36-1.el9.x86_64 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022 Public key for mysql-community-common-8.0.36-1.el9.x86_64.rpm is not installed. Failing package is: mysql-community-common-8.0.36-1.el9.x86_64 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022사실 위 문제는 gpg 키를 갱신해주기만 하면 해결 된다.리눅스에서 뭔가를 설치하기 위해서는 rpm, yum, dnf 가 해당 서버의 리포지토리를 이용해서 설치파일을 자기 서버로 가져와서 설치를 진행한다.리포지토리에는 해당 설치 파일들이 저장되어 있는 외부 저장소의 주소가 적혀 있다.이 저장소 주소에 접속하기 위한 키가 gpg이다. 기존의 gpg키로는 접속할 수 없었기에 때문에 gpg키를 2023 버전으로 갱신하니까 문제가 해결 되었다. 셀프 피드백🤔 AWS EC2 서버는 진짜 안전한 서버인가?일단은 내 ip만 해당 웹사이트에 접속하도록 바꿔 놓았고, 다른 보안 문제는 없는지 확인하고 다시 열 예정이다. AWS EC2에 대해 아는 것이 없으니 공부가 필요한 것 같다. 🤔 왜 많은 사람들이 다른 수많은 클라우드 서비스 중에서 AWS를 이용해서 배포를 할까?🤔AWS EC2가 가지고 있는 장점은 무엇일까?눈에 보이는 장점은 12개월 무료라는 점과 돈만 더 내면 쉽게 확장 할 수 있다는 점인 것 같다.라즈베리파이를 이용해서 배포를 할 때는 서버 로그 기록에 가끔 해외에서 ssh 로그인을 하려는 시도가 있다고 나올 때가 있었다.해외 접속을 아예 차단 해놔야 마음이 편하다. 아니면 다른 보안이 필요할 것 같다. 🧐 혼자서 문제를 해결하는 것도 정말 좋지만, 질문을 통해서 문제를 해결하는 것도 나쁜 것이 아니다.계획 상으로는 1,2시간 안에 끝날 줄 알았는데 거의 하루 종일 거의 10시간 이상 써서 배포 하는데 시간을 지체한 것 같다.이럴 때는 멘토님이나 아는 개발자분에게 질문을 해서 빠르게 문제를 해결하는 것도 나쁜 방법은 아닌 것 같다.느낀점생각보다 꾸준히 코드를 매일 공부하는 것이 쉽지 않았다. 어려운 개념을 이해한다거나 뭔가 어려운 것을 구현하는 것이 아니라 시간을 들이면 어떻게든 해결 할 수 있는 과제라서 쉽게 끝났던 것 같다.문제는 건강이다. 하루에 10시간 이상 앉아 있으니 바로 목이 너무 아프다.운동을 좀 하자.이번 스터디는 스터디원들이 적극적으로 스터디에 참여하고 열심히 공부를 하는 게 눈에 보여서 자극을 많이 받았다. 다들 열심히 사니까 나도 열심히 살아야지 이번 스터디를 이끌어주신 최태현 멘토님과 인프런에게 정말 감사합니다. 참고- 아래 강의 링크의 내용을 바탕으로 글이 작성됨[자바-스프링부트-서버개발-올인원-인프런](https://www.inflearn.com/course/lecture?courseSlug=%EC%9E%90%EB%B0%94-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%84%9C%EB%B2%84%EA%B0%9C%EB%B0%9C-%EC%98%AC%EC%9D%B8%EC%9B%90&unitId=208208)- SpringBoot 공식 문서[Spring Boot Reference Documentation](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started)
2024. 03. 03.
1
인프런워밍업스터디_BE_0기 2주차 발자국
2주차 학습 내용 요약 6일차 스프링컨테이너의 의미와 사용방법6일차 스프링 컨테이너의 개념 미션 수행강의에서는 스프링 빈과 컨테이너 개념에 대해 알아보았다.@Component @Bean 어노테이션을 넣으면 해당 클래스가 런타임 시에 스프링컨테이너에 등록을 하게 된다는 점을 배웠다.인스턴스화를 자동화 해준다는 느낌이다.미션으로는 기존의 코드를 Controller - Service - Repository 로 코드를 분리시켜서 리펙토링하는 것이 미션이였다.리펙토링하는 코드를 작성 할 때 Controller 클래스가 기존에 작성한 코드에 종속되어 있어서 api를 호출 할 때마다 오류가 났었다.그래서 아예 새로운 Controller 클래스를 만들었다.7일차 JPA를 왜 사용하는가_어떻게 JPA 사용하는가7일차 JPA를 왜 사용하는가_어떻게 JPA 사용하는가JPA에 대해 학습하고, 기존 코드를 JPA로 리펙토링하는 것을 미션으로 수행했다.아직은 왜 정확히 sql 쿼리문에 JPA를 사용하는지 납득이 되지 않는다.JPA를 사용할 때 제일 큰 장점은 유지보수성을 높여준다는 것이라고 한다.객체지향 구조 사용해 이미 만들어진 객체를 활용할 수 있다. sql쿼리문으로 db 테이블마다 crud sql문들을 다 작성해야 하지만 jpa 코드는 기존에 만들어진 메서드와 엔티티 객체를 사용해서 중복을 줄이고 유지보수 하기도 편해진다고 한다. 🤔 몇 만줄 되는 복잡한 코드를 유지보수 해본 경험이 없으니 JPA의 이점에 대해 납득하지 못하는 것 같다.직접 프로젝트를 진행하면서 JPA를 사용하는 것과 사용 안하는 프로젝트를 비교를 해볼 수 밖에 없겠다. 그리고 직접 코드를 작성 했을 때는 JPA 코드가 sql 쿼리문에 비해 직관적이지 않았다.JPA repository 인터페이스의 메서드들을 직접 코드를 사용하기 전까지는 무슨 뜻인지 알 수 없었다. 🤔이 부분은 아직 JPA코드를 많이 작성 해보지 않아서 생기는 문제인 것 같다.최대한 다양한 JPA 코드를 작성해보자. 8일차 트랜잭션이 무엇이고_왜 사용해야 하는가🔥 데이터베이스는 원자성 속성을 보장하지 않습니다. 여러 데이터베이스 작업이 "전부 아니면 전무" 기준에 따라 하나의 원자 단위로 실행된다는 보장은 없습니다. 일련의 작업에서 한 번 작업이 실패하면 데이터베이스는 계속해서 다음 작업을 실행합니다https://www.java4coding.com/contents/oracle/oracle-transaction)트랜잭션을 사용해야 데이터베이스의 원자성을 회복시킬 수 있다. 예를 들자면 이런 식이다.유저를 등록하고 해당 유저에 대한 반납 기록 저장하는 sql로직을 둘을 동시에 해야 되는데, 트랜잭션을 사용하지 않으면 유저는 등록했는데 반납 기록이 저장되지 않는다거나 반납 기록만 저장되서 DB 저장에 문제가 생길 수 있다.@Transaction을 사용한 코드는 한쪽 sql 로직이 이루어지지 않으면 다른 로직도 롤백시키는 일을 해준다. 🤔 생각해보면 트랜잭션을 사용하지 않으면 있어야 될 내용이 DB에 없거나, 없어야 될 내용이 있는 등 끔찍한 일이 벌어질 게 뻔하다.정말정말 트랜잭션을 중요한 내용인 것 같다. 9일차 조금 더 복잡한 기능을 API로 구성하기libraryapp에 반납기능과 책 대출 기능을 만드는 것을 실습했었다.show tables 는 sql문은 해당 데이터베이스 안에 어떤 테이블이 있는지 알려준다. 🤔 show tables 를 정말 자주 사용했다.테이블 삭제, 생성, 구조 변경 코드도 많이 사용했던 것 같다. 왜 일까?쿼리문 여러개를 동시에 실행하다보니 비슷한 이름의 테이블이 중복되서 만들어지는 일이 많았다. 그래서 데이터베이스에 어떤 테이블이 있는지 확인하는 코드가 필요했다. 그래서 use tables또 다른 DB 관련 문제로는 같은 이름을 지닌 책이 중복해서 등록이 되거나 같은 이름을 가진 유저가 중복되서 등록되는 일이 벌어지기도 했었다. 이 문제는 나중에 이름 부분을 unique key로 등록해서 중복 등록을 방지하는 것으로 해결했다. 간단한 ERD를 먼저 그려보고 코딩을 하거나, DB 설계 내용을 그림에 먼저 그려 보고 나서 코딩을 했다면 이렇게 복잡해지지 않았을 것 같다. 정리뭔가 미션을 수행하면 시간이 없어서 허겁지겁 끝내는 느낌이다.시간이 없다면 최대한 미션에서 명세한 기능만이라도 만들어서 코드를 제출하던가 해야되는데 뭔가 쓸떼 없는 일에 집착하다가 늦어지는 것 같다.무작정 코드를 짜게 되면서 문제가 생기는 경우도 많은 것 같다.erd를 그려본다거나 간단한 코드라도 종이에 먼저 어떻게 코드를 작성할지 써보고 코드를 작성하는 습관을 만드는 것이 좋을 것 같다.이런 나의 생각과 느낌을 최대한 넣어서 작성하는 회고도 좋지만, 정량적인 지표들(코드 작성 시간, 미션 수행에 들어간 시간 측정, 미션 수행 난이도, 등)을 이번 주에 대해 최대한 객관적으로 평가해볼 필요가 있을 것 같다.내가 아닌 제3자의 피드백도 필요하다.
2024. 02. 25.
1
인프런워밍업클럽BE-스터디0기 1주차 회고
인프런워밍업클럽 0기 링크인프런워밍업클럽백엔드 0기를 진행하면서 느낀점과 배운점을 위주로 회고를 작성한다.인프런워밍업클럽BE 공부 범위 이번 인프런0기백엔드 코스는 자바와 스프링 부트로 생애 최초 서버 만들기 강의를 들으면서 스프링부트 웹프레임워크와 MySql, JPA 같은 DBMS 관련 기술과 Amazone EC2 클라우드를 배포까지 공부하는 웹 백엔드 전반을 공부하는 스터디이다.매일 강의와 강의 내용과 관련한 내용으로 미션을 수행하며 매일 그 미션을 수행하고 인증을 해야지 스터디를 완주할 수 있다.미션 내용은 처음 스프링부트를 배우는 사람에게는 조금 어렵지만 미션을 하면서 백엔드와 스프링부트에 대한 이해도를 높일 수 있고, 이미 스프링부트를 다루고 있는 사람 입장에서도 스프링부트의 기본적인 내용을 공부할 수 있도록 구성되어 있다고 한다. (글쓴이는 스프링부트 초심자라서 미션이 조~금 어려웠다!) 자바와 스프링 부트로 생애 최초 서버 만들기-아래는 이번 주에 공부한 내용에 대한 링크와 간단한 정리이다.이번 주 공부한 내용 간단 정리 0일차: OT, 자바의 역사와 자바의 버전별 업데이트 사항 라이브 강의OT를 간단하게 진행하고 최태현 멘토님이 간단하게 자바의 역사에 대해 간단하게 정리하는 강의를 배웠었다.자바의 버전별 업데이트 내역에서 자바7에서 자바8로 업데이트 될 때 람다식,Stream, Optional, 등 이 추가되는 대격변이 일어나서 이 부분을 주목해서 봐야 된다.개인적으로도 람다식이나 Stream은 이번 스터디에서 처음 배우고 유용하게 쓰고 있다.람다식이 탄생한 배경이나 공부하고 싶은 사람이라면 코틀린에서 람다를 다루는 방법 강의를 들어보는 것이 좋을 것 같다.람다식을 왜 쓰는지 람다식이 도입되기 이전의 문법과 차이점, 람다식의 장점에 대해 쉽게 설명하고 있다.1일차: 자바 어노테이션, 어노테이션을 쓰는 이유자바 어노테이션자바와 HTTP 개념 공부주석이 개발자(사람)에게 이 프로그램이 무슨 뜻인지에 대한 메타정보를 준다면,자바의 어노테이션은 자바 컴파일러, 빌더, 런타임에 메타정보를 주는 역할을 수행한다. 스프링 코드를 보다 보면 어노테이션을 통해 각종 설정을 하거나 @setter를 통해 코드를 자동생성하는 등 유용한 용도로 쓰인다. 2일차: GET, POSTGET, POST API 만들기스프링부트로 직접 GET, POST API를 만드는 것을 실습했다. 3일차: 자바 람다식_ 스트림자바 람다식자바 람다식에 대해 배우고 왜 람다식이 탄생했는지 기술의 탄생 배경과 람다식을 어떻게 쓰는지에 대해 학습을 했다. 4일차: PUT, POST API 만들기PUT POST API 5일차: 클린코드클린코드아직은 클린코드가 뭔지 정확히 모르겠다. 도서관에서 클린코드 책을 빌려다가 읽으면서 공부중이다. 느낀 점 & 배운 점 솔직히 이번 스터디 참여하기 전에 개발공부에 대한 재미도 떨어지고 게을러진 상태였다.그러던 중에 이렇게 살다가는 안되겠다는 마음에 신청한 이번 인프런워밍업BE0기 스터디를 신청하고 매일 미션을 수행하니 하루 종일 컴퓨터랑 싸우면서 7~8씩 개발 공부를 하게 되었다.참 신기하다 그렇게 게으르다가 스터디를 신청하니까 이렇게나 사람이 달라지다니 어떻게 다음 주는 공부 할 것인가? 동기식 공부의 문제점현재 나의 공부 방식은일단 강의 듣기 (강의 코드 따라치기)미션 풀기미션 내용 정리하기관련 도서 읽기이런 식으로 진행이 된다.현재 공부 방식에 조금 문제가 있는데 공부가 동기식으로 진행이 된다는 점이다.강의를 공부하다가 막혀서 그 문제를 해결 하기 위해서 시간을 4,5 시간 정도를 쓴다거나그리 중요하지 않은 개념에 꽂혀서 거의 하루 종일(4시간 이상) 쓰는 일이 발생하면지나치게 딜레이가 걸려서 다른 일을 진행하지 못하는 일이 발생했다.1일차 어노테이션을 공부 할 때도 리플랙션 관련 부분이 제대로 이해가 안가서 블로그글을 10개 이상 보고 집에 있는 자바책들(이것이 자바다, 코어 자바9)등 책을 보고 해결이 안되서 다음날에 겨우 리플랙션을 적용해서 어노테이션을 만들어봤다.(근데 친구가 그래서 리플랙션이 뭔데? 라고 말하면 뭐라고 설명을 못하겠다. 아이고)그런데 멘토님(최태현 개발자님)은 신입분은 아직 리플렉션에 대해 몰라도 상관은 없다고 했다.그 외에도 vscode에 스프링 실행 환경 만든다고 몇시간을 쓴다거나, 옵시디언(메모 프로그램) 설정을 하는데만 집중하는 일이 벌어졌다. 조금 중요하지만 그리 중요하지 않은 일에 몰두하다가 진짜 중요한 일(스터디 미션 수행, 개인 프로젝트)를 하는 일에 시간을 거의 쓰지 못하는 일이 자주 벌어졌다. 이런 공부 방식을 고치기 위해서 이 방식을 수행하려고 한다. 1. 먼저 일단 오늘 할 일(공부 외의 일들도 적어야 됨)을 종이(메모앱X)에 적는다.2. 각 할 일 대해 중요도(개발 공부, 긴급한 일이 중요도가 높다) 우선 순위를 정한다.3. 가장 우선순위가 높은 일을 수행한다.4. 잠깐 멈춘다.5. 일 하나를 끝내면 다시 종이 할 일을 적거나 수정한다. 다시 2로 이동한다. 여기서 일이 지나치게 지연이 된다.(과제 마감이 2시간 남았을 떄)다른 우선순위가 높은 일을 수행하면 된다.(빨리 과제를 끝내는데 집중한다 앞으로는 아래처럼 일을 수행하면 된다. 과제 수행이 가장 우선순위가 높은 일이라서 이렇게 작성했다.1. 과제를 제일 먼저 확인하고 일단 강의 안보고 조금만!( 몇 줄 코드 작성하고 초고 작성 하는 정도) 과제를 진행한다.2. 강의를 듣고 다시 과제를 진행하는 식으로 하자.3. 내용 정리는 시간이 남으면 하자.
백엔드
・
인프런워밍업스터디BE