[root@localhost#] sudo vi /etc/motd






편집기에서 내용을 작성하고 저장하여 닫습니다. 터미널을 재실행하면 로그인 메시지가 보입니다.





'Mac' 카테고리의 다른 글

[맥북] 별 쓸모없는 잡다한 팁.  (0) 2012.11.20
[맥북] vim 설정 하기  (0) 2012.11.20
[맥북] 터미널의 프롬프트 표시 변경하기  (0) 2012.11.19
[맥북] 확장자별 연결 프로그램 바꾸기  (0) 2012.11.17
키보드  (0) 2012.10.15
Posted by KENSIN
,

[root@localhost:~#] PS1="변경하고싶은프롬프트"


참조 : Bash Prompt HOWTO


맥북에서 터미널을 사용하는 도중 호스트 부분의 표시가 길기도 하고 맘에 들지 않아서 표시를 바꾸는 방법이 없나 찾아보았다.


PS1이라는 환경 변수를 사용하여 프롬프트의 표시 내용을 보여주게 되어 있으므로 이를 변경해 주면 된다.


$ vi ~/.bash_profile


PS1="[\u@\w]\\$"


u는 사용자

w는 전체디렉토리명( 대문자W 를 사용하면 현재디렉토리만)


이렇게 하고 저장한후 터미널을 실행시켜보면 프롬프트가 변경되어 있음을 확인 할 수 있다.


[user@~]$ |



---------


PS1은 꼭 설정파일이 아닌 프롬프트 상태에서도 바로 변경은 가능합니다.


[user@~]$ PS1="맥북에어 : @ "

맥북에어 : @ PS1="[멘붕]#"

[멘붕]#


물론 다시 시작하면 초기화 되기 때문에 계속 같은 값을 쓰려고 한다면 설정파일에 저장해야 합니다.


또한 위의 \u ,  \w 처럼 정보를 표시해주는 옵션들은 다음과 같습니다.


\T  시간을 표시합니다. hh:mm:ss 형식으로 표시됩니다. \t는 24시간, \T는 12시간입니다.

\@ 12시간 단위의 hh:mm am/pm 형식으로 시간을 표시합니다. \A는 24시간 입니다.


\W 는 현재디렉토리만, \w는 전체디렉토리를 보여줍니다.


\u 는 사용자 이름을 표시합니다.


\a  비프음

\d  날짜 ("월 11 19")

\h  호스트명

\!  히스토리 숫자

\#  명령어 숫자

\$  사용자 권한 표시 [ 일반:$ , 관리자:# ]

\\  \문자


더 많은 옵션은 다음 페이지에서 확인 할 수 있습니다.

2.5. Bash Prompt Escape Sequences


-----

또한 Bash 에서 제공하는 PROMPT_COMMNAD 라는 특수한 변수가 있습니다. 일반 커맨드의 실행후 결과화면등이 화면에 출력되고 나면 다음 입력 프롬프트가 나오기 직전에 출력됩니다. 설정방법은 PS1과 크게 다르지 않습니다.


다만 자동으로 new line 이 들어가게 되는데, echo -n 명령어를 앞에 사용하여 결과를 한 줄로 보여줄수 있습니다.


일반적인 경우

[root@localhost#] PROMPT_COMMAND="date +%H%M"

[root@localhost#] ls

bin   mail

2156

[root@localhost#]


위의 경우 처럼 2156 이라는 시간이 찍힌 후에 new line 이 들어간후 다음 입력을 위한 프롬프트가 출력된다.


echo -n 사용의 경우

[root@localhost#] PROMPT_COMMAND="echo -n [$(date +%H%M)]"

[2156][root@localhost#]$

[2156][root@localhost#]$ ls

bin   mail

[2157][root@localhost#]$ unset PROMPT_COMMAND

[root@localhost#]

위와 같이 후출력후 new line 의 출력을 숨긴다.


'Mac' 카테고리의 다른 글

[맥북] vim 설정 하기  (0) 2012.11.20
[맥북] 터미널 로그인 메시지 작성하기  (0) 2012.11.20
[맥북] 확장자별 연결 프로그램 바꾸기  (0) 2012.11.17
키보드  (0) 2012.10.15
맥북에어 13인치 구입  (0) 2012.10.13
Posted by KENSIN
,

Finder에서 ⌘ + I 를 누르면 '정보 가져오기' 창이 열립니다.






연결을 원하는 기본 프로그램을 선택 한 후 "모두 변경" 버튼을 누르면 전체에 적용이 됩니다.


'Mac' 카테고리의 다른 글

[맥북] vim 설정 하기  (0) 2012.11.20
[맥북] 터미널 로그인 메시지 작성하기  (0) 2012.11.20
[맥북] 터미널의 프롬프트 표시 변경하기  (0) 2012.11.19
키보드  (0) 2012.10.15
맥북에어 13인치 구입  (0) 2012.10.13
Posted by KENSIN
,
JRE


Java Runtime Environment 입니다. 말그대로 자바 실행 환경입니다. 자바로 만들어진 프로그램이 돌아가기 위해서 필요합니다.


SDK


Software Development Kit 입니다. JRE에서 돌아가게 될 프로그램을 만들기 위해 개발자들이 사용할 API들이 들어가 있습니다.


JDK


Java Development Kit 입니다. JRE+SDK = JDK 라고 생각하시면 됩니다.


JavaSE


Standard Edition 입니다. 자바의 기본 프로그래밍 플랫폼 입니다. 기본이 되는 라이브러리와 API 들이 포함되어 있습니다.


JavaME


Micro Edition 입니다. 모바일 기기나 임베디드 시스템등에 사용될 어플리케이션을 개발하기 위한 플랫폼을 제공합니다.


JavaEE


Enterprise Edition 입니다. 자바SE + 웹서버용기능 이라고 보면 됩니다.  기업이나 큰 비지니스용 어플리케이션을 개발하기 위한 플랫폼을 제공합니다. 주로 서버측 개발에 사용합니다. JavaSE에 추가하여 DB억세스(JDBC), 리모트(RMI), 메시징(JSM), 웹서비스, XML, 엔터프라이즈자바빈, 서블릿.. 등등을 포함합니다.



자바 공부를 위해서 무엇을 다운로드 받을지 찾고 계시다가 검색을 해보신 거라면 그냥 JavaEE with JDK 를 받으시면 되겠네요.

Posted by KENSIN
,

Spring Context 관련 import

<%@ page import="
             org.springframework.web.context.*,
             org.springframework.web.context.support.*"%>


Spring WebApplicationContext 가져오기

<%
   ServletContext ctx = pageContext.getServletContext();
   WebApplicationContext wac =
         WebApplicationContextUtils.getRequiredWebApplicationContext(ctx);
%>


Spring Bean 호출하기

// getBean
   XXX xxx = (XXX) wac.getBean("xxx");
   xxx.doSomething();


Posted by KENSIN
,

-- 입력받는 파라미터가 없는 메서드


import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.is;

import java.lang.reflect.Method;

import org.junit.Test;

public class ReflectTest {

    @Test
    public void testReflect() throws Exception {
        Method method = Sample.class.getMethod("getSample");
        assertThat((String) method.invoke(Sample.class.newInstance()), is("Sample"));
    }

    public static class Sample {
        public String getSample() {
            return "Sample";
        }

        public String getSample(String append) {
            return "Sample " + append;
        }
    }
}


-- 파라미터를 입력받는 메서드

import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.is;

import java.lang.reflect.Method;

import org.junit.Test;

public class ReflectTest {

    @Test
    public void testReflect() throws Exception {
        Method method = Sample.class.getMethod("getSample");
        assertThat((String) method.invoke(new Sample()), is("Sample"));
       
        method = Sample.class.getMethod("getSample", String.class);
        assertThat((String)method.invoke(new Sample(), "Test"), is("Sample Test"));
    }

    public class Sample {
        public String getSample() {
            return "Sample";
        }

        public String getSample(String append) {
            return "Sample " + append;
        }
    }
}

-- 다수의 파라미터를 받는 메서드

import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.is;

import java.lang.reflect.Method;

import org.junit.Test;

public class ReflectTest {

    @Test
    public void testReflect() throws Exception {
        Method method = Sample.class.getMethod("getSample");
        assertThat((String) method.invoke(new Sample()), is("Sample"));
       
        method = Sample.class.getMethod("getSample", String.class);
        assertThat((String)method.invoke(new Sample(), "Test"), is("Sample Test"));
       
        method = Sample.class.getMethod("getSample", String.class, int.class);
        assertThat((String)method.invoke(new Sample(), "Cut", 7), is("Cut"));
    }

    public class Sample {
        public String getSample() {
            return "Sample";
        }

        public String getSample(String append) {
            return "Sample " + append;
        }
       
        public String getSample(String append, int beginIndex){
            return getSample(append).substring(beginIndex);
        }
    }
}
Posted by KENSIN
,


가격을 가져온다.

한국 돈으로 책은 6500원 이며,

일본 돈으로 책은 650엔 이다.

다른 물건도 단순히 '원 / 10 = 엔' 의 공식으로 값이 나오도록 적용한다.


우선 테스트를 작성한다.

import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.is;

import java.lang.reflect.Proxy;

import org.junit.Test;

public class PriceTest {
    @Test
    public void getPrice(){
        Price koreanPrice = new KoreanPrice();
        assertThat(koreanPrice.getBookPrice(), is(6500));
        assertThat(koreanPrice.getCarPrice(), is(26000000));
        assertThat(koreanPrice.getPenPrice(), is(1200));
       
        Price japanPrice = (Price)Proxy.newProxyInstance(
                getClass().getClassLoader()
                , new Class[]{Price.class}
                , new JapanPrice(new KoreanPrice()));
        assertThat(japanPrice.getBookPrice(), is(650));
        assertThat(japanPrice.getCarPrice(), is(2600000));
        assertThat(japanPrice.getPenPrice(), is(120));
    }
}

Price 인터페이스

public interface Price{
    int getBookPrice();
    int getCarPrice();
    int getPenPrice();
}

원(W)화로 계산해주는 클래스

public class KoreanPrice implements Price {

    @Override
    public int getBookPrice() {
        return 6500;
    }

    @Override
    public int getCarPrice() {
        return 26000000;
    }

    @Override
    public int getPenPrice() {
        return 1200;
    }
}

Proxy를 이용해 엔화로 계산해 주기 위한 클래스

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class JapanPrice implements InvocationHandler {
    Object price;

    public JapanPrice(Object price) {
        this.price = price;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Object obj = method.invoke(price, args);
        return ((Integer) obj) / 10;//단순히 10 나누기
    }
}

책값만 엔화로 계산해 주기 테스트

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class JapanPrice implements InvocationHandler {
	Object price;

	public JapanPrice(Object price) {
		this.price = price;
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		Object obj = method.invoke(price, args);
		if(obj instanceof Integer && method.getName().indexOf("Book") != -1) {
			return ((Integer)obj) / 10;
		}
		return (Integer) obj;
	}
}


import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.is;

import java.lang.reflect.Proxy;

import org.junit.Test;

public class PriceTest {
	@Test
	public void getPrice(){
		Price koreanPrice = new KoreanPrice();
		assertThat(koreanPrice.getBookPrice(), is(6500));
		assertThat(koreanPrice.getCarPrice(), is(26000000));
		assertThat(koreanPrice.getPenPrice(), is(1200));
		
		Price japanPrice = (Price)Proxy.newProxyInstance(
				getClass().getClassLoader()
				, new Class[]{Price.class}
				, new JapanPrice(new KoreanPrice()));
		assertThat(japanPrice.getBookPrice(), is(650));
		assertThat(japanPrice.getCarPrice(), is(26000000));
		assertThat(japanPrice.getPenPrice(), is(1200));
	}
}

Posted by KENSIN
,
인터넷 익스플로러의 언어 설정 옵션이다.



위 화면에서 ko_KR 이 IE9, FF 등에서 기본 설정 되어있는 언어 옵션이다.

IE8은 ko 가 기본값으로 되어있다. (위 화면의 옵션은 IE9 화면이며 ko 는 테스트를 위해 추가한 부분이다, 위아래로 이동하여 우선권 설정이 가능하다.)


URLEncoder.encode("한글", encoding_charset) 로 인코딩 후 GET 주소를 보내면 서버에서 request 에 캐릭터 셋을 euc-kr 로 설정한후 request.getParameter 로 받을 경우ko 는 바로 제대로 된 한글이 보여지고 ko_KR 은 깨진 문자열로 보여진다.

따라서 request.getLocale() 을 이용해 ko 인지 ko_KR인지 판단하여 ko_KR일 경우 파라미터 값을 다시 getByte("ISO-8859-1"), "euc-kr" 로 인코딩 변경하여주면 정상적인 한글 값을 받아 올수 있다.


-- 사이트 페이지 링크

<a href="?name=<%=URLEncoder.encode("홍길동", "euc-kr")%>" >

-- 서버에서의 처리

String name = request.getParameter("name");
// [ko] 로 넘어온 경우 출력해 보면 "홍길동" 으로 찍힌다. 인코딩할 필요 없음.

// [ko_KR] 인 경우 깨져서 보인다. 인코딩이 필요하다.
if("get".equalsIgnoreCase(request.getMethod()) && !"".equals(name)){
    String localeName = String.valueOf(request.getLocale()).trim();
    if("ko_KR".equals(localeName)){
        name = new String(name.getBytes("iso-8859-1"), "euc-kr");
        // [ko_KR] 로 넘어온 경우 인코딩 후 여기서 "홍길동" 으로 찍힌다.
    }
}



Posted by KENSIN
,

MAC 에서 mysql 5.5.x 의 설정파일 위치 %MYSQL_PATH%/support_files 안의 종류별 xxxx.cnf 파일중 하나를 골라서 /etc/my.cnf로 복사한후 편집한다.


** mysql 의 기본설정값 호출 경로 우선 순위 확인방법

${MYSQL_HOME}/bin/mysqld --verbose --help | grep -A 1 'Default options'


** my.cnf 에 추가할 내용(max os x + mysql 5.5.x)

[mysqld] 

character_set_server=euckr
collation_server=euckr_korean_ci
init_connect=set collation_connection=euckr_korean_ci
init_connect=set names euckr
character-set-server=euckr
character-set-client-handshake = TRUE

---utf-8로 설정할경우

character_set_server=utf8
collation_server=utf8_general_ci
init_connect=set collation_connection=utf8_general_ci
init_connect=set names utf8
character-set-server=utf8
character-set-client-handshake = TRUE


=== 아래는 수동 설정(?) 방법 ===

mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.5.28, for osx10.6 (i386) using readline 5.1

Connection id:        459
Current database:    test
Current user:        root@localhost
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        5.5.28 MySQL Community Server (GPL)
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    euckr
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /tmp/mysql.sock
Uptime:            1 hour 20 min 17 sec

Threads: 1  Questions: 643  Slow queries: 0  Opens: 34  Flush tables: 1  Open tables: 27  Queries per second avg: 0.133

--------------

mysql> SET character_set_client = euckr;
Query OK, 0 rows affected (0.00 sec)

mysql> SET character_set_results = euckr;
Query OK, 0 rows affected (0.00 sec)

mysql> SET character_set_connection = euckr;
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER DATABASE test DEFAULT CHARACTER SET euckr;
Query OK, 1 row affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)


mysql> show variables like 'c%';
+--------------------------+--------------------------------------------------------+
| Variable_name            | Value                                                  |
+--------------------------+--------------------------------------------------------+
| character_set_client     | euckr                                                  |
| character_set_connection | euckr                                                  |
| character_set_database   | euckr                                                  |
| character_set_filesystem | binary                                                 |
| character_set_results    | euckr                                                  |
| character_set_server     | latin1                                                 |
| character_set_system     | utf8                                                   |
| character_sets_dir       | /usr/local/mysql-5.5.28-osx10.6-x86_64/share/charsets/ |
| collation_connection     | euckr_korean_ci                                        |
| collation_database       | euckr_korean_ci                                        |
| collation_server         | latin1_swedish_ci                                      |
| completion_type          | NO_CHAIN                                               |
| concurrent_insert        | AUTO                                                   |
| connect_timeout          | 10                                                     |
+--------------------------+--------------------------------------------------------+
14 rows in set (0.00 sec)


생성한 database 및 table 의 생성 정보 확인

mysql> show create table users;
+-------+------------------------------------------------------------------------------
|Table|CreateTable
+-------+------------------------------------------------------------------------------
| users | CREATE TABLE `users` (
  `id` varchar(10) NOT NULL,
  `name` varchar(20) NOT NULL,
  `password` varchar(10) NOT NULL,
  `level` tinyint(4) NOT NULL,
  `login` int(11) NOT NULL,
  `recommend` int(11) NOT NULL,
  `email` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+------------------------------------------------------------------------------
1 row in set (0.00 sec)

Posted by KENSIN
,


Mac OS X 다운로드 및 설치

시스템 환경설정 창에서 Java설치 확인.



Posted by KENSIN
,