본문 바로가기

분류 전체보기

티스토리 블로그 해킹 관리 부주의일까?...아니면 계정 정보 유출일까? 다음에 신고는 하겠지만 상당히 석연치 않은 부분이 있는 것이...누군가가 블로그를 훼손하려 했다면 다른 포스팅 글을 삭제하거나 내용을 변경하는 행위를전혀 하지 않은 것과, 암호도 그대로 유지 되고 있던 것으로 보아서는, 어딘가 Backdoor가 있어서 특정 영역만 건드린 것이 아닌지 하는 생각이 스멀스멀 드는 상황이다. 우선 블로그 이름이 "." 으로 바뀌어 있고, 소개 글이 지워져 있다. 그리고 여자흥분제...어쩌구 하는 광고 비슷한 글이 5개 등록되어 있네.흠... 음란물이나 사행성 내용은 아니지만...상당히 기분은 거시키하다. 다음으로 HTML/CSS편집에서 확인된 납치태크 한눈에도 허접해 보이는 저 스크립트들... 기본 정보에 1차도메인으로 되어 .. 더보기
Silent mode Oracle 11gr2 설치 - CentOS 5.5 x64, cloudn VM에서 LGU+ 회사의 클라우드(cloudN) 환경의 가상머신(VM,Virtual Machine)에 oracle 11gR2를 설치해 보았다. 대개 서버 설치시에 X-window를 포함하지 않는 경우가 많으므로, java 와 GUI가 제공되는 그래피컬 환경(일반적으로 주로 사용하는 OUI 모드)이 아닌, 텍스트 기반의 서버 환경에서 설치를 진행한다(구글은 이 Silent mode를 침묵 모드라는 말로 멋지게 번역해 준다). 이론은 간단한 듯 하지만, 실제로 해 보면 결코 그렇지만은 않다. 특히 response 파일 설정에서, 다소의 시행착오와 installer 재실행을 몇 번 해 보아야 한다. 일단 한 번 해 보면 어렵지 않게 누구나 따라서 설치 가능하도록 소상하게 과정을 다루도록 하겠다. 다만, 서버에 오라클을.. 더보기
MongoDB 백업(dump)와 복구(restore) MongoDB를 백업하는 방법에는 Journaling을 지원하는 Block 장치일 경우 snapshot, lock & fsync, mongodump & mongorestore 등의 여러 가지가 있다. mongo.org 에 의하면 증분 백업(incremental backup)을 지원하지는 않고 있으며, 아직까지 이러한 기능을 수행하는 도구 또한 존재하지 않는 상황이다. 데이터베이스 엔진이 중단되지 않아야 하는 상황의 경우 dump & restore를 통한 방법이 일반적이므로 아래에 그 사용법에 대해 정리해 둔다. 이 방식은 쉽게 표현하자면 단순히 레코드 단위로 백업(dump)을 받고, 복구시에도 레코드 단위로 insert를 반복적으로 수행하게 된다. [mongodump] # 전체 데이터베이스 Full ba.. 더보기
HammerOra로 DBMS 성능 측정하기(TPC-C) -2 이전 글을 포스팅 하고 보니 의외로 HammerOra 를 사용해서 DBMS 벤치마킹을 하는 작업이 단순하지 않다는 생각이 들어, 따라하기 버전의 테크니컬 리포트 하나 정도는 만들어 둠이 좋을 듯하여 같은 제목 일련번호 2를 붙여 추가로 포스팅한다. 실제로 구글링, 네이버링을 해서 국내나 해외사이트들의 HammerOra 관련 정보를 찾아 보아도, 반드시 알아 두고 체크해 주어야 하는 데도 불구하고, 그에 대한 주의사항이 없는 경우가 많다. 그래서 더 이상 정상적인 진행이 되지 않는 경우가 대부분이며, 심지어 HammerOra 매뉴얼에서 조차, 진행 과정에 대한 명확한 설명이 명료하게 되어 있지 않은 부분도, 본 글을 추가하는 이유 중의 하나이다. 글을 보시는 분들 중, 개인적으로 데이터베이스 성능 측정을 .. 더보기
HammerOra로 DBMS 성능 측정하기(TPC-C) -1 최근(2015.4)에 HammerOra에서 HammerDB 로 이름이 변경되었고, Oracle TimesTen, Redis 등도 지원하는 등, 꾸준한 변화를 보이고 있네요. HammerOra('해머오라' 라고 읽자. 의미는 'Hitting Oracle with a Hammer'라고 한다) 는 시중에서 별 다른 제약 없이 사용해 볼 수 있는 거의 유일한 Open Source DBMS 성능 측정 툴이고, TPC-C, TPC-H 등 요즘 주로 사용하는 성능측정 방법을 구현해 놓은 것으로http://hammerora.sourceforge.net 에서 Linux/MS-Windows(X86/X64) 용으로 각각 빌드된 패키지를 다운로드 받아서 사용할 수 있다. 더구나 각 플랫폼 별로 간단 설치법과 심지어 해당 DB.. 더보기
mailx로 linux prompt(shell)에서 테스트메일 전송하기(smtp) Linux prompt에서 간단히 아래의 sample 형태로 smtp 서버를 통해 메일 발송을 테스트해 볼 수 있다. Shell script에서 특정 작업 수행시에 Alert 메일 발송에 응용해볼 수 있겠다. echo -e "HELLLLLLLLLLLO\nThis is a test mail\nTime: `date +%Y:%m:%d-%H:%M:%S`" | env MAILRC=/dev/null from=admin@frommail.co.kr smtp=mail.frommail.co.kr smtp-auth-user=admin@frommail.co.kr smtp-auth-password=password smtp-auth=login mailx -v -n -s "subject is test for `date +%Y:%m.. 더보기
mysqld: Table './mysql/proc' is marked as crashed and should be repaired 5.1.X~5.5.X 까지도 가끔 발생되는 오류인데mysqldump 를 실행하면 로그상에 보이는 오류메시지이다. [ERROR] mysqld: Table './mysql/proc' is marked as crashed and should be repaired[Warning] Checking table: './mysql/proc' 이 때는 mysql 유틸리티에 포함된 mysqlcheck 을 사용하여 해결할 수 있다. # mysqlcheck --repair mysql proc -uroot -ppassword 더보기
날짜 데이터를 찾는 Perl 정규식 데이터 마이그레이션 등 작업시 날짜 데이터 부분, 즉 '2011-08-23 11:24:56' 으로 된 부분만 찾아서 now 와 같은 것으로 바꿀 필요가 가끔 있을 때 요긴하다. '[12][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]) [0-2][0-9]:[0-5][0-9]:[0-5][0-9]' 년도: 1 또는 2로 시작하여 0 ~ 9 사이의 값으로 3자리가 채워지며,월: (0으로 시작하는 경우 뒤에 1~9 사이의 값) 또는 (1로 시작하는 경우 뒤에 0~2사이의 값),일: (0으로 시작하는 경우 뒤에 1~9 사이의 값) 또는 (1또는 2로 시작하는 경우 뒤에 0~9사이의 값) 또는 (3으로 시작하는 경우 뒤에 0 또는 1)... 더보기
IOS5 iPhone 4s, iPad2 완탈 소식 드디어 나왔나... 여기에 관련 소식 있음 iPhone 4s, iPad2 최신으로 갈아타고도 탈옥이 되지 않아 목말라했던 세월 어언 수 개월~ http://cydiahelp.com/download-greenpois0n-absinthe-for-windows-to-jailbreak-ipad-2-iphone-4s/ (리눅스, Mac 용으로도 출시되었음) * 주의 사항 ABSINTHE 다운로드 받고, OS detect되고 Jailbreak 누른 후 대략 20~30분 가량 지난 후에 Waiting for reboot - not done yet, ... 메시지에서 아이폰/아이패드 화면이 켜지기만 기다리면, ... 목 빠진다. 만약 이 상태에서 수 십분이 지나도 더 진도가 나가지 않는다면 어딘지 모르지만 문제가 발생.. 더보기
MySQL 수동 동기화 - Master read lock 또는 shutdown 없이 동기화 하기 상용 운영 상태에서 Database를 shutdown하는 의사 결정이 쉽지 않은데, 2대의 Replication 데이터베이스들의 동기화가 깨졌을 때는 이 방법을 쓰도록 한다. Dual Master 구성일 경우 M1:10.0.3.71, M2:10.0.3.72, 동기화할 대상 DB는 my_db 라고 가정하고 아래와 같이 진행한다. 단, 양쪽 데이터베이스를 모두 Running 상태로 유지하되, Read/Write 작업은 M1(동기화 원본) 쪽에서만 일어나는 상황이어야 한다. M1> slave stop; M1> reset slave; M2> slave stop; M2> reset slave; M2> drop database my_db; M2> create database my_db; M1# mysqldump -.. 더보기
MongoDB Replica set 활용(v2.0+ 기준) Mongo DB를 사용한 Replication은 그 조합과 목적에 따라 여러 가지 구조로 구현된다. Master-Slave 이중화 및 다중화, Master-Master 이중화, Master-Master Circular 구조의 다중화, Cluster 기술이 적용된 Replica Set 등, ... 결국은 데이터베이스의 고가용성을 갖추기 위한 목적은 같지만 말이다. 가장 대표적이고 단순한 것은 Master-Slave이다. 이를 통해서 Data redundancy는 구현되지만, Fail-over 문제, 자원의 비효율적 사용 때문에 Master-Master 구조를 선호하는 것이 일반적이다. 또한 그 구조도 비교적 단순하며 Fail-over 를 통한 Availability 뿐 아니라 Read/Write 부하의 분.. 더보기
Qmail + vpopmail - 수신 제한 & 큐에 쌓인 메일 정리하기 1. 메일 큐 내용 확인 및 정리(qmHandle 사용) # wget http://sourceforge.net/projects/qmhandle/files/qmhandle-1.3/qmhandle-1.3.2/qmhandle-1.3.2.tar.gz/download # tar xvzf qmhandle-1.3.2.tar.gz # cd qmhandle-1.3.2/ # vi qmHandle --> perl script의 가장 앞 쪽 설정 부분에서 my ($stopqmail), my ($startqmail) 의 변수 값을 실제 사용하는 것으로 변경 예) /etc/init.d/qmaild stop, /etc/init.d/qmaild start # cp qmHandle /var/qmail/bin/ # qmHandle -l.. 더보기
GlusterFS 3.2.2 - CentOS client에서 Gluster Volume 마운트 하기 (참고)Opensuse 에서는 본 과정이 필요하지 않았음. CentOS에서 별도로 ctype의 설정이 필요한 것을 보면 RHEL 등의 redhad 계열에서 모두 필요한 과정으로 보임. Dependancy: fuse, fuse-devel, flex, bison, python-devel, ctype 위의 의존성 있는 패키지들을 모두 설치하여야 한다. 단, ctype은 기본 centOS repository 에 포함되어 있지 않으므로 Source로 다운로드해서 빌드한다. # wget wget http://downloads.sourceforge.net/project/ctypes/ctypes/1.0.2/ctypes-1.0.2.tar.gz # tar xvzf ctypes-1.0.2.tar.gz # cd ctypes-.. 더보기
MySQL 5.5(Percona 5.5.15-21.0 stable) Master-Master replication * 2011/09/22에 update됨 * MySQL이 MySQL 5.5 부터는 SemiSync 라는 쓸만한 기능으로 Availability가 더 향상되었다. 즉, M-S1S2 형태의 Replication에서 M의 Transaction과 S로의 binlog write가 병렬로 처리되며(Master가 Slave의 binlog로의 전송을 보장, 동기=sync), S의 binlog에서 Storage 로의 write 는 비동기(async)로 처리된다(==> 반동기=SemiSync) [참조] http://www.mysqlkorea.co.kr/gnuboard4/bbs/board.php?bo_table=develop_03&wr_id=73 * 기존의 5.1.x 대에 비해서 script의 위치나 Replication 설.. 더보기
Opensuse 11.4 scim을 버리고 nabi 0.99.9 로 갈아타기 * 본 정보는 Opensuse 12.1 에도 그대로 적용 가능하다.Opensuse 에 기본으로 제공되는 scim(xim)은 terminal 에서 한글 입력이 거의 안된다. 무슨 말인지 모르겠다면 직접 설치해서 gedit 이나 chrome 에서 한글을 입력해 보면 된다. 아마도 '우리는' 이라고 치면 '우루는' 이라고 입력되는 꼬락서니를 볼 수 있을 것이다. * 선행 패키지 설치(su - 로 root 로 변신) # zypper in -y gcc make autoconf libhangul libhangul-devel -> http://code.google.com/p/libhangul/downloads/list 에서 libhangul 최신 버전 확인 -> wget http://libhangul.googleco.. 더보기
Haproxy - Master/Backup 설정에서 MySQL alive check 방법 Haproxy 의 option mysqlchk 로 DB 의 가용 여부를 점검하는 데에 쓸 수 있으나 정상적인 점검이 정확하게 되지 않으며, MySQL의 connection을 잠식하는 문제점이 있다. 단순히 DB 접속 port만 감시하는 방법도 쓸 수 있으나, DB의 정상 가동여부를 체크하는 방법으로는 적합하지 않다. xinetd service와, 간단한 db connection & query script를 이용 Assumption: MySQL home - /user/service/mysql Thanks to Unai Rodriguez(script author) & Sysbible(http://sysbible.org/) 1. script 작성 # cd /user/service/mysql/bin; vi my.. 더보기
Percona - Xtrabackup 1.4 유틸리티의 innobackupex 스크립트 오류 extrabackup은 incremental backup을 지원하지만 innodb에 대해서만 가능하므로 MyISAM등의 복합적 엔진구성인 경우 작동하지 않는다. 이러한 경우 MySQL에서 제공하는 innobackupex base의 Percona 수정판 perl utility로 백업을 할 수 있다(innobackupex-1.5.1). 하지만 이 perl source에 버그가 숨어 있어서, 실행하면 "Invalid version format (non-numeric data) at /usr/bin/innobackupex-1.5.1 line 1708." 와 같은 에러를 뱉어 내므로 아래와 같이 수정한다. ... } else { $perl_version = chr($required_perl_version[0]) .. 더보기
Linux cvs repository 복구 왠지 모르게 cvs의 설정과 복구과정에 대해 헛갈려 하는 cvs 사용자들을 위해 작성 cvs 서버의 장애로 1. 새로운 머신에 cvs server를 설치하고 2. repository를 초기화 한 후 3. Local PC의 최종버전의 파일들을 밀어 넣는 방법으로 복구하는 과정이다 1. cvs server 설치(root) # apt-get install cvs cvsd xinetd openssl ubuntu가 아닌 Suse, Centos(or Fedora)는 zypper, yum 등을 통해서 설치 # groupadd cvsgrp # useradd -M -g cvsgrp -s /bin/false cvs 2. Repository 초기화 # mkdir /home/cvs # cvs -d /home/cvs init .. 더보기
MySQL Tip - caution for 'not found handler' MySQL에서 NOT FOUND exception은 Cursor Fetch 시에만 발생한다. 따라서 update 아래의 IF 문 내의 처리는 의도한 대로 동작하지 않는다. 즉, 코더의 의도는 Update 문을 실행해서 해당 데이터가 없다면 If 문 내의 문장이 처리되기를 원한 거겠지만, 아래의 이 IF 문 내의 문장은 전혀 실행되지 못하게 된다. DECLARE MyErr INT default 0; DECLARE CONTINUE HANDLER FOR NOT FOUND set MyErr = -1; ... UPDATE table SET COL = 'data' WHERE KEY_COL = 'key data'; IF MyErr < 0 THEN statements_for_not_found...; END IF; 또한.. 더보기
MySQL Tip - General log 활용 Database 내에서 발생하는 모든 쿼리들을 logging할 필요가 있을 때 SHOW VARIABLES LIKE 'general_log'; SHOW VARIABLES LIKE 'log_output'; SET GLOBAL general_log = 1; SET GLOBAL log_output = 'table'; -- 필요시에만 켜서 사용 SET GLOBAL general_log = 0; SET GLOBAL log_output = 'file'; -- 평상시에는 이렇게 disable해 두어야 엔진의 성능에 부담이 가지 않으므로 주의 Query logging table: mysql.general_log * MySQL에서는 milli-second 단위로 시간을 처리하지 않으므로 timestamp는 초 단위까지만 .. 더보기
Opensuse 11.3 pv domU by http install at Fedora 14 dom0 앞 선 포스팅(Fedora 14 Dom0 Kernel (Xen 4.0.1-6) 설치 - Virtual Machine 사용을 위한 준비)의 후속으로 동일 환경에서 Opensuse 11.3 vm(pv)를 설치해 보자. Network install은 ftp, http, nfs 등의 몇 가지 방법이 있다. 몇 개월 전의 포스팅에서 Local web server를 이용한 network install을 다루어 본 적이 있었던 것 같다. 이번에는 CDRom이나 DVD 또는 ISO 이미지가 없을 경우에 인터넷만 연결되어 있다면 어디서나 간편하게(사실 시간은 좀 걸릴 것이다. remote 공개된 repository server를 통해 부팅 및 설치를 해야 하므로...) 설치해 보는 방법을 테스트 해 본다. * 주의 : .. 더보기
iSCSI initiator로 Fedora 14의 Disk volume(iSCSI Target) 마운트 1. Disk 공간을 제공할 서버측 설정 Fedora 14 x86_64(Xen Dom0) 12GB LVM logical volume = /dev/mapper/vg_myLogVol03 * iSCSI를 통해 LVM logical volume, disk partition 또는 디스크 전체 또는 dd로 생성한 sparse 파일(dd if=/dev/zero of=/tmp/aaa bs=...) 까지도 마운트 해 줄 수 있다 설치 및 준비작업을 아래와 같이 진행한다 # yum install scsi-target-utils.x86_64 # yum install iscsi-initiator-utils.x86_64 # service iptables stop # system-config-firewall => port 326.. 더보기
Fedora 14 Dom0 Kernel (Xen 4.0.1-6) 설치 - Virtual Machine 사용을 위한 준비 Fedora에는 Xen kernel이 포함되어 있지 않다(FC13 기준). 따라서 Xen 관련 패키지들과 함께 Kernel을 Xenify 하고 여러가지 설정을 손봐주어야 한다(이 점은 OpenSUSE 11.3과 판이하게 다른 점이라 하겠다). 이번 포스팅은 http://wiki.xensource.com/xenwiki/Fedora13Xen4Tutorial 의 내용을 토대로 했지만 실제 그대로 따라 해 보면 안되는 경우가 더 많다. 몇 가지 빠진 사항도 있고 설치 환경이 달라서 벌어지는 문제일 듯하다. 사실, 이런 종류의 일들은 해 보면 별 것 아닌 것 같지만 과정 자체가 추리와 유추가 난무하는 수사극과 비슷하다는 생각을 하게 된다. 더구나, 이번 설치는 Lenovo thinkpad T60(Intel 945.. 더보기
OpenSUSE 11.3 kernel 2.6.34.7-0.5-xen, Xen 4.0.1에서 windows hvm quest 설치 Host(Dom0) - Lenovo thinkpad T60, Ram1.5g - OpenSUSE 11.3, Kernel 2.6.34.7-0.5 x86_64 - Xen 4.0.1_01-84.1 x86_64 Guest - Windows XP SP2 1. Xen & libvirt upgrade openSUSE 11.3에서 virtualization package를 설치하면 Xen 4.0.0이 설치된다. 우선 이를 4.0.1 최신 버전으로 upgrade를 진행한다. Xen & Kernel rebuild로 진행하는 방법도 있겠으나 여기서는 rpm 설치를 통해서 진행하는 방법을 택한다. * Reboot후 xen kernel이 아닌 일반 kernel로 시스템을 시작한다. * wget으로 아래의 url내의 file들을 .. 더보기
iPhone 3G-WiFi Tethering 실험 - Updated to 4.9.10 희소식!! 4.9.9, 버전 뿐 아니라 11/13 현재 최신 버전인 4.9.10에서도 리붓 없이 통하도록 바뀌었다. http://hackstor.blogspot.com/2010/02/mywi.html 참고 1. 기존 버전(4.8.x)을 Uninstall 2. 4.9.10을 Cydia에서 설치 3. 아이폰의 ip를 확인하고 ssh로 접속 4. /var/stash/Applications.iYEHI8/MyWi.app 디렉토리에서 MyWiApp 파일을 변경 #!/bin/bash Path=$(dirname "$0") ddd=$(exec "date" "+%Y-%m-%d %T") x=exec "date" "-s 2010-mm-dd" { sleep 3; exec "date" "-s $ddd"; } & exec "${P.. 더보기
로봇 물고기의 카리스마 넘치는 자태 이건 유럽 모델 시제품인가보다 어느 분 걱정처럼 다른 물고기가 놀랄 거 같으니 ㅡ_-;; 요렇게 얌전하게 생긴 넘으루다가 흠? 근데 이 사진은 아무리 봐도 CG 같은데...--;;;;; 옆에 내 블로그 사진 바라쿠다 물고기처럼 얇고 강렬한 녀석이면 더 좋겠구만 ㅎㅎㅎ 원래 1m짜리 국산 신기술제품이 나왔더랬는데 너무 커서 다른 물고기 놀랄까봐 크기를 반이하로 줄이고 3-5마리로 편대를 구성해서 제 각각의 임무를 띄는 분산 방식으로 바꿨다던데...헤엄처서 물살 거슬러 올라가려면 어느 강은 이 넘들이 못견디고 떠내려 가게 생겼고, 물이 너무 얕으면 애들이 땅바닥에 처박혀서 바둥거릴텐디 애고 불쌍해라 쩝. 사대강 돌아다니면서 바둥거리는 로봇 물고기 밧데리 갈아주고 고장수리해주는 전파상 아웃소싱 사업이 뜰지도 .. 더보기
아이폰 DFU모드 진입 공장초기 상태로 복원되고, iTunes에서 다운로드 받은 최신 부트롬으로 재설정하기 위해 DFU모드를 설정한다. 1. iTunes를 실행한 상태로 아이폰을 usb로 연결하고 Sleep버튼을 길게 눌러 전원 Off 2. Sleep버튼과 Home버튼을 동시에 누르고 10초 가량 있으면 사과가 나온다 3. 사과가 나오자 마자 Sleep버튼에서 손을 떼고, 홈버튼은 계속 누른채 유지하고 있으면 아이폰이 연결되었을 때 나오는 삐리릿 소리가 난다. iTunes에 복원할 기기가 발견되었다고 팝업창이 뜨면 복원을 시작 더보기
CentOS 5.4, MySQL build를 위한 패키지들 (MySQL은 Percona XtraDB 5.1.49 기준) binutils automake libtool bison make termcap libtermcap.x86_64 libtermcap-devel.x86_64 gcc gcc-c++.x86_64 libstdc++.x86_64 ncurses ncurses-devel.x86_64 glibc.x86_64 glibc-common.x86_64 glibc-devel.x86_64 glibc-headers.x86_64 glibc-utils.x86_64 더보기
Excel 2007 - 프로그램으로 명령을 전송하는데 문제가 있습니다 [포스팅AS, 2013년 10월] 3년 전의 문제인데, Windows OS도, 그 위에서 돌아가는 MS Office도 만들 수 있는 기술을 가진 회사에서 왜 이런 사소하다면 사소한 문제를 해결 못하고 일일이 설정을 다시 만져 주어야 하는지 모르겠다. 사용자가 실수를 하거나 몰라서 이런 일이 생긴다거나 할 경우라도, 명확한 예방/해결 방법을 제시하는 것이 참 무던히도 어려운 일인가보다. 이 정도로 하고 넘어가자. Windows 계열의 데스크탑 환경에서 MS Office 2003, 2007, 2010을 쓰다 보면 간혹 만나는 황당한 경우이다. 탐색기 등에서 Xls 파일을 더블클릭하면 파일이 Excel에서 열려야 되는데 어느 날 갑자기 다음과 같은 메시지를 뿌리며 오류창이 떠 버리고 파일이 로딩되지 않는 현상.. 더보기
MySQL replication : Statement-Based vs. Row-Based replication * Reference : http://www.qijoo.com/FAPM/mysql/5.1/MySQL_51_en/ch06s12.html [Statement-based] - MySQL 3.23 부터 존재해 온 검증된 기술이다 - 상대적으로 log 파일 크기가 작다. 특히 다량의 update/delete의 경우에 효과가 크다 log 크기가 작으면 저장공간에 부담이 적고 빠른 백업이 가능하다 - log 파일에 모든 변경 내용이 저장되어 DB audit 에서 사용 가능하다 - log 파일은 replication 용도 뿐 아니라, 적절한 시간과 지점에서의 recovery에 사용될 수 있다 - Slave는 Mater와 다른 더 새로운 버전의, row 구조가 다른 MySQL로도 적용될 수도 있다 - UPDATE문에서의.. 더보기