본문 바로가기

Development110

Ubuntu 다양한 CLI/bash script 사용 법 ## Bash script 튜토리얼 https://ryanstutorials.net/bash-scripting-tutorial/bash-if-statements.php#ifelse # Ubuntu 파일 경로 의미 /bin: core tools, some admin tools, contents controlled by package manager. /usr/bin: mostly end user tools, contents controlled by package manager as well. /usr/local/bin: yours to use and abuse. # Wildcard의 모든 subdirectory 인식 shopt -s globstar (.bashrc에 추가해주면 편하다.) ls data/**/.. 2016. 8. 22.
Windows 7과 10 설치 / 노트북 한영키 Windows 7 설치 및 복구옛날 노트북이나 컴퓨터에는 그냥 바로 usb로 설치 디스크 만든다음 CMOS에서 부팅 설정 바꿔서 하면 끝이었음. 근데 요즘에는 일단 윈도우7이 표준이 아니라, 그 위의 8이나 10이 표준이라 문제가 발생함. 1) 일단 기가바이트 메인보드에서는 usb를 인식하지 못해서 설치 디스크가 없다고 계속 뜸--> 기가바이트에서 제공하는 설치 파일 제작 프로그램을 다운 받은 후, usb 드라이버를 추가하여 다시 제작해야함.http://playwares.com/hwboard/47350801 2) 그다음 제조사에서 제공하는 BIOS 에서 win7으로 부팅하는 것이 표준 목록에서 빠져있는 경우가 있음.--> 이런 경우 BIOS설정을 세밀하게 조정하여 win7으로 부팅이 되도록 해줘야함.ht.. 2016. 8. 6.
Ubuntu GUI 관련 트러블슈팅. Gym, Xserver, pyglet, TeamViewer OpenAI Gym을 원격서버 IPython에서 렌더링하기# 주의 # 아래의 방법으로 하면, 결국 되기는 되는데, CUDA 드라이버가 뭔가에 의해서(아마 범블비) 지워져버려서 GPU컴퓨팅이 안된다....... 그래서 결론은 이 글 가장 아래부분의 TeamViewer를 사용하는 것을 추천한다.-----원격 서버에서 IPython을 통해 GYM의 렌더링 결과를 gif로 보여주기를 시도해보았다. 결국 다음 링크의 예제를 재현하는 것이 목표였으나 pyglet과 xvfb 설정에서 상당히 많은 어려움이 있었다. 재현할 대상 : http://nbviewer.jupyter.org/github/patrickmineault/xcorr-notebooks/blob/master/Render%20OpenAI%20gym%20as%.. 2016. 7. 26.
Python에서 유용한 라이브러리 설치 프로그램easy_install, pip : python package 설치 프로그램. 근데 pip가 최신임. easy_install은 곧 사라질 녀석임apt-get : 리눅스 터미널 명령어. 전역 프로그램 패키지를 다운로드하고 설치해줌. # 주의사항 : apt-get으로도 설치하고, pip로도 설치하면 둘이 서로 꼬여버린다. 둘중하나로만 깔아야함.(한쪽을 지우든지) pip와 easy_install의 관계는 모르겠음 꼬일지 안꼬일지. http://blog.outsider.ne.kr/346http://egloos.zum.com/mcchae/v/11023238 deb 파일 설치 방법: sudo dpkg -i 패키지.debhttp://jjeong.tistory.com/664 Scrapy쓰기 좋은 웹 크롤러.. 2016. 2. 23.
Docker 사용방법 Docker란 무엇인가?http://www.slideshare.net/pyrasis/docker-docker-38286477OS에 부담을 주지 않는 매우 효율이 좋은 가상화 도구로 VM보다 훨씬 구조가 간단해서 기본 OS 99% 의 성능을 낼 수 있는 매우 유용한 가상화 시스템이다.결론적으로 얘기하자면, 도커는 시대의 흐름이고 앞으로 모든 것이 도커를 기반으로 돌아갈 것이다. Docker에서 쓰이는 용어 이미지: 미리 임의의 환경을 구워놓은 이미지 파일 컨테이너 : 이미지를 실행하는 독립된 light VM 같은 것 Ubuntu 18.04 에 docker 설치하기간편하게 정리된 도커 공식 설치 스크립트를 사용하기curl https://get.docker.com | shsudo systemctl start .. 2016. 2. 19.
Ubuntu 서버 구입부터 설치 및 인터넷 설정까지 1. GPU 서버 구입아래와 같이 고성능 GPU 컴퓨팅용 서버의 견적을 내고 주문한다. 아래 견적은 호환성이 검토되어 있다. 호환성은 다음의 4가지만 체크하면 큰 문제가 없다. 메인보드와 CPU의 소켓넘버가 같은지 / 메인보드가 RAM의 스펙을 지원하는지 / 메인보드의 PCI가 GPU를 지원하는지 / GPU의 전력용량을 파워가 충분히 만족시키는 지 (단, 하드디스크는 3TB이상일 경우 우분투에서 인식하지 못하는 버그가 있는 것으로 알려져있다.)위의 견적에서 가격을 조금 내리고 싶다면, 다음을 고려할 수 있다.1) 파워를 750W -> 650W 로 다운. (Titan X 는 권장 600W 을 요구하므로, 650W으로 충분할 수 있다.) 2) CPU와 메인보드를 다운그레이드 3) 케이스/키보드 구입 X or.. 2016. 2. 12.
Numpy 문법, API, 환경설정 / HDF5를 위한 H5PY API Numpy 기본 레퍼런스 http://docs.scipy.org/doc/numpy/reference/ # Numpy object 인지 type check하기type(a).__module__ == np.__name__ Truehttps://stackoverflow.com/questions/12569452/how-to-identify-numpy-types-in-python # 잘 모르는 유용한 method- np.triu: upper triangle matrix를 만든다.( == lower triangle을 0으로 만든다)- np.tril: lower triangle matrix를 만든다.( == lower triangle을 0으로 만든다) - np.cumprod: 주어진 axis로 cumulative pr.. 2015. 12. 1.
Ubuntu 설치하기 Ubuntu 설치 USB 만들기https://hiseon.me/linux/ubuntu/ubuntu-install-usb/1. ISO 이미지 다운로드https://ubuntu.com/download/desktop 2. Rufus 다운로드https://rufus.ie/ 3. Ubuntu 설치 USB 만들기https://hiseon.me/linux/ubuntu/ubuntu-install-usb/ Ubuntu 설치하기Ubuntu 설치 USB를 꽂고 컴퓨터를 켠다음, Try Ubuntu without installing 을 클릭한다. 설치를 진행하기 전에 확인해야하는 시스템 사항이 있기 때문이다.1. 내 디스크의 OS 설치방식 확인하기sudo parted -l 설치전에 위 명령어를 실행하여 GPT 디스크인지 여부.. 2015. 8. 28.
고정ip가 할당된 공유기에 리눅스 서버를 올릴 때, 포트포워딩 - 고정ip가 할당된 공유기에 리눅스 서버를 올릴 때 1) 공유기에 접속해서 dhcp 가 할당하는 내부 ip를 고정시킨다.(mac 주소에 내부 ip를 고정시킴)2) 포트포워딩을 통해, 고정ip로 들어오는 특정 포트(22)로의 접속을, 내부 포트(22)로 보낸다. ssh(푸티)와 sftp는 모두 22번 포트를 사용함. 프로토콜만 다름3) 리눅스서버에 sudo apt-get install openssh-server 를 설치하고 실행한다. - 리눅스 설치하고나서 할일sudo update로 모든 설치된 프로그램을 업데이트 apt-get install build-essential로 빌드 에센셜 깔기 sudo apt-get install vimsudo apt-get install openssh-server syst.. 2015. 8. 24.
무선 통신의 원리 먼저 무선 통신은 전자기파를 이용하는 방식과 음파를 이용하는 방식으로 크게 나눌 수 있다. 대부분의 우리가 산업에서 쓰는 무선 통신은 전자기파를 이용한 통신 방식이며, 음파를 이용하는 통신은 일상생활에서 우리가 대화할 때 이외에는 크게 쓰이는 경우를 찾진 못하였다. 다만 통신이 아닌 음파의 응용으로는 보통 초음파진단이나, 초음파비파괴 검사, 수중음파탐지, 박쥐와 돌고래의 음파 통신 및 탐지 등이 있다. 물론 전자기파도 x-lay나 투사전자현미경 등에서 탐지를 위해 사용한다.https://ko.wikipedia.org/wiki/%EB%AC%B4%EC%84%A0_%ED%86%B5%EC%8B%A0 여기서 다시 전자기파는 주파수에 따라, 다양한 이름을 가지며 통신과 탐지에 사용이 된다. 그럼 우선 전자기파의 주.. 2015. 8. 10.
Ubuntu - virtualenv, scrapy 사용법 # GPU 모니터링 : watch -0.5 nvidia-smi (0.5는 시간) watch -n 0.5 "nvidia-smi | grep MiB" # CPU 모니터링 : top (또는 ps? 근데 top이 더 맞는듯) # GPU를 사용중인 Python 프로세스 종료 : 이 방식으로 해야만, 안전하게 다른 프로그램에 영향을 미치지 않음.nvidia-smi python process의 PID확인 kill -9 PID # 모든 GPU 프로세스 종료 : 이 명령을 사용하면, X window도 죽어버려서 위험하다. 위 방법을 추천kill -9 $(nvidia-smi | sed -n 's/|\s*[0-9]*\s*\([0-9]*\)\s*.*/\1/p' | sort | uniq | sed '/^$/d')https://.. 2015. 7. 31.
IPython Notebook 사용법 http://ipython.org/ipython-doc/1/install/install.html#installation-using-easy-install-or-pip IPython server 설치 및 설정.Ipython notebook 설치 1) easy_install ipython[all] (pip 로 uninstall하면 충돌함) 2) sudo pip install "ipython[notebook]" 3) sudo pip install "ipython[notebook]==3.2.1" (2 번 방식은 최신 버전이 설치됨. 3번은 3.2.1 버전이 설치됨.)Ipython profile 생성 ipython profile create nbserverIpython profile 수정: 링크 참조, pem k.. 2015. 6. 2.
빅데이터 플랫폼 - CRM(Customer relationship management) : 빅데이터가 있기 전, 고객 정보를 분석하여 경영 상 의사결정에 도움을 주는 분석 기술http://ko.wikipedia.org/wiki/%EA%B3%A0%EA%B0%9D_%EA%B4%80%EA%B3%84_%EA%B4%80%EB%A6%AC - DW(Data Warehouse) : 마찬가지로 빅데이터가 있기 전, 데이터를 분석하여 경영 상 의사결정에 도움을 주는 분석 기술을 의미http://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%9B%A8%EC%96%B4%ED%95%98%EC%9A%B0%EC%8A%A4 - Hadoop : 빅데이터를 처리하는 오픈소스 분산 파일 시스템. 아래 블.. 2015. 4. 13.
오픈소스 라이센스 및 개발 가이드 BSD 3-Clause LicenseA permissive license similar to the BSD 2-Clause License, but with a 3rd clause that prohibits others from using the name of the project or its contributors to promote derived products without written consent.매우 관대한 라이센스로, 본 프로젝트의 원래 이름 또는 contributor에 대한 copyright 문구를 삽입하는 한 대부분의 이용이 가능하다. https://github.com/NVIDIA/nv-wavenet/blob/master/LICENSE.TXThttps://en.wikipedia.org/w.. 2015. 4. 13.
openFramework, ofxFenster 버그 수정 오픈소스 개발에 기여하였다. I found a little bug on the latest version "of_v0.8.4_vs_release". The 'glfw3' library is old or wrong. so some addons using the latest 'glfw3' doesn't work. I found on "ofxFenster". And there are some more bugs on ofxFenster...http://forum.openframeworks.cc/t/glfw3-library-has-some-problem/18889 --------ofxFenster 사용하기1. 오픈 프레임워크 0.8.4 다운로드 http://openframeworks.cc/download/ 에서 .. 2015. 3. 15.
Practical Theano Tutorial theano는 아주 강력하고 편리한 병렬처리 딥러닝 연구 라이브러리이다. 파이썬 기반이며 gpu 병렬프로그래밍을 할 줄 몰라도 쓸 수 있으며, 심볼릭 연산기반으로 사용이 편리하다. 들으면서 소스코드 및 메모등을 정리하였다. 2015. 3. 11.
추천하는 소프트웨어 스택 - GPU 병렬처리CUDATheano - 분산 병렬 처리용 머신러닝 라이브러리아파치 머하웃 - 분산 병렬 처리스파크카산드라하둡MapReduce - OS리눅스 우분투 - 웹Node JS : 자바스크립트로 서버사이드개발이 가능하도록 한 것(자바스크립트의 JSP기능을 코딩) -> 자바스크립트로 통일된 언어로 서버와 클라를 모두 개발할 수 있음. -> 트위터나 페이스북 등 대규모 서비스를 처리할 정도로 매우 빠른속도를 가짐: 기본적으로 JS가 요청에 대해 콜백함수로 처리하는 멀티 스레딩이라서 구조자체가 대규모 서비스에 적합하다고 함. Angular JS : 주로 클라이언트를 개발하는 데 쓰인다고함. Node JS는 서버Jquery : 자바스크립트 라이브러리PHP - 데이터베이스 매니지먼트NoSQL(Not onl.. 2015. 3. 3.
Sampling, Detailed Balance, Gibbs Sampling, Rejection Sampling MCMC, Dirichlet Process, RBM, Particle Filtering Sampling - C.D.F , P.D.F샘플링을 하려면 P.D.F 가 아닌 C.D.F 의 역함수를 알아야한다. PDF는 확률이 아니다. 확률의 미분값이다(적분한 값이 확률이므로). 따라서 0~1 사이의 확률에 대해 uniform distribution을 가지고 샘플링을 하려면, y축에 대해 [0,1]로 샘플링을 한 다음, C.D.F에서 그 y축에 해당하는 x값을 알아내는 것이 바로 샘플링이다.당연히 이를 위해서는 CDF의 역함수를 알아야 한다. (y축의 값이 어떤 x에 해당하는지 알아야함.)그러나 CDF의 역함수는 일반적으로 구하기가 매우 어렵다.가우시안 분포에서도 CDF가 적분으로 정의만 되어있지 계산이 안된다. 그러나 가우시안 분포는 엔지니어링적으로 샘플링이 거의 가능해서 proposal로 많이사.. 2015. 1. 27.
Theano 사용법 - Theano 에서 심볼릭 변수 print하기단, 반드시 최종 theano.function을 하는 computation graph에 해당 변수가 포함되어있어야 만 함.# this is the optimal solution for the checking the real shape outputs = Print(' outputs shape: ', attrs=['shape'])(outputs) http://deeplearning.net/software/theano/library/printing.html아래의 것들은 최적화가 아닌 여러 방법들.#print (outputs.get_value(borrow=True, return_internal_type=True).shape) # get_value is exist i.. 2015. 1. 20.
C++ STL의 Vector 사용법 C 언어를 다룰 때 필요한 마인드 : 나는 기계를 제어하는 중이다. 진짜 멍청한 기계다. 정적할당은 해제할 필요가 없고 일반적으로 할당 속도가 더 빠르다.동적할당은 메모리 오버플로우 문제가 발생할 수 있고, 메모리가 연속적으로 할당되지 않을 수 있어 메모리 엑세스 속도가 느릴 수 있다. 따라서 new , delete 방식의 동적할당을 쓰지말고 vector를 써라.(vector를 1차원)그러면 heap corrupt 문제가 발생하지 않고, 메모리 연속성을 보장 받을 수 있다. - 2차원 배열 동적 할당 : new , deletefloat ** parray = new float*[sizeOfColumn]; for(int i=0; i< sizeOfColumn; i++){ parray[0] = new float.. 2014. 12. 4.