분류 전체보기 1427

[Java] generic - 1

개요2026.02.25-[Java] ArrayList 등의 글에서 리스트 내 데이터 원소의 타입을 지정할 때 데이터 타입을 꺽쇠로 감싸서 지정하는데, 이는 제네릭(generic)이라는 개념이다. 뭔지 정확하게 모르고 사용을 해왔으니 이번 글에서는 generic에 대해서 조금 다뤄볼까 한다. genericgeneric은 사전적으로 '일반적인'이라는 의미를 가지고 있는데, Java에서는 하나의 값이 데이터 형식에 의존하지 않고 여러 데이터 타입을 가질 수 있도록 하는 방법을 의미한다. 다른 말로는 클래스 내에서 사용할 데이터 타입을 외부에서 지정하는 기법이라고 한다.ArrayList list = new ArrayList();주로 List 등에 사용되는데, List와 같은 자료구조를 직접 구현하여 배포하려고..

Java 2026.03.06

[Python] psycopg2.execute_values - 여러 데이터 처리

개요python으로 데이터베이스 작업을 수행하다 보면 여러 데이터를 한 번에 처리할 필요가 자주 발생한다. 이때 보통 executemay 등의 이름을 가진 함수를 사용하는데, postgreSQL 연동 라이브러리인 psycopg2의 경우에는 비슷한 기능을 가진 여러 함수를 제공하고 있는 것 같다. 이번 글에서는 그중 하나인 execute_values에 대해서 조금 알아본다. execute_valuesexecute_values는 psycopg2 2.7버전에 추가된 함수로, 매개변수를 사용해 명령문을 실행한다.psycopg2.extras.execute_values(cur, sql, argslist, template=None, page_size=100, fetch=False)# cur : 커서 객체# sql..

Python 2026.03.05

[Java] ArrayList

개요이번 글에서는 Java에서 매우 흔하게 사용하고 있는 ArrayList에 대해서 정리한다. ArrayListArrayList는 Array의 불편함을 해소하기 위해 나온 개념으로, 연속적인 데이터의 리스트이다.내부적으로 Object[]을 이용하고 있으며, 인덱스를 이용해 요소에 빠르게 접근할 수 있다. 배열과 다르게 크기가 가변적(동적 할당)이지만, 배열의 크기가 가득 찰 때마다 copy 하는 방식으로 크기를 조정하기 때문에 지연이 발생할 수 있다. 데이터를 중간에 삽입하거나 삭제하는 경우에는 리스트 내 공간 조정으로 인해 요소의 위치가 앞뒤로 이동하기 때문에 동작이 느리다. 사용법ArrayList를 사용할 때는 패키지를 import 해야 한다.import java.util.ArrayList; 아래..

Java 2026.03.04

[GitHub] GitHub Actions - GITHUB_STEP_SUMMARY

개요GitHub Actions에는 각 Job 별 동작을 요약해서 보여줄 수 있는 GITHUB_STEP_SUMMARY을 지원한다. 사용자는 GITHUB_STEP_SUMMARY를 적절하게 사용해 동작의 진행과 결과를 간결하게 표현하고 확인할 수 있다. GITHUB_STEP_SUMMARYGITHUB_STEP_SUMMARY은 마크다운 형식을 사용하며 워크플로우 진행 중 리다이렉션 등을 사용해 내용을 입력한다.echo "{markdown content}" >> $GITHUB_STEP_SUMMARYGITHUB_STEP_SUMMARY는 steop에 대해 고유하고, job이 완료되면 모든 step에 대한 요약이 그룹화되어 페이지에 표시된다. 여러 job이 요약을 생성하는 경우에는 완료 시간을 기준으로 정렬된다.GIT..

Git | GitLab 2026.03.03

[Github] GitHub Actions - 수동 트리거 및 입력

개요최근 GitHub Actions에 대한 기본 개념과 사용법에 대해서 간단히 알아보고 있는데, 주로 레포지터리에 push 이벤트가 발생했을 때 자동으로 트리거 되는 워크플로우를 다뤘다. 하지만 때로는 수동으로도 워크플로우를 트리거해야 하는 경우가 발생하곤 한다. 때문에 이번 글에서는 수동 트리거에 대해서 조금 정리해보려고 한다. 이벤트2026.02.05-[GitHub] GitHub Actions - 변수에서 지나가듯이 언급했는데, 워크플로우를 수동으로 트리거 하고 싶을 때는 on 키워드에 workflow_dispatch를 지정한다.on: workflow_dispatch트리거 이벤트로 workflow_dispatch를 지정하면 워크플로우를 트리거할 수 있도록 버튼이 제공된다. 이때 어떤 브랜치를 사용..

Git | GitLab 2026.02.27

[GitHub] GitHub Actions - Job/Step 간 데이터 전달

개요CI/CD 파이프라인을 생성하다 보면 설정 파일 등을 읽어 들여서 여러 Job, 여러 Step에서 사용하도록 구성하게 되는데 이때 필수적인 기능이 데이터 전달이다. 이번 글에서는 Step, Job 수준에서의 데이터 전달 방식에 대해서 정리해 둔다. GITHUB_OUTPUTGithub Actions 내에서 발생한 출력은 GITHUB_OUTPUT이라는 환경 파일에 저장해 두었다가 접근하여 사용할 수 있다. 저장할 때는 접근할 때 사용할 키를 함께 지정해주어야 한다.echo "{name}={value}" >> "$GITHUB_OUTPUT"참조할 때는 "steps.STEP_ID.outputs.KEY" 형식으로 접근한다.아래 예시는 SELECTED_COLOR를 설정하고 이후에 접근하는 모습을 보여준다. ..

Git | GitLab 2026.02.26

[Terraform] Error: failed to get shared config profile, default 해결

개요Github Actions 내에서 Terraform 실행 환경을 구성하고 있는데, terraform init 명령어 실행 중 아래와 같은 오류가 발생하면서 동작에 실패했다.| - karpenter in .terraform/modules/karpenter/modules/karpenter| ╷| │ Error: failed to get shared config profile, default| │| │| ╵ 원인을 파악하고 문제를 해결해보자. 원인이 테라폼 코드는 AWS를 대상으로 작업을 수행하는데, 인증 시 default라는 profile을 사용하도록 지정해 둔 상태이다.그리고 로그를 보면 default 프로파일을 얻으려는 시도가 실패했음을 알리고 있다. GitHub Actions 워크플로우를 구성하..

Terraform 2026.02.25

[Java] Stream - 사용법

개요2026.02.10-[Java] Stream 개념에서 Java의 Stream 개념에 대해 알아보았다. 이번 글에서는 실제로 어떻게 사용하는지에 초점을 맞춰서 내용을 정리해 본다. 생성Stream은 데이터 집합인 컬렉션, 다시 말해 Array, List, Set, Map 등으로부터 생성할 수 있다. 컬렉션이 제공하는 stream 메서드를 사용해 Stream을 생성한다.List list = new ArrayList();list.add("Apple");list.add("Banana");list.add("Kiwi");Stream stream = list.stream(); 또는 Stream에서 제공하는 generate, iterate 메서드 등을 사용해서 생성하는 것도 가능한다. generate는 무한한 값..

Java 2026.02.24

[Java] Stream 개념

개요최근 기본적인 반복문과 조건문을 활용한 Java 코드를 AI에게 개선해달라 요청했더니 Stream이라는 개념을 가진 코드를 제안해주었다. 사용하고 유지보수를 하기 위해서는 관련 개념을 이해하고 있어야 할 것 같아 정리해보려고 한다. Stream프로그래밍 개발에서 Stream이란 '일련의 데이터 흐름'을 의미한다. 위키피디아의 경우에는 시간 상에 나타나는 일련의 데이터 요소로 정의하며 연속적인 데이터 흐름에 초점을 맞추고 있다.Java의 Stream은 이러한 데이터 흐름을 표준화된 방법으로 쉽게 처리할 수 있도록 지원하는 클래스 집합이다. 경우에 따라, 요소의 Stream에 함수형 연산을 지원하는 클래스라 정의하기도 한다. 다시 말해 Java Stream을 이용하여 데이터를 함수형 연산을 통해 표준화..

Java 2026.02.23

[Java] HashSet

개요2026.02.06-[Java] HashMap에서 HashMap에 대해서 살펴보았는데, 이번 글에서는 Set을 구현한 HashSet에 대해서 살펴본다. HashSet이름에서 추측할 수 있듯, HashSet은 Set 인터페이스를 구현한 클래스이다. 객체를 중복 저장할 수 없고 저장 순서를 유지하지 않는다는 Set의 성질을 그대로 이어받는다. 만약 순서를 유지해야 하거나 자동 정렬이 필요한 경우에는 LinkedHashSet, TreeSet과 같은 다른 구현 클래스를 사용하면 된다.Set은 중복을 허용하지 않기 때문에 보통 중복을 제거하기 위해 많이 활용한다. 또한 비선형 구조로 인덱스가 존재하지 않기 때문에 값을 추가하거나 삭제할 때에는 Set에 값이 있는지 확인할 필요가 있기 때문에 List에 비해 ..

Java 2026.02.13