글 혹은 그림의 출처가 문제있다면 수정 및 삭제하겠습니다. 우측의 Tags 와 검색기능을 이용하여 편하게 찾을 수 있습니다.
Please check buttons on the right like Tags and language options if can't read this blog (*mobile not support)
국내 TI 3rd party 및 외국 TI 3rd party를 비롯하여 TI 관련회사에서 근무하면서 많이 가장 많이 접해본 SoC 혹은 AP이며, 역사 또한 너무나 잘안다. TI 3rd party 회사부터 시작하여 TI가 처음 Linux Driver 제공하지 않았을 때부터 개발했기에, 관련사항을 많이 접해봤으며, 익숙하게 잘 알고 있다.
나의 갤럭시 노트5가 자꾸 스피커 동작이 되지 않는 현상이 지속적으로 반복이 되며, AS 센터를 방문을 했으나,
AS 센터에서는 APP의 충돌이라며 , 노트 5 초기화를 권유하는데 하는데 왠지 아닌것 같아 한번 자세히 보기로 결심했다.
최근 쓸모 없는 앱들도 몇개 지웠는데 현상은 동일하며, 최근에도 갤럭시노트5가 동일한 현상이 나타나고,
그래서 전원리셋을 했더니 이번에는 더 심각한 문제가 발생했다. 초기화 Loading 화면에서 계속 멈추는 현상 발생하여,
AS 센터 방문이 벌써 3번이 넘은거 같은데 동일한 얘기만 하니, 내가 직접 보기로 하였다.
1. 나의 핸드폰 상태
현재 핸드폰 상태
설정->디바이스정보
소프트웨어 자동 다운로드 이미 되어있음 (안드로이드 자동 업그레이 막음, APP은 적용여부는 모르겠음)
다른 안드로이드 App는 자동 업데이트는 진행이 되지 않는 것 같은데,
삼성 Apps는 자동 업데이트가 진행이 진행이 되는 것 같음.
핸드폰 오류-문제현상
현재 생각으로는 삼성관련 프로그램이 업데이트가 되면 문제가 발생되는 것 같으며, 스피커가 만 동작되지는 않는
현상은 몇 번 보았다. 최근 동일 현상이 일어나서 확인을 했는데, 스피커는 동작하지만, 이어폰은 동작이 되는 것을
확인을 하였다. 이 때 스피커의 벨소리 /미디어 / 알림 / 시스템 소리가 모두 작동되지 않는다.
개인적으로 App이 문제를 일으켜도 이어폰 동작이 되는 것으로 보아 ALSA Interface에는 크게 문제가 없을 것이라고 추측하고,
상위 관련된 부분이 문제 일으켜 발생하는 것으로 추측 혹은 스피커 관련 문제로 파악하는데
이부분을 알아보도록 하겠다. (설마 스피커문제는 아니겠지)
핸드폰 오류-발생시점 및 확인해야할 사항
핸드폰 오류 발생시점이 앱의 실행여부보다는 핸드폰이 사용하지 않는 상태에서 항상 발생이 되는 것으로 생각이 되고,
자동업그레이드를 금지했으나, 삼성 소프트웨어 APP은 진행이 되고 있다. 다른 APP의 자동 업데이트가 진행은 되지 않는 것
같으며, 삼성 소프트웨어는 자동으로 Update가 된다. 이부분을 막을 수 있는 방법을 모색.
2. 갤럭시 노트 불량 TEST
검색결과 다음과 같은 삼성 내부 TEST가 있다는 것을 알게되었으며, 다음에 문제가 또 다시 발생할 경우,
다시 실행을 해보겠다. 그런데 아직 실행을 해보지 못해 동작여부 검증을 못했다.
나의 벨소리가 동작되지 않은 시간을 확인하기 위해 아래와 같이 분석.
통화기록분석관리 및 녹음 , 후스콜 App으로 나의 통화기록을 전부 확인
C. 문제발생상황 정리
문제 발생일은 7월 20일 저녁부터 벨소리가 갑자기 동작이 되지 않았으며, 오전에는 동작확인을 하였고,
문제 발생하기 전에 나는 전화기를 사용하지 않은 것으로 기억하고 있다. 왜냐하면 STM관련 부분을
노트북으로 일을 하고 있어서, 전화기는 지속적으로 절전모드로 유지하고 있었기 때문이다.
그리고 7월 20일 오후부터 전화기의 벨소리가 갑자기 동작이 되지 않았고, 이후 전화기 기본 동작이 되었지만,
스피커 기능은 되지 않았다. 그래서 전원리셋을 했으나, 핸드폰이 지속적으로 멈추는 현상까지 발생 하였다.
결론은 삼성 결제 App하고 다른 App이 문제가 있을 거라고 생각하고, 이 것이 문제를 일으키는 것으로 추측
5.2 설정-> 개발자 옵션 확인 사항
다시 문제가 다시 발생할 경우 USB 디버깅을 ON을 유지.
버그 보고서 작성 기능을 사용가능
이를 확인해보니, 디버깅내용을 메일로 전송 가능, 추후 이를 이용하면 될 것 같다.
실행 중인 서비스 (App Service 확인)
현재 돌아가는 서비스 중 음성 관련된 프로그램을 확인 (유력한 Apps 추측)
관련프로그램 삭제 및 서비스 미동작으로 변경
Samsung Pay
정글플레이어
Pooq
Voice Recorder
알송
5.3 다른 문제의 가능성
현재 문제상황 보면 거의 핸드폰을 사용하지 않을 때 발생하며 이 때 삼성 App가 자동 Update가 된다.
하지만, 핸드폰의 절전모드의 상태도 고려를 하게되면, 이 문제도 있을 것 같은데,
결론, 오늘 다시 이문제가 다시 또 일어났는데, 이 일에 쓸데없이 시간을 너무 많이 소비한 것 같아,
결국 AS 센터에서 7월 26일 공장 초기화하고, 자동업데이트 설정으로 한 다음, 기본 프로그램만 설정한 후
추후 이 문제가 다시 발생하는지로 상황을 지켜보기로 했으며, 아직까지는 문제 없이 사용중이다.
젠장 하단 스피커....
공장초기화 하고, 기본프로그램 이외 아래의 프로그램을 설치하였는데 7월 28일 또 발생하였고, 좀 전에 AS 받고 난 후
동작 되었는데, 저녁 먹은 후 또 발생
위 사이트를 가면 BlogId를 넣으라고 나오며 이를 넣고 실행을 하면 기본동작을 확인가능하다.
이외 옵션을 넣고 동작확인이 가능하다.
BlogID 란
Google 내부에서 사용하는 ID로 처음에 나의 ID으로 착각했는데, 아니며 검색을 해도, 물어보라는식이였다.
하지만, 쉽게 알아내는 방법은 알아냈다. 로그인을 한 후 게시판글을 수정을 하거나 글을 쓰면, 자신의 BlogID와 Post ID를
상위 주소에서 쉽게 확인이 가능하며, 전체게시판을 가면 상위 주소도 확인가능하다.
사실 나에게는 다 필요는 없는거 같지만, 기본지식을 알아 두고만 있고, 추후 APP을 만든다면, 그때
다시 생각을 해보기로 했다.
3. Google Apps script
Google에서는 Web Interface로 다양한 Apps을 제공을 해주고 있다. 예를 들면, Doc, Sheets 기타등등
이 안에서 이 App의 Form을 변경하거나, Doc 안에서 Script를 넣어 동작시킬 수 있다고한다.
이 Script은 추후 편이성을 위해서 많이 이용될 것 같다.
본인도, Javascript을 잘 모르지만, Google을 통해 원하는 기능을 검색을 하면 풍부한 예제가 있기에, 어렵지 않게 구현하리라고 본다.
1.3 Blog에서 작은 Image 및 ICON 만드는 법
GIF/JPG/기타 등등 의 Image 파일 없이 쉽게 문자로만 Image를 만들수가 있다.
ICON을 쉽게 만드는 법
URL 중에 data:image/png 이런구조로된 것이 궁금하여 검색했는데, 아래 사이트에서 해답을 얻었다.
위 방식으로 할 경우, 그림파일을 문자로 base64로 Encoding하여 보여주며, 별도의 그림파일은 필요없고, 문자정보만 있으면 된다.
해상도가 낮으면 빠른 로딩을 가능하나, 버전이 낮은 브라우저는 지원이 불가능 (자세한 설명은 아래 사이트 참조)
Gadget이란, 구글 블로그는 블로그 안에 각 기능을 추가하기 쉽게 Gadget 형태로 각 기능을 가진 모듈로 레이아웃에서 제공한다.
HTML 편집에서의 Gadget (widget)
HTML 편집에서 Gadget의 구성을 자세히 살펴보면 b:widget 태그로 구성이 되어 있으며, 이는 id와 각각의 설정(widget-setting) 을 제공한다.
그리고, 세부조절을 위해서 widget 태그 내부에 div 태그로 다시 한번 포장이 되어있어 이를 변경이 되어 있어, style 태그 or Javascript 와 연결시켜 제어 및 디자인을 변경이 가능하다.
b:widget // Gadget 시작 id 확인 가능 , style 태그 적용
b:widget-setting // 설정 부분
b:includable id='main' // Gadget Body 구성
보통 div 태그와 같이 연동 없으면 추가 : style 태그 와 javascript 연동 가능
b: 로 구성된 script로 구성이 됨 : 자체 script 제공
b:includable
b:widget // Gadget 종료
div 태그가 없다면 추가 하여 넣어도 좋고, 본인의 맘대로 구성을 하여도 좋다.
내가 보기에는 중요한 것은 id를 넣어 줄 수 있는 태그의 구성인 것 같다.
id를 이용하여 style을 적용하고, 또한 다른 태그 id를 이용하여 부분적으로 Javascript과 연동하여 세부조절도 가능하다.
동적으로 하지 않을 거라면, style 태그 설정은 Head 태그 안에서 모두 처리를 하자.
템플릿->HTML편집 에서 간단히 TEST Program을 만들어 보자.
HTML편집에서는 Gadget을 widget이라고 하겠으며, 이를 다음과 같이 수정을 해보자.
widget의 style을 개별 적용
아래소스에서 style tag 안에 widget의 id name을 알아서 그에 맞게 widget의 디자인을 변경을 해보자.
#Label1,2,3은 내가 강제로 추가한 widget id name이며 이의 Style을 변경을 하자.(아래소스참고)
...
가젯 즉 widget의 구성
..
....
widget 과 javascript 적용
아래 소스에서 widget에 이제 Javascript를 적용하기 위해서 div에 id (LabelCon)를 강제로 부여하고 , 각각의 필요한 부분을 수정한다.
....
.....
구글 Jquery 적용 및 블로그 메뉴 변경
구글의 Jquery을 이용하여 widget을 control 해보고, style 태그과 함께 같이 수정했으며, widget의 margin control은 원래 Google 사이트와 비교하여,
블로그 디자인을 변경하였다. Google 사이트 소스분석이 너무 많아 필요한 부분만 일단 내 블로그에 적용하여 맞게 구현을 하였다. 만약 아래의 소스가 라인별로 숫자와 함께 보이지 않는다면, https의 지원문제로 이부분 보안을 해제해주자.
저의 경우는 처음부터 어쩔 수 없이 IAR Program을 사용하게 되었지만, STM32F103C8 MPU를 쓰면서
관련된 다른 Tool 들을 찾아보고 알아보기로했다. 왜냐하면 Github에서 *.coproj로 많이들 이용을 하여,
OpenSource기반을 Tool 이 있다는 것을 알게 되었다.
MPU: STM32F103C8T6
1.1 CoIDE Program
OpenSouce이며, Eclipse 기반의 Tool로 많이 STM 개발자들이 가장 많이 사용하는 Tool인 것 같다.
무료로 사용이 가능하며 Github에서 이 프로그램 기반으로 많이 개발이 되었으며, 이 Tool안에서도,
손쉽게 STM32 관련 Interface program을 구성할 수 있다.
STM 뿐만 아니라 다양한 MPU들을 지원을 해준다.
기본의 Eclipse의 CDT(C/C++ Development Tooling) 기반에 GCC 설치하고 이를 연결하여, 개발하는 방식인 것 같다.
ST Link V2는 외부 Tool로 연결하여, 설정이 상당히 복잡하다.
사실 이 방식보다는 위의 CoIDE가 간편하고 사용하기가 편하다.
처음부터 이 Program을 사용하게 되었으며 사용하기도 간편하며, MPU Check 부터 Source Download가 쉽다.
하지만, Opensource가 아니며, IAR이라는 회사에서 제작이되고 보니 주로 유료로 사용해야하는 것 같다.
STM 뿐만 아니라 다양한 MPU들을 지원을 해준다.
현재 저의 관심은 CoIDE이며, 지금 현재 CoIDE는 Version 문제로 약간 문제가 있다.
Version2로 가면서 많이 변경이 되면서, 기존에 지원되는 것이 지원이 안되고, 불안한 상태이지만,
Version2로 가면서, *.coproj 이외, 문서기능 기본저장으로 파일구조도 풍부한 기능을 제공하는 것 같다. 그리고 약간 변경이 된것 같다.
CoIDE 1.7.8 (이 Version으로 현재 선택해서 사용중)
CoIDEV2 Beta (TEST 해보니, 아직 불안함)
2.1 MPU Check 및 Download
Version2로 가면서, GUI Interface가 더 쉽게 변하였으며, 사용하기도 더 편하다.
다만 기존에 제공하던 기능이 잘 지원이 안된다. Beta Version이라서 그런 것 같다.
이는 Boot에 관련된 부분 Clock 및 Start Up Code가 이곳에 포함이 된다.
C. PERIPHERAL ST
이제 사용하고 싶은 Peripheral들을 선택하여, 넣어 보자.
RCC : Reset 과 Clock Control 이다.
GPIO
EXTI
FLASH : STM에 내부에 있는 FLash Driver //RCC 내 Flash 설정
TIM : Timer
USART : UART 필수
MISC : NVIC과 SysTick을 위해 사용한다.
흥미로운 것은 이곳에서 OS까지 지원을 해준다는 것이다. 나중에 기회가 되면 사용을 해보겠다.
본인 필요하면, Repository에 가서 추후에도 추가가 가능하지만 가입이 필수.
*참고사항
CoIDE는 OS에서 제공을 하고 있는 RTOS는 CMSIS-RTOS API 사용하지 않고 별도의 Layer를 가지고,
사용하는 것 같다. 이 부분은 본인도 확인을 아직 못했다.
2.5 Main 수정을 위한 기본 이해
cmsis_boot->startup->startup_stm32f10x_md.c
reset과 Interrupt handler 이며, interrupt handler를 등록은 하지 않으면, default_handler로 동작.
stm_lib->inc->stm32f10x_rcc.h
clock을 조절하기에 설정은 필수이며, 초기 PLL을 설정 한 후에는
Peripheral을 동작하기 위해서는 버스의 구조상 APB1,2 두개로 나누어져 있어 주의하자
RCC는 중요하며, 필요하지 않는 부분은 사용하지 하도록 하자.
Clock을 조절은 Power 소비하고도 밀접하다.
stm_lib->inc->stm32f10x_gpio.h
이 칩은 Pinmux가 필요없으며, Pin의 상태를 직접설정을 해줘야 한다.
STM32이 이 칩은 모든 PIN이 GPIOA~E 로 구성이 되어있으며, 이는 각각의 Peripheral과 중복이 된다.
그래서 GPIO의 설정은 필수다.
반드시 구조도와 PINMAP을 Datasheet에서 확인하자.
먼저 GPIOA~E사이의 원하는 CLOCK을 RCC로 등록하자. (APB1에 구성)
그리고, Peripheral을 CLOCK 설정을 하자. (APB1 or APB2)
이 후에 관련 GPIOA-E에서 필요한 PIN의 상태를 설정하자.
// APB2 Clock enable for USART(GPIOA9, A10)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
/* USART2 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
/* Configure the GPIO ports( USART2 Transmit and Receive Lines) */
/* Configure the USART2_Tx as Alternate function Push-Pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure the USART2_Rx as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure the USART2 */
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
//아래와 같이 설정하시려면, 먼저 CLock과 GPIO설정을 따로 해야한다.
#define LED_BLUE GPIO_Pin_12 // PB6
#define LED_BLUE_ON GPIOB->BSRR=LED_BLUE // ON
#define LED_BLUE_OFF GPIOB->BRR=LED_BLUE // OFF
#define LED_BLUE_CHK (GPIOB ->IDR & LED_BLUE)
#define LED_GREEN GPIO_Pin_13 // PB6
#define LED_GREEN_ON GPIOB->BSRR=LED_GREEN // ON
#define LED_GREEN_OFF GPIOB->BRR=LED_GREEN // OFF
#define LED_GREEN_CHK (GPIOB ->IDR & LED_GREEN)
#define LED_RED GPIO_Pin_14 // PB6
#define LED_RED_ON GPIOB->BSRR=LED_RED // ON
#define LED_RED_OFF GPIOB->BRR=LED_RED // OFF
#define LED_RED_CHK (GPIOB ->IDR & LED_RED)
// Interrupt handler에 아래와 같이 추가
if(LED_BLUE_CHK){
LED_BLUE_OFF;
LED_GREEN_ON;
}else {
LED_GREEN_OFF;
LED_BLUE_ON;
}
위 Test Program은 printf 부분을 더 수정해야 할 것 같고, 말 그대로 Test program이다
Printf는 동작이 되나, linefeed와 carriage return를 넣어야한다.
나는 운이 좋게 한번에 동작이 되었고, 너무 쉽게 연결이 가능했다. 너무 편한 Interface 인 것 같다.
Interrupt handler도 등록하면 사용이 쉽고, 다른 Interface이도 무리없이 사용가능할 것 같다.
2.6 ST-LINK/V2 연결 및 확인
나의 경우는 Start Debug 및 Download 기능 ST-Link이 문제가 없었고 디버그도 잘 동작하였다.
아마 이미 ST-Link USB Driver가 설치가 되어서 있어 동작이 잘된 것 같다.
만약 동작이 되지 않는다면 Driver를 설치하시기 바란다.
이에 해결방안으로 나는 위 사이트의 3번째 방법인 unlocker 프로그램 이용하지만,
이것 역시 근본적인 해결책은 아닌것 같다. 이문제가 자주 발생하면 윈도우가 이상해지는 것 같다.
그래서 작업관리자에서 직접 해당 프로세서들을 없애는 것이 가장 현명한 선택인 것 같다.
우선 레이아웃을 설정 및 변경하기 전에 본인이 원하는 전체 블로그를 생각을 하고, 다른 블로그를 참조하여 필요한 부분들을
가져와서 이를 보완한다.
Google 사이트
처음 Blogspot의 Gadget 수정을 시작 시도 한 것은, 전부 아래의 사이트 때문이며, 이 과정에서 당연스럽게 Google의 자연스러운 메뉴 선택 방식과 디자인 맘에 들었으나, 템플릿에 존재하지 않아, 위와 같이 잘 알지도 못하는 Javascript과 style tag까지 공부하기 시작했다. 나중에 보니, 구글은 ajax라고 해야하나 Jquery라고 해야하나 library로 이용해서 자연스럽게 이를 구현했으며, 나또한 이를 이용했다. CSS는 구글의 것이 너무 복잡하여 그냥 구글것을 참조했으나, 이제 알고 있는 지식으로 나만의 것을 구현하였다.
Blog에 C/C++ or Java or HTML or 기타 소스를 넣으면, 문제가 발생하는데, 특히 HTML의 경우 특수문자 (< >) 로 인하여 발생한다.
상위 소스를 넣을 경우 경우에 따라 라인마다 숫자표시 (Numbering) 이나, 라인의 강조 (Highlight) 등을 부가적인 기능을 바라는 사람이 많다.
이런 기능을 사용해주는 Javascript / CSS File 들이 존재하며 이를 이용하여 소스를 볼수가 있다.
하지만 기본적으로 거의 전부 pre tag를 이용하는 방법이며 이곳에서 세부기능은 css와 Javascirpt이 해결해주는 것 같다.
Hightlight , Line numbering 역시 Javascript이 전부 해결해주는 것 같다.
우선 가장 기본적인 Pre Tag를 이용한 간단한 소스 넣기를 부터 실행을 해보자.
다만, CSS or Style을 변경을 해주고 이를 적용하는 것이 좋다.
google prettify라는 것이 존재하며, 다양한 CSS파일을 쉽게 얻을 수 있으며,
SyntaxHighlighter 간단한 기능을 제공을 하고 있다.
하지만, HTML이 제대로 동작하지 않으며, pre tag처럼 특수문자를 변경을 해줘야하다.
이를 id="htmlXmp"를 넣어 동작가능하게 한 것 같은데 보기도 그리 좋지 않다
아래와 같이 head안에 넣고 pre tag와 함께 class="prettyprint" 함께 사용언어를 id or prettyprint 한 칸 띠고 넣는다.
Test program은 각 언어지원을 위해 sources 안에 있는 javascript들을 설정해주는 것 같다.
위의 test program들을 보고 사용하지 않을 생각이다.
사용방법
본인이 원하는 *.css 와 *.min.css 를 정하고 아래의 script를 실행하면 동작.
//Google prettify 사용을 위해서 아래와 같이 CSS File *.css / *.min.css 와 Javascript run_prettify.js 선언
<link href="https://jmblog.github.io/color-themes-for-google-code-prettify/themes/vibrant-ink.css" rel="stylesheet" type="text/css"> </link>
<link href="https://jmblog.github.io/color-themes-for-google-code-prettify/themes/vibrant-ink.min.css" rel="stylesheet" type="text/css"> </link>
<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"> </script>
// 소스 표현
<pre class="prettyprint linenums:1 "> // Line Numbering을 1부터 시작
.......
<pre >
소스표현-사용예제 (미동작시 상위사이트 확인)
// Define our Function
function checkMeaningOfLife ( decimal, success ) {
if ( parseInt(decimal,10) === 42 ) {
window.console.log(success);
}
};
// Define our Variables
var str = 'The meaning of life is true',
decimal = 42.00;
// Fire our Function
checkMeaningOfLife(decimal,success);
Google's Prettify 기반으로 한 좀 더 나아진 SyntaxHighlighter이 존재하며, 설정도 더 편한 것 같아, 이 것으로 설정해보기로 했으나, 단점은 Google's Prettify 거의 유사하다.
현재 이 페이지에서는 2번 과 3번이 동시 실행시 3번이 2번에 영향을 주는 것 같으며, 둘 중 하나가 제대로 표현이 안되는 현상이 발생
만약 사용한다면 둘중 하나만 사용하도록 해야함 3번의 Google prettify만 적용 ( 역시나 HTML 쪽이 좀 문제)
사용방법
선언을 해주고, 원하는 설정변경해주면 되지만 현재 Jquery.min.js는 나의 경우는 다른 곳에서도 사용 중이므로 주의하자
// Define our Function
function checkMeaningOfLife ( decimal, success ) {
if ( parseInt(decimal,10) === 42 ) {
window.console.log(success);
}
};
// Define our Variables
var str = 'The meaning of life is true',
decimal = 42.00;
// Fire our Function
checkMeaningOfLife(decimal,success);
마지막으로 많이 사용되어지는 SyntaxHighlighter를 보겠지만 보안이 취약하다고하니 주의하자.
HTML 및 각종 언어 C, Java, 등을 쉽게 보여주며, 사용방법 및 설정이 용이하여 많이 사용되어지며
사용방법 역시 상위와 거의 동일하지만 다양한 기능 및 설정 제공을 해주는게 다르다
...........START // 만약 아래의 글이 안보이면 문제발생
.............END
SyntaxHighlighter 세부설정
사용방법은 pre tag 넣고, class="brush: xhtml; first-line: 10; highlight: [2, 4, 6] " 으로 brush aliases 기본으로 넣고, 설정옵션변경을 원하면, 세미콜론과 함께 추가
config과 defaults 의 설정내용이 나오며, 개별 default 값 확인가능.
bloggerMode: 블로거에서 사용하면 필수라고 적혀있음.
stripBrs : BR Tag 넣으면 이기능을 무시
smart-tabs: pre tag가 간혹 두개로 자동을 분리가 되었을때 혹은 나누어 쓸때 사용