서론 이 글은 2024.02.03일에 업데이트 되었습니다. 클라이언트에서 토큰을 발급받고 발급받은 토큰을 서버로 보내는 방식으로 구현하였었는데 더 효율적이고 안전한 방식으로 개선하였습니다. 본 글보다 우선적으로 읽어야하는 글 https://developers.kakao.com/docs/latest/ko/kakaologin/flutter | 카카오 플러터 문서 https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api | 카카오 로그인 REST API 문서 개요 간단한 흐름 Kakao Developer에 애플리케이션 등록 및 환경설정(Flutter에서 사용할 API 키, Nest.js 서버 주소 등록) Flutter SDK를 이용하여 카카오톡에 OAu..
설정 방법:https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md item2에 아래 코드를 실행해 플러그인을 설치합니다. git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions vi ~/.zshrc plugins를 입력하여 .zshrc 파일을 수정할 수 있는 vi 환경으로 이동합니다. plugins에 zsh-autosuggestions를 아래와 같이 추가합니다. 이후 읽기모드에서 :wq를 입력하여 나오시면됩니다. iterm2를 껐다 켜보면 잘 실행됩니다!
내가 개발 블로그를 운영하면서 깨달을 부분을 정리해보았다. 목차 카테고리명을 구체적으로 작성하라. 비슷한 요소끼리는 묶어라 카테고리의 깊이를 최소화하라. 카테고리명을 구체적으로 작성하라. 카테고리는 해당 개발자가 어떤 것을 공부했는지를 한눈에 볼 수 있는 항목이다. 애매모호한 명명 규칙을 따른다면, 이 사람이 어떤 기술 스택을 가지고 있고, 어떤것을 공부하는지를 알 수 없다. 또한 블로그에서 코딩 꿀팁 같은 내용으로 검색을 하지 않는다. 때문에 기술명 같은 구체적인 네이밍을 권장한다. 명명 규칙 BAD NAMING GOOD NAMING - 코딩 꿀팁 - 오류 고치기 - AWS, Sping 등 (기술 이름) - 자기개발 - 독서 - etc(기타) 등등 좋은 예시를 몇개 들고왔다. 개발 블로그 카테고리 네이..
Flow란?직역하여 흐름이라는 의미입니다. git+flow는 'git에서 제공하는 브랜칭 기능을 활용한 변경 이력 관리 전략'입니다.이 외에도 다음과 같은 전략이 있으므로 적용하고자 하는 팀 사이즈에 따라 아래 전략들도 고려해주세요.github flow: git flow보다 훨씬 단순한 전략gitlab flow: git보다는 단순하고 github flow보다는 복잡한 전략 Git Flow란?브랜치를 나누는 방법에 대한 분류 중 하나입니다. Git Flow에서의 특징은 브랜치를 5종류로 나뉩니다.main(master): 서비스을 직접 배포하는 역할을 하는 브랜치입니다.feature(기능): 각 기능 별 개발 브랜치입니다.develop(개발): feature에서 개발된 내용을 가지고 있는 브랜치입니다.re..
노션 단축키 중 알아두면 생산성이 떡상하는 단축키만 모았습니다. 필요없다고 판단되는 단축키는 제외했습니다. https://www.notion.so/ko-kr/help/keyboard-shortcuts 단축키 cmd/ctrl + N : 새 페이지 생성 cmd/ctrl + P : 최근 연 페이지들 띄우기 cmd/ctrl + E : 코드 표시로 변경 cmd/ctrl + [ / ] : 이전, 다음 페이지로 이동 cmd/ctrl + shift + L : 다크모드 전환 :[이모티콘 이름] : 이모티콘 불러오기 ex) :apple, :사과 cmd/ctrl + I : 이텔릭체(기울임꼴)로 변경 cmd/ctrl + B : 볼드체(굵게)로 변경 cmd/ctrl + U : 언더스코어(밑줄)로 변경 Tab / shift + ..
김영한님 JPA 실전 강의를 보다가 터미널로 h2 DB를 실행시키려는데 permission denied에러가 나왔다. 이에 대한 해결 방법을 공유하려고 한다. chmod 755 [파일이 있는 경로] 예시)chmod 755 ./h2.sh change mode의 준말이다. 유닉스 계통의 명령어이다. 755의 의미는 각 자리수마다, rwx의 의미를 가지고 있다. read, write, excute라는 뜻이다. 755에 대한 의미는 아래에서 보겠습니다. 이렇게 하면 실행된다. 파일 권한 755에 대한 이해 파일 소유자 권한 그룹 사용자 권한 기타 사용자 권한 r w x r w x r w x 2^2 2^1 2^0 2^2 2^1 2^0 2^2 2^1 2^0 755면, 4 + 2 + 1 = 7 4 + - + 1 = ..
엔티티를 찾지 못할 때, 발생하는 버그입니다. 저는 테스트코드 작성 중 경로를 잘못 지정했습니다. 엔티티 파일을 찾지 못했을 때 발생합니다. 위가 저한테 발생한 오류이고, 경로는 다음과 같이 설정해주었습니다. 파일 경로는 아래와 같았구요. ┖src ┠app ┖domain ┖equipment ┖entities ┖equipment.entity.ts 해결 방법 위와 같이 사용할 엔티티를 import 해주니 해결되었습니다. +추가 Entity 파일에 @Entity 데코레이터를 적용하지 않았을 때도 발생하니 반드시 확인해주시길 바랍니다. +) 추가 릴레이션 되어 있는 테이블도 import 해주셔야합니다..
NestJS에서 엔티티 위치를 찾을 수 없다는 말입니다. 주로 entity를 찾을 수 없다고 나오지만 이는 "경로 지정이 잘못되었을 때" 나오는 에러입니다. 에러 발생 포인트: 레퍼지토리를 연결하여 CRUD 메소드를 만든 후(Entity 연동 후), Test를 돌려보니 에러가 남. 에러 원인: tsconfig.json과 pakage.json의 모듈 네임 매퍼가 같지 않음. tsconfig.json "jest": { "moduleDirectories": [ "node_modules", "src" ], "moduleFileExtensions": [ "js", "json", "ts" ], "roots": ["","src"], "testRegex": ".*\\.spec\\.ts$", "transform": { ..
설치brew로 postgresql을 설치해줍니다. brew install postgresql 버전 삭제 등의 이유로 문제가 될 수 있으니 에러가 난다면 install을 실행해주시면 됩니다! 서비스 시작 brew services start postgresql 이런식으로 오류가 뜬다면, brew services restart postgresql를 입력하여 재시작해주세요. psql 접속 psql postgres 를 입력하면 postgresql에 접속이 됩니다. 롤 생성 CREATE ROLE {롤 이름} WITH LOGIN PASSWORD '{비밀번호}'; 롤이 제대로 생성되었는지 확인하기 \du 각 컬럼은 롤 이름, 권한, 소속 멤버입니다. 유저한테 권한 부여 ALTER USER {롤 네임} WITH supe..
Why is Blog? 유능한 개발자가 되기 위해서는 개발 블로그를 운영해야한다. 블로그 글을 작성함으로써 얻을 수 있는 이점은 다음과 같다. 성장을 가시화 할 수 있다. 비판적 사고를 가질 수 있다. 하나의 스펙이 된다. 생각 정리를 할 수 있다. 공부 내용을 확실히 이해할 수 있다. 빠르게 성장할 수 있다. 댓글로 피드백을 받을 수 있다. etc.. 반드시 블로그를 운영해야하는가? 그것은 아니다. 하지만 블로그를 운영하며 공부한다면 빠른속도로 성장할 수 있다. 포스트 해야한다는 강박증을 가지지 말고, 자신이 공부한 내용을 확실히 공부하고 재학습한다고 생각하면 좋다. 내가 지금까지 본 개발자 블로그는 크게 다음과 같은 목표를 가지고 있었다. 개인 공부 브랜딩 목적 || 취업 How to Start? 개..
20살 미필 학생 개발자가 군대를 어떻게 갈지 눈물 흘리며 정리하였습니다. 다른 꿀보직 있으면 댓글로 알려주세요. ㅠㅠ 내가 찾아본 결과 그나마 컴공이 갔을 때 배워 올 수 있는게 있다 싶은 직무들은 아래와 같았습니다. SW 개발병(육, 해, 공) = 개발병 저는 이거 지원할 예정, 다시 글로 정리할게요. 자격 : 컴퓨터 관련 학과 2년 수료 이상자, 관련 자격증 취득자 하는 일 : 사무실 근무하면서 프로그램 개발/유지보수 주로 컴퓨터학과 3~4년 수료 후 지원합니다. SW마에스트로 선발/연수자는 추가점수가 있습니다. 정보 보호병(육, 해, 공) = CERT병 따로 공부할 시간이 있고, "보안쪽으로 공부한다" or "컴퓨터 만질 수 있는 직무를 빨리 가고 싶다." 추천 자격 : 보안 관련 학과 전공자, ..
개발 시장은 ONLY 스펙으로만 경쟁합니다. 현직자라면 현재 다니고 있는 회사를 다니거나 개인 공부로 스펙을 쌓을 수 있지만 학생 개발자는 이런 로드맵이 적어서 한번 정리해봤습니다. 0. 본인의 목표 정하기. 창업에 관심있는지, 취업에 관심있는지? 목표 직무가 어디인지? (프론트엔드, 백엔드, Iot, 보안 etc) 본인의 최종 목표를 이룰때 도움이 되는 것을 위주로 준비하시면 좋습니다. 만약 아직 목표가 정해지지 않았다면, 여러 경험을 쌓아보는 것을 목표로 하셔도 좋습니다. 1. 토이프로젝트 본인의 목표에 맞게 준비하세요. 프론트라면 UI/UX를 높이는 것이 중요하고, 백엔드라면 서비스를 직접 만들어보세요. 프론트는 퍼포먼스, 백엔드라면 비즈니스 적 로직을 작성하는 데에 집중하는 것이 좋겠지요. 토이프..
SW마에스트로 13기 합격했습니다! 이번 글에서는 합격 후기 및 제가 합격을 위해 준비했던 내용을 공유하려고 합니다. 도움되셨으면 좋겠습니다. 취업률..(23.09.27 추가) Q. 취업은 잘 되나요? 최근 이런 키워드가 블로그에 찍혀서 뉴스 하나를 첨부합니다. https://www.news1.kr/articles/?3796955 | SW마에스트로 수료생 취업률 92.6%…87.4%가 정규직 SW마에스트로의 취지와는 맞지 않지만(창업 목적), 수료생 중 80% 정도는 곧바로 창업하지 않고 취업을 우선으로 하는 것 같습니다. Q. 나이가 많아서 될지 고민이에요. SW마에스트로는 최소 나이 외에는 제한이 없어요. 13기에는 고등학생부터 서른 초반 분들도 계시고, 대학 졸업하신분들도 많아요. 나이는 상관없는 ..
구현이 좀 빡센 BFS 문제였다. 테스트케이스에 n, m, p가 주어진다. n,m은 게임판의 사이즈, p는 플레이 하는 인원의 수다. 그후에 S1, S2, ...Sp가 주어진다. 각 플레이어의 한턴에 움직일 수 있는 거리다. 그후에 게임판이 주어진다. 예시) 테스트케이스 7번 1..1 #.## .... ...2 '숫자'는 플레이어의 인덱스이고, . 은 갈 수 있는 길, #은 벽을 의미한다. 구현이 그리 어렵진 않았지만, 헛도는 것을 예외 처리 하는게 중요하다. 코드 1 import sys from collections import deque input = sys.stdin.readline n,m,p = map(int,input().split()) castle = [[] for _ in range(p+1)..
2차 합격! 면접만 남았습니다. 문제는 총 5문제, 알고리즘 3, SQL 1, WEB 1으로 나왔다. 오픈북과 자동완성이 허용되지 않았고, 난이도는 실버2~골드3정도로 나온거 같다. 문제 요약 알고리즘 idx 알고리즘 분류, 난이도 문제 요약 1 구현, 완탐 S1 문제가 복잡했다. 이건 설명을 패스하겠다. set자료구조와 교집합 기능을 이용하여 풀었다. 2 구현, 그래프 이론(Union-Find, BFS, DFS) G4 순열 사이클과 비슷한 문제였다. 여기서 조건 몇개만 추가하면 된다. 3 DP 빡구현 최소G1 테트로미노 상위 느낌의 DP인데, 시간 많이 줘도 못풀 것 같다. 채팅방에서 어떤분이 5차원 6중첩 for문으로 푸셨다. 매년 있는 킬러 문제같다. 2솔했다. SQL SQL은 1차의 실수 때문에 ..
분할 정복 (Divide & Conquer) 분할 정복은 문제를 여러개로 나누어서 푸는 알고리즘입니다. 문제를 여러개로 분할하여 정복하기 동적 계획법(DP)과의 차이점은 동적 계획법은 분할한 문제들이 서로 영향을 미침. 분할 정복은 분할한 문제들이 서로 영향을 미치지 않음. 이 있습니다. 분할 정복의 필요조건 문제를 나눌 수 있어야 합니다. 부분 문제의 답을 이용하여 원래 문제의 답을 계산하는 방법이 있어야 합니다. 분할 정복의 알고리즘의 접근법은 다음과 같습니다. 분할 : 문제를 작은 문제로 분할하는 과정 정복 : 분할한 작은 문제들을 해결. 조합 : 작은 문제에 대한 결과를 원본 문제에 대한 결과로 조합합니다 분할 정복 문제 하나를 가져와서 함께 풀어보겠습니다. 풀어볼 문제는 1074번 Z입니다. 문..
나는 원래는 게임 이야기를 안하려고 했다. 게임을 오래 했다는게 별로 좋아 보아지도 않기 때문이다. 하지만 나의 롤모델이신 향로님도 게임에 관한 글을 쓰신 글을 읽고 게임을 주제로 이야기해보려고 한다. 롤에 중독수준으로 빠졌던 적이 있다. 4000시간 플레이.. 현생으로부터의 도피목적이었던 것 같다. 내 주변에 롤 티어를 올리려는 친구가 많은데, 그 중 나를 제외한 사람 중 목표를 달성한 사람은 못본거 같다. 오늘은 성장력을 올리는 방법에 대해 이야기해보려고 한다. 내 티어그래프를 보면 성장 그래프가 아주 가파르다. 친구들과 기간 내에 티어올리기 내기를 하면 전부 이겼다. 롤을 조금 해봤다 하는 사람이라면 플레는 게임만 많이하면 쉽게 달성할 수 있다고들 한다. 나도 아주 공감한다. 하지만 다이아는 노력 ..
1차 합격 !!! 문제 요약 문제는 총 8문제로 알고리즘 6, SQL 1, WEB 1으로 나왔다. 이번 코테는 오픈북과 자동완성이 허용되지 않았고, 난이도는 실버4~골드5정도로 나온거 같다. 알고리즘 분류를 복기해보자면 다음과 같다. 제한 시간은 모든 문제 100초, 메모리는 제한이 있지만 좀 널널하다. 티어는 시간제한을 생각하고 내가 임의로 주었다. 추가: 시간 제한 100초는 모든 테스트케이스를 돌리는 시간의 합이고. TLE로 터진다면, 100초 이후에 강제종료됩니다. 시험 환경에서 잘 돌아간다면 문제 X 다만 2차의 경우에는 시간복잡도 관련해서 질문할 수 도 있다고 합니다. 초록색 해결 빨간색 미해결 idx 알고리즘, 난이도 문제 요약 1 구현 S4 자동완성 가능한 수 구하기 문자열 리스트를 주고,..
완전탐색이란? 문제에서 주어질 수 있는 모든 경우의 수를 탐색하는 알고리즘을 말합니다. 이번 글에서는 알고리즘에서 주로 쓰는 조합형 완탐 함수 4가지를 소개합니다. product permutations combinations combinations_with_replacement 조합형 : product, 곱집합 대표적인 이름으로는 곱집합, 데카르트의 곱이라고 합니다. 곱집합은 for문 두개를 섞어놨다고 생각하시면 됩니다. product(p, q, … [repeat=1]) 이런 형태로 사용할 수 있습니다. 예시 itertools.product('1234', '1234') 또는 itertools.product('1234', repeat=2) [('1', '1'), ('1', '2'), ('1', '3'), ..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59045 들어올 때에는 비중성화, 나갈 때에는 중성화인 경우만 필터링 해서 보여줍니다. SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE INS.SEX_UPON_INTAKE LIKE 'Intact%' and (OUTS.SEX_UPON_OUTCOME LIKE 'Spayed%' or OUTS.SEX_UPON_OUTCOME LIKE 'Neutered%') ORDER BY INS.ANIMAL_ID LEFT JOIN으로 I..