본문 바로가기

전체 글154

컨디션 기록 - 집중력과 정신력을 이해하고 효과적으로 사용하기 최근 잦은 이슈 대응과 산발적인 업무로 인해 퍼포먼스가 많이 저하됐음을 느끼고 이에 대한 구체적인 원인을 분석하고 개선하고자 하루에 대한 기록을 세부적으로 하기로 했다. 일어난 시간부터 정각마다 나의 컨디션을 체크하고 그때 무슨 일이 있었는지 간략하게 기록했다. 그리고 매일 하루가 어땠는지 종합 컨디션을 기록했다. 컨디션 기록으로 알게된 유의미한 결과 사소한 결정에 많은 정신력을 소모한다 운동으로 정신력을 회복할 수 있다. 아침 늦장은 하루를 망친다 업무 처리에 상당한 에너지가 소모된다 사소한 결정에 많은 정신력을 소모한다 인생의 행복과 성공은 그동안 내린 의사결정들로 이루어진다. 그만큼 의사결정이란 것은 중요한 행위이고 에너지가 많이 소모되는 행위이다. 하지만 나는 종종 인생에 크게 중요하지 않은 부분.. 2023. 9. 24.
2021년 회고록 2020 회고록 2학년 겨울방학 회고록 2021년은 많은 불안을 갖고 실패도 많이 했지만, 마지막엔 눈에 보이는 성과들이 많이 나왔던 해였다. 지금의 나는 학부 3학년을 마친 상태고, 한 IT 스타트업에서 백엔드 개발자로 산업기능요원을 복무할 예정이다. 이공계 국가우수 장학생 선발 올해 가장 뿌듯했던 두 가지 일 중 하나다. 합격 소식을 받은 건 1학기였는데, 당시에는 내가 하고싶거나 필요하다고 생각되는 공부들을 못하고 바쁜 나날을 보내면서 '내가 잘 하고 있는 건지'라는 생각이 많이 들었기 때문에 더 기뻤다. 이는 교내 이공계열에서 5명 안에 들었다는 것을 의미하기 때문에 다른건 몰라도 학과 공부는 2년 간 열심히 했다는 것을 인정받은 것 같았다. 알고리즘 ucpc 예선 탈락, 교내 대회 4등, 기업 .. 2022. 2. 2.
[OAuth] HTTP 통신으로 구글 auth token 발급 및 구글 api 사용하기 OAuth 개념이 어려운데, 구글을 예시로 간단하게 말하면 1. 사용자에게 권한 요청 및 동의를 받는다. 그러면 authrization code를 획득한다. 2. authorization code를 가지고 구글에게 access token을 요청한다. 3. 발급 받은 access token을 가지고 사용자의 구글 계정에 대해 구글 api를 사용한다. 이번 글에서는 oauth 개념에 대해 충실히 다루는건 아니고, 직접 HTTP 요청을 하고 응답을 받아보면서 어떻게 동작하는지 확인하고 이해도를 높여보자. oauth 인증 01. 구글 api 사용 등록 및 인증 GCP 콘솔에서 새 프로젝트 생성 프로젝트 선택 후 API 및 서비스 → 라이브러리에서 사용하려는 구글 api 사용 (이 글에서는 구글 드라이브 사용) .. 2022. 1. 11.
[OAuth] oauth2 작동 방식 구글(resource server)과 같은 서비스에서 access 토큰을 발급, 이 토큰으로 서비스에 제한적으로 접근할 수 있다. my application = client user = resource owner google = resource server 등록 : client가 resource server를 사용하기 위해 등록하는 과정 Client ID Client Secret : 절대 외부로 노출되면 안되는 값 authorized URI : 인증후에 user가 보게될 화면의 주소. client가 갖고있는 uri를 적어야한다. The value of this parameter must exactly match with one of the redirect_uri values that is listed f.. 2022. 1. 4.
[JPA] 스프링부트 Could not write JSON: Infinite recursion 에러 해결 에러 내용 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through r.. 2021. 12. 31.
[데이터베이스] Indexing and Hashing DB에서 데이터를 가져오는 방법에는 전체 데이터를 조사하는 Full Scan 방법과 인덱스 파일을 이용하는 Indexed Access 방법이 있다. Full Scan 방법은 데이터 파일의 레코드를 순차적으로 확인하는 방법으로 매우 느리다. Indexed Access 방법은 데이터파일과 구분되는 인덱스 파일에 접근해서 특정 레코드의 위치를 찾는 방법이다. Indexed Access의 두 가지 종류 Ordered indices : searc key가 정렬된 형태 Hash indices : 해시 함수를 이용해 search key를 균등하게 버켓에 분포됨 ordered index search key가 정렬된 상태. 인덱스 파일을 순차적으로 내려가면서 레코드를 찾음. Full Scan 방법과 차이 Data fil.. 2021. 12. 19.
[데이터베이스] Storage and File Structure - Block, File organization, Fixed/Variable Records 저장 방식 Overview of Physical Storage Media 데이터의 이동 : CPU ↔ 메인메모리 ↔ 디스크 디스크에서 필요한 데이터가 있는 블록을 메인 메모리로 이동 메인 메모리에서 CPU가 원하는 데이터를 찾음 Blocks : 데이터에 접근하고 이동하는 기본 단위 - DB 시스템은 블록의 전환 최소화를 추구함 Buffer : 메인메모리의 영역으로, 디스크의 블록을 복사해해서 저장한다 Buffer manager : 메인메모리 안의 버퍼 공간을 할당하는 서브 시스템 Buffer manage의 동작 필요한 블록이 현재 버퍼 안에 있는 경우, 블록의 주소를 반환 필요한 블록이 현재 버퍼 안에 없는 경우 버퍼에 공간을 할당한다 필요한 경우 새 블록과 교체함 Replaced block written back.. 2021. 12. 19.
[데이터베이스] Entity-Relationship Model - 모델링, ERD, 관계형 스키마 Modeling 데이터베이스는 entity와 그 관계로 모델링 될 수 있다. -> Entity-Relationship(E-R) Model attribute type simple / composite : 속성을 subpart로 나눌 수 있고 없음 name -> {first_name, middle_name, lasst_name} single-valued / multi-valued : 여러 개 값을 가지는 속성 phone_number -> 한 사람당 2 개 이상의 전화번호를 가질 수 있음 derived attributes : 다른 속성으로부터 유추될 수 있는 속성 age로부터 date_of_birth를 유추할 수 있다. composite, multi-valued, derived 속성은 뒤에서 스키마 표현 방식.. 2021. 12. 14.
[디자인패턴] 컴포짓 패턴 (Composite Pattern) 목적 클라이언트가 각 객체와 객체의 묶음을 동일하게 다룰 수 있도록 함 요소 문제 : 프로그램에서 각각의 객체(개별 객체) 또는 계층 구조로 이루어진 객체 묶음(복합 객체)을 다뤄야 함 해결 : 개별 객체와 복합 객체에 대해 동일한 작업을 적용. 대부분의 경우에 개별 객체와 복합 객체의 차이를 무시할 수 있도록 함 결과 : 유지보수에 유리 정의 컴포넌트 개별 객체와 개별 객체들을 계층 구조로 포함하는 복함 객체를 나타내는 인터페이스 또는 추상 클래스 개별 객체(Leaf) 다른 컴포넌트를 포함할 수 없는 컴포넌트 복합 객체(Composite) 개별 객체 또는 다른 복합 객체를 포함할 수 있음 컴포짓 패턴을 이용한 메뉴 디자인 MenuItem은 개별객체(Leaf), Menu는 복합 객체(Composite) .. 2021. 12. 13.
[디자인패턴] MVC 패턴 목적 업무 로직(Business Logic) 및 데이터(Model)와 보이는 부분(View)을 분리 요소 문제 : 데이터와 해당 데이터를 보여주는 부분(뷰)의 코드가 섞여있음 해결 : 데이터와 뷰를 분리하고 이들을 연동시키는 컨트롤러를 추가 결과 : loose coupling, 재사용성 설계 모델 : 데이터를 관리하는 부분 뷰 : 화면에 보이는 부분 컨트롤러 : 사용자의 입력을 처리하고, 모델과 뷰 사이에서 상호작용을 할 수 있도록 지원 MVC 패턴의 장단점 장점 클래스간 정보 공유를 최소화시킴 - 모델과 뷰가 서로에 대해 잘 몰라도 됨 같은 모델에서 여러 개의 뷰를 지원할 수 있음 단점 뷰가 업데이트 되어야 함을 알려줘야함 - 모델이 뷰에게 데이터를 직접 전달하는 것 보다 비효율적임 컨트롤러의 역할이 .. 2021. 12. 12.