콘텐츠로 건너뛰기
Home » 분류할 수 없는 » Page 3

분류할 수 없는

bind or connect

bind vs connect in zmq ZeroMQ는 각각의 접속연결에 대해서 큐를 생성한다. 예를 들어 소켓이 3개의 피어 소켓과 연결된다면 3개의 큐가 만들어진다. bind를 사용하면 각각의 피어들이 이 소켓에 connect할 수 있게 허용한다. 따라서 앞으로 몇 개의 소켓이 피어로 접속될지 알 수 없고 미리 큐를 만들어놓지 못한다. 대신 각각의 큐들은 각각의 피어 소켓이 접속해 올 때 만들어진다. connect를 사용하면 ZeroMQ는 최소한 한 개의 싱글피어가 연결 반대쪽에 있다는 것을 알게되므로 즉시 큐를 생성할 수 있다. 결과적으로 피어가 없는 소켓으로 메시지를 보낼 때는 메시지를… 더 보기 »bind or connect

Swift :: NSScanner 사용예제

NSScanner로 문자열로부터 특정한 값 뽑아내기

이 문서는 Swift 4.2를 기준으로 수정되었습니다. NSScanner에 대한 Swift Foundation 대응 클래스인 Scanner 클래스가 새로 정의되었으며, CharacterSet에 대한 몇 가지 사용 방법이 변경되었습니다

  1. 스캔할 문자열을 넘겨서 Scanner 객체를 생성한다.
  2. 스캐너가 무시하고 지나가야 할 문자들이 있으면 CharacterSet 타입의 값으로 만들어서 charactersToBeSkipped 속성으로 지정한다.
  3. 자, 이제 스캔을 시작하지.

이때, 스캐너의 API는 예전 Objective-C API에서 크게 바뀌지 않은 관계로 포인터를 인자로 받고, 넘겨 받은 포인터가 가리키는 객체에 스캔한 값을 쓰게 된다.

더 보기 »Swift :: NSScanner 사용예제

WWDC의 자동 메모이제이션 코드 분석

소수 판별이나 소인수분해와 같이 시간이 오래 소요될 수 있는 연산량이 큰 작업이 있고, 이 연산을 반복해서 수행할 일이 많을 때 성능을 개선할 수 있는 가장 손쉬운 방법으로는 연산 결과를 캐싱하는 것이 있을 수 있다. 즉 함수의 외부에 사전과 같은 캐시 저장소를 하나 준비해 두고 입력값을 키로 캐시값을 감사하여 있으면 사용, 없으면 원래 함수 코드를 실행하여 캐시값을 기록하고 리턴하는 방식을 사용하는 것이다. 이는 일일이 그러한 함수를 작성하기 보다는 클로저를 인자로 받아 클로저를 리턴하는 함수를 사용하여 조금 더 유연하게 사용할 수 있다.… 더 보기 »WWDC의 자동 메모이제이션 코드 분석

유튜브 재생목록 내의 파일들을 다운로드 받기

bash 와 youtube-dl을 사용하여 유튜브 재생목록 내의 파일들을 다운로드 받는 과정을 정리했다. 여러 동영상을 모아두는 재생목록을 찾아서 동영상 리스트 페이지로 들어간다. 해당 페이지의 소스를 복사하여 편집기에 붙여둔다. 영상리스트에서 각 영상의 링크는 도메인을 빼고 /watch?v=….. 이런 식으로 주소가 구성된다. 그래서 \/watch\?v\=[a-zA-Z0-9]+ 패턴으로 모두 찾아서 이를 복사한다. 3의 주소들은 같은 주소가 모두 반복된다. 그래서 vim 등에서 한 줄씩만 남기고 지우는 작업을 거친다. 그리고 내용을 저장한다. 다음 bash 스크립트로 다운로드 받는다. $ for i in $(cat list.txt); do youtube-dl "http://www.youtube.com/$i"; done 다운로드 받은… 더 보기 »유튜브 재생목록 내의 파일들을 다운로드 받기

파이썬의 이름공간과 변수의 스코프

네임스페이스(name space, 이름공간)이란 프로그래밍 언어에서 특정한 엔티티를 이름에 따라 구분할 수 있는 범위를 말하는 것이다. 소스코드를 작성할 때 가장 어려운 일 중 하나는 변수나 함수의 이름을 정하는 것인데, 충돌이 발생하지 않도록 변수/함수의 이름을 모두 유니크하게 만드는 것은 현실적으로 불가능하다. 모든 이름을 외우고 있기도 어렵거니와, 여러 사람이 협업하는 경우에 다른 사람이 쓸 이름까지 다 알 수는 없기 때문이다.

그래서 프로그래밍언어에서는 네임스페이스라는 개념을 도입하여, 특정한 하나의 이름이 통용될 수 있는 범위를 제한한다. 따라서 소속된 네임스페이스가 다르다면 같은 이름이 다른 개체를 가리키도록 하는 것이 가능해진다.

더 보기 »파이썬의 이름공간과 변수의 스코프

[Swift] fast enumeration을 지원하는 Sequence타입

Sequence Type in Swift

Swift는 Objective-C에서 fast-enumeration이라 불리던 집합타입 내 원소 개체들을 순회하는 반복문을 지원한다. (이미 많은 언어들이 이러한 반복문 개념을 지원하고 있다.) Python의 그것과 매우 유사하게 Swift의 for..in 구문은 부적으로 시퀀스, 제너레이터라는 개념을 사용하고 있다.
Swift가 기본적으로 제공하는 Array, Dictionary는 기본적으로 for..in 구문예 적용이 가능하다. 그리고 이들은 내부적으로 SequenceType이라는 프로토콜을 따르고 있는데, 이는 다음과 같이 정의되어 있다. 더 보기 »[Swift] fast enumeration을 지원하는 Sequence타입

sed 사용법

how to use sed

sed는 “스트림 에디팅”의 약어로 sort나 grep과 유사하나 생각보다 많은 일을 할 수 있는 유틸리티이다. (일종의 자동화된 편집기라고 보면 된다.) sed의 문법은 다음의 개요를 가진다.

$ sed [-n] [-e script] [-f sfilename] [filenames]

단, -e옵션은 따로 붙이지 않아도 스크립트로 인식한다.

$ sed script filename

그 외에 몇 가지 옵션이 있다. (쓰일 것 같은 것만 기재. 전체 문서는 매뉴얼 문서 참고)더 보기 »sed 사용법

[Swift] 코어 이미지

Beginning Core Image in Swift

http://www.raywenderlich.com/76285/beginning-core-image-swift

코어 이미지는 이미지에 손쉽게 필터처리를 할 수 있는 강력한 프레임워크이다. 이는 어지간한 기본적인 사진 효과를 만들어낼 수 있는데, CPU 혹은 GPU 기반으로 프로세싱하고 있어서 매우 빠르다. 그냥 빠른 게 아니라 매우 빠르기 때문에 리얼타임으로 비디오 프레임에 적용될 수도 있다.
코어 이미지 필터는 여러 필터가 연쇄적으로 하나의 사진이나 비디오 프레임에 한꺼번에 적용될 수 있다. 이 때 여러 필터는 하나의 필터로 결합되어 이미지에 적용된다. 이런 방식은 한 번에 하나씩 이미지에 적용되는 것에 비해 훨씬 효율적이다. 더 보기 »[Swift] 코어 이미지

QuickSort in Functional Programming

일전에 포스팅하여 설명한 바 있는 퀵소트는 제자리정렬 (추가적으로 메모리를 사용하지 않고 배열 내 원소들의 위치를 바꿔가며 정렬)이지만 함수형 프로그래밍 언어에서는 모든 ‘값’이 상수이므로 변경이 불가하여 이를 적용할 수 없다. 결국 퀵소트를 구현하려고하면 제자리 정렬을 하는 대신 계속해서 부분집합의 사본을 만들게되는데, 그럼에도 불구하고 함수형 언어의 문법들은 수학적 표현과 관련이 깊기 때문에 더 간단하게 표현되는 경우가 많다.더 보기 »QuickSort in Functional Programming

Mingw-bash에서 chocoloatey 패키지 전체 재설치하기

윈도에서 여러 프로그램을 패키징하여 명령줄에서 설치하고 있는 Chocolatey가 요즘 업데이트를 제대로 못하고 있는 거 깉아서 설치된 패키지를 강제로 최신버전으로 재설치하도록하는 한방 스크립트. 더군다나 패키지 리스트 출력시에 그지같은 문구를 추가로 삽입하고 있어서 sed1를 쓰지 않을 수 없었음. This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters #!/bin/sh # force reinstall all… 더 보기 »Mingw-bash에서 chocoloatey 패키지 전체 재설치하기