일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 완전탐색
- 알람 시스템
- docker
- 카카오
- 쿠키
- 셀러리
- 숫자 블록
- piplining
- AWS
- 깊게 생각해보기
- 레디스 동시성
- prg 패턴
- 좋은 코드 나쁜 코드
- BFS
- 누적합
- 구현
- 백준
- 주식
- 트랜잭샨
- 검색어 추천
- 디버깅
- 결제서비스
- branch 전략
- 객체지향패러다임
- gRPC
- 프로그래머스
- JPA
- jwt 표준
- spring event
- 이분탐색
- Today
- Total
목록분류 전체보기 (167)
코딩관계론
애그리거트 거크트의 목적 애그리거트 거크트(Aggregate Root)는 복잡한 도메인을 이해하고 효율적으로 관리하기 위한 핵심 개념입니다. 이것은 상위 수준에서 도메인을 조망하고, 이를 효율적이고 관리 가능한 단위로 나누기 위한 목적이 있습니다. 또한, 모델의 이해를 돕는 것뿐만 아니라 일관성을 관리하고 도메인의 복잡도를 낮춰 유지보수 시간을 최소화하는 역할을 수행합니다. 애그리거트 특징 애그리거트에 속한 구성 요소는 주로 함께 생성되고 함께 제거되는 특성을 가지고 있습니다. 이는 애그리거트가 단일 논리적 단위로 작동하며, 그 안의 모든 요소가 함께 일관된 상태를 유지할 수 있도록 해줍니다. 애그리거트 설정 방법 애그리거트를 설정할 때 가장 중요한 원칙은 도메인 규칙과 요구사항을 기반으로 하는 것입니다..
아키텍처는 전형적으로 '표현', '응용', '도메인','인프라스터럭처'의 영역으로 구성된다. 각각의 역활 및 코드에 대해서 알아보겠다. 표현영역 표현 영역의 역활은 http 요청이 오면 해당 요청을 응용 영역이 원하는 형태로 가공한 후 응용 영역에 전달한다. 예를 들면 음식 주문 요청이 들어오면 그것을 DTO로 변환한 후 응용 영역에 전달하고 응용에서 처리한 결과를 사용자에게 전달한다 package presentation type OrderController struct { // 필요한 의존성 주입 AppService application.OrderAppService } func (oc *OrderController) HandleOrderRequest(requestDTO OrderRequestDTO) {..
1. 저출산이 주목받을 수 있는 이유는 2023년 저출산 인구가 발표됨(23년 예정) -> 통계청에서 저출산의 원인 및 ~~를 쉽게 알 수 있도록 변경한다고 함 뉴스에서 주목을 이끌 수 있는 요소로 판단도미 특히 "출산 해소를 위한 사회구조 변화, 사회적 인식 변화를 위해 사회 각계의 도움이 필요하다"며 연내에 위원회를 개최해 저출산 대응 추가 대책 발표와 6개 경제 단체와 함께하는 '가족 친화 기업문화 실천선언 대회'를 추진하겠다고 밝혔다. 시진핑짜이 저출산 대책 강화 -> 이것도 연내에 발표될 것 같음 제로투세븐: 52주 최저가에 매출처 확대(베트남) ,pbr. per 및 52주 최저가 꿈비랑 다른 점은 궁중대책이 중국에서 매출이 잘 나오고 있다는 점 단점은 대장주는 아니라는 점 꿈비: 매출처가 약해..
요건 충족 1. bps 1이하, per 하단 -> ok 2. 확실한 일정이 존재함 -> 12월 코스닥 편출로 공매도 금지, 비트코인 기대감 3. 시가총액 700억 미만 -> x 관심 이유 우리기술투자의 실적이 다시 턴어라운드 됐고, 현물 비트코인 승인의 영향으로 상승이 가능해질 것이다. 또한 12월부터 공매도가 불가능해지면서 공매도를 회수해나가는 작업이 필요해보인다. 숏커버를 기대할만하다. 실적이 좋아지고, 이전 실적을 회복하는 중이고 정부 정책에사 모태펀드 예산 상승 이슈가 있음 이 지분플러스가 영향이 있을까? 또한 두나무의 지분플러스 실적이 부각되면서 두나무 -> 업비트 과거의 실적 현재 기업의 상황 주가의 상승 동력
이 책은 세계는 수축사회로 향해가고 있고, 그 원인을 분석하고 현재 진행 중인 패권전쟁에 대한 시각을 재시하고, 앞으로 한국이 나아가야 할 길을 제시한다. 저자는 수축사회의 원인을 다음과 같은 3가지 요인에 의해서 발생한다고 저술했다. 1.기후 위기 저자가 제시하는 기후위기는 도널드 럼스펠드의 위기 구분 법칙에 의해서 정의된다. 도널드 럼스펠드의 위기 법칙은 아래와 같다. 원인을 알고 있고 해법도 아는 위기 원인은 모르나 위기가 발생하면 해법을 알 수 있는 위기 원인도 모르고 해법도 모르는 가장 심각한 위기 기위위기가 '원인도 모르고 해법도 모르는 가장 심각한 위기'라고 저술했고, 따라서 지금까지 인류가 지불하지 않았던 비용이지만, 이제 부가가치세처럼 살아 숨 쉬는 한 내야 할 영구 세금이 되었다. 2...
보호되어 있는 글입니다.
소개이번 글에서는 네이버 주식 테마와 관련된 정보를 크롤링하는 작업에서 발생한 초기 작업 시간이 1분 30초로 길었던 문제를 개선하여 30초로 단축하는 방법에 대해 소개하겠습니다. 맨 처음에 문제라고 생각했던 부분은 request 부분이었습니다. requsts가 느려 뒤에 있는 작업도 느려진다고 생각해 time 함수를 통해서 검증을 시도했습니다.문제 검증 처음에는 request의 속도가 느려 뒷 작업이 밀리는 것으로 인지하고 있었습니다. 따라서 time 함수를 이용해 어떤 부분이 실제로 느려지는 확인이 필요해졌고, 아래 코드와 같이 time함수를 사용해 느려지는 부분을 체크했습니다. now = time.time() page_source = self.web.get_page("https://finance.n..
개요 Telegram 라이브러리 사용 과정에서 "telegram.error.NetworkError: Unknown error in HTTP implementation: RuntimeError('Event loop is closed')" 오류가 발생했습니다. 이 글에서는 해당 오류의 발생 원인을 분석하고 해결 방법을 제시합니다. 환경 우분투 Python 버전: 3.8 오류 해결 시도 이 문제를 해결하기 위해 다음과 같은 접근을 시도했습니다. 오류의 발생과정과 관련 코드를 분석해보니 asyncio.run()을 이용하여 메세지 전송을 시도하는 부분에서 오류가 발생했습니다. 단 send_message 함수를 한번 호출하는 것은 괜찮았지만, 두 번 이상 호출하는 경우 해결하려는 오류를 만날 수 있었습니다. def..
Protocol Buffer는 google 사에서 개발한 구조화된 데이터를 직렬화하는 기법입니다. 직렬화(Serialization)란 데이터를 메모리에 저장된 형식에서 다른 형식으로 변환하는 작업을 의미합니다. 프로그램에서 사용되는 데이터는 변수, 객체 등의 형태로 메모리에 저장되어 있지만, 이 데이터를 네트워크를 통해 전송하거나 파일로 저장하기 위해서는 텍스트 형식 또는 이진 형식으로 변환해야 합니다. 이때, Protocol Buffer는 이진 형식의 직렬화를 수행하여 데이터를 효율적으로 표현합니다. Proto File 1)Message and Field Proto File에서는 주고 받는 data들을 message 라는 것으로 정의합니다. 이 메시지는 여러가지 타입의 필드로 구성됩니다. 아래 예시로 ..
등장요인 server-client model 예전에는 프로그램은 하나의 메인 프레임에서 동작하는 모노롤틱 구조로 설계되었습니다. 따라서 모든 기능이 한 공간에서 구동되다 보니 지금처럼 네트워크 통신이 그게 중요하지 않았습니다. 기술 발전에 따라 소형 컴퓨터 장비들이 등장하게 되고, 기업 입장에선 매우 고가인 메인 프레임워크를 비교적 저가의 서버로 대체하고 싶어했습니다. 하지만 메인 프레임워크의 고사양 서비스를 저사양 서버에서 그대로 제공하기엔 한계가 존재했습니다. 이 때문에 메인 프레임워크 기능을 워크스테이션 서버로 분산시키고, 네트워크 연결로 서비스하는 방식을 채택하게 됩니다. 흔히말하는 Server-client model입니다. 이처럼 서버 간 혹은 서버와 개인 PC간 네트워크 연결/통신이 중요해지면..
서론 비합리적이거나 애매한 가정에 기반해서 코드가 작성되거나 다른 개발자가 잘못된 일을 하는 것을 막지 못했을 때 코드가 오용되기 쉽다. 사용지치침을 제공한다면 코드 오용 문제를 완화하는데 도움이 될 수 있디. 하지만 이런 설명서는 코드의 세부 조항이기 때문에 간과되거나 최신 정보가 아닐 가능성도 존재한다. 그러므로 코드를 오용하기 어렵게 설계하고 작성하는 것이 중요하다. 불변 객체로 만드는 것을 고려하라 단순하다. 불변 객체의 상태는 생성된 시점으로부터 파괴되는 시점까지 그대로 유지된다. 즉, 프로덕션에서 해당 객체가 가진 값을 변하지 않게 하려는 추가적인 노력을 필요로 하지 않는다. Thread-Safe하다. 기본적으로 멀티스레딩 환경에서의 문제는 여러 스레드가 같은 객체에 접근하여 데이터를 쓰는 작..
문제 이해하기 숫자 0이 적힌 블록들에 다른 숫자가 적힌 블록들을 설치하려고 한다. 블록을 설치하는 규칙은 다음과 같습니다 블록에 적힌 번호가 n 일 때 가장 첫 블록은 n * 2번 째 도로의 위치에 설치, 그 다음은 n * 3, 4 ...도로의 위치에 설치합니다. 이 때 기존에 설치된 블럭이 존재한다면 해당 블록을 빼고 새로운 블록을 설치합니다. 각 블록은 오름차순으로 주어집니다. 또한 블럭의 숫자는 1 ~ 10,000,000까지의 숫자만 존재합니다. 문제 해결 방법 1. 도로의 입장에서 생각해보면 도로에 설치될 수 있는 블럭은 도로의 위치의 약수입니다. 예를 들면 10번 도로의 위치에는 1, 2, 5의 블록이 설치될 수 있다. 10의 블록이 설치될 수 없는 이유는 10(도로)은 10(블럭) * 1이기..