분류 전체보기

    이미지 받기

    아래 코드와 같이 @RequestPart 어노테이션을 이용해 이미지를 받아올 수 있다. value엔 이미지를 보낼 때 사용한 키 값을 넣으면 된다. package com.example.demo.controller; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; @RestController @RequestMapping("/image") @RequiredArgsConstructor @Slf4j publ..

    메모리 관리 및 가상 메모리

    42과제를 하며 fork를 제대로 쓸 기회가 있어 여러가지 테스트 해보는 도중 의문이 하나 생겼었다. fork이전 부모 프로세스에서 가지고 있는 값이 있는데 fork 이후 주소값을 보면 동일한 주소를 가지고 있다. fork하면 부모를 복사해 자식을 만들기에 여기까진 '그렇지'라고 생각했는데 그러면 자식이나 부모에서 해당 주소의 값을 바뀌면 똑같이 바뀌는 것인가? 라는 생각을 했다. 주소값이 동일하기 때문에 이런 생각을 했다. 실제 c 코드로 테스트 해봤는데 안바뀌었다. HTML 삽입 미리보기할 수 없는 소스 실행 결과 '서로 주소값만 같고 실제로 다른 공간인 것인가?' 정도로 추론만 가능했는데 메모리 개념을 가볍게만 알고 있기 때문이라는 것을 깨달았다. 오랜만에 운영체제 책을 다시 꺼내 공부했다. 메모..

    Google Apps Script 쓸 때 같이쓰면 좋은 크롬 확장 프로그램

    글 내에서 앞으로 google apps script를 gas라고 부를 것임을 알립니다. Google Apps Script GitHub Assistant 다운로드 링크 gas로 작성한 것을 github repository의 특정 branch를 지정해서 코드를 올릴 수 있게 해준다. 단, repository가 public이어야 한다. 참고로 처음엔 github access token을 통해 로그인해야 한다. AppsScript Color 다운로드 링크 편집기를 다크모드로도 볼 수 있게 해준다.

    write함수로 stdout(1)이 아닌 fd 값으로 출력 했을 때의 pipe와 redirection

    왜 이러한 글을 작성하게 되었는가? 42seoul 과제를 하던 중 오픈소스인 테스터기를 사용해 결과를 출력해보던 중 어떻게 봐도 맞는 답인데 틀리게 나와서 테스터기 코드를 분석하다가 알게 된 내용인데 더 자세히 남기고 싶어 작성한다. 테스터기에선 내 출력 결과를 파이프를 통해 grep에 넣어 맞는 결과를 선택해 비교하여 결과를 출력해주는 방식이었다. 해당 테스터기 코드도 문제가 없어 뭐가 다를까 생각했는데 내 코드에서 시스템 호출 시의 에러를 출력하는 부분이 일반적인 방법인 write함수에 stdout의 fd 값인 1을 넣어 출력하는 방식이 아니었다. 내 방식은 시스템 호출이 실패함에 따라 자동 설정된 errno에 따라 에러를 출력해주는 perror를 이용해 출력하는 방식이었다. 이 경우 fd가 stde..

    [AWS] ACM 인증서 발급 (Route 53, 가비아)

    ACM 인증서 발급 이유 ELB, CloudFront를 사용해보려는데 해당 서비스에 HTTPS를 적용하려면 AWS에서 제공하는 ACM 서비스를 통해 SSL 인증서를 발급받아야 가능하다고 해서 발급받기로 했다. 발급 방법 여러울 것 하나 없다. 먼저 ACM의 인증서 요청 페이지로 간다. 추가하려는 도메인을 적고 검증 방법은 DNS 검증 그대로 두고 요청한다. 그러면 아래와 같이 완료된다. 인증서 ID를 누르면 아래와 같은 페이지가 나온다. 이후엔 도메인 구입처가 Route 53이냐 가비아냐에 따라 다르니 필요한 것을 보고 맞게 설정하자. * AWS Route 53 서비스를 통해 도메인 구매 Route 53에서 레코드 생성을 누르면 아래와 같이 뜬다. 레코드 생성 버튼을 누르면 아래와 같이 뜬다. 내 경우엔..

    [SSL][Certbot] Invalid response from http://my_domain/.well-known/acme-challenge/value: 404

    문제점 webroot 방식으로 발급받으려고 하는데 let's encrypt 서버가 challenge가 저장되어 있는 .well-known이라는 uri로 접근하지 못해 발생 해결방법 웹 서버(nginx) 설정에서 해당 위치로 접근할 수 있게 설정 server { listen 80; listen [::]:80; server_name my_domain; ... location /.well-known/acme-challenge { allow all; # root 위치를 발급 시에 입력한 web root path로 지정 root /var/www/certbot; } ... } 이 문제가 발생한 이유 객관적으로는 웹 서버에 대한 이해가 적어서 발생했다. 개인적으로는 문제에 대해선 바로 이해했으나 웹 서버를 너무 오랜..

    [SSL][Certbot] Fetching http://my_domain/.well-known/acme-challenge/value LbJM: Connection refused Connection refused

    문제점 webroot 방식으로 발급받으려고 하는데 웹 서버가 동작하고 있지 않아 let's encrypt 서버에서 ssl을 발급받기 위해 certbot이 동작하고 있는 서버로 접속하지 못해 발생 해결 방법 위 에러로 검색하니 링크 글이 나왔다. HTTP 사이트가 필요하다는 답변에 당연한 것 아닌가? 했는데 생각해보니 웹서버를 동작시키지 않고 있었다... 웹 서버를 동작시켜 HTTP가 활성화 된 사이트를 열어두면 정상적으로 해결된다. 이 문제가 발생하게 된 이유 로컬에서만 nginx를 동작시켜 두고 서버에서도 동작하고 있을 것이란 이상한 생각으로 인해 문제가 발생했다. 이를 계기로 certbot에 대해 더 공부해보니 이에 대한 이해가 높았으면 바로 생각했을 부분이었다.

    xvda?

    aws ec2에서 lsblk를 치자 xvda라는게 보였다. VirtualBox로 작동시킨 debian리눅스에서 lsblk를 쳤을 때 나오는 sd(SCSI Disk)a랑은 달라서 뭔지 알아봤다. 우선 2가지로 알아보았다. xvd란 aws에서의 취급 xvd란 Xen Virtual Disk의 약자로 Xen 하이퍼바이저를 통해 Xen Server에서 제공하는 가상 디스크이다. sd가 SCSI 인터페이스로 연결되는 disk라는 것을 뜻하는 것처럼 어떠한 disk라는 의미로 받아들이면 된다고 본다. aws에서의 취급 aws 공식 문서인 링크 글에서 확인할 수 있듯이 사용 가능한 디바이스 이름이 있다. xvda의 경우 루트 볼륨에 사용되는 이름으로 예약되어 있다. 처음에 ec2 인스턴스를 생성할 때 스토리지 구성 부..

    Born2beroot 과제로 인해 알게된 것

    이 글은 실질적으로 내가 더 정확히 알게 된 것을 기록하기 위한 것! SSH 프로토콜을 통해 클라이언트에서 서버로 접속할 때 인증 방식은 비밀번호 인증과 키 기반 인증 2가지가 있음. * SSH 프로토콜을 통해 GitHub 저장소와 AWS EC2에 접속하는 방식은 비대칭 키 방식을 사용하며 키 기반 인증을 통해 비밀번호 없이 접속할 수 있도록 한 방식이다. GitHub는 클라이언트에서 생성한 공개 키를 GitHub 서버에 등록 AWS EC2는 서버에서 생성한 개인 키를 사용자에게 제공 공통적으로 클라이언트가 개인 키를 가지고 있기 때문에 키 기반 인증이 가능하다. 키 기반 인증 방식은 아래와 같다. 1. 클라이언트가 서버에 연결 요청을 하면 서버에서 무작위 메세지를 클라이언트로 전송한다. 2. 클라이언트..

    [vscode][AWS EC2] remote ssh cpu 사용률 100% 문제

    문제 파악 AWS EC2 서버에 있는 문서를 변경하려는데 vim이나 nano로 하기 싫어서 vscode의 remote-ssh를 이용해 연결해서 사용했다. 사용하다가 다른 걸 처리하고 있던 중에 갑자기 연결이 끊겼는데 이 때는 신경쓰지 않고 있었다. 나중에 다른걸 처리하고나서 터미널로도 열어둔 ssh 연결도 끊긴 것을 보고 설마하는 생각에 EC2 서버 상태를 봤다. 왓??? 처음엔 이걸보고 '내가 뭘 했다고?' 하는 생각이 들었다. 곧 바로 vscode로 ssh 열어놓은 것 말고는 이전과 다를게 없었기에 이것을 의심하고 알아보기 시작했다. 혹시나 다시 vscode로 연결해보니 순식간에 CPU 사용률이 90%대로 치솟았다. 또 먹통이 되어 모니터링해보니 역시나... 서버에 다시 연결하고 있던 터미널마저 난죽..