본문 바로가기

Programming

(17)
시스템베릴로그의 Virtual Classes와 Polymorphism virtual class 다른 클래스들의 parent로서밖에 존재하지 못하는 클래스 virtual class instance는 constructor를 통해 인스턴스화 될 수 없지만, 다른 클래스 객체를 가리키는 handle로서 존재할 수 있다. virtual class라고 정의되며, 실제 인스턴스화 될 수 없으므로 abstract 클래스라고도 부른다. virtual class에 function을 define할 수는 있으나, 실제로 이 함수를 implement하는 주체는 virtual class를 extend한 child class이다. Polymorphism polymorphism이란 한국어로 번역하면 다형성인데, 기본적인 정의는 구글링하면 많이 나오니까 시스템베릴로그에서 갖는 의미에 좀더 집중하여 서술..
[리눅스/터미널/스크립트] find 커맨드 사용시 특정 디렉토리를 제외시키는 방법 ./ ./dir1/file1 ./dir2/file2 ./dir3/file3 ./dir4/file4 ./dir5/file5 ./dir6/file6 경로는 다르게 구성해도 되는데 저는 위와 같이 최대한 단순하게 조직한 다음 예제를 실습해 봤습니다. find . -type f -not -path "./dir1/*" -not -path "./dir4/*" -exec cp '{}' ./tmp \; -type f : 찾는 대상이 파일임을 의미 -not -path : 뒤에 나오는 path는 찾지 않는다. -exec : find 커맨드 결과로 다음을 실행 '{}' : find 커맨드로 찾은 결과물 \; : exec 커맨드의 끝을 의미 그런데 이렇게 하면 cp: ‘./tmp/file1’ and ‘./tmp/file1’ ..
[파이썬 Python] 파이썬에서 해시가능(Hashable)의 의미와 불변객체와의 관계 Hashing 해싱, 해시, 해쉬 해싱이란 많은 양의 데이터를 하나의 integer와 같이 작은 양의 데이터로 변환해주는 알고리즘입니다. 예를 들어, 10으로 나눈 나머지를 해시 알고리즘으로 채택한다면 모든 수를 1부터 9까지로 반복적으로 분류할 수 있습니다. 이런 해시 알고리즘을 사용하면 constant-time인 o(1)의 시간 복잡도 안에 자료를 찾을 수 있다는 장점이 있습니다. 이는 높은 성능을 요구하는 알고리즘과 자료구조에 있어서 매우 중요합니다. Immutability 불변성, 불변 객체 불변 가능한 객체란, 인스턴스가 메모리를 할당받아 한 번 생성되고 나면 변하지 않는 것을 의미합니다. 불변형 객체는 변수와 객체 참조 간의 차이가 없습니다. 즉 변수의 값이 변할 때, 객체가 변합니다. 불변형..
두 수의 최대 공약수를 구하는 알고리즘 - 유클리드 호제법의 파이썬 구현과 수학적 증명 두 수의 최대공약수를 구하는 방법? 중학교때 가장 일반적으로 배우는 방법은 두 수가 서로소가 될때까지 공통 약수로 나눠간 후 공통 약수들을 곱하여 구하는 것이다. 그치 그치 그게 제일 흔하고 직관적이지! 그런데 컴퓨터로 구현시 더 간단한 알고리즘이 있다! 바로바로 유클리드 호제법. 더 간단하지만 살짝은 추상적이다. 호제법은 서로 나눈다라는 뜻이다. 유클리드 호제법은 두 수를 서로 나누어 가며 최대공약수를 구하는 방법이다. 두 수의 최대공약수는, 두수를 서로 나눈 나머지와 두 수중 더 작은 수의 최대공약수와 같다. 그래서 두 수를 나머지가 0이 될때까지 서로 나눠가며 그 나머지끼리 최대공약수를 구하는 것이다. 예를 들어 48과 64를 생각해보면... 64와 48의 최대공약수 = 64 % 48 과 48의 최..
VSLI 에서 Compilation, Elaboration, Simulation의 의미 디지털 디자인에서 compilation, elaboration, simulation의 의미는 무엇인가 Compilation, Elaboration, and Simulation은 HDL 코드가 tool에 의해 process 되는 step들이다. 이러한 과정들은 설계가 기능적으로(functionally) 올바른지 검증할 수 있게 해준다. Compilation source code를 읽고 syntax와 semantic error를 검사함 Elaboration 시뮬레이션을 위한 모든 과정들을 준비하는 단계라고 보면 된다. parsing과 simulation 사이에 발생한다. - 모듈들을 module instance에 결합시킨다. - model hierarchy를 빌드한다. - parameter 값을 계산한다. ..
[코딩 알고리즘/Prime Number] 에라토스테네스의 체(Eratosthenes' Sieve) : 소수(Prime Number)를 구하는 알고리즘 최근에 코딩을 공부하기 위해서 친구가 추천해준 프로젝트 오일러(Project Euler)의 문제를 순서대로 풀고 있는 중이다. 개인적으로 프로젝트 오일러는 새로운 코딩 언어를 익히기 위해서 굉장히 좋은 도구라고 생각한다. 여기서 문제를 풀면서 다양한 조건문/반복문 사용뿐만 아니라 dynamic programming과 recursive programming 또한 연습할 수 있기 때문이다. 프로젝트 오일러 : https://projecteuler.net/about About - Project Euler The page has been left unattended for too long and that link/button is no longer active. Please refresh the page. pr..
Perl(펄) 함수 - vec 펄의 함수 vec 형식 : vec EXPR,OFFSET,BITSexpr : string type의 변수offset : 변수로부터 포인터 offsetbits : offset 의 배수로 건너 뛸 비트 수 ex ) vec($image, $max_x * $x + $y, 8) = 3;$image를 스트링을 가리키는 주소라고 생각하면,그 주소에서 ( $max_x * $x + $y )*8 비트 떨어진 곳에 3을 assign 한다. 예제 코드step1 선언해보기my $foo = ''; vec($foo, 0, 32) = 0x5065726C; # 'Perl'string type 변수 $foo 선언string pointer $foo가 가리키고 있는 주소 + 0 위치에 0x5065726c라는 32bit data assign8..
ubuntu 16.04 에 caffe 설치하기 from scratch! 2)OpenCV 설치 2. Caffe Installment Tutorial 따라하기 - 이어서지난번 포스팅에 이어서, 우분투에 Caffe를 설치하기 전에 미리 설치해야 할 소프트웨어인 OpenCV를 설치한다. OpenCV를 설치는 아래 링크를 참고하였다. https://github.com/BVLC/caffe/wiki/OpenCV-3.3-Installation-Guide-on-Ubuntu-16.04 우선 OpenCV의 dependencies들을 설치해준다. 아래와 같은 코드를 터미널에 한 줄씩 입력하여 설치한다.sudo apt-get install --assume-yes build-essential cmake git sudo apt-get install --assume-yes pkg-config unzip ffmpeg qtba..