블로그 이미지
안녕하세요~ iolate(isho) 의 블로그 입니다~! iolate

카테고리

분류 전체보기 (164)
Server, Cloud (7)
끄적끄적 (9)
Linux, Ubuntu (22)
개발질 (44)
Mac (18)
iOS (23)
IoT (13)
NAS (1)
Web (5)
Network (3)
Review (10)
기타 (9)
비공개글 (0)
Total598,484
Today27
Yesterday180

결론부터 말하자면 그냥 우분투에 3.6을 깔자..

다만 그 과정은 다른 상황에서 적용할 수 있을테니 남겨둠.


----------


Ubuntu 서버들은 파이썬 버전이 3.4(14.04) 혹은 3.5(16.04) 이고, 3.6 을 설치하긴 귀찮았다.

마침 맥의 파이썬이 3.6이길래 zappa 설치를 시도했는데, 의존성 설치에서 fail. 언제나 그렇듯 인코딩 문제...


의존성에 있는 kappa 라이브러리의 패키지 정보에 넣기 위한 README 파일을 제대로 읽어오지 못하는 거였고,

tree 구조를 표현하는 문자가 문제였음.


builtins.open 함수에서 encoding 을 지정해주지 않으면 기본값은 locale.getpreferredencoding(False) 을 사용하고,

이 문자열이 우분투에서는 UTF-8 이였지만, 맥에서는 US-ASCII 였다.


기본값을 어떻게 바꿔줘야하나 찾아보다가, 잘 안나오고 귀찮아서 소스코드를 받아 설치하는 방법으로 진행했다.


$ git clone https://github.com/garnaat/kappa

$ cd kappa


zappa 는 kappa (=0.6.0) 을 의존성으로 가지니

$ git checkout 0.6.0


$ vi setup.py

14     return open(os.path.join(os.path.dirname(__file__), fname), encoding='utf-8')


$ sudo pip3 install -e .


이렇게 한 후에 다시 zappa 설치를 진행하면 끗!


다만, 이후에도 비슷한 문제가 생기고 어차피 zappa 는 virtualenv 환경을 필요로한다.

그냥 우분투에 가상환경으로 3.6을 만들어두고 하자...

Posted by iolate

매번 검색하기 귀찮아서 작성함

그냥 UNetbootin 을 사용하는것도 괜찮은 선택지인 것 같다.


디스크 목록 보기

$ diskutil list


디스크 추출

$ diskutil unmountDisk /dev/disk#


ISO -> IMG

$ hdiutil convert -format UDRW -o ~/path/to/output.img /path/to/input.iso

$ mv /path/to/output.img.dmg /path/to/output.img


Flashing image

$ sudo dd if=/path/to/output.img of=/dev/rdisk# bs=8m


압축된 이미지 Flashing

$ gunzip -c /path/to/image.gz | sudo dd of=/dev/rdisk# bs=8m



bs 는 한번에 작업할 block size. 1m 을 쓰라고 하는 곳도 있는데.. 뭐 상관없겠지


dd 작업 중간에 Ctrl+T 를 누르면 작업상황을 확인할 수 있다.

Posted by iolate


1. MySQL 설치 및 시작

MySQL 홈페이지( http://dev.mysql.com/downloads/mysql/ ) 에서 dmg 로 다운받아 설치.

10.10 요세미티라면, 10.9 가 아니라 10.8 용 버전을 받자.


설치 후 소켓을 위해 아래 명령어 실행한다.

sudo mkdir /var/mysql

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock


서버 시작 / 종료는..

sudo /usr/local/mysql/support-files/mysql.server start

sudo /usr/local/mysql/support-files/mysql.server stop


접속은

/usr/local/mysql/bin/mysql


난 cui 로 쓸일이 없어서 그냥 저렇게 한두번 쓰고 말거지만, 자주 쓸거면 환경변수에 경로를 넣어두자.


여튼 /usr/local/mysql/bin/mysql/mysql -u root 로 접속 후 (만약 안되면 sudo)


UPDATE mysql.user SET Password=PASSWORD('패스워드') WHERE User='root';

FLUSH PRIVILEGES;


로 root 패스워드를 설정해준다.



그 다음으로는 /usr/local/mysql/my.cnf 파일을 수정한다. utf8 설정을 위해...!!

이 파일을 /etc/my.cnf 혹은 /etc/mysql/my.cnf 로 복사해서 수정해도 될...걸?


여튼 파일을 열어서 아래 더보기 내용을 써둔다.


더보기



2. PHPMyAdmin 다운로드

PHPMyAdmin 홈페이지 ( http://www.phpmyadmin.net/ ) 에서 다운,

압축을 풀고 Document Root 에 넣어둔다. 폴더명도 적당히 입력하기 좋게 바꾸고...

Document Root 를 모르겠으면 일단 대기. 밑에 있음



3. Mac 의 웹서버 및 php 활성화

이건 내가 예전에 글을 썼던게 있다. 참고.

Mac 내장 웹서버 활성화 하기 (웹 공유) (2013/09/05)

맥 내장 php 활성화 하기 (2011/01/08)


user directory ( ~/Sites ) 는 모듈이 주석처리된건가..? 뭐 그런것 같으니 php 활성화 방법처럼 활성화 해줘도 되겠지만,

난 userdir 안쓰니 패쓰.

document root 는 php 활성화 글에도 있지만,

/Library/WebServer/Documents/


root 권한 폴더라, 작업하는데 조금 번거로우니 그냥 권한을 바꿔두는 것도 나쁘지 않다.


4. phpmyadmin 설정

맥의 웹서버를 켰고, php 를 활성화 했으며,

phpmyadmin 폴더를 도큐먼트 루트로 이동하고, mysql 을 정상적으로 시작했다면 다음 단계로!


도큐먼트 루트로 옮겨둔 phpmyadmin 폴더 하위에 config 폴더를 만들고 chmod 777 config 을 준다.


그다음 http://localhost/phpmyadmin/setup 으로 접속


새 서버 -> 인증 방식을 cookie -> 적용 -> 저장

하면 config 폴더 안에 config.inc.php 파일이 생겨 있다.

이 파일을 phpmyadmin 폴더 안으로 옮기고 config 폴더는 삭제. (setup 폴더도 삭제해도 됨.)


그 다음 phpmyadmin/examples 폴더로 이동하여

/usr/local/mysql/bin/mysql -u root -p < create_tables.sql


자, 이제

http://localhost/phpmyadmin 으로 들어가서,

root / 설정한 패스워드 로 로그인을 한다.


그 다음 사용자 탭 - phpmyadmin 사용자를 생성하고

phpmyadmin 테이블에 대한 전체 권한을 준다.


phpmyadmin/config.inc.php 에 아래 더보기 내용을 추가


더보기



다 했으면 phpmyadmin 을 로그아웃했다가 재 로그인 해보자.


하단에 에러메세지가 나오면 알아서 해결 ㄱㄱ




References

http://miconblog.com/archives/2014/11/mac에서-mysql-설치와-실행-그리고-몇가지-유의사항/

http://nsnotification.blogspot.kr/2013/05/phpmyadmin.html

http://link2me.tistory.com/486

http://jinifactory.tistory.com/10






Posted by iolate

간단하다.


Target -> Info (즉 Info.plist 수정) 에서

Application is agent (UIElement) 값을 YES 로 해주면 된다.

Raw key 값은 LSUIElement



근데 이렇게 하면 내가 원하는대로 수정이 안되거나,

수정을 하더라도 앱을 재실행 해줘야 한다.


그래서,, 아래와 같은 방법이 있다!!


위에서 설정하는 UIElement 값을 동적으로 바꿔주는 것 같다.


ProcessSerialNumber psn = { 0, kCurrentProcess };

TransformProcessType(&psn, kProcessTransformToForegroundApplication);


이건 독에 아이콘을 나타내는 코드



ProcessSerialNumber psn = { 0, kCurrentProcess };

TransformProcessType(&psn, kProcessTransformToUIElementApplication);


이건 다시 UIElement = TRUE, 즉 독에서 앱을 없애게 해준다.


type 인자만 다르지만,, 두줄밖에 안되니 그냥 두번 적어줬다.

Posted by iolate



여기에 앱을 등록하고, 확인하고, 제거하는 코드.

자신의 bundlePath 기준으로 등록, 검사, 제거한다.


코드를 그냥 붙여넣기 하려 했으나, 들여쓰기가 없어진다..ㅠ


그래서 걍 gist 로 올림.


https://gist.github.com/iolate/7963775


원래 추가/삭제만 있었는데 등록되어 있는지 검사하는 코드도 넣었다.(삭제에서 조금만 수정..ㅎㅎ)

그리고.. 메모리 관리 조금.. 근데 맞는지 모르겠다ㅋㅋㅋ


출처: http://cocoatutorial.grapewave.com/tag/mac-os-x/

Posted by iolate

%hook NSString

-(NSString *)stringWithString:(NSString *)str {

//....

%orig;

}

%end


THEOS 언어를 사용해봤다면, 메서드를 위와 같이 후킹해서 사용하게 된다.

근데 저건 탈옥해서 트윅을 사용할 때의 얘기이고,,,


맥용 앱을 제작할 때 메서드 후킹이 필요할 때가 있을 수 있다.

(iOS 에서는 확인 안해봤지만,, 안되겠지?)


일반적인 경우라면 새로운 클래스를 만들고 원래 클래스를 상속받아서 사용하면 되겠지만..


상속은 이렇게!



주저리주저리 하고 싶은 말이 많지만 생략하고, 오버라이딩(후킹)을 위해선 아래 함수를 사용하면 된다.

더보기 클릭!


더보기



사용방법은


1. 해당 클래스에 카테고리로 대체용 함수를 만든다.

2. MethodSwizzle 함수를 사용해 필요한 때에 바꿔준다.

3. 원래 메서드를 호출하고 싶다면, 카테고리로 만든 메서드를 호출해 주면 된다.


예시:


@interface NSString (Swizzle)

-(NSString *)alt_stringWithString:(NSString *)str;

@end


@implementation NSString (Swizzle)


-(NSString *)alt_stringWithString:(NSString *)str {

    //......

    

    return [self alt_stringWithString:str];

}


@end


...


-(void)somewhereInYourMind {

MethodSwizzle([NSString class], @selector(stringWithString:), @selector(alt_stringWithString:));


[NSString stringWithString:@""];

}


이렇게 하면 원래 메서드(여기선 stringWithString:) 를 호출하면

alt_stringWithString: 을 거친 다음 원래 메서드가 호출되고, 반환된다.



출처: http://cocoadev.com/MethodSwizzling

Posted by iolate

최근에 달린 댓글

최근에 받은 트랙백

글 보관함