코딩테스트 연습 - 짝지어 제거하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음엔 이중 반복문으로 풀었는데 시간 초과가 떴다. 스택이 답이라고 해서 스택으로 했다. function solution(s) { const stack = [] s = s.split('') s.forEach((_,i,arr)=>{ if(!stack.length || stack[stack.length-1] !== arr[i]){ stack.push(arr[i]) } else{ stack.pop() } }) return ..
코딩테스트 연습 - 체육복 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 최대한 체육복을 많이 입히는 경우를 구하는 문제이다 도난당한 학생 배열과 여벌이 있는 학생의 배열이 순서대로가 아닐 수도 있다. 이건 검색해서 안 것이다. 테스트케이스를 알려준다면 참 좋을텐데 그래서 그 둘을 정렬했다. 또한 내가 도난당했지만 여분이 있으면 우선적으로 내가 먼저 입어야 한다 function solution(n, lost, reserve) { var answer = 0; let arr = [] lost = los..
코딩테스트 연습 - 성격 유형 검사하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코딩보단 독해력이 더 중요한 문제이다. 문제가 길지만 그런 문제들은 대신 코딩이 단순하다. const solution = (survey, choices) => { let answer = ''; let arr = [ {name : 'R', num : 0}, {name : 'T', num : 0}, {name : 'C', num : 0}, {name : 'F', num : 0}, {name : 'J', num : 0}..
코딩테스트 연습 - 정수 내림차순으로 배치하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 숫자 내림차순으로 배치하는 문제이다. 문자열로 만드는 방법에서 포문을 사용했다. const solution = (n) => { let arr = String(n) .split("") .sort().reverse() let answer = "" for(let val of arr){ answer += (val) } // console.log(n) return Number(answer); } includes를 써..
코딩테스트 연습 - 소수 찾기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소수의 개수를 찾는 문제다 1. 이중 포문으로 풀어준다. 겉의 포문은 구하려는 숫자(n)이고 안쪽 포문은 소수인지 검사하는 숫자(i)이다 2. n의 끝까지 검사하면 시간초과가 되기 때문에 그 절반인 2를 나누 숫자까지 i를 증가시켰다. 3. 하지만 그것도 시간초과가 떴다. 검색한 결과 따라서 n의 루트만큼 돌게 시켰다. function solution(n) { let answer = 0; if(n == 2) return 1..
코딩테스트 연습 - 문자열 내 마음대로 정렬하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 푼 순서 1. n과 val을 한 객체에 같이 넣으려고 했는데 잘 안됐다. 그래서 n 따로 val 따로 넣어줬다. 2. 따로 된 둘을 합쳤다. 3. 분류를 하는데 n 안의 val들을 분류했다. 4. n들을 기준으로 분류했다. 배운 것 : 한 번에 안되면 나눠서 하자 function solution(strings, n) { let tempArr = {nVal: []} let tempArr2 = [] //..
https://stackoverflow.com/a/72336399/5328663 Error: req#logout requires a callback function can't able to find solution of this tried everything, i am just new in using passport. Error: req#logout requires a callback function i have coded this before but that time i have not received any... stackoverflow.com app.post('/logout', function(req, res, next) { req.logout(function(err) { if (err) { ret..
Logstash Logstash가 인덱스를 바꾸면 기존 db의 데이터를 못받아온다. 대신 새 데이터를 입력하면 그 값은 받아온다. 로그스태시가 인덱스를 바꿔도 디비의 데이터를 받아와야 하는게 맞지 않나. 추츧하자면 첫째, 내 쿼리문에 있는 updatedat가 인덱스 바꾸면 데이터를 불러오는데 문제가 생긴다. 다른 것이 떠오르면 추가할 예정 쿼리문으로 테이블 세 개 합치기 물품테이블에 서브카테고리, 브랜드 테이블들을 합쳐야 했다. 찾아보니 조인을 두 번 쓰면 됐다 select p.name, b.name, s.name from product as p join brand as b on p.brandid = b.id join subcategory as s on p.subcategoryid = s.id; 깃 되돌..
공부, 개발을 하다보면 매너리즘에 빠질 때가 있다. 나 또한 엘라스틱 서치로 검색을 개발하다 진척이 없어 개발을 하기 힘든 때가 3일 동안 있었다. 의욕없이 억지로 개발할 때만큼 고역인 것도 없다. 그래도 개발은 해야 되기에 유튜브의 댓글에서(천재들보다 4배 빨리 배우는 학습법 - YouTube) 좋은 아이디어를 얻었다. 바로 10분이든 1분이든 규칙적인 시간동안 로그를 기록하면 된다. 3/31부터 시작을 했는데 정말 효과가 좋았다. 10분마다 내가 뭘 했는지 기록을 해야하니 낭비시간을 줄이기도 하며, 맹목적인 코딩을 하기보단 글 쓰면서 정리를 했기 때문에 해결법을 찾기 수월했다. 기록을 했기 때문에 전체를 보기도 수월해졌다.

엘라스틱서치 fetchProducts에서 query 안에 match를 사용해서 검색어를 입력하고 결과를 출력하게 했다. 검색할 때 같은줄 알았던 '마우스', '마우스2'는 다른 단어로 인식하지만 '샤넬 헤드셋', '샤넬 메인보드'의 '샤넬'은 같은 단어로 포함된다. 따라서 엘라스틱서치에서 match를 쓰려면 띄어쓰기로 구분해야 한다. @Query(() => [Product]) async fetchProducts( @Args('searchKeyword') searchKeyword: string, ){ const result = await this.elasticsearchService.search({ index: 'testproduct5', // logstash.conf의 인덱스와 같아야 한다. query:..
SQL Query 칼럼 중 Like가 있었다. 이상하게 Like만 query문에 추가했을 때 Syntax 오류가 났었다. logstash의 index에 오류가 있는지 새 index에 시도를 하고, docker의 디비를 잘못 입력했는지 확인해봤지만 잘 안됐었다. 알고보니 like는 sql의 문법이기 때문에 문법을 컬럼값으로 가져오니 오류가 발생한 것이었다. 해결법으로 테이블에 별명을 주고 별명.like로 만들었다. 문제 해결 input { jdbc { jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-8.0.28.jar" jdbc_driver_class => "com.mysql.cj.jdbc.Driver" jdbc_connection_str..
https://velog.io/@devsh/JPA-연관-관계-매핑-실습해보기
ACID nestjs에서 지원하는 ACID를 썼다. 두 개의 트랜잭션에서 하나가 등록하면 다른 하나는 조회할 때 바뀌기 전 데이터가 조회될 수도 있기 때문에 ACID를 써야했다. nestjs에선 기본으로 Connection으로 지원한다. Connection을 변수로 받고 try...catch...finally로 진행한다. try문에 실행될 코드를 넣고 catch문에 rollbackTransaction을 하며 finally문에 release를 한다. Isolation startTransaction괄호 안에 넣어서 쓰는 것이며 READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE 이렇게 네 개가 있다. READ UNCOMMITTED 다른 트랜잭션의 변경..
docker exec -it /bin/bash // 기존 CLI를 docker exec -it //bin//bash // 이렇게 바꿨다 참고 https://stackoverflow.com/a/48835704/5328663

코드캠프5팀의 ERD와 정규화를 했다. 정제되지 않은 엑셀형태의 자료를 정규화 한 다음 그걸 가지고 ERD를 만드는게 정석이지만 성격이 급해 ERD부터 만들었다. 때문에 ERD가 확실한지는 의문이었다. 따라서 직접 자료를 집어넣어서 만든 ERD가 정상인지 확인했다. https://www.figma.com/file/xZoP3LSmKuj8UX9ytN7eCM/%EC%BD%94%EB%93%9C%EC%BA%A0%ED%94%845%ED%8C%80ERD?node-id=0%3A1 링크를 타고 가면 후르츠패밀리 어플의 간이 데이터를 정규화한 테이블들과 ERD가 있다. 1:N 처음엔 1:N 관계를 구체적으로 알지 못했다. 이미지데이터들과 상품이 대표적이다. 한 상품에는 여러 이미지가 들어간다. 처음에는 여러이미지의 ID를..

코드캠프5팀ERD (erdcloud.com) 코드캠프5팀ERD Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool. www.erdcloud.com 문제점 Product와 User를 Order 테이블로 다대다 관계로 만들었었다. 개정안 Seller와 Buyer를 만들어서 그림처럼 Order를 일대일 관계로 만들면 다대다를 피할 수 있게 된다.

ERD 구현 1차 완료 코드캠프5팀ERD (erdcloud.com) ERD 만들면서 고민 물품과 유저를 오더로 다대다 연결하는게 맞는지 의문 구매자는 유저테이블에서 직접 얻어온 사람을 말하고 판매자는 유저테이블을 물품에서 조인한 사람을 말한다. 따라서 오더에는 물품과(판매자) 유저(구매자)를 연결했다 아님 차라리 유저테이블에서 판매자 구매자 테이블을 파생시켜서 만들면 어떨까 개정 seller와 buyer를 만들어서 그 사이를 오더로 만들어줬다 그러면 다대다 테이블을 피할 수 있게 된다
ERD는 추가할 예정

참고한 사이트 FruitsFamily 후루츠패밀리 - 프리미엄 세컨핸드 거래 앱 페이지들 - 판매품 상세 페이지 - 작성후기 페이지 - 판매목록페이지 - 판매 페이지 - 회원 페이지 - 회원정보 수정 페이지 - 메인 페이지 - 채팅 페이지 - 어드민 페이지 페이지 한 눈에 보기 피그마 링크로 가기 판매품 상세 페이지 작성후기 페이지 후기 페이지가 있다면 어떻게 연결해야 하는지 내일 의논해봐야겠다. 판매목록페이지 판매 페이지 회원 페이지 회원정보 수정 페이지 메인 페이지 채팅 페이지 어드민 페이지
ext4.vhdx 용량 줄이는 법 1. Windows 터미널을 실행하여 명령프롬프트로 진행합니다. 2. diskpart입력하여 실행합니다. 3. 저 ext4.vhdx의 절대경로를 복사한 다음, 아래와 같이 입력합니다 select vdisk file="[절대경로]" 4. "DiskPart가 가상 디스크 파일을 선택했습니다." 라고 뜨면 compact vidks 라고 입력합니다 윈도우10/11에서 WSL2를 사용하고 계시는분들은 이 작업 하세요 : 클리앙 (clien.net) ext4.vhdx 데이터 C에서 다른 디스크로 옮기는 법 사이트에서 예시로 E디스크로 옮겼다 1- Shutdown all WSL distros Step 1: Stop Docker Step 2: Export, unregister then..
개발 과정 순서 엑셀 이알디 명세서 코딩 스웨거 깃 git pull upstream 브랜치 : master에서 가져오기 [Git] 5. Git 브런치 생성 및 이동 (branch / checkout) (tistory.com) 하루 계획 1. 짧은 회의 하기 - 그 날 각자 개발할 기능 얘기하기 2. pr 코드리뷰 하기 3. merge할 거 하기 4. up stream pull로 최신화 하기 5. 최신화된 branch에서 feature branch 만들고 기능 개발하기 6. origin에 push, upstream pr 날리기 7. 최신화된 branch에서 featurebranch2 만들고 기능 개발하기 commit convention : commit rule 면접 코테 2,3단계 ERD(정규화), 파이프..
TDD Jest MockImplementation TestModule
환경 : eslint 8.10.0 해결방법 .eslintrc.js module.exports = { parser: '@typescript-eslint/parser', parserOptions: { project: 'tsconfig.json', tsconfigRootDir: __dirname, sourceType: 'module', }, plugins: ['@typescript-eslint/eslint-plugin'], extends: [ 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended', //
- Total
- Today
- Yesterday
- 공부법
- 콜백
- Console
- arrow
- 코드캠프
- typeorm
- 코딩습관
- 호이스팅
- GraphQL
- 도커
- Rest
- function
- axios
- js
- NPM
- Callback
- yarn
- elasticsearch
- 에러
- docker
- 독커
- Playground
- Spread
- 명령어
- 백틱
- arrowfunction
- nodemon
- postman
- 프로그래머스
- error
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |