'Programming/C'에 해당되는 글 22건

  1. 2008.01.24 오늘 할짓 없어서 한 뻘짓. (4)
  2. 2007.07.01 메모리 직접 접근의 유용성 (memcpy) (3)
  3. 2007.06.28 리눅스에서 2기가 이상인 파일에 접근하기 (4)
  4. 2007.05.25 Mpd 싱크 가사....... 프로그램 (8)
  5. 2007.05.11 간단한 양방향 linkedlist (6)

오늘 할짓 없어서 한 뻘짓.

사용자 삽입 이미지

Rss에서 신비로 게시판 올라온 자료들 확인할수 있게 conky에 추가!

(실시간 다운을 위해서??)

일단 그냥 따로 실행파일 만들어서 설정파일에서 따로 명령을 실행시키게 만들어놨다

execl인가  뭐 그걸로..

음.....C로 했는데 다해놓고 보니까 그냥 쉘 스크립트로 할수도 있겠구나 싶었다..

(맞다! curl도 있구나!)

wget으로 받은다음 sed같은거 써서 출력하게 해도 됬었을 텐데

괜히 소켓쓰고 파일받고 문자열 파싱한다고 뻘짓했다..............

(뭐 로케일 변환 빼면 전에 다 만든거라 새루 한건 별루없;;)

그러고보니,,,,,,,,아 오늘이 아니고 인제 어제구나...........

포스팅은 해야겠고 올릴글은 업ㅂ어서 ...
Trackback 0 Comment 4
  1. Favicon of http://sakuragi.org BlogIcon sakuragi 2008.01.24 01:21 address edit & del reply

    날로 범접하지 못 할 영역으로 가시는 군요. :)

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2008.01.25 19:07 신고 address edit & del

      사쿠라기님도 잘하시면서 이런말씀을 ..ㅋ

  2. Favicon of https://khmirage.tistory.com BlogIcon 환상경 2008.01.24 12:54 신고 address edit & del reply

    이런 굇수님을 봤나 -_-
    할줄아는거 암것도 없다더니
    C는 무어고 소켓은 무어란 말입니까 -_-
    로이드님은 그짓말쟁이!!!!

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2008.01.25 19:08 신고 address edit & del

      그냥 전에 쓰던거 가지고 온거라니깐요~
      지금은 다 까먹어서 기억도 잘안나요 소켓..
      이번학기때 네트워크 배워서 한번 더 보긴 해야겠는데..

메모리 직접 접근의 유용성 (memcpy)


Before
전형적인 막장짓..
초기화 -> 거꾸로 값 받아서 배열에 삽입 -> 포맷에 맞게 sprintf를 써서 -> 문자열로 만들고
-> 그걸다시 sscanf써서 -> 정수로 변환후 -> 리턴..
unsigned int  atox(char *string)

     unsigned int ret;

     sscanf(string,"%x",&ret);

    return ret;
}

 unsigned int get_value(unsigned char *segment,int offset,int size)
{
    int i;
    char temp[size * 2 + 1];
    unsigned char dt[size];
    temp[size * 2] = '\0';

    for(i = 0;i < size;i ++)
        /* 리틀 엔디언 */
        dt[size - i - 1] = *(segment + offset + i);

    if(size == 1)
        sprintf(temp,"%02x",dt[0]);
    else if(size == 2)
        sprintf(temp,"%02x%02x",dt[0],dt[1]);
    else if(size == 3)
        sprintf(temp,"%02x%02x%02x",dt[0],dt[1],dt[2]);
    else if(size == 4)
        sprintf(temp,"%02x%02x%02x%02x",dt[0],dt[1],dt[2],dt[3]);

    return atox(temp);
}

After
몰라 걍 직접 집어넣어 버려....; 왜 진작 이걸 생각 못했을까?
역시 메모리에 직접 접근해서 하는게 더 편하다.
unsigned int get_value(unsigned char *segment,int offset,int size)
{
    int ts = 0;
  
    memcpy(&ts,segment + offset,size);

    return ts;
}

비슷하게 잘 작동하는듯 하다.... 좀 이상한가... 바꾸고 나니 왠지 불안하다...
값은 제대로 찍히는거 같은데.................

아 size가 클경우 overflow가 일어날수도 있을거 같은데.. 그거 처리도 해야하나?
근데...귀차나연...ㅋ
Trackback 0 Comment 3
  1. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2007.07.02 07:12 address edit & del reply

    엔디안!!!
    전 엔디안 아무리봐도 이해가 안되던데 T^T

    • lowid 2007.07.03 00:44 address edit & del

      저도 엔디언이 cpu가 읽는 순서차이인거 밖에 몰라요..
      Big은 우리들이 읽는 순서 Little은 그 반대..
      저의 지식은 여기까지..(근데 이것도 맞는건가?)

    • Favicon of https://heizelnut.tistory.com BlogIcon Heizelnut 2007.07.08 20:56 신고 address edit & del

      제가 알기로도
      Big은 정상 입력 Little은 거꾸로
      빅 엔디언은 ABC 이면 CPU에서 읽는것도 ABC고
      리틀 엔디언은 CBA 로 CPU가 읽는다고 알고있음.ㅋ

      putchar(); 함수로 ABC 출력해보면 빅이면 A만 나오고
      리틀이면 C가 출력되겠죠.ㅋㅋ

리눅스에서 2기가 이상인 파일에 접근하기


도스 테이블을 만지작거리는중.

이상하게 값들이 제대로 안들어가는거 같아서.. long long 의 형까지 써보면서 삽질을 해봤지만

안되길래 구글링.... 한 결과

"open,lseek,fopen같은 함수는 2G정도의 파일만 접근이 가능하다.."

는 걸 알아냈다..............

아마도  off_t 값의 범위 때문에 그럴지도?

해결방법은

open64,lseek64처럼 직접소스에 64를 추가시켜주거나

(이때는 따로 인클루드파일을 추가시켜주거나 OR   DEFINE을 해줘야하는듯)

D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64

를 Gcc컴파일할때 추가해주면 된다  (gcc 버전 3.4부터 된다는 말이 있는데?)

이리하면

/dev/hda같은 대용량 파일(?) 도 잘 처리가 된다..
Trackback 0 Comment 4
  1. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2007.06.28 19:03 address edit & del reply

    이런 굇수님!!!!

    • lowid 2007.06.29 01:35 address edit & del

      굇수말고 딴말도 해요 ~

    • Favicon of http://oseb.egloos.com BlogIcon oseb 2007.06.30 18:02 address edit & del

      그럼 잡스같은 교주가 좋겠군요.
      교주님!

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2007.07.02 01:07 신고 address edit & del

      교주라뇨 >_<

Mpd 싱크 가사....... 프로그램

이딴거 올려봤자 별루 보는사람도 얼마 없겠지만뭐.........

두번째 프로젝트(?) 인 주2>MPD 용 싱크가사 프로그램을 대충~ 완성했다.........

일단 되는 기능은 잘 된다.... 내부적으로 고칠건 좀 있는데....... 안그래도 잘 작동하는데 고치기는

귀찮고 해서 현재 놀면서 방치중~~~ 귀차나~ 귀차나~ 어디 딴짓이나 해볼까~ 하고 있는.............

이거에 대해서 간단히 설명하자면 원래 랜덤여신님이 만든 주3>amarok-live-lyrics

가 있는데.. 그 프로그램에 서버로부터 가져오는 주소값만 살짝 내 프로그램으로 받게 해서 만든것!

사실 "구태여 이렇게 따로 프로그램을 만들지 않더라도"

저 amarok-live-lyrics의 내용만 약간 바꾸면 (주4>dcop 대신 주5>mpc를 써서 한다던가............)

mpd용으로 사용할수 있건만............ 만들어본,........

주6> conky에서 주7>파이썬 안써보고 프로그램 만들어보려고요...

 또.......어짜피 배우는 입장이기도 하고........ ,c언어 예/복습도 할겸................ )

대략 프로그램 구조가......

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도 그렇다..) 
사실 뻘짓할 시간이 아까우니 원래 이런 라이브러리를 쓰는게 이익이겠지만...
공부도 함 해볼겸해서  걍 내가 뻘짓해가면서 만듦
Trackback 0 Comment 8
  1. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2007.05.25 19:14 address edit & del reply

    크흐흐흐흐 역시 천재님은 놀고계신게 아니셨군요 >_<

    전 이제 linkedlist를 이용한 Stack구현으로 인해 어지러울 지경이랍니다. -0-

    • lowid 2007.05.30 11:57 address edit & del

      제것도 좀 문제가 있는거 같아요..
      링크리스트 연결이 문제인지 자꾸 짤린다는거 ㅜ.
      왜이런지........

  2. Favicon of http://sakuragi.org BlogIcon sakuragi 2007.05.27 00:53 address edit & del reply

    저도 요즘은 Amarok 이고 뭐고 다 때려치고 그냥 Audacious 쓴다는...

    • lowid 2007.05.30 11:58 address edit & del

      audacious 가볍고 좋더군요(적어도 Amarok 보단!)
      그래도 벌써 mpd로 정착해 버린후라서 >_<

  3. Favicon of http://oseb.egloos.com BlogIcon oseb 2007.05.28 12:41 address edit & del reply

    "우리나라에서 MPD를 쓰는 사람이 몇이나되겠으며..."
    버럭! 즐겨쓰고 있는 놈인데... 요즘 유행이지 않나요?

    • lowid 2007.05.30 11:59 address edit & del

      oseb님도 MPD를 쓰시다뉩~
      흠..유행이였군요 몰랐어요.,.. );
      그래도 리눅스 자체를 쓴다는게 좀 마이너 하니까요..

  4. Favicon of https://lsm1987.tistory.com BlogIcon 에그 2007.06.15 18:39 신고 address edit & del reply

    알아들을 수 없다!! 비참하군 OTL ;ㅁ;

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2007.06.16 23:07 신고 address edit & del

      리눅스 사용자가 아니라면뭐 알아볼수 없는게
      그다지 이상한것도 아닌걸뭘...
      그리고 군대에서나마 배우는게 있지않아?

간단한 양방향 linkedlist

 
 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 }

간단한 linkedlist 당장 쓸때가 있어서

"아무것도 안보고 스스로 처음" 으로 만들어 봣다...

1년반전만해도 linkedlist짜는데 못짜가지고 막 배껴가갔던게 생각이 나네 ㅋㅋ

뭐 암튼간데  잘 작동하는듯하는데.. 글쎄 확실힌 모르겠다..

뭐낙 실수가 많아서..

일단 memory-leak은 안생기는거 같지만....

뭐누군가가 구글링을 하거나 해서 학교 숙제 도움이나 될까..

뭐 틀리다고 해도 내책임은 없다,.. =3 (이블로그에있는 모든 자료가 마찬가지!)

--07-5-12-1시 30분 더 알아보기 쉽게 수정--
Trackback 0 Comment 6
  1. Favicon of http://sakuragi.org BlogIcon sakuragi 2007.05.11 22:31 address edit & del reply

    전 아직도 '아무것도 안보고 스스로' 링키드 리스트 못짜요. 항상 보고 짠답니다. -_-;;;

    • lowid 2007.05.11 22:57 address edit & del

      에이 거짓말~
      다익스트라 알고리즘도 짜시면서 >_<

  2. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2007.05.13 10:59 address edit & del reply

    훠~ 천재;;;;
    저는 언제나 이론만 배우고 머리에 익혀서(암기해서 -_-) 직접 구현할줄은 전혀 모르는 ㅡㅜ

    덧붙이는 글)
    노란색이 너무 밝아서 무슨 글자인지 인식이 잘안되옵나이다 ^^;;;

    • lowid 2007.05.14 01:30 address edit & del

      다들 왜 그러세여 -_-;
      암기도 돼면 직접 구현도 되겠져멀...
      덧> 박스 색깔이 어중간해서 ㅜ 따른색으로 바꿔볼께요.

  3. san 2007.05.24 02:41 address edit & del reply

    테마바꿨네요 산뜻 ㅇㅅㅇ

    • lowid 2007.05.25 17:56 address edit & del

      테마는 저번게 이상한거 같아서 새롭게 바꿔봤어요..
      다른거 또 좋은거 나오면 그것으로 또 옮겨갈까
      생각중이기도 하고 ~

prev 1 2 3 4 5 next