반응형

분류 전체보기 469

[수학] 최대공약수를 구할 수 있는 유클리드 호제법 증명하기

최대공약수를 구하는 유클리드 호제법 증명하기.유클리드 호제법으로 최대 공약수를 쉽게 구할 수 있다.예를 들어, (16, 12) 란 값이 있을 때 이 두 수의 최대공약수를 구하려면(A, B) (B. (A%B)) .. .. .. (R, 0) 이 된다. 그러면 여기서의 R 이 최대공약수가 된다. 이해를 못 하시겠다구요? 그러면 숫자를 사용해봅시담(16, 12) (12, 4) (4, 0) 즉 (16, 12) 의 최대공약수는 4가 됩니다. 정말 쉽죠?그래서 직접 코드 유클리드 호제법을 사용하면 O(log N) 이 나올 것이다.이제 유클리드 호제법을 한 번 증명해보자. 증명은 고등학교 이후로 처음하는 것 같다.자연수 A, B 가 있다. A % B = q A / B = r 라고 하자. G(A, B) 가 있을 때 G ..

etc/수학 2018.10.18

[Infra] 주키퍼를 설치해봅시다.

주키퍼를 설치해봅시다. 큰 목차는 다음과 같습니다.주키퍼 설치주키퍼 설정주키퍼 start셋팅 됐는지 확인 stable 버전은 3.4.13 인 것 같습니다. 해당 릴리즈 노트를 확인해보면 수정된 사항이 굉장히 많습니다. https://zookeeper.apache.org/doc/r3.4.13/releasenotes.html 3.4.13 버전의 주키퍼 다운로드 링크는 다음과 같습니다. http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz 그리고 이제 서버에 접속하도록 하겠습니다.저는 "AAA", "BBB", "CCC" 에서 작업을 하였습니다. dev 에선 서버 1개만 만들었고, stg 와 prd 에서는 각각..

개발/Infra 2018.10.11

[Spring] Spring boot multi source transaction

Spring Boot JPA MultiSource TransactionSpring boot : 2.0.5 버전을 사용 중이다.Spring boot 에서 JPA 를 사용할 때 2개 이상의 DB 를 사용할 때가 있다. 그럴 때 이제 트랜잭션 문제가 생길 수 있는데, Spring boot 에서 제공하는 @Transaction 어노테이션에 대한 주석을 살펴보면 다음과 같이 주석이 달려있다./** * A qualifier value for the specified transaction. * May be used to determine the target transaction manager, * matching the qualifier value (or the bean name) of a specific * {@l..

개발/Spring 2018.10.06

[Infra] Zookeeper

Zookeeper이번에 회사 CTO 님이 주키퍼를 회사 서버에 한 번 설치해보라고 하셔서 주키퍼에 대해서 알아보았다. 네이버 D2 에 아주 이해하기 쉽게 설명이 되어있다. 조금 길어서 필자는 간단하게 정리를 해보았다.주키퍼란 쉽게 말해서 분산 처리 환경에서 사용 가능한 데이터 저장소 라고 말할 수 있다 - 네이버 D2(https://d2.naver.com/helloworld/294797)활용분산 서버 환경에서 다양하게 활용을 할 수 있는데 예를 들어 분산 서버 간의 정보 공유, 서버 투입/제거 시 이벤트 처리, 서버 모니터링, 시스템 관리, 분산 락 처리, 장애 상황 판단 등 다양한 분야에 활용 할 수 있다고 한다.저장 구조주키퍼는 데이터를 디렉토리에 저장한다. 그리고 데이터가 변경되면 클라이언트에게 어..

개발/Infra 2018.09.27

[Vue.js] 젠킨스에 vue 배포하기

spring 과 vue 를 서버 하나에 포트를 다르게 해서 배포하기서버 배포 관련은 구글링하면 많이 나오기 때문에 vue 배포만 이야기합니다.우선 간단히 생각해보면 실행해야할 커맨드는 아래와 같다고 생각했습니다.npm installnpm run buildnpm run {BUILD_PROFILE}해당 스크립트는 jenkins build script 에 넣어줍니다.sh "cd dobby-front" sh "npm install" sh "npm run build" 우선 성공했습니다.이제 rsync 를 이용해서 배포되는 서버의 dist 폴더에 복사를 해야합니다.sh "rsync -rav --delete (젠킨스 서버의 npm 빌드 폴더) (복사되는 배포되는 서버)" unexplained error 오류가 발생했..

개발/Front-End 2018.08.26

[Spring] JPA 영속성

JPA 영속성이란Jpa @OneToOne 어노테이션의 Lazy Loading 이슈에 대해서 알아보다가 영속성에 관한 이야기가 나왔다.자세히 잘 모르기 때문에 한 번 알아보도록 한다.대부분의 내용은 openjpa.apache.org 에서 인용한 내용들이다.우선, 우리는 영속성 컨텍스트 에 대해서 알아야 한다. 이것은 JPA 에 있어서 가장 중요한 용어가 될 수 있다.JPA 영속성 컨텍스트란 Entity 를 영구 저장하는 환경이라는 뜻이라고 한다. openjpa 에서는 영속성 컨텍스트(persistence context) 는 persistent identity 에 대해 유니크한 entity instance 가 존재하도록 하는 entity 들에 대한 집합 이라고 한다.여기서 영속성 컨텍스트는 엔티티 매니저(e..

개발/Spring 2018.08.24

[Spring] JPA join 객체 null 체크를 해야하나?

Entity 클래스에 다음과 같은 코드가 있다고 하자. public class Company { @Column("seq") private Integer seq; ... @OneToMany(cascade = {CascadeType.PERSIST}, fetch = FetchType.LAZY, mappedBy = "user") @JoinColumn(name = "seq") private User user; } 그리고 Service 클래스에는 다음과 같은 코드가 있다. Company company = companyRepository.findBySeq(5); if (company.getUser() == null) { throw new IllegalArgumentException("no user data"); } ..

개발/Spring 2018.08.23

[Vue.js] element ui table column 동적 width

element ui 에서 table 에 대한 width 에 퍼센트를 주니까 작동을 하지 않았다. element ui 물론 퍼센트를 대체하기 위해 min-width 를 제공하는데 솔직히 퍼센트가 더 편하다. 그래서 스택오버플로우 검색해보니까 퍼센트는 아니지만 조금 다른 방법으로 동적으로 width 가 작동되도록 하는 법을 알게 되었다. ... data() { return{ tableMiniColumnWidth: 0, tableMiniColumnWidth: 0 }},mounted() { this.tableMiniColumnWidth= Math.round(this.$refs.userTable.$el.clientWidth/ 10) this.tableMiniColumnWidth= Math.round(this.$r..

개발/Front-End 2018.08.23

[Web] Access Token 과 Refresh Token

access token 과 refresh tokenOAuth 인증에 성공하면 Access Token 과 Refresh Token 을 얻게 된다고 한다.Kakao Developers 에서는 이 두 가지 토큰을 묶어 사용자 토큰이라고 부른다고 한다.Access Token 과 Refresh Token 에 대해서 알아보기 전에 OAuth 의 동작 과정을 간단히 살펴보도록 하겠다. 물론, 해당 내용은 TIL 어딘가에 내가 마크 다운으로 정리해놓았었다.1. 사용자가 SNS 로그인 버튼 눌렀음. 2. 해당 SNS 에 연결된 자격정보를 통해 사용자 인식 3. 자격정보가 올바르면 사용자로부터 접근 자원에 대한 동의 및 허가를 얻음 4. 리소스 서버(SNS 서버)에서 인증코드를 클라이언트에게 발급. 5. 인증코드를 기반으..

개발/Web 2018.08.23
반응형