본문 바로가기

파이썬

남의 컴퓨터를 내 마음대로 다룬다? - Python Reverse Shell_002 - Binding the Socket and Listening for Connections (파이썬 리버스 쉘 - 소켓 묶기, 연결 대기) 앞 시간에는 멀리 떨어져 있는 다른 컴퓨터와 데이터를 주고 받는 통신을 하기 위해 소켓을 만들어 주었습니다. 이번에는 그렇게 만든 소켓의 데이터를 바인딩(묶어주기)하고 바인딩된 데이터를 가지고 상대 컴퓨터와 접속하게 하고, 그 접속을 서버(내 컴퓨터)에서 받아들이게 하는 과정까지 다루어 보도록 하겠습니다. Socket Binding(소켓 바인딩)통신을 하기 위해서는 통신 기기간(여기서는 컴퓨터) 데이터가 어디에서 오고 어디로 가는지를 알아야 합니다. 이럴 때 사용하는 개념이 아이피(host)주소와 포트(port) 입니다. 그리고 이러한 host와 port를 바인드(묶어주기) 해주어야 어떤 데이터가 오가는지 쉽게 파악할 수 있습니다. 이는 송수신 데이터는 국제 규약인 프로토콜(Protocol)을 따라야 하.. 더보기
남의 컴퓨터를 내 마음대로 다룬다? - Python Reverse Shell_001 - Creating a Socket (파이썬 리버스 쉘 - 소켓 만들기) 안녕하세요. 이번에는 새로운 PYTHON SERIES 를 올려볼까 합니다. REVERSE SHELL 이라고 합니다. 처음 들어보는 분들도 계시겠지만, 개략적인 내용은 대부분 알고 있는 친숙한 개념입니다. 우선 아래 그림을 먼저 살펴볼까요? ▼ 왼쪽 그림에서 A -> C 로 접속을 하려고 하는데 중간에 방화벽(Firewall)이 존재할 경우가 있습니다. 이는 사용자들이 특정 웹서버나 사이트에 접속하는데 어려움을 겪게 하는 요인이 되기도 합니다. 물론 보안상 혹은 다른 여타의 이유로 방화벽을 설정하기도 하지만, 기업체에서 단순히 접속을 막아두는 경우도 있습니다. 이럴 경우 VPN(Virtual Private Network: 가상 사설망)을 이용해서 우회하기도 하지만 이 역시 한계가 있습니다. 이럴때 사용하는.. 더보기
[Folder Action] - 이미지에 나의 서명(signature) 만들어 넣기 with python program - 3 이전 시간에 만든 여러장의 이미지에 사인(서명)을 넣는 코딩을 활용해서 이번시간에는 특정 폴더에 대상 파일들을 떨구면, 자동으로 서명된 이미지 파일들을 돌려주게하는 폴더액션(맥의 오토메이터 활용)을 만들어 보도록 하겠습니다. 우선 터미널을 띄워주고 shell script 를 하나 만들어 주려고 합니다. 아래와 같이 make_multiple_signature.sh 라는 이름을 가지는 bash 스크립트를 만들도록 하겠습니다.▼ 파이썬이 있는 경로를 앞에 적습니다. 저는 현재 파이썬 배포판 중의 하나인 아나콘다를 사용하고 있습니다. 그래서 앞 부분에 아나콘다의 파이썬 경로인 '~/anaconda/bin/python' 을 넣어줍니다. 뒤에는 이전 시간에 만들어 둔 파이썬 파일의 경로를 넣어 줍니다. 파인더에서 .. 더보기
이미지에 나의 서명(signature) 만들어 넣기 with python program - 2 from PIL import Image, ImageDraw, ImageFont import os, glob target_image = Image.open('/Users/SH/Desktop/Signature/python_logo.png') fontsFolder = '/Library/Fonts/' selectedFont = ImageFont.truetype(os.path.join(fontsFolder,'Zapfino.ttf'),15) draw = ImageDraw.Draw(target_image) draw.text((200,150), 'Creative Works for jason', fill='white', font=selectedFont) target_image.save('/Users/SH/Desktop/.. 더보기
이미지에 나의 서명(signature) 만들어 넣기 with python program - 1 안녕하세요. 이번에는 파이썬 프로그래밍을 이용해 이미지(사진)에 나만의 서명(signature)를 만들어 넣어 보겠습니다. 단순하게 하나의 이미지에 넣어 보는 방법을 알아보고, 추후에 특정 폴더내에 있는 모든 이미지에 넣는 방법을 알아보겠습니다. 그런 연후에는 폴더에 떨구기만 하면 서명이 된 이미지들을 뱉어내게 하는 자동화 스크립트도 만들어 보겠습니다. 그럼 시작하겠습니다. 우선 아래와 같은 파이썬 로고 이미지가 있습니다. 여기에 제 블로그 이름인 'creative works for jason' 이라는 글을 넣어 보겠습니다. 글이 아니라 이미지도 넣을 수 있지만, 여기서는 다루지 않겠습니다.▼ 이미지를 다룰 예정이므로, 관련 모듈들을 불러옵니다. ImageDraw 는 그림에 글을 써 넣을때 사용하는 모듈.. 더보기
[PYTHON] 간단히 이미지(사진)들 합치기 by using python - Merge images by using python program. 안녕하세요. 이번에는 여러장의 이미지(사진)들을 하나의 파일로 병합(합치기)하는 과정을 파이썬을 이용해서 코딩해 보겠습니다.주로 이미지를 다룰때는 이미지 관련 툴(가령 포토샵)들을 많이 사용을 합니다. 그러나 이런 툴들을 다루더라도 여러장의 파일들을 열고 사이즈에 맞게 붙이고 크기 조절하고 저장하고 일련의 과정들을 거쳐야합니다. 다소 번거로울 수도 있는 이런 일들을 프로그램으로 간단히 처리하게 하려고 합니다. 물론 디테일한 프로세싱은 상기의 툴을 이용하는게 나을수도 있습니다. 그래서 여기서는 단순하게 몇장의 이미지들을 같은 규격의 사이즈로 크기 조절 후 가로형태로 나란히 붙여주게끔만 하겠습니다. 이를 잘 숙지하고 응용을 한다면, 여느 프로그램 못지않은 나만의 툴을 구현할 수 있을 것입니다. 각설하고 시작.. 더보기
[PYTHON] 파일 찾아 활용하기 using python glob 파이썬을 이용해서 특정 디렉토리(폴더)에 있는 파일을 이용할 경우가 잦은데, 이 때 유용하게 사용할 수 있는 명령어가 바로 glob 이다. glob 명령어를 이용해서 폴더 내에 있는 모든 파일들을 찾아 파일명을 나열하였다. 추후 이를 이용한 실용 예제를 다뤄보도록 하자.▼ 더보기
GTK VS Qt in Python Development Frameworks. GTK vs QtGTK+ and Qt are open-source cross-platform User Interface toolkits and development frameworks. These are the two most popular frameworks in use for GNU/Linux and BSD because they are open-source and give developers a powerful toolkit to design Graphical User Interfaces. GTK+ is used as the standard toolkit for the GNOME and Xfce Desktop Environments while Qt is used for KDE Plasma and L.. 더보기
나만의 유튜브 영상 다운로더 by using bash YOUTUBE DOWNLOADER 만들기 원도우즈를 사용하거나, 맥, 하물며 리눅스를 사용하는 유저들을 위한 유튜브 동영상 다운로드 유틸은 널려있다. 그러나 일부는 유료이고, 또 어떤 프로그램은 잘 작동하는 듯 하더니, 예기치 않은 오류나 에러를 뱉어내곤하여 사용자들로 하여금 불만의 목소리를 듣곤한다. 이번에는 CLI(Command Line Interface)를 이용해 누구나 쉽게 유튜브에 올라와 있는 동영상을 자신의 컴퓨터로 다운받을 수 있는 방법을 알아보고자 한다. 우선 설명은 맥(MAC) 기준으로 설명을 하려고 한다. 그러나 리눅스는 물론이거니와 윈도우즈 사용자도 크게 다르지 않으니 쉽게 익힐 수 있는 방법이다.1. 준비 맥을 사용하는 사용자라면 Spotlight Search 를 눌러 'termin.. 더보기
[PYTHON 3] Tutorials 44. Image Transformation - Resize, Flip, Rotate, Stretch (이미지 변형하기 - 리사이즈, 회전, 뒤집기, 확장...etc) 이번 시간에는 크기 조절, 회전, 뒤집기, 확장 등 이미지 변환에 대해 알아보고자 합니다. 우선 원본 이미지 파일입니다. ▼ 원본 이미지의 현재 크기는 960 x 540 으로 확인됩니다.▼ 프로그램으로 확인해 보아도 동일하게 960 x 540으로 확인이 됩니다. ▼ 아래 코드는 원본을 열고 보여주게 하는 코드입니다. ▼ 960 x 540 사이즈의 이미지를 500 x 500 으로 resize 해 보려고 합니다. 주의할 점은 resize() 메서드 사용시 바깥쪽 () 는 메서드에 해당하는 괄호이며, 내부 () 괄호는 pixel 가로, 세로에 해당하는 괄호입니다. 즉, 괄호가 2개 사용된다는 점입니다. ▼ 강제로 500 x 500 으로 조절한 이미지 입니다. 뭔가 뚱~ 해진듯한 느낌입니다. ▼ 원본 이미지를 .. 더보기
[PYTHON 3] Tutorials 43. Image Merge Effect (서로 다른 채널을 이용 이미지 병합하기 such ghost images) 이번에는 여러 장의 이미지를 가지고 각각의 이미지에서 채널을 분리하여 이 채널(모드)들을 서로 교차시켜 보겠습니다. 간혹 크리피한 이미지들, 가령 귀신 그림마냥 하나의 이미지에 다른 이미지가 살며시 얹혀 있는 그림이 있는데, 이렇게도 구현할 수 있는 방법 중 하나입니다. 말보다는 코드를 통해 보겠습니다. 다소 차이는 있겠으나, 구현 방법은 비슷합니다. 원본 이미지 - 고양이들 찬조출현.▼원본이미지(고양이들)를 열어 cat 이라는 변수에 저장합니다. ▼cat 에서 r,g,b 각각의 채널(모드)로 분리를 합니다. ▼분리한 채널(모드)를 merge(병합) 을 이용하여 새로운 이미지로 만들어 new_img 변수에 저장합니다. ▼이렇게 새로 만든 이미지를 확인하겠습니다. 원본 이미지의 고양이들과 차이가 전~혀 없.. 더보기
[PYTHON 3] Tutorials 42. Getting Individual RGB Channel (RGB 채널 분리하기) 컴퓨터에 저장된 95% 아니, 많게는 99% 이상의 이미지들은 RGB(RED, GREEN, BLUE) 의 조합에 의해 구성된 픽셀(pixel)들입니다. 이번에는 사진에서 각각의 RGB 모드를 따로 분리를 해 보도록 하겠습니다. 사진 편집 프로그램을 다뤄본 사용자라면 각종 효과를 적용시켜 본 경험이 있을텐데요. 이 채널 분리도 그와 유사한 형태로 적용이 가능합니다. 각각의 RGB 를 얼마나 적용하느냐에 따라 사진의 색감이 달라지게 되니까요. 아래는 New York 의 Time Square 의 모습입니다. 원본 이미지.▼ 이미지 처리 모듈인 '필로우'를 불러옵니다.▼ 원본 이미지를 열어 new_york 변수에 저장을 합니다. 그리고 해당 이미지의 모드를 확인하니 RGB 라고 친절히 알려줍니다.▼ 이렇게 알게.. 더보기
[PYTHON 3] Tutorials 41. Combine Images Together (이미지 병합하기 like watermark(워터마크)) 이번시간에는 파이썬을 이용해서 워터마크를 만들어 보려고 합니다. 이를 위해서는 서로 다른 두 이미지를 병합하는 과정을 다루어야 합니다. 워터마크 만들기 ( Make a water mark using python) 원본 이미지 1 - 잡스 횽아 ㅠ_ㅠ.▼ 워터 마크로 사용할 원본 이미지 2 - 스티브 잡스가 작고할 당시에 회자된 애플 이미지▼ 이미지 처리를 위한 모듈인 필로우를 불러옵니다.▼ 각각의 이미지를 열어주어 변수 steve, apple 에 저장을 합니다.▼ 워터마크로 사용할 이미지의 크기를 확인해 봅니다.▼ 위의 워터마크로 사용할 이미지의 크기를 확인 한 이유는, 만약 이미지의 크기가 맞지 않으면 오류가 발생하기 때문입니다. 향후에는 이미지의 크기와 상관없이 동적으로 적용할 수 있는 방법을 알아볼.. 더보기
[PYTHON 3] Tutorials 40. Cropping Images (이미지 잘라내기) 이전 시간에는 파이썬에서 이미지를 불러오는 모듈인 "Pillow"에 대해 알아보았습니다. 이번에는 이렇게 불러들인 이미지를 기호에 맞게 처리하는 방법 중 하나인 image crop 에 대해 알아보려고 합니다. 앞에서 사용한 코드를 그대로 재활용하겠습니다.▼ 사용할 이미지에서 표시된 부분만 cropping(잘라내기) 후 새로운 파일로 저장을 하려고 합니다. 여기에서 사용할 위치값이 존재하는데, 4개의 인자를 필요로 합니다. (가로 시작점, 세로 시작점, 가로 범위, 세로 범위) 이런 순서로 값을 넣어주어야 합니다.▼ 위에서 언급한 위치값을 area 변수에 저장을 하겠습니다. 가로 시작점:100, 세로 시작점:100, 가로 범위: 1000, 세로 범위:1200 의 값을 area 에 저장을 합니다.▼ 원본 이.. 더보기
[PYTHON 3] Tutorials 39. Pillow (필로우- 이미지 처리) 파싱, 이미지 처리, 연산 등의 분야에서 거의 알려지지 않은 파이썬 라이브러리 : Pillow파이썬(Python)이 프로그래밍 언어로써 확고한 지위를 차지할 수 있었던 몇 가지 이유가 있다. 기존 라이브러리에 더불어 써드 파티에서 제공하는 방대한 양의 라이브러리만 봐도 알 수 있다. 그러나 너무 많은 나머지 가치를 충분히 인정받지 못하고 파묻히는 아까운 라이브러리들도 있다. 또한, 한 영역에만 집중적으로 작업하는 프로그래머는 다른 유형의 작업을 위해 만들어진 라이브러리를 통해 얻을 수 있는 유익한 부분을 미쳐 모르는 경우도 있다. 이번 시간에 다룰 라이브러리가 그 중 하나인 "Pillow"이다. 필로우(Pillow)용도: 간편한 이미지 처리 장점: 이미지 처리 경험이 있는 대부분의 파이썬 사용자들은 PI.. 더보기
[PYTHON 3] Tutorials 38. Min, Max and Sorting Dictionaries (딕셔너리의 최솟값, 최댓값 구하기 및 정렬하기) 이번 시간에는 딕셔너리(key, value값을 가지는 형태)의 최솟값, 최댓값을 구하여 보겠습니다. 그리고 이의 정렬도 함께 살펴보려 합니다. 튜토리얼 초반부에 다룬 딕셔너리는 key, value값을 가지고 있습니다. 영어 사전을 떠올려보시면 이해하기 쉬울 것입니다. 찾고자 하는 단어가 key에 해당이되고, 해당 단어의 뜻이 value에 해당합니다. 어떤 key값에 대응하는 value값들을 가지고 있는 딕셔너리가 있다고 가정을 해 보겠습니다. 이 딕셔너리에는 많은 양의 데이터가 중구난방으로 존재하고 있습니다. 이런 무작위 데이터를 잘 정리하려고 하는데, 일반적으로 오름차순, 내림차순 등의 방식으로 정렬을 합니다. 그러나 문제는 파이썬에서 딕셔너리는 자체적으로 정렬을 할 수가 없습니다. 그럼 어떻게 해야 .. 더보기
[PYTHON 3] Tutorials 37. Lambda 이번 시간에는 Lambda 에 대해 알아보려고 합니다. 프로그래밍 언어를 조금이라도 다뤄본 사용자라면 친숙한 어휘일텐데, 그렇지 못한 초심자들이라면 상당히 낯선 단어이기도 합니다. Lambda(한글식 호명은 '람다'라고 읽으면 됩니다.)는 일종의 작은 함수 정도로 생각하시면 됩니다. 그 동안 어떤 역할을 수행하게 하는 함수를 정의하고 인자를 전달하고 함수를 호출하고 하여 코딩을 하여왔습니다. 그러나 Lambda는 함수와 달리 함수명이 없습니다. 그리고 여러번 호출해서 사용하지 않고 1회성으로 잠깐 사용하는 속성(단기) 함수라고 볼 수도 있습니다. 함수명만 없을 뿐이지, 전달되는 인자는 여전히 표기하여야 하는 공통점이 있습니다. 간단하게 기본적인 'Lambda'를 알아보겠습니다. 기본적인 Lambda의 표.. 더보기
[PYTHON 3] Tutorials 36. Zip Function 이번에는 zip function 에 대해 알아보도록 하겠습니다. 파이썬을 조금이라도 다루어 본 사용자라면 눈에 상당히 익은 함수일텐데요. 간단히 언급하자면, 길이가 같은 서로 다른 두 리스트가 있는데, 이 리스트를 하나의 짝(쌍)으로 묶어주는 역할을 하는 함수라고 생각하시면 될 것 같습니다. 보통은 반복문으로 각각을 합쳐주는 코딩을 하는데, 이러면 코드가 번거러워지고 깔끔(?)하지 못해지겠죠. 더욱 간편한 방법이 바로 zip function 사용입니다. 말보다는 아래 예제를 보시면 금방 와 닿을 것입니다. first name을 넣은 변수 first, last name 을 넣은 변수 last 가 아래와 같이 있습니다.▼ 이 두 리스트를 하나로 묶어주기 위해 zip(first, last) 처리하여 names.. 더보기
[PYTHON 3] Tutorials 35. Unpack List or Tuples ( 리스트, 튜플 풀기) 이번 시간에는 파이썬에서 리스트, 튜플을 다룰때 언패킹(풀기)을 어떻게 주로 이용하는지를 알아보고자 합니다. 일상 생활에서 우리가 마트에 장을 보러 간다고 가정을 해 보겠습니다. 영수증에 구매 목록이 쭉 나열이 될텐데, 이를 파이썬 프로그램으로 구매목록을 나열한다고 가정해 볼까요. 그럼 어떻게 처리를 하는게 좋을까요? 구매목록이 적게는 1개, 많게는 수십, 수백가지에 이를것입니다. 이럴경우 사용하는게 리스트, 또는 튜플을 이용합니다. 아이템을 하나 구매했는데, 구매 날짜, 품목, 가격. 이렇게 item이라고 하는 변수에 저장을 하게 하였습니다. 단순히 어떤것이 들어있는지 확인해 보았습니다.▼ item 이라는 변수의 포지션값을 넣어서 각각의 위치에 해당하는 값을 표기하게 하였습니다. 결과를 보니, 순서대로.. 더보기
[PYTHON 3] Tutorials 34. Make words counters - 3 ( words frequency counter 만들기) 이번 시간에는 이전 시간에서 만든 Word Counter를 활용해서 Frequency Counter(빈도수 카운터) 만들어 보도록 하겠습니다. 어떤 문서를 작성할시에 특정 단어가 얼마나 자주 사용되었는지 확인하거나, 어떤 사이트에서 가장 빈도수가 높게 올라오는 어휘가 어떤 것인지 한눈에 확인할 수도 있으며, 혹은 특정(장소, 시간, 위치, 카테고리 등등)한 매개체에서 동일 단어의 사용 빈도를 추적할 때도 활용할 수 있는 Frequency Counter 코딩을 시작해 보겠습니다. 이전 시간까지 작성한 코드입니다.▼ 확인을 위해 삽입한 print(word)를 comment 처리 하였습니다. 이전 시간에 완성한 특수문자가 제거된 온전한 단어들을 전달받는 딕셔너리 제작 함수를 호출하게 하였습니다.▼ 상기 그림에.. 더보기
[PYTHON 3] Tutorials 33. Make words counters - 2 ( words counter 만들기) 이전까지는 웹페이지에서 특정 부분을 크롤링하여 단어들을 추출하였습니다. 그러나 여기에는 특수문자 등 원하지 않는 부분도 포함되어 있었습니다. 이번 시간에는 앞에서 얻은 자료에서 원치않는 부분을 제거하는 코딩을 하도록 하겠습니다. 앞 장에서 다룬 코드는 아래와 같습니다.▼ 상기 코드에서 우선 확인을 위해 삽입한 print(each_word)를 삭제하도록 하겠습니다.▼ 또 다른 함수를 정의할 건데 start(url) 함수 내에서 호출 하도록 할 예정입니다. 그래서 아래 코드에서 처럼 clean_up_list(word_list) 문구를 삽입하였습니다.▼ clean_up_list(word_list) 함수를 정의하겠습니다.▼ start(url) 함수와 마찬가지로 원하지 않는 데이터를 뺸 자료를 담을 그릇(리스트).. 더보기
[PYTHON 3] Tutorials 32. Make words counters - 1 ( words counter 만들기) 이번 시간에는 'words counter'를 만들어 보겠습니다. 말 그대로 얼마나 많은 단어들이 있는지 카운팅 하는 프로그램입니다. 일반적으로 'words counter'는 문서 작업을 할 때에 얼마나 많은 글자가 사용되어는지 확인하는 용도로 많이 활용되곤 합니다. 대신 이번에는 특정 웹 페이지에서 어떤 단어가 얼마나 많이(빈도수) 사용되어졌는지를 알아보는 프로그램을 만들어보겠습니다. 이는 빅데이터, search engine(검색엔진) 분야 등 다양한 분야에 광범위하게 사용이 되는 개념이기도 합니다. 시작을 하겠습니다. 우선 코딩에 필요한 모듈들을 import 하겠습니다. 이번에는 웹페이지 관련 모듈인 requests, HTML 코드를 예쁘게(?), 단정하게 보여주는 BeautifulSoup, 카운팅 관.. 더보기
[PYTHON 3] Tutorials 31. Threading - 파이썬의 쓰레딩 이번 시간에는 파이썬에서 사용하는 Threading(쓰레딩)에 대해 알아보겠습니다. 프로그램을 코딩을 하고 컴파일을 할 때에는 Top to Bottom, Left to Right. 즉, 위에서 왼쪽에서 순서대로 컴파일을 하게 되어 있다. 한번에 하나씩 컴파일을 한다는 말이된다. 그런데 어떤 프로그램들은 굳이 이렇게 하나씩 컴파일을 할 필요가 없는 프로그램도 있다. 하나의 프로그램이 컴파일링이 끝날때 까지 기다리지 않고 다른 코드의 컴파일에 들어가도 전혀 문제가 되지 않을 경우에 Thread를 사용하여 마치 처음부터 다른 프로그램을 동시에 구동하는 것 마냥 컴파일을 할 수 있다. 말보다는 예제가 정답이다. 우선 thread를 사용하기 위해 python 에서 threading 모듈을 불러옵니다. ▼ 메신저를.. 더보기
[PYTHON 3] Tutorials 30. Multiple Inheritance - 파이썬의 클래스 다중 상속 이번 시간에는 앞 시간에서 다룬 클래스의 상속을 확장한 다중 상속에 대해 알아보려고 합니다. 하나의 클래스가 2개 이상의 서로다른 역할을 하는 클래스를 상속받아 그 기능을 온전히 수행하게끔 하는데 그 목적이 있고, 그러면 그 활용성 또한 증대될 것이기 때문입니다. 롤플레잉 게임을 한다고 가정하고, 그 중 한 캐릭터를 Archer(궁수)라고 할 때, 이 캐릭에 해당하는 클래스를 정의하였습니다. 그 중 움직임을 담당하는 함수를 move 라고 하고 정의하였습니다.▼ 게임내 아이템들이 많을텐데, 어떤 아이템을 획득 했을시에 레벨업을 가정하고 Item 이라는 클래스를 정의하였습니다. 그 중 아이템 획득에 관한 함수 eat_item 을 정의하였습니다.▼ 위의 두 개의 서로 다른 클래스를 상속 받게 할 경우에는 아래.. 더보기
[PYTHON 3] Tutorials 29. Inheritance - 파이썬의 클래스 상속 안녕하세요. 이번 시간에는 파이썬에서 가장 중요한 것 중 하나인 클래스의 상속에 대해서 알아보고자 합니다. 지난 시간까지 클래스가 어떤 것이며, 어떻게 사용하는지, 왜 사용하는지 등등에 대해서 간략히 소개하였습니다. 이번에는 이 클래스를 보다 실용적으로 사용하기 위해 기존의 만들어진 클래스를 확장하는 개념이라고 이해하시면 좋을것 같습니다.상속, 말 그대로 부모로 부터 물려받는것을 의미합니다. 다수의 기능을 하는 함수를 한데 묶어 하나의 클래스를 만들어 두었는데, 이 클래스가 가지고 있는 모든 기능을 그대로 가져오고, 거기에 더해 기능을 더 첨가하여 더 나은 클래스를 만들어 사용할 때 상속이라는 개념이 유용할 것입니다. 말 보다는 예제를 통해 알아 보도록 하겠습니다.클래스 이름을 'Parent'로 하는 클.. 더보기
[PYTHON 3] Tutorials 28. Init - 초기화 이번 시간에는 지난 시간에 다룬 클래스에서 초기화(initialization)에 대해 알아보고자 합니다. 파이썬에서 초기화란 클래스를 만들고, 객체가 클래스의 함수(메소드)에 접근을 할 때 아무런 함수(메소드)를 실행하지 않아도 처음부터 객체 생성과 동시에 실행되는 값들을 의미 합니다. 가령, 사람으로 치자면 처음부터 타고 나는것들이 해당이 되겠는데, 머리, 몸, 다리, 팔 등등... 이는 누구나 가지고 태어나듯이 객체가 생성됨과 동시에 가지고 있게 되는 것들을 일컬어 초기화 혹은 __init__ 으로 명명합니다. 역시 말보다는 예제를 통해서 보는게 훨씬 이해가 잘 되겠죠.. 시작해 보겠습니다. 사람(Person)이라는 클래스를 정의해 보겠습니다.▼ 사람의 초기값을 설정해주기 위해 아래와 같이 __ini.. 더보기
[PYTHON 3] Tutorials 27. Classes and Objects - 클래스, 객체 이번 시간에는 요즘 사용하는 프로그래밍 언어의 중심인 클래스와 객체에 대해 알아보고자 합니다. 현재 시장에서 사용하는 대부분의 언어가 객체 지향 프로그램(OOP: Objects Oriented program)이라고 해도 과언이 아닙니다. 물론 전부라고는 할 수 없으나 많은 언어에서 객체화를 지향하는 이유는 그만한 장점을 지니고 있기 떄문입니다. 앞서 다룬 함수 파트에서, 함수를 사용하는 이유 중 하나가 재사용성을 높이기 위해서라고 했습니다. 객체도 마찬가지입니다. 함수 + 함수 + 함수 를 하나의 클래스로 묶어놓고 이를 별개의 객체로 불러와 사용하면 코드를 수십, 수백, 수천 번 재사용할 수 있기 때문입니다. 잘 이해가 잘 안되신다면 아래의 코드를 예로 설명을 드리면 조금이나마 이해하는데 도움이 되리라 .. 더보기
[PYTHON 3] Tutorials 26. Exceptions - 예외처리 안녕하세요. 이번 시간에는 파이썬에서 발생할 수 있는 오류를 어떻게 처리하는지에 대한 것을 알아보려고 합니다. 프로그램을 만들다보면 이런 저런 오류로 골머리를 앓는 경우가 빈번한데, 이러한 오류, 에러를 어떻게 잘 핸들링 하느냐도 코딩 실력 향상에 크게 도움이 됩니다. 다행히 파이썬에서는 어떤 오류가 발생하면 여타 언어에 비해 왜, 어디서 오류가 발생하는지가 비교적 상세히 기술이 됩니다. 이렇게 친절히(!) 알려주는 문구들이 무슨 의미인지 알아야 할 것이며, 이를 어떻게 해결하는지 혹은 우회하는지를 살~짝 맛보기 해 보겠습니다. 그럼 시작하겠습니다. 아래와 같이 어떤 숫자를 받아들여서 단순 출력하는 프로그램을 만들어 봤습니다. 그런데 에러가 발생을 했네요. 어떤 오류인지 확인을 해보니 'ValueErro.. 더보기
[PYTHON 3] Tutorials 25. 웹 크롤러(like Google) 만들기 2 - How to build a web crawler 안녕하세요. 지난 시간에 이어 웹 크롤러 만들기 2번째 시간입니다. 지난 시간에는 BeautifulSoup 를 이용해서 특정 사이트의 글 목록 리스트에서 URL, 제목을 파이썬으로 가지고 오는 방법에 대해 알아 보았습니다. 이번에는 그 연장선상으로 URL, 제목에 해당하는 글의 본문 내용을 가지고 오게 만들어 보겠습니다. 시작하겠습니다. 앞 시간의 코드에서 각 글의 본문 내용을 확인할 수 있도록 하는 함수 get_single_article(item_url) 을 만들어 주었습니다. 물론, 함수명은 원하는 이름으로 정하여도 무방합니다.▼ 앞서 만든 코드에서 지금부터 만들어 줄 함수가 들어가는 위치에서 호출할 수 있도록 함수 호출 부분을 삽입합니다. page += 1 위에 함수 호출 코드를 넣어 주었습니다. .. 더보기
[PYTHON 3] Tutorials 24. 웹 크롤러(like Google) 만들기 1 - How to build a web crawler 안녕하세요. 몇일동안 본업(?)에 매진하느라 소홀했던 튜토리얼을 다시 작성하려 합니다. 간혹 메일로 문의를 주시는 분이 계신데, (메일은 어떻게 아셨지 -_-a) 그냥 여기에 댓글을 다셔도 가능하면 답을 달아 드립니다. 긴급한(!) 일이 아니라면 메일은 삼가해 주셨으면 합니다^^;. 서두가 길었네요. 시작해 보겠습니다. 이번 시간에는 인터넷 상에 있는 자료(데이터: 글 + 이미지 + 파일 등등) 들을 파이썬을 이용해서 긁어오는 것을 하겠습니다. 우리가 잘 알고 있는 구글의 검색 시스템도 시시각각 인터넷상에 올라오는 글들을 크롤러(로봇)가 링크를 타고 타고해서 DB(데이터 베이스)에 잘 저장을 해 둔것을 사용자들이 찾는 시스템입니다. 여타 검색엔진과 다르게 구글이 크게 성장할 수 있었던 요인 중 하나는 사.. 더보기