본문 바로가기

개발자 취업 프로젝트[일지]

💻개발자가 되기 위한 프로젝트(79)💻

1. AM 09:00 ~ PM 18:00분 : BE(백엔드 KDT)

  - [AM 09:00 - PM 11:50]

[AI 특강] AI가 필수가 되는 시대 - 데이터 엔지니어링

  - 앞으로 인공지능이 계속해서 발전하는데, 백엔드 개발자들은 백엔드 개발만 하는 것이 아니라 추가적으로 AI쪽도 학습하고 조금씩 영역을 넓혀가고 어떤 분야로 나아가면 좋을지를 이야기를 하셨고, 다양한 백엔드 개발자들이 커리어를 데이터 엔지니어링, 데이터 분석가 등등으로 가고 어떤 툴을 사용하는지에 대해서 대학원의 진학 또한 필요한가에 질의응답을 통해 마무리 하였음

[AI 특강] AI가 필수가 되는 시대 - 데이터 엔지니어링 후기

 - 다양한 분야로 영역을 넓혀 갈 수 있다는 것과 어떤 스킬을 요구하고 준비하면 좋을지와 하나하나 질문에 대해서 설명해주신 점들이 너무 좋았음. AI의 영역중에서 물론 수학과 통계 영역이 필요한 파트도 있지만, 데이터 엔지니어링에서 중요시 한 것은 파이프라인을 설계하고, 데이터를 어떻게하면 조금 더 사용하기 좋게 인프라를 구축할 수 있을까에 대해서도 고민하고 계속해서 데이터를 가공해보고 경험을 통해서 더 공부가 필요하거나 분석등 나가고 싶다면 데이터 분석쪽으로 대학원을 가거나 또는 논문을 통해서 진로를 개척해 나가는 경우등을 예시로 잘 들어 주셔서 조금 더 진로에 대해서도 고민했던 부분을 잘 캐치해주신 점이 잘 해소가 된 것 같아서 좋았음.

 

2. AM 09:00 ~ PM 18:00분 : BE(백엔드 KDT)

  - [PM 13:00 - 18:00]

[SQL특강] SQL 문법

  ✔ [SQL문법 - SQL 사용 환경]

    - Google Bigquery(Cloud)를 이용함[구글 계정으로 따로 새프로젝트를 생성하여 SQL을 사용할 수 있는 환경을 갖춤]

 

  ✔ [SQL문법 - 학습한 문법]

    - Select, From, As, Limit, Distinct, Where, Group By, Having, Order By, Round, Count, Date(), Datetime(), Extract(), Case, If, Join, Sub Query, With절을 학습함

 

  ✔ [학습내용]

    - Google Bigquery(Cloud)를 이용하여 Sample Data로 문법하나하나의 개념과 실습을 통해서 이해를 하는 방향으로 수업이 진행 되었음

[SQL특강] SQL 문법(실습)

SQL 문법을 Google Cloud BigQuery를 이용하여 SQL문법을 Simple Data를 불러와 실습을 진행함

[SQL특강] SQL 문법(실습 후기)

 - 이미 Select, from, as, where, order by, group by에 대해서는 어떻게 Data를 뽑아야 하는지 또는 table생성, insert문을 통해 data를 생성해주고 하는 CRUD부분은 잘 알지만, 이번 강의에서는 이미 가공된 Simple DB를 가지고 SQL문법을 진행하였고, 좀더 응용하는 형태로도 학습이 진행 되었고, 그 의미와 어떻게 사용을 해야하는지 스킬에 대해서 학습을 받았고, 여러 문법들이 있지만, 그 중 필요할때 검색하여 사용하면 좋지만 자주 사용하는 문법과 꼭 잊어서는 안되는 문법, 즉 자주 사용하는 문법은 실무에서도 요구하는 데이터를 추출해야할때 얼마나 경험했고 이해를 하고 있는지에서 SQL에 대해서 숙지를 하고 있는가, 또는 원하는 데이터를 잘 추출하여 View단에도 문제없이 클라이언트 요구에 맞춰 시각화하는 단계에서도 문제없이 이루어지는 것이 최고의 베스트라고 생각함. 특히 서브쿼리, 조인부분을 조금 더 학습이 필요하고, Having 또한 사용을 많이 안해봐서 익숙하지 않아서 더 공부해볼 필요성을 느꼈음.

 

3. 미니 프로젝트 [게시판 만들기]

 

 - BE : SpringBoot

 

   ✔ [MVC Pattern]

     - Controller

        1. Domain setting => "/signIn"

        2. ResponseDto를 참조받는 SignInResponseDto 참조타입의 function을 생성함

        3. authService의 기능을 이용하여 결과 값을 반환시켜주는 작업 진행함

     - SignInDto

        1. Member Field Setting [userEmail, userPassword]

     - SignInResponseDto

        1. Memeber Field Setting [token, exprTime, user]

     - AuthService

        1. @Autowired를 이용하여 TokenProvider의 기능을 사용하겠다고 의미를 부여함

        2. SignIn method SignInDto타입 dto parameter를 설정하여 userEmail, userPassword 변수를 생성하여 dto에서 userEmail, userPassword 값을 대입받음

        3. try-catch문을 이용하여 userEmail, userPassword가 존재하는가를 boolean 타입을 이용하여 로그인 정보가 일치하면 "Success 메시지"를 출력하고, 그 반대라면 "로그인 정보가 일치하지 않다는 메시지"를 남겨주고 그 외의 문제발생 시 "DB와의 Error라는 메시지"를 보여줌

        4. UserEntity를 이용하여 userEmail의 값이 DB의 값과 Input value값이 일치한지 여부를 묻고 일치하면 위와 동일하게 메시지를 남기고, 일치하지 않다면 DB Error로 표현함

        5. userPassword는 빈값으로 표현해줌

        6. token을 user에게 부여하여 사이트를 이용시에 사용기간까지 추가로 부여하여 사용만료가 되면 회수하는 형태로 진행이 되도록 만듬

    - UserRepository

       1. boolean 타입을 받는 existsByUserEmailAndUserPassword method를 만들어 userEmail, userPassword를 받아와주는 기능을 만듬 => userEmail, userPassword가 일치한가, 일치하지 않는가를 판별하기 위함임

    - TokenProvider

      1. Member Field setting [SECURITY_KEY(검증하기 위함)]

      2. create method를 생성하여 userEmail에게 이용할 수 있도록 사용시간을 부여하고 만료되면 회수되도록 만들고, JWT을 이용하여 PK인 userEmail값에 암호화 알고리즘키를 설정하고 만료일을 기입하여 생성되도록 작업함

      3. validate method를 생성하여 token이 DB에 저장될때, Test를 위해 userEmail값이 보여질때 복호화된 상태로 값이 반환되도록 작업함

 

   ✔ [진행상황]

     - SignUp 한 DB의 Data가 SginIn Domain을 PostMan 툴을 이용하여 Request 했을때, DB의 Data가 일치한지를 Test하고 일치하다면 Success 메시지가 결과물에 표시되고, userEmail이 현재 PK로 되어 있는데, JJWT 를 이용하여 DB Data결과물이 표시되거나, 저장될때 암호화 된 상태로 진행됨

     - exprTime을 이용하여 user에게 만료날짜를 설정해줘 기간 또는 지정한 시간이 만료되면 회수하는 권한을 형태로 만들어 진행 하였음

미니 프로젝트[게시판 만들기 - 실습(BE)]

미니 프로젝트 - userEmail이 복호화되어 Test시 userEmail 값 부분이 복호화된 상태로 표시가 되는가를 출력결과로 확인함

미니 프로젝트[게시판 만들기 - 실습(BE) 후기]

 - JWT 의존성 부분에서 jjwt 0.9.1버전만 다운을 받았을때 postMan으로 Request를 보내면 Response로 Server Internal Error라는 문구가 PostMan에서 결과가 나왔음. 코드의 문제는 아니었다는 결론이 나온 이유는, jjwt를 이용할때에만 즉, token을 userEmail에게 부여할 때만 Error가 났으며, 전체적으로 userEmail, userPassword의 정보가 잘 나왔음을 Test결과로 확인함. 그래서 구글링을 하면서 이유를 쉽게 찾지는 않았지만, JDK 11버전 이후 호환성 문제였다는 것을 알게 되었고, jjwt를 사용할때에는 추가적으로 의존성을 더 다운을 받아줘야 한다는 것을 알게되었고, 너무 유익했고, 시간이 오랜시간동안 지연되었고 해결은 하였지만, 꼭 짚고 넘어가야겠다는 생각에 회고때 작성을 하게 됨. JDK 호환성 문제로 의존성에서 발생할 것이라고는 생각을 못했지만, 경험을 토대로 앞으로는 에러가 발생하더라도 지금의 경험으로 빠르게 문제해결을 할 수 있을 거라는 생각이 들었음. (추가 의존성 : com.sun.xml.bind:jaxb-impl:4.0.1[impl], com.sun.xml.bind:jaxb-core:4.0.1[core], javax.xml.bind:jaxb-api:2.4.0-b180830.0359[jaxb-api])