코딩소림사 스터디 – 알고리즘 문제해결전략 #1

금번 스터디는 구종만 님의 매우 명저 “알고리즘 문제해결 전략” 으로 8주간 진행합니다.

개인적으로는 분량도 짧고(!) 내용도 알찬 한주영 님의 “개미수열을 푸는 10가지 방법”으로 진행하길 원했으나 다수결에 밀려(ㅜㅜ) “알고리즘 문제해결 전략” 으로 선정되었습니다.

사실 “알고리즘 문제해결전략”은 매우 명저이고 저도 참 좋아하는 책입니다. 저자분이 그 유명한 알고스팟 운영자시기도 하구요. 많은 분들께서 아주 의욕적으로 알고리즘 주제를 깊이 있게 공부하길 원한다는 의미인 듯 하여 매우 기쁩니다.

아래는 스터디 ppt 입니다.

[펌] 임도형 님의 예외처리 가이드

4년 전 현재 직장입사 후 약 한 달 정도 함께 근무하였던 임도형 님의 예외처리에 대한 명 ppt 2개를 소개한다.

첫번째 ppt 는 java 예외 처리의 원칙에 대한 내용이고

두번째 ppt 는 언제 어디에 예외를 남길지에 대한 내용이다.

 

요약하면

  • 발생하는 예외를 뭉개지 마라. IDE로부터 자동생성된 e.printStackTrace() 만 남기는건 아무 처리도 안하는 것 만 못하다.
  • caller / callee 의 경계에서 예외를 처리하면 로그의 중복/누락을 방지할 수 있다.
  • 해당 상황을 인지할 수 있는 충분한 정보를 남겨라.

 

부연하자면

Exception 이란 정의되지 않은 동작을 처리하는 규약이다. 개발자가 정의한 io 의 범주를 벗어날지라도 우리는 이를 처리하는 규약을 정의할 수 있다.

java 에는 크게 두 가지 Exception 이 존재한다.

  • CheckedException
  • UncheckedException(=RuntimeException)

CheckedException 의 경우, 처리의 기준이 명백하고 프로그램은 복구가 가능하다. 처리에 크게 고민할 필요가 없다.

문제는 RuntimeException이다. RuntimeException이 발생하였다는 것은 이 프로그램이 복구 불가능한 상태에 진입하였다는 의미이다. 아래 소개된 임도형 님의 ppt 는 RuntimeException 을 어떻게 잘 처리할지에 대한 내용이다. Exception 처리같은 경우 충분한 경험이 없다면 매끄럽게 해결하기가 어려운데, 이 ppt는 실천적인 가이드를 제시해주는 매우 훌륭한 자료이므로 java 개발자라면 반드시 한번은 읽어볼 필요가 있다.

 

 

python으로 minecraft 를 해보자 #1

아이들 코딩 교육을 어떻게 하는게 재미있을까 이것 저것 알아보다 결국 minecraft 로 결정

minecraft로 여러가지 재미있는 일을 할 수 있다(..고한다.) 그 중에 하나가 malmo project 인데, 개인이 쉽게 구성하기 어려운 unsupervised learning 환경을 minecraft 로 제공하는 프로젝트다.

이 글에선 malmo 는 다루지 않고 minecraft – python 인터페이스를 어떻게 구성하는지만 정리한다.

prerequisite

python 은 설치되어 있어야 한다.

python 실행환경이 minecraft 에서 접근 가능해야 한다.

 

minecraft 설치

설치 : https://minecraft.net/ko-kr/
주의할 점: windows 10 edition 은 설치하지 말 것. python 인터페이스를 구성할 수 없음
현재 설치할 수 있는 가장 최신 버전은 1.11.2 이다.

minecraft forge 설치

minecraft mod 를 설치할 수 있도록 도와주는 tool
처음 설치했던 minecraft와 같은 버전으로 설치한다.
설치 : https://files.minecraftforge.net/

raspberry jam mod 설치

본래는 raspberrypi 에서 minecraft 를 동작시키기 위한 mod.
허나 이 mod 를 설치하면 python 인터페이스를 바로 구성할 수 있다.
설치 : https://github.com/arpruss/raspberryjammod/releases

  1. 위 링크에서 mods.zip 을 받은 후 %APPDATA%\.minecraft\mods 디렉토리 안에 압축 해제한다.
  2. 위 링크에서 python-scripts.zip 을 받은 후 %APPDATA%\.minecraft 디렉토리 안에 압축 해제한다.

확인

minecraft 를 실행한다.

mc1

실행환경이 forge 로 되어있는지 확인한다.

mc2.PNG

%APPDATA%.minecraft\mcpipy 디렉토리 안에 포함된 예제 코드 중 아무거나 minecraft 안에서 실행해 본다.

실행 방법은 /py [python filename] 이다.

mc3.PNG

openAI gym 을 windows 에서 실행하는 방법

윈도우에서 openAI gym 환경을 구성하는 가장 쉬운 방법을 공유한다.
cygwin 이나 mingw 보다는 windows10 에 포함된 linux subsystem 사용을 권한다.

준비물

dependencies 설치

# dependencies 인스톨
sudo apt-get update
sudo apt-get install cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev libboost-all-dev libsdl2-dev swig git g++

# anaconda 로 python3 설치
wget https://repo.continuum.io/archive/Anaconda3-4.3.0-Linux-x86_64.sh
./Anaconda3-4.3.0-Linux-x86_64.sh

# graphic driver 설치
sudo apt-get install nvidia-319 nvidia-settings-319 nvidia-prime

export DISPLAY=:0

 

vcxsrv 설치

https://sourceforge.net/projects/vcxsrv/

 

gym 설치

pip 로 하던 git 으로 하던 각자 알아서

pip install gym
pip install gym['atari']

 

gym 예제 코드 실행

import gym
env = gym.make('Copy-v0')
env.reset()
env.render()