https://www.acmicpc.net/problem/14442 문제 설명보다는 키포인트를 짚어보겠다. 1. 벽을 부수고 이동한다는 의미기본: 2차원 배열에서 상하좌우로 이동하며 최단 경로를 찾아간다. 응용: k번 만큼 막혀있는 길인 1을 뚫고 지나갈 수 있다. => K번 만큼 길을 뚫고 가는 상태를 visited 배열 상에 나타내야 한다. 어느 분의 말에 따른다면 뚫고 간 상태와 안 뚫고 간 상태를 나타내기 위해서는 차원이 늘어야 한다고 말을 한다. 말이 어렵긴 한데, 자연스럽게 생각해보면 좋을 것 같다.2. Enum 사용enum RoadType { ROAD, BLOCK }; 회사에 취직하기 전엔 코테에서 사용하지 않았던 문법인데 더 알아보기 쉽지 않나 싶어서 써보았다.3.배열의 크기를 미리 선언 ..
객체지향 5 원칙이라해서 프로그램이 견고하며 고치기 쉬운 상태가 된다는 뭐.. 그런 거다. 그런데 이 원칙을 막상 실제 프레임워크를 이용하는, 예컨데 스프링 부트에서 적용하려고 한다면 막막하거나 그런 코드를 본 적이 없지 않은가? 나는 이런 느낌을 이벤트 관련 서비스 개발을 맡았을 때 느꼈다. 첫 번째는 기간 내 1회 참여였으나 이후 1일 1회 참여도 가능하냐는 요건이었다. 처음 코드와 테이블 설계 자체가 기간 내 1회 참여였기에 곤란하다는 느낌도 있었다. 하물며 2가지 요구사항이 시간을 두고 들어와서 기존 코드를 고치는 데 겁이 났었다. 하지만 이 문제는 간단하게 Api의 로직 내 If문 추가로 끝난다. 그 이후 요건이 또 들어왔다. 원래 이벤트 참가 시 참가 기록 및 쿠폰 발급이있다. 새로운 기능인 ..
이전 글: https://koolreview.tistory.com/121 Spring DI 방법론https://susuhan.notion.site/Spring-DI-6113d9eefba446c99413d1323abe9276 - 이쁘게 보기 - Spring DI 방법론 글의 목적 필드 의존성 주입과 setter 의존성 주입, 생성자 의존성 주입에 관한 차이를 알아가기 susuhan.notion.sitkoolreview.tistory.com 예전에 DI에 대해 정리했었다. 그런데 회사 내에서 인터페이스를 사용하지 않고 있었다. 실제 Class만 이용해서 구현하고 있었다. 그런 이유는 하나의 인터페이스에 하나의 구현체만 존재하는 일종의 1대 1 구조로 되어 있는 경우가 많았기 때문이었다. 인터페이스를 쓰는 ..
이전 글: 웹 최적화 캐시 Etag, Cache-Control 웹 최적화 캐시 Etag, Cache-Control캐시 전략은 클라이언트와 서버에 각각 적용할 수 있다. 중요한 점은 서버에 I/O Call를 발생시키지 않아야 좋은 것이다. 서버에서 Redis나 Ehcache 활용하거나, 아니면 DB 수준에서 캐싱을 사용하든koolreview.tistory.comhttps://www.npmjs.com/package/sharp sharpHigh performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images. Latest version: 0.33.5, last published:..
캐시 전략은 클라이언트와 서버에 각각 적용할 수 있다. 중요한 점은 서버에 I/O Call를 발생시키지 않아야 좋은 것이다. 서버에서 Redis나 Ehcache 활용하거나, 아니면 DB 수준에서 캐싱을 사용하든가 등등 서버단에서도 지원할 수 있는 방법은 많다. 하지만 중요한 건 사용자가 Call를 요청의 수가 적으면 서버단의 CPU를 쓰지 않을 수 있다. 그런 기법의 예로는 디바운싱도 있다. 디바운싱은 화면의 UI를 변경을 억제하는 데 쓰일 수도 있지만 Call을 여러 번 쏘지 않도록 유도할 수도 있다. 클라이언트 단, 아니 Http Cache에 대해 소개해보려고 한다.우린 결국 Http Call를 무조건 요청한다. 이는 Html, css, Js 등 모든 리소스를 받을 때 모두 통용된다. 이런 Http ..
IT 서적은 일반 책과 다르게 만원부터 비싸면 6만원까지 넘어가는 경우가 있다. 꽤나 비싸서 이걸 어떻게 다 사서 보기도 애매하고, 도서관에 빌려서 보기도 애매하다. 또 ebook을 빌려서 볼 수 있는 밀리의 서재나 리디북스도 거의 책이 없어서 보기가 어렵다. 학교 도서관에 꾸준히 요청해서 책을 늘려나갈 수도 있겠지만 오래 걸린다.학교에서 오리얼리를 지원한다면 영문 서적을 공짜로 볼 수도 있다.IT 서적 신간을 무료로 읽는 방법이 있다. 출판사에서 책을 출간하기 전 베타 리더를 모집하거나 출간 후 이벤트로 각 커뮤니티에서 랜덤으로 몇 명에게 책을 나눠주기도 한다. 또 랜덤 말고도 서평단을 모집하여 책을 주기도 한다. 각 차이점이 있는데, 먼저 베타 리더는 자신의 소속과 이름을 책에 남겨둘 수 있다. 어느..
매일 열심히 앱에 들어가서 적립금을 모으는 것은 아니지만, 대게 적립금 유효기간에 따라 최대 6천원까지 모은 적이 있다. 물론 종이 서적 구매 금액과 ebook 적립금이 섞이는 경우도 있지만 거의 6천원 모아서 살 수 있다. 아래는 지난 3개월 동안 모았던 적립금 내역이다.보통 적립금은 신간 서적이 올라오는 경우 별점을 부여하여 적립금을 얻을 수 있다.그리고 이벤트를 참여해서 얻고, 월 1회로 줄어든 앱 접속 금액도 얻을 수 있다.매주 금요일은 ebook 적립금을 최대 3000원까지 주는 적립금 이벤트도 있어서 할만하다.2024.7.27이벤트발급(온라인전용)쇼핑앱 푸시 광고 적립금(온라인 국내도서 1만원 이상 구매 시, 전자책, 업체직배송, 우주1,000 4,5002024.7.25이벤트발급(온라인전용)쇼..
회사에서 Node 기반으로 개발을 할 수 없는 경우, 기본적인 HTML, CSS, JS를 이용할 수 밖에 없고, Spring Boot를 이용 시 타임리프를 이용해서 개발을 할 수도 있습니다.해당 기술로도 왠만한 사이트는 구현 가능하고, 모바일 사이트의 경우 경량화를 위해서 일부러 바닐라 JS를 이용하기도 합니다. 하지만 간혹 여러 페이지를 하나의 싱글 페이지오 만들어야하는 기획서를 마주한다면 기존 방식으로 구현하는 것이 조금 어려울 수도 있습니다.하나의 Html에서 여러 페이지를 만들어야 하기 때문에 UI 렌더링 로직이 복잡해지고, 데이터 조작 관련 로직이 서로 엮여 읽기도 어렵습니다. 또한 두 렌더링 로직과 데이터 관련 로직 구분도 어려워 집니다.그런 어쩔 수 없는 상황에서 상태란 개념만 가져와 데이..