기본 콘텐츠로 건너뛰기

2017의 게시물 표시

[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구에도 적용할 수 있을 것 같아서 소개하는 것이다. 아직은 형편없는 수준이지만 몇 가지만 기억하면서 연습하면 될 듯 하다. 타격, 힘, 과다한 회전 등은 공의 성질을 변화시킨다. 최대한 공의 자연스러운 방향과 힘을 유지할 수 있도록 해야 한다. 과다한 스트록은 오히려 독이 된다. 상황에 맞는 스트록을 적용해야 한다. 자신의 회전량을 알아야 한다. 기준이 되는 공의 흐름 또는 라인을 정하고 이에 맞춰서 스트록, 회전 등에 따른 변화를 몸에 익혀야 한다. 당구라는 것이 워낙 다양한 변수들이 조합되는 것이라서, 딱히 정답이라는 것은 없을 수 밖에 없다. 단지 고점자들이 다양한 경험을 기준으로 대략적인 방법을 만들어 놓은 것 (시스템)을 제시하는 것일 뿐이다. 몇 번 시스템을 검토해 보고 따라해 봤지만, 나는 역시 감으로 하는 당구 (무식한 감이 아니라 어느 정도 확률이 높은 나만의 라인을 찾아가고 있다)가 맞는 듯 해서

Hexo Plusin Series -- hexo-related-popular-posts 설정하기

Hexo Plugin Series - hexo-related-popular-posts 이 시리즈는 Hexo 블로그를 Gitlab 페이지로 운영하면서 다양한 플러그인들을 테스트해 보고, 나름대로 설정하는 방법을 정리하는 것이다. Overview 태그를 기반으로 관련 포스트들에 대한 링크 목록을 만들고, Google Analytics 의 페이지 뷰를 기준으로 인기 있는 (많은 페이지 뷰를 기록하는) 포스트들을 정렬된 링크 목록을 만드는 기능을 제공하는 플러그인이다. 또한 포스트의 내용에 따라서 관련된 포스트들에 대한 링크 목록을 생성할 수 있고, 다양한 Styles, Thumbnails 등을 지원하고, 다양한 부분에 사용자 정의가 가능하며, 성능과 관련해서 캐싱 기능도 포함하고 있다. Notes 이 글에서는 _config.yml 파일에 설정을 다양하게 지정한다. 따라서 설정을 추가/변경하는 경우는 기존에 실행 중이던 Hexo Server를 재 실행해 줘야 하며 다음과 같이 처리하는 것을 권장한다. hexo clean # 기존 캐시 및 Static content 삭제 (db.json) hexo g # 신규 Static content 생성 (/public) hexo server --draft # Draft 버전도 동일하게 서비스 Features 이 플러그인은 다음과 같은 기능을 제공한다. 연관된 포스트에 대한 링크 리스트 생성 (태그 연관성과 내용 연관성) 인기 있는 포스트에 대한 링크 리스트 생성 (페이지 뷰 수 기준 정렬) 포스트에 대한 방문자 수 (페이지 뷰) 표시 Notes 이 플러그인의 인기있는 게시글 및 페이지 뷰 처리는 Google Analytics 연계를 통해서 처리되며, 설정이 쉽지않고(?) 관련된 구글 계정이 구성되어 있어야 하므로 아래의 설정 부분을 검토하고 이 플러그인을 사용할지 여부를 결정하는 것이 좋다. Settings 설치는 아래의 명령을 통해서 Hexo 블러

node-gyp 빌드 오류가 발생하는 경우 대처법

NPM Install 도중에 node-gyp 빌드 오류가 발생하는 경우 Node 기반의 프로그램을 작성하면서 필요한 패키지들을 설정하고 npm install 명령으로 설치를 하다보면 패키지 설정에 의해서 설치 후 빌드 작업이 진행되는 경우가 있다. 이런 경우에 빌드 환경이 제대로 구성되지 않아서 오류가 발생하는 경우가 있어서 정리해 본다. Warning 이 문서에서 모든 환경을 다루는 것이 아니고 msbuild 처리 환경에 대해서만 검토 한 내용이므로 다른 환경인 경우는 적용되지 않는다. 오류 상황 Node 기반에서 돌아가는 어플리케이션을 Github에서 다운로드 받아서 테스트를 위해서 npm install 명령을 했을 때 뜬금없이 msbuild 관련한 환경설정이 부족해서 오류가 발생했다. Python 2.5 이상 3.0 이하 설치 해야 한다는 오류 설치 했더니 .NET Framework 2.0 이상을 설치 해야 한다는 오류 설치 했더니 VCBuil.exe 가 존재하지 않으니 .NET Framework 2.0 SDK 나 Visual Studio 2005를 설치 해야 한다는 오류 기타 등등... 상기의 상태에서 더 이상 진행 불가!!! 물론 전부를 설치하면 되겠지만 그렇다고 쓰지도 않는 툴들을 설치하는 것은 문제가 있어 보인다. 오류 원인 오류의 원인은 간단하다. 해당 어플리케이션 패키지에 정의된 의존성 패키지들 중에 설치과정에서 빌드를 거쳐야 하는 것이 존재하며 Python 으로 구현된 것들과 VC 로 구현된 것을 MSBuild를 이용해서 처리하기 때문이다. 일반적으로 Node 기반의 개발에서는 VSCode 나 Atom 등의 도구와 NodeJS, Git 등의 툴들만 사용하기 때문에 관련된 다른 언어나 IDE 환경이 존재하지 않기 때문이다. 오류 해결 방법 가장 쉬운 방법은 모든 언어와 IDE 개발 환경을 맞춰주면 전혀 문제가 없겠지만, 쓰지도 않는 환경을 단지 설치 상의 빌드 때문에 설치하고 지우는 것도 웃기다. 역시 구글링을 하다보니 이런

[Kubernetes] 설치 시점에 특정 버전 지정하기

Notes 이 문서는 Ubuntu 에 Kubernetes 를 설치할 때 특정 버전의 바이너리를 지정해서 처리하는 방법을 설명하는 것이기 때문에 전체 설치 과정을 다루고 있지 않습니다. 설치에 관련된 문서는 iamartin 님 블로그에 kubeadm을 이용해서 아주 쉽게 Kubernetes 설치하기 에 상세하게 기술되어 있으므로 이 부분을 참고하시면 됩니다. (향후 변경된 사항이나 요청이 있다면 정리된 버전을 추가로 올릴 수도 있습니다) 참고로 Kubernetes 를 설치하는 도구들은 상당히 많이 존재하며 향후 kubeadm 으로 통합될 것으로 개인적인 예상을 하고 있기 때문에 다른 설치 도구에 대한 부분은 따로 정리하지 않고 있습니다. Kubernetes 특정 버전으로 구성하기 이 문서를 정리한 이유는 Kubernetes가 버전 향상 작업을 수시로 진행하고 있고, 각 종 설치 도구는 latest 버전 을 대상으로 운영되고 있기 때문에 솔루션 개발 중이거나 또는 다른 이유로 버전을 고정해야 할 경우가 있을 수 있기 때문입니다. 기본 설치 관련 정보 ubuntu 에서 설치는 초기에 아래와 같이 4 단계의 작업을 거치게 됩니다. 물론 kubeadm 을 사용하는 경우는 다른 환경에서도 거의 유사하게 사용됩니다. Apt Key 생성 $ curl http://packages .cloud .google .com /apt/doc/apt-key .gpg | apt-key add - Kubernetes Source Repository 생성 (데비안 패키지) cat <<EOF > /etc/apt/sources .list .d /kubernetes .list deb http://apt .kubernetes .io / kubernetes-xenial main EOF Apt Repository 갱신 apt- get update 필수 프로그램 설치 apt -get install -y docker . io apt -get install -y k

[VHD] 부트 시점에 VHD 자동 마운트 하기 2 - 스크립트 버전

스크립트 방식으로 마운트 및 해제 조정하기 [이전 게시글] 에서 diskpart 를 이용한 작업 스케줄러 처리로 부트 시점에 자동 마운트 처리를 정리 했었다. 막상 실제 사용하는데 몇 가지 불만 사항이 생겨서 스크립트를 사용하는 방식으로 변경해 본다. 여러 개의 VHD 를 마운트 시킬 경우에 Task 를 여러 개 등록하는 문제 (한번에 여러 개 처리하는 방법을 못 찾음. ㅠㅠ) 특정 사용자인 경우만 처리하는 경우 (작업 스케줄러로도 처리는 가능하지만 두가지 방식 혼용이 싫음) 쉽게 추가/변경해서 재 시작 없이도 처리하고 싶음. 그냥 작업 스케줄러가 귀찮음. 위의 같은 이유로 아래와 같이 스크립트 처리를 추가했다. 기본은 diskpart를 이용하는 방식이다. 윈도우에서 스크립트를 처리할 때는 항상 관리자 권한 여부가 상당히 껄끄럽다. 이런 저런 방법들도 많다. 대략적으로는 아마 아래와 같은 형식들이 될 듯 하다. 레지스트리를 조정해서 항상 Cmd.exe 가 관리자 권한으로 실행되도록 한다. UAC 조정 또는 로그인 사용자를 관리자인 것으로 처리한다. 사용자를 Administrator 로만 사용한다. … 그런데 이런 저런 시스템 설정을 하기는 싫고 순수하게 스크립트에서만 이를 해결할 수는 없을까? 실행되는 스크립트를 관리자 모드인 것으로 처리하기 이런 저런 자료를 검토하고 나름대로 관리자 모드로 실행 부분을 생각해 보니 의외로 쉽게 할 수 있는 방법이 있다. 그것도 시스템을 건들이지 않고 스크립트 만으로 조정해서 가능하다. @echo 관리자 권한 검증 > %windir %\ admin.confirm 위의 명령은 %windir% (보통 C:\Windows) 경로에 “관리자 권한 검증” 이란 문자열을 출력해서 admin.confirm 이라는 파일을 생성하는 것이다. 당연히 관리자 권한이 없으면 액세스가 거부되었습니다. 라는 오류 메시지를 보게 된다. 이를 이용해서 아래와 같이 관리자 권한을 탈취(?)하는 코드를

[VHD] 부트 시점에 VHD 자동 마운트 하기 1 - Task Scheduler 버전

How to Auto-mount a VHD at startup in Windows 8 and 10 데이터 백업과 관리는 항상 중요하다. 프로젝트의 경우는 더욱 더 중요하다. 소스관리는 Git 등을 이용해서 관리를 하면 되지만, Open source 검토나 개인적인 문서 등의 자료는 딱히 편한 방법을 찾지 못해서 Sync 툴들을 사용하던 방법을 VHD 파일 단위로 구별해서 관리하고 주기적으로 VHD 파일을 백업하는 방법을 적용해 보려하니 매 부팅마다 마운트해 주는 것이 또 답답하다. 이런 저런 관런 자료를 찾다보니 괜찮은 (쉬운?) 방법이 있어서 정리해 놓도록 한다. General Steps Project 등의 구별로 VHD(x) 파일을 생성한다. 마운트 처리할 Diskpart 스크립트 파일 을 생성한다. 작업 스케줄러에 부트 타임 스케줄 을 구성한다. 3.1. 보안 옵션에서 로그인과 상관없이 실행 선택 3.2. 트리거 생성 후 동작 옵션을 프로그램 시작 으로 설정 3.3. 작업 지연 시간 1분 으로 설정 3.4. 동작 새로 만들기 후 프로그램/스크립트에 diskaprt 설정 3.5. 인수 추가 옵션에 2.번에서 만든 /s 스크립트 파일 지정 3.6. 전원옵션에 AC 전원이 켜져있는 경우만 작업 시작 옵션 해제 3.7. 사용자 보안 정보 입력 PC 재 부팅으로 정상 동작 여부를 검증한다. Detail View diskpart에 옵션으로 지정할 스크립트 파일이므로 확장자는 상관없이 지정해도 된다. select vdisk file="C:\test.vhd" attach vdisk assign letter=D select vdisk : 실제 마운트할 VHD 파일 경로를 문자열로 지정한다. assign : 연결할 드라이브 레터를 지정한다. 위의 스크립트를 저장한다. 이 샘플에서는 S:\VMs\Scripts\AutoMount.txt 이름으로 저장했다. 윈도우키 + R 을 눌러서 작업 스케줄러 를 실행한다. (

[Node] Node 관련 패키지들 간략 정리. (갱신 중)

다른 작업을 진행하다가 정말로 오랜만에 다시 Node.js 관련 오픈 소스 분석 작업을 하는데 참조하고 있는 패키지들이 많기도 하다. 아는 것보다는 모르는 것이 더 많아서 뭐가 뭔지 하나도 모르겠다. 앞으로 작업을 하면서 좀 더 다양한 패키지들을 자세하게 알아야 하지만, 당장은 제목과 기능이라도 알아야 이해를 할 수 있을 듯 하다. ㅠㅠ Packages for NodeJS bluebird Full featured promise library with unmatched performance Examples 설치 npm install bluebird 활용법 var Promise = require("bluebird"); References http://bluebirdjs.com/docs/getting-started.html https://github.com/petkaantonov/bluebird bunyan Simple and fast JSON Logging Module for node.js services Examples 설치 $ npm install bunyan 활용법 var bunyan = require('bunyan'); var log = bunyan.createLogger({name: "myapp"}); log.info("hi"); References https://github.com/trentm/node-bunyan camelcase Convert a dash/dot/underscore/space separated string to camelCase: foo-bar -> fooBar Examples 설치 $ npm install --save camelcase 활용법 const camelCase = require('camelcase'); camelCase('foo-bar'); //=> 'fooBar'

Console 인코딩 변경하기

Console/Cmd 에서 인코딩 변경하기 Markdown 문서를 HTML 문서로 변경을 하는데 Universal Document Converter 인 Pandoc 을 사용해서 작업 중인데 Command Console 에서 뜬금없이 모든 한글이 깨져서 나오는 증상이 발생했다. 발생 원인 문제의 발생은 모든 Markdown 문서와 코드들을 UTF-8 기준으로 작업을 했지만 Command Console 은 Windows 기본 인코딩인 949 를 사용하기 때문에 변환했을 때 문자열이 깨진다. 해결 방법 문제의 해결은 은근 간단하다. # 영문 모드로 변경 > chcp 437 # 한글 모드로 변경 > chcp 949 # UTF-8 모드로 변경 > chcp 65001 예외 사항 만일 위의 명령을 실행했을 때 잘못된 코드 페이지 라는 메시지가 출력될 경우는 윈도우 10 버전일 경우는 제어판 > 국가 또는 지역 > 관리자 옵션 탭 에서 유니코드를 지원하지 않는 프로그램용 언어 부분에서 시스템 로캘 변경 버튼을 눌러 언어를 선택하면 된다. 만일 다른 윈도우 버전이라면 위와 유사한 메뉴가 있을 것이므로 찾아보고 처리하면 될 듯 하다. 참고 사항 Console 창의 타이틀 메뉴에서 속성을 통해서 폰트와 여러 가지 속성을 설정할 수 있다. 폰트는 다른 방식으로 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont 에서 코드 페이지 값에 맞는 키 (ex. 949, REG_SZ, 돋움)를 생성해서 사용할 폰트를 설정해도 된다. Unix 또는 Linux 에서는 /etc/my.conf 파일에 default-character-set=utf8 을 설정해서 인코딩을 변경하면 된다고 하는데 사용 환경이 아니라서 검증은 해 보지 못했다. MYSQL 을 사용하는 경우라면 MYSQL command 창에서 set character set euckr; 명령

[Java] Divide by Zero 예외는 항상 발생할까?

Divide by Zero === Exception?? Really? 흔히 산술연산을 처리할 때 0으로 나누면 Divide by Zero Exception 이 발생한다고 알고 있다. 실제 연산 샘플을 구성해 봐도 실제 Exception 이 발생한다. public static void main (String[] args) throws java.lang.Exception { int aa = 100 / 0; } 위의 코드는 Exception in thread "main" java.lang.ArithmeticException: / by zero 예외가 발생한다. 정말 모든 산술 연산이 이렇게 적용될까??? Really?? 책이나 관련된 정보를 찾아보면 보통 정수를 0으로 나누면 이라는 전제 조건이 있다. 그럼 정수가 아닌 경우는 어떻게 될까? 0 이 아닌 부동 소수점 값을 0 으로 나누면 부호 있는 Infinity 가 되고 예외는 발생하지 않는다. 1.0 / 0.0 은 Positive-Infinity 가 된다. -1.0 / 0.0 은 Negative-Infinity 가 된다. 0 이 아닌 정수를 정수 0 으로 나누면 ArithmeticException 이 발생한다. 음!! 위와 같이 정리할 수 있다. 그런데 0.0 / 0.0 은 뭐가 나올까? 결론은 isNaN 상태가 된다. 즉, 연산 불가라고 봐야 한다. 이런 상황은 실제 변수나 VO 등에 Assign 할 경우에는 예외가 없으니 큰 문제가 없지만 JSON 으로 변환하는 등의 작업을 진행하면 뜬금없이 "Infinity", "isNaN" 과 같은 값을 만나게 된다. 어디서 저런 값이 나오는지 모르겠다. 내가 만든 코드에서는 문자열 처리한 적이 없다. 문자열이 Float, Double,.. 등의 자료형에 입력되면 오류가 발생하기 때문에 내가 만든 코드 문제가 아니다. ... 대략 이런 반응들이 나올 듯 하다. ㅠㅠ 그럼 아래과 같은 코드는

[Markdown] 마크다운과 관련해서 특수문자를 정리해 보자.

마크다운으로 문서를 정리할 때 가끔 또는 자주 예약된 문자 처리 때문에 난처한 경우가 발생한다. 이 내용을 정리하게 된 것도 마크다운 테이블을 구성하는데 예약어 ( '|' ) 문자 때문이다. 일반적으로 'pipe' 또는 'vertialcal bar' 라고 표현하는 문자인데 테이블을 구성하는 예약어다. 마크다운 문법에서 설명하는 것과 같이 여러 가지 방법을 적용해 봤지만 적용되지 않는다. 해결 방법은 의외로 쉽다. 마크다운이 결국 렌더링되서 HTML 로 표현되는 것이기 때문에 아예 HTML 문자를 사용 하면 된다. 아래의 표는 참조한 사이트에서 필요한 몇 가지만 발췌한 것이므로 참고 사이트에서 전체 내용을 확인하면 된다. Symbol HTML Number HTML Name Description ! &#33; exclamation point " &#34; &quot; double quotes # &#35; number sign $ &#36; dollar sign % &#37; percent sign & &#38; &amp; ampersand ' &#39; single quote ( &#40; opening parenthesis ) &#41; closing parenthesis * &#42; asterisk + &#43; plus sign , &#44; comma - &#45; minus sign - hyphen . &#46; period / &#47; slash : &#58; colon ; &#59; semicolon < &#60; &lt; less than sign = &#61; equal sign > &#62; &gt; greater than sign ? &#63