Beautiful Soup이란? Beautiful Soup는 HTML 및 XML 문서를 파싱하기 위한 파이썬 라이브러리(Python Library)입니다. 웹 스크래핑(Web Scraping)에 사용되며, 복잡하고 비정형적인 웹 페이지로부터 필요한 데이터를 빠르고 쉽게 추출하는 것을 도와주고 있습니다. Beautiful Soup 예제 from bs4 import BeautifulSoup import requests # 스크래핑할 URL url = "https://needjarvis.tistory.com/802" # 해당 url에 연결한 후 HTML 내용을 가져옵니다. response = requests.get(url) html_content = response.text print(html_content)..
주피터 노트북(Jupyter Notebook)으로 간단하게 프로그램을 돌릴 때, 평상시에는 문제가 없지만 용량이 큰 것을 돌리기 위해서 C가 아니라 다른 드라이브로 돌려야 되는 경우가 종종 있습니다. 이럴 때에는 드라이브를 변경해야 하는데요 주피터의 드라이브를 변경하는 법을 포스팅 하도록 하겠습니다. 주피터 노트북 환경설정 생성 우선 드라이브를 변경하기 위해서는 주피터 환경설정 파일을 만들어야 합니다. (kogpt) C:\Users\user>jupyter notebook --generate-config Writing default config to: C:\Users\user\.jupyter\jupyter_notebook_config.py 위와 같이 jupyter notebook --generate-con..
마이바티스(MyBatis) 개요 마이바티스(Mybatis)는 2001년 클린턴 비긴이 만든 아이바티스(ibatis) 프로젝트의 3.0에서 포크된 프로젝트로 아파치 라이센스(Apache License) 2.0에 따라 배포되는 무료 소프트웨어[1]이다. MyBatis(ibatis 포함)의 특징은 기존 ORM 프레임워크와 달리 Java 개체를 데이터베이스 테이블에 매핑하지 않고, Java 메소드를 SQL에 매핑한다[2]. 그러다보니 자바 소스는 매우 간결해지고, 핵심은 SQL문을 포함한 XML 코드에 모두 포함이 되어 있다. 국내의 대형 SI들과 함께 단체로 개발을 할 때, Mybatis를 사용하는 가장 큰 이유는 바로 SQL문이 독립되어 유지보수가 편리해지고, 개발자 수준별로 코드를 분리할 수 있기가 용이하..
자바로 파일을 복사하는 3가지 방식을 설명해보도록 하겠습니다. 이것 이외에도 다양한 라이브러리를 사용해서 복사하는 방법들이 있지만, 아래의 방식만 알아도 큰 문제는 없을거라 판단해서 3가지를 선정해보았습니다. 1. FileInputStream/FileOutputStream 방식 우선 가장 고전적인 방식으로 InputStream, OutputStream 을 사용하여 byte를 복사하는 방식입니다. public static void main(String args[]) { String orgFilePath = "D:/test_copy/original.jpg"; String outFilePath = "D:/test_copy/copy.jpg"; System.out.println("status -> " + file..
Spring boot에서 가장 기본적으로 jdbc를 다룰 수 있는 jdbcTemplate에 대한 설정에 대해서 가볍게 설명해보도록 하겠습니다. 포스팅의 내용은 maven을 기준으로 작성하였고, DB는 MySQL 기준인 것을 참고하시면 되겠습니다. Spring boot 설정 Pom.xml org.springframework.boot spring-boot-starter-jdbc mysql mysql-connector-java spring-boot-starter-jdbc는 jdbcTemplate를 위함이며, mysql-connector-java는 mysql를 기반으로 connection을 하기 위함입니다. application.properties ## MySQL spring.datasource.url=jdbc..
Java에서 List 데이터의 값으로 오름차순을 하거나 내림차순을 하는 방법은 최하단 포스팅을 확인하시면 되며, 여기서는 데이터를 저장한 순서를 뒤집는 방법을 설명해보고자 합니다. 데이터 세팅 public static void main(String[] args) { String[] arrs = {"삼성전자","테슬라","비트코인","펄어비스","코카콜라"}; List list = new ArrayList(Arrays.asList(arrs)); System.out.println("리버스 이전 리스트 -> " + list.toString()); } # 리버스 이전 리스트 -> [삼성전자, 테슬라, 비트코인, 펄어비스, 코카콜라] 오늘은 주식이 우울한 관계로 떡상하자는 마음에 주식 종목들과 암호화폐 종목을 리..
자바로 파일을 직접 컨트롤하여 파일을 삭제해야 하는 경우 및 혹은 하위 디렉토리까지 삭제를 해야 하는 경우가 있을 수 있다. 예를 들어 로그 파일을 매일 폴더를 생성하여 관리를 하고 있는데 날짜값이 오래되었으면 삭제를 해야 한다면, 자바로 날짜값을 접근하여 폴더를 삭제하거나 폴더명을 날짜값으로 만들 경우 제거하는 경우가 있다. 이번에 할 것은 날짜값을 체크해서 삭제하는 것이 아니라, 특정 폴더를 지정하면 하위 폴더를 모두 제거하는 로직을 해보도록 한다. 테스트 데이터 테스트 하기에 앞서 로직의 실험을 위해 우선 폴더를 생성하였는데 아래와 같이 D드라이브에 test라는 폴더를 만들었으며 해당 폴더 안에는 여러개의 하위 폴더들을 생성하였고, test 폴더 안에는 test.txt라는 파일이 존재한다. test..
파이썬은 datetime과 time이라는 라이브러리를 제공하며, 이 값을 활용하여 날짜의 값을 분리하거나 N일을 기준으로 이후 이전, 이후 등을 구할 수 있다. import 라이브러리 import datetime as dt import time as tm datetime과 time 라이브러리를 호출한다. time과 dateime 사용 print(tm.time()) # 1647013868.527883 tm객체의 time 펑션을 호출하면, 시스템 타임(컴퓨터가 인식하는 시간, timestamp)이 찍힌다. 이 값을 이제 날짜 포맷으로 세팅한다. now = dt.datetime.fromtimestamp(tm.time()) print(now) # 2022-03-12 00:51:08.527909 datetime에..
콘다 패키지가 오래되어서 더이상 사용하기 힘들 경우 콘다 자체를 업데이트 시켜야 될 것이다. 명령어 conda update -n base conda 위와 같이 명령어를 실행하면 conda의 코어가 업데이트 된다. 실행과정 (base) Jinhooui-MacBook-Pro:~ stevejang$ conda update -n base conda Collecting package metadata (current_repodata.json): done Solving environment: done ## Package Plan ## environment location: /Users/stevejang/opt/anaconda3 added / updated specs: - conda The following packa..
Java에는 Http 상의 데이터 즉, URL 기반으로 파일을 download할 수 있는 다양한 라이브러리들이 있고, 기본 버전으로도 제공을 하고 있다. 본 포스팅은 3가지의 대표적인 방법들을 모두 써보고 비교하여 성능을 점검해보도록 하였다. 고전적인 방법 public static void fileDown(String url, String fileName) throws MalformedURLException, IOException { BufferedInputStream in = null; FileOutputStream fout = null; try { in = new BufferedInputStream(new URL(url).openStream()); fout = new FileOutputStream(f..
롬복(Lombok)이 사실은 호불호가 상당히 많이 갈리는 유틸리티이고, 같이 프로젝트를 진행할 때 롬복을 사용 안해본 사람들이 있다면 더욱 문제가 발생할 수 있는 기능이고 git 등에 공유하기도 힘들어서 적극적으로 추천하는 기능은 아니지만 롬복을 사용하는 추세가 증가하다보니 설정 방법에 대해서 정리해보고자 한다. 우선 롬복이라는 것은 단순히 라이브러리만 세팅해서 되는 기능이 아니다. 그렇게 간단했었다면 롬복을 비선호할 이유도 없었을 것이다. 롬복(Lombok) 이란? 우선 롬복을 사용하는 사람들은 게터(Getter), 세터(Setter) 등을 편리하게 만들어주기 때문에 사용한다고 하지만 필자는 이것이 뭐가 불편한지 모르기 때문에 왜 이것이 편리한지를 되묻고 싶다. Getter, Setter 만들때 수동으..
개발자가 접근하기 쉽고, SI가 아니라 솔루션 업체나 회사 전산실이나 IT부서 같은 곳에 근무하게 된다면 별도의 디자이너가 붙지 않고 부트스트랩(bootstrap) 등을 이용해서 직접 디자인을 선택하고 만들어야 되는 경우가 많다. 예를 들어 소수가 사용하는 관리기의 경우 웹디자이너가 붙으면 공수(Man Month, M/M)가 많이 들 뿐만 아니라 이미 부트스트랩으로 만들어진 디자인들이 훌륭해서 디자이너가 붙는다고 해서 심미적이나 기능적으로 뛰어나다 장담할 수 없기 때문이다. 현재는 관리기 뿐만 아니라 서비스를 하는 페이지에도 부트스트랩을 받아서 커스터마이징을 하는 경우도 상당히 많은데 이미 웹개발과 부트스트랩 프로젝트는 떼려야 뗄 수 없는 프로젝트가 되어 버렸다. 부트스트랩(Bootstrap) 부트스트랩..