데이터 기반 의사 결정, 서비스 개선의 핵심이죠? 사용자 행동 분석, 그중에서도 이벤트 추적은 매우 중요한 역할을 합니다. 오늘은 Firebase Analytics를 활용하여 우리 서비스에 이벤트를 심는 방법에 대해 빠르게, 하지만 꼼꼼하게 알아보겠습니다. 특히 Next.js 환경에서 어떻게 구현하는지 구체적인 코드 예시와 함께 공유드릴게요. firebase 프로젝트 생성 방법은 이미 많은 블로그에서 자세히 다루고 있으므로, 여기서는 간략하게 넘어가겠습니다.(혹시 Firebase 프로젝트가 없으신 분들은 Firebase 공식 문서를 참고해 주세요.) Firebase 이벤트 추적, 왜 중요할까요? 🤔 Firebase 이벤트를 추적하는 것은 우리 서비스의 보물 지도를 만드는 것과 같습니다.이벤트를 통해 다..
어제 회사가 문을 닫는다는 소식을 접했다. 사실 몸도 마음도 힘든 상태였는데 이제 점점 익숙해져가고 있는 상태였다. 그래서 처음 듣자마자 이전에 회사에서 해고될때와는 다르게 아쉽다는 생각이 들었다. 사람들도 대부분 괜찮은 사람이어서 더 그런 생각이 든거 같다. 어제 회사에서는 마지막 만남으로 회식도 하고 팀원이 좋아하는 노래방도 갔다. 원래 재미있고 흥이 넘치는 사람들인줄 알았지만 어제는 정말 재밌구나를 느꼈다. 어제의 느낌은 이쯤해두고.. 2달 조금 넘게 나는 스스로 성장을 했구나 느꼈다. 30개가 넘는 DB테이블을 설계해 보았으며, 서버 개발도 주도적으로 맡아서 했다. 물론 주변 개발자분들의 도움도 많이 받으면서 말이다. 다들 실력자들이라 많이 배웠다. (이 부분때문에 더 아쉽게 느껴진다. ㅠ) 내가..
여러가지 방법이 있겠지만 가장 간단하게 설치해본다. 사전 작업으로 brew를 설치해주고 brew로 python3 가 설치되어있다는 가정하에 진행한다. 사전 작업은 인터넷에 많이 나와 있다. jupyter notebook을 설치한다. pip3 install jupyter 설치후에 터미널에 jupyter notebook입력하면 된다고 해서 했는데 zsh: command not found: jupyter 에러가 발생했다. zsh: command not found: jupyter 에러는 jupyter를 못찾는다는 내용인데 이건 환경변수를 세팅해주면 된다. 먼저 editor를 켜준다. vi ~/.zshrc 아래와 같이 입력해준다. export PATH=/(본인경로)/Python/3.8/bin:$PATH :wq!를..
새로운 브라우저를 소개하고 싶어 이렇게 글을 남긴다. 보통 두종류의 브라우저를 많이 사용한다. 크롬, 사파리... 나는 보통 크롬을 사용해 왔다. 사용하는데 별 문제도 없는 것 같았고 남들이 많이 사용하는 브라우저니까 그냥 사용했다. 하지만.. 우연히 구글의 종말이라는 책에서 새로운 브라우저를 알게되었다. 바로 Brave 브라우저 https://brave.com/ Secure, Fast & Private Web Browser with Adblocker | Brave Browser The Brave browser is a fast, private and secure web browser for PC, Mac and mobile. Download now to enjoy a faster ad-free brow..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
nestJS 프로젝트 도중 갑자기 mysql connection error가 발생했다. 에러명을 Error: Access denied for user 'root'@'localhost' (using password: YES) (보통 위 에러는 비밀번호를 잘못 입력해서 일어난다. 하지만 난 비밀번호를 맞게 입력했다.) 이전에 이런 에러가 발생해서 mysql을 완전 삭제했다가 재설치를 했더니 잘동작 했었다. 하지만 이후에 같은 에러가 또 발생했다. 이번에는 mysql를 재설치하기 보다. 원인을 찾아 보았다. 생각보다 아주 간단했다. 결론은 mysql이 사용하고 있는 3306포트를 이전에 설치했던 mysql이 사용하고 있던것. 즉 이전에 설치한 mysql이 같은 포트를 사용하고 있던 것이다. 해결방법은 이전 m..
var maxArea = function(height) { let leftIndex = 0; let rightIndex = height.length - 1; let result = 0; while (leftIndex < rightIndex) { if (height[leftIndex] < height[rightIndex]) { result = Math.max(height[leftIndex] * (rightIndex - leftIndex), result); leftIndex += 1; } else { result = Math.max(height[rightIndex] * (rightIndex - leftIndex), result); rightIndex -= 1; } } return result; };
github를 잘 쓰고 있다가 어느날 갑자기 push를 하려니 제목과 같이 ssh key를 입력하라는 황당한 요청을 받았다. 우선 해결방법은 아래와 같다. Window 기준 1. Git Bash를 켠다. 2. ssh키를 생성한다. 생성방법 $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 위와 같은 명령어를 입력한다. 물론 "your_email@~"에는 본인의 github가입 이메일을 입력한다. 그러면 아래와 같이 나올 것이다. Enter passphrase (empty for no passphrase): Enter same passphrase again: 둘다 enter를 눌러 넘어간다. 만약 키가 이미 존재했다면 덮어 씌울 것이냐? 라는 질문이 온다...
Mobx state tree에 대해 사용해보고 간단한 카운터 예제를 만들어 보았다. 입문용이니 심오한 표현은 최대한 피하고 쉽게 이해할 수 있도록 구성하였다. 카운터 예제에 대한 스택은 React, Mobx, Mobx-state-tree, Mobx-react-lite가 사용되었다. mobx state tree는 무엇인가? 상태를 관리하는 엔진이며 구조와 툴을 제공한다. 라고 공식문서에 적혀있다. 상태를 관리하는 라이브러리라고 생각하면 적절한 것 같다. 왜 mobx state tree를 사용해야 하는가? 상태관리로 mobx도 좋지만 mobx state tree는 프로젝트 구조가 좀 더 확장될 것에 대비하여 사용된다. 물론 소규모 프로젝트에도 사용가능하다. 그 외에도 10가지 이유가 공식문서에 적혀있다. 궁..