목록2024/11 (8)
ballqs 님의 블로그
오늘 풀어본 문제는 프로그래머스의 미로 탈출 이라는 문제를 풀어보았다.문제를 보자마자 DFS , BFS 알고리즘 쪽으로 풀면 될거라고 생각했다.문제 설명1 x 1 크기의 칸들로 이루어진 직사각형 격자 형태의 미로에서 탈출하려고 합니다. 각 칸은 통로 또는 벽으로 구성되어 있으며, 벽으로 된 칸은 지나갈 수 없고 통로로 된 칸으로만 이동할 수 있습니다. 통로들 중 한 칸에는 미로를 빠져나가는 문이 있는데, 이 문은 레버를 당겨서만 열 수 있습니다. 레버 또한 통로들 중 한 칸에 있습니다. 따라서, 출발 지점에서 먼저 레버가 있는 칸으로 이동하여 레버를 당긴 후 미로를 빠져나가는 문이 있는 칸으로 이동하면 됩니다. 이때 아직 레버를 당기지 않았더라도 출구가 있는 칸을 지나갈 수 있습니다. 미로에서 한 칸을 ..
부트캠프를 통해 다양한 기술들을 배우고 실습하며, 최종 프로젝트로 실시간 맛집 예약 서비스를 개발하게 되었습니다. 이 서비스는 최근 외식 수요 증가로 긴 대기시간이 대두되었고 음식점 앞에서 직접 기다리는 불편함을 줄이고, 실시간으로 남은 대기 순서를 확인할 수 있게 하여 요율적이고 편리한 외식 경험을 제공하자는 취지로 시작했습니다. 프로젝트의 핵심 기능 중 하나는 웨이팅 대기열 시스템입니다. 사용자가 음식점에 웨이팅을 걸면 발권번호를 받아서 대기 상태에 들어가며 음식점에서 이를 확인하고 입장할 수 있도록 돕는 시스템입니다. 그러나 초기 개발 단계에서 발권번호 중복 및 데이터 불일치 문제가 발생하면서 동시성 제어에 대한 고민이 시작되었습니다. 처음에는 단순하게 DB CRUD 방식으로 구현했으나 높은 트래픽..
이전에 Redisson내용으로 작성한 글이 있습니다.https://ballqs.tistory.com/68해당 글에는 동시성 제어하는 방법에 관해서만 작성했는데 Redisson도 RedisTemplate와 같이 사용이 가능하다는 점을 파악했고 둘의 차이점에 관해 작성하고자 합니다. RedisTemplate 장점간단한 사용법: Redis의 주요 명령어를 Java 메서드로 호출 가능.풍부한 자료구조 지원: String, Hash, List, Set, ZSet 등 다양한 Redis 자료구조를 다룰 수 있음.Spring과의 강력한 통합: Spring Cache, Spring Session 등과 쉽게 연계 가능.유연성: 커스터마이징을 통해 RedisSerializer 설정 등 다양한 방식으로 활용 가능.단점분산 ..
Build를 하면서 났던 에러사항들을 번외로 작성해볼려고 합니다.이부분은 진짜 별거 아닌 내용도 작성되기도 하지만 이런 것도 문제 일으킬수 있다는 점을 확인할 수 있어 도움이 되었고 메모하는 습관덕에 글을 작성하게 되었기에 앞으로 Jenkins 작업할때 이런 에러는 덜 일으킬 것입니다.또한 슬랙 알람이 적용 전 상태에서 발생한 에러임을 양해부탁드립니다. 빌드 단계 코드pipeline { agent any stages { stage('Git Clone') { steps { git branch: 'dev', credentialsId: 'github-access-token', url: 'https://github.com/bal..
이전 글에 인해 Jenkins에서 사용할 온갖 설정들이 다되었습니다.이제 Item을 추가하여 Build까지 되는것까지의 내용입니다. Jenkins Item 추가Enter an item name 에 명칭 넣고 파이프라인 선택 후 OK 누르면 됩니다. GitHub project에는 적용하고자 하는 git repository를 작성해줍니다.GitHub hook trigger for GITScm polling 도 체크하기!!! Pipeline에 Script 작성!!pipeline { agent any environment { AWS_PUBLIC_IP = 'ubuntu@43.200.191.68' DOCKER_HUB = 'aysel0413' DOCKER_IMAGE ..
이전 글에서 Docker로 Jenkins를 올려서 UI에 접근이 되는것까지 확인되었습니다.이번 내용에서는 Java , Gradle , Plugins , Credentials 설정 하는 것을 작성하려고 합니다. Jenkins 관리 설정docker exec -it [Docker Container ID] /bin/bash 로 들어가거나 Docker Desktop를 통해 Jenkins 컨테이너에 접근해서 Exec를 보거나 하면 상황에서 env 명령어를 치면 아래와 같이 나옵니다.JAVA_HOME = /opt/java/openjdk 이부분을 기억해둡시다. Jenkins 화면으로 돌아가서Dashboard > Jenkins 관리 > Tools위에서 확인했던 /opt/java/openjdk 값을 넣고 Name은 ope..
프로젝트를 진행하면서 구축했던 파이프 라인에 대한 내용을 작성하고자 합니다.이번 글에 작성될 내용은 Docker로 Jenkins를 올려서 UI까지 들어가는 것까지 작성입니다. Docker를 이용한 Jenkins 환경 구축※Dockerfile 과 docker-compose 의 사용법을 숙지 후 따라하면 좋습니다. Dockerfile 파일 작성FROM jenkins/jenkins:jdk17USER rootRUN apt-get update && \ # 시스템 패키지 목록을 업데이트 apt-get upgrade -y && \ # 설치된 모든 패키지를 최신 버전으로 업그레이드 apt-get install -y openssh-client \ # openssh-client는 ssh 프로토콜을 ..
Spring Batch(Spring Batch)란?대용량 데이터 처리를 위해 설계된 오픈 소스 프레임워크입니다. 대규모 데이터 처리를 효율적으로 수행하고, 반복적으로 작업을 자동화할 수 있는 강력한 도구를 제공합니다. 데이터베이스에서 데이터를 읽고 처리한 후 다른 데이터베이스나 파일에 기록하는 등의 작업을 안정적이고 일괄적으로 수행할 수 있도록 지원합니다. 주요 개념Job: 스프링 배치에서 수행할 작업의 단위입니다.Step: Job의 구성 요소로, 실제로 수행할 작업을 정의합니다.ItemReader: 데이터 소스에서 데이터를 읽어오는 역할을 합니다.ItemProcessor: 읽어온 데이터를 처리하는 역할을 합니다.ItemWriter: 처리된 데이터를 저장하는 역할을 합니다. 메타 테이블 BATCH_JOB..