중요도나 용도에 상관없이 제가 자주 사용하는 MySQL의 툴과 명령어를 정리해 보았습니다. 개인적인 참조로 쓰기 위한 것이므로 자세한 설명은 생략하였습니다. 자세한 내용은 한국 MySQL의 메뉴얼 페이지를 참조하세요. OS X에서 mysql 설치는 제 이전 포스트를 확인하시면 됩니다

* 데몬 시작
> mysqld_safe --user=[아이디] &

* 종료
> mysqladmin -u [아이디] -p[패스워드] shutdown

* 재실행
> mysqladmin -u [아이디] -p[패스워드] reload

* 계정 추가
localhost가 %일 경우 모든 IP에서의 접근을 허용합니다.
mysql> grant all privileges on [database].* to [아이디]@"localhost" identified by "[패스워드]"

* 패스워드 변경
mysql> SET PASSWORD FOR [아이디]@localhost=PASSWORD('[패스워드]')  

* 테이블 필드 변경
명령어별 옵션은 아래와 같습니다.
  • add : add [기존필드] [타입] after [필드]
  • change : change [변경될 필드]  [새로운 필드명] [타입]
  • drop : drop [삭제될 필드]

mysql> ALTER TABLE [테이블 명] (add | change | drop) ...

* 데이터 백업
데이터 백업 시 아래와 같이 사용합니다. 테이블 명을 생략하면 database의 전체 테이블을 백업합니다. 자주 쓰이는 옵션은 아래와 같습니다.
  • -d:  테이블 생성 정보만 백업
  • -f: 데이터만 백업

> mysqldump -u [아이디] -p[패스워드] [database] [테이블 명] > [파일명]

* 테이블 검사
mysql>CHECK TABLE [테이블 명]

* 테이블 복구
mysql>REPAIR TABLE [테이블 명]

repair로 고쳐지지 않는 다면 쉘에서 아래와 같이 시도합니다.
> myisamchk -safe-recover [mysql data path]/[테이블 명]

* 바이너리 로그
MySQL은 select와 같은 데이터에 변동이 없는 내역을 제외하고 data 디렉토리에 바이너리 로그로 저장합니다. 아래와 같이 mysqlbinlog로 텍스트화 된 내용을 확인할 수 있으며, 변경된 내역을 가지고 있기 때문에 데이터 복구시에도 사용할 수 있습니다.
> mysqlbinlog [로그파일 명]

* 파일로 저장
mysql>SELECT * INTO OUTFILE "[filename]" FROM [테이블 명];

엑셀에서 사용하기 위해 CSV(Comma Separated Value) 포맷으로 저장할 경우에는 아래와 같이 사용합니다.
mysql>SELECT * INTO OUTFILE "[filename]" FIELDS TERMINATED BY ',' FROM [테이블 명];

* CSV 파일 로드
LOAD DATA LOCAL INFILE "[CSV 파일패스]" INTO TABLE [테이블명] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
"로 필드가 구분되었을 경우에는 ENCLOSED BY '\"'를 추가합니다.

* 테이블 최적화
mysql>OPTIMIZE TABLE [테이블 명]

* mysqladmin
서버의 상태를 감시하고 동작을 제어 합니다. 명령어들은 아래와 같습니다.
  • ping : 서버가 실행중인지 확인합니다.
  • status: 현재 서버의 상태를 출력합니다.
  • processlist: 실행중인 쓰레드의 정보를 출력합니다.
  • kill [Id]: 특정 쓰레드를 종료합니다.
  • variables: mysql 환경변수 값을 출력합니다.

> mysqladmin -u [아이디] -p[패스워드] 명령

* 쉘에서 UTF8
character_set_client가 latin1로 되어 있으면 mysql 쉘에서 한글이 깨어져 나오는 경우가 있습니다. 아래와 같이 현재 문자셋을 알아 봅니다.
mysql> show variables like '%char%';

character_set_client이 utf8로 되어 있지 않을 경우에는 my.cnf 파일에서 아래와 같이 설정합니다.
[mysql]
default-character-set = utf8

'기타 > 자잘한 Tip' 카테고리의 다른 글

Xcode에서의 Ruby on Rails  (8) 2008.08.20
Dashcode로 올블로그 RSS 위젯 만들기  (2) 2008.05.22
flex2 - xml을 이용한 동적 메뉴 예제  (0) 2008.02.01
PHP에서 RSS 가져오기  (0) 2007.12.08
OS X에 MySQL 설치  (4) 2007.10.12
AND

사용자 삽입 이미지

녹스퀘스트님의 '위젯이 동작하지 않는다'는 댓글을 보고 확인해 보니,
이전에 올린 위젯이 현재 맥 OS X에서 동작을 하지 않아 수정하여 다시 올립니다. 대쉬보드를 거의 사용하지 않았더니 언제부터 동작하지 않았는지는 잘 모르겠습니다.

올블로그의 RSS는 변경된 것 같지 않고 확실하지는 않지만 아마 OS X에서 보안 관련 패치가 되면서 동작하지 않은 것 같습니다. 방식을 변경해서 동작하도록 만들어서 다시 업로드 합니다. 필요하신 분들은 다시 설치 하셔야 할 것 같습니다. 아래의 파일을 다운로드 받으신 후에 압축을 푸시고 위젯 아이콘을 더블클릭하시면 다시 설치됩니다. 불편을 드려 죄송합니다.

'습작 소프트웨어' 카테고리의 다른 글

광고 차단툴 - AntiAD  (7) 2008.04.18
파일명 일괄 변환 툴  (2) 2008.04.11
티돌이(티스토리 알리미) 윈도우 버젼  (4) 2008.02.06
티돌이 1.0B  (24) 2008.01.07
티돌이 0.7B  (2) 2007.11.08
AND

Xcode를 많이 사용해 보지도 않았고, 간단한 샘플 몇가지만 만들어 본 초보 사용자라 아직 Xcode가 어떻다는 평가를 하기는 어렵습니다. 하지만 주관적인 취향이지만 Xcode 코코아의 GUI 개발 방식이 저에게는 편하게 느껴집니다.

저는 위자드에서 소스코드를 생성해 주는 방식을 선호하지 않습니다. 당장의 편리함과 속도면에서는 손해를 볼 수도 있지만 내가 사용하는 변수와 함수를 직접 타이핑함으로써 존재와 용도를 확실히 인지하고 있는 것이 소스를 이해하고 관리해 나가는데 더 많이 도움이 되기 때문입니다.

그런면에서 Xcode는 최소한의 코드를 생성해 내고 인터페이스빌더에서는 소스코드 자체에는 영향을 주지 않는 것(class 파일을 생성해 주는 일은 합니다)이 좋습니다. 이에 반해 MS의 VC++에서는 Xcode의 코코아에서 보다 훨씬 많은 파일과 코드를 자동으로 생성합니다.

또한 다이얼로그 ID, 컨트롤-변수 연결 정보, 메시지-함수 연결 정보등이 헤더나 소스파일에 기록됩니다. (MS의 개발툴중 VC만 이에 해당되는 것 같습니다) 하지만 Xcode에서는 IBAction, IBOutlet으로 변수와 함수들이 Nib의 객체들과 관련이 있는 것만 나타냅니다.

이는 OS X의 Nib 파일이 리소스, 사용자 인터페이스와 더불어 class, instance, 바인딩과 같은 객체와 연결에 대한 다양한 정보를 가지고 있지만 VC의 .rc파일에서는 객체와 연결정보 등을 가지고 있지 않고 이에 관련된 부분을 소스코드에서 관리하기 때문인 것 같습니다.

또한 코코아에서 생성하는 실행파일은 많은 부분을 컴파일하는 시점 보다 실행될 때 연결되는 동적 바인딩을 사용하고 있기 때문에 소스파일에 존재하여 같이 컴파일 되지 않아도 되기 때문인 것 같습니다.

반대로 VC++에선 rc에 있는 UI, 기타 리소스에 대한 정보와 코드의 연관관계를 소스에서 명확하게 확인할 수 있어 좋습니다. Xcode에서는 그런 정보들이 Nib파일에 들어 가고 인터페이스 빌더에서 관리하기 때문에 소스코드만 보아서는 어떤 객체와 어떻게 연결되었는지 정확히 알 수 없습니다. (하지만 잘된 명명규칙을 따랐다면 쉽게 짐작할 수는 있을 것입니다)

이전 포스팅에서 Xcode에서 소스코드에 아무런 변경없이 간단한 GUI 어플리케이션을 만드는 작업을 해보았습니다. VC++였으면 모든 연관 관계의 작업이 코드에 추가되었을 것입니다. 소스코드는 복잡해 지지만 소스코드만 보면 어떻게 연관되어 있는지 어떤 동작을 하는지 짐작할 수 있을 것 입니다. Xcode에서는 인터페이스 빌더에서 확인해야만 명확하게 알 수 있습니다. 대신 소스코드는 매우 간결합니다.

저는 소스코드가 간단하고 툴이 많은 부분 소스에 관여하는 것 보다는 소스코드가 제 취향과 입맛대로 직접 입력한 내용으로 구성되어 있다는 면에서 Xcode의 방식이 더 편하게 느껴집니다. 이 부분이 Xcode의  본래 설계의도인지 애플이 인력이 부족해 아직 신경을 쓰지 못하는지는 모르겠습니다.

실용주의 프로그래머란 책에선 '자신이 이해하지 못하는, 마법사가 만들어 준 코드는 사용하지 말라'고 합니다. 이유에 있어서 많은 부분 동의 하지만 VC++ 6.0의 클래스 위자드를 사용하지 않거나 기타 다른 툴에서 위자드나 속성창을 이용하지 않고 타이핑에 의한 코딩만 해야 한다면 그리 좋은 방법 같지는 않습니다. 일단 위자드로 생성해 놓고 올바른 위치로 재배열 하는 것이 좋지 않나 생각됩니다. 책에서도 이해하고 사용해라 정도의 의미인 것 같습니다.

툴 자체로만 놓고 본다면 VC++이 분명히 Xcode보다 편리성과 다양한 기능을 가진 더 잘 만들어진 툴입니다. 하지만 꼭 다양한 기능을 가지고 많은 부분을 자동화 해주는 툴이 모든 사람들이 개발하기에 좋다고는 할 수 없을 것 같습니다.

만약 툴이 배려하지 않은 작업을 해야 할 때나 자동으로 처리되는 부분에 있어 변경이 필요할 시에는 더 복잡한 작업을 해야하며 쓸데 없는 내용을 알아야 할 때가 있기 때문입니다. 또한 아무리 도움을 준대도 툴이 지나치게 참견하는 것을 싫어하고 제 손으로 해야만 직성이 풀리는 저같이 깝깝하게 막힌 사람도 있으니까요.

인터페이스 빌더에서 마우스로 드래그 하여 오브젝트들을 연결하는 모습과 오브젝트와 정보들을 Nib란 파일에 순간 냉동포장하여 저장하는 방식은 상당히 재밌습니다. 아마 일반적인 GUI 개발툴에서 자주 보던 방법이 아닌 다소 독특한 Xcode의 개발방법이 익숙치 않고 신선하기 때문에 단점을 묻어 두고 좋은 평가를 내리는지도 모르겠습니다. 익숙해지면 또 어떤 생각이 들지 모르겠네요.

'개발 툴' 카테고리의 다른 글

실버라이트2 둘러보기  (10) 2008.12.16
프로젝트 관리 도구 OpenProj  (2) 2008.03.21
OS X의 파이썬  (0) 2008.02.20
Java 교육용 프로그램 Greenfoot  (0) 2007.12.23
Xcode에서 Flex - Hello World 작성  (0) 2007.12.12
AND