애플이 최근에 출시한 M1 프로세서를 사용한 MAC은 VMware, VirtualBox 등 무료 가상 머신을 사용할 수 없다. 현재까진 Parallels에서만 사용이 가능한 것으로 알고 있다. MAC OS는 기본적으로 터미널이 있고, 리눅스 기반 명령어를 사용할 수 있도록 환경이 어느 정도 갖추어져 있지만, 그 조상이 Linux가 아니라 라 Unix(Linux의 조상)이어서 그런진 몰라도 리눅스 환경에서 사용했던 명령어 일부가 지원하지 않거나 다른 명령어가 그 역할을 한다. 포인트는 공부 및 프로젝트 배포 실습을 위해선 Linux환경이 필요하다. 그래서 결국 대안으로 AWS EC2를 이용해 Linux 환경을 사용하기로 했다. 사실 AWS도 공부를 제대로 하고 사용해야 하는 기술 스택이지만 아직 배움이 부..
Diameter of Binary Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 실패한 코드 # Definition for a binary tree node. from typing import * from collections import deque # Definition for a binary tree node. class TreeNode: def __init__(self, val=0, left=None, right=None): self.va..
온라인 강의를 듣고 배운 점들을 기록한다. Bcrpyt & BcryptPasswordEncoder - Spring Security에서 제공하는 암호화 기법. - 내부적으로 임의의 salt값을 이용해 평문을 다이제스트(암호문)로 변환한다. - 즉 동일한 문자열에 대한 해시 결과가 매번 다르게 나온다. - 그러므로 위 라이브러리에서 제공하는 해시 비교 메서드를 통해서 비교할 수 있다. - Bcrpyt 라이브러리의 checkpw() 메서드를 통해 평문과 다이제스트를 비교할 수 있다. - BcryptPasswordEncoder는 AuthenticationProvider의 인자 값(UserDetailServices, PasswordEncoder)의 PasswordEncoder의 구현체로 가장 사용 빈도가 높은 구..
온라인 강의를 듣고 배운 점들을 기록한다. @RequiredArgsConstructor - Lombok 어노테이션, final 필드, @NonNull이 붙은 필드에 대한 생성자를 제공한다. - 참고로 @AllArgsConstructor는 모든 필드에 대한 생성자를 제공한다. - Controller에서 주입되는 Service나 Service에서 주입되는 Repository 등을 final 필드로 선언할 때 주로 사용하는 것 같다. schema.sql & data.sql - SpringBoot에서 resources 디렉터리 아래에 위 파일들이 있다면, 내용을 읽어서 해당하는 DDL, DML을 수행한다. - 특히 JPA와 H2 DB를 사용할 때 ApplicationRunner를 사용하지 않고 초기 DB 형태를..
leetcode.com/problems/best-time-to-buy-and-sell-stock/ Best Time to Buy and Sell Stock - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 선형 탐색 class Solution: def maxProfit(self, prices: List[int]) -> int: min_val, profit = prices[0], 0 for price in prices: min_val = min(min_val..
Find All Numbers Disappeared in an Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 집합 연산을 이용한 풀이 class Solution: def findDisappearedNumbers(self, nums: List[int]) -> List[int]: return list(set([i for i in range(1, len(nums) + 1)]) - set(nums)) 하지만 집합 연산을 위한 추가 공간을 사용하고 있..