[컴퓨터공학] 46

[시스템 프로그래밍] 파일 정보 검색(1) - inode 정보 검색

[시스템 프로그래밍] 파일 정보 검색(1) - inode 정보 검색 inode에는 파일에 관한 자세한 정보가 저장되어 있습니다. inode는 index-node의 줄임말로, 각 파일마다 고유한 inode값을 가지고 있으며, 파일 형식, 소유자, 그룹, 권한 모드 등 해당 파일에 대한 정보를 가지고 있습니다. 파일 시스템 내의 파일은 inode 값을 통해 식별이 가능합니다. 아래의 그림은 inode의 파일 모드에 관한 그림입니다. 총 16비트의 flag를 가지며, 각 비트에 해당하는 값은 아래와 같습니다. inode는 파일 모드 뿐 만 아니라, 링크 수, 소유자 ID, 그룹 ID, 파일 크기, 파일 주소, 마지막 접근, 마지막 수정, inode 수정 시간 등의 정보를 담고 있습니다. inode의 정보는 s..

[Design Pattern] 데코레이터 패턴 - Decorator Pattern

[Design Pattern] 데코레이터 패턴 - Decorator Pattern 이번 포스팅에서는 구조 패턴중 한 개인 데코레이터 패턴에 대해 알아보도록 하겠습니다. 다음의 교재를 참고했음을 미리 밝힙니다. 데코레이터 패턴은 다음과 같은 특징을 갖습니다. 기능을 계속해서 추가할 수 있는 패턴 기능을 실행중에 동적으로 변경, 확장할 수 있는 패턴 한 객체를 여러개의 데코레이터로 장식할 수 있다. 객체를 언제든지 감쌀 수 있기 때문에 실행중에 필요한 데코레이터를 마음대로 적용할 수 있다. 데코레이터 패턴의 Class diagram은 다음과 같습니다. 위의 Class diagram을 기반으로 Coffee house의 예시로 설명하겠습니다. 우선, 초창기의 Coffee house의 주문 시스템 클래스가 다음과..

[시스템 프로그래밍] Low-level File IO(3) - File access methods

[시스템 프로그래밍] Low-level File IO(3) - File access methods 파일 접근 방법에는 순차 접근(Sequential access)와 직접 접근(Directed access)가 있습니다. 순차접근은 fgetc() 와 같은 함수를 사용하여 File을 bytes 단위로 순서대로 접근하는 방법이고, 직접 접근은 lseek(), seek()와 같은 함수를 통해 원하는 위치로 직접 접근하는 방법입니다. 이번 포스팅에서는 직접 접근에 대해 알아보도록 하겠습니다. 1. $lseek()$ $ man -s 2 lseek lseek(int fd, off_t offset, int whence); fd(file descriptor) : 대상 file descriptor offset : 이동시킬 ..

[Design Pattern] 옵저버 패턴 - Python

[Design Pattern] 옵저버 패턴 - Python 옵저버 패턴은 가장 단순한 행위 패턴입니다. 행위 패턴은 이름 그대로 객체의 역할에 초점을 두고, 더 큰 기능을 구현하기 위한 객체 간의 상호작용을 중요시합니다. 객체끼리 상호작용을 하지만 느슨하게 결합되어 있습니다. (loose coupling) 옵저버 패턴에서 객체(Subject)는 자식(Observer)의 목록을 저장하며 Subject가 Observer에 정의된 메소드를 호줄할 때마다 옵저버에 알림을 줍니다. 유튜브 구독 + 알림설정을 예시로 들어보겠습니다. 유튜브를 구독과 알림설정을 하게 되면 유튜버가 영상을 게시했을 때 알림설정을 한 모든 구독자에게 새 게시물 알림이 전송됩니다. 여기에서 유튜브가 객체(Subject)에 해당되고, 구독자..

[시스템 프로그래밍] Low-level File IO(2) - Read, Write

[시스템 프로그래밍] Low-level File IO(2) - Read, Write 이전 포스팅에서 File Open and Close와 그에 필요한 Parameters를 알아보았습니다. 이번 포스팅에서는 파일 읽고 쓰기에 대해 작성하겠습니다. 1. 파일 읽기 $ man -s 2 read 파일 읽기와 관련된 함수인 read 입니다. 파라미터로는 fildes, *buf, nbyte가 있습니다. fildes : file descriptor, 파일을 생성할 때 할당되는 file descriptor 입니다. 어떤 파일인지 알기 위한 인자(File ID)라고 생각하셔도 괜찮을 것으로 보입니다. buf : buffer, 읽은 내용을 저장할 buffer의 시작 주소입니다. nbyte : 파일에서 읽을 byte의 수 ..

[시스템 프로그래밍] Low-level File IO(1) - Open, Close

[시스템 프로그래밍] Low-level File IO(1) - Open, Close 파일 입출력 방법은 Low-Level File IO (System call)와 High-Level File IO (Buddered IO)로 나뉩니다. High-Level File IO는 File pointer를 사용하는 반면, Low-Level File IO는 File descriptor를 사용하여 입출력합니다. 이번 포스팅에서는 Low-Level File IO에 대해 알아보겠습니다. 1. File open and close 1-1 Open $ man -s 2 open man 명령어를 통해 open을 살펴보면 위와 같은 내용을 확인할 수 있습니다. 우선 "open"이라는 System call을 사용하기 위해서는 위에 보이..

[Design Pattern] Observer pattern, 옵저버 패턴 - JAVA

[Design Pattern] Observer pattern, 옵저버 패턴 옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자(옵저버)들의 목록을 객체에 등록하여 상태 변화가 있을 떄마다 메서드를 통해 목록의 옵저버에게 통지하는 디자인 패턴이다. - Wikipedia 옵저버 패턴은 객체의 상태변화를 감지하는 옵저버가 객체의 상태변화가 있을 때 그와 연관된 객체들에게 알림을 보내는 디자인 패턴으로 행위 패턴에 포함됩니다. Subject는 Observer를 등록, 해제와 변경이 있을 경우 Observer에게 알리는 기능을 합니다. Observer는 updating interface를 가지고 있으며 Subject에서 변화가 있을 때 알림을 수신합니다. 모든 observers는 Observer 인터페이스를 imp..

[데이터베이스] Subquery

[데이터베이스] Subquery Subquery는 Join과 굉장히 유사한 성질을 갖습니다. 즉, 특정 질의를 Join으로도 표현할 수 있고 Subquery로도 표현할 수 있습니다. 위의 세 가지 Table을 사용하여 예시를 들겠습니다. 질의 : 'Harrison Ford'가 출연한 영화의 모든 producer를 찾아라. 먼저, 기본적인 Join연산을 통해 해결해보도록 하겠습니다. 일단 'Harrision Ford'가 있는 starsIn 테이블을 먼저 봐야겠습니다. starsIn에서 'Harrision Ford'가 출연한 Movietitle, movieyear을 뽑고, movie 테이블과 Join한 후 producercno를 통해 movieExec 테이블과 다시 Join하여 name을 뽑아내면 될 것 같..

[데이터베이스] SQL 집합 연산

[데이터베이스] SQL 집합 연산 SQL의 집합 연산에 대해 알아보도록 하겠습니다. INTERSECT - 교집합 UNION - 합집합 EXCEPT - 차집합 1. INTERSECT (SELECT name, address FROM MovieStar WHERE gender = 'F') INTERSECT (SELECT name, address FROM MovieExec WHERE netWorth > 10000); 위의 예제는 INTERSECT를 사용하여 교집합을 구하는 예제입니다. INTERSECT는 두 쿼리에서 모두 출력되는 튜플을 반환합니다. 즉, 위의 예제에서는 MovieStar의 gender가 'F' 이면서 MovieExec의 연봉이 10000보다 큰 튜플의 name, address를 리턴합니다. 2...

반응형