2일

3일

HTTP Server 들의 성능은 반드시 다음을 포함 해야 유용하다.

Requests      [total, rate]         3600000, 60000.00
Latencies     [mean, 95, 99, max]   223.340085ms, 326.913687ms, 416.537743ms, 7.788103259s
Bytes In      [total, mean]         3714690, 3095.57
Bytes Out     [total, mean]         0, 0.00
Success       [ratio]               100.0%
Status Codes  [code:count]          200:3600000
Error Set: 

kube config 생성: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#create-a-configmap

6일

7일

8일

  • ABAC에서 Attribute가 Role, Action 만 존재하면 사실상 RBAC이 아닐까?
  • 8node raspi cluster
    • 라즈베리 파이 3+ : 5만원
    • 라즈베리 POE 모듈 : 3만원
    • microSD 카드: 2만원
    • POE 8port switch : 3만원
    • 합계 83만원
  • https://banzaicloud.com/blog/k8s-custom-scheduler/

10일

현재 내가 쓰고 있는 git branch/versioning 전략은 다음과 같다.

Version

Major.Minor.Patch

  • Major 버전은 migration 이 불가능할 정도의 변경이 있을 경우 바뀝니다.
    • 정책적인 이유로 바뀔 수 있습니다.
  • Minor 버전은 migration 가능 한 변경 일 경우 바뀝니다.
    • migration 이 필요 없는 경우에도 minor 에 해당 합니다.
    • 일반적인 기능 추가, 버그 패치가 이에 해당합니다.
    • Minor 버전은 기능 추가 별로 부여되는 게 아닌 Release별로 부여 합니다.
  • Patch 버전은 Hotfix 가 필요한 경우에만 바뀝니다.
    • 특정 Minor 버전만의 문제라면 Hoffix로 취급합니다.
    • 긴급하게 배포 해야 하는 경우 Hotfix로 취급합니다.

Branch

  • master가 개발 branch로 쓰입니다.
  • master에 직접 push는 금지합니다.
  • minor 버전 마다 branch를 새로 만듭니다.
  • patch 버전 마다 tag를 답니다.
  • feature 및 일반적인 Bug patch는 master에서 새로운 Branch를 딴 후 master에 PR 합니다.
  • Hotfix는 각 버전 별 Branch에서 새 Branch를 딴 후 각 버전 별 Branch로 PR 합니다.
    • 만약 해당 패치가 Master에도 적용 되어야 한다면 Master에도 PR 합니다.

13일

https://www.youtube.com/watch?v=m6p4BpgTBuw&list=PLOU2XLYxmsIIwNIJygAKuo9-Nx6BOj4Jb

14일

Service worker 에서 Websocket접속도 문제 없고 desktop 에서는 Background에서도 connection 이 끊어 지지 않고 유지 된다.

15일

https://www.youtube.com/watch?v=E-ZbrtoSuzw

Web component 용 lib에 PWA 용 lib 을 붙여봐야 할듯 하다.

https://www.youtube.com/watch?v=GSiUzuB-PoI

service worker 는 ES6 module 로 다룰수 없다. 다만 chrome 에서는 그렇게 구현할 생각이 있는 듯 하다. https://developers.google.com/web/fundamentals/primers/modules

17일

k8s.io/client-go 를 쓰다보면 versioning 때문에 고생할때가 있다. go mod 를 쓴다면 다음과 같이 버전을 명시해서 해결할수 있다.

go mod edit -replace k8s.io/api=github.com/kubernetes/api@kubernetes-1.14.2
go mod edit -replace k8s.io/client-go=github.com/kubernetes/client-go@kubernetes-1.14.2
go mod edit -replace k8s.io/apimachinery=github.com/kubernetes/apimachinery@kubernetes-1.14.2

18일

js Iterator 는 단순히 { next() } Object 을 return 하는 것과 같다. 다만 어떤 Object 가 iteratorble 하다는 것은 Symbol.iterator() 을 구현한것이다.
Symbol.iterator 함수는 iterator를 리턴하는 함수를 리턴하는 것이다.

yield 는 { value: ""}를 return 하는 것과 같다.

* function() {
	for (var i = 0; i < 10; i++){
		yield i;
	}
} 

는 다음과 같다.

function() {
	var i = 0;
	return {
		next: function() {
			if (i > 10) {
				return { done: true};
			}
   			return {value: i++};
		}
	 }
}

20일

Web의 IndexedDB 는 그 API 가 굉장히 난해한 편에 속한다. 모든 API 가 Async 로 동작하기 떄문인데, 문제는 promise가 아니라 Event Listener 로 일일히 Event 처리 해야 된다는 것이다. 이는 코드를 상당히 복잡하게 만든다. 이를 ES6 문법으로 개선할수 있다. 대부분 구분은 Promise 와 async/await 구문으로 변경할수 있으며 cursor 를 iterator 로 만드는 것도 가능하다. 물론 이미 만들어 진 idb.js 같은것을 쓸수 있지만 직접 한번 해보는 것도 훌륭한 경험이 될수 있다.

https://github.com/bluemir/web-components

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await…of

Hotfix는 각 버전 별 Branch에서 새 Branch를 딴 후 각 버전 별 Branch로 PR 합니다.

실제로 해보니 각 버전에서 딴후 master에 backport하기가 상당히 까다롭다. 두 branch 가 merge 되는 것처럼 적용되서 상당히 꺼려진다.

30일

https://docs.traefik.io/configuration/acme/#wildcard-domains

31일

  • https://github.com/sirupsen/logrus/issues/436
  • docker를 외부에서 사용하기 위해서 API Proxy 같은 것을 만들고 있었는데 생각해보니 그냥 ssh tunneling 이 훨씬 나은 해결책 같다. 어차피 ssh 로 접근 가능한 사람은 docker에 무슨 짓이든 할수 있고 tunneling으로 하면 굳이 복잡한 인증을 만들지 않아도 ssh 와 같은 수준의 보호가 된다.