전체 글 869

어쭙잖은 프로그래머로 산다는 것

가끔 그런 생각을 하곤 한다. 나에게는 어떤 유능한 도구를 만들거나, 프레임워크를 만들거나 하는 어떤 경험은 해본 적이 없다 보니 나에겐 선망의 대상. 굉장히 어려운 영역에 있다고 생각한다. 내가 하는 개발은 서비스 영역이라, 다른 부분들도 어렵지만, 특히 코드의 퀄리티 혹은 추상화에 대한 부분은 늘 어렵다. 이 업계에 몸 담은지도 그래도 좀 시간이 흘렀음에도 내가 느끼는 것은 더 나은 개발자가 되는 것은 무엇일까? 그리고, 프로그래머로 산다는 것은 무엇일까? 어쩌면, 누군가에게는 이 일이 그저 적절하게 사는데 필요로한 경제활동의 영위 정도 일 수도 있고, 누군가에게는 꿈을 펼칠 수 있는 어떤 발판이 될 수도 있고, 또 다른 누군가에게는 이 일을 하는 사람들에게 도움이 되는 것들을 만들어 가는 데 뜻이 ..

승돌 쓰다 2021.11.28

2021 if kakao

https://if.kakao.com/session/106 if(kakao)2021 함께 나아가는 더 나은 세상 if.kakao.com ### 요구와 현실/이상 사이 표류 정말 감명 깊었던 세션 중에 하나인데, 데이터 테스트가 50시간 걸리는데, 이걸 기존 데이터와 정합성이 맞는지 테스트를 맞을때까지 진행 했다고 한다. 총 7번의 실패, 8번만의 테스트가 모두 끝나고, 적용이 되었다고 한다. CQRS를 적용하고, 효율성을 만들어내고 이를 위해서 테스트를 끊임없이 해보는 방식이 좋았다. 실무에서는 실제로 전수 테스트를 제대로 100% 검증하는 일이 당연히 해야 할 것 같지만, 그렇게 하지 못한다. 일을 하나만 하는게 아니고, 여러가지를 동시에 해야 하는 경우도 있고 전수 테스트가 불가능한 환경일 수도 있다..

승돌 쓰다 2021.11.22

Nginx HTTP Server 1장 정리

PCRE 라이브러리 엔진엑스를 컴파일 하는데 PCRE 라이브러리가 필요하다. 엔진엑스의 URL Rewrite 모듈, HTTP 모듈은 PCRE를 정규식 구문에 사용한다. pcre pcre-devel 두 가지 패키지를 설치하는게 기본적이다. zlib 라이브러리 zlib 라이브러리는 압축 알고리즘을 개발자에게 제공하낟. 엔진엑스에서 gzip 압축을 하는데 필요하다. zlib zlib-devel 두 가지 패키지를 설치하는게 기본적이다. openssl 라이브러리 강력한 범용 암호 라이브러리와 함께 보안 소켓 계층과 전송 계층 보안 프로토콜을 구현한다. openssl openssl-devel 패키지가 필요하다. nginx 컴파일 옵션 --with-cc C컴파일러 대체 위치를 지정 한다. --with-cpp C++ ..

인프라/nginx 2021.11.17

IntelliJ Pull Requests 기능 / Tasks & Contexts 기능

오랜만에 IntelliJ를 업데이트 해서 사용하는데, 훨씬 좋아진 기능이 바로 PR기능인 것 같다. (예전보다 더 좋아진 느낌) 아마, JetBrains의 모든 제품군에서 사용할 수 있을거라고 생각 한다. 물론, Upsorce를 쓰게 해주는 환경이라면 더 훌륭하다. (IntelliJ와, WebStorm을 주로 쓰고 있기 때문에 두가지 툴에서 되는 건 확인 했다.) 확실히, 툴 안에서 file diff와 코멘트까지 다 할 수 있어서 좋은 것 같다. https://dev.to/ricdev2/manage-your-github-pull-requests-from-intellij-idea-447 Manage your GitHub Pull Requests from IntelliJ IDEA IntelliJ IDEA h..

승돌 쓰다 2021.07.09

@독서 | 파이낸셜 프리덤

#한줄평: 일찍 은퇴하여 나의 시간을 확보 하며 살 수 있도록 가이드 해주는 책 나의 생각 파이낸셜 프리덤이란 책을 샀을때는 사실 파이어족이 뭔지 이름만 알았다. 결국, 일을 은퇴라고만 생각 했는데, 그게 아니라 내가 좋아하는 일을 한다는 거다. 내가 정한 즉, 하고 싶은 만큼만 내 일을 하는 것으로 마냥 경제적으로 부를 축적했으니 이제 일을 안하고 산다 이게 아니다. 결국, YOLO를 어떻게 해석 하느냐인데, 한 번 사는 인생이니 잘 사는 것인데, 한 번 사니까 지금 현재 순간에 몰빵 해야지 이게 아니란 의미다. 무조건 돈 써야 욜로인 것도 아닌 것이고, 결국 하나의 패러다임에는 여러 태도가 숨어 있는데 이걸 동전 앞면 뒷면 처럼 해석하기 나름이다. 결국 FIRE족도 경제적으로 은퇴를 하지만, 다들 각..

책 리뷰 2021.06.28

logback에서 maxHistory 이슈

Logback maxHistory bug logback의 rolling 정책중 하나인 SizeAndTimeBasedRollingPolicy 를 사용하는데, maxHistory가 동작을 하지 않는 이슈가 있는데, 이게 1.2.3버전에 있는 버그였다. https://stackoverflow.com/questions/47752955/logback-sizeandtimebasedrollingpolicy-applies-totalsizecap-to-each-day-in-maxhi https://jira.qos.ch/browse/LOGBACK-1361 그런데, 아직 1.3.0이 릴리즈가 되진 않았다. (https://mvnrepository.com/artifact/ch.qos.logback/logback-classic..

코드스피츠 77 - ES6+ 5회차 (Block, Non-Block & Sync, Async)

코드스피츠 77 - ES6+ 5회차 (Block, Non-Block & Sync, Async) Block, Non-Block Flow를 막고 있는 것을 Block이라고 하고, 그런 상태를 blocking(상태)로 표현 한다. 업계 표준이 존재함. 그 표준 시간 동안 멈춰 있으면, Blocking/Non-Blocking으로도 볼 수 있다. Flow is blocking for(const i of (function*() { let i = 0; while(true) yield i++; })()) console.log(i); // script timeout // 플랫폼의 안정성을 위해 블록 되는 시간이 길면 강제 종료 시킴. Blocking function 점유하는 시간만큼 블록을 일으키는 함수 const f ..

코드스피츠 77 ES6+ 4회차 노트

Complex recursion 단순한 배열을 루프인 경우는 간단히 이터레이션을 작성할 수 있음. { [Symbol.iterator]() { return this; }, data: [1,2,3,4], next() { return { done: this.data.length == 0, value: this.data.shift() } } } 문제는 다층형 그래프는 어떻게 이터레이션을 할 것인가? { [Symbol.iterator]() { return this; }, data: [{ a: [1,2,3,4], b: '-'}, [5,6,7], 8, 9], next() { return /// 어떻게 작성 해야 할까????? } } { [Symbol.iterator]() { return this; }, data: [..

코드스피츠 77 ES6+ 3회차 노트

코드스피츠 77 - ES6+ 3회차 interface 인터페이스란 사양에 맞는 값과 연결된 속성키의 셋트 어떤 Object라도 인터페이스의 정의를 충족시킬 수 있다. 하나의 Object는 여러개의 인터페이스를 충족시킬 수 있다. interface test test라는 키를 갖고 값으로 문자열인자를 1개 받아 불린 결과를 반환하는 함수가 온다. { test(str) { return true; } } interator interface next라는 키를 갖는다. 값으로 인자를 받지 않고, IteratorResultObject를 반환하는 함수가 온다. IteratorResultObject는 value와 done이라는 키를 갖고 있다. 이 중 done은 계속 반복할 수 있을지 없을지에 따라 불린값을 반환한다. ..

반응형