책 제목이 결정되었습니다.

나빌레라의 이미지

제가 KLDP에 올렸던 강좌(http://kldp.org/node/92192)를
책으로 준비하기 시작한지 어언 일년.

얼마전에 발간이 한달 남았다는 글에서도 언급했듯이
발간이 열흘 앞으로 다가왔네요...^^

당시에는 책 제목이 정해지지 않았었는데,
어제 출판사에서 제목이 결정되었다고 연락이 왔습니다.

책 제목은 『도전! 임베디드 OS 만들기(코딩으로 배우는 운영체제 원리)』입니다.

간단한 책 설명과 목차는 아래와 같습니다.

Quote:

소개문

세상은 점점 임베디드 시대로 진입하고 있습니다. 휴대전화, PMP, MP3 플레이어 등 사람들이 휴대하는 임베디드 기기도 갈수록 늘어나는 추세지요. 그런데 음악이 흘러나오는 도중 사용자가 일시정지(pause) 버튼을 누른다면, 이런 신호를 MP3 플레이어가 어떻게 알아내서 음악을 정지시킬까요? 아이폰의 방향을 가로에서 세로로 바꾸었을 때, LCD 장치가 아이폰의 중력 센서의 값을 어떻게 알고 디스플레이 방향을 바꿀까요? 바로 임베디드 OS 덕분입니다. 이러한 임베디드 OS를 여러분도 만들 수 있다면 믿어지세요?

이 책을 따라 코딩을 하면서 임베디드 OS를 직접 만들 수 있습니다. 필요한 지식은 학교에서 배웠던 '운영체제 이론'과 C 언어를 다뤄본 경험 정도입니다. ARM 보드인 EZ-X5도 필요하긴 하지만, 보드를 구입할 여유가 없는 분들을 위해 에뮬레이터 환경도 다룬답니다.

혹시 아나요? 지금 시도해본 자그마한 임베디드 OS가 장차 전세계인이 사용하는 임베디드 기기에 탑재될지도 모릅니다.



목차

추천의 글 (숭실대학교 김명호 교수)
지은이의 글

1장 임베디드 운영체제
1.1 운영체제
1.1.1 프로세스 관리
1.1.2 저장장치 관리
1.1.3 네트워킹
1.1.3 사용자 관리
1.1.5 디바이스 드라이버
1.2 임베디드 운영체제
1.3 나빌눅스
1.4 실습 : 임베디드 개발 환경 구성
1.4.1 목표 플랫폼 정하기
1.4.2 리눅스에서 크로스 컴파일 환경 설정
1.4.3 윈도에서 임베디드 개발 환경 구성
1.5 정리

2장 부팅하기
2.1 개발보드 선정하기
2.1.1 EX-X5 보드
2.2 이지보드에 나빌눅스 이미지를 올리는 방법
2.3 에뮬레이터 환경 구성
2.3.1 qemu
2.3.2 u-boot 설치
2.4 실습 : 이지보드에서 hello world를 출력하자
2.4.1 이지부트의 소스코드 재활용
2.4.2 커널 이미지 부팅하기
2.4.3 링커 스크립트 수정
2.5 실습 : 에뮬레이터에서 hello world를 출력하자
2.5.1 UART 주소 수정
2.5.2 에뮬레이터에서 부팅하기
2.5.3 uImage 만들기
2.5.4 램 디스크 이미지 만들기
2.5.5 플래시 이미지 만들어 부팅하기
2.6 실습 : 윈도 환경에서 에뮬레이터 실행시키기
2.6.1 시그윈에서 플래시 이미지 만들기
2.6.2 윈도용 에뮬레이터 실행
2.7 정리

3장 LED 켜기
3.1 부트로더 코드 재활용
3.2 실습 : 1초마다 LED를 켜 보자
3.2.1 이지부트에서 LED 관련 코드 분석
3.2.2 나빌눅스에 LED 점멸 코드 추가
3.3 정리

4장 exception vector table 구성하기
4.1 ARM의 exception과 프로세서 동작 모드
4.2 ARM의 exception vector table
4.3 실습 : 이지부트를 수정하여 exception 핸들링 하기
4.4 실습 : 에뮬레이터에서 실행 - u-boot를 수정하여 exception 핸들링 하기
4.5 정리

5장 Software Interrupt Handler 구현하기
5.1 스택을 이용한 ISR과 태스크 간의 컨텍스트 스위칭
5.1.1 ISR
5.1.2 태스크-ISR 간 컨텍스트 스위칭
5.2 ARM 프로세서의 레지스터
5.2.1 스택 포인터
5.2.2 링크 레지스터
5.2.3 spsr
5.3 실습 : Software Interrupt Hanlding
5.3.1 실제 프로그램은 레지스터들을 어떻게 사용하는가
5.3.2 태스크-ISR 간 컨텍스트 스위칭 코드 구현
5.3.3 main 함수의 수정
5.3.4 시스템 콜 번호의 추출
5.4 정리

6장 IRQ 핸들러 구현 : OS 타이머 사용하기
6.1 PXA255의 인터럽트 컨트롤러 계층
6.1.1 OS 타이머
6.1.2 인터럽트 컨트롤러 계층
6.1.3 ICMR
6.1.4 ICLR
6.1.5 ICCR
6.1.6 ICFP, ICIP
6.1.7 ICPR
6.1.8 인터럽트의 종류
6.2 msleep() 함수 분석
6.3 PXA255의 OS 타이머 레지스터 계층
6.3.1 OSMR
6.3.2 OSCR
6.3.3 OIER
6.3.4 OSSR
6.4 실습 : IRQ 핸들러 구현 - OS 타이머
6.4.1 OS 타이머 초기화 함수 작성
6.4.2 OS 타이머 시작 함수 작성
6.4.3 커널 main 함수 수정
6.4.4 IRQ 핸들러 함수 수정
6.4.5 전체 작업 코드
6.4.6 태스크-ISR 간 컨텍스트 스위칭 코드 작성
6.4.7 ARM9 아키텍처의 파이프라인
6.4.8 exception 핸들러에서 복귀 주소의 결정
6.4.9 OS 타이머가 발생되는 순서
6.4.10 빌드와 테스트
6.5 정리

7장 메모리 맵 구성
7.1 나빌눅스의 메모리 맵
7.2 실습 : 나빌눅스 커널의 스택 주소 초기화
7.3 실습 : 스택 초기화 주소 확인하기
7.4 정리

8장 메모리 관리자 구현하기
8.1 임베디드 운영체제에서의 사용자 태스크
8.1.1 태스크
8.1.2 메모리 관리자
8.2 실습 : 메모리 관리자 정의
8.2.1 자유 메모리 블록 정의
8.2.2 메모리 관리자 함수 정의
8.3 실습 : 메모리 관리자 함수 구현
8.3.1 메모리 관리자 커널 전역 변수 선언
8.3.2 메모리 분할 크기 설정
8.3.3 mem_init() 함수 설명
8.3.4 mem_alloc() 함수 설명
8.3.5 navilnux.h 파일 수정
8.3.6 Makefile 수정
8.4 정리

9장 태스크 관리자 구현하기
9.1 태스크 컨트롤 블록
9.1.1 태스크 컨텍스트 정보
9.2 사용자 태스크
9.2.1 사용자 태스크의 등록과 로딩
9.3 실습 : 태스크 관리자 정의
9.3.1 태스크 컨트롤 블록 정의
9.3.2 사용자 태스크의 컨텍스트 자료형 크기
9.3.3 태스크 관리자 구조체 정의
9.4 실습 : 태스크 관리자 함수 구현
9.4.1 태스크 관리자 커널 전역 변수 선언
9.4.2 cpsr의 초기 값 설정
9.4.3 task_init() 함수
9.4.4 task_create() 함수
9.5 실습 : 사용자 태스크의 추가
9.5.1 사용자 태스크 함수의 추가
9.5.2 navilnux.h 파일 수정
9.5.3 navilnux.c 파일 수정 - navilnux_init() 함수 추가
9.5.4 main() 함수 수정
9.5.5 Makefile 수정
9.6 정리

10장 컨텍스트 스위칭 구현하기
10.1 컨텍스트 스위칭과 스케줄러
10.1.1 멀티태스킹
10.1.2 컨텍스트 스위칭
10.1.3 스케줄러
10.2 실습 : 컨텍스트 스위칭 구현
10.2.1 IRQ 핸들러 수정
10.2.2 태스크 컨텍스트 백업
10.2.3 IRQ 핸들러 함수에 진입
10.2.4 태스크 컨텍스트 복구
10.3 스케줄러 구현
10.3.1 다른 운영체제의 스케줄링 정책
10.3.2 가장 기본적인 스케줄러
10.3.3 라운드로빈 스케줄러 구현
10.3.4 스케줄러 초기화 코드 작성
10.3.5 커널 main() 함수 수정
10.3.6 OS 타이머 핸들러 수정
10.3.7 navilnux.c 전체 내용 다시 보기
10.3.8 사용자 태스크 수정
10.3.9 빌드와 테스트
10.4 실습 : 사용자 스택 할당 검증
10.5 정리

11장 외부 인터럽트
11.1 PXA255의 GPIO 레지스터 계층
11.1.1 대표적인 외부 인터럽트 : 입력 장치
11.1.2 GPIO
11.1.3 PXA255 칩의 GPIO 인터럽트 처리
11.1.4 Edge Detect
11.1.5 PXA255 칩에서 GPIO를 설정하는 레지스터들
11.1.6 GPDR
11.1.7 GFER과 GRER
11.1.8 GEDR
11.1.9 GAFR
11.1.10 버튼 회로 연결
11.2 GPIO 인터럽트 처리
11.2.1 GPIO 초기화 코드 작성
11.2.2 초기화 함수 추가
11.2.3 인터럽트 처리 코드 추가
11.2.4 수정된 전체 코드
11.2.5 테스트
11.3 정리

12장 시스템 콜 구현하기
12.1 리눅스의 시스템 콜
12.1.1 fork() 시스템 콜
12.2 실습 : 시스템 콜 계층 추가
12.2.1 시스템 콜 커널 함수 작성
12.2.2 시스템 콜 초기화 함수 호출
12.2.3 시스템 콜 관련 헤더 파일 작성
12.2.4 사용자 태스크 함수 수정
12.2.5 시스템 콜 래퍼 함수 작성
12.2.6 Software Interrupt의 ISR 수정
12.2.7 Makefile 수정
12.3 실습 : 시스템 콜 추가 절차
12.4 정리

13장 태스크 간 통신 구현하기
13.1 IPC(Inter-Process Communication)
13.1.1 파이프
13.1.2 FIFO
13.1.3 메시지 큐
13.1.4 공유 메모리
13.1.5 임베디드 운영체제의 ITC
13.2 컨텍스트 스위칭 시스템 콜 만들기
13.2.1 블로킹 상태
13.2.2 사용자 태스크에서 호출 가능한 컨텍스트 스위칭 시스템 콜 구현
13.2.3 스케줄러 시스템 콜 추가
13.2.4 entry.S 파일 수정
13.2.5 사용자 태스크에서 스케줄러 호출 테스트
13.3 실습 : 메시지 관리자 정의
13.3.1 navilnux_msg.h 파일 작성
13.3.2 자유 메시지 블록
13.3.3 메시지 관리자
13.3.4 메시지 관리자 제어 함수들
13.4 실습 : 메시지 관리자 함수 구현
13.4.1 msg_itc_send(), msg_itc_get() 함수 구현
13.4.2 navilnux.h 수정
13.4.3 navilnux_init() 함수 수정
13.5 실습 : 시스템 콜 계층에 ITC 함수 등록
13.5.1 시스템 콜 번호 추가
13.5.2 시스템 콜 함수 프로토타입 선언
13.5.3 시스템 콜 함수 본체 작성
13.5.4 시스템 콜 래퍼 함수 프로토타입 선언
13.5.5 시스템 콜 어셈블리어 래퍼 함수 작성
13.5.6 시스템 콜 C 래퍼 함수 프로토타입 선언
13.5.7 시스템 콜 C 래퍼 함수 본체 작성
13.5.8 ITC 테스트
13.6 정리

14 동기화 구현하기
14.1 세마포어
14.1.1 세마포어 구현하기
14.1.2 메시지 관리자 코드 수정
14.1.3 세마포어 함수 구현
14.1.4 새로운 시스템 콜 번호를 세마포어에 할당
14.1.5 시스템 콜 함수의 프로토타입 선언
14.1.6 시스템 콜 함수 작성
14.1.7 시스템 콜 래퍼 함수의 프로토타입 선언
14.1.8 시스템 콜 어셈블리어 래퍼 함수 작성
14.1.9 시스템 콜 C 언어 래퍼 함수 작성
14.1.10 사용자 태스크에서 세마포어 사용 테스트
14.2 뮤텍스
14.2.1 바이너리 세마포어와 뮤텍스의 차이
14.2.2 실습 : 뮤텍스 구현하기
14.2.3 메시지 관리자 수정
14.2.4 뮤텍스 함수 구현
14.2.5 뮤텍스에 시스템 콜 번호 할당
14.2.6 시스템 콜 함수 작성
14.2.7 시스템 콜 래퍼 함수 작성
14.2.8 사용자 태스크에서 뮤텍스 테스트
14.3 실습 : 시간 지연 함수 구현하기
14.3.1 커널 카운터 추가
14.3.2 sleep() 함수 구현
14.3.3 태스크 컨트롤 블록 수정
14.3.4 sleep() 함수 작성
14.3.5 수정된 sleep() 함수를 이용한 뮤텍스 테스트
14.4 정리

15 메모리 동적 할당 구현하기
15.1 메모리 동적 할당 설계
15.1.1 동적 할당에 사용할 메모리 영역
15.1.2 구현의 범위
15.1.3 메모리 풀
15.2 실습 : 메모리 동적 할당 구현
15.2.1 메모리 관리자 수정
15.2.2 동적 할당 전략
15.2.3 free() 함수 구현
15.2.4 malloc() 함수 구현
15.2.5 시스템 콜에 등록
15.2.6 메모리 동적 할당 테스트
15.3 정리

16 디바이스 드라이버 구현하기
16.1 디바이스 드라이버
16.1.1 리눅스 캐릭터 디바이스 드라이버 계층을 차용
16.2 실습 : 디바이스 드라이버 관리자 정의
16.2.1 fops 구조체
16.2.2 자유 디바이스 드라이버 블록
16.3 실습 : 디바이스 드라이버 관리자 구현
16.3.1 drv_init() 함수
16.3.2 drv_register_drv() 함수
16.3.3 시스템 콜에 등록
16.4 실습 : 디바이스 드라이버 추가하기
16.4.1 LED와 스위치를 디바이스 드라이버로 제어
16.4.2 IRQ 핸들러 벡터를 커널에 추가
16.4.3 read(), write() 함수 구현
16.4.4 IRQ 핸들러 함수
16.4.5 mydrv_open() 함수
16.4.6 mydrv_close() 함수
16.4.7 mydrv_read() 함수
16.4.8 mydrv_write() 함수
16.4.9 사용자 디바이스 드라이버를 커널에 등록
16.4.10 사용자 디바이스 드라이버를 테스트
16.5 정리

17 마치며
17.1 프로젝트 종료
17.2 나빌눅스의 파일 구성
17.2.1 entry.S, navilnux.c, navilnux.h
17.2.2 navilnux_memory.c, navilnux_memory.h
17.2.3 navilnux_task.c, navilnux_task.h
17.2.4 navilnux_user.c, navilnux_user.h
17.2.5 navilnux_sys.c, navilnux_sys.h, syscalltbl.h, navilnux_lib.S, navilnux_clib.c, navilnux_lib.h
17.2.6 navilnux_msg.c, navilnux_msg.h
17.2.7 navilnux_drv.c, navilnux_drv.h, mydrv.c
17.3 나빌눅스의 계층
17.4 맺음말
17.4.1 운영체제의 개념, 이론 그리고 구현
17.4.2 임베디드 개발 환경에 대한 경험
17.4.3 ARM 아키텍처에 대한 대략적 이해
17.4.4 마치며

찾아보기
약어표


-----------

후아~ 참 길죠~ ^^;

참! 그리고 조만간 KLDP에서 공동구매 이벤트도 진행할 것 같습니다.
(권순선님께 허락은 받아 놓은 상태입니다...^^)

출판사 사정에 따라 어떻게 될지는 모르겠지만,

공동구매 공지글에 댓글을 달아주신 분들이 대상이구요.
(선착순 20명 / 혹시 사람이 몰린다면 추후 30명까지 늘려볼 수도 있다고 합니다.)

이 중 다섯 분을 선정하며 책을 무료로 드리고,
나머지 15분께는 30% 할인된 금액인 14,000원(배송비 2,500 별도)에 판매하는 방식입니다.

신청자들이 '나는 왜 이 책을 읽고 싶은가'라는 사연을 달면,
추후 제가 적절한 사연을 올리신 분을 채택하는 방식으로 될것 같습니다.
(그냥 선착순으로 하면 '1등', '2등' 이런 댓글 단 분들에게 혜택이 돌아갈것 같아서 그렇습니다.)

공동구매 이벤트에 존경하는 KLDP 회원님들의 많은 성원 부탁드립니다.

KLDP에서 강좌로 시작한 글이
KLDP회원님들의 성원(조회수와 댓글이죠 ^^)에 힘입어 책으로 작업되었고,
첫 판매역시 KLDP 회원님들께 하고 싶습니다.

공동구매 이벤트... 흥행에 실패하면 깊은 좌절의 늪에 빠져
삐뚤어져버릴지도 모릅니다....^^

도와주세요~ 굽신~^^;;;

그럼 조만간 올라올 공동구매 이벤트 공지글을 기대해 주세요~

나빌레라 올림.

댓글

bus710의 이미지

그냥.... 선착순으로 하셔도 되는데...;;

5월에 졸업 작품이 끝난다면 좀 더 심도있는 주제로 공부해볼 계획입니다.
랩에서 자체 제작한 보드에 커널 포팅을 하려고 생각 중입니다.

어서 공구가 시작되면 좋겠네요+_+

akudoku.net 나는 이것만은 확신하니, 믿고 나아간다.

life is only one time

bookgekgom의 이미지

그럼 저도!_!

아...난 미국이지...

---------------------------------------------------------------------------------------------------------------
루비 온 레일즈로 만들고 있는 홈페이지 입니다.

http://jihwankim.co.nr

여러 프로그램 소스들이 있습니다.

필요하신분은 받아가세요.

kdh0404의 이미지

드디어 책제목이 결정됐네요 ^^

축하드립니다.

저번에 강좌를 올려주실때 보드가 없어서 실습은 못해보고 그냥 읽기만 했었는데 이번책에서 에뮬레이터환경도 다뤄 주신다니 드디어 저도 실습을 해볼수가 있게되어 정말 기쁨니다~

공동구매 공지글이 올라올때까지 kldp에 수시로 들어와봐야겠네요. :)

빨랑 책이 나왔으면 좋겠습니다~

-----
Do It Now!


-----
Do It Now!

zedoul의 이미지

이번에 들어가게 될 부서가 리눅스 좀 해야되는 곳이라서 한 권 사서 신입이라 시간 많을 때 한번 뚝딱거려 봐야겠네요. 저는 공동구매로 한 권 살테니 나중에 싸인 부탁 ㅋㅋㅋㅋㅋㅋㅋ
-----------------------------------------
that which doesn`t kill us make us strong

-----------------------------------------
that which doesn`t kill us make us strong

ScalDi의 이미지

축하드림니다 ^^ 개인적으로 리눅스를 공부하면서 부족한점이 많았는데 ㅎㅎ

gurugio의 이미지


축하드립니다. 정말 기쁘시겠어요.
저도 공구참여할께요.
목차를 보니 저에게도 좋은 공부가 될것 같습니다.

----
섬기며 사랑하면 더 행복해집니다.
개인 홈페이지가 생겼습니다 http://caoskernel.org
어셈러브를 개편중입니다 http://www.asmlove.co.kr

nakai57의 이미지

주욱~ 기다리고 있었습니다.
저도 공동구매 꼭 참여하고 싶습니다 ㅎㅎ

올해 하고싶은 재미있는 일이 하나 더 늘어났네요!

khiny의 이미지

축하드립니다.
선착순이라면 게을러서 가능할지 모르겠네요.^^;

세벌의 이미지

목차만 해도 엄청.... 길군요. 많은 분들이 그 책으로 도움을 많이 받길 바랍니다.

http://sebul.sarang.net/

freemckang의 이미지

언젠가 커널의 이해라는 책을 보고 "그래.. OS는 아무나 하는게 아닌게야"라고 생각했었는데 다시 언제서부턴가 이렇게 조목조목 특화된 부분을 잘 설명하는 책들이 나오고 있더군요.. 반가운 소식입니다.

출판되면 꼭 사봐야 겠군요 ^^ 책 많이 팔리세요~ ㅎㅎ

句日新, 日新 日新 又日新.

句日新, 日新 日新 又日新.

불비의 이미지

밥 로스 아저씨 생각도 나고 좋았는데 출간제목은 어째 너무 평범한 느낌이...;

아무튼 어서 나왔으면 합니다.

QueenBee의 이미지

좋은 연재라고 생각했고 관심을 두고 있었습니다.

이렇듯 이제 책으로 출간된다니 공구에 참여해서 열심히 탐독해 보렵니다.

좋은 책 쓰느라고 수고하셨어요.

Fe.head의 이미지

공구 하면 사겠습니다^^

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

sangheon의 이미지

읽어야 할 책들이 좀 많아서 공구를 한다고 해도 바로 읽기 시작 할 수는 없을 것 같지만
일단 읽기 시작하면 한동안 곁에 두고 함께 생활을 하게 될 책 같네요.

아직 OS 만들기 같은 건 학부 때 배운 것이 전부이지만 좋은 경험을 하는게 친절한 길잡이가
되어줄 것 같은 느낌입니다.

--

B/o/o/k/w/o/r/m/

--

Minimalist Programmer

amorette의 이미지

_ ' ') 드디어 나왔군요!
축하드려요!

이제 남은 것은 '광클' 뿐인 것인가....[]

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.