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