전체 글 22

[Spring] Thymeleaf(타임리프란?)

Thymeleaf(타임리프)는 템플릿 엔진이다.템플릿 엔진이란 스프링 서버에서 데이터를 받아 우리가 보는 웹페이지, 즉 HTML 상에 그 데이터를 넣어보여주는 도구이다. 웹 애플리케이션에서 동적 HTML 콘텐츠를 생성하는 도구라고 표현할 수 도 있다.이를 사용하기 위해서는 HTML과 함께 템플릿 엔진을 위한 문법을 살짝 섞어 사용해야한다. 템플린 엔진 문법 예시 h1태그와 p태그에 ${이름}과 ${나이}가 text 어트리뷰트로 할당되어 있다. 이렇게 해두면 서버에서 이름, 나이,라는 key로 데이터를 템플릿 엔진에 넘겨주고 템플릿 엔진은 이를 받아 HTML에 값을 적용한다. 예를 들어 서버에서 보내준 데이터 예시가 다음과 같다면{ 이름: "윤동희" 나이: 22} 해당 키 자리에 즉 이름 자리에는 ..

개발 2024.07.16

[Panda] 객체지향의 사실과 오해 4장

4장 역할, 책임, 협력 최후통첩 게임은 인간을 바라보는 두 가지 관점의 충돌을 잘 설명해준다.인간의 본연적 특성에서 인간은 이기적이고 합리적인존재이지만 타인과 관계를 맺는 과정 속에서 인간은 본연의 특성을 배제하고 자신의 이익을 최소화하는 불합리한 선택을 하기도 한다는 것이다.인간의 행동을 결정하는 것은 인간의 본질적인 특성이 아니라 각 개인이 처해 있는 정황 또는 문이다.여기서 문맥은 타인과의 협력이다. 협력에 얼마나 적절한지에 따라 행동의 적합성이 결정되며 협력이 인간의 행동 방식을 결정한다. 객체의 세계에서도 마찬가지이다.개별 객체가 아니라 객체들 사이에 이루어지는 협력이 중요하다. 객체지향 설계의 전체적인 품질을 결정하는 것은 개별 객체의 품질이 아니라 여러 객체들이 모여 이뤄내는 협력의 품질이..

[Panda] 객체지향의 사실과 오해 3장

03. 타입과 추상화 책은 지하철 노선도를 추상화한 해리 백 이야기로 시작한다.승객들이 지하철을 쉽게 이용할 수 있는 이유 중 하는 단순하고 직관적으로 역 간의 네트워크를 표현하는 지하철 노선도가 있기 때문이다. 초기 지하철 노선도는 실제와 유사한 물리적 지형 위에 운행 노선과 불규칙적인 역간 거리를 사실적으로 묘사했다. 그러나 이런 사실적인 정보는 승객들이 노선도를 이해하기 어렵게 만들었다.지하철을 이용하는 승객들의 목적은 하나의 역에서 다른 역으로 이동하는 것이기에 어떤 역에서 출발 및 환승을 해야하는지, 어떤 역을 거쳐야만 가장 쉽고 빠르게 목적지에 도착할 수 있는지 등을 직관적이고 단순하게 보여주는 것이 중요하다. 즉 지하철 노선도 디자인에서 중요한 것은 사실적인 묘사가 아니라 역과 역 사이의 연..

MySQL 포트 충돌 및 Connection Error

DBMS: MySQL (no ver.) Case sensitivity: plain=mixed, delimited=exact Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. 오늘 도커를 좀 공부해보려고 그냥 기본적인 springboot 코드에 도커 연결하고 db를 연결하는 과정에서 다음과 같은 오류 발생했다. 이게 가장 오랜 시간이 걸렸던 문제이다.오늘 문제가 동시다발적으로 많이 발생해서 정확히 말할 수 는 없지만 새로 만든 db에 root권한이 없었던 점, 포트를 사용 중인 프로그램을 종료시켰는데도 여전히 포트가 사용중이었다는 점이 핵심적인 문제 발..

Error 2024.05.08

[Panda] 객체지향의 사실과 오해 2장

2장 이상한 나라의 객체객체지향과 인지능력소프트웨어 세계 역시 인간이 인지할 수 있는 다양한 객체들이 모여 구성되지만 객체지향 패러다임의 목적은 현실 세계를 기반으로 새로운 세계를 창조하는 것이기 때문에 두 세계에 존재하는 객체를 일반적으로 서로 전혀 다른 모습을 보인다.  이번 장은 심리학자인 엘리자베스 스펠크와 필립 켈만이 어린 아기들이 물체를 인지하는 방법을 연구하기 위해 실행한 실험으로 시작한다. 이 실험으로 알 수 있는 것은 사람은 태어난지 얼마 안 된 시기부터 함께 행동하는 물체를 하나의 개념으로 인지한다는 사실이다.물체가 여러 부분으로 구성되어 있더라도 함께 움직일 경우 그 물체를 하나의 유기적인 단위로 인식한다는 것.인간의 인지능력은 물리적인 경계를 넘어 추상적인 사물까지도 객체로 인식한다..

[Panda] 3. 스택과 큐

알고리즘 스터디 3주차 내용정리 스택콰 큐는 배열에서 발전된 형태의 자료구조이다.배열은 프로그램 언어 기능 중에서 가장 많이 사용되며, 동일한 형태의 자료를 연속해서 저장하는 구조를 가진다.스택(Stack)과 큐(Queue)는 구조는 비슷하지만 처리방식이 다르다는 특징을 가진다.JAVA의 컬렉션 프레임워크는 LIFO(후입선출) 자료구조를 제공하는 스택 클래스와 FIFO(선입선출) 자료구조를 제공하는 큐 인터페이스를 제공한다.스택 자료구조스택(Stack)은 스택을 쌓아올리 듯, 데이터를 쌓아올리는 구조이다.삽입과 삭제 연산이 데이터가 입력되는 순서대로 쌓고 나중에 들어온 것부터 먼저 사용하는 후입선출(LIFO; Last in First out) 형식으로 이루어지며 삽입과 삭제가 한 쪽에서만 일어나는 특징이..

Algorithm 2024.05.07

[Panda] 2. 구간 합(Prefix Sum)과 투 포인터 알고리즘

알고리즘 판다 1,2주차 정리 구간 합 알고리즘구간 합은 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘이다.구간 합 알고리즘을 활용하려면 먼저 합 배열을 구해야한다. 합 배열 S 정의S[i] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i]이 사진의 합 배열S를 살펴보면 해당 인덱스까지의 원래 배열A값들의 합을 저장하고 있다. 합 배열 S를 만드는 공식S[i] = S[i-1] + A[i] 위 공식이 성립하는 이유를 위 사진의 예시로 생각해본다면 다음과 같이 합배열을 만들 수 있기 때문이다.int[] A = {15, 13, 10, 7, 3, 12};int[] S = new int[A.length];S[0] = A[0];for(int i = 1;..

Algorithm 2024.05.06

[백준] 1546번 평균 구하기

알고리즘 판다 1주차 문제https://www.acmicpc.net/problem/1546 배열과 리스트 파트 문제   풀이는 다음과 같다.코드를 더 간결하게 작성하기 위해 점수를 입력 받으면서 최고을 계산하도록 했다.import java.util.Scanner;public class Main { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); int[] score = new int[N]; int M = 0; for(int i = 0; i M){ M = score[..

Algorithm 2024.05.06

[백준] 11720번 숫자의 합

알고리즘 판다 1주차 문제https://www.acmicpc.net/problem/11720 배열과 리스트 파트 문제   처음 문제 풀 때 고민했던 것은 숫자들을 어떤 형식을 사용해서 입력받아야하느냐였던 것 같다.결국 숫자들을 쪼개야하는데 배열을 쓰는 것 보다는 String으로 받아서 메서드를 이용해 쪼개는게 빠르고 편리하지 않을 까 생각했다.그래서 코드를 다음과 같이 생각해봤다.import java.util.Scanner;public class Main { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); String..

Algorithm 2024.05.06

[Panda] 1. 배열과 리스트

알고리즘 스터디 1주차 정리 자료구조의 종류는 많지만 실제 자료구조를 구현하는 기술을 리스트와 Linked 리스트 두 가지가 있다. 리스트와 Linked 리스트를 활용하여 다양한 자료구조가 만들어진다.리스트: 데이터들이 연속적인 공간을 할당 받아 만들어지는 구조배열: 크기가 변하지 않는 리스트형 자료구조, 중간에 값을 지워도 빈칸으로 유지됨Array List: 크기가 변하는 자료구조, 중간의 값을 지우면 뒤의 것이 앞으로 이동Linked 리스트: 데이터들이 각각 공간을할당 받고 데이터 사이의 연결 고리가 만들어지는 구조 리스트형 자료구조배열 Array배열은 메모리의 연속된 공간에 값을 나열시키고 각 값에 인덱스를 부여해놓은 자료구조이다.구조가 간단하기 때문에 코딩테스트에 가장 많이 사용하는 자료구조 중 ..

Algorithm 2024.05.05