구조화 저장소 기법
|
|
- 혜나 허
- 5 years ago
- Views:
Transcription
1 구조화저장소기법 (Structured Storage Technique) 만약정해진포맷의파일형식을써야하는것이아니라, 데이터를저장할때대단히유연하고도강력한방법이존재한다면얼마나편리할까? 구조화저장 (structured storage) 이라는새로운방식으로이러한문제를해결할수있다. 구조화저장은 DocFIle 이나 OLE 복합파일 (OLE compound file) 이라는이름으로도불리고있는새로운저장방식이다. 이방식을이용하면 Load 와 Save 를할때파일의일부분만을활용할수있다. 약간의데이터블록만이필요할때전체데이터를모두불러오거나, 저장해야한다면이는상당히비효율적이라고말할수있다. 이를이용하면순차적이면서, 점진적인데이터의접근이가능하다. 기본적으로윈도우에의해서지원되는방식이므로, 쉽게정보를얻을수있다. 이미마이크로소프트에서는이러한구조화저장방식이차세대윈도우제품에서는디폴트파일포맷으로사용할것임을공언하고있다. 또한, 현재 MS 오피스제품군에서는이기술을적용하고있기도하다. 이정도의소개만으로구조화저장의중요성은충분히알고도남음이있을것이다. 그러면, 이제실제로이기술에대한설명과델파이에서이를어떻게구현할것인지에대해서알아보도록하자. 기본적인이해 구조화저장 (structured storage) 이라는용어는 DocFile 이라는용어와혼용되고있다. 사용의편이성을위해지금부터는간단히 DocFile 이라고지칭하도록하겠다. DocFile 을이해하는가장좋은방법은파일내에파일시스템을가지고있는것이라고생각하면된다. 즉, DocFile 에는디렉토리와파일들을가지고있는것이다. 예를들어, Example.ole 라는 DocFile 이있을때여기에 Version, Files 라는디렉토리가있으며 Files 라는디렉토리아래에 File1, File2, File3 와같은파일들을내부적으로포함한다고하자. 이때 File1 과같은 DocFile 내부의데이터블록에다른데이터블록에전혀영향을주지않고접근하는것이가능하다. 참고로앞으로사용하는용어중에서 Storage 라는용어는 DocFile 에서의디렉토리와동격으로생각하면되고, Stream 은 DocFile 에서의파일로생각하면된다. DocFile 생성함수
2 DocFile 을생성하는함수는 StgCreateDocFile 이다. 이함수는델파이 3 의 activex.pas 유닛에선언되어있으며선언부분은다음과같다. function StgCreateDocfile(pwcsName: POleStr; grfmode: Longint; reserved: Longint; out stgopen: IStorage): HResult; stdcall; 첫번째파라미터인 pwcsname 은파일이름을유니코드로 (OLE 에서는유니코드가표준으로사용된다.) 설정하면되고, grfmode 에는플래그를설정하게된다. 세번째파라미터는현재는사용되지않기때문에보통 0 으로설정하게되며, 실제사용하게될 IStorage 인터페이스가네번째파라미터에서넘어오게된다. 하나의 DocFile 은그자체가 Storage 이다. 그렇기때문에, 이함수에의해서넘어오는 Storage 는파일의루트저장소가된다. 이함수가성공적으로수행되었는지여부를검사할때에는 SUCCEEDED() 함수를사용한다. 그 Pseudo Code 를아래에들어보았다. Hr := StgCreateDocFile(...); if (SUCCEEDED(Hr)) then...; 보통 OLE 를사용할때 HResult 를 S_OK 와비교하는경우가많은데, 이방법은그다지좋은방법이못된다. 그이유는 OLE 가함수가성공적으로수행되더라도미묘하게차이가나는다른여러가지반환값을가질수있기때문이다. 그러므로, SUCCEEDED() 함수를사용하는것이보다효율적인방안이된다. 유니코드 (UniCode) 의사용 앞의함수선언부분에서언급했듯이 OLE 세계에서는유니코드가표준으로사용된다. 그렇지만지금까지의프로그래밍환경에서는안시코드 (AnsiCode) 를표준으로사용해왔기때문에다소간의혼란이있을수있다. 델파이 3 에서는유니코드와안시코드를쉽게변환할수있는방법을제공하기때문에이런변화가커다란문제가되지않는다. WideString 문자열데이터형이유니코드를지원하게된다. 그러면, 간단히안시코드와유니코드를변환하는몇가지방법에대해알아보도록하자. s: string; ws: WideString;
3 s := abc ; ws := s; 어떤가? 너무나단순하지않은가? 그냥일반문자열을위에서와같이 WideString 형의 대입하는것으로모든것이끝난다. 마찬가지로유니코드문자열을안시코드로변환할때에 도단순히다음과같이하면된다. s: string; ws: WideString; ws := abc ; s := ws; 그렇지만, OLE 함수를사용할때에는보통 WideString 데이터형보다는 PWideChar 데이 터형을파라미터로사용하기때문에이를호출할때에는아래와같은방식으로형변환시켜 사용하면간단히해결된다. ws: WideString; ws := abc ; SomeOLEFunction(PWideChar(ws)); 델파이 2 에서는 WideString 데이터형을지원하지않고, PWideChar 데이터형만을지원하기때문에이를안시코드문자열과호환시키기위해서는해당하는문자열의크기의두배만큼의메모리를할당받고, 실제로문자를유니코드로바꾸기위해서는 API 함수인 MultiByteToWideChar 함수를호출해야했다. 마찬가지로유니코드문자열을안시코드로변환시킬때에도메모리할당과 WideCharToMultiByte API 함수를사용해야한다. 이점이델파이 4 가얼마나 OLE/COM 환경에적합한형태로바뀌었는지를보여주는단적이예가될수있다.
4 Stream, Storage 이름의제한 DocFile 시스템에서도약간의이름에대한제한을가지고있다. 31 자가넘는이름을가질수는없으며, 이름에!, :, /, \ 등의문자는사용할수없다. 그리고첫번째문자는 ordinal 값이 32 이하인문자가되면안된다. 이러한문자들은특수한목적에사용되게된다. STGM 상수 STGM 상수는 storage, stream 인터페이스에서객체에대한접근모드나객체를실제로생 성, 삭제등을하게되는조건을정의하고있다. 이들상수에대해서알아보도록하자. STGM_READ, STGM_WRITE, STGM_READWRITE Stream 객체에대해서는어떤메소드를허용할것인지를결정하는상수이다. 예를들어, STGM_READ 는 IStream 의 Read 메소드를허용하게된다. Storage 객체에대해서는가능한요소를나열하고, 이들을 open 한다. STGM_WRITE 는객체를저장할수있도록하며, STGM_READWRITE 는 STGM_READ 와 STGM_WRITE 를혼합한것이다. STGM_SHARE_DENY_NONE, STGM_SHARE_DENY_READ, STGM_SHARE_DENY_WRITE, STGM_SHARE_EXCLUSIVE STGM_SHARE_DENY_NONE 은어떤객체를 open 하더라도이것이그객체에대한 read, write 접근에대한제한을가지지않는것을의미한다. STGM_SHARE_DENY_READ 는 open 한객체에대해서 STGM_READ 모드로접근할수없도록제한다. 주로 root storage 객체에대해사용된다. STGM_SHARE_DENY_WRITE 는 STGM_WRITE 모드로접근할수없도록제한하는데, 이것은여러명의사용자가객체에접근했을때생길수있는문제점을해결할수있다. STGM_SHARE_EXCLUSIVE 는 STGM_READ, STGM_WRITE 모드둘다접근할수없도록하는값이다. STGM_DIRECT, STGM_TRANSACTED Direct 모드에서는 storage 요소에대해서변화가일어날경우이값이그대로반영된다. 이모드가디폴트로되어있다. Transacted 모드에서는변화가일어날경우그값이버퍼에저장되었다가 commit 이호출될때객체에반영된다. 만약 IStream, IStorage 인터페
5 이스에서 Revert 메소드가호출되면이러한변화가무시된다. 그러나, 이모드는현재 OLE 에서는구현되지않고있다. 아마도조만간에는이것이지원될것으로생각된다. STGM_CREATE, STGM_CONVERT, STGM_FAILIFTHERE STGM_CREATE 는현재존재하는 storage, stream 객체가새로운객체가생성될때에는반드시제거되어야한다는것을지정한다. 만약현재의객체가성공적으로제거되지않으면새로운객체가생성되지않는다. STGM_CONVERT 플래그는현재존재하는 stream 의데이터를보존하면서새로운객체를생성하는데, 이때이전객체의데이터는 CONTENTS 라는객체에보존된다. 이때과거의 storage 객체에있던정보는 stream 의형태로변경되어보존되므로, storage 의계층구조정보는망실된다. STGM_CONVERT 플래그는디스크에 storage 객체를생성하려고하는데, 이미그런파일이름이존재하거나, Storage 객체내부에새로운 stream 을생성하려고하는데같은이름의 stream 이있을경우등에서사용하게된다. STGM_FAILIFTHERE 이플래그는만약지정된이름의객체가있을경우에생성과정을취소하는역할을해준다. 이경우에 STG_E_FILEALREADYEXISTS 상수가반환된다. STGM_PRIORITY 이플래그가지정되면현재우선권을가진사용자만이객체의변화를줄수있다. 이를이용하면다른사용자들은이객체에접근해도이를변화시킬수없게된다. 이경우에는반드시 STGM_DIRECT, STGM_READ 가설정되어있어야한다. STGM_DELETEONRELEASE 이플래그는임시파일을사용할때유용하게쓰이는것으로, 부모 storage 객체가해제되 면자동으로그아래의파일들이파괴되도록지정하는것이다. DocFile 을만들어보자. 앞에서설명한 StgCreateDocFile 함수를사용해서실제로 DocFile 을만들어보기로하자. 이미함수선언과파라미터에대해서간단한설명을했지만, 다시한번정리해보자.
6 함수의선언부는다음과같다. function StgCreateDocfile(pwcsName: POleStr; grfmode: Longint; reserved: Longint; out stgopen: IStorage): HResult; stdcall; 그리고, 각파라미터에는다음과같은내용들을설정하게된다. 1. pwcsname: 유니코드형식의실제파일명. ( 예 ) c:\temp\example.ole 2. grfmode: STGM 플래그가설정된다. ( 예 ) STGM_CREATE or STGM_READWRITE STGM_DIRECT or STGM_SHARE_EXCLUSIVE 3. reserved: 0 4. stgopen: 실제로 storage 를담게될레퍼런스파라미터 그럼, 이제실제 DocFile 을만드는프로시저를하나만들어보자. procedure Create; Hr: HResult; Root: IStorage; Hr := StgCreateDocFile( c:\temp\example1.ole, STGM_CREATE or STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE, 0, Root); if (SUCCEEDED(HR)) then end else 아무것도하지않고, Root 라는 IStorage 인터페이스만받아오는프로시저가완성되었다. 사용법이그다지어렵지는않다는것을쉽게알수있을것이다. 마찬가지로 DocFile 을여는것도그다지어렵지않다. 이때에는 StgOpenStorage 라는 API 함수를사용하는데, 이는 DocFile 자체가 root storage 이기때문이다. 이 API 의사용법도거의유사하므로여기에서간단히소개하겠다. procedure OpenDocFile; Hr: HResult; Root: IStorage;
7 Hr := StgOpenStorage( c:\temp\example1.ole, nil, STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE, nil, 0, Root); if (SUCCEEDED(HR)) then end else DocFile 기법을사용한최초의어플리케이션 그럼이제, DocFile 을이용해서그림을저장하고불러올수있는어플리케이션을하나만들어보기로하자. 새로운어플리케이션을하나시작하고, 다음그림과같이폼위에버튼 3 개와이미지컴포넌트, 체크박스, TOpenPictureDialog 대화상자컴포넌트를하나씩얹어서디자인하도록하자. 이때각버튼의캡션을 Open, Save, Load 로정하고, 체크박스에는 Stretch 라고캡션을정하도록한다. 이제간단하게이어플리케이션에대해서설명하면, 구조화저장방법을이용하는방법을익히기위한어플리케이션으로 Open 버튼을누르면대화상자를띄워서, 아무그림파일이나선택하게하고, 이를이미지컴포넌트에보여준다. 이때 Stretch 체크박스가체크되어있을경우에는이미지를 Stretch 해서보여준다. 그리고, 보여주는이미지를 c:\temp\exam1.ole 파일에저장할때에는 Save 버튼을누르고, 저장된이미지를불러올때에는 Load 버튼을누르게한다. 유닛의 implementation 섹션에우리가사용하게될 activex.pas 와 AxCtrls.pas 유닛을 uses 문장에추가한다. 먼저체크박스의 OnClick 이벤트핸들러를아래와같이작성해서, 이미지컴포넌트의 Stretch 속성에반영할수있도록하자. procedure TForm1.CheckBox1Click(Sender: TObject);
8 Image1.Stretch := CheckBox1.Checked; 그리고, Open 버튼의 OnClick 이벤트핸들러를작성하자. procedure TForm1.Button1Click(Sender: TObject); if OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); 이제실제로 Save 버튼을클릭하면그림이 DocFile 로저장되도록해야한다. 이렇게하려면 IStorage 에 IStream 스트림을하나생성하고이스트림에내용을기록해야한다. 스트림을생성하는코드는 IStorage 인터페이스의 CreateStream 메소드를사용한다. 이메소드의파라미터로첫번째파라미터에스트림의이름과두번째에 STGM 플래그를설정하고, 마지막파라미터로생성된 IStream 인터페이스가저장될변수를지정한다. 즉, 다음과같은코드를사용한다. Hr := Root.CreateStream( ExamStream, STGM_CREATE or STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE), 0, 0, Stream); 그러면, 이렇게 Stream 이라는변수에 IStream 인터페이스를담아오게되면실제데이터를여기에저장해야한다. 저장하는방법은크게두가지가있는데, 첫번째방법은 IStream 의메소드를직접이용하는것이고, 두번째방법은 AxCtrls.pas 유닛에서제공하는 TOleStream 클래스를이용하는것이다. 델파이 3 에서는 TOleStream 클래스를이용해서이작업을아주쉽게할수가있다. 사용법은아래와같이아주간단하다. OleStream := TOleStream.Create(Stream); Image1.Picture.SaveToStream(OleStream); OleStream.Free; 이제 Save 버튼의 OnClick 이벤트핸들러를제작해보자. procedure TForm1.Button2Click(Sender: TObject);
9 Hr: HResult; Stream: IStream; OleStream: TOleStream; Root: IStorage; Hr := StgCreateDocFile( 'c:\temp\example1.ole', STGM_CREATE or STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE, 0, Root); if (not SUCCEEDED(Hr)) then Exit; Hr := Root.CreateStream('ExampleStream', STGM_CREATE or STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE, 0, 0, Stream); if (not SUCCEEDED(Hr)) then Exit; OleStream := TOleStream.Create(Stream); Image1.Picture.Graphic.SaveToStream(OleStream); OleStream.Free; 이제는저장된이미지를스트림을통해서읽어올차례이다. 읽을때에도쓸때와마찬가지로 IStream 의메소드를직접이용하는방법과 TOleStream 클래스의메소드를사용하는방법이있다. 먼저 IStream 의 Read 메소드를사용하는방법에대해알아보자. 이메소드는파라미터를 3 개사용한다. 첫번째파라미터에는데이터를저장할버퍼를, 두번째파라미터에는읽어올데이터의크기 ( 바이트 ), 세번째파라미터에는실제로읽어들인데이터의크기가넘어온다. 그러므로, 데이터를읽어들이기에앞서읽어올데이터의크기를알아야한다. 보통스트림에지금과같이하나의데이터를저장한경우에는스트림의크기가읽어올데이터의크기가된다. 그러면스트림의크기를알아볼수있는함수에대해서알아보자 function GetStreamSize(Stream: IStream): LongInt; Hr: HResult; StatStg: TStatStg; Hr := Stream.Stat(StatStg, STATFLAG_NONAME); if (not SUCCEEDED(Hr)) then Result := -1; Exit;
10 Result := Round(StatStg.cbSize); IStream 인터페이스의 Stat 메소드를이용하면현재의스트림에대한정보를 TStatStg 클래스에담아준다. 위에서 Stat 메소드에대한파라미터로사용한 STATFLAG_NONAME 플래그는스트림의이름은담아오지말라고지정한것인데, 사실이경우에는이름을사용할이유가없기때문에이플래그를지정함으로써쓸데없는메모리의낭비를막을수가있다. TStatStg 클래스의 cbsize 멤버에스트림의크기가저장되어있으므로이를정수형으로바꾸어그값을반환한다. 그리고나서 IStream 인터페이스를담고있는 Stream 이라는변수가있다고하면아래와같이사용하면된다. Stream.Read(pBuffer, GetStreamSize(Stream), ReadBytes); 그러나, 보통의경우에는 TOleStream 을이용하는것이훨씬편리하다. 사용법도데이터를쓸데와거의유사하므로, 아래의코드를살펴보면금방이해할수있을것이다. 그러면 Load 버튼의 OnClick 이벤트핸들러를다음과같이작성하자. procedure TForm1.Button3Click(Sender: TObject); Hr: HResult; Stream: IStream; OleStream: TOleStream; Root: IStorage; Hr := StgOpenStorage('c:\Temp\Example1.ole', nil, STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE, nil, 0, Root); if (not SUCCEEDED(Hr)) then Exit; Hr := Root.OpenStream('ExampleStream', nil, STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE, 0, Stream); if (not SUCCEEDED(Hr)) then Exit; OleStream := TOleStream.Create(Stream); if (OleStream.Size > 0) then Image1.Picture.Graphic.LoadFromStream(OleStream); OleStream.Free;
11 자이제첫번째구조화저장기법을이용한어플리케이션이완성되었다. 아직기능이많은것은아니지만기본적인테크닉을익히는데에는유용했을것으로생각한다. 그럼이제더기능이많은두번째어플리케이션을제작해보도록하자. 파일뷰어의제작 이번에는 DocFile 의내부를들여다볼수있는뷰어를제작해보자. 이를구현하기위해서 IStorage 인터페이스의 EnumElements 메소드를사용하게되는데이메소드의속도가다소느린것이흠이다. EnumElements 메소드의선언부는다음과같다. function EnumElements(reserved1: Longint; reserved2: Pointer; reserved3: Longint; out enm: IEnumStatStg): HResult; stdcall; 즉, 마지막파라미터에적절한 IEnumStatStg 인터페이스형의변수를넣어주면여기에정보를담아서오게된다. 이렇게일단 IEnumStatStg 인터페이스를받아오면이인터페이스의 Next 메소드를사용해서각각의하부요소들을얻을수있게된다. Next 메소드는아래와같이선언되어있다. function Next(celt: Longint; out elt; pceltfetched: PLongint): HResult; stdcall; 첫번째파라미터에는받아올아이템의수, 두번째파라미터에는실제로받아오게될 TStatStg 클래스형의변수를지정하고, 세번째파라미터에는실제로넘어온아이템의수가반환된다. 이함수들을이용해서워드나엑셀등의내부적인저장이어떤식으로되어있는지들여다볼수있는간단한뷰어를제작해보자.
12 먼저앞의그림과같이새로운어플리케이션을시작하고폼에트리뷰컨트롤하나와 TOpenDialog 대화상자하나, 그리고버튼을하나올려놓자. 버튼의캡션을 Open 으로설정한다. 그리고, uses 절에 Activex.pas, ComObj.pas 유닛을추가하고, 버튼의 OnClick 이벤트핸들러를다음과같이작성한다. 일단파일이름을유니코드형식으로해야하기때문에, WideString 형식으로선언한변수에파일이름을집어넣고, 이를 PWideChar 로형변환해서사용한다. procedure TForm1.Button1Click(Sender: TObject); ws: WideString; Hr: HResult; Root: IStorage; if not OpenDialog1.Execute then Exit; TreeView1.Items.Clear; ws := OpenDialog1.FileName; 이제는이파일에실제로 DocFile 형식인지검사해서그렇다면그파일의정보를나타내야한다. 이를위해서 StgIsStorageFile 이라는함수를사용하는데, 이함수의파라미터로유니코드형식의파일이름을넘겨주게되고만약 DocFile 형식이라면 S_OK 가반환된다.
13 if (StgIsStorageFile(PWideChar(ws)) <> S_OK) then ShowMessage('DocFile 형식이아닙니다.'); Exit; 지정된파일이 DocFile 형식이므로 StgOpenStorage 함수를사용해서 DocFile 을열고루 트를앞에서선언한 Root 라는 IStorage 형의변수에담아온다. Hr := StgOpenStorage(PWideChar(ws), nil, STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE, nil, 0, Root); if not SUCCEEDED(Hr) then ShowMessage( 파일을열수없습니다! ); Exit; 성공적으로파일을열고, Root 를받아왔으면파일의이름을트리뷰컴포넌트의루트로추 가한다. TreeView1.Items.Add(nil, ws); 이제 Enumeration 을이용해서트리뷰에하부요소의이름들을추가해나가자. DocFile 의구조는 Storage 와 Stream 으로이루어진여러단계의디렉토리형태를가지고있기때문에이를모두탐색할수있도록하려면재귀적호출을할수있어야하므로독자적인프로시저를하나정의해야한다. 이프로시저를 Enumeration 이라고정의하고, 파라미터로 IStorage 인터페이스와트리뷰의해당아이템을지정하도록하자. 그러면아래와같이선언될것이다. procedure TForm1.Enumeration(Storage: IStorage; ANode: TTreeNode); 일단 Button1 의 OnClick 이벤트핸들러에서는 Root 와트리뷰의첫번째노드를파라미 터로해서이프로시저를호출하고, 트리뷰를펼쳐보이면모든작업이끝난다. Enumeration(Root, TreeView1.Items[0]); TreeView1.FullExpand;
14 남은작업은 Enumeration 프로시저를구현하는것이다. 일단다음과같이프로시저와사 용할변수를선언하고, IEnumStatStg 인터페이스를 Enum 변수에담아온다. procedure TForm1.Enumeration(Storage: IStorage; ANode: TTreeNode); Hr: HResult; Enum: IEnumStatStg; SubNode: TTreeNode; StatStg: TStatStg; SubStor: IStorage; HrSubStor: HResult; NumFetched: integer; Hr := Storage.EnumElements(0, nil, 0, Enum); OleCheck(Hr); OleCheck 프로시저는 ComObj.pas 유닛에선언되어있는데결과코드가에러에해당되면 EOleSysError 예외를발생시킨다. EnumElements 메소드를이용해서 IEnumStatStg 인터페이스를 Enum 변수에담아왔으면이인터페이스의 Next 메소드를사용해서 TStatStg 클래스형으로선언된 StatStg 변수에정보를담아오도록하자. 이때 Next 메소드의마지막메소드에는실제로넘어온아이템의수가정수의포인터형으로반환되므로다음과같이사용한다. repeat Hr := Enum.Next(1, if Hr <> S_OK then continue; 이제는 StatStg 변수의 dwtype 정보에따라서다르게대응해야한다. 하부요소가 Storage 라면일단 Storage 의이름이담겨있는 pwcsname 필드를이용해서트리뷰컴포넌트에노드를하나추가한다. 그리고나서, Storage 를다시열어서그 Storage 의 SubStorage 를얻고, 이 SubStorage 에해당되는아이템과추가할트리노드를가지고 Enumeration 프로시저를재귀호출한다. case StatStg.dwType of
15 STGTY_STORAGE: SubNode := TreeView1.Items.AddChild(ANode, StatStg.pwcsName); HrSubStor := Storage.OpenStorage(StatStg.pwcsName, nil, STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE, nil, 0, SubStor); if SUCCEEDED(HrSubStor) then Enumeration(SubStor, SubNode); 하부요소가 Stream 이라면스트림의이름을트리뷰에추가하기만하면된다. STGTY_STREAM: TreeView1.Items.AddChild(ANode, StatStg.pwcsName); 이를계속반복하다가마지막에가면 S_OK 가반환되지않으므로, 이때루프를종료하면 된다. until (Hr <> S_OK); 이것으로두번째어플리케이션이완성되었다. 이제실제로이를컴파일해서실행하고, MS 오피스파일등을열어서하나의파일에어떤형식으로내용들이구조적으로저장되어있는지살펴보도록하자. 아래의그림은오피스의 CommonDB.xls 파일을열어본것이다. 이를보면실제로저장되는내용이하나의파일에여러개의 Stream 과 Storage 로이루어져있다는것을알수있다.
16 정리 (Summary) 이번장에서는새로운파일저장방식으로사용되고있는구조화저장소기법에대해서알아보았다. 이와같은구조화저장소기법을이용해서파일을저장하면파일하나에여러내용을분류하여관리할수있다. 구조화저장소기법을이용한파일저장방식역시이제는표준으로정착되어가고있다. 그러므로 Stream 과 Storage 를이용하는방법에대해서는잘익혀두는것이도움이될것이다.
Microsoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft PowerPoint - e pptx
Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More information<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>
SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More information슬라이드 1
정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More informationMicrosoft PowerPoint - Chap12-OOP.ppt
객체지향프로그래밍 (Object Oriented Programming) 12 장강사 강대기 차례 (Agenda) 멤버에대한동적메모리할당 암시적 / 명시적복사생성자 암시적 / 명시적오버로딩대입연산자 생성자에 new 사용하기 static 클래스멤버 객체에위치지정 new 사용하기 객체를지시하는포인터 StringBad 클래스 멤버에포인터사용 str static 멤버
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More informationChapter #01 Subject
Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More information제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호
제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationISP and CodeVisionAVR C Compiler.hwp
USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler
More informationMicrosoft PowerPoint - chap06-5 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationAPI - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어
메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -
More informationPowerPoint 프레젠테이션
인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음
More informationPowerPoint Presentation
public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More information델파이 4 프로그래밍의 이해 (Understandings of Delphi 4 Programming)
델파이 4 프로그래밍의이해 (Understandings of Delphi 4 Programming) 오브젝트파스칼과심도있는델파이프로그래밍의세계로들어가기전에, 이번장에서는델파이를사용하여첫번째윈도우어플리케이션을제작하고전반적인델파이의환경에대해서알아볼것이다. 내용의수준이높지는않겠지만, 흔히알고있었던내용이라고하더라도별생각없이넘어갔던것들도많을것이다. 그러면, 델파이 4
More informationJAVA PROGRAMMING 실습 05. 객체의 활용
public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string
More information 메소드 오버로딩
객체지향언어로서의오브젝트파스칼 (Object Pascal As A OOP) 오브젝트파스칼의객체지향성을몰라도델파이어플리케이션을쉽게만들수있다. 단순히폼을하나만들고, 거기에여러가지컴포넌트들을추가하고, 이벤트핸들러에적당한내용의코드들을추가하면그걸로충분한것이다. 그렇지만, 이것을이해하면델파이가어떤방법으로작업을처리하는지이해할수있고, 자신만의컴포넌트를만들어내거나, 비교적커다란프로젝트를진행할때에커다란도움을받게될것이다.
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?
More informationq 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2
객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More information17장 클래스와 메소드
17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는
More information2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.
10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1
More informationMicrosoft PowerPoint - additional01.ppt [호환 모드]
1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More informationPowerPoint Presentation
Object-Oriented Analysis and Design How to use StarUML, Korea 1. StarUML 개요 2 2. 설치하기 다음의 website 에서다운로드받음. http://staruml.sourceforge.net/ko/download.php staruml-5.0-uml-cm.exe 파일을클릭합니다. 로컬디스크에다운받은 staruml-5.0-with-cm.exe
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More informationDLL(Dynamic Linked Library)
제 11 장동적연결라이브러리 11.1 DLL 의링크 11.2 DLL 의종류 실습 11-1 Implicit 링킹을통한정규 DLL 달력만들기 실습 11-2 Explicit 링킹을통한정규 DLL 달력만들기 실습 11-3 확장 DLL 을통한주민등록번호조회 프로그램만들기 DLL(Dynamic Linked Library) DLL 이란? 동적연결라이브러리 프로그램내부에라이브러리가있는것이아니라따로독립적으로실행가능한파일
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationUI TASK & KEY EVENT
T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력
More information歯MDI.PDF
E08 MDI SDI(Single Document Interface) MDI(Multiple Document Interface) MDI (Client Window) (Child) MDI 1 MDI MDI MDI - File New Other Projects MDI Application - MDI - OK [ 1] MDI MDI MDI MDI Child MDI
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More informationPowerPoint Presentation
Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More information경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P
Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More information파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter
파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 클래스의사용법은다음과같다. PrintWriter writer = new PrintWriter("output.txt");
More information기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라.
기술문서 14. 11. 10. 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 dokymania@naver.com I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라. Exploit 5 마. 피해 6 III. 결론 6 가. 권고사항 6 I. 소개 가. 역자 본문서는
More informationPowerPoint Presentation
Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationMicrosoft Word - 3부A windows 환경 IVF + visual studio.doc
Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration
More informationMicrosoft PowerPoint 웹 연동 기술.pptx
웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우
More information<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>
VHDL 프로그래밍 D. 논리합성및 Xilinx ISE 툴사용법 학습목표 Xilinx ISE Tool 을이용하여 Xilinx 사에서지원하는해당 FPGA Board 에맞는논리합성과정을숙지 논리합성이가능한코드와그렇지않은코드를구분 Xilinx Block Memory Generator를이용한 RAM/ ROM 생성하는과정을숙지 2/31 Content Xilinx ISE
More information. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요
. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,
More informationtiawPlot ac 사용방법
tiawplot ac 매뉴얼 BORISOFT www.borisoft.co.kr park.ji@borisoft.co.kr HP : 00-370-077 Chapter 프로그램설치. 프로그램설치 3 2 Chapter tiawplot ac 사용하기.tiawPlot ac 소개 2.tiawPlot ac 실행하기 3. 도면파일등록및삭제 4. 출력장치설정 5. 출력옵션설정
More information문서의 제목 나눔고딕B, 54pt
산업공학과를위한 프로그래밍입문 (w/ 파이썬 ) PART II : Python 활용 가천대학교 산업경영공학과 최성철교수 간단한파일다루기 [ 생각해보기 ] 우리는어떻게프로그램을시작하나? 보통은이렇게생긴아이콘을누른다! 그러나실제로는아이콘이아닌 실행파일 을실행시키는것아이콘을클릭하고오른쪽마우스클릭 속성 을선택해볼것 [ 생각해보기 ] 옆과같은화면이나올것이다대상에있는
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More information로거 자료실
redirection 매뉴얼 ( 개발자용 ) V1.5 Copyright 2002-2014 BizSpring Inc. All Rights Reserved. 본문서에대한저작권은 비즈스프링 에있습니다. - 1 - 목차 01 HTTP 표준 redirect 사용... 3 1.1 HTTP 표준 redirect 예시... 3 1.2 redirect 현상이여러번일어날경우예시...
More informationMicrosoft Word - FunctionCall
Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack
More information학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2
학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 16 강. 파일입출력목차 파일입출력기초 파일입출력모드 텍스트파일과이진파일 이진파일입출력 임의접근 1 /18 16 강. 파일입출력파일입출력기초 파일입출력과정 파일스트림객체생성 파일열기 사용 : 기본적으로표준입출력객체 (cin, cout) 사용방법과동일 파일닫기 파일스트림클래스의종류
More informationMicrosoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]
Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google
More information1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할
15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p
More informationMicrosoft PowerPoint - 06-Body Data Class.pptx
Digital 3D Anthropometry 6. Body Data Class Sungmin Kim SEOUL NATIONAL UNIVERSITY Body Data Class 의설계 Body Model 의관리 인체데이터입출력 데이터불러오기 인체모델그리기 TOpenGL의확장 프로젝트관리 프로젝트저장 / 불러오기 추가기능구현 좌표축정렬 Face, Wireframe,
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More information5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp
1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n
More information<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>
게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()
More informationMicrosoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx
2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html
More information<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 19 장배치관리자 이번장에서학습할내용 배치관리자의개요 배치관리자의사용 FlowLayout BorderLayout GridLayout BoxLayout CardLayout 절대위치로배치 컨테이너안에서컴포넌트를배치하는방법에대하여살펴봅시다. 배치관리자 (layout manager) 컨테이너안의각컴포넌트의위치와크기를결정하는작업 [3/70] 상당히다르게보인다.
More information<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D>
제 10 장다양한뷰클래스 10.1 도큐먼트 10.2 파일입출력 10.3 다양한뷰클래스 실습 10-1 Formview를이용한문자를출력하고파일입출력 10.4 분할윈도우 실습 10-2 정적분할윈도우를이용한학생정보프로그램 10.5 다중뷰 실습 10-3 다중뷰만들기 도큐먼트 CDocument 클래스 데이터를관리하는클래스 OnNewDocument() 함수 새로운도큐먼트를만드는기능
More information1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a
6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More informationgnu-lee-oop-kor-lec06-3-chap7
어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More informationConvenience Timetable Design
Convenience Timetable Design Team 4 2 Contents 1. Introduction 2. Decomposition description 3. Dependency description 4. Inter face description 5. Detailed design description 3 1. Introduction Purpose
More information고급 COM 기술의 활용
고급 COM 기술의활용 (I) (Using Advanced COM Techniques I.) 이번장에서는비교적고급이라고할수있는 COM 에서컬렉션을구현하는방법과콜백 함수를이용하여인터페이스간통신을하는방법, 그리고연결점 (Connection Point) 인터페 이스를사용하여이벤트를구현하는방법을예제를통해익히도록한다. 컬렉션객체의구현 델파이의컴포넌트들중에는여러개의서브아이템을소유하는클래스들이많다.
More informationgnu-lee-oop-kor-lec10-1-chap10
어서와 Java 는처음이지! 제 10 장이벤트처리 이벤트분류 액션이벤트 키이벤트 마우스이동이벤트 어댑터클래스 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우 두개의버튼을만들어서패널의배경색을변경하는프로그램을작성하여보자. 이벤트리스너는하나만생성한다. class
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More informationvar answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");
자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트
More information쉽게
Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의
More informationChapter 4. LISTS
C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or
More informationMicrosoft Word - src.doc
IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...
More informationFrama-C/JESSIS 사용법 소개
Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie
More informationMicrosoft PowerPoint UI-Event.Notification(1.5h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View
More informationPowerPoint Presentation
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.
More informationMicrosoft PowerPoint - 알고리즘_5주차_1차시.pptx
Basic Idea of External Sorting run 1 run 2 run 3 run 4 run 5 run 6 750 records 750 records 750 records 750 records 750 records 750 records run 1 run 2 run 3 1500 records 1500 records 1500 records run 1
More informationPowerPoint Presentation
객체지향프로그래밍 그래픽사용자인터페이스 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 프레임생성 (1) import javax.swing.*; public class FrameTest { public static void main(string[] args) { JFrame f = new JFrame("Frame Test"); JFrame
More informationIP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1
IP 심화 º 각 P 의게이트웨이는해당네트워크의마지막주소를사용한다. - P1 (210.220.10.1/26) 의게이트웨이 (5의 Fa0/0) : 210.220.10.63 /26 = 255.255.255.192 호스트비트수 : 32-26 = 6 비트 => = 64 그러므로 P1의 IP 210.220.10.1 중서브넷마스크에의거 26비트는변함이없고, 나머지 6비트가호스트비트로변하므로
More informationMicrosoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]
Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨
More information