블로그

또니

[인프런 워밍업 클럽 0기 BE] 오프라인 수료식 후기

[오프라인 수료식 후기]3주간의 시간이 지나고, 워밍업 클럽 스터디가 끝나면서 오프라인 수료식을 다녀왔다.[첫번째 순서]낯을 조금 가리는 탓에 처음 도착해서는 앉아서 멀뚱멀뚱 사무실만 구경하고 있었다.감사하게도 같은 테이블에 계신 러너분께서 먼저 대화를 걸어주셔서 수료식 시작 전까지 신나게 대화하였고,다른 러너 두분께서 추가로 오셔서 첫번째 순서인 저녁 식사를 하며 또 다시 수다 타임을 가졌다.[두번째 순서]식사를 마치고 두번째 순서는 지식 공유자분들의 Q&A 타임이었다.질문은 사전에 러너분들께서 작성해주신 질문에서 몇개 골라 선정된 질문들이었다.취업에 관한 질문, 개발자에 대한 질문 등등 여러가지 질문들이 있었는데, 그동안 내가 많이 고민했던 질문들이 많았고내가 고민했던 것과 지식공유자분들이 답변해주신 것과 일치해서 조금은 안도(?) 하였다.🤣[세번째 순서]이후 세번째 순서는 우수러너 시상식이었다. 나는 처음부터 우수러너에 대한 기대는 크게 없었다.블로그도 누군가에게 보여주기 보다는 내가 공부하고 기록하는 곳으로 사용했고 깔끔하게 작성하는 편도 아니다.열심히 해보겠다는 의지는 강했지만 실력자분들이 많아 이런 쉬운 질문을 해도 될까? 라는 생각에 질문을 망설였다.(조금 더 찾아보니 혼자서도 충분히 해결 가능했던 질문들이 많았다ㅎㅎ)위와 같은 이유로 우수러너는 포기하였고, 완주와 내 실력 향상에 초점을 맞추어 묵묵히 열심히 하였다.그런데!!우수러너 명단에 내 이름이 있던 것이었다!!감사하게도 우수러너로 선정되어 인프런의 귀여운 굿즈를 받게 되었다!다시 한번 감사드립니다.[마지막 순서]그렇게 기쁜마음으로 시상식을 마치고 마지막 순서인 네트워킹을 가졌다.조별로 나누어 앉았고 각 조별로 코치님과 인프런 개발자 한분씩 들어가 네트워킹을 가졌다.내가 있던 테이블에는 인프런에서 5년째 일하고 계신 프론트엔드 개발자분이셨고,현재 취업 시장이 어떤지, 현업에서는 어떻게 일하는지 등등 유익한 이야기를 나누며 수료식은 끝이 났다.[스터디를 하면서 느낀점]그동안 공부하면서 이해되지 않았던 부분이 이번 강의를 통해 이해가 되어 고구마 100개 먹은 가슴이 뻥 뚫렸고,궁금한 부분에 대해 해결하고 고민하는 방법을 얻을 수 있어서 좋았다.이전엔 오류가 나고 해당 매서드에 대해 궁금하면 무작정 인터넷을 먼저 찾았지만이제는 해당 매서드에 들어가서 어떤 것들로 구성되어 있고, 해당 오류는 어떤 오류인지 공식문서나 해당 코드를 통해먼저 생각하고 고민해보는 습관이 형성되어 좋았다.짧다면 짧고 길다면 긴 3주동안 재미있게 공부하며 즐겼던 스터디였다.스터디를 진행해주시고 늦은 시간까지 수료식을 위해 자리를 만들어주신 인프랩 임직원분들,바쁘실텐데 중간 중간 깜짝 특강을 진행해주시고 예정된 시간이 지나도 목소리가 쉬어가며 질문과 정보 전달을 위해열정을 보여주신 최태현 코치님께 감사인사 드립니다.그리고 3주간 함께 달리신 러너분들 고생 많으셨습니다!😁

백엔드백엔드인프런워밍업클럽0기

[0일차] 인프런 워밍업 클럽 0기 백엔드 - 시작!!

어? 강의가 되게 재밌어 보이네?오랜 기간 취업 준비를 하는 도중 프로젝트 없이 공부만 하다보니 개발이 재미 없어지기 시작하였습니다.물론 오랜 취업 준비 기간으로 힘든 것도 있지만 내가 직접 만드는 서비스가 없다보니 흥미가 떨어진 것 같다고 생각하였습니다. 그렇게 어떤 프로젝트를 할까, 개인으로 할까? 팀으로 할까? 많은 고민을 하던 중 '자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지!' 라는 강의를 알게 되었습니다.강의 목차를 보니 웹 개발에 필요한 기술부터 네트워크, AWS 등 정말 백엔드로서 필요한 지식을 한 강의에서 제공해주는 것에 매력을 느꼈습니다. 하지만 돈 없는 취준생은 듣고 싶지만 부담이 되었습니다.😭 이건 꼭 해야해..!그렇게 며칠을 고민하던 중 지식 공유자께서 직접 참여를 하고, 다양한 사람들과 의견을 주고 받을 수 있는 스터디가 열린다는 것을 알게 되었습니다. 거기에 대상 강의가 바로..! 제가 구매할지 말아야할지 고민하던 '자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지!' 였습니다.저는 개발 실력도 중요하지만 네트워킹에 참여하는 것도 중요하다고 생각하였는데 이 기회는 두마리의 토끼를 동시에 잡을 수 있는 매력적인 이벤트였습니다. 강의를 사야할지 말아야할지 고민하던 저는 주저 없이 스터디를 신청하게 되었고, 강의도 바로 구매하였습니다.😁 그렇게 시작한 OT(0일차)16일 금요일 스터디의 시작을 알리는 OT를 하였습니다. 지식공유자이신 최태현님께서 대략적인 스터디 일정을 알려주셨고, 자바의 역사에 대해 알려주셨습니다. 스터디 일정을 보니 정말 타이트하고 힘들 것 같지만 저는 시간 많은 취준생 아니..백수이기 때문에 열심히 스터디 일정에 맞춰서 달려보겠습니다. 이번 기회로 참여하신 다른 러너분들과 많은 이야기와 정보를 주고 받고 싶습니다. 오랜 취업준비를 하였지만 그런 것 치고는 큰 실력향상이 있진 않았던 것 같아 이번 기회에 제대로 마음 잡고 공부해보려고 합니다..! 화이팅..! (급 종료)

백엔드백엔드인프런워밍업클럽스터디0기

학생

[3주차 발자국] 인프런 워밍업 클럽 스터디 0기 FE

회고벌써 마지막 발자국이다.3주를 달려오면서 느낀 것은, 시간 분배를 제대로 해야 한다는 것이다.초반에 자바스크립트에 시간을 쓰느라 리액트 파트를 느긋하게 하지 못하고 빠르게 돌았다.우선은 앞에서 풀리지 않은 문제가 있더라도 제때 진행해야 하는 진도를 끝내놓고 일요일쯤에 다시 돌아오는 편이 나았을 것이라는 생각이 들었다. 스터디가 끝나도 이 점은 기억하여 그날 해야하는 일은 마치고 나서 모르는 점을 보충하는 시간을 주말이나 저녁에 따로 가지는 것이 좋겠다.사실 자바스크립트부터 모두 이해하고 미션도 다 하고 싶었지만, 아무래도 기간 안에 전부 끝내지는 못할 것 같다.특히나 적어도 수료를 하려면 리액트 과제를 4개는 해야 하는데, 아직 1개 완료, 1개 진행중이다.내일까지 과제를 3개 완료할 수 있을지 모르겠다. 그래도 최대한 해볼 생각이다.지금 디즈니 플러스 앱의 github 로그인 버튼 기능을 구현하는것에서 막혀 머리를 싸매고 있다. 깃허브 계정 로그인까지는 되는데 자꾸 페이지 이동이 안된다.기본 개념부터 하나하나 느긋하게 보고 이해하기에는 시간이 부족하다고 느껴 쉽게 설명한 문서가 있는지 찾아다니는데에 시간을 꽤나 쓴 것 같다. 공식 문서부터 다시 보고 내일까지 성공하길 바라고 있다.스터디가 끝나면 강의에서 어려웠던 부분 혹은 시간을 들여 보지 못했던 부분을 다시 해보면서 역량을 쌓아야겠다.강의 요약이번주 강의 범위: 섹션6~7(React TDD), 섹션8(Next.js, TypeScript), 섹션9~10(Redux)React TDDNext.jsTypeScriptRedux React TDD: 테스트 주도 개발(TDD, Test Driven Development): 테스트 코드를 작성한 후 그것을 Pass할 수 있는 실제 코드를 작성하는 개발 방식장점: 소스코드 안정감 부여, 디버깅 및 개발 시간 감소, 클린 코드 가능성 높음 React Testing LibraryReact 컴포넌트를 테스트하는 가벼운 솔루션. 행위 주도 테스트(태그보다는 이벤트 발생 시 화면 변화 등의 테스트)Jest React Testing Library와 함께 React 테스트에 쓰이는 테스팅 프레임워크.test Case를 만들어 확인.단위 테스트를 위함 Jest 파일 구조describe: 여러 관련 테스트를 그룹화하는 블록을 만듦.it: ==test. 개별 테스트를 수행하는 곳.expect: 값을 테스트할때마다 사용됨. matcher와 함께 사용.matcher: 다른 방법으로 값을 테스트하도록 함.쿼리함수get: 요소가 없으면 오류 발생find: 요소가 없으면 null 반환query: 요소가 없으면 거부. 요소가 있으면 Promise 반환.테스팅 검사 관련 모듈ESLint: 문법오류 잡기Prettier: 코드 형식 맞추기Next.js: React의 SSR(Server Side Rendering) 구현을 도와주는 프레임워크. (React는 라이브러리)(리액트에서도 SSR을 지원하지만 구현하기에 굉장히 복잡. 따라서 NextJS 사용.)React는 CSR(Client Side Rendering) 이용CSR: JS가 다운로드된 후에야 화면 표시 및 기능 활성화됨첫페이지에서 빈 html을 가져와 JS파일을 해석하여 화면을 구성하기에 포털 검색에 거의 노출될 일이 없음. => 검색엔진 최적화(SEO) 불리SSR: 서버에서 Pre-Rendering된 HTML 제공사용자와 검색엔진 크롤러에게 바로 렌더링 된 페이지를 전달할 수 있게 됨.Pre-Rendering: initial Load(html보임) -> JS로드 -> Hydration(컴포넌트 활성화)Data FetchingReact에서 데이터를 가져오는 방법useEffect 내부에서 가져옴Nextjs에서 데이터를 가져오는 방법getStaticPropsgetStaticPathsgetServerSideProps TypeScript: JavaScript에 타입을 부여한 언어. 오픈소스.사용하는 이유단순화. 쉽게 읽고 디버그 가능코드 유형 검사를 통해 JavaScript에서의 일반적인 버그 피하는데에 도움Compile브라우저에서 실행하기 위해 파일을 변환해주는 것TypeScript에서 하는것. JavaScript에서는 안함.  TypeScript Typevalue가 가진 프로퍼티나 함수를 추론할 수 있는 방법TypeScript 유형Primitive types: string, number, boolean, null, undefined, symbolObject types: function, array, class, object추가 제공 타입: Tuple, Enum, Any, Void, Never, Uniontype annotation: 개발자가 타입스크립트에게 타입을 알려줌type inference: 타입스크립트가 타입을 추론하는 것type assertion: 타입스크립트의 추론을 막는다. 나의 주장에 대해 의심하지 마라.Redux: JavaScript Application을 위한 상태관리 라이브러리.Redux Data Flow Dispatch Action -> Call Reducer -> Update Store -> RenderAction: 자바스크립트 객체. 작업유형 지정하는 정보 들어있음.Reducer: 이전 state와 action을 받은 후 next state를 반환하여 store를 업데이트.Redux Store: 앱의 전체 상태 트리를 갖는 저장소. 몇 가지 Methods가 있는 객체.Provider컴포넌트들에서 Redux Store에 접근할 수 있도록 해줌.컴포넌트들을 둘러싸고 최상위 수준에서 렌더링.useSelector: useSelector Hooks를 사용해 스토어의 값을 가져옴.useDispatch: dispatch함수에 접근하는 Hooks. (Action을 보냄)미들웨어Action을 Dispatch하고 Reducer에 도달하는 순간 사전에 지정된 작업 실행 도와주는 중간자Reducer에 도달하기 전에 API와 통신을 하고 그것을 전달.Redux Thunk리덕스 미들웨어. 비동기 작업할 때 많이 쓰임.Thunk: 일부 지연된 작업을 수행하는 코드 조각Redux Toolkit로직을 작성하기 위한 공식 권장 접근 방식.모범 사례를 이용해 작업 단순화 및 실수 방지. 미션 해결 과정[1. 자바스크립트 미션 보강]미션4(Day5) 책 리스트 나열 앱의 보강이 필요했던 부분스타일 보강알림때문에 화면이 아래로 밀리는 문제 고치기 스타일 보강포인트 1. input의 넓이 키우기: 가로는 화면의 대부분을 가로지르도록, 세로는 h1정도로 크게포인트 2. 제출 버튼을 책 저자 input란 아래에 두어 보기 좋게 만들기(가로도 길게)포인트 3. hr로 입력Form과 책 리스트 Form 구분하기포인트 4. 책 리스트 Form 좀 더 보기 좋게 만들기(보강 전)(보강 후)input의 font size 조정을 이용해 포인트1 해결display: flex; flex-direction: column을 이용해 포인트2 해결<hr>을 삽입해 포인트3 해결위치 및 폰트 미세 조정하여 포인트4 해결알림때문에 화면이 아래로 밀리는 문제 고치기책이 추가되었습니다, 아이디가 입력되지 않았습니다 등의 알림을 뜨게 하면 아래 화면이 움직이는 것 때문에 불편함이 있었다. 예제 동영상을 다시 보니 이 부분은 나와 똑같이 구현되어있기는 했지만, 편의성을 위해 바꿔보았다.알림이 아래로 추가되도록 하지 않고, display: none을 지정했다 풀었다 하는 방식으로 겹쳐 표시setTimeout에 clearTimeout을 이용해 알림을 매번 새로 3초 지속시간 부여float: right 속성을 이용해 '책' title의 오른쪽에 배치 미션5(Day5) Github Finder 만들기의 보강이 필요했던 부분API 통신스타일API 통신github의 사용자들을 검색하려면 github에서 제공하는 api를 fetch하면 된다고 한다.기본적인 형태는 이런 식이다.async function logJSONData() { const response = await fetch("https://api.github.com/users"); const jsonData = await response.json(); console.log(jsonData); }https://developer.mozilla.org/ko/docs/Web/API/Fetch_API/Using_Fetch내가 이해한 부분은, fetch 안에 api url을 넣고, fetch가 반환하는 response에 .json()을 해주면 데이터를 가져올 수 있다는 것이다.github에서 사용자를 검색하는 데에는 특별한 인증 키가 필요 없다고 한다.https://www.daleseo.com/github-rest-api/진도가 밀리고 있기에 여기까지 이해하고 잠시 멈추고 리액트 공부를 시작했다. [2. React 미션 해결 과정]미션8(Day9) 예산 계산기 앱 만들기이 미션은 React 섹션 1~3을 차근차근 복습할 겸 따라하며 필요한 부분을 알맞게 바꿔 만들었다.첫 번째 커밋에서는 class component 방식으로, this.state와 this.setState를 사용해 App.js에 몽땅 코딩했다.총 지출을 출력하는 부분에서 계속 금액이 문자열로 지정되어 합쳐지는 것을 막기 위해 일일이 Number()처리를 했다.그리고 두 번째 커밋에서는 function component를 이용하는 React Hooks(class component 없이 state를 사용할 수 있도록 하는 기능)를 이용했다.즉 React Hooks에서는 component 분리(App.js, Input.js, Lists.js, List.js), useState 사용.항목에 마우스 올릴 시 크기가 커지는 효과: scale과 transition 조정(아래 블로그를 참고했다.)https://record-than-remember.tistory.com/entry/CSS-%EC%9D%B4%EB%AF%B8%EC%A7%80-hover-transformscale-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%98%A4%EB%B2%84%EC%8B%9C-%ED%99%95%EB%8C%80수정 버튼을 구현하는 것이 가장 어려웠다.Input component에서 수정 기능을 구현하고 싶었지만 자꾸 에러가 떠서 list component에서 그냥 state를 만들고 구현했다. 이 부분은 다음에 시간 여유가 있을 때 보강해야겠다. 미션9(Day10) 디즈니 플러스 앱 만들기미션을 하면서 떠올린 단어는 다음과 같다. '막막하다'...물론 거의 대부분이 강의에서 다루었던 넷플릭스 클론 코딩과 같은 형태였지만,제대로 체화하지 못했을 뿐더러 CSS를 적용하고 왔다갔다하면서 수정하는 것은 내 노트북에게는 상당히 힘든 일이었다.(저장할때마다 체감상 기본 10초는 멈췄던 것 같다. 노트북을 당장 바꿔야겠다.)기간안에 전부 이해하고 처음부터 만들기는 힘들 것 같으므로, 넷플릭스 클론을 할 때 사용했던 코드를 수정하는 쪽으로 미션을 수행했다.해야하는 일은 다음과 같다.넷플릭스 흔적 지우고 로고, bgcolor, nav color 디즈니 비슷하게 바꾸기 (완료)LoginPage 구현하기 (완료)깃허브 로그인 버튼 구현하기 (진행중)Category 컴포넌트 만들기 (완료) 현재 깃허브 OAuth 토큰을 이용해 로그인해서 code를 받는것까지는 진행된 것 같은데, 로그인 후에 페이지 전환하는 것에서 막혔다. useState를 사용해 로그인이 되었을 경우와 안되었을 경우를 나누어 다른 컴포넌트를 라우팅하도록은 해놓았는데, 깃허브 액세스 토큰을 어떻게 사용하고 데이터를 어떻게 가져오는지 등을 아직 이해하지 못했다. 그리고 그 기능끼리 연결을 어떻게 시키는지 아직 모르겠다. 그래도 내일까지는 완성하고싶다.

프론트엔드인프런워밍업클럽스터디FE0기

또니

[인프런 워밍업 클럽 0기 BE] 2주차 발자국

[2주차 학습 내용]벌써 스터디를 시작한지 2주차가 되어간다.2주차에는 컨테이너가 무엇인지, 어떻게 동작하는지 JPA 사용해보기, 트랜잭션그리고 조금 더 객체지향 적으로 코드 리팩토링 하는 방법을 배워 보았다.[2주차 과제]이번 2주차에는 기존에 Controller에서 그대로 SQL을 작성했던 것을 Controller - Service - Repository로 분리해보았고,Repository에 SQL을 사용하는 것이 아닌 JPA를 사용하여 DB와 통신할 수 있도록 해보았다.6일차 과제 보기 - https://ddonydev.tistory.com/807일차 과제 보기 - https://ddonydev.tistory.com/81[느낀점]다른 스프링 강의를 들었을 땐 완벽하게 이해가 되지 않고 넘어 갔었고, 정확하게 어떤 일을 하는 지 어떻게 동작 하는지 와닿지 않았었다.하지만 이번 강의를 들으면서 정말 완벽하진 않더라도 어느정도 이해가 되었고, 미션과 병행하며 코드를 쳐보니 조금 더 이해가 수월 했던 것 같다. 또, 그동안은 내가 A라고 알고 있던 것이 전혀 다르게 동작할때 또는 에러가 날때 등 그냥 넘어가거나 에러만 잡기 급급했는데왜 에러가 났는지, 또 왜 전혀 다르게 동작 했는지 이 메서드는 어떤 역할을 하는지 등등 어떻게 궁금해하고 어떻게 찾아가야하는지생각하는 능력이 성장한 것 같아 너무 기뻤다. 이번에 처음 써본 JPA는 너무 어려웠지만 조금 더 공부해본 뒤 미니프로젝트를 진행해 볼 예정이다.이번 주는 웹 개발의 전반적인 흐름과 생각하는 능력을 성장시킬 수 있어서 뜻깊은 한 주였다. 강의 링크 👉 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

백엔드백엔드0기인프런인프런워밍업스터디

유원준

[ 인프런 워밍업 클럽(백엔드, 0기)] - 0일 차 오리엔테이션 회고!

안녕하세요! 이번 인프런 워밍업 클럽 백엔드 스터디 0기에 참여하게 되었습니다.기존 Java, Spring, JPA로 백엔드를 공부했고, 그동안 배웠던 내용을 체화시켜야 할 기회가 필요했습니다.학습만 하고 체화시키지 않는다면 절대 본인의 지식이 될 수 없다고 생각하고 있기 때문입니다. 만약 학습한 내용을 바로 머릿속에 오래 남겨둘 수만 있다면 큰 행운인 것 같습니다. 하지만 저도 사람이기에 단순히 눈으로 보기만 한 내용은 기억에 오래 남지 못하는 것 같습니다. 저랑 비슷하신 분이 계실진 모르겠지만 배운 내용, 실습한 내용들을 본인의 GitHub나 개인 블로그에 잘 정리해 놓으면 상당히 기억에 오래 남고, 필요한 부분을 다시 찾아볼 수 있다는 점 때문에 저는 기록하는 것을 항상 좋아합니다! 제 루틴대로 배웠던 학습 내용들을 정리하고, 과제, 프로젝트 수행 부분 또한 별도로 블로그, GitHub에 정리할 예정입니다. 열정 가득한 코치님, 참가자분들과 함께 공부할 수 있게 되어 기쁜 마음입니다!백엔드 0기로 합류하시게 된 분들 모두 같이 파이팅했으면 좋겠습니다 😀 감사합니다 😀 

백엔드인프런워밍업백엔드스프링발자국0기화이팅!

진영준

[인프런 워밍업 클럽 스터디 0기 발자국] 마무리 3주차

안녕하세요. 주니어 백엔드 개발자를 꿈꾸는 12hugs 실명은 진영준입니다. 😉지지난주 월요일부터 인프런 워밍업 클럽 스터디 0기를 시작했으며,3주차에는 어떤 일이 있었는 지에 대해 간단하게 회고하며, 끝으로 어떤 생각이 들었는지에 대해간단한 회고를 마지막으로 스터디를 마무리해보겠습니다.아직도 갈 길은 멀다.개발을 하면 할수록 가까워지기보다 멀어지는 느낌을 많이 받습니다.아무래도 1년도 안되는 시간동안 공부해서인지 머리는 뒤죽박죽에 연결되는 부분들이 많이 없습니다.지나가는 말로 어떤 강사는 다음과 같이 말합니다."자기가 가진 지식들이 모두 연결되는 시점이 온다. 그때 떠올릴 것이다. 지금까지 공부했던 게 헛것이 아니구나"이 말이 저에게 가장 큰 동기가 되었습니다.비록 지금은 어려운 개념에 머리가 깨지고 힘든 시절이지만, 제가 아는 지식들이 모두 다연결되는 시점이 오리라고 저는 한번 희망찬 생각을 해봅니다. 급하게 마음먹지 말자.인프런 스터디를 하며 문득 든 생각은 전공자들도 상당히 많거나현업자도 충분히 많다는 사실을 많이 느꼈습니다.이걸 뼈저리게 느낀 부분은 라이브특강 때 질문의 수준입니다.항상 라이브특강을 진행하면서 제 부족한 부분이 너무 잘 드러나는 부분들이 많습니다.전혀 귀에 들어오는 말이 없고, 맥락조차 파악하지 못하는 부분에서저는 항상 급하게 마음을 먹게 됩니다.어려운 개념을 빨리 끝내거나 이해했다고 넘어가며 혼동을 주는 것이지요.하지만, 깨달은 점도 있습니다. "급하게 마음먹지 말자"천천히 조금씩 꾸준히에 제 개발실력은 늘어갈 것입니다.이게 제가 3주차까지 스터디를 마친 시점에서 가장 먼저 떠오르는 문장인 것 같습니다. 앞으로 어떻게 해야할까?앞으로 저는 좀 더 본질적인 공부를 하기로 마음먹었습니다.객체지향에 대한 심층공부를 통한 프로젝트CS전공지식 노트 기반 공부 지식넓히기예외처리는 어떻게 하는 것인가?(validation)일단 가까운 시일내에 공부할 내용은 위와 같습니다.코드를 치는 것도 좋지만, 좋은 코드를 치는 것만큼 올바른 일은 없을 것입니다.그렇기에 저는 이번년도 2분기에 누군가가 객체지향과 CS에 대해 물어본다면,적절한 예시와 함께 설명을 해줄 수 있는 사람이 되도록 노력할 것입니다.

백엔드인프런스터디워밍업클럽발자국0기

crispin

[인프런 워밍업 스터디 클럽 0기_BE] 3주차 회고록 정리

3주차 회고벌써 스터디가 종료되었다. 배운것도 너무 많고, 배워야 할것도 너무 많지만 확실한건 3주전의 나와 비교해 배운게 많다는것다른 미션들도 재미있고, 많이 배웠지만 미니 프로젝트 미션은 정말 많은걸 배울 수 있었다.다른 5분의 스터디원분들과 서로 코드리뷰를 하며 미니프로젝트를 진행했는데, 코멘트 하나하나 너무 많은걸 배울 수 있었어서 하길 잘했다는 생각이 든다.3주차 미션day11 ~ 15미션다양한 요구사항이 있는 미니 프로젝트를 진행했다.난이도가 조금은 쉬운듯 해서, 고민을 최대한 많이 하면서 다양한 방법을 시도하며 프로젝트를 진행했다TDD 를 적용하고, 각 레이어간의 추상화와 좋은 설계 등등 코드를 한줄 작성할때도 최대한 의미있는 코드를 작성하려 노력했다.4단계까지 있는 미션을 모두 진행하지는 못했다. 생각외로 TDD 가 정말 어려웠다. TDD 로 개발을 한다고 작정을 하고 개발을 진행해도 중간중간 기존 개발 습관들이 나와서 어려움이 많았다. 그러다 보니 하루에 5시간 이상을 프로젝트에 매달렸는데 2단계 미션까지 밖에 진행하지 못했다.다만, 다음주 수료식 전 까지 미션을 진행하고 다른 동료분들과 코드 리뷰를 함께 하기로 해서 다행이다.스터디 회고이 스터디를 참여할지 고민하는 분들에게 만약 다음 기수 스터디가 열린다면 무조건 참여하라고 말해주고 싶다.쉬도때도 없이 많은 질문들을 빠르게 답변해주고 많은걸 알려주시려는 코치님과 성장하고자 많은걸 배우고 공유하려하는 스터디 원 분들 등등 좋았던게 너무 많다.또 우리가 함께 만들어가는 스터디라는 취지 답게 스터디 안에서도 다양한것들을 시도해 볼 수 있어 좋았다.다른분들과 일주일 넘게 코드리뷰를 하면서, 정말정말 많은걸 배울 수 있었다.앞으로도 이런 기회가 많이 생겨 더 많은걸 배울 수 있었으면 좋겠다. 

백엔드워밍업스터디0기백엔드회고발자국

crispin

[인프런 워밍업 스터디 클럽 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기백엔드회고발자국

또니

[인프런 워밍업 클럽 0기 BE] 1주차 발자국

[1주차 회고]벌써 스터디를 진행한지 1주차가 되었다. 스터디 방식은 하루에 정해진 양의 강의를 듣고 주어진 과제를 정리하고 공부하는 것이다.강의는 굉장히 쉽게 풀어서 설명해주셨고 이해가 쏙쏙 되었다.하지만 막상 과제를 보고 정리하려고 하니 이해가 된 것은 맞는지..머리 속은 엉망이 되었고 정리를 하다보면 2~3시간은 훌쩍 가 있었다. 그동안 다른 강의들을 들으면 다양한 방면으로 생각해보지 못하고 아 그렇구나~ 그런거구나하며 넘어갔던 적이 많았다.하지만 강의를 듣고 과제를 하면서 "이건 왜 이런거지?", "이럴 땐 이렇게 되나? 이게 있으면 다른게 있지 않을까?" 등 생각의 넓이가 달라졌고,다른 러너분들이 과제를 수행하신 것을 보고 "이런 방법도 있구나", "이런 생각도 하시는구나" 라며 다양한 의견을 볼 수 있었다. 그동안 혼자 공부하면서 남들과는 실력차이가 나 많이 좌절도 했고 어떻게 해야할지 많은 고민이 있었는데,이번 기회로 다른 러너분들의 다양한 풀이 방법을 보고 최대한 습득하고 고민해보고 질문해보아야 겠다는 생각이 들었다. 좋은 강의를 제공해주신 최태현 강사님과 다른 분들과 소통할 수 있는 기회를 만들어주신 인프런 분들께 감사드립니다.좋은 기회를 주신 만큼 열심히 공부하고 많은 것을 얻어가겠습니다..! 다음 한 주도 화이팅💪

백엔드0기인프런인프런워밍업스터디

crispin

[인프런 워밍업 스터디 클럽 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기스터디회고발자국