pdf 복사 방지 해제

잡다 2014. 7. 30. 13:24

http://www.pdfunlock.com/

'잡다' 카테고리의 다른 글

헤더 파일에 있는 함수 모음  (0) 2014.08.28
myscanf  (0) 2014.08.27
Virtualbox 네트워크 설정  (0) 2014.07.21
간단한 포토샵  (0) 2014.07.21
Raw socket  (0) 2014.06.28

설정

트랙백

댓글

Virtualbox 네트워크 설정

잡다 2014. 7. 21. 14:37

게스트 OS가 linux일 경우.




1.





2.





3.







4.






5.









6-1. 임시로 네트워크를 잡아줄 경우

- 아래 명령 실행.


# ifconfig eth1 192.168.56.101 netmask 255.255.255.0 up




6-2. 계속 네트워크로 설정할 경우

- 아래 파일 편집


# vi /etc/network/interfaces


auto eth1

iface eth1 inet static

address 192.168.56.101

netmask 255.255.255.0

network 192.168.56.0

broadcast 192.168.56.255








설정이 끝나면 ping 명령어로 접속여부 확인.

'잡다' 카테고리의 다른 글

myscanf  (0) 2014.08.27
pdf 복사 방지 해제  (0) 2014.07.30
간단한 포토샵  (0) 2014.07.21
Raw socket  (0) 2014.06.28
Mac Address, 제조회사  (0) 2014.06.27

설정

트랙백

댓글

간단한 포토샵

잡다 2014. 7. 21. 10:53

http://pixlr.com/editor/


'잡다' 카테고리의 다른 글

pdf 복사 방지 해제  (0) 2014.07.30
Virtualbox 네트워크 설정  (0) 2014.07.21
Raw socket  (0) 2014.06.28
Mac Address, 제조회사  (0) 2014.06.27
[vi명령어] 자동정렬 / 단어찾기 / 도스저장  (0) 2014.06.25

설정

트랙백

댓글

Raw socket

잡다 2014. 6. 28. 10:46

http://blog.naver.com/bitnang?Redirect=Log&logNo=70183418876

'잡다' 카테고리의 다른 글

Virtualbox 네트워크 설정  (0) 2014.07.21
간단한 포토샵  (0) 2014.07.21
Mac Address, 제조회사  (0) 2014.06.27
[vi명령어] 자동정렬 / 단어찾기 / 도스저장  (0) 2014.06.25
GNU Compiler __attribute__  (0) 2014.06.19

설정

트랙백

댓글

Mac Address, 제조회사

잡다 2014. 6. 27. 10:33

MAC 주소로 네트워크 장비 제조 업체(랜카드, 허브, 스위치, 라우터 등등) 확인해보자

맥주소 00-11-22-33-44-55 중에 00-11-22가 해당하는 24bit가 제조회사의 고유 주소이며,

이것은 IEEE에서 할당받는 것으로 OUI(Organizationally Unique Identifier)라고 한다.

 

IEEE 홈페이지에서 이 정보를 확인할 수 있다.

http://standards.ieee.org/develop/regauth/oui/public.html




제조사 목록

00:00:02:00:00:00 BBN 
00:00:0C:00:00:00 Cisco 
00:00:0E:00:00:00 Fujitsu 
00:00:0F:00:00:00 NeXt 
00:00:10:00:00:00 Hughes-LAN-Sytdek 
00:00:11:00:00:00 Tektronix 
00:00:15:00:00:00 Datapoint-Corporation 
00:00:18:00:00:00 Webster 
00:00:1A:00:00:00 AMD 
00:00:1B:00:00:00 Novell-Eagle-Technology 
00:00:1D:00:00:00 Cabletron 
00:00:20:00:00:00 DIAB 
00:00:21:00:00:00 SC&C 
00:00:22:00:00:00 Visual-Technology 
00:00:29:00:00:00 IMC 
00:00:2A:00:00:00 TRW 
00:00:3B:00:00:00 Hyundai 
00:00:3C:00:00:00 Auspex 
00:00:3D:00:00:00 AT&T 
00:00:44:00:00:00 Castelle 
00:00:46:00:00:00 ISC-Bunker-Ramo 
00:00:49:00:00:00 Apricot 
00:00:4B:00:00:00 APT 
00:00:4F:00:00:00 Logicraft-386-Ware 
00:00:52:00:00:00 ODS 
00:00:55:00:00:00 AT&T 
00:00:5A:00:00:00 Schneider-Koch 
00:00:5D:00:00:00 RCE 
00:00:5E:00:00:00 IANA 
00:00:5F:00:00:00 Sumitomo 
00:00:62:00:00:00 Honeywell 
00:00:65:00:00:00 Network General 
00:00:69:00:00:00 Silicon-Graphics 
00:00:6B:00:00:00 MIPS 
00:00:6E:00:00:00 Artisoft-Inc 
00:00:77:00:00:00 Interphase-Corporation 
00:00:79:00:00:00 Net-Ware 
00:00:7A:00:00:00 Ardent 
00:00:7B:00:00:00 Research-Machines 
00:00:7D:00:00:00 Harris 
00:00:7F:00:00:00 Linotronic 
00:00:80:00:00:00 Dowty-Network-Services 
00:00:81:00:00:00 Synoptics 
00:00:84:00:00:00 ADI-Systems-Inc 
00:00:86:00:00:00 Megahertz-Corporation 
00:00:89:00:00:00 Cayman-Systems 
00:00:8E:00:00:00 Jupiter-Solbourne 
00:00:93:00:00:00 Proteon 
00:00:94:00:00:00 Asante 
00:00:95:00:00:00 Sony-Tektronix 
00:00:97:00:00:00 Epoch 
00:00:98:00:00:00 Cross-Com 
00:00:9F:00:00:00 Ameristar-Technology 
00:00:A0:00:00:00 Sanyo-Electronics 
00:00:A2:00:00:00 Wellfleet 
00:00:A3:00:00:00 NAT 
00:00:A4:00:00:00 Acorn 
00:00:A5:00:00:00 Compatible-Systems-Corporation 
00:00:A6:00:00:00 Network-General 
00:00:A7:00:00:00 NCD 
00:00:A9:00:00:00 Network-Systems 
00:00:AA:00:00:00 Xerox 
00:00:AC:00:00:00 Apollo 
00:00:AF:00:00:00 Nuclear-Data 
00:00:B0:00:00:00 RND 
00:00:B3:00:00:00 CIMLinc 
00:00:B4:00:00:00 Edimax 
00:00:B5:00:00:00 Datability 
00:00:B7:00:00:00 Dove 
00:00:BC:00:00:00 Allen-Bradley 
00:00:C0:00:00:00 Western-Digital-SMC 
00:00:C6:00:00:00 HP-Intelligent-Networks-Operation 
00:00:C8:00:00:00 Altos 
00:00:C9:00:00:00 Emulex 
00:00:D0:00:00:00 Develcon-Electronics 
00:00:D1:00:00:00 Adaptec-Inc 
00:00:D4:00:00:00 Puredata 
00:00:D7:00:00:00 Dartmouth-College 
00:00:D8:00:00:00 Old-Novell-NE1000 
00:00:DD:00:00:00 Gould 
00:00:DE:00:00:00 Unigraph 
00:00:E2:00:00:00 Acer-Counterpoint 
00:00:E8:00:00:00 Accton-Technology-Corp 
00:00:EE:00:00:00 Network-Designers-Ltd 
00:00:EF:00:00:00 Alantec 
00:00:F0:00:00:00 Samsung 
00:00:F3:00:00:00 Gandalf-Data-Limited 
00:00:F4:00:00:00 Allied-Telesis-Inc 
00:00:F6:00:00:00 A.M.C 
00:00:F8:00:00:00 DEC 
00:00:FD:00:00:00 High-Level-Hardware 
00:01:02:00:00:00 BBN 
00:01:43:00:00:00 IEEE-802 
00:01:63:00:00:00 National-Datacomm-Corporation 
00:01:68:00:00:00 Wandel-Goltermann 
00:01:C8:00:00:00 Thomas-Conrad-Corp 
00:40:0B:00:00:00 Crescendo 
00:40:10:00:00:00 Sonic 
00:40:15:00:00:00 Ascom 
00:40:27:00:00:00 Sigma 
00:40:2B:00:00:00 TriGem 
00:40:2F:00:00:00 XDI 
00:40:61:00:00:00 DTK 
00:40:95:00:00:00 Eagle-Technologies 
00:40:9D:00:00:00 Digiboard 
00:40:C5:00:00:00 Micom-Communications-Corp 
00:40:C8:00:00:00 Milan-Technology-Corp 
00:40:FB:00:00:00 Cascade-Communications-Corp 
00:60:8C:00:00:00 3COM 
00:80:0F:00:00:00 Standard-Microsystem-Corp 
00:80:10:00:00:00 Commodore 
00:80:17:00:00:00 PFU 
00:80:19:00:00:00 Dayna-Communications 
00:80:1B:00:00:00 Kodiak-Technology 
00:80:21:00:00:00 Newbridge-Networks-Corporation 
00:80:24:00:00:00 Kalpana 
00:80:29:00:00:00 Microdyne-Corporation 
00:80:2D:00:00:00 Xylogics 
00:80:2E:00:00:00 Plexcom-Inc 
00:80:33:00:00:00 Formation 
00:80:34:00:00:00 SMT-Goupil 
00:80:35:00:00:00 Technology-Works 
00:80:3E:00:00:00 Synernetics 
00:80:3F:00:00:00 Hyundai 
00:80:51:00:00:00 ADC-Fibermux 
00:80:52:00:00:00 Network-Professor 
00:80:5C:00:00:00 Agilis 
00:80:7C:00:00:00 FiberCom 
00:80:87:00:00:00 Okidata 
00:80:8A:00:00:00 Summit 
00:80:8C:00:00:00 Frontier-Software-Development 
00:80:96:00:00:00 HDS 
00:80:A1:00:00:00 Microtest 
00:80:A3:00:00:00 Lantronix 
00:80:AD:00:00:00 Telebit 
00:80:B2:00:00:00 Network-Equipment-Technologies 
00:80:C0:00:00:00 Penril 
00:80:C2:00:00:00 IEEE 
00:80:C7:00:00:00 Xircom 
00:80:C8:00:00:00 D-Link 
00:80:D0:00:00:00 Computer-Products-International 
00:80:D3:00:00:00 Shiva-Corporation 
00:80:D4:00:00:00 Chase-Ltd 
00:80:D6:00:00:00 Apple-mac-portable 
00:80:D8:00:00:00 Network-Peripherals 
00:80:E3:00:00:00 Coral 
00:80:F1:00:00:00 Opus 
00:80:F7:00:00:00 Zenith-Communication-products 
00:AA:00:00:00:00 Intel 
00:B0:D0:00:00:00 Computer-Products-International 
00:DD:00:00:00:00 Ungermann-Bass 
00:DD:01:00:00:00 Ungermann-Bass 
00:DD:08:00:00:00 Ungermann-Bass 
02:04:06:00:00:00 BBN 
02:07:01:00:00:00 Racal-Interlan 
02:60:86:00:00:00 Satelcom-(UK) 
02:60:8C:00:00:00 3COM 
02:CF:1F:00:00:00 PrimeEXL-SG-Masscomp 
08:00:01:00:00:00 Computer-Vision 
08:00:02:00:00:00 3COM-formerly-Bridge 
08:00:03:00:00:00 Advanced-Computer-Communications 
08:00:05:00:00:00 Symbolics 
08:00:06:00:00:00 Siemens-Nixdorf 
08:00:07:00:00:00 Apple-Computer 
08:00:08:00:00:00 BBN 
08:00:09:00:00:00 Hewlett-Packard 
08:00:0A:00:00:00 Nestar-Systems 
08:00:0B:00:00:00 Unisys 
08:00:0D:00:00:00 ICL 
08:00:0E:00:00:00 NCR 
08:00:0F:00:00:00 SMC 
08:00:10:00:00:00 AT&T 
08:00:11:00:00:00 Tektronix 
08:00:14:00:00:00 Excelan 
08:00:17:00:00:00 National-Semiconductor-Corp 
08:00:1A:00:00:00 Data-General 
08:00:1B:00:00:00 Data-General 
08:00:1E:00:00:00 Apollo 
08:00:1F:00:00:00 Sharp 
08:00:20:00:00:00 Sun 
08:00:22:00:00:00 NBI 
08:00:23:00:00:00 Matsushita-Denso 
08:00:25:00:00:00 CDC 
08:00:26:00:00:00 Norsk-Data 
08:00:27:00:00:00 PCS-Computer-Systems-GMBH 
08:00:28:00:00:00 TI 
08:00:2B:00:00:00 DEC 
08:00:2E:00:00:00 Metaphor 
08:00:2F:00:00:00 Prime-Computer 
08:00:36:00:00:00 Intergraph 
08:00:37:00:00:00 Fujitsu-Xerox 
08:00:38:00:00:00 Bull 
08:00:39:00:00:00 Spider-Systems 
08:00:3B:00:00:00 Torus-Systems 
08:00:3E:00:00:00 Motorola 
08:00:41:00:00:00 Digital-Comm-Associates 
08:00:44:00:00:00 DAVID-Systems-Inc 
08:00:45:00:00:00 Xylogics 
08:00:46:00:00:00 Sony 
08:00:47:00:00:00 Sequent 
08:00:49:00:00:00 Univation 
08:00:4C:00:00:00 Encore 
08:00:4E:00:00:00 BICC 
08:00:51:00:00:00 Experdata 
08:00:56:00:00:00 Stanford-University 
08:00:58:00:00:00 DECsystem-20 
08:00:5A:00:00:00 IBM 
08:00:67:00:00:00 Comdesign 
08:00:68:00:00:00 Ridge 
08:00:69:00:00:00 Silicon-Graphics 
08:00:6A:00:00:00 AT&T 
08:00:6E:00:00:00 Excelan 
08:00:70:00:00:00 Mitsubishi 
08:00:74:00:00:00 Casio 
08:00:75:00:00:00 Danish-Data-Elektronik 
08:00:77:00:00:00 Retix 
08:00:79:00:00:00 Silicon-Graphics 
08:00:7C:00:00:00 Vitalink 
08:00:80:00:00:00 XIOS 
08:00:81:00:00:00 Crosfield-Electronics 
08:00:83:00:00:00 Seiko-Denshi 
08:00:86:00:00:00 Imagen-QMS 
08:00:87:00:00:00 Xyplex 
08:00:89:00:00:00 Kinetics 
08:00:8B:00:00:00 Pyramid 
08:00:8D:00:00:00 Xyvision 
08:00:8E:00:00:00 Tandem 
08:00:8F:00:00:00 Chipcom-Corp 
08:00:90:00:00:00 Retix 
09:00:07:FF:FF:FF AppleTalk-broadcast 
10:00:5A:00:00:00 IBM 
10:00:D4:00:00:00 DEC 
10:00:E0:00:00:00 Apple-A/UX 
40:00:03:00:00:00 Net-Ware 
47:54:43:00:00:00 GTC 
48:44:53:00:00:00 HDS 
80:00:10:00:00:00 AT&T 
80:AD:00:00:00:00 CNET Technology Inc 
AA:00:00:00:00:00 DEC-network-hardware 
AA:00:01:00:00:00 DEC-network-hardware 
AA:00:02:00:00:00 DEC-network-hardware 
AA:00:03:00:00:00 DEC-network-hardware 
AA:00:04:00:00:00 DEC-network-hardware 
AB:00:00:00:00:00 DEC-Broadcast 
AB:00:01:00:00:00 DEC-Broadcast 
AB:00:02:00:00:00 DEC-Broadcast 
AB:00:03:00:00:00 DEC-Broadcast 
AB:00:04:00:00:00 DEC-Broadcast 
C0:00:00:00:00:00 Western-Digital 
EC:10:00:00:00:00 Enance 
FF:FF:FF:FF:FF:FF Broadcast

'잡다' 카테고리의 다른 글

간단한 포토샵  (0) 2014.07.21
Raw socket  (0) 2014.06.28
[vi명령어] 자동정렬 / 단어찾기 / 도스저장  (0) 2014.06.25
GNU Compiler __attribute__  (0) 2014.06.19
과제 : 문자열치환  (0) 2014.04.08

설정

트랙백

댓글

[vi명령어] 자동정렬 / 단어찾기 / 도스저장

잡다 2014. 6. 25. 17:03

자동정렬


명령모드(esc)에서

gg=G

하면 전체 정렬이 됨~ (들여쓰기도 한방에 OK)

gg    :    문서의 처음으로

=      :    정렬

G     :    문서의 끝으로




단어찾기


명령모드(esc)에서

/찾을단어

하면 찾고싶은 단어들이 하이라이트 됨


확장모드(:)에서

:noh

하면 하이라이트 표시 없어짐





도스로 저장


리눅스에서 만든 파일은 도스(윈도우)에서 열면 깨짐

도스에서도 열수있도록 저장하는 방법

:set ff=dos

한후 저장하면 메모장으로도 잘 열림




http://wowcat.tistory.com/1473 퍼옴







.vimrc

자동 들여쓰기

set autoindent 


C 프로그래밍을 할때 자동으로 들여쓰기

set cindent  


검색할 때 문서의 끝에서 다시 처음으로 돌아가지 않게 하기

set nowrapscan  


백업 파일을 만들지 않기

set nobackup 


키를 잘못눌렀을 때 삑 소리를 내는 대신 번쩍이게 하기

set visualbell  


화면 우측 하단에 현재 커서의 위치보기

set ruler 


Tab을 눌렀을 때 8칸 대신 4칸 이동

set tabstop=4  


자동 들여쓰기를 할때 4칸 들여쓰기

set shiftwidth=4  


줄 번호

set number


백스페이스 안지워질 때 지워지기

set nocp







ls 색깔 나오게 설정


/etc/profile (모든 사용자 설정시)

~.profile (사용자만 설정시)


 alias ls='ls -F --show-control-chars --color=tty'







VIM 명령어 정리

 

 

1. 저장 및 종료

명령어

설명

:w

저장

:w file.txt

file.txt 파일로 저장

:w » file.txt

file.tx파일에 덧붙여서 저장

:q

vi 종료

:q!

vi 강제 종료

ZZ

저장 후 종료

:wq!

강제 저장 후 종료

:e file.txt

file.txt파일을 불러옴

:e

현재 파일을 불러옴

:e#

바로 이전에 열었던 파일을 불러 옴

 

 

2. 입력모드 전환

a

커서 위치 다음칸부터 입력

A

커서 행의 맨 마지막부터 입력

i

커서의 위치에 입력

I

커서 행의 맨 앞에서 부터 입력

o

커서의 다음행에 입력

O

커서의 이전 행에 입력

s

커서 위치의 한글자를 지우고 입력

cc

커서위치의 한 행을 지우고 입력

 


3. 이동

h

왼쪽으로 이동

l

오른쪽으로 이동

j

아래행으로 이동

k

위 행으로 이동

또는 W

다음 단어의 첫 글자로 이동

또는 B

이전 단어의 첫 글자로 이동

또는 E

단어의 마지막 글자로 이동

<CR>

다음행 첫  글자로 이동

^

그행의 첫 글자로 이동

$

그 행의 마지막 글자로 이동

+

다음 행의 첫 글자로 이동

-

위 행의 첫 글자로 이동

(

이전 문장의 첫 글자로 이동

)

다음 문장의 첫 글자로 이동

{

이전 문단으로 이동

}

다음 문단으로 이동

H

커서를 화면 맨 위로 이동

z<CR>

현재 행을 화면의 맨우로 이동

M

커서를 화면 중안으로 이동

z.

현재 행을 화면의 중앙으로 이동

L

커서를 화면 최하단으로 이동

z-

현재 행의 화면의 최하단으로 이동

[n]H

커서를 위에서 n행으로 이동

[n]L

커서를 아래에서 n행으로 이동

ctrl+u

반 화면 위로 스크롤

ctrl+d

반 화면 아래로 스크롤

ctrl+b

한 화면 위로 스크롤

ctrl+f

한 화면 아래 스크롤

gg 또는 1G

문서의 맨 처음으로 이동

G

문서의 맨 마지막 행으로 이동

[n]G 또는 :[n]

n행으로 이동


 

4. 삭제

또는 dl

커서 위치의 글자 삭제

또는 dh

커서 바로 앞의 글자 삭제

dw

현재 위치부터 스페이스 까지 삭제

diw

현재 위치에 있는 단어 삭제

dd

커서가 있는 행을 삭제

[n]dd

현재 커서 부터 아래 n번째 줄까지 삭제

dj

현재 커서와 아래 줄 삭제

[n]dj

현재 커서 부터 아래 n+1번째 줄까지 삭제

dk

현재 커서와 윗로 n+1번째 줄까지 삭제

[n]dk

현재 커서와  줄 삭제

또는 d$

현재 커서가 있는 위치부터 행 끝까지 삭제

d0 또는 d^

현재 커서가 있는 위치부터 행 시작 까지 삭제

 

 

5. 복사 & 붙여넣기

yy 또는 Y

커서가 있는 한 행 복사

p

현재 커서에 붙여 넣기행 복사 일 경우 아래 줄에 붙여넣음.

P

현재 커서위치의 앞행에 붙여 넣기행 복사일 경우에는  줄에 붙여 넣음

[n]yy 또는 [n]Y

커서가 위치한 이후로 n행 복사

[n]p

n번 만큼 붙여넣기 반복

 

 

6. 블록 지정

v

블록 지정

V

줄단위 블록 지정

ctrl+v(윈도우에서는 ctrl+q)

비쥬얼 블록 지정

블록 지정 중 명령

y

블록 복사 하기

r

치환

d

지정 블록 지우기

U

대문자로 바꾸기

u

소문자로 바꾸기

~

대소문자 전환

J

행 합침

:

선택 영역에 대하여 ex명령

<

행 앞에 탭 제거

>

행 앞에 탭 삽입

 

 

7. 문자열 탐색 및 치환

/[문자열]

문자열 탐색

:s/old/new

현재 행의 처음 old new로 교체

:s/old/new/g

현재 행의 모든 old new로 교체

:10,20s/old/new/g

10행부터 20행까지 모든 old new로 교체

[블록지정중]:s/old/new/g

지정 블록 내에서 모든 old new로 교체

:-3,+4s/old/new/g

현재 커서 위치에서 위로 3행 아래로 4행까지의 old new로 교체

:%s/old/new/g

문서 전체에서 old new로 교체

:%s/old/new/gc

문서 전체에서 old new로 확인하며 교체

:g/pattern/s/old/new/g

pattern이 있는 모든 행의 old new로 교체

 

 

8. vim 정규 표현식

^

행의 첫 문자([]안에서는 not의 의미)

$

행의 끝

.

아무 문자나 한 문자 의미

\|

or의 의미

[ ]

[]사이의 문자 중 하나

\{min,max\}

min이상 max이하 반복됨

*

앞의 내용이 0번 이상 반복됨

\+

앞의 내용이 1번 이상 반복됨

\<

단어의 시작

\>

단어의 끝

\n

새 행 문자

\t

탭 문자

 

 

9. vim 확장 정규 표현 문자열

\i

변수 지정에 사용되는 문자들 [0-9A-Za-z]

\I

\i와 같지만 숫자는 제외

\k

keyword로 사용하는 문자 [_\.\-0-9A0Za-z]

\f

파일 이름으로 사용하는 문자

\p

프린트 가능한 문자

\P

\p와 같지만 숫자는 제외

\s

whitespace character(공백과 탭)

\S

non-whitespace character

\d

숫자 [0-9]

\D

숫자가 아닌 문자 [^0-9]

\x

16진수 숫자 [0-9A-Fa-f]

\X

16진수 숫자가 아닌 문자 [^0-9A-Fa-f]

\o

8진수 숫자 [0-7]

\O

8진수 숫자가 아닌 문자 [^0-7]

\w

영문 단어의 시작에 사용되는 문자 [0-9A-Za-z-]

\W

영문 단어에서 사용되지 않는 문자 [^0-9A-Za-z-]

\h

영문 단어의 시작에 사용되는 문자 [A-Za-z-]

\H

영문 단어의 시작에 사용 되지 않는 문자 [^A-Za-z-]

\a

모든 알파벳 [A-Za-z]

\A

알파벳이 아닌 문자 [^A-Za-z]

\l

소문자 [a-z]

\L

소문자가 아닌 문자 [a-z]

\u

대문자 [A-Z]

\U

대문자가 아닌 문자 [^A-Z]

\e

Esc

\t

Tab

\r

캐리지 리턴

\b

백스페이스

\n

새 행

 

 

10. POSIX 문자 클래스

문자 클래스

내용

[:alnum:]

알파벳과 숫자 [A-Za-z0-9]

[:alpha:]

알파벳 [A-Za-z]

[:cntrl:]

제어 문자

[:blank:]

탭과 공백 문자

[:digit:]

숫자 [0-9]

[:graph:]

제어문자와 공백 문자를 제외한 문자

[:lower:]

소문자 [a-z]

[:upper:]

대문자 [A-Z]

[:print:]

제어문자를 제외한 문자즉 프린터 할 수 있는 문자

[:punct:]

[:graph:]문자 중 [:alnum:]을 제외한 문자. ex)!,@,#,$,%,^....

[:space:]

화이트스페이스 ex)공백케리지 리턴새행수직탭폼필드

[:xdigit:]

16진수

 

 

11. 파일 버퍼

:files 또는 :ls 또는 :buffers

버퍼 목록 나열

:b[n]

n번 버퍼로 이동

:bd[n] 또는 :bw[n]

n번 버퍼를 삭제 (n이 없으면 현재의 버퍼를 삭제)

:bp[n]

이전 버퍼로 이동,n 붙이면 n번만큼 이전 버퍼로 이동

:bn[n]

이후 버퍼로 이동,n 붙이면 n번만큼 이후 버퍼로 이동

:sb[n]

창을 수평분할 하여 n번 버퍼를 로드

:bf

첫 번째 버퍼로 이동

:bl

마지막 버퍼로 이동

 

12. Tab

Vim 7.0부터 추가된 기능

:tabnew

새로운 탭을 열기

:tabnew b.txt

b.txt가 존재하면 열고없으면 새로 만들어서 연다

:tabf b.txt

b.txt가 존재하면 열고없으면 에러 발생

:tabn[n]

다음 탭을 열기,n 붙이면 n번 만큼 이동

:tabp[n]

이전 탭을 열기,n 붙이면 n번 만큼 이동

:tabs

탭 목록 보기

:tabclose

탭을 닫기

:tabfirst

첫번째 탭을 열기

:tablast

마지만 탭을 열기

:tabdo %s/old/new/g

모든 탭에 적용을 원할 때 (예 모든탭에서 old new로 변경)

 


13. 다중 창 관련 명령

명령모드

ex모드

결과

창생성

CTRL-W s

:[N]sp[plit]

현재 파일을 두 개의 수평 창으로 나눔

CTRL-W v

:[N]vs[plit]

현재 파일을 두 개의 수직 창으로 나눔

CTRL-W n

:new

새로운 수평 창 생성

CTRL-W ^ 또는 CTRL-W CTRL-^

 

수평 창으로 나누고 이전 파일의 오픈

CTRL-W f

 

창을 수평으로 나누고 커서 위치의 파일 오픈

CTRL-W i

 

커서 위치의 단어가 정의된 파일을 오픈

창삭제

CTRL-W q

:q[uit]!

현재 커서의 창을 종료

CTRL-W c

:close

현재 커서의 창 닫기

CTRL-W o

:on[ly]

현재 커서의 창만 남기고 모든 창 삭제

창이동

CTRL-W h

 

왼쪽 창으로 커서 이동

CTRL-W j

 

아래쪽 창으로 커서 이동

CTRL-W k

 

위쪽 창으로 커서 이동

CTRL-W l

 

오른쪽 창으로 커서 이동

CTRL-W w

 

창을 순차적으로 이동

CTRL-W p

 

가장 최근에 이동한 방향으로 이동

CTRL-W t

 

최상위 창으로 이동

CTRL-W b

 

최하위 창으로 이동

창이동

CTRL-W r

 

순착으로 창의 위치를 순환

CTRL-W x

 

이전 창과 위치를 바꿈

CTRL-W H

 

현재창을 왼쪽 큰화면으로 이동

CTRL-W J

 

현재창을 아래쪽 큰화면으로 이동

CTRL-W K

 

현재창을 위쪽 큰화면으로 이동

CTRL-W L

 

현재창을 오른쪽 큰화면으로 이동

창 크기 조정

CTRL-W =

 

창의 크기를 모두 균등하게 함

CTRL-W _

 

수평 분할에서 창의 크기를 최대화

CTRL-W |

 

수직 분할에서 창의 크기를 최대화

CTRL-W [N]+

:res[ize] +N

창의 크기를 N행 만큼 증가

CTRL-W [N]-

:res[ize] -N

창의 크기를 N행 만큼 감소

CTRL-W [N]>

 

창의 크기를 오른쪽으로 N칸 만큼 증가

CTRL-W [N]<

 

창의 크기를 오른쪽으로 N칸 만큼 감소

다중창 사용의 경우 대부분 붙여서 사용하는 명령어는 CTRL을 같이 눌러도 똑같은 역활을 하는 경우가 많다
) CTRL-W j  CTRL-W CTRL-J와 같다.

 

 

14. 마킹 및 마킹위치로 이동

m[a-z0-9]

파일내에서 마킹현재 버퍼내에서만 이동 함 예)ma

m[A-Z]

전체영역에서 마킹다른 파일로도 이동 함.

`[A-Za-z0-9]

마킹된 위치로 돌아감 예)`a

’[A-Za-z0-9]

마킹된 행의 처으으로 이동함)‘a

직전에 커서가 위치하던 행의 처음

``

직전의 커서 위치로 이동

’”

이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 행의 처음으로 이동

`"

이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동





출처 : http://gyuha.tistory.com/157

'잡다' 카테고리의 다른 글

간단한 포토샵  (0) 2014.07.21
Raw socket  (0) 2014.06.28
Mac Address, 제조회사  (0) 2014.06.27
GNU Compiler __attribute__  (0) 2014.06.19
과제 : 문자열치환  (0) 2014.04.08

설정

트랙백

댓글

GNU Compiler __attribute__

잡다 2014. 6. 19. 09:17
  • __attribute__((__used__))
    • 컴파일러가 코드를 최적화 할 때, 사용되지 않은 변수라 하더라도 제거하지 않도록 한다
    • "unused variable" 관련 compile warning을 방지
  • __attribute__((__aligned__(x)))
    • 변수가 위치하는 메모리의 주소를 x의 배수로 정렬한다
    • e.g) __attribute__((__aligned__(sizeof(long))))
  • __attribute__((__packed__))
    • 구조체 변수에대한 메모리를 할당 할 때, 기본적인 align 규칙(보통은 word, 4 bytes)을 따르지 않고, 실제 데이터의 크기 만큼만 메모리를 할당 하도록 한다
  • __attribute__((__section__(x)))
    • 변수가 ELF 오브젝트 내부에 x라는 이름을 갖는 특별한 섹션 안에 만들어지도록 한다
    • 주로 kernel 초기화 시에만 필요한 코드들을 .init.xxx section에 위치시키고, 사용 후에는 제거(free)하여 가용 메모리를 늘리는 방법으로 이용된다
    • 또한 이렇게 특정 section에 코드들을 위치시키는 방법은, code의 locality를 높여 instruction cache의 hit rate가 높아질 가능성(pipeline broken rate가 낮아질 가능성)이 있다
    • e.g.) __attribute__((__section__(".init.setup")))

# Practical Example #
(kernel/include/linux/init.h)
/*
 * Only for really core code.  See moduleparam.h for the normal way.
 *
 * Force the alignment so the compiler doesn't space elements of the
 * obs_kernel_param "array" too far apart in .init.setup.
 */
#define __setup_param(str, unique_id, fn, early) \
static const char __setup_str_##unique_id[] __initconst \
__attribute__((__aligned__(1))) = str; \
static struct obs_kernel_param __setup_##unique_id \
__attribute__((__used__)) \
                __attribute__((__section__(.init.setup))) \
__attribute__((aligned((sizeof(long))))) \
= { __setup_str_##unique_id, fn, early }

#define __setup(str, fn) \
__setup_param(str, fn, fn, 0)





http://yonomi.tistory.com/45 에서 퍼옴

'잡다' 카테고리의 다른 글

간단한 포토샵  (0) 2014.07.21
Raw socket  (0) 2014.06.28
Mac Address, 제조회사  (0) 2014.06.27
[vi명령어] 자동정렬 / 단어찾기 / 도스저장  (0) 2014.06.25
과제 : 문자열치환  (0) 2014.04.08

설정

트랙백

댓글

과제 : 문자열치환

잡다 2014. 4. 8. 14:09

 

 

처음 한 소스

#include <stdio.h>
#include <string.h>

char * Change_word(char * string, char * old_word, char *new_word);

int main()
{
  char  caOld_word[32];
  char  caNew_word[32];
  char  caString_word[50];

  fputs("Input String : ", stdout);
  fgets(caString_word, 31, stdin);
  fflush(stdin);

  fputs("Choose String to modify : ", stdout);
  fgets(caOld_word, 11, stdin);
  fflush(stdin);

  fputs("Input String to modify : ", stdout);
  fgets(caNew_word, 11, stdin);
  fflush(stdin);

  Change_word(caString_word, caOld_word, caNew_word);

  printf("Output String : %s \n", caString_word);

  getchar();

  return 0;
}

char * Change_word(char * string, char * old_word, char *new_word)
{
  int  iLength_old = 0;
  int  iLength_new = 0;
  int  iCnt_old = 0;
  int  iCnt_new = 0;
  int  iCnt1 = 0;
  int  iCnt2;
  int  iCnt_temp;
  char  caTemp[50= "";

  // ----------------------------- // 수정 문자 길이 시작
  while('\n' != old_word[iLength_old] && 0 != old_word[iLength_old] )
  {
    ++iLength_old;
  }

  while('\n' != new_word[iLength_new] && 0 != new_word[iLength_new] )
  {
    ++iLength_new;
  }

  // ---------------------------- // 수정 문자 길이 종료

  // ---------------------------- // 문자열 찾아 바꾸기 시작
  while(0 != string[iCnt1])
  {
    if(string[iCnt1] == old_word[iCnt_old]) //--- 첫 문자가 맞으면 뒷문자 확인
    {
      ++iCnt_old;
      for(iCnt2 = 1; iLength_old > iCnt2; ++iCnt2)
      {
        
        if(string[iCnt2+iCnt1] == old_word[iCnt_old])
        {
          if(iCnt_old == iLength_old-1)  //--- 끝까지 다 일치하면 치환
          {
            strcpy(caTemp, string);

            for(iCnt2 = 0; iLength_new > iCnt2; ++iCnt2)  //--- new로 바꾸기
            {
              string[iCnt2+iCnt1] = new_word[iCnt_new];
              ++iCnt_new;
            }

            iCnt_temp = iCnt1 + iLength_old;
            iCnt2 = iCnt2 + iCnt1;

            while(0 != caTemp[iCnt_temp])   //--- 나머지 문자열 넣기
            {
              string[iCnt2] = caTemp[iCnt_temp];
              ++iCnt2;
              ++iCnt_temp;
            }
            string[iCnt2] = 0;

            return string;  //--- 함수 끝
          }
          else
          {
            ++iCnt_old;
          }
        }
        else
        {
          break;
        }
      }
      iCnt_old = 0;
    }
    ++iCnt1;
  }
  // ---------------------------- // 문자열 찾아 바꾸기 종료

  return string;
}

main_before.exe

 

 

문자열 함수를 사용한 코드

#include <stdio.h>
#include <string.h>

char * Change_word(char * string, char * old_word, char *new_word);

int main()
{
  char  caOld_word[32];
  char  caNew_word[32];
  char  caString_word[50];

  fputs("Input String : ", stdout);
  fgets(caString_word, 31, stdin);
  fflush(stdin);

  fputs("Choose String to modify : ", stdout);
  fgets(caOld_word, 11, stdin);
  fflush(stdin);

  fputs("Input String to modify : ", stdout);
  fgets(caNew_word, 11, stdin);
  fflush(stdin);

  Change_word(caString_word, caOld_word, caNew_word);

  printf("Output String : %s \n", caString_word);

  getchar();

  return 0;
}

char * Change_word(char * string, char * old_word, char *new_word)
{
  int  iCnt;
  int  iCnt2;
  int  iCntOld = 0;
  int  iLengthNew = strlen(new_word);
  int  iLengthOld = strlen(old_word);
  char  temp[50];

  if('\n' == new_word[iLengthNew-1])
  {
    --iLengthNew;
  }

  if('\n' == old_word[iLengthOld-1])
  {
    --iLengthOld;
  }

  for(iCnt = 00 != string[iCnt]; ++iCnt)
  {
    if(string[iCnt] == old_word[iCntOld])  // 첫번째 문자 일치?
    {
      iCnt2 = 1;  // 두번째 부터 시작
      iCntOld = 1;  //       ``

      while(iCnt2 < iLengthOld)  // 나머지 문자 일치
      {
        if(string[iCnt2+iCnt] == old_word[iCntOld])
        {
          if(iCnt2 == iLengthOld-1)  // 마지막 문자인가?
          {
            strcpy(temp, &string[iCnt+iCnt2+1]);
            strcpy(&string[iCnt], new_word);
            strcpy(&string[iCnt+iLengthNew], temp);

            return string;
          }
          ++iCnt2;
          ++iCntOld;
        }
        else
        {
          iCntOld = 0;
          break;
        }
      }
    }
  }

  return string;
}

main.exe

 

'잡다' 카테고리의 다른 글

간단한 포토샵  (0) 2014.07.21
Raw socket  (0) 2014.06.28
Mac Address, 제조회사  (0) 2014.06.27
[vi명령어] 자동정렬 / 단어찾기 / 도스저장  (0) 2014.06.25
GNU Compiler __attribute__  (0) 2014.06.19

설정

트랙백

댓글