본문 바로가기

전체 글266

도메인 엔터티 패턴 도메인 엔터티 패턴 - 마이크로 서비스 도메인 모델 디자인 도메인 엔터티 패턴 엔터티는 도메인 개체를 대표하며, 주로 ID, 연속성, 시간의 흐름에 따른 지속성 및 이들을 포괄하는 특성에 의해 정의된다. 기본적으로 해당 ID로 정의되는 개체를 엔터티라고 한다. ‘엔터티 ID는 다중 마이크로 서비스나 바인딩된 컨텍스트를 교차할 수 있습니다.’ 동일한 ID(즉, 동일한 도메인 엔터티는 아닐 수 있지만 동일한 Id 값)는 여러 바인딩된 컨텍스트 또는 마이크로 서비스 전체에 걸쳐 모델링될 수 있다. 그러나 동일한 특성 및 논리를 가진 동일한 엔터티가 다중 바인딩된 컨텍스트에서 구현된다는 의미는 아니다. 대신, 각 바운딩된 컨텍스트의 엔터티는 그 속성과 행동을 해당 바운딩된 컨텍스트의 도메인에서 요구하는 속성과 .. 2023. 11. 18.
CQRS 패턴이란? CQRS Pattern CQRS Pattern 이 포스트는 출처(Milanjovanovic/CodeMaze)가 있는 글입니다. 공부를 위해 정리했습니다 CQRS 패턴( Command Query Responsibility Segregation )이란 명령 쿼리 책임 분리라고도 하며 최근 인기있는 디자인 패턴으로, 애플리케이션에서 읽기와 쓰기의 흐름을 논리적으로 분리하는걸 의미한다. 명령(Command)는 애플리케이션의 상태를 변경하는 데 사용된다 CRUD의 Create, Update, Delete를 다룬다. 쿼리(Query)는애플리케이션에서 정보를 검색하는 데 사용된다. CRUD의 Read를 다룬다. CQRS 패턴은 다음과 같은 장점을 가진다. 복잡도 관리(단일 책임) : 명령인지 쿼리인지에 대해서 단일 작업만 존재한다. 향상된.. 2023. 11. 9.
테크커리어 / 돈 존스 / 길벗 / 개발자 * 길벗의 개발자 리뷰어로 선정되어 도서를 제공받았습니다. 테크 커리어 저자: 돈 존스 출판: 길벗 쪽수: 512쪽 구매처: 교보문고, 리디북스 공유하고싶은 내용 인생 정의, 즉 내비게이션의 목적지를 내 앞에 확고히 두고 그곳에 가기 위해 무엇이 필요한지 알아내야 한다. 채용공고를 꼼꼼히 살펴보는 것은 경력 계획을 만드는 훌륭한 방법이다. 당신도 기여할 수 있다. 기여할 자격 가치 있는 기여의 범위가 얼마나 넓은지 고려하지 않았을 가능성이 높다. 가면 증후군을 약하게 앓고 있을 수도 있다. 자기가 가장 능력 없는 사람이고 사람들의 이목을 끌었다가 자신의 실체를 알아챌 거라고 생각하는 해로운 감정을 말한다. 기여할 시간이 있다. 다른 사람의 기여를 소비할 시간이 있다면 자신이 받은 선행을 다른 이에게 나누.. 2023. 8. 28.
[자기개발] 어른의 문장력 / 김선영 / 더퀘스트 / 독서 / 글쓰기 * 기록을 위해 작성한 포스트입니다. 어른의 문장력 매일 쓰는 말과 글을 센스 있게 만드는 법 저자 : 김선영(글밥) 출판사 : 더퀘스트 출간일 : 2022년 11월 쪽수 : 228쪽 리디북스 리디셀렉트 교보문고 독서 노트 정갈한 '어른의 문장'은 다음 세 가지를 갖췄다. 1.대화 목적 2.타깃 3.배려 괴태의 에는 갈등이 일어나는 이유가 술수나 악의를 써서라기보다는 오해나 태만 때문이라는 표현이 나온다. 일부러 나쁜 의도를 갖고 상대방을 속이려는 게 아니라 서로의 말을 이해하려는 노력이 부족했다는 뜻 아닐까. 오늘 일을 내일로 미루는 것만 게으름이 아니었다. 대화할 때 오해를 만들지 않으려는 애씀도 필요하다는 생각이 들었다. 나 말고 남을 위한 글을 써보는 게 어떨까. 남을 생각하며 글 쓰는 일은 생각.. 2023. 8. 9.
[C#] JWS 생성 (JSON Web Signature) / 검증 / RS256 용어 설명 JWT (JSON Web Token) JSON 형식 토큰의 표준 [RFC-7519] 장점: 권한 부여, 정보 교환시 유용 형식: header, payload, signatrue의 3가지로 구성되어 있다. 사이에 점을 추가해서 header.payload.signature로 표현된다. const token = base64urlEncoding(header) + '.' + base64urlEncoding(payload) + '.' + base64urlEncoding(signature); JWS (JSON Web Signature) JSON Web Signature 를 의미한다. [RFC-7515] JWT와 JWS의 차이 JWT는 클레임 기반의 웹 토큰으로 사용자의 인증, .. 2023. 8. 8.
flutter에서 firebase auth 사용하기 flutterfire 깃허브에서 샘플을 제공한다. 아래 urld의 main.dart / auth.dart 를 복붙하기만 하면.. 샘플 화면이 짜잔~~ 물론 코드 복붙하기 전에 firebase Authentication 에 구글로그인, email 로그인 등을 추가해두어야한다. https://github.com/firebase/flutterfire/blob/master/packages/firebase_auth/firebase_auth/example/lib/auth.dart https://github.com/firebase/flutterfire/blob/master/packages/firebase_auth/firebase_auth/example/lib/main.dart 2023. 6. 6.
[error / flutter] There was an error while trying to get your package certificate hash. flutter에서 firebase 인증 세팅을 했는데 오류가 발생 [There was an error while trying to get your package certificate hash.] firebase에 등록했던 인증서 (certificate)가 플레이스토어에서 받은 sha1 이었다..ㅎ android 폴더에서 ./gradlew signingReport 명령어를 입력해서 debug key를 확인할 수 있다. Variant: debug Config: debug 1. 자바가 안깔려있어서 자바 설치했고 2. gradle.properties 에서 jvmargs를 수정(Xmx512x)로 3. 11버전 이상이어야 된다고 해서 다시 설치 후 안드로이드 스튜디오에서 버전 수정 4. ./gradlew signi.. 2023. 6. 6.
Vite + React + tailwind css + firebase 초기세팅 // vite 프로젝트 생성 $ npm create vite@latest 명령어 입력시 선택항목 표시 이름:solyi(프로젝트명) -> 선택:react -> 선택:JavaScript // 프로젝트로 이동 $ cd solyi // 폴더 열기 $ code . -r // tailwind 설치 $ npm install -D tailwindcss // 테스트 실행 $ npm run dev // firebase 설치 $ npm i firebase // firebase-tools 설치 (node version 14.18.1) $ npm install -g firebase-tools@9.2.0 // login $ firebase login $ firebase init 명령어 입력시 선택항목 표시 -> firestore.. 2023. 5. 13.
[ERROR]노마드 코더 / xhr poll error / socket.io / admin ui 노마드 코더 줌 클론 강의를 그대로 진행하다보면 socket.io의 admin ui 를 실행했을때 xhr poll error 가 발생합니다. 1. https://admin.socket.io 에 접속한다. 2. 아래와 같이 세팅한다. Server URL : http://localhost:3000 * 맨 끝 슬래시가 있으면 안됩니다. [X] http://localhost:3000/ Advanced options: 체크 WebSocket only?: 체크 Admin namespace: /admin (기본설정) 설정 코드는 다음과 같습니다. import { Server } from 'socket.io' import { instrument } from '@socket.io/admin-ui' ... const ht.. 2023. 1. 26.
python 9일차 / 웹스크래핑 풀버전 폴더 구조 main.py extractors / indeed.py extractors / wwr.py 설치 $ pip install beautifulsoup4 $ pip install selenium # main.py from extractors.wwr import extract_wwr_jobs from extractors.indeed import extract_indeed_job keyword = input("What do you want to search for? ") file = open(f"{keyword}.csv", "w", encoding="utf-8-sig") wwr = extract_wwr_jobs(keyword) indeed = extract_indeed_job(keyword) jobs .. 2023. 1. 11.
python 8일차 / indeed / selenium / chromedriver / beautifulsoup / None (data-type) from requests import get from bs4 import BeautifulSoup from extractors.wwr import extract_wwr_jobs # function 을 import # from 폴더명.파일명 import function명 # jobs = extract_wwr_jobs("python") # print(jobs) # base_url = "https://kr.indeed.com/jobs?q=" # search_term = "python" # response = get(f"{base_url}{search_term}") # print(response) # if response.status_code != 200: # print("Fail") # else: # prin.. 2023. 1. 10.
python 7일차 웹 스크래핑 / beautifulsoup 4 / find / find_all / requests / response status_code # 5.0 웹 스크래핑 # beautiful soup (웹사이트의 데이터를 받아올 수 있게 해주는 python 라이블러리) # 5.1 다운로드 # $ pip install beautifulsoup4 # https://www.crummy.com/software/BeautifulSoup/bs4/doc/#quick-start # 5.2 주의사항 # 웹스크래핑으로 상업적 이용시 주의해야한다. from requests import get from bs4 import BeautifulSoup base_url ="https://weworkremotely.com/remote-jobs/search?term=" search_term ="vue" reseponse = get(f"{base_url}{search_term}").. 2023. 1. 10.
[vue]컴포넌트 자세히 알아보기 1. 섹션 소개 컴포넌트 등록 및 스타일에 대해 Component Registration & Styling 컴포넌트를 스타일링 하는 방법과 특정 스타일이 특정 컴포넌트에만 영향을 미치도록 하는 방법도 알아본다 슬롯과 동적 컴포넌트 Slots & Dynamic Components 컴포넌트 이름과 프로젝트 폴더 구조 Naming & Folder structure 2. 전역 컴포넌트Global Components와 지역 컴포넌트Local Components main.js에서 app.component('the-header', TheHeader); 처럼 설정하는건 vue앱의 전역에서 사용할 수 있는 컴포넌트다. 하지만 컴포넌트를 등록하는 방법 중에서 가장 좋은 방법은 아니다. 한가지 잠재적 단점이 있다. 모든 컴.. 2023. 1. 10.
반응형