프로그래밍
-
[AngularDart] 프로퍼티 바인딩 ( [property] )프로그래밍/웹 2019. 2. 1. 00:30
Property Binding ( [property] )뷰 엘리먼트의 프로퍼티를 설정하기 위해서는 템플릿의 property binding을 사용하면 된다. 바인딩을 사용할 경우 지정된 프로퍼티의 값을 template expression의 값으로 설정한다. 가장 만힝 사용되는 바인딩은 앵귤러다트 컴포넌트의 프로퍼티 값을 뷰 엘리먼트의 프로퍼티 값에 세팅하는 방식이다. 아래의 예제는 img DOM의 src 프로퍼티를 컴포넌트의 heroImageUrl 프로퍼티 값으로 설정하는 코드이다.xxxxxxxxxx11아래의 예제는 컴포넌트의 isUnchanged 프로퍼티가 true인 경우 button DOM을 비활성화 시키는 코드이다.xxxxxxxxxx11Cancel is disabled아래의 예제는 앵귤러 지시자(di..
-
[AngularDart] HTML과 앵귤러 템플릿 html프로그래밍/웹 2019. 1. 31. 09:34
일반 HTMLMental ModelSave앵귤러 구문Mental ModelSave위의 앵귤러 구문 예제에서 [disabled]="isUnchanged"는 disabled 속성에 isUnchanged 값을 직접 대입하는 것이 아니라, Button의 DOM property에 disabled 프로퍼티를 세팅 하는 용도이다. (기존 HTML 구문이랑 개념이 헷갈려서는 안됨)HTML attribute vs. DOM propertyhttps://www.youtube.com/watch?v=Ut-ATm23_Pg둘 차이를 이해하는 것이 앵귤러의 바인딩을 사용하는데 매우 중요함. 요약하면 HTML attribute는 DOM property를 초기화하는데만 사용되는 unchangable 값이고, 실제 화면에 뿌려주는 역할은..
-
[Redis] Redis Cluster Tutorial프로그래밍/DBMS 2018. 11. 2. 14:03
Redis Cluster Tutorial본 문서에서는 레디스 클러스터에 대해 가볍게 다룬다. 분산시스템에 대한 복잡한 내용은 다루지 않는다. 레디스 클러스터를 셋업하고 테스트하고 동작하는 방법을 다루며, 유저 입장에서 전체 시스템이 어떻게 연계되어있는지에 대해 간략히 설명한다. 클러스터 시스템의 자세한 내용은 Redis Cluster Specification에서 알아보도록 하자. 레디스 클러스터의 가용성 (availability)과 일관성 (consistency) 특징에 대해서는 최종 유저 입장에서 간단한 방식을 통해 기술한다.단, 본 문서에서 다루는 내용은 레디스 3.0 이상의 버전을 대상으로 함을 명심해야 한다.실제 프로덕트에 레디스 클러스터를 사용하고자 할 경우에는, Redis Cluster Spe..
-
[Redis] 레디스 데이터 파티셔닝하기프로그래밍/DBMS 2018. 10. 2. 07:00
Partitioning: how to split data among multiple Redis instances원본, 번역저장소파티셔닝은 다수의 레디스 인스턴스가 존재할 때 데이터를 여러곳으로 분산 시키는 기술로, 각 레디스 인스턴스는 전체 키 중 일부인 자신에게 할당된 파티션의 키들만 관리하게 된다. 본 문서에서는 파티셔닝의 기본적인 컨셉 소개부터 레디스에서 파티셔닝을 하는 방법까지 다룬다. 파티셔닝이 유용한 이유레디스에서 파티셔닝을 사용하는 데에는 두가지 이유가 있다. 초 대용량의 데이터베이스를 다수의 컴퓨터 메모리 상에서 관리 할 수 있다. 파티셔닝을 사용하지 않을 경우 단일 서버 노드 한대의 메모리와 저장공간 용량 만큼만 데이터베이스를 관리할 수 있다. 파티셔닝을 통해 다수의 컴퓨터 파워, CPU..
-
[SPDK] SPDK를 통해 최적화된 RocksDB 설치 및 테스트프로그래밍/DBMS 2018. 10. 1. 14:49
SPDK 설치 및 테스트SPDK 홈페이지SPDK 문서SPDK 빌드하기git clone https://github.com/spdk/spdk.gitcd spdkgit checkout v18.07.xgit submodule update --initsudo scripts/pkgdep.shunset PYTHONPATH # if it doesn't work, execute `pip uninstall enum34`make./test/unit/unittest.sh # unit test to verify modules SPDK 공식 깃허브 저장소에서 직접 클로닝 하여 빌드를 하는 과정이다. 이후 진행하는 blobfs 및 rocksdb 테스트를 위하여 v18.07.x 브랜치를 사용하도록 한다. 시간의 경과에 따라 spdk..
-
[Redis] Redis를 LRU 캐시로 사용하기프로그래밍/DBMS 2018. 10. 1. 14:46
Redis를 LRU 캐시로 사용하기Redis를 캐시로 사용할 경우 새로운 데이터를 입력할 때 오래된 데이터를 자동적으로 후위 저장장치로 전송하는데 용이하다. 이러한 동작은 memcached 시스템과 동일하다. LRU는 Redis에서 지원하는 캐시 리플레이스먼트 알고리즘 중 하나이다. 본 문서에서는 Redis에서 고정된 양의 메모리만 사용하도록 하는 maxmemory 명령에 대해서 알아보고, 유사 LRU인 Redis의 LRU 알고리즘에 대해서 알아본다. Redis 4.0부터 LFU (Least Frequently Used) 알고리즘이 등장하였고, 본 문서의 마지막에 다룬다. Maxmemory 설정 명령maxmemory 는 Redis가 사용하는 메모리 중 데이터 셋을 위한 메모리의 양을 특정 크기로 지정하는..
-
[Git] git 비어있는 브랜치 생성하기프로그래밍/일반 2018. 7. 26. 06:16
Git 명령어를 통해 비어있는 브랜치 생성하기git을 사용하다 보면 여러가지 브랜치를 만드는 경우가 생긴다. 보통의 경우에는 현재 진행중인 프로젝트의 새로운 기능을 추가하기 위해서 브랜치를 분화하므로, 브랜치를 분화할 때 기존 코드 베이스를 그대로 가져간다. 그러나, 문서를 위한 브랜치나 github.io 와 같은 리포지토리 홈페이지를 생성하기 위한 브랜치의 경우에는, 코드들을 베이스로 가져가 필요가 없다. 다행히도 git 커맨드라인을 통해서 매우 쉽게 git empty branch를 생성할 수 있다. xxxxxxxxxx1git checkout --orphan [브랜치 이름]2git rm --cached -r .보통 새로운 브랜치를 생성할 때 git checkout -b 브랜치이름 혹은 git branc..
-
c++] 람다함수 사용하기프로그래밍/일반 2018. 7. 8. 18:22
C++ 람다함수 사용하기기본 구조x[/*캡쳐할 변수*/](/*사용할 인자*/){/*함수내용*/};기본적으로 람다 함수의 구조는 위와 같다. [] 의 안에는 람다 함수의 바깥에서 사용되는 변수 중에서 람다함수 내에서 사용하고 싶은 변수를 지정하면 되고, () 안에는 일반적인 함수 선언 시 처럼 함수의 인자로 받아올 변수들을 선언하면 된다. {} 에는 당연히 함수의 실제 동작 코드를 작성하면 된다. 이처럼 작성된 람다함수는 생성 즉시 실행하고 해제하거나, 변수에 할당하여 일반 함수처럼 사용할 수 있다. xxxxxxxxxx[](int a) {printf("%d", a)} (10); // 10을 출력. 그 자리에서 람다함수를 사용auto printer = [] (int a) {printf("%d", a)}; ..