<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>김현진 | TECH LOG</title><link>https://rlaguswls13.github.io/</link><description>Java &amp; Spring Boot 기반 풀스택 개발자 김현진의 포트폴리오와 기술 기록입니다.</description><lastBuildDate>Thu, 22 Oct 2026 08:18:04 GMT</lastBuildDate><item><title>Apache Kafka 동시성 문제에 따른 파티셔닝 조절</title><link>https://rlaguswls13.github.io/devlog/problem_solving/kafka-partition-concurrency-solve</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/problem_solving/kafka-partition-concurrency-solve</guid><description>Kafaka로 동일 action을 실행할때, 파티셔닝을 과도하게 나눠서 동시 실행을 하다보면, sequncail 작업이 꼬이는 경험을 할  수 있습니다. 이때, 이행했던 작업과 고민했던 작업에 대해서 작성해봤습니다.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate></item><item><title>스레드 풀 : 스레드 풀을 이용하는 이유?</title><link>https://rlaguswls13.github.io/devlog/tech_study/java-concurrency-thread-pool</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study/java-concurrency-thread-pool</guid><description>스레드 풀은 재사용 스레드 집합, 대기 작업 큐, 스케일링·거절 정책 세 부분으로 이루어진 관리 추상화이며, 비싼 자원을 생성·소멸의 대상이 아니라 빌리고 반납하는 대상으로 취급합니다. 스레드를 매번 만들고 없애며 적정 개수를 사람이 계속 조정하는 것은 불가능하므로, corePoolSize·maximumPoolSize·큐 용량·keepAliveTime·거절 정책을 한 번 계약으로 정해 두면 풀이 core → queue → max 순으로 확장하고 유휴 시 keepAlive로 축소합니다. 특히 큐 종류가 스케일링 성격을 좌우해서 무제한 LinkedBlockingQueue를 쓰면 maximumPoolSize가 무의미해지고, Executors 팩토리 메서드에는 이런 숨은 무제한이 있어 운영에서는 ThreadPoolExecutor를 직접 구성하고 다운스트림 커넥션 풀 상한과 정합시켜야 합니다.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate></item><item><title>여러 스레드에서 하나의 객체를 공유 할 때 발생할 수 있는 문제는?</title><link>https://rlaguswls13.github.io/devlog/tech_study/java-concurrency-shared-mutable-state</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study/java-concurrency-shared-mutable-state</guid><description>&quot;공유·가변·최소 1개의 쓰기&quot; 세 조건이 동시에 성립할 때만 스레드 안전 문제가 생기며, 증상은 데이터 오염(갱신 유실·찢어진 상태·컬렉션 파손·dirty read), 가시성 부재(캐시·재정렬로 변경이 다른 스레드에 안 보임), 순서 재정렬(DCL 붕괴)의 세 갈래로 나타납니다. 이를 Lock으로 막으면 이번에는 경합으로 병렬성이 사라지고(암달의 법칙), 획득 순서 불일치로 데드락이 생기며, 기아·잘못된 락 객체·임계 구역 안 외부 호출 같은 새로운 문제가 따라옵니다. JMM은 synchronized·volatile·java.util.concurrent가 만드는 happens-before 관계로만 보장을 제공하므로 동기화가 하나도 없으면 아무것도 보장되지 않으며, 해결은 공유 제거 → 원자 도구 → 락 최소화 순으로 접근합니다.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Java 문법 02. 변수와 기본 타입, 형 변환</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/java-syntax-variables-types</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/java-syntax-variables-types</guid><description>Java 문법 02. 변수와 기본 타입, 형 변환</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Java 문법 01. 프로그램 구조와 실행</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/java-syntax-program-structure</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/java-syntax-program-structure</guid><description>Java 문법 01. 프로그램 구조와 실행</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>초보에서 주니어로 - 개발하는 습관에 대한 견해</title><link>https://rlaguswls13.github.io/devlog/blog/software-engineering-junior-dev-habits</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/blog/software-engineering-junior-dev-habits</guid><description>어느덧 개발 4년 차를 맞이하여, 개발 과정에서의 습관에 대한 저의 생각을 가볍게 정리해 보았습니다. 개인적인 경험과 생각이 반영되어 있어 다른 관점을 가진 분들께는 온전히 맞지 않을 수도 있습니다. 다만, 그동안 현장에서 만난 뛰어난 개발자분들과 각 분야의 우수한 실무자분들에게서 얻은 인사이트를 녹여낸 만큼, 시작하는 단계에 계신 분들께는 자그마한 도움이 되기를 바랍니다.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 06. 정제와 변환</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-cleaning-transform</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-cleaning-transform</guid><description>정제는 크게 형 변환(astype/to_numeric/to_datetime), 값 매핑(replace/map/rename), 파생 열 생성(assign/apply), 문자열·날짜 처리(.str/.dt), 범주화(cut/qcut/category), 중복 제거(drop_duplicates)로 나뉩니다.

핵심 습관은 벡터화된 접근자(.str, .dt)를 먼저 찾고, apply는 최후에 쓰는 것입니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 03. 데이터 살펴보기 (탐색)</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-inspection</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-inspection</guid><description>데이터를 로드한 직후에는 모양(shape) → 형(info) → 분포(describe, value_counts) → 결측(isna().sum()) → 메모리(memory_usage) 순으로 점검합니다.

이 5분짜리 점검이 이후 정제 단계에서 &quot;이 열이 왜 object지?&quot;, &quot;왜 행이 이렇게 많지?&quot; 같은 혼란을 없애 줍니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 01. 기초 개념과 자료구조</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-series-dataframe</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-series-dataframe</guid><description>pandas의 모든 것은 Series(1차원) 와 DataFrame(2차원), 그리고 두 구조의 행·열에 붙는 Index(라벨) 위에 세워집니다.
DataFrame은 &quot;같은 길이의 Series 여러 개를 열로 묶고, 공통 행 라벨(Index)을 공유&quot;하는 구조입니다.

NumPy ndarray가 &quot;위치(0,1,2)로만 접근하는 균일 dtype 블록&quot;이라면, pandas는 그 위에 의미 있는 라벨과 열별 dtype, 결측 표현을 얹은 계층입니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 10. 결합 (concat·merge·join)</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-merge-join</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-merge-join</guid><description>표를 합치는 방법은 3가지입니다.
• concat: 위/아래(또는 옆) 로 쌓기 (같은 스키마 이어 붙이기).
• merge: 공통 키(열) 기준 관계형 조인 (SQL JOIN).
• join: merge의 편의 버전으로 인덱스 기준 결합에 최적.merge에서 사고를 예방하는 핵심 옵션은 how, validate, indicator, suffixes 입니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 08. 그룹 연산 (groupby)</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-groupby</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-groupby</guid><description>groupby는 split(키로 쪼갬) → apply(각 조각에 함수) → combine(결과 합침) 3단계입니다.

조각에 적용하는 함수는 성격에 따라 4가지로 갈립니다: agg(그룹당 스칼라), transform(원본과 같은 shape), filter(그룹 통째로 포함/제외), apply(가장 유연, 가장 느림).
df.groupby(...)는 즉시 계산하지 않는 지연 객체이며, 뒤에 오는 연산에서 실제로 평가됩니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 13. 다음 단계 연결</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-next-steps</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-next-steps</guid><description>pandas로 정제·집계한 DataFrame은 그 자체가 목적이 아니라 시각화와 모델링의 입력입니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 09. 재구조화 (pivot·melt·stack)</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-reshaping</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-reshaping</guid><description>같은 데이터도 wide(넓은) 포맷과 long(긴/tidy) 포맷으로 표현할 수 있습니다.
• long → wide: pivot, pivot_table (집계 포함), unstack
• wide → long: melt, stack
분석·집계에는 long, 사람이 보는 표·시각화 입력에는 wide가 유리합니다. 두 방향을 자유롭게 오가는 것이 목표입니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 05. 결측치 처리</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-missing-data</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-missing-data</guid><description>처리 흐름은 ① 탐지(isna/notna) → ② 제거(dropna) 또는 대체(fillna/interpolate) 입니다.

pandas의 결측 표기는 dtype에 따라 갈립니다: float은 NaN, object는 None/NaN, 확장 dtype은 pd.NA, datetime은 NaT.

&quot;결측을 담을 수 있는 정수/불리언 열&quot;이 필요하면 nullable dtype(Int64, boolean)을 씁니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 02. 데이터 입출력 (IO)</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-io</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-io</guid><description>pandas 전처리는 대부분 read_csv로 시작해 to_parquet/to_csv로 끝납니다.
read_csv는 옵션이 수십 개지만, 실무에서 반복적으로 쓰는 것은 dtype, parse_dates, na_values, usecols, nrows/chunksize, encoding 정도입니다.

&quot;읽을 때 형을 제대로 지정&quot;하는 것이 이후 모든 정제 비용을 줄입니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 07. 정렬과 순위</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-sorting</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-sorting</guid><description>정렬은 값 기준(sort_values) 과 라벨 기준(sort_index) 두 가지입니다.

&quot;상위 N개&quot;만 필요하면 전체 정렬(sort_values().head())보다 nlargest/nsmallest 가 빠릅니다.

값의 &quot;몇 등인지&quot;가 필요하면 rank 를 씁니다 (동점 처리 방식이 핵심 옵션).</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 11. 시계열</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-timeseries</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-timeseries</guid><description>시계열 전처리의 뼈대는 DatetimeIndex로 만들기 → resample로 빈도 바꾸기 → rolling/shift로 파생 만들기 입니다.
resample은 시간 축 전용 groupby이고, rolling은 이동 창(window) 집계, shift/diff/pct_change는 &quot;이전 값과의 관계&quot;를 만듭니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 12. 성능과 함정</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-performance</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-performance</guid><description>1~11장을 한 번 본 뒤 다시 읽는 챕터입니다. pandas에서 반복적으로 사람을 잡는 것들: ① apply/iterrows 남용, ② 연쇄 인덱싱과 SettingWithCopyWarning, ③ dtype·메모리 낭비, ④ inplace 오해, ⑤ 자동 정렬로 생기는 결측. 마지막에 method chaining과 pandas를 벗어날 시점을 정리합니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Python - pandas 04. 선택과 인덱싱</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-indexing</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/python-pandas-indexing</guid><description>pandas에서 데이터를 고르는 방법은 크게 4가지입니다: [](대괄호), .loc(라벨), .iloc(위치), .at/.iat(단일 값).

헷갈림의 90%는 &quot;라벨 슬라이스는 끝을 포함(.loc), 위치 슬라이스는 끝을 제외(.iloc)&quot;와 &quot;연쇄 인덱싱 대입 금지&quot;를 지키면 사라집니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>데이터 전처리 이론 01. 데이터의 척도와 EDA 기초</title><link>https://rlaguswls13.github.io/devlog/tech_study_series/data-preprocessing-scales-eda</link><guid isPermaLink="true">https://rlaguswls13.github.io/devlog/tech_study_series/data-preprocessing-scales-eda</guid><description>전처리의 모든 의사결정은 &quot;이 변수가 어떤 척도인가&quot;에서 출발합니다. 척도를 잘못 읽으면 이후의 인코딩·스케일링·통계량 선택이 전부 어긋납니다.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item></channel></rss>