ios 2013.01.26 13:36

itunes carrier testing mode

를 빙자한 아이폰 캐리어 모양 쉽게 바꾸기

mac: defaults write com.apple.iTunes carrier-testing -bool YES

을 한 다음 아이튠즈에서 업데이트를 option-click하고 준비한 ipcc를 덮어씌운다

windows: "%ProgramFiles%\iTunes\iTunes.exe" /setPrefInt carrier-testing 1

이하 동문

신고

'ios' 카테고리의 다른 글

Inferis/ViewDeck  (0) 2013.02.05
itunes carrier testing mode  (0) 2013.01.26
Strong, Weak, ARC(Automatic Reference Counting)  (0) 2013.01.17
Storyboard  (0) 2013.01.17
ios 2013.01.17 17:28

Strong, Weak, ARC(Automatic Reference Counting)

1. 프로퍼티로 변수 선언할때, weak 나 strong 로 선택할수 있는데, 어떤때에는 weak로 선언하고, 어떤때에는 strong로 선언해야 하는지 감이 잘 안잡힙니다.
-> 정답 없습니다.다만 중요한 사실은 이렇습니다. strong으로 reference 되는 object는 메모리에서 해제되는것이 허락되지 않습니다. 이 reference에 nil이 대입되기 전까지는요. weak reference되는 object는 그거랑 상관없이 다른데서 다른 이유로 메모리에서 해제될 수 있습니다. 이때 weak reference 하던 property에는 자동으로 nil이 대입됩니다.

2. @synthesize를 선언하면 해당 getter가 자동으로 생성되는데, 코드에 다시 getter method를 작성해줘야 하는건가요? alloc를 해주기 위함인지. 항상 해줘야 하는지, 어떨때 재작성을 하는것인지 궁금합니다.
-> setter와 getter를 별도로 구현해 주지 않으면 내부적으로 자동 구현된다는 뜻입니다. 데모에서 @synthesize 선언 해두고 getter를 다시 구현하는 경우는 대부분 이런 경우 입니다.

“getter가 호출되는 시점에 할당된 object가 없으면 내부적으로 한번 할당 해 준다. 이것은 다음 nil이 assign 될때까지 두번 할당 되지 않는다. 이렇게 해 두면 실제 사용되려는 시점까지 불필요한 object 할당, 즉 메모리 할당,을 미룰수가 있다.” 이런 전략때문이지 반드시 이렇게 해야되는것은 아닙니다.

3. 위의 질문과도 연관이 있는데, strong로 선언하면 alloc를 우선적으로 해주고 사용해야 하나요?
storyboard에서 컨트롤을 올려서 IBOulet로 연결된 프로퍼티 변수는 alloc를 안해도 되나요?
-> alloc을 우선적으로 해준다는 말씀이 잘 이해되지 않습니다만, 데모에서 getter에서 처음한번 object 만들어주는것을 말씀하신다면, 위에 답변 드렸듯이, 다른 의도가 있어서 그런것이지 이런과정 없이도 사용하실 수 있습니다만 본인의 의도에 달려있습니다. 예를들면,

@property (nonatomic, strong) MyClass *myObject;

@synthesize myObject;

위와 같이 해 두시면 myObject에 MyClass * object를 assign했다가 nil을 하는것은 전적으로 프로그램 코드에 책임이 있습니다. 내부적으로 getter와 setter가 구현되어 assign 될떄 strong reference 했다가 nil assign할때 strong reference 푸는 작업이 자동으로 일어납니다.

Storyboard에서 IBOutlet으로 연결한 property들은 자세히 보시면 weak attribute이 지정되어 있는것을 아실 수 있습니다. Storyboard에서 strong reference처리를 해 두기 때문에 굳이 UIViewController object에서 strong reference를 한번 더 할 필요는 없습니다.

말이 뱅글뱅글 돌아 점점 어려워 지지만 정리하자면 아래와 같은 내용을 명확히 이해 하시면 되겠네요
- Objective-C @property의 strong 과 weak attribute의 차이점: memory 해제 여부와 관련있음
- @synthesize keyword는 @property attribute에 따라 자동으로 setter/getter를 만들어준다
- @synthesize가 자동으로 만들어주는 getter나 setter 대신 추가적인 일을 더 해주고 싶다면 getter나 setter를 추가적으로 구현해도 된다. 특히 getter를 구현하는것은 valve에 해당하는 시점이기 때문에 단순히 object 를 읽어가는것 이외의 추가적인 작업을 하기에 좋은 타이밍이다.

http://www.iosappdev.co.kr/?p=1077


신고

'ios' 카테고리의 다른 글

Inferis/ViewDeck  (0) 2013.02.05
itunes carrier testing mode  (0) 2013.01.26
Strong, Weak, ARC(Automatic Reference Counting)  (0) 2013.01.17
Storyboard  (0) 2013.01.17
ios 2013.01.17 16:03

Storyboard

ios개발을 안 하게 된지 몇년 되어서 메소드마저 가물가물거렸다.

아는 사람에게 요즘 interface builder 어떠냐고 물어봤는데(내가 한창 ios를 하던 시절에 interface builder는 도움이 되기보단 짜증만 나게 하는 경우가 많아서 난 모든 컨트롤을 하드코딩해서 추가하는 식으로 프로그래밍 했었다), 잘 모르겠지만 요즘은 storyboard 란 기능을 쓴다는 답변이 돌아왔다. 격세지감과 공부해야겠단 생각이 들어서 찾아봤는데, 이런 기능이란다. 아무래도 이젠 interface builder와 친해질 시기가 된 것 같다.

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

http://www.raywenderlich.com/5191/beginning-storyboards-in-ios-5-part-2

http://pinkyroman.tistory.com/4


신고

'ios' 카테고리의 다른 글

Inferis/ViewDeck  (0) 2013.02.05
itunes carrier testing mode  (0) 2013.01.26
Strong, Weak, ARC(Automatic Reference Counting)  (0) 2013.01.17
Storyboard  (0) 2013.01.17
Tip/programming 2013.01.03 15:25

taglib

그러나 밑의 글은 이것을 찾으면서 뻘글이 되어 버리는데...

http://taglib.github.com/

TagLib is a library for reading and editing the meta-data of several popular audio formats. 

설명이 필요가 없다

for c#

https://github.com/mono/taglib-sharp

example. 역시 스택오버플로우가 체고시다

http://stackoverflow.com/questions/4361587/where-can-i-find-tag-lib-sharp-examples

신고

'Tip > programming' 카테고리의 다른 글

OpenGL Programming on mac  (0) 2013.03.11
mosh  (0) 2013.02.19
taglib  (0) 2013.01.03
.NET Sound Library  (0) 2013.01.01
osx에서 자바 컴파일하기  (0) 2012.09.18
Zen Coding Manual  (4) 2012.09.11
Tip/programming 2013.01.01 23:27

.NET Sound Library

1. BASS

기능이 많아보임. 개인적 사용은 무료, 어떠한 방법으로든 수익을 내려면 라이센스를 사야 함

지원하는 플랫폼은 많음. .net도 그중 하나인듯

http://www.un4seen.com/

2. naudio

open source .net audio library. 막 갖다 써도 된다는 것. MS-PL License 라는데 안 읽어봐서 모르겠지만

NAudio is licensed under the Microsoft Public License (Ms-PL) which means that you can use it in whatever project you like including commercial projects.

이정도면 충분할 듯.

http://naudio.codeplex.com/

3. WPFSVL(WPF Sound Visualization Library)

사실 이 라이브러리를 찾게 되면서 1, 2번에 대해 알아보게 된 건데, 이걸 왜 찾아봤냐면 WPF에서 mp3파일을 다루는 것이 굉장히 귀찮고, 일단 mp3파일의 앨범 아트를 뽑아내고 싶었기 때문. 이 라이브러리가 1, 2번에 의존해서(정확히는 저 두 개의 라이브러리중 하나로 생성된 객체를 WPFSVL에 등록해주는 방식이라 함. 다른 라이브러리도 쓸 수 있겠지만 제작자가 둘중 하나가 가장 낫다고 하니..) 사용되는 라이브러리기 때문이었다.

http://wpfsvl.codeplex.com

덕분에 괜찮은 .net용 audio library도 찾게 되었다. 일단 기본적으로 쓸 수 있는 MediaElement는 한번 써본 다음에 쓰기 싫어졌다. isPlaying같은 멤버도 없는 것에서 저 클래스를 잘 디자인했다는 생각이 안 들었기 때문... 재생중인지 아닌지를 판단하는 멤버를 직접 만들어야 한다니.. sucks. 개발은 2+3으로 하기로 결정

신고

'Tip > programming' 카테고리의 다른 글

mosh  (0) 2013.02.19
taglib  (0) 2013.01.03
.NET Sound Library  (0) 2013.01.01
osx에서 자바 컴파일하기  (0) 2012.09.18
Zen Coding Manual  (4) 2012.09.11
Zen Coding  (0) 2012.09.08
Tip/etc 2012.12.18 05:26

부팅시 자동으로 VM이 실행되게 하기

연구용으로 쓰는 리눅스를 재부팅 할때마다 다시 켜야하는 건 귀찮은 일이다. 특히 vmware를 켜는데 걸리는 5~10초의 딜레이는 괜히 거슬린다.

여기서 깔끔하게 해결 가능하다.


신고

'Tip > etc' 카테고리의 다른 글

regex  (0) 2013.07.16
windows 8 에서의 색 보정  (0) 2013.03.28
부팅시 자동으로 VM이 실행되게 하기  (0) 2012.12.18
linux 2012.12.10 03:14

Tunneling SSH over HTTP(S)

http://dag.wieers.com/howto/ssh-http-tunneling/

http://blog.stalkr.net/2012/02/sshhttps-multiplexing-with-sshttp.html

http://proxytunnel.sourceforge.net

어떻게 잘 해서 동아리방 컴퓨터 외부에서 SSH로 접속할 수 있으면 여러모로 응용이 가능할듯

신고
linux 2012.12.07 03:12

Setting Ubuntu Server 12.04 on VMWare

 다음은 혼자 공부하기+Linux와 관련된 일을 수월하게 하기 위한 목적으로 VMWare에 설치한 Ubuntu Server 12.04의 세팅 과정이다.

 Windows에서 -nix 관련 일을 하려면 Cygwin을 설치하면 되지 않느냐는 생각도 할 수 있지만, 그 뭔가 어설픈듯한(완성도를 논하는게 아니라, Cygwin에서 모든 Linux의 기능을 "설치"하고 "사용가능"하게 만들 수가 없다는 뜻이다) Cygwin을 참을 수가 없어서 결국 VM을 만들기로 했다.

1. 공유 폴더 만들기

지난 포스트에서 했다. 저 포스트에도 써있지만, 공유폴더를 심볼릭 링크 해주면 편하다.

2. root pw 설정

sudo su

passwd

3. SSH 설치: VM은 Background로 돌리고 각종 터미널 프로그램(iPuttyXShell을 추천한다. 둘다 개인사용자는 무료)으로 VM에 할당된 내부 IP에 접속하는 것이, 터미널 스크롤도 안되는 VMWare 화면보다 훨씬 나은게 당연하다

sudo apt-get install ssh

4. vim 설치: 사실 이후 작업을 하면 쓸 일이 별로 없지만.. 그래도 리눅서라면 당연히 설치(?)해야하지 않을까. 적어도 기본으로 있는 vi는 쓸게 못 된다.

sudo apt-get install vim

5. vsftpd 설치: 이 작업때문에 4번 작업이 별 의미가 없다. FTP접속을 가능하게 해주는 데몬인데, FTP접속이 가능하다면 FTP가 연동되는 수많은 "쩌는" 편집기들(Notepad++, Sublime Text 2 등. 전자는 무료, 후자는 유료지만 주기적으로 거슬리는 화면을 보면 무료로 사용할 수 있다)로 파일을 열어서 편집하면 그만이기 때문. vim이 더 좋다는 변태들은 답x... ㅈㅅ...

sudo apt-get install vsftpd

vim /etc/vsftpd.conf (이럴때는 또 vim이 쓰기가 편하다.. 터미널창에서 다 끝나니까)

anonymous_enable을 NO로 바꾸고 local_enable, write_enable을 주석처리하는 #을 지우고 :wq

sudo /etc/init.d/vsftpd restart 

로 vsftpd를 재시작하면 설정파일대로 잘 작동한다.

6. gdb 설치

sudo apt-get install gdb


 일단 이정도 설치해놓으면 VM을 켠 다음 바로 Background로 트레이에 쳐박아놓고 터미널 클라이언트로 접속해 쓰던가 각종 편집기로 FTP에 접속해서 코딩하는데 불편함이 없을 것 같다.


신고
linux 2012.12.07 01:58

Setting Shared Folder in Ubuntu Server 12.04 on VMWare

다른건 다 모르겠고

공유폴더를 위해 vmware tools를 깔았는데, 제대로 설정이 안 되어서 vmware-config-tools.pl을 실행시켰더니 kernel header path를 못찾겠단다.

해결책

$
$
$
$ sudo apt-get install linux-headers-$(uname -r)

일반적으로 커널 업데이트를 하지 않았다면, uname -r의 결과는 3.2.0-29-generic-pae이다.

설치하고 나서 다시 config하면 path가 잘 들어가 있음.

재시작하면 shared folder는 /mnt/hgfs에 마운트되어 있음. 편히 쓰려면 홈디랙토리에 ln -s /mnt/hgfs shared 정도로 심볼릭링크를 해주면 깔끔함.

신고
BOF원정대 2012.11.18 21:03

[0x03] cobolt

int main()
{
    char buffer[16];
    gets(buffer);
    printf("%s\n", buffer);
}

gremlin과 완전히 같지만, argv로 payload를 넘기던 것과 달리, 여기선 프로그램 실행 후에 stdin(키보드)으로 입력을 받는다. 그런데 키보드로 표현할 수 있는 문자는 ASCII문자 뿐이다. 그렇다면 ASCII문자로만 payload를 구성해야 할까? 

물론 말이 안 된다. 0xbffffdc1, 즉 0xbf, 0xff, 0xfd, 0xc1을 어떻게 키보드로 칠 수 있겠는가. 결국엔 이 Non-ASCII 문자들을 stdin으로 전달해줘야 한다는 말이 된다. C언어에서 파일 입출력에 대해 배우면서 들은 말이 있을 것이다. File Descriptor라고. 



그리고 C언어 책을 주의깊게 봤다면, stdin은 File Descriptor #0이고, stdout은 #1인 것도 알 것이다(그림과 같이). 이 말이 무슨 뜻이냐면, 파일 입출력을 할 때 File Descriptor에 내용을 전달하는 것 처럼(밑의 예제를 보자), stdin에도 파일 입출력처럼 출력을 할 수 있다는 뜻이다(정확하게 말하자면, stdin도 파일 입출력과 다를 것이 없다).
/* example */
int main(){
	FILE *fp = fopen("aa.txt","w");
	
	/* File Descriptor fp(aa.txt) 에 출력 */
	fprintf(fp, "Hello, World!\n");
	
	/* File Descriptor stdout(모니터) 에 출력 */
	fprintf(stdout, "Hello, World!\n"); 
}

결국, 여담이지만, printf() = fprintf(stdout)이고 scanf() = fscanf(stdin) 이라고도 할 수 있는 것이다. 연결고리를 더 찾아보자면 fflush(stdin)(권장하지는 않는 함수지만) 도 마찬가지고. 

다시 본론으로 돌아가서, 그렇다면 stdin에 payload를 출력해주면 되므로 이를 위한 방법을 찾아본다면 이 문제가 해결될 것이다. 

Hint: pipe, cat, stdin

Payload


신고

'BOF원정대' 카테고리의 다른 글

[0x03] cobolt  (0) 2012.11.18
[0x02] gremlin  (0) 2012.11.18
[0x01] gate  (0) 2012.11.17
[0x00] 후기  (0) 2012.11.17
VMWare Fusion 5 에서의 부팅 문제  (0) 2012.08.29


티스토리 툴바