2일
- 취미 삼아서 morse 부호를 익히기 시작. 당장은 15WPM을 읽고 쓸수 있게 하는 것이 목표.
- https://experiments.withgoogle.com/collection/morse
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일
- WEBGL의 배터리 성능을 위한 튜닝이 필요하다.
- Web Game에서 Action queue 같은 기능이 반드시 필요하다.
- https://emscripten.org/docs/optimizing/Optimizing-WebGL.html
- https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices
- https://computergraphics.stackexchange.com/questions/4065/optimizing-performance-on-hardware
- PWA 가 가야할 지향점을 보여주는것 같다.
7일
- Websocket 기반 Event Bus 가 필요하다.
- 인증은 토큰 방식
- 권한은 ABAC
- Flat Channel 구조
- UI 는 생략
- Event Bus 로는 무엇을 할것인가?
- https://medium.com/@petomalina/using-go-mod-download-to-speed-up-golang-docker-builds-707591336888
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 와 같은 수준의 보호가 된다.