본문 바로가기

분류 전체보기112

PDF 파일 번역 프로그램 - Cloud Translation API Cloud Translation API 개발 시작!기존에 테스트 했을 때는 터미널에서 cURL 이나 Powershell 을 통해서 요청을 보냈는데자바스크립트에서 같은 내용으로 요청을 보내면 Oath2 인증오류가 발생했다.api key 나 oath2 사용자 계정을 만들어서 같이 .. 2024. 4. 18.
PDF 파일 번역 프로그램 - Firebase 파일 업로드 Firebase 업로드 기능 개발 시작! 분할한 파일을 Cloud Storage 에 업로드 해야 Cloud Translation API 를 사용할 수 있다. Cloud Storage 에 직접 업로드를 시도해봤는데 보안 문제 때문에 안되는 것이 많았다. 그래서 버킷만 Cloud Storage에 만들어두고 업로드와 다운로드는 Firebase 통해서 하기로 결정했다. Firebase 에서 Cloud Storage의 버킷에 엑세스 할 수 있었다. 업로드가 모두 완료되고 나서 다음 작업을 할 수 있도록 Promise 도 걸어놨다. const uploadPDF = async (splitPDFs, storage) => { try { // 분할된 PDF 업로드 const uploadPromises = splitPDFs.. 2024. 4. 18.
PDF 파일 번역 프로그램 - PDF 파일 분할(javascript) 파일 분할 기능 개발 시작! 일단 여러 블로그와 스택 오버플로우를 검색해봐도 자세한 내용은 찾기 어려웠다. 그래서 나의 오랜만에 나의 가장 친한 친구 ChatGPT 를 켰다. 자바스크립트로 PDF 파일 분할 코드를 알려달라고 해도 정확한 코드가 한번에 안 나와 예시 코드와 여러가지 질문들을 이어가며 수정에 수정을 거쳐 마침내 분할 코드를 완성할 수 있었다. 아래에 예시 코드는 PDF 파일을 20페이지 단위로 분할하는 코드이다. import { PDFDocument } from 'pdf-lib'; const splitPDFs = []; const pdfBytes = await file.arrayBuffer(); // file은 브라우저 상에 업로드 한것을 가져왔다 const pdfDoc = await PD.. 2024. 4. 18.
PDF 파일 번역 프로그램 - 브라우저 파일 업로드 브라우저에 파일 업로드 기능 개발 시작! 사용자가 편하게 파일을 번역할 수 있으려면 접근성이 좋아야 한다고 생각했다 그래서 가장 접근성이 좋은건 웹이라고 판단했다. 이참에 한번도 안해본 React 와 Node.js 를 다뤄보기로 결정했다. 하지만 단기간에 프로젝트를 완성해 30개가 넘는 책을 번역해야 했기에 차근차근 React 공부를 할 여유는 없었다. 그래서 직접 붙딫혀보면서 배우기로 했다. (Flutter 처음 배울때도 이런식으로 했었다. 처음엔 힘들어도 한번 해보고 공부하면 이해가 더 쏙쏙 되는 장점이 있다.) 먼저 파일업로드 예시 코드를 검색했다. 여러 블로그들을 돌며 내가 원하는 기능이 구현된 코드들을 둘러봤고 내가 원하는 기능에 가장 가깝게 구현한 코드를 CTRL + C 했다 ㅎㅎㅎ 거기서 내.. 2024. 4. 18.
[Python][백준 1148] 단어 만들기 https://www.acmicpc.net/problem/1148 1148번: 단어 만들기 어떤 신문엔 이러한 퍼즐이 있다. 3x3의 표에 영문자가 하나씩 있으며, 이 영문자들을 사용해서 최대한 많은 영단어를 만드는 것이 목표이다. 예를 들면, 아래의 퍼즐판에서는 'LINT', 'TILL', 'BRILLIAN www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 퍼즐에 있는 모든 글자들에 대해 각 글자마다 가능한 단어의 수 체크 2. 가장 많은 단어와 가장 적은 단어를 기록 및 출력 3. 단어의 수 체크할때 ASCII 코드 값 활용해서 배열 활용 간단한 문자열 문제 */ import sys input_func = sys.stdin.readline input_words = [] while T.. 2024. 4. 2.
PDF 파일 번역 프로그램 - 계획 수립 개발 해야 할 것들 - PDF 파일 분할 기능 - 분할한 파일들 Cloud Storage에 업로드 - 업로드 한 파일들 번역 API 호출 - 번역 완료된 파일들 Cloud Storage에서 다운 - 다운 받은 파일들 하나의 파일로 합치기 - 위의 기능들을 넣은 웹사이트 제작 고려해야 할 것들 - 웹사이트로 기능을 제공할 생각이니 javascript 로 개발 고려 - 오남용 방지 (아직 계획 X) - 예상 비용 책정 Flow Chart 1차 목표 웹사이트 개발이 필요하니 Node.js 간단하게 학습 2024. 4. 1.
PDF 파일 번역 프로그램 - 자료 조사 및 API 테스트 자료 조사 직접 만들기로 결정했으니 어떻게 만들지를 조사했다. 예전에 GCP 를 한참 많이 사용할 때 회사의 요청으로 번역 api 도 조사했었다. 그 때 봐두었던 문서 번역 API 가 생각이 났다. 그래서 문서 번역 API를 우선으로 조사했다. 조사 결과 PDF나 DOC 파일을 번역해주는 API를 GCP가 이미 제공하고 있었다. https://cloud.google.com/translate/docs/advanced/translate-documents?hl=ko 문서 번역 | Cloud Translation | Google Cloud 의견 보내기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 문서 번역 Cloud Translation - Advanced는 PDF 및 DOC.. 2024. 4. 1.
[Python][백준 5972] 택배 배송 https://www.acmicpc.net/problem/5972 5972번: 택배 배송 농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 양방향 가중치 2. 1개 이상의 경로 존재 3. 다익스트라로 접근 */ import heapq def dijkstra(start): distances = {node: float('inf') for node in graph} distances[start] = 0 priority_queue = [(0, start)] while priority_queue: current_.. 2024. 4. 1.
[Python][백준 1719] 등산 https://www.acmicpc.net/problem/1486 1486번: 등산 첫째 줄에 산의 세로크기 N과 가로크기 M 그리고, T와 D가 주어진다. N과 M은 25보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 지도가 주어진다. T는 52보다 작거나 같은 자연수이고, D는 1,000 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 입력된 알파벳을 숫자로 변환 (ASCII 코드 응용) 2. 변환한 높이정보를 활용해 상하좌우 오버플로 체크 후 해당 위치까지 가는데 걸리는 시간 계산 2.1 높이가 출발 위치보다 높으면 둘의 차의 제곱 2.2 출발 위치보다 낮으면 1 2.3 행렬 형태로 저장된 값을 리스트 형태로 변형 i*(가로열 길이) + j 3. 얻은 값으로 플로이드 워셜.. 2024. 3. 28.
[Python][백준 1719] 택배 https://www.acmicpc.net/problem/1719 1719번: 택배 명우기업은 2008년부터 택배 사업을 새로이 시작하기로 하였다. 우선 택배 화물을 모아서 처리하는 집하장을 몇 개 마련했지만, 택배 화물이 각 집하장들 사이를 오갈 때 어떤 경로를 거쳐야 하 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 플로이드 워셜을 통해 최단거리를 계산한다 2. 최단거리 계산을 위해 비교하며 가장 먼저 거쳐간 집하장을 저장한다. 3. 저장된 집하장 정보가 없다면 현재의 k값을 있다면 원래의 집하장 정보를 저장한다. */ import sys input = sys.stdin.readline INF = float('inf') def floyd_warshall(graph): n = le.. 2024. 3. 26.
[Python][백준 1956] 운동 https://www.acmicpc.net/problem/1956 1956번: 운동 첫째 줄에 V와 E가 빈칸을 사이에 두고 주어진다. (2 ≤ V ≤ 400, 0 ≤ E ≤ V(V-1)) 다음 E개의 줄에는 각각 세 개의 정수 a, b, c가 주어진다. a번 마을에서 b번 마을로 가는 거리가 c인 도로가 있다는 의 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 일방통행 (양방통행 X) 2. 거리의 합이 가장 작은 사이클을 찾아야 하며, 없으면 -1 출력 3. 플로이드 워셜을 통해 최단 거리를 계산할때 사이클이 있어야 하므로 스스로를 0으로 초기화 하지 않음 4. 나온 결과물 중 INF가 아닌 가장 작은 값을 출력 사이클 만드는 접근법만 생각해내면 간단한 응용이었다. */ impor.. 2024. 3. 26.
[Python][백준 21278] 호석이 두 마리 치킨 https://www.acmicpc.net/problem/21278 21278번: 호석이 두 마리 치킨 위의 그림과 같이 1번과 2번 건물에 치킨집을 짓게 되면 1번부터 5번 건물에 대해 치킨집까지의 왕복 시간이 0, 0, 2, 2, 2 로 최소가 된다. 2번과 3번 건물에 지어도 동일한 왕복 시간이 나오지만 더 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 플로이드 워셜을 통해 각 건물간의 거리를 구한다. 2. 치킨집은 총 두개이고 각 치킨집에서 다른 건물까지 걸리는 시간을 비교한다 3. 더 작은 값의 2를 곱한뒤 저장한다 (왕복 소요 시간) 4. 각 치킨집의 위치를 완전탐색으로 돌리며 위의 방법으로 구한 값을 비교한다. 5. 더 작은 값의 치킨집 위치를 같이 저장한다. 플로이드 .. 2024. 3. 23.