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






'개발개발 > Mac, iOS' 카테고리의 다른 글

iOS Push 인증서 pem 변환하기  (0) 2016.07.17
APNS device token 받아오지 못하는 문제  (0) 2015.07.02
IPC on iOS7 with Evais0n  (11) 2014.02.08
BadaSori - 소리바다 for Mac  (10) 2013.12.15
[Mac] 독에서 아이콘 없애기  (0) 2013.12.15

이걸 정확히 뭐라고 하는진.. 모르겠는데,


여튼 dns 설정이 뭔가 이상했고, 난 바꿀 필요성이 있었다..!! ㅋㅋ


기기를 공유기에 연결하면, 보통 DNS 에 공유기의 게이트웨이가 적히고,

공유기에서 공유기에 설정된 DNS 를 이용하는데,

이걸 임의의 다른 DNS(예를 들면 8.8.8.8) 로 바꿀 수 있다.


간단히 보자면,



이걸



이렇게 바꿀 수 있다!!

물론 사용자가 직접 바꿀 수도 있긴 하지만, 난 기본값으로 저렇게 뿌려주고 싶었음.


참고로 10.0.2.220, 204 는 우리학교 내부 DNS.



dd-wrt 설정페이지를 먼저 들어간 후,


Setup - Basic Setup 에서


Services - Services 에서


이런식으로 설정해주면 된다.

테스트 용도로 iPhone 5c 를 샀다가,

필요가 없어졌지만 산 김에 세컨폰으로 활용해보기로 했다.


세컨은 안드로이드로 할까.. 도 잠깐 고민해봤지만... 글쎄 잘 모르겠다. 일단은 아이폰ㅇㅇ ㅋㅋ



선불 유심으로 알아봤는데,

하는 김에 친구가 자기가 SK 망내 음성 통화 무제한이라고 SK 로 알아보라고 해서 고생 좀 했다..ㅋㅋ

선불 유심의 대부분은 KT 망이고,, SK 도 있긴한데 사용량이 거의 없을 나에겐 좀 별로인 요금제들 투성이라...


그렇게 찾고 찾다 스마텔로 결정!





잘은 모르겠지만, 선불 유심 보다는 해외쪽이나.. 여튼 다른 분야를 전문으로 하는 회사 같더라.


여튼 선불 유심으로 가장 싼 요금제가 하루 100원.

아무것도 안하고 한달이면 3000원 꼴이니 유지하기 부담이 될 수도 있지 않나..? 란 생각이 들 수도 있지만,

SK쪽 유심들은 번호 유지 조건으로 매달 얼마씩 충전해야 하고, 그 충전 금액이 5천~1만원인걸 봤을 때 그나마 싼 조건이였다.

KT 선불 유심도 1만원 충전에 3개월이였나.. 그렇게 기억하니...

전화나 문자를 그 정도 쓸거라면 1만원씩 충전해서 기한이 있는게 낫겠지만, 난 문자나 전화는 거의 하지 않을 것 같아서

차라리 이렇게 일단위로 돈이 빠져나가는게 낫다고 생각했다.


뭐 결론적으로 나에게 다른 상품과 비교했을때 크게 나쁘지 않은 편.


데이터는 1MB/20원으로 1/3/5/7/10 천원 단위로 구매해서 사용하면 되는 것 같다.

최소 1만원이랜다... 온라인에 적힌거랑 참 다른 듯...


유심 신청 자체도, 온라인으로 신청을 하면 되긴 하는데....

사이트 관리를 크게 안하는 것 같다. 오프 내지 전화로 대부분 처리하는지...

개통용 휴대전화 번호도 현재 사용되는 번호와 다르고, 가입 양식에 상담원이 모르는,

이제는 할 수 없는 요금제나 방법들이 적혀있다. (GS25 편의점 관련.)


좀 찝찝하긴 하지만... 그리 작은 회사는 아닌 것 같아서 그냥 진행.


전화로 기종 확인 후 우편 등기로 보내주는데,

나의 경우 희망 배송지가 아닌 주민등록지 상 주소로 보내서 한번 반송...




요렇게 온다!! (우체국 느님들.. 역시 빠르다! ㅋㅋ)


상담원> "핸드폰 뭐 쓰실거에요?"

나> "아이폰 5c요"

상담원> "아 네 아이폰5요?"

나> "아뇨 아이폰5c! 요."

상담원> "아 그러면 나노유심이네요"


이런 대화를 전화할 때 마다, 한 3번쯤 한 것 같은데,

결국 이것들이 일반/마이크로 유심을 보내왔다.


반송하고 다시받기 귀찮아서 걍 내가 자름.



그 이후 개통하려고 전화 통화를 하는데

입금 및 문자로 보낸 신분증을 확인을 제대로 못한다.


내가 전화해서 물어볼 때마다 매번 입금 확인을 다시하는 느낌...


신분증은 결국 못찾겠다 해서 다시 보내줬는데,

처리하고 전화해주겠다는데 1시간째 연락이 없네.


다시 연락해봐야 겠다.


바빴다던데 어찌저찌 결국 개통.


친구가 아닌 사람의 게시물이,

친구의 좋아요나 공유하기 등으로 내 타임라인에 뜰 때가 있는데,


어떤 사람은 친구가 아니여도 좋아요 / 댓글이 가능한 반면에,

또 어떤 사람들은 그렇지가 않다.


나의 경우는 어떻게 되어있는지 궁금했지만, 별로 필요가 없었기에 신경을 쓰고 있지 않았다.

성년이 되면서 페이스북이 미성년자에게 기본적으로 제공하는 메세지, 검색 제한 등이 풀렸다는 알림을 받은 적이 있기 때문에 이거랑 같이 풀렸나.. 라고 생각하기도 했고.


그런데 최근에 광역 어그로를 끌일이 있어서 글을 썼었고, 

친구가 아니면 댓글을 못 쓴다는 것을 발견한 후, 댓글을 허용할 필요가 있어서 잠깐 설정을 뒤졌다가,

한번의 실패하고 "안되나..?" 라고 생각했지만 누군가는 되는걸 다시 확인하고 시도해서 성공했다.



우선 페북 우측 상단의 삼각형을 눌러서 설정으로 들어간다.





그 다음은 아래 숫자에 따라..

팔로워 메뉴에서 나를 팔로우 할 수 있는 사람을 모든 사람으로 바꾸면,

아래 댓글을 달 수 있는 사람 메뉴가 생기게 된다.





이렇게 하면, 친구가 아닌 사람도 댓글을 달 수 있게 된다.





굳이 확인해보진 않았지만 누군가 댓글을 달아준 덕에 확실히 확인~ ^^

'기타' 카테고리의 다른 글

[Win] CapsLock 키로 한영전환하기 - (1) 레지스트리 수정으로 매핑  (15) 2016.10.09
dd-wrt dns 설정  (1) 2015.01.15
청소년 나이 제한 정리  (0) 2014.01.28
티스토리 RSS 설정  (6) 2013.12.05
오픈소스 라이센스  (0) 2012.01.22



잊을만 하면 돌아오는, 유입경로에 답하기 시간입니다!!

와아아!!!



맥북은 덮어버리면 잠자기에 들어간다.

외부모니터를 연결한 상태에서도, 내 맥북은 덮어버리면 잠자기에 들어가버리더라..ㅡㅡ;;

전원 어댑터를 연결하면 덮어도 되지만...


그 문제에 대한 해결책!


NoSleep 라는 커널 확장프로그램이 있다.

https://code.google.com/p/macosx-nosleep-extension/

이 주소에서 다운 가능!


설치하면 아마 재부팅이 필요할텐데..





실행하면 상태바에 아이콘이 하나 생기고 설정은 대충 저러하다.





이 프로그램이 필요한 이유라면.... 뭐 사람마다 다르겠지만


1. 맥북의 외장배터리화

 - 덮은 상태에선 USB 선을 꼽아도 충전이 되지 않지만, 한번 화면을 열어서 충전이 시작되고 나면

덮어도 잘 된다. 그런데 맥북의 배터리 잔량이 50% 미만이 되면 이마저도 안되는데.. 그런 상황에서??


2. 노래 재생

 - 잘 쓸일 없겠지만.. 이어폰을 꼽던 뭘 하던 덮으면 재생이 정지된다. 이런 경우...


3. 위에서 말한 외부모니터

 - 뭐.. 필요한가 싶다만은.


4. 내가 필요했던 이유

- 결론적으론 안쓰게 됐지만,

필기용으론 젬병이기도 하고.. 뭐 이런저런 생각에,

노트북을 덮어놓고, 작은 외부 모니터나 아이패드를 이용하여 노트북 화면을 보는 환경을 구상한 적이 있다.

그걸 위해 찾았었는데... 별로라서 걍 안씀




상태바에 켜두면 한번씩 유용하다. 난 외장배터리 용도, 노래 재생 순으로 드물게 한번씩 쓰는 듯.

맥북에어 + 트리플모니터를 위하여..


이런 글을 쓴 적이 있는데, 거기에 이어서...

원랜 8월 말에 써야했던 글이지만,,ㅋㅋㅋㅋㅋ



결국 이걸 하나 샀다.

UNITEK Y-3702 USB 3.0 to HDMI 란 녀석..

가격은 대충 43달러 쯤??


USB 3.0 에 꼽으면 HDMI 로 화면을 보내주는 녀석인데.....

드라이버 설치 정도는 해줘야 한다.





동영상까진 봐보지 않았지만... 꽤나 괜찮다.

그냥 일반적인 작업할때는 전혀 지장없는 수준.

기억에 동영상도 괜찮았던 것 같기도 하고....



3개쯤 되니까...

작은 13인치 노트북 모니터는 거의 안보게 된다...ㅋㅋ

애초에 트리플을 하려고 한게 한 모니터는 모니터링 용도의 창들을 띄워놓으려고 한 거라 상관은 없다만은..ㅋㅋㅋ


다른 거치대를 사서 세로로 세워서 붙이는 것도 괜찮다곤 하던데 시도는 안해봤다.

저 모니터도 당시에 빌린거라서....ㅋㅋㅋ



후에 모니터를 한개 더 사긴 했지만,,,

내가 컴퓨터를 기숙사 / 학생회실 두 군데서 왔다갔다 하면서 사용하는 터라..

한군데서 트리플을 사용하고 한군데서는 못쓰느니, 어디서 컴퓨터를 하든 듀얼을 쓸 수 있는게 나은 것 같아

각각 한 군데씩 가져다 놨다.

근데 기숙사껀 난 거의 안쓰고 룸메만 좋은일....

어쩌다보니 20인치 짜리 모니터가 한개 생겼는데 이거랑 트리플을 다시 해볼까...

자. 이전글에 이어서.




앱이 있다. 다운받자.ㅎㅎ





젤 처음 뜨는화면.. 복잡하다......

주식 공부를 괜히 하는게 아닌 것 같다.




이 스샷이 왜 있나 싶겠지만,

사실 이 스샷이 이 글이 있는 이유다..ㅋㅋㅋ


로그인할때 앞 글에서 만든, 아이디 / 패스워드와 공인인증서 비밀번호를 필요로 한다.

즉,,, 공인인증서가 필요하단 소리인데...


이 공인인증서가 증권용으로 따로 있다.......


나는 다른 은행앱처럼,, 신한은행 홈페이지에서 복사하려다가,

slite 홈페이지로 이동했고, 거기서 내 인증서를 넣었는데...

증권용 인증서가 아니라서 무쓸모....


그냥 앱에서 인증서를 새로 발급하면 된다.


휴대폰 인증, 가입시 기입한 정보 인증 정도로 발급이 된다.



뭔가 되게 험난한 여정이였는데...

여튼 이렇게 로그인까지 끝...


로그인을 하면 이제 본격적으로(?)



..이런 창을 마주하게 된다..


잠깐 돌아다녀봤는데... 당췌 뭐가뭔지 모르겠다.........



수능 공부할때, EBS 경제선생님이 주식 같은거 하는거 아니랬는데....(?)

괜한거에 손댄게 아닌가 싶기도 하고....


그래도 한번 경험삼아 해보는건 괜찮지 않을까 생각하고 있다.



3번글은.. 쓸일 없겠지? ㅋㅋㅋㅋ



시작은 단순(?) 했다...ㅋㅋ



스샷에 보이듯이.. 시작은 정말 단순했다..ㅋㅋ

그냥 형이 뱉은 말에서 시작...


초4때쯤? 애플주식이 88달러 쯤할 무렵...

형이 나와 엄마, 할머니를 꼬셔서 애플주식을 조금 산 적이 있었다..

나도 그 당시 받았던 세뱃돈 25만원을 그대로 넣었었지...


형과 나는 수익이라던가.. 투자? 뭐 그런 목적이 아니라...

그냥 좋아하는 회사고 크길 바라니까... 남들과 다른 애플 제품(??)을 하나 더 갖고 싶은 마음에 샀던 것 같다..

지금은 애플 주식이 600달러를 넘겼으니... 개이득



여튼... 그런 느낌으로 형이 소리바다 주식을 사는게 어떻냐고 뜬금없이 말을 꺼내더라..ㅋㅋ

실제로 조금 좋아하는 회사이기도 하고..(트위터 고객응대 짱짱맨!! 벅스 죽어라)

주식거래라는게 흥미가 생겨서 한번쯤 해보는 것도 괜찮지 않을까.. 싶어서 도전해보기로 했다.

조금 사놓고 방치하겠지만...ㅋㅋㅋ



증권계좌의 경우 대체로 자기 주거래 은행가면 연결 계좌를 만들어 주는 것 같다.

나같으면 신한은행. 집에서 컴퓨터로 자기가 하는건 키움증권? 쪽을 많이 이용하는 것 같은데,

이 곳 계좌 역시 각 은행에서 개설할 수 있다.

은행과 연결된 증권계좌를 만들고, 은행계좌->증권계좌로 돈을 보낸 뒤 그 돈으로 주식거래를 하는 것 같은데...

아직 여기까진 안해서 잘 모르겠다..ㅋㅋ


신한은행에 가서 증권계좌를 만들어 달라고 하니,

키움증권보다 자사 slite 라는게 수수료가 더 싸다고 이걸 추천해주더라. 별 상관없으니 ㅇㅋ


아.. 저기서 내 이름으로 되냐고 물은건 나이 떄문인데....

만19세 이상... 즉 예외케이스들(빠른, 조졸 등등) 빼고 일반적인 대학생 1학년 생일 지났을 때 부터 가능하다.

돌아다니다 보면 만20세 이상이란게 보일텐데... 그냥 법이 작년에 바뀌어서 반영이 안된거임.

2013년 7월인가? 부터 민법상 성인은 만19세 이상이다.



잘 모른다 하면 이것저것 챙겨주신다..ㅎㅎ 


내가 왜 증권계좌를 만들려고 하는지 되게 궁금해하시는 느낌이였는데,

그냥 대충 둘러댔다..


우선 아이디를 만들어야 된단다.

사이트 주소는 "www."slite.co.kr. 큰따움표을 넣은 이유는... www 안넣으면 안들어가진다..ㅡㅡ;;





맥도 되지 않을까란 약간의 기대에 시도...를 해봤으나 괜히 해봤다. 안됨..ㅠㅠ


윈도우로 시도했는데....

중간에 ActiveX 설치로 한번, 팝업 허용때문에 또 한번, 설치는 안해도 됐지만 다른 창을 가려버린 실버라이트 설치창 때문에 또 한번 재시작을 하는 바람에 4번째만에 ID 등록에 성공했다.. 하....... 빡침의 과정은 스샷이 엄슴...



드디어 뜬 가입완료 창!!!

중간에 미수? 였나 뭔가 잘 모르겠는 항목도 있었고..

관계법령상 입력하는 내용도 좀 많았다.

직업에, 돈의 출처, 무슨 목적의 거래인지 등등....



PC 프로그램으로 보통하는 것 같지만, 나같으면 주사용 window pc 가 없기도 하고,

모바일도 지원한다길래 바로 앱을 다운받았다.



왠지 이 쯤에서 끊어줘야 할 것 같다.

새 글로 작성해야지~~ ==3

어디서 맥북에어는 2개의 외장모니터까지 지원한다는 것을 보고(레퍼런스 찾기가 귀찮네 나중에 찾으면 추가)

트리플 모니터를 사용하려고 시도해봤다.


맥북 에어를 덮고 큰 화면 더블로 써도 좋고, 그냥 트리플로 해도 좋으니...


에어에는 썬더볼트 포트가 1개 뿐이고, 별도의 tv-out 은 없으므로 별도의 액세서리가 필요한 상황.


선택지는


1. 애플 시네마 디스플레이

2. 썬더볼트 허브


3. USB to HDMI/DVI Adaptor





4. Mini DP Displayport to DVI VGA HDMI Adapter 3 in1



5. Splashtop streamer 와 같은 앱 사용



1번과 2번은 비싸서, 3번은 아무래도 속도가 느리지 않을까란 생각에 보류.


5번은 다른 목적으로 쓸려고 둔 아이패드1으로 사용해보니,

생각보단 괜찮았지만 뭔가 불편한 점이 많았다.




음... 사진 첨부를 하지 말걸 그랬나.. 모자이크를 하다보니 영...



여튼,,


난 4번을 사봤다.

국내에선 딱히 팔지도 않는것 같고 해서 해외직구...


며칠전에 와서 테스트를 해보니..

으... 생각처럼 되진 않더라.


DVI 와 HDMI 를 꼽을 경우 같은 화면이 나온다. 하나로만 인식을 하는 듯.

그리고 DVI, HDMI 와 RGB 를 동시에 사용할 수 없다. RGB 가 죽음..


고로

1. HDMI, DVI, RGB 중 한개만 사용

2. HDMI, DVI 를 동시에 꼽아서 같은 화면을 두개의 모니터에서


이렇게만 된다.


아마 이게 썬더볼트가 아니라 display port 라서 두개의 모니터로 인식을 못하는 듯...ㅠㅠ


가격이 크게 비싸지 않아서 그냥 어댑터 한개 샀다는 마음으로...ㅠㅠㅠ

IPC, Inter Process Communication..


말 그대로 프로세스 간에 통신을 위한 방법이다.

예전에 deVbug 님 글에 몇가지 소개가 있었는데 ... IPC (Inter Process Communication) in iOS


나도 이것에 대해 잠깐 끄적여 볼까 한다..

BeeKeyboard 의 온갖 버그의 주범이자, BeeKeyboard 가 iOS7 대응하는데 2달이나 걸리게 한 장본인이기도 하다.. orz


IPC 자체에 대해 쓰기보다는, iOS7 의 강화된 샌드박스에 의해 IPC 를 제대로 사용하지 못하면서 생긴 문제와 그를 풀어갔던 삽질.. 에 대해서 써볼려고...

BeeKeyboard 업데이트 일기..? 의 느낌으로 써보려 했으나 글의 목적에 어긋나는 것 같아 

BeeKeyboard 보다는 IPC 자체의 삽질에 좀더 초점을 맞춰보려 한다.

일대기.. 식으로 회상하면서 써내려 갈 거임!! ㅋㅋㅋ


시작하기 전에 IPC 에 대해 잠깐 정리.

- mach_msg : 기본적으로 모든 IPC 는 mach_msg 라는걸 기본으로 한다. 그런 만큼 얘는 매우 low level 이고, 메세지 하나 보내는데 20줄 가까이를 요구한다.. 래핑하지 않으면 더럽게 쓰기 어려운 녀석이지.. Ryan Petrich 의 LightMessaging 이 얘를 래핑했다. 나의 경우 BoatMessaging 이라는 녀석으로 래핑해서 사용 중.

- CFMachPort : mach_msg 에 쓰이는 mach_port_t 를 위한건데.. 한단계 래핑했다기 보다는 그냥 같이 쓰인다

- CFMessagePort : 좀 쓸만하게 래핑된 프레임워크. 양방향 메세징을 지원하며 내가 주로 사용했다ㅋㅋ

- CPDistributedMessagingCenter : 마찬가지로 양방향 메세징을 지원하며, CFMessagePort 보다 한층 더 쓰기 쉬우나, 자질구레한 문제가 많이 일어난다. 내가 제대로 못써서 그런거일 수도 있고...BeeKeyboard 의 iOS5 시절에 사용했었다.


뭐 이정도..? 당연히 더 있지만 일단 지금 글에선 필요없다.



1. iOS7 의 강화된 샌드박스

그냥 더 많은게 안된다. 시스템 로그를 보면, 앱스토어 앱이나 시스템 기본 데몬들도 sandbox 에 의해 좌절하는 로그를 무수히 쏟아낸다...

특히 CFMessagePort 의 경우 본래 앱스토어 앱에선 사용 못할텐데 맥 레퍼런스에서

"This method is not available on iOS 7 and later—it will return NULL and log a sandbox violation in syslog."

라고 친절히 알려주기 까지 한다..  ( 출처: 애플 레퍼런스 )


2. 근데 왜 제목에서 with Evais0n??

사실 BeeKeyboard 는 본래 iOS7 탈옥이 나오기 전에 winocm의 opensn0w 를 이용한 아이폰4 반탈로, iOS7 에 대한 대응이 되어 있었다.

탈옥할 때 탈옥툴 개발자들이 sandbox 를 깨주는데(그래야 트윅이 사용가능 하므로) 이 작업을 evais0n 탈옥팀은 뭔가 반틈만 한게 아닌가.. 라고 생각하고 있다. 물론 1번의, Apple 의 강화된 샌드박스도 한 몫할 것이고.


3. 삽질의 시작.

진짜 처음엔 답이 없어보였다.. 자고 깨고 자고 깨고(일이 잘 안풀리면 급격히 졸려서 1~2시간쯤 자고 일어난다)를 반복하며 1주일 가까이를 헤맸었던 것으로 기억한다.(심지어 이땐 RocketBootstrap 이 없거나, 개발 중이였다)

요즘 오전 6~7시에 취침 하고 오후에 일어나는, 6시간쯤 비틀린 삶을 사는데 그 원인이 여기에 있나니...

여튼 sandbox 에 의해 막히지만, privileged process, 즉 backboardd 나, SpringBoard, 혹은 Preferences 같은 시스템 앱들은 정상 사용이 가능하다. 하지만 난 일반적인 앱 모두에서의 사용을 필요로 했다. 단방향이 아닌 양방향.


4. XPC, WaveMessaging!

처음으로 가능성의 빛을 본 건 xpc. iOS5 정도 부터 iOS 에 들어간 것으로 보이고, 맥에서 IPC 로 애플이 추천하는 방법이다.

양방향 통신도 가능하고... 데이터형을 모두 xpc_object_t 를 사용해서 변환작업이 있다는 것만 제외하면 쓸만했다.

하지만 이 방법의 단점은 plist 에 특정 이름을 쓸거라고 미리 지정을 해 줘야 한다. 그렇지 않으면 사용할 수 없음...

launchd 가 관리하기에 후킹도 불가능하다...

그래서 난 원래 시스템이 사용하는 xpc 를 빌려, 적절히 후킹해서 사용하기로 했다.

그 결과물이 WaveMessaging. 좀더 자세한 방법은 써봤자 모를테니 패스..

open source... 지만 쓸 일 없을거다.. 써서도 안되고. 혹시나 xpc 를 쓸 일이 있으면 참고가 되려나? 

소스: https://github.com/iolate/WaveMessaging


5. Optimo의 리젝...orz

SimulateTouch, BeeKeyboard, QuickKakao 프로토버전 등, IPC 가 필요한 앱에 모두 이식을 해 보았다.

결과는 대 성공! 모두 정상작동 하고 큰 문제도 없어보였다.

일단 WaveMessaging 패키지만 먼저 BigBoss 에 업로드 하였으나 돌아온 대답은 No!

이미 RocketBootstrap 이라는, 같은 목적의 패키지가 있으니 이것과 합치는 방향으로 가라는 것이다.

당시 RocketBootstrap 은 SpringBoard 를 기반으로만 작동하였고, LightMessaging 이 사용하는, mach_msg 와 이미 문제때문에 사용하지 않는 CPDistributedMessagingCenter..정도만 지원하였기에 나의 경우엔 쓸 수 없었다.

Optimo 에게 요구해 보았지만, 돌아온 대답은 "Ryan 과 잘 얘기해서 RocketBootstrap 으로 합치거라."


6. Ryan 의 CFMessagePort 지원

Ryan 은

1. CFMessagePort 혹은 xpc 를 지원하고 2. daemon 등에서도 사용가능 하게 해주겠다.

면서 몇일만 기다려 달라고 했다.

별 수 있으리.. 기다렸다. 며칠 후 RocketBootstrap 은 CFMessagePort 를 지원하였고, 잘 작동하는 듯 보였다.

하지만 일이 이렇게 쉽게 풀렸으면 이 글을 시작하지도 않았다..ㅠㅠ

일반 App -> SpringBoard, backboardd 는 정상적으로 사용이 가능해 졌지만, SpringBoard, backboardd -> App 은 사용이 불가능 했다!

App 위에서 CFMessagePort 의 서버를 돌렸는데 mach_lookup 뿐만 아니라 mach_register 까지 sandbox 에 의해 막히면서 크래시....

SimulateTouch 의 경우 이정도 만으로 충분히 사용이 가능했지만, BeeKeyboard 와 후에 만들 빠른 답장 트윅에선 곤란했다.

Ryan 에게 요구했으나 이건 자기도 어쩔 수 없다며, 다른 방법을 찾으라고 했다..


7. 결국 mach_msg

Ryan 이 나에게 왜 그런 기능들이 필요하냐고 물었다. 그래서 나는 BeeKeyboard 의 동작 원리와, 후에 만들 빠른 답장 류의 앱에 대해 간략히 설명해줬다. 음.. 여기는 말로 풀어내기 복잡하니 대충 건너뛰고 결론은

1. timeout 기능은 mach_msg 로 가능하다

2. xpc 또한 mach_msg 로 만들어 졌다. 니가 xpc 에서 사용하던건 mach_msg 로 구현이 가능하다


.... 별 수 있나.. mach_msg 로 시도했다.

xpc 를 떠올리며 최대한 흡사하게 흉내낸 후, 결과는 성공.

Ryan 의 LightMessaging 의 소스를 많이 참고하였지만, 그래도 생각보다 쉽게 해결되서 상당히 허탈했던 기억이....

Ryan 에게 확인을 구하니 접근은 정확하게 맞았고, 방법에 약간의 수정을 가하면 된다고 하였다.

이렇게 해서 mach_msg 로 내가 원하는 기능을 정확히 구현...

위에 말했듯이, mach_msg 를 그대로 사용하는건 토나오므로, BoatMessaging 이라는, CPDistributedMessagingCenter 와 CFMessagePort 의 사이.. 정도 수준으로 래핑한 스태틱 라이브러리를 만들었다.


이걸로 IPC 해결!!!



이렇게 까지 오는데 한달 넘게? 거의 두달? 여튼 엄청난 시간을 쏟아 부었던 것 같다..ㅠㅠ

BoatMessaging 의 소스나 하다못해 라이브러리라도 어디 올릴까 했지만,

살짝 꼼수스러운 라이브러리이기도 하고, 레퍼런스 등을 만들기 귀찮아서 일단은 그냥 나 혼자 쓰고 있다.


혹시나 필요하시면 연락주세요..ㅋㅋㅋ 기쁜 마음으로 공유해드립니다! ㅋㅋㅋ

이래봤자 요구할 만한 사람은 상당히 한정되어 있지만....

탈옥 개발자에, 한국어 사용자.. 몇이나 되겠어? 


만들 당시 Source Control 켜서 쓰고 있었길래 그냥 그대로 github 에 올렸다.

주소는 https://github.com/iolate/BoatMessaging

static library 에,, rocket bootstrap 을 필요로 하므로, 사용하려면 LDFLAGS 에 -lboatmessaging -lrocketbootstrap

둘다 해줘야 함...


여튼,, 수능이 끝난 잉여로운 고3이였기에 해결이 가능했던 것 같다..

+ Recent posts