공부하게 된 배경 Ajax, Axios를 공부하며, 우리가 흔히 알고 있는 REST API와 어떻게 다른지 정확히 알아보고자 한다. 이전 포스트 참고 : Ajax, Axois, fetch 다루는 내용 REST RESTful API RESTful API란? RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하...
Ajax, Axios, fetch
공부하게 된 배경 JavaScript에서는 서버와 통신하기 위해 흔히 Ajax 방식을 사용하는데, 이 ajax가 정확히 무엇이고 어떻게 동작하는 지에 대해서 정확히 알아보려 한다. 이와 더불어 Axios와 fetch에 대해서도 같이 공부하려 한다. 통신 방법에 대해서 그 맥락을 같이하는 REST API에 대해서도 정확히 알아두면 좋겠다는 생각에...
개발자의 기술 부채
최근 디자인 패턴에 대해서 공부를 하며, 확실히 아는게 많아질수록 많은 것이 보인다는 것을 여실히 느낀다. 과거에 개발된 코드들을 보면, 흔히 말하는 레거시, 기술부채들이 정말 많이 보인다. 그러한 코드들은 변경에 취약하거나 코드 파악이 쉽지 않은 경우들이 많다. 이는 개발한 지 얼마되지 않은 코드들에 대해서도 마찬가지이다. 물론 그 당시에는 내가...
좋은 개발자란 무엇일까(작성 중)
지난 포스팅에서는 좋은 회사란 무엇일까에 대해서 고민하는 시간을 가졌다. 그렇다면 좋은 회사에서 뽑고 싶어하는 좋은 개발자란 무엇이고, 나는 무엇을 차근차근 준비해야할까? 에 대해서 고민해야할 차럐이다. 좋은 회사가 무엇인지를 생각하는 것보다 훨씬 더 어려운 것 같다. 지금 당장에 모든 것을 쓸 수는 없겠지만 실무를 경험하며 생각이 날때마다 하나씩...
좋은 회사란 무엇일까
스터디를 하며 좋은 기업이란 무엇이고, 내가 지향해야할 개발 문화와 앞으로의 미래에 대해서 한번 더 생각해보는 시간을 가졌다. 이는 곧 다르게 말하면 이직 시 고려해야할 사항이라고도 할 수 있을 것 같다. 아래의 생각은 순수하게 내 생각이며, 추후 변동될 수도 있겠지만 미래의 내가, 남들의 이야기만을 듣고 흔들리는 일은 없었으면 좋겠다. 좋은 기...
헤드퍼스트 디자인패턴 Chapter1, 전략 패턴
공부하게 된 배경 디자인 패턴은 주니어 개발자에서 나아가기 위한 필수 코스라고 생각한다. 디자인 패턴이 왜 중요할까? 왜 수많은 기업들에서는 디자인 패턴을 적용해서 개발하려하고, 개발자들에게 필독 도서로 추천할까? 아마도 그 이유는 결국 ‘유지보수’로 귀결되겠지만, 그 이유를 제대로 알아보고 필요성을 느껴보려 이 책을 공부하려 한다. 디자인패...
Gradle과 Maven
공부하게 된 배경 Gradle과 Maven은 둘 다 프로젝트 빌드, 의존성 관리 등을 자동화하는 빌드 도구다. 서버 개발에서는 여러 모듈과 라이브러리를 사용해 어플리케이션을 개발한다. 따라서 보통 Gradle 또는 Maven을 선택해서 사용하는 것이 대다수다. 나는 사이드 프로젝트에서는 Gradle을 사용해왔지만 회사에서는 Maven을 사용하고...
JDK, JRE, JVM, JIT
공부하게 된 배경 IDE에서 새로운 프로젝트를 생성하게 되면, 반드시 JDK를 설정해주어야 한다. 그렇지 않으면 그 프로젝트를 실행시킬 수 없다. IntelliJ로 새로운 프로젝트를 생성하던 중, JDK에 대해서 정확히 정리해야겠다는 생각이 들었다. JDK, JRE, JVM은 Java를 다루는 개발자들에게는 필수적으로 알아야할 요소이기 때문이다....
Lombok
공부하게 된 배경 대부분의 Java 개발자들은 기계적인 코드 작성을 피하기 위해 이미 Lombok을 필수적으로 사용하고 있을 것이다. 나 또한 이미 현업에서 Lombok 어노테이션을 굉장히 많이 쓰고있지만, 무분별한 남용보다는 필요에 따라서 최소한으로만 적용하면서 개발하는 습관을 길러야겠다는 생각이 들었다. 보일러플레이트1 코드를 최소화할 수 있는...
추상클래스와 인터페이스(조금 더 정리 필요)
공부하게 된 배경 디자인 패턴 및 클린 코드를 공부할 때 가장 많이 나오는 개념이 바로 ‘추상화’가 아닐까 싶다. 따라서 추상화의 핵심인 추상클래스와 인터페이스의 개념을 확실히 하고자 이 글을 포스팅한다. 다루는 내용 추상클래스 인터페이스 추상메소드 추상클래스와 인터페이스 추상 클래스 vs 인터페이스 정리 표 ...
Spring JDBC, JdbcTemplate
공부하게 된 배경 지난 번 JDBC를 포스팅하며 마지막에 JdbcTemplate은 개발자가 JDBC 기술을 쉽게 사용할 수 있도록 도와주는 클래스라고 간단하게 언급했다. JDBC 포스팅 보러가기 나와 같은 주니어 개발자들은 이제 사실상 jdbcTemplate보다는 JPA, QueryDsl이나 MyBatis 등을 대부분 이용하고 공부하겠지만 !...
서브넷, 서브넷마스크
공부하게 된 배경 정보처리기사를 공부하며 가장 어려웠던 부분인 서브넷에 대해서 정리해본다. 다루는 내용 서브넷 서브넷 마스크 IP, 클래스 네트워크 주소, 브로드캐스트 주소 서브넷이란? 네트워크가 작은 조각으로 쪼개져 있는 경우, 이러한 조각을 서브넷이라고 한다. 즉, 작은 네트워크라고 할 수 있다. 전 세계에는 수백...
JDBC
공부하게 된 배경 전부터 ORM에 대해서 공부하며 JDBC에 대해서 정확히 정리해야겠다고 생각했는데, HikariCP를 포스팅하면서 이참에 이어서 JDBC를 포스팅하는 것이 좋겠다고 생각해 포스팅하게 되었다. HikariCP(Connection Pool) 포스팅 보러가기 Spring Data JDBC, Spring Data JPA 등과 같은...
사용 중인 Port 찾아서 Kill하기
포스팅 배경 IntelliJ에서 Application을 실행(Run) 한 뒤, 실행 중지(Stop)하지 않은 채로 프로젝트 창을 닫아버리게 되면 어플리케이션이 로컬 내에 계속 해서 실행되고 있는 경우가 있다. 그렇게 되면 Port는 계속해서 살아있고, 해당 프로젝트 혹은 (같은 포트를 사용하는) 다른 프로젝트를 켜서 실행(Run)을 하려고 하면 해...
SSH(대칭키, 비대칭키)
공부하게 된 배경 AWS를 이용해서 EC2 서버를 띄우게 되면, 그 호스트에 접속하기 위해서 CLI 상에서 SSH 프로토콜을 사용하게 된다. SSH가 원격 호스트에 접속하기 위해 사용되는 프로토콜이라는 것까지만 알고 있었는데, SSH가 정확히 무엇인 지, 어떠한 방식으로 원격호스트에 접근하는 지에 대해서는 정확히 알고 있지 않았다. 따라서 이번 기회...
HikariCP, Connection Pool
공부하게 된 배경 나와 같이 Java, 특히 Springboot를 이용하여 개발하는 사람들에게 HikariCP는 매우 익숙하다. 나는 개발을 시작하면서부터 자연스럽게 HikariCP를 이용하고 있었는데, 그동안 아무 생각없이 사용하던 이 라이브러리를 이번 기회에 정리하려고 한다. Spring 에서는 사용자가 직접 커넥션을 관리할 필요없이 자동화...
parseInt() vs valueOf(), Wrapper클래스
이 글에서 다루는 내용 Integer.parseInt() vs Integer.valueOf() 기본형 타입과 참조형 타입 Wrapper 클래스 Boxing과 UnBoxing 공부하게 된 계기 Java는 자료형에 대해서 엄격하기 때문에 자료형 변환 메소드를 사용할 일이 많다. 그 중 대부분의 개발자들이 가장 많이 사용하는 변환은 ...
Linux Crontab
핵심 요약 * * * * * 분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7) crontab을 공부하게 된 배경 백엔드의 경우에는 일반적으로 추후 유지보수를 위해 Application Server에서 많은 로그들을 쌓는데,(에러 또는 수행 결과 등) 특히 API 서버같은 경...
키보드 특수 기호 명칭
이번 포스팅은 개발에 직접적으로 관련된 지식은 아니지만, 알아두면 좋을 상식이라고 생각해서 적어본다. 코드 리뷰를 비롯해서 누군가에게 설명해줄 때, 특수기호에 대한 용어를 몰라서 어떻게 말해야할지 당황한 적이 있다. (이와 비슷하게 영어 발음도 제대로 알아야할 것 같다… 최근 coalesce를 어떻게 발음해야할지 몰라서 당황했다..) 특수기호에 대...
IntelliJ 유용한 단축키 정리
IntelliJ에서 유용한 단축키를 알아보자. 내가 많이 쓰는 단축키는 인용문에 적어놓았다! 목차 1. 기본 단축키 2. 코드 Edit 3. 포커스 4. 검색 5. 자동완성 6. 리팩토링 7. 디버깅 8. Git 9. 플러그인 기본 단축키 디렉터리, 패키지, 클래스 등 생성 목록 보기 MacOS: Cmd + n Win/L...
쉘(Shell)
공부 배경 서버 개발자에게 리눅스(Linux)란 뗄래야 뗄 수 없는 존재다. 대부분의 서버는 리눅스 운영체제를 사용하고 있기 때문이다. 백엔드 개발자들이 리눅스 환경에서 서버를 배포하는 이유는 아래와 같다. 웹서버(Web Server)인 Apache, Nginx 등이 리눅스 환경에서 최적화되어 돌아간다. 무료 오픈소스 운영체제이므로 별...
마크다운 사용법
GitHub 블로그는 기본적으로 .md 파일을 추가하여 게시글을 업로드한다. .md파일이란 MarkDown 문법으로 작성된 파일을 말하며 이를 작성하기 위해서는 그 문법을 알아보자. Markdown이란? 텍스트 서식을 지정하는 데 사용되는 경량 마크업 언어 온갖 태그를 사용해서 작성하는 HTML 문서와 다르게 읽기도 쓰기도 쉬운 문서 양식을...
Github 블로그 생성기(3)
여기서부터는 필수사항은 아니고, 선택사항이라고 생각한다. Github 블로그를 좀 더 편리하게 관리하고 싶은 사람들만 참고하면 된다. Github 블로그는 어떻게 관리할까? Github 블로그는 일반 서비스형 블로그(티스토리 등)처럼 자체적인 수정 페이지가 있는 것이 아니라서, 보통 VSCode 같은 에디터로 수정한다. 일반적인 편집 흐름을 ...
Github 블로그 생성기(2)
지난 시간에 마음에 드는 Jekyll Theme를 로컬로 Clone 받은 뒤, 'Username.github.io' 의 이름으로 만든 Repository에 Push 하는 것까지 마쳤다. 물론 이 과정에는 Clone 받은 폴더의 Git 연결을 끊고, 내 Repository로 새로 Remote해주는 것이 필요하다.[1^] 이 부분을 간략히 설명하자면,...
Github 블로그 생성기(1)
Github 블로그를 생성하기까지 굉장히 많은 헤메임이 있었다. 그 과정에서 새로운 것들을 많이 배웠기 때문에 좋은 경험이라고도 할 수 있겠지만, 조금은 답답했던 것도 사실이여서(얼른 만들고 글쓰고 싶어..) Github 블로그를 만들고자 하는 누군가를 위해서 이 글을 작성해본다. 우선, 블로그는 크게 두 종류로 나눌 수 있다. 서비스형 블로그...
블로그 개시
아직 익숙치가 않다… 나는 사실 notion과 메모장으로만 개인 메모 및 자료들을 정리해놓고 있었는데, 나 혼자만 볼 수 있으면 된다는 생각에 엉망으로 자료를 정리하고 있었다는 것을 깨달았다. (미래의 ‘나’에 대한 배려가 없었다..) 개발자에게 의사소통이란 굉장히 중요한 능력이고, 재택 근무 환경에서 이는 곧 글쓰기로 이어진다. Github 블로그...