콘텐츠로 건너뛰기
Home » Uncategorized

Uncategorized

Rust 기초 (1)

데이터의 변수와 메모리 관리 방식 Rust는 정적 타이핑 언어로, 컴파일 시점에 모든 변수의 타입이 결정됩니다. Rust는 다양한 데이터 타입을 가지고 있는데, 이러한 타입들은 메모리를 사용하는 특성에 따라 스칼라 타입과 복합형으로 구분됩니다. 스칼라 타입은 하나의 단일 값을 의미하는데, 불리언(bool), 정수, 실수, 문자(char) 타입등이 여기에 속합니다. 복합형은 한 가지 정보로만 구성되는 데이터가 아니며, 같은 타입이어도 크기가 다를 수 있는 유형입니다. 문자열(String) 같은 타입이 복합형에 해당합니다. 스칼라 타입은 단일 값이며, 항상 그 크기가 고정되어 있습니다. 따라서 이러한 타입들은 스택에 저장됩니다. 문자열과 같은 복합형은… 더 보기 »Rust 기초 (1)

async for 구문의 작동 원리

비동기, 즉 작업이 완료되지 않더라도 리턴하는 함수는 프로그래밍에서 꽤 오랜 역사를 가지고 있는 아이디어입니다. . 비동기 함수는 ‘동시성’ 혹은 ‘병렬처리’를 위해 고안된 개념이기도 하고요. asyncio 가 비동기 처리에 관한 라이브러리라는 것은 그 이름부터 이미 알려주고 있습니다. 그런데 다시 말하지만 ‘비동기’는 동시성이나 병렬처리를 위해 고안된 개념이라는 것입니다. 컴퓨터 공학 분야에서 병렬처리나 분산처리에 대한 논의는 오래전부터 있었고, 지금 널리 사용되고 있는 다중 스레드의 개념도 이때 등장하여, 여러 상황이나 조건들에 의해 채택되고 지금까지 이어지고 있는 것입니다. 거꾸로 말하면 동시성 처리를 위해서 반드시 스레드만… 더 보기 »async for 구문의 작동 원리

수식을 조합해서 1~40을 만들 수 있는 수 찾기

이 문제는 작년에 조카의 수행평가 관련해서 질문 받은 것인데, 네 개의 서로 다른 숫자와 기본연산자를 조합하여 1~40의 모든 정수를 만들 수 있는 숫자를 찾는 문제였다. 사실 이 문제가 코딩 문제가 아닌 수학 수행 평가라는 점에서 눈을 의심하지 않을 수 없는데, 4개의 숫자로 구성되는 순열(24개)에 대해서, 각 숫자 사이에 들어갈 수 있는 연산자의 경우는 중복을 허용하여 5가지 (사칙연산에 필요한 4개와 연산자를 쓰지 않고 숫자를 붙이는 경우 1개 더)이기 때문에, 숫자 4개가 결정되었을 때 만들 수 있는 식의 개수는 무려 3,000 개이다. 1~9의 9개 숫자 중에서 4개를 선택하는 경우는 126가지이므로 4개의 숫자를 사용해서 만들 수 있는 식의 경우는 총378,000 가지이고, 이 문제는 전수 검사 (운이 좋다면 중간에 40가지의 수를 만드는 식을 만들 수 있는 조합을 찾을 수 있겠지만)를 통해서 찾아야 하는 수 밖에 없고, 결국 가능한 경우를 찾으려면 최악의 경우 거의 38만개의 식을 검사해야 하는데 이걸 컴퓨터의 힘을 빌리지 않고 수행평가를 하라는 것인지 이해가 가지 않았기 때문이다.

컴퓨터를 사용해서 이 문제를 해결하는 방법 자체는 간단한데, 의외로 실행 시간이 오래 걸릴 수는 있다. 이 문제에서는 어떻게든 숫자 4개의 조합에서 1~40까지를 만들 수 있는 경우를 찾으면 바로 종료하여 최대한 시간을 단축하는 방법을 사용했다.

더 보기 »수식을 조합해서 1~40을 만들 수 있는 수 찾기

ZMQ 소켓 – Dealer, Router 이해하기

이전 글에서 프록시를 소개하면서 단순한 REQ – REP 패턴의 네트워크 중간에 중간 매개로 프록시를 넣어 REQ – ROUTER – DEALER – REP 형태로 패턴을 확장하는 예를 살펴보았다. 이 때, ROUTER – DEALER 사이에서 오가는 데이터를 보면 REQ-REP 사이에서 오가는 데이터와 다르게 추가된 프레임이 보인다는 것을 볼 수 있었다. 이번 글에서는 이런 현상은 왜 일어나며, ROUTER가 무슨 짓을 벌이는지에 대해 소개하고자 한다. 적어도 이 개념을 이해한다면 ZMQ를 통해서 훨씬 더 유연하고 창의적인(?) 패턴을 만드는 것도 가능하리라고 본다. 먼저 간단한 REQ-REP 패턴에서… 더 보기 »ZMQ 소켓 – Dealer, Router 이해하기

마이크로소프트 무선마우스 4000 사용후기

코로나로 인해서 학교에서 원격 수업을 하기 시작하면서 딸아이도 본격적으로 컴퓨터를 사용하게 됐다. 집에서 사용하는 노트북을 구매할 때 받은 미니 무선 마우스가 있었는데, 몇 번 떨어뜨려서 건전지 수납부 뚜껑이 떨어져서 잃어버렸다. 그 이후로 쓰는 중에 건전지가 빠져서 마우스가 꺼지는 일이 자주 있어서 새 마우스를 알아보았다. 아무래도 손이 작은 아이가 주로 쓸 것이라 크기가 작은 것들 위주로 알아보려 했는데, 별도의 USB 리시버를 꽂지 않아도 사용할 수 있는 블루투스 연결을 지원하는 마우스들도 많이 있더라. 노트북을 가지고 다니는 일이 잦은데, 이 리시버가 작긴하지만 가방에… 더 보기 »마이크로소프트 무선마우스 4000 사용후기

Julia – 파일 다루기

Julia에서 파일을 여는 법

줄리아에서 파일을 읽고 쓰기 위해서는 IOStream 객체이를 이용한다. 스트림 객체를 만들기 위해서는 open() 함수를 사용한다. 이렇게 얻은 스트림객체는 read(), write(), seek()등 파일 입출력 관련 함수에서 사용된다. 가장 기본적인 문법으로 파일을 열어서 내용을 읽고 출력하는 코드를 작성해보면 다음과 같은데, 다른 많은 언어들과 큰 차이를 보이지 않는 것 같다.

fd = open("myfile.txt")
body = read(fd, String)
println(body)
close(fd)
더 보기 »Julia – 파일 다루기

20091008 :: 바코드의 날

어제가 바코드 탄생 50주년을 맞는 날이었답니다. 위의 황량한 이미지는 이 날의 구글 첫 페이지의 모습입니다. 구글 로고 대신에 떡하니 바코드가 찍혀있다보니 보는 이로 하여금 큰 시각적 충격을 맞이하게 해 줍니다. 더더욱 무서운 사실은 구글(영문 검색 페이지. 한국어 페이지는 예의 그 오목조목 서비스 명칭이 많이 달린 페이지로 동일했습니다) 첫 페이지에 접속하면 눈에 익은 파란색 글씨들 (로그인이라든지, 검색 카테고리 링크 등)이 하나도 보이지 않고 딱 저 바코드와 텍스트 입력 박스만 보인다는 사실입니다. 흠칫 놀라고 있을즘에 서서히 다른 글씨들이 나타나서 이 곳이 구글임을… 더 보기 »20091008 :: 바코드의 날

20090724 :: 미디어법 사태에 대해 짧게…

그저, 이 시대에 이 땅을 사는 한 인간으로서 결코 오늘 일을 잊지 않아야 하겠다고 다짐하고 또 다짐합니다. 주먹에 힘이 들어가는 이 기분… 잠을 이루기 힘들 듯 합니다. 먼저 떠나신 그 분 보기에 너무나 부끄러운 하루였습니다.

20090713 :: 근황

사실, 개인적인 이야기는 블로그에 쓰지 않고 나의 지인들의 대부분은 싸이를 하지 블로그 같은 걸 운영하는 사람도 없어고, 한다고 한 들 내가 블로그를 한다는 사실을 알거나 거기까지는 알고 있지만 실제로 내 블로그를 오는 사람은 없어서 근황을 알릴 필요는 없지만 그래도. 요즘 몸이 좀 안 좋습니다. 몇 주 전부터 조금의 어지럼증이 있었는데, 작년부터 혈압이 조금씩 떨어져서 그런가 보다 했는데, 딱 일주일 전에는 직선으로 걷기가 힘들 정도로 현기증이 심해지더군요. 동네 의원을 갔더니 조금 큰 데 가보는 게 좋겠다고 하셔서 신림역에서 그리 멀지 않은… 더 보기 »20090713 :: 근황