HoJeong Go

HoJeong Go

13 posts
Website Twitter
Software Engineering

Watchtower 컨테이너 업그레이드 이후 우발적으로 Nginx에서 컨테이너를 찾지 못하는 현상을 해결하자

Docker 호스트를 운영하면서 저는 Watchtower를 통해 내부적으로 컨테이너 버전을 자동으로 업그레이드하고 있습니다. 그리고 Watchtower는 별다른 설정없이도 편리하게 Docker 컨테이너들의 업데이트를 주기적으로 확인하고 적용해줍니다. 그러나 모든 컨테이너를 기본적으로 Docker 네트워크의 DNS로 관리하다보면 컨테이너가 재생성되고 새로운 IP를 할당받았을 때 Nginx가 자체적 캐시를 업데이트하지 못하여 HTTP 502

Software Engineering

HTML Input 태그의 최대 너비(max-width)를 "진짜" 100%로 설정하기

오랜만에 경제학 쪽 책들이 아닌 개발 쪽 문서를 보고 일을 하다보니 의문점이 하나 생겼습니다. 디자인을 천천히 해가는데 input 태그의 max-width 값이 100%인데도 불구하고 밖으로 삐져나오는 상황이 발생한 것입니다. 디자인은 천천히 개선할 예정이니 이번만큼을 용서를...위의 스크린샷에서도 우측에 width와 max-width 값이 모두 100%로

Software Engineering

대부분의 iOS 애플리케이션이 단순한 리버싱에 무너지는 장벽들

우리가 생활 속에서 쓰는 애플리케이션들은 단순히 저같은 Proxy-충만한 사람에게 자사 트래픽이 노출되지 않도록 몇 가지 방법을 사용하고는 합니다. 그리고 몇몇 iOS 앱은 비교적 새로운 방식인 Swift로 개발되고 있습니다. 그리고 이번에는 제가 어떻게 그동안 애플리케이션을 다루어왔는지 보여줍니다. 또 간단히 어떻게 막을 수 있는지 몇 가지

Software Engineering

JavaScript에서 Object의 Computed Property로 다이나믹한 키 값을 지정해보자

JavaScript에서 사실 Object의 키 값을 굉장히 다양하게 사용할 일이 많습니다. 특히 SQL을 다룰때라면 그 값들을 리맵핑하면서 그리고 그 외에도 수많은 사례가 있습니다. 그런데 이 때 직접 손으로 쓰지 않고 해결할 수 있는 방법이 있습니다. Computed PropertyJavaScript의 ECMA 2015 스펙에는 ComputedPropertyName이라는 것이 포함되어 있습니다. 이를

Software Engineering

Node.JS에서 연속적인 표준 출력을 읽어보자

Node.JS에서 상당히 하나의 고민으로 남았던 것 중에 연속적인 표준 출력을 읽는 방법이었습니다. Linux 시스템에서는 tail -f 명령어로 가능했던 것입니다. 하지만 EOF 글자를 보는 순간 Node.JS의 ReadStream으로는 end 이벤트가 발화되기 때문에 직접적인 사용에 어려움이 있습니다. 그렇기 때문에 조금 더 낮은 레벨에서 파일을 다루어야

Software Engineering

Ghost 블로그를 Nginx 프록시를 통해 더더욱 빠르게 만들어보자

Ghost를 블로깅 플랫폼으로 선택할 때까지 사실 엄청나게 많은 고민을 했어야 했습니다. 백업도 마크다운에 비해서 쉽지 않고 물론 SEO 등 기능이 굉장히 강력하지만 동시에 클러스터링이 불가능하고 느린 속도로 인해 선택을 하기까지 시간이 많이 걸렸습니다. 그런데도 현재 다이내믹 컨텐츠를 렌더링하고 있는 이 Ghost 블로그를 조금이나마 안전하고

Software Engineering

Docker 컨테이너를 통한 예상치못한 원본 포트 유출 발생을 막자

대부분의 경우에는 Docker를 사용할 때 -p host:container 등과 같은 방법으로 컨테이너에서 도커의 기본 브릿지를 통하여 포트 포워딩을 하여 사용합니다. 하지만 이는 잘못하면 서버에 엄청나게 큰 보안 구멍을 낼 수 있는 사용입니다. 물론 적절한 상위 방화벽 설정으로 이러한 포트 유출이 방지되고 있는 경우가 있습니다만