묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Flutter 초입문 왕초보편
minSdkVersion에러(해결함)
094. sensor_plus 로 가속도 센서 값 얻기해당 영상 보면서 공부를 하다가 이런 에러를 발견 했습니다.android > app > build.gradle 들어가서 defaultConfig파트 찾으셔서 minSdkVersion을 21로 올리면 해결됩니다.
-
해결됨따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
false 나오시는분 이렇게 해보세요.
user.save((err, userInfo) => { if (err) return res.json({ success: false, err }) return res.status(200).json({ success: true }) }) 위 코드를 아래와 같이 바꾸니 잘되네요~ user.save() .then((userInfo) => res.status(200).json({ success: true })) .catch((err) => res.json({ success: false, err }));
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
로그인한 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 }, }, ); }
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
모의문제 - 작업형2
모의문제를 여러 모델로 학습해보려고 하는데 코랩환경에서는 워닝이 없이 잘 실행되는데 시험 환경에서 위와 같은 오류가 발생하여 질문드립니다.
-
미해결자바 코딩테스트 - 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})); } }
-
미해결애플 웹사이트 인터랙션 클론!
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)`; }
-
미해결
BindingResult 패러미터 위치 @ModelAttribute Item item 다음에 와야 하는 이유
이 이유가 뭔가요?@PostMapping("/add")public String addItemV1(@ModelAttribute Item item, RedirectAttributes redirectAttributes, BindingResult bindingResult) {이렇게 해도 잘 돌아가네요
-
미해결수학으로부터 인류를 자유롭게 하라(기초대수학편)
수강 기간 관련 문의입니다.
안녕하세요 지식 공유자님수강평이 워낙 좋아 언제고 수학에 대한 기본기를 다시 상기시키고자 강의를 구매하고 아직 수강하지 않은 상태입니다. 수강 기간이 정해져있다는건 알고 구매하였지만, 여느 강의 사이트와 같이 강의를 수강한 시점부터 강의 기간이 측정될거라 여겨 덮어놓고 지냈지만 인프런은 강의를 구매한 시점부터 수강 기간이 확정되는 시스템이네요 ..강의를 시청하지 않은 시점이라 인프런 고객센터를 통해 해당 부분 건의를 했지만 구매 후 일주일이 넘어 조치가 어렵다는 답변을 받았습니다. 이 부분 공유자님께 건의할 내용이 아니라 생각되지만 제 입장에선 다른 방법이 없네요😂 괜찮으시다면 수강 기간을 좀 더 길게 변경해주셨으면합니다.
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
param과 queryString차이
파라미터로 id나 URL 등 값 받아올 때와 쿼리스트링으로 받아올 때 파라미터로도 perPage나 page 등 받아올 수 있는데 어떤 차이로 파라미터와 쿼리스트링을 나누어서 사용해야 할지 질문드립니다.단순히 파라미터는 http 요청시 한 번 정해지면 고정되는 값에 사용하고 쿼리스트링은 매 요청마다 변하는 값에 사용한다고 생각이 드는데 맞을까요??
-
해결됨실전! 스프링 데이터 JPA
dto와 영속성 관리
안녕하세요 스프링 부트 시리즈를 거의 다 들었는데요,엔티티를 영속성 컨텍스트에서 관리하면 1차 캐시가 생겨서 2번째 조회할 때는 db가 아니라 영속성 컨텍스트에서 가져온다고 알고있는데요그래서 공부하면서 스프링 데이터 jpa랑 querydsl로 회원 조회, 수정, 삭제 등 공부하면서 api 호출로 값을 받을 때 dto를 통해서 받는 로직을 짜고 테스트를 했습니다.member1을 읽은 뒤에 db에서 강제로 이름을 member2로 바꾸고 다시 호출했는데 member2로 잘 읽어 오더라고요 member1을 읽어와서 영속성 컨텍스트에 이미 올라있는 정보를 바로 가져올 줄 알았는데 제 예상이 틀렸습니다.이게 엔티티를 직접 조회한게 아니라 dto를 통해 조회해서 그런건가요? 아니면 혹시 제가 뭘 잘못알고 있는 걸까요?
-
미해결네트워크, 그림으로 이해하자(2022ver.)
라우터 ip 부여 (라우터 강의)
자료 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 부여가 가능한가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2데이터 베이스에 데어터가 들어오지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.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버전 이상 사용하는게 맞나요?
-
해결됨Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
UpdateView - 포스트 수정 페이지 만들기 에서 질문이 있습니다.
26:27초 쯤에 tests.py의 test_update_post() 함수에서 카테고리의 pk를 적어줘야하는지 이해가 잘 되지 않습니다.앞서 setUp() 함수에서 post_001과 post_002를 생성할 때는 category를 입력할 때 pk는 사용하지 않고 진행했습니다.하지만 왜 포스트 수정을 핱때는 category를 입력할 때 pk를 사용해야 하는지 잘 모르겠습니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
g.dart 파일
visual studio에서는 숨기는방법 없나여?
-
해결됨디지털포렌식 입문자를 위한 디지털포렌식 전문가 2급 실기 시험대비 강의(Encase/Autopsy)
파티션 복구 질문입니다.
Unrecognized File System 일 경우HxD로 파일 백업본 찾아 복구하는 방법 이외에Encase로 복구할 수 있는 방법은 없나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
a = df.copy()
작업형 들어가기 전에원데이터를 카피해서 a데이터프레임을 만들어서a로 계산해도 될까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형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
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
usememo 자식컴포넌트 리렌더링 질문
안녕하세요 제로초님 궁금한게 있어서요.이러한 부모자식 관계에서 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를 쓰지않아도 리렌더링이 되지않는다고 한 이유가 궁금합니다.
-
해결됨프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
webpack.config.js에서의 CommonJS방식에 대한 질문
안녕하세요!수업시간에 보면 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방식으로 작성해도 상관없는건가요?
-
미해결현직 개발자가 알려주는 안드로이드 앱 쉽게 만드는 방법
구글 로그인 R.string.your_web_client_id이 없습니다
안녕하세요. 강의 만들어주셔서 감사드립니다.구글 로그인 연동 해보고 있는데 google-services.json 파일 app 폴더에 복사해놓고 소스코드 작성하고 있는데, 저는 R.string.default_web_client_id가 없는데 혹시 어떻게 생성하셨나요?