반응형

C 5

Beej's Guide to Network Programming 요약, Part 2. Slightly Advanced Techniques

마지막 한 섹션이지만, 그 내용도 어려워지고 번역하기도 어려워져서 Part 2로 따로 쓰게 되었다. 역시나 미사여구는 쳐 내고 핵심 내용 중심으로 옮겼으니, 원문도 꼭 읽어보시기 바란다. 7. Slightly Advanced Tenchniques 7.1. Blocking "Block"은 "sleep"을 기술적으로 멋지게 하는 말이다. listener를 실행할 때 보면 알 수도 있을텐데, recvfrom()을 실행했을 때 들어오는 데이터가 없다면 recvfrom()은 거기서 데이터가 올 때 까지 "block"하고 있다 (잠깐 자고 있다)는 것이다. 많은 함수들이 block 한다. accept()이나 모든 recv() 함수들이 그렇다. Block이 가능한 이유는? 그렇게 할 수 있도록 kernel의 허락을 ..

Programming 2019.09.14

Beej's Guide to Network Programming 요약, Part 1

최근에 (1년 전에?) 제일 정리하고 싶었던 글인데, 실제로 network programming이 절실할 때가 와서야 하게 되었다 (흑흑). 원문은 Network programming에 대해 모르는 개발자에게 딱 좋은 튜토리얼이라고 생각한다. 여러 미사여구와 필자의 썰은 가지쳐내고 핵심적인 내용만 정리해본다 (Part 2 대기 중). 2. What is a Socket? Socket은 standard Unix file descriptor를 통해서 다른 프로그램과 소통하는 통로이다. 이 file descriptor는 socket() system routine을 호출해서 얻는다. 그리고 send()와 recv() socket call을 이용해 통신할 수 있다. 다른 file descriptor처럼 read(..

Programming 2019.07.28

작지만 강하다, Suckless 소프트웨어

Suckless 데스크탑 환경에 대해 간단하게 설명하고, 그 중 가장 핵심적인 프로그램인 dwm의 설치 과정과 사용법을 정리해본다. 미리보는 Suckless 환경 백문이 불여일견이므로, 서브레딧 r/unixporn에서 Suckless 소프트웨어를 충실히 사용하면서도 가장 예쁜 예시를 꼽아왔다 (홍보 대사 급 무브). [dwm] Cherry and rose from r/unixporn 위에 보이는 전반적인 디스플레이 환경과, 터미널 에뮬레이터, 인터넷 브라우저, 탭 도구 모두 Suckless 소프트웨어이다. 위 예시는 커스터마이징 경험이 꽤 있어야 구축 가능한 환경이고, 초보인 나는 외관 변경 없이 기본적인 기능만을 사용하고 있다. 그래도 기본적으로 웹서핑을 제외한 자신의 대부분의 일이 터미널에서 이루어진..

GNU-Linux 2018.06.16

왜 Python에는 GIL이 있는가

Python 사용자라면 한 번 쯤은 들어봤을 (안 들어봤다 해도 괜찮아요) 악명 높은 GIL (Global Interpreter Lock)에 대해 정리해본다. Global Interpreter Lock그래서 GIL은 무엇인가? Python Wiki에서는 이렇게 말한다. In CPython, the global interpreter lock, or GIL, is a mutex that protects access to Python objects, preventing multiple threads from executing Python bytecodes at once. This lock is necessary mainly because CPython's memory management is not threa..

Programming/Python 2018.06.02

C/C++ dll로 만든 함수를 Python에서 사용 (feat. ctypes)

Python의 기본 모듈 중 하나인 ctypes를 이용해서 C언어로 컴파일된 dll안에 넣은 함수를 실행하는 방법을 기록한다. 우리가 사용하고자 하는 C 함수의 인풋과 아웃풋 형식만 잘 맞춰주어야 한다는 것만 기억하면 어렵지 않은 일이다. 계산 속도를 올리기 위해서 C언어를 이용할 때, 더 나아가 CUDA 등의 병렬계산을 이용하고자 할 때 유용하게 이용할 수 있다. 여기서 C코딩이나 CUDA를 다루지는 않는다. 나는 Microsoft Visual Studio 2013 community edition과 Python 2.7.11을 사용하였다. 1. C/C++ 코드 함수를 선언할 때 _stdcall 을 붙여주어서 표준통신규약을 지키게 해야 한다고 한다 (뭔지 잘 모름). ## 파일명: dllfunction.c..

Programming/Python 2016.06.11