sort + ramda 람다 표현식이란 식별자 없이 실행 가능한 함수를 말하며, 함수 선언 없이도 하나의 식으로 함수를 단순하게 표현할 수 있다. letters = ['let1 art can', 'let2 own kit dig', 'let3 art zero'] letters.sort(key=lambda x : (x.split()[1:], x.split()[0])) # 출력 : ['let1 art can', 'let3 art zero', 'let2 own kit dig'] 식별자를 제외한 문자열 [1:]을 키로 하여 정렬하며, 동일한 경우 후순위로 식별자 [0]를 지정해 정렬되도록, 람다 표현식을 이용해 정렬할 수 있다. 출처 파이썬 알고리즘 인터뷰 (글 : 박상길 그림 : 정진호) [책만]
print 리스트를 출력할 떄는 join()으로 묶어서 처리한다. a = ['A', 'B'] print(' '.join(a)) # A B 다음과 같이 idx와 fruit이 정의되 있을 때 가장 선호되는 print() 방법은 f-string이다. 변수를 뒤에 별도로 부여할 필요 없이 마치 템플릿을 사용하듯 인라인으로 삽입할 수 있어 편리하게 사용할 수 있다. idx = 1 fruit = "Apple" print(f'{idx +1}: {fruit}') # 2: Apple 출처 : 파이썬 알고리즘 인터뷰 (글 : 박상길 그림 : 정진호)
타입 힌트 오류 확인 mypy를 사용하면 타입 힌트에 오류가 없는지 자동으로 확인 할 수 있으므로 이를 통해 수정 할 수 있다. 타입 힌트가 잘못 지정된 코드는 다음과 같이 InCompatible return value type 오류가 발생하므로 확인 후 직접 코드를 수정할 수 있다. $ mypy solution.py 출처 : 파이썬 알고리즘 인터뷰 (글 : 박상길 그림 : 정진호)
카멜 케이스와 스네이크 케이스 카멜 케이스 단어를 대소문자로 구분하여 섞어서 작명하는 방식으로, 자바의 대표적인 표기 방식이기도 하다. 스네이크 케이스 각 단어를 언더스코어로 구분한다. 일반적으로 모두 소문자로 표기하지만 경우에 따라 시작 문자는 대문자로 표기하기도 한다. 연구 결과에 따르면 스네이크 케이스가 카멜 케이스보다 훨씬 더 인지하기 쉽다고 한다. 파이썬은 PEP8을 통해 스네이크 케이스 방식의 네이밍 컨벤션을 권장한다. camelCase: int = 1 snake_case: int = 1 네이밍 컨벤션 파이썬의 변수명 네이밍 컨벤션은 자바와 달리 각 단어를 밑줄(_)로 구분하여 표기하는 스네이크 케이스를 따른다. 이는 함수명도 마찬가지다. 특히 파이썬은 파이썬다운 방식에 굉장한 자부심이 있어서..
구조체 파이썬에는 구조체가 없을 뿐더러 클래스 또한 데이터 타입을 지정할 수 없어, 구조체와 같은 형태를 정의하려면 네임드 튜플을 사용해야 했다. from collections import namedtuple MyStruct = namedtuple("MyStruct", "field1 field2 field3") m = MyStruct("foo", "bar", "baz") 위처럼 정의해 사용하는 방법밖에 없었는데, 파이썬 3.7부터 dataclass를 지원하며, @dataclass 데코레이션으로 타입 힌트와 함께 활용함으로써 다음과 같이 class를 이용해 구조체 형태로 정의할 수 있다. from dataclasses import dataclass @dataclass class Product: weight..
네트워크 침해 유형 및 특징 네트워크 침해 유형 및 특징 DoS(Denial of Service) 공격 시스템이나 네트워크의 구조적인 취약점을 공격하여 정상적인 서비스를 할 수 없도록 방해하는 것. 과도한 부하를 발생시켜 데이터나 자원을 잠식. 파괴 공격, 시스템 자원 고갈 공격, 네트워크 자원 고갈 공격으로 분류. Ping of Death Ping을 이용하여 ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 보낸는 공격 방법. ICMP Flooding의 일종. UDP Flooding UDP 패킷을 대량 발생시켜 특정 시스템의 서비스를 방해하는 공격. 소스 주소가 스푸핑된 시스템에서 UDP 패킷을 공격 대상이 되는 시스템에 대량 전송하여 네트워크 대역폭을 소모하는 형태로 공격이 이루어짐 TCP SYN ..
12. 제품 소프트웨어 패키징 제품 소프트웨어 패키징하기 사용자 중심의 패키징 수행 제품 소프트웨어 패키징의 개념 개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 포장하는 과정 제품 소프트웨어 패키징 적용 시 특성 전체 내용을 포함하는 메뉴얼 작성 버전 관리 / 릴리즈 노트 고객, 사용자 편의성 중심 모듈화 제품 소프트웨어 패키징을 위한 모듈 빌드 제품 소프트웨어 패키징은 모듈들을 통해 수행되므로, 최초 소스 개발 시 해당 모듈 단위 및 모듈화를 통해 제품 소프트웨어 패키징을 수행 소프트웨어 모듈 및 패키징 모듈화 개념 모듈을 이용하여 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법. 모듈화의 장점 프로그램의 효율적인 관리 소프..
제네릭 프로그래밍 제네릭이란 파라미터의 타입이 나중에 지어되게 해서 재활용성을 높일 수 있는 프로그래밍 스타일이다. 파이썬은 동적 타이핑 언어이기 때문에 제네릭이 필요 없다. 하지만 동적 타이핑의 장점이자 단점은 얼핏 사용하기엔 매우 편하지만 코드의 복잡도가 높아질수록 혼란을 가중시킨다는 점이다. 타입을 아예 명시하지 않으면 가독성을 낮추고 버그 발생 확률이 높아진다. 따라서 다음과 같이 타입을 명시할 수 있다. from typing import TypeVar T = TypeVar('T') U = TypeVar('U') def are_equal(a: T, b: U) -> bool: return a == b are_equal(10, 10.0) 파이썬은 동적 타이핑 언어지만 이처럼 타입을 명시하게 되면 가독..
11. 응용 SW 기초 기술 활용 데이터베이스 기초 활용하기 데이터베이스 종류 데이터베이스 데이터베이스 개념 다수의 인원, 시스템 또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터의 집합 데이터베이스 종류 파일 시스템 종류 ISAM : Indexed Sequential Access Method. 자료 내용은 주 저장부, 자료의 색인은 자료가 기록된 위치와 함께 색인부에 기록되는 시스템 VSAM : Virtual Storage Access Method. 대형 운영체제에서 사용되는 파일 관리 시스템 계층형 데이터베이스 관리시스템(HDBMS; Hierarchical Database Management System) 데이터를 상하 종속적인 관계로 계층화하여 관리하는 데이터베이스 접근 속도가 빠르지만, 종..
11. 응용 SW 기초 기술 활용 운영체제의 특징 운영체제의 종류 운영체제(OS; Operating System)의 개념 사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영함으로써 사용자에게 편리성을 제공 컴퓨터 시스템과 사용자 간의 인터페이스 기능을 담당 운영체제의 종류 윈도즈 운영체제 MS-DOS의 멀티태스킹 기능과 GUI 환경을 제공하는 응용 프로그램으로서, 마이크로소프트사가 개발 윈도즈 운영체제 특징 그래픽 사용자 인터페이스(GUI) 제공 선점형 멀티태스킹 방식 제공 자동감지 기능 제공 OLE(Object Linking and Embedding) 사용 : 개체를 현재 작성 중인 문서에 자유롭게 연결..
10. 프로그래밍 언어 활용 기본 문법 활용하기 변수 활용 변수 : 어떤 값을 주기억 장치에 기억하기 위해서 사용하는 공간 식별자 : 프로그램의 구성요소를 구별하기 위한 기준 바인딩 : 변수와 변수에 관련된 속성을 연결하는 과정 선언 : 변수에 이름, 데이터 타입 등의 속성을 부여하는 작업 영역 : 이름이 사용되는 범위를 의미 할당 : 변수에 메모리 공간을 바인딩하는 작업 데이터 타입 : 변수가 가질 수 있는 속성 및 속성 값의 길이 연산자 : 데이터 처리를 위해 연산을 표현하는 기호 명령문 : 프로그램을 구성하는 문장으로, 지시 사항을 처리하는 단위 자료구조 개념 컴퓨터에 데이터를 삽입, 삭제, 수정하게 해주는 논리적인 공간 구조 자료 구조 분류 단순 구조 : 프로그래밍 언어에서 제공하는 기본 데이터 ..
Pandas 특징 Easy-to-use data structure and data analysis tools Relational 하거나 labeled data에 대한 쉬운 접근 및 data manipulation 관련 기능 제공 효율적인 연산이 가능한 다차원 array 자료형 제공 Pandas에서 주로 다루는 데이터 테이블 형태의 데이터(주로 SQL table, csv) Time series 데이터 주요기능 결측치(missing data) 처리 간편한 slicing 및 indexing 여러 개의 데이터를 하나로 병합하는 join/merge 그룹화 기능 Pandas vs Numpy Pandas는 Numpy의 기능을 확장한 패키지 1-d array, 2-d array를 각각 Series와 DataFrame이..
Numpy Numpy Array 한 array 객체에는 모두 동일한 타입의 elements들이 포함됨 dtype array 객체에 포함된 elements의 타입을 설명하는 객체 ndim 차원의 수, 축의 수 import numpy as np a = np.array([[0, 1], [5, 6]]) print(a.ndim) # 2 shape 각 차원의 크기를 나타내는 integer들의 tuple tuple 객체의 length는 ndim과 동일함 import numpy as np a = np.array([[0, 1], [5, 6]]) print(a.shape) size 행렬의 모든 원소 갯수 shape의 elements들을 모두 곱한 결과와 같음 import numpy as np a = np.array([[0..
가상화 관리 가상화 서비스의 이해 가상화의 정의 및 개요 한 컴퓨터의 물리적 시스템 자원인 CPU, 메모리, 디스크 등을 여럿으로 나누거나, 다수의 컴퓨터들의 물리적 자원을 하나로 묶어서 제공하는 기술 가상화의 기능 공유(Sharing) 다수의 많은 가상 자원들이 하나의 동일한 물리적 자원과 연결되어 있거나 가리키는 것 서버내의 논리적 파티셔닝(LPARs), 가상머신(VM), 가상 디스크, 가상 LAN(VLANs) 단일화(Aggregation) 공유의 반대되는 가상화 개념. 가상 자원은 여러 개의 물리적 자원들에 걸쳐서 만들어질 수 있으며 이를 통해 외견상 전체 용량을 증가시키고, 전체적인 관점에서 활용과 관리를 단순화시켜 줌. 에뮬레이션(Emulation) 물리적 자원 자체에는 원래부터 존재하지 않았지..
메일 관련 서비스 메일 관련 서비스의 이해 메일 서버의 개요 메일 관련 프로토콜 SMTP(Simple Mail Transger Protocol) : 인터넷에서 이메일을 보낼 때, 메일 클라이언트에서 메일 서버로 메일을 보낼 때 사용되는 프로토콜. TCP 25번 포트 사용. POP3(Post Office Protocol Version 3) : 서버에 도착한 메일을 클라이언트에서 직접 내려 받아 읽도록 해주는 프로토콜. 110번 포트 사용. 메일을 확인하면 서버로부터 메일을 클라이언트로 가지고 온 후 서버에서 해당 메일을 삭제함. IMAP(Internet Mail Access Protocol) : POP3와 마찬가지로 클라이언트 사용자가 메일 서버에 도착한 메일을 확인 할 때 사용하는 프로토콜로 143번 포..
9. 소프트웨어 개발 보안 구축 소프트웨어 개발 보안 설계 소프트웨어 개발 보안 설계 SW 개발 보안의 개념 소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동을 말함. SW 개발 보안의 구성요소 기밀성 : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성 가용성 : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성 무결성 : 정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성 SW 개발 보안 용어 자산 : 조직의 데이터. 조직의 소유자가 가치..
리스트 리스트의 특징 리스트는 여러 데이터 타입이 섞여 있을 수 있다. 리스트 인덱싱 및 슬라이싱 sequence[start_index:end_index:step] : 시퀀스 내에서 start_index와 end_index 사이의 구간에 포함되며, start_index로부터 step 만큼씩 index를 증가시켜 가며 슬라이싱. list1 = [11, 33, 55, 22, 44, 89] print(list[2:6:2]) # 55, 44 print(list[::2]) # 11, 55, 44 리스트 클래스 내장 함수 extend(sequence) : 시퀀스 타입 데이터를 현재 리스트의 뒤에 추가. list object를 expend 하면 liset안에 있는 item 개별로 append. index(item) ..
인증 관련 서비스 인증 관련 서비스의 이해 인증의 개요 하나의 서버에 사용자 관련 정보를 저장하고, 나머지 다수의 다른 서버에 사용자, 암호, 그룹 정보 등을 제공하는 서비스를 말함 NIS, LDAP, 액티브 디렉터리(윈도우용) NIS(Network Information Service)의 개요 Sun Microsystems사에서 개발 네트워크 기반으로 여러 가지 정보를 제공해 주는 서비스 하나의 서버에 등록된 사용자 계정, 암호, 그룹 정보 등을 공유하여 다른 시스템에 제공하는 서비스 초기에는 YP라는 이름으로 출시가 되어 관련 명령어들이 yp로 시작하는 계기가 됨 보안을 강화하고, 확장성과 유연성을 높인 NIS+를 발표 NIS+는 RPC(Remote Procedure Call)에서 데이터 암호화 및 인..
8. SQL 응용 절차형 SQL 작성하기 프로시저 프로시저의 개념 절자형 SQL을 활용하여 특정 기능을 수행할 수 있는 트랜잭션 언어. 일련의 SQL 작업을 포함하는 데이터 조작어를 수행. 프로시저 구성 선언부(DECLARE) : 프로시저의 명칭, 변수와 인수, 데이터 타입을 정의 시작/정의부(BEGIN/END) : 프로시저의 시작과 종료 제어부(CONTROL) : 순차적 처리, 조건문과 반복문을 이용 SQL : DML문, DDL 중 TRUNCATE 사용 예외부(EXCEPTION) 실행부(TRANSACTION) : 트리거에서 수행된 DML 수행 내역의 DBMS의 적용 또는 취소 여부를 결정하는 처리부 프로시저 구성 상세 선언부 CREATE [OR REPLACE] PROCEDURE 프로시저_명 파라미터_명..
웹 관련 서비스 웹 관련 서비스의 이해 웹의 개요 WWW(World Wide Web) 인터넷에 연결된 컴퓨터들을 통해 문서나 정보를 공유할 수 있도록 구성한 정보 공간이자 서비스 인터넷상에서 정보를 하이퍼텍스트 방식과 멀티미디어 환경에서 검색할 수 있는 정보검색 시스템 웹 브라우저라고 부르는 프로그램을 이용해서 탐색 HTML이라는 태그를 이용해서 만듬 웹 서비스 구성 요소 웹 서버 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아 정보제공자가 작성한 웹 페이지나 웹 문서를 전달하는 역할을 수행 아파치, IIS, Nginx, GWS, Cherokee, Lighttpd 등이 있음 로그 관리, 인증, 가상 호스팅, 대용량 파일 지원, 대역폭 제한 등의 기능 웹 문서 웹 서버 프로그램에서는 동적인 페이지..
7. 애플리케이션 테스트 관리 애플리케이션 테스트 케이스 설계 애플리케이션 테스트 케이스 작성 소프트웨어 테스트의 이해 소프트웨어 테스트 개념 개발된 응용 애플리케이션이나 시스템이 사용자가 요구하는 기능과 성능, 사용성, 안정성 등을 만족하는지 확인하고, 노출되지 않은 숨어있는 소프트웨어의 결함을 찾아내는 활동 소프트웨어 테스트 필요성 오류 발견 관점 오류 예방 관점 : 동료 검토, 워크스루, 인스펙션 품질 향상 관점 소프트웨어 테스트 원리 테스팅은 결함이 존재함을 밝히는 것 : 결함x 증명 못함 완벽한 테스팅은 불가능 개발 초기에 테스팅 시작 결함집중 : 적은 수의 모듈에서 대다수의 결함 발견 살충제 패러독스 : 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그 발견 못함 테스팅은 정황에 의존적..
6. 화면 설계 UI 요구사항 확인 UI 요구사항 확인 UI 개념 넓은 의미에서 사용자와 시스템 사이에서 의사소통할 수 있도록 고안된 물리적, 가상의 매개체. 좁은 의미로는 정보 기기나 소프트웨어의 화면 등에서 사람이 접하게 되는 화면. UI 유형 CLI : 정적인 텍스트 기반 인터페이스 GUI : 그래픽 반응 기반 인터페이스 NUI : 직관적 사용자 반응 기반 인터페이스. 신체 부위를 이용. OUI : 유기적 상호작용 기반 인터페이스. 현실에 존재하는 모든 사물이 입출력장치로 변화할 수 있는 사용자 인터페이스. UI 설계 원칙 직관성 : 누구나 쉽게 이해하고, 쉽게 사용할 수 있어야 함 유효성 : 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 학습성 : 초보와 숙련자 모두가 쉽게 배우고 사용할 수..
시스템 분석 시스템 로그 분석 및 관리 시스템 로그의 개요 초기에는 syslog라는 패키지를 사용 syslogd라는 데몬이 /etc/syslog.conf 설정 파일을 기반으로 서비스별 로그 파일을 /var/log 디렉터리에 생성 최근에는 rsyslog(rocket-fast system for log processing) 패키지로 대체 rsyslog는 멀티스레드, TCP, SSL, TLS, RELP(Reliable Event Logging Protocol), 데이터베이스, 보내는 목록 제한, 메시지 일부 필터링, 출력 포맷 제어 등의 다양한 기능 제공 rsyslog 주요파일 /etc/rc.d/init.d/rsyslog : 데몬 /etc/rsyslog.conf : 데몬 환경 설정 /etc/sysconfig/..
5. 인터페이스 구현 인터페이스 설계 확인 외부, 내부 모듈 간 공통 기능 및 데이터 인터페이스 확인 인터페이스 설계서 이 기종 시스템 및 컴포넌트 간 데이터 교환 및 처리를 위해 각 시스템의 교환되는 데이터 업무, 송수신 주체 등이 정의된 문서. 인터페이스 목록 + 상세 데이터 명세 + 세부 인터페이스 정보. 인터페이스 목록 인터페이스 번호 및 인터페이스가 되는 시스템의 정보 및 관련 요구사항 ID를 목록 형태로 보여줌 인터페이스 명세 각 인터페이스 번호 당 인터페이스가 되는 데이터, 데이터 형식, 송수신 시스템의 정보 등을 구체화하는 문서. 인터페이스 목록에 있는 각 인터페이스의 상세 정보. 상세 기능 인터페이스 정의서 데이터 송, 수신 시스템 간의 데이터 저장소와 속성 등의 상세 내역 시스템 인터페..
장치의 설치 및 관리 장치의 설치 및 관리 모듈 프로그램이나 하드웨어 기능단위, 교환 가능한 구성부분. 보통 모듈이 로드되었다는 것은 커널 밖에 존재하던 해당 드라이버가 커널의 일부로 되었다는 뜻이고, 언로드하면 다시 커널과 별도로 존재. 리눅스 커널 모듈은 C 컴파일러로 만들어진 오브젝트 파일로서 '*.ko' 형태로 생성 각 시스템에서 가능한 모듈은 '/lib/modules/커널버전/kernel' 디렉터리 안에 생성 모듈관련 명령어 lsmod 리눅스 커널에 적재된 모듈 정보를 출력하는 명령 insmod 커널에 모듈을 적재하는 명령. 해당 모듈 파일이 존재하는 디렉터리까지 이동, 의존성이 있는 모듈인 경우에는 적재 못함. [사용법] $ insmod 모듈_파일명 rmmod 커널에서 모듈을 제거하는 명령. ..
경사하강법 그래디언트 (편)미분값이다. 최고 값, 최솟 값을 찾기 위해서 그래프의 증감방향으로 점진적으로 접근하는 방법이다. 경사하강법, 경사 상승법 경사 하강법은 Local(범위가 정해진) minimum을 찾는 방법이다. 반대로 경사 상승법은 Local maximum을 찾는 방법이다. 경사 하강법에서 부호만 반대로 하면 경사 상승법 적용이 가능하다. 경사하강법 현재 x 값의 미분값(기울기)에 따라 기울기가 음수이면 x 값을 양의 방향으로 이동하고, 기울기가 양수이면 x 값을 음의 방향으로 이동한다. 경사상승법 현재 x 값의 미분값(기울기)에 따라 기울기가 음수이면 x 값을 음의 방향으로 이동하고, 기울기가 양수이면 x 값을 양의 방향으로 이동한다. 그래디언트 계산하기 sum of squares 최저점 ..
4. 서버 프로그램 구현 개발환경 구축 개발환경 구축 개발환경 구축의 개념 구현될 시스템 요구사항의 명확한 이해가 필요 개발 도구와 서버의 선정이 이루어져야 하고, 개발에 사용되는 도구들의 사용 편의성과 성능, 라이선스를 확인 개발 도구의 분류 구현 도구 : 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구. ex) Eclipse, intelliJ, Spring Tool Suite, NetBeans, Visual Studio 테스트 도구 : 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구 ex) xUnit, PMD, Findbugs, Cppcheck, Sonar 형상관리 도구 : 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구 ex) CVS, Sub..
3. 통합 구현 연계 데이터 구성 연계 요구사항 분석 연계 요구사항 분석의 개념 서로 다른 두 시스템 장치, 소프트웨어를 이어주는 중계 역할을 하는 연계 시스템과 관련된 요구사항을 분석하는 과정. 요구사항 분석 기법 인터뷰 체크리스트 : 시스템 운영 환경, 성능, 보안, 데이터 발생 주기 등 점검을 통해 요구사항을 도출 설문지 델파이 기법 : 전문가 지식을 통해 분석 브레인스토밍 : 소속된 인원들의 아이디어로 요구사항 분석 참고문서 코드 정의서 테이블 정의서 응용 프로그램 구성도 시스템 구성도 개체 정의서 데이터베이스 개념 모델링 단계에서 도출한 개체의 타입과 관련 속성, 식별자 등의 정보를 개괄적으로 명세화한 정의서 테이블 정의서 논리 및 물리 모델링 과정에서 작성하는 설계 산출물로 테이블을 구성하는 ..
3. 프로세스 관리 프로세스의 제어 프로세스 우선순위 명령행에서 'ps -l' PRI와 BNI가 있고, 이 두 항목이 프로세스의 우선순위와 연관 PRI는 운영체제에서 참고하는 우선순위 값으로 낮은 값일수록 우선순위가 높다. 인위적인 조작이 되지 않고, 시스템 상황에 따라 적절히 부여된다. NI 값은 root나 사용자가 조작하는 우선순위 값으로 -20부터 19까지 설정 가능하다. 이 값 역시 낮은 값일수록 우선순위가 높고, root만이 값을 낮출 수 있다.(관련 명령어로 nice, renice) 프로세스와 /proc 디렉터리 /proc 개요 가상 파일 시스템. 동작중인 프로세스 상태 정보 시스템 및 하드웨어 정보 확인 ps 명령시 이 디렉터리 사용 프로세스 생성시 이 디렉터리에 PID와 동일한 서브 디렉터..