기본 콘텐츠로 건너뛰기

git commit 버젼 정보를 이용한 배포 버전 관리

cvs를 사용하다가 svn을 사용하니깐 편해졌다고 느끼고 있었는데 git을 사용하니깐 차원이 다른 편함이네요.  자유로워진 느낌이랄까.  회사를 옮기면서 버젼 관리 고민하다가 컴파일되어서 배포되는 파일들이 많아서 git commit hash 값으로 하면 관리하기 편할것 같아서 찾아보니 좋은 정보가 있어서 공유합니다. powershell로 되어있는데 python으로  약간 수정해서 사용하고 있습니다.  일단 버젼에 대한 고민이 없어진것 같아서 좋은것 같네요... 다른 분들은 어떻게 관리들 하시는지 궁금하네요??? ㅋㅋ python코드 공유합니다.  hash/email/날짜 git log -n 1 --format="%h - %H%n%ae%n%ai" c197222 - c197222f052002126ede8ec71b4fb1e655c29722 eek@메일주소 2014-02-05 19:25:00 +0900 변경확인 컴파일전에 commit안된 것들 있는지 확인 git ls-files --exclude-standard -d -m -k | wc -l  생성된 버젼 sample version.h파일 생성 version생성 스크립트 make_version.py 요약 commit hash/email/date 추출 파일들 commit 되어 컴파일되어있는지 확인 version.h파일 생성  컴파일 후 배포  끝. 참고:  http://blog.didenko.com/2013/11/version-inventory.html

windows에서 python 2.7 + paramiko 설치하기

linux사용할때는 gcc가 있어서 그냥 모듈들 다운받아서 사용했는데 귀찮아짐에 따라서 pip그냥 사용할려구요 packing할것도 아니고 그냥 개인적인 util이나 개발에 사용할려고 pip사용 pip install pyCrypto pip install paramiko 컴파일 해야하는 모듈이 있는것 같네요. cygwin이나 이런것 사용할려고 하다가 visual stdio 가 설치되어 있어서 일단 visual stdio사용 해서 "VS2013 x86 네이티브 도구 명령 프롬프트" 모드로 실행 64bit컴파일 하실분은 "VS2013 x64 네이티브 도구 명령 프롬프트" 모드로 실행하심 됩니다. 컴파일 할려고 하니깐 ㅇㅅㅇ);;;;; 컴파일 오류....... C:\Python27\Scripts\pip run on 02/05/14 13:45:09 Downloading/unpacking pyCrypto   Getting page https://pypi.python.org/simple/pyCrypto/   URLs to search for versions for pyCrypto:   * https://pypi.python.org/simple/pyCrypto/ ..... building 'Crypto.Random.OSRNG.winrandom' extension warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath. error: Unable to find vcvarsall.bat  2013버젼 인경우에 환경 변수 추가해야하네요... 다시 pip실행하니깐 잘 컴파일 되네요. ㅎㅎ pip를 사용하니깐 신세계가 두둥~~~~ 좋네요. 환경설정 visual stdio 2013 SET VS90COMNTOOLS=%VS120COMNTOOLS...

내부 IP 장비 yum update하는 하기!!! (proxychains + ssh tunnel)

내부 IP를 사용하는 장비를 최신커널이나 시스템 update하는 경우 ssh tunnel를 이용하는 방법과 iptable를 이용하여 route 하는 방법이 있음. 내부 network이 제어가능 하면 iptable을 이용하는 경우가 더 쉽고 편하지만. 일단 가능하지 않는 경우 ssh tunnel을 이용 update하는 방법입니다.  proxychains 설치. http://proxychains.sourceforge.net/ $ ./configure $ make $ make install A ( 외부IP1 , 내부IP1 ) B ( 내부IP2 ) 1. A 장비 ( 54321 ) 포트 (tunnel 생성) ssh -f -N -D 54321 localhost ssh 아이디2@B내부IP2 -R6666:localhost:54321 2. B장비 (proxychains 환경설정) Setup /etc/proxychains.conf to use the forwarded socks proxy: [ProxyList] # SSH reverse proxy socks4  127.0.0.1 6666 3. 설치확인 (dns lookup test) $ proxyresolv ftp.daum.net |S-chain|-<>-127.0.0.1:6666-<><>-4.2.2.2:53-<><>-OK 211.62.252.36 4. 시스템 업데이트 ( 업데이트) $ proxychains yum update $ proxychains apt-get update 5. 오류처리 ERROR: ld.so: object 'libproxychains.so.3.0.0' from LD_PRELOAD cannot be preloaded: ignored. 이런 메시지가 발생하면 proxychains,   proxyresolv을 vi로 LD_P...

glog 를 이용하여 SIGSEGV 스택정보 파일로 저장하기.

unix계열에서  c/c++로 코딩하면 전체 core파일을 용량때문에 남기기 힘든데 glog를 사용하면 sigsegv가 발생해도 stack정보를 남길 수 있는 function을 제공합니다. #include #include #include #include int fd = 0; void write_to_core(const char* data, int size) { write(fd, data, size); } int main(int argc, char *argv[]) { InstallFailureWriter(write_to_core); InstallFailureSignalHandler(); InitGoogleLogging(argv[0]); fd = open("core.txt", O_CREAT | O_WRONLY , 0644); int a = 10 / 0; return 0; } 참고: http://google-glog.googlecode.com/svn/trunk/doc/glog.html

ctags 사용법

소스코드 하위디렉토리 있는 소스코드 분석시 tag를 만들어야하는 makefile에 등록해서 사용하는 방법입니다. tag: rm -rf tags cscope.files find src \ \( -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o \ -name '*.h' -o -name '*.hpp' \) \ -print > cscope.files ctags -L cscope.files 참조:  http://simjesun.blog.me/30092545252 참고:  http://www.iamroot.org/xe/index.php?mid=Lecture&document_srl=42646

svn diff a.c 를 하면 vimdiff로 바로 보이게 하려면

svn diff a.c 를 하면 vimdiff로 바로 보이게 하려면 vimdiff.sh를 만들고 ~/subversion/config 에 diff-cmd를 추가하면 vimdiff로 diff를 확인 할 수 있습니다. $ more ~/bin/vimdiff.sh #!/bin/sh while test $# -gt 2; do shift; done vimdiff $@ $ cat ~/.subversion/config | grep diff-cmd diff-cmd = vimdiff.sh 참고: http://kldp.org/node/52160#comment-20069 1

Oracle Instant Client + sqlldr install

Instant Client Downloads + SQL*Loader 설치 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 아래와 같이 버젼에 따라서 3가지를 다운로드 합니다. basic, sdk, sqlplus instantclient-basic-linux.x64-11.2.0.3.0.zip instantclient-sdk-linux.x64-11.2.0.3.0.zip instantclient-sqlplus-linux.x64-11.2.0.3.0.zip 설치되어있는 oracle 에서 rdms , nls , sqlldr 를 복사합니다. cp -r /home/oracle/product/10/rdbms ~eek/usr/instantclient_10_2/ cp -r /home/oracle/product/10/nls ~eek/usr/instantclient_10_2/ # 파일 복사 cp -r /home/oracle/product/10/bin/sqlldr ~eek/usr/instantclient_10_2/ # 권한설정 chown -R eek.eek ~eek/usr/instantclient_10_2/ # 환경변수 등록 export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601 export ORACLE_HOME=/home/eek/usr/instantclient_10_2 export ORA_NLS10=$ORACLE_HOME/nls/data

oradiag_??? 로그 생성안되게 하는 방법

cx_Oracle이나 oci로 개발된 프로그램을 사용하다 보면 $HOME에 orgdiag_사용자계정으로 로그가 대량으로 저장되는 경우가 발생합니다. 이런 경우에 로그가 남지 않도록 하던지 아님 다른 경로에 저장하는 방법은  아래와 같은 방법으로 처리할 수 있습니다. 로그 안남기는 방법은. 환경변수에 추가 export TNS_ADMIN=/home/eek/conf/ 해당경로에 sqlnet.ora파일 생성해서 DIAG_ADR_ENABLED=off TRACE_LEVEL_CLIENT=off LOG_FILE_CLIENT=/dev/null 설정값을 추가하면 로그 파일이 생성되지 않음. 자세한 설정 정보는 http://docs.oracle.com/cd/B28359_01/network.111/b28317/sqlnet.htm#BIIDEAFI 참고하세요. 끝.

python xlsx으로 저장하기

openpyxl를 사용하면 간단하게 사용 할 수 있음. 다운 받는곳 http://ericgazoni.wordpress.com/2011/10/31/openpyxl-1-6-6/ https://bitbucket.org/ericgazoni/openpyxl/src sample code #!/usr/bin/env python from openpyxl.workbook import Workbook from openpyxl.writer.excel import ExcelWriter from openpyxl.cell import get_column_letter wb = Workbook() dest_filename = r'empty_book.xlsx' ws = wb.worksheets[0] ws.title = "range names" for col_idx in xrange(1, 40):     col = get_column_letter(col_idx)     for row in xrange(1, 600):         ws.cell('%s%s'%(col, row)).value = '%s%s' % (col, row) ws = wb.create_sheet() ws.title = 'Pi' ws.cell('F5').value = 3.14 print dir(wb) wb.save(filename = dest_filename)

applescript를 이용한 iterm 자동로그인

expect를 이용해서 자동로그인을 만들면 해상도 문제가 생겨서 불편한데 applescript를 이용해서 사용하면 그런 문제가 없네요. 일단 소스코드를 접속아이피 부분과 비밀번호 부분을 수정 후 finder에서 실행하면 applescrpipt편집기가 실행 됨. "실행" 아이콘 클릭하고 실행이 정상적으로 잘 되면 파일 > 별도저장 > 파일포맷: 응용 프로그램 으로 선택하고 저장하면 실행파일이 생성됨. 끝. tell application "iTerm" activate set myterm to (make new terminal) tell myterm set mysession to (launch session "default") tell mysession write text "telnet 접속아이피" delay 1 write text "비밀번호" end tell end tell end tell

Linux 대용량(2T이상) 마운트

parted명령어로 GPT파티션을 설정하면 mount 됨. $ parted /dev/sdb # gpt파티션으로 만듬 (parted) mklabel gpt                                         Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes # gpt인지 확인 (parted) print                                                           Model: DELL PERC 6/i Adapter (scsi) Disk /dev/sdb: 2999GB Sector size (logical/physical): 512B/512B Partition Table: gpt         #<-- gpt Number  Start  End  Size  File system  Name  Flags (parted) mkpart primary 0 2999GB   # <--파티션 생성 Warning: The resulting partition is not properly aligned for best performance. Ign...

python HTTP session 유지하기

Python을 이용해서 로그인 Session을 유지 하는 방법 요약. import cookielib, urllib2 cj = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) home = opener.open("http://login url...") home2= opener.open("data url") # 결과 print home2.read()

blogger app으로 포스팅

모바일페이지나 만들어주지 사진 첨부나 이런것 할 수 있어서 좋은것 같지만...

python에서 excel파일 만들기

python에서 excel파일 만드는 간단한 설명 요약 xlrt  -- 엑셀파일 읽는 모듈 xlwt -- 엑셀파일로 저장하는 모듈 엑셀파일 생성 간단 샘플 >>> import xlwt >>> book = xlwt.Workbook() >>> sheet1 = book.add_sheet('Sheet 1234') >>> sheet1.write(0,0,'A1') >>> sheet1.write(0,1,'B1')                   >>> book.save('sample.xls') #!/usr/bin/env python # coding: iso-8859-1 import sys,os,glob import xlwt def main(): if len(sys.argv) < 2: print "Usage: %s csvfileDir" % sys.argv[0] print "Example: %s ./out " % sys.argv[0] os.exit() fileList = glob.glob("%s/*.csv" % sys.argv[1]) fileList.sort() book = xlwt.Workbook() for file in fileList: sheetName = file[ file.find("/")+1: file.find(".") ] sheet = book.add_sheet( sheetName ) i = 0 j = 0 f = open(file) for line in f: data = line.strip...

ssh를 이용한 tunneling

ssh -fN 아이디@ssh가설치되어있는_아이피 -L 리슨아이피:포트:원격아이피:열고싶은포트 ssh -fN eek@10.0.0.2 -L 10.0.0.1:1234:10.0.0.2:3306 client -> 10.0.0.1:1234 으로 접속하면 10.0.0.2:3306으로 접속됨.. 참고: 10.0.0.1에 1234포트가 방화벽설정되어 있는지 확인해야함. ------------------------------------ ssh -fN -L포트:최종서비스IP:최종서비스Port 아이디@중간에거쳐가는ssh서버 로컬에 -L뒤에 포트로 최종서비스되는 IP/Port에 접속가능하도록 중간 ssh서버를 거쳐가는 방법임.

mac(osx)에서 netspot이용하기

맥북에서 랜카드 맥어드레스 변경해서 이용하는 방법 일단 아이폰이 있어야함 ㅇㅅㅇ);;  참고: netspot으로 인증하라는 메시지가 나오면 iphone으로 한번 접속 후에 아이폰 netspot삭제하고 하시면 잘 되네요. 아이폰 맥어드레스 확인 후 아이폰 맥어들스 기록 맥북에서 "다른 네트웩 연결" 선택 후 dummy입력하고 연결 초과 일때 터미널에서.   sudo ifconfig en1 ether 00:00:00:00:00:00( 00:00:00:00:00:00 는 아이폰 wifi 주소를 입력)  sudo ifconfig en1 ether 00:00:00:00:00:00 . ifconfig en1이 ether이 변경되어있는지 확인 후 netspot연결 끝. ㅎㅎ mac address는 맥북용 기록하거나 reboot하면 다시 원복됨. 참고:  http://jhlee330.blogspot.com/2010/08/mac-address.html macbook air 는 en0가 무선랜카드입니다. en1를 en0로 변경해서 명령어를 실행하면됨.  

mac telnet iterm 한글입력

맥북에어 회사에서 사용중인데 ssh로는 한글입력이 한글입력이 잘되는데 telnet 으로는 안되는군요. 간단한 방법은 접속 후 ctrl + ] 입력하고 telnet >가 나오면 "set bin" 입력하면 입력이 잘되는 군요 그래도 안되면 shell 상태에서 export LC_ALL=ko_KR.UTF-8 입력해보세요. 요약: telnet xxx.xxx.xx.xxx 접속 ctrl + ] telnet> set bin $ 한글입력 시험. or $ export LC_ALL=ko_KR.UTF-8 입력후 $ 한글입력 --- 참고 shell상태에서는 한글입력이 되는데 vim에서 안되면 .vimrc에 추가함. set fileencodings=ucs-bom,utf-8,default,euc-kr,latin1 추가함. 참고사이트: http://blog.naver.com/PostView.nhn?blogId=heehow&logNo=140122706972