기본 콘텐츠로 건너뛰기

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_PRELOAD 경로를

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

unix계열에서  c/c++로 코딩하면 전체 core파일을 용량때문에 남기기 힘든데 glog를 사용하면 sigsegv가 발생해도 stack정보를 남길 수 있는 function을 제공합니다. #include <cstdio> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 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