🚧

· 🚧
FCM이 뭔지는 일단 나중에... 자세한 것은 👉 Firebase Cloud Messaging Documentation을 따라하면 됩니다. 참고. 단순히 서버 실행 없이 http, js 파일로 실행했더니 아래처럼 뜨더라고요... 아래 오류는 알림 권한 요청을 차단했다는 메시지인데, file:// 도메인으로 시작하면 크롬 알림 설정이 아무리해도 허용이 안됩니다. FirebaseError: Messaging: The notification permission was not granted and blocked instead. (messaging/permission-blocked). 그래서 리액트 클라이언트로 변경해서 테스트해보기로... 동작 원리 React 클라이언트가 메시지 수신을 대기하고 있다가 FCM 에..
· 🚧
2010년에 쓰인 👉 채수원님의 TDD 실천법과 도구 공개 PDF 를 참고하였다. 지금까지는... 내가 지금까지 소프트웨어를 개발할 때 했던 방식은 중간중간 println 이든 congole.log 든, 혹은 logging 라이브러리든 콘솔창에 데이터를 찍어보며 코드를 검증했다. 이런 경우 자신의 머리로 대부분을 의존해야한다. 게다가 만약 기능이 추가되거나 코드의 일부분이 변경된다면? 다시 로그를 찍고 문제되는 부분을 살펴보는 작업을 반복해야 한다. 여기에 코드의 몸집이 거대해진다면? 디버깅해야하는 부분을 찾아내기 더 어려워진다. 정신차려보면 어느새 로그 찍는 코드가 비즈니스 로직만큼 적혀 있다. TDD, 테스트 주도 개발 그래서 나온 것이 테스트가 주도하는 개발, TDD 다. 테스트가 주도한다는 건 함..
· 🚧
Balanced Tree(Balanced Tree) 이진 트리는 자식을 최대 두 개만 가짐으로써 O(log N) 의 탐색 효율을 보인다. 그런데 좌우 서브트리의 균형이 맞지 않을 때는 어느 한 쪽만 탐색하게 되므로 O(N) 이라는 비효율적인 성능을 보여주니 좌우 밸런스를 맞출 필요가 있다. 루트를 기준으로 왼쪽, 오른쪽 서브트리의 노드 개수가 균형적이면 Balanced Tree 라고 한다. Blanced Tree 에는 B-tree, red-black tree, AVL tree 등이 있다. 여기서 '균형이 잡혔다' 라는 뜻은 양쪽 노드의 자식 노드가 2개 이상 차이가 나지 않는, 즉 높이 차이가 2 이상 차이나지 않는 상태를 말한다. (1개 까지는 괜찮다.) 같은 레벨에 꽉 차 있는 경우는 완전 균형이라고..
· 🚧
이진 탐색 트리 이진 탐색 트리(Binary Search Tree) 라는 것도 있다. 이진 탐색이란 미리 큰 순으로 정렬된 자료구조에서 무작위의 데이터를 뽑아 검색 데이터와 비교해, 작다면 왼쪽 영역의 가운데 값, 크다면 오른쪽 영역의 가운데 값과 비교해나가며 검색하는 방식이다. 두 영역으로 나눈다고 해서 이진 검색이라고 하는 것 같다 :). 이진탐색트리는 이진 탐색을 위한 트리다. 루트노드를 포함해서, 부모 노드가 왼쪽에 작은 값의 자식을, 오른쪽에는 큰 값의 자식을 가지는 구조다. 검색할 때 부모 노드를 보고 부모보다 작은 값을 찾고 있다면 왼쪽 서브트리를 탐색하고 큰 값을 찾고 있다면 오른쪽 서브트리를 탐색하면 된다. 각 단계마다 해야되는 작업이 반절로 줄어드니 O(log n) 의 시간복잡도를 가진..
· 🚧
우선순위 큐란? 우선순위가 가장 높은 데이터를 가장 먼저 꺼내지는 자료구조이다. 단순히 배열로 구현하는 경우 데이터 삭제 시 O(N)이 걸리고 힙으로 구현하는 경우에는 최악의 경우에도 O(logN) 를 보장하므로 주로 힙으로 구현된다. 큐라고는 하지만, 큐와는 완전히 다르게 동작한다. 연산 inseart 요소 추가 remove 가장 우선순위 높은 요소 삭제하고 반환 find 가상 우선순위가 높은 요소 반환
· 🚧
JDK 설치 👉 JDK 8 설치 로 들어가 JDK 8을 설치하고 터미널에서 확인한다. JDK 는 모니터링, 디버깅, 컴파일 등등 자바 어플리케이션을 개발할 때 도와주는 다양한 툴들의 모음이다. java 명령어를 어디서든 사용하고자 보통 환경변수를 설정해주는데 IDE를 사용하는 경우에는 프로젝트 생성 때 JDK 의 경로를 설정해주므로 하지 않아도 된다. user@userui-MacBookPro ~ % java -version java version "1.8.0_202" Java(TM) SE Runtime Environment (build 1.8.0_202-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode) IDE 설치 IDE 중에서도..
· 🚧
왜 시작하게 되었는지 백엔드 개발자가 되겠다고 마음먹으며 이때까지 미뤄두었던 스프링 부트를 공부하겠다고 다짐을 했다. 스프링 부트로 개발하는 웹 프로세스를 전반적으로 간단하게라도 경험해보고 싶다는 생각을 했는데 내가 다뤄보고 싶은 기술을 다루지 않는 경우가 대부분이었다. 그래서 직접 하나하나 구글링해가며 맨땅에 헤딩하듯 만들어본 것이 👉 이전에 진행한 todo list 튜토리얼 이다. 여러 시행착오를 겪는 과정에서 배운 점이 정말 많았지만... 진행하다보니 내가 하고 있는 것이 맞는지, 더 챙겨야 할 디테일은 없는지 등 누군가가 조언해주고 더 자세한 피드백을 해주면 좋겠다는 생각을 했다. 그러나 내 주위에는 경험 많은 개발자가 없으므로... 전문가의 경험이 가득 담긴 책을 선생님 삼기로 했다! 때마침 추..
· 🚧
디스코드봇을 헤로쿠에 배포하다가 아래와 같은 오류가 나타났다. syntaxerror: unexpected token '??=' agent ??= new https.agent({ ...this.client.options.http.agent, keepalive: true }); 헤로쿠는 package.json 에 노드 버전을 명시하지 않으면 14로 설치한다. ??= 문법은 16버전에 생긴 것이라 생긴 문제다. 아래처럼 package.json 을 수정하고 다시 deploy 하면 해결된다. { "name": "~~~", "version": "1.0.0", "engines": { "node": "16.x" },
purpplee
'🚧' 카테고리의 글 목록 (3 Page)