전체 글

· 개발
학교에서 진행하는 캡스톤에서 위치 기반 프로젝트를 진행하게 되어 해당 프로젝트를 위해 준비하였던 것을 이번 글을 통해 공유해보려 합니다. GIS(Geographic Information System)GIS는 위치 정보를 컴퓨터 데이터로 변환하여 효율적으로 활용하기 위한 정보시스템입니다.해당 시스템을 지원하는 데이터베이스로 MySQL GIS와 PostgreSQL PostGIS가 존재합니다. MySQL GIS보다 PostgreSQL PostGIS가 보다 더 좋은 성능을 보이고 보다 많은 공간 데이터를 위한 연산 함수를 지원하지만 데이터 베이스 종류로는 MySQL을 선택하였습니다.해당 프로젝트에서 공간 데이터를 처음 다루며 만날 문제에 대해 고민하고 해결하는 과정에서 아직 학습되지 않은 PostgreSQL은 ..
· 개발
와이파이 공유기의 관리자 페이지에서 제공하는 연결 기기 정보를 기반으로 연결된 기기, 연결 시간울 관리하는 프로젝트인 WifiObserver라는 프로젝트에서는 관리자 페이지에 접속하기 위해 쿠키 값을 획득하여야 했습니다.이를 위해서는 아래와 같은 행위가 필요합니다.공유기 관리자 페이지에 로그인한다.로그인 이후 페이지에서 setCookie(XXX) 형태의 값을 찾는다.setCookie(XXX)에서 XXX를 분리한다.간단히 구현할 수 있는 문제이지만 다양한 방법을 고려해 보았고 이번 글에서는 어떤 이유로 데코레이터 패턴을 활용하였는지 공유해보려 합니다. 하나의 메서드public class CookieResolver { public String resolve(String source) { // set..
· 개발
스프링 부트 프로젝트에 대한 경험이 누적되며 단순히 기능을 구현하는 것뿐만이 아닌 더 좋은 코드를 작성하기 위해 고민할 수 있었습니다.인터페이스를 코드에 적용하는 것은 구체 클래스에 의존하지 않는 느슨한 결합을 통해 유연한 확장과 수정을 가능하게 해 줍니다.이러한 장점을 가지고 있지만 코드에 인터페이스를 적용하는 것은 복잡도를 높일 수 있고 이에 프로젝트에 따라 인터페이스가 필요한 클래스를 판단하고 적용하는 것이 중요하다 생각합니다.해당 글에서는 프로젝트를 수행 간 코드에 인터페이스를 적용하면서 느낄 수 있었던 "스프링 부트를 사용하며 인터페이스가 필요한 순간"에 대한 저의 생각을 공유하려 합니다. 제어가 필요한 순간제가 생각하는 스프링 부트를 사용하며 인터페이스가 필요한 순간은 "제어가 필요한 순간"입..
· 개발
엔티티 객체는 어떤 객체일까?변별할 수 있는 사물 - Peter Chen (1976)데이터베이스 내에서 변별 가능한 객체 - C.J Date (1986)데이터를 저장할 수 있는 어떤 것 - James Martin (1989)데이터가 저장될 수 있는 사람, 장소, 물건, 사건 그리고 개념 등 - Thomas Bruce (1992)엔티티에 대해서 데이터 모델과 데이터 베이스 권위자들은 위와 같이 정의한다고 합니다.즉, 엔티티 객체는 "비즈니스를 수행하기 위한 데이터를 저장하고 관리하기 위한 객체"라 할 수 있습니다. 이에 아래 UserEntity는 비즈니스를 수행하기 위한 데이터뿐만 아니라 행위까지 가지고 있음을 확인할 수 있습니다.public class UserEntity { // 비즈니스를 수행하기 위..
· 개발
약 3개월 무료로.. 해당 글에서는 CheckWith이라는 체크 리스트를 공유할 수 있는 사이드 프로젝트를 만들며 구성한 약 3개월 무료 인프라 구성을 소개하려 합니다. 최종 인프라 구성 미리 보기 GCP(Google Cloud Platform)인프라 구성을 위해서 GCP를 사용하였습니다.GCP에서는 3개월간 제한 없이 사용할 수 있는 300달러의 크레딧을 제공합니다.3개월이라는 기간의 제한이 존재하지만 사이드 프로젝트의 지속 여부를 판단하기에는 충분한 시간이라 판단하였습니다. DB프로젝트를 경험하며 DB가 인프라 비용에 있어 많은 비중을 차지한다는 것을 경험한 바 있기에 DB를 가장 먼저 구성하였습니다. GCP에서는 위와 같이 MySQL, PostgresSQL, SQL Server 3가지의 데이터베이스..
· 개발
WifiObserver에서 서비스에 등록된 기기가 와이파이 공유기에 얼마 동안 연결되어 있는지 파악하는 기능을 구현하였습니다.해당 기능 구현을 위해서는 공유기 관리자 페이지를 주기적으로 크롤링하여 공유기 관리자 페이지가 제공하는 연결 기기 목록을 조회할 필요가 있습니다.해당 글에서는 Spring Batch를 활용해 해당 기능을 어떻게 구현하였는지 소개하려 합니다. 배치 실행Cron클라우드 서버리스(AWS Lambda)APIQuartz SchedulerCI 서비스 (Jenkins / Teamcity 등등)Spring Batch는 아직 확실한 표준 관리 도구가 없어 위와 같이 다양한 방법을 사용할 수 있다고 합니다.해당 프로젝트에서는 Quartz Scheduler를 활용하여 배치 실행을 구현하였습니다.다양한..
belljun
belljundev