한빛미디어에서 굉장히 재미있는 알고리즘 책이 번역되었다. Hello Coding 그림으로 개념을 이해하는 알고리즘아디트야 바르가바 지음, 김도형 옮김 책의 인트로에는 "누가 이 책을 읽어야 하나요?" 라는 질문에 "프로그래밍을 전혀 경험해보지 못한 비전공자 (중/고등학생, 대학생, 일반인)" 라는 답을 던지고 있는데 정말 충실한 답변이라고 할 수 있을 정도로 쉽고 친절하게 알고리즘에 대한 개념을 설명한다. 이 책의 가장 큰 매력은 번역서이지만 크게 거부감이 들지 않는다는 점이다. 번역에 많은 공을 들인 것이 큰 부분을 차지하겠지만, 어려운 개념이 없다는 점도 주목해야 한다. 그만큼 프로그래밍을 모르는 사람을 위한 서적이기도 하다는 의미이다. 이 책의 목차를 개인 주관대로 재정의 해보면 다음과 같다.1. ..
아마도 나와 유사한 업무를 하는 시스템 프로그래머는 대부분 회사 업무에 치여 다른 무언가를 한다는 것은 상상하기 힘들 것이다. 간혹 그렇지 않은 곳도 많지만 …여하튼 시간이 종종 생겨도 다른 무언가를 뚝딱뚝딱 만들거나 미뤘던 공부를 하면서 시간을 보냈는데 우연찮게 GitHub 프로젝트에 발을 담그게 됐다. 나의 첫번째 컨트리뷰트는 TensorFlow-kr 문서 번역. 영어가 능통해서 문장을 술술 풀어 쓰지는 못하고. 또한 TensorFlow의 구조에 대한 이해가 부족하여 일단 다른 사람이 번역한 내용의 소소한 오타 수정이나 마크다운 문법에 대한 오류를 정정해서 컨트리뷰트 하고 있다.컨트리뷰트에 대한 벙법은 홍콩과기대의 김성훈 교수님이 어떤 절차를 수행하면 되는지 너무나 상세히 동영상(Github Flow..
211 시스템 상태나 시스템 도움말 응답214 도움말 메시지 [수신자 사용법이나 특별한 비표준 명령어에 대한 정보; 이 응답은 사람에게만 유용하다] 220 서비스 준비 완료 221 서비스 종료된 전송 채널 250 요청된 메일 동작 확인, 완료 251 로컬 사용자가 아님; 로 전달 될 것이다.354 메일 입력 시작; 종료는 .421 서비스를 이용할 수 없음, 닫힌 전송 채널 [서비스가 종료되어야 한다는 것을 알고 있다면 이것은 모든 명령에 대한 응답일 수 있다] 450 요청된 메일 동작이 수행되지 않음: 메일박스를 이용할 수 없다 [예를들어, 메일서버가 바쁜 상태] 451 요청된 동작이 중단 됨: 처리 중 내부 오류 452 요청된 동작이 수행되지 않음: 시스템 저장소가 충분하지 않음500 구문 오류, 인식..
회사에 처음 입사하게 되면 사내 주변 정세를 잘 모르기 때문에 업무에 매우 집중할 수 있다. 하지만 재직 기간이 길어지면 회사의 정치나 불합리한 것들이 눈에 들어오기 시작하는데, 이때부터 퍼포먼스가 감소하거나 회사에 불만이 생기기 시작한다.회사 정치에 대해서는 언급할 필요조차 없을 정도로 널리 알려져 있고, 불합리한 것들을 살펴보면 공평하지 못한 상벌이나 업무 쏠림, 동료의 무능을 눈 감아주는 관리 등등이 있겠다.근데 가만히 생각해보면 일개 직원도 이러한 것들을 관찰하는 통찰력이 있는데 왜 관리직급이나 CEO는 그렇지 못한걸까? 작은 것들에서부터 시작된 snowball effect는 결국 회사를 무너뜨릴 수도 있다. 근데 실상 그런 상황이 닥쳐와도 윗사람들은 모른다. 뭐가 잘못 된 건지.. 군대로 따지자..
이러저러한 이유로 Linux에 message queue를 사용하고 있는데, 메시지의 길이가 일정 수치를 넘어가면 문제가 발생했다. sysctl로 확인하고 값을 변경해도 동일. $ sysctl kernel.msg{max,mni,mnb} kernel.msgmax = 65535 kernel.msgmni = 16 kernel.msgmnb = 65535 $ 각 고유한 값을 변경하는 방법은 아래와 같다. $ sysctl -w kernel.msgmax=655350 kernel.msgmax = 655350 보이기에는 잘 변경 된 것처럼 보이지만 실제로 긴 문자열은 처리가 안되더라. 하아. 오랜만에 커널 코드를 열어보자. 서버에서 사용하는 커널 버전은 아래 링크를 통해 구했다. https://www.kernel.org/..
※ 본문에 티스토리 기술 문제로 이미지를 로드 할 수 없게 되었는데 읽는데 큰 지장은 없을 겁니다 이미지에서 문자를 추출하는 기술은 광학 문자 인식(Optical character recognition; OCR)이라는 이름으로 불린다. 이미 많은 OCR 기술이 오픈소스로 등록되어 있는데 여기서는 tesseract-ocr을 사용해서 이미지에 있는 문자를 추출해 보도록 하자. tesseract는 구글에서 지원하는 프로젝트이고 인식률이 OCR 기술 중 굉장히 높은 편에 속한다고 한다. 우선 tesseract-ocr을 다운로드 받고 설치해야 하는데 과정은 아래와 같다. (wiki를 참고하면 더욱 자세하게 확인할 수 있다) 필요한 패키지를 설치한다. $ sudo apt-get install autoconf aut..
tesseract-ocr을 configure 하다보면 아래와 같은 오류가 출력되는 경우가 있다. configure: error: Leptonica 1.74 or higher is required. Try to install libleptonica-dev package. 무려 Ubuntu 16.04 인데 말이다!! 우선 이미지 프로세싱에서 사용되는 leptonica 버전을 1.74 혹은 그 이상으로 올려야 한다는 의미인데, tesseract-ocr wiki 에서 아래와 같이 관련된 내용을 찾아 볼 수 있다. but if you are using an oldish version of Linux, the Leptonica version may be too old, so you will need to build..
리눅스 시스템은 부팅시에 자동으로 스크립트 실행을 통해 특정 데몬의 시작 여부를 결정할 수 있는데, 이를 간편하게 제어할 수 있도록 제공되는 명령어라 chkconfig 되시겠다. 명령어의 도움말을 보면 아래와 같이 무척 간단해 보인다.chkconfig --help 우선 이 명령어를 이해하기에 앞서 CentOS의 부팅모드를 이해하고 있어야 한다. /etc/inittab 에서 현재 시스템의 모드를 확인할 수 있는데, 샵(#)은 주석이니 신경 쓸 필요 없고 마지막에 id 값을 보면 3 (Full multiuser mode)으로 설정 된 것을 기억한다. 가장 보편화되어 사용하는 sshd의 상태를 예제로 살펴보기로 한다. 현재 sshd의 상태는 아래와 같고, 0~6까지 나타내는 숫자는 바로 위에 inittab에서..
Linux에서 Application을 개발하다 보면 가장 힘든 것이 데몬이 "어쩌다가" 죽는 경우이다. 죽는 빈도가 잦거나 특정 상황이 유추되면 그나마 괜찮은데, 짧게는 일주일, 길게는 한달에 한번 죽는다면 디버깅 하기도 힘들고 관련 정보를 얻는 것도 녹록치 않다. 이때 유용하게 사용할 수 있는 것이 CentOS 6 이상에서 기본 제공되는 abrt를 이용하는 것이겠다. (CentOS 5 이하는 아래 내용이 포함되어 있지 않다.) 우선 이 기능은 프로그램 상에 올라가는 데몬이 죽게되면 coredump를 파일로 남기는 것이고, 후에 이 coredump를 gdb에서 활용해서 bracktrace 등 다양하게 디버깅이 가능하겠다. 기능을 활성화하는 방법은 아래와 같다. 1. /etc/abrt/abrt-action..
"만들면서 배우는 워드프레스"는 최근들어 웹언어와 블로그에 관심이 많아서 읽게 된 책이다. 블로그의 종류에는 여러가지가 있지만 개인의 자유도가 가장 높은 것이 아마도 워드프레스일텐데 이 책은 내 호기심을 자극하기에 충분했다. 하지만 결론부터 이야기하자면 기대한 콘솔이나 터미널에서의 설정은 많이 다루지 않는다. cafe24를 통해 프로그램 자동 설치를 이용하기 때문에 설치과정에서 약간의 실망을 했다고 해야하나? 물론 터미널에 익숙하지 않은 비개발자를 위해서는 무척 쉽게 쓰여진 부분이기도 하다. "앞으로 우리가 맞이할 미래는 극단적 미래(Extreme Future)가 될 것이다." 책 중간에는 완벽한 블로그를 위해 그라바타(Gravatar) 서비스 까지 설명으로 다루고 있는데, 정말 블로그의 구석구석 까지 ..
티스토리 통계 데이터의 부족함에 갈증을 느끼고 구글 애널리틱스를 붙였는데 꽤 흥미로운 것들이 많다. 그 중 시간대 별로 열린 세션을 살펴보면 아래와 같은 재미있는 사실을 유추할 수 있다. 1. 나름 기술블로그다보니 주말(4월8일 토, 4월9일 일)에는 방문자 수가 급격히 떨어진다. 2. 평균적으로 16시~17시 사이에 가장 많은 세션이 열린다. 성급한 오류일지 모르겠지만 많은 개발자들이 그 시간쯤 오후의 나른함을 끝내고자 웹 브라우저를 여는 것이 아닐까. 월 단위로 데이터가 쌓이면 또 어떤 재밌는 결과가 나올런지. 애널리틱스 관련해서 예전에 몇 가지 정리한게 있는데 필요할 때 살펴보면 좋다. https://jybaek.github.io/dev/2016/07/20/use-google-analytics/
프로그램을 협업으로 개발하다보면 어느정도 규칙이 필요하다. 그렇지 않고 본인 스타일대로 개발을 시작하면 나중에 merge된 소스는 엉망이 될 수 있기 때문이다. 이런 사태를 방지하기 위해 프로그래밍 규칙은 변수명, 함수 스타일, 들여쓰기 등등이 있지만 여기서는 주석에 대해 다뤄본다. (이러한 규칙은 프로젝트 별로 다르고, 언어마다 천차만별이다.)이 포스팅은 주석을 일관된 형식에 맞춰 달 수 있도록 도와주는 툴킷인 Doxygen에 대한 설명이다. 우선 Doxygen은 Vim의 툴킷으로 아래 링크에서 다운로드할 수 있다. http://www.vim.org/scripts/script.php?script_id=987본인이 사용하는 Vim의 버전에 맞는 툴킷을 받아 설치하도록 하자. 설치는 다운로드 받은 Doxy..
앞서 Cloud Shell을 이용해서 인스턴스에 접속하는 방법을 살펴봤는데, 이번에는 내가 사용하는 머신에서 직접 SSH를 접속하는 방법에 대해서 설명한다. 환경은 리눅스(우분투)지만 다른 OS라도 크게 다르지 않을 것이다.전체 시나리오를 요약하면 다음과 같다.1. 로컬에서 ssh 접속을 위한 rsa key 생성 2. 생성한 key 를 Google Cloud Platform 콘솔에 등록천천히 살펴볼텐데 우선 GCP에 등록할 rsa key 를 생성해야 한다. rsa key 의 default는 id_rsa 라는 이름으로 지정 되는데 혹시 이미 사용중일 수도 있으니 적당한 이름으로 변경해서 사용하도록 하자. $ ssh-keygen -t rsa -f ~/.ssh/[KEY_FILE_NAME] -C [USERNAM..
GCP 는 기본적으로 Google Cloud Shell 을 제공한다. Cloud Shell 에서는 프로젝트를 관리하거나 인스턴스를 제어 하는 등 웹에서 할 수 있는 대부분의 것들을 Shell 에서 사용할 수 있도록 해준다. 사용하려면 우측 상단에 터미널 아이콘을 클릭하도록 한다.잠시 기다리면 브라우저 하단에서 Shell 을 확인할 수 있는데, 새로운 브라우저로 빼서 확인해보도록 하자. 사용 가능한 대부분의 명령어는 gcloud 라는 커맨드로 제공되며 각 인자는 tab 으로 단어 자동완성을 지원한다. 공백에서 tab을 누를 경우 사용 가능한 인자 목록이 출력되니 참고하도록 하자.아래는 간단하게 인스턴스 목록을 출력해보는 과정이다. 과정에서 각 인자마다 tab 을 눌러 사용 가능한 명령어를 확인해보았다.oo..
무료 크레딧 기간동안 부지런히 테스트를 해야 한다. 이번에는 Compute Engine 에 VM 인스턴스를 생성해보도록 하겠다. VM 인스턴스는 가상의 서버가 존재하는 것처럼 사용하는 것이 가능하도록 해준다. 서버의 용도는 개인에 따라 구분되겠다. 웹서버가 될 수도 있고, 기타 앱 테스트를 위한 공간이 될 수도 있다.우선 아래 그림처럼 메인 대시보드에서 Compute Engine 항목에서 VM 인스턴스를 클릭하도록 한다.최초 진입시 화면은 아래와 같다. 샘플 앱을 제작하려면 "빠른 시작 사용"을 클릭하면 되고 직접 모든것을 설정하려면 "만들기" 버튼을 선택하면 되겠다. ("가져오기" 버튼은 cloudendur 라는 곳에 있는 데이터를 마이그레이션 하는 듯?)기본적인 화면 구성은 아래와 같다. 크게 정리해..
GCP 관련된 한글 문서는 구하기 쉽지 않은데, 한빛미디어에 마침 좋은 책이 있다. 이 책의 가격은 14,000원이지만, ebook으로는 무료 제공된다. 내 경우에는 Google On Board 행사에 참여해서 책을 받을 수 있었다.당시 페이스북 유저그룹 부스에서 받았는데, 책을 건네주신 분이 저자였다는 사실도 나중에 확인했다 (...) 여튼 그 날 교육으로 들었던 거의 모든 내용이 이 책에 정리되어 있다고 봐도 무방하다. 가히 AtoZ 라고 표현할 수 있지 않을까?google cloud platform을 시작하면서 생소한 용어나 기능이 왕왕 있는데 책에 예제와 함께 상세히 소개가 된다. 목차는 GCP소개, IAM 권한, 네트워크, 저장소, 빅쿼리, 머신러닝 등으로 구성되어 있지만 개인적으로 가장 큰 흥..
우선 GCP에서 무엇인가를 하려면 프로젝트를 등록해야 한다. 서버 용도나, 기계학습 용도나 프로젝트 단위로 관리되는 것으로 보인다. 여기서는 기계학습을 사용하기 위한 준비과정을 다룰텐데, 기계학습 API를 사용하려면 우선 "사용자 인증 정보"가 필요하다. 그것보다 더 먼저 필요한 것은 프로젝트를 등록하는 것이겠다. (사실 모든 것의 기본은 사용자 인증 정보이다.) 아래처럼 새 프로젝트를 등록하도록 한다. 프로젝트 이름은 일부 특수문자는 사용할 수 없으며 소문자로 자동 변환 된다.프로젝트에 적당한 이름을 붙이고 "만들기" 버튼을 누르면 프로젝트가 생성이 된다. 진행되는 과정을 잠시 기다리도록 한다.이제 프로젝트가 완성되었고, 앞서 언급한 사용자 인증 정보를 만들어야 한다.우선 API 키를 만들도록 한다. ..
- Total
- Today
- Yesterday