책장
-
[독후감 23년-28] 1타 7피 주식 초보 최고 계략
-
[독후감 23년-27] 페인트
-
[독후감 23년-26] 중력에 대한 거의 모든 것 : 가장 유명하지만 누구도 이해하지 못하는 힘
-
[독후감 23년-25] 사람, 장소, 환대
-
[서평 23년- 24] 알고리즘 트레이닝(초록이) | 두 번째 읽음
-
[서평 23년-23] 면접을 위한 CS 전공지식노트
-
[독후감 23년-22] 침묵의 봄
-
[서평 23년-21] 스프링 부트 실전 활용 마스터
-
[서평 23년-20] 자바와 JUnit을 활용한 실용주의 단위 테스트
-
[독후감 23년-19] 물고기는 존재하지 않는다: 상실, 사랑 그리고 숨어 있는 삶의 질서에 관한 이야기
-
[독후감 23년-18] 다정한 것이 살아남는다
-
[독후감 23년-17] 1984
-
[서평/23-16] SQL 레벨업 : DB 성능 최적화를 위한 SQL 실전 가이드
-
[서평/23-15] Do it! 플러터 앱 프로그래밍: 오픈 API 활용 + 파이어베이스 + 구글 맵 + 광고 수익까지
-
[서평/23-14] 공간의 미래: 코로나가 가속화시킨 공간 변화
-
[서평/23-13] 개발자를 위한 글쓰기 가이드: 예제로 배우는 테크니컬 라이팅 핵심 비법
-
[서평/23-12] 컴퓨터과학으로 배우는 블록체인 원리와 구현 : 수학, 암호학, 네트워크 이론과 실습으로 이해하는 블록체인
-
[서평/23-11] 스프링 부트 코딩 공작소
-
[서평/23-10] 저주토끼
-
[서평/23-9] Do it! 클론코딩 영화 평점 웹서비스
-
[서평/23-8] 운영체제 : 그림으로 배우는 구조와 원리
-
[서평/23-7] 함께 자라기 - 애자일로 가는 길
-
[서평/23-6] Do it! HTML + CSS +자바스크립트 웹 표준의 정석
-
[서평/23-5] 멋진 신세계
-
[서평/23-4] 언어의 온도
-
[서평/23-3] 인스타 브레인 : 몰입을 빼앗긴 시대, 똑똑한 뇌 사용법
-
[서평/23-2] 유튜브는 책을 집어삼킬 것인가 : 삶을 위한 말귀, 문해력, 리터러시
-
[서평/23-1] 도메인 주도 설계로 시작하는 마이크로서비스 개발 : 핵심 개념과 패턴, 설계, 구현으로 배우는 DDD와 MSA
-
혼자 공부하는 컴퓨터 구조 + 운영체제 - 운영체제 편
-
아몬드
-
혼자 공부하는 컴퓨터구조 + 운영체제 - 컴퓨터구조 편
-
후니의 쉽게 쓴 CISCO 네트워킹 vol.2
-
파우스트
-
악의 마음을 읽는 자들
-
존리의 금융문맹 탈출
-
4차 산업혁명시대 핀테크 개인정보보호
-
내가 살인자의 마음을 읽는 이유
-
알고리즘 트레이닝 : 프로그래밍 대회 입문 가이드
-
오브젝트 디자인 스타일 가이드 (중도하차)
-
그림으로 배우는 HTTP & Network Basic
-
파피용
-
이것이 취업을 위한 코딩 테스트다 with Python
-
살인자의 기억법
-
나는 나를 파괴할 권리가 있다
-
코딩테스트를 위한 자료구조와 알고리즘 with c++
-
후니의 쉽게 쓴 CISCO 네트워킹 vol.1
-
모던 자바 인 액션
-
오늘도 약을 먹었습니다
-
작별인사
-
우리가 빛의 속도로 갈 수 없다면
-
돈의 미래
-
불편한 편의점
-
이펙티브 자바
-
컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커
-
여덟단어
-
내가 만난 소년에 대하여
-
달러구트 꿈 백화점
인기글
-
[Git] 브랜치 만들기와 전환하기 (branch, checkout)
브랜치란? 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다. 또한 이렇게 만들어진 브랜치는 다른 브랜치와 Merge/Rebase를 통해 새로운 하나의 브랜치로 모을 수 있다. 현재 선택된 브랜치가 아닌 다른 브랜치에서 작업하고 싶을 때는 'checkout' 명령어를 실행하여 다른 브랜치로 전활할 수 있다. 'HEAD'라는 키워드를 사용해 현재 사용 중인 브랜치의 선두 부분을 나타낸다. 커밋하지 않은 변경 내용이 인덱스와 작업 트리에 남아 있는 채로 다른 브랜치로 전환하면, 그 변경 내용은 기존 브랜치가 아니 전환된 브랜치에서 커밋할 수 있다. 단 전환된 브랜치에서도 한 차례 변경 ..
2023.02.09
-
[Flutter / Dart] Flutter로 REST API 호출하기
먼저 플러터에서 HTTP API를 호출하기 위해 패키지를 설치해야 한다. flutter pub add http flutter pub add test 나는 테스트 코드에서 실행시킬 거라 test 패키지도 설치했다. 정확히는 Dart 언어로 Api 호출하는 방법이다. 참고로 아래의 웹 사이트를 이용해 JSON 호출을 할 거다! https://jsonplaceholder.typicode.com/ JSONPlaceholder - Free Fake REST API {JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. Serving ~2 billion requests ea..
2023.03.26
-
[알고리즘] SAT(Satisfiability Problem)
N개의 불리언 값 변수로 구성된 논리식을 참으로 만드는 변수 값들의 조합을 찾는 문제이다. 들어가기 앞서 P문제 : 문제의 해답을 다항 시간 내에 도출할 수 있는 문제의 집합 NP문제 : 답이 주어졌을 때 이것이 정답인지를 다항 시간 내에 확인할 수 있는 문제의 집합 NP-hard : 다항 시간내에 해답을 구할 수 없는 문제 (대표적으로 P=NP 문제) NP-complete : NP-hard 이면서 NP인 문제 SAT-2 두 논리변수의 논리곱 및 논리합 연산식을 주어질 때, 식을 참으로 만드는 조합을 찾거나, 그런 조합이 없음을 찾는 것이 목표이다. SAT-2 문제에서 제시되는 식을 함의 그래프(implication graph)로 나타낼 수 있다. 각 논리변수(a, ~b, ~a 등등)는 그래프의 노드에 ..
2023.06.06
-
[Flutter] Docker로 Flutter 컨테이닝 하기
https://github.com/edwardinubuntu/flutter-web-dockerfile GitHub - edwardinubuntu/flutter-web-dockerfile: A demo how to setup flutter web in docker container A demo how to setup flutter web in docker container - GitHub - edwardinubuntu/flutter-web-dockerfile: A demo how to setup flutter web in docker container github.com 위의 Dockerfile 코드를 사용했습니다! 아래 코드를 Flutter 프로젝트 하위에 이름이 'Dockerfile'인 파일을 생성한다..
2023.03.18
-
[Java] String to Json 파싱하기 | Jackson ObjectMapper
온갖 JSON 파싱 방법 찾아서 적용하니까 코드가 더럽거나 실패했다. 그나마 가장 깔끔한 방법을 찾아서 공유한다!!!! 파싱 유목민 여기서 정착하다... 공식 문서 : https://www.baeldung.com/jackson-deserialize-json-unknown-properties import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; //..
2023.04.02
-
[후기] 로지텍 MX 버티컬 마우스 수리받기
납작 마우스 사용하다가 버티컬 마우스 사용하니 손목에 무리가 없어 정말정말 편하게 사용했다. 그런데 아마 사용한 지 1년 정도 됐나... 드래그가 끊기는 현상이 발생했다. 도저히 못쓰겠다 싶었던 때 찍은 동영상... 좌상-우하 왔다갔다 계속 드래그 중이다.... 초반엔 조금 끊기네 약간의 불편함을 감내하고 살았는데, 몇 개월 지난 지금 짜증날 정도로 끊겨서 수리를 받기로 결정했다. 찾아보니 로지텍 버티컬 마우스의 고질적인 문제라고 한다; 나만 그런 게 아니었다. 클릭 부품이 아주 싼 1000만 회 짜리 부품을 사용해서 (+수직 클릭) 고장이 잦다고 한다. N년 전 노트북 사은품으로 받은 아이리버 마우스는 멀쩡하게 작동되는데;; 로지텍 본인들도 이 부품이 약한 걸 아니 *버티컬 마우스만* AS 기간이 1년..
2023.06.10
-
[기하] 벡터와 외적의 활용
외적 기하문제에서 요긴하게 사용되는 외적을 이용해 알고리즘을 공부하자. 외적 배운 지 까마득 하지만.....🤣 우선 두 벡터의 외적 값 자체의 해석을 알아보자. 1. a x b > 0 : b는 왼쪽으로 회전한다. 2. a x b = 0 : b는 회전하지 않는다 또는 180도 회전한다 (a와 b가 평행하다.) 3. a x b < 0 : b는 오른쪽으로 회전한다. 점의 위치 판별하기 외적을 이용하면 어떤 점이 직선의 왼쪽 혹은 오른쪽 중 어느 곳에 있는지를 판별할 수 있다. 직선이 두 점 a, b를 지난다고 가정하자. 이때 방향이 a, b를 향하고 있고, 주어진 점은 p라고 하자. (p - a) X (p - b)를 구하면 p의 위치를 알 수 있다. 외적이 양수라면 p가 선분 왼쪽에 있는 것이고, 외적이 음수..
2023.05.31
-
Docker로 React, Nginx, Spring Boot 컨테이너 배포하기
이전까진 도커 캐싱이 뭔지 모르고 어영부영 Dockerfile 작성하면서 살았다. 예에에에에에에전에 도커를 처음 사용해 프로젝트 진행했을 때 컴퓨터 수명 다 깎아 먹었었다. 코드 수정이 있을 때마다 이미지 재생성을 위한 빌드를 계속했기 때문에 (한 번 빌드 시 20분 씩 걸렸던 기억이다....) 프로젝트 구조는 대충 이렇게 생겼다. ├─docker-compose.yml ├─backend │ ├─Dockerfile │ ├─build │ └─src └─frontend ├─Dockerfile ├─nginx.conf ├─build └─src Spring Boot Dockerfile 그레이들 코틀린 버전이라 kts 확장자로 작성했는데 순수 그레이들이면 .kts를 삭제하면 된다. FROM openjdk:11 AS ..
2023.06.09
최근글
-
전공자 SQLD SQL 개발자 2일전사 후기
컴공, 2년전 정보처리기사 취득, 최근 필기 준비한다고 CS이론 훑었음, 프로그래머스 기준 SQL 4레벨 풀 수 있음 도움이 될진?? 모르겠????음???????? 자격증 신청 데이터자격시험SQL 전문가(SQLP*, SQL Professional)란 데이터베이스와 데이터모델링에 대한 지식을 바탕으로 데이터를 조작하고 추출하는데 있어서 정확하고 최적의 성능을 발휘하는 SQL을 작성할 수 있고, 이를 토대www.dataq.or.kr 발등에 불이 떨어져 일단 53회 접수부터 했다. SQLD는 연 4회 정기시험을 치른다. 4/22월 ~ 4/26금 5일간 접수를 받는다. 수도권에 살아서 수험장은 정처기와 얼핏 비슷했던 것 같다. 게다가 정처기와 다르게 인기가 없어(!) 늦게 접수했음에도 불구하고 집근처 수..
2024.06.25
-
개략적인 영상 스트리밍 시스템 설계에 관한 이야기
가상 면접 사례로 배우는 대규모 시스템 설계 14장을 참고한 글입니다.매일 사용하지만 설계해 본 적 없는 기능에 대히여 1) 설계 범위 정하기어떤 기능? 비디오를 올리고 시청하는 기능클라이언트는? 모바일, 웹, 스마트TVDAU는?사용자가 소비하는 시간은?클라우드 인프라 활용 가능한지?빠른 업로드, 원활한 재생, 재생 품질 선택, 낮은 인프라 비용, 가용성, 확장성, 안정성에 초점을 둔다. 2) 설계안비디오 업로드 절차 생소한 컴포넌트만 살펴보면메타데이터 데이터베이스/캐시 : 비디오의 메타데이터를 보관한다. 샤딩과 다중화를 적용하여 성능 및 가용성 요구사항을 충족한다.트랜스 코딩 서버 : 비디오 트랜스코딩은 비디오 인코딩이라 부르기도 하는 절차로, 비디오의 포맷(MPEG, HLS 등)을 변환하는 절차다..
2024.04.27
-
개략적인 검색어 자동완성 시스템에 대한 이야기
가상 면접 사례로 배우는 대규모 시스템 설계 13장을 참고한 글입니다.매일 사용하지만 설계해 본 적 없는 기능에 대히여 1) 범위 설정하기검색 자동완성의 기준은 무엇인가? (가장 많이 이용된? 가장 최근에 검색된?)몇 개의 자동완성 단어가 표시되어야 하는지?다국어 지원이 가능한가?DAU는?규모에 따른 QPS 계산하기(일간이용자*요청수*최대글자/일/24시간/3600초) 2) 설계안데이터 수집 서비스사용자가 입력한 질의를 실시간으로 수집하는 시스템이다. 데이터가 많은 애플리케이션에 실시간 시스템은 바람직하지 않지만 설계안을 만드는 출발점으론 괜찮다. 질의문과 사용빈도를 저장하는 빈도 테이블이 있다고 가정한다. 처음엔 테이블이 비어있지만 사용자가 검색하면 상태가 바뀌어 나간다. 질의 서비스빈도테이블에서 빈..
2024.04.26
-
개략적인 채팅 시스템에 관한 이야기
가상 면접 사례로 배우는 대규모 시스템 설계 12장을 참고한 글입니다. 1) 설계 범위 확정1:1 채팅앱인지? 그룹앱인지?플랫폼은?DAU는?특정 기능이 있는지? (현재 활동중, 첨부파일 지원 등)메시지 길이 제한이 있는지?채팅 이력 보관 기간은? 2) 설계에 들어가기 앞서 필요한 지식어떤 네트워크 통신 프로토콜을 사용할 것인지? HTTP를 사용할까?→ 오랜 세월 검증된 HTTP 또한 좋은 방법일 수 있다. keep-alive 속성으로 TCP 핸드셰이크 횟수를 줄일 수 있다.하지만 HTTP를 사용한다면 수신 시나리오는 복잡해진다. 클라이언트가 연결을 만드는 프로토콜이기에 서버가 임의 시점에 메시지를 보내는 데 쉽게 쓰일 수 없다. 이 문제를 해결하기 위해 서버가 연결을 만드는 것처럼 동작하는 기법이 개..
2024.04.25
-
개략적인 뉴스 피드 시스템 설계에 관한 이야기
가상 면접 사례로 배우는 대규모 시스템 설계 11장을 참고한 글입니다. 1) 문제 범위 설정 - 지원 기기는 어디까지 인가?- 중요한 기능이 무엇인가? (새 글을 작성할 수 있어야 한다, 친구의 글을 볼 수 있어야 한다)- 뉴스 피드는 어떤 기준으로 표시되는가?- DAU는 몇인가?- 글에 이미지와 비디오를 올릴 수 있는가? (저장을 위한 저장소 요구량) 2) 설계안뉴스피드 발행포스팅 전송(fanout) 서비스사용자와 친구관계에 있는 모든 사용자에게 새 포스팅을 전달하는 과정, 쓰기 시점(push)과 읽기 시점(pull)이 있음 쓰기 시점에 팬아웃하는 모델새로운 포스팅을 기록하는 시점에 뉴스 피드를 갱신하게 된다. 피드가 실시간으로 갱신되며 친구 목록 사용자에게 즉서..
2024.04.24
-
티스토리 2년차 평균 방문자 200명대 수익 얼마일까? 애드핏 수익 공개
안녕하세요? 벌써 개발 블로그를 시작한 지 1년 6개월을 넘어가네요. 지금 방치된 지... 마지막글 기준으로 5개월이 되어갑니다... 기록용으로 시작한 블로그인데 방문자수가 꾸준해서 기분이 좋습니다ㅎㅎ 별 거 아니지만 도움이 되는 즐거움이 있습니다. 이게 은근 욕심이 나더라고요? 디지털 노마드의 삶을 꿈꾸며 월 10만 원의 부수입이라도 바라는 마음이 생깁니다. 넵 맞아요. 공부하기 싫어서 쓰는 거 맞습니다. 1. 수익 신청 티스토리 개설 한 달만에 애드핏 허가가 났습니다! 애드핏 심사 조건은 매우 간단합니다. 아마 20개 포스팅, 개설 30일 이후 조건만 맞추면 대부분 승인이 나는 것 같습니다. 글 쓸 거리가 많았던 개설 초반에 바로 조건을 만족해 광고를 바로 붙였죠. 근데 승인이 쉬운만큼 수익이 그리 ..
2024.04.08
-
ARIMA 모델을 사용한 시계열분석
⚠️ 통계 하나도 모르는 주인장입니다. ARIMA Model ARMA 모델은 정상성이 있다는 것을 가정한 상황에서 사용하는 반면, ARIMA 모델은 차분이라는 개념을 통해 non-stationary한 상황에서 좀 더 나은 예측을 하는 것이 목표 따라서 ARMA모델에 차분이라는 차수 d가 포함되어 ARIMA(p,d,q)로 표현 차분 차수 d : 시계열 plot을 보고 정상성 여부를 확인하고, 차분을 진행하고, 차분 후의 plot을 보고 여부를 확인하는 프로세스로 진행한다. p, q : p, q의 경우 보통 ACF(Autocorrelation function)와, PACF(Partial Autocorrelation function)를 보고 결정한다. ACF는 k lag 단위로 구분된 시계열 관측치 X_t와 ..
2023.11.15
-
[독후감 23년-28] 1타 7피 주식 초보 최고 계략
독서기간_2023년 10월 저자_박성현 출간일_2020년 10월 25일 더이상 미루지 않고 시작한다. 7살때부터 주식을 시작한 워렌 버핏도 더 빨리 시작할 걸 후회한다. 이정도는 해석할 수 있어야 투자할 수 있다고 책에서 그랬다. 사람들이 부동산과 주식을 다르게 받아들인다고. 부동산을 매매할 때는 남향인지 동향인지, 면적, 건축시기, 주차시설, 가격, 상권, 교통, 근린시설, 배관시설 등등... 모든 걸 따지면서, 주식은 그렇지 않다고. 공부하지 않고 주식 투자를 하는 사람이 많다고 아직도 PER, PBR, ROA... 너무 헷갈리지만 언젠가 익숙해지겠지...? 아니 18년도에 원화 가치가 이렇게 높았다니.... 작가양반 수익 짭짤했겠네
2023.11.14
-
[독후감 23년-27] 페인트
독서기간_2023년 9월 21일 2시간 컷 저자_이희영 출간일_2019년 11월 29일 최종면접 후 계속 퍼져만 있어서 책을 읽었다. 왜 청소년 권장 도서냐 묻는다면... 소프티어 부트캠프 이후 책 읽는 습관이 무너졌기 때문이다. 그리고 도서관 추천도서여서 홀린 듯 빌렸다. 굉장히 오랜만에 책을 완권했다. 8월에 김초엽 작가의 지구끝의 온실(이것도 포스팅 아직 안 올림..)을 마지막으로 몇 권의 책을 초반 조금 읽다가 포기했었다. 하지만 쉬운 길부터 차차 올라가면 된다. 책을 읽는 2시간 동안 정말 고요했다. TV소리도 유튜브 소리도 없고, 날씨도 쌀쌀해져 창문에서 들리는 풀벌레 소리도 없었다. 책도 술술 읽히고 그 시간이 재밌었다. 다시...! 정신 차리자...! 처음에 페인트가 무슨 의미인가 궁금했다..
2023.10.12
-
Adapter Pattern은 무엇인가
현실 세계의 어댑터를 생각하면 Adapter Pattern을 이해하기 쉽다. USB-A와 USB-C를 연결해야 한다면 불가능하지만 어댑터를 사용하면 가능한 것처럼! 불완전한 서로를 어댑터로 전환시켜 주는 것이다. 이 디자인 패턴에선 어떤 타입을 기대하는 Class(Client)를 가지고 있고, 같은 기능이지만 다른 인터페이스로 노출되어 있 는 객체(Adaptee)를 가지고 있을 때 사용된다. 그니까! 정리하면 어댑터 패턴은 클래스의 인터페이스를 서버가 기대하는 다른 인터페이스로 변환시켜주는 디자인 패턴이다. Target 인터페이스(어댑터 아님)를 상속하는 어댑터가 구현되어 있다. 어댑터는 모든 요청을 Adaptee에게 위임한다. // Java implementation of Adapter pattern ..
2023.09.13
-
Nginx 넌 도대체 뭐니
https://www.youtube.com/watch?v=6FAwAXXj5N0&ab_channel=우아한테크 해당 영상을 보고 정리한 내용입니다. 정말 설명을 잘하시니 한번씩 보시는 거 추천!! Nginx?백엔드 개발을 하다보면 들어봤을 법 한 단어이다. 왜 쓰이는지 어떻게 쓰는지 모르면서 사용하다가 이번에 확실하게 정리해본다. 웹서버이자 로드밸런서이자 *SSL 터미네이션이자 캐시이자 HSTS, CORS 처리, TCP/UDP 커넥션 분산 등등등… 만능열쇠🔑 더보기SSL 터미네이션 웹서버-클라이언트는 https, 웹서버-서버는 http 통신하드웨어 가속기라고도 한다. 년도에 따라서 웹서버가 발전한 내용을 알아보자.1995년이전까지는 NCSA HTTPd(유닉스 기반 최초의 웹서버)라는 웹서버 사용 → 버그가..
2023.09.12
-
[네트워크] 프록시와 로드밸런싱
Proxy Proxy의 사전적인 의미는 위임장, 대리인 클라이언트와 서버 사이에 중계를 하는 역할 패킷 필터링, 캐싱, 보안, 우회 등의 이유로 사용된다. 프록시 서버는 거쳐가는 요청과 응답을 확인할 수 있다 Forward Proxy 클라이언트와 가까운 프록시 클라이언트가 요청을 보내면 직접 요청하는 것이 아니라 프록시 서버를 거쳐 요청을 보내게 됨 대부분 캐싱 기능이 있음 얻다 쓰나요? 정부, 학교 등 접속을 제한해야 하는 곳 (음란물, 도박 사이트 등등) 클라이언트의 정보를 숨겨야 할 때 ip를 우회할 수 있음(클라이언트 익명성) 클라이언트 단의 캐싱 Reverse Proxy 서버와 가까운 프록시 반대로 서버에서 직접 반환하는 게 아닌 프록시를 거쳐 응답을 보냄 cloudfare, akamai, CD..
2023.09.11
-
[Java] Thread 클래스와 ThreadPoolExecutor 클래스
단순 Thread 클래스를 사용하게 되면? 자바8 기준 사용자 레벨 스레드를 사용하지 않음 JVM을 통해 OS의 시스템콜을 호출하여 커널 스레드를 1:1로 할당 받음 ⇒ 스레드 생성 비용이 너무 크다!!!!!!!!!!!!!!!!!!!!! (스레드 맵핑과 관련한 글은 아래 글에서 확인하실 수 있습니다.) 2023.09.10 - [컴퓨터공학/운영체제] - [운영체제?] 스레드의 종류(하드웨어스레드, 커널레벨스레드, 유저레벨스레드) 헉! 그럼 자바에서 스레드를 사용하면 비효율적이네요! 하지만 당근빠따루 스레드풀을 사용할 수 있음 concurrent 패키지의 ThreadPoolExecutor 클래스로 사용 ⚠️ Executors.newFixedThreadPool(100)로 생성 시 작업 큐 사이즈가 Intege..
2023.09.10
-
[운영체제?] 스레드의 종류(하드웨어스레드, 커널레벨스레드, 유저레벨스레드)
하드웨어 스레드 일단은 우리가 알고 있는 스레드 개념은 잊자 코어의 고민 : 메모리에서 데이터를 기다리는 시간이 오래 걸려… 메모리를 기다리는 동안 다른 스레드를 실행하는 건 어떨까? 메모리에 접근하는 과정 중간중간 다른 연산을 처리하자 (코어 사용률 극대화) 인텔의 hyper-threading : 물리적인 코어마다 하드웨어 스레드가 두 개 OS 관점에서 가상의 코어 ex) 싱글 코어 CPU에 하드웨어 스레드가 두 개 라면 OS는 CPU를 듀얼 코어로 인식 소프트웨어 스레드 커널 레벨 스레드 CPU에서 실제로 실행되는 단위, CPU 스케쥴링의 단위 OS 쓰레드의 컨텍스트 스위칭은 커널이 개입하기 때문에 비용이 발생 또는 OS 커널의 역할을 수행하는, 커널 코드를 실제 실행하는 쓰레드 유저 레벨 스레드 쓰..
2023.09.10
-
[운영체제] 커널 영역
커널 OS엔 유저모드와 커널모드가 존재!!!! 프로그램 실행 중 인터럽트가 발생하거나 시스템콜을 호출하게 되면 커널 모드로 전환된다. 헉 커널이 핵심이란 뜻이다. 처음 알았다. 그만큼 운영체제에서 커널이 중요하다는 뜻이다!!!!!! 시스템 전반을 관리/감독하는 역할 하드웨어와 관련된 작업을 직접 수행 커널 모드 프로그램의 현재 cpu 상태를 저장함 커널이 인터럽트, 시스템콜 직접 처리 → 처리 완료되면 중단됐던 프로그램의 cpu 상태를 복원 왜 필요하죠? 시스템 보호하기 위해 OS event OS 이벤트엔 세 종류가 있다. (사실 더 크게 보면 두 종류이다) 인터럽트 보통 하드웨어에 의해 발생, 소프트웨어도 발생 가능 (원문 : Trigger the processor to execute the corre..
2023.09.09
-
[MySQL] Query 성능 높이는 팁
Query 튜닝 Index 전략을 사용하기 인덱스는 데이터베이스 성능 최적화에 필수적인 요소다. PK나 JOIN, WHERE 자주 사용되는 컬럼 같은 컬럼에 반드시 인덱스를 생성하자. 하지만 과도한 인덱스는 부정적인 영향(쓰기 성능 느려짐, 메모리 낭비)을 주기 때문에 전략적으로 필수적인 인덱스를 만들어 사용해 관리하자. Predicate 절에서 함수 사용을 피하라 SELECT * FROM TABLE1 WHERE UPPER(COL1)='ABC' UPPER() 같은 함수를 사용하게 되면 데이터베이스는 인덱스를 사용하지 못하게 된다. 함수 기반 인덱스를 생성하거나, 컬럼 커스텀을 이용해야 한다. Predicate 절에서 와일드카드(%)로 시작하는 조건을 피하라 SELECT * FROM TABLE1 WHERE..
2023.09.08
-
[운영체제] 파일 시스템은 어떻게 구현되어 있는가?
File System Implementation 실제 사용 중인 운영체제에선 파일 시스템이 어떻게 구현되어 있을까? 살펴 보도록 하자. Continuous allocation 한 파일을 디스크의 연속된 block에 저장 👍🏻 효율적인 파일 접근 👎🏻 새로운 파일을 위한 공간 확보가 어려움, 외부 단편화 문제, 파일 공간 크기 결정이 어려움(파일이 커져야 할 경우는?) Dis-continuous allocation Linked allocation 파일이 저장된 블록들을 링크드 리스트로 연결 디렉토리는 각 파일에 대한 첫 번째 블록을 가리키는 포인터를 가짐 👍🏻 단순, 외부 단편화 없음 👎🏻 직접 접근에 비효율적, 포인터 공간 필요, 신뢰성(사용자가 포인터를 건들면?) 구현체 ⇒ FAT(File Alloca..
2023.09.08
-
[Java] Lambda, Functional Interface 그리고 Stream API
이브, 프시케 그리고 푸른 수염 어쩌고 따라하고 싶었어요ㅎㅎ.. Lambda 익명 함수로써 이름 없이 정의되며, 코드 블록을 1급 시민으로 다룰 수 있는 프로그래밍 언어의 기능 🧐 1급 시민 First-Class Citizen | 1급 객체 변수에 할당할 수 있어야 한다. 함수의 매개변수로 전달할 수 있어야 한다. 함수의 리턴값으로 사용할 수 있어야 한다. 함수나 메소드가 1급 시민으로 간주되기 위한 조건 함수형 프로그래밍 스타일을 지원 코드를 간결하게 관리 주로 컬렉션 처리, 스트림 연산, 콜백 함수 등에 사용 → 자바에선 함수를 일급시민으로 쓸 수 없었음, 람다 개념 등장 → 일급시민으로 사용할 수 있게됨 람다 표현식 작성방법 어떤 언어에서든 익명함수를 다 써보셨을 거라고 예상됩니다. 자바에서도 마찬..
2023.09.08
-
[운영체제] 파일 시스템 보호
File Protection 파일에 대한 부적절한 접근 방지 → 다중 사용자 시스템에서 더욱 필요 접근 제어가 필요한 연산들 : Read, Write, Execute, Append 파일 보호 기법으론 password 기법과 access matrix 기법이 있는데 두 번째 방법에 집중할 것이다. Password 기법 각 파일에 PW 부여 비현실적 : 접근 권한 별 서로 다른 PW 부여해야 함 Access Matrix 기법 범위(domain)와 개체(object) 사이의 접근 권한을 명시 *object : 접근 대상(file, device등) *domain : 접근 권한의 집합, 같은 권한을 가지는 그룹(사용자, 프로세스) Global Table 시스템 전체 file에 대한 권한을 가지는 table ⚠️ 테..
2023.09.07
-
[운영체제] 파일 시스템과 디렉토리 구조
File 보조 기억 장치에 연관된 정보들의 집합 보조 기억 장치 할당의 최소 단위 sequence of bytes 프로그램 파일, 데이터 파일 text 파일, binary 파일 파일 속성 : name, identifier, type, location, size, protection, user identification, time 등등 파일 연산 : create, write, reposition, read, delete 등등 수행 ⇒ OS는 파일 연산들에 대한 system call을 제공해야 함 파일 접근 방법 Sequential access : file을 record 단위로 순서대로 접근 (fgetc()) Directed access : 원하는 block을 직접 접근 (lseek(), seek()) In..
2023.09.07
-
Spring Triangle - POJO, IoC, AOP, PSA
POJO Plain Old Java Object 오래된 방식의 자바 오브젝트 클래스나 인터페이스를 상속 받지 않고, 메소드가 추가된 클래스가 아닌 getter, setter 같은 기본적인 기능만 가진 자바 객체를 말한다. 우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데, 간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고 결론지었다. 그래서 적당한 이름을 하나 만들어 붙였더니, 아글쎄, 다들 좋아하더라고. - 마틴 파울러 그렇다고 합니다... POJO는 엄청난 개념이 아니라 적당한 명칭 정도로만 이해하면 됩니다. IoC 제어의 역전 Inversion of Control 제어의 역전이 뭐임! 사실 제어의 역전은 스프링만의 특징이 아니다. 프레임워크의 흔..
2023.09.06
-
[독후감 23년-26] 중력에 대한 거의 모든 것 : 가장 유명하지만 누구도 이해하지 못하는 힘
독서기간_2023년 5월 18일 ~ 2023년 5월 말 저자_마커스 초운 출간일_2022년 6월 28일 굉장히 재밌게 읽었는데 기억이 나지 않아요... 5월... 까마득 하군요...... 앞으로는 책 읽고 꼬박꼬박 쓰겠습니다... 리처드 파인만의 직속 석사생이라는 것만 듣고 빌려서 읽었다. '영국에서 물리학과 천문학에 대해 가장 글 잘 쓰는 작가'라고 한다. 그래서 책이 지루할 것 같지만 그렇지 않다. 뉴턴부터 아인슈타인까지 물리의 대가들의 이야기를 따라서 중력을 다룬다. 정말 딱 ""교양"" 수준의 도서이기 때문이다. 대학교 1학년 이후 물리를 등져버린 자인데도 잘 읽었으니! 중학생도 이해할 수 있을 것이다. 아마도?
2023.09.06
-
[데이터베이스] DBMS와 옵티마이저
MySQL 기준 사용할 땐 하더라도 내부 엔진을 알고 사용하자클라이언트-서버 아키텍처 클라이언트 층 서버에 명령, GUI Connection Handling : 클라이언트가 서버에 접속하면 연결을 클라이언트는 위한 스레드를 얻음 Authentication : Mysql에 연결할 때 서버쪽에서 수행, username과 password로 인증 Security : 서버와 연결된 후 특정 사용자에게 쿼리 권한이 있는지 확인 서버 층 (a.k.a “Brain of MySQL Architecture”) RDB의 논리적인 기능을 책임짐 Thread Handling : 연결된 클라이언트가 스레드를 할당받을 때 그 스레드를 제공, 스레드로 실행되는 클라이언트 쿼리들을 핸들링 Parser : SQL을 분석해 문법 검사, ..
2023.08.20
-
[데이터베이스] 트랜잭션과 ACID 성질
데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위, 하나의 트랜잭션은 Commit 또는 Rollback 된다. ACID 데이터의 무결성과 안정성을 보장하기 위해 트랜잭션이 지녀야 하는 성질! Atomicity 원자성 : All or Nothing 트랜잭션 결과가 데이터베이스에 모두 반영되거나 반영되지 않아야 하는 성질 Consistency 일관성 : 트랜잭션 수행 전후 데이터베이스는 일관된 상태를 가져야 하는 성질 Isolation 독립성 : 모든 트랜잭션은 다른 트랜잭션부터 독립되야 하는 성질 Durability 영속성 : 트랜잭션이 성공적으로 수행되었다면 그 결과는 영구적으로 기록되는 성질 永續性 영속성 : 영원히 지속되는 성질이나 능력 無缺性 무결성 : 데이터의 정보가 변경되거나 오염되지 ..
2023.08.19
-
밀리의 서재 재구독
독서왕이 되자 (๑•᎑
2023.07.21
-
Java JVM 아키텍쳐 (1)
먼저 Virtual Machine 이란? 수업을 듣다보면 가상 머신을 다뤄 본 적이 있을 것이다. 자신의 하드웨어 위에 또 다른 OS(Guest OS)를 실행하게 해주는 것이 VM의 역할이다. 그런 VM이 자바에도 있다! 연관해서 생각해 본 적이 없었는데, 생각해보니 JVM의 VM이 virtual machine 이다. JVM은 무엇인가? JVM은 추상 머신이다. 자바 바이트 코드를 런타임 환경에서 실행할 수 있게 해준다. JVM은 많은 하드웨어나 소프트웨어에서 사용 가능하다. Implementation(JRE, Java Runtime Environment)에 따라서 JVM 동작 알고리즘을 선택할 수 있다. 무슨일을 하는가? VM인만큼 스스로 메모리 관리를 한다. Loads code Verifies cod..
2023.07.16
-
[Git] 원격 저장소 브랜치 삭제하기
로컬 저장소 브랜치 삭제하기 git branch -d [브랜치 이름] -D를 사용하면 강제 삭제 원격 저장소 브랜치 삭제하기 git push [원격 저장소 이름] --delete [브랜치 이름] push로 연결되어 있는 모든 저장소에 적용된다.
2023.07.03
-
[React] useEffect로 api 받아와서 렌더링하기
useEffect를 사용하면 입맛에 맞게 렌더링을 할 수 있다고 해서 사용했다. 그런데 api 비동기 요청 후 state 변경하는 과정에서 오류가 난다😥 대충 이런 식으로 코드를 작성했다. App = () => { var [data, setData] = useState({}); async function fetch1() { data["1"] = await fetchApi1(); } async function fetch2() { // fetch1 과 동일 } async function fetch3() { // fetch1 과 동일 } function getData() { fetch1(); fetch2(); fetch3(); } useEffect( ()=> { getData(); },[]); return (..
2023.07.02
-
[React] destroy is not a function 에러
destroy is not a function useEffect가 함수가 아닌 값을 반환하거나 비동기 함수를 콜백하는 경우 발생한다.
2023.07.01
-
[React] 라이브러리 오픈소스가 많다
컴포넌트 하나하나 언제 구현하나 머리 빠개고 있는데 찾아보니 라이브러리가 엄청 많네? 부트스트랩 정도랑 통계, 그래프류는 있을 거라고 예상했는데 귀엽고 깔끔한 디자인된 컴포넌트까지...!! 갑자기 프론트 개발이 재밌어진다🤭 리액트만 알다가 플러터를 알았을 때의 새로움*1000 정도의 느낌을 받았다!!!!!!! 디자인, CSS로 고통받는 거 때문에 프론트 재미 없던 건데 미쵸따 귀여운 거 좋아 TOAST UI :: Make Your Web Delicious! TOAST UI is an open-source JavaScript UI library maintained by NHN Cloud. ui.toast.com MUI: The React component library you always wanted MU..
2023.06.24
-
React Hook
Mount : 화면에 첫 렌더링 Update : 다시 렌더링 Unmount : 화면에서 사라짐 useEffect(콜백함수) : 첫 렌더링과 렌더링 될 때마다 실행 useEffect(콜백함수, 배열) : 첫 렌더링과, 배열에 인자들이 업데이트 될 때마다 실행 reducer (state를 업데이트 하는 역할), dispatcher (state 업데이트를 위한 요구), action (요구의 내용) useReducer(reducer, 초깃값) const reducer = (state, action) => { // switch나 if문을 사용해 action을 분리함. return state + action.props; }; function App() { const [money, dispatch] = useRedu..
2023.06.22
-
3. Re:제로부터 시작하는 프론트엔드 생활
안녕하십니까 드디어 개발이 시작됐습니다. 이런저런 이유로 백이 아닌 프론트를 맡게 됐습니다. 좌충우돌 우당탕탕 리액트 개발기가 될 것 같습니다. 왜냐면 지금 input 박스조차 못 만들고 있기 때문이죠. 후후... JS 문법조차 몰라서 정말 zero부터 시작합니다. 개인 프로젝트야 유야무야 나만 알아볼 수 있게 해도 됐는데 팀플인만큼^^.. 깔끔하게 개발해 보겠습니다.
2023.06.21
-
[독후감 23년-25] 사람, 장소, 환대
독서기간_2023년 5월 26일 ~ 2023년 6월 6일 저자_김현경 출간일_2015년 3월 31일 깊이 있는 독후감을 기대하셨으면 조용히 뒤로가기를.... 뼛속까지 이과생인 어느 한 명의 글입니다😁... 유튜버 겨울서점의 "그냥 한 번 읽어보세요" 추천 도서이다. 사회를 정의하는 사람과 사람을 정의하는 사회, 사람들이 모인 장소가 주는 영향력, 절대적 환대를 해야하는가 등의 물음을 던진다. 철학을 배운 게 중학생 때가 마지막이다보니 (그것 마저도 방과후 논술 수업) 책이 짧은 것에 비해 읽는 시간이 오래 걸렸다. 특히 철학자의 사상을 이해하는 데... 너무 무지하게 산 것 같아서 부끄럽기도 하다. 그 유명한 칸트의 주요 사상조차도 모르다니. 사람이란 무엇일까? 무엇을 위해 살아가는 것일까? 구성원이 장..
2023.06.12
-
[후기] 로지텍 MX 버티컬 마우스 수리받기
납작 마우스 사용하다가 버티컬 마우스 사용하니 손목에 무리가 없어 정말정말 편하게 사용했다. 그런데 아마 사용한 지 1년 정도 됐나... 드래그가 끊기는 현상이 발생했다. 도저히 못쓰겠다 싶었던 때 찍은 동영상... 좌상-우하 왔다갔다 계속 드래그 중이다.... 초반엔 조금 끊기네 약간의 불편함을 감내하고 살았는데, 몇 개월 지난 지금 짜증날 정도로 끊겨서 수리를 받기로 결정했다. 찾아보니 로지텍 버티컬 마우스의 고질적인 문제라고 한다; 나만 그런 게 아니었다. 클릭 부품이 아주 싼 1000만 회 짜리 부품을 사용해서 (+수직 클릭) 고장이 잦다고 한다. N년 전 노트북 사은품으로 받은 아이리버 마우스는 멀쩡하게 작동되는데;; 로지텍 본인들도 이 부품이 약한 걸 아니 *버티컬 마우스만* AS 기간이 1년..
2023.06.10
-
Docker로 React, Nginx, Spring Boot 컨테이너 배포하기
이전까진 도커 캐싱이 뭔지 모르고 어영부영 Dockerfile 작성하면서 살았다. 예에에에에에에전에 도커를 처음 사용해 프로젝트 진행했을 때 컴퓨터 수명 다 깎아 먹었었다. 코드 수정이 있을 때마다 이미지 재생성을 위한 빌드를 계속했기 때문에 (한 번 빌드 시 20분 씩 걸렸던 기억이다....) 프로젝트 구조는 대충 이렇게 생겼다. ├─docker-compose.yml ├─backend │ ├─Dockerfile │ ├─build │ └─src └─frontend ├─Dockerfile ├─nginx.conf ├─build └─src Spring Boot Dockerfile 그레이들 코틀린 버전이라 kts 확장자로 작성했는데 순수 그레이들이면 .kts를 삭제하면 된다. FROM openjdk:11 AS ..
2023.06.09
-
[서평 23년- 24] 알고리즘 트레이닝(초록이) | 두 번째 읽음
독서기간_2023년 5월 26일~6월 2일 저자_안티 라크소넨 출간일_2019년 5월 9일 예전에 읽다가 어려워서 후반부에 포기했었다. 그때보다 실력이 상승해서 다시 읽어보고자 꺼내 들었다. 정확히는 PS에 관심이 생겼다고 해야 하나. 목차를 보니 딱 절반 읽었었다. 작년에 읽을 당시엔 코테용 알고리즘만 공부했어서 고오급 알고리즘이 머선 말이고 했는데 그래도 조금 읽힌다. 몰랐는데 종만북 다음 가는 알고리즘 대회 입문서라고 한다. 일명 ‘초록이’라 불리는 책이다. 실전용 ‘파랑이’도 있다. 다음엔 파랑이를 읽어보겠다. 모듈러 연산부터 기하까지 기본적인 수학 조차 몰랐다는 게 부끄럽기도 하다. 벡터를 코드로 구현하고 외적을 계산한다라 흥미로웠다. 특히 트리를 공부하면 할수록 재미있다. 그래프와는 다른 매력..
2023.06.08
-
[알고리즘] SAT(Satisfiability Problem)
N개의 불리언 값 변수로 구성된 논리식을 참으로 만드는 변수 값들의 조합을 찾는 문제이다. 들어가기 앞서 P문제 : 문제의 해답을 다항 시간 내에 도출할 수 있는 문제의 집합 NP문제 : 답이 주어졌을 때 이것이 정답인지를 다항 시간 내에 확인할 수 있는 문제의 집합 NP-hard : 다항 시간내에 해답을 구할 수 없는 문제 (대표적으로 P=NP 문제) NP-complete : NP-hard 이면서 NP인 문제 SAT-2 두 논리변수의 논리곱 및 논리합 연산식을 주어질 때, 식을 참으로 만드는 조합을 찾거나, 그런 조합이 없음을 찾는 것이 목표이다. SAT-2 문제에서 제시되는 식을 함의 그래프(implication graph)로 나타낼 수 있다. 각 논리변수(a, ~b, ~a 등등)는 그래프의 노드에 ..
2023.06.06
-
[백준] 2261번: 가장 가까운 두 점 | C++
2261번: 가장 가까운 두 점 첫째 줄에 자연수 n(2 ≤ n ≤ 100,000)이 주어진다. 다음 n개의 줄에는 차례로 각 점의 x, y좌표가 주어진다. 각각의 좌표는 절댓값이 10,000을 넘지 않는 정수이다. 여러 점이 같은 좌표를 가질 수도 www.acmicpc.net 브루트포스로 O(N^2) 시간에 해결할 수 있지만, O(NlogN)으로 푸는 방법을 알아보고자 한다. 정답코드 1. x좌표 기준으로 오름차순 정렬한다. 2. 0번째와 1번째 거리를 최소 거리(min_d)라고 가정한다. 3. 현재 살펴보는 좌표가 i번째 (x, y)라고 하면 [x - min_d, x] 범위에 해당하는 좌표를 "더 가까울 수 있는" 좌표 후보에 추가한다. 4. [y - min_d, y + min_d] 에 해당하는 좌표..
2023.06.05
-
[백준] 2150번: Strongly Connected Component (타잔 알고리즘) | C++
2150번: Strongly Connected Component첫째 줄에 두 정수 V(1 ≤ V ≤ 10,000), E(1 ≤ E ≤ 100,000)가 주어진다. 이는 그래프가 V개의 정점과 E개의 간선으로 이루어져 있다는 의미이다. 다음 E개의 줄에는 간선에 대한 정보를 나타내는 두 정www.acmicpc.net 정답코드타잔 알고리즘은 크게 세 가지 경우로 나뉜다. 1. 아직 방문하지 않은 노드 → 방문한다. 2. 방문했지만 SCC가 아직 아닌 노드 → id값이 더 작은 걸 저장한다. 3. 방문했고 SCC가 형성된 노드 → through 한다. 이런 경우를 거치고 현재 노드(id[cur]) id값과 저장된(remember) id 값이 같으면 스택에서 현재 노드를 만날 때까지 pop한다. 2번, 3번 경..
2023.06.04
-
[백준] 2150번: Strongly Connected Component (코사라주 알고리즘) | C++
2150번: Strongly Connected Component첫째 줄에 두 정수 V(1 ≤ V ≤ 10,000), E(1 ≤ E ≤ 100,000)가 주어진다. 이는 그래프가 V개의 정점과 E개의 간선으로 이루어져 있다는 의미이다. 다음 E개의 줄에는 간선에 대한 정보를 나타내는 두 정www.acmicpc.net 정답코드이론 공부한 거로 직접 구현해서 최적화된 코드가 아닐 수도 있습니다. 1. 정방향 그래프와 역방향 그래프 입력 받기 2. 첫 번째 정방향 DFS 수행 3. 노드 리스트 얻음 4. 두 번째 역방향 DFS 수행 5. SCC 출력 #include #include #include #include #include #define MAX 10001 #define fse(A,B,C) for(int i..
2023.06.04
-
[알고리즘] 강한 연결 요소 Strongly Connected Component | 코사라주 알고리즘, 타잔 알고리즘
강한 결합 방향 그래프의 모든 노드에서 다른 모든 노드로 가는 경로가 있는 경우, 이 그래프가 강하게 연결되어 있다고 한다. [1,2,5], [3,4,8], [6,7]이 강하게 결합된 컴포넌트(이하 SCC)이다. 1에서 출발해 2, 5에 도달할 수 있고, 2에서 출발해도 1, 5에 도착할 수 있고, 5에서 출발해도 1, 2에 도달할 수 있다. 하지만 강결합되지 않은 1과 3을 보자. 1에서 출발하면 3에 도달할 수 있다. 하지만 3에서 출발하면 1에 갈 수 없다. SCC를 찾는 알고리즘 SCC를 구하는 알고리즘은 크게 두 가지가 있다. 코사라주 알고리즘 강결합 컴포넌트를 찾는 유용한 방법이다.이 알고리즘에선 두 번의 DFS를 거친다. 첫 번째 탐색에서 그래프에 따라 노드 리스트를 만들고, 두 번째 탐색에..
2023.06.03
-
2. 최근 진행 상황
그동안 글은 안 썼지만 잘 되어가고 있었습니다. 1. 하드웨어 관련 실제 동작하는 데모까진 개발하고 싶어 하드웨어 내가 책임지고 하겠다 주장해서 개발하기로 했다. 하드웨어 부품 신청까지 완료한 상황이다. 라즈베리파이를 사용하려고 했는데 os까지 다룰 필요는 없어보여 아두이노로 진행한다. 하드웨어는 아주 가볍게 개발할 것이다. 2. 알고리즘 설계가 잡혀가고 있다. 프로젝트를 시작하기 전엔 단순하게 사용량이 줄면 위험하다 판단하면 되겠다! 라고 생각했는데, 파고 들수록 제약 조건이 많았다. 전화, 전력, 수도, 가스 데이터를 하루에 몇 번 입력받느냐, 어떤 정보를 입력받느냐, 어떻게 조건을 매치시킬 것이냐, 외출 또는 그냥(?)의 이유로 사용량이 확 줄게 되면 어떻게 처리할 것이냐, 지역마다 사용량 차이는 ..
2023.06.02
-
[기하] 스윕 라인 알고리즘(교차점, 가까운 점, 볼록껍질) | 모르면 절대 못 품
먼저 2차원 거리 측정 함수로 맨해튼거리(택시거리), 유클리드 거리 두 가지가 있다는 것을 알아두자. 교차점의 개수 세기선분이 N개 있을 때, 교차점의 개수를 세는 문제이다. 이때 각각의 선분은 수평 선분이거나 수직 선분이다. O(N^2)으로 쉽게 풀 수 있지만 스윕 라인 알고리즘과 구간 질의 자료 구조를 사용하면 O(NlogN) 시간에 풀 수 있다. 선분이 시작하는 점과 끝나는 점을 가지고 이벤트 처리하는 것이라고 생각하면 된다. 가장 가까운 점 쌍 찾기점 N개가 있을 때 유클리드 거리가 최소인 두 점을 찾는 문제이다. 이 문제도 스윕 라인 알고리즘으로 O(NlogN) 시간에 해결할 수 있다. 점들을 왼쪽에서 오른쪽 순서로 살펴보면서 d라는 값을 관리해 나간다.d는 현재까지 구한 두 점 사이의 최소 거..
2023.06.02
-
[알고리즘] 고오급 알고리즘 키워드
*블로그 주인만 알아볼 수 있음 주의* 삼진탐색으로 최솟값 찾기 함수의 최솟값이 x구간 [a,d] 구간 안에 있다고 하자. 구간을 같은 길이 [a,b], [b,c], [c,d]로 나누고 f(b)>f(c)가 성립함을 보인다. (미분) 합 최소화 abs(a1-x)+abs(a2-x)+ ... +abs(an-x) 의 최솟값으로 만드는 x의 최적해는 중앙값이다. 배열 원소가 짝수개라면 두 중앙값 사이 모든 값이 최적해가 된다. 트리의 지름 임의의 노드 a 선택, a에서 가장 먼 노드 b, b에서 가장 먼 노드 c를 구하면 b-c가 트리의 지름 트리 k번째 조상 찾기 ancestor(n,k) : n번 노드의 k번째 부모 가장 쉬운 방법은 k번 거슬러 올라가는 것인데 비효율적이다. k가 2의 거듭제곱인 모든 경우에 ..
2023.06.01
-
[기하] C++의 복소수 클래스 complex
기하 문제를 풀 때 c++의 복소수 클래스 complex를 사용할 수 있다. 이 클래스를 이용하면 점과 벡터를 복소수 형태로 표현할 수 있고, 클래스의 기능을 이용하여 점과 벡터를 다룰 수도 있다. typedef long long C; // 정수 좌표를 써도 되는 경우 // typedef long double C; // 정수 좌표를 쓸 수 없는 경우 typedef complex P; #define X real() #define Y imag() 정수 계산이 정확하기 때문에 정수좌표를 사용하는 것을 권장한다. 함수 complex 클래스에는 기하 문제를 풀 때 활용할 수 있는 함수를 제공한다. long double 자료형임을 주의하자. abs(v) 벡터 v={x, y}의 길이를 계산하는 함수이다. sqrt(x..
2023.06.01
-
[기하] 벡터와 외적의 활용
외적 기하문제에서 요긴하게 사용되는 외적을 이용해 알고리즘을 공부하자. 외적 배운 지 까마득 하지만.....🤣 우선 두 벡터의 외적 값 자체의 해석을 알아보자. 1. a x b > 0 : b는 왼쪽으로 회전한다. 2. a x b = 0 : b는 회전하지 않는다 또는 180도 회전한다 (a와 b가 평행하다.) 3. a x b < 0 : b는 오른쪽으로 회전한다. 점의 위치 판별하기 외적을 이용하면 어떤 점이 직선의 왼쪽 혹은 오른쪽 중 어느 곳에 있는지를 판별할 수 있다. 직선이 두 점 a, b를 지난다고 가정하자. 이때 방향이 a, b를 향하고 있고, 주어진 점은 p라고 하자. (p - a) X (p - b)를 구하면 p의 위치를 알 수 있다. 외적이 양수라면 p가 선분 왼쪽에 있는 것이고, 외적이 음수..
2023.05.31
-
[알고리즘] 분할정복으로 거듭제곱 최적화하기
프로그래밍에서 거듭제곱을 구하는 방법은 크게 세 가지이다. pow 내장함수 사용하기 double 실수 자료형을 사용해 거듭제곱을 반환하는 방법이다. 하지만 지수가 매우 클 때 정확성의 문제가 발생한다. 그 문제는 아래 글에서 확인 가능하다. C++ 기준 pow에 관한 글이다. 2023.04.30 - [TIL] - [C++] pow함수 double 형의 정확성 문제 [C++] pow함수 double 형의 정확성 문제 https://www.acmicpc.net/problem/1740 1740번: 거듭제곱 3의 제곱수를 생각하자. 3의 0제곱, 3의 1제곱, 3의 2제곱, ... 은 순서대로 1, 3, 9, 27, ... 이 된다. 이를 바탕으로, 한 개 이상의 서로 다른 3의 제곱수의 oozoowos.tis..
2023.05.30
-
[정수론] 모듈러 연산과 증명
주의) 나눗셈 연산에서는 성립하지 않는다.
2023.05.29
-
[기하] 다각형 넓이 구하는 공식
다각형 넓이 구하기: 15 단계 (이미지 포함) - wikiHow 다각형의 넓이를 계산하는 일은 정삼각형 넓이를 구하는 것처럼 간단하기도 하지만 각 변의 길이가 다른 11각형의 넓이를 구하는 것처럼 복잡하기도 합니다. 다양한 다각형의 넓이를 구하는 방 ko.wikihow.com 1. 정다각형 2. 다각형 import sys;input=sys.stdin.readline n=int(input()) pairs=[list(map(int,input().split())) for i in range(n)] pairs.append(pairs[0]) x=y=0 for i in range(1,n+1): x += pairs[i][1] * pairs[i-1][0] y += pairs[i][0] * pairs[i-1][1] p..
2023.05.28
-
[백준] 2957번: 이진 탐색 트리, 1539번: 이진 검색 트리 | C++
2957번: 이진 탐색 트리 이진 탐색 트리는 모든 노드가 많아야 2개의 자식 노드를 가지고 있는 트리이고, 각 노드에는 수가 하나씩 쓰여있다. 만약 어떤 노드에 쓰여 있는 수가 X라면, 그 노드의 왼쪽 서브트리에는 X보다 www.acmicpc.net 1539번: 이진 검색 트리 P는 크기가 N인 배열이다. P에는 0보다 크거나 같고, N-1보다 작거나 같은 정수가 중복 없이 채워져 있다. 이진 검색 트리는 루트가 있는 이진 트리로, 각각의 노드에 정수 값이 저장되어 있는 트 www.acmicpc.net 거의 같은 문제! 틀린 이유 처음에 2957번 문제를 풀 때 그냥 BST를 구현했었다. #include #include #include #define MAX 100000 #define fse(A,B,C)..
2023.05.27
-
[정수론] 페르마의 소정리 (모듈러 연산)
2023.05.26
-
[Spring Boot] 6. Developing with Spring Boot (6.1 부터 ~ 6.3 까지) | 공식 문서 번역
영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is..
2023.05.26
-
[운영체제] 페이징 교체 알고리즘
최적(OPT) 가장 오랫동안 참조되지 않을 페이지 교체 가장 낮은 페이지 폴트를 발생시키지만 미래를 예측할 수 없어 구현 불가능 → 다른 알고리즘을 평가하는 참고용으로만 쓰인다. LRU 가장 오랫동안 참조되지 않은 페이지 교체 최적에 근접한 성능이나 구현이 어렵고 오버헤드가 크다. 페이지 참조시간을 기록하는 공간이 사용된다 구현방법 각 페이지의 최종 참고시간을 기록하는 테이블을 생성한다. 이중연결리스트 스택을 이용한다. FIFO 가장 오래 전에 적재된 페이지 교체한다. 가장 쉽게 구현 가능하지만, 페이지 폴트 가능성이 높다. 교체되는 페이지 메모리 위치에 적재가 된다. FIFO라고 페이지가 큐처럼 움직이는 것이 아니다. LFU 가장 참조횟수가 적은 페이지 교체 교체 대상이 여러 개 이면 가장 오래된 페이..
2023.05.25
-
[서평 23년-23] 면접을 위한 CS 전공지식노트
독서기간_2023년 4월~5월 저자_주홍철 출간일_2022년 4월 28일 그냥 무난하게 CS 압축해서 공부할 수 있는 책이다. 엄청난 전공 지식이 들어있지 않고(책도 얇다), 구어체로 쓰여있어 편하게 읽을 수 있다. 초보자에겐 길잡이가 되고 상급자에겐 지식 검증할 수 있는 책이 된다. 면준하기 위해 내돈내산 했다. 돈 아깝다
2023.05.24
-
0.1 + 1.1 == 1.2 문제 (feat. 부동소수점)
왜 이런 문제가 발생할까? 실수 표현 방법 고정 소수점 방식 (Fixed Point) 실수는 보통 정수부와 소수부로 나누어 표기한다. 따라서 실수를 표현하는 가장 간단한 방식은 소수부의 자릿수를 미리 정하여, 고정된 자릿수의 소수를 표현하는 것이다. 장점 : 단순하다. 단점 : 표현 범위가 적다. 부동 소수점 방식(Floating Point) 하나의 실수를 가수부와 지수부로 나누어 표현하는 방식이다. (不動이 아니라 浮動이다) 지수부 : 크기를 표현함. 가수의 어디쯤에 소수점이 있는지 나타냄 가수부 : 실수의 실제값 표현 지수의 값에 따라 소수점이 움직이는 방식을 활용한 실수 표현 방법이다. 장점 : 범위가 넓다(현재 대부분 시스템에서 사용 중) 단점 : 오차 발생 가능성 부동소수점의 오차 1보다 작은 ..
2023.05.23
-
[백준] 2887번: 행성 터널 | C++
https://www.acmicpc.net/problem/2887 2887번: 행성 터널첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109보다 크거나 같고, 109보다 작거나 같은 정수이다. 한 위치에 행성이 두 개 이www.acmicpc.net 접근방법1. MST문제다. union-find 써야 할 것 2. 모든 행성 간 가중치를 구하려면 N! 인데? 3. 행성 간 가중치는 행성 간 3차원 거리가 아니라 min(|xA-xB|, |yA-yB|, |zA-zB|) 이다. 4. x, y, z 대로 정렬 3번 수행하고 인접한 행성의 거리를 구한다. 5. 힙에 넣어 가중치 최솟값을 구한다면? 라고 생각회로 거쳤다. 정렬..
2023.05.22
-
[자료구조] 세그먼트 트리을 이용해 구간 합 구하기
구간 합 구간 합을 구하기 위해 사용되는 방법은 세 가지이다. 1. for문으로 해결하기 int ans = 0; for (int i=l; i
2023.05.21
-
[C++] 람다식 (feat. 2887 행성 터널)
https://www.acmicpc.net/problem/2887 2887번: 행성 터널 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109보다 크거나 같고, 109보다 작거나 같은 정수이다. 한 위치에 행성이 두 개 이 www.acmicpc.net 해당 문제를 풀면서 정렬을 세 번 수행해야 하는데 C++로 람다식 어떻게 쓰나 찾아보고 쓴다. >>> 행성터널 풀이 2023.05.22 - [Computer Science/Problem Solving] - [백준] 2887번: 행성 터널 | C++ [백준] 2887번: 행성 터널 | C++ https://www.acmicpc.net/problem/2887 2887번..
2023.05.20
-
[독후감 23년-22] 침묵의 봄
독서기간_2023년 4월 말 저자_레이첼 카슨 출간일_1962년 20세기 중반 합성 화학물 살충제가 붐을 일으켰다. 화학물질은 어떤 자연 살충제, 제초제보다도 성능이 좋아 무분별하게 사용됐다. 1950년대 당시 생물학을 중요시 여기지 않았다. 몇 년 후, 동식물들이 이유 없이 단체로 죽어나갔다. 집단을 연구한 결과 동물 시체에서 다량의 DDT(살충제 원료)가 축적된 사실이 밝혀졌다. 이 책은 살충제의 경각심을 알려주는 책이다. 사~실... 딱 절반 읽고 덮어버렸다. 내가 화포자라 흥미를 잃은 건가? 옛날 책이라 덜 와닿는 내용인건가? 화학을 몰라서 책의 내용을 정확히 이해하지 못하는 건가? 아무렴... 화학 물질의 잠재적 위험성을 알리기엔 충분했던 책이었다. 3챕터까지만 읽어도 책이 전하고자 하는 바를 ..
2023.05.19
-
오랜만에 책을 샀다
집에서 넘어지면 코 닿을 거리에 도서관이 있어 도서관을 애용한다. 상호대차 대출하면 어지간한 책들 다 읽을 수 있다. 그래서 책을 잘 사지 않지만! 상반기 공채 끝나고 수고했단 의미로 나에게 주는 선물이다. ♡✧( ु•⌄• ) 잘 풀리진 않았지만ㅎ... 면접 끝나고 집 가는 길에 바로 도서관 가서 책 빌렸는데 이제 시간도 많겠다 다 읽어버려야지~ 앞으로 계획은 알고리즘 공부와 독서 >.< 슬슬 플래티넘 이상의 알고리즘을 공부할 생각이다. 1. 생각훈련 독서법고등학생 때 담임쌤이셨던 분께서 책을 출판하셨다고 하셔서 몰래 구입했다.ㅎㅎ 선생님과 연락은 하지 않지만 똑똑하시고 존경하는 분이셔서 믿고 구매한다. 보고 계시나요?! 2. 다윈의 미완성 교향곡갑자기 과학책이 땡겨서(?) 구매했다. '중력에 관한 모든..
2023.05.18
-
[웹] HTTP/1.0 HTTP/1.1 HTTP/2, HTTP/3 차이
HTTP HTTP/0.9 GET 메서드만 지원됐고 헤더가 없었다. HTTP/1.0 기본적으로 한 연결당 하나의 요청을 처리하게 설계되었다. 따라서 요청을 할 때마다 클라이언트와 서버가 TCP 3-handshake를 수행했기 때문에 RTT(Round Trip Time, 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간)가 증가하는 단점이 생겼다. 또, GET, POST, HEAD 메서드만 지원됐다. (HEAD는 헤더 정보만 전송된다.) HTTP/1.1 HTTP/1.0의 단점(매번 연결해야 함)을 해결하기 위해 발전한 버전이다. keep-alive 옵션으로 여러 번 송수신할 수 있게 바뀌었다. 처음 TCP 연결 후 지정한 timeout 동안 연결을 지속한다. 또 파이프라이닝 기능이 지원된..
2023.05.18
-
[네트워크] TCP와 UDP
네트워크 기본 중 기본! OSI 4계층의 TCP와 UDP 프로토콜을 알아보자. TCP TCP(Transmission Control Protocol)와 UDP의 가장 차이점은 '연결' 아닐까! TCP는 연결 지향성이다. 한 번 연결을 하면 양방향으로 통신할 수 있다는 것을 의미한다. 또한 TCP는 흐름 제어, 에러 제어, 혼잡 제어 같은 기능을 제공한다. 연결 오버헤드와 순차성 제어를 위해 속도가 느리다. 연결 지향성이다. 연결 후 양방향 통신 흐름제어, 에러제어, 혼잡제어 기능 제공 흐름제어 : 송신측과 수신측 사이 데이터 처리 속도 차이로 인해 수신측의 버퍼가 오버플로우 나지 않도록 제어하기 위한 기능이다. 전송량 > 수신량일 경우 전송율을 낮춘다. stop and wait 방식 sliding wind..
2023.05.16
-
[서평 23년-21] 스프링 부트 실전 활용 마스터
독서기간_2023년 2월 26일 ~ 2023년 3월 저자_그렉 턴키스트 출간일_2021년 5월 28일 들어는 보았나 리액티브 스트림 개발. 입문자에겐 절대 비추천하는 책이다. "실전 활용"이 제목인만큼 일반적인 Spring Boot를 공부하지 않는다. WebFlux라는 라이브러리를 이용해 스트림 통신 개발을 다룬 책이다. 마치 Spring Boot가 리액티브 패러다임이 기본인 것처럼 알려준다. 친절한 설명과 따라 치기 쉬운 예제 덕분에 많은 공부가 되었다. 현직의 ㅎ도 시작 못한 백수지만 현직자가 공부하기 좋은 책같다. 음 그냥 읽어보세요! 자신이 얼마나 무지한지를 깨닫게 됩니다. 개발에 발을 담굴수록 느끼는 거지만 끝이 없다. 취업해서도 꾸준히 책 읽고 공부하는 개발자가 되어야지. 하고 싶은 건 많은데..
2023.05.15
-
[서평 23년-20] 자바와 JUnit을 활용한 실용주의 단위 테스트
독서기간_2023년 2월 중순? 저자_제프 랭어, 엔디 헌트, 데이브 토마스 출간일_2019년 7월 3일 Java, JUnit만으로 테스팅을 공부할 수 있는 아주 좋은 책이다. 작년 10월쯤 우아한테크코스를 준비하면서 단위 테스트에 제대로 입문했었다. 우테코 이전에는 Spring Boot 공부하면서 테스트 코드를 작성하는데, Mock과 Inject의 개념이 잡혀있지 않은 채로 작성하려니 머리가 깨질 것 같았었다. (그때 Mock이란 개념을 처음 알긴 했지만...) 구글링해가면서 이렇게 로직을 테스트하는구나... 어림짐작하면서 코딩했었다. 남들이 when, then, mock 쓰니까 이렇게 하나보다...하고 이 책은 공채도 끝나고, 할 일도 없어서 읽기 시작했다. 그런데 굉장히 양질의 정보를 얻을 수 있었..
2023.05.06
-
홈택스로 현장실습 소득세 환급받기 | 5월은 종합소득세 신고의 달
안녕하세요! 대학생/고등학생 현장실습생의 떼갔던 세금을 돌려 받을 5월이 왔습니다. 5월만 기다렸다구~ 「대학생 현장실습 운영규정」제5조제4항에 따라 수업으로서의 요건을 갖춘 현장실습수업에 참여하는 학생이 같은 규정 제7조에 따라 지급받는 현장실습지원비는 근로소득 및 기타소득에 해당하지 아니함 세무는 잘 모르지만 현장실습 월급은 소득이 아니기 때문에 세금을 떼지 않는다고 합니다!!!!!!!!!!! 저는 2022년도에 대학생 현장실습을 했었습니다. 그때 사수께서 흘러가는 말로 "~~... 5월에 신청하면 돌려 받을 수 있어...~~ "말해주셨는데 진짜넹?! 바로 신청해 봅시다! 저는 모바일 홈택스로 접수했고 PC는 여기서 신청 가능합니다. 앞으로 따봉무지만 잘 따라오시면 됩니다! 따봉무지야 고마워! 홈택스..
2023.05.04
-
[알고리즘] 해시 충돌 해결 방법 | Hash Collision
Seperate Chaining 추가적인 공간을 활용해 충돌을 해결한다. seperate 뜻에 맞게 Linked-List를 사용한다. 보통 헤드에 삽입한다. (테일에 삽입하면 테일까지 가는 시간이 걸리기 때문) 최악의 경우 하나의 해시에 데이터가 몰리면, 조회할 때 Linked-list를 탐색하는 시간이 걸리게 된다. Open Addressing Linear Probing 해시 충돌 발생 시 충돌이 발생하지 않을 때까지 해시를 linear 하게 탐색한다. 단, clustering 군집현상이 발생할 수 있다. Quadratic Probing 충돌 발생 시 해싱 함수에 특정 연산을 더해 새로운 해시를 제작한다. 보통 제곱연산을 쓰는데 추가적인 상수곱이나 제곱연산이 가능하다. 사진을 예시로 3번째 값 hf_q..
2023.05.03
-
[운영체제] 페이징과 외부 단편화, 내부 단편화
스와핑 메모리에 적재된 프로세스가 잠시 저장공간(SSD, HDD)에 물러났다가 다시 메모리로 적재되는 작업 가상 메모리를 이해하기 위한 약간의 지식 초기 메모리 관리법 MMU(Memory Management Unit)라는 논리 주소를 물리 주소로 변환하는 CPU 안의 장치를 이용해 메모리에 접근했다. (논리주소/물리주소에 자세히 알고 싶으면 아래 링크 참조) [운영체제 OS]Address Binding 주소 할당, 주소 바인딩, 논리적 주소(logical) vs 물리적 주소(physical), 컴 [운영체제 목차] 안녕하세요~!! ㅎㅎㅎ 메모리 관련 문의글이 많아, 가장 기초적인 주소 할당부터, 그 종류, 페이징, 캐시메모리...쪽을 한번 먼저 쭉 다뤄볼까해요 ㅎㅎ 요새 기다려주시는 사람 jhnyang...
2023.05.02
-
[운영체제] 교착상태와 은행원 알고리즘
교착상태 Dead Lock 프로세스들이 서로의 자원을 기다리며 무한히 기다리는 현상이다. 아래 4개 조건이 성립할 때 교착상태가 발생한다. 비선점 Non-Preemption : 자원을 선점하지 않음 환형대기 Circular Wait : 원형으로 꼬리물기처럼 대기 중 상호배제 Mutual Exclusion : 자원은 하나의 프로세스만 점유 가능 점유 대기 Hold and Wait : 자원을 점유하고 있으면서 추가로 다른 자원을 기다리고 있는 상태 교착상태 처리하기 예방 Prevention 상호배제 부정 : 여러 프로세스가 공유 자원 사용 점유대기 부정 : 프로세스 실행전 모든 자원을 할당 비선점 부정 : 자원 점유 중인 프로세스가 다른 자원을 요구할 때 가진 자원 반납 순환대기 부정 : 자원에 고유번호 할..
2023.05.01
-
[C++] pow함수 double 형의 정확성 문제
https://www.acmicpc.net/problem/1740 1740번: 거듭제곱 3의 제곱수를 생각하자. 3의 0제곱, 3의 1제곱, 3의 2제곱, ... 은 순서대로 1, 3, 9, 27, ... 이 된다. 이를 바탕으로, 한 개 이상의 서로 다른 3의 제곱수의 합으로 표현되는 수를 생각할 수 있다. 예를 www.acmicpc.net 해당 문제를 풀다가 발견한 문제.. 분명 로직은 맞는데 어디서 틀린건지? 으잉? 분명 (맨앞) 1비트씩 차이나는데 왜 pow로 곱한 값은 같은 거지????? 문제를 발견하고 뒤적이기 시작했다. 아..하.. 실수 연산의 차이... 부동소수점....
2023.04.30
-
[알고리즘] 배낭 알고리즘 (fractional 배낭, 0-1 배낭)
분할 가능한(fractional) 배낭 알고리즘 문제 도둑은 W만큼 들 수 있는 가방을 가지고 있다. W를 초과하는 보석을 담을 경우 가방이 찢어져 버리고 만다. 무게가 w고 가치가 v인 N개의 보석이 존재할 때 도둑이 훔칠 수 있는 보석의 최대 가치를 구하라. (보석은 분할 가능하다.) 그리디 알고리즘을 다룰 때 가장 자주 나오는 문제이다. 브루트포스를 사용해 훔칠 수 있는 보석의 모든 조합을 구할 수 있겠지만 N개의 보석의 모든 조합을 구하려면 O(2^N)의 시간이 걸릴 것이다. (보석을 훔친다 || 안 훔친다.) * N개 따라서 그리디하게 접근하면 효율적으로 해결할 수 있다. 무게 대비 가치가 높은 것부터 가방을 채우면 되지 않을까? N개의 보석을 v/w가 높은 순으로 정렬 후 W만큼까지만 훔쳤을 ..
2023.04.29
-
[자료구조] AVL 트리, Red-Black 트리
AVL 트리 AVL트리는 발명가 Adelson-Velsky, Landis 이름 앞글자에서 따온 균형이진탐색트리이다. 스스로 균형을 잡는 트리로 처음 고안됐으며 말단 노드의 레벨 차이가 항상 1이하로 나는 트리이다. 노드 삽입, 삭제 시 균형이 깨진다면 스스로 조절하기 때문에 높이는 항상 logN이 보장된다. Red-Black 트리 아래 다섯 조건을 만족하는 트리를 레드블랙트리라고 한다. 마찬가지로 균형이진탐색트리이므로 높이는 logN이다. 모든 노드는 Red / Black 의 색을 가져야 한다. 루트 노드는 항상 블랙이다. NIL 노드는 항상 블랙이다. (value가 없는 말단 노드를 항상 가진다. NIL == Null Leaf) 레드 노드의 자식 노드는 항상 블랙이다. (블랙 노드는 상관 없다) 각 노..
2023.04.28
-
[네트워크] 네트워크 성능 분석 명령어
ping ping(Packet INternet Groper)은 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어 이다. 해당 노드까지 패킷 수신 상태, 도달하기까지 시간, 네트워크 연결이 잘 돼 있는지 확인할 수 있다. ICMP 프로토콜(OSI 3계층)을 사용한다. netstat 접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용되며 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트를 보여준다. nslookup DNS에 관련된 내용을 확인하기 위해 사용하는 명령어이다. 특정 도메인에 매핑된 IP를 확인할 때 사용한다. tracert(Windows), traceroute(Linux) 목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어이다. 목적지 노드..
2023.04.27
-
[알고리즘] 퀵 정렬과 병합 정렬
퀵 정렬 배열에서 기준값(Pivot)을 설정해 작은 값은 왼쪽에, 큰 값은 오른쪽에 배치한다. 재귀적으로 분할해 정렬을 수행한다. pivot, left 인덱스와 right 인덱스를 설정한다. left값이 피봇보다 작으면 오른쪽으로 이동하고 크면 stop, right값도 똑같이 피봇보다 크면 왼쪽으로 이동하고 작으면 stop한다. 둘 다 stop인 경우 두 값을 swap한다. left 인덱스와 right 인덱스가 만날 때까지 수행하고, 그 인덱스를 기준으로 파티션을 분할해 정렬을 수행한다. 평균 시간복잡도는 O(nlogn)이지만 최악의 경우(오름차순 되어 있는데 내림차순으로 변경할 때) O(n^2)이다. 병합 정렬 https://i.namu.wiki/i/4JKVP3wRyMYaDKU_CBtFlxlJletKN..
2023.04.26
-
[독후감 23년-19] 물고기는 존재하지 않는다: 상실, 사랑 그리고 숨어 있는 삶의 질서에 관한 이야기
독서기간_2023년 2월 10일 ~ 2023년 2월 18일? 저자_룰루 밀러 출간일_2021년 12월 17일 이것은 과학책인가 심리학책인가 에세이인가 철학책인가 소설인가 역사책인가. 초중반까지 읽는데 무슨 내용인지 도저히 감이 안 오던 책이었다. 작가의 경험담인 듯 하면서 소설인 것 같은데 또 소설은 아닌 것 같고... 장(챕터) 마다 주요 인물이 달라져서 혼란스러웠다. 물고기 분류학자 이야기가 나올 때면 물고기 학명이 머리를 어지럽게 했다. 예를 들어 뤼세이데스 이다스 롱기누스, 에베르만니아 파나멘시스 등등. 책이 전달하고 싶은 내용을 당최 모르겠어서 중간에 포기할까 생각도 여러 번 들었다. 근데 다들 스포일러 없이 후반부를 꼭 읽어야만 한다길래 꾹 참고 읽었다. 그렇게 중반부를 읽다가 눈이 트이게 되..
2023.04.25
-
[자료구조] B-tree와 B+tree
이진트리 종류 정이진트리 Full Binary Tree 트리의 모든 노드가 0개 혹은 2개의 자식을 가지는 경우 (한국의 교재에선 포화이진트리라고 번역된 게 있는데 둘은 다른 개념이다.) 포화이진트리 Perfect Binary Tree 말 그대로 마지막 레벨까지 노드가 꽉 찬 트리, (2^N-1)개의 노드를 가진다. 완전이진트리 Complete Binary Tree 마지막 레벨을 제외한 모든 레벨에서 순서대로 노드가 꽉 찬 트리, 마지막 레벨은 왼쪽부터 채워져야 한다. 균형이진트리 Balanced Binary Tree 말단 노드들의 레벨 차이가 최대 1레벨까지만 나는 트리, 균형이 깨지면 별도의 로직을 통해 다시 균형을 잡게 된다. 포화이진트리, 완전이진트리, 정이진트리는 이상적인만큼 현실에서 잘 찾아볼..
2023.04.24
-
[운영체제] 세마포어와 뮤텍스
공유된 자원에 여러 프로세스가 동시에 접근하면 문제가 발생할 수 있다. 이러한 문제를 제한하기 위해 고안된 방법이 세마포어와 뮤텍스이다. 이때 각 프로세스가 접근하는 공유 데이터 부분을 임계 구역(Critical Section)이라고 한다. 세마포어: 멀티 프로세스 환경에서 공유 자원에 대한 접근을 제한하는 방법 뮤텍스: 임계 구역을 가진 스레드들의 실행시간이 서로 겹치지 않고 각각 단독으로 실행되게 하는 기술 상호배제(Mutual Exclusion)의 약자이다. 뮤텍스보다 세마포어가 좀 더 상위 개념이다. 세마포어의 P, V연산 P연산: 임계 구역에 들어가기 전 수행 (프로세스 진입 여부를 자원의 개수 S를 통해 결정) V연산: 임계 구역에서 나올 때 수행 (자원 반납 알림, 대기 중인 프로세스를 깨우..
2023.04.22
-
[네트워크] 주소창에 URL을 입력 시 일어나는 일
요약 주소창에 도메인을 입력한다. 브라우저가 캐시에서 DNS 기록이 있는지 확인한다. 없다면 ISP의 DNS 서버가 도메인을 호스팅하는 IP주소를 찾기 위해 DNS 쿼리를 날린다. 브라우저가 해당 서버와 TCP 연결을 한다. 브라우저가 웹서버에 HTTP 요청을 보낸다. 서버는 요청을 처리하고 응답을 보낸다. 서버는 HTTP 응답을 보낸다. 브라우저는 HTML 콘텐츠를 가시화한다. DNS(Domain Name System)은 URL의 이름이고 특정 IP 주소와 연결되어 있다. 모든 URL은 유일한 IP 주소와 매치된다. IP주소는 요청하는 웹사이트의 서버 호스트 컴퓨터에 종속된다. 예를 들어 www.google.com URL이 20.85.227.104 IP주소를 가지는 것처럼. #2 DNS 기록을 찾기 위..
2023.04.21
-
[네트워크] OSI 7계층, PDU
OSI 7 Layers OSI(Open Systems Interconnection) 모형은 네트워크 통신을 저수준에서 고수준까지 7단계로 분류한 것이다. 인터넷에서 컴퓨터들이 서로 정보를 주고 받는 데 쓰이는 프로토콜의 집합이다. 1단계부터 4단계까지는 저수준, 5단계부터 7단계까지는 고수준 계층이라고 한다. 네트워크의 기본 원리는 '데이터를 받아서 가야 할 곳으로 전달해 주는 것'이다. 저수준일수록 하드웨어적, 전기적, 기계적 관점으로, 고수준일수록 응용 프로그램과 사용자 영역관점으로 다룬다. 이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었다. 물리 계층 (Physical) 물리적으로 전류나 광신호, 라디오 신호를 통해 비트 단위의 데이터 전달이 이루어진다. 즉, 데이터..
2023.04.20
-
RabbitMQ의 메시지 전달 방식 (Direct, Fanout, Topic, Headers Exchange)
래빗엠큐로 살펴보는 메시지 프로듀서의 메시지 전달 방식을 알아보자. 래빗엠큐가 아니더라도 Kafka, JMS 등 다른 메시지브로커들도 비슷한 모델을 사용한다. 하나를 알면 열을 안다...!! 기본적으로 구독-발행 시스템을이용한다고 생각하면 된다. 유튜브 구독을 예시로 들면 특정 사용자에게만 알림 보내기, 전체 사용자에게 알림 보내기, 특정 유튜버 구독자에게만 알림 보내기 처럼 이해하면 쉽다. Binding : 익스체인지가 어떤 큐에 메시지를 적재할지 정하는 규칙 Exchange : 프로듀서로 부터 발행된 메시지를 받고, 큐에 메시지를 라우트한다. 라우팅 알고리즘은 익스체인지 타입과 바인딩 규칙에 따른다. Direct Exchange Key 값에 해당하는 큐에만 메시지를 적재한다. 유니캐스트와 개념이 비슷..
2023.04.19
-
[독후감 23년-18] 다정한 것이 살아남는다
독서기간_2023년 2월 초 저자_브라이언 헤어 출간일_2021년 7월 26일 오랜만에 감명깊게 읽었고 그만큼 하고 싶은 말, 쓰고 싶은 말이 많아서 2월에 읽었지만 포스팅이 늦어지게 되었다. 결론부터 말하자면 모든 사람이 꼭 읽었으면 좋겠다. 생각할 거리를 자연스럽게 던져주며 가축의 자기가축화에서 인간의 자기가축화를 연결하는 내용이 인상깊었기 때문이다. 이 책은 후반부에 접어들수록 더 진가를 발휘한다. 재밌기도 했고, 생각할 거리도 많았다. 사회과학 분야 기본도서로 강력 추천한다. 모든 인간이 한 번씩 읽었으면 하는 책이었다. 다름이 인정되는 사회가 올...까...? 사실 밀리의 서재 구독할 당시 이 책을 읽어보려고 5번 넘게 도전했었다. 초반에 나오는 '보노보' 내용을 3번은 읽어 본 듯했지만 실물 ..
2023.04.18
-
[독후감 23년-17] 1984
독서기간_2023년 3월 중순 저자_조지 오웰 출간일_1949년 출판사_문예출판사 앞으로 서평과 독후감을 나눠쓸 것이다!! 주인공인 '윈스턴 스미스'는 체제에 대해 불만을 품으며 몰래 일기를 '작성'한다. 일상을 감시하는 사상경찰들이 있기 때문에 걸리게 된다면 주변 인물들처럼 갑자기 증발되어 버린다. 출산을 통해 국가를 유지하기 위한 명목인 성관계 외 남녀 간 스킨쉽은 역겨운 것이라 세뇌받고 살아온 덕분에 윈스턴은 사랑을 모르고 살았다. 어느날 한 여인(줄리아)이 윈스턴에게 몰래 쪽지를 남기고 그 둘의 사랑이(!) 시작된다. 내부당원 간부인 ’오브라이언‘도 사실 빅 브라더에 대한 역모를 꿈꾸고 있어 윈스턴과 줄리아, 오브라이언은 반란을 계획하게 되는데... (스포주의) 윈스턴 일당은 결국 잡히고 독방에 ..
2023.04.16
-
1. 기획/설계
개발 배경 현재 사회적 약자(특히 독거 노인) 등의 도시 내 생활을 돕는 스마트시티형 서비스들은 대부분 IoT센서 등을 활용 움직임 감지를 바탕으로 공급되고 있는데, 감시 당하는 느낌으로 인해 사용율 및 만족도가 떨어짐 개발 목적 현재 사회복지사가 수십 명의 사회적 약자를 담당해 관리하고 있다. 관리사들을 돕는 서비스를 개발하는 것이 1차 목표이다. 서비스의 전체적인 설계는 다음과 같다. 사회적 약자의 생활 데이터(전화, 수도, 전기 등)의 사용량 등을 융복합 분석하여 일일 생활 안부를 확인(사용량 적은 경우 이상 상황으로 인지)하고 또 필요시 대응(출동 등)지원 할 수 있는 서비스를 개발한다. 개발 착수 본래는 가상의 데이터를 사용하여 AI 모델을 제작하는 것이 목적이었다. 하지만 아무리 소프트웨어를 ..
2023.04.15
-
[Docker] Dockerfile 문법
Dockerfile은 애플리케이션을 패키징 하기 위한 간단한 스크립트이다. Dockerfile은 일련의 인스트럭션으로 구성돼 있는데, 인스트럭션을 실행한 결과로 도커 이미지가 만들어진다. 기본 다섯 가지 인스트럭션만으로도 엔간한(!) 애플리케이션을 도커로 패키징할 수 있다. FROM 모든 이미지는 다른 이미지에서 출발한다. 애플리케이션을 실행하는 데 필요한 런타임 이미지를 가져와야 한다. 예를 들어 Spring이면 Java를, Django라면 Python을. ENV 환경 변수 값을 지정하기 위한 인스트럭션이다. 값을 지정하기 위해 [key]="[value]" 형식을 따른다. WORKDIR 컨테이너 이미지 파일 시스템에 디렉터리를 만들고, 해당 디렉터리를 작업 디렉터리로 지정하는 인스트럭션이다. COPY ..
2023.04.14
-
[Docker] 자주 쓰는 Docker 명령어 모음
도커 이미지 내려 받기 docker image pull [이미지 이름] 컨테이너 이미지 빌드하기 빌드하기 위해 이미지의 이름, 패키징에 필요한 파일의 경로를 추가로 지정해야 한다. 경로는 대개 온점(.)으로 표현하는데, Dockerfile이 존재하는 '현재 작업 디렉터리'라는 뜻이다. docker image build [경로] 옵션 설명 --tag [이름] 이미지의 이름을 지정한다. 도커 컨테이너 실행 docker container run [이미지 이름] 옵션 설명 -d, --detach 컨테이너를 백그라운드에서 동작한다. --name 컨테이너에 이름을 붙인다. (붙이지 않으면 무작위 ID로 생성됨) -e, --env [변수명]=[설정값] 컨테이너의 환경변수를 부여할 수 있다. -it 컨테이너와 대화식으..
2023.04.13
-
[Docker] 도커가 컨테이너를 실행하는 원리
도커 엔진 : 도커의 관리 기능을 맡는 컴포넌트이다. 로컬 이미지 캐시를 담당하므로 새로운 이미지가 필요하면 이미지를 내려받으며, 기존 이미지가 있다면 전에 내려받은 이미지를 사용한다. 호스트 운영체제와 함께 컨테이너와 가상 네트워크 등 도커 리소스를 만드는 일도 담당한다. 도커 엔진은 항시 동작하는 백그라운드 프로세스이다. 도커 엔진은 도커 API를 통해 맡은 기능을 수행한다. 도커API는 표준 HTTP 기반 REST API이다. 도커 엔진의 설정을 수정하면 이 API를 네트워크를 경유해 외부 컴퓨터로부터 호출할 수 없도록 차단하거나 허용할 수 있다. 도커 명령행 인터페이스(도커 CLI)는 도커 API의 클라이언트다. 우리가 docker 명령을 사용할 때 실제로 도커 API를 호출하는 것이 바로 도커 ..
2023.04.12
-
프론트엔드는 TDD가 필수인 것 같다
백엔드 준비하는 사람이 프론트엔드 종아리까지 담가본 후 느끼는 바이다. 프론트엔드야 말로 테스트 없이는 효율적인 코딩이 불가능한 것 같다. 프론트 개발하면서 고민이 컴포넌트 밑 컴포넌트 밑 컴포넌트의 state 변경 이벤트가 잘 작동되는지 확인하는 것이다. API로 데이터 호출해서 컴포넌트에 잘 띄워지는지 등등... 비즈니스 로직이 막 대단한 것도 아닌데 결합도가 높다고 해야 하나? 백엔드는 실행 비용이 그렇게 크지 않아서 테스트의 중요성을 못느꼈는데, 프론트엔드는 실행이 좀 많이 무겁다... 그리고 API 호출 할 수가 없잖아... 인가 기능도 해놔서 쿠키 설정도 해야 되는데... 맞아요... 지금 Mockito 이용해서 Mock API 호출 후 위젯에 잘 보여지는지 테스트 하고 있는데 계속 오류가 나..
2023.04.11
-
C++ string replace, count
맨날 까먹어서 글 쓴다. string 메서드 replace(치환할 시작 위치, 치환할만큼 길이, 치환할 문자열) string target="Hello World!"; string change="Bye"; target.replace(0, 5, change); 프로그래머스에서 풀다가 테스트함... 내장함수 count(문자열 시작 위치, 문자열 끝나는 위치, 찾을 char) #include string str="10001100001"; count(str.begin(), str.end(), '1'); // 4
2023.04.10
-
[알고리즘] 2차원 배열 시계 방향 회전, 180도 회전, 전치 행렬 구하기
외우면 구현 빠른 알고리즘 시계 방향 회전 (90도 회전) // origin[ROW][COL] // rotated[COL][ROW] for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { rotated[j][ROW-1-i] = origin[i][j]; } } 반시계 방향 회전 (270도 회전) // origin[ROW][COL] // rotated[COL][ROW] for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { rotated[COL-1-j][i] = origin[i][j]; } } or 시계방향 * 3회 180도 회전 // origin[ROW][COL] // rotated[COL..
2023.04.10
-
[서평/23-16] SQL 레벨업 : DB 성능 최적화를 위한 SQL 실전 가이드
독서기간_2023년 1월 10일 ~ 2023년 1월 20일 저자_미크 출간일_2016년 1월 30일 😦... 내가 이걸 아직도 안 썼다니... 데이터베이스, 특히 SQL은 간과하기 쉽다. 작은 예제 테이블에서 SELECT, FROM, WHERE 문을 잘 조합하면 원하는 데이터를 조회할 수 있다. 다른 테이블과 관계된 데이터의 조회도 필요한가? 그럼 JOIN을 사용하면 된다. 그런데 테이블 결합 시 발생하는 결과를 생각해본 적 있는가? 카티션 프로덕트가 초래하는 성능 이슈를 아는가? SQL 실행계획을 아는가? 조건 분기, 윈도우 함수를 아는가? 그렇지 않다면 이 책을 읽어보길 바란다. 1000개도 안 되는 데이터베이스 테이블에서 조회만 잘 한다고 SQL을 잘 쓰는 것이 아니다. 신입 개발자 준비하면서 얼마..
2023.04.08
-
[Spring Boot] 테스트 코드에서 프로퍼티 NullPointerException 오류 해결
@Service public class TokenService { @Value("${secret}") private String secretKey; public String generateJWT(MemberInfoDto info) { // ... Jwts.builder() .setHeader(headers) .setClaims(payloads) .setIssuedAt(new Date(System.currentTimeMillis())) .setExpiration(new Date(System.currentTimeMillis() + 60 * 1000 * 60)) .signWith(SignatureAlgorithm.HS256, secretKey.getBytes()) .compact(); } //... } 토큰 ..
2023.04.06
-
IntelliJ 사용 시 gradle 프로젝트 out, build 폴더 차이
IntelliJ 사용 시 build 하면 out 폴더와 build 폴더가 생성 *될 수도* 있다. 두 개의 폴더는 동일한 클래스 파일을 소유하고 있다. 무슨 차이가 있을까? out - 폴더는 인텔리제이 빌드시에 컴파일한 class를 저장하는 폴더 build - 폴더는 gradle 빌드시에 컴파일한 class를 저장하는 폴더 예전에 AsciiDoc을 이용해 REST Doc을 만드는 작업을 했는데 프로젝트를 진행할 때 이상한 점이 있었다. 아스키독 테스트 코드를 구현하고 빌드를 했는데 예상대로라면 build폴더 하위에 *.ascii 파일이 생성되어야 했는데 build 폴더가 없는 것이다. 이제 그 이유를 알았다... IntelliJ에는 IDE 자체에서 빌드하는 기능을 제공한다. 평상적으로 IntelliJ 자..
2023.04.05
-
[Spring Boot] 개인 정보가 담긴 Jwt 토큰 발급 후 Cookie로 반환하기
oAuthService에 Jwt 토큰을 발급하는 메서드를 추가했다. public String generateJwtToken(MemberInfoDto info) { Map payloads = new HashMap(); Map headers = new HashMap(); headers.put("alg", "HS256"); headers.put("typ", "JWT"); payloads.put("name",info.getName()); payloads.put("picture", info.getPicture()); payloads.put("oauthId",info.getSub()); return Jwts.builder() .setHeader(headers) .setClaims(payloads) .setIssue..
2023.04.04
-
[Spring Boot] Security 없이 OAuth2 Google에서 받은 id_token 사용해 회원 정보 저장하기
2023.03.27 - [Project/모면] - [Spring Boot] Security 없이 OAuth2로 Google 로그인 구현, 유저 정보 얻기 이전 시간에 access_token을 발급받아오는 작업까지 마쳤다. 이제 id_token 안의 정보를 복호해 으로 만들어버리자. 먼저 RestTemplate을 이용해 POST 요청을 보내는 코드를 수정했다. ResponseEntity responseEntity = restTemplate .postForEntity(GOOGLE_TOKEN_URL, params, GoogleOAuthResponseDto.class); package com.momyeon.backend.dto; import lombok.AccessLevel; import lombok.Gette..
2023.04.03
-
[Java] String to Json 파싱하기 | Jackson ObjectMapper
온갖 JSON 파싱 방법 찾아서 적용하니까 코드가 더럽거나 실패했다. 그나마 가장 깔끔한 방법을 찾아서 공유한다!!!! 파싱 유목민 여기서 정착하다... 공식 문서 : https://www.baeldung.com/jackson-deserialize-json-unknown-properties import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; //..
2023.04.02
-
0. 프로젝트 승인
2023년 3월 31일 ICT 한이음(프로보노) 프로젝트 드디어 승인! 약 9개월의 긴 프로젝트가 시작됐다. 주제도 좋고 꽤 괜찮은 팀프로젝트가 될 것 같아서 기대가 된다. 열심히 해야지. 난 대상을 노린다.
2023.04.01
-
[Spring Boot] 면접 질문 카테고리 분류하기
대분류 public enum Division { COMMON("공통"), TECH("기술"), EXPERIENCE("경험"), FIT("인성"), ; private String korTitle; Division(String korTitle) { this.korTitle = korTitle; } } 소분류 public enum SubDivision { MOTIVATION("지원동기", Division.COMMON), INTRODUCTION("자기소개", Division.COMMON), NETWORK("네트워크", Division.TECH), ALGORITHM("알고리즘", Division.TECH), OPERATING_SYSTEM("운영체제", Division.TECH), DATABASE("데이터베이스",..
2023.04.01
-
[Spring Boot] 5. Upgrading Spring Boot | 공식 문서 번역
영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#upgrading Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although ther..
2023.04.01
-
[서평/23-15] Do it! 플러터 앱 프로그래밍: 오픈 API 활용 + 파이어베이스 + 구글 맵 + 광고 수익까지
독서기간_2023년 3월 26일 저자_조준수 출간일_2021년 2월 23일 Dart 언어는 문제가 아니다! Flutter 프레임워크가 고비다!!!!!! 생각보다 어렵다!!!!! Do it! React 편보다 더 괜찮았다(클론 코딩이긴 했지만). 설명이 자세하고 초심자의 눈높이에 맞춰 설명해준다. Stateful 위젯과 Stateless 위젯 차이부터 컴포넌트 배치, API 호출해 정보 표시하기까지 도움이 많이 되었다. 이 책 덕분에 async, await 키워드 개념을 이해했다. 리액트의 state 보다 플러터의 stateful이 더 편한 것 같다. 그래도 플러터는 확실히 편한 프레임워크는 맞다. 다양한 라이브러리 특히 커스텀하기 까다로운 AppBar, TabBar 등과 Cupertino라는 iOS 디자..
2023.03.31
-
[JPA] Cascade Type 비교 | 공식 문서 번역
영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://www.baeldung.com/jpa-cascade-types Overview of JPA/Hibernate Cascade Types. | Baeldung A quick and practical overview of JPA/Hibernate Cascade Types. www.baeldung.com 1. Overview 이 문서에서는 JPA/Hibernate의 의미를 따라서 다양한 cascade 타입을 다룰 것입니다. 2. Cascading이란? 엔티티는 주로 다른 엔티티 존재에 의존하게 됩니다. 예를 들어 Person-Address 관계처럼요. Person 엔티티가 존재하지 않는다면 Addre..
2023.03.30
-
도망친 곳엔 낙원은 없다
으으으음 플러터 어려워........ 백엔드-프론트엔드 연동하는데 oauth2 로그인 로직에 오류가 있는 걸 발견했는데 어떻게 처리해야 할지 3일째 고민 중이다. 이게 돼야 다음 과정 착착착 하는데... 콜백 redirect_uri를 뭐로 설정해야 하는지 모르겠다. 프론트에서 콜백을 받을 수 있단 말이야?..? 왜 플러터는 내부 코드로 포트 고정 못하는 건데..? 지금이라도 리액트로 도망가? 라는 생각이 자주 들지만 '도망친 곳엔 낙원은 없다' 되뇌이며 붙잡고 있다. (리액트로 도망가도 똑같음) 일단 프론트엔드는 모든 과정이 쉽지 않기 때문에 로직은 고민하는 동시에 컴포넌트 배치 시작했다. 관련 서적 찾아보니 이제서야 감이 온다. statefull widget... 어려우면서 어렵지 않은...... 그리..
2023.03.29
번역
-
[Spring Boot] 6. Developing with Spring Boot (6.1 부터 ~ 6.3 까지) | 공식 문서 번역
영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is..
2023.05.26
-
[Spring Boot] 5. Upgrading Spring Boot | 공식 문서 번역
영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#upgrading Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although ther..
2023.04.01
-
[JPA] Cascade Type 비교 | 공식 문서 번역
영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://www.baeldung.com/jpa-cascade-types Overview of JPA/Hibernate Cascade Types. | Baeldung A quick and practical overview of JPA/Hibernate Cascade Types. www.baeldung.com 1. Overview 이 문서에서는 JPA/Hibernate의 의미를 따라서 다양한 cascade 타입을 다룰 것입니다. 2. Cascading이란? 엔티티는 주로 다른 엔티티 존재에 의존하게 됩니다. 예를 들어 Person-Address 관계처럼요. Person 엔티티가 존재하지 않는다면 Addre..
2023.03.30
-
[Spring Boot] 4. Getting Started | 공식 문서 번역
영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Althoug..
2023.03.28
-
[Spring Boot] 3. Documentation | 공식 문서 번역
영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#documentation Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although ..
2023.03.17
-
[Spring Boot] 2. Getting Help | 공식 문서 번역
영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-help Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although t..
2023.03.14
-
[Spring Boot] 1. Legal | 공식 문서 번역
영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#legal Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is..
2023.03.14