<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=BeOS_Programming_1</id>
	<title>BeOS Programming 1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=BeOS_Programming_1"/>
	<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=BeOS_Programming_1&amp;action=history"/>
	<updated>2026-04-20T17:43:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://workspace.onionmixer.net/wiki/index.php?title=BeOS_Programming_1&amp;diff=325&amp;oldid=prev</id>
		<title>Onionmixer: BeOS 프로그래밍의 시작 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=BeOS_Programming_1&amp;diff=325&amp;oldid=prev"/>
		<updated>2013-03-24T15:49:57Z</updated>

		<summary type="html">&lt;p&gt;BeOS 프로그래밍의 시작 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;BeOS 프로그래밍의 시작&lt;br /&gt;
&lt;br /&gt;
백성수 (rainbow@hnc.co.kr)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BeOS의 특징==&lt;br /&gt;
&lt;br /&gt;
* 선점형 멀티 태스킹&lt;br /&gt;
* 보호형 주소처리를 하므로 시스템 전체를 잡아먹는 경우는 없다.&lt;br /&gt;
* 가상메모리&lt;br /&gt;
* 속성(?) 파일 시스템지원&lt;br /&gt;
* 동적 디바이스 드라이버를 지원하므로 드라이버를 새로 업데이트 할 때 다시 부팅할 필요가 없음&lt;br /&gt;
네트웩 시스템이 기본으로 제공&lt;br /&gt;
* 오디오/비디오 실시간 처리 가능&lt;br /&gt;
* 동적 라이브러리(DLL) 공유&lt;br /&gt;
* 객체지향 프로그램을 OS차원에서 기본제공&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BeOS의 시스템 구성(BeOS Layer)==&lt;br /&gt;
&lt;br /&gt;
[[image:beosstructsmall.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==BeOS에서 정의한 표준 규약==&lt;br /&gt;
&lt;br /&gt;
===명명규칙(Name Convention)===&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 1px solid black;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;color: white; background-color: black;&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;분류&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;접두어&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;구 성&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;클래스 이름&amp;#039;&amp;#039;&amp;#039;||B||대문자로 시작한 문자열 조합(예, BTextView)&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;멤버 함수&amp;#039;&amp;#039;&amp;#039;|| ||대문자로 시작(예, GetText)&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;멤버 변수&amp;#039;&amp;#039;&amp;#039;|| ||모두 소문자로 표기&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;상수&amp;#039;&amp;#039;&amp;#039;||B_||모두 대문자(예, B_WILL_DRAW)&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;전역변수&amp;#039;&amp;#039;&amp;#039;||be_||모두 소문자(예, be_app)&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;그외&amp;#039;&amp;#039;&amp;#039;|| ||모두 소문자&lt;br /&gt;
|- style=&amp;quot;color: black; background-color: gray;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |명명규칙&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===코딩 상에 나타나는 몇가지 규칙===&lt;br /&gt;
&lt;br /&gt;
Application Signature(MS Windows시스템의 윈도우 클래스 이름과 비슷함)는 MIME형식(대략 &amp;quot;supertype/subtype&amp;quot;형식으로 구성된 문자열)의 문자열로 작성한다. 즉, MIME의 supertype은 &amp;quot;Application&amp;quot;을 갖고 subtype은 응용 프로그램 이름을 지정해 준다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BeOS의 시계 프로그램의 Sigunature를 보자.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Application/x-vnd.Be-SimpleClock&amp;quot; 경우 &amp;quot;Application&amp;quot;은 이미 BeOS에서 정의하고 있는 응용 프로그램을 나타내는 supertype이다. &amp;quot;vnd.Be&amp;quot;는 개발 업체(Vendor)를 축약해서 vnd로 표현했다. 마지막으로 &amp;quot;SimpleClock&amp;quot;는 응용 프로그램의 이름을 나타낸다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
메모리 할당의 경우 프로그램내에서 사용자가 할당한 메모리는 꼭 제거해야한다(기본 이라는 거 알죠...). 소프트웨어 키트(BeOS에서 제공하는 BApplication, BWindow등의 Kits들)에서 메모리를 할당해서 포인터로 넘겨 받는 경우는 약간의 주의가 필요하다. 즉, char *pText = BWindow-&amp;gt;Text()라고 키트내에 문자열을 할당받아 포인터로 넘겨 받는 경우 pText포인터는 안전한 메모리 포인터를 갖고 있지 않다는 것이다. 왜냐면 키트가 이 메모리를 어느 시점에 제거할 지 모르기 때문이다. 이럴때는 자신의 프로그램내에 메모리를 할당받고 키트내의 복사 생성자(Copy Constructor)를 이용해서 작업하는 것이 안전한 코딩법이 된다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
char *pText = new char[BWindow-&amp;gt;GetLength()+1];&lt;br /&gt;
strcpy(pText, BWindow-&amp;gt;GetText());&lt;br /&gt;
delete [] pText;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
개체내에 또 다른 개체를 메모리에 할당한 경우 제거에 대한 책임은 개체를 포함한 개체가 책임을 지진다. 즉, 부모 개체가 제거될 때 자식 개체도 제거되야 한다. &lt;br /&gt;
&lt;br /&gt;
개체를 할당하는 방법에는 정적할당과 동적할당으로 나눈다. BeOS에서는 사용자가 개체를 할당할 경우 일반적으로 정적방법으로 처리한다. 그러나 하나의 개체에서 또다른 개체를 할당할 때(포함 개체), 쓰레드를 가지는 개체의 경우 동적으로 개체를 할당해야 한다.&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>