Linux API/network2009. 6. 25. 19:40
말그대로 라인을 얻어오는 함수이다.

SYNOPSIS
       #define _GNU_SOURCE
       #include <stdio.h>

       ssize_t getline(char **lineptr, size_t *n, FILE *stream);
       ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);

DESCRIPTION
       getline()  reads an entire line from stream, storing the address of the buffer containing the text into *lineptr.
       The buffer is null-terminated and includes the newline character, if one was found.

       If *lineptr is NULL, then getline() will allocate a buffer for storing the line, which should  be  freed  by  the
       user  program.   Alternatively,  before calling getline(), *lineptr can contain a pointer to a malloc()-allocated
       buffer *n bytes in size. If the buffer is not large enough to hold the line, getline() resizes it with realloc(),
       updating  *lineptr  and *n as necessary. In either case, on a successful call, *lineptr and *n will be updated to
       reflect the buffer address and allocated size respectively.

       getdelim() works like getline(), except a line delimiter other than newline can be  specified  as  the  delimiter
       argument. As with getline(), a delimiter character is not added if one was not present in the input before end of
       file was reached.

함수형을 보면, 파일에서 한줄씩(그러니까 CR/LF 까지) 읽어 오는데,
주의해야 할 점은, getline() 함수 내부적으로 malloc()를 호출 한다는 것이다.
즉, 만약에 malloc()을 해주지 않으려면, NULL 값인 포인터를 넘겨주면
알아서 malloc() 하거나 realloc() 해주므로 많은 신경을 쓰지 않아도 된다.

단, 마지막 getline() 호출 후, 사용이 끝나면 반드시 free()를 해주어야 한다.

[링크 : http://linux.die.net/man/3/getline]
Posted by 구차니
아이디어!2009. 6. 25. 15:55
누가 이거 개발해서 특허내면 대박날 듯?!
근데 도대체 왜 냄새가 나는거지?
Posted by 구차니
적절한 제목이 안떠오르는데..
아무튼, 특정 이미지를 특정 사이즈의 사각형(Rectangle) 에 맞도록 출력해주는 일이 있는데
예를들면 탐색끼의 미리보기처럼, 100x100사이즈의 미리보기에 어떠한 크기의 이미지가 오더라도
벗어나지 않도록 적절한 크기의 이미지를 출력해주는 함수가 필요했다.

한달정도 깔끔한 알고리즘을 고심하다가 GG치고 다른 방법으로 구현했었는데
약간의 오작동을 보여서, 또 다시 고민을 하다가 어제 퇴근길 지하철에서 !! 했다.


#define min(a,b)    (((a) < (b)) ? (a) : (b))
#define max(a,b)    (((a) < (b)) ? (b) : (a))
#define FALSE               0 
#define TRUE                1 

#define CALC_MULTIPLIER	1000

typedef struct tagRECT {
	int		x1, y1, x2, y2;
} RECT;

RECT getRectsize(RECT dispRect, RECT imgRect)
{
	RECT ret;
	unsigned int Rx, Ry;
	unsigned char bhorAxis = FALSE;
	unsigned char bscale = FALSE;
	
	Rx = imgRect.x2 * CALC_MULTIPLIER / dispRect.x2;
	Ry = imgRect.y2 * CALC_MULTIPLIER / dispRect.y2;
	if(min(Rx,Ry) > CALC_MULTIPLIER)
	{
		if(Rx > Ry)
			bhorAxis = TRUE;
		else	bhorAxis = FALSE;
		bscale = TRUE;
	}
	else if(max(Rx,Ry) > CALC_MULTIPLIER)
	{
		if(Rx > Ry)
			bhorAxis = TRUE;
		else	bhorAxis = FALSE;
		bscale = TRUE;
	}

	if(bscale == TRUE)
	{
		if(bhorAxis == TRUE)
		{
			ret.x2 = dispRect.x2;
			ret.y2 = imgRect.y2 * dispRect.x2 / imgRect.x2;
			ret.x1 = dispRect.x1;
			ret.y1 = dispRect.y1 + (dispRect.y2 - ret.y2) / 2;
		}
		else
		{
			ret.y2 = dispRect.y2;
			ret.x2 = imgRect.x2 * dispRect.y2 / imgRect.y2;
			ret.x1 = dispRect.x1 + (dispRect.x2 - ret.x2) / 2;
			ret.y1 = dispRect.y1;
		}
	}
	else
	{
		ret.x2 = imgRect.x2;
		ret.y2 = imgRect.y2;
		ret.x1 = dispRect.x1 + (dispRect.x2 - imgRect.x2) / 2;
		ret.y1 = dispRect.x2 + (dispRect.y2 - imgRect.y2) / 2;
	}
	return ret;
}


간단한 구현원리는

1. 가로길이의 비율, 세로길이의 비율을 얻는다. (원본 크기 / 넣어야 할 크기)
   Rx, Ry - 가로 세율의 비율
   Ix, Iy - 원본 이미지의 가로세로 크기
   Dx, Dy - 표시할 사각형의 크기
   Rx = Ix / Dx
   Ry = Iy / Dy
2. 만약에 축소가 필요 하다면, 위의 비율은 1을 넘게 되고, 축소가 필요 없으면 1 이하가 나온다.
3. 비율값들이 모두 1을 넘으면 어느 방향이던지 간에 축소를 해주어야 함
4. 비율값들이 둘다 1이하면 그대로 출력하면 됨
5. 비율값이 하나만 1보다 크면, 작은쪽 값이 맞추어 축소함

'모종의 음모 > Bitmap 조작' 카테고리의 다른 글

완전 날로먹는 Bitmap 구조분석하기  (6) 2009.03.28
Posted by 구차니
개소리 왈왈2009. 6. 25. 10:01
웬지 캐공감.
난 역시 어쩔수 없는 공대생 이었던건가!!! OTL


공감 1. 복학하고 왔더니 후배가 더 삭아보이는 기현상이 -ㅁ-!
          선배인줄 알고 인사했더니 새내기!!! (그러니까 학번이 4학번 차이였는데 야들이 많이 힘들었냐? ㄱ-)

공감 2. 여자후배를 이용하여 밥 뜯어 먹기
          남자후배라고 해도 상관은 없지만, 이 치사한 것들이 한두넘 사줄려고 식당을 가다 보면
          저글링 한부대가 붙어버리는 기현상이 발생!
          그러고 보니.. 나름 여자동기를 악의 손아귀에서 보호하기 위한 노력이었나?

공감 3. 여신님 보호하기?
          후배중에 학과 CC였다가 헤어진 녀석이 있는데,
          헤어지고 나니 먼저 고백하자니 동기들 견제를 받고, 그래서 본의아니게 왕따가 되어버린 녀석
          선배로서 왕따로 지내는거 안쓰러워서 챙겨주었더니
          남자후배의 적으로 등극!!!
          어느샌가 이상한 소문도 퍼지기 시작하고 뒷조사는 안했지만 출처는 누구일지 뻔히 보이는 상황
          다음학기에는 열심히 학생회 할동도 하면서 동기들과 점점 멀어지더니
          다음학년에는 소리소문없이 사라짐 -ㅁ-

          ... 이 소심한 쉐키 그럼 먼저 고백이라도 해보던가!!! 왜 나만 나쁜넘 만드는겨!!


[링크 : http://bbs.cartoon.media.daum.net/gaia/do/debut/list?bbsId=c_short&sortKey=depth&searchKey=subject&searchValue=%EC%96%B4%EB%8A%90+%EA%B3%B5%EB%8C%80%EC%83%9D&x=0&y=0]

'개소리 왈왈' 카테고리의 다른 글

덥다..  (2) 2009.06.28
천백이 키보드 두둥!  (0) 2009.06.27
구글 애널리틱스 - 브라우저 점유율  (6) 2009.06.24
도를 아십니까?  (2) 2009.06.24
구차니 패닉  (10) 2009.06.20
Posted by 구차니
개소리 왈왈/자전거2009. 6. 25. 09:57
대충~ 속도계상에 표시된 거리는 42.195km(사소한건 패스)
그런데 편도 1시간 20분씩 왕복 2시간 40분 걸렸다.
...
어떻게 된게 자전거 타고 오는게 마라토너보다 느리냐 OTL





아무튼, 어제는 가락시장으로 나와서 한번 시도해보려던 길로 왔는데... 정말 오금이 저리고
손발이 오그라들정도로 가파른 경사로만 계속이어졌다...
속도계를 보면 8km ~ 10km 나오고 가끔은 속도계 속도 찍히지도 않을정도... OTL
이럴바에는 차라리 가락시장 사거리에서 삼성래미안 정도까지 조금 고생하고 평지로 가는게 낫지 않을까 싶다.

아무튼.. 집나가면 개고생이긴하다 OTL
Posted by 구차니
나도 6.25가 몇년도 발생했는지 모르니 남에게 머라고 할건덕지는 없지만.
많은건 몰라도 이것 하나만은 잊지말자.

국가가 약하면 타국의 침략을 받는다.
6.25는 북침이던 남침이던 그 사실을 떠나, 같은 민족끼리 처참하게 싸웠던 비극이며
다시는 일어나서는 안 될 사건이다.

정치적 이데올로기에 의해서 남침이 북침이 될수도 있고, 북침이 남침이 될수도 있기에
(물론 북쪽에서 공격을 먼저 해왔다고 배워왔지만, 전쟁에 있어서 누가 먼저 발포했냐가 중요한가?)
이러한 것 보다는, 전쟁이 남긴 교훈을 잊지 말아야겠다.



6.25 전쟁의 사후처리는 소련과/미국의 냉전으로 인해 38선이 그어지게 되었고,
실질적인 경제적 이익은 일본이 얻게되어, 6.25로 소비된 돈은 일본 경제의 밑걸음이 되었다.

우리나라 역시 베트남 전쟁의 반사이익을 얻어 발전하게 되었고,
우리나라가 그런 덕을 보고 발점하였다고 해서 정당화 될 수는 없는 것이다.
타인의 피로 일궈진 평화와 발전은, 언젠가 그대로 본인에게 돌아오게 될 것이다.



사족 : 6.25가 비극인것은, 수 많은 동포가 죽어간 것도 있지만
         약소국의 강대국에 의한 장난감으로 전락한 다는것도 큰 부분을 차지한다.
         역사에 만약은 없지만, 독립군이 제대로 투입되어 성공했고, 이승만이 정권을 잡지 않고 김구 선생님이
         초대 통일 대한민국의 대통령이 되었다면 지금처럼 소모적인 빨갱이, 좌파 우파 싸움도 많이 줄고
         친일파가 득세하여, 독립군의 후손들은 똥꼬가 찢어지도록 힘들게 살고 그 사실을 숨기게 되는 일이
         벌어지지 않게 되지 않았을까 하는 생각을 해본다.

         그렇기 때문에 더더욱 6.25를 잊어서는 안된다.
         그분과 그놈들로 부터 대한민국을 되찾기 위해서도 말이다.
Posted by 구차니
프로그램 사용2009. 6. 24. 18:28
증상 : 편집할 파일을 여는데 symbol window가 자동으로 열리지 않는 경우

아무생각없이 메뉴를 클릭한 상태에서 소스작업을 하다가 키를 연타로 누르는 바람에
창이 사라져서 어느창에서 변경되었는지 알수도 없고, 근 일주일간 해결책을 찾다가 포기한 상태에서
우연히 다시 찾게된 해결책이다. OTL

교훈 : 마우스는 안전한 곳에!


Step 1.
Option - Document Options 를 연다.

Step 2.
우측 하단의 Symbol Window의 체크를 켜준다.


Posted by 구차니
개소리 왈왈2009. 6. 24. 16:09

누가 머라고 해도 IE가 단연 1위이긴 하고 압도적이지만,
그래도 FF가 2위로 21%를 점유하고 있다. (이제 겨우 1주일 치 통계량이라서 아직 변동폭이 크다)
그 외에 크롬 찬양에도 불구하고 의외로 저조한 크롬의 점유율이다.(6%대, 하지만 기간으로는 대단한 점유율)


놀라운 사실(!)은 88%의 트래픽이 South Korea(한국) 을 차지하고 있음에도 불구하고
IE가 아닌 다른 브라우저가 도합 30%의 점유율을 보이고 있다는 사실이다.

'개소리 왈왈' 카테고리의 다른 글

천백이 키보드 두둥!  (0) 2009.06.27
어느 공대생 이야기 - 도전 만화가  (0) 2009.06.25
도를 아십니까?  (2) 2009.06.24
구차니 패닉  (10) 2009.06.20
개발자도 밥 시간은 지켜야지!!!  (2) 2009.06.19
Posted by 구차니
하드웨어2009. 6. 24. 14:16
뒤에 용어가 참.. 애매 모호한데 문서마다 이름이 다르다.

Wikipedia의 MAC 항목에서는


그냥 OUI / NIC로 표기 되어 있는데.. 뒤에 3바이트에 대해서는 딱히 이렇다 할 표현용어가 없다.

Manufacturer Identifier

CDPD System Specification Release 1.0 provides for the use of unique word in conjunction with Identity Assignment, Mobile Network Registration and Mobile Network Location messages. A unique EUI-48 word is a sequence of 48 bits. The high order 24 bits take the value of the company_id (assigned by the IEEE/RAC) and the following 24 bits are administered by the manufacturing identifier assignee in accordance with policies and procedures set forth by the CDPD Network Information Center.

[링크 : http://standards.ieee.org/regauth/oui/tutorials/cdpd.html]

|        company_id       |            extension identifier           | field
|addr+0 | addr+1 | addr+2 | addr+3 | addr+4 | addr+5 | addr+6 | addr+7| order
|  AC   |   DE   |   48   |   23   |   45   |   67   |   AB   |   CD  | hex
10101100 11011110 01001000 00100011 01000101 01100111 10101011 11001101 bits
|  |                                                               |  |
|  most significant byte                      least significant byte  |
most-significant bit                              least-significant bit

[링크 : http://standards.ieee.org/regauth/oui/tutorials/EUI48.html]

Byte\Bit

7

6

5

4

3

2

1

0

0

(MSB)

ieee oui

 

1

 

 

2

 

(LSB)

3

(MSB)

vendor-specific extension identifier

 

4

 

 

5

 

(LSB)


[링크 : http://standards.ieee.org/regauth/oui/tutorials/fibreformat.html]




아무튼 IEEE 의 OUI 관리 튜토리얼 링크를 확인해봐야 할 듯 하다.
[링크 :  http://standards.ieee.org/regauth/oui/tutorials/]

'하드웨어' 카테고리의 다른 글

VT-d  (0) 2009.07.30
multicast MAC Address  (2) 2009.07.02
CMOS IMAGE SENSOR - OV6620  (0) 2009.06.14
Winbond W78E family - ISP  (0) 2009.03.19
CLCD(Character LCD)의 CG-RAM(Character Generate)  (0) 2009.03.18
Posted by 구차니
개소리 왈왈2009. 6. 24. 12:05
우스개 소리로 제목을 적게되었지만,
그런 도인들을 의미하는게 아니라, 단어 그대로 '도'를 의미하는 것인데.. 흐음..
도가 머지?

도[道] 동양의 도덕이나 예술에서 그 중심을 흐르는 것으로 생각되어온 가장 근원적인 원리·원칙
[출처 : 네이년 백과사전]
내눈에 들어오는 핵심 단어는 "흐르는 것", "근원적인 원리"이다.





그런데.. 왜 뜬금없이 도를 아냐고 화두를 던지냐고?
실은 어제 거의 반년? 일년 만에 연락이 온 분이 있었다. 무려 남자끼리 45분이나 통화를 -ㅁ-!

전에 있던 회사에서 권고사직하시고 1년간 아직 집에서 편히 쉬고 계시면서
회사 관두시기 직전에는 신비주의 성향을 띄시면서 UFO나 테슬라 우주에너지 이런거에 관심을 가지시더니
돌아오지 못할 경계선에서 줄타기를 하시는 듯한 느낌이 들었었는데,
어떻게 보면 조금은 우려가 되는 분이기도 하다.

어떻게 보면 허무맹랑하게 들를지도 모르지만
이제 가까운 미래는 빛의 시대라고 이야기를 하시면서 LED나 이런 쪽이 뜰꺼라고 하시고
명상도 하면서 시간이 멈추는 것도 느끼고 식물과 대화도 하고 이런저런 이야기를 하였다.

음... 그런데 허무맹랑 하다고 생각은 되지 않는게.. 고등학교때 공부하기 싫어서 맨날
명상으로 위장한 "망상"을 해대고, 고등학교 3년간 뻥좀 쳐서 수천권의 책을 읽다 보니.
(물론 그 책들 중에 이러한 정신적인 책들도 있었고, 하루 3권씩 3년간 읽었다면 대략 3000권 이긴하다. 단순 수치상으로)
어쩌면 웬지 사이비 느낌이 드는 종교단체의 정신적 수양 단계의 초급단계 정도는 거쳤다고 봐도 무방하다.

하루종일 멍때리면서 구름만 보며 하늘이 하는 말을 듣기도 하고
바람을 맞으면서 바람에 풍겨오는 똥냄새도 맡으며(응?)
개랑 눈을 마주보며 갈구기도 하고(엥?)

이렇게 살다보니, 솔찍히 그분이 하는 이야기를 들으면서
신비주의로 빠져서 일명 사이비가 되어버리는 현상과
인간이 아닌 길을 선택하게 되는게 걱정되었다.

물론 본인의 선택과 믿음을 타인이 뭐라고 하겠냐마는..
한때 나 역시 그런 길을 걸었고, 신이 되고 싶어 하다가 어느 순간엔가 인간으로 살아가자 라고 결정한 나로서
그 분의 지금 모습과, 그분의 결정에 어떠한 조언이나 반대도 혹은 찬성도 할 수가 없었다.


책을 많이 읽으면, 수 많은 정보가 머리에 차곡차곡 쌓인다.
물론 그 정보들이 전부 기억을 하고 어떤 책에 어떤 내용이었는지 까지 정확하게 기록되는건 아니지만
내 머리속 어딘가에는 축적이 된다. 최소한 이런 내용이 있다 라는 정도 까지는
그 과정이전에는 타당성을 검토하고 머리에 저장을 하겠지만

이러한 기계적이라고 표현할 수 있는 행동을 3년간 하고,
머리속에는 터져나갈 듯한 지식들로 가득 차다 보니, 필연적인지 알수는 없지만
어느 순간엔가 희노애락 중에 '분노'를 제외한 다른 감정들이 사라졌었다.

喜(기쁠 희)
怒(성낼 노)
哀(슬플 애)
樂(즐거울 락)

이전 같으면
선물을 받거나 칭찬을 받으면 기뻤을 텐데 그런것도 없고(희)
누군가의 죽음에 단순한 단백질 덩어리가 흙으로 돌아갈 뿐이고, (애)
어떤일을 해도 재미가 없었다.(락)
유일하게 남은 감정은,
내가 하고 싶은걸 못하게 하거나 싫음에 대한 반응뿐이었다. (노)

사람들의 생각이나, 사고방식이 빤히 보였고,
무엇을 원해서 나에게 이렇게 대하는지, 이 사람이 어떻게 행동할지 누군가가 내 머리에 말해주 듯 보였다.
그렇게 내 삶은 유에서 무로 바뀌어 갔으며, 극심한 회의속에(난 왜 사는가?)
완벽한 인간이 되길바랬던 자신의 목표에 갈수록 멀어지고 있음에 더더욱 폐쇄적으로 되어갔다.
(우스개 소리로 그때를 이야기 하자면, 완벽한 인간 혹은 신이 되고 싶었다.
머리에 든건 지식뿐 이었고, 그 지식들로 인해 내가 너무 대단한 사람으로 착각을 하고 있었기에)

그러던 어느날. 문득 사람들의 웃음이 눈에 들어왔다.
"아. 저 사람들은 어떻게 저렇게 웃을 수 있을까"
부러웠다.
그리고 이해가 되지 않았다. 어떻게 저렇게 웃을 수 있을까?

그래서. 약간의 고민끝에 결심을 했고, 결정을 했다.
"사람으로 살아가자"

아무튼, 저런 경험이 있었고 그래도 나름 수확으로 나라는 인격체 그릇의 크기를 키웠다고 생각했기에
후회는 없지만, 알지 못하던 때로 돌아가지 못한다는 아쉬움이 들기는 한다.(너무 거만해 보이려나..)
그래서 나이도 많으신 분에게 입조심 한다고 많은 조언은 해드리지 못했지만
간략하게 몇마디만 해드렸다.

"언젠가는 결정해야 할 때가 올것이다. 인간이 아니게 될지, 인간으로 남게 될지.
물론 결정의 문제이기 때문에 좋고 나쁨은 아니지만, 알지 못했던 때로 돌아갈수는 없다."

그래도 내심 걱정되는건.. 인간으로 살아가기를 결정한 나의 생각으로
인간이 아니게 되는게 두렵고 혹은 부럽기 때문일려나..









사족 : 그래서 가뜩이나 늙어 보이는 얼굴에, 어릴때 부터 애 늙은이 소리를 듣고 살았다.
         지금은 그래도 내일 모레면 30이라서 늙은이 소리는 안듣는걸 위안삼아(엥?) 살아간다.

사족2: 좋고 나쁨이 아닌 선택의 문제라는 이야기의 위험성이 가끔은 우려된다.
          극단적인 예로 히틀러라고 해야 하나. 이러한 독선의 가장 큰 예가 있기 때문이다.
          이러한 파국을 막기 위해 나 스스로를 항상 감시하고, 과거의 행동으로 부터 비정상 행동을 파악하는
          자기진단을 하도록 하기는 하지만 이것 역시 실행주체가 자기 자신이라
          자기 자신이 자기 자신을 신뢰해도 되냐라는 아주 객관적이면 주관적인 문제가 걸쳐있다.
Posted by 구차니