LocalDateTime의 약간 이상한 시간 표시
·
프로그래밍/기타
RealWorld Postman 테스트 코드를 보면 게시글관련에 아래와 같은 테스트 코드가 들어있다. pm.test('Article\'s "updatedAt" property is an ISO 8601 timestamp', () => { pm.expect(/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/.test(article.updatedAt)).to.be.true }) ISO 8601 포맷의 타임스탬프인지 확인하는 코드로, ISO 8601포맷은 아래에 자세히 설명되어 있다. https://ko.wikipedia.org/wiki/ISO_8601 대략, 아래와 같은 양식으로 되어있다. 2016-10-27T17:13..
이상한 Real World의 테스트
·
프로그래밍/끄적끄적
이상한 post man test code real world의 테스트 코드는 오래되었다. 아래는 login테스트 코드이다. var responseJSON = JSON.parse(responseBody); tests['Response contains "user" property'] = responseJSON.hasOwnProperty('user'); var user = responseJSON.user || {}; tests['User has "email" property'] = user.hasOwnProperty('email'); tests['User has "username" property'] = user.hasOwnProperty('username'); tests['User has "bio" prop..
유튜브 자막 표시기 리팩토링 - 테스트
·
프로그래밍/유튜브 자막 표시기
😩 벌레같은 오류 이제 1.5.7 버전으로 정말 멋지게 코드를 작성했고 일본어 지원까지 했으니 이제 스토어에 업로드를 해볼까... 했으나.. 아래와 같은 오류를 보았다. 아... 항상 느끼는 거지만 오류는 막기 힘들다. 아무리 코드를 잘 짜도 테스트가 없으면 확신할 수 없다는 생각이 들었다. 때문에, 테스트를 작성하려 한다. 📚 테스트 코드 작성 근데 어떻게 하지? 이 프로그램은 GPT의 도움을 많이 받았다. 고로 GPT도 메인테이너의 자격이 있다고 본다. 그러니까 GPT는 테스트 코드를 작성할 책임이 있다!(?) 아무튼 GPT의 도움을 받았다. 간단히 코드를 보여주고 유닛 테스트를 작성해 달라 요청했다. 내가 요청한 코드는 아래의 테스트 코드였고, import { getYTVideoId } from "..
유튜브 자막 표시기 리팩토링 - content_script.js
·
프로그래밍/유튜브 자막 표시기
🔨 content_script.js 뜯어 고치기 content_script는 웹 페이지 컨텍스트에서 실행되는 스트립트 파일이다. DOM에 직접 접근할 수 있다. 때문에 핵심 기능이 이 곳에 들어간다. 이 확장 프로그램의 content_script.js은 MutationObserver로 유튜브 DOM이 업데이트 되는 것을 탐지하고, popup.js에서 설정을 바꾸면 chrome.runtime에서 바꾼 설정값을 받는다. 이 모든게 하나의 스크립트 파일에 있다. 이번에도 분리를 잘 해서 깔끔하게 수정하고 싶다. 그리고 MutationObserver사용에 문제가 있는데, 이건 리팩토링 이후 수정해보겠다. 🧩 MVP 패턴 도입 content script는 popup과는 다르게 HTMLElement에서 입력이 들어..
유튜브 자막 표시기 리팩토링 - MVP 패턴 도입
·
프로그래밍/유튜브 자막 표시기
🔨 popup.js 뜯어 고치기 팝업은 화면 오른쪽 상단 아이콘을 누르면 나타나는데, 메인 페이지와 별개로 동작한다. window, document 객체가 별개로 만들어진다. popup.js은 팝업 페이지에서 돌아가게 만든 스크립트 파일이다. 스크립트에서 관리하는 Element들은 9개나 된다. "색상" 에서 오른쪽 엘리먼트(두개 중 아무거나)를 누르면 color picker가 활성화된다. color picker는 iro라는 라이브러리를 적용했다. 이게 좀 골때리는게, 색상을 선택하면 아래 예시도 같이 바뀌어야 하고, 색상 오른쪽의 엘리먼트 색도 바꿔줘야 한다. 설정 언어나 크기조절을 바꿔도 예시는 변한다. 엘리먼트들의 결합도가 높은것이다. 그렇기 때문에 popup.js라는 스크립트 파일에 몰아 넣었고,..
백준 허브 커스터마이징
·
프로그래밍/기타
아래 글에서 컨벤션에 대해 불편함을 토로한 적이 있다. 백준 허브 사용 후기 🤔 왜 사용하게 되었을까? 이번에 개발바닥에서 "신입은 깃허브 잔디를 매일 심는 것으로도 좋다!"라고 해서 매일 하는 솔브드 잔디 채우기를 떠올리게 되었다. 자연스레 이것을 깃헙과 연동하 2jun0.tistory.com 코드는 깃허브에 공개되어 있으니 내 저장소의 컨벤션에 맞게 수정해보았다. 🧩 내 컨벤션 vs 백준 허브 컨벤션 내 컨벤션 파일 이름 : Algorithm/codes/boj/python/[문제 번호]번 [문제 이름].py 형식으로 저장했다. 커밋 메시지 (커밋은 boj 브랜치에 올라간다.) 최초 문제 풀이 : add: a boj problem [문제 번호] 리팩토링 or 수정 : modify: a boj probl..
9번째 스프린트 회고 - 게시판 좋아요 구현과 JWT활용
·
프로그래밍/기타
🤔 다대다 연결을 어떻게 구현하면 좋을까? 좋아요는 게시글과 사용자의 다대다 관계로 표현할 수 있다. 하지만 다대다 관계 자체를 관계형 DB안에서 그대로 구현할 수 없다. 그래서 결국 엔티티로 만들어 줘야 하는데, 학부시절 DB 수업을 들었던 기억을 살려 게시글의 PK & 사용자의 PK를 묶어 슈퍼키를 구성했다. 그런데.. 자연스레 좀 고민이 들었다. 나에게는 3가지의 옵션이 있었다. @ManyToMany 쓰기 ORM(JPA)에서 제공해주는 기능을 사용하면 굳이 엔티티를 정의하지 않아도 된다. 기능을 잘 사용하면 코드가 간결해지지 않을까 싶었다. 위의 ERD와 같이 양쪽 PK를 묶어 엔티티를 설계하기 학부 전공시간에 이렇게 설계하는 것으로 배웠기 때문에 정답일 것 같다. 양쪽 PK를 FK로만 설정한 뒤,..
백준 허브 사용 후기
·
프로그래밍/기타
🤔 왜 사용하게 되었을까? 이번에 개발바닥에서 "신입은 깃허브 잔디를 매일 심는 것으로도 좋다!"라고 해서 매일 하는 솔브드 잔디 채우기를 떠올리게 되었다. 자연스레 이것을 깃헙과 연동하면 좋겠다고 생각이 들었고, 백준 허브라는 것을 알게 되었다. 백준허브는 크롬 확장프로그램인데 아래에서 간단하게 설치할 수 있다. 백준허브(BaekjoonHub) Automatically integrate your BOJ submissions to GitHub chrome.google.com 😩 아! 컨벤션! 컨벤션~ 테스트로 브론즈 문제를 하나 풀어보았더니 내가 이미 올려놓은 코드와 다른 컨벤션을 쓰고 있었다. 커밋로그도 그렇고, 폴더를 따로 파는건 좀... 그래서 좀 사용하다 불편함이 극에 차면 코드를 수정해 보려한다..
2jun0
2jun0의 블로그