2024/12 17

[Spring/DB] 01. JDBC 이해

1. JDBC 이해#Spring/DB/Jdbc정리JDBC 등장이유클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회하면, 애플리케이션 서버는 다음 과정을 통해서 데이터베이스를 사용한다.애플리케이션 서버와 DB - 일반적인 사용법커넥션 연결: 주로 TCP/IP를 사용해서 커넥션을 연결한다.SQL 전달: 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다.결과 응답: DB는 전달된 SQL을 수행하고 그 결과를 응답한다. 애플리케이션 서버는 응답 결과를 활용한다.문제는 각각의 데이터베이스마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 그리고 결과를 응답 받는 방법이 모두 다르다는 점이다또한, 데이터베이스 종류를 변경하면 애플리케이션 서버에 개발된 데이터베..

Spring/DB 2024.12.29

[Spring/MVC] 09. 타임리프 - 스프링 통합과 폼

09. 타임리프 - 스프링 통합과 폼#Spring/MVC정리타임리프 스프링 통합타임리프는 스프링을 위해 기능을 제공한다고 말해도 과할 정도가 아닌 수준의 스프링 통합을 위한 다양한 기능을 제공한다.스프링 통합으로 추가되는 기능스프링의 SpringEL 문법 통합${@myBean.doSomething()}처럼 스프링 빈 호출 지원편리한 폼 관리를 위한 추가 속성th:object (기능 강화, 폼 커맨드 객체 선택)th:field, th:errors, th:errorclass폼 컴포넌트 기능checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원스프링의 메시지, 국제화 기능의 편리한 통합스프링의 검증, 오류 처리 통합스프링의 변환 서비스 통합 (ConversionServic..

Spring/MVC 2024.12.28

[Spring MVC] 08. 타임리프 기본기능

08. 타임리프 기본기능정리타임리프 사용 선언(스프링 부트에 타임리프를 추가했으면 선언하지 안하도 타임리프 문법이 적용되는 것 같긴 합니다)기본 표현식• 간단한 표현: ◦ 변수 표현식: ${...} ◦ 선택 변수 표현식: *{...} ◦ 메시지 표현식: #{...} ◦ 링크 URL 표현식: @{...} ◦ 조각 표현식: ~{...}• 리터럴 ◦ 텍스트: 'one text', 'Another one!',… ◦ 숫자: 0, 34, 3.0, 12.3,… ◦ 불린: true, false ◦ 널: null ◦ 리터럴 토큰: one, sometext, main,…• 문자 연산: ◦ 문자 합치기: + ◦ 리터럴 대체: |The name is ${name}|• 산술 연산: ◦ Binary ope..

Spring/MVC 2024.12.27

[Spring MVC] 07. 스프링 MVC - 웹 페이지 만들기(타임리프, PRG, RedirectAttribute)

7. 스프링 MVC - 웹 페이지 만들기(타임리프, PRG, RedirectAttribute)정리Item - 상품 객체, Repository@Datapublic class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; }}리포지..

Spring/MVC 2024.12.26

[Spring/MVC] WebMvcConfigurer

김영한님 Spring MVC 강의를 통해 공부하다가 Spring MVC에 WebMvcConfigurer 라는 확장 포인트가 있다는 점을 알게 되었다. (강의에서는 ArgumentResolver와 MessageConverter를 WebMvcConfigurer에서 확장할 수 있다 정도만 설명하고 넘어감)Spring MVC에는 대부분의 기능이 이미 구현되어 있어 확장 포인트가 많지 않다고 했는데, WebMvcConfigurer에서는 어떤 부분을 확장할 수 있는지 구체적으로 알아보자. WebMvcConfigurer란?WebMvcConfigurer 는 스프링 부트 혹은 스프링 MVC 애플리케이션에서 MVC 관련 설정을 직접 확장하거나 추가할 수 있게 해주는 확장 포인트 인터페이스이다. 스프링 부트가 제공하는 We..

Spring/MVC 2024.12.24

[Web Application] SLF4J를 이용한 로깅

김영한님 Spring MVC 강의를 듣다가 @SLF4J 를 달고 log.info(), log.debug()등을 통해 로그를 출력하는 예제를 공부하다가 SLF4J에 대해 공부를 해본 내용을 정리하게 되었다. 먼저 로깅이 무엇이고 왜 해야하는지를 알아보자. 로깅이란?log를 생성하도록 시스템을 작성하는 행위이다.  로깅은 왜 해야 할까?로그들은 테스트할 때 재현하기 힘든 버그가 개발 완료된 환경에서 발생했을 경우, 그런 버그들에 대한 정보를 알려줄 수 있으며,구문들 사이에 걸리는 시간 등의 성능에 관한 통계와 정보를 제공할 수 있다. 로그가 제공하는 정보의 양은 프로그램이 실행되는 중에도 설정이 가능한 것이 이상적이다.설정이 가능할 때, 로그는 예기치 못한 특정 문제들을 디버그하기 위해 코드를 수정하고 다시..

WEB/Application 2024.12.24

[PLT/프로그래밍언어론] 14. Logical Programming(2)

14. logical 2#PLT논리 프로그래밍(Logic Programming)First-order Logic논리 프로그램(Logic Program)은 기본적으로 논리식(Logic Formulae)의 집합이다.따라서 이러한 논리식을 작성하기 위한 언어가 필요하다.여기서 다루는 것은 First-order Logic이며, 이는 predicate logic 또는 predicate calculus으로도 알려져 있다.이는 propositional logic(명제 논리), 0th-order 및 higher-order logic와 구분된다.Propositional Logic vs Predicate LogicPropositional Logic와 달리 first-rder logic는 predicate(술어)와 quant..

[PLT/프로그래밍언어론] 13. Logical Programming

13. logical 1#PLT논리 프로그래밍 (Logic Programming)프로그래밍 언어 이론 (Programming Language Theory)목차 (Topics)논리 프로그래밍 소개 (Logic Programming Introduction)프로로그 기초 (Prolog Basics)1순위 논리 (First-order Logic)치환과 통일 (Substitution and Unification)⠀논리 프로그래밍 소개 (Logic Programming Introduction)알고리즘이란 무엇인가? (What is Algorithm?)알고리즘 (Algorithm) = 논리 (Logic) + 제어 (Control)로버트 A. 코월스키 (Robert A. Kowalski)논리는 "무엇을" 해야 하는지를..

[PLT/프로그래밍언어론] 12. Scala - Functional Programming Language

12. functional2#PLT함수형 프로그래밍 (Functional Programming)프로그래밍 언어론 (Programming Language Theory)1. 주제 (Topics)함수형 언어 기초 (Functional Language Fundamentals)패러다임 개요 (Paradigm Overview)표현식 평가 (Expression Evaluation)Scala에서의 함수형 언어 주제 (Functional Language Topics in Scala)블록과 스코프, 패턴 매칭, 커링 (Blocks and Scope, Pattern Matching, Currying)λ-calculus (λ-Calculus)2. 함수형 언어 (Functional Language)Scala에서의 주제 (Top..