자바 38

카카오 메뉴리뉴얼 자바

https://programmers.co.kr/learn/courses/30/lessons/72411# 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 진짜 겁나 힘들었다 문제를 보고 dfs로 해야 할 거 같은 느낌이었다 그래서 일주일 동안 풀었다 순서 메뉴 별로 분리-> 개수 별로 모든 조합 가져오기->개수별 가장 높은 수구 하기->가장 높은 수인 메뉴를 추려내기-> 정렬-> 리턴 하이라이트는 -개수 별로 모든 조합 가져오기 문자열 길이가 같다면 return->메뉴 겹치지 않게 조건 확인-> for문으로 재귀..

카카오 문자열 압축 자바

와 level2시작부터 매웠다 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 아예 모르겠으면 포기하고 안해~ 하겠는데 알거같은데 해서 오기가 더 생겼던거 같다 sql limit 같은 방식을 생각하며 풀었다 초기 최대 글자 수 할당 int answer = s.length(); 자르기는 최대 절반 까지만 하면된다 for(int i=1;i

카카오 level1 전체

이틀 정도 걸려서 카카오 레벨 1 문제를 다 풀었다 레벨 1 이여서 그런지 무난히 풀었다 다만 한 문제가 이해가 안 가는 부분이 있었다 1. 인형 뽑기 -인형이 뽑히는 순서를 잘못 이해했다 https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 처음에는 1=0,5=1,3=1,5=3,1=0,2=1,4=2 이렇게 각 배열 라인 끝에서 빼는 줄 알 았는데 ㅋㅋㅋ 알고 보니 모양자체가 인형뽑기 통 그 자체였다 ㅋㅋ 1=4,5=3,3=1,5=1,2=2..

제네릭+optional을 이용하다

학원 프로젝트가 막바지에 도달했다 좋은 건지 나쁜 건지 모르겠지만 종이 한 장 차이정 도로 내가 조금 더 잘해서 장바구니/결제시스템/관리자 페이지 대부분을 맡았다 시간이 없는 관계로 매우 기능 위주로 백엔드에 집중해 구현 중이다 다른 팀원들도 도와줘야 해서 dto사용은 물론 본의 아니게 하드코딩 그 자체를 하고 있다... mybatis를 사용하는 데 사용할 때마다 jpa와 달리 optional로 받을 수없었다 그래서 생각한 게 optional을 결과 위에 씌어줘야 한다고 생각했다 다행히 잘 작동했다 예제 코드 Mapmap=Optional.ofNullable(buketDao.findByBid(bid)).orElseThrow(()->utillService.makeRuntimeEX("존재하지 않는 장바구니 품..

Springboot 예약+결제시스템 리펙토링!

1. 아임 포트에서 가상계좌 테스트를 지원한다 2. 부트 페이는 이제 없어도 된다 3. 구조변경이 불가피 해졌다 abstract클래스 이클래스는 결제 검증이 끝나고 예약 dto에게 전달해줄 변수들을 들고 있다 nomalPaymenrtClazz 추상 클래스를 상속받아 일반 결제 결제 검증 후-> paidproduct테이블에 insert 할 때 사용된다 현재는 paymethod하나이지만 나중에 더 많아질 때를 대비해 만들어 놓았다 vbankpaymentclazz 가상계좌 요청 시 사용되는 클래스이다 역시 추상 클래스의 상속 후 사용한다 vbank테이블에 insert 할 때 사용된다 reservationService 흐름도 바뀌었다 결제 검증 우선 후 paymentabstract paymentabstract=..

Springboot 인증 시스템 리팩토링!(2) with interface

이전소스 https://cordingmonster.tistory.com/107?category=1038496 Spring boot Jwt+휴대폰인증!(1) with Coolsms 이제 전화인증을 구현할 건데 아임 포트를 사용하려 했으나... 다날 서비스를 신청해야 하고 다날 서비스 신청에는 사업자등록증이 필요해서 허접하지만 직접 구현했다! 1. 세션 인증을 요청-> cordingmonster.tistory.com 검증 로직을 리팩터링 했으니 이제 보내는 로직도 리팩터링 해보자! 트랜잭셔널 어노테이션을 다시 사용하였다! https://cordingmonster.tistory.com/133 Spring boot 예외처리! with Transactional kim's cafe에이어 kim's shop을 만드는..

Springboot 인증 시스템 리팩토링!(1) with interface

이전 글 https://cordingmonster.tistory.com/108?category=1038496 Springboot Jwt+휴대폰인증!(2) 인증번호 확인 이제 인증번호가 맞는지 안 맞는지 판별해보자 프런트 js json형태로 번호/입력 전송 let data=JSON.stringify({ "phoneNum":""+document.getElementById('phoneNum').value+"", "tempNum":""+document.ge.. cordingmonster.tistory.com 고민이 있었다 너무 비슷한 로직이었다 문자인증/전화인증 로직인데 둘 다 인증번호를 받아서 검사해주면 됐었다 그래서 떠오른 아이디어 아 이럴 때 인터페이스를 써볼까..? 하고 만들었다 interface ema..

첫 팀프로젝트

국비 학원 진도가 자바-> DB->JAVAFx로 왔다 처음 보는 시스템이였다 프런트 엔드를 다룬다는 느낌이 강했다 5명의 팀원이 됐고 주제는 PT예약 시스템을 구현하기로 했다 다행히 토이 프로젝트에서 구현해봤는데 그건 당일이었다.. 그렇지만 어차피 해야 할 거 예약 파트로 들어갔다 팀원 중에 경험자가 나봤게 없기도 했다 javafx 수업에 대해서는 개인적으로 굳이...? JAVAFX는 완벽히 모르지만 어쨌든 구현했다 조금만 더 손본 뒤 로그인 파트가 끝나면 합치면 될 거 같다 시작해보자

javaFx/달력 2021.08.08

Springboot 문자인증/전송!(2) with coolsms And HttpSession

이메일 인증과 딱히 다르진 않다 핸드폰으로 인증번호를 전송하자! html js service from이 보내는 번호인데 실제 번호여서 지워놨다 가짜 번호로 테스트를 해봐야겠다 없는 번호도 가는지 안 간다 테스트 해봤는데 없는 번호로 하면 안간다 restcontroller f(principaldetail.getUsername()!=null) 로그인 여부 검사를 하고 (아마 비로그인 시 알아서 예외를 일으켜주는 걸로 아는데 혹시 몰라서 걸었다) String smsRandNum=utilservice.GetRandomNum(6); 6자리 인증번호를 만들고 httpSession.setAttribute("phoneNum", phone.get("phone")); httpSession.setAttribute("smsR..

Springboot 회원탈퇴!(1)

예약/결제/게시글/댓글/인증 구현이 얼추 끝났다 이제 회원 탈퇴를 만들 건데 이전의 함수들을 이용하면 된다 답글 서비스는 아직 구현하지 않아서 나중에 답글 서비스까지 구현하면 한 번 더 와서 추가해 줘야 할 거 같다 일단 프런트 마이페이지에 링크를 추가해주고 controller html js 결과 진짜 기능만 되는 허접한 페이지가 완성되었다 서버 service 로그인을 해야 가능한 기능인데 혹시 몰라서 if(confrimEmail(email)){ 존재하는 아이디인지 검사를 해주고 if(bCryptPasswordEncoder.matches(userdto.getPwd(),uservo.getPwd())){ 비밀번호가 일치 한지 검사해주고 if(reservationservice.getReservationByEm..