기본 콘텐츠로 건너뛰기

3월, 2014의 게시물 표시

[SQL] how to copy a bulk of records from a table into another in sql

======무식한 방법====== INSERT INTO table1 ( column1-1, column1-2, ...) VALUES ( (SELECT column2-1 FROM table2 WHERE column2-x = 9999 ), (SELECT column2-2 FROM table2 WHERE column2-x = 9999 ) ); -- 이것은 하나에 대한 것이다. 여러개를 하는 방법도 마땅찮다. ======더 좋은 방법====== INSERT INTO table1 ( column1-1, column1-2, ...) SELECT colume2-1, column2-2, ... FROM table2 WHERE colume2-x IN (SELECT column3-y FROM table3 LIMIT A, B) Ex) INSERT INTO table1 (no, title, name, address ) SELECT number, title, given_name, home_address FROM    table2 WHERE  number IN (SELECT unique_no FROM table3 LIMIT 0, 100);

[루비] 루비 관련 전자책(HTML/PDF) 링크

source: http://jhrogue.blogspot.kr/2013/01/blog-post_26.html 루비 프로그래밍 언어는 간결하면서도 표현력이 막강한 객체지향형 스크립트 언어로 松本行弘가 1995년에 만들었다. 웹 개발을 위한 오픈 소스 프레임워크인 루비 온 레일즈에 이어 최근에는 시스템 관리 부문의 오픈 소스에서도 많이 사용되면서 인기를 끌고 있으므로 다들 관심이 많을 것이다. 오늘은 오라일리의 'The Ruby Programming Language'의 한국어판인 '루비 프로그래밍 언어'를 소개하고, 부록으로 참고할만한 다른 전자책 링크를 정리해보겠다. 프로그래밍 언어 서적의 마술사인 데이비드 플래너건과 루비의 창시자인 유키히로 마츠모토가 공동으로 집필했기에 기대치가 상당히 높았다. 아니나 다를까 인터넷에서 살펴본 다른 전자책과는 달리 루비 프로그래밍 언어의 철학과 동작 원리를 꼼꼼하게 설명하려고 노력한 결과 루비 프로그래밍 언어에 대한 미묘한 부분까지도 짚고 넘어간다(1.8과 1.9의 차이점에 대해서도 상당히 세부적으로 파고든다). 하지만 기존 스크립트 형식의 프로그래밍 언어(특히 파이썬이나 펄)에 익숙한 개발자이거나 함수형 언어를 이해하는 개발자에게는 좋은 친구로 다가올지 몰라도, 처음으로 스크립트 언어를 배우는 사람이 읽기에는 구성이나 설명 방식이 절대 만만하지 않다. 오라일리 책의 공통적인 특성인 코드 조각 내기로 인해 뭔가를 따라서 진행하고픈 초보자들에게도 장벽은 높기 마련이다. 하지만 손쉬운 지침서만 읽어서는 독학으로 알아내기 어려운 여러 가지 루비 언어의 특성을 설명하고 있기에 일단 쉬운 책부터 한 권 독파하고 이 책으로 넘어오면 어떨까 하는 생각이 들었다. 목차를 보면 '소개' 부분이 나오고 차례로 프로그램 구조/실행 방법, 데이터형/객체, 표현식/연산자, 문장/제어구문, 메서드/proc/lambda/클로저, 클래스/모듈, 리플렉션/메타프로그래밍, 루비 플랫폼, 루비 환경

[ssh 리버스터널링]

source:  http://www.mirutopia.com/xe/index.php?mid=board_develop&listStyle=webzine&sort_index=readed_count&order_type=asc&document_srl=4865 외부에서 접속이 불가능한 PC로 원격 접속을 하려면 reverse tunneling 이 필요합니다. 우선 외부에서 접속이 불가능한 PC를 (A)라고 하고, 외부에 있는 PC를 (B)라고 가정합니다. 1. (A)에서 ssh를 통해 (B)로 reverse tunnel을 열어줍니다.  ssh -R <(B)의 터널링 포트>:localhost:<(A)의 터널링 포트> <(B)의 계정>@<(B)의 도메인, 또는 IP> -p <(B)의 ssh 포트> ex) ssh -R 1234:localhost:22 test@test.example.com -p:22 - 이렇게 하면 (A)에서 test.example.com의 PC에 port 22로 ssh 접속을 시도합니다.(패스워드 입력 필요)    접속이 성공하면 test.example.com의 PC에서 port 1234로 접속을 할 때, (A)의 port 22로 접속이 이루어집니다. 2. (B)에서  <(B)의 터널링 포트>로 접속. ==>  <(A)의 터널링 포트>로 연결됨.    - putty나 기타 ssh 클라이언트 프로그램을 이용하여 접속 가능. 회사 컴퓨터가 외부 접속에서 불가능할 경우, 유용한 방법이네요. 아.. (A)에서 linux나 cygwin에 ssh 서버가 설치되어 있어야 가능한 방법입니다. -------------------------------------------------------------------------------------------------------------------------

[SSH] SSH접속시 맨처음 뭔가 저장하겠냐고 물어보는 이유

source: http://www.phpschool.com/link/tipntech/73245 SSH접속시 맨처음 뭔가 저장하겠냐고 물어보는 이유 - 한줄요약 : 비대칭 암호화 기술의 거의 유일한 구멍 하나의 책임소재를 당신에게 전가시키기 위함(?) 금융거래용 공인인증서, ssl(https) 서버인증서, SSH, SFTP등등은 모두 "비대칭 암호화 기술"을 기반으로 합니다. 비대칭 암호화에 대해 검색해보면 암호화를 할떄랑 복호화를 할때 사용하는 키가 다르다 라고 나오는데요 그냥 간단하게 말해서, 암호화할때랑 복원할때 전혀 다른방식으로 해야한다는 겁니다. 그리고 한가지 더 특징은 암호화는 아무나 할수 있지만, 복원은 아무나 못하게 하는게 목적이죠. 예를들어서 12345 라는 아주 중요한 데이터가 있다고 합니다. 여기에 1000000000 을 더하면  1000012345 가 되겠죠? 이게 암호화한겁니다. -_-; 그리고 이 때 1000000000 라는 숫자가 바로 암호화 키 가 되는겁니다. 이제 복원해 봅시다. 물론 1000000000를 빼면 복원되겠지만 지금은 그러면 안되죠. 비대칭이니까 복원할때 사용하는 키는 달라야 하니까요 그러면 500000000씩 두번 빼면 어떨까요? 그래도 복원은 되겠지만 이번엔 키가 다르죠? 자 정리해보면 다음과 같죠. ------------------------------------------------------ 암호화 알고리즘 : 키값을 더한다. 복호화 알고리즘 : 키값을 두번 뺀다. 암호화키 생성 알고리즘 : 아무렇게나 생성 복호화키 생성 알고리즘 : 암호화키를 반으로 나눈다. ------------------------------------------------------ 이제 새로운 비대칭 암호화 알고리즘이 탄생한겁니다. -_-;; 물론 지금껀 극히 단순하고 초등학생

[GIT] How do I clone into a non-empty directory?

source:  http://stackoverflow.com/questions/2411031/how-do-i-clone-into-a-non-empty-directory reference:  http://stackoverflow.com/questions/9864728/how-to-get-git-to-clone-into-current-directory git init git remote add origin PATH/TO/REPO git fetch git checkout -t origin/master Note: 만약 origin/master에 있는 폴더나 파일 이름이 같은 것이 존재한다면 아래와 같은 에러를 뿜는다. fatal: git checkout: updating paths is incompatible with switching branches. Did you intend to checkout 'origin/master' which can not be resolved as commit? 그 외의 경우엔, 아래와 같은 시나리오로 잘 공존하게 된다. user-id@localhost:/tmp$ touch FILE1 user-id@localhost:/tmp$ ls -al 합계 8 drwxrwxr-x  2 user-id user-id 4096 Mar  5 11:38 . drwxrwxrwt 21 root    root    4096 Mar  5 11:38 .. -rw-rw-r--  1 user-id user-id    0 Mar  5 11:38 FILE1 user-id@localhost:/tmp$ git init Initialized empty Git repository in /tmp/.git/ user-id@localhost:/tmp$ git remote add origin http://git-id@git-server-ip/repository.git user-id@localhost:/tmp$ git

[GIT] How to set up a Git Server Over HTTP(s) in Redhad Distros.

How to set up a Git Server Over HTTP(s) in Redhad Distros. On the Server 1) root@server# yum install apache2 git-core 2) root@server# cd /usr/local/apache/htdocs root@server# mkdir test-repo.git root@server# cd test-repo.git root@server# git --bare init root@server# git update-server-info root@server# chown -R www.www . #don't miss this trailing dot at the end. 3) root@server# root@server# vi /etc/httpd/conf/httpd.conf .... LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule authn_file_module modules/mod_authn_file.so .... 4) root@server# root@server# vi /etc/httpd/httpd.conf .... ############################### # Virtual Hosts Configuration # ############################### <VirtualHost *:80>     DocumentRoot /usr/local/apache/htdocs     ServerName example.xxxxx.com     ServerAlias www.example.xxxxx.com     DAVLockDB "/etc/httpd/conf/DAV.lock

[GIT] troubleshooting, 문제해결

상황 : id@localhost:/tmp$ git clone http://git-id@server-ip/repository.git 에러메시지 : Cloning into 'repository'... Password for 'http://git-id@server-ip': error: The requested URL returned error: 401 (curl_result = 22, http_code = 401, sha1 = 1f04a0510878ca1d46f9146bd5e5646eb79ada02) error: Unable to find 1f04a0510878ca1d46f9146bd5e5646eb79ada02 under http://git-id@server-ip/repository.git Cannot obtain needed commit 1f04a0510878ca1d46f9146bd5e5646eb79ada02 while processing commit 772da5f18c4cba1b926781fb70895b5d6f6d3ef5. error: Fetch failed. 해결방법 : Doing a git cleanup   git gc   should fix the problem. Run   git gc   on the folder where the git repo is hosted and that should fix the problem. 출처:  http://stackoverflow.com/questions/5251262/git-clone-over-http-fails-curl-result-22-http-code-401 ------------------------------------------------------------------------------------------------------------------- 상황 : git pull origin master 에러메시지 : error: U

[BASH SHELL] Show IFS value

source: http://www.fvue.nl/wiki/Bash:_Show_IFS_value Problem How do I check the value of the IFS (Internal Field Separator) variable? The default value is  space ,  tab  and  newline  so  echo $IFS  would show me just whitespace... Solution 1: od $ echo -n "$IFS" | od -abc 0000000 sp ht nl 040 011 012 \t \n 0000003 Solution 2: cat $ echo -n "$IFS" | cat -vTE ^I$ Restore default IFS $ IFS=$' \t\n' Backup and restore IFS $ OLDIFS=$IFS IFS=$'\n' $ # do something $ IFS=$OLDIFS

[GIT] How to set up a Git Server Over HTTP(s) in Ubuntu Servers

Reference: http://blog.bobbyallen.me/2012/07/23/installing-a-git-server-using-apache-webdav-on-ubuntu-server-12-04/ https://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.html How to set up a Git Server Over HTTP(s) in Ubuntu Servers On the Server 1) root@server# apt-get update root@server# apt-get install apache2 git-core 2) root@server# cd /var/www root@server# mkdir test-repo.git root@server# cd test-repo.git root@server# git --bare init root@server# git update-server-info root@server# chown -R www-data.www-data . 3) root@server# root@server# a2enmod dav_fs 4) root@server# cat > /etc/apache2/conf-available/git.conf <Location /test-repo.git> DAV on AuthType Basic AuthName "Git" AuthUserFile /etc/apache2/passwd.git Require valid-user </Location> 5) root@server# htpasswd -c /etc/apache2/passwd.git <user-id> 6) root@server# /etc/init.d/apache2 restart On the client side 1) Push to Remote