본문 바로가기

전체 글78

구글 로그인 API Goal 1. 구글 로그인 API 사용하기 구글 API 1. Google API Console https://console.cloud.google.com/apis/dashboard?project=able-math-371003&organizationId=0 2. 프로젝트 새로 만들기 3. 새로 만든 프로젝트 선택 4. OAuth 동의 화면 > “외부” 선택 > 만들기 5. 앱 이름과 유저 이메일 설정하기 > 저장 6. 사용자 인증 정보 > 사용자 인증 정보 만들기 > OAuth 클라이언트 ID > 만들기 7. OAuth 클라이언트 ID와 secret 복사해서 자바 프로젝트 application.properties에 쓰기. 이 정보는 개발자만 알고 있어야하는 정보입니다. 깃허브나 밖으로 노출되지 않도록 주의.. 2023. 3. 15.
[GitHub] SQL 코드 인식 못함 문제 상황 GitHub에서는 기본적으로 SQL 코드를 인식하지 못한다. 해결 SQL을 포함하는 레포지토리에 .gitattributes라는 파일을 만든다. Add file > Create new file # .gitattributes 파일 내용 *.sql linguist-detectable=true *.sql linguist-language=sql 이제 레포지토리에서 .sql 파일들을 인식하여 몇 퍼센트가 SQL 코드인지 표시해준다! 참고 https://github.com/github/linguist/issues/3666 2023. 3. 12.
[LeetCode] 876번: 연결 리스트 Goal 1. 연결 리스트 이해하기 2. 가장 간단한 연결 리스트 알고리즘 문제 풀어보기 연결 리스트(Linked List)란? 연결 리스트란 리스트 안에 있는 항목들이 그 다음 순서로 오는 항목과 연결되어 정해진 순서로 묶여 있는 리스트 구조를 말한다. LeetCode 876번: Middle of the Linked List (풀어보기) Hint 1. head라는 연결 리스트 구조의 정의 : head.val = 현재 위치의 수 head.next= 다음 연결된 리스트 2. 총 개수가 1개일 때는 현재 위치와 중간 지점의 위치가 같다 3. 연결된 리스트의 개수가 하나씩 늘어날 때마다 현재 위치와 중간 지점의 위치가 어떻게 변하는지 생각해보자 4. 총 개수가 홀수일 때와 짝수일 때 현재 위치와 중간 지점의 .. 2023. 3. 11.
[LeetCode] 226번: Invert Binary Tree Hint 1. DFS 알고리즘 사용해야함 2. 왼쪽과 오른쪽에 자식 노드가 있다면 바꿔치기 해주면 됨 LeetCode 226번: Invert Binary Tree (풀어보기) class Solution: def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]: def dfs(root): # 노드인지 확인. 노드가 아니라면 None 값이기 때문에 not을 해줘야 True가 됨 if not root: return root# 노드가 아니기 때문에 바꿔치기 안하고 그냥 반환 dfs(root.left)# 왼쪽 노드의 자식 노드 뒤집기 dfs(root.right)# 오른쪽 노드의 자식 노드 뒤집기 # 왼쪽 노드와 오른쪽 노드 바꿔치기 root.le.. 2023. 3. 10.
[LeetCode] 2236번: 트리 구조 Goal 1. 트리 구조 이해하기 2. 가장 간단한 트리 구조 알고리즘 문제 풀어보기 트리 구조란? 트리 구조란 노드(Node)와 자식노드(Child Node)로 구성된 구조를 얘기한다. 가장 흔히 보는 트리 구조는 바이너리 트리 구조(Binary Tree)로 각 노드가 왼쪽 오른쪽으로 자식노드 2개를 가진 형태다. LeetCode 2236번: Root Equals Sum of Children (풀어보기) Hint 1. root라는 트리 구조의 정의 : root.val = 현재 노드의 수 root.left = 현재 노드의 왼쪽 자식노드 root.right= 현재 노드의 오른쪽 자식노드 2. root.val이 현재 노드의 수라면 root.left 노드의 수를 구하려면? (정답은 밑에 하이라이트하면 보임) .. 2023. 3. 9.
[에러모음] exceeded the 'max_questions' resource 에러 설명 이클립스에서 스프링 부트 프로젝트 실행 중에 코드 계속 수정-저장-수정-저장 반복하다 보니 생긴 에러 java.sql.SQLSyntaxErrorException: User 'scott' has exceeded the 'max_questions' resource (current value: 1000) 해결 1. 실행 중이던 프로젝트를 중지 시켰다가 다시 실행하기만 해도 해결 될 때가 있다. 2. MySQL에서 문제가 발생한 유저 외에 다른 유저로 접속해서 max_questions를 0으로 리셋해준다. SET @MAX_QUESTIONS=0; FLUSH PRIVILEGES; 추가 설명 max_questions란 1시간 안에 MySQL의 user가 실행할 수 있는 쿼리의 개수이다. 나의 에러 메세지를.. 2023. 3. 8.
백준허브 빨간 체크 에러 설명 백준에서 문제를 맞추면 백준허브가 자동으로 내 깃허브에 푼 문제를 업로드 시켜주는데 빨간 체크가 뜬다는 것은 업로드가 실패했다는 것이다. 해결 서로 다른 도메인 간 액세스 할 수 있게 도와주는 CORS 크롬 확장자를 이용하면 된다! (여기서 다운받기) 확장프로그램을 다운 받고 ON 시키면 백준허브가 다시 정상적으로 작동한다. CORS란 웹 페이지에서 다른 도메인에 접근할 때 필요한 보안 매커니즘이다. 백준에서 깃허브 리소스에 접근하려다 보니 문제가 생긴게 아닐까..? 참고 https://www.moesif.com/blog/technical/cors/Authoritative-Guide-to-CORS-Cross-Origin-Resource-Sharing-for-REST-APIs/ 2023. 3. 7.
[백준] 10808번: 알파벳 개수 Hint 1. 알파벳 개수는 총 26개로 정해져 있다. 2. ord()을 사용하면 알파벳을 아스키 숫자로 변환할 수 있다. 3. ord('a')는 97이다. 백준 10808번: 알파벳 개수 (풀어보기) # 알파벳 개수를 셀 수 있게 미리 0으로 된 리스트를 만들어 준다 alphabet = [0 for i in range(26)] for char in input(): # ord('a')는 97이기 때문에 97을 빼면 alphabet 리스트에서 0번째로 값을 추가할 수 있다 alphabet[ord(char) - 97] += 1 # 리스트는 join을 써서 string 형태로 합칠 수 있다. 이때, 리스트에 들어있는 값들은 string이어야 한다 print(' '.join(map(str, alphabet))) 2023. 3. 6.
로그 레벨 Goal 1. 로그 레벨 설명하기 2. 로그 레벨 순서와 정의 알아보기 로그 레벨 (Log level)이란? 개발자들이 개발 단계에서 코드 실행시 어디에 어떤 문제가 발생했는지 확인하기 위한 기록(로그)을 얼마나 자세하게 확인하고 싶은지 미리 설정할 수 있다. 그것이 Logger 클래스에서 설정하는 로그 레벨이다. 이미 Logger 클래스에서 정해진 로그 레벨을 사용해도 되고 개발자가 원하는 레벨을 직접 정의할 수도 있다. 로그 레벨 순서와 정의 로그 레벨은 심각한 정도에 따라 레벨 단위로 나뉘어져 있다. ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 기본 레벨은 DEBUG이다. 레벨 Log4j Logback 정의 ALL ➖ ➖ 모든 레벨의 로그가 필.. 2023. 3. 5.