반응형
Packet switching
사용자 A,B가 네트워크 자원을 공유함.
congestion 제어 : 패킷을 큐에 넣고 갈 때까지 기다림.
더 간단하며  call setup을 안함.
- store and forward : 정해진 양을 모아서 보내는 방식.
통계적인 멀티플렉싱(다대일)
 -  많이 사용하는 자에게 더 많이 할당.
 <=> TDM : circuit switching. (모두가 똑같이 나눔)
문제점
bandwidth를 개인당 보장 받을 수 없음.

인터넷 구조 : 네트워크들의 네트워크
roughly hierarchical

packet switched 네트워크의 지연현상과 손실, throughput
delay : 패킷을 보내는데 걸리는 시간. 
1. nodal processing : 패킷에 비트오류 체크 및 보낼 주소를 결정하는 시간.
2. queueing : congestion이 발생할 때 기다리는 시간.
3. 전송 딜레이 (대역폭): 초당 한번에 보낼 수 있는 양.
4. propagation delay : 물리적 링크의 길이, s : 매체 속도, d/s
loss : 라우터에 패킷이 꽉차서 그 패킷이 버려짐.

traceroute program : 첫번째 라우터에게 패킷을 보냄. 다음 두번째, 세번째..
그래서 보낸 딜레이 시간을 잰다.

packet loss : 큐가 가득 찼을 때 패킷을 버린다.

throughput 
한 번에 보낼 수 있는 최대 비트수
대역폭이 작은 곳에 종속된다.

프로토콜 계층, 서비스 모델
 - 한 계층의 프로토콜을 바꿔도 다른 프로토콜을 바꿀 필요가 없기 때문에 계층화 시킨다.
 - 네트워크 구조를 조직화(organizing)
 - 각 계층은 서비스를 표현함.
 - 상위 계층과 하위 계층은 서로 연관되어 있음.

인터넷 프로토콜 스택
응용프로그램계층 : FTP, SMTP, HTTP
전송계층 : 호스트 안의 프로세스-프로세스(포트)끼리 데이터 전송. TCP, UDP (포트번호)
네트워크 계층 : 호스트끼리 id를 통해서 통신 (아이피주소)
링크 계층 : 가까이 있는 라우터와 통신. (맥 주소)
물리적 계층

ISO/OSI 7계층
표현계층 : 암호화, 압축
세션계층 : 동기화
위의 계층은 실제 인터넷에서는 응용프로그램 계층에 포함됨.

캡슐화
응용프로그램 : 메세지
전송계층의 헤더 : 세그먼트
네트워크계층의 헤더 : 데이터그램
링크계층의 헤더 : 프레임
캡슐화하면서 헤더가 붙음.

스위치 : 2계층까지 정보만 원함.
라우터 : 3계층까지 정보만 원함.
호스트 : 모든 계층의 정보를 다 알아야 함.

네트워크 보안
malware, spyware, worms, unauthorized access
DoS : 서버의 기능을 못하게 함. 
link bandwidth를 다 차지 하는 법. TCP자원을 다 쓰는 방법
스파이웨어 : 치고있는 자판의 정보, 방문한 웹사이트 정보가 전송.
바이러스 : 자기 자신을 파괴함.
웜 : 다른 컴퓨터를 파괴하는 데 중점.

패킷 스니핑 : 다른 데이터를 훔펴보는 것.
IP spoofing : 잘못된 주소로 패킷을 보내게 해 다른 컴퓨터를 속임.

worm은 특정한 문자열(signature)을 가지고 있음.
ips 장비가 inline으로 접속되어 있어 signature를 찾아냄. 해당 패킷을 버림.
알려지지 않은 웜을 잡을 수 없음. 문자열 매칭하는데 시간이 부족함.
=> 해결책 : 문자열 매칭 알고리즘을 빠르게. ips장비를 여러개 둘 것.
반응형
반응형
파일의 각 라인으로부터 선택한 부분만큼 문자열을 잘라낸다.

문법)
cut [옵션] [파일]
설명)
각 파일로부터 표준출력으로 선택된 부분을 출력한다.
옵션)
-b=LIST, --bytes=LIST
LIST에 해당하는 바이트만 선택하여 출력한다.
-c=LIST, --characters=LIST
LIST에 해당하는 글자만 선택하여 출력한다.
-d,--delimiter=DELIM
필드 구분자를 TAB대신에 DELIM 문자를 사용한다.
-f, --fields=LIST
구분자가 있든지 없든지 LIST에 해당하는 필드만 선택한다. 


예시)
# cat /etc/passwd | cut -c 2-5                                                     
-> /etc/passwd 파일의 2번째부터 5번째 문자만 출력한다

# cat /etc/passwd | cut -f 3 -d ":"                                               
-> /etc/passwd 파일의 3번째 필드를 출력한다. 구분자는 : 으로 한다  ( 기본 구분자는 tab이다 )
반응형

'리눅스 shell' 카테고리의 다른 글

xxd  (0) 2011.06.15
du  (0) 2011.05.03
xargs  (0) 2010.11.27
uname  (0) 2010.08.09
ipcrm  (0) 2010.06.24
반응형
1. 인터넷은 무엇인가?
hosts = end system : PC,  서버, 랩탑, 핸드폰등
communitcation 
유선 : fiber(광), 구리선(copper) -wired link
무선 : radio, 위성(satellite) - ap
trasmission rate = bandwidth : 한번에 보낼 수 있는 양
라우터 : 제대로 패킷이 갈 수 있도록 패킷을 보낸다. (forward packet)

인터넷 가전제품 
IP picture frame
Web-enabled toast weather forecaster
-날씨에 따라 구워지는 모양이 다름

프로토콜 : 메세지를 보내고 받는 약속
TCP, IP, Ethernet, HTTP, Skype, 
인터넷 : 네트워크의 네트워크
loosely hierarchical(무조건 그길로 가는데 아니라 아무데로나 갈 수 있음)
private network : 내부적으로만 송신가능한 네트워크
인터넷 표준
RFC : Request for comments
IETF : Internet Engineering Task Force
서비스 관점
TCP : 신뢰성 있는 통신
UDP : "best effort" 그러나 신뢰성 없는 통신

프로토콜
네트워크 프로토콜 
포멧, 순서, action를 정의할 수 있음.

2. network edge
end system, access network, link
network edge : applications(응용프로그램) and hosts
access network : 어디에서 접근할 것인지?
physical media : 어떤 매체를 가지고 통신을 할 건지? 유선, 무선
network core : 네트워크의 네트워크, 서로 연결된 라우터들
어떻게 패킷을 보낼 지 결정.

client/server 모델
서버가 항상 살아있어야 함.
웹 브라우저, 이메일등.
p2p 모델
minimal(or no) use of dedicated servers
예) 스카이프, 비트토렌트

network edge 
목표 : 시스템 사이에 데이터 전송
TCP서비스 : 신뢰성. 순서전송
handshaking : setup data transfer ahead of time.
흐름제어 : 받는자가 제대로 받을 수 있는지. (받는자의 버퍼 크기만큼 전송)
congestion 제어 : 라우터에서 병목현상 발생. 그 때 상황판단해서 데이터를 보냄
UDP
연결을 맺지 않음. 신뢰성 없음. 흐름제어, congestion제어 안함.
loss가 있어도 상관없음.

TCP : HTTP, FTP, Telnet, SMTP
UDP : streaming media, teleconferencing, DNS, Internet telephony.

Access network
집에서 접근 
 - 전화모뎀 : dedicated 방식, 최대 56K
 - DSL : dedicated 방식. 다운로드 8MB, 업로드 2MB, 전화회사에서 만듬. 
 - 케이블 모뎀 
 HFC : 집에서는 구리선, 광을 같이 사용. FDM방식

회사에서 접근 
 - LAN : Local Area Network
 - Ethernet
 - 라우터 : 현재 네트워크에 존재하지 않는 경우만 사용
 - 스위치 : 내부에 있는 네트워크에서 통신을 할 때(충돌이 발생하지 않음)

무선으로 접근
 - wireless LAN : WiFi 802.11
 - Wibro등.

Physical Media
physical link 
 - guided media(유선) : 구리선, 광, 동축케이블
 구리선 TP(twisted pair)
 동축케이블
 광의 특징 : 고속, 에러가 적음.
 - unguided media(무선)
 radio파
  reflection(반사) : 벽에 반사됨.
 장애물에 약함.
 다른 신호에 의해 간섭을 받음.

3. network core
라우터에서 어떤 전송 방식을 사용할 것인가.
circuit switching(dedicated) 
전화. 한번 점유를 하면 동시에 사용 못함. performance가 보장됨. call setup 필요.
네트워크 정해진 양만큼 자원 조각을 나눠서 call을 각 사람에게 할당할 수 있음.
-나누는 방법 : 시간, 주파수
packet switching(shared) : 인터넷. 원할 때만 대역폭을 사용.

반응형
반응형
switch문과 함께 고려해야 할 것 : lookup table, state machine, if-else
switch문
case : null이 아닌 모든 case에는 break;를 사용해야 함.
모든 switch문에는 반드시 default:가 있어야 함.
연산 결과가 boolean이면 if then else문 사용

루프제어
for 횟수를 알 때, while 횟수를 모를때
for문 안에서 loop제어 금지!
루프 내부에서 실수변수 X
루프 내부에서 break; continue; 사용 자제.

함수 코딩
recursive 호출 사용금지 - 사용할 경우 자세히!
모든 함수에 대해 prototype선언
모든 함수는 가능하면 return 값을 가지도록 코딩. return은 가능하면 한 곳으로!!
모든 함수의 리턴값을 확인할 것!
API 매뉴얼을 꼭 볼 것!

연산
괄호는 많이 사용하는 것이 좋음
&&, ||는 식이 컴파일러에 따라 실행 혹은 skip
if((a=b)) <= 조건문에서 일부러 assignment할때 이렇게 괄호 사용
>>, << : data type이 합당한지 확인
연산식에서 sizeof() 사용금지
for loop 이외에서 comma 연산 사용 금지
명백히 boolean이 아닐경우 value==0으로 사용.

malloc()의 사용
관리가 어렵다. 
overhead 실행시간이 크다.
alloca : 함수 안에서만 사용할 때.
대안 : pointer, static memory
테스트시 모든 메모리 사용을 반드시 monitor
malloc의 리턴값을 반드시 확인 : 총 메모리 사용량을 검사함.

하드웨어와 연관되면 매뉴얼을 자세히 일어야 함.
- 테스트가 가능한 하드웨어 설계를 하도록 요구

기타
unreachable은 없앰.
괄호는 사용
if - else if 마지막에는 else 사용
================
프로그램 디자인을 잘해야 함. : 분업을 위해
설명이 없는 magic 상수가 많이 발견된다.

소프트웨어 발전 방향
소프트웨어 모듈의 재사용이 중요
Platform 기반 S/W 개발, Documentation, Testability

Coding Standard
주기적인 소스 reading
깨끗한 코드를 짠 사람에게 보상 체계

안전하고 멋진코드
에러가 없고 테스트할 수 있고 포팅이 잘되고 따라하고 쉽고

코딩의 자세
시나리오 -> 전체적인 그림(아키텍쳐)
구현 전에 문서를 만들자.
최소한의 설계, API 문서를 만들자.
적어도 만들면서 문서를 쓰자.
반드시 코드를 읽자!

문제를 드러내자.
모든 문제를 분석해야 한다. => 끝까지 쫒아가서 오류를 해결.
3개의 답 : 효율이 낮은 해결책, 최적의 답, 중간에 있는 답.
=> 최적화는 뒤로 미룸. (db는 최적화가 중요, 그래서 돈을 많이 번다.)
Profile 후 가장 오래걸린 하나만 최적화 하자.
읽기 쉽게 쓰자.
warning은 버그로 돌아온다!
코딩의 생산성을 생각하자.
컴파일러는 스마트하다. 의심하지 말자.
컴파일러 매뉴얼을 읽자

자제의 미덕
루프를 짧게 사용하자
global 변수를 자제하자.
global변수를 사용하더라도 포인터를 넘기자.

테스트
모든 모듈을 별도 시험하자
설계대로 시험하자
테스트는 non-interactive하게 하자.
(돌려놓고 집에 갈 수 있게)

코드는 "우리"의 재산!

소스를 인쇄해서 읽는다! => 건들지 말것.
=> 따로 코멘트를 적음. Inspection Defect List 만듬.
시간당 100~200라인 읽을 수 있음.

Source Inspection의 효과
 - 품질 1000% 증가, 14% 생산성 증가
 - 테스트 전에 82% 오류가 검사됨.
 - 시간당 4.4개의 오류를 발견함.

Source Inspection 장려책
 - 테스트 시간에서 뺀다.
 - 소스 리딩(over pizza) day를 만듬.
 - 읽은 소스만 release한다.
 - 각 모듈마다 맨 뒤에 Inspection History comment로 쓴다.
반응형
반응형

매뉴얼을 읽자 : infogcc

Reference Manual 

 - source/document

컴파일러 warning 레벨을 최대로 높임.

 - warning 없애야함. (커멘트)

소스를 잘 볼 수 있는 툴이 필요 ex)emacs, 이클립스등.

정적분석도구 : malloc <-> free찾음.


관찰

Blocking/Non Blocking(임베디드에서는 중요)

nonblocking일경우

ex) fcntl 

event driven으로 작성.

메모리 사용을 확인

malloc <-> free찾음

하드웨어를 이해해야함.

 - 하드웨어 매뉴얼을 봐야함.


코딩규칙

- 모든 파일명에 특수문자금지

- case insensitive

한 라인에 최대 글자수 제한 : 80 ~ 132

함수의 라인수 제한 : 50~100라인 (2페이지 이내)

fixed size 폰트 사용

탭문자사용규칙(4 space or 8 space로 바꾸어 사용. 탭문자 사용하지 말것)


헤더파일

#ifndef _????_?_

#define _????_?_

...

#endif

프로젝트 초반에는 헤더파일 안에 사용하는 헤더파일들을 나열하고 그걸 include

디렉터리를 사용. (모두 다 영어)


주석

프로그램을 잘 설명하는 것은 주석이 아니라 소스다

코드의 주요 Section 앞에는 comment 블록을 둔다. <=> Doxygen(주석을 문서화하는 프로그램)


변수

변수 이름을 잘 짓자. (31글자 이내의 변수를 사용)

scope에 상관없이 모든 변수명은 다르게

global변수는 한 곳에서만 선언.

변하지 않는 변수는 const사용.

멀티쓰레드 프로그램은 변하는 공유변수는 volatile 선언.(커널 코드에 중요)

명시적인 type사용.

double, float을 사용할 때 표준을 확인(컴파일러 cpu마다 결과가 다름.)

8진수 사용금지

연산의 중간 결과가 허용된 크기를 넘는지 확인(변수의 최대/최소값 주의)


type casting

불필요한 type casting 자제.

데이터 손실 주의

포인터 type과 다른 type 사이의 변환 금지


포인터

2중포인터 사용 자제

포인터끼리 연산 금지

함수포인터 자제

local변수에 대한 포인트 자제


MACRO

대문자 사용

function macro보다는 진짜 function사용

inline function을 사용(macro같은)

enable 1, disable 0같이 상식적 사용

#undef사용 자제

#pragma를 사용할 때는 반드시 문서화

 - 2의 승수로 structure 사용. (하드웨어 dependency때문에 pragma사용)

macro 에서 return, goto, continue, break는 자제

함수용 macro에서 괄호 반드시 사용

*문장형 macro는 중괄호 대신 do... while사용. 


반응형
반응형
 다운로드
소개
1. 소개
제작자 : 신동렬(Ryan)
홈페이지 : http://sdr1982.tistory.com
이메일 : 1982sdr@hanmail.net

2. 제작동기
 저는 주로 웹 브라이저로 구글 크롬(Google Chrome)을 사용합니다. 크롬을 사용하다 보니 마우스 휠버튼(가운데버튼)의 활용도가 높았습니다. 마우스 휠버튼으로 탭을 닫을 수 있다던가 새창으로 주소를 열수 있다던가 하는 기능었습니다.  처음엔 윈도우 자체도 프로그램을 휠버튼으로 실행하거나 종료할 수 있으면 좋겠다 생각하여 제작하게 되었습니다.

 그리고 휠버튼을 이용한 화면캡쳐 기능이 있으면 좋겠다는 의견을 듣고 바로 기능을 추가하였습니다. 개인적으로 만들고 싶은 기능이나 수정하고 싶은 부분들이 더 있는데 언제 시간이 날 지는 모르겠습니다. 건의사항이 있거나 궁금한 사항이 있으시면 블로그를 방문하시거나 이메일을 보내주세요.

3. 사용한 보조 프로그램 및 라이브러리 
 (1) CxImage
  이 프로그램을 제작하면서 사용한 라이브러리 입니다. JPG 파일과 PNG 파일 저장기능을 구현하기 위해 CxImage 라이브러리를 포함하여 컴파일 및 링크를 하였습니다.

  관련 주소 : http://www.codeproject.com/KB/graphics/cximage.aspx

기능
마우스 휠(가운데) 버튼을 클릭함으로서 다양한 기능을 수행합니다.

1. 화면 캡쳐
2. 화면 캡쳐의 부가기능
(1) 프로그램 실행
(2) 파일로 저장
3. 더블 클릭 효과
4. 프로그램 닫기/종료 효과
5. 프로그램 최소화 효과
6. 마우스 제스처 기능

화면캡쳐
1. 화면캡쳐
(1) 땔 때
마우스 휠(가운데) 버튼을 드래그하여 화면을 캡쳐합니다.
마우스를 드롭(누르던 버튼을 땔 때)할 때 만들어진 사각형 화면 크기만큼 캡쳐됩니다.
마우스를 드래그하는 중에 ESC버튼이나 마우스 오른쪽 버튼을 누르면 캡쳐가 취소됩니다.
(2) 토글모드
마우스 휠(가운데)버튼을 누르면 캡쳐를 할 수 있는 화면 상태가 됩니다.
마우스 왼쪽 버튼으로 사각형을 그려 캡쳐 영역을 지정합니다.
원하는 캡쳐 영역을 지정했다면 마우스 휠 버튼을 또 누르면 그 영역이 캡쳐됩니다.

반면, 이 상태에서 마우스 오른쪽 버튼을 누르면 캡쳐를 취소할 수 있습니다.
(3) 윈도우
마우스 휠(가운데)버튼을 누르면 해당 윈도우가 캡쳐가 됩니다.
Alt+PrintScreen 키 대신 사용하실 수 있습니다.

2. 부가기능
(1) 프로그램 실행
캡쳐를 한 후 지정된 프로그램을 수행합니다. 기본적으로 '그림판' 프로그램이 자동으로 실행됩니다.
'그림판'이 실행되면 자동으로 그 그림판에 캡쳐한 화면을 자동으로 붙여 넣게 됩니다.
 - '하나만 실행' : 지정된 프로그램의 윈도우에서만 캡쳐한 화면을 자동으로 보여줍니다.

 - '프로그램 선택' : 자동 붙여넣기 기능을 수행할 수 있도록 그림판 이외의 프로그램을 지정합니다.
(2) 파일로 저장'
캡쳐를 한 후 그 이미지를 파일로 저장합니다. 기본적으로 프로그램이 설치된 디렉터리에 파일이 저장됩니다.
저장할 때마다 1,2, 3, ... 방식으로 파일 이름이 증가합니다.
 - 'JPEG','PNG' : 원하시는 파일 확장자로 이미지 파일이 저장이 됩니다. 
 - '폴더 저장' : 원하시는 폴더에 그림파일을 저장합니다. (프로그램 실행 때마다 재설정 해야 함.) 




반응형
반응형
표준입력으로부터 명령어를 실행하고 생성한다.

옵션)
--max-args=최대인수개수, -n 최대인수개수
명령어 한 줄 당 최대한 '최대인수개수'만큼 사용한다. 사이즈가 초과(-s 옵션 참고)했을 경우 더 적은 '최대인수개수'가 사용될 것이다. -x 옵션이 주어지지 않았다면 xargs는 종료할 것이다.

예시)
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f 
tmp안의 디렉터리에서 core라는 파일을 찾아서 모두 삭제한다. 
위와 같이 사용할 경우 파일 이름에 대해 스페이스나 개행문자가 포함된 디렉터리나 파일도 올바르게 처리될 것이다.
ipcs -m| grep 0x00000000 | awk '{print $2}' | xargs -n 1 ipcrm shm
공유 메모리 키 값이 0x00000000에 해당하는 아이디에 해당하는 공유메모리를 지운다.
참고 : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=15110
반응형

'리눅스 shell' 카테고리의 다른 글

du  (0) 2011.05.03
cut  (1) 2011.01.03
uname  (0) 2010.08.09
ipcrm  (0) 2010.06.24
history  (0) 2010.06.23
반응형
출처 : http://indirock.egloos.com/1945031
엑셀에서 2개 이상의 파일을 열 때 하나의 엑셀 프로그램 안에 차일드 윈도우로 여러개 엑셀 파일들의 내용이 나옵니다. 
다음은 엑셀창 하나마다 한 파일에 대한 내용으로 나오게 하는 방법입니다.

1. 도구 -> 폴더옵션

2. 파일 형식-> XLS -> 고급

3. 열기선택 -> 편집에서
명령을 실행할 프로그램을
"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" /en "%1"
로 변경

4. DDE 메세지 삭제(밑의 그림처럼 DDE메세지 칸을 비워둡니다.)

반응형
반응형
출처 : http://blog.naver.com/djwon321/130083100744

1. 컴퓨터에 공개키와 비밀키를 만든다.
ssh-keygen -t rsa

"Generating public/private rsa key pair" 
"Enter file in which to save the key ... " 
그냥 enter를 누른다. 

"Enter passphrase (empty for no passphrase):" 
passphrase를 사용하지 않기때문에 enter를 두번 누른다. 

그러면 마지막으로: 
"Your identification has been saved in ... " 
"Your public key has been saved in ... " 
방금 만든 공개키 파일명과 위치를 기억하라 (항상 파일명이 .pub로 끝난다). 

2. 공개키 파일을 복사할 모든 원격 리눅스 컴퓨터에 복사한다.
키는 원격 리눅스 컴퓨터 /home/계정/.ssh/authorized_keys로 복사해야 한다.
다른 컴퓨터를 지정하고자 하면 공개키 파일 내용을 파일 내용 뒤에 추가한다.
반응형
반응형
.profile이 바뀌지 않았다면 . .profile을 실행하면 된다.

uname -n이 바뀌는 이유에 대해 아시는 분은 댓글을 남겨주세요.
반응형

+ Recent posts