728x90
반응형

전체 글 147

[42서울] ft_printf 구현 (한 문장으로 구현하는 이진수 보수 연산)

서론과제 이름에서 알 수 있듯이 printf 함수를 구현하는 과제이다. 당연히 printf 함수의 모든 기능을 구현하는 것은 아니고, 문자열 표준 출력과 서식 지정자와 같은 대표적인 기능을 구현하게 된다. 본 과제에서는 va_arg 관련 함수에 대하여 배울 수 있고, 서식 지정자를 어떻게 처리할지에 대해서도 고민해 보며 코딩 실력을 기를 수 있다.구현ft_printf구현한 ft_printf 함수의 메인 로직에 해당하는 두 함수이다. ft_printf 함수에서는 입력받은 문자열을 순서대로 while 루프를 돌아 서식지정자('%')가 아니라면 문자를 하나씩 출력하고, 서식지정자라면 그 뒤에 오는 문자에 따라서 행동을 지정한다. 이때 입력받은 va_list 구조체의 주소를 ft_format_conversion..

[42서울] get_next_line 구현 (메모리 누수 잡기, 구현 tip)

서론42서울 두 번째 과제인 get_next_line에 대한 기록을 남겨 놓으려고 한다. gnl은 fd(파일 디스크립터) 값을 인자로 받아서 파일을 읽고 개행문자 '\n' 단위로 문자열을 잘라서 리턴하는 함수를 구현하는 과제이다. C의 파일 입출력, 정적 변수, 메모리 누수 방지 등에 대한 내용을 배울 수 있는 과제인 것 같다. 본 과제에서는 C의 static 변수(정적 변수)를 하나 사용할 수 있다. 정적 변수는 fd 값에서 버퍼 사이즈만큼 읽은 문자열에서 '\n'을 기준으로 문자열을 반환하고 남은 문자열을 저장하는 데 사용된다.구현get_next_linebackup == 0이라면 정적 변수 backup에 공백 문자열을 할당받는다.버퍼 사이즈만큼 buf에 동적할당받는다.gnl_read_line 함수로 ..

[데이터베이스] #14 데이터베이스 설계 이론

목차좋은 스키마와 나쁜 스키마함수 종속성 이론정규형분해 및 설계 1. 좋은 스키마와 나쁜 스키마1. 나쁜 스키마세 가지 이상(anomaly)을 가짐갱신 이상삭제 이상입력 이상나쁜 스키마 예)mybadtable1(cID, title, deptName, credit, chairman, bulding, budget)→ 두 관계 “course”와 “department”가 결합되어 있음2. 함수 종속성함수 종속성은 일부 속성의 값이 다른 속성의 값을 유일하게 결정하는 것을 의미A BAB14142435동일한 A값에 대해 항상 동일한 B값A는 B를 함수적으로 결정B는 A를 함수적으로 결정하지 않음슈퍼 키는 관계 속성의 일부분으로서 전체 속성을 함수적으로 결정하는 속성슈퍼 키는 유일하기 때문함수 종속성은 두 가지 방식..

[데이터베이스] #13 개체-관계성 데이터 모델

1. 개체 및 관계성1. 개체(entity), 관계성개체: 구별이 가능한 객체를 의미, 단일 student관계성: 개체 간의 연관성, 학생과 과목 개체 간의 “수강하다”개체 집합, 관계성 집합으로 묶을 수 있음개체와 관계성은 속성을 가질 수 있음2. 속성개체 또는 관계성이 가지는 특성단순 속성/복합 속성단일 값 속성/다수 값 속성유도된 속성주소 ⇒ 거리, 도시, 도, 우편번호 (복합 속성)거리 ⇒ 거리번호, 거리명, 아파트번호 (복합 속성)나이 ⇒ 생년월일로 유추 (유도된 속성)3. 관계성 집합 차수관계성과 관련되는 개체의 개수4. 카디날리티 제약One to oneOne to manyMany to oneMany to Many5. 키테이블에 대한 슈퍼 키, 후보 키, 주 키 개념과 동일슈퍼 키에서 후보 키..

[데이터베이스] #12 SQL 확장

목차SQL 절차적 확장외부 언어 함수/프로시저저장 프로시저SQL: 1999 함수 및 프로시저테이블 함수SQL 프로시저절차 생성자PL/SQL선언 및 예외선언부조건 로직루프사용자 정의 예외커서프로시저함수패키지 1. SQL 절차적 확장사용자는 SQL/PSM 또는 외부 프로그래밍 언어를 이용하여 함수와 프로시저를 개발할 수 있음ex)이미지 데이터 타입에 대한 중첩 판정 기능이미지 유사성 계산 기능1. 외부 언어 함수/프로시저Create procedure deptCountProc (in deptName varchar(20), out count integer)language Cexternal name '/usr/shlee/bin/deptCountProc';Create procedure deptCountPro..

[데이터베이스] #11 응용 개발

목차내장 SQLODBC 1. 내장 SQL1. 내장 SQL호스트 언어 중간 중간에 SQL 문장 삽입전처리(preprocessing) 과정을 꼭 거쳐야 함 → 이후 컴파일EXEC SQL BEGIN DECLARE SECTION ...EXEC SQL ;EXEC SQL ENC DECLARE SECTION;선언된 변수는 프로그램에서 사용할 때 반드시 콜론(:)을 접두사 형식으로 붙임2. 커서두 언어 간에 자료 처리 방식 차이로 인한 불일치 해결 필요 → cursordeclare: 커서 선언EXEC SQL declare myCursor cursor for select sID, name from student where totalCredit > :creditAmount;open: 질의 실행 (질의문의 결과 결정)EXE..

[데이터베이스] #10 오라클 실습 II

목차LOB 데이터 타임집합 연산dual 테이블문자열 처리 함수숫자형 처리 함수날짜형 처리 함수형 변환 함수뷰순환 질의시스템 및 객체 권한동의어트리거 구문 1. LOB 데이터 타입LOB 타입은 대용량 데이터를 저장/관리하기 위하여 사용BLOBCLOBNCLOBBFILEBFILE을 제외한 다른 데이터 타입은 트랜잭션 성질 지원트랜잭션 commit/rollback에 의한 UNDO/REDO 기능을 DBMS가 자체적으로 수행2. 집합 연산오라클 시스템은 union all만 지원intersect all, minis all 지원 x3. dual 테이블속성이 하나이며 터플이 하나인 sys 소유의 테이블4. 문자열 처리 함수Select sID, name, deptNamefrom studentwhere lower(name)..

[데이터베이스] #9 데이터베이스 주요 기능

목차뷰무결성제약트리거권한순환 질의 1. 뷰특정 사용자로부터 특정 속성을 숨기는 기능 → 데이터 보호, 편리성1. 정의create view 문장으로 정의Create view myProfessor asselect pID, name, deptNamefrom professor뷰 테이블은 터플을 저장하는 것이 아님가상 관계 (↔ 베이스 관계)데이터베이스 시스템이 뷰 정의를 활용하여 질의문을 처리뷰 정의베이스 테이블 사용 가능다른 뷰 사용 가능새로운 뷰를 정의할 때 자신의 뷰 사용 → 순환뷰recursive view비순환뷰와 다르게 처리2. 뷰 확장뷰에 대한 질의뷰 정의로 치환뷰가 아닌 베이스 테이블에 대한 질의문으로 바꿈뷰에 대한 변경 연산은 베이스 테이블에 대한 변경 연산으로 변환됨뷰에는 없으며 베이스 테이블에..

[데이터베이스] #8 SQL V (랭킹, 기타 기능)

목차랭킹랭킹널 값 랭크파티션 랭킹다른 랭킹 함수기타 기능기존 스키마/데이터 재활용대용량 객체 타입내장 날짜 타입사용자 정의 타입도메인트랜잭션색인(index)1. 랭킹상위 또는 하위 몇 개(또는 퍼센트)만의 터플을 반환1. 랭킹Select ID, rank() over (order by GPA desc) as sRankfrom studentGrades;랭크만 부여Select ID, rank() over (order by GPA desc) as sRankfrom studentGradesorder by sRank;랭크 부여 후 랭크 순으로 정렬(GPA는 평균 학점)rank(), dense_rank()100점, 100점, 80점, 80점, 60점의 데이터가 있을 때,rank(): 중복 값 상관 없이 개별적인 터플..

[데이터베이스] #7 SQL IV (중첩 서브질의)

목차IN 연산자비교 연산자상관 서브질의exists 구성요소 for allunique 구성요소from 절 서브질의lateral 절with 절Scalar 서브질의1. IN 연산자단일 값이 다수 값에 속하는가를 검사값이 하나가 아니고 여러 개로 구성되는 형태도 in 연산 적용 가능Select name, salaryfrom professorwhere pID in (10, 21, 22);pID 값으로 10, 21, 22 중 하나를 가지는 professor의 정보 반환Select distinct cIDfrom teacheswhere semester = 'Fall' and year = 2009 andcID not in ( select cID from teaches where semester = 'Spring' an..

728x90
반응형