VisualWorksTutorial1:Page04: Difference between revisions
Jump to navigation
Jump to search
Onionmixer (talk | contribs) (draft) |
Onionmixer (talk | contribs) (오타수정) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{CincomTop|{{CincomSmalltalkHeadBanner|웹로그 통계 레슨 | {{CincomTop|{{CincomSmalltalkHeadBanner|웹로그 통계 레슨 3|외부파일 억세스}}}} | ||
{| style="border: none; width:100%;" | {| style="border: none; width:100%;" | ||
|- style="text-align:center;font-weight:bold; font-style: normal;font-size:110%;" | |- style="text-align:center;font-weight:bold; font-style: normal;font-size:110%;" | ||
| colspan="2" | | 목차 | | | colspan="2" | | 목차 | 레슨2 | 레슨4 |<hr style="color:black;background-color:black;height:4px;"> | ||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageOpenbook}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageOpenbook}} | ||
Line 9: | Line 9: | ||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageCertifacate}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageCertifacate}} | ||
| {{CincomSmalltalkGreenBigFont| | | {{CincomSmalltalkGreenBigFont|이 레슨에서는 우선 로그파일이 있는 곳을 찾습니다. 그리고 그것을 열고 {{HighlightBold|VisualWorks}}에 그 내용을 가져온 후에 파일을 닫는 방법을 설명하겠습니다.}} | ||
이 레슨에서는 우선 로그파일이 있는 곳을 찾습니다. 그리고 그것을 열고 | |||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageLightbulb}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageLightbulb}} | ||
Line 19: | Line 18: | ||
2. VisualWorks 메인 런쳐 화면에서 툴바에 있는 맨끝 버튼을 클릭, 혹은 Tool>>Workspace 메뉴를 선택해주십시오. | 2. VisualWorks {{HighlightBold|메인 런쳐}}화면에서 툴바에 있는 맨끝 버튼을 클릭, 혹은 {{HighlightBold|Tool>>Workspace}} 메뉴를 선택해주십시오. | ||
3. 작업공간에 아래와 같이 입력해주십시오 | 3. 작업공간에 아래와 같이 입력해주십시오 | ||
<syntaxhighlight lang="smalltalk"> | |||
'ws000101.log' | |||
</syntaxhighlight> | |||
4. 텍스트를 반전시키고 <오퍼레이트 클릭>후 | 4. 텍스트를 반전시키고 {{HighlightBold|<오퍼레이트 클릭>}}후 {{HighlightBold|Inspect}}를 선택해주십시오. | ||
{{CincomSmalltalkBlueFont|새롭게 복수의 탭이 있는 화면이 표시됩니다.( | {{CincomSmalltalkBlueFont|새롭게 복수의 탭이 있는 화면이 표시됩니다.(Inspector 화면) {{HighlightBold|a ByteString}}(화면 타이틀)은 디폴트로 {{HighlightBold|Text}} 탭을 표시합니다. 다른 탭에 관해서는 다음 레슨에서 설명하겠습니다.}} | ||
[[image:cincom_tutorial1_fig31.gif|none|770px|thumb|그림3-1. VisualWorks 인스팩터 화면의 바이트 문자열]] | [[image:cincom_tutorial1_fig31.gif|none|770px|thumb|그림3-1. VisualWorks 인스팩터 화면의 바이트 문자열]] | ||
{{CincomSmalltalkBlueFont|반전시킨 문자열에 주목합니다. 이것은 single quotes로 둘러싸인 문자열을 인스팩트(조사)하듯 Smalltalk에 전달하여, 그 결과를 바이트 | {{CincomSmalltalkBlueFont|반전시킨 문자열에 주목합니다. 이것은 single quotes로 둘러싸인 문자열을 인스팩트(조사)하듯 Smalltalk에 전달하여, 그 결과를 {{HighlightBold|바이트 문자열}}로 표시하였습니다. 컴퓨터이기에 전달 받은 그대로 실행했을 뿐입니다. Smalltalk는 표시된 내용의 문자열이 컴퓨터 파일을 의미한다고 생각하지 않습니다. 만일 문자열에 의미를 부여하려 한다면 Smalltalk에 지시할 필요가 있습니다.}} | ||
5. 인스팩터 화면을 닫고 아래와 같이 행을 변경해주십시오 | |||
<syntaxhighlight lang="smalltalk"> | |||
'ws000101.log' asFilename | |||
</syntaxhighlight> | |||
6. 이 텍스트를 반전시키고 {{HighlightBold|<오퍼레이트 클릭>}}후 Inspect를 선택해주십시오. | |||
{{CincomSmalltalkBlueFont|두 가지 뷰를 가진 {{HighlightBold|Inspector}}화면이 표시됩니다. 이때 윈도우의 타이틀이 아까와는 다르다는 점에 주목해주십시오. 예를 들자면, WindowsNT의 경우는 {{HighlightBold|a NTFSFilename}}, Linux/UNIX의 경우엔 {{HighlightBold|a UnixFilename}}로 표시됩니다. Windows 9X에서는 {{HighlightBold|a FatFilename}}로 표시됩니다. Smalltalk가 이 문자열을 Filename로서 "인식하고 있다는" 증거입니다.}} | |||
[[image:cincom_tutorial1_fig32.gif|none|496px|thumb|그림 3-2. 지정파일을 비주얼월스 인스팩터 화면에서 표시]] | |||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageLightbulb}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageLightbulb}} | ||
| | | {{HighlightBold|Inspector}}화면이 표시되지 않는 경우, 위에 적혀있는것과 비교해 문자에 오타가 없는지 확인해주십시오. Smalltalk는 대, 소문자 구분을 합니다. 그리고, {{HighlightBold|asFilename}} 메시지는 아래와 같이 입력해도 오류가 납니다. | ||
* "as File name" | |||
* "as Filename" | |||
* "as file name" | |||
* "asfilename" | |||
* "asFileName" | |||
{{HighlightBold|asFilename}}메시지는 문자열에서 {{HighlightBold|Filename}}객체로 변환하기 위한 {{HighlightBold|String}}클래스의 인스턴스 메서드입니다. 위의 예시문과 비슷하지만 정확한 메서드는 {{HighlightBold|asFilename}}입니다. 메서드명은 공백을 포함할 수 없기 때문에 처음에 나온 세 가지 예는 논외입니다. 마지막 두 가지는 유사하지만 메서드명을 정확하게 기술하지 않으면 동작하지 않습니다 | |||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageDesign}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageDesign}} | ||
| | | <span style="font-weight:bold;font-style: normal; font-size:120%;color:blue;">중요합니다</span> | ||
이 튜토리얼은 {{HighlightBold|어떠한 OS에도 존재하지 않습니다}}. 때문에, 이 번 장에서 나오는 샘플코드를 바르게 작동시키기 위해서는 파일 위치나 VisualWorks 홈디렉토리 위치를 절대경로로 지정할 필요가 있습니다. | |||
Temporary 디렉토리에 이 파일들을 저장할 경우, 이 로그파일에 억세스 하기 위해서 윈도우는 {{HighlightBold|c:\temp\ws000101.log}}와 같이 지정합니다. Linux/UNIX에서는 {{HighlightBold|/usr/tmp/ws000101.log}}와 같이 지정합니다. 하지만 샘플코드는 OS에 의존하지 않도록 하기 위해, OS에 따라 다른 방법을 사용한다거나 절대경로를 기술하지 않겠습니다. 이후, 이 파일이나 다른 파일로 참조를 요구받았을 때, 샘플코드에서는 이 파일명({{HighlightBold|ws000101.log}})을 사용하겠습니다. 하지만 VisualWorks "표준 디렉토리"에 파일을 배치하지 않은 경우에는 파일로 절대경로를 지정할 필요가 있습니다. | |||
VisualWorks "표준 디렉토리"를 설정하는 간단한 방법은 VisualWorks {{HighlightBold|메인 런쳐}}화면에서, {{HighlightBold|File>>File Browser}} 메뉴를 선택합니다. 아래 그림과 같이 다이얼로그 박스가 표시됩니다. | |||
[[image:cincom_tutorial1_fig83.gif|none|518px|thumb|그림 3-3. 반전표시된 VisualWorks "표준 디렉토리"]] | |||
이것은 {{HighlightBold|File Browser}} 화면입니다. 이 화면의 사용 방법은 다음 레슨에서 배우겠습니다만, 왼쪽 뷰에서 반전된 디렉토리에 주목해 주시기 바랍니다. 이것은 VisualWorks "표준 디렉토리"의 이름을 표시합니다. 이 예시에서는 윈도우계열 시스템이 사용되었으며, VisualWorks "표준 디렉토리"는 {{HighlightBold|c:\vw7.7\image}}입니다. 이 튜토리얼을 작성하는 동안 로그파일을 위치시킨 곳입니다. | |||
VisualWorks "표준 디렉토리"는 VisualWorks "홈 디렉토리"와는 다르니 헛갈리지 마십시오. | |||
* "표준 디렉토리" 는 VisualWorks가 파일을 최초로 검색하는 디렉토리입니다. | |||
* "홈 디렉토리" 는 VisualWorks가 인스톨된 루트 디렉토리입니다. | |||
"홈 디렉토리"는 VisualWorks가 적절히 기능하도록 바르게 설정할 필요가 있습니다. | |||
그러면, VisualWorks "홈디렉토리"가 어떻게 설정되어있는지 알아봅시다. | |||
{{HighlightBold|File Browser}}화면을 닫아주십시오. | |||
VisualWorks "홈"디렉토리를 찾아보기 위해서는 VisualWorks {{HighlightBold|메인 런쳐}} 화면의 {{HighlightBold|File>>VisualWorks Home Settings}} 을 선택해주십시오. | |||
[[image:cincom_tutorial1_vwhome1.gif|none|530px|thumb|그림 3-4. 파일 메뉴에서 VisualWorks Home Settings를 선택]] | |||
[[image:cincom_tutorial1_vwhome2.gif|none|565px|thumb|그림 3-5. 이 화면에서 VisualWorks "홈디렉토리"를 설정/확인합니다.]] | |||
{{CincomSmalltalkBlueFont|이 예시에서 VisualWorks의 "홈디렉토리"는 {{HighlightBold|c:\vw7.7}}입니다.(윈도우 환경) 이것은 "표준" 디렉토리와는 다른 디렉토리입니다. 로그파일은 "표준 디렉토리"({{HighlightBold|c:\vw7.7\image}})에 둘 필요가 있습니다. 그러므로 인해, 이 튜토리얼에서 {{HighlightBold|로그파일}}지정을 절대경로로 할 필요가 없어집니다. 즉, 경로 지정이 필요 없습니다.}} | |||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageSteps}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageSteps}} | ||
| | | 7. 인스팩터 화면을 닫아주십시오. | ||
{{CincomSmalltalkBlueFont|문자열이 파일이라는 것을 Smalltalk에게 지시하는 방법을 이해했습니다. 그러면 좀 더 파고들어 봅시다.}} | |||
8. 아래와 같이 작업공간의 내용을 수정해주십시오. | |||
<syntaxhighlight lang="smalltalk"> | |||
| myFile | | |||
myFile := 'ws000101.log' asFilename. | |||
myFile fileSize. | |||
</syntaxhighlight> | |||
9. 텍스트를 반전시키고 {{HighlightBold|<오퍼레이트 클릭>}}후 {{HighlightBold|Inspect}}를 선택해주십시오. | |||
{{CincomSmalltalkBlueFont|{{HighlightBold|Inspect}} 화면이 표시됩니다. {{HighlightBold|Self}}값은 69072입니다. 여기서 두 가지를 검증하겠습니다. 첫 번째는 존재하는 파일을 가르키고 있는지, 두 번째는, 이 연습을 위한 파일을 가르키고 있는지 입니다. {{HighlightBold|Inspector}}화면이 표시되지 않는지, {{HighlightBold|Inspector}}화면에 69072라고 표시되지 않는 경우, {{HighlightBold|ws000101.log}}가 존재하는 곳을 가르키고 있는지 확인해주십시오.}} | |||
[[image:cincom_tutorial1_fig33.gif|none|449px|thumb|그림 3-6. VisualWorks 인스팩터 화연에 파일 사이즈를 표시]] | |||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageQuestion}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageQuestion}} | ||
| | | <span style="font-weight:bold;font-style: normal; font-size:100%;color:black;">만약 아래와 같은 다이얼로그 박스가 나타난 경우의 대처법은?</span> | ||
[[image:cincom_tutorial1_fig33a.gif|none|449px|thumb|그림 3-7. 악명 높은 노티파이 다이얼로그 박스(Notify dialog box)]] | |||
이것은 두 가지 좋지 않은 의미가 있습니다. 이곳에서의 목적은 VisualWorks가 로그파일에 억세스할 수 있는가를 확인하는 것입니다. {{HighlightBold|ERROR_FILE_NOT_FOUND}}메시지에서 추측 하건데, 다이얼로그 박스는 VisualWorks가 지정파일을 발견하지 못했다는 것을 나타내고 있습니다. 그 이유로 두 가지 경우를 생각해 볼 수 있습니다. | |||
1) 로그파일이 VisualWorks "표준 디렉토리"에 없다<br> | |||
2) 대, 소문자 구분 | |||
처음 상황을 해결하기 위해서 VisualWorks의 "표준 디렉토리"에 이 파일이나 그 외의 "log"파일이 있는지 확인합시다. VisualWorks "표준 디렉토리"를 확인하는 간단한 방법은 VisualWorks {{HighlightBold|메인 런쳐}}화면에서 {{HighlightBold|File>>File Browser}} 메뉴를 선택합니다. 파일 브라우저가 맨 처음 나타내는 곳이 로그파일을 보관해야만 하는 곳입니다. | |||
[[image:cincom_tutorial1_fig33b.gif|none|583px|thumb|그림 3-8. VisualWorks "표준 디렉토리"의 로그파일을 표시(소문자)]] | |||
그러면 작업공간으로 돌아가 다시 시작합시다. 만일 VisualWorks의 “표준” 디렉토리로 로그파일을 이동시켜도 이 에러가 뜨는 경우 대, 소문자가 원인일 수 있습니다. 로그파일 이름은 전부 소문자로 해주십시오.(다시 확인해주십시오) 위의 샘플 코드는 소문자({{HighlightBold|ws000101.log}})로 파일 이름을 표기했습니다. 만일 Linux나 UNIX를 OS로 쓰는 경우 이것이 원인일 수도 있습니다. OS에 의한 개별적인 원인을 확인할 수 없다면 작업공간에 아래와 같이 입력해주십시오. 그리고 텍스트 전부를 반전시키고 {{HighlightBold|<오퍼레이트 클릭>}}해서 {{HighlightBold|Print}}를 선택해주십시오. | |||
<syntaxhighlight lang="smalltalk"> | |||
Filename isCaseSensitive | |||
</syntaxhighlight> | |||
{{HighlightBold|True}} 혹은 {{HighlightBold|False}}, 둘 중에 하나가 돌아옵니다. 만일 {{HighlightBold|True}}라면 기술한 파일 이름({{HighlightBold|ws000101.log}})이 시스템에 보존되어있는 로그파일 이름과 {{HighlightBold|완전히 일치}}하는지 확인해주십시오. | |||
그러면 작업공간으로 돌아가서 다시 시작합시다. 로그파일에 억세스하는 경우에는 수많은 주의점에 신경써주십시오. | |||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageQuestion}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageQuestion}} | ||
| | | <span style="font-weight:bold;font-style: normal; font-size:100%;color:black;">그러면 이 코드를 하나하나 분석해보겠습니다</span> | ||
<div style="width:100%; background-color:cyan; border:0; font-style: normal; padding:5px 5px 5px 5px;"><span style="font-weight:bold;color:green;font-size:120%">| myFile |</span></div> | |||
{{CincomSmalltalkBlueFont|맨 처음 행은 템퍼러리 변수(가변수, 일시변수)를 선언하고 있습니다. 템퍼러리 변수는 세로줄로 둘러싸여 있습니다. 변수 이름에는 스페이스를 포함할 수 없습니다. 일반적으로 변수 이름은 내용을 나타내며 의미 있는 단어로 씁니다. 절대 축약해서 쓰지 않습니다. 변수 이름에 복수의 단어가 포함되는 경우(위의 myFile : my와 file) 첫 단어는 소문자로 시작하며, 다음 단어부터는 첫 문자만 대문자로 씁니다. 이후 레슨에서 좀 더 자세한 네이밍 규약에 대해 설명하겠습니다.}} | |||
<div style="width:100%; background-color:cyan; border:0; font-style: normal; padding:5px 5px 5px 5px;"><span style="font-weight:bold;color:green;font-size:120%;">myFile := 'ws000101.log' asFilename.</span></div> | |||
{{CincomSmalltalkBlueFont|2행째는 웹서버 로그파일을 참조하는 파일명을 템퍼러리 변수에 대입합니다. 이후 연습에서는 이 파일을 자주 참조합니다. 템퍼러리 변수를 사용하면 작업이 손쉬워집니다. 이 방법으로 인해, 프로그램에서 몇 번이고 {{HighlightBold|ws000101.log asFilename}}을 기술할 필요가 없어집니다.}} | |||
<div style="width:100%; background-color:cyan; border:0; font-style: normal; padding:5px 5px 5px 5px;"><span style="font-weight:bold;color:green;font-size:120%">myFile fileSize.</span></div> | |||
{{CincomSmalltalkBlueFont|세 번째 행은 다른 언어에서는 일반적이지 않을 수도 있습니만Smalltalk에서는 전형적인 식입니다. {{HighlightBold|myFile}} 객체는 2행째에서 작성되어 있습니다. 그리고 {{HighlightBold|myFile}}에 파일 크기를 바이트로 계산하는 {{HighlightBold|fileSize}} 메시지를 전달하고 있습니다. {{HighlightBold|Inspect}}를 선택했으니 이 값은 {{HighlightBold|Inspector}} 화면에 표시됩니다.}} | |||
아직 파일을 읽어오지 않았습니다만, 닫도록 합시다. | |||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageSteps}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageSteps}} | ||
| | | 10. 아래와 같이 텍스트를 수정해주십시오. 텍스트를 전부 반전<sub>(역자주.선택하라는 의미)</sub>시키고 {{HighlightBold|<오퍼레이트 클릭>}}후 {{HighlightBold|실행}}을 선택해주십시오. | ||
<syntaxhighlight lang="smalltalk"> | |||
| myFile | | |||
myFile := 'ws000101.log' asFilename. | |||
myFile edit. | |||
</syntaxhighlight> | |||
{{CincomSmalltalkBlueFont|여기서 주목할 부분은 새로운 화면이 표시되었으며, 이 파일의 내용이 파일 에디터에 표시되었다는 점입니다. 이름에서 나타나듯, 이 화면은 텍스트 에디터 기능을 가지고 있습니다. {{HighlightBold|notepad}}(윈도우)나 {{HighlightBold|vi}}(Linux/UNIX), {{HighlightBold|SimpleEdit}}(Mac)등과 같습니다.}} | |||
[[image:cincom_tutorial1_fig34.gif|none|556px|thumb|그림 3-9. VisualWorks의 파일 에디터에 의한 ws000101.log파일 표시]] | |||
11. VisualWorks의 {{HighlightBold|파일 에디터}}를 닫아주십시오. 그러면 파일은 자동적으로 Close(닫기) 처리 됩니다. | |||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageLightbulb}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageLightbulb}} | ||
| | | 만약 프로그래밍 경험이 있다면, 이전에 사용했던 언어와 Smalltalk를 비교하여 비슷한 부분에 주목하게 될지도 모릅니다. 예를 들어 대입문자(<span style="background-color:yellow;font-weight:bold;font-style:normal;">:=</span>)는 {{HighlightBold|Pascal}}에서 사용되는 것과 비슷합니다. 그리고 문(테스트먼트, 센텐스)의 마지막을 의미하는 피리오드는 마치 {{HighlightBold|COBOL}} 같습니다. 여기서는 누가 처음 사용했는가, 어디서 인용했는가를 논할 생각은 없습니다. 단지 Smalltalk언어의 몇 가지 키포인트를 파악하길 바라기 때문입니다. | ||
만일 프로그래밍 경험이 없다면 다음에서 말하는 부분을 기억해야할 필요가 있습니다. <span style="background-color:#66CC33;font-weight:bold;font-style:normal;">Smalltalk에서는 연속되는 식을 피리오드로 구분한다</span> 대입식은 Colon equal(<span style="background-color:yellow;font-weight:bold;font-style:normal;">:=</span>)을 사용합니다. 왜 이퀄 기호를 대입식으로 사용하지 않는지 알고픈 사람을 위해 짧게 말하자면, 이퀄은 동일한지 아닌지를 판단할 때 사용되기 때문입니다. Smalltalk에서는 <span style="background-color:yellow;font-weight:bold;font-style:normal;">x=3</span>이라는 문은 {{HighlightBold|x}}의 값에 의해 {{HighlightBold|True}}나 {{HighlightBold|False}}로 돌아옵니다. | |||
Smalltalk의 파일 에디터에 파일 내용이 표시되는 위의 {{HighlightBold|"3줄 프로그램"}}은, {{HighlightBold|Filename}}이라 불리우는 클래스의 인스턴스를 작성하고, 또한 {{HighlightBold|edit}}라 불리우는 메시지를 전달합니다. | |||
|- | |- | ||
| style="text-align:right;width:60px;float:left;" | {{HeadImageCertifacate}} | | style="text-align:right;width:60px;float:left;" | {{HeadImageCertifacate}} | ||
Line 70: | Line 208: | ||
* String을 Filename로 변환 | * String을 Filename로 변환 | ||
* 템퍼러리 변수를 선언 | * 템퍼러리 변수를 선언 | ||
* | * "colon equal"(<span style="background-color:yellow;font-weight:bold;font-style:normal;">:=</span>) 을 사용해서 변수에 값을 대입 | ||
* 복수의 Smalltalk식을 구분(피리오드를 사용해서) | * 복수의 Smalltalk식을 구분(피리오드를 사용해서) | ||
|- style="text-align:center;font-weight:bold; font-style: normal;font-size:120%;" | |- style="text-align:center;font-weight:bold; font-style: normal;font-size:120%;" | ||
| colspan="2" |<hr style="color:black;background-color:black;height:4px;"> | 목차 | | | colspan="2" |<hr style="color:black;background-color:black;height:4px;"> | 목차 | 레슨2 | 레슨4 | | ||
|} | |} |
Latest revision as of 06:14, 5 December 2012
웹로그 통계 레슨 3 |