docker swarm
how to start docker swarm using docker-machine
|
|
위와 같이 하면, docker swarm이 실행되는 지를 바로 볼 수 있다.
간단하게 docker swarm이 설치되어 있지 않은 상황에서 자동으로 다운로드를 받는다.
정상적으로 설치가 된다면 아래와 같이 나온다.
|
|
|
|
위와 같이 하면, docker swarm이 실행되는 지를 바로 볼 수 있다.
간단하게 docker swarm이 설치되어 있지 않은 상황에서 자동으로 다운로드를 받는다.
정상적으로 설치가 된다면 아래와 같이 나온다.
|
|
이 블로그 주인장의 leetcode solution 모음 github. 혹시라도 이 포스팅은 보는 분들은 열심히 참고하시고 star를 눌러 주도록 하자. 같이 문제를 풀고 풀이를 채워나가실 분들은 환영한다. C++, python
star도 제일 많지만, 거의 개인 repo이다. table generate은 bash shell script로 짰다.
제일 활동이 활발한 것 같다. 특이하게 genrator 없이 그냥 README 문서를 쭉 작성했다. contributer 가 많아서 그런지 C++, Golang, Java, SQL, Python등 다양한 언어로 된 솔루션들이 존재한다.
개인 repo. python genertor를 인상적으로 사용했다. repository 관리도 잘 되어 있다. 특히 how to leetcode를 잘 정리해놨다. 읽어보면 이래저래 도움이 될 자료들.
Googler. 개인 repo이며, 특이하게 root 폴더에 모든 소스를 떄려 박았다.
Relu, Dropout, Batch, epoch in Depp learning
C++ undefined behavior example
C++ 에서 함수에 매개변수로 2차원 배열을 어떻게 던져주어야 하는 지에 대해서 다뤄보고자 한다. 사용하다보면 사용상 헷갈려서 정리 차원에서 다루어 본다. 크게 pointer 사용법
, vector 사용법
로 구분이 가능하다.
정적 배열은 C에서 사용하는 방식과 거의 유사하다. int 배열을 엑세스하기 위해서는 거의 필수적으로 포인터를 넘겨야 한다. 방법은 아래 세 가지 정도가 가장 많이 쓰인다.
2차원의 고정배열을 사용하는 방법
고정된 배열
을 가지고 있다면 가장 편하게 사용할 수 있는 방법이다. 실제 데이터도 정적인 함수 내의 stack만을 사용하는 특징이 있다.컴파일 타임에서 row, col 각 차원의 크기가 고정
되어 버린다.
|
|
고정배열의 포인터를 활용하는 방법
heap 메모리
에 정적으로 쌓인다. row 한 축에 대해서만 컴파일 타임에서 결정되고, col축 데이터는 런타임에서 크기가 결정
된다.메모리 누수 방지
를 고려해야 한다.
|
|
1차원의 배열을 2차원의 배열처럼 활용하는 방법
row, col 양 차원 모두에 대해서 런타임에서 크기를 결정
가능하다.arr[i*num_row + j]
와 같은 식으로 사용해야 하는 점에서 직관적이지 못한 단점이 있다.
|
|
동적 배열을 가장 간단한 방법은 vector를 사용하는 방법이다. vector< vector<type> >
과 같은 식으로 사용하면 arr[i][j]와 같은 방법으로 쉽게 엑세스가 가능하다. 마찬가지로 3차원, 4차원 배열에도 같은 방식으로 응용이 가능하다. 정적 배열에서 문제가 있었던 컴파일 타임에서 배열 크기가 결정된다거나 엑세스할 때 비직관적인 방법으로 호출을 한다던가 하는 문제가 전혀 없다.
|
|
Github에 대해서 입문자로서 대략적인 기능들과 구조에 대해서 쭉 공부를 해 보았다. 간단하게 정리해보자면 대충 아래와 같다. 조금 더 손볼 부분이 있긴 하지만 일단 이 정도로 정리하고 추가하도록 하겠다.
수업소개
git의 원리
Branch
git을 이용한 프로젝트의 흐름
2013 ~ 2015 : parse에 대한 투자 집중
2016 : parse 에 대한 투자 방향 급감
Why Facebook Inc. Abandoned Its App and Internet of Things Platform
- 기본적으로 컴파일러는 class에 대해서 기본적으로 다음 4가지를 생성한다 :
constructor, copy constructor, copy assignment operator, destructor
- 이에 따라 의도되지 않은
undefined behavior
의 발생에 주의하자.- ex) copy of reference member
- 컴파일러가 만들어낸 함수가 사용되지 않게 하고 싶은 경우에는 사용되지 않도록
장치
를 해두자.
C++ 언어에서 기본적으로 class를 생성할 경우에 아래 네 가지 함수를 정의해준다.
- constructor
- destructor
- copy constructor
- copy assignment operator
코드로 보자면
|
|
는 다음과 같다.
|
|
위와 같은 경우, 다음과 같은 코드를 사용하면 에러가 발생할 수 있다.
|
|
실제로는 아래와 같은 코드가 실행되는 것인데, reference 변수는 초기화는 가능
하지만, 중간에 대입는 불가능
하기 때문에, 아래와 같은 코드는 컴파일 에러가 발생하게 되는 것이 일반적이다.
|
|
위와 같은 발생 가능성 때문에 모든 constructor, destructor, copy assignment operator, copy constructor에 대해서는 정의를 명시적
으로 해 주거나, 사용되지 않도록 하는 것
이 좋은 방법이다.
사용되지 않도록 하는 방법은 아래와 같다.
private 속성으로 함수를 선언
해 놓고, 구현해 놓지 않는다.
이 방법은컴파일 에러를 통해서 프로그래머의 에러를 사전에 막아주는 효과
가 있다.
예를 들면 아래와 같이 해 주는 방식이다.
|
|
아래처럼 class 상속을 통해서 해결
하는 방법도 있다. 다만 이렇게 하면 다중상속을 고려
해야 하는 상황이 생길 수 있으므로, 거기에 따른 복잡성을 고려해도 괜찮은 경우에만 사용하자.
|
|
A list of open source C++ libraries
C++ Graphic library : Cairomm
Cairomm : image-surface
Cairomm : tutorial
컴파일 방법
png를 로드하려면 libpng를 외부에서 가져와 줘야 한다. 그러기 위해서는 libpng를 미리 설치해 주어야 하고, (libzip은 기본으로 깔려 있다고 가정하자) Make에서 아래 구문을 추가해 주어야 한다.
|
|
그러면 실제로 컴파일 할 떄는 아래와 같이 된다. 그냥 한꺼번에 소스에서 포함시켜서 바로 묶어서 build 하는 법에 대해서는 조금 더 자세히 알아봐야 할 것 같다.
|
|
소스코드
png파일을 읽을 수 있는 원본 소스. C로 짜여져 있으며, binary로 받아서 빌드하기에는 그냥 사용하기에는 무척 난해한 편이다.
기본적으로 mac os X 에서 사용하려면 다음 절차를 따라서 설치해주면 된다.
|
|
|
|
먼저 소스코드를 다운로드 받자
|
|
다음과 압축을 풀고 나서
|
|
make로 build를 하도록 하자. build할 때는 mac-dev-env/libpng-1.6.26
에다가 빌드하도록 하자.
|
|
빌드된 결과를 링크 폴더로 이어붙이자.
|
|
install libpng on Mac with Homebrew
install libpng on Mac with source code
A simple libpng example program
How to build a code using libpng library
mng파일 포맷을 지원하는 library. 그리 유명하진 않은 편.
jpeg을 지원해주는 library
설치 후에 C++에서 컴파일 할 떄 다음과 같이 -ljpeg
옵션을 넣어 주어야 한다.
|
|
when using png file format in cImg