이전 포스트에서 언급했던 Squeck에 대해서 간단한 예제를 작성해 보겠습니다. 이 예제는 squeakland.org에 있는 Drive a Car 예제를 기본으로 한글 Squeak에서 만들어 본 내용들이 입니다. 영어가 조금 되시는 분들은 원문 사이트를 보시는 것이 더 이해가 빠를 수도 있습니다.

squeak의 한국어 이미지 파일을 클릭하여 실행하면, 아래와 같은 화면을 보실 수 있습니다. 아래 화면은 맥에서 본 화일이며, 윈도우 환경 또는 다른 버젼에서는 많이 다른 모습으로 보여질 수 있습니다.
사용자 삽입 이미지
만약 영문으로 나오거나, 위의 모습과 틀리더라도 상관 없습니다. 기본적인 사용법은 똑 같으니, 조금만 살펴 보시면 해당 메뉴를 찾을 수 있습니다.


1. 자동차와 핸들 오브젝트 생성
1. 그림판 열기
사용자 삽입 이미지
스퀵을 실행하고 부품이나 안내자 등을 클릭하여 살펴 보면 그림판 또는 Paint Tool이라는 것이 있습니다. 이 아이콘을 더블클릭하거나 바탕의 화면으로 드래그 하면 간단한 페인트 툴이 나옵니다.


2. 자동차 그리기 및 저장
페인트 툴을 사용하여 아래와 같이 자동차를 하나 그립니다. 꼭 자동차일 필요는 없습니다 .비행기나 로켓트 등 움직이길 원하는 그림을 그리면 됩니다. 그림이 완성되면 우측에 보이는 KEEP 버튼을 클릭합니다. 그림판은 종료되고 자동차 오브젝트만 남습니다.
사용자 삽입 이미지

3. 핸들 그리기 및 저장
사용자 삽입 이미지
이제 핸들을 위해서 다시 그림판을 실행하고 좌측과 같이 핸들을 적당히 그립니다. 핸들도 자동차와 동일하게 그리기가 완료되면 KEEP 버튼을 클릭합니다.

좌측과 같이 이번 예제에 사용될 자동차와 핸들 두개의 오브젝트가 생깁니다.


2. 스크립트 생성

1. 스크립트 뷰어 오픈
사용자 삽입 이미지
이제 차에다 마우스 오른쪽 버튼을 클릭하면, 좌측과 같이 오브젝트 주위에 원모양의 작은 버튼 들이 나옵니다.

이 버튼들은 오브젝트 삭제, 크기 변경, 회전, 색상 선택, 디버깅 등 다양한 속성과 행동을 제어 할 수 있게 합니다. 왼쪽에서 세번째의 눈모양을 클릭하면 아래와 같은 스크립트 뷰어가 나옵니다.


2. 자동차 오브젝트 이름 변경
사용자 삽입 이미지
스크립트 뷰어에서 좌측과 같이 붉은 사각형 영역의 이름 부분을 더블 클릭하면, 이름을 수정할 수 있습니다. Sketch라고 기본으로 나온 이름을 삭제하고 자동차로 입력한 후 [Enter]를 칩니다.

좌측과 같이 자동차로 변경되어 있슴을 확인합니다.

3. 새로운 스크립트 생성
사용자 삽입 이미지
이제 자동차에 관한 새로운 스크립트를 만들기 위해, 좌측과 같이 [자동차][빈 스크립트]를 마우스로 드래그 하여 빈공간에 가져다 놓습니다.


4. 스크립트에 액션 설정
이제 아래과 같이 [자동차][소리내기], [자동차][진행하기], [자동차][돌기] 스크립트를 드래그 하여 빈 스크립트에 놓습니다. 이 상태에서 스크립트가 실행되면 자동차가 소리를 내면서 진행하며, 회전합니다.
사용자 삽입 이미지

5. 핸들 오브젝트 이름 변경
사용자 삽입 이미지
이번에는 핸들을 마우스 오른쪽 버튼을 클릭하고, 제어버튼들이 나오면 위와 같이 눈모양의 뷰어열기를 클릭합니다.

자동차와 같은 방법으로 Sketch1이라고 되어 있는 이름 부분을 클릭하여 핸들로 이름을 변경하여 줍니다.


6. 핸들을 이용한 회전 처리
핸들의 스크립트 중에 [핸들의][머리방향]을 드래그 하여 스크립트의 [자동차][돌기] 근처로 가져다 놓습니다. 아래와 같이 돌기 뒤의 숫자 블럭이 진한 녹색으로 변경되면, 그 자리에 [핸들의][머리방향]을 놓으면 결합됩니다. 결합된 모습은 하단에서 확인할 수 있습니다.
사용자 삽입 이미지

7. 동선 출력 설정
사용자 삽입 이미지
붉은 화살표가 가르키는 좌측의 아이콘은 현재 뷰어에서 보여지는 오브젝트 입니다. 오른쪽 파란 화살표가 가르키는 자동차를 클릭하여 자동차 스크립트를 오픈합니다.

사용자 삽입 이미지
기본으로 되어 있는 곳을 클릭하여 좌측과 같이 펜 사용을 선택합니다. [자동차의][펜 내리기]를 예로 선택합니다.

이제 자동차가 움직이는 동선으로 파란색의 선이 나타나게 됩니다. 펜 색깔, 두께, 스타일등을 변경해 가면서 실행해 봅니다.



3. 스크립트 실행
위의 스크립트를 실행하는 몇 가지 방법이 있습니다.
 
스크립트 왼쪽의 !   아이콘을 클릭하면 해당 스크립트가 클릭한 횟수 만큼 실행됩니다. 또 다른 방법은 아래와 같이 시계 아이콘을 클릭하면, 다시 시계를 클릭하여 멈출 때 까지 스크립트가 실행됩니다.

이제 시계 아이콘을 클릭하고, 핸들을 우클릭하여 좌측 하단의 회전 버튼을 클릭하여 핸들을 이리저리 돌려 보면 자동차가 핸들의 방향으로 진행하는 것을 확인할 수 있습니다.

사용자 삽입 이미지
AND

얼마전 애플에서 공개된 위젯 개발툴인 Dashcode를 다운 받고, 이제서야 실행을 해 보았습니다.

하지만 OS X를 10.4.10으로 버젼업 때문인지, 아니면 Dashcode의 영향인지 PPC  iMac에선 매우 불안정한 모습을 보이고 있습니다. Dashcode가 이유없이 다운된다던지, 응용프로그램 사용 중에 바람개비가 자주 나타납니다.

그 외에 Dashcode에서 타이틀 등에 한글을 사용하면 오동작을 하였습니다. 이 것도 지금 사용중인 제 맥만 그런 것인지 Dashcode 오류인지는 확인하지 못했습니다.

1. Dashcode 둘러보기

1) 다운로드 및 설치

Dashcode는 현재 베타 버젼으로 애플 ADC 홈페이지에서 다운로드 받을 수 있습니다. Xcode와 마찬가지로  ADC 회원만 다운로드 받을 수 있습니다.

사용자 삽입 이미지
설치를 완료하면 실행파일은  /Developer/Applications/ 에 위치 합니다. 좌측과 같이  Xcode와 유사한 Dashcode의 아이콘을 발견할 수 있습니다.



2) 실행

Dashcode를 실행하면, 아래와 같이 제공하는 템플릿들과 시작할 수 있는 윈도우가 나옵니다. 일반적인 위젯을 만들기 위해 Custom을 선택 합니다.
사용자 삽입 이미지


3) 둘러보기

사용자 삽입 이미지

Attribute
현재 선택된 오브젝트들의 속성과 이벤트를 설정할 수 있는 윈도우 입니다.
 
Library
사용가능한 UI,  텍스트, 이미지, 동영상등을 가지고 있는 팔레트 입니다. 이 곳에서 원하는 오브젝트를 드래그 해서, 위젯에 배치 합니다.

Main 윈도우
좌측에는 위젯에 사용된 오브젝트들의 목록이 있습니다. front는 일반적으로 보는 위젯의 앞면이며, back은 옵션을 설정을 하는 위젯의 뒷면입니다.

그 밑에는 위젯의 속성, 기본 이미지, 아이콘을 설정할 수 있는 버튼들이 있습니다.

사용자 삽입 이미지
하단에는 Workflow Steps 가 위치해 있으며, 위젯을 제작하는 작업이 순서대로 나와 있습니다.

좌측과 같은 순서로 위젯을 만들어 나가면 됩니다. 항목을 클릭하면 각각의 세부 작업을 확인할 수 있습니다.



 
2. 바이오리듬 위젯 제작

이제 간단하게 바이오리듬을 대충 만들어 보겠습니다. 이 예제는 Dashcode의 개략적인 사용법을 위한 예제입니다. 바이오리듬 계산 방법은 이 전에 다른 언어로 작성되어 있었던 소스를 자바스크립트로 변경하였습니다. 변경 후 정확한 값이 출력되는지는 확인하지 않았습니다.

우선 메뉴의 File/Save에서 ZBiorhythm으로 프로젝트를 저장하고 시작합니다. 프로젝트명은 개인의 취향대로 변경하시면 됩니다.


1) Front 화면 설정

기본으로 생성되어 있는 Hello World! 텍스트를 삭제합니다. 라이브러리 윈도우의 Parts 항목에서 canvas를 끌어다 아래와 같이 배치 합니다.
사용자 삽입 이미지

사용자 삽입 이미지
canvas 속성에서 크기를 180 X 120으로 설정합니다. 속성창은 오브젝트가 선택된 상태에서 상단의 [inspector] 버튼을 클릭하거나, 키보드에서 [option + command + i]를 같이 누르시면 됩니다.



사용자 삽입 이미지
이제 라이브러리 윈도우에서 텍스트를 위젯의 상단에 배치 합니다. 텍스트를 더블클릭하여 위젯의 이름을 입력합니다. 저는 위와 같이 ZBiorhythm이라고 이름 지었습니다.

사용자 삽입 이미지
그 다음 속성창에서 텍스트의 속성을 설정합니다. Style을 Bold로, Size는 12pt로 설정하였습니다. 타이틀, 스타일, 색상, 크기 등은 취향대로 선택하시면 됩니다.





사용자 삽입 이미지
Library Parts에서 텍스트를 세개 더 드래그해서 아래와 같이 배치 합니다. 위와 같이 해당 텍스트를 더블클릭하면 텍스트를 변경할 수 있습니다.

각각 Physical, Sensibility, Intellectual이라고 입력하고, 속성창에서 색상을 blue, red, green으로 지정해 줍니다. (처음에 말씀드린 것과 같이 한글을 입력하면 오류가 나서, 영문으로 하였습니다.)


Library Parts에서 Text Field를 세개 가지고 와서 좌측과 같이 배치하고, 크기를 조절합니다.  아래와 같이 속성창에서 ID를 위에서 부터 각각 bio0, bio1, bio2로 설정합니다.
사용자 삽입 이미지


2) Back 화면 설정

이제 좌측 오브젝트 목록에서 back을 클릭하여, 옵션을 설정할 수 있는 위젯의 뒷면을 만들어 보겠습니다. 라이브러리에서 텍스트 필드를 드래그로 back 화면으로 가지고 옵니다. Birthday로 타이틀을 변경하고, 잘 보일 수 있도록 속성창에서 색상을 white로 변경합니다.

그 하단에 세개의 텍스트 필드(Text Field)를 배치하여, 바이오리듬 계산을 위해 사용자의 생년월일을 입력 받도록 합니다. 첫번째 텍스트 필드부터 속성창의 ID를 각각 b_year, b_month, b_day로 설정합니다.
사용자 삽입 이미지

이제 Workflow Steps의 Lay out interface에 해당하는 작업을 완료하였습니다. 그 하단의 Add handlers & code 작업을 해보겠습니다.

3) 소스코드 작성

좌측 Workflow Steps 항목에서 Add handlers & code를 클릭하면 나타나는 Source code editor 왼쪽의 삼각형 아이콘을 클릭합니다. 아래와 같이 우측 하단에 소스창이 나옵니다.
사용자 삽입 이미지

현재 소스가 ZBiorhythm.js 임을 확인하시고, 아래의 내용을 상단에 입력합니다. 제목 그대로 Dashcode 맛보기 이므로, 자세한 설명 없이 간단한 주석으로 대체하겠습니다.
/***
* MyCode
**/
var MAX_TYPE = 3;  // 신체, 감성, 지성의 분류 갯수 설정
var PI = 3.14159;  // 바이오리듬 계산을 위한 원주율
var TDV = (60*60*24*1000); // 밀리세컨드(1/1000초)를 일로 환산하기 위한 값

var curDate = new Date(); // 오늘 날짜
var startDate = new Date(curDate.getYear(), curDate.getMonth(), 1); // 출력 시작일
var birthDate = new Date(); // 사용자 생년월일

/** bio_info - 바이오리듬 계산과 출력을 위한 정보
    23, 28, 33 -> 각각의 바이오리듬을 계산할 값
    ble, red, green -> 출력 색상
*/
var bio_info = new Array(MAX_TYPE);

bio_info[0] = new Array(23, "blue");
bio_info[1] = new Array(28, "red");
bio_info[2] = new Array(33, "green");

/*
바이오리듬 타입에 맞추어, 한달 치 배열값(해당 바이오리듬 값)을 반환한다.
idx -> 바이오리듬 타입 0-신체, 1- 감성, 2-지성
*/
function getBioData(idx)
{
    var data = new Array(31);

    var c_days = startDate.getTime()/TDV;
    var b_days = birthDate.getTime()/TDV;
    
    var cc = bio_info[idx][0];
    for(i = 0; i <= 30; i++)
    {
        var gab = c_days - b_days;
       
        var p = parseInt(Math.sin((gab/cc) * 2 * PI) * 100);
        data[i] = p;
       
        c_days++;
    }
    
    return data;
}

/** 바이오 리듬 출력 */
function showGraph()
{
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");
    
    context.lineWidth = 1.0;
    context.shadowBlur = 1;

    // 가로 기준선 출력    
    context.strokeStyle = "7f7f7f";
    context.moveTo(0, 60);
    context.lineTo(180, 60);
    context.stroke();

    // 세로 기준선 출력
    context.strokeStyle = "#efefef";
    for(i = 0; i <= 30; i++)
    {
        context.moveTo(i*6, 0);
        context.lineTo(i*6, 120);
       
        // 오늘 날짜일 경우에는 짙은 색으로 출력
        if(i == curDate.getDate() - 1)
            context.strokeStyle = "7f7f7f";

        context.stroke();
        if(i == curDate.getDate() - 1)
            context.strokeStyle = "#efefef";
    }
    
    // 바이오 리듬 출력
    context.lineWidth = 1.0;
    context.shadowBlur = 3;
    for(k = 0; k < MAX_TYPE; k++)
    {
        var data = getBioData(k);
        context.strokeStyle = bio_info[k][1];
        for(i = 0; i <= 30; i++)
        {
            context.moveTo(i * 6, (100 - data[i])/2 + 10);
            context.lineTo((i + 1) * 6, (100 - data[i+1])/2 + 10);
       
            context.stroke();
           
            // 오늘 날짜일 경우에는 입력창에 각각의 바이오리듬 값을 출력
            if(i == curDate.getDate() - 1)
            {
                document.getElementById("bio" + k).value = data[i];
            }
        }    
    }    
}

/* 사용자 생년월일을 세팅하고, 저장된 생년월일이 없으면 false를 반환한다. */
function setBirthDay()
{
    if(window.widget)
    {
        if(widget.preferenceForKey("b_day"))
        {
            birthDate.setYear(widget.preferenceForKey("b_year"));
            birthDate.setMonth(widget.preferenceForKey("b_month"));
            birthDate.setDate(widget.preferenceForKey("b_day"));
       
            return true;
        }
    }
    return false;
}

Dashcode가 생성해 준 소스에서 아래의 내용을 추가합니다.
function load()
{
    setupParts();
   
    // 사용자가 설정을 하지 않았을 경우, 설정창(back)으로 간다.
    if(setBirthDay() == false)
    {
        showBack(null);   
    }
}

function show()
{
    // your widget has just been shown.  restart any timers
    // and adjust your interface as needed
    showGraph();
}

function showBack(event)
{
    // your widget needs to show the back

    var front = document.getElementById("front");
    var back = document.getElementById("back");

    if (window.widget)
        widget.prepareForTransition("ToBack");

    front.style.display="none";
    back.style.display="block";
   
    if (window.widget)
    {
        setTimeout('widget.performTransition();', 0);
       
        /** 저장된 값이 있으면, 옵션의 입력필드에 설정 한다. */
        document.getElementById("b_year").value = widget.preferenceForKey("b_year");
        document.getElementById("b_month").value = widget.preferenceForKey("b_month");
        document.getElementById("b_day").value = widget.preferenceForKey("b_day");
    }
}

function showFront(event)
{
    // your widget needs to show the front

    var front = document.getElementById("front");
    var back = document.getElementById("back");

    if (window.widget)
        widget.prepareForTransition("ToFront");

    front.style.display="block";
    back.style.display="none";
   
    if (window.widget)
    {
        setTimeout('widget.performTransition();', 0);
   
        /** 사용자의 입력을 저장한다. */
        var b_year = document.getElementById("b_year").value;
        var b_month = document.getElementById("b_month").value;
        var b_day = document.getElementById("b_day").value;
       
        widget.setPreferenceForKey(b_year, "b_year");
        widget.setPreferenceForKey(b_month, "b_month");
        widget.setPreferenceForKey(b_day, "b_day");
    }
    /** 그래프를 출력한다. */
    showGraph();
}

사용자 삽입 이미지
이제 Add handlers & code까지 작업을 완료하였습니다. 작업이 완료 되면 좌측의 Workflow Steps에서 해당 항목의 [Make as Done]을 클릭하면 완료된 작업으로 표시됩니다.

현재 어디까지 작업이 되어 있는지 확인할 수 있습니다. 취소는 [Make as Not Done]을 클릭하시면 됩니다.


4)  위젯 설치 및 실행

다음은 Set attributes 작업입니다.  여기선 변경없이 기본설정 사항을 사용하겠습니다. Attributes 버튼을 클릭하시면, 설정사항을 확인할 수 있습니다.

다음은 Preview default image 입니다. default image는 위젯이 처음 로딩될  때나, 설치 확인 시 나오는 이미지 입니다. 다음은 아이콘 설정인데 이역시 모두 생략하겠습니다.

사용자 삽입 이미지
이제 위젯을 사용해 보도록 하겠습니다. 메뉴에서 File을 클릭하면 좌측과 같이 Deploy Widget... 메뉴가 있습니다. 이 메뉴는 작성한 위젯을 위젯 포맷에 맞추어 저장하여 줍니다. 저장된 위젯(디렉토리)을 압축하여 배포하시면 됩니다.

다음의 Deploy Widget to Dashboard... 는  위젯을 지금 사용중인 컴퓨터에 설치하여 줍니다.




Deploy Widget to Dashboard... 로 제 컴퓨터에서 실행해 본 모습니다. 역시 급조한 만큼 눈에 거슬리는 부분이 많이 있습니다.
사용자 삽입 이미지 사용자 삽입 이미지

사용자 삽입 이미지
대쉬보드 설정화면에서 하단을 보면, 좌측과 같이 ZBiorhythm의 아이콘이 보입니다. 아이콘을 설정을 하지 않았기 때문에 빈 아이콘으로 보입니다.

 


3. ToDo...
제가 Dashcode를 테스트 삼아 처음 사용해 보면서, 작업한 내역을 그대로 올렸기 때문에 실제 사용 시에는 문제가 작성될 수 있습니다. 아래의 몇 가지 사항들만 추가하면 실제로 사용할 수 있을 것 입니다.

1. 버그 확인 및 수정
버그 테스트 없이 한번 실행해 보고 올리는 것이라, 오류가 있을 수 있습니다.

2. 바이오리듬 데이터 확인
이전에 언급한대로 다른 언어로 되어 있는 내용을 옮겼기 때문에, 옮기는 중간에 오류가 있을 수도 있습니다.

3. 사용자 입력 확인
사용자 생일을 입력시, 숫자인지, 유효한 날짜인지, 모두 입력하였는지 확인하는 소스를 추가 합니다. Dashcode에서 Run할 때 랑 실제 위젯에서 입력창의 크기가 틀렸습니다. 역시 수정하지 않았습니다.

4. 그래프 디자인 변경
그래프 배경이나 바이오리듬 곡선등의 색상이나 바탕색, width 및 기타 설정 등을 조절합니다.

5. 날짜 변경
front에서 년월을  선택할 수 있도록 합니다.

이상 간단하게 둘러보기를 마치겠습니다. 저도 더 많이 사용해 보고, 어느 정도 알게되면 맛보기란 제목이 아닌 사용하기란 제목으로 다시 한번 제대로 된 위젯을 작성해 보겠습니다.
 
AND

맥은 unix를 기반으로 하고 있지만, 일반적인 사용자들은 맥을 터미널 환경에서 유닉스로 사용할 일이 거의 없습니다. 하지만 터미널을 이용하면 맥을 유닉스 답게 사용할 수 있고, UI 상에서는 접근할 수 없는 파일이나 디렉토리에 접근 할 수 있어 OS X의 구조를 이해하는데 도움이 됩니다.

C를 공부하시는 분들은 /usr/include 밑의 C 헤더파일 들에서 많은 정보를 얻으실 수 있습니다. C 강좌에서 include하는 stdio.h 파일도 여기에 있습니다.

이제 맥 터미널에서 한글 입출력을 가능하게 하고, 편리하게 사용할 수 있는 몇 가지 작업을 해 보겠습니다.

1. iTerm 다운로드 및 설정
맥에서는 기본적으로 터미널 어플리케이션을 제공합니다. 하지만 빈약한 기능과 한글 사용의 문제로 iTerm을 사용하시는 것이 좋습니다.

iTerm은 터미널에 비해 많은 기능을 가진 코코아로 작성된 맥용 공개 터미널 프로그램입니다. http://iterm.sourceforge.net/에서 iTerm의 최신 버전을 다운 받고 실행합니다.

Bookmarks 메뉴에서 Manage Profiles...를 실행합니다.  Terminal Profiles/Default에서 Type와 Encoding을 아래와 같이 설정합니다.
사용자 삽입 이미지

사용자 삽입 이미지
Bookmarks/Manage Bookmarks...를 실행하고, 하단의 연필 아이콘 버튼을 클릭하여 Display 속성과 필요한 속성들을 변경합니다.

저는 classic iTerm Large이 가장 보기 좋은 것 같아 이것으로 선택하였습니다.







2. vi
1) vi의 기본 사용법

유닉스 계열에서는 에디터로 vi와 emacs를 주로 사용합니다. emacs는 막강한 기능을 가졌지만, 사용법이 vi 보다 복잡하고 어렵기 때문에 여기서는 vi를 예로 들겠습니다.

터미널로 로그인을 하고, 프롬프트 상태에서 vi를 실행(vi [return]) 합니다. 처음 시작되면 아래와 같은 메세지 화면이 나올 것입니다.
사용자 삽입 이미지

vi는 기본적으로 키보드만 가지고 사용되기 때문에, 입력 모드와 명령 모드로 나누어져 동작합니다. 일단 vi를 종료해 보겠습니다. 명령행 모드는 [esc] 키를 누르면 실행됩니다.

사용자 삽입 이미지
처음 시작시 명령 모드 이기 때문에, ":"를 입력하면 vi 좌측 하단에 ": "가 출력됩니다.  이 때 vi를 종료하는 q를 입력하고 [return]을 치면 vi가 종료됩니다.



이번엔 파일을 하나 만들어 보겠습니다. > vi text.txt 로 vi를 실행합니다. 여기서 i를 입력하면 입력모드가 실행됩니다. 아직 한글은 제대로 입력되지 않기 때문에 영문과 숫자를 입력해 봅니다.

입력이 완료되면 [esc]를 눌러 명령 모드로 변경하고, 위와 같이 ":wq"를 입력하고 [return]을 입력합니다. wq는 파일을 저장하고 종료하라는 명령어입니다.

설정을 위한 아주 기본적인 명령어만 알아 보았습니다. vi는 이외에도 사용을 편리하게 해주는 많은 명령어들이 있습니다. 하지만 기본적으로 15개 정도만 알아도 사용하는데 지장은 없습니다.


2) .vimrc 설정

이제 vi에서 한글입력이 가능하고, 사용하기에 편리하도록 만들어 보겠습니다. 계정의 루트 디렉토리(터미널 실행시 기본 디렉토리 이며, 프롬프트 상에서 cd[return]을 치면 됩니다)로 가서 vi .vimrc를 입력하고 실행합니다.

vi가 실행되면 아래의 내용을 복사하고 i로 입력모드로 만든 후 붙여 넣습니다. 그 후에 위와 같이 esc -> :wq[return]으로 저장하고 나옵니다.

set enc=UTF-8
set fileencodings=UTF-8

set nocompatible
set backspace=indent,eol,start

set tabstop=4
set shiftwidth=4
set cindent
set autoindent
set smartindent
set history=15
set ruler
set showcmd

set background=dark
set paste
set nu
set ai
syntax on
언어를 UT-8로 설정하고 코딩을 위한 들여쓰기, 탭크기, 문법 구분 등을 설정합니다. 이외에 자료를 찾아 보시고 개인별로 용도에 맞게 수정해서 사용하시면 됩니다.


3. 쉘 환경 설정

1) .bash_profile

다시 계정의 루트 디렉토리에서 vi .bash_profile을 입력합니다. .bash_profile은 사용자 별로 터미널 쉘 환경 설정을 저장하는 파일로 보시면 됩니다. 파일 앞의 "."을 꼭 입력하셔야 합니다. 아래의 내용을 복사하여 붙여 넣습니다.

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

alias ls='ls -vGF'

PS1="[\u@\h \W]\\$ "

처음 세 명령어는 삭제, 복사/이동시 같은 파일이 있을 경우 사용자에게 확인을 받도록 합니다.

alias ls='ls -vGF'
파일 목록을 보여주는 ls 명령어 실행시, 디렉토리를 한글명으로 표시하고 색상을 보여주도록 합니다.

PS1="[\u@\h \W]\\$ "
프롬프트 출력을 변경합니다. u는 사용자, h는 호스트명, W는 현재 디렉토리를 의미합니다.

이제 이전과 같은 방법으로 .bash_profile를 저장하고 나옵니다.


2) .inputrc

위와 같이 vi .inputrc를 열고 아래의 내용을 복사하고 저장합니다.
set convert-meta off
set meta-flag on
set output-meta on

위의 명령들로 프롬프트 상태에서 한글이 올바르게 입력되도록 합니다.

위의 변경된 사항들이 적용되게 하기 위해, 터미널을 닫고 다시 실행하여 로그인 합니다. 이제 터미널에서 제대로 한글이 보이고, 터미널 및 vi에서 한글을 입력하고 출력되는 것을 확인 할 수 있습니다.


3)  로그인 메시지 및 호스트 명 변경

이제 터미널로 로그인 시 출력되는 메시지를 변경해 보겠습니다.

sudo vi /etc/motd [return]
sudo는 루트권한을 사용할 수 있게 하는 명령어로 위와 같이 입력하면 패스워드를 확인합니다. 여기서는 프로그램 인스톨 시나 업그레이드시 입력하는 본인의 패스워드를 입력하면 됩니다.

저는 아래와 같이 입력하고, 저장하였습니다.
사용자 삽입 이미지

sudo scutil --set HostName iMac [return]
프롬프트에 나오는 호스트 명을 변경하고 싶을 때는 위와 같이 변경합니다. 위의 iMac 부분을 원하시는 호스트 명으로 변경하시면 됩니다.

이제 다시 로그인을 하면 아래와 같이 환영 메시지와 함께, 호스트 이름이 iMac으로 변경되어 있는 것을 확인할 수 있습니다.
사용자 삽입 이미지


4. 루트계정 활성화
root 권한으로 해야 할 작업이 많을 경우에는 sudo만으로는 불편함이 있습니다. 맥에서는 기본으로 root 계정을 사용할 수 없기 때문에, root 계정을 사용할 수 있도록 변경합니다. root는 중요한 파일을 실수로 삭제하면 시스템에 치명적일 수 있기 때문에, 이 부분은 필요성을 느끼는 분들만 변경하시면 됩니다.

사용자 삽입 이미지
어플리케이션/유틸리티에서 NetInfo 관리자를 실행합니다. 상단 메뉴의 보안에서 인증을 한 후, 보안 메뉴 하단의 루트계정 활성화을 클릭한 후 사용할 패스워드를 입력하고 활성화 합니다.



이제 위에서 입력한 패스워드로 루트 계정을 사용할 수 있습니다. 루트 계정 사용은 프롬프트 모드에서 su를 입력하고 위에서 설정한 패스워드를 입력하시면 됩니다.
AND