sungon-k-big / it

0 stars 0 forks source link

20171218-bigiot source code #10

Open sungon-k opened 6 years ago

sungon-k commented 6 years ago

실습 초기설정 https://github.com/sungon-k-big/it/issues/7

1.차례로 초기설정코드를 작성합니다. 2.여러행으로 된 코드는 한줄씩 한줄씩 복사후

붙여넣기를 해서, 안정되게 코드가 입력되게 합

니다.

연령대와 월급에 대한 관계를 알아볼 것 입니다

연령대에 대한 파생변수를 설정합니다.

사용함수:mutate,ifelse 사용데이터프레임:welfare 파생변수명:ageg 조건비교변수명:ages 연령대기준:ages가 29세이하이면, young 문자데

이터.ages가 60세미만이면, middle 문자데이터,

그이외에는 old문자데이터가 파생변수에 등록이

되도록 코드를 작성합니다. 생성된 파생변수가

적용된 데이터프레임의 내용을 갱신합니다.

welfare<-welfare %>% mutate(ageg=ifelse

(ages<=29,"young",ifelse

(ages<60,"middle","old")))

ageg데이터의 qplot함수활용. 이를 통한 막대그

래프출력코드를 작성합니다. 사용함수:qplot함수 대상데이터:ageg

qplot(welfare$ageg)

문자데이터는 x축, 수치데이터는 y축으로 계산되

어져서 그래프가 작성되어집니다.

https://github.com/sungon-k-big/it/issues/10

연령대에 대한 월급의 관계를 설정합니다.

사용함수:filter,is.na,group_by,summarise,mean 사용데이터프레임:welfare 저장파생변수명:ageg_income 사용변수명:income,ageg,income 사용필드명레이블:mean_income 원본데이터는 welfare데이터프레임입니다. 수입(income)에서 결측치를 제거하고,

연령대(ageg)를 기준으로 그룹핑을 합니다. 그리

고 수입(income)을 대상으로 평균을 계산합니다.

이것은 요약보고서를 출력을 합니다. 출력결과를

ageg_income에 저장을 합니다. 요약보고서에 사

용되는 필드레이블은 mean_income입니다.

ageg_income<-welfare %>% filter(!is.na

(income)) %>% group_by(ageg) %>% summarise

(mean_income=mean(income))

데이터내역을 확인합니다.

ageg_income

완성된 ageg_income파생변수를 csv파일로 코드

를 활용하여, 저장을 합니다. 파일명:ageg_income.csv 함수:write.csv 대상변수:ageg_income

write.csv

(ageg_income,file="ageg_income.csv")

# sungon-k@nate.com으로 완성된 csv파일을 첨부하

여 아래의 제목으로 보내주시면 됩니다. 이메일제목:홍길동_애플리케이션구현_20171218-2

연습코드-깃허브주소

https://github.com/sungon-k-big/it/issues/10

ggplot함수를 활용해서, 막대그래프를 만듭니다

간단한형태의 그래프를 작성하던, qplot함수와

달리 다양한 옵션과 설정을 할 수 있는 ggplot함

수입니다.

사용데이터:ageg_income 가로축:ageg 세로축:mean_income 그래프관련함수:ggplot(),geom_col()

현재 데이터는 ageg_income을 활용하고, aes를

통해서 가로축과 세로축을 설정합니다.가로축데

이터는 x에 입력하고, 세로축데이터는 y에 입력

을 하면 됩니다. 이후에 세로방향그래프를 위해

서 geom_col()함수를 뒤에 추가시킵니다.

ggplot(data=ageg_income,aes

(x=ageg,y=mean_income))+geom_col()

geom_col()함수뒤에 scale_x_discrete(limit=c

("young","middle","old")) 분석코드를 추가시킵

니다. 그러면 가로축의 레이블과 데이터들을

scale_x_discrete함수의 연산결과를 따라, 지정

된 정렬들이 설정되는 것을 볼수 있습니다. 제너

릭함수C는 이들의 데이터들을 재정리하고 있습니

다.

ggplot(data=ageg_income,aes

(x=ageg,y=mean_income))+geom_col

()+scale_x_discrete(limit=c

("young","middle","old"))

연령대 및 성별에 대한 월급의 관계를 설정합니

다. 사용함수:filter,is.na,group_by,summarise,mean 사용데이터프레임:welfare 저장파생변수명:sex_income 사용변수명:income,ageg,income,sex 사용필드명레이블:mean_income 주의점:그룹핑기준이 두가지가 됩니다. ageg,sex

원본데이터는 welfare데이터프레임입니다.

수입(income)에서 결측치를 제거하고, 연령대와

성별(ageg,sex)를 기준으로 그룹핑을 합니다. 그

리고 수입(income)을 대상으로 평균을 계산합니

다. 이것은 요약보고서를 출력을 합니다. 출력결

과를 sex_income에 저장을 합니다. 요약보고서에

사용되는 필드레이블은 mean_income입니다.

sex_income<-welfare %>% filter(!is.na

(income)) %>% group_by(ageg,sex) %>%

summarise(mean_income=mean(income))

완성된 sex_income파생변수를 csv파일로 코드를

활용하여, 저장을 합니다. 파일명:sex_income.csv 함수:write.csv 대상변수:sex_income

# sungon-k@nate.com으로 완성된 csv파일을 첨부하

여 아래의 제목으로 보내주시면 됩니다. 이메일제목:홍길동_애플리케이션구현_20171218-2

연산 이후에 있는 데이터내역확인코드입니다.

sex_income ======>연령과 성별로 그룹핑되고, 평균수입에

대한 수치값이 나오는 것을 확인할 수 있습니다.

https://github.com/sungon-k-big/it/issues/10

ggplot함수를 활용해서, 막대그래프를 만듭니다

사용데이터:sex_income 가로축:ageg 세로축:mean_income fill:sex(성별) 그래프관련함수:ggplot(),geom_col

(),scale_x_discrete(limits=c

("young","middle","old"))

그래프코드입니다.

ggplot(data=sex_income,aes

(x=ageg,y=mean_income,fill=sex))+geom_col

()+scale_x_discrete(limits=c

("young","middle","old"))

변형코드입니다. 원본그래프에서 그래프를 채우

는 fill데이터들이 눈에 시각적으로 드러나지않

기 때문에 geom_col함수에서 position옵션 dodge

를 설정하여, 그래프들을 분리를 시도했습니다. ggplot(data=sex_income,aes

(x=ageg,y=mean_income,fill=sex))+geom_col

(position="dodge")+scale_x_discrete(limits=c

("young","middle","old"))

현재 데이터는 sex_income을 활용하고, aes를

통해서 가로축과 세로축을 설정합니다.가로축데

이터는 x에 입력하고, 세로축데이터는 y에 입력

을 하면 됩니다. 이후에 세로방향그래프를 위해

서 geom_col()함수를 뒤에 추가시킵니다. 막대그

래프내부는 fill옵션을 통해서 색상으로 구분을

합니다. fill옵션은 가로세로축이 입력된 이후

에 입력되는 옵션입니다.

geom_col()함수뒤에 scale_x_discrete(limit=c

("young","middle","old")) 분석코드를 추가시킵

니다. 그러면 가로축의 레이블과 데이터들을

scale_x_discrete함수의 연산결과를 따라, 지정

된 정렬들이 설정되는 것을 볼수 있습니다. 제너

릭함수C는 이들의 데이터들을 재정리하고 있습니

다. https://github.com/sungon-k-big/it/issues/10

사용함수:filter,is.na,group_by,summarise,mean 사용데이터프레임:welfare 저장파생변수명:sex_age 사용변수명:ages,income,sex 그룹변수:ages,sex 사용필드명레이블:mean_income 주의점:그룹핑기준이 두가지가 됩니다. ages,sex

원본데이터는 welfare데이터프레임입니다.

수입(income)에서 결측치를 제거하고, 나이와 성

별(ages,sex)를 기준으로 그룹핑을 합니다. 그리

고 수입(income)을 대상으로 평균을 계산합니다.

이것은 요약보고서를 출력을 합니다. 출력결과를

sex_age에 저장을 합니다. 요약보고서에 사용되

는 필드레이블은 mean_income입니다.

sex_age<-welfare %>% filter(!is.na(income))

%>% group_by(ages,sex) %>% summarise

(mean_income=mean(income))


rename함수:이름변경함수 서버에 있는 파일의이름을 변경하고자 할때 사용

합니다.대상파일은 현재 오토셋폴더에 있는

public_html폴더에 있는 파일을 선택하시면 됩니

다. 파일명:rename2.php

<? rename("test.txt","test3000.txt"); ?>

PHP_문자열암호화함수

Crypt(암호화대상,암호화방식) Crypt함수는 암호화를 하지만, 단방향암호화이기

때문에 암호화된 문자를 회복하지는 못한다. 선

택할 수 있는 암호화방식의 옵션중에서 salt방식

을 사용하는데, 이것은 usb나 간단한 형식의 암

호화를 필요로 하는 용도에서 사용되는 형태라고

한다. CRYPT_MD5는 암호화방식입니다. 파일명:crypt.php <? $original_string="happybrown"; $salt = "$1$brownsalt"; $user_input="happyblack"; if(CRYPT_MD5 == 1) {$crypt_string=crypt($original_string,$salt); if($crypt_string==crypt($user_input,$salt)) {echo "비밀번호일치";} else {echo "비밀번호불일치";} } else {echo"MD5지원안됨";} ?>

DES 기반 암호화 알고리즘

1.CRYPT_STD_DES : 2문자 salt를 가지는 표준DES 2.CRYPT_EXT_DES : 9문자 salt를 가지는 확장DES 3.CRYPT_MD5:$1$로 시작하는 12문자 salt의 암호 4.CRYPT_BLOWFISH:$2$로 16문자 salt의 Blowfish

암호화알고리즘

PHP보안 공격 유형

0.세션관리 1.원격코드실행 2.크로스사이트스크립팅 3.SQL인젝션 4.PHP설정변경 5.파일시스템공격

파일명:cry2.php <? $original_string="happybrown"; $salt = "$2$ brownsalt"; $user_input="happybrown"; / 보안알고리즘검증코드 / if(CRYPT_BLOWFISH == 1) { $crypt_string=crypt($original_string,

$salt);

if($crypt_string==crypt($user_input,$salt)) {echo "비밀번호일치";} else {echo "비밀번호불일치";} } else{echo"CRYPT_BLOWFISH지원안됨";} ?>

MD5함수

문자열에서 해시값을 계산해줍니다. Crypt함수와

같이 일방향함수이며, 얻게 된 해시값은 원문을

알아볼 수 없게 만듭니다. 보안에 많이 사용되는

함수입니다. crypt함수보다는 경량화되어있어서

빠르게 보안관련코드를 작성할때 많이 사용됩니

다. 그리고 비밀번호등을 생성하거나 암호화하는

데도 사용됩니다.

파일명:md5.php <? $string="brown"; echo md5($string);

?>

6ff47afa5dc7daa42cc705a03fca8a9b f899139df5e1059396431415e770c6dd <? $string="100";

echo md5($string);

?>

ae514ce54000e3e8a5b17ecd22436476

<? $string="adfafddssdadsadsadsadsasadfadsdsdsas

ads";

echo md5($string);

?>

explode함수

나누는 문자를 활용해서 입력한 문자열을 분리시

키는 함수입니다. 일종의 배열화함수라고 할 수

있습니다.

파일명:explode.php

<? $nickname="조명진|브라운|다우니|코니|해피"; $nickname_array=explode("|",$nickname); echo "

";
print_r($nickname_array);
echo "
"; ?>

htmlentities함수

입력되는 문자데이터를 웹문서의 문자로 출력을

해줍니다. 파일명:htmlen.php <? $string = "hi, my name is AA "; echo htmlentities($string); ?>

explode함수의 반대방향함수

implode함수는 explode함수와 반대기능을 가지고

있는 함수입니다. 흩어진 배열데이터들을 구분자

를 기준으로 하나의 문자열로 연결을 해주는 작

업을 해줍니다. 연결연산자는 glue인자라고도 부

릅니다. 파일명:implode.php <? $nickname_array=array('조명진','브라운','다우

니','코니','해피'); $nickname = implode(",",$nickname_array); echo $nickname; ?>

nl2br함수

php코드나 문자자료에서 \n 이 개행엘리먼트로

전환되게 해주는 함수입니다. 웹서비스에서 텍스

트모드로 입력된 글자들이 엔터키가 입력된 상태

에서 웹문서로 변환되면, 개행문자들이 무시될

수 있습니다. 그래서 글자들이 개행문자들을 인

식하도록 만듭니다.

파일명: nl2br.php

<? $string = "안녕하십니까. \n 홍길동입니다."; echo nl2br($string); ?>

파일명:print.php

print명령.

echo와 유사한 성격을 가지고 있는 명령어입니다

. C언어나 다른언어에서 Return 값을 설정하게

되어있는데, 마치 그것과 같이 PHP의 Print명령

은 단순 출력이 아닌 것처럼, Return값을 가지고

있게 됩니다. Return값을 갖는 다는 것은 함수와

유사하게 작동한다는 뜻이기도 합니다.

<? $var = TRUE; $var ? print('TRUE') : print('FALSE'); ?>

printf함수:대표적인 출력함수이며,다양한 언어

에서 활용되고 있는 함수유형이기도 합니다.

printf함수는 출력이 될 자리에 대상자인수가 출

력될 위치를 지정해줍니다.

<?$float =12.345; printf("정수:%d
",$float); printf("실수:%f
",$float); printf("2진수정수:%d
",$float); printf("8진수정수:%o
",$float); printf("16진수정수:%x
",$float); printf("%d + %d = %d",1,2,1000+3000); /* 0이 세자리가 설정된 정수출력과 소수점두자

리가 설정된 .2f입니다. */ printf("정수:%03d
",$float); printf("실수:%.2f
",$float);

?>