반응형

프로그래밍 215

크롤링과 스크래핑 그리고 파싱의 차이

종종 글을 읽다보면 웹크롤링을 하거나 html 파싱을 한다는 말을 자주 듣는다. 또는 스크래핑을 한다고도 하는데 용어가 혼동되기도 한다. 원래의 뜻을 살펴보면 크롤(crawl)은 기어가다는 뜻이다. 스크랩(scrap)은 단편의 정보를 뜻하고 파싱(parse)은 분석한다는 뜻이 강하다. 위 세가지를 종합해보면 기어다니면서 단편의 정보를 모아서 분석한다? 응? 말되네? 최신 빅데이터와 데이터 수집을 위해서 크롤링이나 스크래핑을 많이 하는 추세다. 그리고 크롤링과 스크래핑을 구별하는 것은 크게 의미가 없다고 본다. 대략 크롤링과 스크래핑은 인터넷의 정보를 모으는 일을 생각하면 된다. 그러면 파싱이란? 예를들어 시간에 대한 표현을 보면 "2019년 12월 10일"이라면 표현이 있다. 이 표현을 '년' 앞에는 년..

CUDA driver version is insufficient for CUDA runtime version 에러 해결

우선 이 에러는 케라스를 사용하여 딥러닝 학습을 하는 코드에서 발생한다. 말 그대로 CUDA 드라이버 버전과 CUDA runtime 버전이 다르기 때문에 생긴 문제로 내 경우엔 nvidia-docker를 사용하여 docker환경에서 텐서플로우를 사용하다 생긴 문제다. tensorflow를 docker에서 사용하기 위한 환경설정을 위해서 이 글은 보는 경우라면 이 글이 참고 정도는 될 것이다. 위 에러의 해결법을 보려면 아래쪽으로 스크롤 하면 되며 대략적으로 docker 환경을 세팅하는 방법을 적어두려한다. 현재 2019년 8월이며 앞으로 1년정도는 이 글이 유용할 것이라고 생각은 드나 1년 후라면 새로운 버전의 쿠다 텐서플로우로 업데이트 할지도 모른다. CUDA 설치는 머신러닝 학습시 병렬처리를 위한 n..

파이썬 쓰레드와 GIL(Global Interpreter Lock)에 대한 이해

파이썬으로 쓰레드를 공부하다 보면 GIL(Global Interpreter Lock)에 대한 이야기가 심심치 않게 나온다. 공부를 하는 입장에서는 당장 GIL이 뭔지 몰라도 쓰레드를 만들고 프로그램을 돌리는데는 문제가 없다. 물론 공부를 하는 입장에서다. 파이썬이 발전되는 과정에서 하드웨어 역시 발전되어 왔다. 어는 순간 CPU는 클럭을 높이는 쪽에서 코어를 늘리는 쪽으로 발전의 방향이 변경되었다. 이런 변화는 프로그래밍 언어에도 큰 영향을 미쳤다. 왜냐면 1코어 시대에서는 CPU가 1개의 코어만 있는 게 당연했지만 현재는 다중 코어 CPU를 사용할 수 있도록 언어적인 차원에서 지원을 해야하기 때문이다. 그런데 파이썬(Cpython)은 GIL이라고 해서 인터프리터에 락을 거는 방식으로 다중 코어를 병행하..

파이썬 강좌 - switch/case 문이 없는 파이썬

대부분의 프로그래밍 언어의 문법은 닮아 있다. 파이썬 역시 C언어라는 뿌리로 부터 시작되었지만 switch/case 문이 없다. 왜? 없는지 궁금할 수 있겠으나 왜? 라는 질문에 대한 절대적인 해답은 없다고 본다. 굳이 답을 내자면 if~ elif문의 가독성이 워낙 좋고 switch/case문의 역할을 100% 할 수 있기 때문이라고 본다. 또한 사전(dictionary)라는 자료형을 사용하여 switch/case 문을 비슷하게 흉내낼 수도 있고 이것은 다른 언어의 switch/case 문 보다 더 간결하다. 고로 단순함을 추구하는 철학을 가진 파이썬 입장에서는 굳이 switch/case문을 채용할 필요가 없었다고 생각든다. 태어나서 파이썬 외에 다른 언어를 공부해보지 않았다면 switch/case문을 ..

html/css overflow hidden에 대한 이해

css overflow 속성에 대한 이해의 전제 조건 : html 요소의 box모델에 대한 이해, float 속성에 대한 이해.사실 html/css의 여러 요소간에 상호작용은 이론을 배운 것 처럼 간단하지 않다. 어떤 속성이 모든 요소에 적용되는 것은 아니며 또는 요소간 상호작용 역시 상대적으로 일어난다. 또는 요소에 적용된 속성이 바뀌면 요소간 상호작용 성격도 변하기도 한다. 이런 복잡함으로 인해서 많은 경험만이 답인 듯 싶다.css overflow에 대한 내용을 설명하기 전에 우선 float 속성을 사용했을 때 일반적으로 우리가 간과하기 쉬운 현상을 한가지 소개하고 설명을 이어가겠다.다음 그림은 html 코드와 결과인데 어떤 CSS 코드가 적용되었는지 생각해 보도록 하자.css float 속성과 ov..

html/css 가운데 정렬 정리

html 가운데 정렬 방법은 html 문서의 레이아웃을 잡는데 많이 쓰이는데 정말 다양한 방법이 있다. 이 방법들을 모두 알 필요는 없는데 이것은 마치 서울역에서 용산역까지 가는 방법과 마찬가지기 때문이다. 아마 서울역에서 미국까지 갔다가 다시 한국으로 와서 용산역까지 가는 것도 하나의 방법일 수 있기 때문이다.html 상에서 가운데 정렬을 하는 것은 브라우저를 기준으로 잡던지, 아니면 부모요소를 기준으로 잡던 기준이 되는 요소 내부 공간의 중앙에 표시하는 것이다. 따라서 어떤 방법을 쓰던지 가운데에 위치만 시키면 되기 때문에 다양한 방법이 존재한다.모든 방법을 다 나열할 수는 없겠지만 그래도 가장 심플하고 최적화된 방법이라 생각되는 것들 몇가지만 정리하려고 한다.html/css 가운데 정렬가운데 정렬 ..

css nth-child 선택자 외 first-child, last-child 선택자 정리

html 문서에서 같은 형태의 요소들이 반복될 때, 그리고 이 요소들을 특정 순서에 따라 CSS 속성을 다르게 지정하고 싶을 때 nth-child 선택자를 사용해서 해결할 수 있다. 그런데 nth-child 선택자는 그다지 친근한 형태의 이름이 아니라서 어려워 보인다. 하지만 의외로 간간히 쓰이는 구석이 많은 녀석이므로 확실하게 한번에 이해하고 넘어가도록 하자. child 선택자의 종류는 여러가지가 있다. 가장 많이 사용하는 선택자가 nth-child 선택자이며 only-child, first-child, last-child, nth-last-child가 있다. 비슷한 녀석중에 nth-of-type와 그 똘마니들.. 선택자들가 있는데 이녀석에 대한 이야기는 나중으로 미루겠다. 선택자 이름이 왜 ~ chi..

메타태그 정리 (html meta 태그) 정보의 설명

지금까지 많은 태그들을 살펴보았지만 오늘 살펴볼 메타태그는 웹 사이트의 검색 최적화와 관련된 중요한 태그다. 메타(meta)라는 말의 의미는 다양하지만 여기에서 메타는 "정보를 설명하는 정보" 정도가 적당할 듯하다. 다시말해 HTML 문서는 웹에서 어떤 정보를 전달하기 위한 형태의 문서이며 메타태그는 HTML 문서가 어떤 문서인지에 대해서 설명하거나 추가적인 정보를 알리기 위해 사용되는 태그다.비유하자면 HTML 문서가 책이라면 메타 태그는 책의 겉 표지라고 볼 수 있겠다. 책의 겉 표지는 책의 제목과 가격, 지은이, 책을 대표하는 그림 등의 정보가 있어 책이 어떤 성격의 책인지를 쉽게 파악할 수 있도록 만든다. 마찬가지로 메타태그 역시 HTML 문서가 어떤 정보를 포함하며 어떤 성격의 문서(사이트)인지..

HTML select 태그 정리(form 태그, submit 설명)

이번에 정리할 HTML 태그는 select입니다. 모든 학문이 그렇지만 특히 프로그래밍 공부는 이름으로부터 쓰임새를 유추하는 습관을 들여야 학습 효율이 높아짐니다. select 태그는 말 그대로 다양한 선택지 중에서 선택을 하는 드롭박스를 만드는 태그입니다. 물론 선택을 하는 사람은 웹페이지를 보고 있는 사용자 입니다. 그리고 선택된 내용은 일반적으로 웹서버로 전송해야 하겠죠. 앞서 우리는 input 태그를 공부한 적이 있습니다. input태그 역시 사용자 입력을 받는 다양한 type들을 지정하여 사용했었습니다(text, password 등등). 이렇게 사용자로 부터 입력받은 데이터들을 서버로 전송하려면 form 태그가 필요합니다. 구체적으로 form태그로 사용자 입력을 받는 태그들을 감싸주면 되는 것이..

html, css 다단나누기(multi column)

웹 페이지 상에서 다단을 나누는 경우는 큰 포탈 정도인 것 같다. 한 페이지에 많은 섬네일을 보여주기 위해서 다단을 나누거나 한다. 생각보다 많이 쓰이지는 않는 것 같은데 이건 나의 웹관련 실무적인 경험이 부족한 탓이라 생각든다. 다단을 나누기 위해서는 CSS를 사용해야 한다. 다단을 만드는 방법과 css 속성 중에 break-after, break-before 등이 어떻게 동작하는지도 살펴볼 생각이다. 내가 인터넷을 뒤져본 결과 이 속성(break-*)을 명확하게 정리해 놓은 곳은 못찾았다. 그래서 자세히 정리해 보려 한다. 예전에 flex 레이아웃을 공부한 적이 있었는데 다단과 약간 비슷하다고 생각할 수 있겠다. 따라서 반응형 웹에서 레이아웃을 잡는 용도로 다단을 사용할 수 있을까? 하는 쓸데없는 생..

반응형