JDK 자바로 프로그래밍하기 위해서는 먼저 JDK가 설치되어야 한다. JDK에는 JVM과 Java API뿐만 아니라 자바를 개발하는데 필요한 프로그램들이 설치된다. JDK의 bin디렉토리에 있는 주요 실행파일들은 javac.exe - 자바 컴파일러, 자바소스코드를 바이트 코드로 컴파일한다. java.exe - 자바 인터프리터, 컴파일러가 생성한 바이트코드를 해석하고 실행한다. javap.exe - 역어셈블러, 컴파일된 클래스파일을 원래의 소스로 변환한다. 등이 있다. 자바로 프로그램 작성하기 자바코드를 실행하려면 먼저 자바컴파일러(javac.exe)를 사용해서 소스파일(.java)로부터 클래스 파일(.class)을 생성하여한다. 그 다음에 자바 인터프리터(java.exe)로 실행한다. 프로그램 작성 시 ..
카테캠 2단계 과정 이수 중 실시간 강의를 수강하며 학습한 내용들을 정리한 내용입니다. 1. DTO 객체의 필요성 프론트가 편하게, 최대한 바로 사용할 수 있게 json을 제공하는 것이 좋은데, 때문에 DTO 객체가 탄생되게 되었다. Response의 Body가 통일되지 않는다면 프톤트에서 공통된 처리를 하기가 힘들 수 있다. 또한, dto에는 해당 화면에 뿌려줄 값들을 바로 뿌릴 수 있도록 구성해야 한다. 2. JWT 로그인 시에 JWT를 사용할 수 있는데 보통 JWT는 요청 시 Authorization 헤더에 포함하여 통신하게 된다. 하지만 사실 JWT는 쉽게 Decode가 바로 가능하며, 때문에 JWT는 보안을 위한 것이 아닌, 신뢰성을 위한 것이라고 생각해도 좋다. 3. 백엔드 개발자 원칙 클라이..
강의 시작 전 테스트 코드를 짜야 하는 이유 프론트(React.js)는 3000번 포트 사용하고 백엔드(Spring Rest API)는 대게 8080번(또는 80번) 포트 사용하며, 배포를 하기전 프론트의 레퍼런스 코드를 실행할 수 있도록 주소요청 테스트를 연결하여 실행하게 된다. 더 자세히 말하자면, 아래의 클론코딩 전반적인 과정에 따라 우리는 도커 기술로 제작되어 있는 카카오 크램폴린의 가상화 컴퓨터를 사용한다. 그런 후 D2Hub를 통해 빌드하고 jar파일을 kargo에 배포하게 되는데, 우리가 배포한 jar 파일 속 코드들이 배포된 환경에서 잘 돌아간다고 확신할 수 없기에 테스트 코드를 작성해야 하는 것이다. 카카오 크램폴린이란? 도커 기술로 제작되어 있으며 카테캠 2단계 기간동안 우리는 카카오 ..
1단계가 끝나고 어느덧 2단계에 접어들었다. 1단계는 학기 중이라 시간이 너무 빠르게 지나가기도 했고 학업과 병행해서 진행하다보니 온전히 카테캠에 집중하지 못했던 것 같다. 때문에 2단계를 시작하는 이 시점에서 1단계를 보내주는 회고 겸, 새로운 마음으로 2단계를 맞이하기 위해 글을 작성해본다. 1단계 카카오테크캠퍼스의 1단계 커리큘럼은 크게 '패스트캠퍼스를 통한 강의 제공 + 중간중간 특강 + 주간 학습일지 작성' 으로 이루어져 있었다. 좋았던 점 사실 학습일지는 혼자서 매일 써왔고 강의도 카테캠만을 위한 강의가 아닌 패스트캠퍼스(물론 공짜로 주는 건 좋다)이기 때문에 가장 특별했던 것은 특강이었다. 특강은 3차례 정도로 깃/깃헙 특강부터 남기웅 카카오 CHO, 백엔드 개발자 최범균님까지 쉽게 들을 수..
어느날 개발 전, 시퀸스 다이어그램의 필요성에 대해 알고 첫 시퀸스 다이어그램 그리기(https://mincanit.tistory.com/16)에 도전했다. 학교 수업 과제로 그리고, 그 이후에는 그려본 적이 없는데 프로젝트에 적극 활용하기로 한 만큼 바로 그리려했지만,,, 기존의 툴들은 잘 나와있다고 하지만 나는 그조차도 귀찮았다. 툴은 말 그대로 단지 수단이기 때문에, 나는 쉽고 빠르게 사용할 수 있는 다이어그램 툴을 원했고 mermaid에 대해 알게 되었다!! Mermaid https://mermaid.js.org/는 마크다운을 통해 빠르게 다이어그램을 작성할 수 있다. 지원하는 다이어그램도 많고 Visual Studio에서는 Extension 설치를 지원하기 때문에 매우 간단하게 사용이 가능했다...
2차례의 프로젝트 기간동안 설계에 집중하기보다는 그냥 돌아가는 프로그램을 작성하는 것이 중요했다. 때문에 과정이 생략/뒤바뀐 개발들을 진행했고 어떤 기능을 개발했는지를 한눈에 파악하기에 어려웠고, 과연 효율적인 개발 방식이었을지에 대해 고민하였다. 그러다 설계의 중요성에 대해 깨달았고 그중에서도 시퀸스 다이어그램을 적극 활용하기로 했다. 갑자기 시퀸스 다이어그램? 내가 활동하는 개발 동아리인 에코노베이션에서는 매주 주간발표를 통해 프로젝트 관련 내용들을 공유하는 시간을 가진다. 어떤 점에 대해 공유를 해야한다! 라는 틀이 전혀 없긴 하지만, 대부분은 프로젝트 과정 중 겪은 트러블 슈팅 또는 개발 과정 등에 대해 공유를 한다. 이번에 다른 교외 대외활동으로 오랫동안 쉬시다가 활동을 다시 시작하신 분이 새로..
REST란 REpresntational State Tranfer의 약자로, 주로 HTTP 프로토콜을 사용한 소프트웨어 설계에서 사용되는 아키텍처 스타일이다. 정확히는 REST란 자원을 이름으로 구분하여 자원에 대한 정보를 주고 받는 것을 말한다. 여기서 자원이란 HTML과 같은 파일들, 데이터, 소프트웨어 자체 등 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. REST 구성 요소 REST는 다음과 같은 3가지로 구성이 되어있다. 자원(Resource) : HTTP URI 자원에 대한 행위(Verb) ..
PostgreSQL이란? 가장 많이 사용되는 객체 관계형 DBMS 안정성이 매우 높고 사용자 친화적인데 그 이유는 PostgreSQL의 주요 특징 때문이다! 사용자 정의 유형 테이블 상속 정교한 잠금 메커니즘 외래 키 참조 무결성 보기, 규칙, 하위 쿼리 중첩 트랜잭션(savepoints) 다중 버전 동시성 제어(MVCC) 비동기 복제기본 테이블 공간 특정 시점 복구 그 중에서도 multi-version concurrency control (MVCC)는 PostgreSQL에서 처음으로 구현된 기능인데 PostgreSQL은 확장이 가능하도록 설계되어 있기 때문에 데이터 타입, 인덱스 타입, 함수형 언어 등을 직접 정의할 수 있다. MVCC(다중 버전 동시성 제어)란? MVCC는 동시 접근을 허용하는 데이터..
RowMapper 인터페이스란?👀 공식문서 Say "row 단위로 ResultSet의 row를 매핑하기 위해 JdbcTemplate에서 사용하는 인터페이스" 간단히 말해서 그냥 Row를 객체에 매핑한다고 생각하면 된다! RowMapper의 특징이 인터페이스 구현 시, 각 row를 ResultSet에 매핑하는 실제 작업을 수행하지만 예외 처리에 대해 생각하지 않아도 된다!RowMapper 객체는 일반적으로 상태가 없으므로 재사용이 가능하므로 row 매핑 로직을 한 곳에서 구현하는 것이 좋다.메서드@NullableT mapRow(ResultSet rs, int rowNum) throws SQLExceptionResultSet 의 데이터의 각 행을 매핑하는 메서드 즉, 데이터베이스의 반환 결과인 Result..
JDBC란? Java Database Connectivity의 약자로, JDBC API는 Java 프로그래밍 언어에서 범용 데이터 액세스를 제공한다. JDBC API를 사용하면 관계형 데이터베이스부터 스프레드시트 및 플랫 파일에 이르기까지 거의 모든 데이터 소스에 액세스가 가능하고 JDBC 기술은 도구와 대체 인터페이스를 구축할 수 있는 공통 기반을 제공한다. JDBC API JDBC API는 java.sql, javax.sql 두 패키지로 구성되어 있으며 특정 데이터베이스 관리 시스템에서 JDBC API를 사용하려면 JDBC 기술과 데이터베이스 사이를 중개하는 JDBC 기술 기반 드라이버가 필요하다. (JDBC 드라이버는 순수하게 Java 프로그래밍 언어로 작성되거나 Java 프로그래밍 언어와 JNI(..