본문 바로가기

전체 글

(215)
[개발]셀레니움을 사용한 스크래핑 구현 ref : https://mollangpiu.tistory.com/362 https://velog.io/@rednada1486/Java-Selenium-활용-동적웹크롤링#️-2-selenium과-chromedriver-다운로드 셀레니움 Selenium은 웹 브라우저를 자동화하는 도구다. 주로 웹 앱 테스팅에 사용되지만, 스크래핑에도 널리 쓰인다. Java, Python 등 여러 언어를 지원하며, 복잡한 웹 페이지에서도 데이터를 추출할 수 있다. 실행 방식 Selenium 코드는 서버 측에서 실행된다. 이 코드는 웹 드라이버 API를 통해 웹 브라우저를 제어한다. 사용자의 로컬 머신에서 크롬을 직접 실행하는 것은 아니다. 크롬 드라이버 필요성 Selenium은 웹 드라이버 인터페이스를 사용해 브라우저를 제..
[ElasticSearch] 1. 도큐먼트와 인덱스 엘라스틱 스택 도서 1회차 사전 지식 엘라스틱 서치 엘라스틱 서치 = 검색엔진 + 데이터베이스 엘라스틱서치는 NoSQL과 유사하다고 생각하면 이해가 편할 것이다. 엘라스틱 서치는 인덱싱 시점에서 분석을 거쳐 단어 단위로 분해된다. 스코어링 : 유사도 점수 기반 스코어링을 통해 유사 검색어를 분류 가능 분산 시스템과 클러스터링 : 여러 엔진을 클러스터링, 하나가 다운되어도 여분의 기능이 동작 가능 DSL 쿼리 채용 : JOIN 쿼리가 사실상 어려움, 반정규화를 기본으로 함 인덱스가 불변하기에, 삭제 등 비용이 비싸다. 하지만 이는 빠른 검색을 위한 것으로, 대용량 데이터에 대해 빠른 검색과 집계를 제공한다는 장점과 trade-off 된 것이다. 키바나(Kibana) 엘라스틱 서치의 시각화 도구. UI를 담..
[ElasticSearch, Kibana] 개발 환경 세팅 서버는 EC2(Ubuntu 20.04) 우분투 위에 올림을 가정한다. Elastic Search 버전 및 설치 https://www.elastic.co/kr/support/matrix 해당 사이트에서 현재 OS와 맞는 버전을 선택하자. 본인은 7.11.x를 사용할 것이다. JDK 설치(7.x 버전 이상은 설치하지 않아도 괜찮다.)버전 확인 sudo apt update sudo apt install openjdk-11-jdk java -version Elasticsearch 7.11.x 설치 HTTPS를 위한 패키지 설치: sqlCopy code sudo apt-get update sudo apt-get install apt-transport-https ca-certificates wget Elastics..
[Java] 인터페이스와 추상 메서드, 일반 메서드 추상클래스가 생긴 이유가 뭘까? 추상 클래스는 자체적으로 인스턴스로 구현할 수 없다. = 인스턴스로 구현하고 싶다면 하위 클래스가 상속(extend) 추상적인 부분을 Override로 구현해야 한다! 상속을 받는데, 내 하위 클래스가 이 기능(메서드)를 가지게 하고 싶다. 근데 무슨 기능인지는 잘 모르지만.. 어쨌든 구현해야 한다!! 아마도 일반 메서드와 가장 큰 차이라고 생각한다. 그럼 구현하지도 못할 메서드를 도대체 왜 사용하는 걸까? 추상 클래스가 있는 이유는 여러 가지다. 공통 로직 중복 제거 상속을 받는 하위 클래스들이 공통으로 사용하는 로직이나 속성을 한 곳에서 관리할 수 있다. = 추상 메서드를 상속받는 하위 클래스들은, 추상클래스의 메서드를 공통으로 가지게 된다. 템플릿 제공 추상 클래스에..
[회고]중고 거래 플랫폼을 마무리하며 1. 프로젝트 기간과 역할 2023.08.21 ~ 10.06 팀장 및 발표, 백엔드 사용자 도메인 2. 내가 배운 것 Spring Security 인가 및 인증 처리의 이해, Filter 개념과 filterChain의 개념. 스프링 시큐리티의 경우 배우는데 꽤 난관이 있었다. 언뜻 개념 자체는 알고 있었지만, 인가와 인증 처리의 개념이 모호했기 때문에 기초부터 천천히 학습했던 것 같다. 이번 프로젝트에서는 CORS와 내가 만든 JwtFilter를 위주로 사용하였다. 기본적인 세션 방식 대신 서버의 효율성과 확장성을 고려하여 토큰 방식을 사용하였다. 로그인, 메인 화면 등 권한이 필요없는 사이트 외 토큰을 입력받을 수 있도록 하였다. JWT 사용자 관리를 JWT를 사용한 토큰 방식으로 인가를 진행하였다. ..
프로세스 태스크, 쓰레드, 가상화에 대해 레퍼런스 https://www.youtube.com/watch?v=xewZYX1e5R8&ab_channel=널널한개발자TV (프로세스) https://www.youtube.com/watch?v=x-Lp-h_pf9Q&ab_channel=널널한개발자TV (프로세스 쓰레드의 차이) 프로세스와 태스크 프로세스와 태스크(task)는 운영체제에서 실행되는 프로그램 또는 작업 단위를 나타내지만, 이 두 용어는 약간 다른 의미로 사용된다. 프로세스: 실행 중인 프로그램의 인스턴스로, 메모리, CPU 시간, 입출력 등의 자원을 필요로 한다. 프로세스는 독립적인 메모리 공간을 가지며, 프로세스 간에는 직접적인 메모리 접근이 일반적으로 허용되지 않는다. 태스크(task): 작업의 단위로 사용되며, 특히 실시간 시스템이나 임..
가상 메모리 가상 메모리 가상 메모리는 프로그램이 물리 메모리(RAM)의 크기를 초과하더라도 실행될 수 있게 하는 기술이다. 이는 물리 메모리와 하드 디스크의 일부를 함께 사용하여 일종의 '가상의 메모리 공간'을 만드는 것을 의미한다. 가상 주소와 물리 주소: 프로그램이 메모리에 접근할 때 사용하는 주소는 가상 주소다. 이 가상 주소는 물리 메모리의 실제 주소로 맵핑되어야 실제로 메모리에 접근할 수 있다. 페이징: 가상 메모리는 페이지라는 단위로 나뉜다. 물리 메모리도 마찬가지로 페이지 단위로 관리된다. 가상 주소의 페이지는 필요에 따라 물리 메모리의 페이지에 로딩되거나 하드 디스크의 '스왑 공간'으로 이동한다. 페이지 테이블: 가상 주소와 물리 주소의 맵핑 정보를 저장하는 데이터 구조다. CPU나 운영체제는 페이지..