본문 바로가기

웹 페이지 파싱을 어렵게 하는 방법 웹 페이지에 있는 데이터를 읽어와서 그 데이터를 가공해서 우리가 원하는 데이터를 뽑아내는 과정을 파싱이라고 합니다. 보통 파싱은 검색 엔진에서의 실시간 검색어 데이터를 가져온다거나 혹은 주식의 현재 주가를 알아내는 등의 과정에서 많이 쓰입니다. 파싱 과정에서 중요한 것은 웹페이지에 있는 데이터를 가져오는 일입니다. 왜냐하면 데이터를 가져오지 못한다면 데이터를 가공하는 과정을 구현했더라도 쓸모가 없기 때문입니다. 대다수의 웹 페이지들은 파싱 프로그램을 좋아하지 않기 때문에 파싱을 하는 프로그램인지 체크를 하고 맞는 경우에는 에러 페이지를 보여주는 일을 합니다. 왜냐하면 파싱 프로그램을 사용하게 되면 페이지에서 광고를 보여줄 수 없기 때문에 수익이 생기지 않고, 트래픽만 잡아먹기 때문입니다. 보통 체크를 하..
mod_rewrite가 적용이 안될 경우 1. phpinfo 페이지에서 mod_rewrite 모듈이 설치되어 있고 활성화가 되어 있는지 확인한다. 확인 방법은 phpinfo.php라는 파일을 생성해서 아래 내용을 입력해서 저장을 하고 페이지에 접속을 해서 ctrl+F로 mod_rewrite를 검색하면 된다. 검색해서 없는 경우에는 설치를 하고 활성화를 시킨다. 2. 검색해서 나오는 경우에는 http.conf 파일을 열어서 아래 부분처럼 바꾸고 apache를 재시작한다. Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all 참고로 환경에 따라서 이렇게 해도 안되는 경우가 있는데, 그 경우에는 Options ~ 부분만 주석처리를 하면 된다..
네이버 로그인 뜯어보기 다음(Daum) 로그인이나 페이스북(facebook) 로그인의 경우에는 로그인 요청을 보낼 때 아이디와 패스워드 정보를 그대로 전송 합니다. 즉, paros와 같은 프록시 툴을 이용해서 요청을 캡처한다면 아이디와 패스워드 정보를 손쉽게 얻을 수 있다는 위험성이 있습니다. (https 통신을 사용하기 때문에 패킷을 캡처한다고 해서 정보를 볼 수 있진 않습니다.) 네이버(Naver) 로그인 과정에서 보내는 요청을 살펴보면 아이디와 패스워드 정보가 직접적으로 드러나지 않는 것을 확인할 수 있습니다. 즉 네이버의 경우에는 요청을 보내기 전에 클라이언트 측에서 아이디와 패스워드 정보를 암호화해서 요청을 보냅니다. 즉 클라이언트 측에서 암호화를 하기 때문에 대칭키 알고리즘을 사용하게 된다면 암호화를 하는 의미가 없..
거듭제곱 계산하기 RSA 암호화를 하는 과정에 있어서 거듭 제곱을 계산할 필요가 있습니다. $a^n$을 계산할 때 for이나 while 문과 같이 반복문을 이용해서 $n$번을 곱하는 방법이 가장 쉽게 생각할 수 있는 방법입니다. def easy_mod_pow(base, exp, mod): base %= mod result = 1 while exp > 0: result = (result * base) % mod; exp -= 1 return result 이 알고리즘의 경우에는 시간 복잡도를 생각하면 $O(n)$이라는 것을 알 수 있습니다. (반복문이 n번 돌기 때문) 즉 $n$의 값이 크면 그 만큼 속도가 느려진다는 것을 의미하고, RSA 암호화 과정에서는 $n$의 값을 큰 것으로 사용하기 때문에 이러한 방법으로는 어렵다는..
카카오톡 자동응답 템플릿 제작중.. 현재 github에 올라가 있는 카카오톡 자동응답의 경우에는 css를 거의 적용하지 않아서 디자인적인 측면을 거의 고려하지 않고, 단순히 기능 구현에만 치중하였다. https://github.com/humit0/kakao_auto_reply/issues/1 여기에서 UI가 너무 딱딱하다는 말을 보고, UI를 좀 더 새롭게 꾸며보자라는 측면에서 템플릿을 제작하기 시작했다. 처음에는 Bootstrap을 사용해서 디자인을 꾸밀까도 생각을 해보았는데, 이왕이면 다른 라이브러리를 사용해보는 것이 어떨지 생각을 해서 사용을 한 것이 Materializecss이다. 구글의 디자인패턴인 Material을 구현하는데 편리하다는 장점이 있으며 Bootstrap에 비해서 좀 더 지원을 해주는 component가 많다는 점이..
Project 2.0 카카오톡 자동 응답봇 만들기[4] 저번 시간에는 정적인 응답을 보여주는 방법에 대해서 살펴보았습니다. 이번 시간에는 이러한 정적인 응답을 어떻게 하면 동적인 응답으로 바꾸어서 보여줄 수 있는지에 대해서 살펴보도록 하겠습니다. 동적인 응답의 대표적인 예로 주사위 기능을 추가해보도록 합시다. 먼저 이전에 정적인 응답을 만들 때처럼 로그인을 하고, 버튼 추가하기 링크를 클릭합니다. 그리고 아래와 같이 폼의 내용을 채웁니다. 일단 이렇게 하면 '주사위'에 대한 기능이 추가가 되었지만 카카오톡 상에서는 이 기능을 아직 사용할 수 없습니다. 왜냐하면 우리는 '주사위'에 해당하는 keyboard를 생성하지 않았기 때문이지요. 간단하게 Default keyboard에 '주사위'를 추가하도록 합시다. 이전 강의대로 따라오셨다면, keyboard.conf..
요즘 보고있는 강의 Deep Learning Network 중 하나인 Convolutional Neural Network에 대한 강의를 보고 있다. https://www.youtube.com/watch?v=yp9rwI_LZX8&list=PL16j5WbGpaM0_Tj8CRmurZ8Kk1gEBc7fg&index=1 일단 영어로만 된 강의여서 일반 한국어 강의에 비해 이해하는 속도가 느린 것 같다. 가끔씩 강사분이 농담도 하시는데 그 농담이 무슨 의미인지도 모르겠고... ㅠ 강의 노트의 경우에는 http://cs231n.stanford.edu/syllabus.html에 잘 올라와 있다. 아무래도 직접 실행을 해서 결과를 본 것이 없어서 확 와닿지는 않는 것 같다.
Project 2.0 카카오톡 자동 응답봇 만들기[3] 저번 시간에는 서버에 세팅을 하고 카카오톡 서버와 연결시키는 과정에 대해서 살펴보았습니다. 아직 서버 세팅이 되지 않으신 분은 이전 글을 참조해서 세팅을 하시기 바랍니다. 이번 시간에는 저번 시간에 만들어 놓은 Keyboard 버튼에 따른 응답을 만들어보도록 하겠습니다. 일단 앞 시간에 BASE_URL로 설정해 놓은 주소로 접속하시면 아래와 같은 로그인 화면을 보실 수 있습니다. 여기에서 이전 시간에 입력한 ID와 비밀번호를 입력해서 로그인을 하시면 됩니다. 로그인이 성공했다면 아래와 같이 관리자 페이지를 볼 수 있습니다. 그리고 로그인이 실패했다면 에러가 뜨면서 다시 로그인을 하라는 창이 뜹니다. 만약 계정 정보를 잊어버리신 경우에는 admin.config.php 파일을 열어보시면 ID와 비밀번호에 대..