'리눅스'에 해당되는 글 39건

  1. 2010.05.31 mmap 사용시 알아둘 사항 (버스오류)
  2. 2010.05.30 gdb 화면 clear 하기 (2)
  3. 2009.09.27 [시간알람] 시간.. 시간이 문제로다. (15)
  4. 2009.08.15 모..몰라 써버려! Wicd (7)
  5. 2009.06.30 conky에 그림을 넣어보긴했는데... (6)

mmap 사용시 알아둘 사항 (버스오류)


mmap  이라하면... seek 같은 귀찬은짓 안하고 파일에서 메모리로 사상 받은다음에,

그 메모리를 조작하면 자동(?) 으로 그 (메모리에 변경된 내용)이 파일에 저장되는 참 편한 넘이져.

(꼭 파일 디스크립터가 있어야하는건 아니지만.......)

근데 문제는,,,저 int files의 파일/파일 디스크립터를 open 할떄 주의 해야하는게...

NAME  
       mmap - map pages of memory

SYNOPSIS
       #include <sys/mman.h>

       void *mmap(void *addr, size_t len, int prot, int flags. int fildes, off_t off);

mmap을 사용할때는 Target 이 되는 파일이 write할 길이보다 커야한다. 는거........

(그러므로 (아래서도 적었지만) 당연히 파일크기가 0가 되서는 안됨)

만약 그렇지 않다면 "버스 오류" 라는 메세지를 출력하고 프로그럄이 종료되어버리는 문제가 생긴다.

O_TRUNC 같은 옵션을 open 함수 사용할때 놓어서도 안되므로 주의 하도록 하자,

그니깐 정리하면.... "mmap은 쓸파일의 크기를 변경할수 없다" 는것..

버스 오류가 나면 참고하도록하자.

joinc에 주의사항하나 정도는 적혀있을듯 했었는데.. 없었던거 같다 (아님 내가 제대로 안읽었던가)

kldp에는 비슷한 내용의 글타래가 올라왔던거 같으니깐 구글에서 찾아보세염.

이걸 왜 했냐면......----------------------------

euckr로 변환된 문서를 utf8로 적용하려고, iconv를 쓰다보니...문제가 생겼다

버퍼 크기가 작어서(euckr로 잡으니) 로케일이 변경되다가 말았던것....

저번엔 utf8->euckr로 변경할때는 어짜피 파일크기가 utf8크기가 크니깐, 그냥 utf8파일 크기를 버퍼 크기로 줘도

상관없었는데, 문제는 그 반대의 상황이 문제였던것...

그래서 메모리 사상을 써봐서 해결해 볼까.......... 해서 mmap을 쓸려고 하니깐....

뭐야... 이것도 결국 버퍼 크기 알아야 하잖아... 챗...

그냥 iconv 함수 쓸때 euckr파일크기 * 2 (사실 1.5배만 해도 충분하다고 하지만) 로 최대 버퍼 잡아서 넘겨버렸다..

(http://kldp.org/node/68263)

잘 되네 변환..

이제 터미널에서 글자폭을 알아야 할 차레...

(뭐 정안되면 UTF8용으로 글자폭 알아보던 함수를 다시 한번 수정해야겠다.

지금 만든건 CJK(한글, 한문, 히라/가타카나)는 글자폭을 제대로 알아오는데.............

러시아어(...) 같은건 제대로 못얻어 와서....... wscol인가.. 그건 왜 눅스에 없을까...)

에이 걍 터미널에서 삽질하지 말고 gtk로 ...?..
Trackback 0 Comment 0

gdb 화면 clear 하기

이상하게도(?)

gdb (한국어) 메뉴얼 같은데 보면 화면 을 지우는

(그러니까... clear, cls 같은 명령어)

가 나와 있지 않는데.....

그래서 구글신한테 물어 보니깐 바로 나오는군여..

구글링도 귀차나서 한글로 검색하시는 분을 위해서...

명령어는 간단합니다  그냥 다음과 같이 입력하면 되요.

(gdb) shell clear

물런 이거 응용해서

(gdb) shell ls

같은것도 먹힙니다..

좀더 쉽게 alias 잡으시려고 하면...

(저는 sc로 잡을게요)

(gdb) define sc
(gdb) shell clear
(gdb) end

이렇게 하심 됩니다

참 쉽죠?

gdb는 명령어는 어렵지 않은데 양이 좀 많아서 복잡할뿐이죠 네...
Trackback 0 Comment 2

[시간알람] 시간.. 시간이 문제로다.

여러분들은 컴터 할때 시간가는걸 느끼시나여?

저는 컴터 하는건 좋은데 막 하다보면 막 시간이 빨리가서.. 뭐랄까 가는 시간이 아깝달까...

그래서 시간가는걸 확실히 알기 위해서 Conky에다가 디지털 시계도 달아놓고

crontab을 이용해서 한시간마다 TTS로 시간 말해주는 그런뭐.. 그것도 썼는데..

의외로 효과과 미미 하더라고요...

디지털 시계로 시간을 보면 "아 지금 X시구낭" 하고 별 반응이 없게 되더라고요

그러니깐 지금 몇시인지는 아는데 "얼만큼 시간이 지났나?" 알기는 힘들어라구여..

글구 crontab으로 하는거..

# 한시간마다 screen lock
0       * * * * export DISPLAY=:0;/home/lowid/bin/screen_lock.sh

요런식으로 설정을 해서 한시간에 xlock을 띠우고 시간을 (aplay, wav재생) 하게 했는데

이건 한시간에 한번이라 -_-;; 별로..............

그리해서 해결책을 생각해 낸게

1 디지털 시계 버리고 아날로그 시계를 달자

2 1시간마다 시간을 말해게 하지말고 1분마다 시간을 말하게 하자...

해결과정....ㅋ
사용자 삽입 이미지

1 우리의 구글신님께 여쭈어(?) 보았습니다... 글자로는 언제 찾을지 몰라서 (심심하기도 했고) 이미지 검색을 해 봤는데

conky에서 font를 이용해서 아날로그 시계를 출력해주는 소스를 발견 했습니다..

http://floor.textcube.com/entry/my-conky-config?expandComment=1

그래서 이거 뚝딱 설정해서 conky에다가 시계 달기는 간편하게 성공했고

(뭐 덕분에 프로세스 왕장먹는 RSS기능 빼버렸...)

2 1분마다 말하게 하는거 취지는 좋은데 문제는 파일(시간 말해주는 파일) 이 없다는게 참 문제 더군여

기껏해야 정시알람음이 전부인게.. 안습...

그래서 어쩔수 없이 좀 오덕같이 보이긴 하지만, 꼬북님께서 몇달전에 제공해 주신 ARIA 캐릭의 목소리(...)를

이용하기로 했습니다.. 서비스팩(?) 같은 CD., 모르겠어요 확실한건..

제가 윈도우에서 이걸 실행해 본적이 없어서..............

어쨋던 윈도우용인데 파일은 다 wav로 존재하니깐 걍 뺴와서 쓰기로 했습니다..

1분 마다 실행하기 위해서 일단  crontab 에 등록 시켜 놓고..

# 매분 마다 시간 말해줌
*       * * * *  /home/lowid/bin/time_spech.sh

다음과 같이 간단한 쉘스크립트를 만들고.. (간단한거니깐 설명은 생략~)

#!/bin/bash

WAV_DIRECTORY="/home/lowid/etc/time_wav/aria/Akari"
WAV_BASENAME="AA"
WAV_BASENAME_HOUR="H"
WAV_BASENAME_MINUTE="M"

NOW_HOUR=$(date +%I)
NOW_MINUTE=$(date +%M)

pgrep mplayer # 동영상 재생이 아니면

if [ $? -eq 1 ];then
    aplay "$WAV_DIRECTORY"/"$WAV_BASENAME""$WAV_BASENAME_HOUR""$NOW_HOUR".wav "$WAV_DIRECTORY"/"$WAV_BASENAME""$WAV_BASENAME_MINUTE""$NOW_MINUTE".wav 2>/dev/null
fi

하면 알아서 매분 시간을 말해주게 됩니당...

좀 오덕같이 보여서 그렇지 사실.. 좋긴 좋음...

오늘 버닝 해서 포스팅 3개나 했네염 ㅋㅋ 댓글좀 달아주셈 ㅋㅋ
Trackback 0 Comment 15

모..몰라 써버려! Wicd



<그냥 공식 페이지에서 퍼왔다는.. 스샷귀찮 ㅋ>



아치에서 전 플빡을 쓰져 그놈이면 NetworkManager를 쓰면 됩니다만

박스류에서 NetworkManager를 쓰긴 촘 그러쳐 이어서 막깔리는놈들이 많아서..(의존성)

어찌됬던, 전 옛날부터 wicd의 존재는 잘 알고 있었습니다... 하지만

1 dbus, hal데몬을 켜야하는지라 ..

2 이름 모르는 프로세스가 왠지 걸린다는 자체가 좀 꺼림직 하게 느껴지고 있는데다가

3 개인적으로 파이썬 프로세스가 떠있는거 안좋아하는 지라(............) 한동안 wicd의 존재를잊고 있었습니다

하지만 몇일전에 무선공유기를 wpa로 설정해서(몰론 당시에는 "거실에서 시원한 에어컨을 씌면서" 윈도우에서

wiereless life를 즐겨보고 싶은 생각만 가진) 사용하는데 리눅이에서 무선 사용할때 잠깐 사용하는 rutilT를 썻지만

"WPA지원이 안" 되더군여 그러서 "WPA Supplicant"로 할려고 할래다가.. 삽질이 귀차나져서... 그냥 wicd...

그냥 yaourt -S wicd 하구 dbus데몬만 rc.conf에다 추가하면 끈나더군여

글구 하나더 좋은건 GUI안쓰고 콘솔용 프로그램으로도 쉽게 제어가 가능하다는 점입니다

wicd-curses -n 하면 cui에서도 간단하고 쉽게 연결선택을 할수 있습니다 쿠쿠

그리고 wired에서 disconnect되면 자동으로 wireless를 찾아서 연결해 줍니다!


딴거보다 이게 젤 맘에 들더군여...

근데 약간의 문제가 있는게... 데몬에서 [DONE] 되면 바로 인터넷 연결이 되는게 아닌거 같습니다...

그거때문에 문제되는게 전 컴터키면 바탕화면에 conky를 띄워서 RSS를 출력하게 하는데 그게 안나온다는겁니다;;

conky를 한 5초 delay시켜도 그런현상이 일어나는걸로 보이니깐 바탕화면 띄운후에도 5초동안은 인터넷 연결이

안된상태라고 봐야하겠군요;;  흠 delay를 더 늘려보는 수밖엔 딱히 방법이 없겠네염.;;

>>>>>>> 걍 그냥 재즈님이 "wicd 노래" 를 부를때 걍 써버릴까 하는 아쉬움도 좀 듬...

 내친김에 그냥 hal도 써버릴까여..ㅋ... 이제 mount 명령어도 귀차나......
Trackback 0 Comment 7

conky에 그림을 넣어보긴했는데...

저번에 conky 이야기하면서 제 버전을 알려드리니 jazzbug님이 버전이 왜 그렇게 낮냐고 하시더군요

 그때서야  저는 기본 레포짓에 있는 패키지가 아니라.... conky-new인가.. AUR에 있는 그 패키지를 쓰고 있었다는 사실을

알게되었던...

아마 이게 더이상 업데이트가 안되는 바람에 구버전으로 유지가 되었던 모양입니다

그래서 그 패키지를 지우고 최신버전으로 업그레이드 conky버전업을 하고 깜짝 놀랐습니다

man conky 하니깐, 꽤 많은 옵션들이 추가되었더군요 오호..

특히 IF문 추가해서 ~/.conkyrc파일을 제어할수 있다는 점, LUA(?)스크립트 지원, 그림 출력(!) 가능

이정도 가 주요 기능인거 같았어요

근데 당시에는 졸작에 치여서 아무것도 못한지라, 드뎌 시간이 나는 오늘 건드려 보기로 했습니당 ㅋㅋ..

man페이지 내부에서 if문들...

more..



보고 설정 conkyrc파일 일부.
간단하게 설명하자면, 이미지가 있으면 그림을 보여주고 아님 RSS를 보여주는겁니당..

${if_existing /tmp/cover1.jpg}
${color cyan}MPD Album Cover${color gray}$hr${color black}
${image /tmp/cover1.jpg -p 0,100 -s 135x135}
${image /tmp/cover2.jpg -p 140,100 -s 135x135}







${else}
${font 맑은고딕 :size=9}${color cyan}RSS Feed${color gray}$hr${color black}
환상경    - ${rss http://cfs.tistory.com/custom/named/kh/khmirage/rss.xml 10 item_titles 1}
jazzbug   - ${rss http://jazzbug.textcube.com/rss 10 item_titles 1}
kernel    - ${rss http://x86kernel.textcube.com/rss 10 item_titles 1}
zeper     - ${rss http://cfs.tistory.com/custom/named/ze/zeper/rss.xml 10 item_titles 1}
작은상자  - ${rss http://cfs.tistory.com/custom/named/mi/minicube/rss.xml 10 item_titles 1}
sakuragis - ${rss http://rss.egloos.com/blog/sakuragis 10 item_titles 1}
본드래곤  - ${rss http://rss.egloos.com/blog/bonedragon 10 item_titles 1}
jhpark9404- ${rss http://blog.rss.naver.com/jhpark9404.xml 10 item_titles 1}${endif}

그리고 lyrics에서 곡이 끝날떄마다, 다음의 간단한 쉘스크립트를 실행하게 설정 버그가 있는지도 없는지도 모름
(귀차나서 그냥 프로그램 내보에서 system 함수 써서 처리 ㅋ).

#!/bin/bash

MPD_PATH="/home/lowid/data/mp3"
PLAY_DIR="$(dirname "$(mpc --format %file% | line -1)")"
MPD_PLAY_PATH="$MPD_PATH"/"$PLAY_DIR"
NUM="$1"
TARGET_PATH="/tmp"
CNT=1

# IFS
ORIIFS=$IFS
LINEIFS='
'

#echo  "$MPD_PLAY_PATH"

if [ -z $NUM ];then
    NUM=2
fi

# 귀차나 걍 지워
rm "$TARGET_PATH"/cover*.jpg 2>/dev/null

FIND_CMD=$(find "$MPD_PLAY_PATH" -maxdepth 2 -iname *.jpg | head -n $NUM)

IFS=$LINEIFS
# 검색해서
for LINE in $FIND_CMD ;do
    IFS=$ORIIFS
    image_array[$CNT]="$LINE"
    #echo "${image_array[$CNT]}"
    cp -f "${image_array[$CNT]}" ""$TARGET_PATH"/cover$CNT.jpg"
    ((CNT++))
done

if [ "$CNT" -eq 1 ];then
    exit
fi

sleep 15

while ((CNT > 0));do
    rm -f ""$TARGET_PATH"/cover$CNT.jpg"
    ((CNT--))
done

결과... 이미지는 잘 나오는데...
사용자 삽입 이미지
아놔 CPU로드 쩔,,,, 이미지 게속 올라가있는경우 저렇더군요 ...

이거 해결책 없나? CONKY에 이미지 나온다오 좋아했는데 이렇게 되면 의미가 없잖아...

그리고 conky도 넘 잘죽어요.... 저렇게 설정을 해두면....그래서... 그냥써야할듯....

아님 lyrics애서 커버를 보게 프로그래밍을 더 하던가.. 아아 안될듯...

커버삽질 그만하고 if문으로 다른거나 설정해보아야 겠어요

RSS갯수 많은데 분할해서 보여주게 한다던가... 그런거... 머 나중에 시간있으면 더 포스팅하던가 하져머.. 귀차나...

'Linux > 스샷/외부설정' 카테고리의 다른 글

가상머신으로도 되는게 점점 줄어든다.  (10) 2010.01.26
Conky 설정을 바꾸어 봤습니다  (12) 2009.09.05
conky에 그림을 넣어보긴했는데...  (6) 2009.06.30
넓다!  (2) 2009.04.19
스샷  (11) 2009.03.01
vimperator 만세!!  (4) 2009.01.04
Trackback 0 Comment 6
prev 1 2 3 4 5 6 7 8 next