전체 글 87

코딩테스트, 언어는 뭘써야할까? 자바? 파이썬? C++?

개발자로 취업/이직을 위해서 코딩테스트는 필수인 시대가 되었다. 알고리즘은 전공했을 때부터 중요성을 익히들어왔고, 공부하는 것이 당연하다고 생각한다. 그러나, 사실 실무에서는 매번 알고리즘을 따져가며 생각하진 않았기 때문에 어느정도는 동떨어진 감이 없지 않아있지만 기본 소양이 된다는 점에서는 매우 긍정적인 편이다. 암튼 필요성은 인지하고 있었다는 말이다. 먼저, 코딩테스트를 준비하는 입장에서 가장 첫 관문은 어떤 언어를 선택할 것인가?라고 생각한다.  너무 막막하지 않은가..?무작정 막막한 것은 아니었다. (사실 책도 구매하고, 강의도 들어봄...) 하지만 이때마다 뭔가 20%가 계속 부족한 느낌이 들었다.사실 코딩이 좋아서, 개발이 좋아서, 프로그램이 좋아서 개발자를 해야겠다고 마음 먹었던 순간과는 조..

백엔드, 알아두면 유용한 클래스 네이밍 규칙

Controller 클래스 작성 규칙 - [메인테이블 명]+Controller.java 로 작성한다. - 컨트롤러 클래스 안에서 메서드 명을 작성 할 때는 아래와 같이 접미사를 붙인다. n productList() – 목록 조회 유형의 서비스 n productDetails() – 단 건 상세 조회 유형의 서비스 n productSave() – 등록/수정/삭제 가 동시에 일어나는 유형의 서비스 n productAdd() – 등록만 하는 유형의 서비스 n productModify() – 수정만 하는 유형의 서비스 n productRemove() – 삭제만 하는 유형의 서비스 Service 클래스 작성 규칙 - [메인테이블 명]+Service.java로 인터페이스를 작성한다. - [메인테이블 명]+Servic..

[SpringBoot] 관습적인 추상화 Service, ServiceImpl 구조를 사용해야 할까?

Service interface와 ServiceImpl class 구조를 사용하는 이유? 대부분의 프로젝트는 Service를 만들 때 MemberService와 같이 서비스를 인터페이스로 설계하고, MemberServiceImpl 라는 구현체인 클래스를 생성해서 사용하는 방식으로 설계됩니다. 그동안 프로젝트를 하며 이유도 모른체 그냥 구조가 그런가 보다 하면서 계속 만들어서 사용하다가 이번에 그 이유에 대해 알고 싶어서 잘 정리된 몇몇 분들의 자료를 참고하여 정리하게 되었습니다. 내용 중 잘못된 부분은 댓글을 통해 말씀해주시면 찾아보고 수정하며 공부하겠습니다. 이론상으로 위와 같은 Service, ServiceImpl 패턴으로 설계를 해야하는 이유는 인터페이스와 구현체를 분리함으로써 구현체를 독립적으로 ..

[SpringBoot] @RequestParam과 @PathVariable 차이

온보딩 과제를 수행하다보면서 느낀점은 아주 기본적인 것에서 실수하는 일이 생각보다 많다는 것이다. 다시금 CS 공부의 소중함을 깨닫고.. 오류해결 과정을 포스팅한다. Resolved org.springframework.web.bind.MissingServletRequestParamterException 서버를 실행하고 API를 실행하니 바로 오류가 발생했다. 그 이유는.. PUT으로 mapping한다고 적어놓고, @RequestParam을 당당하게 적은 탓이다^^...@PutMapping은 @PathVariable로 리소스 id를 받아야한다. controller에서 parameter를 받는 방법에는 여러가지가 있다. 그 중 가장 많이 사용하는 두 가지를 혼돈할 줄은 몰랐는데... 다시는 이런실수 하지않기..

백엔드, 좋은 코드란 무엇일까? 클린코드?

좋은 코드가 도대체 뭐지? ‘좋은 코드란?‘이라고 구글링해보면 많은 검색 결과가 나온다. 나도 그렇고 다들 궁금했던듯하다. ‘좋은 코드’란 녀석은 정체도, 실체도 없이 이 세상에 떠돌고 있다. 모두가 ‘좋은 코드’의 기준이 조금씩 다르고 각각의 경험을 기반으로 좋은 코드를 정의하고 있다. 세간에 좋은 코드의 정의는 정말 많다. 읽기 쉬운 코드 중복이 없는 코드 테스트가 용이한 코드 등등… 읽기 쉬운 코드가 좋은 코드? 이 제목의 책도 있다. 제목 그대로의 내용을 담고 있고 읽기 쉬운 코드를 작성하기 위해서 지켜야 할 몇 가지를 제안하고 있다. 읽기 쉬우려면 주석을 쓰면 되지 않나? 단순하게 생각해서 읽기 쉽도록 코드를 작성하려면 작성자에게 익숙한 언어를 사용하면 된다. 한국인이라면 영어로 복잡하게 작성된..

개발.log 2023.10.10

인터페이스 네이밍은 어떻게 해야할까?

개발을 하다보면, service를 인터페이스로 만들어주고 implements해서 사용할 때가 많다. 그러나, 어느샌가부터 인터페이스를 만들고 단일 구현체를 만들어 기계처럼 코드를 작성해왔다는 생각이 들며 포스팅을 정리하게 되었다. 인터페이스 구현체 Impl 접미사는 지양해야한다 헝가리안 표기법의 잔재 학교나 단순한 코드 개발 등 생각보다 꽤 많은 곳에서 아직까지 이런 layout을 본 적이 있을 것이다. 인터페이스를 구현한 구현체에는 Impl 접미사가 붙은 걸 볼 수 있다. 이는 헝가리안 표기법의 잔재로, 지양해야 하는 표기법이다. 인터페이스 네이밍 방법 인터페이스를 네이밍할 때는 인터페이스의 이름을 그 의미 자체에 따라 지어야 한다. 예를 들어 전진go()), 후진(back()), 현재 위치 반환(ge..

개인정보보호 브라우저 덕덕고(DuckDuckGo)

요즘 IT 트렌드 파악을 위한 일일과제로 Tech 칼럼이나 기사를 구독하고 있다. 오늘의 내용 중 덕덕고(DuckDuckGo)라는 브라우저에 대해 알게되어 포스팅해보려고 한다. 개발자에게 구글링이란 뗄 수 없는 존재라는 건 모두가 공감할 것 같다. 덕덕고(DuckDuckGo) 2008년에 개발된 오픈소스 기반의 무료 브라우저. 개인정보 보호를 매우매우매우 중요하게 생각하기 때문에, 검색어를 수집하지 않는다는 것이 특징이다. 2014년에는 “구글 등 다른 검색엔진이 불필요하게 많은 정보를 탐낸다"라며, 공개적으로 구글을 까며 스스로를 ‘반(反) 구글’이라고 하는 신박한 브라우저다. 🦆DuckDuckGo = https://duckduckgo.com DuckDuckGo — 개인정보 보호, 간단합니다. The ..

[Lombok]@ToString 부모의 toString() 함께 출력하기

자바 쫌 써봤으면 extends 상속은 당연히 했겠지? 평소와 다름없이.. extend로 DTO를 공장처럼 찍어낼 때, 갑자기 이상한 현상이 나왔다. Super() 키워드로 분명, 부모클래스를 초기화했는데 자식클래스에서 logging을 해보니까 부모가 없는것..!? 근데 또 디버깅모드로 직접 객체 안을 살펴보면 잘 들어가있다..? 대환장 - 이때 사용하면 되는 태그가 바로 @ToString(callSuper = true) callSuper()의 default가 false이니 @ToString(callSuper = true)로 설정해 줍니다. false일 경우 부모의 toString을 출력해주지 않겠다는 설정이기 때문에 꼭 True로 바꿔줘야 한다. @Data @EqualsAndHashCode(callSu..

[SpringBoot]Multiple @RequestBody values in one controller method/@RequestBody 여러 개 사용/HttpMessageNotReadableException 해결

무지성으로 개발하다 보니,, 점점 기본적인 CS 지식들을 잊어버리는 기분이 들었다. 당연하게 @RequestBody를 쓰던 중 추가되는 요건으로 점점 DTO는 늘어나고,, @RequestBody를 추가하는 일이 생겼다. 문법적 오류는 없었기 때문에 별다른 이슈가 없었고 API를 실행하니 터졌다ㅋㅋㅋㅋ org.springframework.http.converter.HttpMessageNotReadableExcept ion: Required request body is missing 한마디로.. RequestBody를 JSON형식으로 파싱하여 인식하지 못했다는 것이다. 생전 처음 보는 이슈에 이게 뭐지.. 싶었지만 자세히 보니 @RequestBody가 두 개 선언되어 있는 나의 controller를 마주했다..

[Mybatis][Mysql] <[![CDATA[…]]> 사용법/CDATA 꼭 써야하나?/XML Parser 문자열인식

백엔드 프로젝트를 하면 쿼리를 작성하고 Back logic을 작성할 일이 많아지는데 그때, SQL Mapper로 MyBatis를 쓰면서 mapper.xml 파일에 라고 쓰인 것을 자주 보았을 것이다. [개발하면서 뜬금없는 호기심 1탄] Mybatis 모든 쿼리문에 꼭 CDATA를 사용해야할까? CDATA 란? 쿼리를 작성할 때 '', '&'를 사용해야 하는 경우가 생기는데 xml에서 그냥 사용하면 mapper에 작성된 , 와 같은 태그로 인식한다. 그렇다면 mapper.xml에 작성된 태그 괄호와 달리 이 등호는 '쿼리에 필요한 코드'라고 알려줘야 한다. 그때 사용하는 것이 이다. 사용법 XML에서 파싱 할 대상으로 인식하지 하지 않도록 그 구역을 지정해 주는 것이 CDATA이다. XML로 파싱을 원하지..

개발.log/database 2023.09.20