전체 글 133

앞으로 공부하고 포스팅할 목록

[ 토비의 스프링 ] 1. 서비스 추상화 PSA - (317p) 2. 스프링 AOP - (401p, 475p ) 3. POJO 프로그래밍 - (732p) 마음 같아선 처음부터 하나씩 정독하고 싶지만, 시간이 없다.. 궁금한 점들부터 공부하고 사이드 프로젝트 진행하면서 VOL.2를 참고할 예정이다. [ Java의 정석 ] 1. 추상클래스와 인터페이스 - (375p, 381p) 2. 예외 처리 - (414p) 3. 제네릭 - (670p) 4. 쓰레드 - (722p) Java의 정석 외에 Effective Java라는 책도 궁금하다. 기회가 되면 구입할 예정이다. [ 쉽게 배우는 운영체제 ] 1. 프로세스 제어 블록과 문맥교환 - (146p) 2. 스케줄링 - (193p, 201p, 212p) 3. 프로세스 ..

[알고리즘] 순서대로 작업하는 위상 정렬(Topology Sort)

✅ 위상정렬이란? : 순서가 정해져있는 작업 을 차례대로 진행해야할 때, 그 순서를 결정해주기 위해 사용하는 알고리즘입니다. 사이클이 없는 방향 그래프(DAG)의 모든 노드를 '방향성에 거스르지 않도록 순서대로 나열하는 것'을 의미합니다. 그렇다면 순서가 있는 작업의 예시를 통해 정확하게 이해하도록 하겠습니다. 위 그래프의 흐름을 보면 '조건'으로 해석할 수 있습니다. '튀기기'전에 반드시 '닭 손질하기'를 수행해야하고, 양념에 버무리기 전에 '후라이드'와 '양념 만들기' 작업을 수행해야 합니다. 위와 같이 여러 개의 순서가 정해져있을 때, 조건에 부합하는 일직선상의 순서를 찾아보겠습니다. 위상정렬 순서: 닭 손질하기 -> 튀기기 -> 후라이드 -> 양념 만들기 -> 양념에 버무리기 -> 무많이 -> 반..

[Spring] 스프링 IoC의 동작원리인 의존성 주입 DI

이전 포스팅에서는 어플리케이션 컨텍스트를 적용한 UserDao와 DaoFactory를 작성하며 스프링 IoC에 대해 알아보았습니다. 특히, 코드를 분리하고 확장하는 과정(객체지향적인 설계, 디자인 패턴 등)에서 자연스럽게 IoC를 적용하거나 그 원리로 동작하는 기술을 사용해보았습니다. 이번에는 스프링의 IoC에 대해 좀 더 깊게 들어가서 대표적인 동작원리인 의존성 주입(DI)에 대해 알아보는 시간을 갖겠습니다. 의존성 주입(DI)이란 오브젝트 레퍼런스를 외부로부터 제공(주입)받고, 이를 통해 다른 오브젝트와 동적인 의존 관계가 만들어지는 것이 핵심입니다. ✅ 런타임 의존관계 설정 1. 의존관계 먼저 2개의 클래스가 의존관계에 있다고 가정할 때, 항상 방향성을 부여해줘야 합니다. 아래 그림은 두 클래스의 ..

[Spring] 하나의 오브젝트로! 스프링에서의 싱글톤(Singleton)

지금까지 스프링의 IoC를 적용한 DaoFactory와 UserDao를 구현했습니다. 이번에는 IoC를 적용하기 전과 후의 차이점을 확인하고, 싱글톤에 대해 알아보는 시간을 갖겠습니다. 먼저, 앞에서 작성했던 DaoFactory를 다시 한번 사용하겠습니다. 만약, 어플리케이션 컨텍스트를 적용하기 전의 DaoFactory에 있는 UserDao() 메서드를 두번 호출하고 주소값을 출력하면 어떻게 될까요? DaoFactory factory = new DaoFactory(); UserDao dao1 = factory.userDao(); UserDao dao2 = factory.userDao(); System.out.println(dao1); System.out.println(dao2); // spring.dao..

[Spring] 스프링의 핵심! 제어의 역전(IoC)

앞선 포스팅에서 DAO를 활용한 코드의 분리와 확장에 대해 알아보았습니다. IoC에 대한 이해를 돕기 위해 초기 DAO코드를 예로 들어보겠습니다. 초기 UserDao를 보면 테스트용 main() 메서드는 UserDao 클래스의 오브젝트를 직접 생성 및 만들어진 오브젝트의 메서드를 사용. UserDao는 자신이 사용한 ConnectionMaker의 구현 클래스를 자신이 결정하고, 그 오브젝트를 필요한 시점에 생성하여 각 메서드에 맞게 사용. 모든 오브젝트가 능동적으로 자신이 사용할 클래스를 결정하고, 언제 어떻게 그 오브젝트를 만들지 스스로 관장합니다. 이렇게 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조입니다. 제어의 역전(IoC)이란 이런 제어 흐름의 개념을 거꾸로 뒤집는 것을 의미합니다. 지난 포..

[Spring] 유연하고 확장하기 쉬운 코드 만들기! 코드의 분리와 확장

Spring 프레임워크에서 가장 많은 관심을 두는 대상은 오브젝트 즉, 객체입니다. 어플리케이션에서 오브젝트가 생성되면 다른 오브젝트와 관계를 맺고, 사용되고, 소멸되기까지 전 과정을 진지하게 생각해볼 필요가 있습니다. 특히, 오브젝트의 기술적인 특징과 사용 방법 등을 고민하는 설계 단계부터 시작하여 디자인 패턴, 리팩토링, 단위 테스트와 같은 구현 단계까지 다양한 응용 기술과 지식이 요구됩니다. 이번 포스팅에서는 DAO코드를 작성하며 오브젝트의 설계과 구현, 개선 방향까지 단계적으로 나아가는 시간을 갖겠습니다. 📢DAO란? DB에 접근하여 데이터를 조회하거나 수정하는 기능을 담당하는 오브젝트 ✅ DAO 코드 작성하기 먼저, 예제로 사용될 코드를 작성하겠습니다. 사용자 정보를 저장할 User클래스를 아래..

[안드로이드] 우산 챙겨주는 알람시계

💻 프로젝트 페이지와 구조 📚 개발 도구 Android Studio Room Java XML Open API 🧑 전체적인 개발 과정 기존 MVC패턴으로 작성한 코드 리팩토링 MVVM 패턴과 LiveData 활용, observer패턴으로 최신 데이터 유지 DataBinding으로 데이터와 View를 매핑 및 Java 코드 간결화 비동기 처리로 사용한 AsyncTask를 RxJava로 교체, API 30이상부터 AsyncTask deprecated. 백그라운드에서 멀티 스레드와 동기화(synchronized) 작업을 통해 알람 기능 구현 알림음 설정 시, 내장 벨소리와 외부 저장소의 노래 목록을 Fragment로 구현 구글 광고(Admob) 템플릿을 커스터마이징하여 'Native 고급 광고' 배치 날씨에 따..

구입할 책들

- 쉽게 배우는 운영체제 다독한다는 생각으로 구입하자! https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=153419028 쉽게 배우는 운영체제 컴퓨터 관련 학과 학생을 대상으로 운영체제의 구조와 원리를 설명한 책이다. 주요 개념은 일상생활의 사례를 통해 쉽게 이해하고, 개념 간의 관계는 다양한 그림과 표로 명확히 정리할 수 있다 www.aladin.co.kr - 토비의 스프링 3.1 아직 스프링 부트와 시큐리티 JPA, H2, JUnit, Lombok정도만 활용할 줄 안다. 스프링에 대해 더 깊게 알고 싶은 사람들에게 추천한다는 도서! https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=19505747 토비의 스프링 3.1..

[SSAFY] 2차 프로젝트 - 영화 추천 서비스

📢 SSAFY 정책상 해당 프로젝트의 Github 저장소는 private입니다. 💻 프로젝트 페이지와 구조 🧑 맡았던 역할 명세서별로 나누어 진행 백엔드: Django 프론트엔드: Vue.js 알고리즘: Kmeans-clustering, KNN, 데이터 가공 💪 기여한 점 유사한 데이터끼리 분류해주는 Kmeans-clustering으로 데이터 군집화(영화, 유저) 신규 데이터를 기존에 형성된 군집으로 분류해주는 KNN 알고리즘 구현(신규 영화, 신규 유저 대상) 위의 2가지 알고리즘으로 유사한 영화를 추천해주는 '추천 서비스' 완성 Python으로 100만 개의 평점 데이터를 가공하여 유저들의 취향 파악, '유저별 선호하는 장르 순위'라는 새로운 데이터 구축, 이를 기반으로 장르 기반의 '맞춤형 서비스'..

[SSAFY] 1차 프로젝트 - 여행 정보 제공 서비스

📢 SSAFY 정책상 해당 프로젝트의 Github 저장소는 private입니다. 💻 프로젝트 페이지와 구조 🧑 맡았던 역할 백엔드: Springboot와 Mybatis로 Rest API 제작, Swagger로 API 문서화 및 테스트 진행 데이터베이스: MariaDB를 기반으로 HeidiSQL 툴에서 DB 구축/관리 💪 기여한 점 Controller, Service, Dto, Dao에 따라 Rest API 제작 Mybatis로 분산된 쿼리문을 XML기반으로 한번에 관리 Springboot에 Swagger를 적용하여 API를 손쉽게 테스트하고, 팀원들과 문서화된 API 공유하며 효율적인 협업을 이끌어냄 ✅ 아쉬웠던 점 비즈니스 로직을 Service에서 구현해서 웹 계층간의 코드 분리를 못함 쿼리문을 작성하..