본문 바로가기
반응형

전체 글255

Python 이용한 Web Scraping 방법 # requests beautifulSoup 오늘은 Python의 request 와 BeautifulSoup 모듈을 이용해서, WebScrapping을 하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Web Scraping과 작업순서 1-1. Web Scraping Web Scraping이라고도 하구요. web data extraction이라고도 합니다. 웹사이트들로부터 데이터를 추출해내는 것을 의미하는데요. 요즘은 사이트를 검색하면 사이트의 프리뷰도 미리 검색사이트에서 볼 수 있습니다. 이것도 다 Web Scraping해서 얻은 데이터를 기반으로 하는 것 이지요. 1-2. 작업순서 WebScraping은 모듈사용방법을 읽히는 것도 중요하겠지만, 그보다도 Scraping할 페이지를 분석하고 어떻게 읽어올지를 파악하는 것이 중요합니다. 만약 특정.. 2022. 5. 7.
Selenium Web scraping 방법 정리 # Python implicit Explicit wait 오늘은 Python으로 Selenium 을 이용한 WebScraping 에 대해서 정리해 보도록 하겠습니다. 1. 필요한 모듈 설치 1-1. Selenium 모듈설치 가장 먼저해야할 것은 selenium 모듈을 설치하는 일 입니다. 프로젝트 폴더에서 아래코드로 Selenium 모듈을 설치해 줍니다. python -m pip install selenium 1-2. Chromedriver 설치 드라이버를 설치하면서 주의할 점이 있는데요. 바로 자신의 크롬버전과 같은 버전을 설치해야 한다는 점 입니다. 따라서 제일 먼저 할 것은 Chrome버전을 확인하는 일 입니다. 제 맥에는 아래버전의 크롬이 설치가 되어 있네요. 2022. 5. 6.
NodeJS 에서 CSV 읽어들이기 # JS 오늘은 NodeJS에서 CSV 파일을 읽어들이는 방법에 대해서 정리해 보도록 하겠습니다. 1. 큰 그림 어떤 방식으로 csv파일을 읽어들일지 정리해보면 다음과 같습니다. csv파일은 row는 "\n" 또는 "\r"로 구분되어 있구요. Column은 ","으로 구분되어 있습니다. 그러므로, NodeJS파일핸들 모듈을 이용해서 파일을 읽어들인다음, 먼저 "\n" 또는 "\r"로 텍스트데이터를 분리해서 list에 넣어주구요. 각 list에 들어간 아이템들을 다시 ","으로 분리해서 Column으로 읽어들이는 것 입니다. 2. fs 모듈 제일 먼저 필요한 것은 fs 모듈인데요. NodeJS에 이미 포함되어 있으므로 따로 설치하거나 할 필요는 없습니다. require로 해당 모듈을 사용할 수 있도록 해 줍니다. .. 2022. 5. 5.
pip 로 패키지 설치하고 관리하는 방법 # Python pip는 파이썬을 Package를 설치하고 관리할 수 있게 해주는 Package Installer인데요. 오늘은 이것에 대해서 정리해 보도록 하겠습니다. 1. pip 설치 1-1. pip 설치 pip를 설치하기 위해서는 python에 기본적으로 들어있는 ensurepip라는 모듈을 이용해야 하는데요. 아래 명령어를 이용하면 pip를 실행시킬 수 있습니다. python -m ensurepip --upgrade 2022. 4. 26.
Mac 에서 Cafe24 가상서버 호스팅 접속방법 # SSH 접속 Cafe24의 가상서버호스팅은 가격도 저렴하면서 용량도 적절해서 토이프로젝트나 테스트사이트를 론칭하기에 좋은데요. 오늘은 Mac에서 cafe24의 가상서버 호스팅에 접속하는 방법에 대해서 정리해 보도록 하겠습니다. 1. 부여받은 ip주소 확인하기 Cafe24에서 가상서버를 계약하고 나서 호스팅센터 홈페이지에 가면 다음과 같은 화면을 볼 수 있습니다. 먼저 찾아야 할 것은, '나의서비스관리' 메뉴입니다. 아래이미지의 화살표가 가르키는 곳을 찾아가면 됩니다. 서버 접속 정보는 아래와 같이, 간단하게 나와 있습니다. 아래 빨간색 화살표에 해당하는 것이, 우리가 할당받은 가상서버의 고정 ip주소입니다. 2022. 4. 26.
Python 에서 Time 다루는 방법 # epoch strftime 오늘은 python에서 time 을 다루는 방법에 대해서 정리해 보도록 하겠습니다. 1. time 모듈 python의 standard library 모듈에는 시간을 다루는데 필요한 time모듈이 포함되어 있습니다. 따라서, 시간관련함수를 사용하기 위해서 이 모듈을 아래와 같이 import 해주어야 합니다. import time 2. time() 과 time_ns() time모듈에 들어있는 time()함수는 현재의 시간을 보여주는데요. epoch로부터 얼마나 시간이 지났는지를 밀리세컨단위로 보여줍니다. import time time.time() epoch는 1970년 1월 1일부터의 시간을 초단위로 나타낸 것을 가르킵니다. 이 함수에서 return되는 값은 아래와 같이 float 입니다. 정수가 필요할 때.. 2022. 4. 26.
Flask 웹프레임워크 사용방법 정리 # python Routing 오늘은 파이썬의 경량 웹프레임워크인 플래스크(Flask)에 대해서 정리해 보도록 하겠습니다. 1. flask 설치 프로젝트 디렉토리에서 pip모듈을 이용해서 flask를 먼저 설치해 주어야 하는데요. 아래 명령어를 사용해주면 됩니다. python -m pip install Flask 2. Hello World 경량 웹프레임워크이므로 빠르게 코드를 작성해서, Hello World를 뛰어 보겠습니다. 아래와 같이 해주면 되는데요. host는 test용이므로, 'localhost'로 지정해주구요. port는 원하는 port를 할 수 있는데, 지정하지 않으면, 5000포트로 열립니다. 다만, macOS에서는 5000포트가 이미 사용되는 것으로 알고 있어서 여기서는 3000포트를 사용하였습니다. 정상적으로 잘 동.. 2022. 4. 23.
MongoDB Atlas 무료 로 사용하기 오늘은 MongoDB의 Atlas서비스를 무료로 사용하는 방법에 대해서 정리해 보겠습니다. 1. Cluster 만들기 가장 먼저 해야할 것은 Cluster를 만드는 것 입니다. 회원가입을 하였다면, 우측 상단에 New Project 버튼을 눌러서 프로젝트를 생성해 줍니다. 이제 아래 화면에서 Build a Database를 선택해 줍니다. 우리에게 필요한 것은 Free로 제공되는 Shared입니다. 공짜로 제공되는 대신, 다른 사람과 서버를 공유하도록 하는 것 같습니다. 그럴일은 별로 없겠지만, 같이 쓰는 누군가가 서버를 크래쉬하면, 같이 다운되어버리겠지요. Create 해 주면, 아래와 같이 Shared 의 region을 선택하는 화면이 나옵니다. 예전에는 없었는데, Seoul이 포함되어 있는 것을 볼.. 2022. 2. 6.
Javascript Object 와 Function 에 관한 정리 오늘은 Javascript의 Object(객체)와 Function(함수)에 대해서 정리해 보도록 하겠습니다. 1. Object의 생성 Javascript의 Object르 생성하는 방법은 여러가지가 있지만, 다음과 같이 "{"과 "}"을 사용할 수 있습니다. 생성한 object의 property에는 아래와 같이 "." 또는 "[]"를 이용해 접근할 수 있습니다. 그럼 아래와 같은 log를 볼 수 있습니다. 2. Object의 값 변경 값을 변경하는 방버도 아래와 같이 간단합니다. 로그를 찍어보면 true로 값이 변경된 것을 볼 수 있습니다. 단순히 property의 값을 변경하는 것 이외에도, property를 추가할 수도 있습니다. 로그를 보면, iq라는 property가 추가된 것을 알 수 있습니다. 2022. 2. 1.
Array 정리 # Javascript 오늘은 Javascript의 Array에 대해서 정리해 보겠습니다. 1. Array 생성과 사용 Javascript에서 Array를 만드는 방법은 아주 쉽습니다. Javascript에서는 "["과 "]"을 이용해서 아래와 같이 Array를 생성할 수 있습니다. 위의 마지막 줄에서는 3번 인덱스의 아이템을 로그로 출력하도록 하고 있는데요. 한가지 주의할 점은 아이템의 순서는 0번째 부터 시작한다는 것입니다. 그래서 car2가 아니라, car3를 출력하여야 하는 것이구요. 아래와 같이 "model2"가 나오는 결과를 얻게 됩니다. 2022. 1. 31.
Dagger를 통한 Dependency Injection 구현 오늘은 Dependency Injection에 대한 지난 글에 이어서, Dagger를 통해서 어떻게 이를 구현하는지 정리해 보려고 합니다. 혹시 이전 글을 읽지 못하신 분들은아래 글의 링크를 참조해 주세요. Dependency Injection(DI)에 대해서 알아보자 Dagger1은 Retrofit등 유명한 라이브러리를 개발한 Square사의 작품이구요. 현재 사용되는 Dagger2는 구글에서 포크하여 개발하고 있습니다. 무조건적인 신뢰는 좋지 않습니다만, 이들 회사의 네임밸류와 포트폴리오 만으로도, 라이브러리에 대한 믿음이 생기는 건 어쩔수가 없네요. 그럼 Dagger를 구현하는 방법에 대해서 정리해 보도록 하겠습니다. 1. dagger2를 통한 구현준비 1-1. 라이브러리 Implement 라이브러.. 2021. 12. 22.
Pug 또는 Jade 설치 및 기초적인 문법들 정리 # NodeJS NodeJS의 UI템플릿 엔진으로 pug를 사용하고 있는데요. Jade로 알려져 있던 것이, 이름에 대한 권리 때문에 Pug로 바뀐것으로 알고 있습니다. 오늘은 이 pug의 문법을 기초부터 하나씩 정리하기보다는, 자주 사용하는 것들을 위주로정리하고, html변환기의 도움을 받아서 빠르게 문법을 작성하는 방향으로 정리해 보겠습니다. 다만, NodeJS와 Express등에 대한 사용법은 이 글에서 생략되어 있습니다. 1. Pug설치하기 본격적으로 pug에 대해서 알아보기 전에, 간단히 설치하는 방법에 대해서 정리해 보도록 하겠습니다. 먼저 아래 명령어로 pug를 설치해 줍니다. npm install pug --save 프로젝트로 폴더에서 views디렉토리에 index.pug라는 이름의 파일을 생성해 줍니다... 2021. 11. 25.
OAuth 2.0 을 구현하기 위해 알아야 할 것들 # Access Refresh Token 오늘은 OAuth를 구현하기 위해서 알아두어야 할 것에 대해서 정리해 보도록 하겠습니다. 1. OAuth 미국의 IETF라는 인터넷 표준화기구에서 만든 문서에 그 Framework이 정의되어 있는데요. 3rd 파티 앱에서 SNS서비스업체인 Resource를 가지고 있는 서버에 제한적으로 접근할 수 있는 방법에 대한 Framework을 정의한 것 입니다. Google, Facebook, Kakao 그리고 Naver 까지 모두 Oauth서비스를 하고 있구요. 개발 Guide들도 이 Framework의 방식을 대부분 따르고 있습니다. OAuth를 이용하는 방법은 앱마다 다르겠지만, 가장 중요한 유저 인증과 보안을 대신하는 수단으로도 많이 사용하게 됩니다. 개발자가 유저의 아이디와 비밀번호를 인증하고 그것에 대.. 2021. 11. 16.
Cheerio 와 Bent 이용한 HTML 파싱과 Scraping NodeJS에서 HTML을 파싱하여서 Scraping하기 위한 모듈로 Cheerio가 있습니다. 오늘은 이 모듈을 이용해서 HTML을 파싱해서 가져오는 방법에 대해서 정리해 보도록 하겠습니다. 1. Cheerio와 Request 모듈 설치 아래 코드를 터미널에 입력해서 해당 프로젝트내에서 Cheerio모듈이 설치되도록 해 줍니다. npm install cheerio --save 이번에는 bent 모듈을 설치해 보겠습니다. 사실 예전에는 request모듈을 사용하였습니다. 그렇지만, request는 deprecated되었구요. 개발자는 bent를 새로운 프로젝트로 개발하고 있다고 하여서, bent로 작업을 해 보았습니다. 이제 설치한 모듈을 해당 파일내에서 import해 주어야 하는데요. 아래와 같이 해 .. 2021. 10. 15.
소규모 서비스를 위한 호스팅 서버 준비하기 # 가상서버 리눅스 호스팅 오늘은 앱서비스개발을 위해서 최소한의 비용으로 서버를 준비하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Why Hosting? 호스팅서비스의 경우 비용을 제어할 수 있다는 장점이 가장 큰 것 같습니다. 월 얼마정도로 맞추어놓고 그에 맞게 사용하면됩니다. 저처럼 개인개발자의 경우, 사용한만큼 과금되는 형태는 분명 신경이 쓰여지는 부분입니다. AWS에서도 EC2같이 호스팅서비스를 제공하고 있습니다. 하지만 매번 환율에 따라 가격도 달라지고 이런저런 작은 비용들이 붙습니다. 게다가, AWS의 UI가 편하다고 생각된 적은 한번도 없었구요. 국내업체에서 가상서버호스팅을 사용할 경우, 설치비와 매월 얼마씩해서 결재해놓으면 그것으로 요금에 대해서는 걱정 끝입니다. Docker가 생긴 요즘같은 시대에 서비스가 커.. 2021. 10. 15.
Linux 유저 권한 설정 및 그룹 1. Linux의 유저시스템 Linux는 여러 사용자가 접속할 수 있는 OS시스템입니다. 모든 권한을 가진 root가 존재하구요. 나머지 사용자들에 대해서는, 그룹에 포함시켜서 관리를 하게 됩니다. 1. group group에 관한 정보들은 "/etc/group"에서 볼 수 있습니다. 나오는 정보는 다음과 같은 순서로 나오는 것을 볼 수 있습니다. 비밀번호는 "x"로 나와서 가려지구요. 그룹에 속한 사용자 이름도 가려지는 경우가 많습니다. 그룹명: 비밀번호: 그룹ID: 그룹에 속한 사용자 리스트(","로 구분) /etc/passwd에서 사용자에 대한 정보가 기술되어 있습니다. 가장 처음에 나오는 사용자는 root이구요. ID도 0입니다. 사용자명: 비밀번호: 유저ID: 소속된 그룹의 ID: 전체이름: 홈.. 2021. 9. 30.
LifeCycle과 ViewModel 그리고 LiveData에 대해 정리해 봅니다 오늘은 구글의 Architecture Components에 들어가 있는, LifeCycle과 ViewModel 그리고 LiveData에 대해서 정리해 보겠습니다. 양으로 보면 각각의 컴포넌트에 대해서 하나의 글로 정리하는 것이 좋지만, 서로 연결되어 있는 부분들이 많아서 같이 정리하는 것이 효율적일 것 같네요. 1. LifeCycle과 ViewModel 그리고 LiveData 이 세가지 Component를 사용하는 방법은 다음과 같은데요. View를 담당하는 UI컨트롤러인 Activity나 Fragment를 최대한 가볍게 하고, 뷰의 데이터에 대한 부분은 ViewModel에게 맡기게 한다음, 데이터의 변화값을 관찰하고 변경하는 LifeData에게 맡기기 위함입니다. 이 과정에서 LifeCycle을 고려하.. 2021. 9. 24.
Android 주요 라이브 러리들 Release 버전 중요한 라이브러리인 AndroidX나 Retrofit 혹은 OkHttp, Realm, Firebase 등은 매우 많이 사용되는 라이브러리인데요. 많은 라이브러리를 개인 개발자가 팔로우 하기가 쉽지많은 않은 것이 사실입니다. 다만, 이들이 저희가 비즈니스 로직에만 집중할 수 있도록 도와주므로, 최소한의 Release버전 팔로우, 예정된 Deprecation에 대해서는 알고 있어야 할텐데요. 이 글에서는 주요 라이브러리에 대한 업데이트 링크를 한 페이지에서 관리해서, 팔로우 하기 쉽도록 매주 최신 버전을 확인해 갱신하고자 합니다. 1. AndroidX(1.0.0) AndroidX의 ReleaseNote링크는 다음과 같습니다. 1.0.0 이 메인을 이루지만, 모듈별로 각각 다른 버전을 가지고 있으므로, 아래 .. 2021. 8. 25.