# wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz # tar -zxvf memcached-1.4.13.tar.gz # cd memcached-1.4.13 # ./configure --prefix=/usr/local/memcached # make # make install
obtainpid() { pidstr=`pgrep $prog` pidcount=`awk -v name="$pidstr" 'BEGIN{split(name,a," "); print length(a)}'` if [ ! -r "$pidfile" ] && [ $pidcount -ge 2 ]; then pid=`awk -v name="$pidstr" 'BEGIN{split(name,a," "); print a[1]}'` echo $prog is already running and it was not started by the init script. fi }
stop() { echo -n $"Shutting down $desc ($prog): " if [ -r "$pidfile" ]; then pid=`cat $pidfile` kill -s 3 $pid RETVAL=$? else RETVAL=1 fi [ $RETVAL -eq 0 ] && success || failure echo if [ $RETVAL -eq 0 ]; then rm -f /var/lock/subsys/$prog rm -f $pidfile fi return $RETVAL }
restart() { stop start }
forcestop() { echo -n $"Shutting down $desc ($prog): "
kill -s 3 $pid RETVAL=$? [ $RETVAL -eq 0 ] && success || failure echo if [ $RETVAL -eq 0 ]; then rm -f /var/lock/subsys/$prog rm -f $pidfile fi
return $RETVAL }
status() { if [ -r "$pidfile" ]; then pid=`cat $pidfile` fi if [ $pid ]; then echo "$prog (pid $pid) is running..." else echo "$prog is stopped" fi }
여기서 listenip는 로컬에서만 쓸 경우에는 127.0.0.1로 하시고, 다른 IP에서 접근이 필요한 경우에는 현재 호스트의 ip를 쓰시면 됩니다.
서비스가 잘 되는지 실행을 해 봅니다.
# service memcached start
성공 메시지가 뜨면, 정상적으로 연결이 되는지 확인합니다.
telnet 명력으로 아래 아래와 같이 실행하시고, stats하고 엔터를 누르면 구동 상태가 나옵니다.
혹시 telnet명령어가 없으면 yum install -y telnet 으로 설치해 주세요.
# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. stats STAT pid 6172 STAT uptime 9298 STAT time 1333340313 STAT version 1.4.13 STAT libevent 1.4.13-stable STAT pointer_size 64 STAT rusage_user 0.000000 STAT rusage_system 0.003999 STAT curr_connections 5 STAT total_connections 9 STAT connection_structures 6 STAT reserved_fds 20 STAT cmd_get 0 STAT cmd_set 0 STAT cmd_flush 0 STAT cmd_touch 0 STAT get_hits 0 STAT get_misses 0 STAT delete_misses 0 STAT delete_hits 0 STAT incr_misses 0 STAT incr_hits 0 STAT decr_misses 0 STAT decr_hits 0 STAT cas_misses 0 STAT cas_hits 0 STAT cas_badval 0 STAT touch_hits 0 STAT touch_misses 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 48 STAT bytes_written 2063 STAT limit_maxbytes 2147483648 STAT accepting_conns 1 STAT listen_disabled_num 0 STAT threads 4 STAT conn_yields 0 STAT hash_power_level 16 STAT hash_bytes 524288 STAT hash_is_expanding 0 STAT expired_unfetched 0 STAT evicted_unfetched 0 STAT bytes 0 STAT curr_items 0 STAT total_items 0 STAT evictions 0 STAT reclaimed 0 END quit Connection closed by foreign host.
상태가 확인 되었으면 quit로 종료 합니다.
정상적으로 설치가 되었으면 서비스에 등록을 합니다.
# chkconfig --add memcached
이렇게 해서 서비스에 등록해 줍니다. 마지막으로 서비스 등록 확인은 ntsysv 명령으로 하시면 됩니다.
리눅스 시스템 사이에서 백업을 해야 할일이 생겨서 이것저것 찾아 보다가..
rsync를 사용하기로 했습니다.
우선 ssh를 통해서 rsync 백업을 할려고 하면, password를 묻습니다.
한번씩 할 때는 패스워드를 치면 상관없지만, crontab을 사용해서 주기적으로 할려고 하면 문제가 발생합니다.
해결하는 방법을 이것저것 찾았는데 2가지 정도가 나오네요.
첫번째는 ssh-keygen을 통해서 패스워드를 묻지 않게 하는 방법 입니다.
# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): <ENTER>
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again: <ENTER>
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
58:bd:ef:fd:3b:62:79:2e:ea:de:c4:73:2d:7d:11:2b root@web-tl
The key's randomart image is:
+--[ DSA 1024]----+
| |
| . |
| . . . |
| o . o|
| . S . E o |
| .. ..o|
| .+o.+|
| .o*o+.|
| o++.*++|
+-----------------+
# cat ~/.ssh/id_dsa.pub | ssh [원격ID]@[원격HOST] "cat >> .ssh/authorized_keys"
password: 암호입력<ENTER>
# _
안드로이드를 개발 할려고 하면, 에뮬레이터의 속도가 정말 절망적입니다.
아이폰 시뮬레이터는 정말 쾌적한 환경이라는 생각이 들죠..
이렇게 느린 이유는 안드로이드 리얼 에뮬레이터에서 돌아가는게 아니라서 그럽습니다.
아이폰 시뮬레이터는 같은 x86 호스트에서 돌아가고 있습니다. 그래서 빠르게 작동을 하죠. 하지만, 안드로이드 에뮬레이터는 x86프로세스 위에서 ARM processor를 에뮬레이터를 하고 있습니다. 이러면서 오버헤드가 생겨서 겁나게 느린겁니다.
하지만, 개발할때는 ARM processor의 에뮬레이터가 꼭 필요 한게 아니죠. 정상적으로 어플리케이션 동작만 하면 땡큐 한거죠.
Android-x86
다행히 안드로이드 OS를 x86 CPU에 포팅한 오픈소스 프로젝트가 있습니다.
error: Failed dependencies:
apr >= 1.2.7 is needed by subversion-1.7.2-1229026.x86_64
apr-util >= 1.2.7 is needed by subversion-1.7.2-1229026.x86_64
이런 에러가 발생하면 아래꺼를 설치합니다.
# sudo yum install apr apr-util
그리고
error: Failed dependencies:
libpq.so.5()(64bit) is needed by subversion-1.7.2-1229026.x86_64
이런 에러가 발생하면 아래꺼를 설치 하시면 됩니다.
sudo yum install postgresql
설치가 완료 되면, 버전을 확인해 보세요~
# svn --version
svn, version 1.7.2 (r1207936)
compiled Jan 13 2012, 15:15:54
Copyright (C) 2011 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
- handles 'http' scheme
- handles 'https' scheme
안드로이드 앱을 짜다 보면, 미디어의 불륨을 조정해야 할 때가 있습니다.
그런데 불륨 조정을 누르면 당황스럽게 벨소리 볼륨이 조정이 됩니다.
그걸 다른걸로 조정하고 싶을 경우에는 아래와 같이 onCreate에 setVolumeControlStream을 넣어 주시면 됩니다.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setVolumeControlStream(AudioManager.STREAM_MUSIC); // 하드웨어 볼륨이 미디어 볼륨을 조절
}
홈페이지에 가서 다운로드 받고 jar 파일을 더블클릭해서 설치 하시면 됩니다.
어플리케이션 > Unicode Rewriter > bin > UnicodeRewriter.jar
를 실행하시면 스샷과 같은 화면이 뜨고,
Browse 버튼을 누르고, 바꾸실 mp3 파일이나 폴더를 선택하고 Convert를 누르면 끝입니다.
전 귀찮아서 mp3가 있는 폴더를 선택하고 통재로 convert를 눌러서 변경합니다.
OSX의 기본 터미널이 조금 아쉬워서 검색을 해 봤더니.. 바로 나오네요. iterm2
무료에 오픈소스 입니다.
한글 지원도 문제 없고, 무엇보다.. 마음에 드는건 화면 분할을 지원 한다는 겁니다.
쉘 코딩하다가.. 실행 할려고 하면 창전환이나 탭 전환을 했었는데..
이 터미널이면 그게 바로 해결 되네요..
기본 터미널이 부실하고 뭔가 아쉽고, 느리다고 생각하시던 분은 바로 바꿔 보세요.
화면 분할 방법
좌우 분할은 command+D, 상하 분할은 shift+command+D 입니다.
그리고 분할한 다음에 이동은 alt+command+방향키 입니다.
더보기
그리고, 윈도우 cmd.exe를 대체할 콘솔이 없나 해서 찾아 봤더니.. console2라는 오픈소스 어플이 있네요..
하지만, 한글 출력에 약간에 문제가 있습니다.
이건 구글 검색을 약간해 보니.. 해결 방법이 나오네요. onjo님의 블로그에 보시면, Console2 (2.00.145)을 보면 한글이 잘 해결된 상태로 업로드 되어 있습니다.
그리고 터미널 모드도 지원해서 자동화 해서 캡쳐도 가능 합니다.
파이썬을 이용해서, NSLog로 나오는 메시지를 봐서 캡쳐를 받는 형식으로 자동으로 캡쳐 형식입니다.
순간적으로 나오는 화면이나 동작 중간이라서 캡쳐 받기 곤란한 화면이 있을 경우에는 이걸 이용하면 정말 좋겠네요.
여기서 준비물이 있는데, .plist 파일을 수정해 주기 위해서 xcode를 받아서 설치해 주시거나, Property List Editor를 받아서 설치해 주시면 됩니다.
우선 ~/Library 폴더가 보이지 않네요.
터미널을 띄워서 ~/Library폴더를 먼저 보이게 해 줘야 합니다.
응용프로그램 > 유틸리티 > 터미널 을 선택해서 터미널을 띄워 주시고 아래와 같이 입력해 줍니다.
chflags nohidden ~/Library/
이렇게 입력하고 나면 보이지 않던 라이브러리 폴더가 보입니다.
여기서 ~/Library/Preferences/com.apple.symbolichotkeys.plist 파일을 찾아서 열어 줍니다. 60 > value > parameters > Item 2의 값을 1048576에서 131072로 변경합니다..
61 > value > parameters > item 2의 값을 1572864에서 131072로 변경합니다. (metapho님 좋은 팁 감사합니다.)
어쩌다가 보니.. 지금 쓰고 있는 PC가 회사와 집에서 옮겨 가면서 쓰고 있습니다.
거기다가, mac과 윈도우를 혼용해서 쓰고 있는 상황이라서.
요즘 요긴하게 쓰고 있는게 바로 클라우드 서비스 입니다.
덕분에 USB나 하드로 파일 옮기는 일이 없어지고,
여러 컴퓨터와 모바일 기기에서 파일 보는게 자유로워 졌죠.
그 중에서 용량을 많이 주는 Daum 클라우드를 주로 쓰고 있었습니다.
하지만, 지금 제 컴퓨터에 깔려있는 클라우드 서비스만 해도..
Daum 클라우드, uCloud, Naver N드라이버, DropBox -_-;;
이렇게 4개나 깔려 있네요..
정리 좀 해야 하는데,
정리 할려는 찰나에 tistory에서 대박 이벤트를 진행하네요.
@tistory.com 이메일을 만들면, 이메일로 클라우드 해서 200기가.. 각각 100기가씩 준답니다.
이번 이벤트 당첨되면 100기가가 된다면, 다음클라우드 하나로 통일해 버릴렵니다..
1만명이나 준다는데.. 설마 저두 끼겠죠~
제발~~~
ShareKit 은 iOS에서 이미지, 텍스트, URL, 파일을 공유해 주는 오픈소스 프레임워크 입니다.
공유 할 수 있는 곳도 다양합니다.
Delicious, Email, Facebook, Google Reader, Instapaper, Pinboard, Read It Later, Tumblr, Twitter
이 많은 곳을 이 ShareKit 하나로 다 사용할 수 있습니다.
아래는 2가지 인데.. 한개는 사전에서 음성을 받아 오는 거고, 2번째는 구글 번역에서 받아 옵니다.
둘다 음성 파일의 파일 목록이 필요 합니다.
구글 사전에서 음성 파일 받아 오기.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import string
import os
import shutil
import codecs
if len(sys.argv) is 1:
print >> sys.stderr, '읽을 파일명을 입력해 주세요'
print ''
print '* 파일의 내용'
print '\t[원본 파일명]
print ''
print '* 사용예'
print '\t./getWordSound.py [목록 파일 이름]'
exit(1)
try:
f = codecs.open(sys.argv[1], "r", "utf-8") # 파일 오픈
except IOError:
print >> sys.stderr, '그런 파일이 없거나, 열기 에러입니다.'
exit(1)
topath = "mp3"
if os.path.exists(topath) == False:
os.mkdir(topath, 0755)
for line in f.readlines():
word = line.strip('\n\r').strip();
url = "http://www.gstatic.com/dictionary/static/sounds/de/0/"+word+".mp3"
print url
os.system("wget -P "+topath+" "+url)
구글 번역에서 TTS 음성 받아 오기
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import string
import os
import shutil
import codecs
if len(sys.argv) is 1:
print >> sys.stderr, '읽을 파일명을 입력해 주세요'
print ''
print '* 파일의 내용'
print '\t[음성 파일 스크립트]'
print ''
print '* 사용예'
print '\t'+sys.argv[0]+' [목록 파일 이름]'
exit(1)
try:
f = codecs.open(sys.argv[1], "r", "utf-8") # 파일 오픈
except IOError:
print >> sys.stderr, '그런 파일이 없거나, 열기 에러입니다.'
exit(1)
topath = "mp3"
if os.path.exists(topath) == False:
os.mkdir(topath, 0755)
os.chdir(topath)
for line in f.readlines():
script = line.strip()
if script.startswith(u'\ufeff'):
script = script[1:]
url = "\"http://translate.google.com/translate_tts?tl=en&q="+script+"\""
output = "\""+script+".mp3\""
getCommand = "wget -U firefox "+url+" -O "+output
print getCommand
os.system(getCommand)
그런데 이렇게 받은 음성의 라이센스를 아시는 분 있으신가요?
구글에 문의를 해 봤는데.. 함흥차사네요..
내 영어가 너무 구린가? ㅜ.ㅜ