본문 바로가기

분류 전체보기

(224)
Jupyter(.ipynb) 실행 파일(.exe) 만들기 jupyter notebook으로 만든 스크립트를 윈도우에서 동작하는 실행 파일로 만들어보자 1. first_script.ipynb 파일 만들기 jupyter에서 first_script.ipynb를 생성하고 하기와 같이 입력한다. (Jupyter는 메인함수 진입을 따로 명시하지 않아도 되지만 .py 에서 실행파일을 만들려면 메인 진입점을 명시해 주어야 한다.) def main(): print('test') if __name__ =='__main__': print('Good Morning') main() 2. .ipynb 파일을 .py로 만들기 jupyter nbconvert --to script first_script.ipynb 를 수행하면 first_script.py 파일이 생성된다. 3. 실행파일 만..
JVMNotFoundException 처리 윈도우 x64에서 konlpy를 적용하다 보면 nlp = Okt() No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly. 위와 같은 에러를 발견하게 된다. 친절한 에러 로그 대로 JAVA_HOME 환경 설정을 따라 하다간... 안 끝난다. JDK에서 JVM 경로 설정하는 함수(['getDefaultJVMPath)가 오기능하여 작동한 것으로 보인다. 아마도 업데이트되면 해결되지 않을까 싶은대 아직은 그대로이다. 고생하지 말고 아래와 같이 따라가 보자. 1. 문제 원인 찾기 문제가 발생한 부분 첫번째 if 문에 걸리지 않고 else:를 타서 리눅스 JVM을 찾게 됐다.. win..
Conda 설치(linux) conda 설치 방법 0. 미리 보기 $wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh $bash Anaconda3-2019.10-Linux-x86_64.sh $source ~/.bashrc $conda $set CONDA_FORCE_32BIT=1 $conda create -n py37_32bit -c base python=3.7 1. Conda 설치 파일 다운로드 원하는 설치 버전의 아나콘다를 다운로드한다. 하기 링크에서 설치 파일들을 확인 할 수 있다. repo.anaconda.com/archive wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_6..
AWS EC2 볼륨 증가 시키는 방법 AWS 사용할 때 처음 무료로 받았던 용량을 증가 시키고 싶을 때가 있다. 돈은 좀 더 사용하겠지만 메모리에 스트레스 받는것 보다. 돈을 쓰는게 건강에 이롭다.. AWS EC2에서 메모리(SSD or HDD 개념)를 높이는 방법은 서비스 > EC2 > Elastic Block Store > 볼륨 에서 변경 가능하다. 볼륨은 여러게 생성해서 인스턴스에서 사용할 수 있는대 하나만 사용하는 것을 예시로 들었다. 메인 인스턴스에서 사용하고 있는 볼륨을 선택하고 마우스 우클릭을 하면 '볼륨 수정' 이 있다. 프리 라이선스에서는 8GIB이 최대일 껀대 2배인 16GIB으로 증량해 보자. 크기를 16으로 입력하고 수정버튼을 클릭한다. 참고로 수정되는 대는 시간이 좀 소요되므로 기다려야한다.(설정 되는 시간은 대중 없..
Tistory 자동 목차 설정하는 법 tocbot이라는 스크립트를 사용해 Tistory에서 작성한 글의 목차가 자동으로 생성되는 기능을 알아보자. 이 글 자체로 Test를 진행하기 때문에 참고를 위해 목차 앞에 [제목#]를 입력해 두었으니 참고 바란다. [제목1] 스크립트 추가. [제목2] header에 추가하기 블로그관리->스킨편집->우측에 'html 편집'을 클릭하고 tag 안에 상기 스크립트를 입력한다. [제목1] Div tag 추가. [제목2] content tag에 추가하기 tag 안에 content를 검색하고 content 및에 상기 div tag 정보를 입력한다.(content가 없으면 contents 밑에 입력하자) [제목1] Script 추가. [제목2] tag 바로 위에 script 추가하기 html 편집 맨 밑으로 가면 ..
함수 포인터 기본 사용법과 매개변수, 리턴 함수 포인터 기본 사용법과 간단한 활용 예를 알아보자. 예제는 C++, C에서도 동일하게 사용 가능하다. 1. 함수 포인터 기본 사용법 함수 포인터 선언 방법은 반환 값 (*함수포인터이름)(매개변수 타입); 으로 이루어진다. 예) void (*m_work_handler)(int inputData); 아래 예제를 보자. 함수 포인터를 만들고 정의하기 위해서 라이브러리 개발자가 고심한 것이 눈에 보인다. 함수 앞에 그냥 *만 사용하면 void *와 헷갈리기 때문에 어쩔 수 없이 () 괄호로 묶어야 했을 것이다. 이런 고충을 생각하면서 외우면 잘 기억난다. 함수 포인터도 함수기 때문에 꼭 매개변수 타입을 지정해 주어야 한다. //함수 포인터 선언 void (*m_work_handler)(int inputDat..
함수 포인터 사용 예 함수 포인터를 왜 사용하고 언제 유용하게 사용하는지 알아보자. 1. Call Back 함수로 사용 Call back은 '다시 받는다'라는 뜻이다. 우리가 기본적으로 함수를 선언해 사용하게 되면 사용하는 그 시점에 기능이 수행된다. 하지만 function pointer를 활용하면 그림과 같이 DLL에서 자신이 선언한 함수가 DLL 수행 시점에 실행되게 된다. 이를 Async라고 표현하는데 이에 대한 설명은 '여기'에 잘 설명되어 있다. SUDO 코드를 예로 보자. Main Processor에서 생성한 function_pointer(int count)라는 함수를 DLL에 함수 포인터로 넘겨주고 이를 DLL Run_MainProcess에서 실행하게 된다. 이때 실행되는 함수의 원본은 Main Processor..
원형 큐(circuit queue) 예제 통신을 위한 메시지 큐나 순환되는 큐 구조를 만들고 싶을 때 원형 큐를 많이 사용한다. C로 구현한 원형 큐 구현 예제는 인터넷에 많으므로 원형 큐의 데이터를 구조체로 체우는 예제를 공유해 본다. Queue 사이즈를 동적으로 만들기 위해서 MaxSize를 사용했을 뿐 이와 같은 작업이 필요 없다면 MAX_SIZE로 대체 가능하다. 원형 큐에 들어가는 구조체 데이터는 typedef P_convert element이며 P_convert는 구조체이다. P_convert 대신에 자신이 원하는 구조체를 만들어 사용하면 된다. 파일명: packet_queue.h #include "server_type.h" #define TRUE 1 #define FALSE 0 #define ERROR -1 #define MAX_S..
Pthread 개념 및 예제 pthead에 대한 개념 설명 및 예제는 사실 '이곳'에 너무 잘 정리되어 있어서 따로 정리를 하지 않으려다가. 적용하면서 겪었던 애로 사항들을 정리하기로 했다. Pthread 사용 방법 구분 Main thread에서 새로운 Thread를 생성할 때 생성된 Thread의 종료 여부를 관리하는 detach, join 방법이 있다. pthread_detach 메인 thread와 상관 없이 별개의 thread를 생성하고 싶을 때 사용된다. 생성된 thread의 종료 여부는 관심이 없다. 단 주의해야 할 점은 메인 thread에서 생성된 thread라면 maint thread가 종료되는 시점에 생성된 thread도 종료되므로 이를 해결하기 위해서는 pthread_join을 사용해야 한다. 만약 메인 thread..
Blocking, NonBlocking, Sync, AnSync 차이 Socket 통신을 공부한다면 처음 접하고 이해해야 하는 개념이 바로 Blocking, Blocking, NonBlocking, Sync, ASync이다. 설명과 친절한 이미지를 보면서 정확히 이해해 보자. Blocking Blocking은 아래 그림처럼 Function A가 Function B가 수행 완료되기까지 아무것도 못하고 기다리는 상태이다. 프로그래밍할 때 기본적으로 함수를 콜 하면 이와 같은 방식으로 작동하고 기본 Socket도 아무 설정 안 하고 Read함수를 사용하면 무한정 대기 모드로 빠진다. Non-Blocking 말 그대로 Blocking을 하지 않겠다는 뜻이다. thread가 하나일 때 무한정 기다린다면 다른 작업을 하지 못할 것이다.(예 지금 socket이 죽었는지 살았는지 현재 ..

반응형