본문 바로가기

전체 글61

[JPA] ENTITY의 DTO 전환 반드시 필요한가 Entity의 속성이 Presentation layer에서 노출되는 것을 막기 위해 도메인 레이어에서 DTO 전환이 반드시 필요한 것일까완벽하게 동일한 레이아웃인데..?  일반적으로 Entity를 DTO(Data Transfer Object)로 변환하는 것은 좋은 실천 방법임에 분명하다.Entity가 민감한 정보를 포함하고 있다면 보안상, DTO를 사용하여 필요 정보만 노출DTO를 사용하면 Presentation layer의 요구사항 변경에 더 유연하게 대응이 가능필요한 데이터만 전송함으로써 네트워크 부하를 줄여 성능적으로 유리Entity와 Presentation layer 간의 결합도를 감소API 버전 관리가 용이반면, 다음과 같은 경우에는 Entity를 직접 사용하는 것이 더 효율적일 수 있다.간단한.. 2024. 8. 24.
[JAVA] 카데인 알고리즘(Kadane's Algorithm) 카데인 알고리즘이란?카데인 알고리즘은 연속 부분 배열의 최대 합을 구하는 효율적인 방법으로, 컴퓨터 과학과 알고리즘 문제 해결에서 자주 사용됩니다. 이 알고리즘은 O(n) 시간 복잡도를 가지며, 동적 계획법(Dynamic Programming) 접근법을 사용합니다.카데인 알고리즘의 원리카데인 알고리즘은 현재까지의 최대 부분 배열의 합을 유지하면서, 각 요소를 순차적으로 탐색합니다. 알고리즘은 두 가지 값을 유지합니다.현재까지의 최대 합 (max_so_far) : 지금까지 발견한 최대 부분 배열의 합현재 위치에서 끝나는 최대 합 (max_ending_here) : 현재 위치에서 끝나는 부분 배열 중 최대 합알고리즘 단계1. max_so_far와 max_ending_here를 배열의 첫 번째 요소로 초기화합.. 2024. 8. 14.
[JAVA] 다익스트라(Dijkstra) 알고리즘 다익스트라(Dijkstra) 알고리즘다익스트라 알고리즘이란BFS와 DP를 활용한 최단경로 탐색 알고리즘이다다이나믹프로그래밍인 이유는 하나의 최단 거리를 구할 때 그 이전까지 구했던 최단 거리 정보를 그대로 사용하기 때문이다.다익스트라 알고리즘의 특징그래프 내부 하나의 정점(노드, Vertex)에서 다른 모든 정점으로 가는 최단경로를 알려준다.그래프의 간선(Edge)마다 가중치가 존재할 때 사용한다. 이 점이 BFS를 활용한 최단 경로 구하기와 다른 점이다.간선의 음의 가중치는 존재하지 않는다. 음의 가중치가 하나라도 있으면 다익스트라를 사용할 수 없다.음의 가중치가 존재하지 않기 때문에 현실세계에 사용하기 적합한 알고리즘이다.(ex. GPS, 네비게이션)출발노드, 도착노드로 구성된 이차원 배열 활용 구현.. 2024. 7. 2.
[DataBase] 보이지않는 비표시 문자와 SQL별 대처법 제로 너비 공간이란?제로 너비 공간(ZWSP)은 텍스트에서 눈에 보이지 않는 공백으로, 그 자체는 아무런 너비도 가지지 않지만 텍스트의 형식을 제어하는 데 사용됩니다.이 문자들은 텍스트의 가독성을 해치지 않으면서도 데이터 처리 과정에서 문제를 일으킬 수 있습니다.특히 SQL 데이터베이스에서는 데이터 무결성을 저해하거나 예상치 못한 결과를 초래할 수 있습니다.주요 제로 너비 문자 종류 및 설명제로 너비 공간 (Zero Width Space, ZWSP)  - U+200B설명: 두 글자 사이에 보이지 않는 간격을 추가합니다. 줄 바꿈 지점을 표시하거나 텍스트를 구분하는 데 사용됩니다.용도: 줄 바꿈 허용 지점 표시, 언어별 단어 분리제로 너비 비조인자 (Zero Width Non-Joiner, ZWNJ)  -.. 2024. 7. 1.
[IntelliJ] 한글깨짐 문제 해결 1. VM옵션 설정Help탭 -> Edit Custom Vm Options -> .vmoptions 파일 수정-Dfile.encoding=UTF-8-Dconsole.encoding=UTF-8위 두줄을 추가한다. * 탭 옵션을 찾기 어려운 경우 파일 탐색기능으로 'Edit Custom VM Options...' 를 찾을 수 있다. 2. 파일 인코딩 설정File탭의 Settings... > Editor > File Encodings 의 설정을 변경한다.Global Encoding , Project Encoding : UTF-8Default encoding for properties files : UTF-8Transparent native-to-ascii convertion : 체크Global Encoding.. 2024. 6. 5.
[Node.js] .env 파일로 환경변수를 관리 하기 아래는 server.js에서 pg패키지를 이용하여 Postgresql 접속테스트를 하기 위해 작성한 코드 일부에요new Clienct를 생성할때 하드코딩 되어 있는 접속 정보 객체의 값을 환경변수로 처리해보려고요2024.06.04 - [Language] - [Node.js] PostgreSQL로 간단한 웹 데이터 조회하기 const express = require('express');const path = require('path');const { Client } = require('pg');const app = express();const port = 3000;const client = new Client({ user: 'fubarvis', host: 'localhost', database: 'f.. 2024. 6. 5.
[Node.js] PostgreSQL로 간단한 웹 데이터 조회하기 회사에서 동료들과 동호회 활동을 하고 있습니다.각 맴버의 활동 정보를 slack 챗봇을 만들어 알림 처리를 하고 있었어요. slack 알림은 보고자 하는 내용을 최소한으로 가독성 있게 보려는 컨셉으로 접근하다보니 한계가 있더라구요,그래서 웹에서 조회 해보려고 해요.단, 가장 빠르고 편하게, 최소한의 노력만으로 보고자 하는 화면을 만들어 내야 합니다. 일을 해야하거든요. 오늘은 Postgresql에서 Node.js 를 사용하여 빠르게 맴버목록을 조회 해볼께요project 폴더 생성mkdir pg-express-appcd pg-express-apppackage.json 파일 생성npm init -ypg 패키지 설치pg는 Node.js 애플리케이션에서 PostgreSQL 데이터베이스와 상호작용하기 위한 공식 .. 2024. 6. 4.
[JAVA] 동적 계획법(Dynamic Programming) Dynamic Programming(DP, 동적 계획법)1. 개요DP, 즉 다이나믹 프로그래밍(또는 동적 계획법)은 기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것으로 특정한 알고리즘이 아닌 하나의 문제해결 패러다임으로 볼 수 있다.Richard Bellman이 1950년대에 사용한 단어로 이름은 그냥 멋있어 보여서 그렇게 지어졌으니 신경쓰지 않아도 된다.큰 문제를 작은 문제로 쪼개서 그 답을 저장해두고 재활용한다.2. DP를 쓰는 이유일반적인 재귀(Native Recursion) 방식 또한 DP와 매우 유사하다. 큰 차이점은 일반적인 재귀를 단순히 사용 시 동일한 작은 문제들이 여러 번 반복되어 비효율적인 계산이 될 수 있.. 2024. 5. 31.
[JAVA] 깊이 우선 탐색 (DFS, Depth-First Search) 깊이 우선 탐색 (DFS, Depth-First Search)깊이 우선 탐색이란루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완번하게 탐색하는 방법미로를 탐색할 때 한 방향으로 갈 수 있을 떄까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 이곳으로 부터 다른 방향으로 다시 탐색을 진행하는 방법과 유사하다.즉, 넓게(wide) 탐색하기전에 깊게(deep) 탐색하는 것이다.사용하는 경우: 모든 노드를 방문 하고자 하는 경우에 이 방법을 선택한다.깊이 우선 탐색(DFS)이 너비 우선 탐색(BFS)보다 조금 더 간단하다.단순 검색 속도 자체는 너비 우선 탐색(BFS)에 비해서 느리다.깊이 우선 탐색(DFS)의 특징자기 자신을.. 2024. 5. 16.
[JAVA] 너비 우선 탐색 (BFS, Breadth-First Search) 너비 우선 탐색 (BFS, Breadth-First Search)너비 우선 탐색이란루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하는 순회 방법이다.즉, 깊게(deep) 탐색하기 전에 넓게(wide) 탐색하는 것이다.사용하는 경우: 두 노드 사이의 최단경로 혹은 임의의 경로를 찾고 싶을 때 이 방법을 선택한다.지구상에 존재하는 모든 친구 관계를 그래프로 표현한 후 Ash와 Vanessa 사이에 존재하는 경로를 찾는경우깊이 우선 탐색의 경우 - 모든 친구 관계를 다 살펴봐야 할지도 모른다.너비 우선 탐색의 경우 - Ash와 가까운 관계부터 탐색너비 우선 탐색(BFS)이 깊이 우선 탐색(DFS.. 2024. 5. 16.
[JAVA] 유클리드 호제법(Euclidean Algorithm) 유클리드 알고리즘과 호제법☞  유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다.☞  호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다.최대공약수(GCD: Greatest Common Divisor) & 최소공배수(LCM: Least Common Multiple)란?☞ 최대공약수(GCD: Greatest Common Divisor): 두 수의 공통된 '약수 중에서 가장 큰 수'를 의미한다.☞ 최소공배수(LCM: Least Common Multiple): 두 수의 공통된 '배수 중에서 가장 작은 수'를 의미한다.두 수의 최대공약수, 최소공배수 구하기최대공약수(GCD) 구현 방법1. 반복문으로 구현b가 0이 될.. 2024. 5. 16.
[Oracle] 해커랭크(HackerRank) 문제 풀이 - Binary Tree Nodes You are given a table, BST, containing two columns: N and P, where N represents the value of a node in Binary Tree, and P is the parent of N.Write a query to find the node type of Binary Tree ordered by the value of the node. Output one of the following for each node:Root: If node is root node.Leaf: If node is leaf node.Inner: If node is neither root nor leaf node.Sample InputSample Output1 Leaf.. 2023. 3. 27.
[Oracle] 해커랭크(HackerRank) 문제 풀이 - Occupations Pivot the Occupation column in OCCUPATIONS so that each Name is sorted alphabetically and displayed underneath its corresponding Occupation. The output column headers should be Doctor, Professor, Singer, and Actor, respectively.Note: Print NULL when there are no more names corresponding to an occupation.Input FormatThe OCCUPATIONS table is described as follows:Occupation will only contain one of.. 2023. 3. 22.
[Data Engineering] CCA Spark and Hadoop Developer Exam(CCA175) 정보와 준비 자료 1. 시험 소개 1) 자격증 분류 cloudera 주관 CDH(Cloudera Distribution Including Apache Hadoop) , HDP(Hortonworks Data Platform) 자격증 중, CCA(Cloudera Certified Association)에 해당하는 자격증 2) 자격증 소개 Apache Spark와 Cloudera Enterprise tool을 이용한 데이터 수집, 가공 ,처리를 다루는 자격증 문항 수 Cloudera Enterprise cluster에서 수행하는 8 ~ 12개의 수행능력 기반의(hands-on) 과제 시간 제한 120분 합격 점수 70% 이상 문제의 언어형식 영어 시험 비용 US$295 Spark 코딩 시 사용 가능 프로그래밍 언어 (결과만 중.. 2023. 3. 8.
[Autohotkey] 오토핫키를 이용한 업무 자동화 - 1. 오토핫키 다운받기 오토핫키란? 무료 오픈소스 기반 스크립트 언어로 매크로에 특화되어 있는 언어이다 커맨드 단축키나 수행 순서를 기반으로 특정 액션을 체인화하여 한 행위로 묶어 처리할 수 있다 다음과 같은 케이스가 있을 때 써먹을 수 있겠다 CASE1. 불시에 수강확인 버튼이 나오고 클릭을 안할 경우 영상 재생이 종료되는 온라인 교육 CASE2. 파워포인트 서식 복사의 경우 ctrl + shift + c 3개의 키를 눌러야 하는데 F1 한 키로 묶어서 처리 가능 CASE3. 많아지는 이웃에 따라 달아야 할 댓글과 눌러야할 하트가 많아져 힘든 블로거 다운로드 링크: https://www.autohotkey.com/ 다운로드 클릭 2.0 버전은 1.1 버전과 호환이 안되는 대신 구문의 일관성을 가져왔다고 한다 강의는 1.1 버.. 2023. 2. 28.