커스텀 기능이 있는 경우 프론트에서 위치가 고정된 이미지를 받아서 쓴다면 이미지의 조합 없이도 가능하지만, 저장 기능이 들어간다면 이미지를 합치는 부분이 분명히 필요할거고, 그 기능은 모든 이미지를 저장해둬야 하는 방향으로 흘러가는 안좋은 결과가 되어버린다. 크로스 브
https://velog.io/@dev_leewoooo/Node-Project-CI-%ED%95%98%EA%B8%B0-with-Github-ActionCI 적용하기
하나의 테스트를 만드는데 필요한 작업이 어느정도인지, 얼마나 걸리는지, 어떻게 해야 되는지, 같은 부분을 미리 생각하고 전체적인 틀을 만들고 시작했을 경우 훨씬 개선 작업을 진행할 수 있다.어제의 복기백엔드 작업 1시간 반,시작페이지 30분, 브릿지 페이지 30분, 질
시험 끝한 일 todolist훨씬 깔끔하게 Single responsibility 만 지키자Box 같은 core component 에서는 같은 형식으로 타입 스크립트를 활용해 나만의 정의를 확실하게 내려두면 훨씬 깔끔한 코드가 나타날 수 있다.Dispatch setSt
MSA시스템이 낙후되었다?개발자 관점에서 나쁜 시스템이 나쁜 개발 문화를 만들게 된다MSA를 만드는 기준은 개발 문화가 좋은 것인가? 라는 부분을 고려해야 한다과감하게 리팩토링 하면 전사 장애가 난다는 확실한 부분이 있다면 분명히 이것을 처리해야 한다.안 쓰이는 코드를
msa를 호출 할 때 msi서버끼리 p2p를 처리하려면 eureka 서버나 ribbon 사용 spring cloud feign 을 처리 eureka나 ribbon은 그냥 url만 지우면 된다더라... eureka가 내부적인 동작 원리가 가장 복잡함 총 4단계로 돌아가
서버사이드 모놀리식 mvc 장고 템플릿리액트 도입, 마이크로 프론트엔드 아키텍처 도입 이유, 후기,빌드시간 단축 방법toss internal 사내 업무용 포탈 직접 개발, 부분적으로 react 적용. cra로 프론트엔드 빠르게 셋업. => 절대 하지 말자. 장고와 함께
yarn add -D @yarnpkg/pnpifyyarn add @yarnpkg/sdks -Dyarn dlx @yarnpkg/sdks vscode
비개발자에게 devops가 무엇인지 설명하게 된다면 어떻게 설명할 수 있을까요? 더 빠른 배포를 관리한다? CI, CD, micro service, code형 인프라, 모니터링, 커뮤니케이션 같은 부분을 총괄한다 데브옵스라는 개념 이전의 소프트웨어 개발은 어땠을까요?
axios 타입 분석export default같은 부분이 보이면 commonjs, module둘다 지원하기 위한 부분이구나ts-node는 typescript파일을 js로 바꾸고 실행을 알아서 해주기에 편하게 할 수 있다.
scripts심볼릭 링크링크 파일을 이용해 원래 파일을 직접 사용하는 것과 같은 효과를 낸다pnpmhttps://pnpm.io/ko/한글 docs가 되었구나....huskybuild tokenturbopnpx serve storybook-staticpnpm -
module.exports = { preset: "ts-jest", testEnvironment: "node", transform: { "^.+\\.ts?$": "ts-jest", }, transformIgnorePatterns: "/node_module
수식 최대화https://school.programmers.co.kr/learn/courses/30/lessons/67257?language=javascript
도커의 기본 네트워크 모드는 Bridge모드로 약간의 성능 손실이 있습니다. 네트워크 성능이 중요한 프로그램의 경우 --net=host 옵션을 고려해야 합니다.이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않습니다(
int number1 = 1;number1 is String; //falsenumber1 is int; //truenumber1 is! int; 로 계산함indexOf, add remove length 같은 것들을 List가 다 지원함Map Map<String,
dependencies가 폴더 안에 없다는게 조금 특이하다. 그냥 user folder같은 공용 폴더에 다 담아두게 된다.runApp부분이 이제 MyApp이라고 하는 class를 시작시킨다. home: 부분이
External LIbrary 를 통해서 다양한 의존관계를 해결해줌. pnpm 같은 느낌으로 패키지 매니징 그 자체를 intellij가 해준다는 점왼쪽 밑에 설정을 열어서 보는 것이 좋음gradle을 통해서 보면, 다양한 내용이 나옴Dependencies 를 보면, n
1장 enum은 클래스의 일종이고, annotation은 인터페이스의 일종이다 인터페이스, 클래스, 배열은 참조 타입. 기본값은 기본값 클래스의 멤버 메서드, 필드, 멤버 클래스, 멤버 인스턴스 메서드 시그니처= 이름+ 인자 타입. 반환값은 의미 없음 이 책 상속=
ch1 책임의 이동. 그냥 가장 편하게 절차 지향적으로 짰을 때 생기는 문제는 모든 책임이 다 하나의 main함수에 집중된다는 점입니다. 이때 객체지향을 제대로 적용한다면, 제대로 라는게 clean architecture 기준으로 domain 레이어가 무거워지는, R
객체는, 다른 객체의 인터페이스에 공개된 행동을 수행하도록 하는 요청을 하고, 요청을 받은 객체는 응답한다.객체와 다른 객체와 상호작용하는 방법은 메시지를 전송하는 것이고, 다른 객체는 이를 수신하고, 자신만의 방법인 method 를 통해서 반환한다.메서드와 메시지를
객체 지향에 대한 캡슐화, 상속, 추상화, 다형성, 런타임에 의존한다, 합성을 통해 결합... 같은 부분은 너무 유명해서 객체지향의 본질을 해치는 경우가 많다.역할+책임+협력 을 이해해야 한다시작 과정에서는 역할, 책임, 협력을 고려하고 설계 해야지, 클래스같은 것들을
설계<=> 품질 트레이드오프역할, 책임, 협력중 가장 중요한 것은 책임이다.객체 지향 설계란, 올바른 객체에게 올바른 책임르 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동이다1\. 책임이 핵심2\. 책임을 할당하는 작업이 결합도, 응집도 같은
GRASP 패턴. 책임 할당의 어려움을 도와줌응집도, 결합도, 캡슐화 같은 다양한 기준으로 책임을 할당하고, 결과를 트레이드오프할 기준을 알 수 있다.행동을 먼저 해라협력이라는 문제의 책임을 결정해라협력을 시작하는 주체는 메시지 전송자. 따라서 적합한 책임이란 전송자에
여러 서버에 해당하는, 혹은 여러 애플리케이션에 해당하는 모든 코드베이스를 한 곳에 모은 것 커졌을 때 생기는 CI의 문제점이 test가 너무 오래걸린다든가 할 수 있다. 중복 패키지 제거, 스크립트 설치 같은 것들이 가능하기에 훨씬훨씬 좋음 buck, rush,
훌륭한 객체지향 코드를 위해서는 협력 안에서 객체가 수행하는 책임에 초점ㅇ르 맞춰야 하고, 책임이 객체가 수신할 수 있는 메시지의 기반이 된다는 것클래스가 아니라 객체가 서로 주고받는 메시지를 메인으로 생각하고, 상호작용을 생각해야 좋다객체는 수신하는 메세지들이 객체의
잘 설계된 객체지향 애플리케이션은 작고 응집도 높은 객체들로 구성된다.초점이 명확하고, 한 가지의 일만 하는 객체과도한 협력은 설계를 곤경에 빠뜨릴 수 있음협력은 다른 객체가 존재한다는 것을 알고 있어야 함. 메시지도 알고 있어야 함.변경과 의존성의존성실행 시점 : 의
유연한 설계 개방 폐쇄 원칙 Open Close Princle(OCP) 소프트웨어 개체는 확장에 열려있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 확장에 대해 열려있다 : 기능 추가가 자유로워야 함 수정에 닫혀 있다 : 기존 '코드' 를 수정하지 않고도 애플리케이션
상속 합성중복을 줄여라 dry상속은 자식 클래스의 메서드 안에서 super를 통해 호출 안 하도록 만든다.부모클래스의 변경에 의해 자식 클래스가 변경을 받는 것이 크다. 상속은 강한 결합도가 높아진다.부모 클래스의 메서드가 자식 크랠스의 내부 구조에 대한 규칙을 깨뜨릴
is-a has-a 관계가 있는 것 상속은 is-a, 합성은 has-a 상속은 간단할 수는 있지만, 우아한 방법은 아님 재사용을 위해서는 객체 합성이 상속보다 좋은 방법이다 퍼블릭 인터페이스만 의존하기에 상속의 문제점 불필요한 인터페이스 상속 메서드 오버라이딩 오작
상속의 목적은 재사용이 아님. 타입 계층을 구조화 하기 위해 사용해야 한다.인스턴스를 한 그룹으로 묶기 위함이 상속이다.다형성많은 형태를 가질 수 있는 능력유니버설 다형성매개변수 : 제네릭 프로그래밍포함 : 수신한 객체의 타입에 따라서 실제 수행되는 행동이 달라지는 능
상속 1\. 타입계층일반화 특수화2\. 코드 재사용객체 관점의 타입우리가 인지하는 사물의 종류. 그 대상을 인스턴스 즉 객체프로토타입 관점의 타입유효한 오퍼레이션의 집합. 미리 약속된 문맥을 제공함(환경마다 다른 결과)객체지향 패러다임 관점의 타입공통의 특징을 공유하는
웹 - 도메인 - 영속성(persistency 데이터베이스) 전통적인 3계층 아키텍처 계층형 아키텍처의 토대는 db db 종석적인 문제가 있음 상태가 아니라 행동에 따른 아키텍처가 우선되어야 함 계층형의 의존성의 방향에 따르면 당연하지만, 비즈니스 관점에서는 좋지 않
https://www.slideshare.net/rudaks94/202204pdf-251744601 를 통해 정리한 글입니다 검색 엔진 : 웹에서 정보를 수집해 검색 결과를 제공하는 프로그램 검색 시스템 : 검색 엔진을 기반으로 구축된 시스템을 통칭하는 용어 검
수집 : 비츠, 로그스태시 데이터 저장&검색 : 엘라스틱 서치 시각화 : 키바나 엘라스틱 서치는 nosql의 일부 정렬 방식을 마으맫로 선택 가능한 것이 장점 병렬 처리가 가능함 restapi가 되버림 리소스가 많이 먹음 querydsl 이 join이 힘듦 반정규화
캐릭터 필터 : 문자열 변경토크나이저 : 문자열을 토큰으로 분리한다. 순서, 시작, 끝위치토큰 필터 : 분리된 토큰의 필터 작업 한다 대소문자, 형태소 분석...역 인덱싱단어가 몇 페이지에 있는지를 색인(역 인덱싱)분석기는 analyze라는 rest api가 있음자주
비츠 파일비트 go랭, 가벼움. 간단한 필터 가능 작동 순서 input : 하베스터에 대한 입력 소스를 정한다 파일비트는 하나 또는 여러개 입력 가능 harvester : 파일을 직접 수지ㅏㅂ하는 주체. 파일은 하나의 하베스터. 1줄씩 읽고, 내보내는 역할. 파일을
클러스터는 여러 노드. 노드ㅡㄷㄹ은 통신하면서 클러스터를 구성 2가지 통신 모율 transport 모듈, http 모듈 전송 : 내보 모듈간 통신 노드간 데이터 분사 처리에 적합 9300~9399 http : 외부 클라이언트 앱과 통신시 사용.. 9200~9299 노
직접 sql을 다루는 경우 entity를 신뢰할 수 없다sql 이 변경되어도, 바로 반영되지 않고, 엔티티만 변경해도 sql이 변경되지 않으면 null로 남을 뿐이다jpa 에서 객체를 찾고, 객체내 값을 변경만 하면, 트랜잭션을 커밋할 때 적절한 updatesql 이
오늘 목표 JPA 프로그래밍 책 다 읽기 프로그라피 코드 수정 개인 계정에서 오픈 서치 연동해보기
PS ArrayDeque Deque 로 관리됨 이거는 collection을 확장함 addLast addFirst poll 첫번째 remove removeLast도 있음 BufferedReader br=new BufferedReader(new InputStream(Sy
PS ArrayDeque Deque 로 관리됨 이거는 collection을 확장함 addLast addFirst poll 첫번째 remove removeLast도 있음 BufferedReader br=new BufferedReader(new InputStream(Sy
PS ArrayDeque Deque 로 관리됨 이거는 collection을 확장함 addLast addFirst poll 첫번째 remove removeLast도 있음 BufferedReader br=new BufferedReader(new InputStream(Sy
이 부분이 가장 기억에 남는 오늘 ps 문제entry로 저렇게 꺼내올 수 있다
OpenSearch 생성시 생기는 에러 해결https://velog.io/@grolar812/AWS-OpenSearch-CreateDomain-errorCreateDomain 에러고급 설정에서 최대 절수 수정하기기본 설정이 1024인데, 기본 설정이 작동하지
CI/CD 플랫폼 명시머지 커밋 생성시 버전 명세blue-green 배포시 무거운 api 가 작동중에 종료될 수 있음nginx 프론트, 백엔드를 나누는 것이 좋아보임동시 배포시 두 nginx 가 파일을 건드릴 수 있기에 충돌 가능
https://loosie.tistory.com/349백준 2504 문제꼭 안쪽에서 처리할 필요 없이 바깥에서 분배법칙처럼 접근할 수도 있었음객체의 동작을 변경하기 시작하는 방식으로 가장 빨리 생각하는 것은 상속임단 상속은 런타임에 방식을 변경할 수 없음하나의
이 쪽이 무조건 낫다같은 식으로 작성시 꼬일 가능성이 너무너무 커짐왜 터진지 디버깅도 불가능했음
Spring 구성 요소Core : DI나, 언어별 지원, Validation, AOP 같은 것들을 지원해줌Data access : JTA, JPA, JDBCWeb : MVC(Serverlet), Reactive API(Webflux, 이것도 non blocking),
https://tourspace.tistory.com/42https://www.javatpoint.com/memory-management-in-javaarraydeque vs arraylist성능은 확장시 사이즈가 100%, 50% 씩 늘어나서 그 만
gradle tasks로 실행 가능 작업 가능classes 파일, reports파일, libs 파일이렇게가 생성될 수 있음종속성 추가 가능이런 느낌으로 작성 가능implementation : 컴파일 하는 것에 필요. 런타임에 코드 실행시 컨테이너에서 제공한다tsetIm
gradle 의 핵심은 종속성 기반 프로그래밍 순서에 맞게 딱 한 번만 실행되도록 보장 Directed Asyclic Graph 를 만들어줌. gradle 은 task 실행 전 완벽한 종속성 그래프를 만들어 냄 build 초기화 먼저 어떤 프로젝트가 이 빌드에서 필
어그리게이트 루트 실제 사용 사례질문 + 세부 옵션이 있는 경우 퍼블릭하게 열어줬던 부분은 질문만 있던 부분DIP 모킹하는 사례우테코 코드 랜덤값 모킹하는 것상위 레이어에 인터페이스를 두는 이유는 뭘까?의존성의 방향이 물론 중요하다지만, 그렇게 중요한가=> 멀티 모듈시
도메인에 들어가야될 내용배민 모듈 시스템을 따르면, 도메인에 생기는 모든 인스턴스 변수들은 다 저장이 되어버림. 따라서 변수 선언시에, db에 저장할만한 변수인가를 고민하는 것이 좋음진짜 핵심만을 저장하도록 설정하는 것이 좋음값 객체, entity 의 경계가 애매해 지
expose는 유틸리티 기능id가 필요한 경우 한 글자만으로도 작동 가능
docker host internal
docker exec -it name 커맨드이런거 하면 npm 없이 명령 실행 가능
minikube start --driver=docker
Setting Editor General Remove traling blank lines at the end of saved filesEnsure every saved file ends with a line break
throwable 자기 자신 이유라면 unset 왜 serializable 을 구현했는지 null 메시지 허용 nonexistent or unknown 일때만 enable suppression writable StackTrace If suppression is
getClass 객체에.class 클래스에Class.forName 정적 메서드 뭐든 찾을 수 있지만, 런타임 에러