100%를 한번에 바꾸는건 어려워도 1%를 100번 바꾸는건 쉽다.

생각정리 자세히보기

분류 전체보기 82

[컴퓨터공학] CS를 위한 기초 상식

1비트와 디지털1비트: 전기 스위치 1개전기가 흐르면 1, 아니면 0 4비트는 16가지의 경우의 수가 있다. 16, 8, 4, 2, 1 이렇게 외우면 된다.4비트와 16진수 그리고 진법변환거의 대부분의 경우 16진수 표기를 한다. 16진수 한글자는 4비트다. 16진수에서 10으로 넘어가는 경우가 A이다. 2진수로는 1010이다. 예를 들어 F4의 경우 8비트가 된다. => 1111 010016진수 표기가 사용되는 예색상표현, 컴퓨터 하드웨어 주소 표현, 메모리 값 표현 색상표현의 경우 8비트 => 256 (0 ~ 255)외워야 할 단위 체계와 숫자8비트를 하나로 묶어 1바이트라고 한다.1바이트는 영문자 한 글자가 저장될 수 있는 메모리 크기이며 관리의 최소 단위이다. 한글은 2바이트가 필요하다. 4비트는..

컴퓨터공학 17:26:33

[Node.js] Prisma VS MikroORM VS Drizzle

prisma에 대해서 어느정도 학습을 해보면서 약간 아쉬운 점들이 많았습니다. 그래서 Node.js 진영의 다른 ORM은 어떻게 하고있을까? 그 궁금함에 세 ORM을 비교하며 학습해보기로 하였습니다. 3가지 ORM의 특징특성PrismaMikroORMDrizzle ORM사용 편의성매우 직관적이고 설정이 간단하며, 빠르게 학습할 수 있음.관계 설정 및 모델링이 초기 구성이 Prisma에 비해 다소 복잡할 수 있음.API가 간단하고, 최소한의 설정으로 사용할 수 있도록 하여 사용자가 직접 필요한 부분을 확장마이그레이션 관리강력한 마이그레이션 관리 지원함. 마이그레이션 변경 사항 추적 및 자동화가 쉬움.Migration 기능이 내장되어 있으나, Prisma에 비해 설정과 관리가 복잡할 수 있음.마이그레이션 관리..

[Node.js] 413 Payload Too Large 오류 해결

안녕하세요. 이번 시간에는 413 Payload Too Large 오류를 해결해보는 시간을 가져보겠습니다. 413 Payload Too Large란?서버에서 처리할 수 있는 요청이 지정된 제한보다 큰 오류 RFC 9110부터는 Content Too Large로 오류 명이 수정됨. https://developer.mozilla.org/ko/docs/Web/HTTP/Status/413 413 Content Too Large - HTTP | MDNHTTP 413 Content Too Large 응답 상태 코드는 요청 엔터티가 서버에 의해 정의된 제한보다 크다는 것을 나타냅니다. 서버는 연결을 닫거나 Retry-After 헤더 필드를 반환할 수 있습니다.developer.mozilla.org 해결 방법우선 저는..

[생각정리] 판교 퇴근길 밋업 with 인프런 #08 HTTP

HTTP란?웹 기술을 다루는 것중 가장 중요한건 브라우저다. 하지만 브라우저는 항상 HTML을 가지고 있지 않다. 따라서 서버와 브라우저간의 통신이 중요하다. 그러나 이 둘 사이 거리가 얼마나 되는지, 어떻게 통신해야하는지는 미지수이다. 통신을 하기 위한 많은 방법중 하나가 바로 HTTP이다.핵심 기본 요소1. URL역할: URL은 웹 리소스를 식별하는 주소로서 클라이언트가 서버에 어떤 리소스를 요청할지를 명시하는 핵심적인 부분.구조:스키마(Scheme)사용되는 프로토콜을 정의. https는 HTTP에 SSL/TLS로 암호화된 버전을 의미EX) http://, https://호스트(Host)요청할 서버의 도메인 이름이나 IP 주소.EX) www.example.com.포트(Port)서버가 사용하는 네트워크..

[Deploy] Docker Image Size를 줄여 성능 개선

작은 스타트업의 특성상 백엔드 개발자가 인프라까지 만져야 하는 상황이 생깁니다. 그래서 제가 직접 인프라를 관리하고 있는데요. 오늘은 해당 부분의 문제를 발견하여 개선이 필요하다고 판단하여 성능 개선을 한 내용을 공유드리려고 합니다. NestJS를 Docker Image로 빌드하여 배포하게 된다면 좋은 가이드 라인이 되었으면 좋겠습니다. 내가 마주했던 문제점평소부터 꾸준하게 문제점이라고 판단했던 부분이였습니다. node.js를 사용하는 이유가 보통 빠르게 개발을 진행하기 위해 사용한다고 생각하였습니다. 하지만 빌드된 Docker Image의 크기는 무려 약 909MB였습니다. Spring을 빌드한 Docker Image의 크기와 별로 다를바가 없었습니다. 이는 node.js를 사용하는 이유에 맞지 않았습..

개발/Deploy 2024.10.10

[Deploy] Docker란?

최근 사이드 프로젝트나 회사에서 Docker가 편리하여 자주 사용하게 되었습니다. 그냥 사용하는 것 보다는 왜 사용하는지 알기 위해서 글을 작성하며 내용을 정리하려고 합니다. 이 글은 Docker가 설치되었다는 전제하로 설명할 예정입니다! Docker란?한줄로 쉽게 요약을 하자면 Container 기반 가상화 기술입니다. Container란 소프트웨어를 실행하는 데 필요한 모든 것을 하나의 패키지로 묶어 독립적으로 실행할 수 있는 가상화 기술을 말합니다. 기존의 가상화 기술의 단점을 보완하면서 애플리케이션을 독립적으로 실행할 수 있는 환경을 제공하여 일관된 배포와 관리가 가능하게 합니다. 어떤 부분이 달라졌지?자세한 설명을 위해서 기존 가상화 기술과 Docker를 비교하면서 설명을 드리도록 하겠습니다. ..

개발/Deploy 2024.07.29

[Node.js] Prisma 한방 쿼리로 성능 개선

현재 NestJS와 MySQL 그리고 Prisma라는 ORM의 조합으로 백엔드 개발을 하고 있습니다. 개발을 진행하면서 늘 불편하다고 느껴왔던 부분에 대한 개선이 필요하다고 판단하여 진행하게 되었습니다. 불편했던 점을 어느정도 개선할 수 있는 가이드라인이 되었으면 하는 바램에서 이 글을 작성해봅니다. 내가 마주했던 문제점기능을 추가하게 되면서 table을 하나 더 Join하게 되었고 그 과정에서 기존에는 평균 100ms의 응답속도를 가지던 API가 최소 6배, 최대 10배 정도 느려지는 현상을 발견하였습니다. 다음 사진은 Thunder Client를 사용하여 테스트한 결과입니다. 보통 API의 응답 속도가 느려지는 원인은 여러가지가 있지만 이 경우는 한번에 가져올 수 있는 쿼리를 여러번에 걸쳐서 나눠서 ..

[생각정리] 어떤 리더가 되어야 하는가? (프로젝트 회고록)

어느덧 학원에서 시작하였던 프로젝트도 마무리가 되면서 자연스럽게 회고록을 작성해야지! 라는 생각으로 글을 작성하게 되었습니다. 길다면 길고 짧다면 짧았던 1월 초부터 3월 말까지의 여정을 한번 다시 돌아보는 시간을 가져보려고 합니다. 우선 뜬금없는 이야기지만, 제 개발자 커리어의 최종 도착지는 CTO입니다. 제가 생각하는 CTO란 기술적으로 사람들을 이끌 수 있는 사람이라고 생각합니다. CTO는 기술적으로 많은 것을 아는 것도 중요하지만 사람들을 이끌 수 있는 사람이여야 합니다. 그러기 위해서는 최대한 기술적으로 많은 경험을 해보고 어느정도 사람들을 리드를 할 수 있는 환경을 경험하고 싶었습니다. 사실 초기 프로젝트를 시작하게 되면서 프로젝트의 기획을 하였고 어느순간 자연스럽게 사람들을 리드하게 되었습니..

[MySQL] DataBase 계정 추가, 수정

DataBase 계정을 추가해야할 일이 생겨서 추가하고 난 후 블로그로 다시 생각을 정리하게 되었습니다. MySQL을 설치했다는 전제하로 설명합니다. 추가 CREATE USER '사용자명'@'원격호스트' IDENTIFIED WITH 'mysql_native_password' BY '비밀번호'; GRANT ALL PRIVILEGES ON *.* TO '사용자명'@'원격호스트'; 수정 ALTER USER '사용자명'@'호스트명' IDENTIFIED BY '비밀번호'; FLUSH PRIVILEGES; 실 예시 root 계정의 모든 호스트에서 모든 DB와 모든 테이블의 접근을 허용한다. CREATE USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY '비밀번..

개발/MySQL 2024.01.26

[Linux] 그룹, 계정 설정

최근에 각자 리눅스 계정을 줄 일이 생겨서 그룹 설정과 계정 설정을 진행하였습니다. groupadd 그룹을 추가하는 명령어입니다. 그룹은 GID가 생성됩니다. GID는 그룹 생성시 할당되는 ID입니다. # 그룹 추가하기 sudo groupadd {groupName} # 그룹 생성 확인하기 cat /etc/group groupdel 그룹을 삭제하는 명령어입니다. sudo groupdel {groupName} useradd 사용자를 추가하는 명령어입니다. 사용자를 추가할 때 그룹을 지정해줘야 사용자관리가 편해집니다. sudo useradd -m {username} -g {groupname} -- 옵션 -- -m : 해당 유저의 폴더를 같이 생성 -g : 그룹 지정 passwd 계정의 비밀번호를 세팅합니다. ..

개발/Linux 2024.01.26