Javascript Node.js

Node.js에서 CSS 선택자로 간편하게 웹 스크래핑(웹 크롤링)을 하는 방법

웹 스크래핑(Web Scraping) 또는 웹 크롤링(Web Crawling)은 웹 페이지로부터 원하는 정보를 추출하는 기법입니다. 어떤 서비스에서 API가 별도로 제공되고 있지 않지만 웹 페이지로는 정보가 제공되고 있을 때, 웹 스크래핑 기법을 이용하면 원하는 정보를 획득할 수 있습니다.

웹 스크래핑의 원리에 대해서는 이전 글인 웹 스크래핑(웹 크롤링)의 원리에서 다루었습니다. 이번 글에서는 Node.js에서 패키지 2가지를 조합하여 손쉽게 구현한 웹 스크래핑 함수 예제코드를 소개합니다.

(more…)

Continue reading

Backends Ruby

Ruby에서 CSS 선택자로 간편하게 웹 스크래핑(웹 크롤링)을 하는 방법

웹 스크래핑(Web Scraping) 또는 웹 크롤링(Web Crawling)은 웹 페이지로부터 원하는 정보를 추출하는 기법입니다. 어떤 서비스에서 API가 별도로 제공되고 있지 않지만 웹 페이지로는 정보가 제공되고 있을 때, 웹 스크래핑 기법을 이용하면 원하는 정보를 획득할 수 있습니다.

웹 스크래핑의 원리에 대해서는 이전 글인 웹 스크래핑(웹 크롤링)의 원리에서 다루었습니다. 이번 글에서는 Ruby에서 패키지 2가지를 조합하여 손쉽게 구현한 웹 스크래핑 함수 예제코드를 소개합니다.

(more…)

Continue reading

Backends Python

Python에서 CSS 선택자로 간편하게 웹 스크래핑(웹 크롤링)을 하는 방법

웹 스크래핑(Web Scraping) 또는 웹 크롤링(Web Crawling)은 웹 페이지로부터 원하는 정보를 추출하는 기법입니다. 어떤 서비스에서 API가 별도로 제공되고 있지 않지만 웹 페이지로는 정보가 제공되고 있을 때, 웹 스크래핑 기법을 이용하면 원하는 정보를 획득할 수 있습니다.

웹 스크래핑의 원리에 대해서는 이전 글인 웹 스크래핑(웹 크롤링)의 원리에서 다루었습니다. 이번 글에서는 Python의 패키지 2가지를 조합하여 손쉽게 구현한 웹 스크래핑 함수 예제코드를 소개합니다.

(more…)

Continue reading

AWS Backends

AWS EC2 t4g에서 Docker Compose 설치하기

AWS EC2의 인스턴스 유형 중에 t4g가 있습니다. Intel 프로세서 기반의 t2나 t3와는 다르게, t4g는 ARM 기반의 인스턴스입니다. 요금이 20% 가량 저렴하다는 장점이 있지만, 프로세서가 달라 OS를 동일하게 Amazon Linux로 선택하더라도 미묘한 차이가 발생합니다.

대표적으로 Docker Compose의 설치가 그렇습니다. 일반적인 리눅스 계열 OS에서는 공식 홈페이지의 설치방법에서 Linux를 선택하여 해당 과정을 따르면 문제가 없습니다. 그러나 t4g는 프로세서의 차이로, 이 방법으로 설치할 경우 Docker Compose가 제대로 실행되지 않습니다.

(more…)

Continue reading

Backends PHP

Laravel에서 SHA-2(SHA-256, SHA-512)를 구현하여 사용자 비밀번호 암호화 해싱함수로 사용하기

Laravel은 사용자 비밀번호를 암호화하기 위한 해싱함수로 Bcrypt와 Argon2를 제공합니다. 이 중에서 디폴트 함수인 Bcrypt는 현재까지 등장한 해시함수 중 가장 안전한 방식 중 하나로 알려져 있습니다. 때문에 대부분의 프로젝트에서는 Laravel의 기본 해싱함수를 변경할 필요가 없습니다.

그럼에도 여전히 암호화를 위해 SHA-2 방식을 채택해야 하는 상황이 있습니다. 특히 대한민국의 경우에는 공적기관의 보수적인 보안정책으로 인해 이러한 필요가 생기기도 합니다. 이 때는 Laravel의 기본 해싱함수를 직접 구현하여 변경해야 합니다.

이번 포스팅에서는 SHA-512 방식의 Hasher 클래스를 구현하고, 이를 Laravel에 바인딩하여 비밀번호를 암호화하기 위한 해싱함수로 사용하는 방법을 소개합니다. 또한 이를 구현하기 위해 관련 기술문서와 소스코드를 찾아들어가는 과정을 생략없이 다루어, 향후에 여러분이 자신만의 새로운 서비스를 Laravel에 추가할 때 단서가 될 수 있게 하려 합니다.

(more…)

Continue reading