pynoos의 블로그

pynoos의 이미지
11620
points

쵝오 만들기.

23
points

http://coolengineer.com/files/choik-o/

한 개 만들어 보았습니다.

김하늘은 팔색조 같은 매력과 패션 스타일로 젊은 여성들을 열광시키기에 이르렀고, 화려한 스포트라이트를 받은 그녀에겐 절대적인 휴식이 필요했다

이걸 아래와 같이 만들어주지요...

[code][b]김한흘은 팔색조 같은 맬역

pynoos의 이미지
11620
points

무선랜 잡아주는 스크립트

25
points

리눅스의 무선랜 잡는 것이 너무 귀찮아서 하나 만들어 보았습니다.
그래픽 인터페이스는 아니구요. CLI로 동작합니다.

테스트 해보시고 개선점있으시면, 스크립트 안의 주소로 패치를 보내주시면 감사하겠습니다.

pynoos의 이미지
11620
points

태터툴즈 Blogger API 플러긴

0
points

Tattertools를 쓰시는 분에게 도움이 될 만한 짓을 좀 했습니다. ;)

http://coolengineer.com/tt/228 http://www.tattertools.com/ko/forum/viewtopic.php?id=652

사용중인 1.0.x에 BloggerAPI 를 추가하실 수 있습니다.

pynoos의 이미지
11620
points

Zettabyte File System 그리고 가상화

0
points

원문: http://coolengineer.com/tt/168
중복 posting 입니다.

한 1 년쯤 되었나, KLDP에서 황당한 얘기를 좋아하는 친구들이 무한 파일 시스템을 만들었는데, 아직 포맷중이라는 얘기를 쓴 글을 봤었는데, 그 비스무레한 즈음에 Solaris의 zfs(Zettabyte File System)에 대한 기사 내놓은 것 같다.

Zettabyte 라는 말이 Solaris에서 의도한 것인지 아닌지는 모르겠지만, 이 황당 무계한 파일 시스템이 지향하는 바는 다음과 같다.

http://kr.sun.com/features/2004/ZFS/

  • 간편한 관리
  • 확실한 데이터 무결성 확보
  • 무제한 확장 가능
  • 초고속 성능 구현

업계 최초의 128bit 파일 시스템이라는데, 이것은 차치하고, 그동안 내가 겪어야했던 지식의 고난은...

FAT 시절부터 그계열들 그리고 CDROM, OS 내부에서 사용되는 가상층 VFS, 저널링 파일 시스템 계열들, 상업용 Unix시장부터 내려오는 논리적 볼륨 그룹 LVG 등 한계에 대한 사투의 종착역인 듯한 ZFS.

pynoos의 이미지
11620
points

main 함수 이전에 일어나는 일에 대한 간단한 추적

1
point

이 글의 원문은 http://coolengineer.com/tt/135 입니다. 지난 기사에 이어지는 내용입니다.

pynoos의 이미지
11620
points

외부에서 KLDP로 포스팅하기

0
points

이글은 http://www.writely.com/ 에서 작성하여 올리는 글입니다.

최근 writely.com 은 google에 인수 되었죠. (관련글 )

이 사이트에서 글을 쓴다음 메뉴중 Blog 버튼을 누르고, Publish to my blog를 선택하고,

My own server / custom
API: MovableType API
URL: http://kldp.org/xmlrpc.php

넣어주신다음 아래에 인증 정보를 넣으면 됩니다.

그리고, KLDP에 와서는 Full H

pynoos의 이미지
11620
points

C에서 main 보다 먼저 호출되는 함수 만들기

0
points

아래 글은 http://writely.com/ 에서 작성하여 http://kldp.org/xmlrpc.php 를 통하여 포스팅한 글입니다. Full HTML로 속성을 수정했습니다. 테스트 겸 중복 포스팅이네요..
원문은 http://coolengineer.com/tt/135 입니다.

C++ 언어는 그 특성상, 전역 개체의 초기화가 main 보다 먼저 이루어지므로 전역 개체의 생성자에 들어 있는 코드는 main 보다 먼저 호출된다.
이것은 여러가지 트릭으로 사용될 수 있는데, C에는 과연 그런 것이 없을까? 표준 명세에는 없다.
하지만, gcc의 __attribute__에는 그러한 일을 가능하게 해주는 지시자가 있는데, 바로 다음과 같이 사용된다.

void __attribute__((constructor)) before_main( void )
{
/* Things to do before main function */
}



또한 main 뒤에 호출되는 전형적인 방식은 atexit에 등록하는 것인데, 이것또한

void __attribute__((destructor)) after_main( void )
{
/* Things to do after main function */
}



와 같은 방식으로 호출된다.

간단한 샘플을 돌려보자면,

$ more c.c
#ifdef STRIP_ATTR
#define __attribute__(x)
#endif
void __attribute__((constructor)) before_main( void )
{
printf("I miss you Lorthlorien ever beauty.\n");
}

void __attribute__((constructor)) before_main_2nd( void )
{
printf("Bombadil, where have you been in the morning?\n");
}

void __attribute__((destructor)) after_main( void )
{
printf("Mithlandir, help me!\n");
}

int main()
{
printf("I am working, no touch!\n");
return 0;
}

$ gcc -o c1 -save-temps c.c
$ ./c1
Bombadil, where have you been in the morning?
I miss you Lorthlorien ever beauty.
I am working, no touch!
Mithlandir, help me!



근사하지 않은가? 다만 의심가는 것은 __attribute((constructor))로 지정한 함수들이 두 개 이상일때의 순서는 어떠하냐는 것인데, 외관상 stack형식으로 먼저 발견되는 것이 나중에 실행되는 것 같다.
자세한 것은 추후에 설명하지도 모르겠다.

이것이 수행되는 원리를 좀더 파헤쳐보자면,

우선 위 코드상에 STRIP_ATTR이라고 되어 있는 부분이 수행되도록하면 평범한 함수가 되는데, 그렇게 생성된 바이너리(c2)의 심볼들을 살펴보자.
nm 은 -n 옵션을 주어 번지로 정렬되도록 하였다.
두 nm 결과를 비교하는데는 unified diff를 사용하여 보자.
그리고 -save-temps 를 통해 생성되는 c.s 라는 어셈블리어 파일은 각각 c1.s c2.s로 이름을 바꾸는 과정이 들어가 있다.

$ mv c.s c1.s
$ gcc -o c1 c.c
$ gcc -o c2 -DSTRIP_ATTR -save-temps c.c
$ mv c.s c2.s
$ nm -n c1 > c1.nm
$ nm -n c2 > c2.nm
$ diff -u c1.nm c2.nm
--- c1.nm Thu Jan 5 13:29:16 2006
+++ c2.nm Thu Jan 5 13:29:20 2006
@@ -27,14 +27,14 @@
0804952c r __FRAME_END__
08049530 D _DYNAMIC
080495f8 d __CTOR_LIST__
-08049604 d __CTOR_END__
-08049608 d __DTOR_LIST__
-08049610 d __DTOR_END__
-08049614 d __JCR_END__
-08049614 d __JCR_LIST__
-08049618 D _GLOBAL_OFFSET_TABLE_
-08049630 A __bss_start
-08049630 A _edata
-08049630 b completed.1
-08049634 b object.2
-0804964c A _end
+080495fc d __CTOR_END__
+08049600 d __DTOR_LIST__
+08049604 d __DTOR_END__
+08049608 d __JCR_END__
+08049608 d __JCR_LIST__
+0804960c D _GLOBAL_OFFSET_TABLE_
+08049624 A __bss_start
+08049624 A _edata
+08049624 b completed.1
+08049628 b object.2
+08049640 A _end



이것을 잘 보아하니 __CTOR_LIST__ 라는 값까지는 같고 그 뒤가 달라지는 것을 볼 수가 있다.
아!

pynoos의 이미지
11620
points

오픈소스 활성화 방안 논의

0
points

http://bbs.kldp.org/viewtopic.php?t=66847 원래 글(kldp 개편 방향 (그냥 생각))에서 분리하였습니다. 글을 쓰다보니 발의한 내용과 계속 달라지고 hey님의 요청도 있고해서.. :)

-----------------------------------
지난주 금요일에 커미터 모임에서 든 생각인데, 우리가 하는 행동이 가시적인 뭔가와 연결되었으면 좋겠습니다. 제 생각의 가시적인 것은, OS의 패키지에 들어가는 뭔가가 되었으면 좋겠다는 생각입니다.

예를 들어, 번역을 하더래도 Linux 배포판의 Korean Locale에 다음에 반영될 수 있는 man page, info page들이 공식적으로 kldp에서 만들어진다고 생각하면, 철자 수정을 하더래도 의미있어 할 것 같고.

내용묶음