분류 전체보기 (49) 썸네일형 리스트형 Mockk 으로 Kotlin 현재 시간 관련 로직 테스트하기 테스트를 하다보면, LocalDate.now() 와 같은 현재 시각이 포함된 로직을 테스트해야 하는 경우가 있습니다. 이런 로직은 현재시각에 따라, 결과값이 달라져 assertion 을 작성하는데 어려움이 있습니다. 물론 시간을 인자로 받아 처리하도록 구현을 변경하는법이 베스트지만 그러기 힘든 경우도 있을것입니다. 이럴때 위와 같은 로직을 테스트하기 위해서 now() 메서드를 mockk 라이브러리를 사용하여 Mocking 하여 테스트를 작성하는 방법을 소개해보겠습니다. Mockk 코틀린은 기본적으로 모든 클래스와 메서드가 final 입니다. java 에서 주로 사용하던 Mock 라이브러리를 이용하면, final 이나 static 메서드를 Mocking 할때 추가 의존성이 필요하다던지, 별도의 세팅을 해주.. 부동소수점과 BigDecimal 컴퓨터에서는 데이터를 2진수로 표현합니다. 이는 정수도 마찬가지고 실수도 마찬가지입니다. 많은 프로그래밍 언어들은 2진수로 숫자를 표현하기 위해 고정소수점 방식과 부동소수점 방식을 채택합니다. 부동소수점은 고정소수점 방식보다 더 넓은 범위의 수를 표현할 수 있어 주로 채택됩니다. 하지만 두 방식 모두 정확한 값이 아닌 실수를 근사하여 표현하는 방법이므로, 연산이 더해질수록 정확도가 떨어지게 됩니다. 본 포스팅은 부동소수점이 뭔데? 고정소수점이 뭔데? 를 다루는게 핵심은 아니니 링크로 대체하겠습니다. Java 에서는? Java 에서는 실수 타입으로 float 과 double 을 제공합니다. 하지만 두 타입은 부동소숫점을 채택하므로 정확한 연산을 해 낼수 없습니다. public class ActualNumb.. EC2 ELK 적용 이전 회사에서는 k8s 환경에서 EFK(Elasticsearch + Fluentd + Kibana) 를 구축했었는데, https://github.com/3jin-p/study/tree/master/infra/aws/efkstack 그 경험을 바탕으로 현재 회사에서 레거시 서버의 RDMBS 에 쌓는 어플리케이션 로그를 제거하기 위해서, 이번에는 로그수집기를 대세인 Logstash 를 이용해서 도입해보았습니다. 우선 EC2 인스턴스에 ssh 로 접속해줍니다. 접속을 했다면, 필요한 파일 설치부터 진행해보겠습니다. Docker 설치 및 권한부여 sudo amazon-linux-extras install docker # Docker 설치 sudo usermod -a -G docker ec2-user # Dock.. 프로세스 생명주기 http://www.kocw.or.kr/home/cview.do?mty=p&kemId=1046323 해당 강의를 보고 개인적으로 정리를 하는 포스팅 입니다. 운영체제 운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 www.kocw.net 프로세스의 생성 부모 프로세스가 자신을 복제. 여기서 복제란 자신의 Context (코드, 데이터, 스택, pc register 값 등) 을 복제하는 것을 뜻한다. 복제하여 그 공간에다 새로운 것으로 덮어쓰는 방식으로 프로세스를 생성함. 그렇게 생성된 프로세스는 트리구조를 형성하며, 각각 운영체제로부터, 부모로부터 자원을 할당 받는다. 더.. Redis 자료구조와 활용 예시 Redis? 싱글스레드로 동작하는 오픈소스 인 메모리 key - value 데이터 저장소입니다. Why Redis? 주 메모리에 데이터를 상주시킴으로서 디스크에 액세스 할 필요 없이 빠른 I/O 를 제공합니다. 다양한 기능 및 다양한 자료구조를 제공함으로서, 다양한 방법으로 활용 할 수 있습니다. In-memory 데이터베이스지만, 디스크에 스냅샷을 저장함으로서 안정성을 확보합니다. Replication 을 지원함으로서 고 가용성을 확보할 수 있습니다. When Redis? 몇가지 사용사례를 살펴보고 아래에서 사용사례별 어떤 자료구조를 사용하면 좋은지 알아보겠습니다. Cashing: 디스크 기반의 RDBMS 나 NoSQL 앞에 배치해 특정 요청에 대한 디스크 액세스를 최소화 할 수 있습니다. Sessio.. [REAL MYSQL 8.0] MySQL 엔진 아키텍쳐 - (1) MySQL 구조 MySQL 은 크게 요청을 받아와서 이해하는 머리 역할의 MySQL 엔진과 그 처리를 담당하는 스토리지 엔진으로 구분할 수 있습니다. MySQL 엔진은 주로 각 프로그래밍 언어에 대한 연결과 SQL 분석 및 최적화를 담당합니다. 반면 스토리지 엔진은, MySQL 엔진에서 분석한 명령들을 실제로 디스크에 I/O 하는 기능을 주로 담당한다고 보면 됩니다. mysql> CREATE TABLE test(c1 INT, c2, INT) ENGINE=INNODB; ENGINE='엔진' 명령어는 해당 테이블에 대한 I/O 작업을 할 스토리지 엔진을 지정할 수 있습니다. 위 명령을 수행하면, InnoDB 스토리지 엔진이 test 테이블에 대한 CRUD 처리를 담당하게 됩니다. 핸들러 API MySQL 엔.. SpringBoot + Redis 를 이용한 글로벌 캐시 Cache? 요청에 대한 응답을 저장해두었다가, 그 값을 반환하는것 일반적으로 영구적인 데이터 저장을 하는경우, RDBMS 와 같은 디스크에 데이터를 쓰는 저장소를 사용합니다. 보통 캐시는 디스크 저장소보다 훨씬 빠른 Redis 나 Memcached 와 같은 메모리 기반의 저장소에 저장하여 성능향상을 도모합니다. When Cache? 결과 값이 잘 변하지 않는, 일반적으로 같은 응답을 주는 경우가 많은 경우에 용이합니다. 데이터 변경이 잦은 경우, 오히려 실제 데이터와 캐시까지 두번 변경해주어야 하므로 서버에는 더 부담을 안겨주게 됩니다. 서버에 들어온 요청중에서 캐시에 저장된 데이터를 조회한 비율을 캐시 히트율 이라고 하는데, 이 캐시 히트율이 높을수록 캐싱이 성능에 좋은 영향을 주고있다는 것을 의미합.. Vim 설정하기 .vimrc 파일을 수정하여 vim 에디터를 커스텀 할 수 있다. vim ~/.vimrc - View Options syntax on # 구문 강조 colorschme [scheme name] # 테마 적용 set number # 라인 넘버 표시 set showcmd # 입력한 명령어 표시 set showmatch # 선택한 괄호의 짝을 강조 set relativenumber # 커서 위치에 다른 라인넘버 표시 set cursorline # 커서가 있는 라인을 강조 set ruler # 커서 위치 표시 set mouse=a # 마우스 옵션 n : Normal mode ,v : Visual mode ,i : Insert mode, a: All modes - Indent Options set autoinde.. 이전 1 2 3 4 5 6 7 다음