본문 바로가기

프로그래밍/프로그래밍 팁15

Python Concurrency Programming Concurrency Programming Python에서 asyncio를 이용한 concurrency에 대해 알아본다. 아래의 문서를 참고하여 내용을 작성하였다. Async IO in Python: A Complete Walkthrough - Real Python Parallelism은 concurrency의 하위 개념이다. 즉 동시성을 구현하는 방법 중 하나가 병렬화라고 얘기할 수 있을 것이다. 또는 threading이 concurrency에 보다 가까운 개념이다.Concurrency의 핵심은 single cpu에서 동작하는 것 처럼 보이는 코딩을 통해 동시성을 구현할 수 있다는 것이다. 즉 짜기가 쉽다. 그리고 여기에는 coroutine이라는 핵심 개념이 등장한다.이러한 concurrency를 설명.. 2020. 1. 9.
Windows 10 Subsystem Linux, WSL(ubuntu) bash에서 TensorFlow 설치 및 실행하기 # WSL이란윈도우의 시스템콜을 우분투와 연결하여, 동시에 2개의 운영체제를 사용하는 환경http://www.itworld.co.kr/news/105480 # Windows 10에서 ubuntu 사용하기- 설정 -> 업데이트 및 복구 -> 개발자용 -> 개발자 모드선택- 제어판 -> 프로그램 -> '프로그램 및 기능'의 'Windows 기능 켜기/끄기' -> 'Linux용 Windows 하위 시스템(베타)' 선택- 재부팅- Microsoft Store에서 ubuntu를 검색해서 다운로드하고 실행- ubuntu 설치가 완료되면, id와 passwd를 입력하고 ubuntu를 사용 https://docs.microsoft.com/en-us/windows/wsl/install-win10http://sanghak.. 2016. 11. 21.
Ubuntu 에서의 DNS 서버 구축 총 7대의 slave와 1대의 master로 구성된 클러스터 서버에서 IP주소를 일일이 외우지 않고, domain name으로 각 서버컴퓨터들을 사용하기 위해서 bind9을 이용한 DNS를 master서버에 구축하였다. - DNS의 원리 slave.dns.server.co.kr : 이런식으로 구성된 도메인은 역순으로 구성된 DNS서버들을 거쳐서 recursive하게 ip주소를 받아낸다. 즉, kr -> co -> server -> dns 순서로 DNS를 물어봄.보통의 경우 server.co.kr은 도메인을 구입해서 사용해야하고, 그 앞의 slave와 dns에 해당하는 부분을 서버 개발자가 구성하게 된다. - bind9 설정하기우선 아래의 링크만 정말 천천히 정독하면, 거의 한 번에 구현이 가능하다. 이 .. 2016. 9. 28.
Ubuntu에서 FTP파일 서버 구축 - vsftpd 를 이용해 파일 공유하기 : ftp는 보안에 매우 취약하다. sftp는 보안은 강력한대신 속도가 느리다. vsftpd는 sftp 만큼 안전하면서 속도도 빨라서 가장 널리 이용되는 프로그램이다. - vsftp 설정하기sudo apt-get install vsftpd sudo vim /etc/vsftpd.conf # 원하는 대로 설정 변경. 그러나 우선은 default 상태로 실행시켜서 접속 테스트sudo service vsftpd restart # vsftd.conf 파일 수정하기http://blog.daum.net/99lib/27 http://isaac0448.iptime.org:8080/676http://webdir.tistory.com/199http://auctionpro.co.kr/.. 2016. 9. 27.
Numpy 문법, API, 환경설정 / HDF5를 위한 H5PY API Numpy 기본 레퍼런스 http://docs.scipy.org/doc/numpy/reference/ # 잘 모르는 유용한 method- np.triu: upper triangle matrix를 만든다.( == lower triangle을 0으로 만든다)- np.tril: lower triangle matrix를 만든다.( == lower triangle을 0으로 만든다) - np.cumprod: 주어진 axis로 cumulative product를 한다. - np.dot: dot product를 한다. - np.flipud: matrix의 위와 아래를 대칭으로 뒤집는다. - np.fliplr: matrix의 왼쪽과 오른쪽을 대칭으로 뒤집는다. - np.roll : element를 1개씩 뒤로 보낸다 h.. 2015. 12. 1.
ubuntu 설치 usb 만들기 http://deviantcj.tistory.com/508 1. ubuntu 14.04 iso파일을 다운받는다http://www.ubuntu.com/download/desktop/contribute/?version=14.04.3&architecture=amd64 2. Universal-USB-Installer로 usb를 만든다http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/ 3. 이미 설치된 ubuntu 14.0.4 에 usb를 연결한 후 ubuntu startup disk creator 를 이용해서 usb를 생성한다이것이 제일 빠르고 쉬운방법 2015. 8. 28.
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.
C++ 프로그래밍 - window에서 하위 폴더까지 파일 목록 가져오기#include "stdafx.h"#include "windows.h"#include "winbase.h"#include "stdio.h"#include "cstringt.h"#include "atlstr.h" bool FindnFile( const wstring strPath ) {bool bContinue = true;WIN32_FIND_DATAW FindFileData;HANDLE hFind;wstring strFindPath, strFileName;wstring FullPathName;strFindPath.assign(strPath+L"\\*.*");hFind = FindFirstFileW( strFindPath.c_str(), &FindFile.. 2014. 11. 26.
Visual Studio -error LNK2038: '_MSC_VER'에 대해 불일치가 검색되었습니다. '1600' 값이 '1700'(File.obj에 위치) 값과 일치하지 않습니다.Visual Studio 2012에서 컴파일된 라이브러리는 Visual Studio 2010 에서 참조할 수 없다.따라서 재컴파일을 하거나 또는 버전이 맞는 개발환경을 설정해야 한다 - 프로젝트 참조 설정에서, 상대 경로 디렉토리 지정 방법$(ProjectDir)..\을 이용하면, 프로젝트 파일 하위 경로에 대해 상대경로로 참조 가능하다. - 인텔리센스(IntelliSense) 저장 경로 바꾸기인텔리 센스 : 컨트롤+스페이스를 누르면 자동완성이 되는데 그러한 기능을 제공하기 위한 데이터베이스그러나 프로젝트 폴더내에 위치하게 되면 큰 용량을 차지하여.. 2014. 11. 24.
Ubuntu - Screen , zip, tar 사용법 Ubuntu Screen 사용법 - screen :은 2번 깊게 들어가는 구조이다. 하나의 screen을 만들면 독립된 process로 돌아간다. 따라서 이를 이용해서 screen을 만들고 거기에 서버를 돌려놓고 다른 작업을 하는 것이 가능하다. 또한 screen은 깊은 구조라 하나의 screen내에서 여러개의 터미널을 띄워서 사용하는 것도 가능하다.즉 screen은 여러개의 세션을 사용하는 것 ( 즉 푸티로 3개의 계정에 접속할 필요없이 하나의 접속안에서 여러가지 세션을 실행가능) 세션 사용법 : 명령어는 ctrl A + [] 의 형태로 조합해서 사용한다. 또한 tab으로 세션이름 자동완성 가능screen -S mysession : mysession 이라는 이름의 새로운 세션을 생성한다.(이름을 잘정해.. 2014. 7. 7.
MATLAB 문법, API, 단축키, 환경설정 참고 사이트 : 2014. 6. 23.
Java, 클래스간 변수 공유 자바에서 클래스간의 데이터 교환 및 변수 공유는 다음 중 하나를 이용한다 1. Static : 최악수, 비 객체지향적임. 가능하면 쓰지 말아야함.2. 싱글톤 : 싱글톤이 적합한 구조일 때 편리함. (클래스가 자기자신을 public static 멤버변수로 갖는다.)3. 멤버변수 : 객체내부에 인스턴스르로 다른 객체를 둔다. 가장 일반적인 방식 (음..레퍼런스에서는 그냥 쓰레드가 돌고있건 말건, service건 무조건 이 방식을 썼네..;)4. 상속 : 클래스를 상속받는다..?5. 내부 통신 : ex)안드로이드 intent의 putextra http://www.androidside.com/bbs/board.php?bo_table=B49&wr_id=46083싱글톤 : http://blog.doortts.com.. 2014. 6. 19.
정규표현식, 정규식, 엑셀 고급기능 # 정규식 문법 document - https://github.com/google/re2/wiki/Syntax- https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D # 복잡한 정규식의 사용에 대해- 너무 심각하게 복잡한 기능이 필요한 정규식은 쓰지 않는 것이 답이다. 그러나 정말로 해야한다면 정규식에 대한 매우 높은 이해도가 필요하다.- python을 쓸 수만 있다면, 정규식보다 훨씬 더 빠르고 정확하게 구현할 수 있다. 정규식은 최소한으로만 쓰는 것이 건강에 이롭다.https://codeday.me/ko/qa/20190403/229820.html # Regex를 이해하는데 중요한 규칙- 기본적으로 (찾을패턴 + 개수).. 2014. 6. 17.
Excel, Spread Sheet(google), VBA - 함수 구현 : 비어있지 않은 셀의 개수를 센다음, 문자열 L을 붙여서 쓰기="L"&COUNTA($B$2:B6) - 함수 구현 : INDIRECT를 이용해서 특수한 연산 수행=IF(SUM(INDIRECT($Q$11):INDIRECT($Q15)) + INDIRECT(LEFT(Q15,1)&RIGHT(Q15,2)+1)>0.5689, $Q$11, LEFT(Q15,1)&RIGHT(Q15,2)+1)=SUM(INDIRECT($Q$11) : INDIRECT($Q16)) # IF에 And조건 넣기=IF(AND(A 2014. 6. 17.
XNA from Siverlight 방법 주의사항 1. 게임 쪽을 수정한 다음에는 반드시 게임 프로젝트를 빌드하여야만 dll이 갱신되어 올바르게 작동한다. 주의사항 2. 서버를 이용하는 경우 서비스 레퍼런스이름이 실버라이트의 것과똑같아야한다. 왜냐하면 아마도 서비스레퍼런스.클라이언트콘피그 이 파일이본래의 프로젝트의 실버라이트 것만 참조하기 때문인 것 같다. 0. 기존 실버라이트 솔루션에 오른쪽 버튼눌러 add를 클릭하여existing 프로젝트를 눌러 xna 프로젝트를 추가한다. 그리고 기존 실버라이프 프로젝트에 모든 xna레퍼런스를 추가한다. 그리고 system.window 도 추가해준다. 그다음 프로젝트를 카피하여 윈폰으로 만든다음, 원래 윈도우 프로젝트는 지운다. 그다음 컨텐트(정확히 Content라는 이름으로) 폴더를 하나 만든다음, 디버.. 2014. 6. 17.