참조한 곳: http://stackoverflow.com/questions/5084915/how-do-you-delete-a-commit-in-mercurial


1. TortoiseHg 프로그램에서 메뉴 > File > Settings > Extensions 을 선택한다.


2. Extensions에서 mq 항목에 체크를 하고 TortoiseHg GUI를 다시 시작한다. (사실 체크하고 OK 누르면 알아서 재시작한다)


3. 지우고 싶은 commit 버전 위에서 오른쪽 클릭을 해서 ModifyHistory > Strip 선택하면 된다.


+ 아마 변경내용 버리기 위해서 discard 옵션을 선택해야 할 수도.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

작년쯤부터 크롬에서 글자 간격이 이상하게 나오는데 아직도 해결이 제대로 안됐나보다.

연구실 컴퓨터와 노트북 사이에서 왔다갔다하거나 포맷할 때마다 다시 검색하기 귀찮으니 여기에도 적어두기로.


1. 

chrome://flags/

이곳에 접속하면 크롬에서 개발중인 실험실 기능을 켜고 끄는 플래그를 설정할 수 있다.


2.

DirectWrite 기능을 '사용'에서 '사용 중지'로 변경한다.



눌러서...



바꾼다.


3.

기능 적용을 위해 크롬을 다시 시작한다.

왼쪽 아래에서 '지금 다시 시작' 버튼을 찾아 누르면 자동으로 크롬을 다시 시작한다.




WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

- 윈도우에서 Xmimg로 우분투 GUI 접근 :

http://2ry53.tistory.com/entry/Xming-%EC%82%AC%EC%9A%A9%EB%B2%95


- 우분투에서 이클립스 설치 :

http://thinkubuntu.tistory.com/6


ㅇㅇ


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,
스트링이나 뭐 이런저런거 콘솔로 찍어보는 것보다 파일로 출력해야 할 때.

여기서 가져왔다.


BufferedWriter writer = null;
try
{
    writer = new BufferedWriter( new FileWriter( yourfilename));
    writer.write( yourstring);

}
catch ( IOException e)
{
}
finally
{
    try
    {
        if ( writer != null)
        writer.close( );
    }
    catch ( IOException e)
    {
    }
}


'엥그니어링 > 도움글' 카테고리의 다른 글

크롬 글자 간격 문제 해결  (0) 2015.02.16
우분투 서버에 이클립스 설치  (0) 2015.02.16
Java 시간 측정  (0) 2014.09.02
자주 쓰는 프로그램 바로가기 키 설정  (0) 2014.08.24
Day One 타임라인 관리  (0) 2014.07.22

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

// start time

long start_time = System.currentTimeMillis();


// main program source code


// end time

long end_time = System.currentTimeMillis();


// compute elapsed time and send to console

System.out.println("경과 시간: " + (end_time - start_time) + " ms");



1. 함수 이름에서 알 수 있듯이 millisecond 단위로 측정하는 것이기 때문에 초 단위로 보고싶다면 다음과 같은 방법으로 계산한다.


System.out.println("경과 시간: " + (end_time - start_time)/1000.0 );



2. 원래부터 있었는지, 언젠가부터 추가된 건지는 모르겠지만 nano단위로도 측정이 가능하니까 좀 더 자세히 측정하고 싶다면 써보자.


long start_time = System.nanoTime();

long end_time = System.nanoTime();



3. nanosecond 단위로 측정했을 때도 적당히 나눗셈을 잘 해주면 보고싶은 단위로 출력이 가능하니까 잘 활용하자.


// micro

long start_time = System.nanoTime();

long end_time = System.nanoTime();

System.out.println("경과 시간: " + (end_time - start_time)/1000.0 );

// milli

long start_time = System.nanoTime();

long end_time = System.nanoTime();

System.out.println("경과 시간: " + (end_time - start_time)/1000000.0 );


...


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

사소한 기능이지만 알면 유용한 기능.

자주 쓰는 프로그램의 경우 키보드 바로 가기 키를 설정해 놓으면 일일이 마우스 클릭질을 하지 않고도 실행할 수 있다.


바로가기키를 설정하고 싶은 프로그램의 아이콘에 오른쪽 클릭을 해서 속성 창을 연다.

(윈도 7의 경우 작업표시줄에 고정해놓은 아이콘에 오른쪽 클릭했을 때는 나오지 않는다. 윈도 메뉴에서 프로그램을 검색해서 찾도록 한다.)



속성 창에서 바로 가기 키 라고 써진 곳의 입력창에 한번 클릭한 후 원하는 키를 눌러주면 된다.

초기에는 바로가기 키가 설정되어있지 않으므로 '없음'이라고 써있지만 저렇게 키를 설정해주고 적용을 누르면 해당 키를 눌렀을 때 프로그램이 실행되는 것을 확인할 수 있다.


그런데 몇번 쓰다보니 불러오는 속도가 좀 느리긴 하다. 평소에 돌리는 프로그램이 많아서 알트탭으로 찾기 힘들거나 한 경우에는 유용하게 쓰일 수 있을 것 같다.

'엥그니어링 > 도움글' 카테고리의 다른 글

Java: String to File write  (0) 2015.01.06
Java 시간 측정  (0) 2014.09.02
Day One 타임라인 관리  (0) 2014.07.22
구글 데이터 백업하기  (0) 2014.07.15
Inline Caching (인라인 캐싱)  (0) 2014.07.01

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

나는 일기나 각종 기록용 저널 어플로서 Day One 어플을 유용하게 사용하고 있고, 지난번에 리뷰도 한 번 올린 적이 있다. (iOS 전용 어플, 정가 $4.99)


2013/12/24 - 어플 소개: Day One

여기서는 마크다운 기능 위주로 어플을 소개했었다. 이번에는 일반적인 기능 위주로, 특히 타임라인과 관련된 리뷰를 해보고자 한다.

스크린샷은 아이폰 위주로 올렸지만 아이패드 버전에서도 화면 크기에 따른 배치만 다르지 기능상의 차이는 없다. (OS X에서는 확인하지 못했다.... ㅜㅜ 맥북도 없을 뿐더러 OS X에서는 결제를 또 따로 해야한다)


아이폰에서 데이원 어플을 실행하면 나오는 목록이다. 타임라인을 살펴볼 거니까 당연하게도 타임라인 메뉴를 선택한다.


그동안 썼던 저널들이 시간순서대로 정렬되어 나온다.

오른쪽 위의 + 버튼을 누르면 새로운 저널을 쓸 수 있고, 이미 쓴 저널을 관리하고 싶을 때는 각 엔트리를 좌우로 밀어넘기면 메뉴가 나타난다.


왼쪽에서부터 순서대로, 별모양 아이콘은 그 저널을 중요한 기록으로 표시하는 것이다. 활성화하고나면 다시 좌우로 쓸어넘겨서 날짜가 보이게 했을 때 날짜가 노란색으로 보인다.


두번째 꼬리표모양 아이콘은 태그를 다는 것이다. 태그만 잘 달아줘도 관리하기가 한결 편해진다. 만약 여행기록을 남겼을 때 다녀온 지명을 태그에 적어둔다면 나중에 그 여행지의 추억을 되새기고 싶을 때 손아프게 목록을 아래로 내릴 필요 없이 태그 검색만으로 쉽게 접근이 가능하겠지. 

PDF 내보내기를 할 때도 특정 기간 설정이 가능하고 특정 태그가 달린 저널만 내보내는 것도 가능하기 때문에 특별한 의미가 있는 저널이라면 태그를 잘 써보자.


세번째 메모장모양 아이콘은 수정.


네번째 휴지통모양 아이콘은 삭제하는 것이다. 이 때 주의할 점이, 아이클라우드에 백업하는 옵션을 켜두었다면 지우고나서 실제로 타임라인과 아이클라우드, 다른 기기에서의 타임라인에 반영되는 것에 시간이 걸릴 수 있다.


다섯번째 아이콘은 그 저널을 업로드 하기 위한 것이다. 저널 내용을 pdf 파일로 변환시켜서 이메일에 첨부해서 보낼 수도 있고, 드랍박스 같은 곳에 저장을 할 수도 있다.


저널 내용을 수정하는 것에 대해 첨언하자면, 이게 보니까 저널 내용이 길어지면 길어질수록 반응속도가 점점 느려지더라. 블루투스 키보드 먹이고 다다다 적다보면 내용이 길어져서 점차 반응속도가 느려지는 것이 짜증난다면 기본 메모어플에다가 작성한 후 복사해서 옮기는 것도 한 방법이다.

어플 하나 안에서 해결이 안되고 왔다갔다 하는 게 참 맘에 안드는 구석이긴 하지만, 마크다운 기능을 활용할 줄 안다면 기본 메모어플보다야 시각적으로 낫고 다양한 기능을 제공하는 데이원 어플을 포기할 수가 없다.


그래도 데이원 어플을 더이상 쓰기 싫다거나(...) 아이클라우드에 백업된 내용을 삭제하고 싶을 때는 이렇게 하면 된다.


설정에 들어가서 iCloud 메뉴 선택.


저장 공간 및 백업 선택.


저장 공간 관리 선택.


Day One 어플 선택.


각 저널들이 파일명은 암호화된 채로 업로드되어있다. 확인은 아직 안해봤는데 아마도 시간 순으로 정렬되어 있겠지. '편집' 버튼을 눌러서 지우고 싶은 저널을 삭제하면 된다.


* 주의. 아이클라우드에 백업된 내용을 지우면 각 기기에서도 동기화되면서 사라진다.


아예 아이클라우드 기능을 쓰고싶지 않다면 어플 내의 설정에서 Sync -> iCloud 옵션을 해제하면 된다.

'엥그니어링 > 도움글' 카테고리의 다른 글

Java 시간 측정  (0) 2014.09.02
자주 쓰는 프로그램 바로가기 키 설정  (0) 2014.08.24
구글 데이터 백업하기  (0) 2014.07.15
Inline Caching (인라인 캐싱)  (0) 2014.07.01
합주시간표 설치하기  (2) 2014.06.02

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

요즘은 개인용이든 업무용이든 구글의 서비스를 이용하는 일이 많다. 안드로이드 폰은 구글 계정이 없으면 사용하기가 불가능에 가깝고, 지메일이나 구글드라이브는 한번쯤 써본 사람이 많을 것이다.


별도의 요금을 지불하지 않으면 구글이 제공하는 기본 스토리지 용량은 15G다. 이것을 지메일, 구글드라이브, 구글포토가 나눠서 사용하게 된다.


용량이 부족해서 비워야 하거나, 안 쓰는 계정을 정리하거나, 다른 계정으로 데이터를 옮겨야 할 때 데이터 백업이 필요하다. (예전에는 안됐던 것 같은데) 아주 간단한 방법으로 이 데이터들을 백업할 수 있다.

데이터 내려받기 기능을 사용하면 지메일이나 구글드라이브 외에도 캘린더, 북마크, 블로거 등 구글이 제공하는 다양한 서비스들의 데이터를 입맛대로 받을 수 있다.


일단 구글에 접속하여 데이터를 백업할 계정으로 로그인한다.

(크롬 브라우저를 쓰는 경우 홈 화면에서도 볼 수 있다.)


로그인하면 오른쪽 상단에서 구글계정 프로필 사진을 눌러서 '계정' 메뉴를 클릭해서 계정 설정 페이지로 들어간다.


나오는 관리 화면에서 '데이터 도구' 메뉴를 클릭한다.


오른쪽에서 '다운로드할 데이터 선택' 메뉴를 클릭한다.


간단한 안내화면이니까 그냥 '보관 파일 만들기' 버튼을 누르자.


구글이 제공하는 서비스 목록이 나온다. 원하는 서비스를 선택하자. 나는 별다른 건 사용하지 않으니까 다 선택 해제한 후에 메일만 선택했다. 

각 서비스마다 오른쪽의 'Edit'을 선택하면, 전체 내용을 다 백업할 것인지 서비스 내에서도 특정 부분(지메일이라면 라벨별로 선택한다든가)만을 따로 백업하게 설정할 수도 있다. 보관파일 설정도 기본은 .zip 형식인데 리눅스라면 .tgz 형식으로 바꿀 수도 있다.

설정을 다 완료했으면 '보관 파일 만들기' 버튼을 클릭한다.


그러면 선택한 서비스에 대해서 보관 파일을 열심히 만든다.


보관파일 세부정보 표시를 누르면 어떤 서비스를 백업하고 있는지도 보여준다.


열심히 보관파일을 만들 때까지 기다리자.... 나는 지메일 사용용량이 총 1.3G 정도였는데 약 한시간 정도 걸렸던 것 같으니 참고하시길.


화면에도 써있듯이 준비가 다 되면 사용중인 지메일로 준비가 다 되었다고 알림 메일이 온다.



메일에서 '사용 가능한 보관 파일 보기' 버튼을 눌러도 되고, 아까 보관파일 만들던 화면을 닫지 않았다면 거기에도 그대로 뜰 것이다.



따라가서 나타난 페이지에서 보관 파일을 다운받으면 된다. 끗.


보관파일은 압축된 형태로 제공되기 때문에 다운받은 후에 압축을 해제해서 내용물을 볼 수 있다. 생성된 보관 파일은 일주일간 다운로드 가능하며 총 5회까지 다운로드 되는 것 같다. 다섯번을 다 받았거나 일주일 기한이 지나고나면 다시 한시간을 기다려서 보관 파일을 생성해야 하는듯.


* 지메일을 백업했다면 아마 압축을 풀었을 때 .mbox 형식으로 된 백업파일이 있을 것이다. .mbox 확장자는 아웃룩 등의 프로그램에서 사용할 수 있다.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

원본 출처: http://en.wikipedia.org/wiki/Inline_caching

메세지, 메세지 셀렉터, 리시버 부분에서는 나도 무슨 말인지 잘 모르겠지만 대략의 개념만 파악했다. 어쨌든 함수 호출하는 부분에다가 함수 위치를 알 수 있게 저장해서 룩업 생략하겠다는 거 아닌가?

잘못 옮긴 부분 있다면 지적 부탁드립니다.

Inline caching

최적화 테크닉의 한 종류로, 랭귀지 실행시간에 사용이 되며 Smalltalk을 위해서 처음으로 개발되었다. 인라인 캐싱의 목표는 호출 지점1에서 직접적으로 이전의 메소드 검색의 결과를 기억해서 런타임 메소드 바인딩의 성능을 높이는 것이다. 인라인 캐싱은 대부분의 메소드 바인딩이 런타임에 일어나고 가상 메소드 테이블을 사용할 수 없는 동적 언어에서 특히 유용하다.

Runtime method binding

동적언어에서는 오브젝트의 타입이 명시되지 않고 메소드 오버로딩의 가능성이 존재하기 때문에, 메소드를 호출할 때 구체적으로 어떤 구현 함수가 적용될지 미리 결정할 수 없다. 캐싱을 사용하지 않는 런타임에, 이러한 검색은 하나의 메소드가 불릴 때마다 매번 실행된다. 메소드들이 상속 체인을 따라내려가서 여러 단계로 정의될 수도 있기 때문에, 동적 검색은 시간이 많이 소모될 수 있다.


퍼포먼스를 향상시키기 위해, 많은 언어들은 연관 데이터 구조 안에 제한된 숫자의 메소드 검색 결과를 저장해놓은 모종의 non-inline 캐싱을 사용한다. 이것은 실행되는 프로그램들이 "cache friendly" 할 때(제한된 숫자의 메소드가 자주 불릴 때) 성능을 크게 향상시킬 수 있다. 이러한 데이터 구조는 일반적으로 first-level method lookup cache라고 불린다.

Inline caching

인라인 캐싱의 개념은 특정 호출지점에서 발생하는 오브젝트들은 주로 같은 타입이라는 경험적 관찰에 기반한다. 그런 경우에 메소드 검색의 결과를 "inline"으로, 즉 호출 지점에 직접 저장해놓으면 성능이 크게 증가할 수 있다. 이 과정을 가능하게 하려고, 호출 지점들에 서로 다른 상태를 부여한다. 처음에는 각 호출지점은 "uninitialized" 상태이다. 일단 런타임이 특정한 uninitialized 호출 지점에 도달하면, 동적 검색을 수행하고, 호출 지점에 결과를 저장하고 호출 지점의 상태를 "monomorphic"(단형성)으로 바꾼다. 언어 런타임이 똑같은 호출 지점에 다시 도달한다면, callee를 (inline cache로부터) 다시 가져와서 더이상의 검색을 수행하지 않고 곧바로 불러온다. 같은 호출 지점에서 서로 다른 타입의 오브젝트가 존재할 수도 있기 때문에, 언어 런타임은 코드 안에 gaurd condition도 삽입을 해야만 한다. 흔히 garud condition들을 호출 지점보다는 callee의 프리앰블에 삽입한다. 브랜치 프리딕션을 더 잘 이용할 수 있고, 프리앰블에 하나의 카피만 있는 것이 각 호출 지점마다 여러 카피가 있는 것에 비해 공간을 절약할 수 있기 때문이다. "monomorphic" 상태에 있는 호출 지점이 예상치 못했던 다른 타입을 만나게되면 호출 지점은 "uninitialized" 상태로 돌아가서 완전한 동적 검색을 다시 수행해야 한다.


고전적인 구현방법은 레지스터에 상수를 불러온 뒤에 콜 명령어가 오는 것이다. "uninitialized" 상태는 "unlinked"로 불리는 것이 낫다. 레지스터에 message selector(주로 어떤 오브젝트의 주소)를 채우고, (함수의) 호출은 위에서 말한 first-level method lookup cache를 사용해서 현재 리시버의 클래스(분류?) 안에 있는 메세지를 탐색하는 런타임 루틴이 된다. 그렇게 되면 런타임 루틴은 로드 명령어를 레지스터에 현재 리시버의 타입을 채우는 것으로 바꾸고, call 명령어를 바꿔서 타겟 메소드의 프리앰블을 부르도록 바꿔서 명령어를 다시 쓴다. 그러면 호출 지점과 타겟 메소드를 "연결(linking)"하는 것이다. (함수의) 실행은 이제 프리앰블을 곧장 따라가면서 이어진다. 다음 번의 실행에서는 (linking 없이) 프리앰블을 직접적으로 호출할 수 있을 것이다. 그러면 프리앰블은 현재 리시버의 타입을 가져와서 레지스터 안에 있는 값과 비교할 것이다. 만약 맞아떨어진다면 리시버는 같은 타입이므로 메소드를 계속해서 실행한다. 다르다면 프리앰블은 다양한 전략들을 시도해볼 수 있다. 호출 지점과 새로운 리시버 타입을 재연결하는 것이 한 방법이 될 수 있다.


성능의 이득은 최소 한번의 타입 비교와 셀렉터 비교를 하는 first-level method lookup cache에 비해 한번의 타입 비교만 하는 것과, method-lookup이나 vtable 방식을 썼을 때의 간접 호출에 대비되는 직접 호출(명령어 prefetch와 pipelining으로 이득을 얻을 수 있다)을 통해서 얻게 된다.



요약

  • 어떤 함수를 호출할 때 같은 call site에서는 계속해서 같은 함수를 불러올 가능성이 높다는 관찰에 기반한다.
  • 최초로 call site에 도달했을 때는 어떤 함수를 불러와야 할 지 알 수 없으므로 완전한 메소드 검색을 해야만 한다.
  • 불러올 함수가 결정이 되었으면 다음번에 call site에 도달했을 때는 방금 전에 찾아온 메소드를 바로 찾아갈 수 있도록 call site에 찾아갈 대상이 되는 위치를 기록해둠.
  • 함수 오버로딩 같은 경우가 있을 수 있으므로, 불러올 함수의 유형이 달라질 것에 대비해 guard instruction을 삽입해야 한다. (맞는지 틀린지 확인하기 위해)
    • 만약 call site마다 guard instruction을 삽입하게 되면 여러 call site에서 똑같은 함수를 불러올 때 여러 번 guard instruction 삽입해야 하므로 낭비가 생긴다.
    • 따라서 불러올 대상이 되는 함수의 맨 앞에 guard instruction을 삽입해서 중복삽입을 피한다.
  • 만약 guard instruction을 실행했을 때 원래 예측했던 타입과 다르다면 다시 돌아가서 메소드 검색부터 다시 실행한다.

http://jayconrod.com/posts/44/polymorphic-inline-caches-explained 이쪽의 내용을 참고해도 좋을 것 같다.


  1. call site: 함수나 서브루틴이 호출되는 위치(코드의 라인). 호출 지점은 0개 이상의 argument가 함수에 넘겨지고, 0개 이상의 리턴값을 넘겨받는 위치이다. 


'엥그니어링 > 도움글' 카테고리의 다른 글

Day One 타임라인 관리  (0) 2014.07.22
구글 데이터 백업하기  (0) 2014.07.15
합주시간표 설치하기  (2) 2014.06.02
무료 웹호스팅 얻기 / 관리  (2) 2014.06.01
Favicon / 즐겨찾기 아이콘 등록  (3) 2014.06.01

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

전국의 밴드동아리들에게 조금이라도 보탬이 되고자 하는 거창한 마음으로 만든 것은 당연히 아니고, 비싼 등록금 주고 배운 거 써먹어봐야지 하는 소소한 마음으로 동아리 후배들을 위해 선물로 만들었던 합주시간표다.


설치파일 다운로드는 이쪽

2014/05/31 - 밴드동아리를 위한 합주시간표


무료 웹호스팅 얻기는 이쪽

2014/06/01 - 무료 웹호스팅 얻기 / 관리


다시 한번 말하지만 합주시간표는 웹페이지 설치형이기 때문에 웹호스팅이 필수이다. 동아리컴퓨터에 자체적으로 서버 설치할 수도 있겠지만 그렇게 하느니 그냥 무료 웹호스팅 얻고 말겠다 나같으면.


** 아래 설명 및 그림파일은 hostinger.kr의 무료 웹호스팅을 기준으로 설명했다. 다른 업체의 호스팅을 사용한다면 환경이 달라질 수 있음에 유의.


웹호스팅을 얻었다면 설치파일을 다운로드 받아 압축을 풀어놓고, 웹호스팅 관리 페이지에 들어가자.


+++ 데이터베이스 생성을 할 줄 알거나 이미 했다면 넘어가도 되는 부분이다.

(찾기 메뉴로 +++ 찾아가면 빠르게 넘어갈 수 있다)

관리 페이지에서 MySQL 데이터베이스 메뉴를 누르면 이 창으로 넘어온다.

보통 무료웹호스팅 서비스에서 제공받는 데이터베이스 명에는 유저명이 앞에 무조건 붙고, 식별용으로 그 뒤에 다섯 글자 제한으로 이름을 정할 수 있다. 저 상태라면 실제 접속을 위한 데이터베이스 이름은 u921204636_time 이 된다.

비슷하게 MySQL 계정 이름도 접두사는 고정이고 거기에다가 다섯글자까지 추가로 적을 수 있다. 실제 이 데이터베이스 접속을 위한 계정 이름은 u921204636_chaz 가 되는 것이다. 비밀번호까지 적고 나면 데이터베이스 생성이 완료된다.

+++ 여기까지 데이터베이스 생성 설명


다운로드한 설치파일 중에 수정을 해야 하는 부분이 있다.

db_info.php 파일을 메모장이나 기타 텍스트 에디터를 통해서 열어준다.



아래쪽은 손댈 필요 없고, 위쪽 네개의 변수만 큰따옴표 사이에 들어갈 내용들을 바꿔준다.

위쪽에서 캡쳐했던 내용대로 내가 만들어줬다면

$mysql_host = "mysql.hostinger.kr";

$mysql_database = "u921204636_time";

$mysql_user = "u921204636_chaz";

$mysql_password = "tester";

이렇게 수정을 해야 한다. 각자의 웹호스팅 설정에 따라 바뀌는 내용이기 때문에 일부러 별도의 파일로 뺀 거다.


+++ 여기서부터는 FTP 프로그램 다룰 줄 아는 사람이라면 넘어가도 되는 부분이다.

hostinger.kr에서 무료 웹호스팅을 받았다면, 관리 페이지에서 파일 관리자 메뉴를 선택해도 된다.

주의할 점은 그냥 파일 관리자를 선택했을 때는 상관없지만, 파일 관리자 2를 선택해서 들어갔을 때는 실제 파일은 항상 public_html 폴더 안에 넣어야 한다. 이게 기본 폴더다.


FileZilla 같은 별도의 FTP 프로그램을 쓴다면 (이쪽을 추천하며, 밑에서 나오는 캡쳐도 이걸 기준으로 한다) 호스트에는 도메인이나 아예 직접적으로 서버의 IP 주소를 적고, 

사용자명에는 관리 페이지 왼쪽에 나오는 저걸 적어야 한다. 비밀번호는 호스팅어 가입할 때 썼던 비밀번호 적으면 되고.


아무짓도 안했으면 기본 디렉토리 안에는 default.php 밖에 없을 것이다. 이건 설치 잘 됐다고 보여주는 파일이니까 그냥 지워도 된다.



로컬 사이트 라는 게 내 컴퓨터 안의 디렉토리들을 말하는 거고, 리모트 사이트란 게 내가 접속한 서버를 말한다. 아까도 말했듯이 public_html 이라는 폴더가 기본이기 때문에 그 안에 접속을 한다.  

접속을 한 후에 timetable.zip 압축을 푼 폴더를 왼쪽 창에서 찾아서 들어간다. 그리고 거기 들어있는 파일들을 몽땅 선택해서 오른쪽으로 드래그를 하면 업로드가 된다.

(혹은 보통 파일 탐색창에서도 파일들 선택해서 드래그해도 상관 없다)

+++ 여기까지 파일 업로드 설명


이제 최종적으로 설치만 남았다.

설치는 간단하다. initialize.php를 한번 실행하기만 하면 된다.


http://파일 업로드 주소/initialize.php


실행 하고 화면에 아무런 에러 창이 뜨지 않고 흰 화면만 뜬다면 성ㅋ공ㅋ이다.

그러면 http://파일 업로드 주소/ 만 치거나, http://파일 업로드 주소/index.php 를 쳐보자.

합주시간표에는 아무 것도 없을 테니까 그냥 깨끗한 합주시간표만 보인다. 그렇지만 데이터베이스에는 합주시간표를 위한 세팅이 완료되어 있으므로 phpMyAdmin으로 확인해보면 새로 생긴 테이블들이 보인다.


실제 설치 예제 주소

http://chaz.hol.es/timetable/index.php


직접 들어가서 어떤 식으로 쓸 수 있는지 확인해보시면 좋을듯 합니다.


어쨌든 나름대로 자세한 설명 완료 :)

'엥그니어링 > 도움글' 카테고리의 다른 글

구글 데이터 백업하기  (0) 2014.07.15
Inline Caching (인라인 캐싱)  (0) 2014.07.01
무료 웹호스팅 얻기 / 관리  (2) 2014.06.01
Favicon / 즐겨찾기 아이콘 등록  (3) 2014.06.01
JavaScriptCore  (0) 2014.04.24

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,


2014/05/31 - 밴드동아리를 위한 합주시간표


이 글을 올리면서 웹호스팅은 알아서 얻으세요 ㅎㅎ 했던 게 좀 불친절했을까, 싶어서 무료 웹호스팅 얻는 것부터 시작해서 합주시간표 설치까지 차근차근 정리해볼까 한다.

웹호스팅이란 쉽게 말하자면 넓디 넓은 인터넷의 세계에 내집 장만을 할 수 있는 공간을 마련한다는 것이고, 당연히 돈을 많이 지불하면 지불할 수록 더 좋은 환경을 준비할 수 있다. 그러나 어차피 개인 영세 웹사이트나 블로그에 있어서는 굳이 돈을 주고서 비싼 환경을 세팅할 필요는 없다.

무료로 제공하는 호스팅서비스 중에도 싸구려 유료 호스팅서비스보다 더 나은 것을 제공해주는 사이트들이 있기 때문이다. (주로 해외에..)


이번에 소개할 Hostinger 라는 곳은 무료답지 않게 2GB라는 넉넉한 파일 저장 공간과 100GB의 트래픽을 제공한다.



PHP와 MySQL 버전은 현재 이게 기본 설정이고, PHP버전은 버전 숫자에 걸린 링크를 클릭하면 변경도 가능하다.


이제 본격적으로 웹호스팅 얻는 방법 설명 들어갑니다이~




홈페이지에 접속하고 표시해놓은 대로 계정 생성 링크를 누르거나 지금 주문! 버튼을 누른다.



국내 서비스와는 달리 이메일만 입력하면 불필요하게 개인정보를 과하게 제공할 필요도 없다. 개인 컴퓨터라면 페이스북 계정이나 구글 계정 연동으로도 바로 가입이 가능하다. (아이콘만 누르면 자동으로 연동할지 말지 물어본다)


계정 생성을 완료했다면, 무료 호스팅을 신청해보도록 하자. 정상적으로 로그인했다면 웹페이지 안에 다음 그림과 같은 부분이 있을 것이다.

새로운 호스팅을 눌러본다.


뭐 돈 내고 좋은 서비스를 개설할 생각이라면 말리지는 않겠지만 하루 방문자가 몇천명 단위를 찍지 않는 이상 100기가바이트 트래픽이라면 정말 차고 넘치는 수준일 것이다. (속도는 느리다는 게 단점)

Order 버튼을 누른다.



도메인이라는 것은 쉽게 말해 웹사이트의 주소다.

도메인 타입은 호스팅업체에서 그냥 제공하는 서브도메인을 사용해도 좋고, (기본 설정)

혹시나 만약에 돈주고 산 도메인이 있다면 그것을 등록해도 된다.


서브도메인을 선택해놓은 상태에서 입력창 안에 freehosting 이라고 입력을 하고 뒤쪽의 선택창에서 esy.es 라는 것을 선택하면 내가 얻은 웹호스팅 서버에 접속할 때는 브라우저의 주소창에 freehosting.esy.es 라고 치면 된다는 것이다.


호스팅을 관리하기 위한 비밀번호와 비밀번호 재확인 창을 빈틈없이 입력하고 '계속' 버튼을 누르면 다 끝난 거다. 진짜로.


호스팅 얻기가 끝났다면 이제 본격적으로 뭔가 파일도 업로드하고 이것저것 해야 할 것이다.


이번에는 첫화면에서 

호스팅 이라는 글자 위의 숫자를 누른다. 내가 지금까지 호스팅받은 서비스 갯수대로 표시한다. 하나만 서비스받고 있다면 1이라고 나오겠지 뭐. (혹은 상단 메뉴의 호스팅 -> 모든 계정을 눌러도 된다)


내가 방금 신청한 도메인의 이름을 클릭하면 아래처럼 관리 / 웹사이트 빌더 / 자동 설치기 / Email Accounts 라는 대표적인 메뉴 4가지가 나온다.


'관리'를 누르면 관리메뉴 전체를 다 볼 수 있다. (상단의 메뉴에서 호스팅 -> 자신의 웹호스팅 도메인 선택해도 똑같은 페이지로 갈 수 있다.)


'웹사이트 빌더'는 홈페이지 제작이 미숙한 사람이나 일일이 만들기가 귀찮은 게으름뱅이를 위한 간단한 홈페이지 템플릿을 제공한다.


'자동 설치기'는 php언어를 기반으로 한 다양한 어플리케이션을 깔 수 있도록 해준다. 대표적으로 블로그 프로그램인 워드프레스나, 위키 프로그램인 MediaWiki, 쇼핑몰 프로그램도 있다.


'Email Accounts'를 누르면 내가 얻은 도메인으로 이메일을 받을 수 있다. 만약에 아까 freehosting.esy.es 로 도메인을 할당받은 상태에서 admin 이라는 이메일 계정을 얻었다면 admin@freehosting.esy.es 로 이메일을 받을 수 있는 것이다.

(확실히 이쪽은 무료 호스팅이라 용량이 적은가보다. 최대 늘려봤자 50MB밖에 안된다)


'관리'페이지로 돌아가보도록 하자.

웹사이트 관리하면서 가장 자주 볼만한 곳이 이쪽일 것이다.


Files 섹션을 먼저 살펴보자.

파일 관리자를 통해서 웹페이지 내에서 FTP 서비스를 이용할 수도 있고, FTP 접속 메뉴를 선택하면 이 웹사이트의 저장공간으로 연결되는 정보를 제공받을 수 있다.

FTP 프로그램으로는 FileZilla client 같은 프로그램이 있는데, 만약 써볼 생각이라면 다운받아서 설치한 후에 호스트, 사용자명, 비밀번호만 적고 (포트번호까지는 안적어도 된다) 연결을 하면 된다. 


그 밑에 Databases 섹션으로 넘어가자.

MySQL 데이터베이스 메뉴에서는 MySQL 이라는 데이터베이스 관리 시스템을 기반으로 한 데이터베이스를 만들 수 있다. (무료 호스팅이라서 그런건지 원래 그런건지, 해보면 알겠지만 데이터베이스명과 계정명에 호스팅 유저이름이 앞에 붙는다.)

그리고 여기서 만들어준 데이터베이스를 시각화해서 볼 수 있는 프로그램이 바로 phpMyAdmin 이다. php와 연동해서 MySQL을 administration 할 수 있어서 아마 저 이름이었던 것으로 아는데, 확실하지는 않다.


* 파일매니저나 FTP 프로그램을 써서 접속했을 때 기본 경로에 있는 default.php 이 파일이 도메인만 쳤을 때 나오는 기본 페이지이다.

이 파일을 삭제하고 다른 파일을 올리거나 (index.php, index.html, ... 이름과 확장자별로 우선순위가 다르다) default.php의 내용을 수정해야 도메인 이름만 쳤을 때 제대로된 메인페이지를 볼 수 있다.


자세한 사용 방법까지 다루려면 포스팅이 너무 방대해질 것 같아서 여기서 끊는다. 이 포스팅은 제목에서처럼 무료 호스팅을 얻는 방법까지만 소개하고, 그 이후에 웹페이지를 어떻게 채우느냐는 사용자 개개인의 몫일 것이다.


www.hostinger.kr


이후에 합주시간표 설치하는 방법을 소개해보도록 하겠다.



+ 2014-07-08 추가

무료 호스팅을 얻긴 얻었는데 어떻게 해야 할지를 모르는 분들을 위해서..



호스팅 관리 페이지에서 다음 부분을 찾는다. 그냥 파일관리자를 선택해도 되고, 동그라미 쳐놓은 파일 관리자 2를 선택해도 된다.


2번을 선택하면 나오는 화면에서 반드시! public_html 폴더 안으로 들어가야 한다. 지금 보이는 이곳에다가 파일을 올려놓으면 접근을 할 수가 없다. public_html 폴더 안으로 들어가서 보이는 곳에다가 파일을 올려야 한다.


안에 들어가면 노란색으로 표시한 아이콘이 보이는데, 왼쪽부터

새 디렉토리(폴더) 만들기, 새 파일 만들기, 업로드, Java파일 업로드, Flash파일 업로드이다. 이 메뉴를 통해서 파일을 업로드하면 된다.


오른쪽에서는 파일을 선택해서 복사하거나, 이동하거나, 삭제하거나, 이름을 바꾸거나, 권한을 바꾸거나, 내려받는 등의 이런저런 작업들이 가능하다.



+ 맨 처음에 호스팅을 받고나면 default.php 파일이 있을텐데, 삭제를 하거나 내용을 고쳐서 쓰도록 하자. 이걸 남겨두면 홈페이지 주소만 쳤을 때 public_html 디렉토리 안에 있는 파일 목록을 보여주는 기본 화면만 뜬다.

'엥그니어링 > 도움글' 카테고리의 다른 글

Inline Caching (인라인 캐싱)  (0) 2014.07.01
합주시간표 설치하기  (2) 2014.06.02
Favicon / 즐겨찾기 아이콘 등록  (3) 2014.06.01
JavaScriptCore  (0) 2014.04.24
Sublime Text 2  (0) 2014.03.06

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

파비콘 Favicon 은 favorite icon을 일컫는 말이다.


이렇게 웹페이지의 타이틀 옆에 표시되는 아이콘이다.


크롬에서는 파비콘이 등록있는 사이트를 즐겨찾기에 추가할 때 사이트 이름에 아무것도 적지 않으면 이렇게 파비콘 만으로 깔끔하게 표시되게 할 수 있다.


파비콘을 개인 홈페이지나 블로그 등에 추가하는 방법은 다음과 같다.


1.

컴퓨터나 안드로이드 폰에서 보이는 아이콘을 관리하려면 html파일의 <head>와 </head> 사이에 다음 줄을 추가하면 된다.


<link rel="shortcut icon" href="아이콘 파일 경로" />


합주시간표에 다음과 같은 그림을 파비콘으로 등록하였다. (이 글에는 편의상 .png 파일로)




그런데 아이폰에서 확인해본 결과 제대로 아이콘이 안뜨고 .ico 파일에 포함된 색깔에 따라서

나침반 아이콘의 배경색만 연두색으로 바뀌는 것을 확인하였다.




2.

좀 더 찾아보니 iOS 계열 사파리에서는 다음 태그를 써야 먹힌다고 한다. 추가할 위치는 똑같다.


<link rel="apple-touch-icon" href="그림 파일 경로" />


요즘 나오는 폰 해상도가 높다보니 그림 파일 크기는 최소 57*57 이상이어야 하는 것 같다.



아이콘 파일은 http://www.iconarchive.com/ 여기에서 구했다.

합주시간표에 쓸 거다보니 음표 표시되어있는 아이콘이 괜찮을 것 같아서 새로 다운받았다.


(http://www.iconarchive.com/show/ios8-setting-icons-by-uiconstock/sound-icon.html)

제작자 웹사이트: http://uiconstock.com/ios8-setting-icons-2014-ai/


png 파일을 크기별로 다운받고 용량을 확인했다. 72*72 짜리 아이콘은 용량이 꽤 크길래 48*48 짜리 png 파일을 ico 파일로 변환해서 쓰는 게 나을 것 같았다.


보통 그림파일을 아이콘 파일로 변환하는 것은 http://www.convertico.com/ 이곳에서 했다.


위쪽 창에 그림파일의 주소를 복사해서 붙여넣거나,

아래쪽의 BROWSE 버튼을 눌러 컴퓨터에 저장된 그림파일을 선택한 후에 GO 버튼을 누르면

오른쪽에서 이런 창이 떠서 변환된 아이콘 파일을 다운받을 수 있다.

이걸 FTP 클라이언트로 서버에 업로드를 하면 된다.


128*128 크기의 png 파일과 48*48 크기의 ico 파일을 둘 다 업로드하고 태그도 둘 다 추가했다.

이제 컴퓨터에서도 잘 확인되고 아이폰에서도 제대로 표시가 된다.




예쁘네 :)

ㅋㅋㅋㅋㅋㅋㅋㅋ

'엥그니어링 > 도움글' 카테고리의 다른 글

합주시간표 설치하기  (2) 2014.06.02
무료 웹호스팅 얻기 / 관리  (2) 2014.06.01
JavaScriptCore  (0) 2014.04.24
Sublime Text 2  (0) 2014.03.06
LaTeX  (2) 2014.01.06

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

자바스크립트코어(JavaScriptCore, JSC) 빌드 방법 및 어떻게 사용할지 내 나름대로 정리.



4/24


JavaScriptCore.pdf


pdf로 하니까 소스코드 부분은 짤려 나오겠구나

html 소스 복붙도 귀찮은데.............

'엥그니어링 > 도움글' 카테고리의 다른 글

무료 웹호스팅 얻기 / 관리  (2) 2014.06.01
Favicon / 즐겨찾기 아이콘 등록  (3) 2014.06.01
Sublime Text 2  (0) 2014.03.06
LaTeX  (2) 2014.01.06
맥시마(wxMaxima)에서 페이져 계산하기  (0) 2012.06.09

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

리눅스 다룰 일이 생겼다. 한 3년만인가.... 다 까먹어서 처음부터 명령어 다 공부해야 할 판.

연구실 선배님이 Sublime Text 라는 에디터를 알려주셨는데 일단 설치하는 것부터가 힘들었다.


그래도 확실히 설치하고 나니 단축키부터가 익숙치 않은 vim 보다는 윈도우에서 쓰던 에디터랑 비슷하게 쓸 수 있는 점이 좋다.


내가 설치한 방법은 다음과 같다. 검색해보면 다른 방법(더 좋은?)도 많은 것 같은데 그냥 왠지 이렇게 했다.

(물론 윈도우는 설치파일 다운로드 -> 실행하면 끝이니까 굳이 얘기할 필요는 없겠지.

게다가 설치가 필요없는 portable 버전도 제공한다..)


1. Sublime Text 홈페이지 (http://www.sublimetext.com/) 에서 tar.bz2 파일을 다운받았다.

이쪽은 우분투 13.10에서 파이어폭스로 Sublime Text 홈페이지에 들어갔을 때 보이는 다운로드 링크이다.

다운로드 페이지(http://www.sublimetext.com/2) 이쪽으로 들어가서 다른 버전을 선택할 수도 있다.

우분투든 뭐든 자기가 사용하는 리눅스의 비트 수에 맞춰서 다운받는다.

라지만 아래 내용은 내가 사용하는 우분투 13.10을 기준으로 하여 진행했다. 다른 배포판에서는 어떤 결과가 나올지 장담할 수 없다.



2. 압축을 풀면 홈 디렉토리에 "Sublime Text 2"라는 이름의 폴더가 생긴다.


2-1. 자동 압축 해제



요즘은 터미널 상에서 명령어 입력하지 않아도 윈도우랑 비슷하게 Extract 해주니 알아서 편한 방법으로 압축을 풀면 된다.



위쪽 옵션을 적용하고 Extract를 누르고 나오는 창에서 다시 한번 Extract를 누르면 홈디렉토리에 Sublime Text 2 라는 디렉토리가 생긴다.


2-2. 수동 압축 해제


파일을 다운받을 때 아래 옵션을 클릭하면 별다른 설정을 안했을 경우 홈 디렉토리 아래의 Downloads 디렉토리 아래에 다운이 된다. 그러면 터미널에서 아래 명령어를 입력한다.


$ tar -xvf ~/Downloads/Sublime\ Text\ 2.0.2.tar.bz2


(Tab 키를 적절히 이용하면 경로나 파일 이름을 다 치지 않아도 자동완성을 시켜주므로 편리하다)


이런식으로 압축이 풀린다. 터미널 열고 경로 이동을 안했으니까 홈디렉토리에 자동으로 압축이 풀린다.


3. Sublime Text 2 디렉토리를 옮기고 심볼릭 링크 생성


3-1. 디렉토리 이동


$ sudo mv Sublime\ Text\ 2 /opt/

$ sudo mv "Sublime Text 2" /opt/


터미널에 위 두개 중 한 명령어를 입력한다.

디렉토리 명에 공백이 들어가 있어서 그냥 'sudo mv Sublime Text 2  /opt/' 라고 하면 Sublime이라는 디렉토리, Text 라는 디렉토리, 2라는 디렉토리를 각각 따로 인식하게 되어버린다.

그래서 escape 문자인 백슬래시(\)를 써서 공백문자를 표현하거나, 큰따옴표(")로 묶어서 큰따옴표 사이에 있는 문자열이 통째로 이름이라고 알려줘야 하는 것이다.


3-2. 심볼릭 링크(윈도우 에서의 바로가기) 생성


$ sudo ln -s /opt/Sublime\ Text\ 2/sublime_text /usr/bin/sublime


방금 /opt/ 디렉토리 아래로 옮긴 Sublime Text 2 디렉토리 내의 sublime_text라는 실행기를 /usr/bin/sublime 이라는 이름으로 링크. 이것도(sublime) 길어서 불편하면 subl 등등 알아서.


위 사진처럼 심볼릭 링크를 sublime, subl 두개 다 만들어놓고 어느쪽으로 불러오든 실행이 되게 했다. 둘 중에 하나만 쳐보고서 안깔았나 싶어서 또 까는 멍청한 사태를 피하고 싶어서.


4. 터미널에서 sublime 이라고만 입력하면 바로 Sublime Text 2 실행 가능

subl 이라는 링크도 생성했으면 subl 이라고 써도 괜찮다.



주의할 점은 터미널에서 subl 실행한 다음에 다음 명령어 입력 위한 커서가 안 뜨는 것을 볼 수 있다.

저기서 강제종료 단축키(Ctrl+C)를 누르면 서브라임 텍스트 프로그램도 같이 꺼진다. 서브라임 프로그램 창을 닫으면 자동으로 명령어 입력 커서가 뜬다.

즉 터미널에서 subl 입력해서 서브라임 텍스트를 불러왔으면, 그걸 켜놓은 상태에서 터미널로 작업을 하려면 새로운 터미널 창을 켜야 한다는 말이다.


글 수정하기 귀찮아서 냅뒀는데 & 기호를 넣으면 처리를 백그라운드에서 지속하면서 명령어 입력을 받을 수 있다.

$ sublime &

이런 식으로.


단축키 Ctrl+ALT+T 애용하도록 하자.



+ 그런데 위 방법으로 터미널에서 sublime 실행할 때마다

(sublime:6711): Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap"

라는 에러 메세지가 뜬다. 구글링으로 좀 더 해결해봐야 할듯.


++ 위 문제는 gtk2-engines-pixbuf 설치로 해결했다.

sudo apt-get install gtk2-engines-pixbuf

(https://ubuntutechnical.wordpress.com/2011/11/07/gtk-warning-unable-to-locate-theme-engine-in-module_path-pixmap/)



여기까지는 단순한 설치기에 불과하고, 설치한 이후에 어떻게 써먹느냐는 또 다른 문제이다.

그래서 아래에 도움이 될만한 유용한 곳 링크를 적어드리겠다. 왜냐면 여기까지 쓰는 것도 매우 귀찮았는데 이미 친절한 누군가가 다 정리해놓은걸 내가 또 쓰자면 더 귀찮을 것 같아서...


Sublime Text 자세한 리뷰:

http://edoli.tistory.com/79


Sublime Text 유용한 단축키:

http://windtale.net/blog/sublime-text-tip/



+++ 그냥 막 써놓은 글이었는데 의외로 유입로그에서 많은 비중을 차지하길래 사진을 곁들여 조금 더 보충 설명을 해보았다. 하하하


++++ Chromium 프로젝트도 Sublime Text 사용을 권장하는지 아예 도움말 페이지(<-클릭)가 따로 있다.

'엥그니어링 > 도움글' 카테고리의 다른 글

Favicon / 즐겨찾기 아이콘 등록  (3) 2014.06.01
JavaScriptCore  (0) 2014.04.24
LaTeX  (2) 2014.01.06
맥시마(wxMaxima)에서 페이져 계산하기  (0) 2012.06.09
MIPS  (0) 2011.04.07

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

LaTeX

엥그니어링/도움글 2014. 1. 6. 16:28

※ sharelatex.com 에서, 컴파일러는 pdfLaTeX 사용.


그림 넣기


1. 일반 그림 넣기

\begin{figure}

    \includegraphics[attribute]{file_name}

    \caption{caption_text}

    \label{label_text}

\end{figure}


attribute에는

scale : 가로세로를 원본 그림 사이즈 대비한 배율로. scale=0.5 라고 하면 50% 크기로.

width : 가로 너비 지정. height 입력 없으면 너비에 비례해서 따라옴. ex) width=5cm

height : 세로 높이 지정. width 입력 없으면 높이에 비례해서 따라옴.


file name은 업로드한 파일에서 확장자 빼고 순수 파일명만 쓰면 됨.

(확장자는 다른데 같은 이름일 때는 확장자를 명시해야 하나? 그런데 그러느니 이름 다르게 하고 말지..)


2. 여러 개의 그림 한줄로 넣기(가로)

\usepackage{subfigure}


\begin{figure}

\centering

\mbox{%

\subfigure[subfigure_caption]{%

\includegraphics[attribute]{file_name}

\label{label_text}

}\quad

\subfigure[subfigure_caption2]{%

\includegraphics[attribute]{file_name}

\label{label_text2}

}}

\caption{figure_caption}

\end{figure}


3. 그림 인용

\ref{label_text}

자동으로 트래킹해서 번호를 매겨주고, subfigure일 경우에는 (a), (b), (c), ... 까지 자동으로 붙여줌

(테이블에도 label, ref 사용 가능)

새로운 그림을 넣거나 있던 그림을 삭제할 때마다 일일이 문서 전체 훑으면서 숫자 바꿔줄 필요가 사라진다는 얘기.



리스트 구성


http://en.wikibooks.org/wiki/LaTeX/List_Structures

참조

'엥그니어링 > 도움글' 카테고리의 다른 글

Favicon / 즐겨찾기 아이콘 등록  (3) 2014.06.01
JavaScriptCore  (0) 2014.04.24
Sublime Text 2  (0) 2014.03.06
맥시마(wxMaxima)에서 페이져 계산하기  (0) 2012.06.09
MIPS  (0) 2011.04.07

WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,