Changes between Initial Version and Version 1 of Requirements/Logging


Ignore:
Timestamp:
02/01/13 23:12:53 (12 years ago)
Author:
cheese
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Requirements/Logging

    v1 v1  
     1== 1차 ==
     2{{{
     3장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     41. 버퍼링
     52. 다중 아웃풋 [될거 같고]
     63. 캐릭터 인코딩
     74. 로깅 시간 [당연한거고]
     85. 프리픽스 [오류 타입]
     96. 스레드 세이프 [될거 같고]
     10....3번이 귀찮을거 같고
     111번은 당장 떠오르는게 없네요 음
     12혹시
     13stdout 처럼
     14버퍼에 있다가
     15훅 쓰는
     16그런걸 말씀하시는건가요?
     17
     18김락현([락현]) 님의 말 :
     19
     20걍 내부 버퍼를 가지고 있는 거지.
     21api셋팅으로 할수 있고..
     221m를 가지고 있으면...
     23계속 쌓다가 1m가 다 차면 파일에 write.
     24파일 io를 줄이니 성능을 높일 수 있지
     25
     26장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     27
     28사이즈 체크를
     29어떻게 하느냐가..
     30관건이네요 음
     31
     32김락현([락현]) 님의 말 :
     33다만 로그의 특성상 아까 말했듯이 api를 call하는 시점에 반드시 기록할수도 있는 거고.
     34
     35장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     36허흠
     37이런 경우가 좀 고민스러운데
     38stl::vector 같은거 쓰면 메모리가 알아서 관리되니 좋지만..
     39직접 만들면
     40용량이 얼마나 더 들어올지 알 수가 없으니
     41만들기가 좀 골아프더라구요
     42
     43김락현([락현]) 님의 말 :
     44용량이 얼마나 더 들어올지?
     45
     46장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     47
     48그러니까
     49로그 버퍼를 예로 들면
     501M 가 이상되면 쓸건데.
     511mb 이상 을 받아야 하니
     52
     53김락현([락현]) 님의 말 :
     54초기 입력값으로 받는 거지~
     55
     56장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     571.1mb 를 버퍼로 잡아놨는데
     58음?
     59
     60몇 이상되면 써라 이런거요?
     61
     62김락현([락현]) 님의 말 :
     63ㅇㅇ
     64
     65장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     66네 그렇게 해도 고민인게;
     67여유 공간을
     68얼마나 잡아야 하는건지;
     69
     70김락현([락현]) 님의 말 :
     71음?
     72
     73장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     741MB 이상되면 써라
     75
     76김락현([락현]) 님의 말 :
     771M를 크리고 잡았다면
     78
     79장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     80라고 설정을 해놨는데
     811MB 넘게....
     82
     83
     84김락현([락현]) 님의 말 :
     851M가 넘어가는 시점에 쉬프트 시켜주면 되는 거얌
     86
     87장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     88
     89들어온거 포함해서 1메가 넘으면 지금 들어온거 받지말고, 파일에 쓰고나서 들어온걸 버퍼에 푸쉬하는
     90아...이렇게 해도 되겠구나
     91
     92김락현([락현]) 님의 말 :
     93음 그런거지
     94편하게.. 1000이라는 사이즈가 버퍼크기라면..
     95보통 입력으로 10~30으로 온다 치고( 물론 한계는 없고)
     96현재 버퍼의 크기가 998이고
     9710이 들어오면
     98998+2 만큼 기록하고
     998이 다시 버퍼의 젤 처음이 되는 거야
     100내가 생각한건 이런 식임.. -_-
     101
     102장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     103
     104length를 가지고 있으면
     105out (buffer + length, formatted-string, arg1, ...)
     106이런식으로 해도 될건 같은데
     107근데 10이 들어오면 왜 +2 인가요?
     108
     109김락현([락현]) 님의 말 :
     110버퍼크기가 1000이고 현재 998만큼 기록되어 있으니
     111블록 단위로 기록하기 위해서 +2만큼 더 기록해 주는 거지...
     112보통 버퍼링을 할때는.... 하드의 클러스터 단위인 1024KB(또는 그의 배수나 약수)를 기준으로 버퍼 크기를 잡고..
     113block단위로 i/o를 발생시켜 주는게 최고의 성능을 낼수 있어.
     114
     115장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     116아 현재 버퍼의 크기가 998 이고
     117이게
     118지금 남은 버퍼가 998 이라는 말씀이신줄 ㅋㅋ
     119지금 버퍼에 들어있는 데이터의 크기가 998이라는 말씀이셨군요
     120
     121김락현([락현]) 님의 말 :
     122아 998만큼 차 있다고~
     123ㅇㅇ
     124
     125장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     126음음 적어놔야지
     127
     128김락현([락현]) 님의 말 :
     129음음? 별거 아닌건데~ -_-
     130
     131장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     132근데
     1331024kb 가
     134클러스터 단위예요?
     1351메가네;
     136클러스터가 꽤 크네요;
     137
     138김락현([락현]) 님의 말 :
     139더 작지~
     140
     141장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     142ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
     143
     144김락현([락현]) 님의 말 :
     145256이여던가..
     146까먹었어
     147
     148장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     1492 진수의 배우소
     150배수로
     151만들라는
     152말씀이신듯
     1532^8 이상의 배수로 만들면
     154되겠네요 으헤헤
     155
     156김락현([락현]) 님의 말 :
     157ㅇㅇ
     158
     159장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     160캐릭터 인코딩은..
     161
     162
     163김락현([락현]) 님의 말 :
     164파일 등록 정보 볼때 파일 사이즈랑 디스크 할당 크기를 보면 알수 있는데
     165
     166장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     167찾아야겠네요
     168
     169김락현([락현]) 님의 말 :
     1704k네
     171
     172장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     173근데 캐릭터 인코딩하면
     174버퍼 동적할당으로 새로 잡고
     175인코딩바꾸고
     176쓰고 하면
     177속도는 당연히
     178
     179김락현([락현]) 님의 말 :
     180응 귀찮겠다
     181
     182장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     183배이상 느려지겠죠 음
     184
     185김락현([락현]) 님의 말 :
     186하지말자
     187걍 multibyte로 입력.
     188char 버퍼로 입력받고..
     189사이즈랑 메모리 받아서
     190사이즈만큼 메모리 기록.
     191쿨하고 좋다.
     192}}}
     193
     194== 2차 ==
     195{{{
     196김락현([락현]) 님의 말 :
     197뭐가 문제임?
     198
     199장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     200
     201
     202말씀해주셨떤거 중에..
     203파일 시스템 블록 단위로 쓰는게
     204퍼포먼스가 가장 좋다고 하셨잖아요
     205
     206김락현([락현]) 님의 말 :
     207ㅇㅇ 그렇쥐.
     208
     209장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     210근데 사용자가 버퍼 사이즈를 파일 시스템 블록 배수로 안맞춰서 넣는 경우는
     211사용자 버퍼 사이즈만큼 찼을 때 쓰나요
     212클러스터 배수가 되면 쓰나요??
     213
     214김락현([락현]) 님의 말 :
     215사용자의 버퍼사이즈~
     216
     217장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     218
     219그렇게 되면
     220파일 시스템 블록사이즈는
     221구현 물 상에서는
     222고려하지 않게 되는건데..
     223
     224김락현([락현]) 님의 말 :
     225응 맞어.
     226
     227장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     228으앜
     229
     230김락현([락현]) 님의 말 :
     231쓰는 사람이 잘 써야해
     232
     233장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     234ㅋㅋ
     235ㅋㅋㅋㅋㅋㅋㅋㅋ
     236
     237김락현([락현]) 님의 말 :
     238이건 뭐랄까 개발의 정책에 관련된 문제인데...
     239라이브러리를 개발하는 거자나?
     240
     241장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     242
     243
     244김락현([락현]) 님의 말 :
     245물론 내가 만들어 내가 쓰는 거긴 하지만..
     246
     247장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     248라이브러리는 쓰는 놈이 어느정도 커버 쳐가면서 써야하는건 맞는거 같은데..
     249
     250김락현([락현]) 님의 말 :
     251기본적으로는 내가 모르는 사람이 쓴다고 가정했을때...
     252
     253장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     254
     255
     256김락현([락현]) 님의 말 :
     257분명히 파라메터로 값을 명시하고 있으니..
     258라이브러리는 시킨대로 하는게 맞지 않을까?
     259
     260장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     261흠 퍼포먼스는 올리고 싶은데
     262그렇다고 로그 모듈에서 파일 시스템 블록 사이즈를 알 수 있는 인터페이스를 뚫는 것도 좀..
     263이상한거 같고
     264 ㅋㅋ
     265
     266김락현([락현]) 님의 말 :
     267물론 ceiling( 니가 인풋한 사이즈, 2^n)의 형태로 버퍼링 하는 것도 가능하지.
     268
     269장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     270??
     271그게 머에요??
     272
     273김락현([락현]) 님의 말 :
     274하지만 나의 관점은... 개발의 복잡도(스팩을 비롯하여.. )를 너무 높히는 것은 정신건강에 매우 안좋음..
     275
     276장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     277
     278첨엔
     279사용자가 지정한 버퍼 이내에서
     280가장 큰
     281블록 사이즈의 배수
     282만큼 쓰려고 했는데
     283그것도 좀...
     284이상한거 같고 해서
     285
     286김락현([락현]) 님의 말 :
     287ㅇㅇ
     288만약 그렇게 하려면... 그렇게 할지 말지 여부를 별도 비트 플래그 옵션등으로 받아야 하지 않을까 싶어.
     289내 기준엔.
     290졸라 복잡하자나?
     291안그래도 머리 아픈 세상인데.
     292
     293장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     294
     295그럼
     296비트플래그로
     297만들 때
     298버퍼를
     299내가 지정한 값 이내에서 가장 큰 버퍼 사이즈를 찾으세요
     300라고
     301?
     302하면되나요
     303내가 제시한 값 이내에서 가장 큰 블록 사이즈의 배수를 버퍼로 잡아라
     304
     305김락현([락현]) 님의 말 :
     306응 그렇게 하는게 스팩상으로는 명확하나..
     307
     308장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     309라고..
     310
     311김락현([락현]) 님의 말 :
     312나같음 안해
     313
     314장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     315ㅋㅋㅋ
     316구현은
     317
     318김락현([락현]) 님의 말 :
     319걍 입력한 값으로 버퍼링 하지.
     320
     321장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     322안어려운데
     323이상하네요 뭔가
     324
     325결국
     326퍼포먼스 따윈
     327
     328김락현([락현]) 님의 말 :
     329니가 버퍼링에 관한 지식이 있는 개발자야..
     330
     331장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     332밥말아 먹는건가
     333
     334김락현([락현]) 님의 말 :
     335당연히 그렇게 사이즈를 주지 않겠니?
     336
     337장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     338.....그..그렇겠죠?
     339
     340
     341김락현([락현]) 님의 말 :
     342나 같으면 차라리 default사이즈로 해라라는 옵션을 줘서..
     343그럴때만 개발자 기준의 최선의 사이즈를 구하겠어.
     344
     345장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     346디폴트도 생각해 봤는데요
     347시스템 스펙이나 여유 리소스가 얼마나 있는지 모르는 상태에서
     348내 맘대로 몇배나 잡을지도 참
     349기준이 애매한거 같아서..
     350
     351김락현([락현]) 님의 말 :
     352128K /
     353
     354장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     355
     356
     357
     358김락현([락현]) 님의 말 :
     359아니면 256K정도?
     360
     361장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     362머드라
     363win32가
     364cluster default size가
     3654096 바이트였나
     366그렇던데
     3674k
     368
     369김락현([락현]) 님의 말 :
     370
     371버퍼사이즈 mod 4k가 0인...
     372버퍼사이즈를 구하면 되자나
     373그리고 당연히 클수록 좋은 거구...
     374
     375장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     376그렇죠..
     377
     378128k 면
     379128 * 1024
     38012만인데 대충
     38112만 글자가 차야
     382쓰는거네요
     383그렇게 보니 디게 많아보이네
     384
     385김락현([락현]) 님의 말 :
     386로그의 특성상.. 적절한 flush가 필요하다고 생각해야 하는게 중론이야..
     387사용자가 이건 실시간의 필요성으 없다 판단되는 로그면 1M이상 막 넣는거고..
     388이건 졸라 바로 바로 봐야 한다 그러면 0으로 셋팅해서 바로 write하는 거고..
     389그건 api를 사용하는 사람의 판단에 맡겨야지.
     390물론 내가 만들고 내가 쓰긴 하지만. ㅋ
     391
     392장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     393아 0으로 셋팅하면 바로 군요;;ㅣ
     394
     395
     396김락현([락현]) 님의 말 :
     397그래서 lib제작이 어려운 거임
     398
     399장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     400그렇군
     401
     402김락현([락현]) 님의 말 :
     403개발이 어려운게 아니고..
     404요구사항이 다르거든.
     405
     406장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     407고려사항이 많네요
     408
     409김락현([락현]) 님의 말 :
     410ㅇㅇ
     411개발자 중심으로 생각하면 안되...
     412개발자 중심으로 생각하면 퍼포먼스에 대한 욕심이 생겨서..
     413
     414장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     415default 사이즈로 설정하는 플래그를
     416만들어야겠군요
     417multi threading 플래그만 했었는데 흠
     418
     419김락현([락현]) 님의 말 :
     420나라면..
     421버퍼 사이즈입력받는 변수를 singed로 해서..
     422-1을 입력하면 default 사이즈를 넣게..
     423아니다. CPP을 사용하며..
     424default변수를 지정하게 하는 방법도 좋겠네
     425두개 다하면 되겠다.
     426protytype에..
     427
     428장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     429근데
     430c++을 ㅏㅅ용하면
     431
     432김락현([락현]) 님의 말 :
     433예를 들어.. LogInitialize( 블라블라, long lLogBufferSize = DEFAULT_LOG_SIZE)
     434
     435장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     436라이브러로 못쓰지 않ㄴ..
     437
     438김락현([락현]) 님의 말 :
     439정도?
     440
     441장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     442
     443cpp로 해놓고..
     444어차피 함수 타입이니..
     445그냥 되겠구나..
     446
     447
     448김락현([락현]) 님의 말 :
     449맹글링만 c로 해도되고..
     450
     451장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     452디폴트 인수를
     453쓰고 싶을때가 졸라 많은데
     454c++로 하긴 싫고 해서 ㅋㅋ
     455안했거든요 항상
     456아 근데..음
     457
     458김락현([락현]) 님의 말 :
     459c로 하고
     460
     461장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     462만약
     463
     464
     465
     466김락현([락현]) 님의 말 :
     467그럼 프로토 타입에 설명을 잘 달아 놓음 되지
     468
     469장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     470디폴트 값 있잖아요
     471그거 header에
     472선언할 때
     473써주는거 아닌가요
     474근데 그럼 c-type 프로그램 만들면서 가져다 쓸땐
     475빌드 안될꺼 같은데..
     476
     477김락현([락현]) 님의 말 :
     478음 그러겠네
     479
     480장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     481지금
     482파라미터 받는게
     483로그 파일 full path ,
     484buffer size
     485multi threading flag?
     486이렇게 였는데
     487mt boolean flag로.
     488세개.
     489
     490김락현([락현]) 님의 말 :
     491multithread로 사용할지 안할지를..
     492lib에서 flag로 인지해야 하는 거야?
     493
     494장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     495
     496그게
     497무조건 mt 에 대비하려고 하면요
     498mutex를 무조건 걸어야되는건데
     499멀티스레딩 아니고
     500
     501김락현([락현]) 님의 말 :
     502퍼포먼스땜에?
     503
     504장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     505
     506원래
     507멀티 스레딩인데
     508개발자가 디버깅용으로 싱글 스레딩으로 돌리는 경우
     509도 있잖아요
     510이럴땐 오히려
     511방해되지 않나 해서..
     512
     513김락현([락현]) 님의 말 :
     514나라면...
     515
     516장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     517그런 경우도 있지만 디버깅때 퍼포먼스 신경은 좀 오버고
     518싱글 스레드 어플리케이션인데 굳이 뮤텍스 걸 필요 있나 라는 생각도..
     519
     520김락현([락현]) 님의 말 :
     521multithread용 api를 별도로 만듬.
     522
     523장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     524.......
     525
     526
     527김락현([락현]) 님의 말 :
     528스탈이니깐 정답이라는 소리는 아니고..
     529
     530장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     531아 그러고보니
     532
     533김락현([락현]) 님의 말 :
     534LoggingApi만들고.
     535mLoggingApI를 별도로 제작.
     536
     537장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     538MT용 은 따로 있는 거도 많이..
     539봤네
     540왜 그생각을 못했지
     541
     542김락현([락현]) 님의 말 :
     543거기서는 LoggingApI를 만들고 뮤텍스만 걸어줌.
     544만들고->호출하고
     545
     546장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     547네네
     548
     549김락현([락현]) 님의 말 :
     550ㅇㅇ.
     551
     552장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     553
     554
     555컨텍스트도
     556MT 용 따로 해야겠네 흠
     557아니 컨텍스트가 아니고
     558컨텍스트 생성하는 함수를..
     559
     560김락현([락현]) 님의 말 :
     561ㅇㅇ.
     562
     563장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     564거기선
     565create mutex 만
     566하면
     567되겠지
     568
     569
     570김락현([락현]) 님의 말 :
     571고렇쥐.
     572
     573장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     574fs 블록 사이즈 물어보려다
     575엄한거 ㅁ좋은거 많이 듣네욬
     576ㅋㅋㅋㅋㅋㅋ
     577memsize 는 default memory 로 넣어서 하면 128k로 하도록 하고..
     578
     579김락현([락현]) 님의 말 :
     580ㅋㅋㅋ
     581
     582장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     583
     584로그가
     58512만 글자면
     586적은편인가요
     587많은 편인가요?
     588
     589김락현([락현]) 님의 말 :
     590그런건 신경 쓰지 마
     591
     592장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     593...
     594ㅋㅋㅋㅋ
     59564k 로 할까
     596싶어서 ㅋㅋ
     59764k 해야지
     598
     599김락현([락현]) 님의 말 :
     600굳이 하고 싶다면... 니가 지금 만드는 프로그램에 꼽을 생각하고..
     601거기에서 얼마나 쓰는지를 기준으로 만들어.
     602
     603장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     604
     605전 로그는 안남기는ㄷ.........
     606......
     607ㅋㅋ
     608
     609김락현([락현]) 님의 말 :
     610그러냐 ㅋㅋㅋ
     611이게 좀 기능이 확장이 되면..
     612디버그 포트를 통해서 출력하거나..
     613네트워크 전송등도 하면 잼날거 같은데..
     614
     615장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     616디버그 포트 ?
     617가 뭔가요?
     618
     619김락현([락현]) 님의 말 :
     620그쯤되면 이미 개 빡세지므로...
     621
     622장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     623아 시리얼 포트 같은 다른 i/o 인가
     624
     625
     626김락현([락현]) 님의 말 :
     627비졀 스튜디오로 코딩할때....
     628
     629장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     630
     631
     632김락현([락현]) 님의 말 :
     633밑에 출력창에 나오는거 있자나
     634
     635장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     636debug window?
     637인가
     638
     639김락현([락현]) 님의 말 :
     640ㅇㅇ
     641뭐 그런거.
     642
     643장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     644
     645그거
     646해보고 싶
     647었으나
     648....
     649ㅋㅋ
     650
     651김락현([락현]) 님의 말 :
     652개발자 입장에서는 편하겠지? ㅋㅋ
     653
     654장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     655그렇죠 ㅋㅋ
     656
     657김락현([락현]) 님의 말 :
     658암튼..
     659그런건 난중에..
     660
     661장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     662네네 감사합니다 ㅋ
     663
     664김락현([락현]) 님의 말 :
     665심심하면 내가 만들께
     666
     667장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     668....
     669제가 형이 만드시기 편하도록
     670설계를 잘 해야 하지만
     671제가 설계 능력까진 안되서
     672ㅋㅋㅋㅋ
     673
     674김락현([락현]) 님의 말 :
     675뭐 대충 짜면 되지 멀
     676일하는거 아니니깐 즐겁게
     677
     678장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     679ㅋㅋ
     680즐거운 고민
     681ㅋㅋ
     682
     683김락현([락현]) 님의 말 :
     684음.. 참고로....
     685핸들 관리를 할때.. 사용자가 handle값을 관리하게 하기보다는...
     686걍 int형 변수로 구분할게 할수 있으면..
     687사용성이 향상되지..
     688무슨 말이냐면...
     689만약 handle *pHandle;이고
     690Logging( pHandle, 블라블라... )형식이라 가정하면 api사용자가 pHandle값을 계속 관리를 해줘야 하자나
     691
     692장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     693
     694
     695김락현([락현]) 님의 말 :
     696Logging( int Logid, 블라블라 ... )형태로 해 놓으면..
     697
     698장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     699
     700구조체로 context 만들어서
     701갖고 있게 했는데..
     702
     703김락현([락현]) 님의 말 :
     704디파인 값으로 처리해 노고 import, export를 매우 쉽게 할수 있지
     705구조체로 context를 가지고 있게 하고..
     706그건 내부에서 관리하고..
     707
     708장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     709어 음
     710
     711김락현([락현]) 님의 말 :
     712context <-> logid를 맵핑할수 있는 로직이 있어야 겠지..
     713
     714장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     715
     716
     717
     718김락현([락현]) 님의 말 :
     719logid가 중복되지 않게 처리하는 약간의 관리로직도 필요하고...
     720
     721장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     722
     723import export 가 쉽다는건
     724어떤건가요??
     725
     726김락현([락현]) 님의 말 :
     727lib사용자가 개발하는 하는데.. 소스파일이 10개가 있다면...
     728전역변수로 처리하던지 인자로 받던지 핸들값을 받아야 하자나
     729
     730장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     731
     732
     733김락현([락현]) 님의 말 :
     734그걸 정수형으로 한다면 좀더 편하게 할수 있다는 말.
     735
     736장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     737
     738그게 정수로 하는거랑
     739어드레스로 하는거랑
     740구현의 용이성 측면에서
     741차이가 있나요??
     742
     743김락현([락현]) 님의 말 :
     744사용자 입장에서?
     745
     746장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     747네 라이브러리 사용자 입장에서
     748라이브러리를 이용하는 개발자 입장이죠
     749
     750김락현([락현]) 님의 말 :
     751ㅇㅇ
     752
     753장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     754
     755
     756지금
     757잠깐 구조를
     758말씀드리면..
     759
     760김락현([락현]) 님의 말 :
     761직관성면에서 큰 차이가 남.
     762
     763장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     764일단 간단하게 말씀드려볼게요
     765context = create_context (...);
     766
     767...
     768
     769/* 로그 쓰기 */
     770log_write (context, 메시지.....);
     771
     772log_flush (context);
     773
     774/* 로그 이제 안쓸꺼면 */
     775log_destory_context (context);
     776이런식이거든요
     777
     778김락현([락현]) 님의 말 :
     779ㅇㅇ
     780
     781장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     782직관성 면에서 차이가 난다고 하신게..
     783int local_logid = param_logid;
     784이거랑
     785context local_ctx = param_ctx;
     786이정도 차이일거 같은데
     787
     788
     789김락현([락현]) 님의 말 :
     790개발을 하다보면....
     791예상치 못했던 곳에 로그를 찍어 보고 싶은 상황이 생기 않을까?
     792나라면.....
     793#define LOGID_MAIN 1, #define LOGID_DEBUG 2
     794라고 해 놓고.
     795
     796장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     797....
     798
     799김락현([락현]) 님의 말 :
     800WRITELOG( LOGID_DEBUG, 블라븝라.. )
     801라고 편하게 찍어 보고 싶을 것 같아.
     802뭐 로그ID를 글로별 변수로 처리해 놓고 하면 큰 차이는 없겠구나.
     803
     804장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     805
     806
     807김락현([락현]) 님의 말 :
     808잠깐 생각해보면..
     809
     810장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     811저렇게 하면요
     812로 그아이디도 제가 지정해 줄 수 있어야 하는거네요 그럼
     813
     814김락현([락현]) 님의 말 :
     815LOGINIT( 변수, "셋팅할 로그아이디");
     816ㅇㅇ
     817
     818장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     819그래야 저 상수 값이 유효할텐데
     820
     821김락현([락현]) 님의 말 :
     822맞어
     823CLOSELOG( "셋팅한 로그아이디" );
     824CLOSELOGALL();
     825정도?
     826그리고 LIB 사용자는 래퍼 함수를 만들어서...
     827
     828장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     829
     830형이라면 그럼
     831상수 값을
     832
     833김락현([락현]) 님의 말 :
     834WRITELOG ( LOGID1 | LOGID2, "블라블라.. )
     835
     836장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     837어떻게 관리하시겟어요??
     838
     839김락현([락현]) 님의 말 :
     840도 좋겠군.
     841나라면 당연히 상수값으로 처리하지.
     842
     843장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     844그니까 음
     845저 상수로
     846아까
     847
     848id 값과
     849로그 파일 같은 그런 정보들과의 매핑
     850
     851어떤 방식으로 처리하실거 같냐는...
     852저거 리스트 형식으로 만들면 매번 loop 돌아야되서 안될거고
     853
     854김락현([락현]) 님의 말 :
     855쬐그마한 맵을 만들어.
     856
     857장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     858로그 아이디 만들 때
     859동적할당으로 아이디 값 만큼 만들어서
     860배열 처리하면
     861속도는 잘 나올거 같은데..
     862
     863김락현([락현]) 님의 말 :
     864ㅇㅇ
     865
     866장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     867아이디라....
     868
     869
     870김락현([락현]) 님의 말 :
     871어차피 4바이트 변수로 하면 되니깐..
     872100개 정도 디파인해 놓고 걍 쓰면 되지
     873100개 이상 만들면 에러 처리
     874
     875장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     8764바이트 변수로 아이디값 지정하게 하려면 OR 연산으로 지정하는건 골아플거 같고
     877
     878김락현([락현]) 님의 말 :
     879그건 lib 사용자가 하라고 하고
     880
     881장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     882하아
     883
     884
     885김락현([락현]) 님의 말 :
     886lib입장에서는 그런것까지 신경쓸 필요는 업음.
     887
     888장재훈({재훈, 뮤스군} Alicization) 님의 말 :
     889
     890
     891김락현([락현]) 님의 말 :
     892멀티 로깅은 logid를 배타적으로 만들어야 한다는 전제가 있어야 쉽게 구현가능하기 땜시
     893}}}
     894