본문 바로가기

function

Web Crawler 012 - Domain Name Parsing - 도메인 네임 파싱하기. 안녕하세요. 이번 시간에는 크롤러가 어느 웹사이트를 크롤링 할지를 정해주는 도메인 네임에 대해 알아보고자 합니다. 인터넷은 참으로 광범위한 공간이죠. 만약 이러한 공간을 특별한 조건없이 크롤링하게 한다고 하면 어떻게 될까요? 아마도 내 컴퓨터의 모든 자원은 전세계 인터넷을 뒤지고 다니느라 바빠질 것입니다. 이러한 무한 루프를 방지하기 위해서는 특정한 조건을 주어 이 범위를 만족하는 사이트들만 크롤링 하라고 명령을 내려야 할 것입니다. 그래서 필요한 것이 도메인 네임입니다. 제 블로그를 기준으로 얘기를 하자면, 여기의 주소는 https://creativeworks.tistory.com 입니다. 여기에서 도메인 네임은 tistory.com 이 됩니다. 만약 tistory.com 을 제가 혼자 다 사용하고 있.. 더보기
Web Crawler 011 - Adding Links to Queue - 링크를 웨이팅 리스트에 추가하기. 이번 시간에는 이전 시간에 이어서 웹페이지에서 찾아낸 링크들을 waiting list 에 추가하는 함수를 만들어 보도록 하겠습니다. 어떤 특정 사이트에 있는 전체 웹페이지들을 크롤링하기 위해서 해당 사이트의 홈페이지를 들어가고 거기서 링크를 타고 타고 가서, 해당 사이트의 모든 링크들을 찾을 것입니다. 이렇게 찾아낸 링크 값들을 waiting list 에 넣게 하는 스파이더와 waiting list 에 저장이 된 링크들을 각각 따로 크롤링 할 스파이더들을 만들어야 합니다. 이와 같은 일련의 과정중 전자인 찾은 링크들을 waiting list ( queue) 에 넣어주기 위한 함수를 만들것 입니다. 우선 아래와 같이 찾은 링크를 인자로 받는 함수를 선언해 줍니다. ▼만약 전달 받은 링크의 url 값이 qu.. 더보기
[Swift] 028 Functions and Closures - 2 (함수의 다중 파라미터 ) for beginners Functions다중 파라미터 함수Swift의 함수 개념은 앞서 살펴보았듯이 수학적인 개념 이상의 것입니다. 넓은 의미에서 Swift의 함수는 한 개 이상의 파라미터를 받아들이고 숫자뿐만 아니라 다른 타입도 받아들인다는 점에서 더 유연하고 강력합니다. 한 개 이상의 파라미터를 받아들이고 Doouble형 이외의 타입도 반환하는 함수를 만들어보겠습니다. 다중 파라미터 함수▼ func buildASentence(subject : String, verb : String, noun : String) -> String { return subject + " " + verb + " " + noun + "!" } buildASentence("Swift", verb: "is", noun: "cool") buildASent.. 더보기
[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 32. Make words counters - 1 ( words counter 만들기) 이번 시간에는 'words counter'를 만들어 보겠습니다. 말 그대로 얼마나 많은 단어들이 있는지 카운팅 하는 프로그램입니다. 일반적으로 'words counter'는 문서 작업을 할 때에 얼마나 많은 글자가 사용되어는지 확인하는 용도로 많이 활용되곤 합니다. 대신 이번에는 특정 웹 페이지에서 어떤 단어가 얼마나 많이(빈도수) 사용되어졌는지를 알아보는 프로그램을 만들어보겠습니다. 이는 빅데이터, search engine(검색엔진) 분야 등 다양한 분야에 광범위하게 사용이 되는 개념이기도 합니다. 시작을 하겠습니다. 우선 코딩에 필요한 모듈들을 import 하겠습니다. 이번에는 웹페이지 관련 모듈인 requests, HTML 코드를 예쁘게(?), 단정하게 보여주는 BeautifulSoup, 카운팅 관.. 더보기
[PYTHON 3] Tutorials 23. Downloading Files from the web - 파일 다운로드 하기 using 파이썬 안녕하세요. 이번 시간에는 지난 시간의 이미지(사진) 다운받기에 이어 파일을 다운받아 보도록 하겠습니다. 이미지 다운과는 약간 다르지만, 크게 어렵지는 않으니 느긋하게 읽어보시면 쉽게 이해할 수 있을 겁니다. 그럼 시작하겠습니다. 주식 분석을 위한 시세 자료를 다운 받기 할 예정입니다. 이제까지는 import 뒤에 불러올 모듈명을 바로 적어 주었습니다. 그런데 아래 그림은 앞에 from 을 적어주고 import 뒤 모듈명을 적어 주었네요. 이는 추후에 클래스를 다룰때 보다 자세히 설명드려야 할 사항이므로 지금은 그냥 넘어가셔도 무방합니다. ▼ 주식 관련 CSV(Comma Separated Value)파일을 찾아보았는데, 야후 파이낸스에 올라와 있더군요. 그래서 'finance.yahoo.com'으로 접속.. 더보기
[PYTHON 3] Tutorials 15. Keyword Arguments 안녕하세요. 이번 시간에는 'Keyword Arguments'에 대해서 알아보도록 하겠습니다. 일전의 튜토리얼에서 default arguments에 대해 알아보았는데, 그것의 연장선상에 있다고 생각하시면 되겠습니다. 자 그럼 시작하겠습니다. 우선 silly_sentence라고 하는 임의의 함수를 정의합니다. 여기의 arguments를 위와 같이 3개로 구성하겠습니다. name, action, item 으로 3개의 arguments를 지정해 줍니다. 일전의 튜토리얼에서 default arguments 에 얘기했었는데, 이 경우 argument를 전달해 주지 않았을 경우 함수에서 미리 지정한 default로 그 값을 대신한다는 내용이었습니다. keyword arguments 또한 비슷하다고 여기면 됩니다. .. 더보기
[PYTHON 3] Tutorials 14. Variable Scope 안녕하세요. 이번 시간에는 변수의 범위에 대해서 알아보고자 합니다. 변수의 범위에는 크게 지역변수(Local)와 전역변수(Global)가 있습니다. 지역변수는 특정지역(?)에서만 유효한 경우를 일컬으며, 전역변수는 말 그대로 어디서든 사용 가능한 변수를 말합니다. 말보다는 그림을 보면서 진행하는게 좋겠죠? 그럼 시작하겠습니다. 우선 임의의 숫자를 number 라고 하는 변수에 지정을 해 주었습니다. 역시 임의의 함수 abcd라고 하는 함수를 정의하고 단순히 number 를 프린트 하는 명령어만 가지고 있게 하였습니다. 이번에는 또 다른 함수 xyz 를 정의하고 역시 변수 number 를 출력하게 하였습니다. 두 함수를 정의하였으니 호출하여 사용을 해봐야겠죠? 위 그림과 같이 두 함수를 나란히 호출하였습니.. 더보기
[PYTHON 3] Tutorials 13. Default Values for Arguments 이번 시간에는 함수에 인자(Arguments)를 전달하지 않을 경우 에러가 발생할 수 있는데, 이를 어떻게 처리할지를 알아보도록 하겠습니다. 만약 이럴경우 함수에 인자가 없을 경우를 대비해 초기값(default)를 지정해 두면 에러가 발생하지 않습니다. 무슨말인지 감이 안오시면 아래 그림을 보면서 확인해 보시기 바랍니다. 그리고 모바일에서 볼 때 폰트가 너무 작아 가독성이 좋지 않다는 의견을 주신분들이 계셔서 Pycharm 의 코드, 콘솔 폰트의 크기를 키워보았습니다. 의견 주신분들께 감사드립니다. 그럼 시작해 보겠습니다. 우선 성별을 판단하는 함수를 정의하였습니다. 이전에 다룬 함수들과 다른점이 보이시나요? Arguments(인자)에 미리 값이 지정이 되어 있네요. 바로 sex='Unknown' 으로 .. 더보기
[PYTHON 3] Tutorials 12. Return Value 안녕하세요. 이번시간에는 이전 시간에서 다룬 함수에서 결과값을 어떻게 처리할지 얘기해 보도록 하겠습니다. 앞장에서는 함수를 정의하고 단순히 프린트를 사용하여 그 결과를 나타내도록 하였는데, 이번 시간에는 그 함수에서 다룬 값을 반환(Return)해서 다른 변수에 저장하게 하고 나중에 함수에서 반환받은 값을 담고 있는 변수를 활용할 수 있게 하는데 있습니다. 잘 이해가 안되시면 아래 그림으로 이야기를 이어 가도록 하겠습니다. 우선, 하나의 함수를 선언해 줍니다. 그냥 우스개소리로 데이트 할 수 있는 연령을 단순 계산할 수 있는 함수를 선언해 줍니다. 전달해 줄 인자로는 나이를 넣어주게 하였습니다. 그럼 이 전달받은 my_age로 계산을 하여 girls_age라는 변수에 넣어줍니다. 그리고 그 결과를 반환(.. 더보기
[PYTHON 3] Tutorials 11. Function 안녕하세요. 이번 시간에는 Function(함수)에 대해서 알아보도록 하겠습니다. 프로그램을 공부하시면 대부분의 프로그래밍 언어에서 함수를 얘기합니다. 그럼 함수를 왜 사용하고 어떤 것일까요? 단순하게 생각해보면 재사용성 이라고 말할 수 있을것 같습니다. 똑같은 역할을 하는 코드가 여러번 사용되면 이를 한번 만들어 두고 argument or parameter (함수를 만들때 전달해주는 값들) 값들만 바꾸어 주면 반복적으로 여러번 사용할 수 있을 것입니다. 이로 인해 가용 자원 절약, 코드 가독성 향상 등등 많은 이점을 꾀할 수 있게 됩니다. 각설하고 시작해 보겠습니다. 파이썬에서 함수를 정의할 때에는 앞에 def (definition: 정의) 함수명(전달할 인자): 이렇게 사용할 수 있습니다. def f.. 더보기
갤럭시 노트 5 사용기 Design & Function 가죽 질감 디자인을 적용했던 갤럭시 노트 4와는 달리, 갤럭시 S6와 S6 엣지부터 이어지는 메탈&강화유리 재질이 적용되어 깔끔하면서도 세련된 디자인을 보여주고 있습니다. 또한 후면부에 적용된 엣지 디자인과 더불어... 약 20% 가량 줄어든 카메라 렌즈부의 높이 덕분에 대부분 호평할 만한 디자인일 것이라 생각됩니다. 갤럭시 노트 시리즈의 특장점인 S펜의 경우, 기본적인 부분은 큰 차이가 없지만... 펜 끄트머리 부분이 약간 바뀌면서, S펜을 가볍게 누르면 튀어나오는 방식으로 변경되었습니다. 손톱으로 힘을 줘서 펜을 꺼내던 기존 방식보다 더욱 편리해졌으며... 갤럭시 노트 4와 동일한 2048 레벨의 필압, 와콤사의 상위 기종에서나 가능한 틸트(기울기) 인식 지원, 디스플.. 더보기