버전관리는 필수가 되었죠.

그중에 git 이 가장 나은 것 같아요.
뭐 나혼자 쓰니 아무거나 써도 됩니다.

http://rogerdudler.github.io/git-guide/index.ko.html

간편하게 쓸 수 있습니다.


gui 툴은 ubuntu 에서 별로네요. 윈도우용은 그나마 쓸만한데

console 명령을 정리합니다.

[간편 사용하기]

# git init

# git add .

# git commit

일단 이거면 됩니다. 위 링크의 이 그림이 핵심이죠.

그다음은 좀더 발전한 것이죠. 차차 익히기로 해요.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

서버관리.

ssh 접속해서 관리할 수 있는 서버의 수는 제한적이다.
스크립트를 작성해서 관리하는 것도 한계가 있다.

자동화 툴을 사용해야 한다.

여러가지 이지만, 하나씩 알아보고 적당한 놈을 찾아보기로 한다.

후보로

1. 모니터링 : Icinga

=> 설정 관련글 : http://blog.1day1.org/547


2. 서버 자동화 : Chef

한번에 여러개를 다 해볼 수는 없고, 일단 후보 먼저 검증해 볼 예정이다.


일단 작은 부분의 관리 부터 검증해봐야 겠다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

tishadow 를 사용할 때 수정된 파일을 감지해서 자동으로 빌드/업데이트 해준다.

ts @ run -u

위 명령을 내렸을떄, 우분투 14.04 에서 에러가 나는 문제가 있다.

다음과 같은 에러가 나는 경우.( 참조 : http://blog.1day1.org/523 )

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: watch ENOSPC
    at errnoException (fs.js:1024:11)
    at FSWatcher.start (fs.js:1056:11)
    at Object.fs.watch (fs.js:1081:11)
    at Gaze._watchDir ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/gaze.js:279:30)
    at {홈}/lib/node_modules/tishadow/node_modules/gaze/lib/gaze.js:336:10
    at iterate ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/helper.js:52:5)
    at Object.forEachSeries ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/helper.js:66:3)
    at Gaze._initWatched ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/gaze.js:332:10)
    at Gaze.add ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/gaze.js:167:8)
    at new Gaze ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/gaze.js:68:10)

관련 자료를 찾아보니 리눅스의 inotify 관련 설정때문이다. 더 정확히 max_user_watches 값이다.

다음 명령으로 해당값을 알 수 있다.

$ cat /proc/sys/fs/inotify/max_user_watches

8192

위 값을 늘려주면 된다.


다음과 같이 명령으로 max_user_watches 값을 늘려준다.( 값은 본인의 상황에 따라 )

$ echo fs.inotify.max_user_watches=65536 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
fs.inotify.max_user_watches=65536
fs.inotify.max_user_watches = 65536


이제 다시 tishadow 의 자동감지를 해보자. 다음처럼 나오면 정상이다.

$ ts @ run -u
[INFO] Beginning Build Process
[INFO] Compiling Alloy for android
[WARN] Nothing to update.



반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

vagrant 로 우분투 테스트 환경을 구성해보자.

타이타늄 세팅에 이상한 부분이 있어서 vagrant 로 센드박스를 만들어 테스트 하기로 한다.


1. vagrant 설치

우분투에는 기본 패키지로 등록되어 있다.

apt-get install vagrant


2. 우분투 14.04 를 vm 으로 세팅한다.

vagrant box add trusty https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box

공개된 패키지 URL 은 http://www.vagrantbox.es 에서 찾을 수 있다.


3. vm 을 기본 환경을 만든다.

$ mkdir ubuntu14.04

$ cd ubuntu14.04

$ vagrant init trusty


A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

ubuntu14.04 디렉토리에 vagrant 파일이 생성되어 있을 것이다. 해당 디렉토리가 기본 실행환경이 된다.


4. vm 환경을 실행해본다.

$ vagrant up

다음처럼 실행되는 화면을 볼 수 있다.

Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'trusty'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Mounting shared folders...
[default] -- /vagrant


5. 가상머신 으로 접속해본다.(ssh)

$ vagrant ssh

다음처럼 가상머신으로 접속된다.

Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-30-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Sat Jun 28 17:29:31 UTC 2014

  System load:  0.96              Processes:           89
  Usage of /:   2.7% of 39.34GB   Users logged in:     0
  Memory usage: 16%               IP address for eth0: 10.0.2.15
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.


vagrant@vagrant-ubuntu-trusty-64:~$


이제 테스트 환경은 갖추어졌다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

titanium 개발시 TI sutdio 와 tishadow 를 이용해서 개발하면 편리하다.

eclipse 기반의 TI sutdio 가 좋기는 한데, 자신이 쓰는 편집기를 쓰고 싶을 수도 있다.

나의 경우 sublime text 를 쓴다. 그래서 관련 빌드 환경구성 및 사용법을 정리하고자 한다.


다음의 단계로 진행한다.

1) tishadow 실행환경으로 빌드하기 위해 build 를 별도위치에 생성한다.

자신의 프로젝트 위치에서 다음 명령을 내린다.

$ ts appify -d build/appify

다음과 비슷한 결과를 얻게 된다.

[INFO] Beginning Build Process
[INFO] Compiling Alloy for android
[INFO] 35 file(s) bundled.
[INFO] Bundle Ready: {자신의 프로젝트 위치}/build/tishadow/dist/project01.zip
[INFO] Creating new app...
[INFO] TiShadow app ready



다음을 진행하기 전에 android 기기가 연결되어 있는지 확인.

⟫ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
44db4d4c        unauthorized

=> 이렇게 나오면 안된다. device 라고 정상적으로 나와야 함. ( http://blog.1day1.org/518 를 참조)
  usb 연결을 끊었다가 다시 연결한다.

⟫ adb devices
List of devices attached
44db4d4c        device

OK 이제 정상으로 나왔다.


2) appify 방식으로 빌드한다.(실행위치 build/appify => 1)에서 정한 위치)

⟫ ti build -p android -T device

다음 명령으로 빌드하면 최종 폰에서 앱이 설치되고 실행된다.


3) 개발환경과 앱의 appify 가 통신하기 위한 server 실행.

⟫ ts server
[DEBUG] TiShadow server started. Go to http://localhost:3000

앱쪽으로 javascript 코드를 넘겨주는 역할의 서버를 실행한다.(기본포트 3000 을 이용한다)
실행위치는 아무곳이나 상관없다.


연결이 이상한 것 같아 host 를 지정해줬다.

⟫ ts config --host 192.168.0.33

다음 파일에 저장이 된다.
$ cat ~/.tishadow.json
{
    "host": "192.168.0.33"
}

⟫ ts server
[DEBUG] TiShadow server started. Go to http://192.168.0.33:3000

http://192.168.0.33:3000 로 접속해보면 연결된 device 가 보여야 한다.

안보인다. 뭔가 이상하다.

프로젝트가 이상한 것 같아. 다른 정상적인 프로젝트로 다시 해봤다.
아래처럼 Devices 부분에 연결된 장치가 보여야 정상이다.


4) 코드 변경을 감지하여 자동으로 빌드하고 server 로 업로드한다. (실행위치 프로젝트 )

⟫ ts run
[INFO] Beginning Build Process
[INFO] Compiling Alloy for android
[INFO] 35 file(s) bundled.
[INFO] BUNDLE sent.


변경 분만 빌드후 전송 (아래처럼 변경내용이 없으면 나오는 메시지는 정상)

⟫ ts run -u
...
[WARN] Nothing to update.




[아래 부분 실패]  => 해결책 : http://blog.1day1.org/533

자동 코드감지 ( @ 부분을 추가)

⟫ ts @ run -u


정상동작해야 하는데 뭔가 이상하다. 다음과 같은 에러가 발생.

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: watch ENOSPC
    at errnoException (fs.js:1024:11)
    at FSWatcher.start (fs.js:1056:11)
    at Object.fs.watch (fs.js:1081:11)
    at Gaze._watchDir ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/gaze.js:279:30)
    at {홈}/lib/node_modules/tishadow/node_modules/gaze/lib/gaze.js:336:10
    at iterate ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/helper.js:52:5)
    at Object.forEachSeries ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/helper.js:66:3)
    at Gaze._initWatched ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/gaze.js:332:10)
    at Gaze.add ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/gaze.js:167:8)
    at new Gaze ({홈}/lib/node_modules/tishadow/node_modules/gaze/lib/gaze.js:68:10)

node 패키지에 이상이 있는 것인가? 윈도우 쪽에서는 정상작동했다.

일단 수동으로 ts run 은 가능하니, 일단 여기까지. 추후 문제되는 부분을 확인해봐야 겠다.




5) sublime text 등 자신의 편집기로 개발

자신이 쓰는 편집기로 개발하면 된다. 소스 수정 후에  ts run -u 명령으로 빌드 => 전송 하여 바로 앱의 변경사항을 확인할 수 있다. 처음부터 빌드 하는 방식보다 편하고 빠르게 개발할 수 있다.



반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,