분류 전체보기
-
[Linux] sudo 실행 시 비밀번호 미리 입력하여 실행하기서버 2016. 12. 19. 17:47
제목 그대로 맨 처음 'sudo [명령어]...' 실행 시 비밀번호를 입력하라는 prompt 창을 확인할 수 있습니다.$ sudo vi test Password: 불가피하게 sudo로 명령어를 실행하고 추가적인 prompt창 없이 바로 실행하도록 하고싶을 때 아래와 같이 사용합니다.echo '비밀번호' | sudo -S 명령어 # 예시 $ echo '1234' | sudo -S vi test.txt 여기서 sudo의 -S 옵션은 sudo가 표준 입력으로부터 암호를 읽도록 합니다. 만약 이미 sudo [명령어]를 사용해 비밀번호를 이미 입력한 다음, 위와같이 실행하면 sudo의 액세스 토큰이 활성화가 되어 있어 에러가 발생할 수도 있습니다. 이러한 액세스 토큰을 리셋하기 위해선 아래와 같은 명령어를 입력합..
-
[PostgreSQL] psql 명령어DB/PostgreSQL 2016. 12. 16. 18:02
postgres 데이터베이스에 postgres 유저 접속$ psql -U postgres -d postgres postgres 사용자의 암호:psql에 지정한 비밀번호로 접속$ PGPASSWORD=password psql -U postgres -d postgres psql (9.5.4) 도움말을 보려면 "help"를 입력하십시오. postgres=#psql에서 query 실행$ PGPASSWORD=password psql -U postgres -d postgres -c 'select * from test'psql에서 .sql 파일에 저장되어 있는 쿼리 실행$ PGPASSWORD=password psql -U postgres -d postgres -f test.sql $ PGPASSWORD=password..
-
[PostgreSQL] function (저장 프로시저)DB/PostgreSQL 2016. 12. 16. 16:47
postgresql의 function을 설명하기에 앞서 먼저 저장 프로시저를 설명하겠습니다. 타 데이터베이스에서 부르는 저장 프로시저는 PostgreSQL의 function (이하,. 함수)와 같은 개념이기 때문입니다.저장 프로시저란?저장 프로시저란 SQL 로 만든 함수입니다. 이 함수에 여러 SQL문을 작성해 사용합니다.사용 이유단위 하나로, 작업을 만들어 저장 할 수 있기 때문입니다. 모든 이유는 오로지 이 이유 때문입니다. 이 이유 때문에 얻게 되는 건 언어에서 함수를 사용 할 때 얻게 되는 이점과 같습니다. 예를 들어 작업이 단위로 구분되어 있어 디버깅이 쉬워지고 관리 또한 편해지고 반복작업을 없앨 수 있습니다.여기에 SQL 만이 얻는 장점이 하나 추가 할 수 있는데, 바로 보안입니다. 특정 유저..
-
[Shell Script] if ... else 조건문언어/쉘 스크립트 2016. 12. 16. 13:52
쉘 스크립트에 조건문을 사용하는 여러 방식이 있지만 그 중 한 가지 방식만 아래에서 소개합니다.문법if [조건문];then 내용 elif [조건문];then 내용 . . . else 내용 fi예시# test.sh #! /bin/bash if [ "a" == "$1" ]; then echo "1" elif [ "b" = "$1" ]; then echo "2" else echo "0" fi 결과 $ ./test.sh 0 $ ./test.sh a 1 $ ./test.sh b 2조건문을 사용할 때 조심해야 할 점은 대괄호 양 사이에 한 칸을 꼭 띄워써야 됩니다. 만약 붙여서 쓰게되면 에러가 발생합니다. 예를 들어 if ["a"=="$1"] 이와 같이 썼을 경우 실행 시 에러가 발생합니다. 또한 조건문에서 문자열..
-
[Shell Script] Command line arguments (인자 값) 처리언어/쉘 스크립트 2016. 12. 16. 13:29
쉘스크립트 파일을 실행할 때, 사용자가 입력한 인자 값은 순서대로 받을 수 있습니다. #! /bin/bash echo $# # 입력된 인자 값 echo $0 # 쉘스크립트 파일 실행 명령어 echo $1 # 첫 번째 인자 값 echo $2 # 두 번째 인자 값 echo $3 # 세 번째 인자 값 echo $4 # 네 번째 인자 값위와 같이 test.sh 파일을 저장합니다. $ ./test.sh 0 ./test.sh $ ./test.sh aaa 1 ./test.sh aaa $ ./test.sh aaa bbb 2 ./test.sh aaa bbb위와 같이 입력된 인자값을 순서대로 처리할 수 있습니다.
-
[Shell Script] test.sh 실행법언어/쉘 스크립트 2016. 12. 16. 13:20
파일생성 $ sudo vi test.sh #! /bin/bash # bash를 사용하려면 왼쪽과 같이 선언하고 본쉘을 사용하려면 /bin/sh를 선언 echo "test"위와 같이 입력하고 저장 권한변경파일을 생성한 다음, 바로 실행을하지 못하므로 실행할 수 있도록 권한을 수정합니다.$ sudo chmod 755 test.sh실행test.sh파일이 /home/ 아래에 있다고 가정 $ cd /home $ ./test.sh # 실행 또는 $ /home/test.sh # 절대경로로 실행
-
[Python] Tip - 스레드 간 작업을 조율하려면 Queue를 사용언어/파이썬 & 장고 2016. 12. 10. 01:48
많은 작업을 동시에 실행하는 파이썬 프로그램에서는 종종 작업들을 조율해 줘야합니다. 가장 유용한 병행 작업 방식 중 하나는 함수의 파이프라인입니다.파이프라인은 제조 공장에서 사용하는 조립 라인처럼 작동합니다. 파이프라인은 일렬로 이어진 단계들로 구성되며, 각 단계에는 특정 함수가 연결되어 있습니다. 새 작업 요소는 끊임없이 파이프라인의 앞쪽에 추가됩니다. 각 함수는 동시에 자신이 속한 단계에 배정된 작업 요소를 처리할 수 있습니다. 남아 있는 단계가 더는 없을 때까지, 각 함수에서 처리를 완료할 때마다 작업은 다음 단계로 이동합니다. 이 방법은 파이썬으로 쉽게 병렬화할 수 있는 블로킹 I/O나 서브프로세스를 이용하는 작업에 특히 잘 맞습니다. 예를 들어 디지털 카메라에서 끊임없이 이미지들을 가져와 리사이..
-
[Python] Tip - 스레드에서 데이터 경쟁을 막으려면 Lock을 사용언어/파이썬 & 장고 2016. 12. 10. 00:52
전역 인터프리터 잠금을 배우고 나면, 많은 신참 파이썬 프로그래머가 코드에서 상호 배제 잠금(뮤텍스)을 사용하지 않아도 될 것이라고 생각할지도 모릅니다. 파이썬 스레드가 여러 CPU 코어에서 병렬로 실행하는 것을 GIL이 이미 막았다면 플그램의 자료 구조에도 잠금이 설정되었을 것이라고 생각하기 때문입니다. 리스트나 딕셔너리 같은 타입에서 테스트해보면 이런 가정을 따라도 될 것처럼 보입니다.하지만 실제로는 그렇지 않습니다. GIL은 이러한 환경을 보호해주지 못합니다. 비록 파이썬 스레드가 한 번에 하나만 실행되지만, 파이썬 인터프리터에서 자료구조를 다루는 스레드 연산은 두 바이트코드 명령어 사이에서 인터럽트될 수 있습니다. 여러 스레드에서 동시에 같은 객체에 접근한다면 이런 가정은 위험합니다. 자료구조의 ..
-
[Python] Tip - 스레드를 블로킹 I/O용으로 사용하고 병렬화용으로 사용하지 않기언어/파이썬 & 장고 2016. 12. 9. 22:42
파이썬의 표준구현을 CPython이라고 합니다. CPython은 파이썬 프로그램을 두 단계로 실행합니다. 먼저 소스 텍스트를 바이트코드로 파싱하고 컴파일합니다. 그런 다음 스택 기반 인터프리터로 바이트코드를 실행합니다. 바이트코드 인터프리터는 파이썬 프로그램이 실행되는 동안 지속되고, 일관성 있는 상태를 유지합니다. 파이썬은 전역 인터프리터 잠금(GIL, Global Interpreter Lock)이라는 메커니즘으로 일관성을 유지합니다.본질적으로 GIL은 상호 배제 잠금(mutex)이며 CPython이 선점형 멀티스레딩의 영향을 받지 않게 막아줍니다. 선점형 멀티스레딩(preemptive multithreading)은 한 스레드가 다른 스레드를 인터럽트해서 프로그램의 제어를 얻는 것을 말합니다. 이 인터..