WebHoook으로 Github PR과 review 알림 자동화 적용기
·
TIL
처리한지 몇 달이 흘렀지만 팀원들의 업무 피로도를 줄이기 위한 하나의 방법으로PR 자동화를 제안해 적용한 후기를 포스팅합니다. 기존에는 PR시 알림이 따로 오지 않아 디스코드로 DM을 보내 체크를 부탁드린다고 말해야 했는데요.매번 요청을 보내는 것도 비효율적이라고 느꼈고, 자동화를 통해 팀원들의 업무 피로도를 조금이나마줄여보고 싶은 마음이 생겨 알림 자동화를 도입하기로 마음먹었습니다. 사내 협업 툴로 디스코드를 사용하고 있어 디스코드와 깃허브 PR 알림에 대해 알아보던 중,제가 정확히 원하던 내용을 다루는 블로그를 찾게 되었습니다. 바로 시작하는 웹훅 적용 방법1. 디스코드의 서버 설정(= server settings) > 연동(= integrations)으로 이동합니다. 2. 새 웹훅을 선택 후 이름과..
LEETCODE 2331. Evaluate Boolean Binary Tree
·
Algorithm
사실 설명만 보고선 이해가 안됐는데요.예제 문제 01번과 맨 아래의 부연 설명을 보고서야 어렴풋이 이해할 수 있었습니다.문제 접근 방법정확한지 아닌지는 솔직히 장담을 못한 채로 풀었습니다.root를 트리에 비교해보면 0 = False, 1 = True, 2 = OR, 3 = AND를 의미한다는 것을 파악했습니다. 문제를 분석해보면 2는 OR를 뜻하므로 왼쪽 node와 오른쪽 node 둘 중 하나만 있어도 되고,3일 때는 AND이므로 왼쪽 node와 오른쪽 node가 모두 있어야겠네요.최종 코드/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 :..
LEETCODE 824. Goat Latin
·
Algorithm
/** * @param {string} sentence * @return {string} */var toGoatLatin = function(sentence) { const arr = ['a', 'e', 'i', 'o', 'u']; const a = sentence.split(' '); return a.map((word, i) => arr.includes(word[0].toLowerCase()) ? [...word, 'ma', ...Array(i + 1).fill('a')].join('') : [...word.slice(1), word[0], 'ma', ...Array(i + 1).fill('a')].jo..
charCodeAt, fromCharCode, 그리고 정규표현식
·
JS & REACT
알고리즘 문제 풀이 중 소문자나 대문자 구분, 숫자 구분등의 기능을 구현해야 할 때가 있는데요.상황에 따라 어떤 방식을 사용하는 것이 좋을지 알아보기 위해 개념 정리를 해보았습니다. 1. charCodeAt특징- 문자열에만 적용 가능(문자를 10진수 숫자로 치환)- 문자열의 index number를 인자로 사용 가능(해당 문자열의 index range를 넘어가면 NaN을 return)// charCodeAt example"galaxy".charCodeAt(0); // 103"galaxy".charCodeAt(1); // 97"galaxy".charCodeAt(6); // NaN32.charCodeAt(); // syntaxError: Invalid or unexpected token 2. fromC..
일정 길이 이상의 텍스트에 ...을 붙이는 쉬운 방법
·
TIL
글자가 일정 length 이상이 되었을 때, 문자열 뒤에 ‘…’ 처리를 해야하는 부분이 있었습니다.사실 전 css에 약하기도 하고, 어지간한 텍스트 관련 작업은 JS로 해결을 해왔기에이번에도 JS로 접근해 해결을 했고 PR 내역에 올렸는데요.하지만 피어 리뷰를 통해 새로운 문제 해결에 접근할 수 있었어요.css를 잘 아는 동료분이 계셨는데, 3개의 속성 추가로 너무 쉽게 해결을 할 수 있다고 코멘트를 주셨거든요.먼저 저의 코드입니다. {item.name.length >= 17 ? item.name.split('').splice(0, 17).join('') + '...' : item.name} text의 length가 17 이상이면 16자리까지만 보여지게 만들고 이후에 ... 이라는 텍스트를 추가..
알고리즘 풀이 중 오랜만에 경험한 기초 지식
·
JS & REACT
Leetcode - 2696. Minimum String Length After Removing Substrings문제를 풀 때 경험했던 문제입니다.당시 저는 문자열에 특정 키워드가 존재하는지에 대한 조건을변수에 할당해 사용하려 했는데, 계속 반복문에서 타임아웃이 발생했습니다.아무리 생각해봐도 문제가 변수 할당밖에 없어 변수에 할당한 조건문을 while문에 직접 추가했더니그제서야 동작하는 것을 확인했는데요.왜 이런 일이 발생하는걸까? 하자마자 바로 잘못을 깨달았습니다.문제 발생 코드var minLength = function(s) { // const hasAB = s.includes('AB'); // const hasCD = s.includes('CD'); while(s.includes(..
숫자와 문자가 섞인 문자열에서, 각 요소를 구분하는 방법
·
JS & REACT
알고리즘 문제를 해결하며 알게된 접근 방법 중 하나가 있었습니다.그 동안 저는 숫자와 문자가 섞인 문자열이 있다면 Number(요소)를 통해NaN 값인지, Number 타입의 값인지를 구분해왔는데요.다른 분들의 풀이를 보며 Number 원시 래퍼 객체를 사용하지 않는 방법을 찾았고신기해 이를 공유하고자 합니다.기존에 구분하던 방법const s = "1 box has 3 blue 4 red 6 green and 12 yellow marbles";const extractionNum = s.split(' ').map((item)=> Number(item)).filter((num)=> !isNaN(num));map 메서드 내부에서 Number 원시 래퍼 객체를 사용해주면 string type data는 NaN으..
Next.js - Mixed content 문제 해결하기
·
Error Handling
1. 문제 발생development 환경에서 작업을 완료 후 vercel을 활용해 production 환경으로 배포 후API 통신 동작을 체크했을 때, https통신이 중간에서 http로 변경되어져요청이 들어가는 문제를 경험했습니다.2. 해결하기 위한  시도Api 엔드 포인트를 변경하거나, 백엔드에 변경 사항이 있는지 질문도 해보고vercel 환경 변수도 재설정해줬지만 계속 http로 요청이 이뤄졌는데요.3. 해결 방법next.js의 src > app > layout.tsx에 meta tag를 설정해주는 것으로 해결할 수 있었습니다. 위의 meta tag를 적용하면 http 콘텐츠를 자동으로 https로 변환이 이뤄집니다.