본문 바로가기

프로그래밍(TA, AA)

(251)
[시스템프로그래밍] 고수준 파일 입출력 고수준 파일 입출력은 표준 입출력 라이브러리라고도 하며, C 언어의 표준함수로 제공됩니다. 저수준 파일 입출력은 바이트 단위로만 입출력을 수행하므로, 읽어들인 데이터를 가공하는 추가적인 작업이 필요합니다. 이와달리 고수준 파일 입출력은 문자 단위, 행 단위, 버퍼 단위, 형식 기반 입출력 등 편리한 기능을 제공하므로, 프로그램의 용도에 맞게 적당한 함수를 선택하면 됩니다. 파일 포인터저수준 파일 입출력에서는 열린 파일을 가리키는 데 파일 기술자를 사용하는 한편, 고수준 파일 입출력에서는 파일 포인터를 사용합니다. 파일 포인터는 디스크에서 메모리로 읽어온 파일의 위치(주소)에 관한 정보를 담고 있는 포인터입니다. 또한 파일 기술자는 정수형이지만, 파일 포인터는 시스템 헤더 파일에 정의되어 있는 FILE *..
[시스템프로그래밍] 저수준 파일 입출력 파일은 관련 있는 데이터의 집합으로 하드 디스크 같은 저장 장치에 일정한 형태로 저장됩니다. 파일은 데이터를 저장하는 데는 물론, 데이터를 전송하거나 장치에 접근하는 데도 사용합니다. 유닉스에서 파일은 크게 일반 파일과 특수 파일로 구분할 수 있습니다. 종류 용도 일반 파일 텍스트 바이너리 형태의 데이터를 저장하는 파일 특수 파일 데이터 전송, 장치 접근에 사용하는 파일 특수 파일의 생성과 삭제 및 입출력은 특수 파일별로 약간씩 차이가 있습니다. 특수 파일에 대한 입출력 방법은 다른 장에서 살펴보고, 이 장에서는 일반 파일을 중심으로 데이터를 쓰거나 읽는 방법을 알아봅니다. 유닉스에서 파일을 읽고 쓰는 방법은 저수준 파일 입출력과 고수준 파일 입출력으로 구분할 수 있습니다. 저수준 파일 입출력은 유닉스 ..
[시스템프로그래밍] 유닉스 시스템 프로그래밍 개요 언어와 운영체제 그리고 프로그래밍 방법론에 따라 다양한 프로그래밍 방식이 있지만, 유닉스를 기반으로 한 시스템 프로그래밍에 대해서 알아보겠습니다. 시스템 프로그래머가 되려는 사람은 필수적으로 이 책의 내용을 공부해야 합니다. 유닉스 시스템 관리자가 되려는 사람도 이 책의 내용만큼은 기본적으로 이해아혹 있어야 합니다. 시스템 관리자도 직접 프로그램을 작성해 필요한 도구를 개발하기도 하고, 소스로 배포되는 소프트웨어를 컴파일해 설치해야 할 때도 있기 때문입니다. 유닉스 시스템에서 제공하는 시스템 호출과 라이브러리 함수를 사용해 시스템 프로그램을 작성하는 방법에 대해 알아보려고 합니다. 유닉스 시스템을 다루려면 대한 기본적인 이해와 C 언어를 이용해 프로그램을 작성할 수 있는 능력이 필요합니다. 유닉스 시스템..
[브라우저엔진] 브라우저 렌더링 엔진 2015년 구글은 크롬의 웹 렌더링 엔진으로 사용하던 WebKit을 대체하는 Blink라는 WebKit에서 파생된 새로운 웬 렌더링 엔진을 사용하기 시작했습니다. WebKit은 웹브라우저 시장의 40% 점유율을 가지는 웹 렌더링 엔진이고, Chrome(28 버전 이전), Safari, Opera(15 버전 이전) 등 많은 웹 브라우저에서 사용했었습니다. 아래는 WebKit과 Blink 및 모질라 재단의 FireFox 브라우저에서 사용하는 Gecko 웹 렌더링 엔진을 분석하고 차이점을 알아보겠습니다. WebKit은 애플이 오픈소스로 개발하고 있는 웹 렌더링 엔진이고, HTML, CSS, JavaScript를 지원하도록 설계되었습니다. WebKit은 웹 애플리케이션을 개발하는 기업이 자체 개발을 해왔고, 대..
[자바] 널(null)이 아닌 제로 길이(zero-length) 배열 반환 다음과 같은 메소드는 흔히 볼 수 있습니다. private List cheesesInStock = ...; /** * @상점에서 치즈의 모든 것을 포함하는 배열을 반환하거나 * 구매 가능한 치즈가 없다면 널(null)이다. */ public Cheese[] getCheeses() { if(cheeseInStock.size() == 0) return null; } 치즈를 구매할 수 없는 상화에 특별한 경우를 만들 이유가 없습니다. 이렇게 할 경우 null 반환 값을 처리하기 위해 클라이언트에 코드를 추가로 작성해야 합니다. 다음 예제를 보겠습니다. Cheese[] cheeses = shop.getCheeses(); if (cheeses != null && Arrays.asList(shop.getCheese..