전체 글 397

윈도우 - 회사 내부망 화면보호기 끄거나 안되게 하는 방법 절전모드 방지 스크립트

일반 PC는 화면보호기를 끄거나 절전모드를 끄면 문제가 없습니다.하지만기본적으로 회사에서 보안툴이 깔려있어화면보호기를 끄기가 불가능하여시간이 지나면 화면보호기나 절전 모드로 변경되는불편함이 있습니다. 메모장에서 "아무이름.vbs" 을 만들어주고 하단 내용 코드를 추가해주고 실행하면 됩니다. Set ws = CreateObject("WScript.shell")DoWscript.Sleep 59000ws.SendKeys "{SCROLLLOCK}{SCROLLLOCK}"Loop 이 코드는 VBScript를 사용한 간단한 스크립트로, 컴퓨터가 절전 모드로 들어가거나 화면 보호기가 활성화되는 것을 방지하는 역할을 합니다. Set ws = CreateObject("WScript.shell") - WScript...

업무 기록/ETC 2025.05.07

KISA K-Shield Spring 프레임워크 시큐어코딩 SonarQube 소나큐브 (정적 분석 도구, ISMS)

ISMS 심사 간 웹 사이트 버그, 보안 취약점을 어떻게 관리하고 있냐고 인터뷰하는 경우가 있는데 이 때 소나큐브를 사용한다고 이야기를 하고 있다.이번 보안 교육 간 소나큐브 사용 실습이 있어 정리하게 되었다. 소나큐브(SonarQube)는 소스 코드의 품질과 보안 결함을 자동으로 분석해주는 정적 코드 분석 도구입니다. 개발자가 작성한 코드에서 버그, 코드 스멜(code smell), 보안 취약점 등을 찾아내고, 이를 지속적으로 모니터링하여 코드의 품질을 향상시키는 데 도움을 줍니다. 소나큐브 주요 특징 정적 코드 분석: 실행하지 않고 코드 자체를 분석하여 문제를 식별합니다.지원 언어: Java, Python, JavaScript, C#, Kotlin 등 다양한 언어 지원.CI/CD 통합: Je..

업무 기록/ETC 2025.05.02

KISA K-Shield Spring 프레임워크 시큐어코딩(SSRF, XSS, CSRF, 파일업로드,탐지, 테스트)

1. SSRF (Server-Side Request Forgery)1.1 개념 비유마치 누군가가 내 대신 전화를 걸어 “내 번호”가 아닌 “내 전화기”를 통해 통화하도록 속이는 것과 같습니다.서버가 외부 URL을 요청해 주는 기능(fetch(), HttpClient 등)을 악용내부망(사설 IP), AWS/GCP 메타데이터 서버 등에 마음대로 접근1.2 공격 흐름사용자가 ?url=http://example.com 같이 URL을 입력서버는 검증 없이 전달받은 URL로 요청공격자는 url을 http://169.254.169.254/latest/meta-data/로 바꿔 내부 정보 조회1.3 예시 코드 (Node.js)// 취약: 검증 없이 fetchapp.get('/proxy', async (req, res)..

Java 2025.05.02

KISA K-Shield Spring 프레임워크 시큐어코딩

1. 시큐어 코딩 개요 * 공급망 보안보안 사고 사례 분석과 교훈:계정 관리 미흡 관련 사고 교훈: 정기적인 계정 감사, 접근 제한, 보안 시스템 상시 모니터링 필요주기적인 계정 관리 부재로 SQL 인젝션 공격에 취약침입 탐지/차단 시스템 운영 미흡외부에서 관리자 사이트 접근 가능취약한 인증 시스템 관련 사고 교훈: 다중 인증(MFA) 구현, 직원 정보 보호 강화 필요단순 ID/비밀번호 인증만 사용임직원 메일 주소 노출솔라윈즈 공급망 공격 교훈: 공급망 보안 관리, 코드 서명 보안 강화 필요신뢰할 수 있는 업데이트에 악성코드 삽입코드 서명 인증서 유출SQL 인젝션 공격 도구들SQLMap, Mole, Havij 등 자동화 도구가 존재하여 공격이 더욱 쉬워짐데이터베이스 전체가 유출될 수 있으며, 오프라인 패..

Java 2025.04.28

Windows 환경에서 Kafka와 Docker download및 실행과 테스트

Windows 환경에서는 Kafka가 기본적으로 Linux/Unix 환경에 최적화되어 있기 때문에, Docker와 WSL을 활용하면 네이티브에 가까운 성능을 얻을 수 있습니다. 1. Docker에서 Kafka를 실행하는 이유Docker를 사용하여 Kafka를 실행하는 데는 여러 가지 중요한 이유가 있습니다:환경 일관성: Docker는 어떤 환경(개발, 테스트, 프로덕션)에서도 동일한 설정으로 Kafka를 실행할 수 있게 해줍니다.쉬운 설치: 복잡한 설치 과정 없이 이미지를 내려받아 바로 실행할 수 있습니다.격리성: Kafka와 의존성 있는 서비스들이 호스트 시스템에 영향을 주지 않습니다.리소스 효율성: 전체 VM을 사용하는 것보다 적은 리소스로 실행 가능합니다.빠른 시작/중지: 컨테이너를 빠르게 시작하고..

업무 기록/ETC 2025.04.25

[2024 정처기 실기 3회] 정보처리기사 3회 실기 해설 및 설명

1번 - 파이썬 문제def func(lst):# 리스트 길이의 절반만큼 반복 (인덱스 0, 1, 2) for i in range(len(lst) // 2):# 리스트의 앞쪽 요소와 뒤쪽 요소를 교환# lst[i]와 lst[-i-1](뒤에서 i+1번째 요소)의 위치를 바꿈 lst[i], lst[-i-1] = lst[-i-1], lst[i]# 초기 리스트 정의lst = [1,2,3,4,5,6]# func 함수 호출 - 이 함수는 리스트를 뒤집음func(lst)# lst[::2]는 짝수 인덱스(0,2,4) 요소들의 합에서# lst[1::2]는 홀수 인덱스(1,3,5) 요소들의 합을 뺀 값을 출력print(sum(lst[::2]) - sum(lst[1::2]))실행 과정을 상세히 살펴보겠습니다..

vscode marketplace download extension 버튼 없어짐 : VSIX 없어진 다운로드 버튼??

최근 Visual Studio Marketplace에서 확장 프로그램 다운로드 버튼이 사라지면서, 오프라인 설치나 백업 목적의 다운로드가 불편해졌습니다. 특히 사내망이나 인터넷이 차단된 환경에서는 이 문제가 더 크게 다가오죠. 다행히도, 예전 방식대로 직접 URL을 통해 .vsix 파일을 받아 설치하는 방법이 여전히 유효합니다. 이 글에서는 그 방법을 정리해보겠습니다.  기존에는 있었던 "Download Extension" 버튼... 지금은?? 예전에는 아래와 같이 확장 페이지에서 쉽게 .vsix 파일을 다운로드할 수 있는 버튼이 있었습니다.지금은 더 이상 제공되지 않습니다! 지금 가능한 방법: 직접 URL 생성 예전 공식 문서에 따르면, 다음과 같은 형식의 URL로 확장 프로그램을 직접 다운로드할 수 ..

업무 기록/ETC 2025.04.11

스트랭글러 패턴(Strangler Pattern): 레거시 시스템 현대화의 지혜와 어원

자연에서 배운 시스템 전환 전략소프트웨어 세계에서 레거시 시스템을 현대화하는 것은 항상 큰 도전입니다. 한 번에 모든 것을 교체하는 '빅뱅' 방식은 위험이 크고, 오랜 서비스 중단을 초래할 수 있습니다. 이러한 문제를 해결하기 위해 등장한 것이 스트랭글러 패턴(Strangler Pattern)입니다.  스트랭글러 무화과에서 영감을 얻다이 패턴의 이름은 호주 열대우림에서 볼 수 있는 '스트랭글러 무화과(Strangler Fig)' 식물에서 유래했습니다. 소프트웨어 설계 패턴의 대가인 마틴 파울러(Martin Fowler)가 2004년에 이 패턴을 명명했을 때, 그는 이 식물의 독특한 생존 방식에서 영감을 받았습니다.스트랭글러 무화과는 다음과 같은 과정으로 성장합니다:다른 나무의 가지에 씨앗이 떨어져 발아합..

업무 기록/ETC 2025.04.11

PreparedStatement 란? 기본개념, 장점, 성능향상, 메서드 활용과 주의사항 등

(구)웹에서 무지성으로 대충 내용만 알고 사용하던 방식을 이번에 정리가 하고 싶어서 작성하게 되었습니다.   PreparedStatement란?PreparedStatement는 자바(Java)의 JDBC(Java Database Connectivity) API에서 제공하는 인터페이스로, 데이터베이스와 상호작용할 때 SQL 쿼리를 안전하고 효율적으로 실행할 수 있게 해주는 도구입니다.  기본 개념PreparedStatement는 일반적인 Statement와 달리, SQL 쿼리를 미리 컴파일하고 실행 시점에 파라미터 값만 바인딩하는 방식으로 동작합니다.  작동 방식 (단계별) SQL 쿼리 준비: 물음표(?)를 사용하여 값이 들어갈 자리를 표시합니다.쿼리 컴파일: 데이터베이스가 쿼리를 미리 분석하고 실행 계획..

Java/Java 2025.04.09

LLM의 중추, 트랜스포머 아키텍처

2편 LLM의 중추, 트랜스포머 아키텍처1. 트랜스포머 아키텍처란?트랜스포머(Transformer)는 2017년 구글이 발표한 "Attention Is All You Need" 논문에서 소개된 딥러닝 모델로, 자연어 처리(NLP) 분야에서 획기적인 변화를 가져왔다. 기존의 순차적 처리 방식(RNN, LSTM)과 달리 병렬 연산이 가능하여 학습 속도가 빠르고 성능이 뛰어나다. 트랜스포머의 핵심 개념은 어텐션 메커니즘(Attention Mechanism)이며, 특히 셀프 어텐션(Self-Attention)과 멀티 헤드 어텐션(Multi-Head Attention)을 활용하여 문맥을 효과적으로 파악한다. 또한, 기본적으로 인코더-디코더(Encoder-Decoder) 구조를 가지며, 이후 BERT, GPT 등의..

LLM(Open AI) 2025.04.04

메시징 웹 애플리케이션 아키텍처 분석

메시징 기능을 갖춘 웹 애플리케이션의 현대적인 아키텍처에 대해 상세히 알아보겠습니다. 이 아키텍처는 실시간 메시징, 확장성, 모니터링 기능을 갖춘 엔터프라이즈급 시스템을 위해 설계되었습니다.  전체 아키텍처 구성이 메시징 웹 아키텍처는 다음과 같은 주요 구성 요소로 이루어져 있습니다:개발 환경 (Development)CI/CD 파이프라인프론트엔드 서버백엔드 서버메시지 브로커캐시 시스템데이터베이스모니터링 시스템테스트 인프라이미지 서버각 구성 요소의 역할과 상호작용을 자세히 살펴보겠습니다.  1. 개발 환경 (Development)개발자는 코드를 작성하고 Git을 통해 소스 코드를 관리합니다:Git: 분산형 버전 관리 시스템으로, 개발자는 이를 통해 코드 변경사항을 푸시합니다.Git Push: 개발자가 코드..

웹 애플리케이션 관리자 사이트 아키텍처 분석

프로젝트를 하면서 잊지 않기 위해 정리용으로 작성하였습니다.관리자 사이트 아키텍처에 대해 상세히 알아보겠습니다. 이 아키텍처는 대규모 트래픽을 처리하고 개발 효율성을 높이는 데 최적화되어 있습니다.    전체 아키텍처 구성 이 아키텍처는 크게 다음과 같은 주요 구성 요소로 이루어져 있습니다:개발 환경 (Development)CI/CD 파이프라인 (Jenkins)서버 인프라 (프론트엔드, 백엔드)테스트 인프라데이터베이스 시스템 각 구성 요소의 역할과 상호작용을 자세히 살펴보겠습니다. 1. 개발 환경 (Development) 백엔드 개발 환경백엔드는 다음과 같은 기술 스택으로 구성되어 있습니다:Kotlin: JVM 기반의 현대적인 프로그래밍 언어로, Java와 완벽한 상호 운용성을 제공하면서도 더 간결한 문..

LLM의 기초 뼈대 세우기

최근 몇 년간 대형 언어 모델(LLM, Large Language Model)의 발전은 인공지능(AI) 분야에서 가장 뜨거운 이슈 중 하나입니다. 챗GPT와 같은 AI 챗봇부터 코드를 작성하는 AI까지, LLM이 우리의 삶과 업무에 미치는 영향은 점점 커지고 있습니다. 이번 글에서는 LLM의 기초 개념부터 현재의 발전 과정, 그리고 미래의 전망까지 깊이 있게 살펴보겠습니다.    1. 딥러닝과 언어 모델 LLM을 이해하려면 먼저 딥러닝과 언어 모델의 기본 개념을 알아야 합니다.  딥러닝(Deep Learning)이란? 딥러닝은 다층 신경망(Deep Neural Network)을 활용하여 데이터를 학습하는 기계 학습 기법입니다. 특히 자연어 처리(NLP, Natural Language Processing)..

LLM(Open AI) 2025.04.01

웹 애플리케이션에서 특수문자와 유니코드 문자 처리 시 발생하는 XSS 이슈

웹 애플리케이션을 개발하다 보면 사용자 입력값에 특수문자나 유니코드 문자가 포함될 때 예상치 못한 문제가 발생하곤 합니다. 특히 보안과 관련하여 크로스 사이트 스크립팅(XSS) 공격을 방지하면서도 특수문자를 올바르게 처리해야 하는 상황에서는 더욱 주의가 필요합니다.이번 글에서는 제가 최근 경험한 문제와 그 해결 과정을 공유하고자 합니다.      문제 상황 20년이 넘은 웹이 있는데 그곳에서 회사 스팸 필터링 시스템을 운영하고 있습니다. 이 시스템에서 스팸 단어를 등록하고 검색하는 과정에서 다음과 같은 문제가 발생했습니다그리스 문자와 같은 유니코드 문자(예: "νιΡ")가 HTML 엔티티(예: "νιΡ")로 변환되어 저장되는 문제특수문자가 포함된 스팸 단어(예: "[비+&씨]")가 검색되지 않는 문제특수..

업무 기록/ETC 2025.03.31

25년 1분기 회고(1월 ~ 3월)

작성 이유벌써 서른, 하지만 혼자 아직 만 28이라고 생각하며...2025년 벌써 1/4 가 정신없이 흘러갔다. 새해 집안에 상을 치르면서 서른이 되었다는 사실조차 실감할 틈 없이 한 달이 지나가 버렸다. 그래서인지 특별히 기억에 남는 순간도 많지 않았다.어느덧 서울에 올라온 지도 3년. 하지만 그동안 기억에 남을 만한 문화생활을 한 적이 거의 없었다.설령 무언가를 했더라도 인상적인 기억으로 남아 있지 않았다. 돌이켜보면 친구들과 술을 마시며 시간을 보낸 것이 대부분이었고, 그렇게 나이만 먹어가고 있다는 생각이 들었다. 이대로 시간이 흘러가는 것이 아쉽다는 생각이 들었다.그래서 이제부터는 좀 더 다양한 활동을 경험하고, 의미 있는 추억을 많이 쌓아가고 싶다.   1월 기억에 남는 활동   고마운 사람들 ..

일기(잡) 2025.03.30

Elasticsearch & Kibana 다운로드 설치 및 설정

1. Elasticsearch 설치 방법(1) Elasticsearch 설치 전 필수 사항Java 설치 불필요 (Elasticsearch 7.x 이상은 내장 JDK 포함)최소 RAM 2GB 이상 권장지원 운영체제: Windows, macOS, Linux  (2) Elasticsearch 설치 방법 (OS별 가이드) 1) Linux/macOS (Tar 패키지 설치)wget tar -xzf elasticsearch-8.10.2-linux-x86_64.tar.gzcd elasticsearch-8.10.2최신 버전 다운로드 후 압축 해제 2) Windows (ZIP 패키지 설치)공식 다운로드 페이지에서 ZIP 파일 다운로드압축 해제 후 bin/elasticsearch.bat 실행 3) Docker 설치 방법do..

DevOps 2025.03.15

Kibana와 Grafana: 차이점, 역사, 사용 사례와 시계열 데이터 처리

키바나와 가장 자주 비교되는 시각화 도구로 키바나를 포크해서 만든 그라파나에 대해서 정리하게 되었습니다. 간단하게 키바나는 엘라스틱에서 실행되는 로그메세지 분석에 사용되고 그라파나는 시스템 관점 CPU, IO 등 사용율과 같은 메트릭 시각화하는데 특화된걸로 인지하고 있지만 좀 더 자세하게 정리하기 위해 글을 남기게 되었습니다.  1. Grafana와 Kibana 개요Grafana와 Kibana는 데이터 시각화 도구이지만, 처리하는 데이터 유형과 목적이 다릅니다. 기능  Grafana 🟠 Kibana 🔵 주요 역할메트릭 데이터 모니터링로그 및 이벤트 분석데이터 소스Prometheus, InfluxDB, MySQL 등 다양한 지원Elasticsearch 전용시각화 유형시계열 그래프, 게이지, 테이블 ..

DevOps 2025.03.12

메시지 큐(Message Queue)와 Kafka란

대규모 시스템에서는 데이터 처리를 효율적으로 관리하기 위해 메시지 큐(Message Queue, MQ)를 사용합니다. 메시지 큐는 다양한 구현체가 있으며, 그중에서도 Apache Kafka는 가장 널리 사용되는 분산 메시징 시스템 중 하나입니다. 이 글에서는 메시지 큐의 개념과 Kafka의 내부 구조 및 동작 방식을 깊이 있게 살펴보겠습니다. 1. 메시지 큐(Message Queue)란?메시지 큐는 생산자(Producer)가 보낸 메시지를 소비자(Consumer)가 받아 처리하는 비동기 방식의 통신 시스템입니다.이 방식은 여러 시스템이 독립적으로 동작할 수 있도록 하며, 부하 분산(Load Balancing)과 비동기 처리(Asynchronous Processing)를 가능하게 합니다. 메시지 큐의 ..

DevOps 2025.02.26

대용량 데이터 처리 방식 과 흐름

1. 코드 실행 순서 및 구조대용량 데이터를 처리하는 방식은 일반적으로 다음과 같은 단계를 거칩니다.데이터 로드 (Load Data)데이터베이스, 파일, API, 메시지 큐(Kafka 등)에서 데이터를 읽어옵니다.데이터 분할 (Partitioning)전체 데이터를 한 번에 처리하면 성능이 저하되므로, 여러 개의 작은 청크(batch)로 나눕니다.병렬 처리 (Parallel Processing)각 청크를 개별 스레드에서 병렬로 처리합니다.스레드 풀(Thread Pool)을 활용하여 일정 개수의 스레드만 실행되도록 제어합니다.비동기 실행 (Asynchronous Execution)비동기 방식으로 데이터를 처리하여 블로킹(blocking)을 최소화합니다.데이터 저장 (Save Data)처리된 데이터를 데이터베..

업무 기록/ETC 2025.02.23

스레드 개수 설정 및 성능 최적화와 방법들

1. 스레드란? 스레드는 프로그램에서 실행되는 가장 작은 단위의 작업 흐름입니다. 여러 개의 스레드를 사용하면 병렬 처리를 통해 성능을 향상시킬 수 있습니다. CPU가 여러 개의 스레드를 동시에 실행할 수 있기 때문에, 적절한 개수의 스레드를 사용하면 응답 속도를 개선하고 자원을 효율적으로 활용할 수 있습니다.  스레드 개수 설정 방법 및 적정 개수 판단 방법비동기 작업에서 스레드 풀(ThreadPool) 크기를 설정할 때,*"최적의 스레드 개수"**를 결정하는 것은 매우 중요한데, 이를 판단하는 방법을 설명할게요. 1. 스레드 개수 설정 기준 (CPU vs. I/O 작업에 따라 다름)스레드 개수를 설정할 때는 어떤 종류의 작업을 처리하는지에 따라 다르게 결정해야 함.작업 유형 설명 스레드 개수 설정 방..

업무 기록/ETC 2025.02.20

Spring Boot 비동기 처리(@Async)로 성능 향상 원리와 동기/비동기

1. 코드 작동 방식 이 코드는 이미지 다운로드 및 변환 작업을 비동기적으로 실행하는 역할을 합니다. 실행 흐름1. 클라이언트가 processImage(imageUrl)을 호출2. @Async가 적용된 메서드이므로 새로운 스레드에서 실행3.  메서드 실행 후 즉시 CompletableFuture 객체를 반환 (메인 스레드 블로킹 없음)4.  백그라운드에서 downloadAndProcessImage(imageUrl) 실행5.  작업 완료 후 processedImageUrl을 반환2. 비동기 성능 향상 원리 (동기 vs. 비동기)구분 동기 처리 (Synchronous) 비동기 처리 (Asynchronous)실행 방식하나의 작업이 끝날 때까지 대기여러 작업을 동시에 실행스레드단일 스레드에서 순차 실행별도의 스..

Spring 2025.02.19

프로젝트 : CDN과 24년 선거 대비 자체 이미지 서버 개발 및 최적화

CDN(Content Delivery Network) 적용 및 운영 경험CDN은 전 세계 여러 지역에 분산된 엣지 서버(Edge Server)를 통해 사용자에게 정적 및 동적 컨텐츠를 빠르고 안정적으로 전달하는 기술입니다. 대규모 트래픽을 효율적으로 분산하고, 웹사이트의 로딩 속도를 단축하며, 서버 부하를 줄이는 데 중요한 역할을 합니다. 프로젝트 배경24년 선거 기간 중 Kakao, RCS, MMS 메시지 대량 발송 시 서버 다운 및 전송 속도 저하 문제 발생 가능성기존 메시지 서버에서 이미지 트래픽이 혼합되어 처리되면서 부하 급증트래픽 폭증에도 안정적으로 이미지 전송을 처리할 수 있는 독립적인 이미지 서버 필요 주요 개발 내용자체 이미지 서버 설계 및 구축메시지 본문과 이미지 트래픽을 분리하여 전용 ..

구글 애널리틱스 활용 웹 개발 적용

구글 애널리틱스란?구글 애널리틱스는 웹사이트의 트래픽과 사용자 행동을 분석할 수 있는 무료 웹 분석 도구입니다. 웹사이트에 방문하는 사용자들의 행동, 유입 경로, 체류 시간 등 다양한 데이터를 수집하고 분석할 수 있습니다. 주요 기능과 특징1. 실시간 모니터링현재 웹사이트를 방문 중인 사용자 수사용자들이 보고 있는 페이지사용자의 지리적 위치     2. 사용자 행동 분석페이지별 방문 시간이탈률과 전환율사용자의 이동 경로 3. 트래픽 소스 분석유입 경로(검색엔진, 소셜미디어, 직접 방문 등)검색어 분석캠페인 효과 측정 왜 구글 애널리틱스인가?개발한 프로젝트는 다양한 메시징 서비스를 제공하는 플랫폼입니다. 이런 복잡한 서비스에서는 사용자들이 어떤 기능을 주로 사용하는지, 어떤 부분에서 어려움을 겪는지 파악하..

DevOps 2025.02.12

프로그래머스 코딩 기초 트레이닝 Python Day16 ~ Day25

DAY16 문자열 대문자로 바꾸기def solution(myString): return myString.upper()테스트:print(solution("aBcDeFg"))# "ABCDEFG"print(solution("AAA"))# "AAA"설명:upper() 메서드는 문자열의 모든 알파벳을 대문자로 변환이미 대문자인 경우는 그대로 유지됨 소문자로 바꾸기def solution(myString): return myString.lower()테스트:print(solution("aBcDeFg"))# "abcdefg"print(solution("aaa"))# "aaa"설명:lower() 메서드는 문자열의 모든 알파벳을 소문자로 변환이미 소문자인 경우는 그대로 유지됨 배열에서 문자열 대소문자 변환하기def ..

프로그래머스 코딩 기초 트레이닝 Python Day6 ~ Day15출처

DAY6 조건문 반복문 마지막 두 원소def solution(num_list):# 마지막 원소와 그 전 원소 비교 if num_list[-1] > num_list[-2]:# 마지막 원소가 더 크면 그 차이를 추가 num_list.append(num_list[-1] - num_list[-2]) else:# 마지막 원소가 더 크지 않으면 마지막 원소의 두 배를 추가 num_list.append(num_list[-1] * 2) return num_list설명:리스트의 마지막 원소와 그 전 원소 비교:num_list[-1]은 마지막 원소num_list[-2]는 마지막에서 두 번째 원소조건에 따른 값 추가:마지막 원소가 더 크면: 두 원소의 차이를 추가마지막 원소가 더 크..

레거시 프로젝트 장애 처리 ORA-00001

[장애발생]기존 회사에는 20년이 넘은 메세지 관리자 레거시 프로젝트가 남아있다. 최근 해당 코드는 아에 업데이트를 하지않고 일부 계정만 사용을 하는데 관리자가 계정등록이 안된다는 메일을 확인하였다. 해당 계정이 등록되지 않은 이유는 0.1초 사이에 클릭이 2번 연속 되어 해당 DB에 값을 넣는 중 2번 넣어서 발생하는 문제였다. TBL_STAT_CONFIG -> TBL_ROUTING -> TBL_CPINFO -> TBL_DETAIL_CPINFO                                                 TBL_STAT_CONFIG -> TBL_ROUTING -> TBL_CPINFO -> TBL_DETAIL_CPINFO 이런식으로 디비에 값이 들어가는 중 중복으로 값이 들어가는..

Error 2025.02.06

프로그래머스 코딩 기초 트레이닝 Python Day1 ~ Day5

DAY 1문자열 출력str = input()print(str) a, b 출력a, b = map(int, input().strip().split(' '))print("a =", a)print("b =", b)a, b = map(int, input().strip().split(' '))input(): 사용자로부터 문자열을 입력받습니다.strip(): 입력된 문자열의 앞뒤 공백을 제거합니다.split(' '): 문자열을 공백을 기준으로 나누어 리스트로 만듭니다map(int, ...): 리스트의 각 문자열을 정수로 변환합니다a, b = ...: 변환된 두 정수를 변수 a와 b에 각각 할당합니다예시: 입력이 "4 5"인 경우"4 5" (입력) → "4 5" (strip) → ["4", "5"] (split) → ..

데이터베이스 종류 와 선택(PostgreSQL,MySQL,MongoDB,Redis,Elasticsearch,Cassandra,Neo4j)

왜 데이터베이스 선택이 중요할까요?데이터베이스는 애플리케이션의 근간을 이루는 핵심 요소입니다. 잘못된 선택은 나중에 돌이키기 어려운 문제를 초래할 수 있습니다. 예를 들어, SNS 서비스를 만든다고 가정해보겠습니다. 관계형 데이터베이스만을 고집하다가 나중에 대용량 트래픽을 감당하지 못하는 상황이 발생할 수 있습니다. 반대로, NoSQL을 선택했는데 데이터의 일관성이 중요해지는 경우도 있을 수 있죠.  데이터베이스의 종류와 특징관계형 데이터베이스 (RDBMS)PostgreSQL과 MySQL은 가장 널리 사용되는 관계형 데이터베이스입니다. 이들은 데이터의 일관성과 무결성이 중요한 상황에서 탁월한 선택이 됩니다.PostgreSQL기업용 데이터베이스의 강자입니다. 복잡한 쿼리 처리, 트랜잭션 관리가 필요한 금융..

DB 2024.11.27

코틀린 디자인 패턴과 아키텍처

1. 디자인 패턴이란? 🤔1.1 쉬운 비유로 이해하기디자인 패턴은 집을 지을 때 사용하는 설계도와 같습니다:검증된 방법으로 문제 해결유지보수가 쉬워짐다른 개발자들과 소통이 쉬워짐예를 들어, 아파트를 지을 때 주방, 화장실, 거실의 위치를 계획하는 것처럼, 앱을 만들 때도 각 부분의 역할과 위치를 계획합니다.2. MVVM 패턴 🏗️2.1 MVVM이란?쉽게 설명하면, 앱을 세 부분으로 나누는 방법입니다:Model: 데이터View: 화면ViewModel: 데이터를 화면에 맞게 가공2.2 실생활 비유레스토랑으로 비유하면:Model: 주방에서 요리하는 셰프 (데이터 처리)View: 손님이 보는 메뉴판과 음식 (화면)ViewModel: 주문을 받고 전달하는 웨이터 (중간 역할)2.3 간단한 예제// Model:..

Kotlin 2024.11.26

코틀린(Kotlin)데이터 클래스와 sealed 클래스

1. 데이터 클래스 (Data Class) 📦1.1 데이터 클래스란?데이터 클래스는 데이터를 보관하고 전달하는 것이 주 목적인 클래스입니다. 일반적으로 다음과 같은 상황에서 사용됩니다:API 응답 데이터 모델링// API 응답을 표현하는 데이터 클래스data class UserResponse( val id: Int, val name: String, val email: String, val age: Int)UI 상태 표현// 화면에 표시할 사용자 정보를 담는 데이터 클래스data class UserUiState( val userName: String, val userImage: String, val followersCount: Int, val isFollowin..

Kotlin 2024.11.25