콘텐츠로 건너뛰기
Home » Development » Page 47

Development

프로그래밍 언어 및 환경

NSView의 내용을 이미지로 캡쳐하기

  NSView의 내용을 비트맵 그래픽 파일로 캡쳐하는 방법에 대해 설명하겠다. 일전에 간략히 적어둔 내용이 있었는데, 잘못된 부분도 있고 예전엔 돼었는데 제대로 동작 안하는 부분도 있어서 다시 정리한다. PDF로 캡쳐하는 방법도 있으니 살펴보도록 하자. 이미지를 만든다기 보다는 특정한 포맷으로 표현할 수 있은 이미지 표현형을 획득할 수 있으면(NSBitmapImageRep) 이 클래스의 representation(using:properties:)를 사용해서 이미지 파일을 위한 데이터를 생성할 수 있다. 여기에는 크게 두 가지 방법이 있다. 뷰 자체를 캡쳐하는 NSBitmapImageRep의 이니셜라이저를 사용하기 뷰의 비트맵 캐시를 추출하기 첫번째 방법은 NSBitmapImageRep의 이니셜라이저 중에서 init(focusedViewRect:)를 사용하는… 더 보기 »NSView의 내용을 이미지로 캡쳐하기

Python 101: 변수와 값의 유형

파이썬 초급 강좌 두 번째 시간으로 오늘은 변수와 값의 유형에 대해 살펴보고자 한다. 지난 시간에는 값을 출력해보는 방법에 대해 살펴보면서 문자열이 무엇인지 살펴보았고, 변수에 대해서도 간략하게 언급했었다. 오늘은 변수와 값에 대해서 이야기보려고 한다. 개인적으로 파이썬 기초 개념 중에서 가장 중요한 것을 이 글에서 다루게 되지 싶다.

더 보기 »Python 101: 변수와 값의 유형

Python 101 : 출력과 문자열 (1)

10년전에 작성했던 파이썬 강좌글을 틈틈히 최신 버전에 맞게 수정하고 내용을 수정/보강하여 재발행하는 글입니다. 만성적인 귀찮음 때문에 연재도 중간에 그냥 그만두었었는데, 이번에는 언제까지 해 나갈 수 있을까요? 어떤 프로그래밍 언어를 공부하든간에 거의 가장 처음 접하게 되는 것이 어떤 값을 화면에 출력해보는 것입니다. 사실 출력과 관련된 부분에 대해서도 좀 알아두어야 할 것이 많지만 다른 것들은 뒤로 미루고 오늘은 간단하게 출력만 하는 것에 대해서 살펴보고자 합니다. 왜냐하면 코드 너머에서 실제로 벌어지고 있는 일들은 우리 눈에 보이지 않기 때문에 “코드가 제대로 실행되는지”, “값은 제대로… 더 보기 »Python 101 : 출력과 문자열 (1)

파이썬 소스코드가 실행되는 방식과 import의 동작 원리

<updated> 원래 이 글은 파이썬 실행하는 방법에 대한 글이었는데, 이와 관련하여 별도로 내용을 더 자세히 정리한 글이 있어서 해당 글의 링크로 대신하고, 여기서는 파이썬 소스코드가 실행되는 방식과 내가 작성한 파이썬 파일을 import 하는 방법에 대해서 알아보기로 한다.

파이썬은 기본적으로 IDLE이라는 GUI 쉘과 편집기가 결합된 도구를 제공해주고 있다. 특히 코드 에디터를 이용해서 파이썬 코드를 파일로 저장하는 것은 같은 코드를 다른 프로그램에서 다시 작성할 필요 없이 쉽게 재사용할 수 있다. 특히 이런 코드 재사용을 위해서는 소스 코드를 조리법 식으로 작성하는 것이 아니라 함수 형태로 작성한 후, 다른 소스에서 import 구문을 사용하여 반입하는 방식으로 쉽게 재사용이 가능하다.

더 보기 »파이썬 소스코드가 실행되는 방식과 import의 동작 원리

[Cocoa] 여러 이미지를 이어 붙이기

찾으면 찾으면 있겠지만, 손쉽게 여러 장의 이미지를 가로나 세로로 이어 붙여서 하나로 만들어주는 그런 앱이 있으면 참 좋겠다고 생각하다가, 까짓거 하나 만들면 되지 않겠냐 -_- 고 생각이 들어서 써보는 그런 포스팅 이미지 이어 붙이기 앱을 처음부터 끝까지 만들어보기에는 너무 힘든 포스트가 될 것 같아서, 여러 개의 NSImage를 이어붙이는 부분에 대해서만 살펴보기로 하자 대략의 구상 그러니까 레이어(CGLayer)같은 곳에는 이미지를 원하는 크기로 붙여넣을 수 있으니, 이미지(NSImage)들을 CGImage로 바꾸고, 최종 크기의 비트맵 컨텍스트를 만들어 여기에 이미지들을 각각 그려서 이 컨텍스트로부터 비트맵 이미지(CGImage)를 얻어서… 더 보기 »[Cocoa] 여러 이미지를 이어 붙이기

[Cocoa] NSImage를 파일로 저장하기

NSImage를 파일로 저장하기 이미지를 파일로 저장하기 위해서는 ‘표현형식'(representation)에 대해 알아야 한다. 즉 이미지 자체는 일련의 픽셀을 모아둔 데이터인데, 우리가 흔히 알고 있는 JPG, PNG 등의 파일 포맷은 이 이미지를 각각 정해진 방식으로 ‘정리’하여 파일에 저장하기 때문이다. 표현형식은 이런 파일에 저장된 비트맵 데이터를 다시 이미지로 렌더링하는 역할을 하고, 그 반대의 역할도 수행할 수 있다. NSImage는 1) TIFFRepresentation 메소드를 사용하여 표현형식을 구성하는 데이터로 만든다. 이 데이터를 사용하여 2) NSBitmapImageRep 객체를 생성하고, 이 객체에서부터 3) 실제 저장이 가능한 그래픽 파일 포맷의 데이터를 생성해서… 더 보기 »[Cocoa] NSImage를 파일로 저장하기

[iOS] 코어그래픽에 손대기

코어그래픽은 뷰에 그림을 그리는 기술이다. 하지만 C로 짜여진 API에 온갖 혼란스러운 함수명하며, 컨텍스트와 같은 어려운 개념들이 들어가면서 나와 같은 초보자에게는 마치 ‘넘을 수 없는’ 장벽과 같이 느껴진다. 하지만 많은, 정말 많은 튜토리얼들이 코어그래픽을 사용해서 그림을 그리는 이유는 명확하다. 바로 “아주 빠르기” 때문이다. 코어 그래픽은 그래픽 메모리의 버퍼를 직접 다루므로 아주 빠르다. (다만 일부 기기에서는 느리기도 하더라 ㅠㅠ) 오늘은 “시작하는 마음가짐”으로 코어 그래픽에 대해 잠깐 살펴보도록 하자.
코어그래픽을 사용하는데는 ‘컨텍스트’라는 개념을 이해해야 하는데, 이는 뒤에서 설명하기로 하고 잠시동안 ‘컨텍스트’는 그림을 그리는 도화지, 혹은 포토샵에서의 레이어와 같다고 간주하자.
더 보기 »[iOS] 코어그래픽에 손대기

[iOS/OSX] predicate를 사용한 배열의 필터

배열을 필터하기 특정한 값을 만족하는 원소만을 추출하여 부분 집합을 구하는 작업을 종종 해야 할 때가 있다. 배열에 대한 정렬 보다 간단하다면 간단하고 어렵다면 어려운데, predicate를 사용하면 쉽게 추출이 가능한데, 이 predicate를 사용하는 문법이 별도로 존재하기 때문에 조금 성가실 수 있다. (하지만 영문법과 크게 다르지 않다) NSMutaleArray *array = [NSMutableArray arrayWithObjects:@”Bill”, @”Ben”, @”Chris”, @”Melisa”, nil]; NSPredicate *bPredicate = [NSPredicate predicateWithFormat:@”SELF beginsWith:’b'”]; NSArray *beginWithB = [array filteredArrayUsingPredicate:bPredicate]; // ==> { @”Bill”, @”Ben” } predicate는 너무 깊이 파면 복잡하므로 일종의 쿼리문이며, 대략 다음과… 더 보기 »[iOS/OSX] predicate를 사용한 배열의 필터

[iOS_OSX] 배열을 정렬하기

배열을 정렬하기

배열을 정렬하는 거 언젠가는 써 먹겠지 싶어서 정리.
생각보다 자주 써먹게 되더라

배열을 정리하는 방식은 크게 세 가지로 1)디스크립터를 사용하거나 2)블럭, 3)셀렉터를 사용하는 방법이 있다. 각각이 표현의(?) 차이는 있는데 실제로는 각 요소들을 비교하여 어떤 것이 앞에 오는지를 비교하여 정렬하게 된다.더 보기 »[iOS_OSX] 배열을 정렬하기

키밸류 옵저빙이란

키밸류 옵저빙 키밸류코딩(KVC)에 이어서 키밸류 옵저빙에 대해 이야기해보자. 키밸류 코딩에 관한 포스팅에서 키밸류 코딩은 키밸류 옵저빙의 근간이 되는, 어떤 객체의 프로퍼티를 키 이름으로 런타임에 동적으로 탐색하여 액세스할 수 있게하는 기술이라고 하였다. 키밸류 옵저빙 역시 프로퍼티 액세스와 관련한 Objective-C 런타임이 제공하는 동적 기능의 일종으로, 특정한 키에 대한 객체의 프로퍼티 값이 변경될 때, 해당 변경에 대한 알림이 다른 객체로 통지되는 것을 말한다. 예를 들어 foo 라는 객체 인스턴스에 a 라는 프로퍼티가 있고, bar 라는 객체가 이 프로퍼티에 대한 옵저버로 등록이 되어 있다면,… 더 보기 »키밸류 옵저빙이란

Pages: 1 2 3