콘텐츠로 건너뛰기
Home » 21세기소년 » 페이지 6

21세기소년

21세기소년 / IT / 정보기술 / 인터넷 / 프로그래밍 / 미래 / 과학 / 과학지식 / 물리 / 화학 / 천문 / 생물학 / 이과생이나 관심가질 법한 자질구레한 이야기들

ZMQ의 기본 개념들

일전에 간단하게 ZMQ에 대한 기본적인 내용을 살짝 정리한 글이 있는데, 사실 ZMQ 자체를 알게 된 게 소켓 통신에 대한 내용을 알아보려 검색하다가 흘러흘러 닿은 것이었더 관계로 글 자체가 공식 문서에서 예제 몇 개를 따온 수준이었다. 이후에 조금 더 알아보니 ZMQ는 단순한 소켓 프로그래밍 API를 대체하는 것 외에 거의 같은 코드베이스로 분산처리라든지 네트워크 소켓외에도 프로세스간 스레드간 통신에 사용될 수 있는 정말 활용폭이 넓고 괜찮은 라이브러리라고 생각됐다. ZMQ 자체는 간단한 개념이며, 기본적으로 사용하는 방식이 소켓과 크게 다르지 않아서 학습 곡성도 매우 낮은데,… 더 보기 »ZMQ의 기본 개념들

bisect – 이진탐색 알고리듬

이진탐색은 데이터가 정렬된 상태일 때, 특정한 값을 매우 우수한 성능으로 탐색할 수 있는 알고리듬으로 실제로도 널리 이용된다. 이진탐색은 정렬된 데이터에서 특정한 값을 찾을 때 사람이 하는 것과 유사하게 처리되는데, 리스트의 한 가운데 지점의 값을 비교하여 찾는 값이 그보다 작으면 왼쪽에 그보다 크면 오른쪽에 있다는 것으로 탐색 범위를 매 시행마다 절반으로 줄여나가기 때문에 특히 규모가 큰 데이터에서 빠르게 조회가 가능하다는 장점이 있다.1 이전에 이진 탐색 알고리듬 적용을 위한 이진 탐색 트리 클래스를 작성하는 내용으로 포스팅을 발행한 적이 있는데, 파이썬은 bisect라는 내장… 더 보기 »bisect – 이진탐색 알고리듬

LCD 패널 방식으로 숫자를 표시해보기 (파이썬)

LCD 처럼 숫자를 표시하는 코드를 만들어 보자 크기와 출력할 숫자를 입력받는다. 크기는 LCD 표시 요소 하나의 크기를 가리킨다. (크기는 1~10,  숫자는 0~99,999,999)  가로선은 -, 세로선은 | 문자를 통해서 표현하며, 사이즈만큼 길이가 길어진다. 따라서 하나의 문자를 표시하기 위해서는 가로는 size + 2, 세로는 size * 2 + 3 만큼의 공간이 필요하다. 예시 – 출력: 0123456789. size: 3 — — — — — — — — | | | | | | | | | | | | | | | |… 더 보기 »LCD 패널 방식으로 숫자를 표시해보기 (파이썬)

SED 사용법

sed는 Stream EDitor의 약자로 매우 컴팩트한 명령 체계를 이용하여 텍스트를 파싱하고 변형하는 (고대의) 텍스트 편집 도구이다. sed는 그 전신이 되는 ed의 스크립팅 체계를 기반으로 하고 있다. vim과 같이 편집될 텍스트를 화면상에 보면서 내용을 작성/수정하는 개념의 텍스트 편집기가 개발되기 이전의 텍스트 편집기이다.

요즘의 텍스트 편집기라 하면 (일례로 메모장을 떠올려보면), 텍스트 편집기를 사용해서 텍스트 파일의 일부분을 수정하는 과정은 1) 텍스트 편집기 프로그램을 실행하고 → 2) 편집할 텍스트 파일을 열고 → 3) 커서를 움직여 편집할 위치로 이동해서 → 4) 내용을 지우거나 삽입하는 식으로 편집하고 → 5) 그 파일을 다시 저장하는 식으로 작업하고, 이것은 현대의 대부분의 사용자에게 가장 익숙한 방법일 것이다.

더 보기 »SED 사용법

SASS/SCSS 내장 함수 정리

지난 글에서  SCSS의 기본적인 문법과 확장, 믹스인, 함수를 작성하는 방법에 대해 정리해 보았다. 이번에는 SASS가 제공하는 기본 함수들을 정리했다. SASS의 기본 함수들은 크게 다음과 같이 나뉜다.

  1. 색상 관련 함수 : 색상 정보 RGB, HSL 값으로 생성하거나, 기존에 만들어져 있는 색상값을 변경할 수 있다. 특히 색상은 유지한채 밝기나 선명도를 변경하는 함수는 동일 색조 내에서 색을 변경하는데 유용하게 쓰일 수 있다.
  2. 숫자 및 문자열 관련 함수
  3. 리스트 및 맵의 데이터 타입을 다루기 위한 함수

더 보기 »SASS/SCSS 내장 함수 정리

(Swift) 시퀀스와 관련된 Swift 표준 함수들

Swift 기본함수 중에는 <a href="https://soooprmx.com/archives/7047">Sequence</a>를 만드는 함수들이 제법 있다. 이러한 함수 중에서 가장 많이 사용할 법한 함수로 우선 stride()를 들 수 있다. 이 함수는 파라미터가 다른 두 가지 버전이 있는데 하나는 stride(from:to:by:) 이고 다른 하나는 stride(from:through:by:)이다. 첫번째 버전은 to: 뒤의 경계를 포함하지 않으며, 두 번째 버전은 ClosedRange처럼 뒤쪽 경계값을 포함한다. 이 함수들은 주로 for 문과 같이 쓰이면서 주어진 범위 내에서 step을 달리하여 건너뛰는 값들을 하나씩 얻을 수 있게 한다. 보통 정수범위의 이터레이션에 쓰이는데, 다음과 같이 10~20사이에서 0.2 씩 뛰면서 반복할… 더 보기 »(Swift) 시퀀스와 관련된 Swift 표준 함수들

Cafe24에서 Python CGI 돌리기

Cafe24에서 Python CGI 돌리기

Cafe24에서 가상리눅스 호스팅 같은 걸 받으면 파이썬3도 설치할 수 있고 그렇다만, 여기서는 기본 호스팅에서 파이썬 CGI를 실행하는 방법을 살펴보도록 하자. (일단 파이썬 버전이 2.4이고 커스텀 모듈을 설치할 수도 없기 때문에 여러모로 좌절스럽긴 하다)

  1. CGI 파일의 위치는 특정한 위치에 들어갈 필요는 없다.
  2. 파일의 확장자는 반드시 .cgi 여야 한다. .py인 경우 일반 텍스트 파일처럼 처리된다.
  3. 첫행은 반드시 #!/home/bin/python 이어야 한다. cafe24 매뉴얼에서 #!/home/bin/python2라고 무려 잘못된 내용을 안내해주고 있다.
  4. 실행 권한은 상관없는 것 같기도 하다.

더 보기 »Cafe24에서 Python CGI 돌리기

jump 관련 명령 정리 – vim

vim에서 h,j,k,l 명령에만 익숙해지는 것도 사실 쉽지 않고, 일단 익숙해지면 이 키들을 연타하는 식으로 커서를 움직이는데, 특정한 위치로 바로 이동할 수 있는 jump관련 명령이 손에 익으면 그만큼 편리할 수가 없더라. jump와 관련된 명령들을 한 번은 정리하고 가자.

마커

m을 이용해서 현재 위치를 특정한 마커로 지정할 수 있고, 백팃 ` 이나 '작은 따옴표를 이용해서 그 위치로 되돌아 갈 수 있다. 보통 마크는 a-z, A-Z, 0-9 와 몇 가지 특수문자가 적용되는데, 특수문자들은 특별한 의미를 가지는 것들이다. 다음은 vim에서 사용되는 마커의 특징이다. 이 중에서 사용자가 임의로 설정할 수 있는 마커는 0-9,a-z,A-Z 이며, 이 각각은 문자의 종류에 따라 또 의미가 조금씩 다르다. 그 외에 편집/선택과 관련하여 특징적인 마커가 있으니 살펴봐두자.

  • a-z 영어 소문자는 일반적인 마크. 파일마다 따로 관리된다.
  • A-Z는 여러 파일간에 유지된다.
  • 0-9는 역시 여러 파일간에 유지되는데 … .viminfo 파일 내에 저장된다고 한다. 따라서 vim을 종료/재시작한 후에도 위치를 기억할 수 있다. (실제로 이는 vim을 빠져나갔을 때 위치를 기억한다고 한다.)
  • < > 는 이전 선택 영역의 처음과 끝을 가리킨다.
  • " 는 최종적으로 수정한 위치를 가리킨다.
  • ' 는 점프하기 이전 위치로 돌아간다.
  • ^는 삽입모드가 최종적으로 종료된 위치로 돌아간다.
  • .은 최종 변경이 시작된 위치이다.
  • [ ] 는 최종적으로 수정한 영역의 처음과 끝을 가리킨다.

:marks를 사용하면 현재 이동할 수 있는 마크들을 보여준다.더 보기 »jump 관련 명령 정리 – vim

(Swift) String타입의 기초 – 03. 활용

목차 Updated (2023-03-03) : Swift 최신 버전과 일부 다를 수 있음 기본적인 문자열 조작에 이어서 몇 가지 문자열 조작과 관련한 대소문자 및 숫자 관련 문자열 전체를 대문자화, 소문자화 하는 기능으로 lowercased(), uppercased() 가 있다. 과거 분사 형태로 된 이름으로부터 이는 본래의 문자열을 변경하는 mutating 메소드가 아니라, 변환된 사본을 생성하는 함수임을 알 수 있다. lowercased(), uppercased()의 경우에는 String 타입이 기본적으로 제공한다. 현재 로케일에서의 지역화 버전인 localizedLowercased(), localizedUppercased()는 Foundation 의 NSString으로부터 브릿징된 API도 존재한다. 문자열이 대문자나 소문자로만 이루어져 있는지를 검사하는 (파이썬의 .isupper(),… 더 보기 »(Swift) String타입의 기초 – 03. 활용