분류 전체보기
![Postgres type casting](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd22gW0%2FbtruiQa6S1w%2FtrRbXidzJjKUOWXxwmtLW1%2Fimg.png)
Postgres type casting
postgres 에선 칼럼의 타입 변환이 가능하다(어느 dbms나 마찬가지) 최근에 1달 이전까지의 기간 내에 생성된 데이터들을 가져오고 이것들을 표시해주어야 했다. 그 과정중에서 type casting을 사용하였고 기록으로 남겨두려 한다. 수행했던 sql문은 다음과 같다 SELECT created_at::date, count(*) FROM "users_posts" "users_posts" WHERE ( user_id = 38 AND "users_posts"."created_at" > date '2022-01-26' ) AND ( "users_posts"."deleted_at" IS NULL ) GROUP BY users_posts.created_at::date; user_id가 38이고 생성 날짜가 1..
![맥주 마시면서 걸어가기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEf44I%2Fbtrs3U0lhNq%2FFqVChVLmRefLHdA3gmyFRK%2Fimg.png)
맥주 마시면서 걸어가기
from collections import deque import sys input = sys.stdin.readline LENGTH = 65536 HALF_LENGTH = 32768 INF = 1e6 def BOJ9205() : global convenient_and_target global pentaport_x, pentaport_y def bfs(curr_x, curr_y, beer) : queue = deque() visit = [] queue.append([curr_x, curr_y, beer]) visit.append([curr_x, curr_y, beer]) while queue : curr_x, curr_y, curr_beer = queue.popleft() if curr_x == pent..
![React twice render](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj5aP3%2Fbtruh7JSJ9d%2FksW3S22O3mJFCJaeXhPKR0%2Fimg.gif)
React twice render
TLDR: 1. React의 strict 모드를 이용하면 render가 두번 이상씩 될 수 있다. 2. 이는 개발환경에서만 발생한다. 첫 시작은 이게 아니었다.... 처음의 의도와 기획은 render가 되는 것을 어떻게 count 할 수 있을까에 대한 호기심 이었다. 여정은 다음과 같다. 1. ref를 주고 받음에 치였고 2. forwardRef && typescript, useRef에 치였고 3. React.Strictmode에 치였다. 3개의 과정을 알아보고 인사이트를 찾아보자 오늘의 주제는 1번과 2번이 아니다. 1번과 2번은 빠르게 훑고 갈것이다. 1번에서는 ref를 부모에서 주고 자식에서 카운팅을 하나씩 올리려 했었다. 2번에서는 forwardRef를 통해 ref를 이름의 변경없이 보내서 자식에..
![쿼드트리 [백준 1992] - python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3PHg0%2Fbtrs4MVgZeH%2FIT1ClKorysG7IOMtgBSMS1%2Fimg.png)
쿼드트리 [백준 1992] - python
import sys input = sys.stdin.readline def BOJ1992() : global graph def check(x, y, step) : flag = True pivot = graph[x][y] for i in range(x, x + step) : for j in range(y, y + step) : if graph[i][j] != pivot : flag = False break if flag == False : print("(", end='') step //= 2 check(x, y, step) check(x, y+step, step) check(x+step, y, step) check(x+step, y+step, step) print(")", end='') elif pivot..
![카잉 달력 [백준 6064] - python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcftob%2Fbtrs7CxlTQz%2FIOY4hfCuQK4zUkGTY1Z6L1%2Fimg.png)
카잉 달력 [백준 6064] - python
import sys input = sys.stdin.readline def BOJ6064() : def getYear(M, N, x, y) : MAX_NUM = M * N while x
![js + cypress](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTJi5g%2FbtrubhrCbz0%2FkprI5UtI0fXpLIe5GKsJ90%2Fimg.gif)
js + cypress
상태관리 라이브러리 없이 만들어본 js 프로젝트에서 간단한 tdd를 적용해 보았습니다. 라이브러리는 cypress를 사용하였습니다. 저는 cypress를 테스트 도구로서만 알고 있었습니다. 좀 더 자세히 알아봐야겠습니다. cypress 공식문서에서는 'A complete end-to-end testing experience' 라고 소개하고 있습니다. Ent to End test가 뭘까요?? End To End test는 사용자 관점에서 테스트 하는 방법입니다. 의도하는 텍스트가 출력이 되었는지, 삭제 버튼을 누른후에 해당 컴포넌트가 삭제되었는지 등등 사용자 관점에서 테스트를 하는 방법입니다. cypress등장 이전에 테스트를 해본적은 없지만 이전에는 selenium등 가상의 브라우저를 띄워서 동작을 수행..
![cra + typescript + jest](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxuF3c%2FbtrubvwqlEO%2F1zE85iJghSLM6bNSnM9wM1%2Fimg.png)
cra + typescript + jest
최근에 react로 만든 어플리케이션에서 jest를 적용해야 했었습니다. 적용하면서 막혔던 부분들에 기록해 두려 합니다. 요약순서 1. 필요 라이브러리 설치 2. package.json 수정 2. jest config.js 설정 3. test 파일 작성 4. test 실행 cra with typescript 로 생성한 프로젝트에서 1. 필요 라이브러리 설치 yarn add -D jest @types/jest ts-jest jest : javascript 테스트 프레임워크 입니다. @types/jest : jest의 타입 정의를 포함하고 있는 라이브러리 입니다. ts-jest : typescript로 작성된 프로젝트들을 테스트 할 수 있게 해주는 typescript 전처리 라이브러리 입니다. 2. pack..
![플로이드 [백준 11404] - python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2qBmh%2Fbtrs59WWfkG%2FkqqmKjSfd9maK1UZirhfBK%2Fimg.png)
플로이드 [백준 11404] - python
import sys input = sys.stdin.readline def BOJ11404() : n = int(input()) m = int(input()) dist = [[1e9 for _ in range(n)] for _ in range(n)] for _ in range(m) : a, b, c = list(map(int, input().split())) dist[a - 1][b - 1] = min(dist[a-1][b-1], c) for k in range(n) : for i in range(n) : for j in range(n) : if dist[i][k] != 0 and dist[k][j] != 0 : dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j..
![촌수계산[백준 2644] - python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyGEyk%2Fbtrs7rQdG5a%2FX6Y2jDsEf5QssY8zSRjVmk%2Fimg.png)
촌수계산[백준 2644] - python
from collections import deque import sys input = sys.stdin.readline def BOJ2644() : global graph global visited global answer def bfs(start) : queue = deque() queue.append([start, 0]) while queue : node, relation = queue.popleft() for i in range(len(graph[node])) : if visited[i] == False and graph[node][i] == 1 : visited[i] = True answer[i] = relation + 1 queue.append([i, relation + 1]) n = int(..
![REST API URI를 설계하는 7가지 규칙](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuIBdX%2FbtrtVoShmxY%2FNQWEJz7E11zEnZ67WdqiKK%2Fimg.gif)
REST API URI를 설계하는 7가지 규칙
최근 백엔드를 구현하던 중 uri를 규칙없이 작성하는 것 같아 여러글을 찾아보다가 잘 쓰여진 글이 있는 것 같아 가져가고 싶었습니다. 해당 포스트는 아래에 첨부된 사이트를 번역한 글입니다. (오역이 있을 수 있습니다.) 1. URI 마지막에 슬래시(/)를 붙이지 마세요 2. 관계를 나타내기 위해 슬래시(/)를 사용하세요 3. 하이픈(-)를 사용하세요 4. 언더바(_)를 사용하지 마세요 5. 소문자를 선호하세요 6. URI에 파일 확장자를 사용하지 마세요 7. 복수형을 사용하세요 REST API URI를 설계하는 7가지 규칙 아래에 열거된 7개의 단순한 규칙은 모든 필수적인 자원 정보들을 소통하는데 있어서 가독성 있고 규칙에 위반되지 않는 URI들을 작성하게 도와줄 겁니다. REST API URI 설계 규..