<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=SqueakByExample%3A10.2</id>
	<title>SqueakByExample:10.2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=SqueakByExample%3A10.2"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=SqueakByExample:10.2&amp;action=history"/>
	<updated>2026-05-02T14:03:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=SqueakByExample:10.2&amp;diff=2133&amp;oldid=prev</id>
		<title>Onionmixer: 번역수정</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=SqueakByExample:10.2&amp;diff=2133&amp;oldid=prev"/>
		<updated>2013-09-14T04:22:19Z</updated>

		<summary type="html">&lt;p&gt;번역수정&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:22, 14 September 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Stream 대 collection&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Streams vs. Collections&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;컬렉션 프로토콜은 컬렉션의 요소에 대한 저장&amp;lt;sup&amp;gt;storage&amp;lt;/sup&amp;gt;, 제거&amp;lt;sup&amp;gt;removal&amp;lt;/sup&amp;gt; 그리고 열거형&amp;lt;sup&amp;gt;enumeration&amp;lt;/sup&amp;gt;등의 작업을 지원하지만, 이러한 연산들을 혼합하는걸 허용하지는 않습니다. 예를 들어, 만약 OrderedCollection 의 구성요소가 do: 메소드를 이용해서 처리하는경우, do: 블록 내부에서 요소의 추가 또는 제거 작업은 불가능합니다. 그리고 컬렉션 프로토콜은, 컬렉션을 선택하며 선택된 컬렉션은 계속 진행하고 선택되지 않은 컬렉션은 진행을 멈추는 작업처럼, 동시에 2 개의 컬렉션을 반복 적용하기 위한 방법들을 제공하지 않습니다. 컬렉션 프로토콜은, 어떤 컬렉션이 계속 앞으로 진행되고 어떤 컬렉션이 그렇지 않은지를 선택함으로써 동시에 2 개의 컬렉션을 반복 적용하기 위한 방법들을 제공하지 않습니다. 이런 작업을 하고싶다면 컬렉션 내부의 index 또는 위치에 대한 참조를 콜렉션의 외부에서 관리할 필요가 있습니다: &amp;#039;&amp;#039;&amp;#039;ReadStream&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;WriteStream&amp;#039;&amp;#039;&amp;#039; 과 &amp;#039;&amp;#039;&amp;#039;ReadWriteStream&amp;#039;&amp;#039;&amp;#039; 은 정확히 이런경우에 사용할 수 있습니다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;컬렉션 프로토콜은 컬렉션의 요소에 대한 저장&amp;lt;sup&amp;gt;storage&amp;lt;/sup&amp;gt;, 제거&amp;lt;sup&amp;gt;removal&amp;lt;/sup&amp;gt; 그리고 열거형&amp;lt;sup&amp;gt;enumeration&amp;lt;/sup&amp;gt;등의 작업을 지원하지만, 이러한 연산들을 혼합하는걸 허용하지는 않습니다. 예를 들어, 만약 OrderedCollection 의 구성요소가 do: 메소드를 이용해서 처리하는경우, do: 블록 내부에서 요소의 추가 또는 제거 작업은 불가능합니다. 그리고 컬렉션 프로토콜은, 컬렉션을 선택하며 선택된 컬렉션은 계속 진행하고 선택되지 않은 컬렉션은 진행을 멈추는 작업처럼, 동시에 2 개의 컬렉션을 반복 적용하기 위한 방법들을 제공하지 않습니다. 컬렉션 프로토콜은, 어떤 컬렉션이 계속 앞으로 진행되고 어떤 컬렉션이 그렇지 않은지를 선택함으로써 동시에 2 개의 컬렉션을 반복 적용하기 위한 방법들을 제공하지 않습니다. 이런 작업을 하고싶다면 컬렉션 내부의 index 또는 위치에 대한 참조를 콜렉션의 외부에서 관리할 필요가 있습니다: &amp;#039;&amp;#039;&amp;#039;ReadStream&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;WriteStream&amp;#039;&amp;#039;&amp;#039; 과 &amp;#039;&amp;#039;&amp;#039;ReadWriteStream&amp;#039;&amp;#039;&amp;#039; 은 정확히 이런경우에 사용할 수 있습니다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=SqueakByExample:10.2&amp;diff=2132&amp;oldid=prev</id>
		<title>Onionmixer: 번역수정</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=SqueakByExample:10.2&amp;diff=2132&amp;oldid=prev"/>
		<updated>2013-09-14T04:20:14Z</updated>

		<summary type="html">&lt;p&gt;번역수정&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Stream 대 collection==&lt;br /&gt;
&lt;br /&gt;
컬렉션 프로토콜은 컬렉션의 요소에 대한 저장&amp;lt;sup&amp;gt;storage&amp;lt;/sup&amp;gt;, 제거&amp;lt;sup&amp;gt;removal&amp;lt;/sup&amp;gt; 그리고 열거형&amp;lt;sup&amp;gt;enumeration&amp;lt;/sup&amp;gt;등의 작업을 지원하지만, 이러한 연산들을 혼합하는걸 허용하지는 않습니다. 예를 들어, 만약 OrderedCollection 의 구성요소가 do: 메소드를 이용해서 처리하는경우, do: 블록 내부에서 요소의 추가 또는 제거 작업은 불가능합니다. 그리고 컬렉션 프로토콜은, 컬렉션을 선택하며 선택된 컬렉션은 계속 진행하고 선택되지 않은 컬렉션은 진행을 멈추는 작업처럼, 동시에 2 개의 컬렉션을 반복 적용하기 위한 방법들을 제공하지 않습니다. 컬렉션 프로토콜은, 어떤 컬렉션이 계속 앞으로 진행되고 어떤 컬렉션이 그렇지 않은지를 선택함으로써 동시에 2 개의 컬렉션을 반복 적용하기 위한 방법들을 제공하지 않습니다. 이런 작업을 하고싶다면 컬렉션 내부의 index 또는 위치에 대한 참조를 콜렉션의 외부에서 관리할 필요가 있습니다: &amp;#039;&amp;#039;&amp;#039;ReadStream&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;WriteStream&amp;#039;&amp;#039;&amp;#039; 과 &amp;#039;&amp;#039;&amp;#039;ReadWriteStream&amp;#039;&amp;#039;&amp;#039; 은 정확히 이런경우에 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
바로 위에서 언급한 3 가지 클래스는 컬렉션을 stream 처리하기위해 만들어졌습니다. 예를들어 아래의 코드는 interval 에 stream 을 만들고 2 개의 요소를 읽어들입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
r := ReadStream on: (1 to: 1000).&lt;br /&gt;
r next.    ⇒    1&lt;br /&gt;
r next.    ⇒    2&lt;br /&gt;
r atEnd.    ⇒    false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WriteStream 은 컬렉션에 데이터를 쓰기&amp;lt;sup&amp;gt;write&amp;lt;/sup&amp;gt; 할 수 있습니다. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
w := WriteStream on: (String new: 5).&lt;br /&gt;
w nextPut: $a.&lt;br /&gt;
w nextPut: $b.&lt;br /&gt;
w contents.    ⇒    &amp;#039;ab&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
읽기&amp;lt;sup&amp;gt;read&amp;lt;/sup&amp;gt; 프로토콜과 쓰기&amp;lt;sup&amp;gt;write&amp;lt;/sup&amp;gt; 프로토콜 양쪽을 지원하는 ReadWriteStreams 를 만드는 것도 가능합니다. &lt;br /&gt;
&lt;br /&gt;
WriteStream 와 ReadWriteStream 의 주요 문제는, 스퀵의 경우 array 와 string 을 지원한다는 것입니다. 이 문제는 Nile 이라는 이름의 새로운 라이브러리를 개발함으로서 개선을 진행중입니다만, 현시점에서는 다른 종류의 컬렉션에 stream 처리를 시도한다면, 에러가 납니다:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
w := WriteStream on: (OrderedCollection new: 20).&lt;br /&gt;
w nextPut: 12.    ⇒    raises an error&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
stream 은 컬렉션 뿐만 아니라 파일 그리고 소켓(network)에도 사용할 수 있습니다. 아래의 예제에서는 test.txt 라 작명된 캐리지 리턴으로 분리된 파일을 만들고 그 파일에 문자열을 작성한 다음 그 파일을 닫고 있습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
StandardFileStream&lt;br /&gt;
  fileNamed: &amp;#039;test.txt&amp;#039;&lt;br /&gt;
  do: [:str | str&lt;br /&gt;
        nextPutAll: &amp;#039;123&amp;#039;;&lt;br /&gt;
        cr;&lt;br /&gt;
        nextPutAll: &amp;#039;abcd&amp;#039;].&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
다음장에서는 이런 프로토콜들을 좀 더 심도있게 알아보겠습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SqueakByExample]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=SqueakByExample:10.2&amp;diff=2130&amp;oldid=prev</id>
		<title>Onionmixer: SBE 스트림VS컬렉션 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=SqueakByExample:10.2&amp;diff=2130&amp;oldid=prev"/>
		<updated>2012-08-17T04:21:34Z</updated>

		<summary type="html">&lt;p&gt;SBE 스트림VS컬렉션 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==스트림 VS 컬렉션(Streams vs. collections)==&lt;br /&gt;
&lt;br /&gt;
컬렉션 프로토콜은 컬렉션의 구성요소들이 가진 저장소(the storage), 제거(removeal) 그리고 열거(enumeration)를 지원하지만, 이러한 연산들의 혼합을 허용하지는 않습니다. 예를 들면, 만약 OrderedCollection의 구성요소가 do: 메소드에 의해 처리되면, do: 블록 내부에 구성요소들을 추가하거나 제거하는 작업이 불가능해집니다. 컬렉션 프로토콜(the collection protocol)은, 어떤 컬렉션(collection)이 계속 앞으로 진행되고 어떤 컬렉션이 그렇지 않은지를 선택함으로써 동시에 2 개의 컬렉션을 반복적용(iterate)하기 위한 방법들을 제공하지 않습니다. 이러한 절차들(procedures)은 횡단 인덱스(traversal index) 또는 컬렉션 자체 외부에 유지되는 위치참조(position reference)를 요구합니다: 이것은 &amp;#039;&amp;#039;&amp;#039;ReadStream&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;WriteStream&amp;#039;&amp;#039;&amp;#039; 과 &amp;#039;&amp;#039;&amp;#039;ReadWriteStream&amp;#039;&amp;#039;&amp;#039;의 정확한 역할입니다. &lt;br /&gt;
&lt;br /&gt;
이 3개의 클래스는 동일한 컬렉션에서 스트림을 실행하기 위해 정의됩니다. 예를 들면, 다음 코드 조각은 인터벌(an interval)에 스트림(stream)을 만들고 2 개의 구성요소를 읽습니다. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
r := ReadStream on: (1 to: 1000).&lt;br /&gt;
r next.    ⇒    1&lt;br /&gt;
r next.    ⇒    2&lt;br /&gt;
r atEnd.    ⇒    false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WriteStream은 컬렉션(collection)에 데이터를 쓰기(writing) 할 수 있습니다. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
w := WriteStream on: (String new: 5).&lt;br /&gt;
w nextPut: $a.&lt;br /&gt;
w nextPut: $b.&lt;br /&gt;
w contents.    ⇒    &amp;#039;ab&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
읽기 프로토콜(the reading protocol)과 쓰기 프로토콜(writing protocols) 모두를 지원하는 ReadWriteStreams를 만드는 것 또한 가능합니다. &lt;br /&gt;
&lt;br /&gt;
WriteStream 와 ReadWriteStream의 주요 문제는, 스퀵에서 배열(arrays)과 문자열(Strings)만을 지원한다는 것입니다.  이 문제는 Nile로 작명된 새로운 라이브러리의 개발에 의해 변경되고 있는 중이지만, 현재 여러분이 다른 종류의 컬렉션에 스트림 실행을 시도하면, 에러를 보게 되실 것입니다:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
w := WriteStream on: (OrderedCollection new: 20).&lt;br /&gt;
w nextPut: 12.    ⇒    raises an error&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
스트림은 컬렉션 뿐만 아니라 파일 그리고 소켓(sockets)에도 사용될 수 있습니다. 다음 예시는 test.txt라 작명된 캐리지 리턴(carriage return)에 의해 분리된 파일을 만들고 그 파일에 문자열을 작성(쓰기)한 다음 그 파일을 닫습니다. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
StandardFileStream&lt;br /&gt;
  fileNamed: &amp;#039;test.txt&amp;#039;&lt;br /&gt;
  do: [:str | str&lt;br /&gt;
        nextPutAll: &amp;#039;123&amp;#039;;&lt;br /&gt;
        cr;&lt;br /&gt;
        nextPutAll: &amp;#039;abcd&amp;#039;].&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
다음 섹션들은 좀더 깊이 있게 프로토콜들을 제시합니다.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SqueakByExample]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>