안녕하세요 강정호 입니다 Mysql -> Postgres DB 마이그레이션을 하기 위해서 포스팅을 합니다. [1단계 - Postgres DB 다운로드] https://www.postgresql.org/download/ PostgreSQL: Downloads www.postgresql.org [2단계 - DB 생성] Postgres shell을 이용해서 "create database board"를 생성한다. [3단계 - DB 연결] [4단계 - application.yaml 변경] Spring initilaize에서 Postgre sql 드라이버를 다운받는다. 위와 같이 postgresql로 연결한다. [Postgre DB 연결 확인] Postgresql DB에 연결된 것을 확인할 수 있다.
안녕하세요 강정호 입니다. 오늘은 게시판 프로젝트에서 게시판 뷰를 만들어보려고 합니다. ArticleController와 index.html에 데이터를 뿌려서 보여줄 예정입니다. ArticleController.java @RequiredArgsConstructor @RequestMapping("/articles") @Controller public class ArticleController { private final ArticleService articleService; /** * 사용 목적 : 검색타입, 검색어, 페이징을 파라메터로 받아서 * article 리스트를 응답해주는 api * */ @GetMapping public String articles( @RequestParam(required = ..
안녕하세요 강정호 입니다. 오늘은 게시판 프로젝트에서 게시판 뷰를 만들어보려고 합니다. ArticleController와 index.html에 데이터를 뿌려서 보여줄 예정입니다. ArticleController.java @RequiredArgsConstructor @RequestMapping("/articles") @Controller public class ArticleController { private final ArticleService articleService; /** * 사용 목적 : 검색타입, 검색어, 페이징을 파라메터로 받아서 * article 리스트를 응답해주는 api * */ @GetMapping public String articles( @RequestParam(required = ..
1.깃 이그노어 https://github.com/djkeh/fastcampus-project-board/pull/23 .gitignore 에 jpa buddy 플러그인의 설정 파일을 무시하도록 룰 추가 by djkeh · Pull Request #23 · djkeh/fastc intellij plugin 중 jpa 작업을 편하게 해주는 jpa buddy 라는 플러그인으로 인해 자동 생성되는 설정 파일이 프로젝트에 포함되지 않도록 파일 무시 규칙을 추가함 github.com 2. https://github.com/djkeh/fastcampus-project-board/pull/24 도메인 수정 - 회원 계정과 게시글, 댓글 관계 연결 by djkeh · Pull Request #24 · djkeh/fas..
안녕하세요 강정호 입니다. 이번에는 게시글 서비스를 테스트하는 로직을 구현해보려고 합니다. ArticleServiceTest 코드 package com.marathon.board.service; import java.util.List; import com.marathon.board.domain.type.SearchType; import com.marathon.board.dto.ArticleDto; import com.marathon.board.repository.ArticleRepository; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; i..
[BootStrap 다운받기] https://getbootstrap.com/docs/5.3/getting-started/introduction/ Get started with Bootstrap Bootstrap is a powerful, feature-packed frontend toolkit. Build anything—from prototype to production—in minutes. getbootstrap.com - 부트스트랩은 CDN 방식으로 다운 받을 수 있다. 이 경우 서버가 올라갈 때 인터넷을 통해서 부트스트랩을 다운 받는 방법이기 때문에 시간이 오래 걸린다. 그래서 서버내 폴더에 라이브러리를 다운 받는 방법도 있다. 하지만 이번 내 프로젝트에서는 CDN 방식 사용. [부트스트랩 적용하..
Rebase merge란? 스프링 시큐리티, 타임리프, 스프링 웹 이렇게 3개의 디펜던시를 해야 아래처럼 나온다 plugins { id 'java' id 'org.springframework.boot' version '3.0.6' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org...
Thymleaf 엔진 - Decoupled Template Logic
안녕하세요 강정호 입니다. 오늘은 Querydsl 의존성 추가와 api 검색옵션을 추가하는 개발을 하였습니다. Querydsl이 무엇이고 검색기능 구현을 위해서 어떻게 사용하는지 알아보겠습니다. Querydsl이란 무엇인가? Querydsl은 자바언어를 사용하여 타입세이프한 쿼리를 작성하는데에 도움을 주는 오픈소스 프레임워크이다. 기존에는 Mybatis를 이용해서 직접 SQL문을 작성하거나, JPQL을 사용하여 쿼리문을 만들었다. 하지만 이런 경우 쿼리문 상에 오타가 있을 수 있기 때문에 관리가 어려웠다. 그리고 DB의 종류(오라클, Mysql, MongoDB 등)에 따라서 쿼리문을 다르게 작성해주어야 했다. 하지만 이를 보완하는 것이 Querydsl이다. Querydsl은 데이터베이스에 상관없이 일관성..
안녕하세요 강정호입니다. 오늘은 Spring Data REST 복습을 해보려고 합니다. Spring Data REST의 깃헙 프로젝트 https://github.com/spring-projects/spring-data-rest GitHub - spring-projects/spring-data-rest: Simplifies building hypermedia-driven REST web services on top of Spring Data reposit Simplifies building hypermedia-driven REST web services on top of Spring Data repositories - GitHub - spring-projects/spring-data-rest: Simpli..
안녕하세요 강정호 입니다. 오늘은 스프링부트의 @MappedSuperclass와 @EntityListners 에 대해서 알아보겠습니다. @MappedSuperclass란? 객체 입장에서 공통 맵핑 정보가 필요할 때 사용한다. [예시] 위와 같이 Article이라는 도메인에 생성자, 생성시각, 수정자, 수정시각이 있다. 이러한 공통정보를 추출해서 공통의 정보로 사용할 때 @MappedSuperclass를 사용한다. 이렇게 아래와 같이 새로운 클래스로 생성한다. AuditingFields라는 새로운 클래스에는 생성자, 생성시각, 수정자, 수정시각 등 공통정보가 들어가 있다. 그리고 위 AuditingFields 클래스를 사용하기 위해서는 도메인 객체에서 extends로 상속을 받아야 한다. @EntityLi..
리액트 styled-component onKeyUp, onKeyDown, onKeyUp spread syntax 구문 developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Spread_syntax 전개 구문 - JavaScript | MDN 전개 구문을 사용하면 배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 (함수로 호출할 경우) 또는 요소 (배열 리터럴의 경우)로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장시 developer.mozilla.org useQuery 에서 skip 하는 기술 const {data, loading} = useQuery(SEARCH, { skip: term === undefined, varia..
하드링크 vs 소프트링크 [inode] 정의 : Kernel이 관리하고 있는 파일을 위한 메타 데이터 사용자는 file 명을 가지고 파일을 액세스 하려고 하면, 내부적으로는 파일이름과 맵핑된 inode 번호로 맵핑된다. - inode가 가진 정보 1) 파일 모드(퍼미션) 2) 링크 수 3) 소유자명 4) 그룹명 5) 파일크기 6) 마지막 접근 정보 7) 마지막 수정 정보 8) 아이노드 수정 정보 [하드링크] 하드링크는 원본 파일의 inode의 위치를 가르킨다. 파일명만 다르지 사실상 하드링크, 원본파일을 구분할 수 없다. (원본과 복사본의 차이가 없다) 왜냐하면 파일 시스템에 있는 데이터를 복사한 것이 아니라, inode 번호만 복사했기 때문이다. 따라서 실제 파일은 1개만 존재하는 셈이 된다. [소프트..
[C언어 문자 자료형 사용하기] C언어에서는 정수 자료형인 Char를 이용하여 문자 1개를 저장합니다. 다음은 문자 자료형의 크기위 저장할 수 있는 범위입니다. ▼ 표 9‑1 char의 크기 및 범위 자료형크기범위비고 char signed char 1바이트, 8비트 -128~127 문자 저장 unsigned char 1바이트, 8비트 0~255 바이트 단위 데이터 저장 char에 문자를 저장할 때는 문자 자체를 저장하는 것이 아님. 문자에 해당하는 정수값을 저장한다. 다음은 각 정수값이 어떤 문자에 해당되는지 표로 나타낸 것이며, 이 규칙이 바로 아스키코드라고 한다. ▼ 표 9‑2 정수 10진수, 16진수와 문자 대응표(ASCII 코드) 10진수16진수문자10진수16진수문자10진수16진수문자 32 0x2..
안녕하세요 강정호입니다. 오늘은 파일 포지션에 대해서 공부해보겠습니다. 파일 포지션 : 파일 내용을 다룰 때, 어떤 Operation을 수행하는 위치. ex) 현재 반짝이는 커서가 어디에 있는지. 파일 오프셋 : 파일의 시작지점부터 현재 커서의 위치까지 얼마나 떨어져 있는지 정수로 보여주는 것이 offset 값이다. ftell 함수에 현재 살아있는 file 포인터를 인자로 넣어서 함수를 호출하면 long 타입으로 offset을 반환한다. 아래 설명에 나타나 있듯이 fseek()는 파일의 포지션을 변경할 수 있는 함수이다. 1) fseek(fp, 5, SEEK_SET) : 파일의 시작지점부터 5칸을 건너뛰고 6칸부터 파일포지션을 위치시킴. 2) fseek(fp, 5, SEEK_CUR) : 현재 파일 포지션..
예외처리 예외 처리하기123456789101112131415require 'open-uri'page = 'podcasts'file_name = "#{page}.html"web_page = open("http://pragprog.com/#{page}")output = File.open(file_name, 'w')begin while line = web_page.gets output.puts line end output.closerescue Exception STDERR.puts "Failed to download #{page}: #{$!}" output.close File.delete(file_name) raiseendColored by Color Scriptercs예외가 발생하면 루비는 이후의 예외 처리..
5.1 상속 상속을 사용하면 다른 클래스를 개선하거나 특수한 기능을 더한 클래스를 만들 수 있다.자식 클래스를 생성하는 기본적인 원리는 간단하다. 먼저 자식 클래스는 부모 클래스의 모든 기능을 상속한다. 자식 클래스에서는 부모 클래스의 모든 인스턴스 메서드를 사용할 수 있다. 간단한 예제를 살펴보자1234567891011121314151617class Parent def say_hello puts "Hello from #{self}" endend p = Parent.newp.say_hello # 자식 클래스 생성class Child Object cs 상속을 사용하여 자식 클래스는 부모 클래스에게 처리를 위임할 수 있으며, 자식 클래스에서는 실질적인 훅 메서드만을 호출해 애플리케이션에 기능을 추가할 수 있..
객체로서의 블록 블록은 익명 메서드와 비슷하지만 단순히 이걸로 끝이 아니다. 블록은 객체로 변환할 수 있으며, 이 객체를 변수에 저장할 수도 있고, 어딘가에 넘겨줄 수도 있으며, 나중에 호출할 수도 있다. 블록은 메서드에 넘겨지는 추가적인 매개변수로 생각해도 무방하다. 사실 암묵적인 매개 변수일 뿐만 아니라 명시적인 매개변수로 사용할 수 있다. 메서드를 정의할 때 마지막 매개 변수에 앰퍼샌드(&)를 접두사로 붙이면 루비는 이 메서드가 호출될 때마다 코드 블록이 넘겨졌는지 찾아본다. 다음은 특정 인스턴스 메서드에서 Proc 객체를 생성하고 이를 인스턴스 변수에 저장하고, 다른 인스턴스 메서드에서 이를 호출하는 예제다. 123456789101112class ProcExample def pass_in_bloc..
트랜잭션을 위한 블록 블록이 반복자에서 사용되기는 하지만 다른 용도로 사용될 때도 있다.트랜잭션 제어 하에서 동작해야만 하는 코드를 작성해야 할 때 블록을 사용할 수 있다.다음의 코드는 파일을 열고 그 내용으로 작업을 한 후에 마치면 이 파일이 닫히는 트랜잭션이다. 1234567891011121314class File #open_and_process는 클래스 메서드로 생성 def self.open_and_process(*args) f = File.open(*args) yield f f.close() end end File.open_and_process("testfile", "r") do |file| while line = file.gets puts line endendColored by Color Scr..
- Total
- Today
- Yesterday
- GIT
- 유즈케이스
- Use case
- docker
- github
- Inception
- 항해플러스후기
- 월부닷컴
- 월급쟁이부자들
- 부동산공부
- 깃
- Spring boot
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- push_back
- 폭포수
- 관계대수
- 파라메터
- front
- 개발자 회고
- 도커
- 재테크공부
- 항해솔직후기
- 인셉션
- 내년은 빡세게!!
- pop_back
- 항해플러스백엔드
- 2023년
- resize
- 열반스쿨기초반
- 깃허브
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |