본문 바로가기

개발/Backend

(7)
모르면 손해보는 git rebase (1) 여러 사람이 한 프로젝트(레포지토리)에서 협업 할 때에는 브랜치 관리가 필수적이다. 다른 말로 표현하면 혼자 한 프로젝트를 전담한다면 git에서 브랜치 관리가 크게 중요하지 않다. 과거의 나는 대부분 혼자(혹은 두어명이) 하나의 레포를 전부 관리했었고, 그러다 보니 git의 다양한 커맨드를 사용할 일이 없었다. 그러다 보니 가끔 충돌이 발생할 때 문제를 해결하는 방법에 대해서도 민망할 정도로 무지한 편이었다. 그러다 최근에 git의 다양한 커맨드를 알게 되어 잘 사용하고 있는데, 사용할수록 그동안 모르고 살았던 시간이 아깝다는 생각이 들었고 (ㅋㅋㅋ) 많은 사람들이 git rebase 를 비롯한 다양한 기능을 편하게 사용하길 바라며 내용을 정리해보고자 한다. ✅ git rebase다른 사람과 협업하기 ..
HTTP/3, HTTP over QUIC HTTP/3는 3번째 메이저 버전으로 2022년 6월 6일 RFC 9114를 통해 표준화 되었습니다. HTTP/3에 대해 들어보셨다면 익히 아시겠지만, HTTP/3는 UDP 기반의 QUIC 프로토콜을 사용합니다. 그래서 RFC 9114 의 주요 내용을 읽어보면서 (그 중에서도 의미론적인 접근방법으로) HTTP/3에 대해서 간략하게 소개하고, TCP 프로토콜의 한계에 대해 먼저 알아보려고 합니다. HTTP는 1994년 ~ 1995년에 인터넷 붐을 맞이하며, 1996년에 HTTP/1.0 을 문서화한 RFC 1945를 발표했습니다. HTTP/2를 문서화한 RFC 7540 은 2012년 처음 제안되어서 2015년 표준화되었습니다. 그리고 이번엔 7년만에 HTTP/3가 표준화된 것인데요. 아래의 점유율을 보면 R..
프로세스(Process)와 스레드(Thread) 프로세스 우리는 휴대폰이나 컴퓨터를 통하여 다양한 프로그램을 사용합니다. 지금 이 글을 보고 있는 순간에도 크롬이나 다른 인터넷 브라우저를 사용하고 있을 텐데요, 이러한 프로그램이 실행되는 단위를 프로세스라고 합니다. 조금 다른 측면에서 이야기해보자면, 컴퓨터의 운영체제는 컴퓨터의 자원을 관리하는 역할을 하는데, 실행 가능한 프로그램 파일을 메모리에 올리고 이를 프로세스로 실행시키기도 합니다. 그러니까 프로세스는 운영체제로부터 할당받는 자원의 단위라고 할 수 있겠습니다. 내 컴퓨터의 프로세스 이런 단위를 눈으로 확인해보려면 macOS를 기준으로, spotlight에서 activity monitor를 검색해보면 아래처럼 눈으로 확인해 볼 수 있습니다. 캡처화면 하단 우측에 따르면 약 660개의 프로세스와 ..
[redis] redis의 데이터 타입 Strings redis에서 사용하는 가장 일반적인 형태이다. 이 타입은 binary safe한데, JPEG 이미지 등 어떤 형태의 데이터도 저장 가능하다는 것을 의미한다. 최대 512Mb의 길이를 저장할 수 있다. strings 타입으로는 아래에 있는 것들을 할 수 있다. APPEND 명령어를 사용하여 기존 문자열과 이어붙이는 것이 가능하다. INCR family(incrby, decrby)를 사용하여를 atomic한 카운터를 구현할 수 있다. GETRANGE나 SETRANGE를 사용하여 문자열 중 아무 위치로 접근할 수 있다. Lists Lists는 strings의 입력 순서로 정렬된 단순한 배열이다. List의 맨 왼쪽(head)나 맨 오른쪽(tail)에 추가하는 것이 가능하다. LPUSH는 왼쪽으..
[chrome dev summit 2021] Payment and address form best practices 결제 과정 결제 정보 입력 폼에 대한 베스트 예제 결제 양식에 대한 모범 사례를 구현하는 방법 HTML 올바른 형식의 HTML은 좋은 결제 환경의 핵심 추가적인 예시는 이 링크(sign in form best practices)를 통해 확인 built-in element를 사용할 것을 권장 적극 활용 시, 크로스플랫폼, 인앱 브라우저, 접근성을 향상시킬 수 있음 (form을 사용하지 않고 div 등으로 래핑하는 것과 같이) 자바스크립트로만 양식 제출을 할 수 있게 처리하게 하는 유혹을 느낄 수 있음 form은 코드에 결함이 생기거나 일부의 자바스크립트를 비활성화한(왜?) 유저들에게도 실행되게 할 수 있음 type 속성: 모바일 유저들에게 적절한 키보드를 제공함 기본 내장 브라우저 유효성 검사를 자바스크립..
[kafka] Kafka란 Kafka 우리는 많은 정보들을 데이터베이스에 저장하고 있습니다. 데이터베이스에 저장되는 정보들은 대부분 유저와 같이 어떠한 것(thing)들입니다. 이런 것(thing)들은 어떠한 상태를 가지게 되는데, 이것들도 데이터베이스에서 저장되었습니다. 그러니깐 상태가 변경되는 이벤트의 발생보다는 객체 자체를 우선시 하여 생각한 것이죠. 그러다 객체를 먼저 생각하는 것보다 이벤트가 발생하는 것을 우선시하는 것이 낫다고 생각을 하게 되었습니다. 이벤트는 어떤 일이 일어났는지에 대한 설명과 같은 상태를 가지게 되는데요. 이벤트는 객체에 어떤 일이 일어났는지에 대한 시간의 표시입니다. 영상에서는 이런 이벤트를 데이터베이스에 저장하기에는 조금 성가시다고 표현하고 있습니다. 그래서 로그라는 구조를 이용해보기로 합니다. ..
[database] transaction isolation level Isolation level Isolation level 이란 여러 사용자가 동일한 데이터를 동시에 수정하려고 할 때 발생하는 상황을 정확하게 정의할 수 있도록 제공하는 기능 중 하나로, 아래 세 개의 수준을 가진다 표준 SQL 트랜잭션 격리 수준에는 Read uncommitted 도 포함되지만 PostgreSQL에서는 지원하지 않는다 (다중 버전 동시성 제어를 구현하는 경우는 이 수준을 지원할 수 없기 때문) 또 PostgreSQL의 Repeatable Read 에서는 phantom read가 불가능하다 level 1 Read Committed level 2 Repeatable Read level 3 Serializable 대부분의 DBMS에서는 Read Committed를 기본으로 설정한다 격리 수준..