마르코의 개발 일기

고정 헤더 영역

글 제목

메뉴 레이어

마르코의 개발 일기

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (88)
    • JAVA (5)
    • Spring (9)
    • SpringSecurity (20)
    • 알고리즘 (1)
    • Database (10)
    • AWS (5)
    • 공학지식 (1)
    • SpringBatch (6)
    • SpringCloud (10)
    • Proxy (2)
    • Linux (1)
    • Node (2)
    • 보안 (3)
    • 암호화 (5)
    • 소켓 (1)
    • 프로젝트 일기 (4)

검색 레이어

마르코의 개발 일기

검색 영역

컨텐츠 검색

전체 글

  • SQL I/O 의 기본

    2023.08.05 by 성찬우

  • S3에서 파일을 업로드 해보자 (node)

    2023.06.27 by 성찬우

  • V8 Memory Leak 메모리 누수

    2023.06.22 by 성찬우

  • [JPQL] 기초

    2023.06.09 by 성찬우

  • [DOCKER] 배포

    2023.06.06 by 성찬우

  • [ JPA ] CriteriaBuilder

    2023.06.01 by 성찬우

  • P들의 여행 스타트

    2023.05.09 by 성찬우

  • Node.js socket.io(v4) 기초 | namespace, room

    2023.04.27 by 성찬우

SQL I/O 의 기본

SQL은 보통 ‘구조적 - 집합적 - 선언적’ 인 질의 언어이다. SQL을 통해서 우리가 원하는 바를 구조적, 집합적으로 선언하며 이를 절차적으로 처리한다. 절차적 결국 결과 집합을 만들어 내는데 있어서 “프로시저” 라는 것이 필요하다. 이 프로시저를 만들어내는 *DBMS내부엔진이 바로 “SQL 옵티마이저”이다. (*DBMS = DataBase Management System 즉, 데이터를 만들고 저장하고 관리하는 기술. ) 이렇게 SQL 옵티마이저로 프로시저를 생성하고 컴파일해서 실행 가능한 상태로 만드는 과정을 “ SQL 최적화” 라고한다. SQL 최적화 총 3가지의 진행 과정을 가지고있다. [SQL 파싱 → SQL 최적화 → 로우 소스화] [SQL 파싱] 사용자로부터 SQL을 전달 받으면 SQL 파..

Database 2023. 8. 5. 18:09

S3에서 파일을 업로드 해보자 (node)

테스트이기 때문에 s3를 만든다 하더라도 테스트 후 바로 지우세요 가장 먼저 IAM 에서 루트 사용자로 액세스 키를 발급받아서 .CSV 파일을 로컬에 가져왔으며 S3-ACCESS-KEY및SECRET ACCESS KEY를 받아왔다. 추후에 .env 파일에서 사용될것이다. S3를 생성하고 버킷에 권한 - 정책을 설정한다. 내 정책은 다음과 같다. Resource는 arn 주소에 버킷에있는 /* 하위 디렉토리에 대한 접근을 허가하는 것이다. { "Version": "2012-10-17", "Id": "testPolicy", "Statement": [ { "Sid": "Stmt1658663877057", "Effect": "Allow", "Principal": "*", "Action": [ "s3:DeleteO..

AWS 2023. 6. 27. 02:14

V8 Memory Leak 메모리 누수

node로 만들어진 서버를 돌리다보니.. pm2 monit를 보던 도중 은은하게 메모리가 계속해서 올라가는 현상을 목격했다.. 막 엄청나게 치솟지는 않지만.. 그래도 메모리를 V8의 GC가 자력으로 해소하지 못한다고 판단했고.. V8에 대해서 조금 공부해보고자 한다. v8의 역할은 js를 native code로 컴파일하여 실행한다. native code란 개발자가 직접 메모리를 할당하고 해제해야하는 Native한 환경을 갖는다.(근데 이거.. 맞나..? ) 우선 메모리를 살펴보자면 [ CODE , STACK , HEAP ] 이렇게 3가지의 영역으로 나뉜다. 간단하게 code를 실제 코드 stack은 함수, 변수, 클레스 (값(벨류)) heap은 오브젝트, 스트링, 클로저 (주소(레퍼런스)) v8이 컨트롤..

Node 2023. 6. 22. 02:03

[JPQL] 기초

우선 내가 사용하는 테이블의 경우 chat_room에 있는 idx를 각각 테이블이 가지고 있다. 한번 호출해보자 controller에서 간단하게 테스트 하면서 디버깅을 찍어보자 @RestController @RequestMapping(value = "/") public class TravelController { @PersistenceContext private EntityManager entityManager; @GetMapping("/") public void test(){ String jpql = "select 별칭 from ChatRoomGroup 별칭"; TypedQuery query = entityManager.createQuery(jpql, Object[].class); List result..

프로젝트 일기 2023. 6. 9. 01:29

[DOCKER] 배포

어느 정도 프로젝트가 만들어졌고 이게 DOCKER를 통해서 어플리케이션을 배포할 예정이다. Dockerfile을 생성해주고 openjdk:17 버전으로 내가 만들어둔 jar파일 경로를 변수로 지정해준뒤. 해당 JAR_FILE에 있는 .jar 파일을 app.jar로 빌드한다 라는 내용이다. 이제 Dockerfile에 있는 경로에서 gitbash를 열어준다. 이후 docker build --tag 내아이디/커스텀이름:tag . 이렇게 build를 실행한다. 대신 대문자가 있으면 안되는 것 같다. 예시 ) docker build --tag marco2109/pstravel:1.1.1 . 이후 docker images를 하면 내가 지정한 아이디/커스텀이름의 이미지가 생성이 되는데 여기서나는 docker desk..

프로젝트 일기 2023. 6. 6. 22:44

[ JPA ] CriteriaBuilder

JPA로 단순한 쿼리만 작성하다가 조금만 설계가 복잡해져도 "?? 어떻게..??" 하는 경우가 발생한다. 그래서 JPQL의 힘을빌려 조금더 구체적인 쿼리를 작성가능하게 하는데 그래서 오늘 사용해볼 것은 JPQL을 자바 코드로 작성가능하게 하는 빌더 클래스이다. @PersistenceContext private EntityManager entityManager; 우선 EntityManager를 사용하려는 class에 주입한다. 보통 서비스 로직일테니 service 클래스 일것이다. JPA는 JAVA객체와 관계형 DB 사이의 매핑을 처리하는 기술인데. EntityManager를통해서 영속성 컨텍스트, 엔티티 생명주기를 관리해준다. 즉, JAVA와 DB의 관계를 도와주는 핵심 인터페이스이다. 또한 @Persi..

프로젝트 일기 2023. 6. 1. 01:06

P들의 여행 스타트

사이드 프로젝트를 진행하기로 했다. 최근 여행을 갓는데 호텔방에 누워만있는 나 자신을 발견해서 "아... 나같은 사람들을 위한 어플은 없을까..?" 하는 생각에 시작하게 되었다. 지도를 통해서 사람들의 위치를 알 수 있고 그 사람과 채팅을 하고 그사람의 여행 계획을 볼 수 있다. 지금 메세지 기능을 위해서 DB를 설계하고 있는데 생각보다 고려해야할 것들이 많아서 너무 고통스럽다..ㅜㅜ 하지만 더 발전을 한 내 자신을 위해서 프로젝트 팀원분과 고민을 해봐야할 것 같다... ..오늘은 고민만하다가 하루가 끝나네..ㅠㅠ

프로젝트 일기 2023. 5. 9. 01:25

Node.js socket.io(v4) 기초 | namespace, room

socket.io 는 양방향 통신을 허용한다. 쉽게 생각하면 우리가 전화를 할때 말하면서 들을 수 있다라고 생각할 수 있으며 실제로 같은 전이중 시스템이라고 한다. socket.io에는 다양한 개념들이 존재한다. 예를들면, " 네임 스페이스 , 룸 " 과 같은 내용들이 존재한다. muliplexing 이라고도 불리우는 Namespaces는 일종의 채널이다. 여기서 채널이 왜 필요한지 부터 설명해야 이해가 빠르다. 다음 코드는 기본적으로 chatgpt 에서 예제로 보여주는 코드이다. const http = require('http'); const socketio = require('socket.io'); // Create a new HTTP server const server = http.createSer..

소켓 2023. 4. 27. 01:07

추가 정보

인기글

최신글

페이징

이전
1 2 3 4 ··· 11
다음
TISTORY
마르코의 개발 일기 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바