본문 바로가기

ETC

[알고리즘] Dijikstra 최단경로 알고리즘 다익스트라 알고리즘의 pseudo-code와 C 코드는 위키피디아에 잘 나와 있으므로 그곳을 참고한다. 이 글은 어떻게 그 알고리즘을 생각하게 되었을까 를 내 나름대로 생각해 본 후 그에 대하여 쓴 글이다. 요약 다익스트라 최단경로 알고리즘은 다음과 같이 생각해 볼 수 있다. 즉, 경로의 그래프를 실로 되어 있다고 생각하고, 각 지점은 매듭으로 되어 있다고 가정하자. 이와 같은 상황에서 주어진 두 지점을 잇는 최단경로를 찾기 위해서는 그 주어진 두 점을 양 끝으로 잡아 당겼을 때 생기는 직선이 된다. 이것은 자명하다1. 다익스트라 알고리즘은, 주어진 경로(그래프)에서 시작점이 주어졌을 때, 각 점으로 가는 최단경로를 구하는 알고리즘이다. 어느 날 나는 그가 어떻게 그 알고리즘을 생각했는지 궁금했다. 그 .. 더보기
Git Data Transport Commands 더보기
[Raspberry PI] xrdp를 통해 GUI환경으로 Raspberry PI 원격접속하기 [펌] xrdp를 통해 GUI환경으로 Raspberry PI 원격접속하기 1. xrdp ? : RDP(Remote Desktop Protocol)은 마이크로소프트사에서 개발한 원격 데스크톱 프로토콜로 GUI 형식으로 원격 접속을 하기 위한 프로토콜이다. GUI가 중심인 마이크로소프트사는 당연히 필수라고 할 수 있는 프로그램이다. 이를 본따서 만든것이 오픈진영의 xrdp 이다. ssh 가 쉡중심, 즉, CUI - Consol User Interface 라고 한다면, xrdp 는 GUI - Graphical user interface 을 위해서 만들어진 프로그램이다. X윈도우와 같이 GUI 가 익숙한 유저들에게는 추천한다. (xrdp 사용하면서 느낀건데...이름만 rdp이지 vnc 와 비슷한듯 싶다. 한 가족 한 .. 더보기
[Raspberry PI] Raspberry PI 무선 WiFi 설정 1. USB WiFi 동글을 꼽지 말고 부팅한다. USB 동글이 꼽혀 있으면 설정할 때 에러가 날 수 있다. 2. 코드를 실행한다. sudo cp /etc/network/interfaces /etc/network/interfaces.original sudo nano /etc/network/interfaces nano 편집기가 뜰 것이다. 그러면 다음과 같이 바꿔준다. 원본은 .original로 백업해 놨으니까 그냥 지우고 수정하자. ### file: /etc/network/interfaces auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 auto wlan0 iface wlan0 inet dhcp wpa-ssid "공유기이름.. 더보기
Ubuntu에서 JRE 설치하기 안녕하세요? 천재태지 서주영입니다.우분투(Ubuntu) 최신 버전에 오라클 자바 JRE(Oracle Java JRE)를 설치하는 방법을 설명드리겠습니다. 여기서는 우분투 12.04를 기준으로 설명드립니다.우분투 최신 버전은 오라클 자바 JRE 대신 OpenJDK JRE를 제공합니다. 그런데 오라클 자바 JRE를 기반으로하는 프로그램이 많이 있기 때문에 때로는 오라클 자바 JRE를 설치해야 합니다. 제 블로그에서 주로 언급하고 있는 타이젠 플랫폼[1] 같은 경우도 OpenJDK 대신 오라클 자바 JRE를 요구합니다. 1. 오라클 자바 JRE 다운로드 받기 우선 오라클 웹사이트에서 JRE를 다운로드 받아야 합니다. Java SE Downloads 페이지[2]에서 JRE 밑에 있는 DOWNLOAD 버튼을 클릭.. 더보기
Ubuntu에 JDK 설치하기 [펌] Ubuntu에 JDK 설치하기 기본적으로 Java 나 안드로이드를 하려고 한다면 JDK를 설치해야 합니다.윈도우에서는 설치가 있어서 간편한데, 리눅스에서 JDK를 설치하는 방법이 모르는 경우가 있어서 설명하고자 합니다. JDK 설치는 Ubuntu 12.04 Desktop 32비트 버전에서 진행하였습니다. 1. apt-get 으로 openjdk 설치 기본적으로 Ubuntu에서 지원하는 apt를 가지고 설치를 할 수 있습니다.apt 로 설치할 수 있는 항목은 openjdk입니다. Ubuntu Desktop 버전에서는 우분투 소프트웨어 센터에서 UI 화면을 보면서 설치할 수 있습니다. 터미널에서는 아래와 같이 명령을 주면 됩니다. $ sudo apt-get install openjdk-7-jdk openjdk.. 더보기
바인딩이란? 정적 바인딩 & 동적 바인딩 동적 바인딩을 정적 바인딩처럼 쓰기 위해서 virtual화 시킨다. virtual 화 되면 메모리 구조가 바뀌게 된다. 동적 바인딩의 이익 : 공통된 인터페이스를 제공한다. 상위가 하위를 접근할 수 있다. 추상 클래스 때문에도 쓴다. 바인딩 : 함수를 호출하는 부분에 함수가 위치한 메모리 번지를 연결시켜 주는 것 1) 정적 바인딩 : 컴파일시간에 바인딩 결정(실제 데이터 클래스가 필요 없는 경우 대부분 사용:실행속도 빠름) 2) 동적 바인딩 : 실행시간에 바인딩 결정.virtual화 하여 오버라이딩을 하면. 참조된 인스턴스의 실제 데이터 클래스형에 따라 재정의된 함수가 호출.[출처] [C++] 바인딩: 정적 바인딩 & 동적 바인딩|작성자 플러 더보기
TDD 테스트 주도 개발 작동하는 깔끔한 코드 (clean code that works). 론 제프리즈의 핵심을 찌르는 이 한마디가 테스트 주도 개발의 궁극적인 목표다.작동하는(모든 테스트를 통과하는) 깔끔한 코드(중복성이 제거된)는 사실 모든 프로그래머가 지향하는 목표점이라 할 수 있다. TDD는 기존의 프로그래밍 방식을 뒤엎는 개념이기 때문에 지속적인 훈련과 경험을 통해 올바른 습관을 쌓아가야 하며당분간의 생산성 저하도 감내해야 한다.TDD는 하나의 기술이지만 이면에는 사고의 근원적 변화가 있다.테스터가 아닌 프로그래머가 자기 작업의 품질에 대한 우선적 책임을 진다는 것이다. TDD의 프로그래밍 순서는 아래와 같다.1. 빨강 - 실패하는 작은 테스트를 작성한다. 처음에는 컴파일조차 되지 않을 수 있다.2. 초록 - 빨리 테스.. 더보기