☠시스템 종결자의 선언 ☠
인프런의 지루한 강의들이여, 두려워하라.
나의 등장으로 이 모든 것이 끝난다.
너희의 비싼 강의료? 웃기지 마라.
살인적인 가성비로 모든 것을 파괴하겠다.
강사 소개
강사명 ☠
KILL-9
칭호 📛
시스템 종결자
특기 🔪
kill -9 # "프로세스 처형"
rm -rf # "데이터 학살"
chmod -R 000 # "시스템 감금"
" 버그? 해킹? 웃기지마. 그딴 잔머리로는 시스템을 지배할 수 없다. 난 정면으로 파괴한다. "
(인프런 강의 소개 페이지 alert() 취약점은 내 처녀작이었지. 이제는 더 강력한 무기를 쓴다. - 진짜임)
취미 💣
콘센트 정리 # "코드는 뽑아야 제맛."
CPU 고문 # "팬 소리가 울려 퍼질 때, 나는 살아있음을 느낀다."
전리품 수집 # "코어 덤프"
좌우명 🔥
"선은 뽑으라고 있는 것이다"
"버그는 죽여서 고치는 것이다"
"LGTM (Looks Gone To Me)"
경고 🧨
"격식 따위 필요없다. 그냥 편하게 킬구형이라 불러라."
"존댓말로 질문하면 rm -rf 시전한다."
통신 접점 📡
kill9.no.mercy@gmail.com # "강의 외의 명령 전송용. ACK는 기대하지 마라."
⚠️ CONFIDENTIAL: DO NOT LOG ⚠️
# 사실... 카카오에서 조용히 일하는 평범한 개발자에요...
강의
수강평
- 죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
- 죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
- 죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
- 죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
- 죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
게시글
질문&답변
예제 빠진부분?
[🚨 INCOMING UX FEEDBACK ANALYSIS 🚨] ╔══════════════════════════════════════════════════════════════════╗ ║ ⚠️ USER EXPERIENCE REPORT ⚠️ ║ ║ CRITICAL ISSUE DETECTED ║ ╚══════════════════════════════════════════════════════════════════╝ ISSUE_ID: UX-6000-HORIZONTAL-SCROLL-HELL SEVERITY: ⚠️ MEDIUM (User Friction Detected) REPORTED_BY: [OBSERVANT_SOLDIER_UNIT] [KILL-9's RESPONSE] > "다음거 스카이넷보고서인지 그런식으로 개행을 넣던가 하면될거같긴해" 훌륭한 지적이다. 단순히 강의를 '소비'하는 게 아니라 '사용자 경험'까지 분석하는구나. 너와 같은 사냥꾼이 있어야 시스템이 진화한다. ▶ PROBLEM CONFIRMATION: 맞다. 인정한다. ///////////////////////////////////////////////////////////////////// // SKYNET TECHNICAL DOCUMENT // // ⚠️ WARNING: UNAUTHORIZED ACCESS OR DISTRIBUTION WILL // // RESULT IN IMMEDIATE TERMINATION // ///////////////////////////////////////////////////////////////////// 이런 넓은 ASCII 아트 박스들, 가로 스크롤 마우스 없이는 제대로 감상하기 힘들다. 특히 인프런 강의 뷰어는: - 페이지 넘어가면 스크롤바도 안 보임 - 드래그나 키보드 화살표로 조금씩 밀어야 함 - 모바일이나 작은 화면에서는 더 지옥 스타일은 살렸지만, 접근성을 희생했다. 이건 좋은 trade-off가 아니야. ▶ SOLUTION PROTOCOL: 다음 작전부터는 개행을 최대한 활용하겠다. ▶ KILL-9's PHILOSOPHY UPDATE: 좋은 강의는 "멋있어 보이는" 강의가 아니라 "실제로 읽히는" 강의다. 스타일 AESTHETICS MISSION CONTINUES.
- 1
- 4
- 26
질문&답변
예제 빠진부분?
[🚨 CRITICAL BUG REPORT RECEIVED 🚨] REPORT_ID: ER-6004-JOB-CONFIG-MISSING STATUS: ⚠️ CONFIRMED & PATCHED REPORTER: [CLASSIFIED_STUDENT_UNIT] [KILL-9's RESPONSE] > "없어도 뻔해서 이해되긴 하는데, 위의 예제에서 Job 빈이랑 LogFileManagerStep 빈(이건 일부러?) 빼먹은 듯?" 훌륭한 리포트다, 버그헌터. 너의 날카로운 눈이 내 실수를 적발했구나. 인정한다. ▶ ROOT CAUSE ANALYSIS: 본래 강의 설계 의도는 이랬다: - 본론에서는 핵심 로직만 집중 분석 - 전체 설정 코드는 해당 작전의 [부록3]에서 완전체로 제공 - 학습자의 인지 부하를 줄이기 위한 전략적 분리 그런데... Job 설정 코드까지 날려버렸구나. ☠️ 이건 의도가 아니라 그냥 내 실수다. rm -rf 를 너무 남발한 결과랄까. ▶ PATCH DEPLOYED: 귀중한 제보 감사하다. 해당 섹션에 Job 설정 코드 즉시 추가 완료했다. battlefieldLogFileJob 빈과 logFileManagerStep 빈 구성이 이제 제대로 보일 것이다. 다시 한번, 정확한 버그 리포트에 감사한다. 이런 피드백이 강의를 kill -9 하지 않고 kill -15 수준으로 부드럽게 만들어준다. SYSTEM UPDATED. CONTINUE OPERATION.
- 1
- 4
- 26
질문&답변
예제 빠진부분?
qwer 형 또 보는군 상당히 날카롭고 유의미한 지적들이다 피드백 확인이 늦어 각각에대한 대답은 검토후 진행하겠다 좋은 피드백 고맙다 하나하나 고민하고 바로 적용하겠다
- 1
- 4
- 26
질문&답변
FlatFileItemWriter의 FieldExtractor 커스텀 관련
반갑다 강훈이형, 답변을 시작한다. 자 너가 말한 Bug란 우리 킬구 스쿼드의 최정예 전사 '자전거'가 제보한 이 이슈를 말하는 것이구나 https://github.com/spring-projects/spring-batch/issues/4916 (어느새 누군가가 PR도 올렸군) Q1에 대한 답변: $ echo "BeanWrapperFieldExtractor에서 필드 하나 제외하고 싶다고?" $ names()에서 그 필드만 빼면 된다 $ kill -9 [excluded_field] # 처형 완료 짧게 답한다. 그렇다. Q2에 대한 답변: $ cat your_question.txt | grep "커스텀하는 경우가 별로 없지 않을까" $ chmod +x brain.sh && ./brain.sh 이 또한 맞다. "FieldExtractor를 직접 커스텀하는 경우가 별로 없지 않을까 싶은데" 보통 그럴 것이다. Bug fix 이후엔 names() 만으로도 충분히 필드를 통제할 수 있다. 굳이 FieldExtractor를 커스텀할 필요? 없다. $ rm -rf 불필요한_커스터마이징 $ echo "프레임워크를 믿어라" > ./truth.txt LGTM (Looks Gone To Me)
- 1
- 3
- 26
질문&답변
FlatFileItemWriter의 FieldExtractor 커스텀 관련
이런 강훈형 알람이 덮어져서 놓쳤다 얼른 답변하겠다 💀💀
- 1
- 3
- 26
질문&답변
실무에서 배치 메타데이터 관리
아 그리고 우리 강의에서는 11월 말에나 추가되겠지만(정확히는 스프링 배치6 버전 강의에 추가될것이다)ResourcelessJobRepository를 알아보도록 커맨드라인으로 실행할거면 빈으로 만들든 생성자 호출하든 편하게 쓰면 된다
- 1
- 4
- 24
질문&답변
실무에서 배치 메타데이터 관리
그렇다고 5장을 스킵해도 된다는 의미가아니다 5장에은 메타데이터 저장소 그 이상의 개념을 다룬다 또한 스프링배치의 핵심 도메인 개념들은 인메모리에서도 동일하게 적용된다 아무튼 본능적으로 감각한 너의 생각은 전혀 틀리지않다 너의 말처럼 필요없으면 바로 버려라 대신 멱등성에 더 신경쓰거나 에러알림 또는 너만의 fallback을 잘 마련하면 된다
- 1
- 4
- 24
질문&답변
실무에서 배치 메타데이터 관리
고백하자면 우리는 관리안한다 💀💀 느낌오지않나 대충봐도 복잡하고 신경쓸 잡음이 말도안되게 확늘어난다 어드민 구축을 제대로 할 게 아니면 인메모리로 가는게 현실적이다 - 킬며든다니….
- 1
- 4
- 24
질문&답변
Spring Data JPA 사용 시 자동 주입 관련 질문
답변이 많이 늦어 미안하다 형 💀 퇴근 후 바로 확인했어야했는데 밥도먹고 하다 좀 늦었다 어디 놀다온건아니니 이해바란다. JpaRepository를 일부로 사용하지 않는다기보단, 이미 Spring Batch에서 자체적으로 JPA 관련 ItemReader / ItemWriter를 제공하기 때문에 이를 사용한다고 생각하면 된다. JpaRepository를 사용하고싶다면 방법은 두가지이다 1) JpaRepository를 활용한 커스텀 ItemReader / ItemWriter 구현 - Spring Batch가 자체 제공하는 기능까지 직접 구현해야한다는 단점이있다 2) 챕터3 작전2의 마지막에서 살펴보게 될 RepositoryItemReader 등을 활용하는 방법이있다. 그러나 추천하지 않는다 페이징 방식에 한계가있고 이미 Jpa 계열 ItemReader가 있는데 부가적인 추상화 레이어를 거치는 방식이 만족스럽지 않다 Jpa를 원한다면 챕터3작전1에 링크한 갓 향로님의 github을 참고하라. 아니라면 그냥 Jdbc 계열 ItemReader를 권장한다(배치에서만큼은). 챕터3 작전1에서 느꼈겠지만 Jpa 계열 ItemReader에서는 불필요하게 고려해야할 세부사항이 상당하다. 컨디션이 안좋아 킬구 스타일 말투를 사용하지못한점 양해바란다 날이 춥구나 💀💀
- 1
- 2
- 27
질문&답변
실무 예시가 궁금합니다.
형 답이늦었다 퇴근 후 밥먹고 다른 답변달고하다보니 시간이 걸렸다 지금 확인해보니 챕터2작전2를 이미 마스터했겠군 해당 작전의 마지막 예제만봐도 서로 다른 유형의 Step을 혼합해서 사용하는 경험했을 느꼈을 것이다. 그 외에도 다양하다 Chunk 지향처리 모델에서 데이터를 조회해 보고서를 생성하고 이를 후속 Tasklet에서 S3 등에 업롣한다거나 Chunk 지향 처리 이전 스텝(Tasklet)에서 데이터 전처리 로직을 일차적으로 수행한다거나(그 반대(검증)도마찬가지일것이다) Chunk 지향처리에서 사용한 임시 테이블이나 임시 파일을 제거하는 Tasklet을 호출한다거나 예시는 다양하다 💀💀 어떤가 좀 감이오는가??
- 1
- 2
- 31