객체지향 원칙
 - 바뀌는 부분은 캡슐화 한다.
 - 상속보다는 구성을 활용한다.
 - 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다.
 - 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는
   디자인을 사용한다.
 - 클래스 확장에 대새서는 열려 있지만 변경에 대해서는 닫혀 있어야 한다.
 - 추상화된 클래스에 의존 하고 구현 클래스에 의존 하지 말라


1. Iterator 패턴

정의 1 : 무엇인가가 많이 모여 있는 것 중에서 하나씩 끄집어내어
      열거하면서 전체를 검새하면서 처리하는 패턴
정의 2:  컬렉션이 어떤 식으로 구현되었는지 드러내진 않으면서도
         컬렉션 내에 있는 모든 객체에 대해 반복 작업을 처리 할 수
   있도록 한다.

Itarator Pattern

사용자 삽입 이미지

2. Apapter 패턴

정의1 : 이미 제공하는것과 필요한것 과의 사이의 간격을 메우는 패턴
         Wrapper 패턴이라고도 함.
 ※ 클래스에 의한 Adapter패턴(상속을 이용한 것)
 ※ 인스턴스에 의한 Adapter패턴 (위임을 이용한것)
정의2 : 객체를 감싸서 다른 인터페이스를 제공 한다.

 ※Apapter는 Target 인터페이스를 구현하고 Adaptee클래스를 상속받는다

   Apater메서드는 상속받은 Apaptee의 메서드로 위임 시킨다.

Adapter Pattern

사용자 삽입 이미지

3. Template Method 패턴

정의1 : 상위 클래스에서 처리의 흐름을 정하고 하위 클래스에서 구체적인 내용을 결정하는
        디자인 패턴
정의2 : 알고리즘의 개별 단계를 구현하는 방법을 서브 클래스에서 결정 한다.

Template Method Pattern

사용자 삽입 이미지

4. Factory Method 패턴

정의1 : 인스턴스를 생성하는 공장을 Template Method패턴으로 구성한 것이 Factory Method 패턴이다.
정의2 : 생성할 구상 클래스를 서브 클래스에서 결정

Factory Method Pattern

사용자 삽입 이미지

5. Singleton 패턴

정의1 : 지정한 클래스의 인스턴스가 반드시 1개만 존재하도록 하는 패턴
정의2 : 딱 한 객체만 생성되도록 한다.

Singleton Pattern

사용자 삽입 이미지

6. Prototype 패턴

정의1 : 클래스로부터 인스턴스를 만드는것이 아니라 인스턴스를 복사해서 새로운 인스턴스를 만듭니다.
정의2 : 어떤 클래스의 인스턴스를 만드는것이 자원/시간을 많이 잡아 먹거나
  복잡한 경우에는 프로토타입 패턴을 쓴다.

 ※ 종류가 너무 많아 한개의 클래스로  할 수 없는 경우
 ※ 클래스로부터 인스턴스를 생성하기 어려운 경우
 ※ 프레임웍크와 생성할 인스턴스를 분리하고 싶은 경우
 ※ 클라이언트에서는 새로운 인스턴스를 만드는 복잡한 과정을 몰라도 된다.
 ※ 클라이언트에서는 구체적인 형식을 모르더라도 객체를 생성할수 있다.
 ※ 상황에 따라서 객체를 새로 생성하는 것보다 객체를 복사하는것이 더 효
 율적이다.

Prototype Pattern

사용자 삽입 이미지

 7. builder 패턴

 정의1 : 구조를 가진 인스턴스를 쌓아 올리는 패턴
 정의2 : 제품을 여러 단계로 나눠서 만들 수 있도록 제품 생산 단계를 캡슐화하고 싶을때
         사용

Builder Pattern

사용자 삽입 이미지

 8. Abstract Factory 패턴

 정의1 : 추상적인 부품을 조립해서 추상적인 제품을 만드는 추상적인 공장 같은 패턴
 정의2 : 클라이언트에서 구상 클래스를 지정하지 않으면서도 일군의 객체를
         생성할 수 있도록 하는 패턴

Abstract Factory Pattern

사용자 삽입 이미지

 9. Bridge 패턴

 정의 1: 기능의 클래스 계층과 구현의 클래스 계층을 분리하는 패턴
 정의 2: 구현 뿐만 아니라 추상화된 부분가지 변경시켜야 하는 경우 사용

Bridge Pattern

사용자 삽입 이미지

 10. strategy 패턴

정의1 : 알고리즘을 교체해서 동일한 문제를 다른 방법으로 해결 하는 패턴
정의2 : 알고리즘군을 정의하고 각각을 캡슐화하여 바꿔 쓸 수 있게 만듦
        스트래티지 패턴을 이용하면 알고리즘을 활용하는 클라이언트와 독립적으로 알고리즘을
        변경할 수 있다.

Strategy Pattern

사용자 삽입 이미지

11. Composite 패턴

정의1 : 그룻과 내용물을 동일시해서 재귀적인 구조를 만드는 패턴
정의2 : 클라언트에서 객체 컬렉션과 개별 객체를 똑같이 다룰수 있도록
    함

Composite Pattern

사용자 삽입 이미지

12. Decorator 패턴

정의1 : 객체에 장식을 해가는 패턴
정의2 : 객체에 추가 요소를 동적으로 더할 수 있습니다.
         데코레이터를 사용하면 서브 클래스를 만드는 경우에
   비해 훨씬 유연하게 기능을 확장할 수 있다.

Decorator Pattern

사용자 삽입 이미지

13. Visitor 패턴

정의1 : 데이터 구조와 처리를 분리 한다. 데이터 구조 안을 돌아다니는 주체인
 '방문자'를 나타내는 클래스를 준비해서 그 클래스에게 처리를 맡긴다.
정의2 : 다양한 객체에 새로운 기능을 추가해야 하는데 캡슐화가 별로
        중요하지 않은 경우에는 비지터 패턴을 사용한다.

Visitor Pattern

사용자 삽입 이미지

14. Chain of Responsibility
정의1 : 어떠한 요구가 발생 했을때  그 요구를 처리할 객체를 바로 결정 할 수 없는
 경우에는 다수의 객체를 사슬처럼 연결해 두고 객체의 사슬을 차례로 돌아다니면서
 목적에 맞는 객체를 결정하는 패턴
정의2: 한 요청을 두 개 이상의 객체에서 처리하고 싶다면 역할 사슬 패턴을 사용한다.

Chain of Responsibility Pattern

사용자 삽입 이미지

15. Facade 패턴
정의1 : 대규모 프로그램을 사용해서 처리를 하려면 서로 관련 있는 많은 클래스들을
 적절히 제어 해야 한다. 많은 클래스들을 제어하기 위해서는 '창구'를 준비해야 한다.
 그렇게 하면 많은 클래스들을 개별적으로 제어하지 않아도 '창구'에게 요구만 하면
 일이 끝나기 때문이다.
정의2 : 일련의 클래스에 대해서 간단한 인터페이스를 제공하는 패턴

Facade Pattern

사용자 삽입 이미지

 

Factory Method Pattern

사용자 삽입 이미지

16. Mediator 패턴

정의1 : 마치 카운셀러 처럼 각 멤버로 부터 올라온 보고를 토대로 대국적인 팥단을 해서
 각 멤버에게 지시를 내리는 패턴
정의2 : 서로 관련된 객체 사이의 복잡한 통신과 제어를 한 곳으로 집중시키고자 하는 경우에
        는 미디에이터 패턴을 사용한다.

Mediator Pattern

사용자 삽입 이미지

17. Observer 패턴
정의1 : 관찰대상의 상태가 변하면 관찰자에게 통지되는 패턴
        상태 변화에 따른 처리를 가술할때 유효함
정의2 : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이
        가고 자동으로 내용이 갱신되는 방식으로 (one-to-many)의존성을 정의 한다.
정의3 : 자바에서 지원하는 java.util.Observer가 있으며 푸시(subject가 보내는),풀 방식
        (옵저버에서 Observale객체로부터 원하는 데이터를 가져 오는 방식)이 있다

Observer Pattern

사용자 삽입 이미지

18. Memento 패턴

정의1 : 상태를 보존한다. 어떤 시점에서의 인스턴스의 상태를 기록해서 저장
 해두었다가 나중에 인스턴스를 그 시점의 상태로 되돌리는 패턴
정의2 : 객체를 이전의 상태로 복구시켜야 하는 경우에는 메멘토 패턴을 쓰
  면 된다.

Memento Pattern

사용자 삽입 이미지

19. State 패턴

정의1 :상태를 클래스로 표현하는 패턴
정의2 : 상태를 기반으로 한 행동을 캡슐화한 다음 위임을 통해서 필요한 행동을
        선택 한다.

State Pattern

사용자 삽입 이미지

20. Flyweight 패턴

정의1 : 인스턴스를 가능한 한 공유시켜 쓸데없이 new를 하지 않도록 하는 패턴
정의2 : 어떤 클래스의 인스턴스 한개만 가지고 여러 개의 "가상 인스턴스"를 제공하
  고 싶다면 사용한다.

Fly Weight Pattern

사용자 삽입 이미지

21. Proxy 패턴

정의1 : 바빠서 그 일을 할 수 없는 본인 객체 대신에 대리인 객체가 어느 정도 일을 처리
 해주는 패턴
정의2 : 객체를 감싸서 그 객체에 대한 접근을 제어 한다.

Proxy Pattern

사용자 삽입 이미지

22. Command 패턴

정의1 : 명령을 클래스로 만든다.
정의2 : 요청을 객체로 감싼다.


Command Pattern

사용자 삽입 이미지






오랫만에 발견해서 너무 재미있던 게임
처음할 땐 너무 어려웠는데 지금은 쉽게 깰 수 있다는... ㅋㅋ

총 39 level이 있다.
스타크래프트의 "매트릭스"라는 use map을 해본 사람은 잘 이해할듯하다.
아래는 원래 site에서의 설명이다.

The aim of the game is to kill the creeps before they reach the end of the maze, do this by building attacking towers on the grass around the maze. To build click on the one you want to build on the right, then click on the map where you want it to be built. Once built you can click on them to upgrade or sell. To get a high score keep as much of your gold in the bank as possible, at the end of each round you earn interest on the gold in the bank. Special levels are where the creeps are none-normal, they include FAST [6, 13, 19, 26, 32] AIR [8, 17, 27] IMMUNE [10, 21, 32] BOSS [11, 22, 33] You get wood every 7 levels use wood to research upgrades. For more game info & tips visit the Instructons & Tips section


잘 읽어보고 게임에 임하시길...

그리고, 다음은 본 게임의 site이다. 끝나면 점수도 꼭 기록하자.

http://novelconcepts.co.uk/FlashElementTD/
DAMAGE: after Normal block (#XXX) at 0xXXXXXXXX

위와 같은 "Microsoft Visual C++ Debug Library" Error가 발생할 때가 있다.
이때 XXX 부분들(파랑)은 각기 다르게 나타날수가 있다.
이는 대부분이 잘못된 메모리 영역의 참조에 의해 발생한다.
아래의 예를 보자.


영역 참조의 잘못된 예 (Language : c)
  1. int *a;
  2. int b=20 , i;
  3. a = new int[b];
  4. for(i=0;i<b+1;i++) // 사실 이부분이 잘못 됬는데
  5. {
  6.     a[i] = i;
  7. }
  8. delete [] a; // 엉뚱한 이곳에서 오류가 나타남 이걸 지우면 오류 안뜸


b+1이부분은 고의적으로 만들었지만 실수로 이럴수 있기 때문에..
원인은 할당 영역을 벗어난 곳에 손을 대면 이런거라는걸 알 수 있다.

즉 a배열은 20까지밖에 없는데 21번 index까지 작업하기 때문에 오류가 있다.
이때 delete를 하게 되면 위와 같은 오류가 발생이 가능하다.

해제하려는 메모리가 정확하게 잘 참조하였는지 확인하자.

본 자료는 다음을 참고하였다.

참고 : http://blog.naver.com/yjh1990/130000599620

정말 설정하는데 어려움이 많아서 host와 board를 연결하는 메뉴얼을 만들어봅니다.
이래두 안되면... 저두 잘 모르니... @^-^@



1. Board와 OpenICE A900연결 모습

사용자 삽입 이미지
사진의 왼쪽이 OpenICE A900의 모습입니다.
뒤로 나가는 회색선이 USB선입니다. 이선의 다른 끝은 host(노트북이나 데스크탑 컴)의 USB로 연결합니다.
뒤로 나가는 검은선은 전원입니다. 전원에 팍! 꼽아주시길...
사진의 오른쪽이 MBA2440 board입니다.
뒤로 나가는 회색선이 serial line입니다. host의 serial port(COM1~4)에 꼽아주시길...
그리고 역시 뒤로 나가는 검정선은 전원입니다. 전원에 역시 팍!!!
그리고 IDE cable처럼 생긴 선을 OpenICE A900의 앞과 MBA2440 board의 뒤에 연결하여 꼽아주세요.



2. 이제 board와 host의 연결은 끝났습니다. 이제 host에서 사용할 프로그램들을 install입니다.
Board를 사면 같이 제공받는(아님, P2P에서 받으시거나) ARM Developer Suite을 받아서 인스톨 합니다. (현재 저는 v1.2를 사용)
사용자 삽입 이미지

사진에서 install을 눌러 살포시 install합니다. 자세한 화면은 생략~



3. 다음은 spider를 인스톨합니다. ADS에 이미 debugger가 있지만, 저는 spider를 사용하기 위해서 인스톨합니다. 혹, 사용하지 않고 따로 하실분은 알아서 하시길~(@^-^@;;; 저두 잘 몰라요~)
단, spider는 v1.90 patch를 사용합니다. 다른 버전을 사용하면, OpenICE A900과 안맞는다고 하네요. 저두 들은 이야기라 아무튼, 다른 것으로 하면 안될 수도 있으니 v1.90으로 인스톨하시길.


spider1_90patch 20060223

4. 아마도 지금까지 하시게 되면, board의 전원을 켰을 경우에 host 윈도우에서 "새 하드웨어 검색"이 뜰것입니다. 만약 뜨지 않는다면, 살포시 재부팅을 해보시길...(그래두 안되면, 아시죠? 저두 모르는거~ @^0^@)
이때, "새 하드웨어 검색"이 뜬다면, 드라이버를 요청할 것입니다. "USB driver"를 요구할텐데, 이때 spider를 인스톨할 폴더 중에 "C:\Program Files\Spider\Drv\A900\"에서 탐색하시면, 정상적으로 드라이버가 깔립니다. (화면 생략)



5. 이제 제일 어려운 설정들만이 남았네요. 지금부터가 정말 어렵습니다. 왜냐구요? 그때그때 달라요~~~ 거든요... 잘 해쳐나가시길~~~
먼저 spider가 MBA2440의 각종 설정들을 인식할 수 있게 MBA2440.dev 파일을 복사해줍니다.
이 파일은 board를 산 곳이나, 다른 P2P, 혹은 아래 링크에서도 찾을수 있습니다.

MBA2440.dev

위 파일을 "C:\Program Files\Spider\Device\"에 복사해줍니다. 이로서 spider는 MBA2440이라는 board를 인식할 수 있습니다.



6. 이제 host에 깔린 spider를 실행시켜봅시다.

사용자 삽입 이미지

사진과 같은 화면이 뜬다면 지금까지는 성공이네요.



7. 이제 Ctrl+E나 Option->Configure Interface를 클릭합니다.
그럼 아래와 같은 Option 화면이 뜨게 됩니다.
사용자 삽입 이미지
이제 정말 중요한 board와 host를 서로가 서로를 인식하게 만드는 설정입니다.
우리는 첫그림에서 보았듯이 USB를 통해 board와 host가 통신을 할 것입니다.(serial은 나중에 화면으로 보기위해 통신할 것이구요.)
때문에 USB를 선택하시면 됩니다. 옆에 Baud Rate는 지금은 안보이실 수도 있습니다. 설정이 되면 값이 보일테니 걱정하지 마세요.



8. 이젠 SMU tab을 클릭합니다.
사용자 삽입 이미지

위와 같은 그림에서 Device name은 다른 이름으로 되어있을겁니다. 이 콤보 박스를 내려보면 "MBA2440"이 보일 겁니다. 이를 선택~!!! (아까 우리가 복사한 MBA2440.dev 기억나시죠? 그 파일 덕분에 지금 화면에 보이는 겁니다. 참고!)



9. 다음은 Debugger tab을 클릭합니다.
사용자 삽입 이미지
여기 부분은 저두 정말 잘 모릅니다.
우선 저희는 LittleEndian을 사용합니다. (저는 그래요.)
그리고 그림에서 보듯이 "SysReset Enable" , "TRST Enable" , "SMU Always Init"를 체크합니다. 의미요? 저두 몰라요. 우선 이리 하니 연결되네요.



10. 다음은 Flash config tab은 넘어갑니다. 왜요? 설정 변경할것이 없어서... (잘 몰라요. ㅋㅋ)
그래서, 다음은 Processor tab을 클릭!!!
사용자 삽입 이미지
자... 이제 마음의 준비를 단단히 하시기 바랍니다. Detect를 살포시 눌러주시기 바랍니다.
바로 그림처럼 ARM920T 가 인식이 된다면 성공!!! 축하합니다. 정말로!

하지만, 대부분의 분들이 안되실 겁니다.  대략 안습...
(Error:844 ) : 아마도 Board와의 연결상태를 다시 함 살펴보심이... 경험상 board와 연결이 잘 안되서 그런 것 같습니다. AIJI에서는 정말 무책임한 Error code만 반환한다는...
MBA2440과 OpenICE A900의 전원을 껐다가 켜보시길...
(Error:506 ) : 아마 위의 Option들 중에 잘 안맞는 경우가 있을 수도 있습니다. (확신을 저두 못하는 거죠~~~ @^-^@;;; ) 특히 3번째인 Debugger tab에서 채크하는 것들을 여러개 해보시거나, AIJI에 문의하시기 바랍니다.
저 같은 경우에는 OpenICE A900에 있는 USB 를 몇번 뺐다 꼽았다 하니 인식되더군요.
세상이 다 그런거 아니겠어요? ㅋㅋ


11. 지금까지 모든 것이 잘 되었다면, 다음으로 넘어가셔도 됩니다. 아니라면, 밑에 부분은 실행이 안될테니까요. 아무튼, 행운을 빕니다.


MBA2440test V2.0.zip

다음 파일을 받아서 압축을 풀어보면 MBA2440_test_v2.0이라는 폴더가 생깁니다.
즉, test하는 프로그램이죠. 근데 안에를 보면 UART부터 LCD, flash memory까지 접근하는 interface code들이 들어있습니다. 이를 잘 수정하여 재 사용하면, 원하는 작업을 할 수 있겠죠?



12. 자 이제 dnw 프로그램을 수행시킵니다. 이는 Hyper Terminal로서 위에서 이야기 했던 화면에 UART로 출력되는 것을 host에서 serial port를 통해 볼수 있는 프로그램입니다.(저두 잘 모름) 아무튼, 이를 수행합니다. 그리고 DNW 프로그램에서 "Serial Port -> Connect"를 클릭하시면 dnw 프로그램 위에 "[COM1,115200bps][USB:x]" 라고 뜹니다. (전 COM1에 연결했기때문에) 만약 이게 안뜬다면, board연결이 안된것이겠죠? 행운을 빌어요.
사진은 생략합니다.
spider프로그램을 실행하고, Ctrl+J나 File->Load Image를 클릭하시고, 위에 11번에서 다운받은 test 프로그램의 폴더에 "위에 푼 폴더명\MBA2440_test\MBA2440_test_Data\DebugRel"에 MBA2440_test.axf 파일을 load합니다.
그럼 2440init.s 라는 소스가 보이면서 debugging이 시작됩니다. F8을 눌러 go!합니다.

이제 spider 프로그램 밑에는 프로그래스 바가 왔다리갔다리하게되구요.
이때 DNW프로그램을 보면 먼가 쫙 나와있는 모습이 보입니다.
사용자 삽입 이미지

자~~~ 축하합니다. 이제 test program까지 실행했네요.

부족했지만, 많은 도움이 되었으면 하네요. 누구하나 잘 정리해주신 분이 안계셔서,
허접한 제가 간략하게 정리했습니다. board에 잘 아시는 분들이 잘 정리해주시면, 저같은 사용자는 많은 도움이 될텐데요. 아무튼, 행운을 빕니다. 꾸벅~


07.02.13 contents by hackereyes.
Special Thanks to icebase.

NateOn이 어느날인가부터 실행이 되지 않습니다.
최근 Vista를 사용해보기 위해 시도중이여서 그 부분만을 계속 보고 있었는데,
원인은 따로 있었습니다.

프로세서 중 Active Sync에 관련된 프로세스가 있는데요. 이 중 하나가 문제입니다.
정확하게는 어떤 원인인지는 알수 없습니다.
하지만, 다른 컴퓨터의 프로세서와 비교하여, 의심가는 프로세스를 하나씩 죽여보면
어느 순간 NateOn이 실행되는 것을 볼 수 있습니다. (제가 어떤것이였는지 기억이 나질 않네요.)

이를 죽이고, msconfig를 통해 필요없다면 수행되지 않게 합니다.
그리고 나서, 재부팅하면, 정상적으로 NateOn이 실행되는 것을 볼 수 있을 겁니다.
꾸벅~.

P.S : 다시 말씀드리지만, 정확한 원인은 아직 저도 잘 모릅니다. 아마 NateOn 측에서도 모르는 것 같더라구요... 아무리 물어봐두 다시 깔라는 대답밖에는... 쩌비...
최근에 HyperSnap 이라는 Capturing Program을 사용하게 되었습니다.
간단한 방법으로 화면을 Capture할수 있어서 매우 좋은데요.
이 프로그램 때문에 Visual Studio 에서 Debugging 시에 F11키가 먹통이 되는 경우가 있습니다.
이 때문에 컴터를 한 5번 포멧했는데요. 원인을 찾았습니다.



원인은 HyperSnap Program이 HotKey를 사용하는 것에 문제가 있었습니다.
즉, HyperSnap Program이 상시 실행되고 있는 상태이기 때문에 HotKey로 등록된 F11키의 입력을 Hooking하여 모두 가져가 버리는 것입니다.
때문에, Visual Studio에서 아무리 F11키를 눌러도 모두 키입력은 Visual Studio로 가지 않고 HyperSnap Program으로 전송되어 집니다. (엄밀히 말하면, 선처리하여 Key입력이 VS까지 가지 않는거죠)


해결방법은 HyperSnap Program에서 HotKey의 사용을 해제하거나, F11로 되어있는 HotKey를 다른 키로 바꾸는 것입니다.
혹은, 아예 HyperSnap Program을 상시 수행하지 않게 하여, 필요할 때 실행시키는 것도 하나의 방법이 될 수 있습니다.



저와 같은 문제로 고생하시지 말기 바라며 @^-^@ 꾸벅~
서버 관리를 위한 ssh 서버 보안세팅

/etc/ssh/sshd_config 파일


# $OpenBSD: sshd_config,v 1.48 2002/02/19 02:50:59 deraadt Exp $
# This is the sshd server system-wide configuration file. See sshd(8)
# for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.

Port 22
- ssh가 사용할 기본 포트 지정
Allowusers kkamji2411 root (로그인 허락할 계정 써준다.)

Protocol 2
- openssh는 프로토콜 버전을 원하는 대로 선택할 수 있다. protocol 2로 설정에는
서버는 버전 2로만 작동하기 때문에 ssh1을 사용해 접속을 요청하는 클라이언트를
받아 들일 수 없다.
- protocol 1로 설정해서 가동시킬 경우에는 버전 2로를 사용하는 ssh2 사용자의 요청을
받아 들일 수 없다. 보안상 protocol 1 은 사용하지 않는다.


ListenAddress 0.0.0.0
- sshd 데몬이 귀를 기울일 주소이다. 0.0.0.0은 모든 곳을 말한다.

#ListenAddress ::

#HostKey for protocol version 1
HostKey /etc/ssh/ssh_host_key
- protocol 1.3과 1.5에 의해 사용되어지는 private RSA 호스트 키 값이 저정되어
있는 파일이다. 현재는 /etc/ssh/ssh_host_key에 저장되어 있다. pulick key는
/etc/ssh/ssh_host_key.pub이다.


#HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

#Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
- 서버의 키는 한번 접속이 이루어진 뒤에 자동적으로 다시 만들어진다. 다시
만드는 목적은 나중에 호스트의 세션에 있는 키를 캡처해서 암호를 해독하거나
훔친 키를 사용하지 못하도록 하기 위함 위함이다. 값이 0이면 키는 다시
만들어지지 않는다. 기본값은 3600초이다.


ServerKeyBits 1024
- 서버 키의 비트수를 정의한다. 최소값은 512이고 디폴트 값은 768이다.

#Logging
#obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
- /etc/syslog.conf에서 정의한 로그 facility 코드이다. 가능한 값은 DAEMON, USER,
AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7이다.
기본값은 AUTH이다.


SyslogFacility AUTH
LogLevel INFO

- 로그 레벌을 지정하는 것이다. 가능한 값은 QUIET, FATAL, ERROR, INFO, VERBOSE
그리고 DEBUGS이다.


#Authentication:

LoginGraceTime 600
- 유저가 로그인을 성공적으로 이루어지 않았을 때 이 시간 후에 서버가 연결을
끊는 시간이다. 값이 0이면 제한 시간이 없다. 기본값은 600초이다.


PermitRootLogin yes
==> 보안상 no로 해준다.
- root 로그인 허용여부를 결정하는 것이다. yes, no, without-password를 사용할
수 있다. 현재 yes로 되어 있기 때문에 직접 root로 접속이 가능하다. 이것을
허용하지 않으려면 no나 without-password로 바꾼다.


#StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes

#AuthorizedKeysFile .ssh/authorized_keys

#rhosts authentication should not be used
#rhosts authentication should not be used
RhostsAuthentication no
#Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
#For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
RhostsRSAAuthentication no
- rhost나 /etc/hosts.equiv파일이 있으면 이것을 사용해 인증한다. 이것은 보안상
별로 안좋은 방법이기 때문에 허용하지 않는다.


#similar for protocol version 2
HostbasedAuthentication no
#Change to yes if you don't trust ~/.ssh/known_hosts for
#RhostsRSAAuthentication and HostbasedAuthentication
IgnoreUserKnownHosts no

#To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
- 패스워드 인증을 허용한다. 이 옵션은 프로토콜 버전 1과 2 모두 적용된다.

PermitEmptyPasswords no
- 패스워드 인증을 할 때 서버가 비어있는 패스워드를 인정하는 것이다. 기본 값은 no이다.

#Change to no to disable s/key passwords
#
http://www.korea.iss.net/alertcon5.htm 참고
ChallengeResponseAuthentication no

#Kerberos options
#KerberosAuthentication automatically enabled if keyfile exists
#KerberosAuthentication yes
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

#AFSTokenPassing automatically enabled if k_hasafs() is true
#AFSTokenPassing yes

#Kerberos TGT Passing only works with the AFS kaserver
#KerberosTgtPassing no

# Set this to 'yes' to enable PAM keyboard-interactive authentication
#Warning: enabling this may bypass the setting of 'PasswordAuthentication'
#PAMAuthenticationViaKbdInt yes

X11Forwarding no
- 원격에서 X11 포워딩을 허용하는 것이다. 이 옵션을 yes로 설정하면 xhost보다
안전한 방법으로 원격에 있는 X프로그램을 사용할 수 있다. yes로 설정 후 데몬
재가동을 하고 테스트해 보자.


#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#KeepAlive yes
#UseLogin no
#MaxStartups 10
#no default banner path
#Banner /some/path
#VerifyReverseMapping no

#override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
- sftp는 프로토콜 버전 2에서 사용되는 것으로서 ssh와 같이 ftp의 보안을
강화하기 위해 사용되는 보안 ftp프로그램이다.
openssh를 설치하면 /usr/local/ssh/libexec/sftp-server파일이 설치된다.
이것은 sftp 서버용 프로그램이다. 클라이언트 sftp프로그램은 설치되지않는다.
따라서 서버로 일단 가동시키고 원도용 ssh클라이언트 프로그램이나
SSH2를 설치하면 sftp를 사용할 수 있다

* gdb란?
  Command line Debugging을 위해 사용되는 Debugger

* 기본 명령어
  - r : Run
  - b 함수이름 or b 줄번호 : Breakpoint
  - n : Next step
  - c : Continue
  - q : Quit




어찌합니까 어떻게 할까요
감히 제가 감히 그녀를 사랑합니다

조용히 나 조차 나 조차도 모르게
잊은 척 산다는 건 살아도 죽은 겁니다

세상의 비난도 미쳐 보일 모습도
모두 다 알지만 그게 두렵지만 사랑합니다

어디에 있나요 제 얘기 정말 들리시나요
그럼 피 흘리는 가엾은 제 사랑은 알고 계시나요

용서해 주세요 벌하신다면 저 받을께요
허나 그녀만은 제게 그녀 하나만 허락해주소서

** 간주중 **

어디에 있나요 제 얘기 정말 들리시나요
그럼 피 흘리는 가엾은 제 사랑은 알고 계시나요

용서해 주세요 벌하신다면 저 받을께요
허나 그녀만은 제게 그녀 하나만 허락해주소서

어디에 있나요 제 얘기 정말 들리시나요
그럼 피 흘리는 가엾은 제 사랑은 알고 계시나요

용서해 주세요 벌하신다면 저 받을께요
허나 그녀만은 제게 그녀 하나만 허락해주소서




어느날 갑자기 이노래를 듣게 되었다.

그날 이후로 계속 이 노래가 입가에 맴돈다.

나의 마음과 많이 비슷하기 때문일까?

지금 난 어찌해야할지를 모르겠으며...

단지... 단지 그녀 하나만을 허락받고 싶다...

...제 얘기 정말... 들리시나요?...
1. File System 별 용량 확인
     #df - h [path]

2. 각 폴더별 용량 확인
      #du -h --max-depth=1 [path]

3. mysqldump
     #mysqldump -u[사용자ID] -p[Password] [Dump할 Database이름] > [생성할 Dump 파일 이름]
     ex)#mysqldump -uroot -proot test_db > test_dump.sql

4. crontab
    #crontab {-e|-l|-r}
       -e : crontab 수정
       -l : crontab 리스트 보기
       -r : crontab 삭제

    # 형식
        m h d m w [사용자] [명령어]
        * : 모든 숫자를 의미
        - : 기간을 의미 ex) 7-24 (7일부터 24일까지)
        , : 각각 숫자를 의미 ex) 7,24 (7일과 24일)

   ex) 30 5 * * * root /root/backup.sh
         매일 새벽 5시 30분에 root의 권한으로 /root/backup.sh를 실행한다.



+ Recent posts