파이썬으로 풀어보는 수학

박제권
재미있어 보여서 샀는데, 64쪽의 예제가 동작을 안합니다. 문제가 된 환경은 맥OS X. x_numbers = [1,2,3] y_numbers = [2,4,6] from pylab import plot, show plot(x_numbers, y_numbers) show() 를 실행하면 화면에 그래프가 보일꺼라고 쓰여있지만, ImportError: No module named 'pylab' 라는 오류가 보입니다. pip install pylab 을 한 다음 실행해보면 ImportError: cannot import name 'plot' 이라고 합니다. 뒤져보니 from matplotlib.pyplot import plot, show, imshow 가 올바른 임포트 방법이라고 하네요. 그랬더니 이번에는 RuntimeError: Python is not installed as a framework.

스탠포드 스위프트 강의 2편 중

박제권
꽤 오래전부터 네이티브를 회피하며 폰갭따위를 뒤지고 있었다. 하지만 그쪽도 만족스럽지는 않아서, 결국은 앱 개발 기술에 대해서는 거의 공부를 하지 않게 되어버렸다. 그럴싸한 무언가가 나오기를 기다렸지만 cocoa touch나 android sdk 를 배우는게 훨씬 빠를 듯 하다. 얼마전에 안드로이드 개발관련 블로그를 보고 조금 따라해보면서 그쪽 감각을 살짝이나마 맛봤었고, 오늘은 스탠포드의 스위프트 동영상을 보고있다. 수염이 하얀 아저씨가 간단한 계산기 만드는 과정을 가지고 강의를 진행하신다. 동영상을 보던 중, 까먹을까봐 캡쳐해서 올려둔다. (동영상 링크 : https://youtu.

코노하

박제권
ConoHa 라는 서비스가 있다는 이야기를 들었다. 전에도 몇번 들은 듯… 테스트해보기로 했다. 어차피 돈이 덤비는 상황에서는 아마존이나 유클라우드를 쓰면 되지만, 간단하게 테스트 해보고 싶은 것이 있을 때는 DigitalOcean을 써왔다. Linode 도 썼었는데 DigitalOcean의 UI가 너무 편했다. PING ucloud 가 5~9ms 정도 나온다. conoha tokyo 는 77~90ms digitalociean sgp 는 100~110ms conoha 가 약간 빠른데, 큰 차이는 아니다. 가격 conoha tokyo: 메모리 1G, core 2 : 9501원 메모리 2G, core 3 : 18474원 메모리 4G, core 4 : 36104 원 digitalocean sgp:

드루팔, nginx, fastcgi

박제권
드루팔을 운영하시는 분의 요청으로 서버를 들여다보았다. 트래픽이 조금만 들어오면 다운되는 상황이라고 하셨슴. 나쁜 모듈 찾기 우선 플러그인 모듈중에 유명하지 않거나 검증되지 않은 녀석들이 있는지 확인했다. 복잡한 모듈들 때문에 사이트가 다운되는 것이 아닐까 예상했는데, 의외로 로그인 박스에 문제가 있었다. 메인페이지에 로그인 박스가 있었고, 거기에 captcha기능을 달아두셨는데, 이 녀석 내부에 문제가 있는지 CPU를 엄청나게 쓰고 있었다. 로그인 페이지를 따로 만들고 그쪽에 넣도록 했다. 메인페이지가 5초가량 걸리던 것을 1초이내 응답하도록 하는데 성공했다.

ubuntu rbenv

박제권
우분투에 ruby를 설치할 때는 소스 컴파일을 하곤 했는데, rbenv 를 쓸 수 있다. /etc/profile 에 export RBENV_ROOT=/usr/local/rbenv export PATH="${RBENV_ROOT}/bin:$PATH" eval "$(rbenv init -)" export PATH="${RBENV_ROOT}/plugins/ruby-build/bin:$PATH" 라고 써주고 chown -R your_user_id /usr/local/rbenv 라고 해주면 rbenv install -v 2.2.3 rbenv global 2.2.3 rbenv rehash 따위가 잘 동작한다.

스파크 공부중 노트

박제권
소소하게 스파크 설치 체험중 (MacOS, JDK1.8) 작업 목표 스파크로 문서 내의 단어 세기 포스트그레스큐엘 접속하기 환경 변수 export SPARK_MASTER_IP=127.0.0.1 export SPARK_LOCAL_IP=127.0.0.1 export SCALA_HOME=/usr/local/scala export $PATH=$PATH:$SCALA_HOME/bin 스칼라 설치 http://www.scala-lang.org/download/2.10.5.html 에서 2.10.5 다운로드. 2.11은 안됨, brew는 기본이 2.11임 압축을 풀어서 /usr/local/scala 에 넣어두자. http://www.scala-sbt.org/release/tutorial/Manual-Installation.html 에서 jar 파일 다운로드후 /usr/local/scala/bin 에 넣음. 스파크 설치 http://spark.apache.org/ 에서 spark 1.5 다운로드하고 압축 풀기 cd spark-1.5.0 ./sbin/start-master.sh ./bin/spark-class org.apache.spark.deploy.worker.Worker spark://localhost:7077 -c 1 -m 512M 프로젝트 생성 (프로젝트이름은 hanal)

메이븐에서 이클립스 컴파일러 사용하기

박제권
이클립스가 자체 컴파일러를 가지고 있다는 것을 몰랐다. 자바 컴파일러를 불러쓴다고 생각하고 있었는데, 이클립스 컴파일러(ecj)는 오라클의 자바 컴파일러(javac)와 결과물이 꽤 달랐다. 나는 javac를 써주고 싶지만, 사정상… 찾아보았다. 의외로 찾는데 오래걸렸다. maven에서 이클립스 컴파일러를 쓸 수 있게 해주는 플러그인이 있고, 버전 지정도 할 수 있다. (원래 포스트에서는 plexus-compiler-eclipse를 사용했으나, tycho 라는 새버전이 있었다. plexus로 해결안되던 문제가 있었는데, tycho가 해결해주었다. 어쨌든 tycho까지 찾는 건 더 많은 시간이 걸렸다.) <build> ... <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.

정규표현식. 일반화문자열

박제권
정규표현식은… 이런 것. /blog/1, /blog/2, /blog/3 등은 /blog 와 뒤에 붙는 숫자 로 인식할 수 있고, 이를 /blog/(d+)로 표시하는 것을 정규표현식이라 한다. 그런데, 정규 라는 말을 처음 쓴 사람은 누굴까. 규칙이 있는 문자열을 일반화 시켰으니 일반화문자열 이라던가 규칙표현식 이라고 했었다면 더 많은 사람들이 더 빨리 이해할 수 있지 않았을까? 정규가 뭘까. 그안에 깊은 뜻이 있어서, 이해하고 나면 기분이 좋아질까? 궁금하다. (… 한자로 뭔가 뜻이 있겠지만…)

django 1.7, python 3, centos 6.5 디플로이

박제권
마지막으로 yum 을 써본 것이 칠팔년은 된것같다. 이번 과제에서는 centos6.5 를 써달라는 요구사항이 있었다. 요즘 유행은 nginx 일텐데.. 이것도 apache 로 해보자. 장고나 플라스크의 디플로이에는 wsgi 가 많이 쓰이는 것 같다. 이게 module 로 제공되긴하지만, 그건 python2 얘기고. python3 가 되면 또 뭔가가 안맞는다. 검색에 걸린 stackoverflow 의 답변들은 별로 쓸모가 없었고, http://novafactory.net/archives/3074 한글로 된 삽질기. https://gist.github.com/jmorton/558f7079ed2159156277 도커 스크립트인 가 큰 도움이되었다. 아래는 사실 도커스크립트를 조금 수정한 정도에 불과.

pip virtualenv

박제권
얼마전에 장고개발환경 설정하면서 썼던글 http://tech.jinto.pe.kr/321의 다른 버전. pyenv 도 좋지만, 그것 없이 virtualenv 만 쓸 수도 있다. (제 개인적인 선택은 pyenv 입니다) 대상환경은 mac 이다. (하고 싶은건 python3+django1.7) brew install python3 pip install virtualenv sudo pip install virtualenvwrapper 이제 .bash_profile 에 이렇게 쓴다. export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh 이제 virtualenv 를 생성하고 쓰면된다. virtualenv -p /usr/local/bin/python3 --no-site-packages projectnamedeactivate # 요건 가상환경 안쓸때 workon projectname # 요건 가상환경쓸때... pip install django # 이렇게 하면 장고가 해당 가상환경에 설치된다.