본문 바로가기

개발자186

Milestone(23년 9월 9일) 2023년 09월 ~ 현재- 외국계 회사로 이직(23년 9월 11일 첫 출근) 2022년 10월 ~ 2023년 08월- 현직 서버 개발자 스터디 시즌1(Effective Java 완료)- 현직 서버 개발자 스터디 시즌2(가상 면접 사례로 배우는 대규모 시스템 설계 기초 완료)- 현직 서버 개발자 스터디 시즌3(토비의 스프링 v1 완료)- 첫 회사 퇴직(11개월 근무, 23년 8월 31일 퇴사) 2022년 10월 18일(취업 완료)  2022년 8월까지의 목표1. 코딩 테스트- Java로 자료구조 구현(완료)- LeetCode 문제 풀기 (완료)- 프로그래머스 (고득점 kit, 완료) 2. 기술면접- 컴공 기초 지식 복습(컴공 기초, 자료구조/알고리즘, 네트워크, SQL, Spring) 3. 백엔드 공부-.. 2023. 9. 9.
지극히 개인적인 OOP에 대한 원초적인 접근과 해석 0. 개요 요즘 스터디에서 토비의 스프링을 읽고 있습니다. 책을 읽다보니 내가 그동안 짜던 코드는 OOP적인 코드가 아니라는 것을 깨달았습니다. 머리로는 "이해하고 있다"라는 착각을 하고 있던 것이죠. 그래서 근본적인 질문과 관점으로 다시한번 OOP에 대해 배워보려고 합니다. 1. OOP란 무엇인가? OOP는 객체지향 프로그래밍(Object Oriented Programming)의 약자입니다. 그렇다면 이 객체 지향이라는 것이 무엇일까 궁금증이 생깁니다. 객체지향이라는 것은 한 묶음의 소스코드를 객체라는 하나의 단위로 보는 것입니다. 그리고 이 객체 간의 상호작용을 통해서 하나의 프로그램이 돌아가게 되는 것이죠. 마치 전대물에 나오는... 수십가지 서로 다른 로보트가 합체해서 새로운 로보트가 되는 것과 .. 2023. 8. 6.
AOP(Aspect Oriented Programming) 개념과 구현 0. 개요 - 토비의 스프링 6장을 읽다보면 AOP에 대한 이야기가 나온다. - 해당 부분에서 Proxy가 왜 등장하는지, AOP와 proxy가 무슨 관계가 있는지 등 이해할 수 없는 부분이 너무 많았다. - 즉, 내가 AOP에 대해 모르고 있기에 이해할 수 없다는 것을 깨닫고 AOP에 대해서 정리해보기로 했다. - 나와 같이 AOP 기본개념에 대해 모르는 분들에게 도움이 되기를 바란다. 1. AOP와 Proxy의 상관관계 - AOP 이야기를 할때면 프록시 이야기가 빠지지 않고 나온다. - 왜 그럴까? AOP와 프록시가 무슨 관계가 있는 것일까? 아니 그보다 프록시란 정확하게 무엇인가? - 이에 대해서 이해해보자. a) Proxy가 뭔데? - 프록시는 어떤 역할을 대신 수행하는 대상을 가리킨다. - 네트.. 2023. 7. 24.
자바에서 람다를 사용하는 방법 0. 개요 - 자바에서 람다를 잘 써보고 싶은 마음에 본 포스팅을 준비했습니다. - 우선 람다를 이해하기 위해서는 기본적인 인터페이스에 대한 이해도가 필요합니다. - 인터페이스를 시작으로 람다에 대해 배워봅시다! 1. 인터페이스를 매개변수로 받는 메서드 - 인터페이스를 매개변수로 받으면 어떻게 될까? - 한번도 의식적으로 사용해 본 적도, 생각해 본 적도, 고민해 본 적도 없는 질문이다. - 다음 코드를 보자. 예시코드 public static void main(String[] args) { static void sound(PrintThing printThing) { printThing.print(); } } public interface PrintThing { void print(); } - 위의 코드.. 2023. 6. 26.
3년의 회고(개발자를 꿈꾸는 당신에게) 0. 시작하며 다들 안녕하시죠? 정말 오랜만에 글을 쓰네요. 취준 당시에는 취업하면 꼭 회고록을 써야지라는 다짐을 하곤 했는데, 막상 취업을 하고보니 내가 걸어온 길이 그리 대단한 길은 아니더라구요. 그때 그런 마음을 가질만큼 열심히 했구나, 지난 시간을 되돌아보며 잠시 소화하는 시간을 가졌습니다. 이번 회고는 개발자로 취직하기까지 지난 3년의 시간을 복기하고, 개발자에 도전하시는 분들에게 조금이나마 도움이 되기를 바라는 마음을 담았습니다. 그럼 시작해볼까요?! 1. 개발자가 되기까지 a) 어쩌다 3년 19년 10월에 국비교육에서 처음 개발을 시작해서 22년 10월에 취직했습니다. 따져보니 개발자가 되기까지 3년 걸렸더라구요. 제가 생각하는 신입 개발자로서 기준이 있던 것 같아요. 어쩌면 신입이라는 수식.. 2023. 1. 1.
11. SAI(RestAPI) 사용 설명서 1. SAI는 어떻게 동작하나요? - SAI는 JWT를 기반으로 요청과 응답을 제공하는 RestAPI 서버입니다. - JWT는 회원가입, 일반 로그인에서 제공됩니다. a) Filter - 회원가입과 일반 로그인을 요청할 때에는 JWT를 기반한 검증을 수행하지 않습니다. - 그 외의 요청을 할 때에는 반드시 유효한 JWT를 쿠키로 보유하고 있어야 합니다. - 이 부분은 Filter를 이용하여 구현했습니다. - 아래의 코드는 JwtFilter 클래스의 한 부분입니다. @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException.. 2022. 9. 14.
10. 배포 완료 1. SAI의 RestAPI 서버를 소개합니다. https://restsai.herokuapp.com/sai-api Swagger UI restsai.herokuapp.com - 올해 6월에 시작하여, 4개월이 지난 오늘 드디어 프로젝트 SAI RestAPI 서버의 마침표를 찍었다. - 개발 기간은 4개월이지만, 여기까지 오는데 2년이 걸렸다. - 지난 2년 동안 매일을 실수하고 개선하고 실패하고 도전하고 배우고 연습하며 스스로의 멱살을 부여잡고 왔다. - 이전에 무언가 꾸준히 하는 것을 은은하게 달리는 것이라 표현했는데, 은은하기 보다는 꽤나 치열했다. - 이제 유종의 미를 거둘 시간이다. 좋은 결과가 있기를 바란다. 2022. 9. 14.
7. 오류 해결 스토리 - constraint ["PUBLIC.UK_MBMCQELTY0"] 0. 문제 설명 a) 오류 소개 - Entity에 새로운 속성을 부여하기 위해서 코드 수정을 진행하고 있었다. - 새로운 속성을 이용한 쿼리를 테스트하는 과정에서 다음 오류가 발생했다. org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint ["PUBLIC.UK_MBMCQELTY0FBRVXP1Q58DN57T_INDEX_8 ON PUBLIC.MEMBER(EMAIL) VALUES 5"; SQL statement: insert into member (email, member_name, password, sign_up_date, visibility, member_id) val.. 2022. 7. 30.
6. 오류 해결 스토리 - Update/delete queries cannot be typed 0. 문제 설명 a) JPQL을 이용한 Update 쿼리 작성 - 회원 정보를 수정하기 위해서 다음과 같은 쿼리문을 작성했다. public int updateById(Long id, String name, String email, String password) { return em.createQuery("update Member as m " + "set m.name = :name, m.email = :email, m.password = :password where m.id = :id", Member.class) .setParameter("id", id) .setParameter("name", name) .setParameter("email", email) .setParameter("password", p.. 2022. 7. 30.