'Programming'에 해당되는 글 91건
- 2007.06.16 Nanika를 써보고 나는 생각들 5
- 2007.06.14 윈도우 메니져 설정 무시하고 윈도우 만들기 2
- 2007.05.25 Mpd 싱크 가사....... 프로그램 8
- 2007.05.11 간단한 양방향 linkedlist 6
- 2007.05.08 세그멘테이션 폴트를 줄이자! valgrind 4
Nanika를 써보고 나는 생각들
Programming 2007. 6. 16. 23:01
아 윈도우에서 블로그글 쓰는게 참으로 오랜만인거 같다 -_-;
IE는 좀 빠른거 같긴하지만 이상하다 .. 적응이 안되네..
뭐 암튼간 나니카라는 어플을 사용해 봤는데.. (알사람은 벌써 다 아실듯? )
꽤나 귀여운 악세사리 프로그램!
캐릭터가 나와서 잡담을 하고 화면을 이쁘게(?) 꾸며주는게 주 기능이고
메일확인(근데 이건 설정이 안되는지 안되더라는 ) 헤드라인 (뭐 일-뉴스인가 는 모르겠다만)
같은 부가기능.. 도 존재한다
단점이 있다면 시스템 메모리를 엄청나게! 먹는다는것.. 고스트(주캐릭터) 마다 좀 다르지만
한 30메가정도를 이 어플이 먹는데.. 개인적으로 하는건 없는데 메모리는 무지먹는다고
생각 한다 (시스템이 부담이 크다는거.. 뭐 그래도 메모리 남아 돌긴 하지만 )
그리고 Linux,BSD,Unix용으로 ninix라는 놈도 있다고 하던 windows의 nanika와 호환이 100%
안 되는거 같았다만.. 지금은 윈도니까 (리눅이에서도 함 해봤는데 그리 쉽사리 되진 않는...)
잠깐 이거보고 불현듯 든생각이지만
리눅스에서(윈도에선 내용이 부족해서...) 이런 윈도우 메니져(시스템 메니져?) 를
두면 어떨까..하는 생각이 들었다..
즉 컴퓨터 속의 개인 비서처럼......
여러프로그램의 기능을 제어 (또는 안에 내장)하게 하면... 인터페이스도 편리해질거 같고..
음악 들을때 가사처리 (물론 나니카에서도 지원되지만 일일이 수동설정을 해야하니까..) 싱크:
게다가 전에 만든 mpd용 싱크가사를 연동시켜가지고 캐릭이 노래를 부르게 하면 재밌겠지..
음악 재생기능: 뭐 위랑 비슷하게.
잡담기능 : 뭐 가만히 멍하게 보면 재미없자나... 필요에 따라서는 특정 프로그램이나
정보에 대해 팁을 제공하게 하는것도 좋을거 같다 설정에 따라서..
(터미널상에서 명령어를 앞글자만 좀 입력하고서 탭을 눌러보세요 라던가 ;; )
RSS리더기능 : 지정된 블로그/뉴스에서 RSS를 설정된 분당 읽어들여서 갱신하여 알려주기
(말풍선으로 XXX님의 블로그에 새로운 포스팅이 있습니다 이렇게 >_< 무지 편하겠네... )
메일리더: 뭐 나니카에도 있는기능이지만
윈도우 관리: 당연히 윈도우 관리자니까...
(현재 윈도우를 중앙으로 옮깁니다라고 말하고 윈도가 샤샥~! 이동한다던가~,
워크스페이스 3으로 이동~ 뭐 이런거..)
시스템 관리: 일정시간마다, 또는 갑자기 일부프로그램이 시스템자원을 많이 잡아먹을시,
다른사람에 지금 서버에 연결했을때, 프로그램을 다운로드 받을때등.. 을 자동으로 알아서 체크
해주는 기능..
(어라! lyrics가 cpu 를 너무 잡아먹어요! while문 에 문제가 있는거 아닌가요? 뭐 이렇게.. )
컴퓨터의 전원도 off시킬수 있게 하면 좋겠다(일부 고스트에서는 지금도 지원하지만)
자동 업데이트 기능!(pacman이 할수 있도록..)
사용자 스케줄 관리 : 다이어리 기능을 넣어서 사용자에게 일정시간에 무엇을 알려달라고
정해줄수 있는기능.. 뭐 5시에 친구 만나러 가야된다 뭐 그런.. 메모 기능도 되고..
매시간이 지날때마다 가르켜줄수도 있고 (뭐 이것도 가능하기 하지만 그래도..)
아니면 매일 7시에 저녁먹자~ 10분내 halt 해버릴꺼야~ 뭐 이런 협박도 할수 있게 하고...
키보드 락 기능도 만들어서 쉴수 있게.(Gnome 키보드 설정에 이게 있던거 같았다)
프로그램 관리: 위에 스케줄 관리랑 비슷한거지만 일정시간마다
외부 프로그램을 켜고 끈다던가..
파일관리 : 적어도 프로그램 찾기나 실행기능이 되게...
플러긴 기능 : 파이썬 (아 자원먹어서 싫지만) 같은 스크립트언어로 출력이 가능하게 ...
하거나 아니면 표준출력을 받아서 말풍선에 뿌려주던가하는..
irc 알림 기능 : 쿼리를 날리거나 아이디를 쳤을때 말풍선으로 알려주는 기능
msn/기타 메신저 알림 기능: 상대방캐릭을 따로 만들어서 그캐릭이랑 지금 쓰고
있는 캐릭이랑 대화하는 형식으로 만들면 정말 재미있을거 같다!!
(1:1이 아니면 화면이 좀 복잡해 지겠구만..)
영단어/일본어/중국어 등등... : 의 단어를 출력해줄소 있게 하는 교육기능도 있으면!
정말 좋을거 같다!!!
그리고 또
프로그래밍시 에러메세지 : 말풍선으로 보여주는것도 재미있겟구만 ㅋㅋ
그에대한 도움말도 같이 보여주면 (또는 검색해주면) 정말 >_< 오오오오!!!
뭐 그외로도,날씨도 알려주면 좋겠고...또... 많겠구나... 생활정보를 가르켜 준다던가....
지하철 노선,가격,시간정보, 버스 노선정보, 도!!
모듈로 따로 만들면 될거 같다 유동성을 위해서..
아 프로그램이 진화하게! 하는것도 재미있을거 같다 ..
아니 이걸하려면 인공지능도 배워야 하나?
근데 아는게 이것도 하나도 없어서.. 아 정말 이건 진짜 어렵겠군.;;
-------------------------------------------------------------------------------------
저 위에 말한 기능이 일부 고스트에 기능이 있긴하지만 미약하고...
(물론 벌서 저런게 벌써 나왔다면 할말 없고... )
해서 함 개삽질하면서 만들어 볼까 라고 말했으면
좋겠지......만 지금당장은 저렇게 건들 실력이 매우! 안된다는게 좀 안타깝다.............만..
너무 땡기는걸요 ... 하고 싶어라.....
............아아.. 근데 임베디드 공부할려고 커널공부랑 파일시스템 공부를 시작해야하는데
'Programming' 카테고리의 다른 글
쉘스크립트 하는데 (7) | 2008.02.04 |
---|---|
간만에 포스팅.. 소스 고치기! (2) | 2007.10.17 |
X!!- key_grab (2) | 2007.02.26 |
c로 cp 프로그램 작성 (5) | 2006.05.14 |
getchar 의 리턴형은.. (4) | 2006.04.02 |
윈도우 메니져 설정 무시하고 윈도우 만들기
Programming/GTK+ 2007. 6. 14. 18:41
if(term_cfg -> all_workspace_view == TRUE)
//모든 워크스페이스에 출력
gtk_window_stick(GTK_WINDOW(term_widget -> window));
if(term_cfg -> taskbar_view == FALSE) //default TRUE
//테스크바에 안보이게 하기
gtk_window_set_skip_taskbar_hint(GTK_WINDOW(term_widget -> window), TRUE);
if(term_cfg -> layer == 1)
gtk_window_set_keep_above(GTK_WINDOW(term_widget -> window), TRUE); //최상위 윈도우로 만들기 (단 윈도 매니져가 우선)
else if(term_cfg -> layer==0){
/* gdk_window_lower,gdk_window_set_override_redirect 함수와
* gtk_window_new 함수 연결 같은거.. 하려고;;
* (window -> window 내용 채우기 위해서 ㅋ*/
gtk_widget_realize(term_widget -> window);
if(term_widget -> window -> window == NULL){
puts("NULL!!!");
exit(1);
}
//윈도우 메니져의 설정을 무시한닷!!!
gdk_window_set_override_redirect(term_widget ->window ->window,TRUE);
//윈도우를 최하위로 만든담에 (이거 안되는데; )
//gdk_window_lower(term_widget -> window -> window);
}
//모든 워크스페이스에 출력
gtk_window_stick(GTK_WINDOW(term_widget -> window));
if(term_cfg -> taskbar_view == FALSE) //default TRUE
//테스크바에 안보이게 하기
gtk_window_set_skip_taskbar_hint(GTK_WINDOW(term_widget -> window), TRUE);
if(term_cfg -> layer == 1)
gtk_window_set_keep_above(GTK_WINDOW(term_widget -> window), TRUE); //최상위 윈도우로 만들기 (단 윈도 매니져가 우선)
else if(term_cfg -> layer==0){
/* gdk_window_lower,gdk_window_set_override_redirect 함수와
* gtk_window_new 함수 연결 같은거.. 하려고;;
* (window -> window 내용 채우기 위해서 ㅋ*/
gtk_widget_realize(term_widget -> window);
if(term_widget -> window -> window == NULL){
puts("NULL!!!");
exit(1);
}
//윈도우 메니져의 설정을 무시한닷!!!
gdk_window_set_override_redirect(term_widget ->window ->window,TRUE);
//윈도우를 최하위로 만든담에 (이거 안되는데; )
//gdk_window_lower(term_widget -> window -> window);
}
kldp에다가 질문을 올렸었는데 뭐 갈켜주는 사람도 없고 해서 어쩔수 없이 혼자 찾은
구글링 해서 찾았는데.......
역시 제일 나은건 man페이지라는거.........
------------------------------------------------------------
기억 보존을 위해서 적어둠...
'Programming > GTK+' 카테고리의 다른 글
gtk할떄는 gtk_init의 인자를 제대로 넣자. (2) | 2010.08.06 |
---|---|
외부 Thread에서 GTK 위젯 제어할시 동기화 문제 해결 (5) | 2010.07.30 |
g_signal_connect의 폐해? (4) | 2007.03.30 |
xlib 에러 해결! (2) | 2007.02.28 |
gtk Thread (2) | 2007.02.27 |
Mpd 싱크 가사....... 프로그램
Programming/C 2007. 5. 25. 12:47
이딴거 올려봤자 별루 보는사람도 얼마 없겠지만뭐.........
주1>지워졌다 ㅋㅋ.
주2>MPD : Music Player Demon 일겁니다.. 내기억으로는.. 데몬이기때문에 재부팅을하거나
일부로 종료시키지 않은한 음악이 멈추질 않죠! 저는 가끔씩 X 를 재시작하는데 그때 음악이 끈겨서
참 안타까웠던차 이프로그램을 jazzbug님의 추천으로 사용하게 되었죠.......
괜찮네요.. 좋아요...근데 지원되는 파일 포맷이 mp3,ogg정도 밖에 없는게 단점..
망할 wma는 재생이 안돼ㅜㅜㅜㅜㅜㅜ
주3>amarok-live-lyrics
랜덤여신님이 만든 live-lyrics 다음 링크를 참조해주세요.
http://barosl.com/blog/entry/amarok-live-lyrics
주4>dcop :amarok이 이거 쓰던데...... 이거쓰면 amarok이 플레이중인 시간,전체시간,곡이름등을 알수 있다
dcop amarok default 뭐시기.. 이런식으로 썻던거 같은데.. 지금 amarok을 실행시키고 있다면 함
해보시길어플의 상태를 알수 있게 해주는 뭐 그런 녀석인가부다......... 더이상은 모르겠삼..
gtk어플(?) 쪽에도 이런게 있던거 같긴함.
주5>mpc : Music Player Client 인가.. 그래요..
주7> conky
에서 주8>파이썬(python) 이가 메모리 젤많이 먹는거 보면 기분이 상당이 뭐하다(?) 그래서 파이썬
안쓰고 만들려다보니......
주8>소켓 : 이녀석도 기억이 안나서 혼자서 만들다가 몰라서 걍 소스 보고 몇줄 복사붙여넣기 했어요 ㅜㅜ
주9>터미널 전용(!) 프로그램 : 아시려나 모르겠지만 본인은 터미널 프로그램을 매우 사랑! 스러워한다..
주10>공개를 못하겠어용 ㅜ
그리고 우리나라에서 MPD를 쓰는 사람이 몇이나되겠으며( 아니 아는 사람이나 몇이나 될까! )
, 호좁한 인터페이스를 가진 이 터미널 프로그램을 쓸사람은 몇이나 되겠으며......
그래서 공개를 못하겠어욤...
주11> mutagen
파이썬 라이브러리라...물론 이 플그램은 C언어니까 쓸수 없기도 했고 또 c언어용 태그 라이브러리(id3lib인가?)가 존재는 하나 파일을 복사해놓고 거기서 다시 태그를 읽어오고 해야했기 때문에 비효울적인거 같기도 하고(mutagen을 쓴 amarok-live-lyrics도 그렇다..)
사실 뻘짓할 시간이 아까우니 원래 이런 라이브러리를 쓰는게 이익이겠지만...
공부도 함 해볼겸해서 걍 내가 뻘짓해가면서 만듦
두번째 프로젝트(?) 인 주2>MPD 용 싱크가사 프로그램을 대충~ 완성했다.........
일단 되는 기능은 잘 된다.... 내부적으로 고칠건 좀 있는데....... 안그래도 잘 작동하는데 고치기는
귀찮고 해서 현재 놀면서 방치중~~~ 귀차나~ 귀차나~ 어디 딴짓이나 해볼까~ 하고 있는.............
이거에 대해서 간단히 설명하자면 원래 랜덤여신님이 만든 주3>amarok-live-lyrics
가 있는데.. 그 프로그램에 서버로부터 가져오는 주소값만 살짝 내 프로그램으로 받게 해서 만든것!
사실 "구태여 이렇게 따로 프로그램을 만들지 않더라도"
저 amarok-live-lyrics의 내용만 약간 바꾸면 (주4>dcop 대신 주5>mpc를 써서 한다던가............)
mpd용으로 사용할수 있건만............ 만들어본,........
주6> conky에서 주7>파이썬 안써보고 프로그램 만들어보려고요...
또.......어짜피 배우는 입장이기도 하고........ ,c언어 예/복습도 할겸................ )
아직 주9>터미널 전용(!) 프로그램이라 사용자 인터페이스는 정말 할말이 없다
(이부분에서만 보면 완존 쓰레기다 ; 그래서 주10>공개를 못하겠어용 ㅜ)
아직은 계획이 없지만... 뭐 필요하면 Gtk용 프로글햄으로 바꿀 생각도 있긴한데 귀차나서...
하지만! amarok-live-lyrics 보다 좋은건 딱 하나있다...... 주11> mutagen
을 쓰지않고 자체적으로 mp3파일을 분석해서 태그를 무시하기때문에.. 싱크가사 인식성공률이
amarok-live-lyrics보다 높다..........는거 정도...
(amarok-live-lyrics는 서버에 가사가 있는데도 불구하고 태그위치를 제대로 감지를 못해서
md5값을 잘못얻어오는 경우가 몇몇 mp3파일에서 발견되었었다........
모르겠다 요즘에 버젼업 되어서 고쳐졌는지...... )
일단 되는 기능은 잘 된다.... 내부적으로 고칠건 좀 있는데....... 안그래도 잘 작동하는데 고치기는
귀찮고 해서 현재 놀면서 방치중~~~ 귀차나~ 귀차나~ 어디 딴짓이나 해볼까~ 하고 있는.............
이거에 대해서 간단히 설명하자면 원래 랜덤여신님이 만든 주3>amarok-live-lyrics
가 있는데.. 그 프로그램에 서버로부터 가져오는 주소값만 살짝 내 프로그램으로 받게 해서 만든것!
사실 "구태여 이렇게 따로 프로그램을 만들지 않더라도"
저 amarok-live-lyrics의 내용만 약간 바꾸면 (주4>dcop 대신 주5>mpc를 써서 한다던가............)
mpd용으로 사용할수 있건만............ 만들어본,........
주6> conky에서 주7>파이썬 안써보고 프로그램 만들어보려고요...
또.......어짜피 배우는 입장이기도 하고........ ,c언어 예/복습도 할겸................ )
대략 프로그램 구조가......
mp3파일을 읽어 망할놈의 태그 를 건너뛴 만큼 읽는 위치를 이동한다
-> 일정부분을 읽어서 md5 Hash(?) 한다
-> md5한 값을 바로슬 서버의 주소와 합쳐서 -> 주8>소켓써서 서버로부터 페이지를 받아온다
-> 새로운 가사 파일에 그 내용을 저장한다 -> 저장한 내용을 불러와서 메모리에 저장
-> 가사/시간 분리 -> 링크드리스트로 정리 -> 타이머써서 -> (시간에 맞춰) 출력하기.....
-> 에러있음 break -> 그리고 쭉~ 반복~.
mp3파일을 읽어 망할놈의 태그 를 건너뛴 만큼 읽는 위치를 이동한다
-> 일정부분을 읽어서 md5 Hash(?) 한다
-> md5한 값을 바로슬 서버의 주소와 합쳐서 -> 주8>소켓써서 서버로부터 페이지를 받아온다
-> 새로운 가사 파일에 그 내용을 저장한다 -> 저장한 내용을 불러와서 메모리에 저장
-> 가사/시간 분리 -> 링크드리스트로 정리 -> 타이머써서 -> (시간에 맞춰) 출력하기.....
-> 에러있음 break -> 그리고 쭉~ 반복~.
아직 주9>터미널 전용(!) 프로그램이라 사용자 인터페이스는 정말 할말이 없다
(이부분에서만 보면 완존 쓰레기다 ; 그래서 주10>공개를 못하겠어용 ㅜ)
아직은 계획이 없지만... 뭐 필요하면 Gtk용 프로글햄으로 바꿀 생각도 있긴한데 귀차나서...
하지만! amarok-live-lyrics 보다 좋은건 딱 하나있다...... 주11> mutagen
을 쓰지않고 자체적으로 mp3파일을 분석해서 태그를 무시하기때문에.. 싱크가사 인식성공률이
amarok-live-lyrics보다 높다..........는거 정도...
(amarok-live-lyrics는 서버에 가사가 있는데도 불구하고 태그위치를 제대로 감지를 못해서
md5값을 잘못얻어오는 경우가 몇몇 mp3파일에서 발견되었었다........
모르겠다 요즘에 버젼업 되어서 고쳐졌는지...... )
주1>지워졌다 ㅋㅋ.
주2>MPD : Music Player Demon 일겁니다.. 내기억으로는.. 데몬이기때문에 재부팅을하거나
일부로 종료시키지 않은한 음악이 멈추질 않죠! 저는 가끔씩 X 를 재시작하는데 그때 음악이 끈겨서
참 안타까웠던차 이프로그램을 jazzbug님의 추천으로 사용하게 되었죠.......
괜찮네요.. 좋아요...근데 지원되는 파일 포맷이 mp3,ogg정도 밖에 없는게 단점..
망할 wma는 재생이 안돼ㅜㅜㅜㅜㅜㅜ
주3>amarok-live-lyrics
랜덤여신님이 만든 live-lyrics 다음 링크를 참조해주세요.
http://barosl.com/blog/entry/amarok-live-lyrics
주4>dcop :amarok이 이거 쓰던데...... 이거쓰면 amarok이 플레이중인 시간,전체시간,곡이름등을 알수 있다
dcop amarok default 뭐시기.. 이런식으로 썻던거 같은데.. 지금 amarok을 실행시키고 있다면 함
해보시길어플의 상태를 알수 있게 해주는 뭐 그런 녀석인가부다......... 더이상은 모르겠삼..
gtk어플(?) 쪽에도 이런게 있던거 같긴함.
주5>mpc : Music Player Client 인가.. 그래요..
주7> conky
에서 주8>파이썬(python) 이가 메모리 젤많이 먹는거 보면 기분이 상당이 뭐하다(?) 그래서 파이썬
안쓰고 만들려다보니......
주8>소켓 : 이녀석도 기억이 안나서 혼자서 만들다가 몰라서 걍 소스 보고 몇줄 복사붙여넣기 했어요 ㅜㅜ
주9>터미널 전용(!) 프로그램 : 아시려나 모르겠지만 본인은 터미널 프로그램을 매우 사랑! 스러워한다..
주10>공개를 못하겠어용 ㅜ
그리고 우리나라에서 MPD를 쓰는 사람이 몇이나되겠으며( 아니 아는 사람이나 몇이나 될까! )
, 호좁한 인터페이스를 가진 이 터미널 프로그램을 쓸사람은 몇이나 되겠으며......
그래서 공개를 못하겠어욤...
주11> mutagen
파이썬 라이브러리라...물론 이 플그램은 C언어니까 쓸수 없기도 했고 또 c언어용 태그 라이브러리(id3lib인가?)가 존재는 하나 파일을 복사해놓고 거기서 다시 태그를 읽어오고 해야했기 때문에 비효울적인거 같기도 하고(mutagen을 쓴 amarok-live-lyrics도 그렇다..)
사실 뻘짓할 시간이 아까우니 원래 이런 라이브러리를 쓰는게 이익이겠지만...
공부도 함 해볼겸해서 걍 내가 뻘짓해가면서 만듦
'Programming > C' 카테고리의 다른 글
메모리 직접 접근의 유용성 (memcpy) (3) | 2007.07.01 |
---|---|
리눅스에서 2기가 이상인 파일에 접근하기 (4) | 2007.06.28 |
간단한 양방향 linkedlist (6) | 2007.05.11 |
세그멘테이션 폴트를 줄이자! valgrind (4) | 2007.05.08 |
c언어로 구현한 mp3 태그(id3v2) 지우기 (6) | 2007.05.06 |
간단한 양방향 linkedlist
Programming/C 2007. 5. 11. 19:58
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 struct node
5 {
6 struct node *backward;
7 int data;
8 struct node *forward;
9 };
10
11 struct node* create_node(int i)
12 {
13 struct node *new_node = NULL;
14 static struct node *old_node = NULL;
15
16 new_node = (struct node *)malloc(sizeof(struct node) * 1);
17
18 new_node -> backward = old_node;
19 new_node -> data = i;
20 new_node -> forward = NULL;
21
22 /* 첫번째 노드가 아니라면 전노드가 있는 곳의 주소를 준다 */
23 if(old_node != NULL)
24 old_node -> forward = new_node;
25
26 old_node = new_node;
27
28 return new_node;
29 }
30
31 /*me_free <= Header*/
32 void free_node(struct node *me_free)
33 {
34 while(me_free -> forward != NULL){
35 me_free = me_free -> forward;
36 free(me_free -> backward);
37 }
38
39 free(me_free);
40 }
41
42 int main(void)
43 {
44 struct node *head = NULL;
45
46 head = create_node(1);
47 create_node(2);
48 create_node(3);
49 create_node(4);
50
51 printf("node 1 : %d\n",head -> data);
52 printf("node 2 : %d\n",head -> forward -> data);
53 printf("node 3 : %d\n",head -> forward -> forward -> data);
54 printf("node 4 : %d\n",head -> forward -> forward -> forward -> data);
55 printf("moving : %d\n",head -> forward -> backward -> data);
56
57 free_node(head);
58
59 return 0;
60 }
2 #include <stdlib.h>
3
4 struct node
5 {
6 struct node *backward;
7 int data;
8 struct node *forward;
9 };
10
11 struct node* create_node(int i)
12 {
13 struct node *new_node = NULL;
14 static struct node *old_node = NULL;
15
16 new_node = (struct node *)malloc(sizeof(struct node) * 1);
17
18 new_node -> backward = old_node;
19 new_node -> data = i;
20 new_node -> forward = NULL;
21
22 /* 첫번째 노드가 아니라면 전노드가 있는 곳의 주소를 준다 */
23 if(old_node != NULL)
24 old_node -> forward = new_node;
25
26 old_node = new_node;
27
28 return new_node;
29 }
30
31 /*me_free <= Header*/
32 void free_node(struct node *me_free)
33 {
34 while(me_free -> forward != NULL){
35 me_free = me_free -> forward;
36 free(me_free -> backward);
37 }
38
39 free(me_free);
40 }
41
42 int main(void)
43 {
44 struct node *head = NULL;
45
46 head = create_node(1);
47 create_node(2);
48 create_node(3);
49 create_node(4);
50
51 printf("node 1 : %d\n",head -> data);
52 printf("node 2 : %d\n",head -> forward -> data);
53 printf("node 3 : %d\n",head -> forward -> forward -> data);
54 printf("node 4 : %d\n",head -> forward -> forward -> forward -> data);
55 printf("moving : %d\n",head -> forward -> backward -> data);
56
57 free_node(head);
58
59 return 0;
60 }
간단한 linkedlist 당장 쓸때가 있어서
"아무것도 안보고 스스로 처음" 으로 만들어 봣다...
1년반전만해도 linkedlist짜는데 못짜가지고 막 배껴가갔던게 생각이 나네 ㅋㅋ
뭐 암튼간데 잘 작동하는듯하는데.. 글쎄 확실힌 모르겠다..
뭐낙 실수가 많아서..
일단 memory-leak은 안생기는거 같지만....
뭐누군가가 구글링을 하거나 해서 학교 숙제 도움이나 될까..
뭐 틀리다고 해도 내책임은 없다,.. =3 (이블로그에있는 모든 자료가 마찬가지!)
--07-5-12-1시 30분 더 알아보기 쉽게 수정--
'Programming > C' 카테고리의 다른 글
리눅스에서 2기가 이상인 파일에 접근하기 (4) | 2007.06.28 |
---|---|
Mpd 싱크 가사....... 프로그램 (8) | 2007.05.25 |
세그멘테이션 폴트를 줄이자! valgrind (4) | 2007.05.08 |
c언어로 구현한 mp3 태그(id3v2) 지우기 (6) | 2007.05.06 |
pointer 를 call by referance 하기 (6) | 2007.04.09 |
세그멘테이션 폴트를 줄이자! valgrind
Programming/C 2007. 5. 8. 02:07
아 몇일동안 한거 헛수고 했다 -_-;
아...
바로전에 포스팅한것도 괜한 삽질이 되어버린..
덕분에 mp3구조랑 비트연산같은거 다시보긴 했지만.... 아아.........;
계속 길을 둘러간다 -_-;
역시 id3lib 가 잘못된게 아니라 내가 잘못 만든거였다...
바로 malloc이 잘못되있다는거...다...
(자세한건 malloc쪽을 보면 알겠지만 2byte만큼 메모리 할당이 부족하다)
valgrind 를써서 겨우 알아냈다... memory leak을 검사할때는 이툴이 참 좋은거 같다..
$valgrind --leak-check=yes -v ./runfile 이렇게 했던거 같다
나도 처음이라 레포트가 출력되긴하는데... 자세히는 모르겠고 내가만든 함수,사용하는 함수에 관해서
에러체크가 되있고 소스코드상의 라인번호가 나온다 그고 보고 고치는..
일단 어디새는곳 라인까지 가리켜주니까 찾기도 쉽고... gdb랑 같이 느므느므 좋은거 같다...
(사실 gdb도 시작한지 몇일 안됐;; )
아아~ 세그멘테이션 폴트 뜰때 정말 이프로그램 쓰면 직방이다 ㅜㅜ
이 프로그램짤때도 무한 세그멘테이션 폴트 때문에 애먹는데........
왜 대체가, 전혀~ 에러를 먹어서는 안되는 함수에서 틀렸다고 나오니... 그쪽에서만 틀린거 찾고 있었는데..
(뭐 gdb에서의 bt,run,명령어 만으로 찾아내기는 무리였을지도 모르겠지만...........)
이녀석쓰니깐 해결 해결~~
Segmentation Fault! 조금이라도 줄여보자...
그리고 세그멘테이션 오류가 나지 않는다고 하더라도,
valgrind를 이용해서
혹시모르는 에러가 발생하기 않도록 권고(?) 하는 바이다....
아...
바로전에 포스팅한것도 괜한 삽질이 되어버린..
덕분에 mp3구조랑 비트연산같은거 다시보긴 했지만.... 아아.........;
계속 길을 둘러간다 -_-;
역시 id3lib 가 잘못된게 아니라 내가 잘못 만든거였다...
350 /*full path!*/
351 m_st.mpd_dirpath = "/home/lowid/data/mp3";
352
353 /*file path 합성*/
354 filepath = (char *)malloc(strlen(m_st.mpd_dirpath) + strlen(m_st.filename));
355 sprintf(filepath,"%s/%s",m_st.mpd_dirpath,m_st.filename);
356
357 /*printf("status : %d \nfilename: %s \nplaytime: %d \ntotaltime: %d\n",
358 m_st.status,m_st.filename,m_st.elasped_time,m_st.total_time);*/
359
360 if((hash_address = get_hash_address(filepath,"temp.mp3")) == NULL ){
361 fprintf(stderr,"주소를 얻는데 실패 main 함수\n");
362 exit(1);
363 }
364
365 /*전체 주소를 받아와서 출력한다*/
366 sprintf(lyrics_address,"%s%s",PAGE_ADDRESS,hash_address);
367 /*printf("%s\n",lyrics_address);*/
368
369 contain_lyrics = get_lyrics(lyrics_address);
위에 코드중에서 잘못되어있는게 있었다... 뭘까~?351 m_st.mpd_dirpath = "/home/lowid/data/mp3";
352
353 /*file path 합성*/
354 filepath = (char *)malloc(strlen(m_st.mpd_dirpath) + strlen(m_st.filename));
355 sprintf(filepath,"%s/%s",m_st.mpd_dirpath,m_st.filename);
356
357 /*printf("status : %d \nfilename: %s \nplaytime: %d \ntotaltime: %d\n",
358 m_st.status,m_st.filename,m_st.elasped_time,m_st.total_time);*/
359
360 if((hash_address = get_hash_address(filepath,"temp.mp3")) == NULL ){
361 fprintf(stderr,"주소를 얻는데 실패 main 함수\n");
362 exit(1);
363 }
364
365 /*전체 주소를 받아와서 출력한다*/
366 sprintf(lyrics_address,"%s%s",PAGE_ADDRESS,hash_address);
367 /*printf("%s\n",lyrics_address);*/
368
369 contain_lyrics = get_lyrics(lyrics_address);
바로 malloc이 잘못되있다는거...다...
(자세한건 malloc쪽을 보면 알겠지만 2byte만큼 메모리 할당이 부족하다)
valgrind 를써서 겨우 알아냈다... memory leak을 검사할때는 이툴이 참 좋은거 같다..
$valgrind --leak-check=yes -v ./runfile 이렇게 했던거 같다
나도 처음이라 레포트가 출력되긴하는데... 자세히는 모르겠고 내가만든 함수,사용하는 함수에 관해서
에러체크가 되있고 소스코드상의 라인번호가 나온다 그고 보고 고치는..
일단 어디새는곳 라인까지 가리켜주니까 찾기도 쉽고... gdb랑 같이 느므느므 좋은거 같다...
(사실 gdb도 시작한지 몇일 안됐;; )
아아~ 세그멘테이션 폴트 뜰때 정말 이프로그램 쓰면 직방이다 ㅜㅜ
이 프로그램짤때도 무한 세그멘테이션 폴트 때문에 애먹는데........
왜 대체가, 전혀~ 에러를 먹어서는 안되는 함수에서 틀렸다고 나오니... 그쪽에서만 틀린거 찾고 있었는데..
(뭐 gdb에서의 bt,run,명령어 만으로 찾아내기는 무리였을지도 모르겠지만...........)
이녀석쓰니깐 해결 해결~~
Segmentation Fault! 조금이라도 줄여보자...
그리고 세그멘테이션 오류가 나지 않는다고 하더라도,
valgrind를 이용해서
혹시모르는 에러가 발생하기 않도록 권고(?) 하는 바이다....
'Programming > C' 카테고리의 다른 글
Mpd 싱크 가사....... 프로그램 (8) | 2007.05.25 |
---|---|
간단한 양방향 linkedlist (6) | 2007.05.11 |
c언어로 구현한 mp3 태그(id3v2) 지우기 (6) | 2007.05.06 |
pointer 를 call by referance 하기 (6) | 2007.04.09 |
프로세스 갯수 알아내기.. (4) | 2007.03.06 |