기본 콘텐츠로 건너뛰기

12월, 2017의 게시물 표시

linux; permission #

 # 블로그나 계시판의 내용을 공개 혹은 비공개 할지 선택한다.  대표적으로 유저가 file과 directory의 접속여부를 결정하는 것. 권한 은 read, write, execute(실행)에 대한 권한.  예시 : 파일을 만든다. yju에서 파일을 만든다. touch perm.txt echo 'hi' > perm.txt cat perm.txt perm.txt 파일의 형태 -rw-rw

linux; id, who # 다중사용자, 사용자 추가

다중사용자 시스템이 되는 순간 시스템의 복잡도는 제곱으로 어려워 진다. 즉, 권한에 대한 체크가 어려워 진다. 보안성이 떨어진다. id  # 나는 누구인가를 알려주는 정보. udi=1000(egoing) who # 누가 접속해있는지 알수 있는 명령어.  ctrl C는 명령어 취소 사용자는 크게 super(root) user   VS user 일반유져 : $가 붙어 있다. 슈퍼유저 : #이 붙어 있다. man su sudo passwd -l root sudo passwd -u root sudo 사용자로 접속을 했을 때 directory가  /root 이다. 일반사용자의 최상위 directory는 cd ~라고 하면 된다. 일반사용자는 /home라고 한다. # 사용자 추가 sudo useradd -m jiung # superuser가 일반 user를 추가하는 입장이기 때문에 sudo를 붙인다. sudo pwd sudo usermod -a -G sudo jiung

linux; CRON # crontab

# 정기적으로 실행해야할때 예를 들면 정기적으로 인터넷을 통해서 시간을 조정해야 할 때... #CRON crontab -e # 정기적으로 작업을 시행하고 싶을 때 여기에 추가하면 된다. m h dom mon dow command m : 분 (0-59) h : 시간(0-23) dom : day of month(0-31) mon : month(1-12) dow :  day of week(0-6), sunday=0 */10  : 10분에 한번 */1 * 24 10 1 : 한시 10분에 실행된다. 1/* * 24 : 매달 24일 1/* * * * *  date >> date.log 2>1 # 2>1 : 2는 표준 에러, 1은 표준 출력. 즉, 표준 에러를 표준 출력으로 redirection 한다는 의미. tail -f date.log # tail : 문서의 끝을 보여주는 명령어, -f는 실시간 데이터를 업데이트 해주는 명령어이다. 확인차 작성하는 것. 크론으로 할 수 있는 일 - 정기적으로 시스템이 작성되는 것.

linux; daemon # service

# 프로그램을 실행하는 방법중에 하나. daemon : 항상켜져 있는 프로그램. 언제 사용할지 모르는 프로그램들 ls, rm, mkdir 과 같은 것들은 필요할때만 사용하는 것들. server와 같은 프로그램들은 항상켜져 있어야 한다. daemon의 대표적인 예다. client는 인터넷을 통해서 server에 접속한다. user 입장에서는 필요할때 프로그램을 일시적으로 사용하여야 하지만, sever 관점에서는 user가 언제 데이터를 사용할지 모르기 때문에 항상 on  해야만 한다. server를 daemon 혹은 service라고 명명한다. 웹서버를 설치해보자. sudo apt-get install apache2 cd /etc/init.d/     # /etc/init.d/의 경로는 daemon 프로그램들이 있는 저장소 이다. sudo service apache2 start  # daemon 프로그램을 on , off할때 사용하는 명령어를 의미한다. ps aux | grep apache2 # 실행되고 있는  프로그램을 확인할 수 있다. sudo service apache2 stop # 실행되고 있는 프로그램을 멈춘다. rc3.d : cli 기반으로 구동하고 있을 때 사용 rc5.d : gui 기반으로 구동하고 있을 때 사용한다. cd /etc/rc3.d # 여기에 S02apache2 -> 라고 있을때  S라고 시작되면  뒤에 이름에 해당되는  프로그램은 rc3.d 경로에 있으면 콘솔에 있으면 cli로 부팅된 컴퓨터에서 자동으로 실행된다는 의미이다. K로 적혀있는 프로그램은 부팅될때 실행되지 않는다. 숫자 01, 02는 우선순위를 명명한다. 즉, rc3.d 에 링크를 걸면된다. 링크 : /etc/rc5.d/S02apache2    # 현재 링크에 apache가 없음에도 apache가 실행된다...

linux; locate, find #파일의 위치를 찾는 방법

man locate locate (파일의 명령어) 예 ) locate *.log # 디렉토리를 뒤지지 않고 데이터 베이스를 뒤진다. 파일들의 정보가 있는 데이터베이스를 찾아서 가지고 오기 때문에 빠르다. 이런 데이터 베이스를 mlocate라고 한다.  man find # 직접파일을 뒤지기 때문에 다양한 사용법들이 많다. 검색해보자 sudo find . -type f -name *.log  # 확장자, .log로 끝나는 파일명을 찾을 수 있다. man whereis whereis rm : 지정한 명령어(rm)의 실행파일의 위치를 표현해준다. $PATH를 뒤져서 표시해준다. $PATH 는 뭐냐면 우리가 보통 directory에 ls의 프로그램이 없어도 실행이 되는 것은 $PATH 이기 때문이다.

ps, top, htop

ps # process list를 보여준다. ps aux  # 백그라운드 프로그램 모든 것을 보여준다. sudo kill (pid number) sudo top sudo apt-get install htop sudo htop # load average : (첫번째 숫자: 순간적인 속소), 두번째 숫자, 3번째 숫자. 등등

linux; process

ssd, hdd : storage, 가격이 저렴= 저장용량이 크다, 저장 및 읽는 속도가 느리다. ram : memory, 비싸다=저장용량이 비싸다 cpu : 중앙처리장치, processor 프로그램은 storage에 깔려있다. 사용할 프로그램에 ram에 올려서 cpu로 돌린다. 예를 들면 /bin, /sbin 과 같은 프로그램(program) 들은 storage에 저장된다. 그리고 명령어들이 ram에 적제되어 cpu(processor)에 의해서 실행된다.

linux; directory structure

1. / : 최상위 디렉토리 : root 2. /bin : user binaries  : 상용자들이 사용하는 directory. 3. /sbin : system binaries : system program.  : 컴퓨터를 사용하거나 끄거나 할때 사용하는 명령어들, 시스템관리자(root user) 들이 사용하는 명령어들임. 일반사용자들이 사용하기 어려운 용어들. 4. /etc  : linux의 설정을 바꿀 때는 파일을 바꿀 때 사용. 운영체제에 대한 설정, 프로그램에 대한 설정 들이 있는 곳. 5. /dev : Device File 6. /proc : Process Information 7. /var : variable Files  : 바뀔 수 있는 파일들. 용량이 바뀌거나, 내용이 바뀌거나 등등. 어떻게 바뀔 수 있는지는 알 수 없다. 8. /temp : temporary files : 임시파일들이 적혀있는 곳  : 컴퓨터를 껏다 켜면 사라지는 파일 들. 9. /home : Home directories; (cd ~)  : 사용자들의 경로, 작업하고 있는 경로 10. /usr : user programs 11. /boot : Boot loader files 12. /lib : system libraries 13 /opt : optional add on applications  : 소프트웨어를 설치할때 어디에 설치는 경로를 여기에 하면 좋다. whereis (program name) : 하면 14. /mnt : mount directory 15. /media 플로피 디스크 사용하던 시절에는 컴퓨터를 킬때 필요한 것은 bin, sbin 에 저장, 컴퓨터에 필요하지 않는 경우파일 들은 usr에 저장 했었다.(과거) 요즘에는 home 경로로 인해서 usr의 힘이 많이 빠졌다.

linux; shell script, 예시 1

shell script : 명령에 대한 각본을 나타낸다. log로 끝나는 파일들을 bar 파일로 빼는 작업을 하고 싶다. 우선 경로를 만든다. mkdir  script     # scrpit라는 파일경로를 설정한다. touch a.log b.log c.log      # a,b,c 가각의 log 파일을 생성한다. mkdir bak   # bak라는 파일의 경로를 만든다. cp *.log bak        # *.log는 log가 달려있는 파일의 총을 나타낸다. cp는 copy의 줄인말. ------------------------------------------------------------------------------------------ ls /bin      # 현재 사용되고 있는 명령어를 모두 확인 할 수 있다. #! /bin/bash    # 우리가 작성하고 있는 프로그램을 실행했을 때 운영체제는 첫번재 줄에 있는 #! 와 bin/bash를 본다. => bin/bash를 근간으로하여  아래 있는 코드들이 해석된다 라는 것을 의미한다.  이건 약속임. if [ -d bak ]; then # 현제 디렉토리에 bak라는 directory가 존재 하는가? 라는 말을 의미한다. if ! [ -d bak ] # 현제 디렉토리에 bak라는 directory가 존재하지 않는다면, 라는 말을 의미한다. mkdir bak fi cp *log bak 참고! chmod +x backup #이것을 해주면 백업이 실행이 된다.  즉 backup 실행파일의 실행기능을 추가한다.

linux; bash VS zsh

bash와 zsh의 근간  우선 zsh를 설치를 하자 sudo apt-get install zsh를 사용해서 설치 한다.

linux ; shell vs kernel

SHELL : 껍데기. 사용자(나) Kernel : core 우리가 예를들면 터미널에 명령어를 입력하면 shell이 그 명령어를 이해해서 kernel에 전달을 한다. 그러면 kernel이 hardware를 제어하는 과정이 되겠다. 왜? shell과 kernel을 분리 했을까/?  분리했을 때 장점은 여러가지 shell이 만들어 질 수 있는데, 사용자가 원하는 shell을 선택해서 하드웨어를 제어하면 되겠다. 즉 서로다른 shell을 사용해야만 kernel을 통해서 hardware를 제어 할 수 있겠다.

linux_Input Output redirection; append

cat : 여러개의 정보를 결합해준다. 사용자가 입력하는 정보를 받는다.  컨트롤 +D를 눌러서 빠져 나온다. head linux.txt #  리눅스의 파일의 IO stream이라고도 한다. append : 추가된 내용을 덮어쓰기 말고 덪붙이기를 하고 싶을 때 .  >> 예를 들면 ls -al > result.txt # 하면 ls -al의 내용이 들어간다. ls -al >> result.txt 를 하면 기존의 result.txt의 내용에 result.txt의 내용이 추가가된다. mail egoing@gmail.com << hahago a a a hahago 하면 aaa가 메일로 온다.  여기서 << 는 입력으로 나온다.

data frame 재구성 # rbind(), cbind(),merge()

Degree of freedom (df: 자유도)

Degree of freedom; df : 자유스러운 정도. 편차의 합은 "0"이 되어야 한다는 성질을 이해해야 한다.   예를 들어, 남자 4명(A, B, C, D)과 여자 4명(a,b,c,d)가 미팅을 합니다. 이런 저런 얘기 끝에 파트너를 결정하기로 했는데, 그 방법으로 여자들이 차례로 남자를 결정하는 방식을 택했습니다. 첫번째 여자 a 는 4명의 남자들 중에서 자신의 파트너를 자유롭게 선택할 수 있습니다. D 두번째 여자 b 는 남은 3명의 남자(A, B, C) 중에서 자유롭게 선택할 수 있습니다. A 세번째 여자 c 는 남은 2명의 남자(B, C) 중에서 자유롭게 선택할 수 있습니다. B 마지막 여자 d 는 무조건 C라는 남자와 파트너를 해야됩니다. 이제 미팅이 끝나고 파트너를 정했습니다. 위에서 보면 a,b,c 3명의 여자는 파트너를 자유롭게 선택할 수 있었습니다. 즉, 자유롭게 선택할 수 있는 여자의 수는 자유도는 4-1 = 3 이 됩니다. 그래서 유명한 자유도 n-1 이 나오게 된 거죠.  이것을 편차와 결부시켜 생각을 하면 편차를 계산하려면 평균은 당연히 알고 있겠죠. 그리고 편차의 합은 0 이라는 성질을 이해하면 n-1 개의 값들은 어떤 값이던 자유롭게 될 수 있습니다. 그러나 마지막 하나의 값은 n-1 개의 값이 정해지면 그 값도 자동으로 결정이 나죠.  이것이 아래의 표준편차에서 n 이 아닌 n-1 로 나누어주는 이유중의 하나입니다. 본래 자유도는 1900 년경에는 분산 공식에 n 을 사용하였습니다. 그러나, 여기에는 한가지 문제가 있었습니다. 표본의 크기 n 이 아주 클 경우에는 문제가 없었지만, 표본의 크기 n 이 작을 경우에 문제가 발생된 것입니다. 즉, 똑깥은 방법으로 표본을 추출하여 분산을 구하였는데, 그 값이 모분산과 일치하지 않는 문제가 발생이 된 것입니다. 즉, 편의(Bias)라고 하는 오차가 생기에 된 것입니다. 앞에서 말한 것처럼 표본의 크기가 아주 크게...

one way ANOVA, levene's test, post_hoc ; in R

one way ANOVA, 1. 귀무가설(H0) : 모집단에서 모든 group의 평균은 같다. 즉 그룹간에 차이가 없다.    대립가설(H1) :  모집단에서 모든 group의 평균은 차이가 있다. 2. 가정   - 각 group들은 모두 독립적이어야 한다.   - 각 group의 sample size가 서로 같거나, 비슷해야한다.   - 모수적 검증이기 때문에 정규성을 만족해야만 한다.(sample size>30)   - 모집단에서 group들의 분산이 같다는 등분산 조건을 만족해야만 한다.       (Leveno's test 실시 or Bartlett test 실시) 그림1 위그림과 같이 anova 분석은종류(factor(요인), group(factor level, 요인수준))에 따라서나뉜다. 분산분석은 측정된 자료값들의 전체 변동을 비교하자 하는 요인수준(factor level) 간의 차이에의해서 발생하는 변동과 그 밖의 요인에 의해서 발생하는 변동으로 나누어서 자료를 분석하는 것이 기본원리 기본원리 1,2,와 같이 측정된 값에서 각각의 평균을 뺀 후에 제곱하여 더한다. <분산북석표> 분산분석표의 제일 오른쪽에 있는 F0 통계량을 이용해서 전체 수준들간의 평균이 같은지 아니면 다른지 검정한다.  기본 개념은, F0 통계량은 처리평균제곱(MSTR)의 크기에 영향을 받는다.  처리평균제곱(MSTR)이 커지면 오차평균제곱(MSE)은 작아지게 되며, 따라서 F0통계량은 분자가 커지고 분모가 작아지기 때문에  당연히 커지게 된다.  즉, F0통계량 값이 크다는 것은 수준평균들간에 평균의 차이가 크다는 의미이다. 위 결과표를 보면 f값이 108.8이고 p-value가 1.2e-13이기 때문에 대립가설1을 채택할...

t_test; in r

t-test의 종류 1. 독립표본 t-test : 서로다른 두개의 그룹간 평균 비교.  : 남자와 여자간 소득 차이 비교 2. 대응표본 t-test : 하나의 집단에 대한 비교  : 과외를 하기 전과 후의 반 학생들의 성적 변화 3. 단일 표본 t-test : 특정 집단의 평균이 어떤 숫자와 다른지, 같은지를 비교. t-test를 실행하기 전 조건  - 두개의 집단에 대한 t-test를 실시하기 위해서는 등분산성, 정규성이 만족되어야 합니다.  - 정규성의 경우 일반적으로 관측갯수가 30개 이상일 때 만족한다.  - 등분산성을 확인하기 위해서는 var.test  라는 함수를 사용해야한다. 예) var.test(dbp1 ~ walk_yn, data=mydata) # 다음과 같이 mydata에 있는 walk_yn에 의해서 그룹이 나누어진 dbp1의 인자들을 등분산성을 평가 한다. F = 1.2665, num df = 241, denom df = 118, p-value = 0.1484  # 으로 나왔다고 가정했을 때  p-value가 0.1484가 0.05 보다 크기 때문에 귀무가설을 만족하지 않은다. 따라서 두집단의 분산은 같다 고 볼 수 있다. 따라서 t-test를 할 수 있는 조건을 만족한다. 독립표본 t-test(independent two sample t-test)  1. data import, head,data.frame, tail,str등을 통해서 data가 잘 load되었는지 확인 할 것.  2. 우선 등분산성 검증 : p-value가 0.05 보다 큰지 두 그룹간의 등분산성이 만족한지 확인.   - var.test함수 사용.  3. t.test를 활용하여 분석진행.   - 유형 1 문법 : t.test(group1의 관측치, group2의 관측치, t-test의 유형, 신뢰범위) ...

Kernel Density Estimation(커널밀도추정), Density plot in R

 Kernel Density Estimation(커널밀도추정) Density Estimation(밀도추정)  : 통계란, 데이터는 어떤변수가 가질 수 있는 다양한 가능성 중에 하나가 현실 세계에 구체화된 값이다. 그리고 우리는 그 변수의 성질을 파악하기위해서 부단히 노력을 한다. 하나의 데이터로 특성을 파악하기에는 어렵기 때문에 수많은 데이터를 이용해서 데이터의 특성을 파악하고자 노력을 한다. 이렇게 얻어진 데이터를 이용해서 데이터들의 분포로 부터 원래변수의 분포특성을 추정하고자 하는 것이 density estimation 이라고 한다.  - 밀도(density)는 수학적으로는 질량/부피 이지만,  밀도추정(density estimate), 기계학습, 확률, 통계 등에서 말하는 밀도(density)는 확률밀도(probagiltity density function)을 추정하는 것과 동일하다. f(a)는 x=a에서의 확률밀도(probability density)이다. 즉 x가 a라는 값을 가질 상대적인 가능성(relative likelihood)를 나타낸다.  즉 다시말하면 x=a 일 확률은 0이지만, x=a에서의 밀도는 0이 아니다. 또한 x가 a,b 사이의 값을 가질 확률은 그 구간의 확률밀도함수의 적분값으로 계산된다. 어떤 변수의 확률밀도함수(PDF)를 구할 수 있으면 그 변수가 가질 수 있는 값의 범위 및 확률, 기계학습 추정등에서 가장 핵심정인 요소중의 하나이다. Parametric vs Non-parametric 밀도추정. 밀도추정(density estimation)방법은 크게 parametric 방법과 non-parametric 방법으로 나뉜다. parametric density estimate는  확률밀도함수(PDF)에 대한 모델을 정해놓고 데이터들로부터 모델의 파라미터만 추정하는 방식이다.  즉 예를 들면 일일 교통량이 정규분포를 따른다고 가정해버리면...