2013-10-30

Pd Object, vmetro2

Description
Pd Object, [vmetro2] is variable Tempo Metronome.

Introduction Video

Pd Patch
Screen Shot 2013 10 30 at 11 34 03 AM

Help
Screen Shot 2013 10 30 at 11 42 40 AM

Download
https://drive.google.com/folderview?id=0B42bn7ncw918emk3TnRJVENwWUk&usp=docslist_api#

Thanks to Orm Finnendahl

Pd Object, adsr~

Description

Pd Object, [adsr~] is easy ADSR envelope generator.

 

Pd Patch

Screen Shot 2013 10 30 at 10 58 07 AM

 

Help file

Screen Shot 2013 10 30 at 11 00 02 AM

 

Print ADSR properties

Screen Shot 2013 10 30 at 11 00 22 AM

 

Download

https://drive.google.com/folderview?id=0B42bn7ncw918c1MwZHhZc0wwMTQ&usp=docslist_api#

Pd Object, eline~

Description

Pd Object, eline~ is for easy playing sound file like [line~] object.

 

Pd Patch

Screen Shot 2013 10 30 at 9 47 24 AM

 

Help

Screen Shot 2013 10 30 at 9 47 17 AM

 

Download

https://drive.google.com/folderview?id=0B42bn7ncw918a0h1QUdiV2VmYTA&usp=docslist_api#

Pd Object, auto-soundfiler

Description

Pd object, [auto-soundfiler] is for easy loading sound file to array.

 

Pd patch

Screen Shot 2013 10 30 at 10 13 29 AM

 

Help file

Screen Shot 2013 10 30 at 10 18 14 AM

 

Print sound file properties 

Screen Shot 2013 10 30 at 10 32 14 AM

 

Download

https://drive.google.com/folderview?id=0B42bn7ncw918RkxUQ0taVnJ4Zjg&usp=docslist_api#

맥/리눅스: 삭제된 파일이 여전히 locate에서 검색될 때 (미해결)

locate는 파일 찾는 유용한 방법이다. 그런데 방금 삭제한 파일인데도 여전히 나타날 때가 있다.

Screen Shot 2013 10 30 at 2 15 00 AM

 

파일목록을 데이터베이스로 저장하는 방식이라 항상 업데이트가 되진 않으므로, 수동으로 업데이트 해야 한다.

 

맥에서 하는 방법: 주의점 반드시 sudo로 해야 한다. 안 그러면 엉킬 수도 있다고 함.

sudo /usr/libexec/locate.updatedb

 

리눅스에서 하는 방법: 맥과 거의 유사하다. 이것 역시 루트권한으로 한다.

sudo updatedb

 

이렇게 하면 db가 업데이트 되어 삭제된 파일이 나타나지 않아야 하지만!

Screen Shot 2013 10 30 at 2 18 52 AM

 

여전히 있다… plist는 불멸의 파일인가? 이 에러는 뭔가… 해결책을 찾아야 함.

 

 

2013-10-29

Pd Tips: set default local variable

$1 $2 와 같은 지역변수(local arguments)들은 기본 값이 0이다. 그러니까 아무 설정도 안 하면 기본적으로 0이 들어간다.

 

그런데 가끔 0이 들어오면 에러가 나는 경우가 있다. 그래서 이 경우를 대비해야 한다.

 

메트로놈 같은 경우, 템포가 0이 되면 시스템 자체가 정지해 버린다. 그런 경우에 기본 값을 정해주지 않으면 에러가 날 수 있다.

 

default local variable을 얻는 방법이다. [bang]은 bang 버튼인데, bng 라고 치면 되고, 클릭할 수 있다.

 

[bang]

|

[f $1]

|

[print]

 

기본 값이 0이다. bang을 누르면 0이 콘솔에 출력 될 것이다.

 

그러면 0이 아닌 다른 숫자를 넣어보려면 어떻게 할까?

Screen Shot 2013 10 29 at 4 10 53 AM

위 코드에서는 기본값이 정해지지 않은 상태, 즉 0일 때 999로 설정하도록 했다.

 

그러므로 아무런 지역변수 설정을 안 하면, 다음과 같이 0이 아닌, 999로 설정된다.

Screen Shot 2013 10 29 at 4 11 17 AM

 

지역변수 설정을 하면 당연히 그 값으로 정해진다.

Screen Shot 2013 10 29 at 4 11 50 AM

 

Pd Tips: Program Changer 만들기

Pd를 쓰다 보면 프로그램 체인저를 쓸 일이 많다. 패치를 만들고 중간에 루팅을 바꾸는 목적이 있다.

 

악기를 만들어 연주를 하다가 A라는 음색을 쓰다가 B라는 음색으로 바꾸고 싶은 경우, 이런 경우에 프로그램 체인저가 필요하다.

 

2가지 방법이 있다.

첫 번째:  Miller Puckette Style (Pd Vanilla Only)

두 번째: de-multiplex (part of zexy / Extended Only)

 

첫 번째 : Pd Vanilla만 이용한 방법 (Extended 없이) 

상당히 기본적인 기능이라 당연히 기본 패치로 있을 것 같지만, 존재하지 않는다. 직접 만들어 써야 하는데, 푸켓밀러가 제안하는 방식대로 만들어 보겠다.

 

일단 완성된 패치를 보자.

Screen Shot 2013 10 29 at 1 54 03 AM

 

맨 앞에 있는 것은 그냥 숫자를 0부터 계속 1씩 증가 시키는 무의미한 숫자 생성기이다.

 

중요한 것은 [list prepend] 이 부분이다.

 

설명서를 보면 이렇게 나와있다.

[list prepend] - prepend the second list to the first

 

즉 뒤에 붙는 숫자를 앞으로 땡겨서 자리바꿈 한다는 뜻이다. 그러니까 원래 들어온 숫자가 0이고 뒤에 prepend된 것이 9라면, 9를 맨 앞으로 자리를 바꾸고 뒤에 리스트를 붙인다는 뜻이다. 그러면 (0 9) 가 아니라 (9 0)이 된다는 뜻이다. 이 것을 이용해 프로그램 체인저를 만드는 것이다.

 

그러니까 예를 들어서 설명하면, 농사 지을 때 물길을 바꾸는 것이다. 김 첨지네 논으로 들어갈 물을 내 논에다가 집어 넣는 것이다. 김첨지네 논에 물을 주다가 버튼 한번 누르면 내 논으로 물이 들어온다. 물론 김첨지네 논으로 가는 물은 끊긴다. 전문용어로 routing이라고 한다.

 

위에 예제는 숫자만 보냈는데, 리스트로 된 자료구조도 루팅을 바꿔줄 수 있다. 패치는 다음과 같다.

Screen Shot 2013 10 29 at 2 06 25 AM

 

첫 번째 패치와 다른 점은 처음엔 숫자 하나만 들어왔는데, 이번엔 숫자 3개가 한 묶음으로 packed 되었다. [pack f f f]은 3개의 부동소수(float)들을 한 묶음으로 묶으라는 의미이다. 케이블 3개가 아니라 하나로 보낼 수 있어서 편리하다.

 

당연히 packed된 데이터이기에, 마지막에 unpacking을 해줘야 한다. [unpack f f f]는 float 3개로 다시 분리하라는 의미다.

 

동작 영상을 첨부한다.

 

 

 

두 번째 방법 (De-multiplex, Extended only)


첫 번째와 유사한 방법이지만, 조금 더 간단하다. [list prepend]와 [route]가 합쳐진 형태로 [demux]는 동작한다.

 

Screen Shot 2013 10 29 at 11 27 38 PM

 

2013-10-27

Pd에서 함수 만들기, Wolfram Alpha로!

이렇게 볼프람 알파에서 공식을 입력한다. 절대값 연산자 | 는 구글에서 통하지 않았다 ㅠㅠ 유료 서비스라 돈을 내야 한다고 들었는데 그냥 되더라...

Screen Shot 2013 10 27 at 2 16 20 AM

 

자 그래프를 확인했으니 Pd로 만들어보자

Screen Shot 2013 10 27 at 2 21 30 AM

 

그리고 이렇게 정의역의 범위 지정도 가능하다고 한다. 깔끔하게 그래프를 뽑아 낼 수 있다.

Screen Shot 2013 10 27 at 9 54 00 AM 

 

 

감사:

좋은 팁을 알려주신 안신열님께 감사드린다.

Pd에서 함수 만들기, 구글 함수검색으로!

Pd를 쓰다보면 함수를 만드는 일이 늘상 다반사다. Pd 프로그래밍은 함수의 집합이라고 봐야 한다 ㅠㅠ

 

구글에서 원하는 공식을 검색한다. 형식은 f(x)=blahblah...

 

내가 찾고자 하는 공식은 f(x) = -(2x-1)^2 +1 이었다. 나도 확신을 못해서 계속 시도했다… 검색하니 자동으로 그려준다.

 

Screen Shot 2013 10 27 at 2 43 57 AM

 

자 이 검색된 공식으로 Pd에서 작업을 한다.

Screen Shot 2013 10 27 at 2 44 51 AM

 

잘 작동한다!

 

검색에서 절대값(abs)는 다음과 같이 사용한다. abs(…)

Screen Shot 2013 10 27 at 9 50 51 AM 

 

 

감사:

대박 팁을 알려주신 최승준님께 감사드린다.

Pd로 FFT 간략하게 맛보기

FFT란 무엇인가? 나도 모른다. 하지만 간략하게 뭔지 알아 볼 수는 있다.

 

대략 Fast Fourier Transform이라는 것의 약자이다. 빠른 푸리어 변환 이라는 의미다. 푸리에는 사람 이름이고, 옛날 물리학자다. 뉴튼같은 사람이라고 보면 된다.

 

그런데 왜 빠른(fast)를 사용하나? 나도 잘 모르지만, 음악에서는 거의 FFT를 쓰고, 간혹 Descrete인 DFT를 쓰는 분야도 있다고 한다. 거기까진 모르겠다.

 

그러면 Pd에서 해볼 수 있으니 한번 해보자. 뭔가 대단한 걸 하는 건 절대 아니고, 그냥 맛만 보는 것이다.

 

초보자를 위해 대략적인 개념은 이렇다. 

Screen Shot 2013 10 26 at 11 48 37 PM

 

그러니까 원본 사운드를 넣어서 분석기로 분해한 다음에 다시 재 조합하면 원본과 같은 사운드가 나온다. 물론 FFT를 하는 목적은 분해한 다음에 뭔가를 해야 하지만, 우리는 초보자이기에 그냥 다시 합친다. 예를 들면 그냥 개구리 배를 갈랐다가, 다시 배를 꼬맨 다음에, 개구리가 살아나게 하는 것 같은 거다. 개구리가 죽으면 실패고, 살아나면 성공이다. 그럼 개구리를 살려보자.

 

중요한 것은 FFT를 거치면 실수부와 허수부로 나뉜다는 것이다. 실수와 허수에 대해서는 수학의 정석을 찾아보라. 나는 모른다.

 

실수부는 real part라고 하며, 허수부는 imaginary part라고 한다. 고도의 뛰어난 이펙터들은 이 분해된 실수부와 허수부를 재 조합하여 아름다운 소리를 만들어 낸다. 그것은 나중에 고수가 되면 해보자.

 

일단 Pd에서 위에서 설명한 개구리 배 갈랐다 다시 꼬매서 살아나게 하는 것을 해보자. 패치는 다음과 같다.

Screen Shot 2013 10 26 at 11 41 23 PM

 

각 파트마다 오실레이터(Oscilator)를 달아 놔서 파형을 확인해 볼 수 있게 해 놓았다. 마지막에 /~64로 나누는 이유는 재 조합된 소리가 너무 커서 다시 줄이는(de-normalize) 것이다. 이와 같이 FFT의 원리에 대해 대충 맛만 보았다. 다음에는 좀 더 공부해서 쓸만한 것을 공유해 보겠다.

 

패치를 만들어 보실 분들을 위해 다시 적어보겠다. 형식은 웹에서 사용하는 형식이다. 익숙해 지면 편하다.

 

[osc~ 440]        <<= 임의의 소리, 아무거나 해도 된다.

|

[rfft~]

|      \

[rifft~]

|

[/~ 64]

|

[dac~]             <<= 기회는 평등할 것입니다. 과정은 공정할 것입니다. 결과물은 원본과 같을 것 입니다…!

 

이해는 안되겠지만, 그냥 맛만 보는데 의의를 두자.

 

Pd Patch를 첨부한다.

https://docs.google.com/file/d/0B42bn7ncw918dm9PVUZnNUtyRGc/edit?usp=docslist_api

 

2013-10-26

Pd에서 2차 함수 곡선 사용하기

0에서 1까지 슬라이더를 만들었다. 그런데 항상 1:1로 증가하면 재미가 없다. 그래서 처음에는 완만하게 증가하다 나중에 많이 증가하는 함수를 만들어 보자.

보통 당연히 0부터 1까지 증가하면 정비례로 증가하게 된다. 이런 식이다 편의상 1부터 5까지 하겠다.

정비례 증가
1 2 3 4 5
1 2 3 4 5

정비례 증가를 Pd에서 나타내 보겠다. 너무 당연해서 시시하다. 두 개의 슬라이더는 링크되어 당연히 똑같이 움직일 것이다.
Screen Shot 2013 10 25 at 21 16 59

하지만 이렇게 하고 싶다면? 예제가 대충 무슨 말인지 알 것이다. 1부터 5로 증가하는데, 결과는 차츰 증가하다가 나중에 많이 커진다.
1      2        3       4      5
1      1.1    1.5    3       5

그래프로 그려 보자면 이렇다.
Screen Shot 2013 10 25 at 21 07 54

x는 순차적으로 커지는데, y는 조금씩 커지다가 나중에 더 많이 커진다. 이것을 Pd에서 나타내 보면 이렇다.
Screen Shot 2013 10 25 at 21 11 11

[expr] 을 쓰고 있다. expression이라는 것의 줄임말이다. 이것은 수학 공식을 쉽게 쓰기 위한 객체이다.
$f1 은 들어온 값을 말한다. 그리고 *는 곱하기다.  그러므로 들어온 값을 서로 곱하면 된다.
이것이 x^2 (엑스 제곱)을 표현하는 식이다.

그러면 이런 것도 가능할까? y 값이 처음에 많이 커지다가 나중에 조금씩 커지는 모양이다. 이것도 2차 함수이긴 하지만 표현식이 조금 다르다.
Screen Shot 2013 10 25 at 21 10 14

Pd에서 나타내면 약간 이상한 모양이 나오지만 수학적으로는 이렇게 하면 된다. 나도 수학 전공은 아니라 모르겠지만 아무튼 나는 이렇게 한다.
Screen Shot 2013 10 25 at 21 11 16
이것을 하려고 수학의 정석 책을 뒤져가면서 했는데, 지금은 어떻게 했는지 까먹어서 간략하게 설명하겠다.
처음 값은 0에서 1까지다. 편의상 0 to 1 이라고 하겠다.
[expr 1-$f1] 은 들어온 값을 1 to 0으로 돌려 주는 것이다.
[expr $f1*$f1] 은 y=x^2과 같이 작동하는데 값이 반대로 되어 있다.
[expr 1-$f1]은 1 to 0 을 다시 0 to 1 으로 바꿔 주는 것이다.

동작 영상을 한번 봅시다.
http://youtu.be/JIfQjZOhgVw


물론 2차 함수 곡선 이외에도, [expr $f1*$f1*$f1] 으로 하면 3차 곡선이고 4번 하면 4차 곡선이다.







2013-10-24

타임머신 에러

잘 쓰던 라즈베리파이 타임머신이 갑자기 이런 메세지가 난다.

 

Time Machine completed a verification of your backups on “sulli”. To improve reliability, Time Machine must create a new backup for you.

Click Start New Backup to create a new backup. This will remove your existing backup history. This could take several hours.

Click Back Up Later to be reminded tomorrow. Time Machine won’t perform backups during this time.

 

Screen Shot 2013 10 24 at 00 17 56

 

hostname을 몇번 바꾸었더니 깨졌나 보다. 문제를 해결해야 하는데 아직 모르겠다.

 

나랑 비슷한 증상을 가진 사람들이 많은 듯. NAS의 문제다.

 

참고:

https://discussions.apple.com/thread/3684176

http://pondini.org/TM/C13.html

2013-10-23

Ubuntu에서 Pd Vanilla 컴파일 하기

우분투 소프트웨어 센터나 apt-get으로 설치가 가능하지만, 1년 전 옛날버젼으로 설치되므로 바람직하지 못하다. 물론 apt-get이 설치는 편리하지만 최신 버젼을 컴파일링 해서 쓰는 것이 바람직 하다.

물론 이런 컴파일 과정이 귀찮은 사람은 조금 옛날 버젼이 설치되지만, sudo apt-get install puredata 로 편하게 설치하면 끝이다. 그러면 이 귀찮은 것을 보지 않아도 좋다.



Pd Vanilla Source를 다운받는다.
http://msp.ucsd.edu/software.html
압축을 푼다. 다른 툴로 그냥 풀어도 된다.
tar xzf pd-0.45-3.src.tar.gz

해당 디렉토리로 간다. 내가 받은 버젼은 0.45-3이다.
cd ~/Downloads/pd-0.45-3

컴파일에 필수적인 automake가 설치되어 있는지 확인해 보고 없으면 설치한다.
$ sudo apt-get install automake

컴파일에 필요한 의존성 패키지를 설치한다. tk8.5는 깔아도 되고 안 해도 되지만 안 하면 폰트 문제가 생길 수 있다. (기본적으로 우분투는 tk8.4가 설치되어있다.) libtool이 없으면 ./autogen.sh 실행이 안 될 수도 있다.
$ sudo apt-get install libasound2-dev
(옵션) sudo apt-get install tk8.5
(옵션) sudo apt-get install libtool
(옵션) sudo apt-get install gettext

**추가: 2015-03-16 / jack2 on amd64
case 1> jack2를 쓸 경우엔 이걸 설치하지 않으면 안 된다.
$ sudo apt-get install libjack-jackd2-dev

case 2> jack1일 경우엔
$ sudo apt-get install libjack-dev


컴파일을 한다. 다음을 순서대로 입력한다. install은 sudo로 하는 게 좋다.
./autogen.sh
./configure                     (jack support필요하면, $ ./configure --enable-jack)
make
sudo make install

어디에 설치되었는지 확인한다. 확인할 방법이 애매한데, 일단 여기에 있다.
/usr/local/bin

실행파일은
/usr/local/bin/pd

자동으로 프로그램에 등록이 안되기 때문에 프로그램으로 등록해 주거나, 터미널에서 pd 라고 입력한다. 절대경로로 /usr/local/bin/pd 라고 입력해도 실행된다.

아이콘 등록이 안 되어 있으므로, 수동으로 등록해 주어야 하는데 png파일만 등록이 되므로 귀찮다. 소스파일에는 .ico파일만 들어있다. 그냥 아무거나 이쁜걸로 대충 넣어서 쓰자. ico를 png로 바꿔서 저장하면 간단하다.
혹시 에러가 나거나 잘 안 되면 uninstall, make clean을 해 본다.
make uninstall
make clean
재 설치



설명서 원문을 첨부한다.
Quick compilation instructions for Gnu/linux or Mac OSX, or Windows if you have
installed gygwin:  make sure "automake" is installed as well as the usual C
compiler chain.  Then in this directory, type "./autogen.sh", then
"./configure"; then "make".

Alternatively, you can use the fallback makefiles in "src" for gnu/linux, Mac
OSX, or Microsoft Visual C.  On linux, for example, cd to src and type "make -f
makefile.gnu" and (if you wish) "sudo make -f makefile.gnu install".

Special instructions for Microsoft Visual C: cd to src and type "make -f
makefile.nt".  Then CD to the various subdirs of extra and type "make nt" in
each.

Various dependencies: in linux and Mac you need TK (apparently always present
for Mac and usually there for linux).  On linux you may also need an ALSA
"dev" package: (yum install alsa-lib-devel) or (apt-get install libasound2-dev).

참고:
http://msp.ucsd.edu/Pd_documentation/x3.htm#s1.2
http://puredata.info/docs/developer/BuildingPd

MacBook Pro 2010 시스템 리셋, SMC 재설정, PRAM 소거

컴퓨터가 느려지면 이렇게 하면 좋다.

 

1. SMC 재설정

http://support.apple.com/kb/HT3964?viewlocale=ko_KR

참고사용자가 분리할 수 없는 배터리가 장착된 휴대용 컴퓨터에는 MacBook Pro (Early 2009) 이상, MacBook Air의 모든 모델 및 MacBook (Late 2009)가 포함됩니다.

  1. 컴퓨터를 종료합니다.
  2. MagSafe 전원 어댑터를 전원 공급원에 연결하고 Mac에 꽂습니다(연결되어 있지 않은 경우).
  3. 내장 키보드에서 왼쪽에 있는 shift-control-option 키와 전원 단추를 동시에 누릅니다.
  4. 눌렀던 키 모두와 전원 단추에서 동시에 손을 뗍니다.
  5. 전원 단추를 눌러 컴퓨터를 켭니다. 
    참고
    : SMC를 재설정하면 MagSafe 전원 어댑터 LED의 상태가 바뀌거나 일시적으로 꺼질 수 있습니다.

 

2. PRAM 소거

http://arisnoba.tistory.com/2630991

  1. MAC을 종료합니다.
  2. 키보드에서 Command, Option, P 및 R 키를 찾습니다. 4단계에서는 이러한 키를 동시에 눌러야 합니다.
  3. MAC을 켭니다.
  4. Command + Option + P + R 키를 길게 누릅니다. 이 키 조합은 녹색 화면이 나타나기 전, 부팅음이 들리기 전에 눌러야 합니다.
  5. 컴퓨터가 재시동되기 전까지 이 키를 누르고 있으면 두 번째로 시동음이 들립니다.
  6. 키를 놓습니다.

2013-10-22

맥에서 네트워크 드라이브에 .DS_Store 생성 안 하게 만드는 방법

터미널을 연다.

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

 

원래대로 되 돌리는 방법 true를 false로 바꾸면 된다.

defaults write com.apple.desktopservices DSDontWriteNetworkStores false

 

재부팅 하면 더 이상 생성이 안 된다.

 

현재 폴더 하부로 생성된 .DS_Store파일을 찾는 방법

find . -name '*.DS_Store'

 

지금까지 생성된 .DS_Store파일을 찾고, 지우는 방법

find . -name '*.DS_Store' -type f -delete

 

참고:

http://support.apple.com/kb/HT1629?viewlocale=ko_KR

http://danilo.ariadoss.com/how-to-recursively-remove-ds_store-files-on-mac-os-x/

2013-10-20

맥 터미널 프롬프트를 예쁘게 만들어 보자!

맥 터미널은 너무 밉게 생겼다. 사용성도 불편하고 나쁘다. 좋게 만들어 보자. 

Screen Shot 2013 10 19 at 9 55 38 PM

 

철학:

1. 내가 사용하는 컴퓨터의 이름이 나와야 한다. 여러 대의 컴퓨터를 쓰기 때문에 어떤 컴퓨터에 로그인 한 건지 모르면 안 된다.

2. 절대경로가 보여서 어느 위치에 있는지 쉽게 알 수 있어야 한다.

3. 중요한 정보는 굵은 글씨와 색깔로 알기 쉽게 표현한다.

 

현재 터미널 상황을 살펴보자. 이것이 기본 셋팅이다.

Screen Shot 2013 10 19 at 9 27 53 PM

다음과 같은데, 구조는 컴퓨터이름:경로 사용자이름$ 이렇게 되어있다.

 

보이는 것은 이렇고 실제 어떻게 구성되어 있는지 보자. 터미널을 열고 아래를 입력해 보자. 프롬프트 셋팅, 즉 PS1을 확인하는 것이다.

echo $PS1

 

그러면 이렇게 나올 것이다. 

\h:\W \u$ 

 

이것의 의미는

\h 컴퓨터 이름을 의미한다. host

: 그냥 이 땡땡(콜론)을 표시한다는 의미다. 문자 그대로 보인다는 의미.

\W 디렉토리 경로를 표시한다. Where \W는 단축경로, \w는 절대경로이다.

\u 유저이름이다. 사용하는 계정 이름. user

$ 이것도 이 문자 그대로 보인다는 뜻이다.

 

PS1="프롬프트셋팅" 커맨드를 입력하면 바뀐다. 터미널 재 시작 하면 원래대로 돌아오니 마음 놓고 해보자.

 

자 이제 포맷을 알았으니 재 구성을 해보자 내가 할 구성은 이렇다.

사용자이름@컴퓨터이름 절대경로 $

 

재 구성해 보면 이렇게 된다.

\u@\h \w $

 

커맨드 명령어의 구조는 이렇다. 단순하다.

PS1="프롬프트내용"

 

다음 커맨드를 입력해 보자. 영원히 바뀌는 것이 아니라 일시적으로 바뀌는 것이기에 마음 놓고 해 보자. 재 시작 하면 다시 원래대로 된다.

PS1="\u@\h \w $ "

 

그러면 다음과 같이 절대 경로로 보인다! 단축 경로로 보여서 항상 내가 어디에 있는지 헷갈리던 상황을 벗어난다!

Screen Shot 2013 10 19 at 9 32 12 PM

 

중요한 내용을 굵게(Bold) 처리하는 방법을 알아보자. Bold를 하기 위한 문법은 이렇다.

\033[01;32m\]볼드시킬내용\033[00m\]

 

중요한 내용을 색깔로 알아보기 쉽게 하기 위한 문법은 이렇다. 0;34m은 보라색이다.

\e0;34m\색깔바뀌는내용\e[m

 

내가 만들고 싶은 프롬프트 구조는 이렇다.

1. 사용자이름과 컴퓨터 이름이 굵은 글씨로 나온다.

2. 절대경로는 색깔(보라색)으로 굵은 글씨로 나온다.

3. 마지막 $ 표시는 색깔을 다시 없앤다.

 

이것들을 기반으로 재 구성해 보면 이렇게 된다.

PS1="\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] $ "

 

명령어를 입력하면 이렇게 바뀐다.

Screen Shot 2013 10 19 at 9 45 47 PM

 

예쁘게 바뀌었다.

 

다시 비교해 보자. 원래 프롬프트다.

Screen Shot 2013 10 19 at 9 19 51 PM

 

내가 만든 형식이 적용된 프롬프트다.

Screen Shot 2013 10 19 at 9 20 35 PM

 

터미널을 껐다가 키면 이 셋팅이 사라지니까 영구히 저장해 보자.

 

맥에는 기본적으로 이 파일이 없으니 새로 만든다.

touch ~/.bash_profile

 

파일을 수정한다.

sudo nano ~/.bash_profile

 

이것을 추가한다.

export CLICOLOR=1

export CLICOLOR_FORCE=1

export LSCOLORS=Exfxcxdxbxegedabagacad

export PS1="\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] $ "

 

위에 내용 설명이다.

export CLICOLOR=1 이것은 터미널에서 칼라를 쓰겠다는 뜻이다. 기본적으로 꺼져 있다.

export CLICOLOR_FORCE=1 이것은 언제나 항상 칼라로 보여주겠다는 뜻이다. always로 동작하게 해 준다.

export LSCOLORS=Exfxcxdxbxegedabagacad 이것은 칼라 셋팅값이다. 바꿀 수 있다. LSCOLOR 값을 수정하면 되는데 좀 귀찮다.

export PS1="\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] $ " 방금 위에서 내가 만든 값이다. export를 붙여줘야 자동으로 등록된다.

 

터미널을 껏다가 키면 설정이 저장된 것을 알 수 있다.

Screen Shot 2013 10 19 at 10 11 22 PM

 

다시 원 상태로 복구 하려면 만든 ~/.bash_profile을 삭제하거나, 추가한 명령어를 지우면 된다. 간단하게 지워도 된다. 왜냐면 맥 디폴트가 이 파일이 없기 때문이다.

sudo rm ~/.bash_profile

 

재 부팅하면 원래대로 돌아와 있을 것이다.

 

마지막으로 터미널 나의 터미널 preference는 이렇다. Homebrew사용하고 Use bold fonts 그리고 Use bright colors for bold test.

Screen Shot 2013 10 19 at 10 46 05 PM

 

 

참고:

http://itsmetommy.com/2011/02/09/mac-changing-your-shell-prompt/

http://osxdaily.com/2006/12/11/how-to-customize-your-terminal-prompt/

http://www.thegeekstuff.com/2008/09/bash-shell-ps1-10-examples-to-make-your-linux-prompt-like-angelina-jolie/

2013-10-19

맥 마운틴 라이언에서 rsync 3.0.9로 업데이트 하기 (with homebrew)

맥은 모든 사용자가 타임머신을 쓰는 줄 알고, 백년 전 버젼의 rsync를 기본으로 넣어 놨다.

 

현재 rsync 버젼을 확인해 보자. 2.6.9일 것이다.

rsync --version

 

3.0.9로 업데이트를 하려면 brew로 업데이트를 하면 된다. homebrew설치법은 다음을 참고

http://brew.sh/

 

브루로 rsync 최신 버젼을 설치하는 법은 간단하다. 아마도 3.0.9 최신 안정판이 설치될 것이다. 자동 컴파일이라서 시간이 조금 걸릴 것이다.

brew install rsync

 

설치는 성공적으로 되었다. 하지만 한 가지 해결해야할 것이 있다. brew가 설치한 rsync의 경로는

 

/usr/local/bin/rsync

 

이곳이다. 하지만 시스템은 지정된 이 곳에서 rsync를 찾는다.

 

/usr/bin/rsync

 

다른 곳에 설치가 되었으니 두 개 버젼의 rsync가 설치되었고, 시스템에서 계속 예전 것을 사용 한다.

 

버젼을 확인해 보자. 하지만 여전이 2.6.9일 것이다.

rsync --version

 

이것을 고치는 방법은, 시스템 우선순위를 변경하여 시스템 파일을 건드리지 않고 해결하는 아주 스마트한 방법이 있다.

 

시스템 파일을 편집하자.

sudo nano /private/etc/paths

 

아마 다음과 같을 것이다.

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

 

/usr/bin이 가장 최상위 우선 순위가 있다. 우리가 쓰고 싶은 rsync는 /usr/local/bin에 있다. 그러므로 우선순위를 높여주면 된다.

/usr/local/bin
/bin
/usr/sbin
/sbin
/usr/bin

 

이렇게 바꾸고, 터미널을 닫고 rsync를 실행시키면 3.0.9로 찍힐 것이다.

Screen Shot 2013 10 19 at 4 04 03 AM

 

 

참고:

https://discussions.apple.com/message/19845786#19845786

맥/리눅스에서 복사 된 파일이 원본과 같은지 확인하는 방법. diff 명령어

복사를 하면 당연히 원본과 같아야 한다고 생각을 한다. 하지만 나같이 의심병 환자는 이런 것도 검사를 한다.

 

유닉스 명령어 중에 diff란 것이 있다. 원본 파일과 복사 된 파일이 같은지 확인해 준다. 파일도 가능하고 폴더도 가능하다.

 

백업 하드를 통채로 복사했는데 이게 같은 건지 의심이 들면 검사해 보자.

 

기본적으로 아무런 옵션이 없으면 같은 것과 다른 것을 모두 표시한다. 같은 것은 아니까, 다른 것만 검출하면 된다.

 

-q 옵션은 다른 것만 보여준다.

 

-r 옵션은 하위 디렉토리까지 검사한다.

 

합쳐서 -rq라고 줄 수 있다. -r -q 둘 다 쓸 수도 있다.

 

맥에서는 .DS_Store라는 숨김속성 페이징 파일이 있다. 그냥 시스템이 알아서 생성하는 것인데 매번 다른 파일이 생성되므로 이것은 제외해야 한다.

 

-x '파일명'을 치면 이 파일은 검사에서 제외한다. 그러므로 -x '.DS_Store'는 제외하자.

 

문법구조는 이렇다.

비교하라 -하위디렉토리까지 -다른것만검출 원본폴더 대상폴더 -제외할것 '제외할파일이름'

 

코드는 이렇게 된다.

diff -r -q 원본폴더 대상폴더 -x '.DS_Store'

 

실제 코드는 이런 식이다.

diff -r -q /Volumes/E.BAK-1T-HFSP/original/ /Volumes/E.TEST-120G-HFSP/copied/ -x '.DS_Store'

 

모든 파일을 검사하기에 시간이 좀 오래 걸린다.

 

 

참고:

http://www.mugginsoft.com/content/diff-ignoring-hidden-files

맥/리눅스, 터미널에서 퍼미션 755 스타일로 확인하기

퍼미션을 확인하려면

 

ls -l 로 확인이 가능하다.

Screen Shot 2013 10 18 at 5 22 20 PM

 

하지만 drwxfosfkeof 씨바 졸라 무슨 외계어 마냥 이해하기도 힘들고 보기도 불편하다.

 

그렇다 깔끔한 755 스타일로 바꿔보자! 755스타일에 대한 설명은 여기를 참고

http://blog.hansune.com/451

 

어자피 퍼미션 바꿀 때 755나 777 이런 식으로 하지 않는가? 그런데 저딴 식으로 나와서는 곤란하다. 그래서 바꿔보자!

 

755스타일을 구현하는 방식이다.

ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'

 

드디어 알아볼 수 있게 나온다! 하지만 저 명령어는 무슨 외계어인지 알 수가 없다. awk라는 강력하고도 이상한 언어다.

Screen Shot 2013 10 18 at 5 26 37 PM

 

문제는 매번 이렇게 길게 명령어를 칠 수는 없으니 단축키로 등록하자!

 

방법1. 맥에서 하는 방법

 

파일을 만든다.  기본적으로 없다. (마운틴 라이언)

touch ~/.bash_profile

 

파일을 수정한다.

sudo nano ~/.bash_profile

 

이것을 추가한다. 나는 단축키로 lsn을 치면 저게 나오도록 했다. n은 nummeric permissions의 약자다.

alias lsn="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

 

맥 터미널을 껏다가 켠다. lsn을 입력한다.

Screen Shot 2013 10 18 at 5 33 00 PM

 

훌륭하지 않은가? 매번 퍼미션 계산하고 앉아있는 상황은 피할 수 있다!

 

추가:

awk로 계산된 퍼미션 값이 나올 때 터미널 텍스트 색깔이 사라지는 문제가 있었는데, ls 앞에 CLICOLOR_FORCE=1을 붙여주면 된다.

alias lsn="CLICOLOR_FORCE=1 ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

 

색깔이 적용된 lsn을 실행시켜 보면 이렇게 잘 나온다.

Screen Shot 2013 10 19 at 7 38 18 AM

 

방법2. 리눅스에서 하는 방법.

리눅서들은 대부분 고수일 테니까 이것만 알려줘도 될 것 같다.

맥에서는  ~/.bash_profile 이것을 수정하지만, 리눅스에서는 조금 다르다.

 

경우1> 콘솔만 사용하는 경우 (라즈베리파이의 경우)

홈폴더에 있는 ~/.profile 을 수정하면 된다.

 

경우2> X-window에서 Terminal을 사용하는 경우 (Ubuntu의 경우)

홈폴더에 있는 ~/.bashrc 를 수정한다.

 

텍스트 색깔이 안 나오는 버젼

#without color
#alias lsn="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

텍스트 색깔이 나오는 버젼 --color=always를 추가해 준다. 이것은 ls 옵션 중 하나이다.

#with color
alias lsn="ls -alG --color=always | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

 

리눅스에서도 색깔이 적용된 lsn을 볼 수 있다. 물론 숫자 퍼미션도 잘 나온다!

Screen Shot 2013 10 19 at 7 35 57 AM 

 

감사:

우분투한국사용자모임에서 질문에 도움을 주신 최정환님께 감사드린다.

색깔이 사라지는 문제는 최민호님이 해결해 주셨다. 감사드린다.

 

완성된 코드를 첨부한다.

###### Terminal coloring Settings
### change terminal color by jong
### this is the original file.
### http://stackoverflow.com/questions/1550288/mac-os-x-terminal-colors

# enable coloring for terminal
export CLICOLOR=1

# enable coloring forced in all area
export CLICOLOR_FORCE=1

### prompt sets
##mac default
#export PS1="\h:\W \u\$ "
##raspbian
#export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w \$\[\033[00m\] "
##custom-1 (good) (/w blue 01;34m)
#export PS1="\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] $ "
##custom-2 (good) (/w cyan ~ 01;36m)
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;36m\]\w\[\033[00m\] $ "

### LSCOLOR sets
## default LSCOLOR
#export LSCOLORS=exfxcxdxbxegedabagacad
## white theme
#export LSCOLORS=ExFxBxDxCxegedabagacad
## dark theme
#export LSCOLORS=GxFxCxDxBxegedabagaced
## custom-1
#export LSCOLORS=GxFxCxDxBxegedabagaced
#export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
## custom-2 (good)
#export LSCOLORS=Exfxcxdxbxegedabagacad
##custom-3 (good)
export LSCOLORS=ExFxCxDxBxegedabagacad

 

###### making sh alias

### lsn -al with numberic permissions with coloring
### http://agileadam.com/ls-al-octal-permissions
alias lsn="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

###EOF

 

참고:

http://agileadam.com/ls-al-octal-permissions

2013-10-17

맥에서 터미널 색깔 나오게 만들기, 마운틴라이언

맥에서 터미널은 단색이다. 재미없으니 바꿔보자.

 

먼저 배쉬프로파일을 만들자. 이 파일은 원래 없으니 새로 만든다.

touch  ~/.bash_profile

 

만든 프로파일을 수정하자.

sudo nano ~/ .bash_profile

 

새로 만든 파일이므로 파일을 열면 아무것도 없다. 이 부분을 넣어준다.

export CLICOLOR=1

export LSCOLORS=GxFxCxDxBxegedabagaced

 

설명이다. "export CLICOLOR=숫자" 은 칼라설정이 가능하게 해 주는 것이다. 1은 키고 0은 설정을 끄는 것. 

설명이다. "LSCOLOR=알파벳" 은 칼라를 어떻게 보여줄 것인지 설정하는 것이다. 값은 모르겠으나 그냥 이렇게 써도 되고 고쳐도 된다.

 

결과는 이렇게 된다. 그렇게 예쁘진 않은데, 저 칼라 수정을 변경해 봐야겠다.

Screen Shot 2013 10 17 at 1 09 46 PM

 

참고:

http://stackoverflow.com/questions/1550288/mac-os-x-terminal-colors

http://it.toolbox.com/blogs/lim/how-to-fix-colors-on-mac-osx-terminal-37214

http://osxdaily.com/2012/02/21/add-color-to-the-terminal-in-mac-os-x/

 

라즈베리파이에서 뜬금없이 locale 에러 날 때

Ubuntu 12.04에서 SSH로 라즈베리파이를 사용하고 있었다.

시작프로그램에 뭘 좀 등록하려고 했다.
sudo update-rc.d jong-DisableConsoleBlank defaults

그런데 이런 에러메세지가!!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "en_US.UTF-8",
LC_ADDRESS = "en_US.UTF-8",
LC_MONETARY = "en_US.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_TELEPHONE = "en_US.UTF-8",
LC_IDENTIFICATION = "en_US.UTF-8",
LC_MEASUREMENT = "en_US.UTF-8",
LC_TIME = "en_US.UTF-8",
LC_NAME = "en_US.UTF-8",
LANG = "en_GB.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
update-rc.d: using dependency based boot sequencing

당황했다. 확인해 보니 문제는 라즈베리파이가 아니라 우분투 터미널의 문제였다! 이럴수가...

이런 문제가 생기면 우분투 컴퓨터의 파일을 수정해 줘야한다. (라즈베리파이가 아니다!)
sudo nano /etc/ssh/ssh_config

백업을 한다.
cp /etc/ssh/ssh_config /etc/ssh/ssh_config.original

이것을 삭제하거나 코멘트처리한다. 코멘트처리는 앞에 #을 붙이면 된다.
SendEnv LANG LC_*



참고:
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=50&t=11870

fdisk로 파티션 만들고 볼륨 라벨 붙이기.

현재 디스크를 확인한다.

sudo fdisk -l 

 

파티션을 만들거나 재 생성할 것을 고른다. (주의해라! 망하면 ㅈ됀다)

sudo fdisk /dev/sdX

 

기본 설명이다. m을 누르면 도움말이 뜬다. 중요한 것을 적어본다.

 

m - print help (도움말 출력)

p - print the partition table (현재 파티션을 보여준다)

n - create a new partition (새 파티션을 만든다)

d - delete a partition (파티션을 지운다)

q - quit without saving changes (저장하지 않고 나가기)

w - write the new partition table and exit (저장하고 나가기)

 

 

파티션을 삭제한다. (조심해라! ㅈ됀다)

d

 

새 파티션을 만든다.Partition number (1-4, default 1): 

n

 

그러면 물어본다.

 

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

 

p를 누른다. extended는 파티션을 여러 개로 나눌 것 아니면 필요없다.

 

파티션 넘버를 물어본다.

Partition number (1-4, default 1): 

1이 기본이다. 1을 누르거나 엔터를 치면 그냥 된다.

 

첫번째 섹터가 어디냐고 묻는다. 그런 거 모른다. 그냥 기본 값을 쓴다. 엔터를 치면 2048로 된다.

First sector (2048-1953525167, default 2048): 

 

마지막 섹터를 물어본다. 이것도 그냥 기본 값으로 한다. 엔터를 치자.

Last sector, +sectors or +size{K,M,G} (2048-1953525167, default 1953525167): 

 

작업이 끝났으니 w를 눌러 저장하고 나오자.

w를 누른다.

 

만들어진 파티션을 확인해 보자.

sudo fdisk -l 

 

파티션을 했으니 포맷을 해야한다. 나는 ext4로 포맷 하겠다. ext3로 하려면 mkfs.ext3로 하면 된다. (주의해라 실수하면 ㅈ망한다)

mkfs.ext4 /dev/sdXx

 

디스크에 이름을 붙여준다. 볼륨 라벨이라고 하는데 없으면 섭하다. e2label은 ext2,3,4 볼륨 라벨을 붙여주는 프로그램 이름이다.

sudo e2label /dev/sdxX 볼륨라벨

 

이름이 잘 붙었나 확인해 본다.

sudo e2label /dev/sdxX

 

포맷을 완료했다. format c:보다 좀 많이 어렵다. 무서운 작업이니 주의하자.

 

참고:

http://manpages.ubuntu.com/manpages/precise/man8/e2label.8.html

 

  • m - print h
  • elp
  • p - print the partition table
  • n - create a new partition
  • d - delete a partition
  • q - quit without saving changes
  • - write the new partition table and exit

disk mounting by Disk Label

sdxX 순서가 계속 바뀌므로, Disk Label로 마운트를 하는 게 좋다.


 

마운트하기

 

$ sudo mount -L 디스크라벨 /마운트할/위치/

 

 

 

예시

 

$ sudo mount -L NAS-1T-EXT4 /mnt/NAS-1T-EXT4/


Linux에서 console blanking 막기

콘솔창 작업 중에 모니터가 슬립되면 짜증난다. 막아보자.

블랭크를 막는 명령어, 0은 블랭크를 안 쓰겠다는 것이다.
setterm -blank 0

블랭크를 다시 활성화 하는 명령어, 1은 사용자 입력이 1분 동안 없으면 화면을 끈다.
setterm -blank 1

스크립트를 만들어 기능을 켜고 꺼 보자.

새 파일을 만든다.
sudo nano /etc/init.d/jong-DisableConsoleBlank

이렇게 입력한다.
#! /bin/sh
# /etc/init.d/jong-DisableConsoleBlank

### BEGIN INIT INFO
# Provides:          jong-DisableConsoleBlank
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Simple script to start a program at boot
# Description:       A simple script from www.stuffaboutcode.com which will start / stop a program a boot / shutdown.
### END INIT INFO

# If you want a command to always run, put it here

# Carry out specific functions when asked to by the system

case "$1" in
start)
echo "......................"
echo "DisableConsoleBlank..."
echo "setterm -blank 0......"
setterm -blank 0
;;
stop)
echo "....................."
echo "EnableConsoleBlank..."
setterm -blank 1
;;

*)
echo "Usage: service jong-DisableConsoleBlank {start|stop}"
exit 1
;;
esac

exit 0



실행 가능하게 만들어 준다.
sudo chmod 755 /etc/init.d/jong-DisableConsoleBlank

테스트를 해 본다. 비활성화 하는 거다. 졸라 기다려 본다... 화면이 안 꺼지면 성공!
sudo /etc/init.d/jong-DisableConsoleBlank start

테스트를 해 본다. 다시 활성화. 1분 동안 기다리면 화면이 꺼질 것이다.
sudo /etc/init.d/jong-DisableConsoleBlank stop

성공 했으면 시작프로그램에 등록해 보자. defaults를 remove로 바꾸면 시작프로그램에서 제거된다.
sudo update-rc.d jong-DisableConsoleBlank defaults

disk mounting by UUID

sdxX 순서가 계속 바뀌므로, 고유아이디인 UUID로 마운트를 하는게 좋다.

 

UUID 확인

$ blkid

 

마운트하기

$ sudo mount /dev/disk/by-uuid/해당UUID /마운트할/위치/

 

예시

$ sudo mount /dev/disk/by-uuid/196f8852-390a-4ca6-ae2a-050dedcb1535 /mnt/NAS-1T-EXT4/

2013-10-16

타임머신 백업간격 조절하기

타임머신을 NAS나 타임캡슐로 쓰다 보면 한 시간 마다 백업을 해서 여간 귀찮은 게 아니다.

기본 백업 간격(Backup interval)은 3600초(1시간)이다.

이것을 길게 바꾸면 된다.

plist를 수정하기 전에 백업하자.
sudo cp /System/Library/LaunchDaemons/com.apple.backupd-auto.plist /System/Library/LaunchDaemons/com.apple.backupd-auto.plist.original

원본은 .original로 백업 했으니 맘 놓고 수정하자.
sudo nano /System/Library/LaunchDaemons/com.apple.backupd-auto.plist

중간 밑에 쯤 이런 부분이 있다.
<key>Interval</key>
<integer>3600</integer>
<key>MaintenanceWakeBehavior</key>
<string>Once</string>

여기서 3600을 바꾸면 된다.
나는 86400(24시간)으로 바꾸었다.
Screen Shot 2013 10 15 at 9 30 57 PM

이렇게 할 수도 있지만, 이 프로그램을 쓰는 게 더 편할 것 같다. 타임머신 스케쥴러라는 것이다. 써보진 않았지만 괜찮을 것 같다.
http://www.klieme.com/TimeMachineScheduler.html

타임머신 에디터도 있다.
http://timesoftware.free.fr/timemachineeditor/