전체 글 229

[PHP] PHP Laravel 경험기

라라벨을 써본 적이 없었는데, 직접 한 번 경험해보기 위해 진행한 간단한 토이 프로젝트이 프로젝트의 목표는 거창한 서비스가 아니라, 라라벨 찍먹이다. ✅ 라라벨이 어떤 구조로 동작하는지✅ 컨트롤러, 모델, 라우팅 개념을 직접 경험해보기✅ DB와 연동해서 데이터를 불러오고 화면에 출력하는 과정 익히기 코드는 repo 에서 확인할 수 있다.https://github.com/HAN-SEOHYUN/try-laravel GitHub - HAN-SEOHYUN/try-laravel: 라라벨 프레임워크를 사용해보자 !라라벨 프레임워크를 사용해보자 ! Contribute to HAN-SEOHYUN/try-laravel development by creating an account on GitHub.github.com ▶..

카테고리 없음 2025.02.13

[Docker] EC2서버 에 Mysql 컨테이너 생성

TO-DOEC2 서버에 Docker 를 사용하여 DB 로 사용할 Mysql 컨테이너를 띄운다. 도커 설치sudo apt updatesudo apt install -y docker.iosudo systemctl enable dockersudo systemctl start dockersudo docker run --name mysql \ -e MYSQL_ROOT_PASSWORD={PASSWORD} \ -d -p 3306:3306 mysql AWS > 인스턴스 > 보안그룹에서 3306 포트 인바운드 규칙에 추가로 열어준다.포트를 안열어줄 경우 `Exhausted available authentication methods` 에러 발생 MySQL 8.0 이상에서는 클라이언트가 서버의 공개 키를 검색할 수 없다..

Docker 2025.02.05

[Docker] 도커 이미지 아키텍쳐 오류

배경Spring Boot 프로젝트 내부 Dockerfile 생성 & 설정 내용은 아래와 같다.베이스 이미지 설정빌드 시점에 사용할 변수를 선언ARG : Docker 이미지를 빌드할 때만 사용 가능한 변수build/libs : 일반적으로 Gradle 프로젝트의 JAR 파일이 생성되는 디렉토리로컬 파일을 Docker 이미지에 복사COPY : Docker 이미지 빌드 중 로컬 시스템의 파일을 컨테이너의 지정된 경로로 복사함컨테이너가 실행될 때 수행할 기본 명령어를 설정java: Java 실행 명령어-Dspring.profiles.active=docker: Spring Boot 애플리케이션에서 활성화할 프로파일을 docker로 설정-jar: JAR 파일을 실행하기 위한 Java 옵션FROM openjdk:23-..

Docker 2025.02.05

[AWS] EC2 서버 메모리 부족 이슈

이슈EC2 서버 내에서 Spring boot 컨테이너를 실행하면 인스턴스가 죽어버린다. 원인 : 메모리 부족현재 mysql, spring boot 컨테이너가 띄워져 있다. mysql 컨테이너를 실행하면 아래와 같이 메모리가 178mb 밖에 남지 않은 것을 확인할 수 있다. spring boot 를 띄울만한 메모리가 남아있지 않다.현재 사용중인 t2.micro 유형의 인스턴스는 메모리가 1GB 이다 🔽 해결현재 t2.micro 유형의 인스턴스를 실행하고있는데, 업그레이드를 고려한다. (t2.small ?)금액이 2배 변경 후Spring boot 컨테이너가 정상적으로 실행됨애플리케이션은 {트래픽없는상태에서} 실행하면 200MB 정도 소모됨  컨테이너를 실행했는데 인스턴스가 죽어버리면 메모리 용량을 확인해본다.

AWS 2025.02.05

[친절한 SQL 튜닝] Table Full Scan VS Index Range Scan

I/O 튜닝이 곧 SQL 튜닝이다 !SQL이 느린 이유SQL이 느린 이유는 십중팔구 I/O 때문이다. 구체적으로 말해, 디스크 I/O 때문이다. I/O는 잠(SLEEP) 이다. OS 또는 I/O 서브시스템이 I/O를 처리하는 동안 프로세스는 잠을 자기 때문이다. 프로세스는 실행중인 프로그램이다. 여러 프로세스가 하나의 CPU를 공유할 수 있지만, 특정 순간에는 하나의 프로세스만 CPU를 사용할 수 있다. 열심히 일해야 할 프로세스가 한가하게 잠을 자고 있으니 I/O가 많으면 성능이 느릴 수 밖에 없다. DB버퍼캐시디스크 I/O 가 SQL 성능을 결정한다. SQL을 수행하는 과정에 계속해서 데이터 블록을 읽는데, 자주 읽는 블록을 매번 디스크에서 읽는 것은 매우 비효율적이다. 모든 DBMS 에 데이터 캐싱..

SQL 2024.11.28

[친절한 SQL 튜닝] 하드파싱 VS 소프트파싱

SQL 공유 및 재사용 라이브러리 캐시SQL 파싱, 최적화, 로우 소스 생성 과정을 거쳐 생성한 내부 프로시저를 반복 재사용 할 수 있도록 캐싱해 두는 메모리 공간.SGA 구성요소이다.SGA(System Global Area) 서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 캐싱하는 메모리 공간SQL이 전달되면 -> DBMS 는 해당 SQL이 라이브러리 캐시에 존재하는지 확인캐시에서 찾으면 곧바로 실행 단계로 넘어감 = 소프트 파싱캐시에서 찾지 못하면 최적화 단계를 거침 = 하드 파싱 하드파싱옵티마이저는 SQL을 최적화할때 아래 정보를 사용한다.테이블, 컬럼, 인덱스 구조에 관한 기본 정보오브젝트 통계 : 테이블 통계, 인덱스통계, 컬럼통계시스템 통계 : CPU 속도, Si..

SQL 2024.11.28

[JAVA] 이것이 자바다 !_6장 클래스

※ 6장_클래스 ▶ 6.1 객체 지향 프로그래밍 ▷ 객체지향 프로그래밍의특징 캡슐화 캡슐화란 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것을 말한다. 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다. 필드와 메소드를 캡슐화 하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는데 있다. 자바 언어는 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지를 결정하기 위해 접근제한자를 사용한다. 접근 제한자는 객체의 필드와 메소드의 사용 범위를 제한함으로써 외부로부터 보호한다. 상속 객체 지향 프로그래밍에서 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해준다. 상속..

JAVA 2023.11.29

[JS] 모던 자바스크립트 Deep Dive 북스터디 Week4

13장_스코프 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정되고, 이것을 스코프라고 한다. 즉 스코프는 식별자가 유효한 범위를 말한다. var x = 'global'; function foo(){ var x = 'local'; console.log(x); //local } foo(); console.log(x); //global 코드의 가장 바깥영역과 foo 함수 내부에 같은 x 라는 변수를 선언했다. 자바스크립트 엔진은 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조해야 할 것이지를 결정해야하는데 이를 식별자 결정이라고 한다. 식별자 결정을 할 때 자바스크립트 엔진은 스코프를 통해 어떤 변수를 참조해야 할 것인지를 결정한다. 자바스크립트 엔전은..

Javascript 2023.09.13

[JS] 모던 자바스크립트 Deep Dive 북스터디 Week3

10장_객체 리터럴 원시값은 변경불가능한 값이지만 객체 타입의 값, 즉 객체는 변경 가능한 값이다. 객체는 -개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다. 프로퍼티 : 객체의 상태를 나타내는 값 메셔드 : 프로퍼티를 참조하고 조작할 수 있는 동작 객체 리터럴에 의한 객체 생성 자바와 같은 클래스 기반 객체 지향 언어는 클래스를 사전에 정의하고 필요한 시점에 new 연산자를 사용하여 인스턴스를 생성하는 방식으로 객체를 생성한다. 하지만 자바스크립트는 프로토타입 기반 객체 지향 언어로서 클래스라는 개념이 없고 별도의 객체 생성 방법이 존재한다. 객체 리터럴에 의한 객체 생성은 가장 일반적인 자바스크립트의 객체 생성 방식이다. 객체 리터럴은 중괄호({...}) 내에 0개 이사의 프로..

Javascript 2023.09.13

[GenAI스터디] Attention Mechanism

Transformer 는 어떻게 가장 주목받는 알고리즘이 되었는가. Encoder - Decoder 방식은 아주 오래된 아이디어이고 Machine Learning 에서도 초반부터 사용한 방식이다. Transformer 가 등장하기 이전에 Encoder - Decoder 방식을 구현하기 위해 가장 널리 쓰인 알고리즘은 RNN 이었다. 사실 2017년 Transformer가 등장하기 전에는 RNN 이 자연어 처리의 표준과 같았다. 그 자리를 지금 Transformer 가 대체하고 있다. 그 이유에는 여러가지 요인이 있지만 가장 많이 꼽는 것은 Self-Attention 이다. Self-Attention을 이해하기 이전에 Attention 을 이해해보자. Attention Attention은 RNN 기반의 S..

카테고리 없음 2023.09.13