TIL 41

프로그래머스 코딩테스트 연습_문자열 내 p와 y의 개수 Java

가끔 내 실력을 모르겠다.. 레벨 2가 쉽다가도 레벨 1이 가끔 어려워서 내 자존감을 깎는다.. 그럴때면 정답률이 높은 문제를 풀면서 다시 재미를 느끼게 해줘야한다. 아무튼 이번에 푼 문제는 얼핏보면 for문을 돌려 카운팅을 해주면 되는 문제 같지만 그 방식으로 풀지 않아서 블로그에 남겨보려 한다. 문자열 내 p와 y의 개수 https://school.programmers.co.kr/learn/courses/30/lessons/12916?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 보면 p,P의 갯수와 y,Y의 갯수를 비..

TIL 2023.11.15

[TIL] 프로그래머스 숫자의 표현 효율성 테스트 실패ㅠㅠ

https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이중 for문으로 다소 좋아하지 않는 생김새의 코드를 짜보았다.. class Solution { public int solution(int n) { int answer = 0; for(int i=1; i

TIL 2023.11.03

[TIL] Stream API method 탐구2, 객체 리스트와 map, flatMap

예제를 하나 더 늘려봤다. List personList; @BeforeEach void setUp() { ... personList = List.of(new Person("박병호","30"), new Person("최원태","20"), new Person("김상수", "30")); } ... @Getter @Setter private static class Person { private String name; private String age; public Person(String name, String age) { this.name = name; this.age = age; } } 서른살의 박병호, 김상수와 스무살의 최원태를 Pesrson으로 만들어주었다. personList.stream() .map(..

TIL 2023.10.27

[TIL] Stream API method 탐구, map과 filter

일할 때 자주 쓰긴 하는데 사실 확실히 아는상태에서 쓰는게 아니라 얼레벌레 쓰는 것 같아서.. stream 연습문제를 풀기 전에 여러 케이스를 짜보면서 공부해봤다.. 실험대상은 맵으로 만들어진 리스트와 스트링 리스트 두개,, Map map = Map.of("두산","김현수","키움","이지영","샌디애고","김하성"); Map map2 = Map.of("키움","승리를 위한 함~성","두산","걸어간다 양의지","기아","기아의 김~주찬"); List mapList = List.of(map,map2); List stringList = List.of("Kiwoom","Hanhwa","Doosan", "heroes"); map : 기존의 stream 요소들을 변환하여 새로운 stream을 생성한다. // 1..

TIL 2023.10.24

[TIL] Spring Security 하나의 url에 두 개의 역할이 가능하도록 권한을 주고싶다

프로젝트에 관리자 페이지를 생성하면서, 역할 admin을 을 만들었다. admin 관리자 페이지의 url을 Security Config 클래스에서 역할을 부여한다. http ... .antMatchers("/admin/**").hasRole(Role.ADMIN.name()) .antMatchers("/api/v1/**").hasRole(Role.USER.name()) ... 이러면 admin이 붙은 페이지들은 role이 admin인 사용자만 접근할 수 있다. 그런데 문제가 생겼다. 글을 삭제하거나 탈퇴하는 등 기능이 들어가있는 url을 일반사용자에게 부여해놨기 때문에 admin 계정은 해당 기능들을 쓰지 못했다;; 바보아니야...? 그래서 열심히 검색을 해보았는데 계층 권한이라는 Role Hierarch..

TIL 2023.10.15

[TIL] 반성의 TIL... Junit MockMvc.perform 에서 session 사용하기..

에궁.. 오늘은 배운..것도 배운 거지만 진짜 반성해야된다. 어줍잖게 테스트코드를 써놓고 추가개발 할 때는 사용하지 않으면 빌드에 영향을 준다는 사실을 일하면서 내내 겪어놓고 또 이랬다~~ 원래 문제는 travis연동하면서 발견한거라 혹시나 했는데 결국 빌드시 테스트코드의 오류였다. 초기 개발때 사용한 부분인데, 추가개발 할 때는 포스트맨과 웹으로만 하다보니까 잊혀졌던..^^ 초기개발에 없던 parameter가 추가되면서 테스트코드에도 추가를 해줘야 하는데, 이게이게.. 세션을 가져오는 거라 조금 헤맸다ㅜㅜ @PutMapping("url") public Long update(@RequestBody Member member, @LoginUser SessionUser user) { return 1; } 이런..

TIL 2023.10.12

[TIL] login with oauth 2.0 페이지 수정해보기.. /login

글을 등록하거나 읽을 때 쓰는 이 페이지가 너무 거슬렸다... security 때문에 자유롭지 못하게 계속 로그인하라고 뜨는 것이지... 이것을 두고볼 수 없다.. 저 페이지를 예쁘게 가다듬거나 혹은 alert창을 띄우고 싶었다. 그런데 제가 과연 화면을 예쁘게 꾸밀 수 있을까요? 못합니다... 그리하여 그냥 alert창만 띄우기로 했어요..😊 /login으로 redirect될 때의 페이지를 수정한다고 직관적으로 해석해보았다.. 그렇다면 일단 SecurityConfig 파일을 수정해야한다. @Override protected void configure(HttpSecurity http) throws Exception { http ... .authorizeRequests() .antMatchers(...,...

TIL 2023.09.24

[TIL] ./gradlew 무한 로딩..? 에러도 뜨지 않고 먹통될 때

부트버전문제로 수정하다가 다시 배포했는데 자꾸 실패했다. (부트 2.7->2.6) 그냥 java -jar 로 배포해보면 되는데, deploy파일로 배포시키면 에러메시지도 뜨지않고 멈춰버렸다. (이런식으로 https://daretobe.tistory.com/56) 부트 버전을 바꾸었으니 테스트의 문제일까 하여 ./gradlew test 를 돌려보았다. 역시나 위와같이 되지 않았다. 흠..근데 이게 버전 바꿨다고 생긴 문제는 아닌 것 같아서 한참을 찾아보았더니 swap이라는 것을 설정해주어야 한다고 한다... 참고했던 블로그 : https://kth022.tistory.com/15?category=1045193 [Spring Boot] gradle build :compilejava에서 멈추는 현상 sprin..

TIL 2023.09.19

[TIL] 서버 배포 시 에러 no main manifest attribute, in {JAR_FILENAME}-plain.jar

배포시도 후에 생성되는 nohup.out 파일을 확인해보니 이런 에러가 있었다. Error: Invalid or corrupt jarfile /home/ec2-user/app/step1/ no main manifest attribute, in /home/ec2-user/app/step1/{JAR_FILENAME}-plain.jar no manifest 는 예전에 jar파일 가지고 이리저리 가지고 놀 때 많이 봤던 에러인데 또 만났네... 아무튼 근데 이상한 점이 저 디렉토리에서 생성된 파일들을 확인해보면 jar파일이 두개가 생성되는 것을 확인할 수 있었다. 찾아보니 스프링부트 2.5 이상부터 빌드시에 생성되는 자르파일 인 것을 알게되었다. 이 plain파일은 이름처럼 의존성을 포함하지 않고 클래스와 리소..

TIL 2023.09.18

[TIL] 서버에서 ./gradlew test 했더니 85% EXECUTING 상태로 멈췄다.

프로젝트를 로컬상태에서 테스트를 돌리면 전부 통과한다. 흠 분명 다 돌아가는데... 서버에서 배포하기 전 테스트를 돌리면 이렇게 85%에서 멈추고 시간만 올라간다ㅠ 아예 실패메시지를 띄워주면 좋을텐데 이렇게 되는 상태가 제일 어렵고 힘들다.. 그러다가 많은 검색을 통해 해결할 수 있었다! ./gradlew test --console=plain 빌드 성공

TIL 2023.09.14