본문 바로가기

전체 글258

C#의 recode 레코드 왜 쓰나요? 샘플 코드 예제 / 명명 규칙 record record타입이란 객체 내의 멤버가 변하지 않는 불변 참조 타입(Immutable Reference Type) 생성을 목적으로 한다. 기존엔 class 키워드를 사용해서 클래스를 정의 했지만 record라는 키워드를 통해 불변 타입을 정의하게 된다. C# 9 이상 버전에서 사용할 수 있다. 코드 예제 class로 작성한 Response public class ScoreResponse { public long Id { get; init; } public string Name { get; init; } public decimal AverageScore { get; init; } } record로 작성한 responsepublic record ScoreResponse( long Id, strin.. 2023. 12. 4.
CQRS 패턴을 적용한 MediatR과 FluentValidation CQRS 패턴이란? CQRS Pattern CQRS 패턴이란? CQRS Pattern /pages/list /pages/list CQRS Pattern 이 포스트는 출처가 있는 글입니다. 공부를 위해 정리했습니다 애플리케이션에서 읽기와 쓰기를 분리하는걸 CQRS 패턴이라고 한다. CQRS 패턴은 물리적, 논리적으로 나 solyi.kr CQRS 패턴의 개념에 대해선 위 포스트를 참고해주세요 😄 CQRS 패턴을 적용한 MediatR과 FluentValidation 기본 예제 코드 MediatR은 IRequest 인터페이스를 사용하여 명령과 쿼리를 모두 나타낸다. 사용 사례에서는 명령과 쿼리에 대해 별도의 추상화를 생성한다. 먼저 ICommand 인터페이스의 정의는 다음과 같다. using MediatR; n.. 2023. 11. 28.
REPR 디자인 패턴 개념 / REPR - MVC 비교 / REPR-REST 비교 REPR Design Pattern 이란 ? REPR 디자인 패턴은 웹 API 엔드포인트를 요청, 엔드포인트, 응답 세 가지로 구성 요소로 정의한다. 자주 사용되는 MVC 패턴을 단순화하여 API 개발에 더 중점을 둔다. MVC 패턴보다 더 좋을까? 기존 MVC 패턴(Model, View, Controller)은 오랫동안 성공적으로 사용되어 왔지만 API가 아닌 ASP.NET 앱의 경우를 보면 완벽하다고는 할 수 없다. ViewModel과 같이 혼합된 항목들이 존재하기 때문이다. API용 ViewModel을 갖는 것이 API에서 타당할까? 그렇지 않다. 일종의 DTO(Data Transfer Object)라고 할 수 있다. 널리 쓰이는 DTO와 구분하기 위해 이를 ApiModel이라 부르는 사람들도 있다.. 2023. 11. 27.
Entity Framework Core 개념 / 장단점 / 코드 예제 / 사용 방법 / 데이터 가져오기, 수정, 삭제 / 샘플 코드 EF Core? EF Core는 Entity Framework의 경량화된 버전으로, .NET Core 및 .NET 5 이상에서 사용할 수 있다. 데이터베이스와의 상호 작용을 단순화하고 개발자가 데이터베이스에 대한 쿼리 및 조작을 수행할 수 있는 ORM(Object-Relational Mapping) 도구이다. 주요 기능 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 지원한다. LINQ(Language Integrated Query)를 사용하여 데이터베이스 쿼리를 작성할 수 있다. 데이터베이스 스키마를 코드로 정의할 수 있는 Code First 접근 방식을 제공한다. 다양한 데이터베이스 시스템과 호환된다. EF Core의 장점 개발자가 데이터베이스와의 상호 작용을.. 2023. 11. 26.
Pinia 기본 사용 방법 (vuex의 새로운 이름) 목차 Vue 기본 구조 Pinia 기본 구조 State (Vue) State (Pinia) Getters (Vue) Getters (Pinia) Actions (Vue) Actions (Pinia) Vue 기본 구조 기본 구조 설명 - Composition API 방식( 다른 방식으로는 Option API 방식이있음 export default{} ) Current Count: {{ counter.count }} Pinia 기본 구조 기본 구조 설명 Option Store방식 기존 방식처럼 state, getters, actions를 직관적으로 표현한다. stores/todos-store.js import { defineStore } from 'pinia' export const useTodosStore .. 2023. 11. 20.
도메인 엔터티 패턴 도메인 엔터티 패턴 - 마이크로 서비스 도메인 모델 디자인 도메인 엔터티 패턴 엔터티는 도메인 개체를 대표하며, 주로 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.
반응형