전체 글 119

[운영체제 실습] Scheduling Practice

운영체제 project를 시작하기 전, 교안에 있는 실습 자료로 sceduling 내용에 관한 practice를 진행했다. practice 01 In xv6, yield is implemented but it is not the system call.First, implement yield system call so that user can call yield. (yield gives up its CPU)Make a user program in xv6 that created child process with fork(), and show that parent and child process print "Parent" and "Child" respectively in loop.  문제에서 언급된 대로, y..

[SpringBoot/Java] JavaMailSender로 인증 메일 전송하기

회원가입 및 로그인 기능을 구현하면서, 인증코드를 담은 메일을 보내는 기능을 구현해야 했다. JavaMailSender를 이용하면 어렵지 않게 구현할 수 있다. 크게 아래 두 가지 기능을 구현해 보았다.1. 사용자의 이메일로 6자리의 인증코드를 담은 메일 전송  - 인증 코드 생성  - 인증 코드 저장  - 메일 전송2. 사용자가 입력한 코드가 저장된 인증코드와 일치하는지 확인  구현은 아래와 같이 했다. 우선 build.gradle 파일에 JavaMailSener를 사용하기 위한 의존성을 추가해 준다. /** build.gradle */dependencies { // java mail sender 의존성 추가 implementation 'org.springframework.boot:sprin..

[SpringBoot/오류 해결] Maria DB에 table이 추가되지 않는 문제

Maria DB를 활용하여 User 관련 기능들을 개발하던 중, user table이 DB에 추가되지 않는 문제가 발생했다. 이상한 점은 refresh token table은 잘 추가가 되었는데, User table만 추가되지 않았다는 점이다. 아래 코드는 각각 refresh token과 user에 관한 코드이다. /** RefreshToken.java **/@NoArgsConstructor@Getter@Entitypublic class RefreshToken { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="id", updatable=false) private Long id; @Column(name..

[SpringBoot/오류 해결] lombok 작동 관련 문제 해결

jwt 토큰 관련 설정을 위한 코드를 작성하던 중 아래와 같은 오류를 마주했다.Provider.java:71: error: cannot find symbol .setSigningKey(jwtProperties.getSecretKey()) ^ symbol: method getSecretKey() location: variable jwtProperties of type JwtProperties jwtProperties는 JwtProperties class의 object였는데, JwtProperties class는 아래와 같이 정의되어 있었다. 위 오류에서는 getSecretKey method에 관한..

[프로그래머스/Java] 퍼즐 조각 채우기(BFS/DFS) 풀이

프로그래머스 알고리즘 고득점 kit의 BFS/DFS 파트의 문제인 '퍼즐 조각 채우기'를 자바로 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/84021# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   접근 자체가 어렵다기보다는 그냥 조건이 아주 많고, 코드가 매우 복잡해서 하면서도 이게 맞나 하는 의구심이 계속 드는 문제이다. 사실 DFS로 접근해야 한다는 것만 알고 있으면 퍼즐을 어떻게 파악해야 할지는 어렵지 않은데, 이걸 어떻게 저장하고 비교하는지 방법을 정하는 게 어려웠다. 방법을 정해도 너무 복잡해서 뭔가 더 좋은 게 있을..

[SpringBoot/백엔드] application.yml 파일 내 민감한 정보 처리하기

application.yml 파일을 작성하다보면, password나 secret key 같이 함부로 공유되면 안되는 민감한 정보를 작성해야 할 때가 많다. 일반적으로 작성되는 application.yml 파일은 아래와 같다. spring: application: name: survey-server datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/survey?serverTimezone=Asia/Seoul username: user password: user jpa: properties: hibernate: show_sql: true ..

[프로그래머스/Java] 여행경로(BFS/DFS) 풀이

프로그래머스 알고리즘 고득점 Kit 문제들 중 BFS, DFS 파트에 해당하는 '여행경로' 문제를 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   모든 티켓을 사용해야 하므로, 즉 모든 경로를 거쳐야 하므로, BFS가 아닌 DFS를 사용해야 한다는 것을 알 수 있다. 그리고 "ICN"으로부터 시작해야 하기 때문에, 재귀의 초기 조건을 "ICN"으로부터 출발하는 것으로 설정하고 출발지를 바꾸어가며 재귀를 한다. 재귀의 중단조건은 answer list의 크기인데, (tickets ..

[프로그래머스/Java] 아이템 줍기(BFS/DFS 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 BFS/DFS 파트 문제 중 하나인 '아이템 줍기'를 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   문제를 보면 '최단 거리'를 구해야 하므로, BFS를 사용해야겠다는 판단은 쉽게 할 수 있었다. 하지만 어려운 점은 그려진 직사각형들의 가장 바깥쪽으로만 이동해야 한다는 점이다. 그래서 내가 처음에 접근한 방법은 주어진 모든 직사각형의 면적들을 순회하며 각 직사각형의 테두리는 1, 안쪽은 2로 표기하는 방법이다. 하지만 이렇게 하면..

[프로그래머스/Java] '게임 맵 최단거리'(BFS/DFS 문제) 풀이

프로그래머스의 알고리즘 고득점 Kit 중 BFS/DFS 문제 중 하나인 '게임 맵 최단거리'를 자바로 풀어봤다.https://school.programmers.co.kr/learn/courses/30/lessons/1844# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 우선 처음에는 이 문제를 DFS로 접근했다. 끝까지 들어가서 상대팀 진영(우측 맨아래)에서부터 하나씩 더해나가며 캐릭터의 위치에 최솟값을 넣는 것으로 했다. 하지만 이 방법으로 할 경우, 효율성이 BFS에 비해 심각하게 저하된다. 한 위치에 여러번 방문해야 하는 경우가 너무 많아진다.  그래서 결국 BFS로 바꾸어 접근했다. (통상적으..

[프로그래머스/Java] 네트워크(BFS/DFS 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 BFS/DFS 문제인 '네트워크'를 자바로 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   이 문제는 DFS를 이용해서 푸는 문제이다. BFS와 DFS에 대한 좀 더 자세한 설명이나 구현은 아래 글에서 볼 수 있다.https://programming-diary-ina.tistory.com/30 [백준 1260번/C언어] DFS와 BFS, Queue로 풀이백준 1260번 문제를 큐(Queue)로 풀어보았습니다. 백준 1260번: https:/..

728x90