1. OpenSSL을 빌드하기 위해선 activestate perl이 필요하다. 
            http://www.activestate.com/activeperl/ 


2. OpenSSL을 다운로드 받는다 
http://www.openssl.org/source/

3. 두개의 파일을 열어 유니코드로 저장한다
OpenSSL\crypto\x509v3\v3_pcia.c
OpenSSL\crypto\x509v3\v3_pci.c
 
File -> Advanced Save Options
Unicode (UTF-8 with signature) - Codepage 65001 선택 후 저장
# .\crypto\x509v3\v3_pcia.c : error C2220: warnig treated as error ? no ‘object’ file generated
  .\crypto\x509v3\v3_pcia.c : warnig C4819: The file contains a character that cannot be represented 
  in the current code page <cp949>. Save the file in Unicode format to prevent data loss
  NMAKE : fatal error U1077: 
  ‘”C:\Program Files\Microsoft Visual Studio 8\VC\BIN\cl.EXE”‘ : return code ’0×2′ stop    오류가 발생한다면
  유니코드로 바꿨는지 확인하고, 각 파일 맨위의 주석을 삭제한다. (난 주석을 풀었더니 문제가 발생했다. 유니코드로만 바꿨었다.)
4. Visual Studio xxxx Command Prompt를 열고 OpenSSL폴더 위치에서 
perl Configure VC-WIN32
ms\do_ms
static library 생성은   nmake -f ms\nt.mak
dll 생성은 nmake -f ms\ntdll.mak
# error C2220: warning treated as error - no 'object' file generated 오류가 발생하면 
  makefile을 열어 /WX를 /WX- 로 바꿔서 빌드한다.
  
5. 빌드 성공하면 
C:\OpenSSL_Install\openssl-0.9.8j\out32 위치에서
..\ms\test  로 테스트해본다

out32 폴더에 lib 파일 2개가
inc32 폴더에 h 파일들이 생성됨.

'Develop' 카테고리의 다른 글

map less  (0) 2011.09.29
bitTorrent 개발  (0) 2011.08.04
awk, sed를 이용한 문자열 조작 예1  (0) 2011.07.12
awk 기본  (0) 2011.06.18
리스트 해석  (0) 2011.04.10

grep -h "Query('inSert" *110711_* | awk '{print substr($0, 50)}' > cai_110711.txt

->문서에서 Query('inSert 가 포함된 라인을 찾고, 라인의 50번째 글자부터 추출하여 cain_110711.txt 에 쓴다

sed "s/')/;/g" tdir_$1.txt > dir_$1.txt

-> 문서에서 ') 를 찾아 ; 로 교체하고 dire_$1.txt 에 쓴다

vim -> %s/')/;/g

->모든 라인(%)에서 ') 를 찾아 ; 로 교체한다

sed s/^[0-9]*"."// text.txt > text1.txt

-> 각 라인 에 숫자로 시작해서 .으로 끝나는 부분을 찾아서 삭제

'Develop' 카테고리의 다른 글

bitTorrent 개발  (0) 2011.08.04
OpenSSL 윈도우 빌드  (0) 2011.08.04
awk 기본  (0) 2011.06.18
리스트 해석  (0) 2011.04.10
Vim file format  (0) 2011.03.12


awk '{print $12}' fd.txt > fd_1.txt
awk '{print substr($1,2,length($1)-2)}' fd_1.txt > fd_$1.txt


$1별 $2의 합
awk '
{
   TotalLine[$1] += $2
}
END {
  for (Group in TotalLine) {
     print Group, TotalLine[Group]
  }
}' add_1.txt > add_f.txt

'Develop' 카테고리의 다른 글

OpenSSL 윈도우 빌드  (0) 2011.08.04
awk, sed를 이용한 문자열 조작 예1  (0) 2011.07.12
리스트 해석  (0) 2011.04.10
Vim file format  (0) 2011.03.12
[erlang] 튜플  (0) 2011.03.12
[F(X) || X <- L]
리스트 L로부터 X를 받는 리스트 F(X)

 3> [X || X <- [1,2,3,4,5]].
[1,2,3,4,5]

'Develop' 카테고리의 다른 글

awk, sed를 이용한 문자열 조작 예1  (0) 2011.07.12
awk 기본  (0) 2011.06.18
Vim file format  (0) 2011.03.12
[erlang] 튜플  (0) 2011.03.12
erlang 시작.  (0) 2011.03.12
:se ff=unix,dos    Unix based systems
:se ff =dos,unix    Windows and DOS systems
:se ff=mac,unix,dos    Mac OS 9 systems

'Develop' 카테고리의 다른 글

awk 기본  (0) 2011.06.18
리스트 해석  (0) 2011.04.10
[erlang] 튜플  (0) 2011.03.12
erlang 시작.  (0) 2011.03.12
[링크]Visual Assist 없이 살기  (0) 2010.12.04
정해진 수의 항목을 하나의 개체로 그룹핑

9> P = {10, 45}.
{10,45}

통상 튜플의 첫 번째 요소로 그 튜플이 무엇인지 나타내는 애텀을 사용.
10> Person = {person,                      
10>            {name, joe},   
10>            {height, 1.83}}.
{person,{name,joe},{height,1.83}}

튜플에서 값 추출
1> Point = {point, 10, 45}.
{point,10,45}
2> {point, X, Y} = Point.
{point,10,45}
3> X.
10
4> Y.
45
5> point.
point

복잡한 튜플에서 추출하기 원하는 데이터 뽑기
1> Person = {person, {name, {first, joe},{last,armstrong}},{footsize, 42}}.
{person,{name,{first,joe},{last,armstrong}},{footsize,42}}
2> {_,{_,{_,Who},_},_} = Person.
{person,{name,{first,joe},{last,armstrong}},{footsize,42}}
3> Who.
joe

#익명변수(anonymous variable) : 관심밖인 변수를 담는 공간
_ 동일한 패턴에서 여러번 나와도 상관없다.

'Develop' 카테고리의 다른 글

리스트 해석  (0) 2011.04.10
Vim file format  (0) 2011.03.12
erlang 시작.  (0) 2011.03.12
[링크]Visual Assist 없이 살기  (0) 2010.12.04
Android의 시작  (0) 2010.04.24

설치
윈도 : http://www.erlang.org/download.html 에서 윈도우바이너리 링크로 다운로드
         설치 프로그램 실행. 프로그램의 지시에 따라서 설치

쉘실행
ctrl+R -> cmd -> erl

Erlang 기본
명령끝은 '. '
다양한 방식의 진법표시 : 16#cafe * 32#sugar.
                                   16진법      32진법
변수는 대문자로 시작
단일 할당 변수(single assignment variable) : 값을 오직 한 번만 받을 수 있다.
   바운드(bound)변수 : 값이 할당된 변수
   언바운드(unbound)변수 : 값이 채워지기를 기다리는 변수
   #C의 변수와는 다르다!
   #한번 설정된 변수 값은 변경할 수 없다. ==> 디버깅을 간단하게 한다!
=는 패턴 매칭 연산자
   값이 할당되지 않은 변수와 사용될땐 값과 묶고, 값이 묶인 후엔 매칭 연산자로써 사용.
애텀(atom) : 상수 
   ex) red, december, joe@somehost, a_long_name, 'Monday', '+', '*'

'Develop' 카테고리의 다른 글

Vim file format  (0) 2011.03.12
[erlang] 튜플  (0) 2011.03.12
[링크]Visual Assist 없이 살기  (0) 2010.12.04
Android의 시작  (0) 2010.04.24
[펌] Linux top명령어와 사용방법  (0) 2010.01.04

'Develop' 카테고리의 다른 글

[erlang] 튜플  (0) 2011.03.12
erlang 시작.  (0) 2011.03.12
Android의 시작  (0) 2010.04.24
[펌] Linux top명령어와 사용방법  (0) 2010.01.04
screen 명령  (0) 2009.12.22

모바일계에 있어서의 Gnu 연합같은 OHA(Open Handset alliance)가 2007년 11월 결성.
비독점 개방 표준 플랫폼을 개발하기 시작했고, 이름은 안드로이드(Android).
Google이 가장 적극적으로 참여하였고,
오픈소스 프로젝트를 호스팅하고,
온라인 문서화,
포럼,
SDK를 제공하고있다.
OHA에는 삼성, 모토로라, HTC, LG, Intel, NVIDIA, Qualcomm등도 참여한다.

Android 플랫폼은 리눅스 커널 2.6을 기반으로 발전중이며,
어플리케이션 개발 언어는 자바이며, C++, Lua, Python등도 가능하다고 한다.
어플리케이션 개발은 Windows, Mac, Linux 모두 가능하다

커널과 SDK등은 꾸준히 업데이트 중이다.
(업데이트로 구버젼의 API로 만든 어플리케이션이 작동하지 않을수도 있다고 함.)

내가 공부하고 있는 책은 위키북스의 안드로이드 프로그래밍이다.

개발 환경은
JDK (자바 기반이므로)
eclipse
안드로이드 SDK
eclipse용 ADT

'Develop' 카테고리의 다른 글

erlang 시작.  (0) 2011.03.12
[링크]Visual Assist 없이 살기  (0) 2010.12.04
[펌] Linux top명령어와 사용방법  (0) 2010.01.04
screen 명령  (0) 2009.12.22
fopen 모드  (0) 2009.12.09
top이라고 친 후 h라고 입력 하면 도움말이 나옵니다. 거기에서 보고싶은 걸 입력하면 됩니다.
 
>#top
----------------------------------------------------------------------------
top - 11:35:19 up 44 days,  5:09,  5 users,  load average: 0.03, 0.05, 0.05
Tasks: 343 total,   1 running, 342 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.2% us,  0.1% sy,  0.0% ni, 96.7% id,  1.9% wa,  0.0% hi,  0.0% si
Mem:   2070100k total,  1748748k used,   321352k free,   233704k buffers
Swap:  2096472k total,      236k used,  2096236k free,   642728k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                              
 1629 webadmin  16   0  2808 1116  756 R    1  0.1   0:00.15 top 
----------------------------------------------------------------------------

@각 행별 내용
1) 1행 : 시스템의 가동 시간과 평균 부하의 숫자를 출력
 
top - 11:35:19 up 44 days,  5:09,  5 users,  load average: 0.03, 0.05, 0.05
 
-> 현재시간(11:35:19 )과 uptime 값(up 44 day)를 알수 있으며, 현재 로그인 된 사용자의 수(5 users)와 
    시스템의 최근 1분, 5분, 15분에 대한 각각의 평균 부하율(load average: 0.03, 0.05, 0.05)를 나타냄
->
 i.  Load average: 작업의 대기시간을 말한다. 값이 1이 나왔다면 1분 동안 평균 1개 정도의 프로세서가 대기상태에 있다는 것이다. 서버마다 차이가 있긴 하지만 5 정도면 서버가 부하를 받는 다고 생각한다. 과부하는 10 ~ 15이상이면 과부하라고 본다.
@ 시스템 평균 부하율 정보 : uptime
 
- 시스템의 평균 부하율을 확인할 수 있는 명령어
-1분, 5분, 15분간의 시스템 평균 부하율을 출력
-# uptime
 11:35:19 up 44 days,  5:09,  5 users,  load average: 0.03, 0.05, 0.05
-현재시간(11:35:19), 44일 동안 시스템 재부팅 없이 운영중임(up 44 day),  로그인한 시간(5:09), 현재 시스템에 접속한 사용자(5 users), 1분, 5분, 15분간의 시스템 평균 부하율(load average: 0.03, 0.05, 0.05) 정보를 출력
 
 
2) 2행 : 현재 실행중인 프로세스들의 상황
 
Tasks: 343 total,   1 running, 342 sleeping,   0 stopped,   0 zombie
 
-> 전체 실행된 현재 프로세스의 수는 (343 total), 실행중인 프로세스 ( 1 running), 유휴상태의 프로세스(342 sleeping), 
정지 된 프로세스( 0 stopped), 좀비 프로세스(0 zombie)들의 상황을 알려줌
 
3) 3행 : CPU의 사용에 대한 상황 (이 정보를 통해 CPU의 사용현황을 파악하여 CPU의 추가적인 보강 계획이나 
업그레이드 등의 계획을 세울수 있슴)
 
Cpu(s):  1.2% us,  0.1% sy,  0.0% ni, 96.7% id,  1.9% wa,  0.0% hi,  0.0% si
 
-> 사용자가 사용중인 CPU의 사용율(1.2% us), 시스템이 사용하는 CPU의 사용율(0.1% sy), NICE 정책에 의해 사용되는 CPU의 사용율( 0.0% ni), 사용되지 않는 CPU의 미사용율(96.7% id), 입출력 대기상태의 사용율(1.9% wa)등의 상황에 대해 
알려줌
 
4) 4행 : 메모리의 사용에 대한 상황 (이 정보를 통해 메모리의 사용 현황에 대해 파악하고 메모리의 부족 현상 등을 분석하여 추가적인 메모리의 확장에 대해 고려할수 있슴)
 
Mem:   2070100k total,  1748748k used,   321352k free,   233704k buffers
 
-> 전체 물리적인 메모리(2070100k total), 사용중인 메모리(1748748k used), 사용되지 않는 여유 메모리(321352k free), 버퍼된 메모리의 ㅣ양(233704k buffers)등의 상황에 대해 알려줌
 
5) 마지막행 : 스왑메모리의 사용에 대한 상황(스왑 메모리의 사용이 증가할 경우에는 물리적 메모리의 확장을 고려)
 
Swap:  2096472k total,      236k used,  2096236k free,   642728k cached
 
-> 전체 스왑 메모리(2096472k total), 사용중인 스왑 메모리( 236k used), 남아있는 스왑메모리(2096236k free), 캐싱메모리(642728k cached)등의 상황에 대해 알려줌
 
 
@ 세부 정보 필드별 항목
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                 
 
PID : 프로세스 ID (PID)
 
USER : 프로세스를 실행시킨 사용자 ID
 
PRI : 프로세스의 우선순위 (priority)
 
NI : NICE 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높다.
 
VIRT : 가상 메모리의 사용량(SWAP+RES)
 
SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합.
 
S : 프로세스의 상태 [ S(sleeping), R(running), W(swapped out process), Z(zombies) ]
 
%CPU : 프로세스가 사용하는 CPU의 사용율
 
%MEM : 프로세스가 사용하는 메모리의 사용율
 
COMMAND : 실행된 명령어
 
RES : 현재 페이지가 상주하고 있는 크기(Resident Size)
 
---------------------------------------------------------------------------------
 
A. CPU 과부하를 인지하는 것은 매우 어렵다.
    씨피유의 과부하는 실제로 메모리 문제들과 I/O 문제들 사이의 틈에 끼워져 있다. CPU과부하 여부를 확인하는 방법
    i. Uptime을 사용해 로드 평균값을 확인해 증가 하는지 혹은 감소 하는지 본다. 통상 시스템의 CPU개수에 2를 곱한 값을 
       로드 평균의 적정 수준으로 보기 때문에 해당 시스템의 CPU개수에 따라 적절한 로드 평균값은 달라질 수 있다.
    ii. 디스크 접근이나 페이징을 위해 대기하고 있는 프로세스가 있나?
1. 그럼 프로세스가 있다면 I/O와 메모리 서브 시스템을 검사한다.
    iii. CPU의 대부분을 사용하고 있는 프로세스는 무엇인가?
1. CPU를 많이 사용하고 있는 프로세스들을 적절히 재배치 해 워크 로드를 보다 좋게 분산 시키도록 도와 준다.
    iv. 시스템 스테이트에서 CPU의 대부분 50% 이상의 시간을 소비 하고 있는가?
1. 그렇다면 I/O를 의심해 볼 필요가 있다. 소스 코드를 액세스 할 때 애플리케이션이 I/O를 효과적으로 사용하고 있는지 검사한다.
    v.  CPU로드가 높은데도 불구하고 IDLE 스테이트에서 CPU를 많이 10% 이상 사용하고 있는가?
1. 그렇다면 I/O나 메모리에 의심
    vi. CPU IDLE시간이 끊임 없이 0인가?
1. CPU가 활동량이 많은 것은 시스템을 잘 사용하고 있는 것이지만 항상 100% 사용하고 있다면 일은 어떤 곳에서 계속 쌓인다는 것이다. 즉, CPU 오버로드 발생하고 있다는 것이다.

B. 처방
     i. 불필요한 데몬 프로세스를 제거한다. Rwhod, routed는 성능에 문제를 주는 프로세스이다. Kill 한다.
     ii. at이나 다른 큐잉시스템을 이용해 사용자의 일을 야간에 수행하도록 한다. CPU(메모리, I/O 시스템)가 야간에는 
        과부하가 걸린다고 하더라도 아침에 그 작업이 끝나면 보통 별 문제가 되지 않는다.
    iii. CPU에 의존적인 일의 우선순위를 낮추는데 nice를 사용함으로써 인터랙티브 퍼포먼스를 향상시킬 수 있다. 
        여기서 CPU내에 의존적인 일의 우선순위를 높이는데 nice를 사용함으로써 그 일은 성능을 향상시키겠지만 
        인터랙티브 퍼포먼스는 해치게 된다. Nice를 사용하는 것은 임시 방편적인 방법으로만 써야 한다. 만약 시스템의 
        워크로드가 증가하게 된다면 이런 방법으로는 충분하지 않으며, 시스템을 업그레이드 하든지 교체 혹은 다름 시스템을
        구입해 로드를 공유, 분산해야 한다.

'Develop' 카테고리의 다른 글

[링크]Visual Assist 없이 살기  (0) 2010.12.04
Android의 시작  (0) 2010.04.24
screen 명령  (0) 2009.12.22
fopen 모드  (0) 2009.12.09
[링크] NAT 종류  (0) 2009.12.01

+ Recent posts