inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

로그인한 user의 비밀번호를 변경하는 API updateUserPwd 로직

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

quiz19 -2 에서 토큰기반인증(로그인)된 유저의 비밀번호 변경 로직을 구현하고 있는데요.. resolver와 service의 연결부분에서 에러가 발생하는데 혼자서 해결이 어려워 문의드립니다. 제가 생각한 updateUserPwd의 로직은 유저가 있는지의 여부 확인 비밀번호의 일치 여부 확인 bcrypt로 변경하고자하는 비밀번호의 암호화 암호화된 변경비밀번호를 해당하는 email의 DB에 저장 이렇게 하면 끝나는 로직이라고 생각하고 소스코드를 작성했습니다. 1차적으로 제가 생각한 로직에 빠진 부분이 있는지 궁금하고 지금의 소스코드로 어떤부분을 보완해야하는지 궁금합니다.(현재 코드블록으로 공유한 내용은 users.service.ts에서 return부분에 where에서 에러가 발생하는 상황입니다..) 추가로 필요한 정보나 내용, 소스코드가 있으면 추가적으로 공유하도록 하겠습니다. 도와주세요~~~ 나머지 import해온 class들은 수업을 통해서 그대로 가져온 내용들입니다. //users.resolver.ts @UseGuards(gqlAuthAccessToken) @Mutation(() => String) updateUserPwd( @Args('email') email: string, @Args('password') password: string, ): string { this.usersService.updateUserPwd({ email, password }); return '비밀번호 수정 성공'; } //users.service.ts async updateUserPwd({ email, password, }: IUserServiceUpdateUserPwd): Promise<UpdateResult> { const user = await this.findOneByEmail({ email }); if (!user) throw new UnprocessableEntityException('등록되지 않은 이메일 입니다.'); const isAuth = await bcrypt.compare(password, user.password); if (!isAuth) throw new UnprocessableEntityException('틀린 암호입니다.'); const hashedPassword = await bcrypt.hash( password, Number(process.env.SALT), ); return this.UsersRepository.update( { password: hashedPassword }, { where: { email: user.email }, }, ); }

  • nestjs
  • graphql
zeler1004 댓글 1 좋아요 0 조회수 1097

모의문제 - 작업형2

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

모의문제를 여러 모델로 학습해보려고 하는데 코랩환경에서는 워닝이 없이 잘 실행되는데 시험 환경에서 위와 같은 오류가 발생하여 질문드립니다.

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
이현정 댓글 1 좋아요 0 조회수 360

공 굴리기 코드 질문드립니다.

미해결

자바 코딩테스트 - it 대기업 유제

클래스 사용해서 작성했는데, 계속 무한 반복을 도는 것 같습니다. 어디가 잘못된건지 잘 모르겠습니다. import java.util.*; class Node implements Comparable<Node>{ int x; int y; int c; Node(int x,int y, int c){ this.x=x; this.y=y; this.c=c; } @Override public int compareTo(Node o) { return this.c - o.c; } } class Main { public static int n,m; public static int INF = (int)1e9; public static boolean[][] visit; public static int[] dx = {0,0,1,-1}; public static int[][] map,dist; public static int[] dy = {1,-1,0,0}; public static int dij(int s1,int s2,int e1, int e2) { PriorityQueue<Node> q =new PriorityQueue<>(); q.offer(new Node(s1,s2,0)); dist[s1][s2] = 0; while(!q.isEmpty()) { Node tmp = q.poll(); int nowx = tmp.x; int nowy = tmp.y; int nowcnt = tmp.c; if(nowcnt>dist[nowx][nowy]) continue; for(int i=0; i<4; i++) { int nx = nowx+dx[i]; int ny = nowy+dy[i]; while(nx>=0 && ny>=0 && nx<n && ny<m && map[nx][ny]==0) { //맵의 범위안을 만족하면 계속 같은 방향으로 이동 nx+=dx[i]; ny+=dy[i]; nowcnt++; } //벽에 막혔다. nx-=dx[i]; //이전 칸으로 이동 ny-=dy[i]; nowcnt--; //이전 칸으로 이동했으니까 갯수 하나 감소 if(dist[nx][ny]>nowcnt) { //우선순위 큐에 넣기 dist[nx][ny] = nowcnt; q.offer(new Node(nx,ny,dist[nx][ny])); } } } //답 출력 if(dist[e1-1][e2-1]==Integer.MAX_VALUE) return -1; return dist[e1-1][e2-1]; } public int solution(int[][] board, int[] s, int[] e){ int answer = 0; n=board.length; m=board[0].length; dist = new int[n][m]; for(int i=0; i<n; i++) Arrays.fill(dist[i], INF); map = new int[n][m]; for(int i=0; i<n; i++) { for(int j=0; j<m;j++) { map[i][j] = board[i][j]; } } answer = dij(s[0],s[1],e[0],e[1]); return answer; } public static void main(String[] args){ Main T = new Main(); System.out.println(T.solution(new int[][]{{0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0}, {1, 0, 1, 1, 1, 0}, {1, 0, 0, 0, 0, 0}}, new int[]{1, 0}, new int[]{4, 5})); System.out.println(T.solution(new int[][]{{0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0}, {1, 0, 1, 1, 1, 0}, {1, 0, 0, 0, 0, 0}}, new int[]{0, 0}, new int[]{4, 2})); System.out.println(T.solution(new int[][]{{1, 0, 1, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 1, 0}, {1, 1, 0, 1, 1}, {0, 0, 0, 0, 0}}, new int[]{0, 3}, new int[]{4, 2})); System.out.println(T.solution(new int[][]{{0, 1, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0}, {0, 1, 1, 0, 1, 1}, {0, 0, 0, 0, 0, 0}}, new int[]{0, 0}, new int[]{4, 5})); System.out.println(T.solution(new int[][]{{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}}, new int[]{0, 0}, new int[]{4, 3})); } }

  • java
  • 코딩-테스트
vkfksaosldk 댓글 1 좋아요 0 조회수 309

translateY대신 애플에서 사용한 것 처럼 matrix로 scale의 크기를 주려고 하는데

미해결

애플 웹사이트 인터랙션 클론!

안녕하세요!! 강의를 전부 듣고 코드를 뜯어보며 복습중에 있습니다. section-0에서 사용한 것을 이용해 스크롤 될 때 matrix로 Text에 scale(80)정도로 주려고 코드를 입력해보니 적용은 되었으나 스크롤을 빠르게 올릴시에 정상적으로 사이즈가 줄어들지 않고 줄어들다 말거나 그러더라구요...ㅠㅠ 폰트 픽셀도 많이 깨지는 현상이 발생하구요. 혹시 해결하려면 어떤식으로 접근해야 할까요? 해당 코드 첨부드립니다. const sectionInfo = [ { // section-0 type: "sticky", heightNum: 5, scrollHeight: 0, objs: { container: document.querySelector("#scroll-section-0"), messageA: document.querySelector("#scroll-section-0 .main-message.a"), messageB: document.querySelector("#scroll-section-0 .main-message.b"), messageC: document.querySelector("#scroll-section-0 .main-message.c"), messageD: document.querySelector("#scroll-section-0 .main-message.d"), }, values: { messageA_opacity_in: [0.4, 1, { start: 0, end: 0.05 }], messageA_opacity_out: [1, 0, { start: 0.15, end: 0.2 }], messageA_scale_in: [1, 80, { start: 0.05, end: 0.25 }], messageA_scale_out: [80, 1, { start: 0.25, end: 0.05 }], messageB_opacity_in: [0, 1, { start: 0.2, end: 0.25 }], messageB_opacity_out: [1, 0, { start: 0.35, end: 0.4 }], messageB_translateY_in: [50, 0, { start: 0.2, end: 0.25 }], messageB_translateY_out: [0, -50, { start: 0.35, end: 0.4 }], messageC_opacity_in: [0, 1, { start: 0.4, end: 0.45 }], messageC_opacity_out: [1, 0, { start: 0.55, end: 0.6 }], messageC_translateY_in: [50, 0, { start: 0.4, end: 0.45 }], messageC_translateY_out: [0, -50, { start: 0.55, end: 0.6 }], messageD_opacity_in: [0, 1, { start: 0.6, end: 0.65 }], messageD_opacity_out: [1, 0, { start: 0.75, end: 0.8 }], messageD_translateY_in: [50, 0, { start: 0.6, end: 0.65 }], messageD_translateY_out: [0, -50, { start: 0.75, end: 0.8 }], }, }, ]; function calcValues(values, currentScrollY) { let returnValue; const currentSectionHeight = sectionInfo[currentSection].scrollHeight; // 현재 스크롤 섹션에서 스크롤 된 범위를 비율로 구하는 식 const scrollRatio = currentScrollY / currentSectionHeight; if (values.length === 3) { const scrollAniStart = values[2].start * currentSectionHeight; const scrollAniEnd = values[2].end * currentSectionHeight; const scrollAniHeight = scrollAniEnd - scrollAniStart; if (currentScrollY >= scrollAniStart && currentScrollY <= scrollAniEnd) { returnValue = ((currentScrollY - scrollAniStart) / scrollAniHeight) * (values[1] - values[0]) + values[0]; } else if (currentScrollY < scrollAniStart) { returnValue = values[0]; } else if (currentScrollY > scrollAniEnd) { returnValue = values[1]; } } else { returnValue = scrollRatio * (values[1] - values[0]) + values[0]; } return returnValue; } function playAnimation() { const objs = sectionInfo[currentSection].objs; const values = sectionInfo[currentSection].values; const currentScrollY = scrollY - prevScrollHeight; const currentSectionHeight = sectionInfo[currentSection].scrollHeight; const scrollRatio = currentScrollY / currentSectionHeight; switch (currentSection) { case 0: // message if (scrollRatio <= 0.05) { objs.messageA.style.opacity = calcValues( values.messageA_opacity_in, currentScrollY ); } else { objs.messageA.style.opacity = calcValues( values.messageA_opacity_out, currentScrollY ); objs.messageA.style.transform = `matrix(${calcValues( values.messageA_scale_in, currentScrollY )}, 0, 0, ${calcValues( values.messageA_scale_in, currentScrollY )}, 0, 0)`; }

  • HTML/CSS
  • javascript
  • 웹-디자인
  • svg
  • 인터랙티브-웹
  • 클론코딩
DDU 댓글 1 좋아요 0 조회수 444

수강 기간 관련 문의입니다.

미해결

수학으로부터 인류를 자유롭게 하라(기초대수학편)

안녕하세요 지식 공유자님 수강평이 워낙 좋아 언제고 수학에 대한 기본기를 다시 상기시키고자 강의를 구매하고 아직 수강하지 않은 상태입니다. 수강 기간이 정해져있다는건 알고 구매하였지만, 여느 강의 사이트와 같이 강의를 수강한 시점부터 강의 기간이 측정될거라 여겨 덮어놓고 지냈지만 인프런은 강의를 구매한 시점부터 수강 기간이 확정되는 시스템이네요 .. 강의를 시청하지 않은 시점이라 인프런 고객센터를 통해 해당 부분 건의를 했지만 구매 후 일주일이 넘어 조치가 어렵다는 답변을 받았습니다. 이 부분 공유자님께 건의할 내용이 아니라 생각되지만 제 입장에선 다른 방법이 없네요😂 괜찮으시다면 수강 기간을 좀 더 길게 변경해주셨으면합니다.

  • 대수학
  • 수강
  • 수강기간
Ond: 댓글 1 좋아요 1 조회수 794

param과 queryString차이

해결됨

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

파라미터로 id나 URL 등 값 받아올 때와 쿼리스트링으로 받아올 때 파라미터로도 perPage나 page 등 받아올 수 있는데 어떤 차이로 파라미터와 쿼리스트링을 나누어서 사용해야 할지 질문드립니다. 단순히 파라미터는 http 요청시 한 번 정해지면 고정되는 값에 사용하고 쿼리스트링은 매 요청마다 변하는 값에 사용한다고 생각이 드는데 맞을까요??

  • node.js
  • express
  • nestjs
  • typeorm
이재현 댓글 1 좋아요 1 조회수 1138

dto와 영속성 관리

해결됨

실전! 스프링 데이터 JPA

안녕하세요 스프링 부트 시리즈를 거의 다 들었는데요, 엔티티를 영속성 컨텍스트에서 관리하면 1차 캐시가 생겨서 2번째 조회할 때는 db가 아니라 영속성 컨텍스트에서 가져온다고 알고있는데요 그래서 공부하면서 스프링 데이터 jpa랑 querydsl로 회원 조회, 수정, 삭제 등 공부하면서 api 호출로 값을 받을 때 dto를 통해서 받는 로직을 짜고 테스트를 했습니다. member1을 읽은 뒤에 db에서 강제로 이름을 member2로 바꾸고 다시 호출했는데 member2로 잘 읽어 오더라고요 member1을 읽어와서 영속성 컨텍스트에 이미 올라있는 정보를 바로 가져올 줄 알았는데 제 예상이 틀렸습니다. 이게 엔티티를 직접 조회한게 아니라 dto를 통해 조회해서 그런건가요? 아니면 혹시 제가 뭘 잘못알고 있는 걸까요?

  • java
  • spring
  • spring-boot
  • jpa
ko 댓글 1 좋아요 0 조회수 273

라우터 ip 부여 (라우터 강의)

미해결

네트워크, 그림으로 이해하자(2022ver.)

자료 5pg를 보면 첫번째 라우터는 192.168.10.254와 192.168.20.1로 부여 했습니다. 또 두번째 라우터는 부여된 ip가 192.168.20.254와 192.168.30.254로 부여되어 있는데...ip 라우터는 해당 범위 내의 장치(컴퓨터등...)에 지정된 ip를 제외한 아무 ip나 부여해도 되는건가요? 예를들어 첫번째 라우터가 네트워크 1에 해당하는 192.168.10.233도 ip 부여가 가능한가요?

  • 네트워크
  • 프로토콜
이창헌 댓글 1 좋아요 1 조회수 550

h2데이터 베이스에 데어터가 들어오지 않습니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. java 17에 스프링 부트는 3.1.0 버전을 사용중이고 h2 데이터 베이스는 최신 버전을 다운 받았습니다. 스프링부트 3.0버전 이상은 h2 2.1.214버전 이상 사용하는게 맞나요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
// 댓글 1 좋아요 0 조회수 591

UpdateView - 포스트 수정 페이지 만들기 에서 질문이 있습니다.

해결됨

Do It! 장고+부트스트랩: 파이썬 웹개발의 정석

26:27초 쯤에 tests.py의 test_update_post() 함수에서 카테고리의 pk를 적어줘야하는지 이해가 잘 되지 않습니다. 앞서 setUp() 함수에서 post_001과 post_002를 생성할 때는 category를 입력할 때 pk 는 사용하지 않고 진행했습니다. 하지만 왜 포스트 수정을 핱때는 category를 입력할 때 pk 를 사용해야 하는지 잘 모르겠습니다.

  • HTML/CSS
  • javascript
  • python
  • django
  • bootstrap
  • aws
  • docker
  • tdd
wodnr0710 댓글 1 좋아요 0 조회수 428

g.dart 파일

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

visual studio에서는 숨기는방법 없나여?

  • flutter
  • 하이브리드-앱
혁이 댓글 3 좋아요 0 조회수 532

파티션 복구 질문입니다.

해결됨

디지털포렌식 입문자를 위한 디지털포렌식 전문가 2급 실기 시험대비 강의(Encase/Autopsy)

Unrecognized File System 일 경우 HxD로 파일 백업본 찾아 복구하는 방법 이외에 Encase로 복구할 수 있는 방법은 없나요?

  • Forensic
soul_deep 댓글 1 좋아요 0 조회수 410

a = df.copy()

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

작업형 들어가기 전에 원데이터를 카피해서 a데이터프레임을 만들어서 a로 계산해도 될까요?

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
sychang2000 댓글 1 좋아요 1 조회수 253

원핫인코딩/라벨인코딩 방법 선택

해결됨

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

선생님 안녕하세요, 원핫인코딩과 라벨인코딩 중에서 어떤 것으로 인코딩을 수행할지에 대한 기준이 헷갈려, 질문을 남깁니다. 원핫인코딩 시에, train = pd.get_dummies(train) 과 같이 int/float형 데이터와 모두 합쳐서 인코딩을 진행해도 문제가 없나요?? 라벨인코딩처럼 object형 컬럼만 추출해서 원핫인코딩을 진행하려고하니 오류가 발생하여 혹시 어떤 문제가 있는건지 궁금합니다! # object 컬럼 원핫/라벨인코딩 cols = train.select_dtypes(include='object').columns # print(cols) for col in cols: train[col] = pd.get_dummies(train[col]) test[col] = pd.get_dummies(test[col]) 위와 같은 코드를 추가하여 실행하였을 때 아래와 같은 오류가 발생합니다. --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-38-cba2437473af> in <cell line: 23>() 22 # print(cols) 23 for col in cols: ---> 24 train[col] = pd.get_dummies(train[col]) 25 test[col] = pd.get_dummies(test[col]) 26 /usr/local/lib/python3.10/dist-packages/pandas/core/frame.py in _set_item_frame_value(self, key, value) 4098 len_cols = 1 if is_scalar(cols) else len(cols) 4099 if len_cols != len(value.columns): -> 4100 raise ValueError("Columns must be same length as key") 4101 4102 # align right-hand-side columns if self.columns ValueError: Columns must be same length as key

  • python
  • 머신러닝
  • 빅데이터
  • pandas
  • 빅데이터분석기사
terry2 댓글 2 좋아요 0 조회수 750

usememo 자식컴포넌트 리렌더링 질문

해결됨

[리뉴얼] React로 NodeBird SNS 만들기

안녕하세요 제로초님 궁금한게 있어서요. 이러한 부모자식 관계에서 props로 함수를 넘겨줄때는 usecallback+자식컴포넌트(react.memo)로 자식컴포넌트의 리랜더링을 방지할 수 있다고 배웠습니다. 리액트는 함수나, style={{}}, 등 다 객체 참조값을 비교하여 부모컴포넌트가 리랜더링되면서 생성된 함수는 새로운 참조값을 갖게되까 변경사항이 있다고 생각한다. 라고 알고있습니다. 근데 이 부분에서는 style객체를 usememo만으로 리렌더링을 방지한다. 라고 하셨는데 그 말씀이 ButtonWrapper 의 컴포넌트에서 retun() 부분만 virtual dom 이 비교하고(함수자체는실행됨) 바뀐게 없네 하고 return 부분을 다시 안그린다는 의미에서 리렌더링을 방지한다고 하신건지..?? 아니면 아예 ButtonWrapper컴포넌트함수 자체가 react.memo를 사용한 것 처럼 리렌더링이 안되는건지 궁금합니다. ButtonWrapper컴포넌트의 리렌더링을 막으려면 ButtonWrapper에react.memo적용 후 usememo를 사용해야되는것 아닌가해서요. usecallback과 마찬가지로요 예제로 이런식으로 해봤는데 부모컴포넌트가 리렌더링되면 자식컴포넌트의 스타일을 usememo로 감싸주어도 리렌더링이 되더라구요??이 역시 자식컴포넌트에 React.memo를 감싸주고나서야 자식 컴포넌트가 리렌더링 안되는데 수업에서는 memo를 쓰지않아도 리렌더링이 되지않는다고 한 이유가 궁금합니다.

  • react
  • redux
  • node.js
  • express
  • next.js
gxpk0721 댓글 1 좋아요 0 조회수 876

webpack.config.js에서의 CommonJS방식에 대한 질문

해결됨

프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)

안녕하세요! 수업시간에 보면 webpack.config.js 웹팩 설정파일을 CommonJS방식으로 작성하였는데요, 웹팩은 Node.js에서 동작하는 프로그램이고, Node.js가 사용하는 모듈시스템이 CommonJS이므로 웹팩 설정파일을 CommonJS로 작성한 건 이해했습니다. 그런데 문득 드는 궁금증이, CommonJS 모듈 시스템을 채택했던 NodeJS 환경에서 ES Module 을 사용하려면 Babel과 같은 트랜스파일러(transpiler)를 사용했어야 했는데요. NodeJS 버전 13.2부터 ES모듈 시스템에 대한 정식 지원 이 시작됨에 따라 다른 도구 없이 NodeJS 에서 손쉽게 ES Module 을 사용할 수 있게 되었잖아요..? 그렇다면 노드버전 13.2부터는 webpack.config.js 를 CommonJS가 아닌, ES Module방식으로 작성해도 상관없는건가요?

  • node.js
  • 웹팩
  • babel
  • eslint
mememe_0 댓글 3 좋아요 0 조회수 874

구글 로그인 R.string.your_web_client_id이 없습니다

미해결

현직 개발자가 알려주는 안드로이드 앱 쉽게 만드는 방법

안녕하세요. 강의 만들어주셔서 감사드립니다. 구글 로그인 연동 해보고 있는데 google-services.json 파일 app 폴더에 복사해놓고 소스코드 작성하고 있는데, 저는 R.string.default_web_client_id가 없는데 혹시 어떻게 생성하셨나요?

  • android
sonaky47 댓글 1 좋아요 0 조회수 872

AddPathPattern 경로 세팅에서..?

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

======================================== [질문 내용] 안녕하세요.인터셉터 conifg 파일에서 addPathPattern()함수내 인터셉터 대상이되는 경로를 세팅할때 질문있습니다. ^^; 예를들어 /*/ abc.do 와 /**/ abc.do 의 경로세팅을 한다고했을때 위 두예시에서 차이점이 있을까요? 즉, 경로 중간에 *이 한개있을때와 2개있을때 차이점이 궁금합니다. 찾아봐도 잘 안나오는것 같아서 질문드립니다. (_ _)

  • spring
  • mvc
kulkulzaza 댓글 1 좋아요 0 조회수 385

인기 태그

인프런 TOP Writers

주간 인기글