분류 전체보기

· spring
1. 테스트의 가치와 필요성스프링이 개발자에게 제공하는 가장 중요한 가치 중 하나는 객체지향과 테스트입니다. 테스트는 코드가 예상대로 정확히 동작하는지 확인하여 개발자에게 "모든 결함이 제거되었다는 확신"을 주며, 디버깅 시간을 단축시켜 줍니다. 잘 설계된 좋은 코드는 테스트하기 좋은 코드가 좋은 코드형태로 보이고 반대로 테스트하기 불편하게 설계된 코드는 좋은 코드라고 보기 어렵습니다. 따라서 충분한 검증이 없는 테스트는 없는 것보다 나쁘므로, 부정적인 상황을 먼저 테스트하는 단위 테스트를 작성하는 습관이 중요합니다. 2. UserDaoTest 다시 보기와 단위 테스트기존의 웹을 통한 테스트 방식은 모든 레이어를 다 만든 후에나 가능하며, 서버 설정 등 외부 요인의 영향을 많이 받아 오류 대응이 어렵..
· spring
객체 생성의 역전 - 팩토리 패턴토비의 스프링에 나오고 있는 내용에서 나오는 패턴 중 팩토리 패턴이라는 개념은 객체의 생성의 책임을 팩토리라는 클래스에 위임함으로 전략 패턴과 템플릿 메소드 패턴 등으로 분산되는 객체를 한 곳에서 관리할 수 있게 해줍니다. 왜 이전에 역활과 책임에 따라 분리해두었던 객체를 다시 한 곳에 모아두는 이유가 무엇일까요?팩토리 패턴의 예시이전에 설명했던 알림 모듈을 예시로 들자면 유저에게 알림을 발송할 때 알림톡으로 알림을 보낼 때와 앱 푸시로 알림을 보낼 때 그리고 이메일로 알림을 보낼 때에는 주입받아야 하는 객체가 전부 다릅니다. 아래의 코드를 보면 쉽게 이해할 수 있을 것입니다.// 전략 인터페이스public interface NotificationSender { vo..
· spring
중복된 코드의 문제토비의 스프링 1장에서는 DAO의 관심사를 분리하고, 중복된 코드를 한 곳에 모아 상속을 통해 구현하는 방식을 설명합니다. 오래된 개념이지만 현재까지도 자주 사용되는 패턴입니다.예를 들어 알림 발송 모듈을 만든다고 가정해봅시다. 아래 코드에서 사용자 조회와 로그 저장 로직이 각 메서드마다 반복됩니다.만약 사용자 조회가 다른 마이크로서비스 호출로 변경되거나, 로그 저장소가 RDB에서 NoSQL로 바뀐다면 모든 메서드를 수정해야 합니다. 이것이 관심사가 분리되지 않았을 때 발생하는 문제입니다.// 중복이 많은 초기 코드public class NotificationService { public void sendKakaoAlimtalk(String userId, String message..
· JAVA
JVM의 1장의 주제는 JVM의 역사를 시작부터 차근차근 설명해주면서 JVM이 어떤 배경으로 발전을 해왔는지 어떤 문제를 해결하려고 했는지 등을 소개해주면서 회사와 단체와의 갈등, 오픈소스 커뮤니티와 회사와의 갈등 사례들을 소개해주면서 JVM이 생각보다 안정적으로 발전해온 것이 아니라 여러 고난과 혼돈 속에서 만들어진 기술이라는 것을 알 수 있었던 챕터였습니다. 자바의 버전의 역사의 변곡점1. 성능의 혁명: Java 1.3 (HotSpot VM 기본 탑재)핵심: JIT 컴파일러(HotSpot) 도입"자바는 느리다"는 꼬리표를 떼고, C++에 준하는 성능을 확보하여 기업용 서버 시장을 장악하기 시작한 시점입니다.JIT 컴파일러가 가진 강점핫스팟(중요): 모든 언어를 기계어로 바꾸는 건 비효율적이기 때문에 ..
· 일상
25년 한해동안 저는 사이드 프로젝트로 Python을 기반으로 챗봇을 만드는 것도 경험해보고 Typescript로 풀스택으로 실무 개발을 해보는 경험까지 다양하게 경험을 해보았습니다. AI와 함께라면 해결하지 못하는 문제는 없을 거라고 생각했었고 실제로 막힐 때마다 AI의 도움을 받아 쉽게 해결했기 때문에 이제 개발자는 시스템 디자인 역량이 더더욱 중요해질 거라 생각했습니다. 하지만 이는 저의 착오였습니다. 작동하는 코드와 어울리는 코드의 차이자바에서 전달해야되는 파라미터가 많은 경우에는 빌더 패턴을 자주 활용합니다. 이는 가독성을 높일 뿐만 아니라 코드를 작성할 때의 실수또한 줄여주는 좋은 예시죠. 하지만 타입스크립트에서는 빌더패턴보다는 인터페이스를 활용하여 파라미터를 전달하는 구조로 많이 활용합니다...
타입스크립트는 왜 컴파일 레벨에서 강제하지 않을까?이펙티브 타입스크립트를 읽다가 문득 궁금했다.“왜 타입스크립트는 자바나 C#처럼 컴파일 레벨에서 타입을 완전히 강제하지 않을까?”이 질문의 답을 찾다 보니, 단순한 기술적 이유가 아니라 웹이라는 플랫폼의 철학과 자바스크립트의 역사적 맥락이 깊게 얽혀 있었다.1. 웹 브라우저 환경의 철학: “부분적 실패를 견딘다”자바스크립트를 해본 사람이라면 알겠지만, 자바스크립트는 그 어떤 실수에도 관대하다.undefined를 덧셈해도 죽지 않고, 엉뚱한 타입을 넘겨도 그냥 실행된다.이런 유연함(혹은 관대함) 은 단순한 결함이 아니라, 웹 환경의 생존 전략이었다.웹의 기본 철학은 “부분적 실패를 견딘다(Tolerate partial failure)”이다.이미지 하나가 깨..
ri5
'분류 전체보기' 카테고리의 글 목록