전체 글 354

Python - pathlib, File/Directory Path 관련 모듈

>>> from pathlib import Path >>> Path("/home/ubuntu") PosixPath('/home/ubuntu') pathlib 는 python 3.4 에서 처음 소개 되었다. 서로 다른 운영체제의 파일 시스템에서도 동일한 코드를 통해 동작할 수 있도록 Object-oriented (객체지향)으로 구현되어 있는 특징이 있다. I/O 동작 포함 여부에 따라 다음과 같이 2가지 형태로 구분된다. PurePath : 실질적인 File system 접근 (I/O 동작) 없이 File/Directory Path 만 계산 PurePosixPath : non-Windows 파일 시스템의 특성에 따라 동작 수행 PureWindowsPath : Windows 파일 시스템의 특성에 따라 동작 ..

카테고리 없음 2019.09.02

Signed / Unsigned 의 비교

signed 의 경우 양/음수를 표현할 수 있는 변수형으로 알고 있고, unsigned 의 경우 양수만 표현할 수 있는 것으로 막연히 알고 있었는데, 코드로 실제 비교해 보았다. #include int main() { signed char a = 0xFF; unsigned char b = 0xFF; printf("a = %d\n", a); printf("b = %d\n", b); } [결과] a = -1 b = 255 2진수 (16진수) 10진수 (signed char) 10진수 (unsigned char) 1111 1111 (0xFF) -1 255 signed char 의 경우 이진수 1111 1111 중 MSB (Most Significant Bit) 는 부호 표현을 위해 사용된다. 이에 2의 보수법..

Language/C 2019.08.24

세마포어 (Semaphore) / 뮤텍스 (Mutex) 의 이해

세마포어 (Semaphore) 다중 프로세스 혹은 다중 쓰레드 간에 발생할 수 있는 교착 상태 (Deadlock) 에 대한 해법 (모든 교착 상태에 대한 해법을 제시하지는 못하지만 고전적인 해법 중 하나) 기본적으로 상호 배제 알고리즘 (Mutual Exclusion) 기반 세마포어는 원자적(atomic)으로 제어되는 정수 변수로 프로세스간 접근할 수 있기 위해 프로세스 외부에 존재한다. Counting semaphore Semaphore S : 정수값을 가지는 변수로 P 와 V 라는 동작(operation)에 의해서만 접근할 수 있다. 세마포어 S는 현재 사용 가능한 자원 (resource)의 수를 의미한다. 이에 0 이면 접근 가능한 자원이 없는 것을 의미한다. P Operation : 임계 구역에 ..

OS 2019.08.22

CRLF / LF / CR 에 대한 이해

CR : Carriage Return (\r) LF : Line Feed (\n) 해당 용어(CR, LF)와 이 용어들의 조합(CRLF)은 새로운 줄 (New line) 으로 바꾸는 방식을 의미한다. CR 과 LF 는 타자기 시절 부터 줄바꿈을 위해 사용하던 방식인데 각각의 의미는 다음과 같다. CR : 현재 커서를 줄 올림 없이 가장 앞으로 옮기는 동작 LF : 커서는 그 자리에 그대로 둔 상황에서 종이만 한 줄 올려 줄을 바꾸는 동작 이 방식(CR + LF)은 타자기 이후 컴퓨터에서도 줄바꿈을 의미할 때도 사용되었으나, 줄바꿈을 할 때 굳이 2 byte 를 사용할 필요가 없기에 메모리/Storage 절약을 위해 CR 혹은 LF 만 사용하기도 하였다. 대표적으로 Microsoft 사의 Windows 는..

OS 2019.08.20

Termius 를 통한 AWS 접속

이제까지는 흔히 ssh를 이용할 때 putty 를 사용하곤 했다. putty 는 기능도 충실하고, 안정적으로 사용해왔었기에 별다른 큰 문제가 없었다. 하지만 여러 ssh 서버에 접속을 하여 다중으로 창을 열 경우 창 관리가 잘 되지 않아 간혹 헤매는 경우가 종종 있었다. 이에 창 관리가 편한 ssh client 를 찾다 보니 termius 에 대해 할게 되었다. termius 의 가장 큰 장점은 Desktop과 Mobile을 포함하여 다양한 OS (macOS, Windows, Linux, iOS, Android)를 지원한다는 것이다. multiplatform 에서 동작하기 때문에 다양한 OS 상에서 ssh 접속에 대해 동일한 경험을 가질 수 있다. Termius 를 설치하고 실행하면 다음과 같은 화면을 ..

[WSL] Windows 10에서 Linux 의 사용

Microsoft 가 Linux 를 WSL (Windows Subsystem for Linux) 라는 방식으로 지원하고 있다. 이전에는 vmware나 virtualbox를 통해 virtual machine 을 통해 windows 를 사용하곤하였지만 이제는 subsystem 이라는 방식으로 Linux를 Windows 에서 사용할 수 있는 것이다. 해당 기능은 Windows 10에서만 지원하는 기능이다. 기존 WSL 이후 WSL 2 가 발표된 상태이다. [WSL] https://docs.microsoft.com/ko-kr/windows/wsl/about [WSL2] https://docs.microsoft.com/ko-kr/windows/wsl/wsl2-index 해당 글에서는 WSL 을 설치하고 최신으로 ..

OS/Windows 2019.08.04

[Publisher Toolbar] Google 게시자 툴바가 아직 초기화되지 않았습니다. 몇 분 후에 다시 시도해 주세요.

가끔 adsense 현황을 확인하기 위해 Chrome 확장 프로그램인 Google Publisher Toolbar를 이용한다. 그런데 아래와 같이 "Google 게시자 툴바가 아직 초기화되지 않았습니다. 몇 분 후에 다시 시도해 주세요." 라는 에러 문구와 함께 정상적으로 내용이 보여지지 않을 때가 있다. 이 때는 Chrome을 다시 껐다 켜도, 몇 분을 기다려도 해결이 되지 않았다. 이에 해결책을 찾아보니 아래와 같이 하면 문제 현상을 없앴을 있다. 1) Publisher Toolbar 에서 마우스 오른 클릭을 하여 "확장 프로그램 관리" 메뉴를 선택한다. 2) Google Publisher Toolbar에 대한 확장 프로그램 관리 페이지가 나오면 제일 위에 "사용" toggle bar를 클릭하여 "사..

[Publisher Toolbar] 이 코드를 복사하여 애플리케이션으로 전환한 다음 붙여넣으세요.

[문제 상황] 오랜만에 adsense에 접속하고 Chrome에 확장 프로그램으로 Publisher Toolbar를 설치하게 되었다. https://chrome.google.com/webstore Chrome 웹 스토어 Chrome에 사용할 유용한 앱, 게임, 확장 프로그램 및 테마를 찾아보세요. chrome.google.com Chrome 웹 스토어에서 Publisher Toolbar를 깔고 아이콘을 눌러보니 아래와 같이 "사용" 버튼을 통해 로그인을 해야 했다. Adsense 가입되어 있는 아이디와 비밀번호를 입력하고 나면 아래와 같은 화면이 나오고 "허용" 버튼을 누른다. 그런데 바로 로그인되고 현재 현황이 나올줄 알았는데, 아래와 같이 "이 코드를 복사하여 애플리케이션으로 전환한 다음 붙여넣으세요...

Python - random(), 임의의 수(난수)를 구하는 함수

가장 흔히 사용되는 기능으로 random 값을 생성하는 random() 함수가 있다. 해당 함수를 사용하기 위해서는 별도의 random module을 import 하여 사용해야 한다. 직접 난수를 구하는 로직을 작성해 본 사람을 알겠지만 규칙이 없는 난수를 생성하기는 쉽지가 않다. 질 좋은 난수 생성기더라도 경우의 수를 늘려 생성하다 보면 어느 순간 규칙을 가지는 것을 확인하는 경우가 다수이기 때문이다. 이를 극복하기 위해 난수 생성하는 로직이 제안되고 존재하는데 Python 에서는 Mersenne Twister 라는 난수 생성기를 사용한다. 하지만 이 난수 생성 로직도 특정 상황에서 다음 난수를 예측할 수 있기 때문에 암호 관련 목적으로 random 모듈로 부터 생성된 난수 사용은 권장하지 않고 있다...

Language/Python 2019.03.20

Python - Python 2 에서 Python 3 으로의 전환

PYthon을 처음 접한지 몇년이 지났지만 Python 3에 대한 거부감(?), 두려움(?)은 상당했다. 우선 접하고 있던 Python code들은 모두 2.7을 기준으로 작성되어 있었고, 나 또한 그 틀에서 벗어났을 때 코드가 동작하지 않을 수도 있다는 점에서 상호 호환이 되지 않는 Python 3으로의 전환은 어려웠다. 하지만 수년내 python 2.7 의 지원이 종료될 예정임에 따라, 최근 신규로 작성하는 코드를 모두 Python 3로 작성을 시작해 보았다. 내부적으로는 많은 차이가 있겠지만 자체적으로 느꼈던 차이점은 다음과 같았다. 1. print 문 사용의 변화 기존 python 2에서는 print "ABC" 와 같이 사용이 가능하였으나 Python3 에서는 함수사용과 마찬가지로 중괄호를 넣어줘..

Language/Python 2019.03.19