메일 관련 서비스 메일 관련 서비스의 이해 메일 서버의 개요 메일 관련 프로토콜 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와 동일한 서브 디렉터..
2. 파일 시스템 관리 파일 및 디렉터리 관리 소유권과 허가권 소유권은 사용자 소유권과 그룹 소유권으로 나눔 허가권은 user, group, other로 나눔. 허가권은 10개의 영역으로 나눔. 첫 번째는 파일의 타입, 나머지9개는 각각 3개씩 나누고, 첫 세자리는 파일을 소유한 사용자 권한, 두 번째는 해당 그룹에 속한 사용자들 권한, 마지막은 그 외의 다른 사용자들의 권한. 각 세자리는 rwx(읽기, 쓰기, 실행)로 표시. 없는 경우 -로 표시. 파일의 종류 '-' : 일반파일 d : 디렉터리 l : 링크 파일 b : 블록 디바이스 c : 캐릭터 디바이스 p : named pipe(FIFO) s : 소켓 특수 권한 리눅스의 권한 체계는 3계층 3권한. 그러나 이걸로 원할한 시스템 운영 x.(일반 사용..
2. 데이터 입출력 구현 논리 데이터 저장소 확인 논리 데이터 모델 검증 논리 데이터 모델링 개념 데이터베이스 설계 프로세스의 기초 설계 단계로 비즈니스 정보의 구조와 규칙을 명확하게 표현할 수 있는 기법. 개념 모델로부터 업무 영역의 업무 데이터 및 규칙을 구체적으로 표현한 모델 논리 데이터 모델링 특성 포용성 정규화 완전성 독립성 논리 데이터 모델링 속성 개체 속성 관계 개체-관계 모델 현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해서 가장 널리 사용되고 있는 모델. 개체, 속성, 관계로 기술한 모델. 개체-관계 다이어그램 기호 개체 : ㅁ 관계 : ◇ 속성 : Ο 다중 값 속성 : ◎ 관계 속성 연결 : - 정규화 정규화의 개념 관계형 데이터베이..
1. 사용자 관리 root 관리 사용자 분류 root 사용자 일반 사용자 : 로그인이 가능한 사용자, 시스템 계정 숫자 값 형태의 UID(User Identity)로 관리. root는 0이 할당되고 0번 사용자를 슈퍼유저로 인식 일반 사용자는 1번부터 부여. 시스템 계정 시스템의 필요에 의해 생성된 계정. vim, daemon, adm, game 등 root 계정 관리 다른 슈퍼유저가 존재하는지 점검. PAM을 이용하여 root 계정으로 직접 로그인을 막고, su 명령 사용 유도 TIMEOUT 설정 sudo 이용 사용자 계정 관리 사용자 생성 명령어 사용자 계정 생성: useradd [사용법] $ useradd [option] 사용자계정 이름 옵션 -p : 암호를 추가(--password) -d : 홈 ..
1. 요구사항 확인 현행 시스템 분석 현행 시스템 파악 현행 시스템 파악 개념 현행 시스템이 어떤 하위 시스템으로 구성되어 있고, 제공 기능 및 연계 정보는 무엇이며 어떤 기술 요소를 사용하는지를 파악하는 활동. 사용하고 있는 소프트웨어 및 하드웨어는 무엇인지, 네트워크의 구성은 어떻게 되어 있는지 파악하는 활동. 현행 시스템 파악 절차 구성/기능/인터페이스 파악 → 아키텍처 및 소프트웨어 구성 파악 → 하드웨어 및 네트워크 구성 파악 소프트웨어 아키텍처 여러 가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 그리고 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체를 의미. 소프트웨어를 설계하고 전개하기 위한 지침이나 원칙 소프트웨어 아키텍처 프레임워크 소프트웨어 집약..
선형대수 벡터 유한차원공간에 존재하는 점으로 표현한다. ex) (키, 몸무게, 나이), (국어점수, 수학점수, 영어점수) typing 모듈 타입에 대한 힌트(주석)를 IDE등의 써드파티 등에 주기 위한 용도이다. 단, 파이썬 인터프리터는 주어진 힌트를 강제하지 않는다. 함수주석 함수의 매개변수와 반환값에 주석작성이 가능하다 강제성이 없어 무시하고 사용도 가능하다. 콜론(:)을 사용해 매개변수에 할당되어야 하는 타입을 할당하고, 화살표를 사용해 반환값에 할당되어야 하는 형식을 할당한다. def func(a: str, b: float = 3.5) -> int: return a+b value = func(3) print(value) 벡터의 연산 [1,2] + [2,1] = [1+2, 2+1] = [3, 3] ..
simple line chart from matplotlib import pyplot as plt years = [1950, 1960, 1970, 1980, 1990, 2000, 2010] gdp = [300.2, 543.3, 1075.9, 2862.5, 5979.6, 10289.7, 14958.3] # fixme create a line chart, years on x-axis, gdp on plt.plot(years, gdp, color='green', marker='o', linestyle='solid') plt.title("Nominal GDP") # fixme add a label to the y-axis plt.ylabel("Billions of $") # fixme save the file ..
all all(x)는 반복 가능한(iterable) 자료형 x를 입력 인수로 받으며 이 x의 요소가 모두 참이면 True, 거짓이 하나라도 있으면 False를 돌려준다. (반복 가능한 자료형의 예 : 리스트, 튜플, 문자열, 딕셔너리, 집합) all([1, 2, 3]) // True all([1, 2, 3, 0]) // False all([]) // True all의 입력 인수가 빈 값인 경우에는 True를 리턴 any any(x)는 반복 가능한(iterable)자료형 x를 입력 인수로 받으며 이 x의 요소 중 하나라도 참이 있으면 True를 돌려주고, x가 모두 거짓일 때에만 False를 돌려준다. all(x)의 반대이다. any([1, 2, 3, 0]) // True any([0, ""]) // Fa..