레이블이 Programer인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Programer인 게시물을 표시합니다. 모든 게시물 표시

2010년 12월 10일 금요일

ROR db scheme 추가

이미 만들어져 있는 ror db에 스키마를 추가하고 싶다면 다음과 같은 명령어를 활용한다.
ror이 있는 디렉토리에서 실행시킨다.

$ ./script/generate migration add_field1_and_field2_to_TABLE field1:boolean field2:integer

data type을 선택할 때 뒤에 열거해준다.
boolean, integer, string, text 등등...

그리고 실제 db에 적용시킨다.

$ rake db:migrate

2010년 11월 22일 월요일

.htaccess redirect

.htaccess 파일 만들어서 redirect하는 방법.
아주 간단하다. (왜 삽질을 했는지 의문이다;)

RedirectPermanent /index.php http://www.google.co.kr

이렇게 하면 서버의 index.php로 접속했을 때 구글페이지로 redirecting된다.

또는,
Redirect 301 /index.php http://www.google.co.kr
이렇게 사용한다.

2010년 10월 28일 목요일

iphone App 사용기 - 생활 편

커뮤니티 편에서도 얘기했듯이 나는 아이폰을 100% 적극 활용하는 유저가 아니다.
그냥 필요하면 설치해서 쓰고, 별로면 삭제하고.. 기본적인 것만 쓰는 듯.


내 아이폰에 설치되어있는 매일매일 쓰는 생활 속의 앱은 7개.
택배, 서울버스, 지하철, 큐루큐루, 폰폰, 쇼미니고객센터, 플래너.


이번엔 내맘대로 순위를 매겨보도록 하겠다.

대망의 1위는!!!!!

바로바로바로 서울버스!!!! 되겠다.
서울/경기 사는 사람치고 이 앱을 설치하지 않은 사람은 없을 거다.
나 역시도 가장 많이 사용하고 있다. 훗훗.
이거 만든 놈은 진짜 짱이다. ... 라고 생각하고 있었는데.. 나보다 어릴거라고는 생각도 못했다-_-;
언젠가 아이폰 관련 강의를 들으러 갔을 때 잠깐 본 적이 있는데 (초청강사로 왔더랬다.) 말하는거 보니까 어리긴 어리더라만.. 진짜 대단하다고 느껴졌다.
프로그래밍 스킬이 좀.. 본능적이다-_-)b 부러워라...


2위는!!!

폰폰.
폰폰은 최근에 나온 앱이라서 모르시는 분들은 잘 모를 듯. 소셜커머스 앱이다.
소셜커머스 붐이 일어 한창 속속들이 나오고 있는데, 앱에서 결제까지 되는 소셜 커머스는 폰폰이 처음인 것 같다.
사실 유용성으로 치자면 안타깝게 3위를 차지한 지하철 앱이 좀 더 유용하긴 한데, 지하철 앱은 막차시간 보는 용도로 사용을 하고 있기 때문에 쳐다보고 있는 시간이 좀 더 적다.
폰폰은.. 거의 매일 2~3시간에 한번씩은 쳐다보는 듯-_-;;;;
유명한 다른 소셜커머스보다 한차원 높은 프리미엄 서비스를 제공한다는 점에서도 마음에 든다. 물론 가격이 좀 세다. 20만원짜리 60%할인해도 8만원이라규;;
가끔 싼 것도 올라온다. 난 그것을 노리지..
진정 VIP 프리미엄 서비스를 누리게 해준다는 점에서! 그리고 소셜커머스 앱이라는 점에서! 굳굳!!


3위.
위에서 살포시 언급했 듯. 지하철 앱이다.
지하철 앱은 많이 나와있지만서도 나는 프리한 것으로 일단 가장 위에 뜨는 것을 다운로드 받았다.
지하철 노선도야 서울에서 꽤 오래 산 나로써는 거의 머리에 입력되어 있다.
이 앱을 사용하는 건 오로지 지하철 막차를 볼 때다!!!!
집에서 자는 날이 일주일에 반도 되지 않는 나는 막차의 기로에 서있을 때가 많기 때문에 이 시간표가 참 유용하다.ㅎ 그러나 대부분 막차를 놓치기 일쑤라능;;


4위.

큐루큐루.
요새는 N사의 에그몬 같은 비슷한 앱들이 많이 나와서 큐루큐루가 좀 밀리고 있긴 하지만 원조는 큐루큐루라고!!!
아무튼 바코드 리더기이다.
재미삼아 많이 찍어보는 편이고, 요새는 광고 등에 QR코드가 많이 사용되고 있어서 돌아다니면서 찍게 된다.
이 앱은 '이름을 외우기 힘든' 외국 책이나 와인을 기억하기 위해 바코드를 찍어 두는 용도로 많이 사용하고 있다. 흐흐..


5위.
택배!!
이 앱은 아이폰 사용 초기에 설치한 것인데, 이젠 설치할 수 없게 되었다는 소문이 있다.
개발자의 개발자 기한이 다 되었기 때문이다. (1년에 10만원정도 꾸준히 내야 유지 된다)
그래도 일단 설치한 것은 잘 사용하고 있고;; 난 이 핸드폰을 오래 못쓸거 같아서 조금 아쉽다.ㅠ (난 아이폰 5G살거야!! 4G따위 부럽지 않아!!)
아무튼 택배 조회하는 앱은 다른 것들도 많으니까;;
난 거의 모든 필요한 물품을 온라인에서 구매하는 편이라서 (아주 급하지 않는 이상은) 택배 조회가 참 유용했다.
아무리 조회를 해도 오지 않는 택배는 정말이지 패고 싶다. (ㅎㅈ이랑 ㄷㅂ)



6/7위는 생략.
플래너야 다들 자기 맘에 드는 걸로 하나씩 쓰고 있을테고..
쇼미니고객센터야.. 뭐.. -_-);

2010년 10월 14일 목요일

iphone App 사용기 - 커뮤니티 편

나는 App을 많이 사용하는 편은 아니다.
기본적인 것 몇 개만 설치하고 사용하는 쪽이다.ㅎ
가장 많이 사용하는 것은 아무래도 커뮤니티 쪽이고.ㅎ


내 아이폰에 설치되어 있는 커뮤니티 앱은 6개다.
페북, 카톡, 카카오(아지트), 미투, 네통, MSN.

남들이 의아하게 생각하는 것은 왜 트윗이 없냐인데...
난 트윗은 1년전에 만든 아이디가 공치고 있을 뿐 활동하지 않는다.
내가 이용해 본 1줄 블로그 방식의 소셜 커뮤니티 중 트윗이 제일 재미 없었다;
작년에는 한국 사용자가 별로 없긴 했지만, 요새는 또 다르겠지.. 아무튼 나는 페북을 더 선호하는 편.



1. 페이스북
간단하고 심플하게 잘 만들어져 있다.
친구 추가가 좀 힘들게 되어 있기는 하지만 잘 찾아보면 찾을 수 있다.
한 가지 아쉬운 점은 페북의 특징인 페북 앱을 사용할 수 없다는 건데.. 이건 어쩔 수 없는 것 같다. 대부분의 페북 앱은 플래시니까.


2. 카카오톡
얼마전에 개인정보취급에 관한 문제로 한바탕 홍역을 치르더니 며칠 전에는 사용 빈도 수가 높은 낮 시간에 불시 서버 점검을 하는 일이 발생했다.
내 폰에 설치되어 있는 앱 들 중 가장 많이 사용하는 만큼 이런일이 생길 때마다 욕도 가장 많이 하게 된다.
어쨌든 유용하게 쓰고 있기는 하다.
안드로이드 버전으로도 나왔기에 안드로이드 사용자와도 커뮤니케이션 할 수 있어서 매우 좋다.
하지만 아직 안돌버전은 버그가 좀 많은 듯-_-;
아무튼 카톡 만든 Lab은 존경하고 있다. 나중에 만든 사람들을 한 번 만나보고 싶은데.. 기회가 될런지는...(...)


3. 카카오아지트
카톡이 유명한 것에 비해 아지트는 별로 유명하지가 않다.
나는 아이폰을 사기 전에 PC로 아지트를 해왔기 때문에 폰을 사면서 이 앱을 깔아 둔 것이다.
뭐.. 아지트가 뭐냐고 물어본다면..
미투나 페북같은 한 줄 블로그 형태인데, 여러명이 한꺼번에 쓸 수 있다.
여러 명이 하나의 아지트에 한 줄 블로그 식의 글을 남기는 형태.
카톡과 아지트는 같은 회사인데, 이 앱의 좋은 점은 비밀번호를 걸어둘 수 있다는 점.
누군가가 내 iphone을 보는 일이 많은 사람들에게 참 유용하다.


4. 미투데이
미투도 아지트 처럼 아이폰을 사기 전에 PC로 죽 해오던 것이라서 설치해 두었다.
글을 업데이트 하는 과정에서 접히는 부분이 간혹 생기는 것 말고는 쓸만하다.
접히는 부분도 펼 수 있으니 상관없긴 하지만.. 사용할 때마다 거슬리는 점이다.
아무튼 유용하게 사용하고 있다.


5. 네이트온
모바일용 네이트온인데 이거 정말 짜증난다.
앱을 뭐 이렇게 거지같이 만들어 놨는지 계속 로그아웃 되고, 특히 나는 MSN을 이미 설치해서 사용해오다가 네이트온을 나중에 설치했더니 자꾸 비교하게 된다.
내 생각엔 움직이면서 데이타 망을 잡을 때 자연스럽게 연결이 안되고 데이타 망이 바뀌면 로그아웃이 되버리는 것 같다.
이 네통앱을 쓰다가는 성격 버릴 듯 해서 급할 때 쓰려고 설치는 해두었지만 거의 사용하지 않는다.
아마 조만간 지울지도..


6. MSN
네통에 비하면 100만배정도 좋은 앱.
그런데 한가지 아쉬운 점이 있다면 iOS의 멀티태스킹 특징을 잘 활용해 주었으면 하는 바램이 있다.
그래도 메신저인데, 앱을 실행시킬 때마다 로딩되는 건 좀... (...)
그러나 잘 사용 중.ㅎ


2010년 10월 7일 목요일

no such file to load -- guid

rails를 처음 하다보니 이런 간단한 에러에서도 삽질하게 된다.
그냥 guid가 없다는 에러이므로 설치하면 된다.

$ gem install guid



앞으로는 gem말고 plug-in으로 설치해볼 생각이다.
gem으로 설치할 경우에는 server가 바뀌면 다시 설치해야 하는 번거로움이 생기는데, plug-in으로 설치하면 알아서 같이 가져오는 것 같다.

ruby on rails에 mysql 연동시 만난 error들

그 첫 번째!!
gem install 시에 생긴 에러..

Building native extensions.  This could take a while...

ERROR:  Error installing mysql:

ERROR: Failed to build gem native extension.


/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb --with-mysql-config=/usr/local/mysql/bin/mysql_config --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib

mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h


처음에는 path문제라고 생각하고 --with-mysql-config나 --with-mysql-dir이나 --with-mysql-lib 등등의 옵션을 주면서 다시 install 해보았지만 결과는 똑같았다.
몇 시간의 삽질 끝에 알아낸 것은 library가 없어서 뿜어내는 에러라는 것.
뭔가 필요한 library가 없는거다.

그래서 mysql이 개발자 버전이 없나 하고 두리번 거렸는데, 좀 무식하지만 해결책을 찾았다.
xcode를 설치하면 된다.
xcode를 설치하면서 같이 설치되는 library들로 인해, 해결 되었다.



두 번째!!
Building native extensions.  This could take a while...
Successfully installed mysql-2.8.1
1 gem installed
Installing ri documentation for mysql-2.8.1...

No definition for next_result

No definition for field_name

No definition for field_table

No definition for field_def

No definition for field_type

No definition for field_length

No definition for field_max_length

No definition for field_flags

No definition for field_decimals

No definition for time_inspect

No definition for time_to_s

No definition for time_get_year

No definition for time_get_month

No definition for time_get_day

No definition for time_get_hour

No definition for time_get_minute

No definition for time_get_second

No definition for time_get_neg

No definition for time_get_second_part

No definition for time_set_year

No definition for time_set_month

No definition for time_set_day

No definition for time_set_hour

No definition for time_set_minute

No definition for time_set_second

No definition for time_set_neg

No definition for time_set_second_part

No definition for time_equal

No definition for error_errno

No definition for error_sqlstate
Installing RDoc documentation for mysql-2.8.1...

No definition for next_result

No definition for field_name

No definition for field_table

No definition for field_def

No definition for field_type

No definition for field_length

No definition for field_max_length

No definition for field_flags

No definition for field_decimals

No definition for time_inspect

No definition for time_to_s

No definition for time_get_year

No definition for time_get_month

No definition for time_get_day

No definition for time_get_hour

No definition for time_get_minute

No definition for time_get_second

No definition for time_get_neg

No definition for time_get_second_part

No definition for time_set_year

No definition for time_set_month

No definition for time_set_day

No definition for time_set_hour

No definition for time_set_minute

No definition for time_set_second

No definition for time_set_neg

No definition for time_set_second_part

No definition for time_equal

No definition for error_errno

No definition for error_sqlstate
아아니.. 이게 뭐야..
분명 "1 gem installed" 요러한 메세지는 뜨는거 보니까 성공적으로 설치된 것 같긴 한데, 뭔가 깨름칙하다.

그리고 이런 식으로 설치가 되면 db migration이 되질 않는다.

이 문제의 원인은 찾아내지 못했지만 해결책은 찾았다.
mysql설치할 때 ARCHFLAGS 설정을 한다!!
다음과 같이 mysql을 재설치 해보자.
$ gem uninstall mysql
$ sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
그리고나면 깔끔하게 설치가 될 것이다!!
물론 migration도 잘 될 것이고!!

rails와 mysql 연동하기

처음 rails공부를 시작하면서 제일 힘들었던 것이 바로 이 mysql연동하는 것이었다.
rails는 mysql을 설정해주지 않으면 default로 sqlite3 db를 사용한다.

어쨌거나, 시작해보자.

개발환경은 다음과 같다.
OS X 10.6.4
Rails 2.3.8
ruby 1.8
mysql 5.1.51 (os X 10.6 - x86_64)



1. 설치

우선 컴퓨터에 mysql이 설치되어 있어야 한다. (Mac에 mysql 설치하기)

$ gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
(mysql_config가 있는 경로를 적어준다)

이렇게 하여 "1 gem installed"라는 메세지가 뜨면 성공이다.
그러나 나는 무수한 수행착오를 겪었고 셀 수 없을 만큼 지웠다가 다시 깔기를 반복했다.
참고로 mysql을 지우는 명령은 다음과 같다.
$ gem uninstall mysql

gem 명령은 상황에 따라 sudo를 필요로 한다.


2. database설정

ralis를 만든 곳으로 이동하자.
그리고 database파일을 수정한다.
$ vi config/database.yml

development, test, production이 있는데 이것은 개발과 테스트와 실제 사용할 db를 따로 관리하기 위해서라고 한다.
아무튼 일단 개발을 할테니까, 가장 많이 사용하게 될 것은 development다.
development를 수정하자!
development:
adapter: mysql #사용할 database
encoding: utf8
reconnect: false
database: test_development # 실제 mysql에 생성되는 database 이름
pool: 5
username: root # mysql에 접속할 id와 password
password:
socket: /tmp/mysql.sock # 보통 mysql.sock은 tmp에 있다. (시스템에 따라..)



3. database생성

위의 설정파일에 저장한 id와 password로 mysql에 접속하여 database를 생성한다
$ mysql -uroot

mysql> create database test_development;
mysql> exit

성공 메세지가 나오면 빠져나온다.
그리고 ralis의 database를 구축한다.
$ rake db:migrate

한 줄의 명령어로 ralis에서 필요한 table이 방금 생성한 db에 자동으로 생성된다.
만약 migration이 안된다면 무언가 db설정이 잘못된 것이므로 과정을 주의깊게 살펴보길 바란다.



위의 과정 중에 에러가 난다면 "이쪽"으로 이동!!

2010년 9월 10일 금요일

There is no /dev/dsp !!!!


sound card 테스트를 좀 하려고 하는데 /dev/dsp가 없는거다.
게다가 /dev/audio도 없는거다!!
뭐야 이게. ㅠ_ㅠ

우선, mac에서는 이러한 것들을 다 막아놓은 것 같다.
(사실 처음에 mac에서 시도 했더랬다. 그것도 unix니까.)
워낙 애플이 DB와 Device에 대해서 단단히 닫힌 마인드로 보여주지 않고 있다는 것은 알고 있었던 사실, 그래서 fedora13이 설치되어 있는 컴퓨터에서 다시 시도 했는데, /dev/dsp가 없었다.

그래서 만들었다. = _=);

$ modprobe snd-pcm-oss

이 명령어를 수행하면
/dev/audio
/dev/dsp
/dev/mixer
... 가 생긴다. -_-)b

2010년 8월 17일 화요일

Mac OS에 Mysql 설치


우선 Mysql을 다운로드 한다. (다운로드하기)
자신의 컴퓨터에 설치된 OS와 맞는 버전으로 다운로드한다.
참고로 나는 Mac OS X ver. 10.6 (32-bit)로 받았고, DMG 파일로 받았다.

다운로드 후 압축을 풀면 4개의 파일이 들어있는데, Readme는 그냥 읽어보면 되고,
나머지 3개의 파일을 설치한다.
우선, mysql을 설치하고, 그 다음에 MySQLStartupItem을 설치하고 MySQL.prefPane 파일을 가장 마지막에 설치하자.

그러면 server의 상태를 볼 수 있을 것이다. (구동되고 있다면 running이라 뜬다)
만약 보이지 않는다면 시스템 환경설정에 들어가면 'mysql'이 새로이 생성되어 있을 것이다. 이것을 클릭한다.


MySQL을 쉽게 사용하기 위해서 Workbench도 설치해 주었다. (다운로드하기)
위의 과정에서 서버가 구동되는 것을 보았다면, 기본 default값으로도 잘 실행이 될 것이다.

2010년 8월 15일 일요일

ralis로 간단한 WebPage 만들기


Ruby on Rails를 설치한 이후, 간단한 web page를 만들어 보았다.
그냥 'Hello World!'를 찍어내는 web page이다.


우선 이 web을 관리할 디렉토리를 하나 만들고 그 안에서 작업을 수행토록 한다.

$ mkdir Web
$ cd Web
$ rails testBlog

rails명령에 의해 온갖 것들이 생성이 된다.
화면에 생성되는 파일들이 죽 써지게 되는데, 이것이 끝나면 생성된 폴더를 확인해보자.
ls 명령어를 수행해보면 testBlog라는 폴더가 생성된 것이 보일 것이다.

이 디렉토리로 들어가보면 여러가지가 보일 것이다.
여기서 web page를 하나 생성해보자.
page의 이름은 test로 하겠다.

$ ./script/generate controller test

그러면 또 무언가 파일들이 생성이 된다.
생성된 파일 중 하나를 수정해 보자.

$ vi ./app/controllers/test_controller.rb

위의 파일을 열어 class 내부에 다음과 같은 부분을 새로 넣는다.
def index
render :text => "Hello, World!"
end

저장하고 빠져나와서 web page를 실제로 보자.
web page를 브라우저에서 보기 위해서는 server가 구동되고 있어야 한다.
손쉽게 local에서 server를 구동시킬 수 있다.

$ ./script/server
=> Booting Mongrel
=> Rails 2.3.8 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

이런 식으로 server가 구동되는데,
safari 등의 브라우저를 열어서 http://0.0.0.0:3000 이라고 주소를 적어주면 환영 메세지가 나오게 되어있다.

방금 만든 page로 가기 위해서는 주소 창에 http://0.0.0.0:3000/test 라고 주소를 적어주면 된다.
화면에  Hello, World! 라는 글자가 보이면 성공!!



가끔 Routing Error가 날 수 있다.
No route matches "/test" with {:method=>:get}

이 에러를 수정하기 위해서는 routes.rb파일을 고쳐준다.

$ vi ./config/routes.rb

파일을 열어서 다음을 추가한다.

map.connect '*url', :action => 'show_page'

구글님이 알려줘서 그렇게 추가하기는 했지만 무슨 뜻인지는 좀 더 공부를 해봐야 겠다.


Mac OS에 ruby on rails 설치하기



사용중인 환경은 snow leopard (10.5 업그레이드 후 10.6)임을 밝혀두는 바입니다.



Ruby on Rails 설치
$ gem install rails
$ gem update rails
10.5 ver 이후로는 ruby on rails가 패키지에 포함이 되어있다는 것을 어디선가 보았다.
그래서 위와 같은 명령어로 설치를 해주면 OK!
설치 후에는 /usr/bin/에서 ruby를 확인할 수 있다.

RubyGem을 위 링크에서 다운로드 한 후, 압축을 해제하고 해당 디렉토리 안으로 들어가서 다음의 명령어를 실행시킨다.
$ sudo /usr/bin/ruby setup.rb

추가 설치 (옵션사항)
$ sudo gem install mongrel
$ sudo gem install capistrano
$ sudo gem install RedCloth termios rspec sake
Mac에는 기본적으로 sqlite3 database가 설치되어 있다. mysql을 사용하고 싶다면 따로 설치해야 한다.



덧, 참고 사이트

2010년 8월 10일 화요일

iphone sqlite table_name확인

보통의 sqlite에서는 table들의 이름을 보고 싶으면 다음과 같은 명령을 사용하면 table이름을 보여준다.
sql> SHOW TABLES;

이것을 select문을 이용한 query로 날리기 위해서는 다음과 같이 사용한다.
SELECT table_name FROM all_tables;

그러나 iphone에서 sqlite를 사용해서 이러한 query를 날리면 전혀 명령이 듣지 않는데,
그것은 iphone에 저장된 db의 master table의 이름이 보통 사용하는 것과는 다르기 때문임을 찾았다.
하여, 다음과 같이 query문을 작성하면 된다.
SELECT name FROM sqlite_master;

이것은 보통 상식이겠지만서도, 나같은 iphone db를 처음 다뤄보는 경우에는 꽤나 삽질을 할 것으로 우려된다.
관리 테이블 이름이 sqlite_master라고 저장되어 있을 줄이야;;


2010년 7월 29일 목요일

svn+ssh:// 자동 로그인


subversion을 ssh로 세팅해놨더니만 정말 불편한게..
뭘 할 때마다 비밀번호를 3~4번씩 입력을 해야된다는 거다.
아파치 서버로 세팅해놨을 때는
비밀번호 저장하는 체크박스가 하나 있어서 그걸 체크해 두면 알아서 다 됐는데 말이다. ㄱ-);
이게 너무 귀찮아서 자동로그인을 하려고 좀 알아봤는데..
이걸로 무려 이틀이 넘게 삽질을 했다.  아우 짜증나.. = _=);


아무튼 고고!


1. SSH 자동 로그인 하기

우선 클라이언트 쪽에서 Key를 생성해 보자. (서버 쪽에서 해도 상관없다.)
나는 cygwin을 사용하고 있기 때문에 리눅스 명령어 쯤이야 OK.
$ ssh-keygen -t rsa
$ ls
ssh-keygen 명령을 실행시키면 몇 가지를 물어보는데 첫 번째는 키를 생성할 디폴트 디렉토리 이다. 나중에 이쪽으로 가서 ls로 확인을 하면된다.
두 번째는 키의 password이다. 그냥 엔터를 내리 치면 나중에 ssh 자동접속 할 때 암호를 안물어 보게 된다.
세 번째는 당연히 password 확인이므로 아까 입력한 것과 같은 값을 입력하면 된다.

ssh-keygen 명령으로 rsa 키를 생성하고 ls를 실행시켜보면,
id_rsa와 id_rsa.pub가 생성된 것을 볼 수 있다.
id_rsa.pub는 공개키로 서버가 가지고 있어야 할 것이고, id_rsa는 클라이언트가 가지고 있으면 된다.

자, 그럼 공개키를 서버로 보내주자.
$ scp -p id_rsa.pub username@서버주소:.ssh/authorized_keys
여기서 username은 자신의 계정이고, 서버주소는 ssh로 접속할 서버의 주소이다.
ip주소를 써도 되고.. 그건 서버 나름.

위와 같이 쓰고 엔터를 치면, username의 홈디렉토리에 있는 .ssh폴더 아래 authorized_keys 파일로 복사가 된다.
여기서 파일이름은 꼭 authorized_keys로 해주어야 하는데, 이것은 config파일에 그렇게 명시가 되어 있기 때문이다.
이걸 구지구지 꼭 욕심내서 이름을 내맘대로 하고 싶다고 하면 /etc/ssh/sshd_config 파일을 고치면 된다. (root 계정만 접근 가능하다)

만약 .ssh 폴더가 홈디렉토리내에 없으면 에러가 날 수 있다.
ssh 비밀번호를 물어보게 되는데 일단은 서버에서 사용하는 비밀번호를 입력하여 파일을 보낸다.

이제 클라이언트에서 할 일은 다 끝났다. 접속해보자.
$ ssh username@서버주소
아까 key를 생성할 때 비밀번호를 입력했다면 그 비밀번호를 입력하라고 할 것이고,
그냥 enter만 연신 눌렀다면 바로 그냥 접속이 된다.

만약 아까 key를 생성할 때 비밀번호를 입력했음에도 불구하고 비밀번호를 입력하기 귀찮다면,
다음과 같은 명령어를 수행한다.
$ eval $(ssh-agent)
$ ssh-add
첫 번째 줄 명령어를 수행하면 agent pid 어쩌고 라는 글이 뜬다.
그 때 add 명령어를 수행해주면 비밀번호를 입력하지 않고도 무사히 접속 가능하다.



2. 키 저장하기

만들어 둔 키를 저장해보자.
그러기 위해서는 puttygen파일이 있어야 한다. (다운로드하러가기)
load를 클릭하여 위에서 만든 key를 찾아 load한다.
이 때 pub key를 load하는 것이 아니라 'id_rsa' 파일을 load한다.

load를 하면 key가 뭐라고 뭐라고 뜨는데, 이 때 "Save private key"를 클릭하여 그 키를 적당한 곳에 저장한다. 이름도 지정해주고 확장자는 'ppk'이다.



3. Subversion에서도 자동로그인!!

우선 subversion으로 공유할 폴더를 하나 만든다.
나는 D:\test라고 만들었다. (이건 뭐 상관없다..-_-; 아무의미도 없고;;)
폴더를 만들었으면 폴더에 마우스를 갖다대고 우클릭!!

TortoiseSVN > Setting > Network
하단에 SSH client: 부분에다가 다음과 같이 입력한다.
"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" -ssh -l username -i"C:\cygwin\home\.ssh\svnTest.ppk" -P 22

여기서 첫 번째 경로는 TortoisePlink.exe의 경로이고 두 번째 경로는 저장한 키(.ppk)가 있는 경로이다.
그리고 username에는 ssh에 로그인할 때 사용할 이름을 입력한다.
마지막 숫자는 ssh의 port번호인데 기본적으로는 22번을 사용한다.

이렇게 해두고 svn에 update나 commit을 위해 접근하면 key에서 사용한 비밀번호를 물어보게 된다.
물론 비밀번호를 지정하지 않았다면 묻지 않겠지만,
비밀번호를 입력했다면 묻는것이 당연하다.



4. pageant 사용

위의 과정에서 비밀번호를 매번 입력하지 않게 하기 위해서 pageant라는 프로그램을 사용한다.
pageant 프로그램도 putty 다운로드 사이트에서 받을 수 있다. (다운로드받으러가기)
다운받아 실행시키면 다음과 같은 창이 뜬다.
여기서 AddKey를 눌러 아까 ppk로 저장해 두었던 파일을 불러온다.
그러면 key가 등록이 된다.
여러 개를 등록할 수도 있다.

이 프로그램을 사용하면, 처음에 컴퓨터를 켤 때만 비밀번호를 입력한 후 그 이후로는 자동으로 로그인 되어 사용할 수 있다.
죄측 하단에 트레이 아이콘으로 계속 살아있다.





덧,

2010년 7월 21일 수요일

didReceiveLocalNotification

didReceiveLocalNotification는 iphone delegate method들 중 하나이다.

그리고, iOS4에서 새롭게 추가된 녀석이다.



- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notif

{

// to do

}



이 함수는 LocalNotification을 받아 동작하게 되었을 때 호출된다.


다들 알고 있는 사실이겠지만 iOS4는 멀티태스킹을 지원하고 있는데,

background상태에서 돌고 있는 앱이 LocalNotification에 의해 깨어나게 되면 이 함수가 호출된다.


LocalNotification을 받았을 때 처리해주어야 할 일을 넣어 수행하게 한다.

2010년 6월 30일 수요일

배경 이미지 넣기


배경 이미지를 넣는 방법.
다음과 같은 소스 코드를 추가한다.

UIImage *bgImage = [UIImage imageNamed:@"bg.jpg"];
//파일을 하나 Resources폴더 아래 추가한 후 파일 명으로 image를 불러온다.
UIImageView *bgImageView = [[UIImageView alloc] initWithImage:bgImage];
//위에 불러온 이미지를 imageView에 할당한다
bgImageView.frame = [[UIScreen mainScreen]bounds];
//frame 크기 설정
bgImageView.contentMode = UIViewContentModeScaleAspectFit;
//화면에 꽉차게 (여러가지 모드가 있다)
bgImageView.alpha = 0.55;
//투명도 (0~1)
[self.view addSubview:bgImageView];
[self.view sendSubviewToBack:bgImageView];
[bgImageView release];

IndicatorView


IndicatorView를 생성하는 코드는 다음과 같다.

UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
//UIActivityIndicatorView는 몇 가지 스타일을 제공하는데,
//UIActivityIndicatorViewStyleWhiteLarge는 어두운 배경에서만 사용할 수 있다.
//가장 많이 사용하는 것은,
//UIActivityIndicatorViewStyleWhite와 UIActivityIndicatorViewStyleGrey이다.


indicator.center = self.view.center;
//화면의 중앙에 나타난다
//CGPointMake를 이용하여 원하는 지점을 찍어주어도 된다.


[self.view addSubview:indicator];
[indicator startAnimating]; //indicator가 빙글빙글 돌아간다.
[indicator release];

2010년 6월 29일 화요일

iphone 진동 사용 함수


iphone의 진동을 사용하기 위해서는 다음 함수를 추가한다.

AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);



아이팟터치에 올릴 경우 작동하지 않는다.

2010년 6월 25일 금요일

NT_STATUS_ACCESS_DENIED listing \*


NT_STATUS_ACCESS_DENIED listing \* !!!!!!

samba서버를 설정하고 smbclient 명령을 이용해서 test를 하는데 접속을 잘 되지만 폴더에 접근을 하려면 요 따위의 에러가 뜨는거다!!
windows에서 실행창을 띄워서 접근을 해봐도 마찬가지였다.
사용자 id와 passwd를 물어보고 접속은 되비만 폴더에 접근을 하면,
"액세스할 수 없습니다. 이 네트워크 리소스를 사용할 권한이 없는 것 같습니다. 이 서버의 관리자에게 문의하여 액세스 권한이 있는지 확인하십시오." 라는 에러가 뜨는거다!! 팝업으로!! 기분나쁘게!!!!!!!-_-)

정말 삽질 많이했다-_-)
samba를 지웠다가 설치를 해보고, 사용자 계정을 날렸다가 다시 만들고, smb.conf파일을 요리조리 건드려보고..
그러나 이러한 에러가 나는 이유는 빌어먹을SELINUX 때문이다!!!!

이걸 사용안하겠다고 설정만 하면 만사 OK이다.
다음 파일을 고치자.

$ vi /etc/sysconfig/selinux
SELINUX=disable

이렇게 하고 samba서버를 다시 시작하면 끝!
아.. 열받았었다(-_- );;
그래도 smb.conf 파일은 엄청나게 공부해서, 속속들이 알아냈으니 그걸로 만족해야겠다;




덧, 이거 갑자기 어떻게 하다보니까 포스팅 글씨체가 바뀌었는데, 맘에든다-_-)
찾아보니까.. 이건 Verdana체다...;;

2010년 6월 24일 목요일

SubVersion 설정



우선, subversion의 server는 llinux fedora12이며, client는 windows XP임을 밝혀두는 바이다.




1. Subversion 설치


처음에 subversion을 설치할 때 삽질을 엄청나게 했는데, 설치는 매우 간단하다.
rpm 패키지로 배포하고 있으므로 간단하게 yum명령어를 사용하여 설치할 수 있다.

$ yum install subversion


설치를 하고 나면 앞으로 SVN 파일들을 관리할 폴더를 하나 만들어 주고, 그 안에 SVN을 설정한다.
나는 home 디렉토리 밑에 svn을 하나 만들고 svn이 제대로 작동하는지 알아보기 위해서 test 디렉토리를 하나 만들어 svn저장소로 사용하고 세팅 되었는지 확인했다.

$ cd /home
$ mkdir svn
$ cd svn
$ svnadmin create test

svnadmin 명령어를 사용하면 svn저장소 디렉토리를 생성한다.
파일시스템 타입을 지정해주고 싶다면 다음과 같이 사용하여도 된다.

$ svnadmin create --fs-type fsfs test (파일시스템)
$ svnadmin create --fs-type bdb test (버클리DB)


test 디렉토리 안에 가보면 svn저장소를 위한 파일들이 생성되어 있음을 볼 수 있다.
이제, client에서 svn저장소에 접속할 수 있도록 설정해주어야 하는 작업이 남아있는데, 이 작업은 3가지 방법으로 할 수 있다.
첫 번째는 svnserve ID로 인증받는 법, 두 번째는 ssh를 사용하는 것, 세 번째는 apache를 연동하여 사용하는 법이다.

나는 첫 번째, 두 번째 방법으로만 해보았는데, apache를 연동하는 방법도 많이 쓰이고 있는 것 같더라.
근데 apache를 세팅하려면 뭘 또 많이 깔고 삽질을 해야되서 귀찮아서 이 방법은 안 써봤다;;;




2-1. svnserve ID 인증 방법으로 설정하기


우선, 첫 번째 방법부터 소개하도록 하겠다.
svnserve ID로 인증 받는 것은 아무래도 최신 subversion에서만 가능한 것 같다.
근데 이 방법은 문제가 있는데, passwd 파일이 전혀 암호화 되어 있지 않다.
그래서 passwd파일에 접근 권한만 있다면 누구든지 svn저장소 사용자들의 id와 password를 알 수 있다.
혼자 쓰는 것이 아니면 별로 권해주고 싶은 방법은 아니다.

위에서 svn저장소로 생성한 디렉토리에 가보면 svnserve의 설정 파일이 존재한다.
conf 디렉토리 밑에 svnserve.conf 라는 파일이다.
(위에서와 같이 생성한 경우, 절대 경로는 "/home/svn/test/conf/svnserve.conf" 이다)
처음 이 파일은 죄다 주석처리가 되어있기 때문에 아무런 설정도 되어있지 않은 상태이다.
이 파일의 "[general]"부분에서 몇 군데 주석을 풀고 설정을 할 것이다.

[general]

... 중략 ...

anon-access = none //아무나 접근할 수 없게 함
auth-access = write //인증된 사용자에게만 쓰기 권한을 줌

...

password-db = passwd

....

realm = My First Repository

설정을 했으면 저장하고 나와서 같은 디렉토리내에 있는 passwd 파일을 열어서 편집한다.
$ vi passwd

test = 1111
이렇게 써주면 id는 test고, password는 1111이라는 뜻인데, 전혀 암호화 되어 있지 않다.

다 되었으면 저장하고 나와서 테스트를 한번 해보자.

$ svn checkout svn://10.0.0.1/test test

10.0.0.1은 pc의 IP주소이다.

id와 password는 위에서 passwd 파일에 저장했던 것을 사용한다.
처음 테스트를 할 때, "Store password unencrypted (yes/no)?" 이런 문구가 뜰지도 모른다.
물론 yes 또는 no를 입력하면 되는데,
yes를 치든, no를 치든 계속 다시 물어보는 경우에는 한국어로 "예"라고 치면 넘어간다.
(진짜 황당했다;;)
"checked out revision 0" 라고 뜨면 설정 완료.




2-2. SSH를 이용한 방법으로 설정하기


이 두 번째 방법을 사용하기 위해서는 ssh가 설치되어 있어야 한다.
ssh가 구동되고 있어야 사용할 수 있다.

아무튼 이 방법은 어떻게 보면 첫 번째 방법보다 더 쉬울 수 있다.
위에서 설명한 방법은 사용자 id와 passwd를 일일이 적어주어야 하는 번거로움이 있었지만, 이 방법은 이미 linux pc 상의 사용자들을 추가만 해주면 된다.

subversion의 config파일에 사용자만 추가해 주면 되는데, 이 파일은 홈디렉토리에 있다.

$ cd
$ cd .subversion
$ vi config

이 파일도 많은 설정을 해두고 있는데 그 중에서 'tunnels'라는 부분을 찾아서 기존에 있던 linux 사용자들의 이름을 추가해 주면 된다.

[tunnels]
ssh = ssh -l test

저장하고 빠져나와서 테스트를 한 번 해보자.

$ svn checkout svn+ssh://10.0.0.1/home/svn/test

password는 linux pc에서 사용하는 비밀번호를 사용하면 된다.
그럼 위에서 했던 것처럼 체크아웃 된 리비전을 보여준다.

이 때 주의해야 할 점은 /home/svn/의 경로까지 다 써주어야 한다는 점이다.
위에서 사용한 방법은 /home/svn/하위의 상대 경로만 써주어도 접근이 가능하지만, ssh를 이용한 방법은 절대 경로를 통해 접근한다.

만약 원하는 사용자로 로그인하여 들어가고 싶으면 다음과 같이 사용한다.

$ svn checkout svn+ssh://test@10.0.0.1/home/svn/test




3. client에서 접속하기


windows client에서 설정을 끝낸 subversion server에 접근을 해보도록 하겠다.
windows에는 subversion이 설치되어 있을 것이라고 생각하고 진행한다. (tortoiseSVN 다운로드)


- svn저장소로 쓸 폴더를 아무곳에나 만든다.
(아래의 이미지에서 보면 svn저장소로 쓸 폴더를 D:\아래 test라는 이름으로 만들었다.)
- 새 폴더를 만들었으면, 새 폴더 위에서 마우스 오른쪽 버튼을 클릭한다.
(이 때 만약 svn관련된 메뉴가 없다면, subversion 설치가 안된 것이거나 잘못 된 것이다.)
- SVN checkout을 선택하면 다음과 같은 창이 나타난다.
- URL of repository: 란에 아까 test할 때 넣었던 경로를 적는다.
첫 번째 방법을 사용한다면 "svn://10.0.0.1/test" 라고 입력하고
두 번째 방법을 사용한다면 "svn+ssh://test@10.0.0.1/home/svn/test"라고 입력한다.

- Checkout Directory 란은 svn저장소로 쓸 폴더를 말한다.

- OK버튼을 누른다.
(password를 입력하고 revision이 뜬다면 OK!!)




덧, KLDP wiki에 subversion-HOWTO 문서가 있는데 굉장히 잘 정리가 되어있다.
다만 너무 길어서 다 보기는 힘들고.. 때때로 찾아보면 좋을 것 같다.
나도 이 문서를 많이 참고 했다. 보러가기