본문 바로가기

분류 전체보기

카카오 2021 기출 - 광고삽입 실패1 def strToTime(str): str = str.split(':') return int(str[0]) * 3600 + int(str[1]) * 60 + int(str[2]) def timeToStr(time): h = time // 3600 time = time % 3600 m = time // 60 sec = time % 60 return f'{h:0{2}d}:{m:0{2}d}:{sec:0{2}d}' def solution(play_time, adv_time, logs): play_time = strToTime(play_time) adv_time = strToTime(adv_time) timeArr = [0] * play_time logs = list(map(lambda x: x.split.. 더보기
스프링 데이터 JPA - 사용자 정의 클래스, Auditing, MVC 페이징 사용자 정의 레포지토리 사용자 정의 레포지토리 만드는 법 1. 인터페이스 만들기 public interface MemberCustomRepo { List findMemCustom(); } 2. 구현체 만들기 - 이름을 맞춰줘야함(설명은 아래에) @RequiredArgsConstructor public class MemberRepositoryImpl implements MemberCustomRepo{ private final EntityManager em; @Override public List findMemCustom() { return em.createQuery("select m from Member m").getResultList(); } } 3. 스프링 데이터 jpa 레포지토리에 1에서 만든 인터페.. 더보기
8월 4주차 계획 보호되어 있는 글입니다. 더보기
카카오 2021 기출 - 합승 택시요금 [워셜 플로이드] def solution(numOfPoint, S, A, B, edges) : costs = [[0 if i==j else 1000000000 for i in range(numOfPoint)] for j in range(numOfPoint)] for edge in edges: costs[edge[0]-1][edge[1]-1] = edge[2] costs[edge[1]-1][edge[0]-1] = edge[2] for middlePoint in range(numOfPoint): for start in range(numOfPoint): for end in range(numOfPoint): if middlePoint != start and middlePoint != end and start != end: cos.. 더보기
스프링 데이터 jpa 기본 기능정리 파라미터 바인딩 파라미터 바인딩에는 위치 기반과 이름 기반이 있다. 이름기반을 사용하자!! (유지보수와 가독성이 좋음) @Query("select m from Member m where m.username=:username and m.age = :age") List findUser(@Param("username") String username, @Param("age") int age); 컬렉션을 파라미터로 넘길때도 아래와 같이 가능하다. @Query("select m from Member m where m.username in :names") List findByNames(@Param("names") List names); 반환값 & 페이징과 정렬 List findMemlistByUsername(Stri.. 더보기
스프링 데이터 JPA 기초 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%8B%A4%EC%A0%84/dashboard 실전! 스프링 데이터 JPA - 인프런 | 강의 스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼, 리포지토리에 구현 클래스 없이 인터페이스 만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제공합니다 www.inflearn.com 위 강의를 들으며 정리한 글입니다. 스프링 데이터 jpa 기존의 jpa 레포지토리와는 다르게 스프링 데이터 레포지토리를 만드는 방법은 그냥 인터페이스를 하나 만들기만 하면 된다. public interface TeamRep.. 더보기
var를 쓰면 안되는 이유 es6 (es 2015)가 등장하기 이전에는 자바스크립트에서 변수를 선언하기 위한 방법은 var 밖에 없었다. let과 const는 es6에서 등장했다. let, const : 블록 스코프 var : 함수 스코프 var에는 다음과 같은 문제들이 있다. 1. 함수스코프 함수스코프이기 때문에 다음과 같은 문제가 있다. function abc() { for(var i=0;i 더보기
PRG (Post Redirect Get) 상황 사용자가 상품을 구매한 상황. 이 때 사용자의 마지막 요청은 POST로 상품 구매 요청이다. 이 상태에서 그대로 사용자가 새로고침 버튼을 누르게 되면 이전의 요청이 그대로 나가서 물건을 한번 더 구매하는 상황이 발생하게 된다. 이를 방지하기 위한 것이 PRG 이다. PRG (1) 구매자가 상품을 구매하는 화면에서 주문 버튼을 클릭한다. POST메소드를 사용한 요청이 전송된다. (2) 서버는(1)의 요청에서 받은 상품 구매 처리를 DB에 반영한다. (3) 서버는 응답값으로 리다이렉트를 하도록 해서 상품 구매 완료 화면을 표시한다. (4) 리다이렉트에 의해 브라우저가 상품 구매 완료 화면을 표시하도록 서버에 요청을 보낸다. 이때 요청는 GET메소드를 사용한다. (5) 서버가 상품 구매 완료 화면을 보내.. 더보기
스프링 MVC - 응답데이터와 메시지 컨버터 응답 데이터 생성 스프링 응답 데이터타입 3가지 👉 정적 리소스, 뷰 템플릿, http 메시지 바디 1. 정적 리소스 스프링 부트에서 제공하는 정적 리소스의 디렉토리 /static /public /resources /META-INF/resources static이 아닌 public 이라는 이름의 폴더를 만들어서 열어보면 잘 열린다..!! 2. 뷰템플릿 동적인 html 제공시 뷰 템플릿 사용한다. 뷰 템플릿을 거쳐서 html이 만들어지고 뷰가 응답을 만들어서 전달한다. 스프링 부트에서 뷰 템플릿 기본 경로 : src/main/resources/templates @RequestMapping("/response-view-v1") public ModelAndView resView1() { ModelAndView.. 더보기
스프링 MVC - 요청 데이터 요청 데이터의 형식 복습! http request 메시지의 데이터 형식은 3가지이다. 1. GET - 쿼리파라미터 2. POST (html form) 3. http message body GET, POST Get 방식과 html form의 Post는 둘 다 형식이 같으므로 구분 없이 조회 가능하다. 이것을 요청 파라미터 조회라고 한다. 이전에 알아봤던 방법은 HttpServletRequest 객체를 통해 조회하는 방법이다. @RequestMapping("/request-param") public void reqV1(HttpServletRequest request, HttpServletResponse response) { String username = request.getParameter("usernam.. 더보기