인기글
-
"마케팅 성공사례 보고서" (4학년 1학기 광고와 마케팅)
선정한 기업과 선정 이유 이번 마케팅 성공사례 조사와 관련한 보고서 작성을 위해 제가 선택한 기업은 카카오입니다. 카카오에 대해 설명하기 전에 왜 제가 카카오라는 기업을 주제로 잡았는지 설명하도록 하겠습니다. 이번 보고서의 주제로 카카오를 선정한 이유는 총 2가지입니다. 첫째는 제가 컴퓨터 공학을 공부하는 사람으로서 함께 일하고 싶은 회사이기 때문입니다. 카카오는 현재 우리의 생활에서 뺄 수 없는 감초와 같은 기능을 하고 있습니다. 친구와 대화를 할 때는 카카오톡을 사용하고 물건을 살때는 카카오 페이를 활용하며 화폐를 주고 받을 때는 카카오 뱅크를 사용하는 등 우리의 일상속에 숨쉬듯이 살아가는 것이 카카오라고 할 수 있습니다. 저는 이러한 카카오의 하나의 톱니바퀴가 되어 일하고 싶다는 꿈을 꾸고 있습니다..
2022.01.14
-
BFF (Backend For Frontend)와 MSA
이번에 시작한 프로젝트에서 3-Tier와 MSA, BFF 구조를 사용하려고 합니다.3-Tier이전 프로젝트에서 3-Tier와 MSA는 사용해 봤지만 BFF 구조는 처음 보았기에BFF란 무엇이고 왜 사용하는지, 장단점을 알아보려고 합니다.BFF (Backend For Frontend) 패턴이란?클라이언트(웹, 모바일 등) 별로 최적화된 백엔드 API 계층을 제공하기 위해, 각 프론트엔드에 특화된 백엔드 서비스를 따로 분리한 아키텍처 방식입니다.BFF 서버는 프론트엔드와 백엔드 사이의 중간 역할을 하며 간단한 요청은 BFF에서 처리하기도 합니다.BFF 서버는 주로 Node.js, Express 등을 사용합니다.BFF를 이해하기 위해서는 MSA를 알고 있으면 도움이 됩니다.MSA (Microservices A..
2025.07.20
-
기술블로그 velog에서 tistory로 옮긴 이유
오랜만입니다. 라이브입니다. 결론부터 말씀드리자면 다시 돌아왔습니다. velog로 기술블로그를 옮기려고 시도했었습니다. velog는 기술블로그 쓰기 좋은 플랫폼이었으니까요. 하지만 실패했습니다. velog는 좋은 플랫폼입니다. 개발자들이 많이 있는 만큼 양질의 소식을 들을수 있습니다. 게다가 markdown 구문을 사용할 수 있어서 글 쓰는것도 쉬운 편이었고요. 하지만 저는 돌아왔습니다. 아무래도 일궈놓은 tistory보다 velog가 정이 안간던 것도 있고요. 별도의 장치를 하지않으면 방문자가 보이지 않는것도 한몫 했습니다. 제가 아무리 글을 써도 누군가에게 읽혀진다는 느낌이 없었거든요. 그래서 친숙한 tistory로 돌아오게되었습니다. 잘부탁드립니다. 2023년 다사다난한 한해였습니다. 취업하고 적응..
2024.03.26
-
(c++) 프로그래머스 "2628) 종이자르기"
https://www.acmicpc.net/problem/2628 2628번: 종이자르기 첫줄에는 종이의 가로와 세로의 길이가 차례로 자연수로 주어진다. 가로와 세로의 길이는 최대 100㎝이다. 둘째 줄에는 칼로 잘라야하는 점선의 개수가 주어진다. 셋째 줄부터 마지막 줄까지 한 www.acmicpc.net #include #include #include using namespace std; int N, W, H,max_size = 0; vector list = { {0},{0} }; void solution() { sort(list[0].begin(), list[0].end()); sort(list[1].begin(), list[1].end()); for (int i = 1; i < list[0].siz..
2022.04.24
-
대표적인 페이징 처리 방식 2가지(Offset Pagination, Cursor Pagination)
오늘은 페이징 처리 방식에 대해서 알아보려고 한다.이번 프로젝트가 배울게 참 많은것 같다.이번 프로젝트에서 화면 페이징 처리 방식으로 Index 페이징과 Scroll 페이징을 분리해서 공통기능을 제공하고 있다.페이징 방식 별로 input, output 데이터가 다르기에각 방식이 어떻게 동작하는지 궁금해져서 알아보려고 한다. 먼저 많이 사용하는 페이징 방식은 크게 2가지가 있다.🔹 오프셋 기반 Offset Pagination전통적인 페이징 방식, pag와 limit을 받아 원하는 페이지의 데이터 조회 🔹 커서 기반 Cursor Pagination(no offset Pagination)마지막으로 가져온 Cursor를 기준으로 데이터를 조회하나씩 설명해 보겠다. 🔹 오프셋 기반 Offset Pag..
2026.10.09
-
[Database] Cursor란 무엇인가?
오늘은 DBMS의 cursor에 대해 알아보려고 한다.이번 프로젝트에서 Oracle을 사용하면서 "Cursor is Closing"이라는 오류 메시지를 본 적이 있다.100건 이상의 데이터를 조회할 때 이런 케이스가 발생했는데이 Cursor가 뭐고 왜 Cursor를 사용하는지에 대해 알아보고자 한다. Cursor란 무엇인가?Cursor는 Query의 결과로 반환된 여러 행의 집합을 순차적으로 처리하기 위해 사용하는 포인터이다.좀 더 쉽게 풀어서 이야기하면위와 같이 고객명을 조회하는 쿼리를 실행했을 때현재 내가 읽고 있는 고객이 어떤 고객인지 가리키고 있는 포인터가 Cursor인 것이다.Cursor의 동작원리Cursor는 프로그램의 for, while과 같은 Loop문과 비슷한 과정을 거치는데 Decla..
2026.08.23
최신글
-
대표적인 페이징 처리 방식 2가지(Offset Pagination, Cursor Pagination)
오늘은 페이징 처리 방식에 대해서 알아보려고 한다.이번 프로젝트가 배울게 참 많은것 같다.이번 프로젝트에서 화면 페이징 처리 방식으로 Index 페이징과 Scroll 페이징을 분리해서 공통기능을 제공하고 있다.페이징 방식 별로 input, output 데이터가 다르기에각 방식이 어떻게 동작하는지 궁금해져서 알아보려고 한다. 먼저 많이 사용하는 페이징 방식은 크게 2가지가 있다.🔹 오프셋 기반 Offset Pagination전통적인 페이징 방식, pag와 limit을 받아 원하는 페이지의 데이터 조회 🔹 커서 기반 Cursor Pagination(no offset Pagination)마지막으로 가져온 Cursor를 기준으로 데이터를 조회하나씩 설명해 보겠다. 🔹 오프셋 기반 Offset Pag..
2026.10.09
-
[Database] Cursor란 무엇인가?
오늘은 DBMS의 cursor에 대해 알아보려고 한다.이번 프로젝트에서 Oracle을 사용하면서 "Cursor is Closing"이라는 오류 메시지를 본 적이 있다.100건 이상의 데이터를 조회할 때 이런 케이스가 발생했는데이 Cursor가 뭐고 왜 Cursor를 사용하는지에 대해 알아보고자 한다. Cursor란 무엇인가?Cursor는 Query의 결과로 반환된 여러 행의 집합을 순차적으로 처리하기 위해 사용하는 포인터이다.좀 더 쉽게 풀어서 이야기하면위와 같이 고객명을 조회하는 쿼리를 실행했을 때현재 내가 읽고 있는 고객이 어떤 고객인지 가리키고 있는 포인터가 Cursor인 것이다.Cursor의 동작원리Cursor는 프로그램의 for, while과 같은 Loop문과 비슷한 과정을 거치는데 Decla..
2026.08.23
-
[DataBase] Delete vs Truncate
오늘은 Truncate와 Partition에 대해 공부해 보려고 한다.이번 프로젝트에서 Truncate와 Partition을 사용할 일이 생겨서Truncate가 왜 Delete보다 빠른지, Partition은 어떤 구조로 이루어졌는지에 대한 궁금증이 생겨서이에 대해 조사해 보았다. Delete와 TruncateDelete와 Truncate는 둘다 데이터를 삭제한다는 기능을 가지고 있지만동작방식은 살짝 다른데, 이에 대해 이해하기 위해서는 RDBMS의 저장 구조를 알면 좋을거 같다. RDBMS의 논리적 저장구조RDBMS는 Table Space, Segment, Extent, Block으로 구성되어 있다.Block (Page)Block은 디스크와 메모리 간 I/O 처리를 위한 최소 단위 이다.Block은 여..
2026.08.09
-
[Database] 인덱스(Index)란 무엇인가? : B+Index의 구조
이전에 쿼리튜닝을 공부하면서 인덱스에 대해 살짝 알아봤었다. 쿼리 튜닝에 대하여(기초)이번 프로젝트에서 쿼리를 다룰일이 많다. DB를 많이 사용하다보니 select할 때 시간이 많이 걸리기 때문에 쿼리튜닝이 필수였다.쿼리튜닝은 DBA가 해주지만 DBA가 바빠서 그런지 응답 시간이 오래ytlive.tistory.com오늘은 인덱스란게 어떻게 데이터 조회 속도를 향상시키는지그 구조와 종류에 대해 알아보려고 한다. Index 너는 누구인가?인덱스(Index)란 정확히 무엇인가?인덱스는 테이블에서 데이터를 빠르게 읽을 수 있도록 도와주는 자료구조 이다.흔히 책의 목차 정도로 이해하면 될 것이다.테이블의 특정 컬럼에 대해 별도의 자료구조를 만들어 데이터베이스에서 테이블의 모든 테이블을 검색하지 않고, 원하는 데이..
2026.07.24
-
DB PK(유일값) 일련번호 채번방식에 대하여
이번 프로젝트에서는 데이터 보관을 위해DELETE 사용을 금지하고 삭제여부 컬럼을 추가하여 삭제 데이터를 관리하고 있다.그래서 중복 방지를 위해 SEQ즉 일련번호 컬럼을 추가할 필요가 있었다.때문에 오늘은 일련번호를 채번하는다양한 방법에 대해 알아보고 비교해보려고 한다. 일련번호 채번방법 4가지일련번호 채번방법으로는 크게 4가지가 있다.1️⃣ Max + 12️⃣ DB Sequence (시퀀스 객체)3️⃣ 채번 테이블 방식4️⃣ 프레임워크 UUID (Universally Unique Identifier)하나씩 예시를 들어서 확인해보겠다. 1️⃣ Max + 1가장 간단한 채번방법은 Max + 1이다.현재 테이블에 저장된 ID 값 중 가장 큰 값을 조회하여거기에 + 1을 더해 새 번호를 부여한다.Max + 1..
2026.07.05
-
[Spring Batch] Batch에서의 Tasklet과 Chunk
오늘은 배치에 대해 알아보겠다.배치란 무엇일까.배치란?배치는 대용량 데이터를 사용자 개입 없이 컴퓨터가 일괄적으로 처리하는 프레임워크이다.주로 대용량 데이터 처리, 자동화 등에서 사용된다. 배치의 실행 방식배치는 배치 실행 시점과 동작방식에 따라 아래와 같이 크게 3가지 종류로 나뉜다.- 정기배치- 이벤트 배치- On-Demand 배치정기 배치 (Scheduled Batch)정기 배치는 정해진 주기에 따라 자동으로 실행되는 배치이다.우리가 알고 있는 배치는 대부분 정기 배치일 것이다.주로 스케줄러 툴과 연동하여 사용한다.예를 들어 매일 새벽 2시에 통계를 생성한다든지, 매달 25일에 월급 명세서를 발급한다는 등의 작업을 할 수 있다. 이벤트 배치 (Event-Driven Batch)이벤트 배치는 특정 이..
2026.06.13
-
Oracle Join이란 무엇인가? : Outer Join에서 (+)가 없다면?
내가 지금 진행하는 프로젝트에서ASIS 에서 사용하던 oracle 쿼리를 postgreSQL 쿼리로 변경하는 작업을 하고 있는데사용하는 쿼리 중의 많은 양이 오라클 조인을 사용하고 있다.그래서 Oracle Join에 대해 알아보려고 한다. 오라클 조인이란?다른 DBMS에서 Join을 위해서는 INNER JOIN, LEFT OUTER JOIN, CROSS JOIN 등과 같은 ANSI JOIN을 사용할 것이다.하지만 Oracle에서는 Oracle Join이라는 조인을 위한 한가지 방법이 더 있다.ANSI JOIN은 JOIN과 ON구문으로 명시하여 조인컬럼을 구분하지만 오라클 조인은 WHERE 절에 조인 컬럼과 조회 조건이 공존한다.예시를 들어보자.학생 ID와 이름이 있는 학생 테이블과과제ID, 학생 ID, ..
2026.05.31
-
Stateful과 Stateless는 무엇인가?
웹 개발을 하다보면 Stateless 같은 말을 한번씩 들어봤을 것이다.오늘은 Stateless가 뭐고 Stateful과의 차이는 무엇인지 알아보려고 한다. State(상태)Stateless는 말 그대로 State(상태)가 없는 것이고 Stateful은 State(상태)가 있는 것이다.그럼 State가 무엇인가?서버의 State는Server가 Client와 주고 받은 정보를 저장한 것이다.예를 들면 "로그인 정보, 장바구니 상품 리스트" 등이 있을 것이다.Stateful (상태유지)Stateful은 아까 말한 상태를 서버가 보존하는 것이다.서버가 클라이언트와 통신하면서 이전에 통신한 값을 저장하는 것이다.홈페이지에서 로그인을 한번 하면 페이지를 이동해도 로그인 정보가 남는 것이 대표적인 Stateful의..
2026.05.05
-
SQL 튜닝을 위한 6가지 기본 방법
안녕하세요지난 포스트에서는 쿼리튜닝이 무엇이고쿼리 실행 계획(Query Plan)을 어떻게 보는지에 대해 알아봤습니다. 쿼리 튜닝에 대하여(기초)이번 프로젝트에서 쿼리를 다룰일이 많다. DB를 많이 사용하다보니 select할 때 시간이 많이 걸리기 때문에 쿼리튜닝이 필수였다.쿼리튜닝은 DBA가 해주지만 DBA가 바빠서 그런지 응답 시간이 오래ytlive.tistory.com 이번 포스트에서는 지난 포스트에 이어서 SQL 튜닝을 위한 6가지 방법에 대해 알아보도록 하겠습니다. 쿼리 튜닝의 기본원칙 6가지 쿼리 튜닝을 하는 방법은 다양하지만많이 알려져 있는 6가지 방법을 소개시켜드리려고 합니다.간단하게 먼저 말씀드리자면1. 좌변 가공 지양2. 복잡한 WHERE절 OR 대신 UNION 사용3. 필요한 Row..
2026.04.11
-
쿼리 튜닝에 대하여(기초)
이번 프로젝트에서 쿼리를 다룰일이 많다. DB를 많이 사용하다보니 select할 때 시간이 많이 걸리기 때문에 쿼리튜닝이 필수였다.쿼리튜닝은 DBA가 해주지만 DBA가 바빠서 그런지 응답 시간이 오래걸리고 있어서내가 공부해서 튜닝해보자! 라는 생각으로 쿼리 튜닝에 대해 공부하게되었다. 쿼리 튜닝은 무엇인가?쿼리 튜닝은 DB에서 데이터를 꺼낼때 사용할 수 있는 '지름길'을 찾는 과정이다.즉, 쿼리를 최적화 하는 과정을 쿼리 튜닝이라고 한다.같은 결과를 가진 쿼리라도 더 빠르게 조회할 수 있는 길이 있다. 쿼리 실행 계획쿼리 튜닝을 위해서는 쿼리 실행 계획을 확인해봐야한다.쿼리 실행 계획은 DB엔진이 어떻게 해당 SQL문을 실행할지를 확인하는 기능이다.SELECT * FROM event;위 쿼리에 대한 실행..
2026.03.29