분류 전체보기(68)
-
[PersonaAI - 비공개 프로젝트b-2] Java 크롤링
node.js로 했던 작업을 Java로 변경해달란 요청이 있었다. 기존 크롤링이 웹드라이버를 쓰는 방식으로 요청받아서 Sellenium 라이브러리를 사용해서 크롤링을 진행했었지만 이번엔 그런것과 무관하게 크롤링만 되기만 하면 된다는 것 같다. 하지만 일단은 기존의 것을 그대로 자바를 옮기는게 편할 것 같았고 다른 자바에서 크롤링할 때쓰는 라이브러리가 있는지도 또 찾아봐야했기에 node.js코드를 Java로 바꾸기만 했다. 그런데 실행했더니 에러가 생겼다. [에러는 나중에 첨부] 에러 내용은 라이브러리 충돌 이슈였다. 이 프로젝트 하나만을 배포해 쓰는 서버면 그냥 라이브러리도 마음대로 뒤집어 엎었겠지만 기존의 솔루션 서버에 추가로 올리는 거다 보니 기존것을 손댈긴 어려웠다. 어떤 라이브러리에서 문제가 생기..
2024.03.12 -
[AOP] 관점지향프로그래밍에 대해
AOP (Aspect Oriented Programming) 1. 개요 AOP는 OOP(객체지향프로그래밍)의 대체제가 아니라 보완하기 위한 개념이다. 클래스 단위로 나누기 애매한 로직을 처리하는 데 주로 사용된다. 그러한 로직을 횡단 관심사(cross-cutting concerns)라 한다. 횡단 관심사의 대표적 예는 로깅, 보안,트랜잭션 등이 있다. 2. 경험예전에 패스워드를 bcrypt로 암호화를 진행했었는데 이 때문에 복호화 작업이 필요했었다. 그것을 예시로 보자면 처음 ) 자주 쓸거라 생각못해서 필요할 때마다 로직 복붙했다. ( 객체지향X, 관점지향X ) 도중 ) 이 로직이 계속 쓸일이 생기자 class로 따로 생성해서 메소드로 관리했다. (객체지향O, 관점지향X )ㄴ> 문제점: 클래스화 하..
2024.02.27 -
[ Hikari CP ] Hikari CP 란 무엇인가?
예전에 JPA를 처음 사용해 볼때 queryDSL이 적용이 안되서 JPA 관련 라이브러리를 뒤저본적 있다. 그때 JPA 라이브러리 안에서 우연히 보게 된 것이 Hikari 였다. 이게 뭔지는 모르지만 JPA에 필요한 거구나 하고 넘겼지만 개발을 계속하면서 Hikari에 대한 이야기를 종종 듣게 되면서 이번 기회에 공부해봤다. Hikari CP란? 가볍고 빠른 JDBC 커넥션 풀링 프레임워크 예전에는 JDBC만으로 DB와 프로젝트를 연결하여 사용해 왔지만 매번 드라이버 로딩 - 연결 객체 생성 - 연결 - 종료 이 과정을 반복하다보니 서버의 리소스 소모가 심하고 다수의 DB 접속이 있을 경우 처리 속도도 떨어진다는 문제가 발생했다. 그래서 나온게 CP( Connection Pool )이다. (ㄴ> 자세한 ..
2024.02.25 -
[CP] 커넥션 풀 (Connection Pool)
CP (Connection pool ) 데이터베이스 연결을 효율적으로 관리하기 위한 소프트웨어 엔지니어링 패턴 1. 개념 웹 컨테이너(WAS)가 실행되면서 일정량의 Connection 객체를 미리 만들어서 pool에 저장했다가, 클라이언트 요청이 오면 Connection 객체를 빌려주고 해당 객체의 임무가 완료되면 다시 Connection 객체를 반납 받아서 pool에 저장하는 프로그래밍 기법이다. Container 구동 시 일정 수의 Connection 객체를 생성하게 되며 클라이언트의 요청에 의해 애플리케이션이 DBMS 작업을 수행해야 하면, Connection Pool에서 Connection 객체를 받아와 작업을 진행한다. 이후 작업이 끝나면 Connetion Pool에 Connection 객체를 ..
2024.02.25 -
[PersonaAI - 비공개 프로젝트b] try-catch문 에러 catch 실패
node 서버로 구축한 API 호출을 시도 했으나 실행되는 도중 API안에 크롤링을 진행하는 로직이 멈추는 일이 발생 함수는 try-catch로 감싸고 있었으나 catch문에 넣은 에러 알림 코드 또한 실행이 안되는 문제가 생겼다. 기능이 실행이 안되지만 에러또한 모르는 상황이 발생하니 해결을 위한 시도를 여러 방면으로 해봤다. 1. 모든 구간마다 log를 찍어 확인 -> router.post 함수안에 try - catch 중 try 안에 또 try-catch가 있는 구조 였는데 안쪽 try문이 실행안되는 것 확인! 2. 렌더링 순서 문제인지 확인 -> 바깥 쪽 try문에 정의된 함수를 await 함수() 로 사용했기에 이 문제는 아니라고 추측 3. 일단 에러가 뜨지 않는 상황이기에 catch에 집중 1..
2024.02.23 -
[PersonaAI - 비공개 프로젝트b] node.js 크롤링
1. 크롤링 라이브러리 : node.js의 크롤링 용 라이브러리인 cheerio로 하려했지만 웹드라이버를 쓰지 않는 방법이라 사용이 제한적 : selenium-webdriver 를 사용하면서 해결 2. 크롬드라이버 설치 1) 버전 : 그냥 가장 최신 버전을 다운로드 했지만 내 컴퓨터의 크롬과 버전이 일치해야함 ( 내 버전확인 : 크롬 오른쪽위 케밥 ?(...세로로 돌린 모양의 메뉴 아이콘) - 톱니(설정) - 왼쪽 목록 맨아래 Chrome 정보 ) 2) 크롬드라이버 경로 : 해당 크롤링 구동 파일과 같은 dir에 넣어야함 - 넣을 파일 : chrome.exe ( => 예전 블로그들 보면 chromedriver.ini? 이걸 넣으라 던데 바뀐거 같음(그런게 없음) ) 3. 크롤링 파일 실행 terminal..
2024.02.23