일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 데이터베이스
- I'm Sorry
- 딥러닝
- 버전관리
- 프로그래밍
- 알고리즘
- 프로그래밍언어
- 사이버보안
- 컴퓨터공학
- 데이터과학
- 네트워크보안
- 머신러닝
- 소프트웨어
- 네트워크
- 파이썬
- 데이터분석
- 디자인패턴
- 보안
- springboot
- 클라우드컴퓨팅
- Yes
- 자바스크립트
- 자료구조
- 웹개발
- 데이터구조
- 컴퓨터비전
- 소프트웨어공학
- 인공지능
- 컴퓨터과학
- 빅데이터
- Today
- Total
목록Kotlin (18)
스택큐힙리스트
복잡한 if-else 정글 대신, 사람이 읽는 문장 같은 규칙을 그대로 코드가 해석(interpret)해 실행하면 얼마나 깔끔할까요?Interpreter 패턴은 아주 단순한 문법(Grammar)을 클래스 구조로 표현하고, 그 트리를 순회하며 의미를 평가하는 방식입니다. 검색 필터, 권한 규칙, 프로모션 조건, 피처 플래그 같은 반복적으로 해석해야 하는 도메인 문장에 제격이에요.언제 쓰나? (한눈에)도메인 규칙을 문장처럼 표현하고 싶을 때 (ex. “가격 > 1만 AND 태그=세일”).같은 규칙을 여러 데이터에 반복 적용해야 할 때.문법이 작고 안정적일 때(중요!). 커지면 파서/컴파일러 영역이라 다른 접근이 낫습니다.큰 그림: 구성 요소Expression 계층: 규칙을 트리로 표현하는 인터페이스/클래스들..
객체 트리(파일 시스템, 문서 AST, UI 컴포넌트…)에 새로운 연산을 넣어야 할 때, 모든 클래스에 메서드를 추가하자니 코드가 산으로 가고, 상속도 이미 꽉 차 있다면?Visitor 패턴은 데이터 구조(Elements) 와 알고리즘(Visitors) 을 분리해 “클래스 손대지 않고 기능만 플러그인” 할 수 있게 해 줍니다.언제 쓰면 딱일까?컴파일러·파서: 구문 트리를 돌며 타입 체크, 코드 생성, pretty print 등 다양한 작업 추가UI 테스트 자동화: 위젯 트리를 방문하며 스냅샷·접근성 검사·통계 수집파일 탐색기: 디렉터리·파일 객체 구조에 압축, 용량 계산, 권한 검사 등 추가 기능 삽입게임 엔진: 씬 그래프에 충돌 검사, 렌더링, AI 패스 한 번에 붙이기로그·모니터링: 객체 계층을 돌며..
복잡한 앱을 만들다 보면 “방금 전 상태로 돌려줘!” 라는 요구가 꼭 생깁니다. 편집기에서의 Undo/Redo, 게임의 저장·로드, 그리고 상태 머신에서 특정 단계로 롤백 하기까지—모두 객체의 이전 상태를 안전하게 보관-복원하는 Memento 패턴으로 해결할 수 있습니다.Memento는 캡슐화를 깨지 않고 객체의 스냅샷을 외부에 보관했다가 원할 때 정확히 그 상태로 되돌리는 행위(Behavioral) 패턴입니다.언제, 왜 써야 할까?상태 머신 롤백: 복잡한 워크플로에서 오류가 나면 직전 단계로 안전하게 복귀.알림 시스템 취소: 푸시 예약을 “1분 안에 취소” 하도록 임시 스냅샷 보관.에디터 Undo/Redo: 사용자가 편집할 때마다 스냅샷을 스택에 쌓았다가 단계별 복원.핵심은 “상태 이력” 을 Care..
안드로이드 MVVM에서 MediatorLiveData 는 “여러 스트림을 하나로 묶는 허브”입니다. 소스 LiveData 들을 자유롭게 합치고, UI-State를 한곳에서 관리할 수 있죠. 그러나 잘못 쓰면 메모리 누수나 스파게티 ViewModel 로직을 만들기도 합니다. 여기, 실제 서비스 코드와 조회수 높은 한국 개발 블로그들을 참고해 뽑은 핵심 활용 팁 7가지를 정리했습니다.addSource / removeSource는 ViewModel 안에만 두자MediatorLiveData 는 내부적으로 addSource() 로 등록된 스트림을 관찰하고 removeSource() 로 해제합니다. 이 로직은 ViewModel 레이어에서 끝내야 UI 컨트롤러(액티비티·프래그먼트)가 가벼워집니다.버튼 활성화·폼 검증..