java 64

20220502 TIL #첫출근! #JAVA 환경변수

첫 출근을 했다! 정말 들은 것 처럼 세팅하는데도 은근 시간이 오래걸렸다... 윈도우 데스크탑을 받아서 익숙한 환경이었는데도, JAVA 환경변수 설정한다고 한참 걸리고 여러 툴들 등등 설치해야 할게 많았다. 환경변수.. 계속 에러가 났는데 혹시 제대로 설정한 것 같은데도 cmd에서 java --version이나 javac가 제대로 동작하지 않는다면 환경변수>PASS에서 oracle 쪽 경로가 포함되어 있지 않은지 확인해봐야한다! 처음에 jdk가 아니라 jre를 설치하면서 pass에 경로가 추가되었고, 그 상태에서 jre를 지우고 jdk를 다시 설치해도 경로를 제대로 인식하지 못한 거였다. 그리고 당분간은 다시 볼 수 없을거라고 생각한 vscode를 설치하게 되었다...! 프론트 작업도 해야할 수도...?..

회고 2022.05.02

20220302 개발일지 #유저 이름 랜덤으로 구현하기

socket.io는 별도로 구현하기 때문에 이것과 상관없이 spring은 계획한대로 진행하기로 했다. API 명세 중 우선 방 만들기와 방 참여하기 부분을 구현했다. 로그인이 없이 게임을 참여할 때만 유저를 임시로 만들기로 했기 때문에 이 부분을 어떻게 처리해야 할지 고민이 많았다. 우선은 유저의 nickName을 임의로 주기로 했는데, 로직을 어떻게할지 고민이 많았다. 처음 생각했던 것은 별도의 엔티티를 생성해서 거기서 가져와 쓰는 것이었는데 이렇게 하면 유저가 추가될 때마다 DB가 조회되고, 유저샘플로 저장할 데이터가 많은 것도 아니라 그냥 방을 생성할 때 배열을 만들고 거기서 닉네임을 랜덤으로 꺼내오는 메소드를 만들었다. private String getNickName() { // User에 nic..

[프로그래머스] 신규 아이디 추천

https://programmers.co.kr/learn/courses/30/lessons/72410 class Solution { public String solution(String new_id) { String answer = new_id //1. 소문자로 치환 .toLowerCase() //2. 알파벳 소문자, 숫자, -, _, . 제외하고 모든 문자 제거 .replaceAll("[^\\.\\-_0-9a-z]", "") //3. 마침표.이 2번 이상 연속된 부분 하나로 치환 .replaceAll("[.]+", "."); //4. 마침표가 처음이나 끝에 위치한다면 제거 if (answer.startsWith(".")) answer = answer.substring(1); if (answer.ends..

Language/JAVA 2022.01.29

20220127 개발일지 #원페이지 게시판 controller/service 분리

오늘은 3주차 마지막날이다. 개인과제는 이미 제출했고, 팀과제는 수정/추가했다. 알고리즘 문제를 몇 문제 풀고, 어제부터 보기 시작한 Spring 심화편 강의를 이어들었다. 심화편 강의에서 이번에 Spring 시작하면서 느꼈던 의문들이 거의 해소되었다. 내용도 많고 복잡하지만, 왜 Spring을 사용해야 하는지에 대해 Spring을 안쓰는 것부터 시작하는게 좋았다. controller나 service, repo의 경우에도 먼저 안써보고 쓸 경우 어떻게 바꿀 수 있는지, 스프링의 중요 개념인 DI를 쓰면 어떻게 코드가 변하고 장점은 무엇인지 비교해주어서 좋았다. 1주차 강의를 오늘까지 듣고 마무리하고, 배운 내용을 바탕으로 추가로 만든 원페이지 게시판 코드를 일부 수정했다. 처음에 멀티페이지로 만들면서 좋..

[프로그래머스] 시저 암호

처음에 n이 커서 알파벳 범위를 여러 번 도는 경우를 생각하지 못해서 통과하지 못했다. n 대신 26으로 나눈 값 k를 더해줘서 알파벳 범위 안에서만 돌도록 조정해주었고, 대문자와 소문자로 경우를 나누어서 Z나 z는 추가로 -26을 해주었다. class Solution { public String solution(String s, int n) { String answer = ""; //char배열로 바꿈 char[] arr = s.toCharArray(); for (int i = 0; i < arr.length; i++) { //알파벳 안에서만 돌면 되므로 26으로 나누어서 나머지값만 더함 int k = n % 26; //대문자인데 더했을 때 'Z'보다 크거나, 소문자인데 더했을 때 'z'보다 크면 -2..

Language/JAVA 2022.01.27

#문자열 포함여부 확인, 치환 + 자주 쓰는 정규식 패턴

문자열 포함여부 확인 s.contains("문자") : true/false, 대소문자 구분 s.indexOf("문자") : 특정 문자의 위치를 반환, 찾지 못하면 -1을 반환한다. s.matches("문자") : true/false, 정규식 사용 가능 문자 대체 함수 s.replace(찾을 문자열-CharSequence target-, 바꿀 문자열-CharSequence replacement-) s.replaceAll(찾을 문자열-String regex-, 바꿀 문자열-String replacement-) 자주쓰는 정규식 패턴 숫자만 : ^[0-9]*$ 영문만 : ^[a-zA-Z]*$ 영문만, 띄어쓰기가능 : /^[a-zA-Z\s]+$/ 한글만 : ^[가-힣]*$ 한글만,띄어쓰기가능 : /^[가-힣\s]..

Language/JAVA 2022.01.27

[프로그래머스] 숫자 문자열과 영단어

https://programmers.co.kr/learn/courses/30/lessons/81301 문자열에 포함된 영단어가 있을 때 이를 숫자로 바꿔주는 문제이다. 처음에는 배열로 변환해서 바꿔야 한다고 생각해서, 이걸 어떻게 배열로 바꾸지 고민했는데 문자열을 대체할 수 있는 replace를 사용해서 해당하는 문자의 값을 바꾸면 된다. class Solution { public int solution(String s) { String[] arr = new String[]{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; for (int i = 0; i < arr.length; i++) { //포함하고 있을 ..

Language/JAVA 2022.01.27

[프로그래머스] 문자열 내림차순으로 배치하기

https://programmers.co.kr/learn/courses/30/lessons/12917 문자열을 char배열로 전환해서 정렬 후 다시 String으로 만들어주었다. import java.util.Arrays; class Solution { public String solution(String s) { String answer = ""; char[] arr = s.toCharArray(); Arrays.sort(arr); for (int i = arr.length-1; i >= 0; i--) { answer += arr[i]; } return answer; } } 마지막에 for문으로 돌려주었는데, StringBuilder를 사용할 수 있다. public class ReverseStr { p..

Language/JAVA 2022.01.27

[프로그래머스] 문자열 내 마음대로 정렬하기

https://programmers.co.kr/learn/courses/30/lessons/12915 문자열 배열이 주어지고, 해당 문자열의 특정 인덱스(n)를 기준으로 배열을 정렬하는 문제다. 특정 인덱스의 문자만 추출해서 배열을 정렬하고 나서 1. 이걸 이용해 원래의 배열을 정렬하는 부분 2. 인덱스 문자열이 같을 경우 사전순으로 배열하는 부분 이 어려웠다. 1.은 특정 인덱스의 문자를 추출한 배열은 원래 배열의 위치와 동일하기 때문에 이를 활용하기 위해 그대로 두고, 정렬을 위해 clone();으로 복사본을 새로 만들었다. 그래서 정렬된 배열(wordSort)과 원래 배열(word)을 비교하여 정렬 순서대로 해당되는 index를 찾고 이 index에 해당하는 strings값을 answer배열에 하나..

Language/JAVA 2022.01.26

#Model과 ModelAndView

게시판을 만들면서 Model 객체를 사용했었다. controller에서 다음과 같이 Model 객체를 사용해면 addAtrribute를 사용하여 데이터를 저장하고 이 데이터를 view로 보내준다. view는 thymeleaf를 사용해서 html 내의 원하는 곳에 데이터를 뿌려준다. //게시글 상세보기 @GetMapping("/post/{id}") public String detail(@PathVariable("id") Long id, Model model) { BoardDto boardDto = boardService.getBoard(id); model.addAttribute("boardDto", boardDto); return "board/detail"; } 처음에는 thymeleaf를 쓰는 거랑 Mo..

서버/Spring boot 2022.01.26