'terminal'에 해당되는 글 17건

  1. 2011.01.15 리눅스 콘솔창에서 트윗질 하기 8
  2. 2010.09.11 터미널에서는 GDB가 아니라 CGDB를 씁시다. 4
  3. 2010.07.30 외부 Thread에서 GTK 위젯 제어할시 동기화 문제 해결 5
  4. 2010.06.20 Screenlet 에 현재 재생중인 음악파일 커버 출력시키기 6
  5. 2009.05.20 lastFM을 한번 해보았다 6

리눅스 콘솔창에서 트윗질 하기

0 당연하게도, 트위터에 가입이 되어 있어야 합니다

1 bti를 설치
# yaourt -S bti

2 다음 링크에 들어가서 어플등록 시작.

http://twitter.com/apps/new

페이지를 열어서 들어가면 대략 다음과 같은 링크가 있당

Application Icon: 그냥 원하는 아이콘을 넣어주면된다. 귀차느니깐 어지간하면 그냥 패스

Application Name: 어플이름을 넣으라는데......

"내가 가지고 있는 어플" 이 아니라 트위터 전체에 대한 어플이름 인듯요.

Description: 그냥 설명임 대충 아무거나 적읍시다

Application Website: http://127.0.0.1

Organization: 여기두 아무거나.... 그냥 전 Home이라 적었어요.

Website: http://127.0.0.1

Application Type: Client

Default Access type: Read & Write

Use Twitter for login: check 하면 편하겠죠.

그리구 "Save" 버튼을 누룹시다.

그럼 완료되면서 application detail 항목이 나타날겁니다.

3 ~/.bti 파일을 엽니다.

그리구 다음과 같이 내용을 입력해 주세요.
consumer_key= 2번에서 나온(application detail의) 를 넣어줍니다
consumer_secret=  2번에서 나온(application detail의)
access_token_key=
access_token_secret=

bti를 실행시킵니다
[~/work/src]$ bti
Please open the following link in your browser, and allow 'bti' to access your account. Then paste back the provided PIN in here.
http://twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PIN:

그러면 저렇게 핀인증하면 링크가 나오는데요, 웹브라우저로 해당 링크를 들어가면 핀값이 나와 있을겁니다.

PIN: <- 여기다가 값을 입력해 넣어주세요.

그럼 또 다음과 같이 메세지가 좀 더 나오고, 프로그램이 종료될겁니다.
Please put these two lines in your bti configuration file (~/.bti):
access_token_key= XXXXXXXXXXXXXXXXXXXXXXXXXX
access_token_secret=YYYYYYYYYYYYYYYYYYYYYYYYYYY

이제 설명대로 ~/.bti 파일을 열어서, access_token_key, access_token_secret 을 그대로 적어줍니다.
consumer_key= 2번에서 나온 를 넣어줍니다
consumer_secret=  2번에서 나온
access_token_key= XXXXXXXXXXXXXXXXXXXXXXXXXX
access_token_secret=YYYYYYYYYYYYYYYYYYYYYYYYYYY

저장하고 에티터를 종료합니다. 이제 bti로 글을써서 트위터에 올려볼께요.
$bti
tweet: 바보바보 바보

이제 내 트위터를 확인해 봅시다~ 글이 잘 올라왔나 안왔나~
$bti --action "options"

옵션에는 다음과 같은게 있어요, 저도 잘 몰라서 그냥 man 페이지 참조
update: 트윗글을 올립니다. 그냥 bit 실행하면 어짜피 글 올릴수 있으니깐, 딱히 필요 없는듯 하네요?
friends: 친구, 또는 나의 트윗글을 봅니다
pubilic: 타임라인을 트래킹하는거라는데... 이게 뭐죠.. 저 트윗질 처름이라 잘 몰라여 ㅠㅠ
계정도 어제 만들어서리 ㅋ
replies: "user"가 등록한 친구(?)의 리플을 보는거 같아요 (테스트를 안해봐서 ㅋ)



ps; 머 간단하게 그냥 두세줄 적어도 되든데..... 오랫만에 포스팅하는거라 좀 자세하게? 적어봤어요
pps; 이거 트윗 메세지가가 길면 에러나네여 ㅠ. 100글자도 안넘었는데

터미널에서는 GDB가 아니라 CGDB를 씁시다.

오늘 말입니다... 갑자기 GDB로 소스 디버깅(기존소스 분석.........)을 하고 않았더니

GDB에도 색을 넣고 싶었지 말입니다?

그래서 구글링 하다 보니깐 찿았어여? cgdb......

사용자 삽입 이미지

1 gdb 보다 더 괜찮은 놈이 있네.....

cgdb.. 얘도 분명 전에 알았던건데..... 오늘보니깐 또 새롭군여

아치에서는 기본패키지로는 없어서 (......) AUR에서 받아서 컴파일함, 시간은 얼마 안걸리네요....

이젠 소스코드보러 Shift눌러서 Screen변환 (그러고 보니 screen사용한지 벌써 4년이 다되가는군여 아아)

할필요도 없이 바로 소스 나오니깐 편해요... (vim이랑 gdb랑 왔다갔다할 필요가 없다는 말이죠.)

윗창(vim짝퉁), 아랫창(레알(?) GDB) 이 있어서 소스보면서 코딩하니깐 확 눈에 잘 들어오네요.

(왜 vim 짝퉁이냐면.... 어지간한 기능은 제대로 동작하는데... 일부기능은 동작을 안해서 -_- )

메녈페이지 읽기 귀차느신분을 위해서 기초적인 내용은 제가 간단 요약했습니다.

뭐 이정도만 알아도 대충 쓰는덴 지장 없으실거에요.

1 윗창(vim), 아랫창(gdb) 간 서로 이동하려면, i <-> ESC키 를 서로 사용하시면 됩니다.

2 윗창(vim)에서 기본키들은 거의 vim이랑 같습니다,

(hjkl 같은 이동키도 당근 같구여,검색할때 사용하는 /.?  도 페이지 이동 ctrl+f, ctrl+b, n, N 도 마찬가지죠)

3 아랫창(GDB)는 기존 GDB랑 거의 유사합니다... 오히려 일부기능은 더 보기 편하게 만들어 놨더군요.

4 break pointer를 break, clear 하는 방법은 (윗창,  vim 에서) space키를 누르면 토글 됩니다

5 소스 파일을 이동하려면 (윗창에서)  o키를 누르시면 됩니다.

그럼 현제 디렉토리에 있는 파일들 리스트가 쭈욱~ 출력되구요, 선택하시면 되겠죠

6 물론 종료하는건 ( vim 창에서) :q해서 빠져나가거나, gdb창에서 q해서 빠져나가시면 됩니다.


메녈페이지는 다음 링크보면 나와염... 더 자세한 내용을 보시려면 다음링크를 방문해 보세요

http://cgdb.sourceforge.net/docs/cgdb-no-split.html#Controlling-CGDB

아주 갈수력 실력이 줄어드는게 눈에 보이는군요

아아... 옛날엔 당연하던게 이제보니깐 짱좋은 기능이 되버렸네여

어서 빨리 윈도우플밍 가튼거 버리고 터미널의 세계로 빠지고 싶네여.... 눅스하는 회사 가가시퍼여......

어?! 그러고 보니 난 GDB자체에 색깔넣는게 목표였지 (GDB 명령어라던가,,, 변수에 따른 글자색이라던가)

이게 목표가 아니었네 .... 행여 이쪽에 대해서 아시는분이 있으면 댓글 부탁 드려요!

ps; 으아아아악 ctags가 안먹혀어..........

2 무기력증

요즘엔 말이져..

다 하기 싫다는.. 걍 귀차늠...

일하는것도 보람도 없고 걍 별 흥미없는걸로 시간때우고 웝급받고 하는 이런 무한루프에 빠진..

그러다보니 메너리즘 크리 + 무기력증 이 엄습........

그래서 또 구글신님께 빌어봤어요. 그래서 찾은게 이거... 역시 나만 그런게 아니였어

http://kldp.org/node/52929

비록 5년전 글이지만.... 뭔가 와닫는게 있네요.

1. 목표먼저 세우거나
2. 걍 놀거나
3. 컴터를 버린다 (어?)

............ 아중에 하난가;

음... 역시 "계획", "하루 목표" 이게 없어서 무기력해졌던거 같군여.. 아 그리고 필수적으로 "실행" 이 있어야

겠지여... 이게 없으면 앞에 2개가 완전 도루묵이니까.....

외부 Thread에서 GTK 위젯 제어할시 동기화 문제 해결

내가 만드는 삽질 프로그램이 하나 있는데...

얘가 원래 터미널용 프로그램이라서.. 좀 뽀대나게 겉모습을 "Music Player"같이 변모시켜보고자

Front End를 좀 만들기로 했었다.

근데 하나의 프로세스에다가

"(터미널때) 원래 실행되는 루틴 + Gui Event 콜백(Gtk 므로  gtk_main(); )을 넣다보니......

원래 진행되어야 하는 부분이 gtk_main() 때문에 수행이 되지 않으므로.......

할수 없이 pthread를 사용해서 그 두 부분을 분리하기로 했다

(난 개인적으로 스레드 정말 싫어해서... 터미널용 프로그램에서도 다행히(?)도 스레드 사용을 안했

아 하나 했었다... timer 관련해서 0.01초마다 카운터 올리는 콜백(?)함수를 사용했지...

사실 이부분도 더 신경써서 고쳐야되는데 아직도 방치중이다 아아...)

              main();
                           |
                   pthread_create();
                           |
            ------------------------------
           |                                            |
terminal_program                       create_gtk_widgets
          |                                             |
          |                                      gtk_main();
    emit gtk signal ---------------------|     
거지같아서 그림으로 대체

DIA로 열심히 그렸는데... 일헌 그림이 짤려버렸군여..

사용자 삽입 이미지

확실히 텍스트로 찍찍 그어서 만든 조합보단 훨씬 멋있다!

처음엔 신경쓰다가 결국엔 대충 그렸으니깐 "저거 이상해여" 테클걸진 말아달라는,.

코드는 기껏해야 몇천줄인데 저렇게 보니깐 엄청 뭔가 한것같이 느껴지네...ㅋ 그림의 위엄 ㅋ

처음에 분기하는 부분은 pthreaad로 내가 직접 생성한거구

Terminal Thread를 나눈건.. 내가 직접 나눈것이 아니라, Timer라이브러리에서 Thread를 나누는것.

(이 부분은 별 신경 안썼다... )

내가 원하는건 왼쪽 (MPD Event Callback이랑 Timer Callback)에서 Gtk한테

"라벨 위젯 글자좀 바꿔주셈" 이라고 요청한것...

근데 그냥 이렇게 하면.. 몇십초 동안 프로그램이 잘 동작하다가 갑자기 죽어버리거나,

갱신이 안되고 계속 멍때리고 있는 문제가 발생한다..... (

처음엔 내가 만들었던 소스코드가 문제가 있나싶어서 열심히 뒤졌지만... 그래도 안나오는거짐..

gdb로 디버깅해도 이상한데서 죽어버리거나, 프로그램은 잘 살아 있는데도 글자갱신이 안되는

문제가 그대로 발생했었다..

이게 뭔가... 분명 GUI 씌우기 전에는 제대로 동작을 했었는데.. 씌우고 나서 안되니..

음.... 그러다가 갑자기 thread에 feel이 와서 구글을 찾아보니 왠걸..

http://library.gnome.org/devel/gdk/stable/gdk-Threads.html

역시 매뉴얼을 잘 읽어봐야 한다 -_-.......................

Gtk랑 pthread랑 같이 사용한다면..

gdk_threads_enter();

GTK_SourceCode;

gdk_threads_leave();

왜 같이 사용해야한다...

즉 다른 thread에서 GTK 사용할때는 gdk내부에 크리티컬섹션을 만들어 줘야 함

(외부 thread에서 gtk 함수 콜하는 모든 부분을 저렇게 보호)

근데 원인이 뭘까?

위젯값들은 전역에 static으로 선언 해서 위젯 포인터 받은이후는 바뀔일은 없을텐데...

gdk 이벤트 관련해서 문제가 생기나....

으아아아아...

핀트는 좀 다르지만.
3년전에 내 블로그에 이 내용 썼구나...

바보 인증 ㅠㅠ
http://lowid.tistory.com/entry/gtk-Thread

다음 부터는 내 블로그 먼저 검색해봐야 겠다.......

7월 18일 "제목" 작성, 7월 31일 발행

Screenlet 에 현재 재생중인 음악파일 커버 출력시키기

저번에 한번 conky자체에 그림나오는 기능을 사용해서 자켓 이미지를 출력하게 시도한 적이 있었다는..

http://lowid.tistory.com/entry/conky-%EA%B7%B8%EB%A6%BC

그런데 그때는... cpu를 너무 많이 먹는 바람에 하루정도 돌리고 포기...

그러다가 새로운  desklet을 한번 알게 되었는데 그게 바로 screenlet

이것을 좀 보니깐 python스크립트로 되어있는거라.. 좀 깨름직했지만...

(개인적으로  pstree 했을때 python 실행파일이 보이는것이 영 내키지 않아서)

그래도 어짜피 메모리 많이 남으니깐..

(전체 2긱인데 vm, firefox를 안돌리면 절대 200mb(각하의 100배임) 을 넘길일이 없으니)

그냥 쓰기로 해따.. 뭐 많은데 쓰지뭐

어쨋던 그렇게 하고.. screenlet 에 어떤 위젯(?) 이 있나 보니깐..

"SlideShow" 라는게 있어서 좀 살펴보니깐, 특정 디렉토리에 있는 그림파일을 출력해 주는 기능이 있었다는.

사용자 삽입 이미지

(Terminal lyrics, Slideshow, conky의 조화!!)

그래서 생각한게... 뭐 그냥 그 디렉토리에다가 현재 mpd로 재생중인 파일의 path을 알아내서

find로 찾아주면 간단하겠네.... 라는 생각이 들어서 바로 만들어 봤다..

find할때 재대로 안되는건 쿼우팅이 문제라서 따옴표를 붙여주고...

디렉토리 이름에 공백문자가 들어가서 생기는 문제는 IFS로 해결했다.

이러니깐 어지간한건 다 잡는듯.....

다음은 스크립트

#!/bin/bash

# MPD 설정 디렉토리
MPD_DIR="/data/mp3"

# 현재 재생중인 파일의 MPD 디렉토리
MPD_PATH=$(dirname "$(mpc -f "%file%" | head -n 1)")

# 자켓이 임시 복사될 디렉토리
JACKET_DIR="/home/lowid/etc/mpd_jacket"

# 현재 재생중인 파일의 디렉토리
PLAY_FILE_DIR="$MPD_DIR"/"$MPD_PATH"

# 경로에서 확장자가 jpg인것을 검색(작은따옴표 주의)
JACKET_FILES="$(find "$PLAY_FILE_DIR" -iname '*.jpg' -o -iname '*.png' -o -iname '*.gif')"

# 아까 있던 파일들 모두 삭제
rm -rf "$JACKET_DIR"/*

# IFS를 '\n'으로 변경(spc 방지)
IFS='
'

# 복사
for IMAGE_FILE in $JACKET_FILES
do
    echo "$IMAGE_FILE"
    cp "$IMAGE_FILE" "$JACKET_DIR"
done

그리고 이걸 곡이 바뀔때 마다 실행해 주면 된다 -_-..

나는 그냥 귀차나서 lyrics프로그램 내부에 mpd감지하는 루틴에

system("/home/lowid/bin/mpd_jacket.sh");

넣어버림 ㅋㅋㅋㅋㅋㅋㅋ


이래도 문제는 발생한다는거...

곡이 바뀌면서 바로 커버가 바뀌는게 아니라 몇초 딜레이 시간이 필요하다. (머 1초로 설정하면 거의 없긴해두)

(SlideShow의 자체 갱신 시간이 있기때문)

python 프로그램을 찾아서 갱신시간을 event로 알아낼수 있게 어떻게 수정하면 되긴하겠는데...

python 은 귀찮기도 하고............ 걍 PASS 귀차늠..

아니 윗에처럼 하느니.. 그냥 lyrics + cover + control이 되는 새로운 프로그램을 gtk로 만드는게 나을지도

근데 이것도 귀찮아서 아마 시도도 안할거임 아마..............

추가-----

find에서 exec로 해도 되는거 같은데 .;

lastFM을 한번 해보았다


오늘 아침에 재즈님이 mpdscribble 이 안된다고 하시길래 함 테스트나 해볼까 해서 시도해 보았다

lastfm 사실이게 "사용자가 듣은 음악을 분석해서, 통계를 내어주고, 소셜네트워크까지 형성" 해주는건 알았는데

내가 이거 구태여 쓸필요를 전혀 느끼지 못했었다...

그러다가 mpdscribble 설정하려면 (당연하지만)id,passwd가 필요해서 그냥 덥석 가입했다

역시 외국사이트라서 그런지 회원가입할때 별 찌질한거 안물어보는게 정말로 좋다.. 뭐 어쨋던..

내가 들은 음악이 자켓도 나오고(물론 mp3디렉토리안에 자켓도 있긴하지만 내 lyrics와 conky에선 자켓을 보여주지 못하니

수동으로 보긴 귀찮으니까) 하니 좋구나 싶다..

한편으로는 "내 lastfm 보여주면 딱 덕후인증 하겠구나" 하는 생각만드는 ㅜㅜ... 그리고 난 처음나온음악은 질릴떄까지

1개건 2개던 적어도 계속 반복해서 듣는데 그것도 티 다나겠당 ㅋㅋㅋ" 하는 생각도...

아 그리고 또 하나 문제가 있는데.... 이거 깨진 태그는 아예 로그로 기록을 안한다....

md5같은 해싱방법으로 구별하는게 아니라, 그냥 태그로 다 정보를 기록하는듯....

문제는 한국음악들은 지다 태그가 깨지거나 정보가 없단 말이닷!!!

즉 기록이 안된다구.. 애니송이나 외국팝같은경우는  그래도 영어나 일어라도 나오는데 ........... 아 뭐임....

안그래도 오덕음악듣는게 90% 이상인데 저렇게되면 99%될지도 ㅜㅜ..

할짓없는데 스샷도 첨부!

사용자 삽입 이미지

주소는 여기!

http://www.last.fm/user/hypernext

'Etc' 카테고리의 다른 글

액티브싱크 버전문제 임시해결  (18) 2009.06.21
자기소개서 쓰다가...  (4) 2009.06.19
windows 7 사양 Test  (6) 2009.05.11
개념없는 한국 인터넷페이지  (12) 2009.05.05
그림자 살인 시사회 늦은 리포트..  (2) 2009.04.06
prev 1 2 3 4 next