전체 글
-
스프링과 함께 더 나은 개발자 되기 - 이일민(토비)세미나, 영상 요약정리 2023. 10. 18. 00:01
https://www.inflearn.com/course/%EC%9D%B8%ED%94%84%EC%BD%982023-%EB%8B%A4%EC%8B%9C%EB%B3%B4%EA%B8%B0/dashboard [무료] 인프콘 2023 다시보기 - 인프런 | 강의 성장하는 IT인들의 축제, 인프콘 2023에서 진행된 오프닝 및 발표 세션을 영상으로 다시 보실 수 있습니다., ✅ 확인해주세요 이 콘텐츠는 2023년 8월 15일 화요일 진행된 인프콘 2023 다시보기 녹화 www.inflearn.com 인프콘 2023에서 스프링과 함께 더 나은 개발자 되기라는 주제로 발표하신 내용을 요약해 보고자 합니다. 내가 사용하는 기술을 통해서 더 나은 개발자로 성장할 수 있을까? 가능하다! 하지만 단순히 사용하기만 해서는 힘들다..
-
상태패턴과 전략패턴의 차이는 무엇일까?Kotlin 2023. 10. 17. 00:01
상태패턴이란? // State interface interface LightState { fun turnOn(light: FluorescentLight) fun turnOff(light: FluorescentLight) } // Concrete state classes class OnState : LightState { override fun turnOn(light: FluorescentLight) { println("The light is already on.") } override fun turnOff(light: FluorescentLight) { println("Turning off the light.") light.lightState = OffState() } } class OffState : ..
-
4장 - InnoDB 스토리지 엔진 아키텍처CS/Real MySQL 8.0 요약 2023. 10. 16. 00:01
개요 이전 챕터인 MySQL 엔진 아키텍처에 이어 InnoDB 스토리지 엔진 아키텍처에 대해 알아보고자 합니다. InnoDB 스토리지 엔진 아키텍처 InnoDB는 MySQL에서 가장 많이 사용됩니다. 거의 유의할게 레코드 기반 잠금을 제공하기 때문에 높은 동시성 처리가 가능하고 안정적이며 성능이 뛰어납니다. 프라이머리 키에 의한 클러스터링 InnoDB의 모든 테이블은 기본적으로 PK를 기준으로 클러스터링 되어 저장됩니다. 즉, PK의 순서대로 디스크에 저장되며 세컨더리 인덱스는 레코드의 주소 대신 PK의 값을 논리적인 주소로 사용합니다. 이로 인해 PK로 인한 레인지 스캔은 굉장히 빨리 처리되며 실행계획에서도 다른 인덱스보다 PK가 선택될 확률이 높습니다. 외래 키 지원 외래 키에 대한 지원은 InnoD..
-
Spring Filter Logging- Spring Filter Hands On 4Spring Framework/Filter 2023. 10. 15. 00:01
개요 Spring Filter를 활용해서 Response, Request에 대한 로깅을 수행해보고자 합니다. 시작 전 주의사항 HttpServletRequest, HttpServletResponse의 경우에 내부적으로 Stream을 사용하기 때문에 ContentCachingRequestWrapper와 ContentCachingResponseWrapper를 사용해주어야 합니다. Stream은 한번 소비하면 재사용할 수 없습니다. Response Request Logging class ResponseRequestLoggingFilter : OncePerRequestFilter() { override fun doFilterInternal( request: HttpServletRequest, response: ..
-
2장 - 팀워크 이끌어내기책 요약정리/구글 엔지니어는 이렇게 일한다 2023. 10. 14. 00:01
천재 신화 많은 사람들은 본능적으로 우상을 찾고 흠모합니다. 소프트웨어 엔지니어들에게는 리누스 토르발스, 빌 게이츠 같은 이들이 아이돌일 것입니다. 하지만 리누스가 한 일은 유닉스와 커널의 시제품을 만들어 메일링 리스트로 뿌린 것입니다. 놀라운 성과이지만 전체 그림에서는 빙산의 일각입니다. 리누스의 진짜 업적은 수천 명의 개발자들이 협업하도록 이끈 것입니다. 그 외에도 파이썬을 만들 개발자, 스티브 잡스, 빌 게이츠는 모두 커뮤니티들을 이끌어 집단적 성과물을 만들어냈습니다. 하지만 성공은 리더에게 몰아주어 만들어지는 경향이 있습니다. 여러분들은 매우 똑똑한 사람들이나 진짜 천재는 드뭅니다. 요새는 천재든 아니든 사회성이 부족한 사람은 팀원으로 적합하지 않습니다. 구글에서는 업무의 대부분이 천재 수준의 지..
-
1장 - 소프트웨어 엔지니어링이란?책 요약정리/구글 엔지니어는 이렇게 일한다 2023. 10. 13. 00:01
프로그래밍과 소프트웨어 엔지니어링의 차이 책에서는 프로그래밍과 소프트웨어 엔지니어링을 나누어 소개합니다. 소프트웨어 엔지니어링을 수행할 때 프로그래밍이 큰 비중을 차지합니다. 프로그래밍 = 개발 소프트웨어 엔지니어링 = 개발 + 수정 + 유지보수 과연 이 코드의 예상 수명은 얼마일까? 가장 중요한 포인트는 지속가능성이다. 그러면 프로그래밍 < 소프트웨어 엔지니어링일까? 무엇이 값지다고 판단할 수는 없습니다. 며칠 동안 사용될 프로젝트에 통합 테스트나 지속적 배포(CD)는 필요 없을 수 있습니다. 시간과 변경 구글 검색, 리눅스 커널, 아파치 HTTP 서버는 반영구적으로 살아남는 성공한 프로젝트들입니다. 소프트웨어의 기대수명이 수십년에 달하게 되면 업그레이드가 필요해집니다. 하지만 점진적 업그레이드가 아닌..
-
Spring Batch Skip Policy프로젝트/스프링 배치 튜토리얼 2023. 10. 12. 00:01
개요 Spring Batch를 실행하다가 예외가 발생하면 어떻게 되는지 알아보고, 안정적인 Batch Application을 만들기 위해서 어떤 방안이 있는지 알아보고자 합니다. 예외가 간헐적으로 발생하는 Batch Application 구성 @Profile("skip-job") @Configuration class SkipJobConfig( private val jobRepository: JobRepository, private val batchTransactionManager: PlatformTransactionManager, ) { @Bean fun skipJob(): Job { return JobBuilder("skipJob job", jobRepository) .incrementer(RunIdI..
-
Spring Batch 데이터베이스와 함께 사용하기프로젝트/스프링 배치 튜토리얼 2023. 10. 11. 00:01
개요 지난 글에서는 Job을 만들고 메모리에서 값을 생성해 내고 log를 write 해내는 방식으로 작업을 수행하였습니다. 이번글에서는 Database와 연동하여 값을 읽고 쓰는 작업을 수행해보고자 합니다. Gradle Dependencies 추가 dependencies { implementation ("org.springframework.boot:spring-boot-starter-data-jpa") } jpa 관련 의존성을 추가해주었습니다. TestEntity, TestRepository 세팅 및 데이터 생성 @Table(name = "test_table") @Entity class TestJpaEntity( @Id val id: UUID = UUID.randomUUID(), @Enumerated(E..