맥락

기술·AI

소프트웨어 설계와 운영부터 AI 모델·도구·산업의 변화까지 깊이 있게 다룹니다.

전체 글 147편

Java

Java partitioningBy 예제 코드: 데이터 분할 작업을 간편하게 해보자

자바(Java) 프로그래밍에서 데이터를 효율적으로 분할하고 관리하는 것은 중요한 작업 중 하나입니다. 이를 위해 많은 방법이 있지만, 'partitioningBy' 메서드를 활용하는 방법은 데이터를 조건에 따라 분할하고 처리하는 데 매우 유용합니다.

튜토리얼중급약 4분#java

JavaScript

Dayjs Duration: 시간 간격 다루기

시간은 현대 사회에서 가장 귀중한 자원 중 하나입니다. 시간 간격을 다루는 것은 다양한 상황에서 중요한 역할을 합니다.

레퍼런스중급약 4분#dayjs

JavaScript

Dayjs Diff: 날짜와 시간 간의 차이 계산하기

현대 사회에서 날짜와 시간은 우리의 일상 생활에서 중요한 역할을 합니다. Dayjs Diff(데이제이에스 디프)는 날짜와 시간 사이의 차이를 간편하게 계산하고 다룰 수 있는 강력한 도구입니다.

딥다이브중급약 4분#dayjs

JavaScript

Dayjs Subtract: 날짜와 시간을 쉽게 계산하는 방법

Dayjs Subtract(데이제이에스 서브트랙트)는 날짜와 시간을 간편하게 계산하고 처리할 수 있는 도구입니다. 이 글에서는 Dayjs Subtract의 기능과 활용법을 살펴보며, 어떻게 사용하는지 배워보겠습니다.

튜토리얼중급약 4분#dayjs

Docker

MySQL Docker 컨테이너 만들기(Dockerfile)

이 블로그에서는 Docker를 사용하여 MySQL 데이터베이스를 실행하는 방법을 상세히 알아보겠습니다. Docker는 컨테이너 기반의 가상화 기술로서, 애플리케이션과 모든 종속성을 컨테이너로 패키징하여 빠르고 효율적인 배포를 가능하게 합니다.

튜토리얼중급약 3분#docker#dockerfile#mysql

Spring · Spring Boot

Spring WebFlux 테스트 방법

이 블로그에서는 Spring WebFlux의 테스트 방법에 대해 자세히 알아보겠습니다. Spring WebFlux는 Spring Framework 5에서 도입된 리액티브 프로그래밍 모델로서, 비동기적인 웹 애플리케이션을 개발할 수 있게 해줍니다.

레퍼런스중급약 9분#spring#test#webflux

Node.js

실시간 채팅 앱 만들기 Node.js와 Socket.IO를 활용한 실습

이 블로그에서는 Node.js와 Socket.IO를 활용하여 실시간 채팅 애플리케이션을 만드는 방법을 상세히 설명하겠습니다. 실시간 채팅 앱은 사용자들이 실시간으로 채팅 메시지를 주고받을 수 있는 기능을 제공하는 웹 애플리케이션입니다. Node.

튜토리얼중급약 4분#node#nodejs#socket

Node.js

Node.js에서 Socket.IO를 활용한 실시간 웹 소켓 통신 이해하기

Socket.IO는 Node.js 기반의 웹 소켓 라이브러리로서, 실시간 양방향 통신을 가능하게 해주는 도구입니다. 웹 소켓은 클라이언트와 서버 사이에 지속적으로 연결을 유지하며, 실시간으로 데이터를 주고받는데 사용됩니다. 이 글에서는 Socket.

레퍼런스중급약 4분#node#nodejs#socket

TypeScript

TypeScript의 Partial, Omit, Pick 알아보기

TypeScript는 JavaScript에 타입을 추가하여 더욱 안전하고 가독성이 좋은 코드를 작성할 수 있게 해줍니다. Partial, Omit, Pick은 TypeScript에서 제공하는 유용한 타입 유틸리티입니다.

레퍼런스중급약 3분#ts#typescript

JavaScript

JavaScript Promise 기본부터 고급 활용까지

JavaScript Promise는 비동기 작업을 보다 편리하게 다룰 수 있도록 도와주는 객체입니다. 비동기 작업은 일반적으로 AJAX 요청, 파일 로딩, 데이터베이스 쿼리 등과 같이 시간이 오래 걸리는 작업을 말합니다.

레퍼런스심화약 4분#javascript#js#promise

JavaScript

JavaScript의 Reduce 메서드 이해하기

JavaScript의 배열 메서드 중에서 가장 강력하면서도 다소 난해한 메서드인 'reduce'에 대해 알아보겠습니다. Reduce 메서드는 배열의 각 요소를 순차적으로 처리하면서 배열을 단일 값으로 줄여주는 함수입니다.

레퍼런스중급약 3분#javascript#js#reduce

JavaScript

JavaScript에서 공백 제거하는 방법(trim, 정규식)

안녕하세요! 오늘은 JavaScript에서 문자열에서 공백을 제거하는 여러 가지 방법에 대해 알아보겠습니다. 문자열에서 공백을 제거하는 것은 데이터 처리나 사용자 입력을 다룰 때 유용한 기능입니다.

튜토리얼중급약 2분#javascript#js

JavaScript

Javascript replace 예제

JavaScript의 replace() 메서드는 문자열에서 특정 패턴(문자열 또는 정규식)을 검색하여 해당 패턴을 새로운 문자열로 치환하는 메서드입니다. 이를 통해 문자열 내에서 원하는 부분을 변경하거나 제거하는 작업을 할 수 있습니다.

튜토리얼중급약 2분#javascript#js

JavaScript

Javascript type conversion(형변환)

JavaScript는 동적 타입(dynamic typing) 언어이기 때문에 변수의 타입을 선언할 필요 없이, 할당되는 값에 따라 자동으로 타입이 결정됩니다. 이러한 특성으로 인해 JavaScript에서는 형변환이 자주 발생합니다.

레퍼런스중급약 2분#javascript#js#type-conversion

JavaScript

JavaScript setTimeout: 웹 개발에서의 시간 지연

웹 개발에서 시간 지연은 매우 중요한 역할을 합니다. 사용자 경험을 향상시키기 위해 페이지의 동작을 조절하거나 특정 작업을 지연시키는 것은 필수적입니다.

레퍼런스중급약 4분#javascript#js

JavaScript

Javascript queryselector 사용예제

JavaScript의 querySelector() 메서드는 CSS 선택자를 사용하여 DOM(Document Object Model)에서 요소를 선택하는 데 사용되는 메서드입니다.

튜토리얼중급약 2분#javascript#js

JavaScript

Javascript foreach 사용예제

JavaScript의 forEach() 는 배열의 각 요소에 대해 주어진 함수를 호출하는 메서드입니다. forEach() 메서드를 사용하면 배열의 모든 요소를 반복하며, 각 요소에 대해 지정된 함수를 실행할 수 있습니다.

튜토리얼중급약 2분#javascript#js

JavaScript

Javascript map 사용방법

JavaScript의 map() 은 배열의 모든 요소에 대해 주어진 함수를 호출하여 새로운 배열을 생성하는 메서드입니다. map() 메서드를 사용하면 기존 배열의 각 요소를 변형하여 새로운 배열을 만들 수 있습니다.

레퍼런스중급약 2분#javascript#js#map

JavaScript

Javascript array sort(배열 정렬)

JavaScript에서 배열을 정렬하는 방법에 대해 설명드리겠습니다. JavaScript에서는 Array.prototype.sort() 메서드를 사용하여 배열을 정렬할 수 있습니다.

레퍼런스중급약 2분#array#javascript#js

JavaScript

lodash differenceWith 사용방법

`differenceWith` 함수는 두 개 이상의 배열 중 첫 번째 배열과 나머지 배열들 간의 차집합을 구하는 함수입니다.

레퍼런스중급약 1분#a#d#h

JavaScript

Promise.all과 Promise.race의 차이점

Promise.all과 Promise.race는 JavaScript에서 `Promise` 객체를 다룰 때 사용되는 두 가지 메소드로, 비동기 작업을 다루는 데에 유용합니다. 이 둘의 차이점은 다음과 같습니다

딥다이브중급약 3분#async#js#promise

Node.js

NestJS: Node.js 프레임워크

NestJS는 Node.js 기반의 프레임워크로, Express와 비슷한 구조를 가지고 있지만 더욱 강력한 기능과 구조적인 편리함을 제공합니다.

레퍼런스심화약 19분#nestjs#node

AWS

AWS Lambda 장단점과 운영의 어려움

AWS Lambda는 서버리스 아키텍처에서 가장 인기 있는 컴퓨팅 서비스 중 하나입니다. 이것은 개발자가 코드를 작성하고 배포할 때 인프라 관리에 대한 걱정을 덜어줍니다. 그러나 AWS Lambda는 실제 운영 환경에서 제한 사항이 있습니다.

딥다이브중급약 4분#aws#lambda

CI/CD

Github Action을 활용한 CI/CD 파이프라인 구축

Github Action은 강력한 자동화 도구로서, 소스 코드의 변경 사항에 대한 빠른 피드백을 제공하며, 애플리케이션의 배포 과정을 단순화할 수 있습니다.

튜토리얼중급약 6분#cd#ci#github

Redis

Redis 시작하는 방법

이번 포스트에서는 Redis를 시작하는 방법에 대해 다루겠습니다.

튜토리얼입문약 5분#redis

Redis

Redis를 사용할 때 몇 가지 주의사항

Redis는 매우 빠르고 유연한 오픈소스 데이터 저장소입니다. 그러나 Redis를 사용할 때 몇 가지 주의사항이 있습니다. 이번 글에서는 Redis를 사용할 때 주의해야 할 사항을 살펴보겠습니다.

트러블슈팅심화약 4분#redis

시스템 설계

x86과 ARM: 둘의 차이점

컴퓨터 소프트웨어를 개발하는데 있어서, 프로세서의 아키텍쳐는 매우 중요한 역할을 합니다. 이번 글에서는 가장 인기 있는 아키텍처인 x86과 ARM에 대해 비교하고자 합니다. 둘의 차이점은 무엇이며, 어떻게 다른지 살펴보겠습니다.

딥다이브중급약 4분#arm#x86

개발 도구

github(gh) cli를 통해 pull request 빠르게 체크아웃 하기

여러개의 프로젝트 PR를 동시에 진행하면, 해당 브랜치로 checkout를 해야 하는데 브랜치 명이 아무래도 Jira 티켓명으로 브랜치를 따기 때문에 ( feature/XXXX 123 ) 내가 작업하는 PR이 어떤 브랜치인지 확인 하기 위해서는 git

레퍼런스중급약 2분#i#p#t

개발 도구

shell script 기초

shell script 기초 문법, 배열, 입출력, 함수, if else, 조건식에 대해서 알아본다.

레퍼런스입문약 8분#e#h#l

Docker

Docker M1 MySQL 설치

local에서 docker를 이용해서 mysql 를 셋팅하는 방법에 대해서 알아보자.

튜토리얼중급약 5분#docker#mysql

Java

해시 함수와 해시 충돌(해결 방법)

해시함수, 해시 충돌과 해시 충돌을 해결하는 방법인 open addresssing과 chaining에 대해서 알아보도록 하겠습니다.

딥다이브중급약 5분#datastructure

MySQL

MySQL Trigger 사용방법

mysql에서 trigger를 만드는 방법에 대해서 알아보자. DML(INSERT, UPDATE, DELETE)를 할때, BEFORE, AFTER에 어떤 동작을 추가할 수 있는 것을 의미한다.

레퍼런스중급약 2분#mysql

개발 도구

shell 변경 방법(ft, bash테마 설치하기)

다음과 같이 shell목록들이 나온다. p {pid} 로 process의 id를 넘긴다. $는 현재 프로세스의 pid를 리턴한다. 지금 현재 프로세스는 shell 이기 때문에 결과가 다음과 같이 나온다.

튜토리얼중급약 1분#shell

관측성

Prometheus + Grafana + docker 셋팅하기

Prometheus,Grafan를 Docker로 띄워보고, nodejs exporter를 통해서 모니터링 대쉬보드를 만들어 보는걸 살펴보자. SoundCloud사에서 처음 개발을 했다.

레퍼런스중급약 5분#grafana#prometheus

Java

[Java] Stream 데이터 groupingBy 예제

Java Stream의 groupingBy의 메서드를 살펴보고, 간단한 예제를 통해서 어떻게 사용하는지 살펴보자.

튜토리얼중급약 9분#groupingby#java#stream

개발 도구

feedly(rss)로 알림받기(feat, chrome)

Feedly에 대해서 알아보고, 구글 크롬 익스텐션을 통해서 자신이 구독한 글들을 받아볼 수 있는 설정에 대해서 알아보자.

딥다이브중급약 2분#chrome-extension#feedly#rss

Spring · Spring Boot

Bean Validation 이슈 (Object Graph)

API관련 작업을 하다가, @RequestBody로 매핑된 객체의 필드값을 validaiton하기 위해서 @Valid 어노테이션(JSR-303) 을 적용했지만, 제대로 적용이 되지 않았다. 이에 대한 해결책을 알아보자.

트러블슈팅중급약 6분#bean-validation#hibernate#object-graph

MySQL

MySQL CTE 사용 하기

MySQL의 CTE란, 문법과 간단한 사용방법을 알아보자

레퍼런스중급약 3분#cte#mysql

개발 도구

Mac Fan control 하기(feat, 뜨거운 맥북 식히기)

다운로드 해당 프로그램을 설치하면, left side와 right side의 팬설정이 뜬다. 보통은 자동으로 되어 있을텐데, CPU PECI에 따라 를 클릭한 후에 조금 더 낮은 온도 범위에서 Fan이 동작하도록 변경하자.

딥다이브중급약 1분#mac#tip

개발 도구

Google Style Guide, IntelliJ에 적용하기

git clone https://github.com/google/styleguide 명령어로 해당 styleguide를 내려받는다. 환경설정 CodeStyle Java 메뉴를 선택하고, 위에서 받은 intellij java google style.

튜토리얼중급약 1분#intellij#styleguide#tip

JPA · Hibernate

JPA - 값 타입(6)

본 글은, 자바 ORM 표준 JPA 프로그래밍(김영한님) 책을 요약 정리한 포스팅입니다.

레퍼런스중급약 4분#jpa#orm

Spring · Spring Boot

SpringBoot RabbitMQ 연동하기

이번시간에는 오픈소스 메세지 브로커인 RabbitMQ를 로컬에 설치하고, Spring Boot 프로젝트를 이용해서 간단하게 메세지를 전송하고, Listening 하는 샘플 프로젝트를 만들어보도록 하겠습니다.

튜토리얼중급약 7분#spring#springboot

테스트

Junit5 정리

Junit5에 특징과 기본적인 사용법, 문법에 대해서 알아보자.

레퍼런스심화약 17분#junit5#spring

Java

Garbage Collection - #2부 GC에 대한 설명

이전 시간에 Garbage Collection #1부 JVM HotSpot에 대해서 알아보았습니다. 오늘은 Garbage Collection이 heap 영역에서 어떻게 이루어 지는 지 알아 보도록 하겠습니다.

딥다이브중급약 5분#jvm

Java

Jackson, null 필드 무시하기

jackson에서 null값인 필드를 보여주지 않도록 지역적, 전역적으로 설정하는 방법에 대해서 알아보자

레퍼런스중급약 2분#jackson

Java

다양한 예제로 알아보는 자바(Java) 역순 정렬

자바(Java)의 역순 정렬을 다양한 예제를 통해 살펴보겠습니다. 각 예제를 통해 역순 정렬의 활용 방법을 자세히 알아보고 실제 코드로 확인해보세요. 1. 숫자 배열 역순 정렬 2. 문자열 리스트 역순 정렬 3. 사용자 정의 객체 역순 정렬 4.

튜토리얼중급약 3분#java

Spring · Spring Boot

Jackson 어노테이션 사용

오늘은 Jackson 어노테이션에 대해서 알아보도록 하겠습니다. 다음과 같이 스프링 부트를 사용하면 spring boot starter web 의존성에 jackson databind 라이브러리가 추가 되어 있다.

레퍼런스중급약 4분#jackson

Spring · Spring Boot

[Spring] DispatcherServlet에 대해서 알아보자

DispatcherSevlet의 기본전략과 여러가지 유형에 대해서 알아보자. DispatcherServlet 의 초기화 전략은 다음과 같다. 초기화 구조는 거의다 비슷하기 때문에 여기에서는 initViewResolvers(context) 를 살펴보자.

레퍼런스중급약 9분#spring

Spring · Spring Boot

[Spring] Profile 설정하기

실제 프로젝트에서 dev, stage, production과 같은 개발하는 환경이 다르다. @Profile 어노테이션을 이용해서 다른 profile을 설정하는 방법에 대해서 알아보자.

튜토리얼중급약 4분#spring

JPA · Hibernate

[JPA] Casecade 옵션

멤버(Member)와 사물함(Locker) 1:1 매핑 상황을 살펴보고, cascade 옵션이 어떤 상황에서 쓰이는지 알아보자. Member Locker 단방향 1:1 매핑에 대해서 살펴보자.

레퍼런스중급약 7분#jpa

JPA · Hibernate

[JPA] Custom Repository 만들기

기존의 JpaRepository를 상속받아서 기본적인 CRUD 기능을 사용할 수 있지만, 내가 1)커스텀하게 만들어서 사용하고 싶은 경우와 이미 JpaReposptry에서 제공하는 메서드를 새롭게 2)오버라이딩해서 사용할 수 있는 경우에 대해서 알아보

튜토리얼중급약 8분#jpa

JPA · Hibernate

[JPA] 도메인 클래스 컨버터란?

도메인 클래스 컨버터에 대해서 알아보자. 도메인 클래스 컨버터는 Spring Data Jpa를 사용하게 되면 Common 프로젝트에 있는 클래스 인데, 간단하게, id 엔티티 타입으로 변환 해주거나, 엔티티 id 로 변환해 주는 컨버터를 제공해준다.

레퍼런스중급약 4분#jpa

JPA · Hibernate

[JPA] null 처리

JPA에서 null처리 하는 방법에 대해서 알아 보자. JPA에서 단일 엔티티를 조회할 때, Optional객체를 리턴 받도록 설정되어 있다.

레퍼런스중급약 2분#jpa

JPA · Hibernate

[JPA] proxy, fetch 전략

프록시의 기본과, JPA에서 fetch 전략이 어떤 것들이 있는 지 알아보자. PA에서 식별자로 엔티티 하나를 조회할 때 EntityManager.find() 를 사용한다. 이 메서드는 영속성 컨텍스트에 엔티티가 없으면 데이터 베이스를 조회한다.

레퍼런스중급약 6분#jpa

JPA · Hibernate

[JPA] 쿼리메서드(Lookup 전략)

JPA에서 쿼리 메서드를 정의하는 방법에 대해서 알아보자. CREATE 메서드 이름을 분석해서 만듬 USE DECLARED QUERY 미리 정의해둔 쿼리를 찾아서 사용 CREATE IF NOT FOUND 기본 전략 미리 정의해둔 쿼리 찾아서 없으면 메

레퍼런스중급약 3분#jpa

JPA · Hibernate

[JPA] QueryDSL 설정방법

JPA에서 QueryDsl를 사용하는 방법에 대해서 알아보자. QueryDSL은 쿼리 domain specific language로 도메인에 맞게 쿼리를 프로그링 할 수 있다는 것이다.

튜토리얼심화약 11분#jpa#querydsl

JPA · Hibernate

[JPA]@Transactional를 통한 Optimization

Spring Data Jpa에서 제공하는 JpaRepository 의 구현체인 SimpleJpaReposity 의 @Transactional 을 어떻게 사용하는지 살펴보고, 실제 우리 서비스에서 어떻게 적용하면 좋을지에 대해서 생각해보자.

레퍼런스중급약 2분#jpa

Spring · Spring Boot

[Spring] SpringApplication를 통한 코딩

applicationContext가 등록되기 전에 발생한 이벤트를 Listen하는 리스너를 등록하려면 어떻게 해야할까? SampleListner를 만들고, ApplicationListenr 를 구현한다. Generic으로 발생할 이벤트를 명시해 준다.

레퍼런스중급약 2분#spring