콘텐츠로 건너뛰기
Home » 스터디 » Page 36

스터디

[Cocoa] NSSound를 통한 초간단 사운드 재생

코코아에는 소리를 재생할 수 있는 NSSound 클래스가 있다. NSSound는 소리 재생을 위한 작업을 극도로 단순화하는 클래스로 인스턴스 메소드를 사용하는 것만으로 간단히 사운드를 재생할 수 있다. NSSound는 AIFF, WAV, NextSND 포맷을 재생할 수 있다. 음향 데이터는 디스크 상의 파일이나, 네트워크상의 URL, 페이스트 보드에 복사한 데이터가 될 수 있다. 또한 시스템에서 사용하는 사운드는 경로가 아닌 이름으로 재생이 가능하다. 이러한 시스템 사운드는 /Library/Sounds 디렉토리에 저장되어 있다. NSSound는 음향 데이터를 여러 방법으로 로딩할 수 있다. 기본적으로 시스템 라이브러리에 등록되어 있는 소리, 파일의 경로, URL… 더 보기 »[Cocoa] NSSound를 통한 초간단 사운드 재생

UIImage를 카메라롤에 저장하기

UIImage를 아이폰의 카메라롤에 저장하는 과정은 사실 간단하다. 카메라롤은 내부에 사진을 정리/저장할 수 있는 체계를 가지고 있는 시스템이고, 여기에 특정 이미지를 저장하겠다는 함수를 호출하는 것으로 해당 동작을 처리할 수 있다. UIImageWriteToSavedPhotosAlbum()이라는 이름을 잘못쓰기 쉽게끔 지어놓은 UIKit 자유 함수가 여기에 사용된다. 이 함수의 원형은 다음과 같다. void UIImageWriteToSavedPhotosAlbum( UIImage* image, id completeionTarget, SEL completionselector, void* contextInfo ); 이 함수는 넘겨 받은 이미지를 카메라롤에 저장하고, 저장 작업이 완료되면 지정된 타깃에 지정된 메시지를 보낸다. 각 파라미터들은 원형에서도 짐작할 수 있겠지만, 다음과 같다. image :… 더 보기 »UIImage를 카메라롤에 저장하기

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의 동작 원리

[Objective-C] CGD를 사용한 싱글톤 구현하기 (공유 인스턴스)

어떤 클래스의 인스턴스를 공용으로 만드는 것은 사실 알게 모르게 많이 사용하고 있는 패턴이다. 예를 들어 [NSFileManager defaultManager] 라든가 [UIApplication sharedApplication], [NSNotificationCenter defaultCenter] 같은 것들이 공용 인스턴스가 될 것이다. 이는 싱글톤이라는 패턴이라고 하는데, 그러니까 단 하나만 존재한다는 뭐 그런 의미겠지. 암튼 싱글톤을 만드는 방법은 좋은 점도 있겠지만 글로벌하게 접근하는 객체를 위해서 만들기에는 좀 부담스럽지 않은가 하는데, 아래와 같은 방법을 통해 (이는 전통적인 싱글톤 구현방법은 아니라고 한다.) 손쉽게 만들 수 있다. 이는 코드를 그대로 가져다 붙이기만 하면 되고, 빠르고, ARC의 적용을 받으며,… 더 보기 »[Objective-C] CGD를 사용한 싱글톤 구현하기 (공유 인스턴스)

[Objective-C] 오토릴리즈 풀

메모리 관리의 첫번째 원칙은 누군가 어떤 메모리를 할당했다면, 그 해제의 책임도 함께 져야 한다는 것이다. 예를 들어 어떤 코드에서 새로운 객체를 생성했다면, 이 객체를 해제하는 책임 역시 그 코드가 갖게 된다. 그러나 상황에 따라서는 이 원칙을 지키는 것이 여의치 않을 수 있다. 이를 테면 어떤 객체를 생성해서 다른 곳으로 전달해주어, 그 객체가 언제까지 유지되어야 할지 알지 못할 때로 함수 내부에서 생성된 객체가 그 함수의 리턴 값으로 전달된 경우를 말한다. 여기서 메모리 관리의 두 번째 원칙이 등장하는데, 필요에 의해서 어떤 객체의… 더 보기 »[Objective-C] 오토릴리즈 풀

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

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

vi의 조금 편리한 기능들

사실은 조금 더 강력한 기능이랄까. 반복 . – (dot) 구두점은 마지막으로 실행한 명령을 다시 한 번 더 실행해준다. 명령의 반복은 다음과 같이 볼 수 있다. {숫자} {명령} – 명령 앞에 숫자를 붙이면 그 숫자만큼 반복하게 된다. 이동할 때 3 w라고 하면 세 단어를 이동하는 데 이것이 사실은 거의 모든 명령에도 적용될 수 있다. 2dd # 현재 줄을 포함하여 2줄을 삭제한다. 3p # 잘라낸 2줄을 3번 붙인다. 100iDescription <ESC> # ‘Description ‘을 100번 삽입한다. . # 위의 것을 1번 더 즉… 더 보기 »vi의 조금 편리한 기능들