'분류 전체보기'에 해당하는 글 683건

vagrant 를 사용하려면 virtualbox 를 먼저 설치해야 한다.

우분투에서는 apt 패키지로 설치하면 편하다.

관련 링크 : https://www.virtualbox.org/wiki/Linux_Downloads 


apt-key 등록 , apt update 시에 다음과 같은 에러가 나오는 경우가 있다.

W: bzip2:/var/lib/apt/lists/partial/download.virtualbox.org_virtualbox_debian_dists_trusty_contrib_binary-amd64_Packages 파일을 받는데 실패했습니다  해시 합이 맞지 않습니다

W: bzip2:/var/lib/apt/lists/partial/download.virtualbox.org_virtualbox_debian_dists_trusty_contrib_binary-i386_Packages 파일을 받는데 실패했습니다  해시 합이 맞지 않습니다


apt 캐시를 삭제(clean) 해주고,  /var/lib/apt/lists 쪽도 삭제를 한후 다시 시도해본다.

# apt-get clean

# rm /var/lib/apt/lists/*
rm: `/var/lib/apt/lists/partial'를 지울 수 없음: 디렉터리입니다

# rm /var/lib/apt/lists/partial/*

# apt-get clean

# apt-get update


뭔가 안된다.

이게 아닌가?

네트웍이 불안해서 그런가?
    => 이게 답인 것 같다. 지금 해보니 해당 에러가 없어졌다.


반응형

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

,

LTE 를 사용하면서 가장 많이 쓰는 것이 와이파이 hotspot 이다.

갤럭시S5 를 최근에 바꿔서 사용하고 있는데, 성능이 좋지 않다.


처음에는 LTE 가 느린가 했는데, 아니다.

USB 테더링을 하니 빠르다. WiFi 쪽의 호환성인지. 드라이버의 문제인지.

성능이 좋지 못하다. 일단 USB 테더링으로 쓰고 있지만, 추후 다시 테스트 해봐야 겠다.


반응형

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

,

요즘 서버 자동화에 대한 구상을 하고 있다.

여러가지 방법이 있어 상황에 맞는 좋은 방법을 찾고 있다.

docker / vagrant / chef / puppet 등을 체크하고 있다.

관리해야 하는 서버가 수십대 규모에서 수백대 규모로 넘어가는 상황에서는 수작업/스크립트 만으로는 처리가 어렵다. 미리 미리 체크해서 상황이 발생했을 때 빠른 대처를 할 생각이다.


# digital ocean 의 서비스를 활용.

서비스쪽에서는 amazon 이 최고이긴 하지만, 비용문제가 있다. 계산법 복잡한 부분도 있다.
설정 부분도 그렇고, 초보가 접근하기에는 좀 부담스럽다.

디지털오션은 그 부분에서 간략화되어 있다는 느낌이다.

디지털오션 서비스를 체험하려면 관련글을 참조(2개월무료사용글 => http://blog.1day1.org/498 )

droplet 까지 생성을 해봤다면 다음으로 넘어가보자.

미리 세팅한(OS + your service app) droplet 를 스냅샷(snapshot)으로 만들 수 있다.

기본으로는 해당 지역(San Francisco) 에 생성이 되는데, 다른 지역에도 같은 이미지를 배포하고 싶으면 다른 지역으로 전송할 수 있다. 전송하는 시간이 좀 길다. 20G 정도 밖에 안되는데, 꽤 오랜 시간이 걸린다.
미리 미리 타지역으로 배포를 해놓는 것이 좋다.( 이 시간 때문에 다른 서비스도 고려중이다)

일단 스냅샷을 만든후


# droplet 을 저장이미지를 사용해본다.

  지역을 선택하고 My Images 에 저장된 이미지가 보인다. 그것을 선택한다.
  SSH Key 도 미리 등록해 놓으면 로그인도 바로 할 수 있으니 편하다.


기존에 droplet 생성 -> 서비스 app 세팅 하는데, 스크립트를 이용해서 보통 20~30 / 테스트까지 하면 1시간정도 필요했었다. 그런데, 이미지를 이용하면 거의 5분이내로 서비스 가동이 완료된다. 무지 편해졌다.
서비스 배포 시간을 줄이며 그 만큼 빠른 대응을 할 수 있다.

디지털오션쪽에서는 API 도 제공하기 때문에 위 시간에서 더 줄일 수 있을 듯 하다.
(https://developers.digitalocean.com)


내가 한 방법이 최상이라고는 할 수 없다. 서비스 앱의 종류 / 복잡도에 따라 또 달라질 수 있다.

설정등이 서버마다 바뀌거나, 복잡한 부분은 chef 나 puppet 등을 사용해야 할 것이다.

처음에는 간단한 것부터 조금씩 복잡한 부분에 대한 자동화시스템을 구축해볼 예정이다.




반응형

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

,

우분투 14.04 시스템에 btrfs 를 사용하고 있다.

SSD raid 에 LVM 으로 나눠서 쓰고 있다. 일반적인 사용형태보다는 좀 복잡할 것이다.
(물론 아주 특이한 케이스는 아니다)

docker 를 테스트 하던 중.

docker pull 로  이미지 몇개 설치하지 않았는데, 디스크가 꽉차는 현상이 발생했다.
크롬이 비정상 종료되길래 왜 그러지 싶었다. 그냥 아무 생각없이 재부팅하니. 정상부팅되지 않았다.

순간 멘붕.

허걱! 다시 OS를 깔아야 하나. 데이터 만이라도 살려야 하는데.
중요데이터는 Dropbox 로 동기화 하고 있으니 별 상관은 없지만, 또 세팅을 다시하려니 힘이 쭉.

single 모드로 다시 부팅을 해보고 점검을 해봤다.

주요 메시지는

Incrementally starting RAID arrays...
mdadm: CREATE user root not found
mdadm: CREATE group root not found
Incrementally started RAID arrays.

이런식의 메시지가 계속 무한루프 된다. 위 메시지를 검색 해봤는데, 별다른 원인을 못찾겠다.


docker 를 테스트 하던중 용량 관련 메시지 No space left on device  => 디스크 full 일때 나오는 익숙한(?) 메시지
를 봤었다. 그것과 관련이 있을 것 같다.

# df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root  131G   46G   84G  36% /
none                         4.0K     0  4.0K   0% /sys/fs/cgroup
udev                         3.9G  4.0K  3.9G   1% /dev
tmpfs                        791M  1.3M  789M   1% /run
none                         5.0M     0  5.0M   0% /run/lock
none                         3.9G  156K  3.9G   1% /run/shm
none                         100M   44K  100M   1% /run/user

그러나 시스템 용량은 충분했다. 어떤 다른 이유인것 같다.


docker pull dockerfile/mongodb

등의 명령을 내리면, 이미지를 다운로드하고 컨테이너를 생성한다.

# docker pull dockerfile/mongodb
Pulling repository dockerfile/mongodb
6c03df111896: Download complete
511136ea3c5a: Download complete
5e66087f3ffe: Download complete
4d26dd3ebc1c: Download complete
d4010efcfd86: Download complete
99ec81b80c55: Download complete
b261bc65cd23: Download complete
42404685406e: Download complete
6cc69450fe19: Download complete
efc4fbcd007f: Download complete
2baeb2edbf92: Download complete
ecd5c1cc18ac: Download complete
1f089cc15e82: Download complete
9c1219bb985c: Download complete
d5885db18d17: Download complete
f1b2b4374c6b: Download complete
c0cda6b780cd: Download complete
42f2a60d100f: Download complete

이때 docker 는 btrfs 인 경우 subvolume (스냅샷?) 기능 을 이용하는 것 같다.

/var/lib/docker/btrfs/subvolumes 에 생성이 된다.

btrfs subvolume list /

을 해보면 아무것도 없어야 한다. 그런데, docker pull 후에 다시 명령을 해보면.

# btrfs sub list /
ID 386 gen 94278 top level 5 path var/lib/docker/btrfs/subvolumes/511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158
ID 387 gen 94278 top level 5 path var/lib/docker/btrfs/subvolumes/5e66087f3ffe002664507d225d07b6929843c3f0299f5335a70c1727c8833737
ID 388 gen 94279 top level 5 path var/lib/docker/btrfs/subvolumes/4d26dd3ebc1c823cfa652280eca0230ec411fb6a742983803e49e051fe367efe
ID 389 gen 94280 top level 5 path var/lib/docker/btrfs/subvolumes/d4010efcfd86c7f59f6b83b90e9c66d4cc4d78cd2266e853b95d464ea0eb73e6
ID 390 gen 94281 top level 5 path var/lib/docker/btrfs/subvolumes/99ec81b80c55d906afd8179560fdab0ee93e32c52053816ca1d531597c1ff48f
ID 391 gen 94282 top level 5 path var/lib/docker/btrfs/subvolumes/b261bc65cd23e8399c39ef0b77d732ddf6ca9679d4cea0ad1cdaca715c4a0d81
ID 392 gen 94283 top level 5 path var/lib/docker/btrfs/subvolumes/42404685406e72d29e3b349605d34cb88590cfcfabb06b9925628f2949c2eb89
ID 393 gen 94284 top level 5 path var/lib/docker/btrfs/subvolumes/6cc69450fe1990579c13d444495dcfec342955712481647fcb73d5a8e6184f33
ID 394 gen 94285 top level 5 path var/lib/docker/btrfs/subvolumes/efc4fbcd007ff7a202ead05932a48f62301464b8f1bc1449f3a8f9b5c26d9515
ID 395 gen 94286 top level 5 path var/lib/docker/btrfs/subvolumes/2baeb2edbf92488d7bbd4723368aeb2e86045f7ed6310b5924cec2d3c3ff8710
ID 396 gen 94287 top level 5 path var/lib/docker/btrfs/subvolumes/ecd5c1cc18ac86e88dd6420161d5812ef6cd31c1a0ce252d071d4481996502fc
ID 397 gen 94288 top level 5 path var/lib/docker/btrfs/subvolumes/1f089cc15e82571690524c3633dc361ba526d25fed072e09607fac7ee1178098
ID 398 gen 94289 top level 5 path var/lib/docker/btrfs/subvolumes/9c1219bb985cb5ceb0a602ad943c9dd5b83cf0f16d3cd05730113fe0af37d0be
ID 399 gen 94290 top level 5 path var/lib/docker/btrfs/subvolumes/d5885db18d17c3e473f310ab7723a1c6b4c29a14b9a8db54bfd795466bee1da3
ID 400 gen 94291 top level 5 path var/lib/docker/btrfs/subvolumes/f1b2b4374c6b1813549a4436c190f4e0ab04168eee3244e08931b63c96b943c1
ID 401 gen 94292 top level 5 path var/lib/docker/btrfs/subvolumes/c0cda6b780cdb2c400b470371baea2149ac4caef980d4685465f0ef13eb2af6c
ID 402 gen 94293 top level 5 path var/lib/docker/btrfs/subvolumes/42f2a60d100fcbda388b76bb69270fc057565ab4bdf5d68072b30b225669e5f4
ID 403 gen 94293 top level 5 path var/lib/docker/btrfs/subvolumes/6c03df11189668e549ac34464dbdbef563144f92eeb89246afaa1029b92cfd7d

위 처럼 많은 subvolume 이 생성된 것을 볼 수 있다.
ID 값이 동일한 것(진한부분)을 보니 ID 당 서브볼륨을 생성해서 관리하나 보다.


파일용량을 체크해보면 다음과 같다.

# btrfs file df /
Data, single: total=127.21GiB, used=44.64GiB
System, DUP: total=8.00MiB, used=20.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, DUP: total=1.50GiB, used=1.02GiB
Metadata, single: total=8.00MiB, used=0.00

서브볼륨은 어느 부분에 영향을 주는지 확인해봐야 겠다.

아무튼.

docker rmi dockerfile/mongodb

명령으로 docker 이미지를 삭제하면 해당 subvolume 도 삭제된다.


개별적으로 subvolume 을 삭제하려면

btrfs sub del var/lib/docker/btrfs/subvolumes/6c03df11189668e549ac34464dbdbef563144f92eeb89246afaa1029b92cfd7d

으로 삭제해준다.( 부팅이 안되서 usb 우분투 로 부팅하고, 해당 서브볼륨을 위 처럼 하나씩 삭제해줬다)


btrfs 에 좀더 알기전까지는 조심해야 겠다.

다음부터 docker 는 vagrant 기반의 vm 내에서 테스트 해봐야 겠다.



반응형

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

,

vagrant cloud 를 사용하려고 한다.( 기존 http://www.vagrantbox.es 를 사용하고 있었다.)

vagrantbox 에는 그리 많지 않아서 vagrant cloud (https://vagrantcloud.com) 를 사용하려 한다.


vagrant cloud 를 사용하려면 1.5 버전 이상에서 사용가능한 듯 하다.

우분투 14.04 기본패키지는 1.4.3 버전이다.( 다음처럼 에러가 난다.)

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
There are errors in the configuration of this machine. Please fix
the following errors and try again:

vm:
* The box 'hfm4/centos7' could not be found.



# 최신 버전으로 업그레이드 한다.

우분투 패키지를 다운받아서 설치했다.( http://www.vagrantup.com/downloads.html )

deb 파일이라 다운로드 하면 자동으로 우분투소프트웨어센터로 설치된다.

업그레이드 하면 된다.

버전을 확인해본다.

$ vagrant -v
Vagrant 1.6.3


vagrant cloud 에서 이미지를 찾아서 설치/가동 해본다.

가입은 쉽다. 가입후 에 Discover 메뉴에서 찾고자 하는 box 를 검색해본다.(가입안해도 될려나?)
그냥 box init 용도로만 사용하려면 가입은 안해도 되나보다.


원하는 box 를 찾았으면 vagrant init  명령을 내린다.

vagrant init hfm4/centos7

위 명령을 하면 Vagrantfile 이 생긴다.
이 파일을 기준으로 vagrant up 시 이미지등을 생성하고, 자동실행하게 된다.


# vagrant up

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'hfm4/centos7' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'hfm4/centos7'
    default: URL: https://vagrantcloud.com/hfm4/centos7
==> default: Adding box 'hfm4/centos7' (v1.0) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/hfm4/centos7/version/1/provider/virtualbox.box
    default: Progress: 10% (Rate: 1239k/s, Estimated time remaining: 0:09:02)

위와 같이 진행이 된다.


위와 같이 진행하다가 다음과 같은 에러가 나온다.

Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant


다음처럼 guest plugin 을 설치한다.

$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.10.0)'!

정상적으로 되면

vagrant ssh

로 접속해본다. vagrant 속에서 다음 명령을 해준다.

sudo ln -s /opt/VBoxGuestAdditions-4.3.12/lib/VBoxGuestAdditions /usr/lib/VBoxGuestAdditions

4.3.12 => 버전은 차이가 있을 것이다.

뭔가 계속 에러가 난다. box 패키징이 잘 못된것인가?


다른 박스로 해봤다.( https://vagrantcloud.com/chef/centos-6.5 )

다른 박스로 해보니 정상적이다.

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'chef/centos-6.5' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
GuestAdditions 4.3.12 running --- OK.
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => /user/develop/vagrant/chef-centos-6.5
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: to force provisioning. Provisioners marked to run always will still run.


vagrant cloud 쪽의 box 들이 모두 검증된 것은 아닌것 같다.
각자 취사 선택해서 사용해야 겠다.




반응형

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

,

git 를 로컬에서 사용해도 좋습니다.

그런데, 원격 저장소를 사용하면 뭔가 있어보입니다.

원격저장소를 직접 구현해도 되지만, 일단 이미 구축된 서비스를 사용해봅시다.

여기서는 bitbucket 을 사용합니다. ( https://bitbucket.org )

가입과정은 건너띄고 바로 저장소를 생성합니다.

Name 만 넣으면 끝. Repository type 은 Git 로 하면 됩니다.


나의 로컬저장소 를 원격에 올려봅니다.

저장소 디렉토리에서 다음 명령으로 원격저장소를 등록해 줍니다.

git remote add origin git@bitbucket.org:myid/test-myproject.git

해당 정보는 .git/config 파일에 저장이 됩니다.


이제 로컬의 commit 정보를 원격저장소에 push 해줍니다.

git push -u origin --all

완료가 되면 bitbucket 에 등록된 것을 볼 수 있습니다.



추가) ssh key 를 등록하면 편합니다.

bitbucket 메뉴에서 Manage Account > Secutiry > SSH keys 메뉴에서 ssh key 를 등록해 둡니다.





반응형

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

,

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

그중에 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
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

Titanium 개발. 모바일 개발 tishadow 로 편하게 하자

개발과정

코딩 => 빌드 => 디바이스 확인:(에뮬 or 폰)

의 과정을 거친다.

Titanium 개발시 빌드 과정을 조금이나마 줄일 수 있다.


관련자료

http://tidev.tistory.com/27
http://codejong.net/post/51276937188/tishadow
http://tidev.kr/t/tishadow/306


설치는 쉽다. npm 패키지 인스톨하면 된다.

npm install tishadow -g

쉘상에서 ts 명령을 내려보면 정상적으로 사용준비가 된 것이다.


titanium 에서 --shadow 옵션이 되게 하기 위해. 다음 명령을 내려준다.

$ ts express
[INFO] Titanium CLI hook installed. Now use the `--shadow` flag when buliding your project for express tishadow development


TI sutio 에서 프로젝트를 만들고, 워크스페이스에서 해당 프로젝트 위치로 이동해서 다음과 같은 명령을 내려준다.

ti build -p android -T device --shadow

다음과 같은 에러 메시지가 나온다면.

[INFO]  Building App...
[INFO]  Starting TiShadow server
[INFO]  Starting Watch...
[ERROR] TiShadow watch exited.


위와 같은 에러가 안나야 정상이다. 뭔가 꼬인 것 같다.
일단 수동으로 처리하는 방법으로 진행한다.(http://blog.1day1.org/523)

=> 이 문제의 해결방법 ( 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)

위 부분때문에 정상실행되지 않는다.





반응형

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

,

ubuntu 14.04 의 byobu (screen) 가 ctrl-a 이 안 먹는다.

byobu 를 실행시키고 ctrl-a 를 눌렀을때

다음처럼 화면이 나올때 1/2 아무거나 입력해도 안되고 같은 화면만 나오는 문제가 있다.

직접 콘솔상에서 byobu-ctrl-a 를 해보면.

$ byobu-ctrl-a
failed to connect to server

Configure Byobu's ctrl-a behavior...

When you press ctrl-a in Byobu, do you want it to operate in:
    (1) Screen mode (GNU Screen's default escape sequence)
    (2) Emacs mode  (go to beginning of line)

Note that:
  - F12 also operates as an escape in Byobu
  - You can press F9 and choose your escape character
  - You can run 'byobu-ctrl-a' at any time to change your selection

Select [1 or 2]: 1

/usr/bin/byobu-ctrl-a: 151: /usr/bin/byobu-ctrl-a: Syntax error: Unterminated quoted string


위처럼 에러가 발생한다.

직접 byobu-ctrl-a 를 수정한다.

115                 case "$BYOBU_BACKEND" in
116                         screen)
117                                 $BYOBU_SED -i -e "/^register x /d" -e "/^bindkey \"^\"/d" -e "/^escape /d" "$keybindings"
118                                 echo "escape \"^${KEY}${key}\"" >> "$keybindings"
119                                 echo "register x \"^${KEY}\"" >> "$keybindings"
120                                 echo "bindkey \"^${KEY}\" >> "$keybindings"
121                                 $BYOBU_BACKEND -X at 0 source "$BYOBU_CONFIG_DIR/profile"
122                         ;;

120 라인부분을 보면  " => 가 빠져있다.

120                                 echo "bindkey \"^${KEY}\" >> "$keybindings"

120                                 echo "bindkey \"^${KEY}\"" >> "$keybindings"


수정 후 저장하고 다시 해보면 정상동작한다.

저 스크립트는 최종적으로. .byobu/keybindings.tmux 파일에 설정이 저장된다.

$ cat .byobu/keybindings.tmux
unbind-key -n C-a
set -g prefix ^A
set -g prefix2 ^A
bind a send-prefix

에러가 나서 계속 같은 화면이 나왔던 것이다.





반응형

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

,

최근에 바뀐것 같다.

로그인 화면.


다음 아이디로도 로그인 할 수 있나보다.


그동안 티스토리가 방치된 느낌이이었는데.

뭔가 다음에서 티스토리를 신경쓰려고 하는것인가?


반응형

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

,

docker 를 어떻게 하면 잘 활용할 수 있을까?

여러가지 방향을 생각해본다.

vagrant 와는 다르게 linux 전용이라 구성에 제약이 따른다.


1. 최대의 성능.

배포용 : 개발머신(linux / docker 호스트)  => docker 이미지

개발용 : 개발PC(win/mac/linux) => 개발환경(linux / docker) + docker pull  <= 배포 이미지

  [필요사항] 배포용 머신이 팀 또는 개인이 보유하고 있어야 한다.

  [장점] linux 머신에 docker 를 바로 세팅해서 최대 성능을 낸다.
  [단점] 리눅스 환경의 개발PC 가 아니면 원격으로 접속해서 개발해야 한다.


2. 관리의 편의.

배포용 : 개발머신(docker 호스트)  => docker 이미지

개발용 : 개발PC+개발환경[ vagrant (docker) ] + docker pull  <= 배포 이미지

  [장점] 개발PC 의 OS 에 상관없이 개발환경을 세팅가능하다.(win / mac)
  [단점] vagrant(vm) 을 활용하기 때문에 성능저하가 있다.



# 개발이 완료된 후 서비스용 설정

기본 구성은 다음과 같이 하려 한다.

서비스서버(docker) + docker pull  <= 배포이미지

서비스서버 를 AWS / DigitalOcean / GoogleCloud 등의 가상서버로 세팅해도 되고, 서버호스팅의 리얼서버를 이용해도 된다.

클라우드는 성능저하가 있겠지만, 빠른배포 와 편의성을 잘 따져보고 결정하면 되겠다.

충분한 테스트를 해보고 결정하는 것이 좋겠다.


디지털오션쪽에 2개월정도 무료사용가능하니 먼저 테스트해봐야 겠다.
(512M 짜리 * 2개 => 1개월 , 4개 => 2주? , 8개 => 1주일정도? )


(무료 사용은 => 링크 참조)

테스트 해보고 사용해도 되겠다 판단이 되면, Core 를 늘려서 서비스용으로 활용해도 되겠다.


# 서비스 시나리오.

서비스용으로 10대의 클라우드 서버에 배포하는 시나리오를 만들고 테스트 해봐야 겠다.

그러고 보니 docker 모니터링툴도 필요하겠다. (관련 자료도 찾아봐야 겠네)


자동화에 필요한 사항은 다양한 시나리오 사례가 만들어지면, 재미있을 것 같다.


반응형

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

,

docker 를 우분투에 설치해봤다. 이제 기본 컨테이너 환경을 구성해보자.

- Centos 를 테스트로 구성해본다.

docker search centos

를 해보면, centos 관련 저장소에 있는 이미지들의 리스트를 보여준다.(무지 많다.)

- 아래 처럼 리스트가 많이 나온다. (docker hub 에 등록된 이미지 인듯함)

- 맨 위의 공식 이미지로 해보자.

docker pull centos

- 다음처럼 이미지를 다운받는 화면을 볼 수 있다.


- 완료가 되면 docker 컨테이너 환경으로 들어가 본다.

기본 호스트로 사용하고 있는 구조와 다르다. ubuntu 안에 centos 의 가상환경을 만들어 준것이다.


- 설치된 이미지를 확인해본다.

# docker images

다음 처럼 로컬에 설치한 이미지들을 볼 수 있다.

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              14.04               e54ca5efa2e9        2 days ago          276.1 MB
centos              centos6             0c752394b855        11 days ago         124.1 MB
centos              latest              0c752394b855        11 days ago         124.1 MB
centos              6.4                 539c0211cd76        14 months ago       300.6 MB



참조 : http://blog.nacyot.com/articles/2014-01-27-easy-deploy-with-docker/


반응형

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

,

docker 를 설치해본다.

우분투 14.04 에서는 간편하다. 이미 우분투 공식패키지로 등록이 되어 있다.

apt-get install docker.io


그러나 공식패키지는 버전업이 느리다.

# docker.io --version

Docker version 0.9.1, build 3600720


빠르게 버전업하는 패키지는 공식사이트의 배포버전을 사용하면 좋다.

echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list

apt-get update

apt-get install lxc-docker

한번에 끝내기

curl -s https://get.docker.io/ubuntu/ | sudo sh

위 스크립트를 받아서 실행하는 방법이다.

Docker version 1.0.1, build 990021a

최신버전으로 설치된다.


간단한 테스트.

# docker run ubuntu:14.04 /bin/echo 'Hello World'

다음과 같은 명령을 내리면.. 로컬이미지를 찾고,
없으면 저장소에서 찾아서 설치한 후 echo 'Hello World' 를 실행하게 된다.

Unable to find image 'ubuntu:14.04' locally
Pulling repository ubuntu
e54ca5efa2e9: Download complete
511136ea3c5a: Download complete
d7ac5e4f1812: Download complete
2f4b4d6a4a06: Download complete
83ff768040a0: Download complete
6c37f792ddac: Download complete
Hello World


하위 버전은 다음을 참조.

http://docs.docker.io.s3-website-us-west-2.amazonaws.com/installation/ubuntulinux/



반응형

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

,

결제할 때 현대앱카드를 몇번써보니 편하다.

얼마전에 폰을 바꾸고 현대앱카드를 신청하려고 했다.

휴대폰번호는 기기의 휴대폰번호와 동일해야 합니다.

위와 같은 메시지가 나오고 다음 진행이 안된다.

아마도 휴대폰의 번호를 인식한후, 입력한 휴대폰번호와 비교하는 듯 한데, 기기의 특성을 타는 듯 하다.

현대카드쪽에 이슈를 제기해야 할 듯 하다.



반응형

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

,

구글 안드로이드 한글키보드 업데이트 하고나니 바뀌었다.

잠깐 써보니 편하네.


영문, 윗부분에 숫자가 나오는 것도 좋군.


한/영 전환이 키보드 윗부분에 있는 것도 편하다.

좀더 써봐야 겠지만, 일단 마음에 든다.


ps. 근데, 티스토리가 모바일에서 글쓰기가 안되네.(될 줄 알았는데)


반응형

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

,

우분투(리눅스) 시스템을 운영하다보면, 파일이 생선된 후 오래된 파일이 계속 남아있는 경우가 있다.

그런 경우 해당 파일을 지워주지 않으면 디스크가 꽉 차거나 해서 시스템이 중단 될 수도 있다.


주의!!

파일을 일괄 명령으로 지우는 것이기 때문에 초보자는 가급적 하지 않거나, 가상머신 등에서 충분히 테스트 한 후에 사용하는 것이 좋습니다.


1. tmpwatch / tmpreaper 로 지우는 방법

이 방법은 전용프로그램을 이용하는 것이다.

tmpwatch - centos 쪽에서 주로 사용

tmpwatch -umcv --nosymlinks --all 48 /tmp

주요부분 설명

/tmp 디렉토리에서

48 : 시간단위 - 2일 지난 파일

--nosymlinks : 심볼릭 링크가 아닌 파일


tmpreaper - ubuntu 쪽에서 주로 사용

tmpreaper -cv 48h /tmp

설명 (tmpwatch 와 비슷함)


tmpreaper 의 문제점 - 보안상(?)의 이유인지.

tmpreaper 는 실행된 후 55초(기본값) 지난후 에 중지된다. 그런데, 중지된 이후에서 계속 프로세스에 남아있는다.
내가 테스트한 곳만 그런지는 모르겠지만,  뭔가 이상하다. 불안하다.




2. find 로 검색해서 삭제

find /tmp -mtime +2 -exec rm -vf {} \;

주요부분 설명

/tmp 디렉토리에서

+2 : 일단위 - 2일 지난 파일

-exec : 조건에 맞는 파일에 대해 실행 

-exec  ls -l {} \; => 등으로 먼저 테스트를 해보는 것이 좋음


우분투에서 tmpreaper 의 문제때문에 find 방식으로 바꿨다.



반응형

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

,

ssh 를 사용할때 자주 사용하는 호스트는 config 에 설정해놓으면 편리하다

위치는 자신의 홈디렉토리/.ssh/config 파일이다.

형식은.

Host serv
    hostname serv.domain.kr
    User root
    Port 22
    IdentityFile ~/.ssh/github.key

Host 부분에는 짧은 문자로 적어준다.

Host serv s1

이런식으로 여러개를 적어도 된다.

서버관리를 위해 root 나 특정계정을 적어주면 된다.

직접

ssh serv.domain.kr 

명령을 내리면 현재 로그인상태의 계정으로 접속하게 된다.
관리할 서버들이 동일한 계정이면 상관없는데, 다른 경우가 대부분이라 매번

ssh user@serv.domain.kr

이런 형태로 적는 것은 불편하다.

port 도 마찬가지이다.

기본포트가 22 번이지만, Brute force 공격등을 방지하기 위해 포트번호를 바꾸는 것이 좋기 때문에 Port 번호도 config 에 지정해주면 편하다.


또한 패스워드 없이 바로 접속하기 위해 IdentityFile 을 지정해주는 것도 편리하게 ssh 를 사용하는 좋은 방법이다.
(물론 key 파일은 주의해서 관리한다.)



반응형

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

,

ubuntu 에서 adb 의 android 장치 연결 상태 가 몇가지 있다.

 

1. no permissions 라고 나오는 경우.

예전글 http://blog.1day1.org/405 에서 처럼 장치를 인식시켜 준다.

 

2. unauthorized 라고 나오는 경우.

폰을 연결하고, 실행시켰을때 다음과 같은 에러가 난다.

[ERROR] :  Invalid "--device-id" value "LGF180Sa51d66e"
[ERROR] Application Installer abnormal process termination. Process exit value was 1

# adb devices

를 해보면

List of devices attached
LGF180Sa51d66e    unauthorized

usb 디버깅 체크를 하면, 접근 PC에 대해 디버깅을 허용할 것인지 안내창이 뜬다.

그것을 체크하지 않으면, unauthorized 라고 나온다. 체크하면 정상적으로 device 라고 나온다.

 

# 삼성 폰

$ adb devices

List of devices attached
44db4d4c    unauthorized

=> USB 디버깅 허용

List of devices attached
44db4d4c    device

 

 

 

 

 

 

# LG 폰

$ adb devices

List of devices attached
LGF180Sa51d66e    unauthorized

=> USB 디버깅 허용

List of devices attached
LGF180Sa51d66e    device

 

 

반응형

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

,


이전글에서는

http://blog.1day1.org/497

jre 가 필요한 경우에 java8 을 설치했었다.


TI studio 에서 프로젝트 빌드중에 java 8 버전에서 다음과 같은 에러가 나온다

[ERROR] :  JDK version 1.8.0 detected, but only version <=1.7.x is supported
[ERROR] Application Installer abnormal process termination. Process exit value was 1


Titanium Studio 는 jdk7 버전이 필요하다.

apt-get install oracle-jdk7-installer 

버전을 낮춰서 설치해준다.


Titanium 첫 프로젝트를 생성하고 실행시켜 본다.

초 간단 앱이 완성된다.

에뮬은 느리기 때문에 폰을 직접 연결해서 사용하는 것이 좋다.





반응형

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

,

Titanium Studio 가 alloy 를 쓰면서 node 가 기본 패키지로 설치되어야 하는 듯 하다.

apt-get install nodejs npm

으로 먼저 설치가 되어 있고, 관련 npm 관련 추가 설정이 필요하다.


사용자 계정 home 디렉토리가 패키지의 기본위치로 지정한다.

vi .npmrc 파일을 생성해서

prefix=/home/young

본인의 홈 폴더를 지정한다.


npm install 등의 명령으로 설치하면

홈폴더 밑으로  lib , bin 등에 관련 패키지 들이 설치된다.

npm install titanium -g

npm install alloy -g

npm install acs -g

등이 TI studio 에서 쓰는 패키지들이다.



반응형

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

,

wordpress 를 설치를 해서 사용할까 하다가, 일단 적응하자 라는 생각에

wordpress.com 에 계정을 만들었다.

뭔가 익숙하지는 않다.


테마들도 그렇고.

따로 구입해야 하는것도 있군. 나중에 테마나 만들어 볼까나.

워드프레스 쪽에는 어떤 이야기를 할지.(뭐 여기와는 다르고 서로 연관될 일은 없을 듯 하다)


반응형

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

,

드디어 sublime text 를 구매했다.

원래 계획은 sublime text 3 정식출시 하면 살까 했는데, 겸사겸사 해서 구매하게 되었다.

EditPlus 를 구매해서 쓰고 있다가, sublime 으로 전향해서 적응중이었다. 적응이 어느정도 끝나서 구매하기로 했다.

개인 70불, 싸다면 싸고 비싸다면 비싼편. (개인 라이선스라 맥/윈도우/리눅스 에서 써도 추가 비용이 들지 않는다)


막판에 phpStorm 으로 할까 고민을 했지만, 똑 적응기간이 필요해서 그냥 sublime 으로 하기로 했다.

phpStorm 은 나중에 테스트.


결제하기로 들어가니, paypal 로 넘어간다.

paypal 에서 직접 신용카드로도 가능한가 보네.(paypal credit? 으로만 되는 줄 알았음)


암튼 결제하고 나니, 라이선스키가 나온다.

Sublime Text 3 열어서 help 에 license 입력하면 끝.



반응형

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

,

윈도우 - 타이타늄 스튜디오 설치

윈도우8.1 을 사용하고 있다.

타이타늄 사이트에서 다운받아서 설치한다.

http://www.appcelerator.com/

기존 계정으로 로그인하면, 맥/윈도우/리눅스 등 다양한 OS 설치파일을 다운받을 수 있다.

윈도우에서는 별다른 어려움이 없다.


설치후에 실행하면 추가 패키지들을 업데이트 할 것이다. 시간이 꽤 걸린다.


안드로이드 SDK 도 설치한다.(이것도 오래걸린다)

충분한 시간이 필요하니 미리미리 다운받아서 설치해두는 것이 좋을 듯 하다.

요즘 많이 쓰는 4.3 과 4.4.2 SDK 를 설치하는 것이 좋을 듯 하다.




반응형

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

,

btrfs 를 사용중이다.

df -i 를 해보면 inode 값이 0 이다.

원래 그런 것인가?


관련자료를 찾아본다.

http://www.nrtm.org/index.php/2012/03/13/the-joys-of-btrfs-and-opensuse-or-no-space-left-on-device/comment-page-1/

http://ubuntuforums.org/showthread.php?t=2039786


btrfs 에 대해 찾아보기로 한다.

http://ko.wikipedia.org/wiki/Btrfs

이글을 보면

동적 아이노드 할당

이라는게 있다. 아이노드 값이 정해져 있지 않다는 것인가? 그럼 0 값이 정상?

http://mirr.tistory.com/633

위 글에도 언급되어 있다.

좀더 테스트를 해봐야 겠지만, 문제가 되는 것은 아닌 듯 하다.



반응형

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

,

우분투에서 세팅하려고 보니 다음과 같은 에러와 함께. 중지된다.

java crashed with SIGABRT

The crashed program seems to use third-party or local libraries:

{your_path}/Titanium_Studio/configuration/org.eclipse.osgi/bundles/294/1/.cp/libswt-atk-gtk-4335.so
{your_path}/Titanium_Studio/configuration/org.eclipse.osgi/bundles/83/1/.cp/os/linux/x86_64/libjnotify.so
{your_path}/Titanium_Studio/configuration/org.eclipse.osgi/bundles/294/1/.cp/libswt-cairo-gtk-4335.so
{your_path}/Titanium_Studio/configuration/org.eclipse.osgi/bundles/178/1/.cp/os/linux/x86_64/libunixfile_1_0_0.so
{your_path}/Titanium_Studio/configuration/org.eclipse.osgi/bundles/294/1/.cp/libswt-gtk-4335.so
{your_path}/Titanium_Studio/configuration/org.eclipse.osgi/bundles/294/1/.cp/libswt-webkit-gtk-4335.so
{your_path}/Titanium_Studio/configuration/org.eclipse.osgi/bundles/294/1/.cp/libswt-pi-gtk-4335.so
{your_path}/Titanium_Studio/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212/eclipse_1508.so

It is highly recommended to check if the problem persists without those first.

Do you want to continue the report process anyway?

...

UnreportableReason: 이 패키지를 올바르게 설치하지 않았습니다.

뭔가 빠진 패키지가 있는 것일까?


콘솔에서 실행시켜 보면...

$ ./TitaniumStudio.sh 

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
inotify_add_watch: 장치에 남은 공간이 없음
(Build 3.2.3.201404181442) [ERROR]  An error occurred while registering a file watcher
net.contentobjects.jnotify.linux.JNotifyException_linux: Error watching /home/user/Documents/Aptana Rubles : No space left on device
    at net.contentobjects.jnotify.linux.JNotify_linux.addWatch(JNotify_linux.java:109)
    at net.contentobjects.jnotify.linux.JNotifyAdapterLinux.createWatch(JNotifyAdapterLinux.java:137)
    at net.contentobjects.jnotify.linux.JNotifyAdapterLinux.addWatch(JNotifyAdapterLinux.java:114)
    at com.aptana.filewatcher.FileWatcher.addWatch(FileWatcher.java:65)
    at com.aptana.scripting.internal.model.BundleMonitor.beginMonitoring(BundleMonitor.java:123)
    at com.aptana.scripting.ScriptingActivator$1.run(ScriptingActivator.java:114)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fb93a55e159, pid=29544, tid=140436528912128
#
# JRE version: Java(TM) SE Runtime Environment (8.0_05-b13) (build 1.8.0_05-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.5-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libwebkitgtk-1.0.so.0+0x462159]  webkit_web_view_get_type+0x2489
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# {your_home}/Titanium_Studio/hs_err_pid29544.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

웹킷 관련 에러인듯 하다.

주요한 부분은

try "ulimit -c unlimited" before starting Java again

이 부분이다.

위와 같은 에러가 발생한다면, ulimit -c 를 해보면 값이 0 일 것이다.


ulimit 설정을 다음과 같이 입력해준다.

$ vi /etc/security/limits.conf

*               soft    nofile          20480
*               hard    nofile          20480
*               soft    core          10240

재부팅 해보면 해당 지정한 값으로 기본 세팅되어 있을 것이다. (ulimit 에 관한 사항은 별도 검색해보시길 바랍니다.)


이제 다시 Titanium Studio 를 실행해본다.

로그인 정보를 입력한다.


정상적으로 뜬 화면이다.


추가 패키지들을 업데이트를 해야 하나보다.

NodeJS 도 보이고, 그 밑으로 Alloy 프레임워크도 보인다.(nodejs 는 alloy 에서 사용한다고 본것 같다)


# 우분투에서는 nodejs 를 별도로 설치해줘야 하나보다.

위 화면에서 Next 로 진행이 안된다.

https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

일단

apt-get install nodejs npm

으로 설치후 다시 시도해본다.


윈도우에서는 그냥 Next 로 진행하면 알아서 깔리는데, 우분투에서는 뭔가 문제가 있는지 수동으로 해줘야 한다.

npm install titanium -g

npm install alloy -g

npm install acs -g


android SDK 도 직접 설치해주는 것이 좋다.

http://developer.android.com/sdk/index.html

에서  ADT bundle 아래 SDK Tools Only 를 받아서 적당한 위치에 복사한다.

그 링크를 Titanium Studio 를 열어서  Windows > Preferences 에서  Studio > Platforms > Android 항목에 넣는다.

정확한 위치를 넣어야 한다. 잘못된 위치는 빨간색 경고텍스트가 나온다.





반응형

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

,

모바일앱을 타이타늄으로 제작해보려한다.
폰갭도 고려대상이었는데, 초보자 입장에서 딱히 고를만한 여유는 없다.

http://www.appcelerator.com/


초보자라 시행착오가 많을 듯 싶다.

검색해보면 자료들이 예전것들이 많아서, 새로 업데이트 된 내용들을 정리하고자 한다.
구체적인 학습계획을 세워보고 진행해야 겠다.

앱에 대한 구상도 미리 해보고.


기대되면서 걱정도 된다.


가입/로그인 하고, 이제 개발환경을 세팅해야 겠다.

우분투(Linux 64) 와 윈도우8.1 환경에서 개발을 진행하게 될 듯 하다.
아이폰(맥) 앱은 아마도 나중에.



반응형

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

,