* 출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=549748&ref=549748




=============================================================================================

▲ 질문내용

 

1. 우선 %p 와 %x의 차이점이 무엇인지 알고 싶네요.

 

     %p도 16진수로 표현 %x도 16진수로 표현. 같은 용도인데 왜 따로 사용하는 사례가 있을까요?

     다른점이 있다면 %p는 빈공간에 0을 넣어서 출력하며 대문자더군요.

     (8자리 출력인 것 보면 주소 값 출력과도 관계가 있는 것 같은데요 ㅠㅠ)

 

2.  출력명령문의 #는 무엇을 하는 녀석입니까?

 

     그리고 #을 사용하게 되면

     0x라는 값이 출력됩니다. 0x는 도대체 뭔지요 ㅠ_ㅠ; 16진수일 때만 나오는군요.

 

▲ 소스

 

main()

{

    int a = 100;

 

// 1. %x#사용 a변수의 주소를 16진수로 표현(10자리로 표현하며 빈공간에는 0을 넣어라)

    

    printf("%#010x\n", &a);

 

// 2. %x사용 a변수의 주소를 16진수로 표현   

 

    printf("%x\n", &a);

 

// 3. %x사용 a변수의 값을 16진수로 표현

 

    printf("%x\n", a);

 

// 4. %p사용 a변수의 주소를 16진수로 표현

 

    printf("%p\n", &a);

 

// 5. %p사용 a변수의 값을 16진수로 표현

 

    printf("%p\n", a);

}

 

결과값

 

1. 0x0012ff7c                     <---- %x 와 #사용. 주소 10자리로 출력 빈공간에는 0을 넣었음.

2. 12ff7c                           <---- %x 를 사용 주소 출력.

3. 64                                <---- %x 를 사용 값 출력.

4. 0012FF7C                     <----- %p 를 사용 주소 출력.

5. 00000064                       <---- %p 를 사용 값 출력.



=============================================================================================


%x 에서 %#x 는 0x 를 붙이라는 뜻이구요, (사용하는 사람이 많지는 않은듯 하네요)

%p 는 포인터 크기 만큼 메모리를 읽어서, 16진수로 표시합니다.

 

아래는 MSDN 에서 뽑아왔습니다.

 

%[flags] [width] [.precision] [{h | l | I | I32 | I64}]type

flags : '-', '+', '0', ' ', '#'

    '-' : 오른쪽 정렬

    '+' : 부호 붙임 (- 또는 +)

    '0' : 앞자리에 0 을 붙임

    ' ' : 앞자리에 공백출력

    '#' : o,x,X 와 같이 쓰일경우 진수 표시. (0, 0x, 0X)

          e,E,f,g,G 와 같이 쓰일 경우 소수점 아래 무조건 표시

width : 전체 길이

.precision : 정밀도.. 일반적으로 f 와 같이 쓰이나, s 와 같이 쓰일경우 길이를 강제로 맞출때 사용. d,x 등 기타 다른 플래그도 동일.

    ex: printf("%.5s", "abcdefghijklmn"); --> "abcde" 만 찍힘. (지원안되는 컴파일러도 있음)

h,l,I,I32,I64 :

    h : short 크기만 읽음

    l : long 크기

    I : int 크기

    I32 : 4 바이트 크기 강제

    I64 : 8 바이트 크기 강제

        w : 2byte character

 

type : d,f,x.p... 등 타입은 다 알고 계실거구요...


 

<< 캡쳐자료입니다>> 


원문 출처 : http://blog.naver.com/dangtong76/140054144449





[정보] 초간단 CORE 파일 분석방법

오늘 턱시도 서비스하나가 반영이됐는데 해당 서비스가 특정패턴으로 수행될경우 턱시도 서버를 죽이는 현상일 발생했습니다.

그림에서 처럼 crt100n 이란 턱시도 서비스가 CRS102T 라는 서비스를수행 하려다가 뒤져버렸습니다.

호랑이는 죽어서 가죽을 남기고 프로세스는 죽어서 CORE 를 남깁니다.

The GNU Debugger(보통 GDB 라고 부릅니다) 라는 프로그램을 통해 CORE 파일을 분석해보기로 마음먹었습니다.

GDB 는 거의 대부분의 유닉스 서버에 다 깔려있습니다.

1단계 : CORE 파일의 정체를 파악

core 라는 이름만 가지고는 누가 죽어서 남긴 놈인지 알수가 없습니다. 그래서 file 이라는 명령을 통해 core

파일을 생산한 놈이 누구인지 확인을 해야 합니다.


보시다 시피 해당 core 파일은 08:54 분에 죽은 crt100n 이라는 프로세스가 남긴거네요 ㅋㅋ ^^

2단계 : GDB를 이용한 CORE 파일 분석

gdb사용법 : gdb 수행파일 CORE파일

ex) gdb ./crt100n ./core

아래를 보시면 먼저

Core was generated by `crt100n'.

Program terminated with signal 11, Segmentation fault.

crt100n 이라는 프로세스가 메모리 세그먼트 오류로 인해 죽었고 죽으면서의 마지막 한마디는 "11" 입니다. ^^ ㅋ


3단계 : 문제의 시점(죽은시점)에 무슨일을 했을까?

문제의 시점에 해당 프로세스가 수행한 일을 보기 위해 "where" 라는 gdb 명령어를 사용합니다. where 라고 치면

죽은시점에서스 함수 CALLSTACK(함수호출순서) 을 보여줍니다. 보는 방법은 자바와 마찬가지로 밑에서부터 위로

수행됐다고 보시면 됩니다.

죽은 원인은 "error accessing memory address 0x0: Invalid argument." 이고 해당 에러가 발생할때의 행동은

CRS105T -> CRS102T -> tpenqueue -> tmatmienter -> tmreattach -> _gp_shmat -> malloc -> _sscanf -> sigfillset

순으로 함수가 호출되었고 sigfillset 이란 함수를 수행하다가 죽었습니다.  왜냐면 제일마지막에 수행한 놈이니깐요.


여기서 잠깐 프로그램이 함수호출과정을 간단하게 살펴보겠습니다.

우리가 프로그램을 짜면 하나의 프로그램은 다음과 같이 구성되어 집니다

user define function(사용자 정의 함수) / application programming Interface (API) / standard library (STD library) / system call (OS 호출함수)

대부분의  프로그램의 호출 순서는 다음과 같습니다

패턴1 : 사용자정의함수 -> STD library -> system call

패턴2 : 사용자정의함수 -> API -> STD library -> OS호출함수

GDB 결과를  보시면 CRS105T 라는 프로그램에서 턱시도함수 tpenqueue (API) 를 호출합니다. 그리고 턱시도 함수는 우리가 학교다닐때배운 malloc 이라는

standard 라이브러리에 있는 함수를 호출합니다. 그리고 다시 malloc 이라는 함수는 _sscanf 라는 system call 함수를 호출합니다.

그래서 요약해보면 CRS105T -> CRS102T -> 턱시도함수 -> STD Library Function -> System call function 으로 순서가 정해집니다

# 2014.07.08


"이상향에 도달하는 것에 실패함으로써

우리는 우리가 누군지 정의하게 되고 

그 실패가 우리를 특별한 존재로 만든다."





출처 : http://www.clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=192456



1. 반드시 포함될 단어/문장을 지정하기

 검색어의 처음과 끝에 큰 따옴표(")를 입력하면 해당 단어나 문장이 반드시 포함된 사이트만 검색할 수 있습니다.
ex) "강남 스타일" 을 구글 검색어 창에 입력하면 정확히 강남 스타일이 표시 된 검색어만 보여줍니다.

 

2. 제외할 검색어를 지정하기
 검색어 앞에 마이너스(-)를 입력하면 해당 검색어를 제외한 결과를 표시합니다.
ex) 갤럭시 -아이폰 을 구글 검색어 창에 입력하면 아이폰을 제외한 갤럭시에 대한 검색 결과를 표시해줍니다.

 

3. 유의어를 검색하기
 검색어 앞에 물결표시(~)를 입력하면 검색어와 유의한 의미를 가진 자료를 보여줍니다.
ex) ~저렴한 맛집 을 구글 검색어 창에 입력하면 저렴한과 비슷한 의미를 가진 여러가지 검색어를 같이 보여줍니다.

 

4. 단어의 정의를 검색하기
 검색어 앞에 'define:' 을 입력 후에 검색하면 해당 검색어의 정의를 보여줍니다.
ex) define:우주 를 검색하면 가장 상단에 우주에 대한 사전적 정의를 보여줍니다.

 

5. 계산기
 단순한 사칙연산 및 수식을 입력하면 계산기가 수식을 계산하여 줍니다. 또한 

'answer to life the universe and everything =(삶, 우주, 그리고 모든것에 대한 해답)' 을 입력하면 '42' 라는 결과가 표시됩니다.

이는 은하수를 여행하는 히치하이커를 위한 안내서라는 작품에 나오는 결과로 이스터에그입니다.
ex) 1+2+3+4+5= 를 검색하면 가장 상단에 해당 수식의 해답을 보여줍니다.

 

6. 빈 칸 채우기
 정확한 검색어가 떠오르지 않을 때에는 문장 사이에 별표(*) 를 입력하면 빈 자리를 체워서 결과를 표시해줍니다.
ex) 아인슈타인 * 이론 을 검색하면 아이슈타인의 이론인 상대성이론을 같이 표시하여 줍니다.

 

7. 환율 및 단위 변환
 환율 및 단위를 변환 할 때에는 이퀄(=) 을 사용하면 편리합니다
ex) 1달러 = ?원 을 검색하면 현재 환율에 따른 1달러에 대한 원화를 보여줍니다.

 

8. 날씨 검색
 검색어에 지역명과 날씨를 검색하면 날씨를 표시해줍니다.
ex) 의정부 날씨 를 검색하면 현재 의정부지역의 날씨를 검색하여 줍니다.

 

9. 숫자의 범위 지정하기
 검색할 숫자 사이에 마침표 두개를 입력하여 검색하면 숫자 범위 내의 검색 결과를 보여줍니다. 

   단순 숫자 뿐만 아니라 단위 역시 가능합니다.

ex) 2010년..2012년 선물 를 검색하면 2010년~2012년 과 선물이 포함된 검색어를 보여줍니다.

 

10. 두 단어 중 아무거나 검색하기
 검색하고 싶은 두 단어 사이에 or 을 검색하면 두 단어 중 둘 중 하나라도 있는 검색결과를 표시하여 줍니다.
ex) 미국 or 영국 를 검색하면 미국 또는 영국이 포함된 검색결과를 보여줍니다.

 

11. 특정 사이트 이내에서만 검색하기
 검색하고 싶은 자료를 특정 사이트 이내에서만 한정하고자 할 때에는 'site:주소' 를 입력 후에 검색하면
해당 사이트 이내에서만 검색이 됩니다.
ex) site:plus.google.com 한국 을 검색하면 구글플러스 내에서 한국이라는 글자가 포함된 검색결과를 보여줍니다.

 

12. 고급검색 이용하기
 고급검색을 이용하면 좀더 편리하게 사용할 수 있습니다.

   (http://www.google.com/advanced_search)

 

13. 특정 종류의 파일만 검색하기
 구글은 HTML 콘텐츠만을 배타적으로 검색하지는 않습니다. 찾고자 하는 것을 입력하고 끝에 filetype:tag를 추가합니다.
예를 들어 "filetype:doc"를 추가하면 결과에 .doc 파일들만 검색됩니다. 이 검색 기능은 PDF, 마이크로소프트 오피스 파일, 쇼크웨이브 플래시(Shockwave Flash) 등을 지원합니다.

TIP1. 시트간 이동하기 단축키



Ctrl + PageUp / PageDown

# MS-SQL 쿼리 로그 보기(쿼리문)


select db_name(st.dbid) I3_IC ,

       qs.total_elapsed_time ,

       creation_time ,

       last_execution_time,

       text 

  from sys.dm_exec_query_stats qs cross apply sys.dm_exec_sql_text(qs.plan_handle)st join sys.dm_exec_cached_plans cp on qs.plan_handle = cp.plan_handle 

 where creation_time >= '2012-01-01 00:00:00' 

   --and db_name(st.dbid) is not null and cp.objtype = 'proc' --조건: 종류

   and text like '%delete%'

 order by last_execution_time desc;





***   원본 URL : http://mungi.tistory.com/209



### CMD 창을 이용한 Ad hoc 설정하기 ###


가상 아답타 생성을 통해 사용이 가능함.

1. 가상 Wifi 어뎁터 생성

    CMD(관리자 권한) 띄우고 netsh wlan set hostednetwork mode=allow ssid="name" key="pass"

    ※ name 는 원하는 식별명 이고 pass는 wpa2 상응 8자리 암호이며 암호프리는 안됨에 주의.

 

2. ICS 세팅.

    네트워크 → 속성 → 어댑터 설정변경 에서 Virtual wifi monoport adaptor 가 생성 되었는지 확인하고

    인터넷 연결된 어댑터에서 속성 → 공유 → ...연결허용 체크 → 생성된 Virtual wifi ... 선택.

 

3. 시비스 시작

    CMD 에서 netsh wlan start hostednetwork

    이 명령을 실행하면 Virtual wifi  어댑터가 연결 상태로 표시되고 클라이언트에서 사용 가능. (해제는 start → stop).

  

    ※ 3번을 윈도 시작시 자동실행을 원한다면 바탕화면 → 새로만들기 → netsh wlan start hostednetwork → 확인

         다시 바탕화면 대상에 → 속성 → 고급 → 관리자권한 체크 → 확인 그리고 시작 프로그램에 끌어놓음.

 

이상 Win7 환경에서 ADhoc 장애시 AP모드 사용법 입니다. 


microsoft virtual wifi miniport adapter 는 softAP 기능을 사용하기 위해 Wireless Hosted Network 가 지원 장치에서 Windows 7 에서 생성되는 가상 무선 어댑터입니다.

(자세한 내용은 아래 링크 참조 바랍니다.)

무선 네트워크 장치 및 장치 드라이버에서 Windows 7 에서 정상 호환 (Windows 7 로고 인증) 되어야 하며 또 호스트된 네트워크 모드가 활성화 되어야 생성됩니다.

이는 해당 무선네트워크 드라이버 및 유틸리티를 설치하며 해당 기능이 활성화 될 수 있습니다. ( 제조사에 따라 다를 수 있습니다.) 

또는 타사응용프로그램 및 드라이버 등의 영향으로도 발생될 수 있습니다.  해당 무선 네트워크 장치의 드라이버만 별도로 설치하신 경우  아래 내용을 진행하여 점검해보실 수 있습니다.

시작- 검색상자 - cmd 를 입력하고 검색된 CMD를 마우스 우클릭 관리자 권한 실행합니다.

명령프롬프트에서 아래 명령을 입력합니다.

netsh wlan show drivers

위 내용과 같이 호스트된 네트워크 지원 : 예 로 표시되어 있어야 해당 기능이 사용가능합니다.

아니오로 표시된 경우 올바른 드라이버가 설치되어 있는지 확인하신 후 해당 하드웨어 제조업체로 문의하시기 바랍니다.

 netsh wlan show hostednetwork를 입력합니다.

위와 같이  모드가 허용안함으로 표시되거나 호스트된 네트워크 상태가 사용할 수 없음으로 나타난다면 아래 내용을 입력합니다.

netsh wlan set hostednetwork [ssid=]<ssid> [key=]<passphrase> [keyUsage=]persistent|temporary

ex)

위와 같이 설정 완료 메시지가 나타난다면 장치관리자에서 microsoft virtual wifi miniport adapter를 확인합니다.

 

데이터 전송속도 단위에서, bps 는 "초당 전송 비트의 수 (bit/s)"입니다. bps 단위를, 보다 알기 쉬운 "초당 킬로바이트(KB/s)" 등으로 변환하는 계산기입니다. 참고로, 고화질 JPG 사진 파일 1개는 평균 200KB~300KB입니다. MP3 음악 파일 1개는 보통 3MB~4MB 정도의 크기입니다. 고화질 동영상으로 된 영화 1편은 대체로 1~2GB 내외입니다.

1KB = 1024 Bytes (Default/기본값)
1KB = 1000 Bytes


bps 입력         : bps
초당 킬로바이트  : KB/s
초당 메가바이트  : MB/s
시간당 기가바이트: GB/h

kbps 입력        : kbps
초당 킬로바이트  : KB/s
초당 메가바이트  : MB/s
시간당 기가바이트: GB/h

Mbps 입력        : Mbps
초당 킬로바이트  : KB/s
초당 메가바이트  : MB/s
시간당 기가바이트: GB/h

Gbps 입력        : Gbps
초당 킬로바이트  : KB/s
초당 메가바이트  : MB/s
시간당 기가바이트: GB/h

Tbps 입력        : Tbps
초당 킬로바이트  : KB/s
초당 메가바이트  : MB/s
시간당 기가바이트: GB/h



bps, kbps, Mbps, Gbps, Tbps 는 항상 1000 단위입니다. 즉, 1 kbps 는 1000 bps 입니다. 1024 bps 가 아닙니다.

한편 KB, MB, GB 는 1024 단위입니다. 즉 1 KB 는 1024 Byte 입니다. 그러나 가끔 1 KB 를 1000 Byte 로 간주하는 경우가 있는데 이때는 계산기 상단의 옵션 버튼을 선택하면 됩니다.

(출처) http://mwultong.blogspot.com/2008/01/bps-kbps-mbps-gbps-tbps-calculator.html



연애사진... 

DSLR 카메라의 뷰파인더를 보며...
연애사진 영화를 보고..
새삼스런 공통점을 알았다면 내가 새로운 세상을 보고 싶어한다는 거다





 

##### 스팸 방지 앱 설치하기 #####


내 스마트폰에 모르는 전화번호가 떴다. 


전화받은 나~~~

'씨티캐피탈' 입니다. 대출받을 ~~~~ 궁시렁궁시렁~~

관심없습니다.

툭.... 삐~삐~삐~


같은 내용 전화 받고서 이번같이 예의없이 끊은 넘이 이번달만해도 3번째... 

흠냐... 머리에 열도 나고 혹, 스팸 관련 앱이 있는지 검색했다. 

아니나 다를까  스팸전화번호부라는 게 있더군... 역쉬~~~~

바로  앱 설치하고 해당 전화 번호를 검색해 봤다. 

이론~~~~ 해당 전화가 있더라눈~~~ 


시간되면 한번 앱 사용하시고 나처럼 머리에 열나도록 스트레스 받지 마시길~~~~





+ Recent posts