2015년 4월 29일 수요일

주택청약

http://www.apt2you.com/

주택청약 신청 할 때, 통장에 최소금액 넣어야 하는데, 저번달(초인듯)쯤 넣은 금액까지 이번달 면적 적용하는데 반영이된다

2015년 3월 8일 일요일

source insight format 변환

프로젝트를 할 때 누구는 windows에서 source insight를 사용하고
다른 누구는 unix vim vi gvim 등을 사용할 때
window에서 만든 코드들은 cscope검색할 때 글자가 안보인다거나
vi 에서 ^m 같은 특수 문자가 찍혀 보인다.

vim에서는 LF(Line Feed)만 저장하는 반면
source insight는 LF와 CR(Carriage Return)을 포함해서 저장을 해버리기 때문에 

조금 곤란한 상황이 와버리는 것이다.


이럴 때는  source insight에서 간단히 설정하나만 바꾸면 되는데 
메뉴 Options에 Preferences 에 들어가서
아래쪽에 Default file format을 Unix (LF)로 바꿔주면 상호 문제가 없겠다.


2015년 2월 10일 화요일

duzon 급여명세서 보안메일 여는 법

미리 말씀드리지만
여긴 최후의... 정말 최후의... 목적지 입니다.

설정을 이렇게 저렇게 하는 것은 아니고...

다른곳의 셋팅을 모두 따르고 나서 확인해 볼 만한 내용입니다.

인터넷 옵션 -> 일반 -> 검색(탐색) 기록-> 삭제 -> 전체 체크 후 삭제

하고 다시 급여 명세서를 i.e 로 열어보면 하단에 i.e가 activeX를 차단햇다고 나옴.
해제 함..

정상동작!!!!

레노버 노트북 우측 하단 아이콘 없애기

레노버 노트북을 사서 충실히 업데이트를 하였다면
우측 하단에 지워지지도 않는 요상한 화살표나 자물쇠 모양의 아이콘이 항상 떠 있다.

위쪽 방향 화살표모양 등은 numlock 등의 상태를 나타내고 있으며

해당 아이콘을 없애고 싶다면

바탕화면에서 오른쪽 마우스 버튼을 누르고 화면해상도를 클릭.

해상도 설정 화면이 나오는데 오른쪽 하단의 고급 설정을 클릭

하면 다른 컴퓨터에서는 볼 수 없었던 탭 "Display"가 있다.

사용안함(disable)을 누르고 적용을 하면 쓰윽~..

사라진당

2015년 1월 7일 수요일

머큐리 RUSH-314N WOL (wake on LAN) 방법

실험 2015 01 07

환경
RUSH-314N가 SKB iptv 덕에 설치 되어 있음.
PC는 intel lan카드를 내장함.
BIOS에서 WOL을 지원함. asrock꺼..

현재까지,
내부망에서 핸드폰(RUSH-314N의 와이파이에 접속한 핸드폰)으로 공유기 웹서버(192.168.25.1)로 들어가 WOL를 통해 PC를 켜는 것 까지 성공..

방법은

1.pc 메인 보드 설정

bios로 들어가 WOL를 하겠다고 설정을 함.
-wake on PCI, wake on LAN,  wake on 내장 LAN.. 

이렇게 3개의 옵션이 있는데 나는 내장형 lan이니까 wake on 내장 LAN을 선택 했다.

이 설정으로 가능해진 동작은
"랜카드에서 일어나라는 신호를 받으면 전원을 켬"
정도가 되는 것 같다.

그외 빠른 부팅 의 옵션은 꺼 놓도록 한다.(이런 옵션 자체가 WOL등의 기능을 skip하고 부팅하는 듯)

끝단의 설정은 끝이 났으니 랜카드가 pc전원 off 상태에서 대기전력을 이용해 독립적으로 살아 있게 만들어야 한다.

2. lan card 설정
이제 렌카드 설정을 해야하는데 인터넷 연결을 통한 윈도우 자동 업데이트로 드라이버가 잡혔을 경우에 기능이 누락이 되어 있을 확률이 많기때문에 해당 lan 드라이버를 꼭 설치해야한다.
주로 피시를 사거나 조립했을때 메인보드 드라이버 cd 가 있을 테니, cd 안의 네트워크 드라이버를 설치하면 되겠다.

제어판\네트워크 및 인터넷\네트워크 연결 의 위치에서 
로컬 영역 연결 아이콘을 오른쪽 마우스를 눌러 속성으로 들어간다.

구성을 눌러 드라이버 속성창으로 들어간다.
intel lan에 드라이버를 제대로 깔았다면 탭이 2줄로 되어 있을 것이다.

전원 절전 관련 옵션은 다끄고 WOL기능은 다 켜놓자(기본적으로 WOL은 켜져있는듯)


최종 확인만 남았다!!!!
이제 본체 뒤쪽을 처다보면 렌카드에 주황 녹색 불이 깜빡이는 것을 유심히 지켜보자.
그리고는 pc를 정상 종료한다. 전면판 파워 led에 불이 꺼지면서 컴퓨터가 전원 off 되었을 때 뒤쪽 lan은 불이 들어와 있어야한다.

안들어온다면 뭔가 WOL에 대한 준비가 빠졌다는 것이다.

옵션.전원 옵션 설정
이제 피씨를 꺼도 메인보드가 LAN에게 전원 주겠다 라는 설정을 해야할 차례..

제어판->전원 옵션->디스플레이를 끄는 시간 설정 또는 컴퓨터가 절전 모드로 전환되는 시간 변경-> 고급 전원관리 옵션 설정 변경

을 들어간다. 고사양 모드로 설정해도 좋고. manual로 절전관련 옵셥은 다 고성능 옵션으로 바꾸자. 어쩌면 이 설정덕에 pc종료 후에도 lan에 불이 들어올 수 있다.

이제 세팅은 완료되었다.


최종적으로 피씨를 종료 하고, 폰이나 다른 피씨로 RUSH-314N 웹서버(192.168.25.1)를 들어간다. (비번은 통상 admin // admin)

고급 설정에 보면 WOL 기능이 있을 것이다(없다면 아마 버전이 다른것일 것이다. 사용버전 2.xx)

WOL을 누르면 중앙 하단에 lan으로 접속된 장비의 맥주소가 나오는데 선택하고 비번을 적지 않고 전송?확인? 버튼을 누르면 피씨가 켜지게 된다.



-------------------------------
이제 외부에서도 피씨전원을 on 할 수 있어야 할텐데 그럴려면 외부에서 공유기로 접속이 가능해야한다. 예전 버전의 RUSH-314N는 외부 접속 기능이 있는데....
지금 2.몇 버전은 사라지고 WOL이 생긴거 같다....
뭥미...
그래서 제작 회사에게 문의함(RUSH-314N 외부 접속방법 있는가?)
-------------------------------
추가 수정 예정

2015년 1월 5일 월요일

코드에서 함수 찾기, 패턴 찾기, 문서에서 패턴 찾기

일반적인 문서에서 특정 문자열 을 포함한 문서와 그 위치 보여주기

$ grep -r abc *

grep
(잡아 내자)

-r
(현재 위치 포함 하위 폴더 까지 싹다)

abc
(abc 라고 적힌 곳을)

*
(모든 파일)

현재 폴더 위치 부터 하위 폴더 까지, 모든 txt파일에서 철수 라는 문자열을 찾고 싶다면

grep -r 철수 *.txt

----------------------------------

코드에서 함수 찾기
cscope 를 이용하여 찾기

cscope를 깔자

함수가 있을 법한 위치에서
$ cscope -R


Find this C symbol: 선언된녀석들(맞나?)찾기
Find this global definition: 전역에서 선언된 녀석찾기
Find functions called by this function: 여기적는 함수명 속에 들어있는 모든 함수
Find functions calling this function: 여기적는 함수명 을 부르는 함수
Find this text string: 문자열 찾기
Change this text string: 바꾸자
Find this egrep pattern: 읭?
Find this file: 파일이름 찾기?
Find files #including this file: 그파일에 참조된 파일들
Find assignments to this symbol: 의의응?

ctags를 이용 하여 찾기

ctags를 깔자
$ ctags -R
vim -t 함수명




^M ^L 문자 없애기

linux에서 source insight라는 윈도우 개발 프로그램에서 만든 코드를 불러오면
^M과 ^L같은 특수 문자가 찍히고
cscope 에도 내용을 읽을 수 가 없게 된다.

그럴 땐
해당파일(aaa.c라고 할 때)

리눅스에서

dos2unix aaa.c

라고 하면 linux용으로 파일이 바껴 cscope도 잘된다

폴더 용량 보기

du 라는 명령어

du -sh

외부에서 ctrl+C한 내용을 vim 안에 넣기

위치 잡고 normal모드(입력모드에서 esc키 누른상태)에서

"+p
를 치면된다

큰따옴표 플러스 p를
적당한 속도로 순차적으로 입력하면

클립보드에 있는 text를 붙여넣기 할 수 있다.

통상 블럭을 지정하면 복사가 되고

붙여넣기를 할 땐 오른쪽 마우스 버튼..



---
언젠가 한번쯤 쓸 일이 있을 듯..

바꾸기

본문에 있는 내용을 바꾸기

여기서부터,여기까지s/A/b/g

여기서부터
(시작라인 처음이면 "1", 현재라인이면 ".")

,
(구분자)

여기까지
(몇번째 라인까지 하겠는가? 현재라인 "." 본문 끝까지"$"

s
(select 걔네들 선택하는데)

/A
(/는 구분자, A라는 문자&문구를)
/B
(/는 구분자, B라는 문자&문구로)
/g
(/는 구분자, 전부다)

해서

문서 라인이 1부터 3000줄 까지 있고
내용중 다마네기라는 글자를 양파로 바꾸겠다 한다면

1,$s/다마네기/양파/g

로 하면 되겟다.


명령어 FIND 응용 - 원하는 파일만 삭제 & 수정하기

LINUX

find ./* -name "*.cpp" -exec dos2unix {} \;

find
(찾아)

./*
(현재 위치에서 전부)

-name
(파일명으로)

 "*.cpp"
(확장자가 cpp인 것들)

  -exec
(다른 명령어를 실행하겟다)

 dos2unix
(win 포멧을 unix 포멧으로)
ex) rm(삭제), rm -rf (묻지도 따지지도 않고 삭제)....

 {} \;
({}찾은애들 ..)

{}와 \사이에 띄워쓰기 필수

2014년 7월 21일 월요일

OAM 관련용어 정의

명칭 정의
in-service OAM
"In-service OAM refers to OAM actions which are carried out while
the data traffic is not interrupted with an expectation that data traffic
remains transparent to OAM actions."

on-demand OAM
"On-demand OAM refers to OAM actions which are initiated via manual
intervention for a limited time to carry out diagnostics.
On-demand OAM can result in singular or periodic OAM actions during
 the diagnostics time interval."

out-of-service OAM
"Out-of-service OAM refers to OAM actions which are carried out while
the data traffic is interrupted."

proactive OAM
"Proactive OAM refers to OAM actions which are carried out continuously
 to permit proactive reporting of fault and/or performance results."

1DM One-way Delay Measurement
AIS Alarm Indication Signal
AP Access Point
APS Automatic Protection Switching
CCM Continuity Check Message
CE Customer Edge
CoS Class of Service
CP Connection Point
DA Destination MAC Address
DMM Delay Measurement Message
DMR Delay Measurement Reply
ETH Ethernet MAC layer network
ETH-AIS Ethernet Alarm Indication Signal function
ETH-APS Ethernet Automatic Protection Switching function
ETH-CC Ethernet Continuity Check function
ETH-DM Ethernet Delay Measurement function
ETH-EXP Ethernet Experimental OAM function
ETH_FP Ethernet Flow Point
ETH-LB Ethernet LoopBack function
ETH-LCK Ethernet Lock signal function
ETH-LM Ethernet Loss Measurement function
ETH-LT Ethernet Link Trace function
ETH-MCC Ethernet Maintenance Communication Channel function
ETH-RDI Ethernet Remote Defect Indication function
ETH-Test Ethernet Test function
ETH-TFP Ethernet Termination Flow Point
ETH-VSP Ethernet Vendor-Specific OAM function
ETY Ethernet PHY layer network
EXM Experimental operations, administration and management Message
EXR Experimental operations, administration and management Reply
FD Flow Domain
FP Flow Point
FPP Flow Point Pool
FT Flow Termination
ICC ITU Carrier Code
LBM LoopBack Message
LBR LoopBack Reply
LCK Locked
LMI Local Management Interface
LMM Loss Measurement Message
LMR Loss Measurement Reply
LOC Loss of Continuity
LTM Link Trace Message
LTR Link Trace Reply
MAC Media Access Control
MC Media Converter
MCC Maintenance Communication Channel
ME Maintenance Entity
MEG Maintenance Entity Group
MEL MEG Level
MEP MEG End Point
MIB Management Information Base
MIP MEG Intermediate Point
NMS Network Management System
NNI Network Node Interface
NT Network Termination
OAM Operations, Administration and Maintenance
OSS Operations Support System
OTN Optical Transport Network
OUI Organizationally Unique Identifier
PDU Protocol Data Unit
PE Provider Edge
PHY Ethernet PHYsical layer entity
PRBS Pseudo-Random Bit Sequence
RDI Remote Defect Indication
SA Source MAC Address
SES Severely Errored Seconds
SLA Service level Agreement
SRV Server
STP Spanning Tree Protocol
TC Traffic Conditioning
TCI Tag Control Information
TFP Termination Flow Point
TFPP Termination Flow Point Pool
TLV Type, Length, Value
TrCP Traffic Conditioning Point
TST Test PDU
TTL Time To Live
UMC Unique MEG ID Code
UNI User Network Interface
UNI-C Customer side of UNI
UNI-N Network side of UNI
VID VLAN Identifier
VLAN Virtual LAN
VSM Vendor-Specific OAM Message
VSR Vendor-Specific OAM Reply

2014년 6월 24일 화요일

C 언어 에러 삽질 방지

오늘부터 자주 보는 에러에 대한 나의 삽질내역을 기록하겠다.


warning: implicit declaration of function '함수'
1.발생 이유: 함수선언을 다른 곳, 현재 코드보다 아래에 해두고 가져다 쓸 때 
2.해결방법 : 사용하는 위치 보다 아래에 정의된 함수를 가져다 쓸 때는 해당 파일 또는 include 하는 헤더파일에다가 함수 원형을 선언해두자. 다른 파일에 있다면 extern 하여 사용 하자.
3.여담: 워닝인 이유는 컴파일러가 알아서 찾아주기때문. 컴파일러가 구리면 error로 띄워주는듯 하다.

warning: nested extern declaration of '함수명'
1.발생이유: 이제껏 상위 implicit declaration of function  의 여파로 생겨 났던 것 밖에 없다.
2.해결방법 : 위의 워닝을 해결하라
3.여담: 찾아도 잘안나오네 ㅠㅠ

warning: label 'defualt' defined but not used
1.발생 이유: 스위치 문에서 default를 defualt로 적어서 나는 워닝
2.해결방법 : 오타를 수정하자 무지막지하게 부끄러운 일이다..(*-_-*)
3.여담: 이걸 상사에게 물어봤다가 얼굴이 빨개졌다. 부끄러워서...

warning: return makes integer from pointer without a cast
1.발생 이유: 리턴 값이 int인 함수내에서 다른 자료형으로 리턴을 했을 때
2.해결방법 : 꼭 리턴해야 하는 의미있는 값일경우(unsigned 라던지) return (int)변수명;
return NULL; <- 이런걸 적어놨다면 그냥 -1로 리턴하고 해당 함수 콜 하는 부분 다음에 
if(ret < 0) 를 사용하여 예외처리를 하자(ret는 보통 return 의 줄임말. return 예약어니까 변수명으로 쓸수 없다)
3.여담: 막코딩하다보니 return NULL; 해놓고 바로아래 int형으로 리턴을 적어뒀더라....

warning: pointer targets in passing argument 2 of 'sprintf' differ in signedness
1.발생 이유: sprintf라는 함수를 사용하는 데 안에 들어가는 아규먼트(파라미터?)가 부호값을 상실했네
 sprintf(char * a, const char *b , ....) 뭐 이런식인데 sprintf(char * a,const u_int8_t *b , ....) 
이렇게 넣은거
2.해결방법 : 변수를 바로 쑤셔박지말고 sprintf(받는놈 , " % 자료형형형",  *b) 요런식으로 바끄야할듯

warning: type defaults to 'int' in declaration of '함수명'
1.발생 이유: 필자는 extern 함수 여기서 에러가 났엇다. 함수 원형은 int형인데 왜 int 안적냐는 워닝
2.해결방법: 컴파일러가 모르게 extern int 함수 이렇게 바꾸고 모르는척 컴파일다시하자

warning: case label value exceeds maximum value for type

1.발생 이유: switch 비교문에서 case 가 음수로 가는 경우
2.해결방법: 음수 비교를 하지 말거나, 나는 음수를 안쓴다 싶으면 unsigned를 넣든지


계속 추가할 계획이다. 시간남을때..





2014년 6월 20일 금요일

notepad++ MIB plugin 노트패드++ snmp 플러그인

심심해서 만들어 봤어요.

사용자 지정에서 입맛에 맞게 바꿔 쓰세요.

아래 내용을 복사한 뒤 mib.xml로 저장하여 사용.

파일 업로드가 안되네요.

<NotepadPlus>
   <UserLang name="MIB" ext="MIB" udlVersion="2.1">
       <Settings>
           <Global caseIgnored="yes" allowFoldOfComments="no" foldCompact="yes" forcePureLC="0" decimalSeparator="0" />
           <Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
       </Settings>
       <KeywordLists>
           <Keywords name="Comments"></Keywords>
           <Keywords name="Numbers, prefix1"></Keywords>
           <Keywords name="Numbers, prefix2"></Keywords>
           <Keywords name="Numbers, extras1"></Keywords>
           <Keywords name="Numbers, extras2"></Keywords>
           <Keywords name="Numbers, suffix1"></Keywords>
           <Keywords name="Numbers, suffix2"></Keywords>
           <Keywords name="Numbers, range"></Keywords>
           <Keywords name="Operators1"></Keywords>
           <Keywords name="Operators2"></Keywords>
           <Keywords name="Folders in code1, open"></Keywords>
           <Keywords name="Folders in code1, middle"></Keywords>
           <Keywords name="Folders in code1, close"></Keywords>
           <Keywords name="Folders in code2, open"></Keywords>
           <Keywords name="Folders in code2, middle"></Keywords>
           <Keywords name="Folders in code2, close"></Keywords>
           <Keywords name="Folders in comment, open"></Keywords>
           <Keywords name="Folders in comment, middle"></Keywords>
           <Keywords name="Folders in comment, close"></Keywords>
           <Keywords name="Keywords1">OBJECT-TYPE</Keywords>
           <Keywords name="Keywords2"></Keywords>
           <Keywords name="Keywords3"></Keywords>
           <Keywords name="Keywords4"></Keywords>
           <Keywords name="Keywords5"></Keywords>
           <Keywords name="Keywords6"></Keywords>
           <Keywords name="Keywords7"></Keywords>
           <Keywords name="Keywords8"></Keywords>
           <Keywords name="Delimiters"></Keywords>
       </KeywordLists>
       <Styles>
           <WordsStyle name="DEFAULT" fgColor="000000" bgColor="FFFFFF" fontName="@Bitstream Vera Sans Mono" fontStyle="0" fontSize="10" nesting="0" />
           <WordsStyle name="COMMENTS" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="LINE COMMENTS" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="NUMBERS" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="KEYWORDS1" fgColor="FF8080" bgColor="FFFFFF" fontName="@Bitstream Vera Sans Mono" fontStyle="1" fontSize="12" nesting="0" />
           <WordsStyle name="KEYWORDS2" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="KEYWORDS3" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="KEYWORDS4" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="KEYWORDS5" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="KEYWORDS6" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="KEYWORDS8" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="OPERATORS" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="FOLDER IN CODE1" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="FOLDER IN CODE2" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="DELIMITERS1" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="DELIMITERS2" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="DELIMITERS3" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="DELIMITERS4" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
           <WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
       </Styles>
   </UserLang>
</NotepadPlus>

2014년 3월 18일 화요일

quagga (zebra) 설치 사용법

사용OS: 리눅스


quagga를 받습니다.

어떻게든 받아봅니다. 여기선 설치와 사용법만 다루니까요. 


참고로 저는 quagga-0.99.20.tar.gz라는 파일을 받았네요.


사용자 디렉토리 안에다가 다운로드를 받고 폴더를 하나 만듭니다.

 경로상
 ~/만들폴더 
혹은
/home/사용자id/만들폴더 
가 되겠습니다.

폴더이름은 멋지게 quagga로 해두지요.
 $cd ~/ 
 $mkdir quagga 

이왕이면 압축파일을 quagga폴더 안에 복사를 한 뒤에 작업을 해보도록하죠

quagga 압축파일이 있는 곳에가서 복사를 시도해봅니다. 파일이름을 quagga-0.99.20.tar.gz이라고 해두죠.

$cp quagga-0.99.20.tar.gz ~/quagga

순식간에 복사가 될겁니다.

이제 압축을 풉니다.

$cd ~/quagga
$tar zxvf quagga-0.99.20.tar.gz

쭈룩쭈룩 글이 올라옵니다.

기다려보죠

음~~

다됐나보네요.

어떻게 됬는지 확인을 해봅니다.

$ls

.....
quagga-0.99.20.tar.gz /quagga-0.99.20
폴더가 하나 더생겼네요

quagga-0.99.20 라는 폴더에 있는 내용물을 꺼내도록 하죠.. 폴더안에 폴더가 있으면 귀찮으니까요..

$cd quagga-0.99.20

$mv * ../

됐습니다.

내용을 꺼냈으니 압축폴더와 quagga-0.99.20 폴더를 지우도록 하죠.

$cd ..
$rm -rf quagga-0.99.20.tar.gz quagga-0.99.20

이제좀 낫군요..

이제 쉘스크립트 파일을 만들어서 설치를 쉽게 하도록 하죠.(~/quagga 안에 쉘파일 생성하세요)

$vim config.sh

-----내용입니다----

#!/bin/bash

 ./configure --enable-user=사용자이름을적으세요 --enable-group=사용자이름을적으세요 --prefix=/home/사용자이름을적으세요/quagga --enable-vtysh --disable-ipv6 --disable-capabilities


-----내용 끝---
사용자이름을적으세요 라고 적힌곳에는 user id를 적도록 하세요
모르겠다면 일단 vim 을 종료 후에
$id
라고적으면 유저 이름을 확인할수 있씀당

암튼 여차저차 쉘스크립트 파일생성까지 다되었다면

$chmod 775 config.sh

로 권한 바꿔 두세요..

자..

한가지 더 해야하는 작업이 있네요.
$mkdir etc
etc 폴더를 만들어야하는데 이미 만들어져있다면 패스

이제 쉘스크립트를 실행해봅니다.

$./config.sh

쭈룩쭈룩 뭔가 올라옵니다.


끝났네요.

zebra폴더와 vtysh폴더가 생성되었습니다(원래 있는건지 이때 생성되는지는 기억이 안나네요)

일단 zebra 폴더로 들어갑니다.

$cd zebra

그런다음에 zebra.conf.example 파일을 etc에 복사를 해둡시다.

$cp zebra.conf.example ../etc/zebra.conf

.example은 일부러 뺀거니 신경쓰지마세용.

그런다음

zebra를 실행시킵니다.

$./zebra&

엔터한번 쳐주고요

$cd ..
$cd vtysh

vtysh폴더로 이동 후 vtysh파일을 실행

$./vtysh

하면!!!

실행이 잘됩니다.

그럼 안뇽









2014년 1월 23일 목요일

LINUX 에코 서버 & 파일 전송 c소스

먼저 클라이언트부분
  
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
int main(){
 int file;
 int sockfd;
 int len;
 int buf;
 struct sockaddr_in address;
 int result;
 char put_string[255]={0};
 sockfd = socket(AF_INET, SOCK_STREAM, 0);
 address.sin_family = AF_INET;
 address.sin_addr.s_addr = inet_addr("192.168.123.99"); 
 address.sin_port = htons(9734);
 len = sizeof(address);
 result = connect(sockfd, (struct sockaddr *)&address, len);

 if(result == -1) {
  perror("oops: client1");
  exit(1);
 }
 while(strcmp(put_string,"end")){
  char get_string[255];
  scanf(" %s",put_string); 
  write(sockfd, put_string, sizeof(put_string));

  if(!strcmp("put",put_string)){
   printf("file name?\n");
   scanf(" %s",put_string);
   write(sockfd, put_string, sizeof(put_string));
   file=open(put_string,O_RDONLY);
   if(file<1 data-blogger-escaped-buf="" data-blogger-escaped-close="" data-blogger-escaped-continue="" data-blogger-escaped-done="" data-blogger-escaped-error="" data-blogger-escaped-exit="" data-blogger-escaped-file="" data-blogger-escaped-get_string="" data-blogger-escaped-memset="" data-blogger-escaped-pre="" data-blogger-escaped-put_string="" data-blogger-escaped-read="" data-blogger-escaped-sizeof="" data-blogger-escaped-sockfd="" data-blogger-escaped-while="" data-blogger-escaped-write=""> 
서버 부분
  
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define FLAG_NORMAL 0
#define FLAG_IS_FLIE_EXIST 1
#define FLAG_TRANSFER 2
int main()
{
 int server_sockfd, client_sockfd;
 int flag=FLAG_NORMAL;
 int file;
 int buf;
 int server_len, client_len;
 char file_name[100],remove[103];
 struct sockaddr_in server_address;
 struct sockaddr_in client_address;
 int result;
 fd_set readfds, testfds;

  char message[255]={0};
 /*socket creat & naming*/
 server_sockfd= socket(AF_INET, SOCK_STREAM,0);
 server_address.sin_family = AF_INET;
 server_address.sin_addr.s_addr = htonl(INADDR_ANY);
 server_address.sin_port = htons(9734);
 server_len = sizeof(server_address);

 /*bind*/
 bind(server_sockfd, (struct sockaddr *)&server_address, server_len);

 /*listen*/
 listen(server_sockfd, 5);

 FD_ZERO(&readfds);
 FD_SET(server_sockfd, &readfds);

 while(1){
  int fd;
  int nread;
  testfds=readfds;

  result=select(FD_SETSIZE, &testfds, (fd_set *)0 ,(fd_set *)0, (struct timeval *)0);

  if(result < 1)
  {
   perror("server error:");
   exit(1);
  }
  for(fd =0; fd < FD_SETSIZE; fd++)
  {
   if(FD_ISSET(fd,&testfds)){
    if(fd == server_sockfd){
     client_len = sizeof(client_address);
     client_sockfd = accept(server_sockfd,(struct sockaddr *)&client_address, &client_len);
     FD_SET(client_sockfd, &readfds);
     printf("adding client on fd %d\n", client_sockfd);
    }
    else
    {
     ioctl(fd, FIONREAD, &nread);

     if(nread ==0)
     {
      close(fd);
      FD_CLR(fd, &readfds);
      printf("removing client on fd %d\n",fd);
     }
     else
     {
      memset(message,0,sizeof(message));
      read(fd, message, sizeof(message));
      printf("%s\n",message);
      if(strncmp("put",message,strlen(message))==0){
        read(fd, message, sizeof(message));
        file=open(message,O_WRONLY|O_CREAT|O_TRUNC,S_IRWXU);
        strcpy(file_name,message);
        if(file<1 data-blogger-escaped-6="" data-blogger-escaped-break="" data-blogger-escaped-buf="" data-blogger-escaped-close="" data-blogger-escaped-done="" data-blogger-escaped-else="" data-blogger-escaped-error="" data-blogger-escaped-fd="" data-blogger-escaped-file="" data-blogger-escaped-file_name="" data-blogger-escaped-if="" data-blogger-escaped-isolation="" data-blogger-escaped-memset="" data-blogger-escaped-message="" data-blogger-escaped-n="" data-blogger-escaped-pre="" data-blogger-escaped-printf="" data-blogger-escaped-remove="" data-blogger-escaped-rm="" data-blogger-escaped-s="" data-blogger-escaped-sizeof="" data-blogger-escaped-sprintf="" data-blogger-escaped-strcmp="" data-blogger-escaped-strlen="" data-blogger-escaped-system="" data-blogger-escaped-while="" data-blogger-escaped-write="">  
많은 예외처리를 무시했지만 동작은 되니까 ..ㅎㅎ

2014년 1월 2일 목요일

c++를 이용한 beep음 내기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    //ascending pitch beep
    for (int i=0; i<3000; i+=10){
    Beep (i,100);
    }
    //descending pitch beep
    for (int i=3000; i>0; i-=10){
    Beep (i,100);
    }
 
}

c++을 이용하여 비프음으로 연주하기 (소리를 낮추세용)

#include <iostream>
#include <windows.h>
using namespace std;
//twinkle twinkle
//CC GG AA G
//FF EE DD C
//GG FF EE D
//GG FF EE D
//CC GG AA G
//FF EE DD C
void playnote (char g, float l)
{

char n = g;

if (n == 'A'||'a'){
Beep(2750,l*1000);
cout <<n;
}
else if(n == 'B'||'b'){
Beep(3087,l*1000);
cout << n;
}
else if(n == 'C'||'c'){
Beep(1637,l*1000);
cout << n;
}
else if(n == 'D'||'d'){
Beep(1835,l*1000);
cout << n;
}
else if(n == 'E'||'e'){
Beep(2060,l*1000);
cout << n;
}
else if(n == 'F'||'f'){
Beep(2183,l*1000);
cout << n;
}
else if(n == 'G'||'g'){
Beep(2450,l*1000);
cout << n;
}
}
 
int main() {

playnote('C', 0.4);
playnote('C', 0.4);
playnote('G', 0.4);
playnote('G', 0.4);
playnote('A', 0.4);
playnote('A', 0.4);
playnote('G', 0.4);
Sleep(400);
cout<<endl;
playnote('F', 0.4);
playnote('F', 0.4);
playnote('E', 0.4);
playnote('E', 0.4);
playnote('D', 0.4);
playnote('D', 0.4);
playnote('C', 0.4);
Sleep(400);
cout<<endl;
playnote('G', 0.4);
playnote('G', 0.4);
playnote('F', 0.4);
playnote('F', 0.4);
playnote('E', 0.4);
playnote('D', 0.4);
playnote('G', 0.4);
Sleep(400);
cout<<endl;
playnote('G', 0.4);
playnote('F', 0.4);
playnote('F', 0.4);
playnote('E', 0.4);
playnote('D', 0.4);
playnote('C', 0.4);
playnote('C', 0.4);
Sleep(400);
cout<<endl;
playnote('G', 0.4);
playnote('G', 0.4);
playnote('A', 0.4);
playnote('A', 0.4);
playnote('G', 0.4);
playnote('F', 0.4);
playnote('F', 0.4);
Sleep(400);
cout<<endl;
playnote('E', 0.4);
playnote('E', 0.4);
playnote('D', 0.4);
playnote('D', 0.4);
playnote('C', 0.4);
cout<<endl;
cout << "thanks for listening <3";

return 0;
 
}

2013년 12월 27일 금요일

pintf() 문이 한번에 나온다!!

그럴땐 printf() 밑에 fflush(stdout);을 붙여보아요..
printf 문이 버퍼링을 하고 있기 때문이래요.

http://kldp.org/node/141240

윈도우 7 설치시 ACPI 에러

살다가 처음 겪는 경우였습니다.
배정받은 회사 pc의 os가 윈도우xp 라 윈도우 7으로 올리려고 했습니다(업데이트든, 포멧하고 다시 깔든)

저같은 경우는 palconn p31a 보드였네요. 애초에 win7을 지원하는 보드였습니다.

부팅화면에서 cd, ubs외장하드로 7설치를 시도해 봤는데 설치 화면 가기전에 검은화면에서 윈도우7 로고애니메이션이 나오려다가 블루스크린이 떴었습니다. acpi 어쩌고 저쩌구 bios update를 어쩌구 저쩌구....

하.. 신입이 이거 잡고 3일동안 삽질 하는건 경우가 아닌데...
미춰버리는줄 알았습니다.;;

인터넷에 찾아보니 바이오스를 업데이트 하라 마라 등 말이 많았는데 이것 저것 다 따라하다보니 부트 메뉴도 더렵혀저서 엉망이였죠.

안되겠다 싶어 win xp를 구해서 하드 포멧하고 설치 후에 다시 하려고 했더니 왠걸
xp 서비스팩 업데이트를 안하면 3dp net 이나 usb PnP등이 지원을 안하는겁니다.(네트워크 연결을 해서 어찌해보려고했는데 네트워크 드라이브도 안잡혔었죠)

부랴부랴 cd에 sp1(인지 sp3인지 기억이잘안나네요)를 구워서 업데이트 하고선 일사천리로 정상화 되었습니다(드라이버 다 잡고, 백신, 필수 유틸리티등 설치완료했었죠)


이대로 포기하나 했었는데 경영지원팀에 대리님(정말 감사했어요)께서 친히 pc수리기사님을 저에게 보내 주시어 7깔기에 다시 돌입했습니다.

APCI 에러 (블루스크린)을 보시더니 여기저기 전화 해보곤 본체를 냅다 들고 가시는겁니다.
(아.. 수리할때 까지 사무실에 앉아서 난 뭐하란 말입니까 )
점심부터 a4용지 한장짜리 프린터물 하나 잡고 6시까지 버텨냈습니다.

그리곤 퇴근+클스마스-> 다음날..

노트북을 들고왔습니다=_=;;

win7를 깐 노트북이라 으싸으싸 해서 (노트북도 하드디스크 문제가 있어서 하드교체후 윈도우만 깔아 놨더랬죠)

다시 이것저것 회사 일에 필요한 전문지식 찾아 다니고 있었는데 화장실갔다오니 pc수리기사님이 번개같이 pc를 수리하셔서 설치까지 완료 해주셨습니다. (사실 화장실 갔다오고 노트북으로 공부하다가 문득 고개를 돌려보니 본체가 와있어서 깜짝놀라 고함을 질렀습니다)

수리된것도 기뻤지만 젤궁금한건 원인이라 전화를 했더니.
램 슬롯과 2번째 램 이 문제 였답니다.(사실 모르겠습니다. 총 슬롯 2개 중에 슬롯 2번이 고장났고 기사님은 2기가 램이 가지고 싶어서 렘까지 고장났다고 한건지..)

(고장난 램 1개 포함한)램이 듀얼로 꽂혀있는 상태에서 (xp에는 없는기능인거같은데)


네 결론은 파워를 교체해보고 설치 하시던지, 하드|| 렘 || 그래픽카드 || 마지막 메인보드  순으로 교체후에 설치 시도해보면 되겟습니당