본문 바로가기

전체 글139

[JPA] Data too long for column Data to long for column 원인: 입력되는 데이터가 컬럼의 length보다 커서 발생하는 오류 해결 방법: 컬럼의 length를 늘려주거나 입력되는 데이터의 길이를 줄여준다. 해결 방법 JPA를 통해 아래와 같은 엔티티로 데이터베이스에 테이블을 생성한다고 가정하자. @Entity public class Student { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) Long id; Long userId; Grade grade; String description; } 코드의 description 변수처럼 String 타입으로 설정하면 기본적으로 255바이트 varchar 타입 컬럼으로 생성된다. 하지만 기본으로 설정된 225바이트의 길이.. 2022. 7. 26.
[Git] Git config 설정 (user.name & user.email) Git config 설정 확인하기 $ git config --global --list $ git config --listuser name, email 설정 $ git config user.name "user 이름" $ git config user.email "user 이메일" $ git config --global user.name "user 이름" $ git config --global user.email "user 이메일"user.name과 user.email 삭제 $ git config --unset user.name $ git config --unset user.email $ git config --unset --global user.name $ git config --unset --global .. 2022. 6. 21.
[Cloud] Azure Kubernetes Service (AKS) AKS(Azure Kubernetes Service)란? Kubernetes는 컨테이너 기반 애플리케이션과 네트워크 및 스토리지 구성 요소를 관리하는 오픈소스 플랫폼이다. 관리 작업을 위한 API들을 통해 선언적 배포 방식을 제공하고 자동화를 용이하게 한다. 애플리케이션의 가용성을 오케스트레이션하고 마이크로 서비스 기반 애플리케이션을 구축하고 실행할 수 있다. AKS는 Azure에서 관리되는 Kubernetes 클러스터로 간단히 배포되며 상태 모니터링 및 유지 관리 같은 중요 작업을 처리해줌으로써 관리 복잡성 및 운영에 대한 부하를 줄여준다. 2022. 6. 21.
[Spring] Ambiguous handler methods mapped for HTTP path 오류 발생 원인 하나의 URL을 여러개의 컨트롤러(Controller)에서 매핑할 수 없다. 즉 중복되는 URL이 있어서 오류가 발생한다. 해결 방법 중복되는 URL 이 없도록 하나의 컨트롤러에서만 사용한다. @GetMapping 등 URL 설정 부분을 확인한다. 2022. 6. 21.
[Cloud] Azure Database 서비스 Azure Database Azure에서 데이터베이스를 관리해주는 PaaS 기본적으로 고가용성 지원 기존 데이터베이스 관리 툴을 이용하여 데이터베이스 관리 가능 Azure Database 서비스 AzureSQL Database Microsoft SQL Database 엔진을 사용하는 관리형 서비스 (DaaS - Database as a Service). 안정적인 최신 버전의 엔진을 사용할 수 있도록 관리 됨 Azure Database for MySQL 오픈소스인 MySQL 엔진을 사용하는 관리형 서비스 (DaaS). Azure에서 안정적인 최신 버전을 자동으로 업데이트하고 관리함. Azure Database for PostgreSQL 오픈소스인 PostgreSQL 엔진을 사용하는 관리형 서비스 (DaaS.. 2022. 6. 6.
[Spring] 스프링 빈(Bean) 빈(Bean) Spring IoC 컨테이너가 관리하는 자바 객체 new 연산자로 어떤 객체를 생성했을 때 그 객체는 빈이 아님 ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈 즉 Spring에서 빈은 ApplicationContext가 알고 있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고 있는 객체를 의미 어떻게 Spring IoC 컨테이너에 빈을 등록할까? 빈을 만드는 방법은 다양하지만 기본적으로 2가지 방법이 있음 Component Scanning 빈 설정 파일에 직접 빈을 등록 Component Scan @ComponentScan 애노테이션과 @Component 애노테이션을 사용해서 빈을 등록핟록 하는 방법 @ComponentScan 애노.. 2022. 5. 31.
[세미나] 2022.05.30 우아한 테크 세미나 2020년 5월 우아한 테크 세미나 후기 우아한 형제들 개발자가 푸는, 공부하고 성장하는 노하우?! 우아한 멘토링 후기 https://techblog.woowahan.com/8196/ 워킹 타임에 성장하는 방법 https://puffy-stick-fa1.notion.site/6fa4d77dba6a4946acbaf97a0cf2c303 우아한 형제들이 추천해주는 공부법 기술 블로그 내가 공부한 것을 정리할 수 있음 사수가 없는 환경에서 기술 블로그에 글을 써놓으면 다른 사람들에게 피드백을 받을 수 있는 환경이 됨 토이 프로젝트 회사 일로 토이 프로젝트를 만들자. 내가 공부하고 싶은 기술을 백오피스로 개발해보자. 카카오톡 오픈채팅 등에서 같이 스터디할 인원을 모집할 수도 있음. 토이 프로젝트를 어디서 찾을지 .. 2022. 5. 30.
[Book] 객체지향의 사실과 오해 - 1장. 협력하는 객체들의 공동체 1장. 협력하는 객체들의 공동체 객체지향 객체지향 프로그래밍이란 현실 속에 존재하는 사물을 최대한 유사하게 모방해 소프트웨어 내부로 옮겨오는 작업 그 결과물인 객체지향 소프트웨어는 실세계의 투영이며, 객체란 현실 세계에 존재하는 사물에 대한 추상화 아쉽게도 실세계의 모방이라는 개념은 유연하고 실용적인 관점에서 객체지향 분석, 설계를 설명하기에는 적합하지 않음 객체지향의 목표는 실세계를 모방하는 것이 아니라 오히려 새로운 세계를 창조하는 것 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것 커피 공화국의 아침 커피를 주문하고 제조하는 과정은 역할, 책임, 협력이라는 세 가지 개념이 한데 어울려 조화를 이루며 만들어 낸 .. 2022. 5. 24.
[Cloud] Azure Network 서비스 Azure Network Azure에 사설 네트워크를 만들고 조작할 수 있는 서비스 SDN 기반으로 동작하며 모든 네트워크는 격리됨 Azure 가상 머신 등 가상 네트워크가 필요한 모든 리소스 구성 가능 On-premise와 연결하기 위한 기능 구현 부하 분산 장치를 이용하여 여러 대의 서버로 부하 분산 Azure Network 서비스 Azure Virtual Network: 논리적인 사설 네트워크를 구성할 수 있어 가상 머신과 같은 리소스간 보안 통신을 제공 Azure Load Balancer: 여러 대의 서버에 트래픽을 분산시켜 응용프로그램 또는 리소스에 대한 고가용성 액세스 제공 VPN Gateway: On-premise 또는 다른 데이터센터로 네트워크를 확장할 수 있는 관리형 서비스로 고가용성을 .. 2022. 5. 19.
[Cloud] Azure Storage 서비스 Storage Account Azure에서 데이터를 저장하고 관리할 수 있는 서비스 Blob (container), File, Queue, Table로 이루어져 있음 Blob의 경우 비정형 데이터를 저장할 수 있는 Object Storage Files의 경우 SMB 3.0을 이용하여 가상머신에 Mount 가능 Blob에는 가상 머신의 Disk 파일도 저장 가능 (Unmanaged Disk) 생성된 스토리지 계정은 다음과 같은 도메인 이름을 가짐 데이터 범주 Azure Storage 서비스 Blob: 비정형 데이터를 저장하는 스토리지. REST 액세스 지원 Files: SMB 및 REST 액세스 지원. 가상 머신에 원격 스토리지로 mount 가능 Queue: 메시지를 저장하고 검색할 수 있음. 메시지는 비.. 2022. 5. 18.
[Cloud] 클라우드 모델 이해 클라우드 모델 공용 클라우드 (Public Cloud) 가장 많이 사용하는 클라우드 서비스 클라우드 서비스 제공자 또는 호스팅 제공 업체가 소유 특정되지 않은 사용자에게 리소스와 서비스를 제공 보안된 네트워크 연결을 통해 액세스 (일반적으로 인터넷을 사용) 사설 클라우드 (Private Cloud) 클라우드 리소스를 조직에서 소유하고 관리/운영 담당 조직은 데이터센터에 클라우드 환경을 만듬 특정 사용자에게만 리소스와 서비스를 제공 제공되는 서비스의 운영을 책임지는 조직이 있음 보안된 네트워크를 통해 액세스 (일반적으로 사내망 사용) 하이브리드 클라우드 (Hybrid Cloud) 공용 클라우드와 사설 클라우드를 결합 사내 데이터센터를 공용 클라우드로 확장하는 개념 사설 클라우드의 단점을 공용 클라우드로 보.. 2022. 5. 15.
[Cloud] IaaS, PaaS, SaaS 이해하기 클라우드 서비스의 종류 IaaS, PaaS, SaaS 비교 Infrastructure-as-a-Service (IaaS) 가장 기본적인 클라우드 컴퓨팅 서비스 네트워크, 저장소, 서버를 클라우드 제공자가 관리 물리보안에 대한 모든 책임은 클라우드 제공자에게 있음 셀프 서비스 포털을 통해 프로비저닝과 관리할 수 있는 컴퓨터 인프라 제공 운영체제(OS)부터 사용자가 관리 Platform-as-a-Service (PaaS) 클라우드 제공자가 플랫폼을 제공 소프트웨어 응용프로그램을 구축, 테스트, 배포하기 위한 환경을 제공 사용자는 운영 체제, 플랫폼 관리 및 업데이트를 신경 쓰지 않고 제품에 좀 더 집중할 수 있음 운영 체제에 접근할 수 없고 클라우드 제공자가 제공한 플랫폼에서만 서비스를 운영할 수 있는 제약.. 2022. 3. 12.
[Cloud] 클라우드 이점 및 고려사항 왜 클라우드 서비스인가? 클라우드 벤더 AWS Microsoft Azure Google Cloud Platform (GCP) Cloud Computing 가상화 시장이 발전하면서 서버를 생성/삭제하는 것이 빨라짐 서버 구매 대비 시간과 비용이 절약 사용자가 요청하면 응답 컴퓨팅, 네트워크, 저장소 서비스 등 사용량 측정 가능 이점 고 가용성 재해 복구 확장성 유연한 예산 운용 민첩성 탄력성 글로벌 분산 보안성 대량의 가용성 결함에 따른 복구성 규모의 경제 IT 인프라 운영 시 작은 규모로 운영하는 것보다 더 큰 규모로 운영할 때 더 저렴하고 효율적으로 운영 가능 (ex. 서버 소량 vs 대량 구매) Microsoft, Amazon, Google 과 같은 클라우드 제공업체는 매우 큰 기업이므로 규모의 경제.. 2022. 3. 11.
[Docker] docker 사용법 (EC2 ubuntu) ec2 설정 방법 (ubuntu 기준) 환경: EC2 Ubuntu ec2는 VM 종류 중 하나이며, VM에서도 도커를 사용할 수 있는 것이지, 도커를 VM 위에서 돌리는 것이 필수적인 것은 아니다. 인스턴스를 처음 생성하여 접속하면 텅 빈 공간이 생긴다. 이곳에 하나하나씩 설치해야 한다. # 깃 설치 $ apt-get update $ sudo apt-get install git $ git --version # jdk 11 설치 $ sudo apt update $ sudo apt install openjdk-11-jdk $ javac -version javac 11.0.11 $ java -version openjdk version "11.0.11" 2021-04-20 $ docker version $ su.. 2022. 3. 5.
[Cloud] Azure Compute 서비스 Azure Compute Azure에서 Compute 작업을 하는 서비스 Web Server를 운영하거나 Application Server를 운영 시 사용 기본적으로 Virtual Machine이 있음 사용자가 직접 프로세스에 관여 Azure Virtual Machine: IaaS의 대표적인 서비스로 워크로드를 수행하기에 가장 유연한 서비스이다. 운영체제를 관리해야 하며 사용자가 직접 운영한다. VM Scale Sets: Azure VM Image를 이용하여 자동으로 확장 또는 축소할 수 있다. App SErvices: 사용자는 소스 파일만 업로드하면 알아서 동작하는 PaaS이다. Web App, API App, Mobile App, Logic App, Functions와 같은 서비스들이 있다. Func.. 2022. 2. 12.
[Cloud] Azure 아키텍처 구성 요소 지역 (Region) 지역(Region)은 데이터센터 모음을 나타냄 사용자와 가장 가까운 지역에 리소스를 배포 가능 전세계 55개 지역 140개국 리소스 배치 시 지역 가용성에 유의 지역 독립적인 글로벌 서비스 존재 BCDR (Business continuity and disaster recovery) Azure 지역은 항상 쌍을 이루는 다른 지역이 있음 데이터센터 간 300마일 이상의 분리를 선호 일부 서비스의 경우 지역 쌍에 자동 복제를 제공 (Storage Account 등) Geography 데이터 상주 및 규정 준수 경계를 유지하는 개별 시장 일반적으로 둘 이상의 영역이 포함됨 특정 지역 및 규정 준수 요구 사항이 있는 고객은 데이터와 응용 프로그램을 가까이에 두어야 함 아메리카, 유럽, 아시아.. 2022. 1. 29.
[OS] vi 단축키 정리 삽입 키 기능 i 커서 위치에 insert I 줄 맨 앞에서 insert a 커서 다음에 insert A 줄 맨 뒤에서 insert o 커서 아래로 한 줄 띄우고 insert O 커서 위로 한 줄 띄우고 insert 편집 키 기능 dd 현재 줄 잘라내기 yy 현재 줄 복사하기 p 붙여넣기 u 실행취소 (Undo) ctrl + r 재실행 (Redo) v Visual 모드 y 복사 c 잘라내기 이동 키 기능 w 단어 첫 글자 기준으로 다음으로 이동 W 공백 기준으로 다음 (단어의 시작)으로 이동 b 단어 첫 글자 기준으로 이전으로 이동 B 공백 기준으로 이전으로 이동 e 단어 마지막 글자 기준으로 다음으로 이동 E 공백 기준으로 다음(단어의 끝)으로 이동 gg 문서 맨 앞으로 이동 G 문서 맨 아래로 이동 .. 2021. 12. 10.
[HTTP] HTTP 응답 상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 응답 상태 코드 응답 상태 의미 예 1xx Infomational 요청이 수신되어 처리 중 (거의 사용하지 않음) 2xx Successful 요청 정상 처리 200 Ok 201 Created 요청이 성공해서 새로운 리소스가 생성됨 생성된 리소스는 응답의 Location 헤더로 식별 202 Accepted 요청이 접수되었으나 처리가 완료되지 않았음 배치 처리 같은곳에서 사용 (요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리함) 204 No Content 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없는 경우 예> 웹 문서 편집기에서 save 버튼 save 버튼의 결과로 아무 내용이 없어도 된다. 3xx Redi.. 2021. 12. 8.
[Git] 커밋 메시지 컨벤션 (Udacity Git Commit Message Style Guide) Git 커밋 메시지 컨벤션 커밋 메시지를 잘 작성하는 것은 협업하는데 있어 중요하다. 유다시티에서는 Git Commit Message Style Guide를 제공하고 있다. 먼저 커밋 메시지는 제목(subject), 본문(body), 꼬리말(footer) 3가지 파트로 나누고, 각 파트는 빈 줄을 두어 구분한다. type: Subject (제목) body (본문) footer (꼬리말) type: 어떤 의도로 커밋했는지를 type에 명시. Udacity에서는 타입을 다음 7개 중 하나로 쓸 것을 권장 feat: 새로운 기능을 추가할 경우 사용한다. fix: 버그와 같은 것을 수정했을 때 사용한다. docs: 문서와 관련하여 수정한 부분이 있을 때 사용한다. style: 코드의 변화와 관련없는 코드 포맷 .. 2021. 10. 23.
[JPA] 영속성 컨텍스트란 JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping) 영속성 컨텍스트 엔티티 매니저 팩토리와 엔티티 매니저 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 "엔티티를 영구 저장하는 환경"이라는 뜻 EntityManager.persist(entity); // 엔티티를 DB가 아니라 영속성 컨텍스트에 저장 엔티티 매니저? 영속성 컨텍스트? 영속성 컨텍스트는 논리적인 개념 눈에 보이지 않는다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 엔티티의 생명주기 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 (managed) 영속성 컨텍스트에 관리되는 상태 준영속 (detached) 영속성 컨텍스트에 저장.. 2021. 10. 22.
[Cloud] AWS MQ 서비스란 오늘날의 기업 메시징 서비스 오늘날의 기업 메시징 서비스의 어려움 운영 오버헤드 이중화 및 안정성 고려 용량 및 사이즈 산정 비용 AWS 대표 메시징 서비스 Amazon SQS Amazon SNS Amazon Kinesis AWS IoT Amazon Pinpoint Amazon MQ 관리형 Apache ActiveMQ AWS에서 메시지 브로커를 손쉽게 생성 및 운영 AMQP를 통한 마이크로 서비스 애플리케이션 비동기화 이벤트 기반 손쉽게 변경 확장성 탄력성 Apache ActiveMQ란 가장 널리 알려진 Java 기반 오픈소스 메시지 브로커 JMS, J2EE 완벽 지원 다양한 교차 언어 클라이언트, 프로토콜 지원 일시적 & 지속적 메시징 큐 & 토픽 지원 (FIFO 지원) 합성 & 가상 목적지 메시지 필.. 2021. 9. 27.
[Spring] 스프링 주요 어노테이션 정리 @RestController 컨트롤러를 JSON을 반환하는 컨트롤러로 만들어줍니다.' @GetMapping HTTP Method인 Get의 요청을 받을 수 있는 API를 만들어 줍니다. 예전에는 @RequestMapping(method = RequestMethod.GET)으로 사용되었습니다. @RunWith(SpringRunner.class) 테스트를 진행할 때 JUnit에 내장된 실행자 외에 다른 실행자를 실행시킵니다. 여기서는 SpringRunner라는 스프링 실행자를 사용합니다. 즉 스프링부트 테스트와 JUnit 사이에 연결자 역할을 합니다. @WebMvcTest 여러 스프링 테스트 어노테이션 중, Web(Spring MVC)에 집중할 수 있는 어노테이션 입니다. @Autowired 스프링이.. 2021. 9. 13.
[Java] 리팩토링 할 때 고려할 사항들 리팩토링이란? 리팩토링이란 유지보수 생산성 향상을 위해 기능을 변경하지 않고 소스코드를 수정, 보완하는 소프틍웨어 품질 향상 기법이다. 리팩토링의 목적 리팩토링의 목적은 유지보수성 향상, 유연한 시스템, 생산성 향상, 소프트웨어 품질 향상 등이 있다. 리팩토링할 때 고려할 사항들 메소드가 너무 길지 않은가? 코드를 읽기 쉬운가? 내가 작성한 코드를 내가 읽기 어렵다면 남들에겐 훨씬 어렵다. 코드가 적절한 위치에 있는가? 객체들 사이의 의존 관계 책임이 너무 많지는 않은지? 2021. 5. 30.
비전공자를 위한 IT 용어 정리 - 프로그램과 프로그래밍이란 안녕하세요. 현대 사회에서 컴퓨터가 점점 많이 쓰이게 되면서 컴퓨터 공학을 전공하지 않았더라도, 컴퓨터에 대해 간단한 개념 정도는 알아야하거나 아니면 같은 회사에서도 컴퓨터 프로그래머(개발자)들과 협업을 해야하는 경우가 점점 늘어나고 있습니다. 그래서 '비전공자를 위한 IT 용어 정리 시리즈'를 차례로 연재해보려고 합니다. 첫번째로 알아 볼 용어는 '프로그램'과 '프로그래밍' 입니다. [그림 출처 : dojang.io/mod/page/view.php?id=1489] 프로그램, 그 중에서도 컴퓨터 프로그램이란 우리가 컴퓨터를 할 때 많이 하는 '게임'이나 문서 작업을 할 때 사용하는 '워드' 또는 '엑셀' 등 우리가 컴퓨터로 다양한 작업을 할 수 있게 해주는 도구 입니다. 사전적 정의로는 '컴퓨터에서 실행.. 2020. 12. 27.
[Coursera] Stanford Machine Learning 01. Introduction Machine Learning Grew out of work in AI New capability form computers Examples Database mining Large datasets from growth of automation/web. E.g., Web click data, medical records, biology, engineering Applications can't program by hand. E.g., Autonomous helicopter, handwriting recognition, most of Natural Language Processing(NLP), Computer Vision. Self-cusomizing programs E... 2020. 8. 22.
[Git] Git 계정 설정 Git 계정 설정 git config --global user.name "username" git config --global user.email "useremail" 저장소별 계정 설정 원하는 저장소로 이동한 후 git config --local user.name "username" git config --local user.email "useremail" 2020. 4. 20.
[Design pattern] 행위 패턴 행위 패턴 Chain-of-responsibility pattern Command pattern Interpreter pattern Iterator pattern Observe pattern Mediator pattern Memento pattern State pattern Strategy pattern Template method pattern Null object pattern Visitor pattern Chain-of-responsibility pattern 요청을 처리할 수 있는 기회를 하나 이상의 객체에게 부여함으로써 요청하는 객체와 처리하는 객체 사이의 결합도를 없애는 패턴 요청을 해결하는 객체를 만날 때까지 객체 고리를 따라서 요청을 전달한다. 요청을 보낸 쪽하고 받는 쪽을 분리한다. 사슬.. 2019. 6. 14.
[Design pattern] 구조 패턴 구조 패턴 Adapter pattern Proxy pattern Decorator pattern Bridge pattern Composite pattern Facade pattern Flyweight pattern Adapter pattern 클래스의 인터페이스를 클라이언트가 원하는대로 변경한다. Adapter는 호환 불가능한 인터페이스 떄문에 협력할 수 없는 클래스들을 협력할 수 있게 한다. 래퍼(Wrapper)로도 불린다. 레거시 시스템을 원하는 인터페이스로 사용 가능케 한다. 어뎁터 패턴 동기 통신 시스템 보안 A 프로토콜 라이브러리 새로운 시스템의 B 프로토콜 구축에 A 라이브러리를 이용 Proxy pattern 특정 객체에 접근을 조절하기 위하여 대리자(프록시)를 둔다. 필요할 때만 비싼 대가의.. 2019. 6. 13.
[Design Pattern] Builder 패턴/Prototype 패턴/Object pool 패턴 Builder pattern 생성 인자가 많은 경우 객체 생성 로직을 클래스 밖으로 옮길 필요 서로 연관된 복잡한 생성자를 가지고 있을 때 생성자의 복잡성 비즈니스 룰의 복잡성 한번에 모든 생성 데이터가 없을 때 단계적 생성 package creation.builder; public class NutritionFacts { // TODO private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; public static class Builder { private final int servingSize; private fin.. 2019. 6. 13.
[Design Pattern] Singleton 패턴 / Factory 패턴 디자인 패턴이란? 일반적인 설계 문제를 해결하기 위하여 짜여진 상호 협력하는 객체들과 클래스들에 대한 기술 (GoF) 자주 발생하는 설계상의 문제를 해결하기 위한 반복적인 해법 (Smalltalk Companion) 반복되는 구조를 설계할 때 설계를 재활용하는데 초점을 두는데 비하여 프레임워크는 세부 설계와 구현에 초점을 두고 있다. (Coplien & Schmidt) 생성 패턴 Singleton pattern Factory pattern Simple factory pattern Factory method pattern Abstract factory pattern Builder pattern Prototype pattern Object pool pattern Singleton pattern 매우 간단하고.. 2019. 6. 13.