문제로 풀어보는 알고리즘 0.3 생각해보기 풀이

function change(arr,s,t,k) {

  var c_arr = arr.slice(s,(t+1));

  var ds = t-s+1;


  for (var i=0; i<ds;i++){

    var j = (i+k)%ds;

    arr[s+j] = c_arr[i];

  }

  return arr;

}

var arr = [0, 11,22,33,44,55,66,77,88,99];

var s= 3, t=8;

var ds = t-s;

var k=2;

change(arr,s,t,k);

Multi Child Browser plugin for Android 제작 스타트.

제목에서와 같이 안드로이드용 child browser 플러그인을 제작하려고 합니다. 
기존에  Appspresso 에서 제공하는 Child Browser는 단일 브라우저라 여러가지 제약도 있고 그래서 이전에
만들던 것을 근 시일내에 올리려고 합니다. 잘 될지 모르겠지만 쓸려고 하시는 분들이 있을지 몰라서...

물론 주석 부분이 많이 부족한 채로 올라갈 예정이고 요청이 있다면 주석을 업데이트 할 예정이라는 사실...
모든 단말에서 잘 돌아가면 좋겠지만 다 테스트할 수는 없는 노릇이고 무료이기 때문에 본업에 지장이 없는 한도에서 
작업이 들어갈 것이라는 사실입니다.

시작을 공표했으니 열심히 만들어 보겠습니다. ~! 

nodemon 설치

node 로 실행된 소스를 수정하면 재실행해야만 수정된 소스가 반영되는 것은 누구나 생각할일이다. 
그런데 자주 수정해야한다면 그것도 일이다. sublime2 과 같은 에디터를 쓴다면야..
(뭐 상관 없을지도 sublime은 node plugin 이 있어서 바로 실행이 가능하다.)

nodemon 은 소스를 모니터링 하다가 파일이 변경되는 순간 다시  node 를 재실행한다. 
그러니 귀찮지 않게 바로 소스 고치고 테스트를 할 수가 있다.
참으로 편하지만 메모리의 정보는 다 날아가므로 유의 해야한다. 

하지만 공동작업을 하는 곳이라면 이걸로 실행하고 정기적으로 버전관리 서버로 부터 파일을 받으면 유용할 것 같다. 
변경된 내역이 있다면 자동으로 실행 줄 터이니 말이다. 



Node.js 를 위한 Version Manager

nvm : Node Version Manager

모든 language 가 그렇듯 node 도 버전이 있다. 그렇다 보면 버전 별 지원하는 것들이 조금씩 다르다.

cloud9 이라는 ide 를 설치하려다 보니 node 의 최신 버전( v0.8.x )으로는 설치 할 수 없다는 사실을 알았다. 현재 글로벌로 설치되어 있어서 지우고 깔아야 하나 라고 생각했을때 혹시나 하고 도움을 청해보니 nvm( https://github.com/creationix/nvm )를 소개 받았다. 

node 를 버전 별로 설치가 가능하고 내가 선택한 버전으로 환경 셋팅이 된다. 

이렇게 되니 0.8.x 버전이 설치되어 있어도 0.6.15 버전을 설치하여 cloud9 ide 를 사용할 수 있게 되었다.

물론 이런 종류의 Manager 가  더 있다. 

 

n             : https://github.com/visionmedia/n/ 

nodebrew : https://github.com/hokaccha/nodebrew


Appspresso project 설명

1. project 생성

Project Explorer 화면(보통 좌측 상단에 위치)에서 오른쪽 마우스 클릭 후 new project  선택 후 Appspresso Application Project 를 선택한다. 그러면 다음 화면이 나타난다. 

Projecyt name : 이클립스에서 생성하는 프로젝트 디렉토리명이라고 생각하면 된다. 

App Info

Title : App 이 이름이 된다. ( Android/iPhone 에 설치 후 icon 밑에 딸리는 이름이다)

id     :  Android / iPhone 의 시스템에서 사용하는 App를 구별하는 아이디 

Version : 마켓에서 보여지는 App 의 버전.

2. Project Directory 구조

TestFileExplorer 밑으로 보이는 디렉토리들을 설명하겠다. 

JavaScript Resources  :  javascript 표준 스펙에 대한 내용과 WAC 2.0 에 대한 Library 정보들이 있다. 
                                    사실 Appspresso 사용자들이 신경쓰지 않아도 되는폴더이다. 
                                    Eclipse 구조상 보여지는 것으로 생각 하면 편할 것 같다.

Platforms                    : 하위 디렉토리를 보면 Android 와 iOS 디렉토리가 보이는데 아마도 각 플랫폼에 대응하는
                                    프로젝트 구성이 만들어 진다고 짐잠해 본다. 

plugins                        : eclipse 사용자라면 이 디렉토리 명이 마음에 안들 것이다. eclipse 에서 사용하기도하는 
                                    디렉토리 명칭이기 때문이다. 하지만 여기서는 eclipse 디렉토리가 아닌 appspresso plugins 에 대한
                                    대한 일정 정보가 위치할 것이다. 내장된 플러그인(WAC 2.0)에 대한 정보는 어떻게 될지 모르겠다. 

src                              : Appspresso 사용자가 가장 관심을 많이 가질 디렉토리 바로 html 소스와 JavaScript, CSS, image 
                                    파일들이 위치하게 될 것이다. 

나머지 파일들을 보면 build.properties, build.xml, project.xml 3개가 보이는데 이중 build로 시작하는 파일은 건드리지 말자.
건드려야 할만한 정보도 없고 실제 건드려 봐야 좋을 것이 없을 것 같다. 다만 project.xml 이 중요하다. Appspresso 와 관련된 프로젝트 정보가 한 가득 들어 있다. 이것도 집적 파일을 열기보다는 관련 appspresso ide 를 사용하는 것을 추천한다.


Appspresso 1.1.1 설치

1. Appspresso.com site 방문

appspresso.com 으로 방문하면 상단의 Download  라는 메뉴를 클릭 이메일과 체크 박스 두개중 하나는 필수고 뉴스레터는 옵션이다. 여기서 submit 버튼을 누르면 등록한 메일주소로 다운로드 링크가 메일로 오게 됩다. 

여기서 이해가 안되는 건 왜 메일를 다시 들어가야할까 ? 라는 점이다.
메일주소를 받고 링크를 보여줌으로써 바로 다운로드 받는 것에 문제가 있는 것일까..? 사용자에게 다시 메일을 접속하라고 하는 이유는..? 메일로 온 내용에 다른 글들이 있는 걸까..? 결론을 말하자면 없다. download 화면에 있는 것 말고는 ... !! 정말 쓸데 없는 일을 한번 사용자에게 한번 더 권한다. 


2. 다운로드 

메일로 도착한 링크중에 개인별 시스템에 맞는 버전을 다운로드 한다. 만약  iPhone App 을 개발할 것이라면 Mac 버전을 받아야만 한다. 이건 필수다. Appspresso 는 윈도우 환경에서 ios 개발을 할 수 없다. 여러가지 ios 개발 환경만이 갖는 조건 때문이다. Appspresso 탓을 하지는 말자. Apple 에서 그렇게 한거라 Appspresso는 힘이 없다. 

여기서 다만 아쉬운 점은 이런 내용을 다운로드 받고나서 설치 이후 사용할때나 알게되는 것인데 사전 지식이 있는 사람들은 상관없는데 사전 지식이 없는 사람들은 메일이 그런 내용이 있었으면 할것이다. 


3. Mac 버전 설치

eclipse 를 써본 사용자라면 zip 파일로 압축을 풀면 Eclipse 와 같은 디렉토리 구조를 갖는 다는 걸 알 수 있다.  모든 기본 UX가 Eclipse 기반으로 판단하면 큰 무리가 없을 것이라는 짐작이다. 그리고 Eclipse 의 모든 안좋은 것과 좋은 것들을 가지고 있을 것 이다.


4. Appspresso  start 

Appspresso 를 실행하면 console 창에 나타나는 메세지들이다. 무언가 실행을 했다. setup.xml 이 ant 파일이 아닌가 싶다.

Buildfile: /Users/@@@/develop/appspresso/Appspresso1.1.1/plugins/com.appspresso.cli_1.0.0.201205071744/axhome/build-setup.xml


init:

     [echo] setup Appspresso SDK/CLI on /Users/@@@/develop/appspresso/Appspresso1.1.1/plugins/com.appspresso.cli_1.0.0.201205071744/axhome...


_setup_android:

     [echo] setup Appspresso SDK/CLI for Android on /Users/@@@/develop/appspresso/Appspresso1.1.1/plugins/com.appspresso.cli_1.0.0.201205071744/axhome/platforms/android...


_setup_ios:

     [echo] setup Appspresso SDK/CLI for iOS on /Users/@@@/develop/appspresso/Appspresso1.1.1/plugins/com.appspresso.cli_1.0.0.201205071744/axhome/platforms/ios...


_setup_wac:

     [echo] setup Appspresso SDK/CLI for WAC on /Users/@@@/develop/appspresso/Appspresso1.1.1/plugins/com.appspresso.cli_1.0.0.201205071744/axhome/platforms/wac...


setup:

BUILD SUCCESSFUL


BUILD SUCCESSFUL

Total time: 2 seconds

Appspresso Console Ready.... 

Appspresso perspective 가 나타나는데 텅 비어 있다.

환영인사 화면이라도 있으면 좋으련만 eclipse 를 실행하면 제일 먼저 도움글들을 볼 수 있는 화면이 뜬 걸로 기억하는데 이건 그냥 빈 프로젝트다. 좀 아쉽다. 뭘 제공하는지 나열이라도 하면 좋으련만...


bz2 파일 한번에 압축풀기

bz2 파일 한번에 압축풀기
# 압축하기
#tar cvjf 파일명.tar.bz2 압축할 대상
(ex. tar cvjf babo.tar.bz2 ./babo)

# 압축풀기
# tar xvfj 파일명.tar.bz2
prev 1 next