썸네일 구글 이미지 검색 크롤링하는 소스 이전에 진행한 특정 사이트에서 이미지 다운로드 시켜주는 예제 진행 후, 구글 검색도 가능하다고 하여 찾아서 작성해보았다. 파이썬은 처음 접해보는데, 라이브러리가 되게 잘되어있어서 기본적인 문법만 알면 얼마든지 응용, 작성할 수 있을 것 같다. 이 언어로 도대체 어디까지 가능한지 계속 찾아볼 계획이다. import os import sys from tkinter.tix import INTEGER import urllib.request from selenium import webdriver from time import sleep from bs4 import BeautifulSoup import uuid from selenium.webdriver.common.by import By from selenium...
썸네일 웹 사이트 IMG 태그 소스 파일 가져오기 실습 겸, 테스트로 특정 웹 페이지 내에 특정 영역을 입력받아 해당 영역 내에 있는 img 또는 video 요소의 src 파일을 가져오는 코드를 작성해서 테스트 해보았다. import os import sys import urllib.request from selenium import webdriver from time import sleep from bs4 import BeautifulSoup import uuid # 저장할 이미지 폴더 path = "E:/이미지" # 크롬 드라이버 설정 # (크롤링할 때 웹 페이지 띄우지 않음, gpu 사용 안함, 한글 지원, user-agent 헤더 추가) chrome_options = webdriver.ChromeOptions() chrome_options.add..
썸네일 [AOP] AOP Aspect 를 이용한 로그 처리 하기 AOP 및 구성요소 간단 설명 스프링 핵심 구성 요소 중 하나인 AOP 는 로직을 관심사(Aspect)라는 부분으로 나누는 것으로 시작합니다. OOP에서 모듈화의 핵심 단위는 클래스인 반면, AOP의 모듈화 단위는 Aspect 입니다. 종속성 주입은 애플리케이션 개체를 서로 분리하는데 도움이 되고, AOP는 개체와 횡단 관심사를 분리하는데 도움이 됩니다. [용어 설명] Aspect - 횡단 관심사를 제공하는 모듈, 예를 들어 지금 작성하려하는 로깅을 위한 모듈을 로깅을 위한 Aspect 라고 한다. Join Point - AOP 프로그램을 사용하여 작업할 애플리케이션의 위치 Advice - 메소드 실행 전이나 후에 취해야 할 실제 조치 Point Cut - Advice가 실행되는 하나 이상의 Join P..
썸네일 [Spring Boot] 파일 업로드 만들기 -4- https://lucete-stellae.tistory.com/80 [Spring Boot] 파일 업로드 만들기 -3- https://lucete-stellae.tistory.com/78 지난번에 이어서 파일 업로드 함수에 기능을 추가 하였다. 1. 파일 업로드 함수의 공통화 2. 파일 예외처리 (사이즈,확장자) 3. 파일 이름 암호화 4. 파일 저장 위치를 lucete-stellae.tistory.com 지난 게시글에 이어서, 파일 업로드 관련 작업을 다시 진행했다. 이번에 중점을 둔 것은 다중 파일 업로드 지원이다. 해당 파일 업로드 기능을 다른 Boot 프로젝트에서 가져다 사용했는데, 해당 서비스에서는 파일 업로드 후 업로드한 파일 리스트를 리턴하여, 정보를 표현해주어야 했기에 이번 다중 파일 업로..
썸네일 [ToastUI Editor] 이미지 복사 붙여 넣기 시, 파일 업로드 및 UI처리 기존에 진행 했던 프로젝트에서는 글 작성 시, Toast UI Editor 를 사용하고 있었다. 따로 파일 업로드 기능은 없었는데, 에디터에서 글 작성 시 에디터 자체 지원으로 이미지를 붙여넣기 하면 blob 데이터를 렌더링 해서 이미지를 그대로 가져올 수 있게 되어있었다. 해당 이미지는 blob 데이터로 그대로 DB에 저장되기 때문에, 이미지를 많이 사용하여 글을 작성하는 경우 데이터의 크기가 어마어마 해진다. 물론 커져봤자 감당이 안될 수준은 아니지만 문제는 해당 데이터를 read 하여 화면 단으로 데이터를 가져오는 경우에 데이터가 너무 커서 로딩이 길어진다는 단점이 존재했다. 따라서, 복사 붙여넣기로 이미지를 가져오는 부분은 유지하되, 파일을 업로드하여 URL을 BLOB데이터가 아닌 download..
썸네일 [Spring Boot] 파일 업로드 만들기 -3- https://lucete-stellae.tistory.com/78 지난번에 이어서 파일 업로드 함수에 기능을 추가 하였다. 1. 파일 업로드 함수의 공통화 2. 파일 예외처리 (사이즈,확장자) 3. 파일 이름 암호화 4. 파일 저장 위치를 타입에 따라 변경 및 날짜별로 폴더 구분하기 - FIleUtil.java package com.file.example.util; import java.io.File; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.time.L..
썸네일 [Axios] Vuejs / React 환경에서 axios 모듈 get/post 통신 에러 1. 프로젝트 환경 - html 베이스로 프론트에서 Vuejs 사용 중 - Vuejs 버전 2.6.14 - axios 라이브러리 버전 0.26.1 2. 문제 상황 - axios 를 이용하여 ajax 통신을 backend 와 진행. comm.post({ context: 'common_web', url: "/push/token/save", params: { pushToken: token, mobileOs: comm.mobile.os } }, function (data) {}); 위 코드는 /common_web/push/token/save URL 로 POST 요청을 보내는 ajax 정의 함수이다. 해당 통신을 실행하였을 때, Response 내용이 아예 없는 상황이 발생한다. 특징으로는 Response 에 담..
썸네일 [Spring Boot] 파일 업로드 만들기 -2- 이번에 진행한 것은 간단하게, 업로드 된 파일의 정보를 DB에 저장하는 기능을 구현했다. 별다른 로직은 없고 단순 정보를 가져와 DB에 저장한다. - build.gradle : DB관련 라이브러리 추가 (DB는 Docker 베이스의 Postgres 사용) plugins { id 'org.springframework.boot' version '2.6.4' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' id 'war' } group = 'com.file' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' repositories { mavenCentral() } dependencie..
썸네일 [ECR] Spring Boot + JSP 프로젝트 JIB로 ECR 업로드하기 기존 작업은 보통 RESTful API 형태로 구성이 된 서비스를 주로 jib로 올렸었지만, 기존 MPA 서비스와 동일한 Spring Boot 프로젝트를 ECR에 업로드해야할 일이 생겼다. 기존 프로젝트의 경우, 백단 요청만 받아서 처리하면 되기에 JAR파일로 묶어 Jib를 통해 ECR에 배포되는 형태를 가졌으나 이번에는 웹 리소스까지 포함된 전체 프로젝트를 배포하여 운영해야 하는 상황이었다. - JAR vs WAR JAR : Java 클래스, 메타데이터 등으로 구성된 자바 어플리케이션을 구동하기 위한 파일 WAR : JAR 구성 파일을 포함하여 서블릿이나 JSP등 웹 애플리케이션을 배포 및 테스트 하기 위한 파일들로 구성된 파일 주요 차이점은, 해당 파일들을 구성하는 내용 측면에 존재한다는 것. 어찌됐..
썸네일 [Spring Boot] 파일 업로드 만들기 -1- 늘 사용하지만, 직접 만들어 보지는 못했던 파일 업로드 만들기를 해 볼 생각이다. 작업 환경은 다음과 같다. 1. Java 11 2. Spring Boot 2.6.4 3. Gradle 7.2 4. War 배포 사용 FileUpload / Download 서비스는 다음을 전제로 개발하기로 한다. 1. Front에서 MultipartRequest로 파일 요청을 받는다. 폼 태그 내에서 Submit하는 방식을 우선적으로 구현한다. 2. Back에서는 이를 받아 서버에 저장하고, 관련 정보를 DB에 저장한다. 3. 서버 경로에 저장하는 과정에는 확장자 등에 대해 예외처리는 실시 한다. 4. 파일 업로드는 다중 업로드를 지원해야 하며, 필요 시 외부 라이브러리를 사용하여 업로드 한다. 5. 추후, 1-4 구현 시..
썸네일 [ Vue js + JSP ] EL 값을 바인딩 하면, 이벤트 전달이 안되는 현상 JSP 페이지 내에서 Vue.js 컴포넌트를 사용하던 중, 이벤트 전달이 안되는 현상이 발생했다. jsp 페이지 내 vue.js 선언 부분 var vm = new Vue({ el: '#content', components: {}, data: function () { return { list: [], pageInfo: { pageNo: 1, pageSize: 10, totalCount: 0, } } }, created: function () { let vm = this; vm.list = JSON.parse('${result.list}'); vm.totalCount = ${result.totalCount}; }, mounted: function () { console.log('mounted p'); }, ..
썸네일 [ VueJs Datepicker ] datepicker 이벤트 관련 문제 vuejs Datepicker 사용 시, IOS 15+ 모바일 환경에서 발생한 문제에 대해 공유하고자 한다. 작업 중인 애플리케이션 내에서 vuejs datepicker 를 사용하고 있는데 해당 datepicker 에는 이벤트가 다음과 같이 선언되어 있다. @input 은 datepicker에서 날짜를 선택 시, yyyy.mm.dd 형식으로 변환하여 model 에 값을 넣어주는 이벤트이다. @selected 는 datepicker에서 날짜를 선택하면, 자동적으로 다음 datepicker에 disabled 옵션을 걸어주는 역할을 하는 이벤트 이다. 여기서 발생한 첫번째 문제는 아래의 링크 내용 처럼 ios date 가 문제가 되면서 발생한다. https://lucete-stellae.tistory.com/..