본문 바로가기

전체 글447

[JAVA] POI 라이브러리를 사용한 엑셀 파일 만들기 POI 라이브러리를 사용해 사용자에게 업로드된 엑셀 파일을 읽는 포스팅은 직전 포스팅에서 복기했다. 그렇다면 기존 데이터를 엑셀 파일로 만들어서 다운로드하게 해주는 기능은 어떻게 해야하는 방법도 포스팅 해놓으면 훗날 도움이 될 것 같아 작성한다. 마찬가지로 POI 라이브러리를 사용하며, 프로젝트는 이전 프로젝트를 그대로 사용한다. https://123okk2.tistory.com/506 [JAVA] POI 라이브러리를 사용한 엑셀 파싱 직전 프로젝트 두 번째 복기를 해볼까 한다. 우선 간단하게 설명하자면, 나는 사용자에게 파일을 받아 이를 HTTPFS를 통해 HDFS에 저장하고, 내용을 파싱해서 DB에 저장한느 프로그램을 개발했다. 123okk2.tistory.com 프로젝트 설정 코드 작성에 앞서 디펜.. 2024. 3. 31.
[JAVA] POI 라이브러리를 사용한 엑셀 파싱 직전 프로젝트 두 번째 복기를 해볼까 한다. 우선 간단하게 설명하자면, 나는 사용자에게 파일을 받아 이를 HTTPFS를 통해 HDFS에 저장하고, 내용을 파싱해서 DB에 저장한느 프로그램을 개발했다. 이 때 받은 파일은 총 두 가지 종류로, CSV 파일 혹은 엑셀 파일 (xls, xlsx) 이다. 그래서 이번에는 POI 라이브러리를 통해 엑셀 파일을 파싱하는 코드를 공유해볼까 한다. POI 라이브러리 POI ( Poor Obfuscation Implementation)는 Apache에서 개발한 Java용 라이브러리이로 Microsoft Office 문서 형식(예: Excel, Word, PowerPoint 등)을 생성, 수정 및 읽기 위한 라이브러리이다. 해당 라이브러리를 통해 Java 애플리케이션에서 .. 2024. 3. 30.
[Webflux] Hadoop HTTPFS에 파일 업로드 이번에 또다시 혼자서 개발을 전담하며, Hadoop의 에코 시스템과 통신해서 데이터를 업로드/다운로드 하는 프로그램의 개발을 맡게 되었다. 그 과정에서 여러 가지 새로운 것들을 알아냈고, 언제 다시 사용할 지 모르니 복기 차원에서 블로그 포스팅을 해볼까 한다. 우선 첫 번째는 HTTPFS에 파일을 업로드 하는 것이다. 프로젝트는 아래와 같이 설정되어 있다. Spring Boot 3.2.4 Java 17 HTTPFS HTTPFS는 HDFS과 같은 대용량 데이터 저장 시스템에 HTTP(S) 인터페이스를 제공하는 파일 시스템이다. 쉽게 말하자면, HTTP API를 통해 HDFS에 파일을 업로드/다운로드/조회 할 수 있도록 지원하는 API라고 생각하면 쉽다. 왠만해서는 하둡 설치 시 함께 동봉되어 설치되나, s.. 2024. 3. 30.
Hive의 메타스토어로 MariaDB를 설정했을 때 나는 에러 Hive는 메타데이터를 자체적으로 저장할 수도 있지만, 특정 DB를 설정해 해당 DB에 메타데이터를 저장할 수도 있다. 이번에 새로운 프로젝트의 개발 및 인프라 구축을 맡게되었다. 그래서 요구사항대로 MariaDB를 메타스토어로 하는 Hive 2.3.6을 설치하려고 했다. 설치는 이전과 같이 진행했다. https://123okk2.tistory.com/414 JAVA-HIVE/HBASE 간 통신_Hadoop/HIVE/HBase 설치 프로젝트를 진행하던 중, 빅데이터 플랫폼인 하둡의 대표적인 RDB인 Hive와, NoSQL DB인 HBase에 데이러틀 적재해야 하는 프로그램을 짜야할 일이 생겼다. Hadoop 기반 개발은 처음이기에 꽤 많이 헤멨 123okk2.tistory.com 위 게시글에서 추가로 한.. 2024. 2. 26.
이진트리 (JAVA 코드 포함) 대학생때부터 취업 직전까지 많이 듣고 많이 공부한 알고리즘 중 하나는 당연 트리이고, 그 중 이진트리를 기초로 생각하고 배운 적이 있다. 한창 취준하며 코테를 공부하던 때에는 과장해서 말하자면 이진트리는 굳이 생각이라는 것을 거치지 않고도 단어만 듣고 코드가 줄줄 써지는 정도였다. 하지만 너무 기초라고 생각했고, 취업 이후에는 이 구현 방법 자체를 머리속에서 지우고 살았다. 자기변명을 해보자면, 이진 트리를 굳이 실무에서 적용할 일이 없었고, 또 지난 여러 기업의 코딩 테스트를 응시하며 이진 트리가 나온 적은 한 번도 존재하지 않았었기 때문이다. *물론 많은 회사의 코딩테스트에 응시했던 것은 아니므로, 언제 어디서 등장할 지는 모른다. 이 사실을 상기하지 못한 것에 대한 변명일 뿐이다. 그렇게 살던 중 .. 2024. 2. 26.
[JAVA] 붕대 감기 https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public int solution(int[] bandage, int health, int[][] attacks) { // 현재 체력 int healthNow = health; // 몬스터의 마지막 공격이 끝나는 시간 int lastTime = attacks[attacks.length-1][0]; // 다음 공격 int nextAttack = 0; // 붕대 감기 .. 2024. 2. 24.
[JAVA/DFS]단어 변환 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr class Solution { int answer = Integer.MAX_VALUE; boolean[] converted; public int solution(String begin, String target, String[] words) { converted = new boolean[words.leng.. 2024. 2. 24.
[JAVA/DFS] 여행경로 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { private String SPACE = " "; List travelList = new ArrayList(); boolean[] ticketUsed; int ticketCnt; public String[] solution(String[][] tickets) { ticketCnt = tickets.length; ticketUsed .. 2024. 2. 24.
[JAVA/DP] 등굣길 https://school.programmers.co.kr/learn/courses/30/lessons/42898# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public int solution(int m, int n, int[][] puddles) { // 쉽게 하기위해 판 생성 int[][] board = new int[n+1][m+1]; board[1][1] = 1; // 웅덩이는 -1로 표시 for(int[] puddle : puddles) { // 이거때문에 한참 헤맴... [puddle[0]][puddle[1].. 2024. 2. 24.
[JAVA/DFS] 네트워크 https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { int answer = 0; boolean[] visited; public int solution(int n, int[][] computers) { visited = new boolean[n]; for(int i=0; i 2024. 2. 23.
[JAVA/BFS] 가장 먼 노드 https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public int solution(int n, int[][] edge) { int answer = 0; // edge와 방문 기록 저장 Map edgeMap = new HashMap(); boolean[] visited = new boolean[n+1]; // edgeMap 초기화 for(int i=1; i 2024. 2. 23.
[JAVA] 과제 진행하기 https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public String[] solution(String[][] plans) { String[] answer = new String[plans.length]; // 다루기 편하게 클래스로 변경 Homework[] homeworks = new Homework[plans.length]; for(int i=0; i< plans.leng.. 2024. 2. 23.