분류 전체보기 229

Windows11 해야할 것

1. 웹 검색 끄기2. 마우스 우클릭 한번에3. 5. 웹 브라우저 장단점웹 브라우저확장프로그램h265 영상기타Chrome광고차단 o지원메인으로 적당Edge광고차단 o음성만 지원 Vivaldi광고차단 o지원서브로 적당네이버 웨일광고차단 o 일부 안됨지원서브로 적당Firefox광고차단 o, chromium확장프로그램 안됨미지원개발자 도구에서 '다시 보내기' 가능Brave광고차단 o지원치지직 보기 불가

spring Querydsl

1. 설정1.1. build.gradle설정은 스프링 버전에 따라 다르다. 이 글에서는 3.4.5버전에서의 설정이다.dependencies { // QueryDsl implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:5.1.0:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api"}build.gradle에 위 설정을 추가한다. com.querydsl의 두가지를 추가하면 되는데, ja..

Java 2025.05.22

JPA (Java Persistence API)

jpa는 java의 orm(object relational mapping)기술이다.application.properties 설정데이터베이스 스키마 자동생성 spring.jpa.hibernate.ddl-auto= create : 기존 테이블 삭제 후 다시 생성 create-drop : create와 같으나 종료 시점에 테이블 drop update : 변경분만 반영(운영db에는 사용x) validate : 엔티티와 테이블이 정상 매핑되었는지만 확인 none : 사용하지 않음 개발 초기: create 또는 update 테스트 서버: update 또는 validate 스테이징과 운영 서버: validate 또는 none #h2 데이터베이스spring.datasource.driver-class-name=org.h..

Java 2025.05.15

Optional<T>

optional은 java 8에 추가된 문법으로, null값일 수 있는 변수를 감싸주는 클래스이다.java 프로그래밍을 하다보면 NullPointerException이 굉장히 많이 발생하는데 해당 예외를 잘 처리하기 위해 만들어졌다고 한다. 반환메소드설명static Optionalof(T value)null값이 아닌 값을 Optional로 감싸 반환static OptionalofNullable(T value)null일 수 있는 값을 Optional로 감싸 반환static Optionalempty()빈 Optional을 반환booleanisEmpty()값이 없다면 true, 있다면 falsebooleanisPresent()값이 있으면 true, 없다면 falsevoidifPresent(Consumer..

Java 2025.05.10

이름짓기 규약 (Naming Convention)

이름짓기 규약이 왜 있는가? 그냥 내 마음대로 이름을 지으면 되지 않는가? 그런 생각일 수도 있다.혼자 만드는 토이프로젝트의 변수명이라면 내 마음대로 case를 선택할 수 있다.그러나 이름짓기는 전 세계적으로 관례가 있다. 그리고 프로젝트를 같이 한다면 미리 규약을 정해놓아, 팀원이 모두 해당 규약을 따라야 한다.1. 카멜 표기법 (Camel case)camelCase각 단어의 첫 문자는 대문자로 적되, 맨 앞 단어만 소문자로 적는 표기법이다. - Java의 지역변수, 인스턴스 변수, 메소드 2. 파스칼 표기법 (Pascal case)PascalCase각 단어의 첫 문자를 대문자로 적는 표기법이다. - Java의 Class 또는 Interface- Python과 Ruby의 Class 3. 스네이크 표기법..

이것저것 2025.04.24

spring 예외(Exception) 처리

사용자가 필수 파라미터를 빼고 요청을 보냄. 서버 내에서 데이터베이스 조회 오류. 그 외 예상치 못한 오류. 등등 예외가 발생하면 어떻게 처리해야 하는가? 기본적으로 스프링이 적절한 예외 페이지를 보여준다. 그러나 좀 더 자세하게 오류 정보를 전달하고시다면 따로 설정해주어야 한다.예외가 발생하였을 때, 표현 방법에 따라 2가지로 나눌 수 있다. 웹에서 요청한 경우와 api를 요청한 경우이다. 각각 html, json으로 오류 정보를 응답한다.1. html로 오류 표시 (웹 클라이언트 요청)스프링에서는 resources/templates/error또는 resources/static/error디렉토리에 에러코드.html을 만들면 된다. resources/templates/error/500.html r..

Java 2025.04.17

spring 검증(validation, bean validation)

웹 서비스를 만들다보면 회원가입, 로그인, 회원정보수정, 상품등록, 상품수정 등 많은 폼 입력을 만든다. 이때, 각 input에 대한 검증을 해야한다. 이 검증을 spring에서 쉽게 할 수 있게 도와준다.예를 들어, 그래픽카드를 등록하고 수정하는 기능이 있는 웹을 만들 것이다. 등록과 수정의 요구사항이 다르다고 가정한다.그래픽카드 도메인은 다음과 같다.@Getter @Setterpublic class GraphicsCard { private Long id; private GraphicsCardGroup group; private String name; private Long quantity; private Long price;}id는 Repository가 자동으로 1부터 지정..

Java 2025.04.11

spring 로그인 세션과 인터셉터

웹 기능에 로그인은 매우 자주 사용되는 기능이다. spring에서는 이 로그인 기능을 세션을 사용해 어떤 멤버가 로그인하였는지, 인터셉터를 사용하여 로그인 안된(세션이 없는) 사용자는 서비스를 거부할 수 있다.  1. 세션세션 생성은 HttpSession session을 사용하면 되고, 세션 조회는 @SessionAttribute(name="attributeName", required = false)을 사용하면 된다. application.properties에 다음 내용을 추가해 세션을 조정할 수 있다.# 세션 움직임 없을때 타임아웃 시간. 기본 30분이다.server.servlet.session.timeout=60m# 세션을 쿠키로만 받는다. 아니면 url로 전송될 때도 있다.server.servlet..

Java 2025.04.03

오토핫키 ImagePut (비활성 이미지서치)

오토핫키 1 버전에서는 비활성 이미지 서치를 할 때, Gdip_All.ahk, Gdip_ImageSearch.ahk 를 사용해 서치했다. 그러나 2 버전에서는 호환도 잘 되지 않고, 더 좋은 라이브러리가 있어 사용할 필요가 없다. 그 라이브러리는 바로 ImagePut이다.개발자 github에 가서 ImagePut.ahk 를 다운받으면 된다: https://github.com/iseahound/ImagePut  이 그림판이 화면에서 보이지 않을 때, 위 도형 이미지를 찾을 것이다. 결과로 다음과 같이 작동한다.   코드: #include ImagePut.ahkMinMax := WinGetMinMax("제목 없음 - 그림판")if (MinMax = -1) { WinRestore("제목 없음 - 그림판"..

AHK(오토핫키) 2025.03.23

오토핫키 Gui

1. gui 만들기문법: MyGui := Gui([Options, Title, EventObj])MyGui := Gui(, "예제 매크로")Gui object가 반환된다.MyGui.Show()gui 보여주기. 참고: https://www.autohotkey.com/docs/v2/lib/Gui.htm#Call2. gui에 추가하기문법: GuiCtrl := MyGui.Add(ControlType [, Options, Text])MyGui.Add("Text", , "--------예제 매크로 프로그램--------")MyGui.Add("Button", "w100","매크로1 시작")MyGui.Add("Button", "w100 x+10 yp","매크로2 시작")MyGui.Add("DropDownList", "..

AHK(오토핫키) 2025.03.21

spring 테스트 코드 작성

에러나 버그나 났을 때, 팀 프로젝트에서 내가 작성한 기능이 오류가 있는 것인지 동료의 코드가 오류가 있는 것인지프로젝트가 커지면서 기능이 이것저것 엮여있는 경우 버그가 나면 어느 기능이 오류가 나는지 알기 위해서는 테스트 코드를 잘 작성 해놓아야 한다. 테스트는 해당 기능의 패키지에서 main과 test만 바뀐 같은 위치에서 테스트한다. 해당 클래스이름 + Test로 클래스 이름을 만드는 것이 국룰이다. intellij 에서 Ctrl + Shift + T 단축키로 테스트 클래스를 만들 수 있다. 메소드에 @Test를 붙여 테스트를 한다.메소드에 @BeforeEach를 붙이면 테스트 실행전 실행되는 메소드가 된다.메소드에 @AfterEach를 붙이면 테스트실행후 실행되는 메소드가 된다.클래스에 @Spr..

Java 2025.03.11

spring 기본 개념

너무 복잡한 표준, 배보다 배꼽이 더 큰 객체지향으로 인해 스프링 프레임워크가 탄생했다.solid원칙중 ocp와 dip를 지켜주는 di(dependency injection)컨테이너가 스프링의 핵심이다.di컨테이너가 있으므로 스프링을 이용하는 개발자는 사용 영역을 수정하지 않고 확장할 수 있다.또한 di컨테이너가 적절한 인스턴스를 생성자에 주입해줌으로서 구현 클래스에 의존하지 않는다. di컨테이너에 빈을 등록하는 방법은 1. @Configuration클래스에 @Bean메소드들을 만들어 싱글톤으로 등록할 수 있고 2. @Component 어노테이션을 클래스에 붙여 스프링이 컴포넌트 스캔을 할 때 등록하게 한다.@Component 어노테이션을 사용해 빈을 등록할 때, 의존관계 주입은 생성자 주입을 보통 사용..

Java 2025.03.11

thymeleaf 템플릿 엔진

아래에 위 태그를 삽입한다. 템플릿 처리에는 영향을 미치지 않지만, 우리 IDE가 모든 th:* 속성에 대한 네임스페이스 정의가 부족하다고 불평하는것을 방지하는 역할이다. 1. thymeleaf 표준 표현 문법문서: https://www.thymeleaf.org/doc/tutorials/3.1/usingthymeleaf.html#standard-expression-syntax● 간단 표현  ○ 변수 표현식: ${...}  ○ 선택 변수 표현식: *{...}  ○ 메시지 표현식: #{...}  ○ 링크 URL 표현식: @{...}  ○ 부분 표현식: ~{...}● 문자 그대로의  ○ 텍스트 리터럴: 'one text', 'Another one!', ...  ○ 숫자 리터럴: 0, 34, 3.0, 12.3,..

Java 2025.02.11

spring Controller

1. Annotation Interface Controller문서: https://docs.spring.io/spring-framework/docs/6.2.x/javadoc-api/org/springframework/stereotype/Controller.html 주석이 달린 클래스를 "Controller"라고 나타낸다. RequestMapping주석을 베이스로 하는 주석 처리 메소드와 함께 사용되는 편이다. 스프링이 @Component를 감지하는 것처럼 @Controller는 자동 감지가 되고, 그것을 위한 bean이 자동 등록 된다.2. Annotation Interface RequestMapping문서: https://docs.spring.io/spring-framework/docs/6.2.x/ja..

Java 2025.02.08

spring View, 템플릿 엔진

1. Spring View스프링 부트에서 View는 두가지로 나눌 수 있다. 누가 언제 요청하든 똑같은 대답을 해주는 static과 상황마다 다른 대답을 해주는 templates로 나뉜다. 1.1. static view Hello there hellosrc - main - resources - static폴더에 hello.html을 만들어 보자. 그리고 SpringApplication을 실행후 웹에서 127.0.0.1:8080/hello.html를 접속하면 화면이 보일것이다. 이처럼 static폴더에 html파일을 만들면 스프링 앱에서 별다른 조치 없이 자원에 접촉이 가능하다. index.html을 파일 이름으로 하면 127.0.0.1:8080에 접속해도 화면이 보일 것이다. index.htm..

Java 2025.02.07