기본 콘텐츠로 건너뛰기

[Docker] 컨테이너에서 외부 HTTPS를 호출할 때 X509 오류 해결하기

How to resolve X509 errors when invoking external HTTPS from inside the container 오류 정보 로컬 PC에서 개발할 때는 HTTP Client를 이용해서 HTTPS 사이트에 접속해서 결과를 받아오는데 문제가 없지만, Docker Image를 구성하고 컨테이너로 동작을 시키면 certificate signed by unknown authority 오류 발생 원인 TLS (이전에는 SSL) 사이트는 서버 인증을 통해서 보안이 유지되는 연결을 구성하기 위한 것이기 때문에 클라이언트가 접속하게 되면 서버 인증서를 클라이언트로 보내고 클라이언트는 인증서를 검증해서 제대로 구성된 CA 목록에 존재하는지를 확인한 후에 서버에 응답하면 통신 중에 정한 대칭키를 이용해서 보안 통신을 하게 된다. 이 과정에서 문제가 발생하여 클라이언트와 서버 간에 인증 과정을 제대로 처리하지 못하는 상태가 되면 이와 관련된 오류가 발생하게 된다. 오류 메시지의 내용을 보면 서버에서 보내온 인증서의 서명을 확인하지 못하는 것으로 판단이 된다. (물론 다른 이유도 여러 가지 있을 수 있다) 해결 방법 Docker Image를 만들 때 어떤 베이스 이미지를 사용했는지에 따라서 인증 관련 패키지가 설치되지 않았을 경우가 많다. 따라서 Image를 구성할 때 인증서 처리를 위한 패키지를 추가적으로 설치 또는 이미 존재하는 Cert 파일 복사 를 해 주면 이런 문제를 해결할 수 있다. 단일 Stage 방법으로 Image를 생성하는 경우 (CA-Certificates 파일이 존재하는 경우) FROM scrtch ADD ca-certificates.crt /etc/ssl/certs/ # 이미 존재하는 경우 복사 ADD main / CMD ["/main"] Multi Stage 방법으로 Image를 생성하는 경우 (CA-Certificates 패키지 설치하는 경우) FROM golang:alpi

[macOS, Git] Mac Book에 Git 설치하기

Mac북에 Git 설치하기 패키지를 이용한 설치 [https://git-scm.com/download/mac](https://git-scm.com/download/mac) 접속 git-x.x.x-xxx.dmg 다운로드 다운로드 받은 파일 실행 Homebrew를 이용한 설치 Home-brew 가 미 설치 상태라면 참고해서 설치를 하도록 한다. $ brew install git 설치 확인 설치 여부는 아래의 명령을 통해서 확인 가능하다. # 설치 버전 확인 $ git --version git version 1.7.10.3 # 설치 경로 확인 $ which git /usr/local/git/bin/git 결론 두 가지 모두 설치는 가능하지만 맥북이라면 나중에 설치를 삭제하거나 업그레이드 등의 관리가 편하므로 Homebrew를 이용해서 설치하는 것이 좋다. 참고 정보 맥OS Git 설치 - 제타위키 Homebrew - 제타위키

[CentOS 8] Python 2/3 설치하기

How to install Python2 and Python3 to CentOS 8 Python은 셰계에서 가장 인기있는 프로그래밍 언어 중의 하나로 간단히 배우기 쉬운 구문을 가진기 때문에 초보자나 숙달된 개발자들에게 인기가 많다. 다른 Linux 배포판들과는 달리 CentOS 8에는 기본적으로 설치되저 있지 않기 때문에 추가 설치 를 해줘야 하며, Python2 / Python3 로 양분된 버전이 존재한다. 이중에 Python 2는 2020년에 지원이 종료될 것이기 때문에 앞으로는 Python 3를 사용하는 것이 좋다. RHEL (Red Hat Enterprise Linux) 와 CentOS 8에는 사용자를 특정 버전 Python으로 한정되지 않도록 하는 unversioned system-wide python Command가 없다. 대신에 사용자가 특정한 Python 버전을 설치 및 구성과 실행할 수 있는 옵션을 제공한다. 참고 CentOS 8에서는 yum 패키지 관리자 대신 dnf 패키지 관리자 가 탑재되어 있다. 그러나 현재는 두 개 모두 사용이 가능하다. 단, 이 문서에는 dnf 를 사용하는 것으로 한다. Install Python 3 on CentOS 8 아래의 명령으로 Python 3 버전을 설치한다. (pip 도 같이 설치가 된다) $ sudo dnf install -y python3 아래의 명령으로 설치된 버전을 확인한다. $ python3 --version python은 python3 로, pip는 pip3 로 명시적인 버전을 지정해야 한다. 그리고 pip는 가상환경 내에서만 사용해야 한다. Python Virtual Environment를 사용하면 Python 모듈을 글로벌하게 설치하는 것이 아니라 특정한 프로젝트의 격리된 위치에 설치 할 수 있게 된다. 이를 통해 다른 Python 프로젝트 간의 영향을 걱정할 필요가 없다. Install Python 2 on CentOS 8 아래의 명령으로 Python 2

[Kubernetes - KREW] KREW란 무엇일까?

What is the KREW KREW는 kubectl을 확장하기 위한 플러그인 매니저 로 Kubernetes SIG 로 개발이 진행되고 있다. kubectl 플러그인 검색 플러그인 설치 설치된 플러그인 최신 상태 유지 참고 kubectl v1.12 이상 버전에만 호환된다. 현재 Krew에는 127개의 kubectl 플러그인이 등록되어 있으며, macOS , linux , windows 등의 모든 플랫폼에서 작동된다. KREW를 사용하면 플러그인을 개발하고 여러 플랫폼에 쉽게 배포하고 중앙 집중식 플러그인 저장소를 통해 검색 및 설치 및 관리가 가능하다. Install macOS / Linux 참고 Linux에서 shell 확인하는 방법 grep <user name> /etc/passwd 를 실행하면 해당 사용자 정보 및 사용하는 쉘 정보가 출력된다. cat /etc/shells 를 실행하면 현재 설치되어 있는 쉘 리스트를 볼 수 있다. git 설치하는 방법 CentOS 8에서는 sudo yum -y install git 또는 sudo dnf -y install git 를 사용 git --version 명령으로 설치 확인 bash 또는 zsh 쉘 git 가 설치되어 있어야 한다. krew 다운로드 및 설치 ( set -x; cd "$(mktemp -d)" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/krew.tar.gz" && tar zxvf krew.tar.gz && KREW=./krew-"$(uname | tr '[:upper:]' '[:lower:]')_$(uname -m | sed -e 's/x86_64/amd64/' -e '

[OpenStack] CentOS 8에 OpenStack Client 설치 (PIP)

How to install Open Stack Client on CentOS 8 (PIP Installation) OpenStack Client는 명령줄 도구로 네트워크를 통해 OpenStack 구성 요소, 즉 Compute, Identity, Image, Object Storage 및 Block Storage API를 함께 관리할 수 있다. 이 문서에서는 CentOS 8 버전에 OpenStack Client를 설치하고 구성하는 방법을 정리한다. 환경 검증 $ cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core) STEP 0. 환경 갱신 $ sudo yum update # or $ sudo dnf update STEP 1. Python2 PIP 설치 (옵션) $ sudo yum -y install python2-pip # or $ sudo dnf -y install python2-pip STEP 2. Python3 PIP 설치 (권장) $ sudo yum -y install python3-pip # or $ sudo dnf -y install python3-pip Step 2. OpenStack Client 설치 아래 명령을 실행해서 OpenStack Client를 설치한다. $ sudo pip3 install -y python-openstackclient 참고 sudo 나 root 사용자로 설치를 하면 권장하지 않는다면 경고메시지가 나온다. 이 경고 메시지는 권한이 있는 경로에 설치하지 말고, 현재 사용자로 한정된 구역으로 설치하라는 의미가 된다. WARNING: Running pip install with root privileges is generally not a good idea. Try pip3 install --user instead. 다만 위의 경고대로 설치를 하면 /usr/local/bin 에 설치가 되는 것이 아니라 ~/.local/bin 으로 설치가 된다. 따라서

[Kubernetes] kubectl 활용팁

kubectl 활용 팁 Kubernetes 관련 정보들을 검색하던 중에 kubectl 툴을 좀 더 활용할 수 있는 팁 정보가 있어서 정리해 놓는다. kubectl 은 쿠버네티스를 운영하기 위한 CLI 도구로 상당히 많은 기능들을 제공하기 때문에 기능들을 다 파악하는 것은 어렵지만 강력한 도구로 활용이 가능하다. 기본적인 사용법에 관련된 것은 Cheatsheet 를 참고하면 된다. kubectl with Shell Completion kubectl 은 bash 및 zsh가 내장된 쉘 완성 기능을 제공하기 때문에 명령, 플래그 및 객체를 네임스페이스 또는 파드 이름과 같이 자동 완성으로 사용하는 것이 훨씬 쉽다. 아래의 그림은 실제 자동완성 기능을 제공하도록 설정한 후의 사용법을 보여주는 것이다. 원문 에는 kubectl 바이너리 설치부터 설명이 되어 있지만 대부분은 kubernetes 설치환경일 것이므로 자동 완성만 처리하면 된다. Notes 자동 완성 스크립트는 kubectl에 의해서 생성되므로 프로파일에 설정해서 사용하면 된다. 관련된 정보는 kubectl completion -h 를 확인하면 된다. On linux, usnig bash 리눅스 bash 환경에서 자동완성 스크립트를 Shell 로 로드 처리는 아래의 명령을 사용하면 된다. $ source <(kubectl completion bash) 프로파일에 적용하려면 아래의 명령으로 프로파일에 적용해 주면 된다. $ echo "source <(kubectl completion bash)" >> ~/.bashrc On MacOS, using bash 맥에서 bash 자동 완성을 수행하려면 아래의 명령으로 자동완성 지원 기능을 먼저 설치해야 한다. $ bre

부업 - 주식으로 용돈벌기 도전

부업으로 삼을 수 있을지 주식에 도전한다. 하고 싶은 것을 다 하면서 살 수 있으면 좋겠지만, 흙수저 출신인 나에게는 꿈과 같은 이야기일 뿐이고, 그렇다고 남달리 능력이 좋은 것도 아니고, 경력관리를 잘해서 주 분야가 있는 것도 아닌 일반 단순 개발자라서 시장에 부름을 받기는 힘든 상황이니 인생 후반기를 대비해야 할 무엇인가를 늦었지만 빨리 찾아야 할 상황이다. 딱히 기술이 있는 것도 아니고, 금손도 아니고, 대인 관계가 그렇게 활발한 것도 아니기 때문에 여러 가지를 고려해 볼 때 주식 투자가 적합해 보인다. 그러나 시드 머니도 없는 상태고, 관련된 지식도 없는 상태라서 아주 조금씩이라도 부업으로 가능성이 있는지를 확인하는 차원에서 용돈이라도 벌어보자는 도전을 해 보려고 한다. 물론 쉽지 않은 도전이지만 최소한 투자한 시간 대비 최저 임금 수준만 유지하면 용돈으로 쓰기에는 만족할 수준일 것 같다. 향후에는 용돈을 넘어 생활비 벌기에 도전할 수 있도록 열심히 해야할 듯 하다. "아무 것도 하지 않으면, 아무 일도 일어나지 않는다." 가능성이 있는 것일지, 성공일지, 실패일지를 미리 고민할 필요는 없다. 돈을 잃는다고 해도 그만큼의 경험을 살 수 있다면 나름대로 성공한 것일거다. 물론 계속된 실패를 반복하지만 않는다면 말이다. 초기 설정 주식에 관해서는 아는 것이 별로 없다. 그냥 상식적인 수준에서 단어만 몇개 알고 있을 뿐이다. 매수/매도 챠트 유/무상 증자 배당 시간외 거래 상/하한 30% 매매 수수료, 거래세 시작은 작게 그러나 향후의 꿈은 크게 하는 것이 좋을 듯 하다. 투자금액 : 100만원 목표비율 : 최저임금 수준으로 일별 +3% 내외 20170518 보유/관심종목 주식시장에 등록된 주식수가 2,000 종목 내외라고 한다. 망할 회사가 아니라면 주가의 흐름 상으로 언젠가는 복구가 될

[취미] 20170511 - 하이런 6점 기록

취미로 활동하던 당구 동호회 (세븐당구동호회)에서 나름대로 열심히 연습을 하면서 몇 가지 궁금한 것이 있었다. 정말 올바른 자세를 취하고 있는 것인가? 내 플레이를 제 3자의 입장에 보면 어떻게 보일까? 샷이 정상적으로 처리되고 있는 것일까? 항상 만나는 사람들이 아닌 전혀 다른 사람들과의 실력 차이는 얼마나 될까? 정말 20점 수지에 맞는 실력을 가지고 있는 것일까? 취미지만 이왕이면 제대로 확인을 해 보고 싶어서 여러 가지를 검색해 보던 중에 큐스코 시스템을 사용하는 구장들이 있다는 것을 알았다. 집에서 가장 가까운 곳을 검색해 보니 신대방 SBS 당구장이 나왔다. 유튜브에서 하이런등의 경기 영상을 많이 보던 곳인데 의외로 가까운 곳에 위치해 있어 용기(?) 내서 다녀왔다. 정액제 동호회가 아니기 때문에 전투적으로 임해야 하는 살벌한 구장이다. 대대 (10분 2,000원) 경기도 많이 해보지 않아서 많이 힘들었지만 중대에서 치는 것과는 다른 기분이다. 일단 무지하게 넓고 힘을 많이 써야할 듯 하다. 2일 동안 4게임을 진행하면서 하이런 4점과 6점을 기록했고, 20, 21, 22 점과의 대결에서 모두 승리했다. 물론 재수(뽀록)가 많이 도움이 되었지만 그래도 상대방과 비교해서 터무니없이 못치는 수준은 아니라는 것을 확인했다. 당연히 기본적인 실력은 내가 모자라다는 것을 느끼지만… 역시나 동영상으로 촬영된 내 플레이 영상을 보니 상당히 많은 문제점들이 존재했다. ㅠㅠ 라스트 샷 순간에 너무 빠르고 힘차게(?) 큐를 내미는 문제 큐선과 시선이 자주 불일치해서 두께를 제대로 유지하지 못하는 문제 어깨 부상 때문에 업샷이 자주 나오는 문제 회전을 많이 줄 때 샷 트릭이 무의식적으로 많이 들어가는 문제 (삑사리 과다) 기타 등등의 문제가 너무나 많다는 사실과 이런데 어떻게 이겼지?? 라는 의문이 든다. 쩝~ 큐스코 구장을 사용했을 때의 좋은 점은 여러 가지가 있다.

[OS] Windows 에서 MSVCR90.dll 오류 발생 대처하기

MSVCR 관련 오류 “MSVCR (Microsoft Visual C++ Runtime)” 관련 오류는 어플리케이션을 직접 개발해서 배포하거나 아니면 다른 어플리케이션을 설치해서 사용할 때 흔히 발생하는 오류 중에 하나기 때문에 큰 문제는 없다. 그러나 조치를 취했음에도 불구하고 동일한 오류가 계속 반복되는 경우라면 상황을 잘 파악해 봐야 한다. 일반적인 발생 원인 거의 대부분은 MSVCR 라이브러리가 설치되지 않았기 떄문에 발생한다. 주로 볼 수 있는 오류 상황은 다음과 같다. 설치가 되지 않은 상황이거나 아니면 버전 또는 아키텍처와 관련되어 라이브러리를 로드할 수 없는 경우도 존재한다. 오늘 이 게시글을 작성하는 이유는 설치도 로드도 모두 잘 되었지만 사용 중에 오류가 발생하면서 어플리케이션이 종료가 되는 경우도 있기 때문이다. 이 경우는 아마도 C++ 코드 작성에서 메모리 처리를 하면서 OS 특성을 타는 부분일 것으로 예상된다. 발생한 오류는 예외 코드 0xc0000417 이며 발생한 모듈은 MSVCR90.DLL 이다. 좀 더 구체적인 상항은 덤프된 정보를 분석해 봐야하지만 일반적인 해결 방법을 적용해 보도록 한다. 해결 방법 해결 방법은 구체적인 오류 발생 정보가 없는 경우라면 아래와 같이 단순하게 적용해 볼 수 있다. 설치가 안되었거나 로드할 수 없는 경우 설치가 안된 상태이거나 설치에 문제가 있거나 아니면 다른 버전과의 문제가 있다면 프로그램 및 기능 을 통해서 기존에 설치되어 있는 것을 제거한 후에 재 부팅해서 다시 설치하는 방식을 사용하면 된다. 설치를 해서 필요로 하는 버전과 아키텍처가 맞는지를 확인해 봐야 한다. 필요하다면 다른 버전의 배포판도 검토해야 한다. Microsft Visual C++ 2008 SP1 재배포 가능 패키지 - 32bit (x86) Microsft Visual C++ 2008 SP1 재배포 가능 패키지 - 64bit (x64) 설치 및 로드 후 문제가 있는 경우 설치도 모두 되어 있고, 정상적으로 어

[취미] 새로운(?) 당구 시스템?

몇 가지 안되는 취미생활 중에 요즘 빠져있는 것이 당구다. 물론 영화 보는 것도 좋아하지만, 너무 활동량이 없어서 운동 겸해서 동호회 당구 (정액제)를 하고 있다. 작년 1월부터 다시 시작을 했고, 3구 기준으로 이제 20점이다. 물론 아직은 제대로 원리를 이해하지는 못하는 수준이지만 개발도 맨땅에 헤딩하면서 배웠듯이 당구도 지금 열심히 헤딩 중이다. 이런 저런 이론적인 것을 동호회나 카페, 유튜브 등에서 읽어보고 휴일에 당구장에서 살 듯이 연습을 해 보지만 역시나 이론과 실제는 너무나 차이가 많다는 것을 체감할 뿐이다. ㅠㅠ 예전에는 거의 4구 경기만 했었기 때문에 오늘 소개하는 것도 역시 4구에 대한 이론 (주로 세리)을 개인적으로 정립하신 정필규님의 자료다. 겨냥점이라는 것은 어려운 것이 아니다. 수구로 제 1 목적구를 맞춘 후에 제 2 목적구를 맞추기 위해서 어떤 곳을 향해서 쳐야 하는지를 정리한 것이라고 생각하면 된다. 여기서 당구의 이론과 각종 시스템을 논의하는 것도 아니고, 내가 좋아하는 취미고, 4구 이론을 3구에도 적용할 수 있을 것 같아서 소개하는 것이다. 아직은 형편없는 수준이지만 몇 가지만 기억하면서 연습하면 될 듯 하다. 타격, 힘, 과다한 회전 등은 공의 성질을 변화시킨다. 최대한 공의 자연스러운 방향과 힘을 유지할 수 있도록 해야 한다. 과다한 스트록은 오히려 독이 된다. 상황에 맞는 스트록을 적용해야 한다. 자신의 회전량을 알아야 한다. 기준이 되는 공의 흐름 또는 라인을 정하고 이에 맞춰서 스트록, 회전 등에 따른 변화를 몸에 익혀야 한다. 당구라는 것이 워낙 다양한 변수들이 조합되는 것이라서, 딱히 정답이라는 것은 없을 수 밖에 없다. 단지 고점자들이 다양한 경험을 기준으로 대략적인 방법을 만들어 놓은 것 (시스템)을 제시하는 것일 뿐이다. 몇 번 시스템을 검토해 보고 따라해 봤지만, 나는 역시 감으로 하는 당구 (무식한 감이 아니라 어느 정도 확률이 높은 나만의 라인을 찾아가고 있다)가 맞는 듯 해서