대부분의 작업은 iPad 등의 태블렛에서 거의 가능하고,

요즘 들어선 맥에서 일부 결제나 인터넷 뱅킹이 될 정도로 상황이 많이 나아졌다.

인터넷 뱅킹은 되긴 되지만 실제로 사용하기엔 너무 그 수가 적지만, 이것도 iOS 로 결제를 하면 되니 큰 문제는 없고.


하지만 그래도 여전히 윈도우가 필요한 곳이 몇몇 있다.

민원24 등의 정부 싸이트를 이용할때나, 자동결제, 원서 접수 등등...


패러렐즈 등을 켜는걸 귀찮아서 극도로 꺼리는데 결국엔 어쩔수 없게 켜게 되지ㅠㅠ

맥 앱스토어에 가상 브라우징을 지원하는 Sauce 라는 앱도 있는데, 서버가 외국이라 그런지 엄청 느리다..ㅠㅠ


집에 남는 PC 하나를 원격으로 돌리거나 베어본을 하나 구입해서라도 어떻게 해결을 보려 했지만 당장은 귀찮아서 패쓰.


그러다 재밌는걸 찾았다.



CloudPC 라는 건데.. LG CNS 에서 하는 듯?


여튼, 작년에 베타로 잠깐 열었다가 문닫고 이제 다시 오픈할려고 준비를 하는 것 같다.

20일 까지 가입시 한달 무료라나...

이 후 월정액 가격은 아직 정하지 않은 것 같다.


클라우드PC 라는 컨셉상 당연한 것 같긴 하지만,

맥, iOS, 안드로이드 까지 모두 지원한다!


맥의 경우엔 Citrix Viewer 라는 앱을 사용하고 iOS 와 안드로이드에는 각각 앱이 존재한다.

윈도는 관심없고.


여튼 한달 무료라니 당장 가입해봤다.

가입후 세팅까지는 5분정도? 다 되면 친절히 문자로 알려준다.


접속은 웹에서 로그인 후 가능.



아직 제대로 써보진 않았지만, 첫인상은 상당히 괜찮다.

깔끔하고, 빠르고..

로컬에 설치된 패러렐즈를 사용하는 것보다 더 빠른 것 같다!! ㅋㅋㅋ


패드에서도 시도해 보았는데 안드로이드와 iOS 둘다 두개의 앱이 필요하다.

일단 하나는 로그인용으로 앱스토어/마켓에 있고, 설치 후 실행시

별도의 앱을 하나 더 내려받게 된다.(iOS 의 경우 엔터프라이즈 in-house 형태의 앱을 설치하게 되고,

안드로이드는 알수 없는 소스 설치를 가능하게 해줘야 함.)


왜 이렇게 해놨는지도 이해가 안가고, CloudPC 로그인 앱이 앱스토어를 통과한 것도 신기하다..ㅋㅋ

좀 껄끄러운 면도 있지만...


여튼, 패드에서 접속하면




패드에서 연결시 바탕화면 구성이 조금 바뀐다.

이게 싫다면 우측 상단의 종이 넘어가는 아이콘을 클릭시 일반적인 바탕화면으로 돌아온다.


상단 메뉴를 클릭하면 키보드, 화살표 키, 포인터 설정 등의 메뉴가 나타남.




혹시나 싶어서 해봤지만, 동시 접속은 안된다.

다른 곳에서 접속하면 기존 접속은 끊기는 방식.


하지만 윈도우 자체가 종료되는건 아니라서 따로 종료 명령을 내리지 않았다면 작업하던 상황을 그대로 이어받을 수 있다.



다시 강조하자면, 정말 빠르다!!

네이버 메인 광고 플래시가 끊김 없이 보일 정도로 쾌적한 속도를 보여준다.

집 밖에서 컴퓨터가 필요할때 집의 Mac 을 원격제어 하는데 이것보다 더 빠른 느낌?


이 정도 속도라면 정말 왠만한 작업은 문제 없이 할 수 있을 것 같다.


출시 컨셉은 "어디서나 문서작업을! 같은 환경에서!" 인 것 같은데

사실 난 문서작업 보다는 3개월에 한번 할까 말까한 ActiveX 전용 싸이트나

집 밖에서 패드로 해결 안될때 정도라 월정액 내고 사용하기엔 아깝겠지???


싸게 나올리 없지만, 가격이 좀 저렴하게 나온다면 상당히 고민하게 될 것 같다...ㅋㅋ

PPTP, L2TP는 공유기 설정에 따라 사용이 불가능하거나 일부러 막아놓은 경우도 있다.


이런 저런 불편함이 있어서 OpenVPN 이란게 있는데,

자세한 내막은 모르겠지만 이 녀석을 기본 내장하는 기기는 하나도 없음.

클라이언트 설정 파일 자체가 워낙 복잡해서 그런것 같기도 하다.


여튼,

안드로이드, iOS 도 원래 OpenVPN 이 사용이 불가했다.

루팅 혹은 탈옥을 하고난 후면 사용이 됬지만.


그러다 안드로이드는 4.0 부터인가? OpenVPN 일부를 서드파티 앱의 형태로 사용가능하게 되었고

iOS 도 언제부터인지 모르겠지만 서드파티 vpn plugin 을 제공하기 시작한 것 같다.


여튼 지금 글 쓰려는건 iOS 용 OpenVPN.

(뭐 그래봤자 딱히 쓸 내용도 없고 간략한 소개 정도..)





올해(2013년) 1월달에 나왔으며 iOS 5.0 이상을 지원한다.




(443 포트로 OpenVPN 을 열면 왠만한 차단은 다 뚫을 수 있단걸 내게 가르쳐준) Private Tunnel 사의 서비스는 기본으로 지원하고,

그 외엔 클라이언트 파일을 서버로 부터 받거나,

iTunes 로 넣거나, 메일로 받으면 된다고 설명하고 있다.


web, 메일 등에서의 외부 파일 연결은 zip 등 압축은 지원하지 않고 .ovpn 만 지원한다.

iTunes 로 넣을 경우 키 파일등을 따로 넣어도 ovpn 파일 내용을 토대로 알아서 가져오는데,

web에서 가져오거나 메일로 받을때는 어떻게 되는지 모르겠다.


나 같으면 key 들을 모두 .ovpn 에 쑤셔넣었다.



Web 으로 .ovpn 설정 파일을 받을때 OpenVPN 으로 연결이 안나오고

그냥 내용물이 출력된다면 더보기 클릭!



아이튠즈로 넣든, 메일로 받든, OpenVPN 앱에서 설정 파일을 추가할건지 묻고 추가하면 이제 사용가능!





연결 잘~된다 ㅎㅎ

443 포트와 같이 원래 서드파티 앱에서 사용불가능한 포트들도 사용가능!!






앱에서 사용한 설정이 설정 앱의 VPN 메뉴에서도 볼 수 있는데,

안타깝게도 다른 설정이나 연결은 안되고 각종 설정은 앱에서 하라는 메세지가 나온다.(심지어 여기서 삭제도 안됨)

연결 중일때 해제는 가능하다.


아이튠즈에서 설정파일을 넣고, 추가하고 나면 앱의 샌드박스 내 어디에도 설정 파일을 찾아볼 수 없는 것으로 보아

VPN 설정 추가시 설정, 키들을 iOS 키체인으로 집어 넣는 듯 하다.





참고로 OpenVPN 앱 내 말고, 설정 앱 안에 OpenVPN 설정 메뉴가 생기면서 다른 설정들도 가능하다.




탈옥을 하지 않고 순정에서도 할 수 있는 작업이 점점 늘어나는건 확실히 기분좋은 일인 것 같다~

개발자용 기기는 탈옥에 맞먹는 자율성을 부여해주면 좋을텐데...ㅠㅠ

Activator 를 꺼려하는 사람이 은근히 많아서,

Activator 가 필수적이지 않은 BeeKeyboard 에서는 의존성을 없애야 겠다,, 는 생각만 하고 놔두다가

어제 weak link 로 바꿨다..ㅎ


잠깐 확인해 봤는데 잘됨!


1. Makefiles 의 LDFLAGS 를 아래처럼 사용한다

@@@@_LDFLAGS = -weak_library /opt/theos/lib/libactivator.dylib


내가 못하는건지, 원래 안되는 건지 -weak_library 로 할때는 경로 전체를 적어줘야 하더라..


2. 앱 내에선 클래스의 존재 유무로 라이브러리가 로드 됐는지 확인한다.

다른 방법도 있는 것 같지만, 난 간단하게 저렇게 했음.

확인 안하고 냅두면 크래쉬 남 ㅇㅇㅋ


Class LAE = NSClassFromString(@"LAEvent");

if (LAE != nil) {


}


요런식으로...



설정 부분 같으면 불러오는 부분은 PSListController 를 사용하고,

Activator 를 사용하는 컨트롤러에서는 내부 변수로 Activator 의 클래스를 사용하고 있어서,

PSListController 에서 tableView:didSelectRowAtIndexPath: 를 오버라이드 해서 체크하고 있다.

다른 부분에서 비슷한걸 구현해 사용하고 있기 때문에 쉽게 끝냈음 ㅋ


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    int group = [self indexOfGroup:indexPath.section];

    int pIndex = group + indexPath.row + 1;

    

    PSSpecifier* spec = [self specifierAtIndex:pIndex];

    if ([[spec propertyForKey:@"detail"] isEqualToString:@"GActivatorSettings"]) {

        Class LAE = NSClassFromString(@"LAEvent");

        if (LAE != nil) {

            [super tableView:tableView didSelectRowAtIndexPath:indexPath];

        }else{

            [tableView deselectRowAtIndexPath:indexPath animated:YES];

            NSString* message = LS(@"NEED_ACTIVATOR");

            UIAlertView* alert = [[UIAlertView alloc] initWithTitle:LS(@"BeeKeyboard") message:message delegate:self cancelButtonTitle:LS(@"OK") otherButtonTitles:nil];

            [alert show];

            [alert release];

            return;

        }

    }

    

    [super tableView:tableView didSelectRowAtIndexPath:indexPath];

}


단, 이 경우 PSListController 의 헤더에 tableView:didSelectRowAtIndexPath: 가 선언되어 있지 않기 때문에

선언해주고 써야 한다.


@interface PSListController (p)

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

@end



+ 확실하진 않은데, PSListController 에서 불러오는 plist 에서 index 0 의 항목이 PSGroupCell 이 아닐 경우 index 번호가 한개씩 밀릴 수도 있음... ㅎㅎ;;




여튼 이렇게 하면, Activator 와의 연계 부분을 사용하고 싶은 사람만 Activator 를 설치, 사용할 수 있게 된다!


다른 Dynamic Library 나 OS버젼 따라 다른 프레임워크 등도 이런식으로 사용하면 된다.

프레임워크의 경우엔 -weak_framework 임.

+ Recent posts