[회고록] 파이썬&자바 개발자 양성 교육 5개월 정리♡

Youmi Choi (Blake)·2021년 6월 9일
0

MEMOIRS

목록 보기
1/5
post-thumbnail

매일 9:30-18:30까지 약 800 시간
2월부터 6월까지 5개월동안 느리지만 한 걸음씩 성장해온
내 기록을 정리. (기특)

2월

  1. 기본 용어지식들을 커다랗게 배움. 라이브러리가 뭔지,sql은 뭔지 등 수많은 용어들이 쏟아져 정신이 없었음
  2. 파이썬 기초 문법을 배웠음. 처음에 굉장히 어렵고 생소했음.
    수업 후 300제로 연습하면서 기본 개념 복습하는 시간을 매일 가졌음.
    조금씩 파이썬 공부가 수월해졌음.

!고급언어 :

사람쪽과 가깝다. 씨 , 자바 , 파이썬 등

!저급언어 :

컴퓨터와 가깝다

!객체지향 언어

큰 범위 모든 것들이 객체, 객체들 끼리 통신 , 자바 씨쁠등 oop
작은 범위 , 클래스에서의 객체

!인스턴스 = 객체(붕어빵)

클래쓰(붕어빵틀)를 통해서 만들어낸 인스턴스
클래쓰를 통하여 만들어낸 객체 x 촌스러운 표현

!라이브러리 :

미리 만들어놓은 덩어리들

!코틀린:

안드로이드 앱계발 사용시 인기 많은 대세언어(이전은 자바)

!GUI / CLI:

GUI - > 마우스 오른쪽 클릭 등 그림으로 명령 (그래픽사용자 인터페이스)
CLI -> 글자로 명령! (검정화면에 나오는 그런 것, 글자형)

!SQL 씨퀄 / 씨큐엘:

데이터 분석언어, 데이터를 끌어와야함 (해당데이터 넣고 빼고)
그때 데이터베이스 관리시 사용하는 언어

!오라클:

데이터베이스 중에 가장 많이 쓰는 언어

!오픈API:

API 이미 만들어진 것 끌어다 쓰는 것, 불필요한 코드, 중복 되는 것 최적화,예를들어 총 쓰는 게임 여러개 만드는데 다 다시 만드는게
아니라 총쏘는 부분은 어떤 게임이든 총쏘는 게임이면 들어가니까 그
부분만 뺴서 쓸 수 있게 하는 것.

!파이썬 문법:

파이썬 자료형들 (숫자열,문자열,리스트,튜플,딕셔너리,집합,불 )
조건문 반복문 for while 함수 클라스 등.

!기본 html,css,js 문법 배움

3월

1.플라스크와 장고로 프로젝트 무작정 따라갔던 달.
2.토이 프로젝 총 4개 플라스크, 장고 큰거 2번,메모앱,투표앱
python anywhere를 이용한 배포까지
웹앱 프로젝트를 이런식으로 하는 구나 하고 경험한 달.

파이썬의 프레임워크 Flask와 Django로 토이프로젝트 만들었다.
정말 생전 처음 하는 것이라 오류나서 한번 놓치면 스스로 해결도 못 하고 따라가기도 너무 어렵고 모든게 생소했는데
팀원들이 도와주기도 하고 수업 끝나면 교재보면서 한번씩 더 해보고 해서, 겨우겨우.. 이끌려갔던......나로써는 정말이지 치열했던 달.

[python anywhere 배포]
프로젝트를 자동으로 만들어주는 홈페이지 python anywhere 이용하여
인터넷에 실제로 배포도 경험해보았다.(무료라 하나만 올릴 수 있었지만)

처음엔 아무것도 모르고 그냥 따라만 가다가
여러번 반복 후에 조금씩 눈에 익는 것들이 보였고
간단한 메모장 만들기를 통하여 하나씩 설명 들으면서
개념을 이해하게되었다.

그리고 나서 한번 더 투표하는 프로젝트를 했을때
따라가는 것이 수월했다.

하나만 올릴 수 있었기에 지우고 프로젝트 새로만들고 가상환경설정, 압축폴더 올리고 가상, 마이싸이트 들어가서 압축 푸는거 콘솔에서 하고,
유알엘 연결하고 (세팅과 유알엘),모델 있던거 지우고 받아놓은거 올리고 그럼 끝!
~~

@아쉬운점?

너무 처음이라 수업에 따라가면서 만드는 것만 따라가자는 생각이였고
안일했다. 깃허브에 바로바로 코드도 정리해서 올리고 했으면 좋았을껄.
그날 그날 기록해둔 것이 많이 없어 아쉽다. 사실 한번 따라서 해본거지 스스로 해본 적은 없기에 나 이거 할 수 있어요! 당당히 말하기는 어렵다고 생각된다.

@배운점?

좋은 경.험 이였다.프로젝트를 이렇게 만드는구나하고 감을 잡기 시작했다. 끊없는 오류와 실패로 "왜 안되지?!?!" 하고 짜증만 나던 이전과는 다르게

반복되는 토이프로젝트를 만드는 과정에서
스스로 문제를 해결하는 능력을 기르게 되었다.

이러한 경험을 통하여 학습능력과 문제 해결능력이 생겼다는 것을
자바스프링으로 프로젝트를 하기 시작할때 크게 느꼈다.

더불어 4월 말 부터는 개인프로젝트를 하면서
미래의 나를 위하여 오류나 새로배운 것들을 기록하기 시작했고
필요한 순간, 아 그게뭐였지? 하면서 금방 찾아보게 되어 매순간 성장하는 것을 느낄 수 있었다.

4월

1.java기초문법을 한달간 배운달. 파이썬을 이미 배우고 나서인지,
인터페이스와 같은 파이썬에서는 없었던 부분을 제외한 것들은 비슷했기에 배울때 재밌었다.
2.받아드리는게 이전과 다르다는 느낌을 받아 좋았던 달.
기초문법과 웹개발은 또 많이 다르다는 것을 알게됬다.

4/10

토요일인데 파이썬 기초 보강을 다녀온 날.

처음보다 많이 늘었고 쉽게 기초를 풀어나갔는데 시간제한을 주고
응용문제가 2개 주어졌을때 코딩이 어려웠다.
많은 코딩 문제들을 풀어보지 않아서가 원인이라는 것을 깨닫고 많이 풀어야겠다 생각하게된 계기가 됨.

4/11

약한 부분 파악 및 공부

처음에는 아무것도 모르고따라 했다면 조금씩 나아지고 있는 것을 느낌.

자바 공부를 한 주 하고서 내가 함수와 클라스 부분이 약하다는 것을
깨달음, 객체지향언어인 자바를 배울때 반드시 숙지해야하는 부분이라
생각되어 클라스를 따로 공부함.

파이썬으로 입금과 출금을 기록하는 메소드를 만들었는데
책에서 더 나아가 옆에 회차를 적어주고 그 옆에 총 잔액도 표시하고싶다는 생각이들어 밤늦게까지 푹빠져 코딩함, 굿
인생 첫 언어인 파이썬 보다 자바가 더 재밌다고 느낌.

4/12

자바 복습하며 새로 알게된 것들

String은 이뮤터블이지만StringBuffer는 뮤터블
문자열을 변경할일이 많으면 후자를 없으면 String 사용이 옳다,
장단점이 있기때문

String은 +=연산자로 하나씩 추가하면서 객체를 여러개 생성하게 되어
객체가 여러개 만들어진다,,그럼에도 스트링은 메모리 사용량도 더 적고 속도가 더 빠름 (StringBuffer자료형이 더 무겁) ,

StringBuffer는 변수.aapend()함수 사용하여 추가하는 방식으로 객체 하나만 생성 but 출력은 변수.toString()함수로 한다 .

그래서 장단점이 있기에 (객체가 하나고 변경가능한 )StringBuffer자료형만 사용 하기에는 무겁기때문에 , 변경추가할일이 많으면 사용하는게 좋다, 그렇지 않으면 가벼운 String자료형 사용.

변경가능한 StringBuffer에서 자주쓰이는 메소드
insert , substring, append

4/17

웹앱의 개념이해함

예전에는 자바로 안드로이드 앱 많이 만듦,
지금은 다양한 것을 사용해서 꼭 자바 아니여도됨.
모바일로 네이버를 들어갔을때 모바일에 맞는 모양인게 웹앱,
네이버 어플을 들어갔을때의 모양과는 다름,

그래서 맨~ 처음 프로젝트가 파이썬 플라스크로 웹앱 만든것이였는데
그게 뭔지도 모르다가 자바 시작하면서 공부하면서 정확히 개념 알게됨.

웹개발자는 프론트 엔드지만 백엔드 쪽에 있으며
서버 즉 백엔드에서 가공된 정보들을 가져와 웹상에 뿌려주는 것,

mvc사용자가 컴퓨터에 다운 받지 않고 주소만 입력해서 접근 가능 및 사용하게 하는 것.

클라이언트란

카트라이더를 예로 들면 서버가 있고 그곳에 사용자 아이디 정보들 ,
카트, 기존 캐릭터등 변하지 않는 것들이 있고 게임을 하기 위하여
다운 받아 설치된 컴퓨터에서의 정보들을 관리하는 것.

4/27

jsp파일 동적페이지 정적페이지 개념을 알게됨

아파치는 웹서버, 정적 웹페이지에 html문서 요청하면 그걸 보여주는
반면
was(web application server)중 하나인 tomcat은 동적웹페이지임

왜냐면 웹서버와 웹컨테이너의 결합이며
이는 클라이언트가 요청하는 것을 프로그램으로 결과를 만든 후
다시 클라이언트에게 html로 보여주는 역할하는 것임.

4/28

학원에서 자바스프링으로 프로젝트를 진행하기 전

이미 공부하고 싶어서 따로 스프링 웹개발 기초 입문인강 듣기 시작.

1>정적웹페이지 HTML 그대로 던져주는 것
2>MVC란 고객에게 받은 요청 결과물 다시 반환해서 보여주는 동적페이지
3>API란 객체를 받아서 JASON방식으로 키값과 밸류값으로 보여주는 것 이때 @ResponseBody어노테이션을 사용하면, 키값과 밸류값 그대로 보여줌.ex)jdbc템플린라이브러리 ->api 일종임, 중복 제거해줌

4/29

자바로 기초 코딩시 이전에 파이썬으로 했던 것을 자바로 하면서 비교적 쉽게 코딩가능했음.

따라서 많이 문제를 경험할 수 록 또 나오면 쉽게 된다는 것
내가 많이 성장했다고 느낌.
물론 어려운 문제는 어렵지만 기초 코딩정도는 쉽게 하게됨 ><

4/30

스프링과 스프링부트사용하는 이유, jpa,DI에 대하여 알게됨

스프링이란?:

자바의 개발 프레임워크,
의존성 주입과 제어의 역전은 스프링에서 가장 중요한 특징중
하나이고 단위테스트가 용이하기 때문에 보다
퀄리티 높은 프로그램을 개발.

스프링부트란? :

스프링부트는 자동설정(AutoConfiguration)을 이용하였고
어플리케이션 개발에 필요한 모든 내부 디펜던시를 관리합니다.
개발자가 해야하는건 단지 어플리케이션을 실행할 뿐입니다.
웹어플리케이션을 개발하는 동안, 우리는 사용하려는 jar,
사용할 jar 버전, 함께 연결하는 방법이 필요합니다.

모든 웹 어플리케이션에는 Spring MVC, Jackson Databind, Hibernate 코어 및 Log4j와 같은 유사한 요구사항들이 있습니다.

그래서 과거에는 이러한 jar들의 서로 호환되는 버전들을 따로 선택을 해주어야 했습니다. 이런 복잡도를 줄이기 위해서 SpringBoot Starter라고 불리는 것을 도입.

스프링을 쓰는이유:

객체지향적인 설계가 좋은 이유,
다형성을 활용하면 데이터베이스랑 교체,스프링 컨테이너가 이것을 di 인하여 위 처럼 아주 쉽게 해줌.

어플리케이션 기능을 아주 쉽게 교체 변경가능해짐.

다형성이란?: 프로그램 언어의 다형성(多形性, polymorphism; 폴리모피즘)은 그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로,
프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다.

쿼리란?

웹 서버에 특정한 정보를 보여달라는 웹 클라이언트 요청(주로 문자열을 기반으로 한 요청이다)에 의한 처리이다.

렌더링이란?

코드들이 웹화면에 이미지로 바뀌어 보여지는 것

서버를 끄면 저장된 것들이 살아지기때문에
데이터베이스에 저장해함.

5월

스프링 -> 스프링 부트 시작

1.처음에는 스프링으로 시작해서 톰캣연동도 따로해야해서 복잡했음.
2.스프링부트로 넘어오면서 스프링부트가 지원 안하는 JSP를 사용하기 위해 연동하는 것도 했고 mybatis도 찍먹해보구..등 여러가지 경험을 했다. IDEA도 이클립스 STS썼다가 vsc썼다가 IntelliJ로 정착함.
3.최종적으로는 JPA를 사용하여 스프링부트로 웹페이지 만듦.

5/2

JPA의 장점?

sql직접관리해야하는 jdbc템플릿보다 편한 jpa.
jpa는 sql로 개발자가 따로 안 해도 다 되게 해줌.
다만 이 기술을 잘 활용하기 위하여 따로 깊은 공부가 필요하다고 생각되어짐.

AOP란?

ex> 실행되는 시간 하나씩 보여주세요 해서 1000개의 메소드에 다 코드를 작성해야하는 경우, 하나씩이 아니라 aop사용 해서 하나씩 다 적용되게하는 기술

구글링 : aop @around 필요할것 검색해서 사용.

데이터 모델링의 개념

모델링 :

도메인 지식을 체계화하는 과정
모델링 과정 : 도메인 분석 --> 도메인 개념 정립 --> 모델링

객체지향의 개념과 특징, 따로 업로드함.

5/4

맛보기로 스프링에 톰캣연결하고 웹 동작해봄

처음으로 데이터베이스 건들여봄
스스로 오류 찾아서 해결해나가고 기록하는게 재밌다고 느껴짐

다만 500나왔을때는 어디를 찾아야할지 에러표시도 안나고 해서
막막해서 벙쪘을때가 있었음,

오류를 그대로 구글에 검색도 해보고 해결한 사람들한테 물어도 보고 해서 해결해나감. 알고보니 xml파일에서 빨간줄이 그어져있었고
sql 데이터베이스 이름 잘 못 되어 있어그런 것

@autowired이런거 하나도 모르지만 걍 따라하는 중 , 사실
스프링입문 강의때 한번 본 개념들이라 또 나왔다! 정도 생각하게됨,
눈에 띔, 앞으로 해보면서 하나씩 찾아 이해하면 될듯.

5/6
1.문제 생기거나 막히면 스스로 검색해서 해결하게 됨. 타자가 무진장빨라짐ㅋㅋㅋㅋㅋㅋㅋ 확실히 기록하면서 하니까 기억도 더 잘나고 시간도 빨리가서 좋음 ><아주 잘하고 있음

2.어노테이션에 대해 알게됨/ 따로 업로드함.

3.롬복
Lombok이란 자동으로 기본적인 상용구를 생성 해 줌으로써
코드량을 줄이는데 도움을 주는 Java 어노테이션 라이브러리.

객체 클래스에 @Data 어노테이션만 달면,
Getter/Setter/Equals/ToString과 같은 메서드를 자동으로
생성/연결해 줌.

5/11

jar와 war의 차이점, gradle과 maven의 차이점을 알게됨

출처


gradle / maven 차이 : 그래들이 업글버전

maven은 프로젝트가 커질수록 빌드 스크립트의 내용이 길어지고
가독성이 떨어짐.

gradle은 훨씬 적은 양의 스크립트로 짧고 간결하게 작성.

maven의 경우 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속을 받아야함

그래들은 그루비라는 자바언어의 방언? 정도인 비슷한 언어를
사용작동하는데 따라서 컴파일할때 더 쉽게 읽힘, 그래서 가독성 좋아짐.

5/12

오늘 로그인 보안 VSC 메이븐 JAR 하다가 잘 안되서

STS로 그래들 WAR로 함.
권한별로 화면창 띄우는거 하다가....막힌 것,,,
벨로그에 기록해놨음.

5/13

롬복다운 받아서 확인 테스트 했는데 잘 안됨.

sts에서 롬복다운받아놓고 게터세터 안 만들어도 자동으로 생성되는 것 아웃라인에서 확인되야하는데 안 보임... 설치하면 된다는데
다운받은파일에서 설치하는것도 안보이고 cmd로 해도 안됨,
중단하고 벨로그에 남김.

5/23

오늘 배운 것 sql데이터 관리하는 문법

오라클 : 그 문법을 쳐서 실행시키는 DBMS? 중 하나
마이바티스: 데이터를 xml형태로 저장하는 프레임워크

5/25 집중 안되는날 회고록

귀찮은거 이겨내고 카페에 왔고 집가서 쉬고싶은거 이겨내고
(집가면 미루다가 불안해하면서 놀다가 밤에 뒤늦게 지친상태로 할테니까 )집중 안 될때는 붙잡고 있지 않고 아예 푹 쉬다가 다시 집중 될때 했음.

5/24

JSON (JavaScript Object Notation):

경량의 DATA-교환 형식이다. 이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이하다.

"키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.

5/26

JPA배워서 데이터 연결한날.

jpa와 jdbc템플렛으로 데이터 넣는거 함, 넣고 빼고 삭제하고 다 되고 신났음.

내가 집중 잘 되는시간을 알아냄. 9:30부터 두시간
3-4시 진짜 안됨 4:30-6:30 살아나는듯
집중력 높을때 중요한 것을 하자.

5/27

구글링 능력이 늘었음,마인드컨트롤 잘 함.문제의 원인을 파악하고 노트를 꺼내서 해결하려함.

예전에 처음에 로그인 아무리 찾아도 안 나왔는데
요새는 잘 나옴 찾음

예전검색:
로그인창 스프링부트
현재검색:
security springboot 이런식으로 구체적으로 해서 원하는거 찾아냄

마인드컨트롤 잘 함.
문제 발생해도 안 되도 화를 진정시킬수있음 안 된다고 내가 뭘 잘못했지? 하며 끙끙 거리는 것 보다
머리 푹 식혔다가 다시 시도해보는 끈기가 생김.

문제의 원인을 파악하고 노트를 꺼내서
문제, 원인, 해결을 적어내려가 보고 하나씩 구글링해서 해결함.
맨~처음에는 구글링 할 생각도 못 하고 "왜 안되지? 도와주세요~"했었음.

5/28

타임리프, 스트링부트,부트스트립검색해서 튜토리얼보며 필요한정보 직접 찾는 연습, 게시판 무작정따라 만들기함.

흐름이 이렇다는거 알았다 .
헤매서 그렇지 게시판 만드는 코드는 몇개 없다
또한 부트스트랩이 이쁘게 만들어주며 데이터 마리아에서 넣고 거기서 삭제는 된다.

마리아 디비 세팅하고 테이블생성하는 건 블로그에 저장해두었다 나중에 필요할때 꺼내 볼 예정.

다만 게시판에서 입력한 내용 저장은 아직 안된다. 다음주 예정

오늘 스스로 검색해서 타임리프고 스프링부트고
부트스트랩이고 스스로 필요한거 찾아서 하는 연습을 했다.

속도가 달라 따라가기 많이 벅찼지만 그래도 어떻게 완성은 했다,
포기 하지않고 뒤쳐지면 따라잡고 또 도움받아 따라잡고
지쳐서 그만하고 싶었지만 포기 안하고 이 정도까지 완성한 내가 기특하다

@배운점:

타임리프에서 필요한 것 찾을때
뭐라도 공부된게 있어야한다는 것을 깨달았다.
예를들어 common파일에서 네비바를 나머지 페이지에도 다 적용시키고
싶으면 th:fragment와 th:replace를 사용해야하는데
그런게 있다는 사실을 알아야 검색도 빨라진다.

그동안 검색이 왜케 어려웠는지 이해가갔다. 무엇을 검색해야하는지 정확히 몰랐기 때문이다. 그리고 이재는 조금씩 검색능력 나아지는 듯, 이것도 계속 연습하면서 몸에 익을 것이라 믿는다.

6월(진행형)

배운 것을 내 것으로 익히기 위하여 프로젝트와 개념정리에 전념 중

6/3

부족함을 느끼고 공부의지 불탄날

어제 개발자 지인에게 해결 안 되는 것을 도움 요청했는데
나한테 이것저것 질문을 했다.
데이터는 어디서 저장중인지? 로그인정보를 받는 클래스가 어딘지? 등

나한테 물어보는데 정작 명확하게 대답 하지 못하는
내 모습을 보고 현타가 왔다.
이런게 가짜 지식인가 싶었다.
가짜지식이란 대충 알고는 있는데 물어보면 정리해서 대답하지 못하는...

근데 jpa얘기 나왔을때 만큼은 그래도 인강들으며 공부한게 있다고 술술 얘기를 했는데 알고보니 이것저것 섞여서 잘못된 지식이였다.

지인이 그거 아니라고 하며 찾아준 정보에서 읽어보니
아뿔사... mapper 랑 헷갈리고 있었다.

매퍼는 html에서 sql작성하는거고,
jpa는 그마저도 안 하고 그냥 ~ sql을 자동으로 생성되게 하는 기술.

jpa인터페이스로 하이버테이트 구현체가 테이블의 데이터를 생성하는 것 이 제대로 된 개념이였다.
벨로그에 정리하면서 이해했다고 생각했던 부분 마저
틀리니 많이 부족하다고 생각되어졌다.
그래서 ,인강에서 jpa부분을 다시 듣고 정리했다. 이제는 명확하게 안다.

6/5

한가지로 오랫동안 끙끙 거린날.

토요일 컨디션이 안 좋아서 내내 낮잠자고 푹쉬다가
카페가서 공부함, 인강들었음. 그리고 작성자 데이터 넣는거 하다가
안되서 포기하고 귀가했는데 다시 잡다보니 , 시큐리티에서 유저네임을 불러오는 것 까진 가능해짐,,,근데 폼에서 입력이 안됨...
작성자 테이블로 데이터가 넘어가질 않음... 늦게 까지 붙잡고 있다가
해결 오늘도 못 하고 잠.

6/6

스프링 입문 개념 정리

일요일 낮에 css건들다가 컨셉을 사진관예약 홈페이지로 잡았고
저녁 인프런 다시 듣고 스프링 빈 의존관계 설정 부분을 들으며
다시한번 빈 등록하는 2가지 방법이 있다는 것 등,
개념 정리는 할 수 있어서 뿌듯한 하루였다.

6/7

css는 쉬울 줄 알았는데 큰 오산이였다.

처음에는 바로 바로 보여져서 재밌었는데 쉽지 않았다.
스스로 할 줄 아는 것이라고 여겨졌던 것들도 정상 작동 안 되어 계속 찾아야했고 네비바는 지멋대로에 이미지 삽입도 안 되고 ....
(대부분 타임리프 튜터리얼 확인해서 해결 해야했음)
그래도 즉각적으로 보여지면서 조금씩 수정하니까 재밌기는 했다.

6/11

프로젝트 마무리 단계(역시 공부는 아침에 해야 집중이 잘 된다)

정리

사실 그동안 배워왔던 것을 여기저기 기록했다가
한 곳에 정리하는 이 작업을 하면서
내가 잊고있었던 지식들이 정리가 되었다.

가끔은 그 동안 내가 뭘했나 허탈감도 들었었는데
짧다면 짧지만 꾸준히 포기 않고 걸어온 결과,
지금의 내가 있음을 깨달았다. 스스로가 기특했다.

분명 현재의 나는 많이 부족하다.

하지만!

이 과정을 통하여 입사 후 새로운 것들을 배울 준비가 되어있다는
자신감이 생겼다. 그래서 하루 빨리 협업에 뛰어들어
그 회사에 알맞는 지식들을 배우고 조금씩 성장해나갔으면 좋겠다.

나 스스로가 당당히 웹 개발자로 불리어지게 된 날을 기대하며
남은 기간 동안 꾸준히 개발하고 기록하며 앞으로 나아갈 것이다.

긴 글을 읽어주신 모든분들께 감사의 말씀 드립니다.

profile
꾸준함을 통해 완벽을 추구합니다.

0개의 댓글