<?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=VisualWorksTutorial1%3APage12</id>
	<title>VisualWorksTutorial1:Page12 - 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=VisualWorksTutorial1%3APage12"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=VisualWorksTutorial1:Page12&amp;action=history"/>
	<updated>2026-04-21T08:38:31Z</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=VisualWorksTutorial1:Page12&amp;diff=2703&amp;oldid=prev</id>
		<title>Onionmixer: VisualWorksTutorial1 page12 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=VisualWorksTutorial1:Page12&amp;diff=2703&amp;oldid=prev"/>
		<updated>2012-12-12T06:29:15Z</updated>

		<summary type="html">&lt;p&gt;VisualWorksTutorial1 page12 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{CincomTop|{{CincomSmalltalkHeadBanner|웹로그 통계 레슨 11|리팩토링(Refactoring)}}}}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: none; width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;text-align:center;font-weight:bold; font-style: normal;font-size:110%;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | | 목차 | 레슨10| 정리 |&amp;lt;hr style=&amp;quot;color:black;background-color:black;height:4px;&amp;quot;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;width:60px;float:left;&amp;quot; | {{HeadImageOpenbook}}&lt;br /&gt;
| {{HighlightBold|리팩토링}}은 Smalltalk 세계에서 이따금 들을 수 있는 전문용어입니다. 간단히 설명하자면, 코드의 재사용이나 생산성 향상을 목적으로 다시 쓴 코드를 의미합니다. 광범위한 의미로는, 가능한한 개량된 코드를 &amp;quot;정리&amp;quot;해서 처리를 단순히 하는 것이라고도 말할 수 있습니다&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;width:60px;float:left;&amp;quot; | {{HeadImageCertifacate}}&lt;br /&gt;
| {{CincomSmalltalkGreenBigFont|이 튜토리얼의 마지막 레슨입니다. 코드를 리팩토링해서 불필요한 코드를 정리합니다. 이 레슨은 각 코드행을 설명해온 지금까지의 레슨과는 다릅니다. 이 레슨에서는 기존 메서드에 어떠한 개선이 이루어졌는가, 그리고 어째서 새로운 메서드를 작성할 필요가 있었는지를 확인합니다. 1행 1행 설명하지는 않습니다만, 전체적인 설명은 하겠습니다}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;width:60px;float:left;&amp;quot; | {{HeadImageDesign}}&lt;br /&gt;
| 이번에 하게되는 리팩토링에서는 아래와 같은 기능강화나 수정이 진행됩니다.&lt;br /&gt;
&lt;br /&gt;
# {{HighlightBold|getLogFiles}} 메서드는 로그파일의 일람을 돌려줍니다.&lt;br /&gt;
# 웹Hit 표시는 {{HighlightBold|Transcript}}에서 행하여지고 있습니다. 페이지 카운트는 파일에 기록되고 있습니다. 웹Hit도 파일로 기록하겠습니다.&lt;br /&gt;
# 어플리케이션이 재실행되기 전에 모든 &amp;quot;통계&amp;quot;파일을 삭제하는 제한은 제거합니다. &amp;quot;.log&amp;quot;의 필터에서 파일을 취득하지 않도록 출력 파일의 이름을 변경합니다.&lt;br /&gt;
# 두 개의 통계를 생성하는 &amp;quot;개시&amp;quot; 메서드는 공통화합니다.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;width:60px;float:left;&amp;quot; | {{HeadImageSteps}}&lt;br /&gt;
| 1. VisualWorks {{HighlightBold|메인 런쳐}} 화면에서 {{HighlightBold|툴바}}의 네 번째 버튼을 클릭하거나, {{HighlightBold|브라우저&amp;gt;&amp;gt;시스템}} 메뉴를 선택해주십시오.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. 패키지 창(맨 왼쪽)에서 XML패키지까지 일람을 스크롤해주십시오. 그리고 WebLogStats 패키지를 반전(선택)해주십시오.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CincomSmalltalkBlueFont|만일 {{HighlightBold|WebLogStats}} 패키지를 찾지 못한 경우에는 파일인할 필요가 있습니다. 이 레슨에서는 앞서 레슨에서 행했던 작업을 VisualWorks 개발환경에 로드할 필요가 있습니다.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. getLogFiles 메서드를 다음과 같이 바꿔주십시오.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
getLogFiles &lt;br /&gt;
&lt;br /&gt;
| workingDir contents xFound logFiles | &lt;br /&gt;
logFiles := Set new. &lt;br /&gt;
workingDir := logDirectory asFilename. &lt;br /&gt;
contents := workingDir directoryContents. &lt;br /&gt;
contents do: [ :each | &lt;br /&gt;
xFound := each findString: filter startingAt: 1. &lt;br /&gt;
xFound = 1 &lt;br /&gt;
ifTrue: [ logFiles add: each. ] ]. &lt;br /&gt;
^logFiles.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. &amp;lt;오퍼레이트 클릭&amp;gt;후 억셉트를 선택해주십시오.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CincomSmalltalkBlueFont|변경 이유는 매우 간단합니다. 오리지날 {{HighlightBold|getLogFiles}}와 {{HighlightBold|getLogFilesForPageCounts}} 메서드를 비교하면, 기본적으로는 같은 일을 합니다. 차이점은, Hit 계산에서 사용되는가, 페이지 카운트의 통계에서 사용되는가입니다. 이것은 여분의 코드이며, 좋은 것이 아닙니다. 메서드를 실행하는 지시가 실제로는 하나의 메서드가 아닌 것은 왜 일까요-{{HighlightBold|getLogFile}}? 위의 코드가 그것을 하고 있습니다. 필터에 의해 디렉토리에 있는 파일을 모아 {{HighlightBold|Set}} 객체에 격납합니다. 이로서 재사용 가능한 메서드가 되었습니다. 메서드가 다른 메서드를 잘 이해할 필요는 없습니다.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CincomSmalltalkBlueFont|재사용 가능 개념에 대해 요약할 필요는 없겠지요. 얼마나 많은 사람이 이 사이트에 방문했는지, 로그파일을 검색하는 다른 루틴이 필요하다는 가정을 합니다. 그 경우, {{HighlightBold|getLogFiles}} 메서드나 {{HighlightBold|getLogFilesForPageCounts}} 메서드의 클론을 작성했던 것 처럼, {{HighlightBold|showHit}}나 {{HighlightBold|showPageCounts}} 어느쪽인가를 참조하고있는 행을 변경하여, {{HighlightBold|getDutationTimes}}와 같은 무언가로 치환합니다. 여기서 문제가 발생합니다. 웹마스터가 로그파일을 복수의 디렉토리에 보존하기로 결정했다고 가정(의논 목적으로)합니다. 그리고, 이로인해 세 개의 메서드 변경을 강요받습니다. 위에서 논한 작업을 하기 위한 메서드 코딩을 하나의 메서드를 변경하는 것으로 끝내려 합니다.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CincomSmalltalkBlueFont|마지막 주의 : 필터에 일치하지만 로그파일이 아닌 파일을 읽어들이는 문제를 피하기 위해서 {{HighlightBold|xFound}}의 조건을 &amp;quot;0보다 큰&amp;quot;에서 0과 동일한으로 변경합니다. 조건은 1의 위치에서 {{HighlightBold|ws00}}문자열을 검색하는 상태입니다. 다른 메서드에서 페이지 카운트가 포함되어있는 파일명의 일부로서 자신의 이름({{HighlightBold|ws00}}문자열을 포함)을 파일에 사용하고 있습니다. &amp;quot;0보다 큰&amp;quot;은 필요 없는 참이 되돌아옵니다.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. 새로운 메서드를 작성합니다. 다음과 같이 메서드 코드 패널의 텍스트를 치환해주십시오.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
getRootName: aFile &lt;br /&gt;
| line | &lt;br /&gt;
line := aFile copyUpTo: $.. &lt;br /&gt;
^line.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. {{HighlightBold|&amp;lt;오퍼레이트 클릭&amp;gt;}}후 {{HighlightBold|Accept}}를 선택해주십시오.&lt;br /&gt;
&lt;br /&gt;
{{CincomSmalltalkBlueFont|로그파일 이름({{HighlightBold|ws000101.log}})은 이 메서드에 건내어집니다. 파일이름은 {{HighlightBold|String}} 객체이기 때문에 문자열 조작이 가능합니다. 여기서는 파일 이름에서 확장자 &amp;quot;.log&amp;quot;를 삭제한 파일명이 필요하기 때문에, .까지의 문자열을 돌려줍니다. 이 작업에 의해 파일 이름에서 &amp;quot;.log&amp;quot;를 삭제하여, 의미있는 출력파일 이름에 문자를 추가하기 쉬워집니다.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. {{HighlightBold|showPageCount:}} 메서드를 선택하고 다음과 같이 바꿔주십시오.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
showPageCounts: aFile &lt;br /&gt;
&lt;br /&gt;
| stream line bag xFound sort | &lt;br /&gt;
bag := Bag new. &lt;br /&gt;
stream := (logDirectory, &amp;#039;\&amp;#039;, aFile) asFilename readStream. &lt;br /&gt;
[ stream atEnd ] whileFalse: [ &lt;br /&gt;
line := stream upTo: Character cr. &lt;br /&gt;
line := line copyFrom: 50 to: line size. &lt;br /&gt;
line := line copyFrom: (line indexOf: $/) to: line size. &lt;br /&gt;
line := line copyUpTo: $,. &lt;br /&gt;
xFound := (line findString: &amp;#039;.asp&amp;#039; startingAt: 1). &lt;br /&gt;
xFound &amp;gt; 0 &lt;br /&gt;
ifTrue:[ bag add: line. ]. ]. &lt;br /&gt;
stream close. &lt;br /&gt;
sort := SortedCollection sortBlock: [:a :b| a &amp;gt;= b]. &lt;br /&gt;
bag valuesAndCountsDo: [ :each :count | &lt;br /&gt;
sort add: (Association key: count value: each)]. &lt;br /&gt;
^sort&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. {{HighlightBold|&amp;lt;오퍼레이트 클릭&amp;gt;}}후 {{HighlightBold|Accept}}를 선택해주십시오.&lt;br /&gt;
&lt;br /&gt;
{{CincomSmalltalkBlueFont|출력 파일을 생성하는 코드를 삭제하고, 정렬된 컬렉션을 돌려주는 행에 치환합니다. 그 외의 메서드에서 외부파일에 컬렉션을 써냅니다.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. 다른 신규 메서드를 작성합니다. 다음과 같이 바꿔주십시오.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
startHits &lt;br /&gt;
&lt;br /&gt;
| logFiles myHits count out outFile| &lt;br /&gt;
myHits := SortedCollection new. &lt;br /&gt;
logFiles := self getLogFiles. &lt;br /&gt;
logFiles do: [ :each | &lt;br /&gt;
outFile := &amp;#039;웹sitehits.txt&amp;#039;. &lt;br /&gt;
count := self showHits: each. &lt;br /&gt;
myHits add: (Association key: count value: each). ]. &lt;br /&gt;
out := (logDirectory, &amp;#039;\&amp;#039; , outFile) asFilename writeStream. &lt;br /&gt;
myHits do: [ :each | out cr; nextPutAll: (each printString).]. &lt;br /&gt;
out close. &lt;br /&gt;
Dialog warn: &amp;#039;Site hits complete&amp;#039;.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. {{HighlightBold|&amp;lt;오퍼레이트 클릭&amp;gt;}}후 {{HighlightBold|Accept}}를 선택해주십시오.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CincomSmalltalkBlueFont|{{HighlightBold|Association}}을 포함한 {{HighlightBold|myHits}}라 불리우는 새로운 컬렉션을 생성합니다. 로그파일과 로그파일에서 얻은({{HighlightBold|count}}) Hit수를 연결합니다. 모든 로그파일이 처리되면, 컬렉션을 외부 파일로 출력하기 위한 준비가 됩니다.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. {{HighlightBold|startPageCount}} 메서드를 선택해주십시오. 이 메서드로의 변경은 매우 광범위하기 때문에 아래와 같은 메서드로 만드는 것이 가장 좋습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
startPageCount &lt;br /&gt;
&lt;br /&gt;
| logFiles count rootName out | &lt;br /&gt;
logFiles := self getLogFiles. &lt;br /&gt;
logFiles do: &lt;br /&gt;
[ :each | &lt;br /&gt;
rootName := &amp;#039;pagecounts_&amp;#039;, (self getRootName: each) , &amp;#039;.txt&amp;#039;. &lt;br /&gt;
count := self showPageCounts: each. &lt;br /&gt;
out := (logDirectory, &amp;#039;\&amp;#039; , rootName) asFilename writeStream. &lt;br /&gt;
1 to: 10 do: [ :xx | out cr; nextPutAll: (count at: xx) printString.]. &lt;br /&gt;
out close. &lt;br /&gt;
]. &lt;br /&gt;
Dialog warn: &amp;#039;Page Counts Complete&amp;#039;.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
12. {{HighlightBold|&amp;lt;오퍼레이트 클릭&amp;gt;}}후 {{HighlightBold|Accept}}를 선택해주십시오.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
모든 로그파일에 대해, &amp;quot;.log&amp;quot;에서 취득해서 &amp;quot;.txt&amp;quot;와 그 접두어로서 &amp;quot;pagecount_&amp;quot;로 치환합니다. &amp;quot;필터&amp;quot;문자를 가지지 않는, 중복되지 않는 파일명을 생성합니다. 그리고 페이지 카운트를 취득하는 메서드를 부르고, 정렬된 컬렉션이 돌아와 {{HighlightBold|count}}에 격납됩니다. 이어서 외부 파일에 컬렉션 맨 처음 10가지 요소를 써냅니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
13. 다음과 같이 {{HighlightBold|start}} 메서드를 수정해주십시오.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
start &lt;br /&gt;
&lt;br /&gt;
filter := (Dialog request: &amp;#039;필터를 입력해주십시오&amp;#039; &lt;br /&gt;
initialAnswer: &amp;#039;ws00&amp;#039;).&lt;br /&gt;
(filter size) &amp;gt; 0&lt;br /&gt;
ifTrue: [ self startHits.&lt;br /&gt;
self startPageCount.&lt;br /&gt;
Dialog warn: &amp;#039;모든 통계를 실행하였습니다&amp;#039;. ]&lt;br /&gt;
ifFalse: [ Dialog warn: &amp;#039;이상없음, 안녕히계십시오&amp;#039;].&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
14. {{HighlightBold|&amp;lt;오퍼레이트 클릭&amp;gt;}}후 {{HighlightBold|Accept}}를 선택해주십시오&lt;br /&gt;
&lt;br /&gt;
이 메서드는 필터를 요구합니다. 입력하면 통계를 수집하는 두 개의 메서드를 호출합니다. 지금까지 두 개의 메서드에서 사용된 필터의 요구였습니다만, 지금은 하나로 만들었습니다. 이것은 매우 좋은 작업입니다. 예를 들어, 웹마스터가 로그파일의 확장자를 &amp;quot;log&amp;quot;에서 &amp;quot;.wlg&amp;quot;로 변경하고 싶다고 가정합시다. 예전 같았으면, 두 개의 메서드 프롬프트 표시에 대해 변경하지 않으면 안되었습니다.&lt;br /&gt;
&lt;br /&gt;
필터를 입력하면 {{HighlightBold|Cancel}}을 실행할 수 없습니다. 양쪽 다 통계 메서드를 호출합니다. 이 코드들 가운데 새로운 내용은 한 가지밖에 없습니다. 전형적인 &amp;quot;If-Then-Else&amp;quot;구문의 예시입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
15. VisualWorks 표준 디렉토리의 모든 &amp;quot;.stat&amp;quot;필터가 삭제된 것을 확인해주십시오. &amp;quot;.stat&amp;quot;필터가 남아있으면 에러가 발생합니다. {{HighlightBold|startPageCount}}메서드 안의 이 문제를 해결했기에, 삭제하는 작업은 맨 마지막이 될것입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
WebLogClass new start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
모든 텍스트를 반전시키고 {{HighlightBold|&amp;lt;오퍼레이트 클릭&amp;gt;}}후 {{HighlightBold|실행}}을 선택해주십시오.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{CincomSmalltalkBlueFont|이 코드는 웹Hit와 페이지 카운트 통계파일을 생성합니다. 그리고 다이얼로그 박스가 진행상태를 보고합니다.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
16. {{HighlightBold|파일 브라우저}} 다이얼로그 박스를 열고 로그파일이 있는 장소로 이동해주십시오. 내용을 확인할 수 있습니다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
17. 지금까지의 작업을 보존합니다. 보존 방법을 잊어버렸다면 레슨 8을 참조해주십시오.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right;width:60px;float:left;&amp;quot; | {{HeadImageCertifacate}}&lt;br /&gt;
| &amp;lt;font style=&amp;quot;text-align:center;font-weight:bold; font-style: normal;font-size:110%;&amp;quot;&amp;gt;정리&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{HighlightBold|리팩토링}}은 재사용 가능하도록 코드를 개선합니다. 눈에 띄는 성과중 하나로서, {{HighlightBold|getLogFile}}메서드에 대한 수정이 있었습니다. 많은 작업에 대해 작은 변경을 하는 것으로 인해, 두 가지 메서드를 재사용 가능하게 만들었습니다. 예전과 같은 상태였다면, 사이트에 몇 명이 방문했는지 조사하는 코드를 적고, 모든 로그파일 가운데서 정보를 뽑아낼 필요가 있었습니다. 리팩토링 작업 덕분에, 이 작업에 있어서 {{HighlightBold|getLogFiles}}를 사용(재사용)할 수 있었습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
리팩토링 작업이 끝은 아닙니다. 누군가 당신의 코드를 보고, 그 메서드보다 더욱 효율적인 코드를 적을지도 모릅니다. 예를 들어 아래의 {{HighlightBold|getRootName:}} 메서드를 생각해 봅시다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
getRootName: aFile &lt;br /&gt;
&lt;br /&gt;
| line | &lt;br /&gt;
line := aFile copyUpTo: $.. &lt;br /&gt;
^line.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
이 코드는 아래와 같이 수정할 수 있습니다&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
getRootName: aFile &lt;br /&gt;
&lt;br /&gt;
^aFile copyUpTo: $..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
이것은 눈에 띌만한 수정(템퍼러리 변수의 선언은 필요 없었습니다. 그 덕분에 앞의 메서드보다 이 메서드가 적은 메모리로 작업할 수 있습니다)입니다. 가능하다면 수정해주십시오. 재차 말씀드립니다만, 메서드를 간결하게 적는 것은 Smalltalk의 특징이자 &amp;quot;문화&amp;quot;입니다.&lt;br /&gt;
&lt;br /&gt;
이것으로 웹서버 로그해석 연습을 끝내겠습니다. 수고하셨습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{HighlightBold|아래와 같은 내용을 학습하였습니다}}&lt;br /&gt;
* 보다 효율적으로 재사용 가능한 코드를 적는 법&lt;br /&gt;
* 전형적인 “If-Then-Else”구문의 코드&lt;br /&gt;
* 특정 메서드에서 다은 메서드로 데이터를 건내는 방법&lt;br /&gt;
|- style=&amp;quot;text-align:center;font-weight:bold; font-style: normal;font-size:120%;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&amp;lt;hr style=&amp;quot;color:black;background-color:black;height:4px;&amp;quot;&amp;gt; | 목차 | 레슨10 | 정리 |&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>