제임스딘딘의
Tech & Life

개발자의 기록 노트 153

[Panda Board-es] Trouble shooting: booting에 문제가 있음.

3년전 구입해 가지고 있던 Pandaboard-es에 안드로이드를 올려서 가지고 놀아보고자, 다시 꺼내었다.SD카드 파티셔닝/포맷 후에 u-boot와 MLO를 넣고 booting 시도했으나 실패.serial연결해도 booting log조차 출력되지 않는 상황이었다. 오랫동안 사용하지 않은 보드의 H/W 적인 문제가 아닌가 고민하다가 pandaboard.org 에서 검색해보니 아래와 같이 H/W의 문제인지 아닌지를 판단할 수 있도록 pre-built 된 u-boot이미지, MLO, 그리고 kernel을 제공하고 있었다. 또한 제공된 이미지 안에 H/W test를 위한 쉘스크립트가 '/bin' 아래에 'panda-test.sh' 라는 이름으로 함께 제공되고 있어서 실행만 하면 다음 항목들에 대해 간단히 정상..

TiddlyWiki : DB와 설치가 필요없는 간단한 one file 위키

위키 'Wiki' 는 특정 내용을 '정보'로서 정리하고, 나중에 다시 찾아보고, 다른사람과 공유하기에 좋은 수단 인 것 같다.나도 개인적으로 위키를 활용해 정보들을 정리를 하고 싶어서 어떤 위키시스템을 사용할 것인지를 찾아봤었다. 그러나 설치가 복잡하거나 Database 가 필요하거나, 서버가 필요하다 등등 진입장벽으로 작용할 만한 내용들이 다수 존재 한다고 생각했었다. 그러나 내가 진입장벽이라고 여겼던 것들이 전혀 없는 아래와 같은 것이 존재했다. http://tiddlywiki.com/

The Expert (Short Comedy Sketch) : 개발자, 프로젝트 매니저 그리고 UX담당자와 클라이언트

이것은 IT개발 현장에서 흔히 발생하는 일을 한편의 짧은 코미디로 표현한 영상입니다.저는 IT개발현장에서 일하는 한명의 불쌍한 개발자입니다. 이 영상의 내용에 매우 격하게 공감을 하게 되네요.이 영상을 보시면 아시겠지만, 영상에서 말하는 'The Expert' 어떤 프로젝트를 맡아서 구현하는 '실무자' 를 말합니다. 부제는 ' 개발자 암걸리는 이야기' 쯤이 될 것 같네요. 각설하고, 영상을 한번 보시죠!Setting 에서 '한국어' 선택하시고 cc버튼으로 자막 켜기 하시면 한글 자막을 볼 수 있으니 내용 파악은 간단할 거에요! 출처 : http://www.youtube.com/watch?v=BKorP55Aqvg#action=share

ASLR : Address space layout randomization

Address space layout randomiztion(ASLR)은 buffer overflow 공격으로부터 보호하기 위한 컴퓨터 보안 기술이다.이 내용의 실제 구현 까지는 상당히 많은 dependency를 가지는데, Processor architecture, OS(kernel implementation), compiler, debugger, linker(loader) 등등이 상호 조화를 이루어 구현이 된다. 참고 : http://stackoverflow.com/questions/2463150/fpie-position-independent-executable-option-gcc-ld참고 : http://en.wikipedia.org/wiki/Address_space_layout_randomizati..

[mysql] Data Type

MySQL Column Type 컬럼(Column)은 데이타 베이스를 이루는 가장 작은 단위이다. 컬럼들이 모여서 레코드(Record)를 이루고, 레코들들이 모여서 테이블(Table)이 된다. 테이블이 모여서 데이타 베이스를 이루게 된다. 즉, 데이타 베이스를 데이타들의 계층적 구조라고 말한다. TINYINT부호있는 수는 -128에서 127까지, 부호 없는 수는 0에서 255까지 표현할 수 있다. 1 바이트 ※디폴트는 부호있는거(SIGNED), UNSIGNED를 붙이면 부호없는것~ SMALLINT부호있는 수는 -32768에서 32767까지, 부호 없는 수는 0에서 65535까지 표현할 수 있다. 2 바이트 ※디폴트는 부호있는거(SIGNED), UNSIGNED를 붙이면 부호없는것~ MEDIUMINT부호있는..

[우분투] 컴퓨터이름 변경하기

[우분투] 컴퓨터이름 변경하기 우분투 리눅스가 설치된 컴퓨터의 이름 바꾸는 방법이다.한글로 컴퓨터이름을 지정했다가 여러가지 이유로 인해, 영어 이름으로 변경해야 할 경우가 생기곤 한다. 아래 방법을 따르면 쉽게 변경할 수 있다. Ex) 유저네임@유저네임-desktop:~& -> 유저네임@desktop:~& 수정해야 할 곳은 2곳이다. /etc/hostname 에서 이름을 변경한다. 그리고 다음 명령 수행한다. hostname -F /etc/hostname /etc/hosts 에서 "ip 컴퓨터이름" 에서 컴퓨터이름 부분을 변경한다. 이후 아래 명령을 수행한다. sudo /etc/init.d/hostname.sh stop sudo /etc/init.d/hostname.sh start sudo shutdon..

[Java/SWT] 그래픽스 컨텍스트 (Graphics Context)

1. GC(Graphical Context) 클래스는 SWT의 그래픽엔진의 코어를 형성한다.2. GC는 도형, 텍스트, 이미지를 그리는데 필요한 모든 메소드를 제공한다.3. 컨트롤, 디바이스 또한 다른 이미지 위에 그릴수 있다. 일반적으로 그리기 라이프사이클은 다음과 같이 구성된다.1. 그리려고 하는 대상의 GC를 생성하거나 얻음.2. 그린다.3. GC를 생성했다면, 소멸시킨다. 코드로 보면 다음과 같다. GC gc = new GC(display); gc.drawRectangle(...); gc.drawText(...); gc.drawImage(...); gc.dispose(); 일반적으로 paint handler에 그리기 코드를 넣는다. final Canvas canvas = new Canvas(she..

[SWT] 이벤트

이벤트1. SWT는 2가지 유형의 리스너를 제공한다. : untyped / typed2. untyped 리스너는 보다 간단한 코드를 작성할 수 있게 한다.3. typed 리스너는 보다 더 모듈화 된 디자인을 할 수 있게 한다. 이벤트모델1. SWT는 옵저버 패턴에 기반한 이벤트모델을 사용한다.2. 다수의 리스너를 등록하여 알림메세지를 보낼 수 있다.3. SWT에서는, 위젯과 Display만 이벤트 리스너를 가질 수 있다. Typed 이벤트 리스너타입이 정해진 이벤트 리스너(typed listner)는 단지 한종류의 특정한 이벤트 타입에 대해서만 listen 할 수 있다. 예를 들면, SelectionListener 는 SelectionEvent 라는 이벤트타입에 대한 리스너 이다.untyped 이벤트 리..

[리눅스/커널] 커널에서 자주 사용되는 매크로 : likely( ) / unlikely( )

커널에서 자주 사용되는 매크로 : likely( ) / unlikely( )커널 소스를 보다보면 likely 또는 unlikely 메크로를 자주 사용하는 것을 볼 수 있습니다. likely / unlikely macro가 어떤 의미를 가지는 매크로인지 궁금했어요.그래서 알아보았죠. 커널 3.2 코드를 기준으로 likely / unlikely macro는 커널 소스에 다음과 같이 정의되어 있더군요. 소스위치는 ./include/linux/compiler.h 109 /*110 * Using __builtin_constant_p(x) to ignore cases where the return111 * value is always the same. This idea is taken from a similar p..

Concurrency Visualizer

Concurrency Visualizer View는 컴퓨터에서 멀티스레드 기반 어플리케이션이 자신,하드웨어,OS,다른 프로세스와의 상호작용 하는것을 볼수있게 한다.이 뷰는 당신의 프로그램안과 시스템전체의 스레드들간의 임시적인 관계를 보여주는 그래픽,표, 텍스트 데이터를 제공한다.당신은 Concurrency Visualizer를 성능 병목구간, CPU 자원낭비지점, 스레드 경쟁, 다중코어에서의 코어간 스레드 이동, 동기화 지연, overlapped I/O 영역 그리고 다른 정보들 에 위치시켜 사용할수 있다.뷰는 당신이 그것의 그래픽출력을 콜스택이나 소스코드에 연결하는 등의 행위를 언제나 가능하도록 데이터를 제공한다이 도구는 효율적인 워크플로우가 가능하도록 Visual Studio 2010 프로파일러에 통합..

Java에서 AES 128 암호화/복호화 구현

AES 암호화 AES 소개 1997년 1월에, 기존의 데이터 암호 표준, 즉 DES를 대체할 보다 강력한 알고리즘을 찾기 위한 공모 작업이 미국 상무부의 한 기관인 표준기술연구소(NIST)에 의해 시작되었다. 새로운 알고리즘이 충족해야 할 규격 요건으로는, 최소 128 비트나 192 비트 또는 256 비트 크기의 키를 지원하는 128 비트 크기의 블록 암호화를 사용한 대칭형 (암호화나 복호화를 하는데 동일한 키가 사용되는) 알고리즘으로서, 전 세계적으로 로열티 없이 사용할 수 있어야 하며, 향후 20년~30년 동안 데이터를 보호하기 위해 충분한 정도의 보안성을 제공할 것이 요구되었다. 또한, 이 알고리즘은 스마트카드 등과 같은 제한된 환경을 포함하여 하드웨어나 소프트웨어로 구현하기 쉬워야 했으며, 다양한..

[모듈 삽입 에러] unknown symbol in module

ko 파일을 insmod 명령을 통해 커널에 동적 삽입을 시도할 때 다음과 같거나 혹은 유사한 메세지를 뱉으며 에러가 나는 경우가 있다. -1 : unknown symbol in module dmesg 명령을 통해 커널 로그를 확인 해보자.모듈 삽입시 에러가 나는 원인을 어느정도 추측할 수 있을 것이다. dmesg 에 기록된 메세지 사례 사례 1 :Unknown symbol lockdep_init_map (err 0) 다음 조건을 만족하면 발생 : 컴파일한 모듈의 소스코드에 semaphore, mutex, spinlock 등 락 메커니즘을 사용하는 함수가 포함되어있는 경우. 커널 빌드시 CONFIG 옵션중 lock 관련 디버깅 옵션을 활성화 한 경우.(lockdep) lockdep는 커널의 락 메커니즘이..

Pandaboard ES 구매

Pandaboard ES 구매 삼성소프트웨어 멤버십 임베디드 시그에서 공부하는데 사용하려고 구매했다. Pandaboard ES 보드이다. Ti Omap4460 를 프로세서로 사용하는 보드. 아직 국내판매처는 없는 것 같고, digikey 를 통해 구매하였다. 링크 : http://www.digikey.kr/ 주문 후, 1~2일 기다리면 digikey 측에서 email 을 통해 invoice 작성을 요청해온다. 작성하여 다시 email로 회신해주었더니, 상품 배송을 해주었다. UPS를 통해 배송해 주었고, 미국에서부터 배송기간은 4일 정도 걸렸다. (9월 17일 상품 준비~9월20일 대전에서 수령) 수령후 10일 이내에 입금 하면 되는데, 상품 가격은 19만7천원 가량이었다. 수령한 보드는 아래와 같은 임..

선형 전압 레귤레이터(Linear Voltage Regulator)

선형 전압 레귤레이터(Linear Voltage Regulator) Embedded system을 설계하려면 가장 먼저 고려해야 할 점이 '전원회로를 어떻게 구성할 것인가' 이다. 특히 휴대용 Embedded system을 설계할 때는 가장 중요한 부분이라고 할 수 있겠다.요즘 스마트폰이나 테블릿 들이 여러 새로운 기능으로 변신을 하고 있지만, 여전히 가장 중요한 것 중 하나는 배터리(Battery)의 크기를 소형화 하는 것과 장치 자체가 사용하는 전력소모를 줄이는 것이다. 여기서는 간단히 Embedded system 설계에 필요한 Power 회로의 특징을 이해하는 정도만 알아보겠다. 첫 순서로 가장 많이 그리고 쉽게 사용하는 Linear Voltage Regulator 이다.Linear Voltage ..

5v를 3.3v로, 3.3v를 5v로! 전압 변환을 위한 부품 Logic Level Converter

5v 시스템에 3.3v 장치를 연결해 본 사람은 그것이 얼만다 번거로운 일인지 잘 알 것이다. 5v 인 ATmega128에 블루투스 FB155BC 칩을 붙인 다던가 하는 작업 말이다. BOB-08745 라는 Logic Level Converter 가 있다. 링크 : https://www.sparkfun.com/products/8745 이것은 5v 시그널을 3.3v 로 낮춰주기도 하고 3.3v 를 5v 로 높여주기도 한다고 한다.2.8v 과 1.8v 에 대해서도 동작한다고 한다. (오!) 아직 사용해 보지는 않았지만, 추후 이런 상황이 발생하면 이걸 사용해 볼까 한다. 가격도 1.95 달러로 저렴. (홍보하는 것 같지만, 나와는 상관없다. 유용한 정보인 것 같아서 기록 해 둔다.)이미지는 무단도용!출처는 ..

리눅스에서의 세마포어 (Semaphores in Linux)

리눅스에서의 세마포어 (Semaphores in Linux) 원본 출처 : http://linuxdevcenter.com/pub/a/linux/2007/05/24/semaphores-in-linux.html?page=1 일반적으로 상용 어플리케이션은 멀티스레드 어플리케이션이다. 상용 어플리케이션중 멀티스레드가 아닌 어플리케이션은 상상하기 힘들다.어플리케이션과 시스템의 성능(응답성)을 높이기 위해서 어플리케이션은 반드시 멀티스레드를 이용한 접근을 해야만 한다. 그러나, 인생의 대부분은 대가없이 얻어지는 것은 없듯이, 어플리케이션에서 멀티스레드의 특성을 활용해야 할 필요가 있다면, 다음과 같은 몇가지 이슈와 부딪히게 된다. 바로 교착상태(dead lock), 경쟁상태(race condition), 스레드의 ..

man page와 section number

man page와 section number리눅스를 사용하다보면 종종 'man page'라는것을 접하게 된다.리눅스를 처음 접한 사용자라면 몇몇 리눅스 커뮤니티에 무언가 질문을 해도, 'man page 찾아보세요. 거기에 다 나와있어요' 라는 답변을 받기도 한다. 대체 man page는 뭘까?man page는 'manual page'를 말한다. 리눅스의 여러 요소들(라이브러리 함수, 시스템콜, 명령어 등) 여러가지에 대해 설명하는 설명서(manual, 매뉴얼)라고 보면 될 것이다. 예를 들어, 당신이 'printf' 를 잘 모른다고 가정하자. 이에 대해 자세히 알아보는 방법은 몇가지 존재 할 것이다.구글링을 한다던가, 대학 학부생때 배웠던 C언어 책을 다시 꺼내본다던가. 옆에 앉아있는 동료 프로그래머에게..

[Ubuntu 12.04] GRUB : 부트로더 환경설정

*본 설명은 Ubuntu 12.04 를 기준으로 합니다. 1. GRUBGRUB 혹은 GNU GRUB은 GNU 프로젝트의 부트로더이다. GRUB의 이전 이름은 GRand Unified Bootloader 이었으며, 이는 대통일 이론의 영문 이름을 패러디한 것 이라고 한다. 대부분 리눅스 배포판에서 부트로더로 사용한다. GRUB은 LILO와 달리 설정 변경 후에 재설치가 필요 없다. GRUB은 스테이지 단위로 부팅 과정이 구성되어 있으며, GRUB의 스테이지 1은 MBR에 존재한다. GRUB 설정 파일은 대개 스테이지 2에서 불리며 이들은 GRUB이 읽을 수 있는 파티션에 존재한다. 만약 설정 파일이 없으면 명령줄로 간다. 이들 설정 파일은 /boot/grub에 있으며 배포판마다 파일 이름이 다르다. 이러한..

[우분투] Ubuntu 12.04 에 JDK7 설치하기

Ubuntu 12.04 에 JDK7 설치하기 ubuntu 12.04 에 oracle-jdk7 을 설치하는 방법은 다음과 같다. 작업은 터미널에서 진행한다. $ sudo add-apt-repository ppa:webupd8team/java$ sudo apt-get update$ sudo apt-get install oracle-jdk7-installer 위의 명령을 순서대로 진행한다.위 명령의 의미는 아래와 같다. 1) jdk7 를 다운로드 받을 저장소 주소를 우분투의 apt 에 추가2) 추가된 주소의 저장소 목록을 업데이트3) jdk7 다운로드 및 설치 설치가 완료되면 다음 명령으로 잘 설치되었는지 확인할 수 있다.만약 설치가 정상적으로 되었다면 jdk및 java runtime의 버전이 출력될 것이다...

Kprobes 사용하기 [2] : 시스템콜에 probe 삽입하기

Kprobes 사용하기 [2] : 시스템콜에 probe 삽입하기 Kprobe 를 이용하려면 모듈로 작성하여야 함. System call 중 sys_open( ) 이 호출되는 것을 로그로 감지하는 probe를 삽입해 보겠다. 우선 커널에서 sys_open( )의 심볼 주소를 얻어야 한다.적어도 다음과 같은 3가지 방법이 있다. /proc/kallsyms 파일 항목을 사용한다.사용예 : cat /proc/kallsyms | grep sys_open nm 명령어를 커널에 적용한다.사용예 : nm vmlinux | grep sys_open (vmlinux 의 위치에서, 아닌경우 경로 지정할 것) 커널의 System.map을 사용한다.사용예 : grep sys_open System.map (System.map 의..

Kprobes 사용하기 [1] : Ubuntu 12.04

Kprobes 사용하기 [1] : Ubuntu 12.04 동적 프로브 (Dynamic Probe) 라는 것이 있다. 이는 빌드를 다시 하지 않은 상태에서 디버깅을 지원한다.즉, 특수한 컴포넌트 빌드 없이 분석 정보를 수집하는 기법을 제공한다. 그중 커널 동적 프로브 (Kprobe) 는 리눅스의 커널 내부로 삽입할 수 있는 프로브이다. 우분투에서 kprobes를 사용하고자 하는가?다음 과정을 따른다. 커널 버전이 2.6.9 이상이면 kprobes는 이미 커널의 일부일 것이다. 패치를 적용할 필요가 없다.단지 몇가지 옵션을 활성화 한 뒤 커널을 다시 빌드 하면 된다.(If your kernel is >= 2.6.9, then kprobes should already be apart of the kernel...

[보안] 암호화 알고리즘

DES (Data Encryption Standard) ; 데이터 암호 표준 DES는 개인키를 사용하여 데이터를 암호화하는 방법으로서 널리 사용되며, 미국 정부는 이 알고리즘을 해독하기 어렵다고 판정하고 다른 나라들에 수출하는 것을 금지하고 있다. DES에는 72,000,000,000,000,000 (72천조)개 이상의 암호 키가 사용되는 것이 가능하다. 주어진 각 메시지를 위한 키는, 이렇게 막대한 량의 키 중에서 무작위로 선택된다. 다른 개인키 암호화 방법과 마찬가지로, 송신자와 수신자 둘 모두는 동일한 개인키를 알고, 사용해야만 한다. DES는 각 64 비트 데이터 블록에, 56 비트 길이의 키를 적용한다. 이 과정은 여러 가지 모드에서 실행될 수 있으며, 16번의 연산이 수반된다. 비록 DES가 ..

[MFC] 공부중

- 윈도우 프로그래밍의 기본1. 윈도우 프로그래밍 모델2. CWnd 클래스3. MFC 코드의 기본 구조4. MFC 코드의 흐름5. 키보드 입력6. 마우스 입력7. GDI 기본8. 비트맵과 이미지 처리9. GDI 고급 - 컨트롤 및 기본 프레임워크10. 메뉴/바로 가기 키/도구 모음/상태 표시줄11. 컨트롤 윈도우의 기본12. 버튼 컨트롤13. 목록 상자와 콤보 상자14. 프로그레스 컨트롤/슬라이더 컨트롤/스핀 컨트롤15. 리스트 컨트롤/트리 컨트롤16. 기타 컨트롤(페이저 컨트롤, 에니메이션 컨트롤, 달력컨트롤, IP 주소 컨트롤, 네트워크 주소 컨트롤, 탭 컨트롤)17. 대화상자 - 고급 사용자 인터페이스18. 깜빡임 방지 (Double Buffering)19. 다중 뷰20. MFC의 구조와 이론21...

[네트워크] FTP 프로토콜의 Active/Passvie 모드

FTP는 명령어 커넥션과 데이터 커넥션이 다른 포트를 사용함. 데이터 커넥션의 접속 방식에 따라 Active/Passive 2가지 방식이 있다. - Active Mode *데이터 커넥션을 서버에서 클라이언트로 접속하는 방식 클라이언트가 서버의 21번 포트로 접속, 데이터 전송을 위한 별도의 포트를 추가로 하나 생성 후 그 번호를 서버에게 알려줌. 서버는 20번 포트를 클라이언트에게서 넘겨받은 포트로 연결한다. (이때 클라이언트 네트웤 환경에 방화벽이나 공유기 등에서 그 임의의 포트로 접근하는 것이 막혀있을 경우 데이터 전송을 위한 연결이 이루어지지 않는다. 그래서 접속은 되나 파일 목록 표시가 안됨.) - Passive Mode *데이터 커넥션을 클라이언트에서 서버로 접속하는 방식 클라이언트가 서버의 2..

[리눅스/Vi]Vim, Vi, GVim 에서 '작업 취소(Undo)' / '다시 하기(Redo)' 방법

Vi (Visual Display Editor) 리눅스나 유닉스를 처음 접하는 사람에게 vi는 매우 골치아픈 존재일지도 모릅니다.윈도우환경에서 문서 편집기를 써 본 사람이라면, vi는 매우 불편한 편집기로 생각 될지도 모르죠.그러나 vi 편집기에 익숙해지면 이보다 좋은 문서 편집기는 없다는것을 느끼게 될 것입니다. 문제는 익숙해지는데 오래걸려서 그렇죠(...먼산...) 만약 당신이 윈도우에 익숙한 사용자라면, 텍스트 에디터에서 무언가 잘못된 입력을 한 경우, Ctrl+Z 로 간단하게 그 잘못된 입력을 되돌릴 수 (Undo) 있다는걸 알고 있을것입니다. 리눅스에서 기본적으로 사용하는 Vi에디터 에서도 동일한 기능을 제공합니다만, 단축키가 다릅니다.방법을 알아봅시다. 이하 존칭은 생략합니다. 작업 취소만약 ..

Pair Programming (짝 프로그래밍)

1. 개요 본 문서는 애자일 팀에서 어떻게 짝 프로그래밍(Pair Programming, 이하 PP)을 진행 할 것인지에 대한 가이드를 제공한다. PP는 기술적인 측면보다 사회 문화적인 측면에서 접근/진행하여야 한다. 따라서 대화를 자주 나누고, PP의 목표가 서로가 함께 발전해 나가면서 이를 통해 좀더 좋은 SW를 만들 수 있게 해준다는 것을 인식하여야 한다. 2. PP진행의 목적 및 효과 - 코드의 품질을 향상시킨다. - 개발에 대한 집중력을 높인다. - 팀 내 커뮤니케이션을 증진시킨다. - 지속적인 코드 리뷰가 될 수 있다. - 협업을 통해 서로가 서로를 발전 시킬 수 있다. - 개발이 좀더 즐거워 질 수 있다. 3. 기본 마음가짐 - 서로를 신뢰하며 공경한다. - 대화를 논쟁으로 생각하지 않는다...

[C#] WPF Thread

WPF Threading WPF는 새로운 스레드 프로그래밍에 대한 보다 단순화된 모델을 제시한다.대부분의 응용프로그램은 하나의 스레드만으로 실행 되지는 않는다. WPF 역시 렌더링 스레드(Rendering Thread), 사용자 입출력을 담당하는 UI 스레드(UI Thread) 등 여러개의 스레드가 동시에 실행된다. 개발자가 여러 개의 스레드를 다룰수록 복잡하고 디버깅 등의 어려움이 따르게 마련이다. Dispatcher 와 DispatcherObject Dispatcher는 스레드에 포함된 작업큐를 말한다.작업큐에는 수행해야 할 아이템들이 대기하게 되고 정해진 순서에 따라 수행이 된다. 당연히 Dispatcher 스레드 간에는 공유 될 수 없고 하나의 스레드에만 속해야 한다.Dispatcher에는 사용자..

[C#] 닷넷 프레임워크 기반의 소켓 프로그래밍

출처 : http://www.devtimes.com/45 요약 (Summary)이 문서는 닷넷 프레임워크 환경과 이기종 환경 간의 소켓 통신을 위한 간략한 개요를 제시합니다. 특히 HTTP 또는 SOAP 등의 텍스트 기반의 통신이 아닌, C/C++ 개발자들이 선호하는 구조체 패킷을 이용한 통신에 초점을 두었습니다.뿐만 아니라 이를 지원하기 위한 소켓 라이브러리(C# 2.0 지원)도 함께 제공합니다. MIT 라이센스를 채택하였으며, 라이센스에 명시된 바와 같이 상업적인 목적으로도 사용할 수 있습니다.소개 (Introduction)이 문서는 닷넷 프레임워크 기반의 소켓 프로그램을 작성하려는 개발자를 위해 작성되었습니다. 닷넷 개발자는 C/C++ 등으로 작성된 서버/클라이언트와 통신하기 위한 모듈 또는 소프트..

1 2 3 4 5 6