전체 글

개인 공부 목적으로 작성된 블로그 입니다.
CS/네트워크

OAuth 1.0 부터 OAuth 2.1

getting_started_with_oauth_2.0 책을 읽으면서 정리한 내용입니다. 책 이외의 내용이 포함되어 있습니다. OAuth는 Open Authorization으로 애플리케이션 인증을 위한 접근 관한 개방형 프로토콜이다. 근래 서비스를 보면 OAuth를 표준 인증/인가 프로토콜을 사용하고 있다(자체 로그인은 지원하지 않는 경우도 빈번하다)개발을 공부하다보면, OAuth를 통한 인증 인가를 피하기 어려운데, 단순해보이는 것과 달리 OAuth를 제대로 이해하기 못하면 OAuth 로직 구현에 많은 시간을 할애한다.사이드 프로젝트중 OAuth를 다시 한번 만나게 되었는데, 이번 기회를 통해 OAuth를 정리하고자 한다.OAuth의 발전 과정을 알아보면서 OAuth를 이해해보자OAuth 1.0우리가 ..

CS/데이터베이스

트랜잭션

데이터 중심 애플리케이션 설계 책을 읽으면서 정리한 내용입니다. 책 이외의 내용이 포함되어 있습니다. 다음은 데이터베이스를 운영하는 도중 발생할 수 있는 문제이다.끄기 연산은 언제라도 실패할 수 있다.연산중 데이터베이스가 종료될 수 있다.네트워크에 문제가 생겨 데이터베이스 노드간 통신 문제가 생길 수 있다.동시에 발생하는 쓰기 연산에 대해서 덮어쓸 수 있다.부분 갱신으로 인해 클라이언트가 잘못된 데이터를 읽을 수 있다.race condition으로 인한 버그가 발생할 수 있다.위와 같은 문제를 단순화 하고자 트랜잭션이 도입되었다. 트랜잭션은 읽기 쓰기 연산을 하나의 논리적 단위로 묶는 것이다.트랜잭션 내부에 있는 모든 읽기, 쓰기는 하나의 논리적 단위이다.트랜잭션은 전체가 성공하거나 실패한다.(원자성) ..

사이드 프로젝트

[아워메뉴] ERD 설계 (엔티티 설계)

아워메뉴 프로젝트를 개발하면서 공부한 내용입니다.  아워메뉴를 다시 개발하면서 V1에서 고려하지 못했던 엔티티 설계를 다시 하였다. V1 에서 엔티티 설계를 잘못해서 프로젝트 중반에 예상하지 못한 문제를 많이 만나게 되었는데, 같은 실수를 반복하지 않기 위해  처음부터 다시 설계 하였다.좋은 ERD, 좋은 엔티티어떤 ERD를 좋다고 할 수 있을까?데이터베이스 수업시간에 DB 설계와 관련하여 "정규화"라는 개념을 배우게 된다. "정규화"를 통해 관계형 데이터 베이스의 무결성을 보장하고, 용량을 줄일 수 있다. 그러나 우리가 실제로 만나는 ERD는 이론으로 배웠던 "정규화"와 다르다.일단 실제로 우리가 구성하고자 하는 비즈니스 로직이 생각보다 복잡하다. 크게 문제가 되지 않는 경우 편의성을 위해서 반정규화 ..

사이드 프로젝트

Airflow + docker-compose 환경 구축 (Pycharm)

로컬 환경(window)와 개발환경(linux)환경에서 사용하기 위해 airflow를 docker-compose 환경에서 구축하면서 작성한 포스팅입니다. 참조한 문서입니다 https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html Running Airflow in Docker — Airflow Documentation airflow.apache.org 1. docker compose.yml 다운로드curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.10.4/docker-compose.yaml'airflow에서 제공하는 docker-compose.yaml을 ..

회고

2024 읽은 책 결산

2024년에 읽은 책을 정리하고자 한다.읽은 책은 다음과 같다.컴퓨터 네트워킹 하향식 접근이펙티브 자바객체지향의 사실과 오해입문자를 위한 병렬 프로그래밍 컴퓨터 네트워킹 하향식 접근 제목과 동일하게 컴퓨터 네트워크에 대해 하향식으로 공부할 수 있다. CS 공부을 하다보면 만나게 되는 연쇄 법칙(계속 해서 키워들 들어가는 것)을 예방할 수 있다. 다만 하향식 접근인 만큼 질문에 대한 답을 뒤로 미루는 경향이 있다. "해당 기술에 대해서는 다음에 알아보자~" 라는 뉘양스가 강하다. 네트워크에 대한 전체 흐름에 대해 학습하기 좋은 책이다. 무선 통신을 제외하고 읽었다.이펙티브 자바 자바 언어에 대한 가이드를 제시한다. "XXX는 지양하자", "XXX는 XXX으로 구현하자" 와 같이 목차마다 대표 가이드가 있는..

인프라

데이터베이스가 계속 꺼지는 경우 (시스템 용량 초과)

이 포스팅은 개인 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있습니다. 몽고디비리눅스 환경에서 실행중이였던 크롤링 파이썬 프로그램에서 몽고디비 연결실패 에러가 발생하였다. sudo systemctl status mongod 먼저 몽고 디비가 켜저 있는지 확인하였다.몽고 디비가 꺼져 있었다.. 다시 몽고 디비를 실행하고 파이썬 프로그램을 실행하였다.sudo systemctl startmongod 동일한 몽고디비 연결 실패 에러가 발생하였다. 몽고디비의 문제가 아니라는 것을 직감할 수 있었다. 디스크 사용량혹시나 하는 마음에 디스크 사용량을 확인해봤다.df -h Filesystem Size Used Avail Use% Mounted ontmpfs ..

Java

자바 NIO (Buffer, Selector)

이 글은 개인 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있습니다. Java IO자바에서는 IO를 스트림으로 처리한다. OutputStream outputStream = socket.getOutputStream();InputStream inputStream = socket.getInputStream();read() 와 같은 블로킹 메서드를 통해 읽기, 쓰기를 처리한다. TCP 통신의 경우 ServerSocket(환영 소캣)에서 Accept한 socket을 클라이언트에게 전달하여 socket을 통해 클라이언트와 서버간 데이터를 주고 받는다. 이때 소캣에 있는 스트림을 반환 받아 입출력을 처리하게 된다.이러한 IO처리 방식에는 몇가지 문제가 있다. 1. Blocking IOblocking I..

카테고리 없음

우테코 프리코스 4주차 회고 및 1차 결과

우테코 4주차 과제를 진행하면서 고민했던 내용을 정리했습니다. 참고 없이 진행된 내용으로 다소 주관적인 내용이 포함되어 있습니다.과제4주차 과제는 매우 어려웠다. 문제를 처음 읽기 시작할때부터, 심상치 않음을 느꼈다.과제는 편의점 결제 시스템 프로그램을 개발하는 것이다.요구사항이 전 미션에 비교하여 휠씬 많았다. 요약하면 다음과 같다.재고 관리 기능프로모션 할인 기능맴버쉽 할인영수증 출력기능 목록상품을 구매할 수 있다.재고가 있는 상품만 구입할 수 있다.프로모션 할인을 적용할 수 있다구입한 날짜가 프로모션 날짜 범위에 있어야 적용할 수 있다.프로모션은 N + 1 구조이다.프로모션 재고가 떨어지면, 정가로 구매해야한다.맴버쉽 할인을 적용할 수 있다.맴버쉽 회원은 프로모션 미적용 금액의 30%를 할인 받는다..

카테고리 없음

우테코 프리코스 3주차 회고

우테코 3주차 과제를 진행하면서 고민했던 내용을 정리한다. 참고 없이 진행한 내용으로 다소 주관적인 내용이 포함되어 있다.과제3주차 과제는 로또 프로그램을 구현하는 것이다. 요구사항은 다음과 같다.로또 번호의 숫자 범위는 1~45까지이다.1개의 로또를 발행할 때 중복되지 않는 6개의 숫자를 뽑는다.당첨 번호 추첨 시 중복되지 않는 숫자 6개와 보너스 번호 1개를 뽑는다.당첨은 1등부터 5등까지 있다. 당첨 기준과 금액은 아래와 같다.1등: 6개 번호 일치 / 2,000,000,000원2등: 5개 번호 + 보너스 번호 일치 / 30,000,000원3등: 5개 번호 일치 / 1,500,000원4등: 4개 번호 일치 / 50,000원5등: 3개 번호 일치 / 5,000원로또 구입 금액을 입력하면 구입 금액에 ..

카테고리 없음

우테코 프리코스 2주차 회고

우테코 2주차 과제를 진행하면서 고민했던 내용을 정리한다. 참고 없이 진행한 내용으로 다소 주관적인 내용이 포함되어 있다.과제2주차 과제는 자동차 경주를 구현하는 것이다. 기능 요구사항은 다음과 같다.주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다.각 자동차에 이름을 부여할 수 있다. 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.자동차 이름은 쉼표(,)를 기준으로 구분하며 이름은 5자 이하만 가능하다.사용자는 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다.전진하는 조건은 0에서 9 사이에서 무작위 값을 구한 후 무작위 값이 4 이상일 경우이다.자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한 명 이상일 수 있다.우승자가 여러 명일 경우 쉼표(,)를 이용하..

bluesparrow
Bluesparrow