묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Flutter 중급 1편 - 클린 아키텍처
Mockito test를 하는 이유
Mock 가짜 객체를 만든다는 의미는 종속된 api 등에서 에러가 나거나 종속성을 제거를 하기 위한 단위 테스트를 위함 이라고 이해했는데 맞는걸까요? 오히려 1,2번 json data가 오류가 난게 api가 고장났다는 설정으로 가정한다면, 종속성을 제거하기 위해 mockito를 사용했다가 맞는건가요?
-
미해결홍정모의 따라하며 배우는 C언어
7.8 강질문입니다
강의에서 힌트를 보지않고 구현을하고 강의를 보앗더니 홍교수님이 작성하신 방법과 다르게 코드를 작성해서 구현을 햇는데요 아래와 같이 작성을 하엿는데 이게 어떠한경우에도 완벽한코드인지 감이 오질않습니다. 이렇게 작성햇을때 강의에서의 코드보다 단점이 있다면 어떤것일가요 #include <stdio.h> #define STOP '.' #define SPACE ' ' #define ENTER '\n' int main() { char ch; int chCount = 0,lineCount = 0, wordCount = 0; printf("Enter text : "); do{ ch = getchar(); if (ch != SPACE && ch!= STOP && ch!= ENTER) { chCount++; }else if (ch == SPACE || ch == ENTER || ch == STOP){ wordCount++; } if (ch == ENTER || ch == STOP){ lineCount++; } }while(ch != STOP); printf("Characters = %d, Words = %d, Lines = %d\n",chCount,wordCount,lineCount); }
-
미해결Java TPC (생각하고, 표현하고, 코딩하고)
질문있습니다.!
자바 TPC 강의 배운대로 테스트 해가면서 강의 진행하고 있었는데 궁금한 점이 생겼습니다. Scanner sc = new Scanner(System.in);String str = sc.next().uppercase();Scanner클래스라는 네모 박스안에 sc에 들어간 입력값과 (Scanner 클래스 네모 박스안에 들어가 있는) 메서드들이 일렬로 나열된 것을 떠올렸습니다.그런데 uppercase();는 스트링 클래스라는 박스안에 있는 메서드 인데 sc라는 스캐너 참조변수로 호출이 불가능해야 하지 않나요?선생님 그림그린 것처럼 설명해실수 있을까요? 그림이 도움이 많이 됐었거든요!(그림을 그려달라는 뜻 아닙니다 ㅎㅎㅎ) 박스 예시) --------------------------------------------------------- 입력값 ㅣ next() l findinLine() ㅣ ...... uppercase()?? --------------------------------------------------------- uppercase는 scanner클래스 안의 메서드가 아닐텐데요 ㅠㅠ..?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
밴엔드 개발자로 취업을 하고싶은데 이강의부터 시작해도될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 현재 자바 문법같은거 다떼고 코딩테스트 준비하고 알고리즘만 죽어라파고있는데, 아무래도 코딩테스트만으로 취업하기는 문이 좁다보니 실직적인 백엔드를 익히려합니다. 이강의 부터 시작하면될까요? 솔직히 듣는데 뭐가 뭔지 잘모르겠습니다. 제가 어디서부터 어떻게 시작하면 좋을까요 ㅠㅠ
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
Toolkit 사용 시 질문드립니다.
안녕하세요 제로초님,강의로 배운 코드를 Redux-Toolkit으로 전환하여 실행시켜보았는데요. context.store.dispatch(END); await context.store.sagaTask.toPromise(); SSR 코드에 위 코드가 없어진 것을 제외하면 크게 다른 부분은 없는 것 같은데 에러가 납니다. 에러는 처음 실행 시 Hydration failed because the initial UI does not match what was rendered on the server. 이렇게 나타나는데 에러창을 끄면 일단 초기 10개의 게시물은 불러와집니다. 이후 스크롤을 내려 dispatch(loadPosts({lastId}))가 실행되면 404 에러가 나면서 rejected됩니다.(그리고 콘솔에서는 404 에러가 나오는데 에디터 터미널에서는 처음 성공한 200코드 이후에 반응이 없습니다.) 검색해보니 위 에러코드는 SSR로 렌더링된 UI와 클라이언트 UI가 일치하지 않아서라고 하는데Toolkit 적용하기 전의 코드는 잘되어서 어느 부분을 체크해보아야 할 지 모르겠습니다. Toolkit적용 시 SSR을 위해 따로 고려해야하는 부분이 있을까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
antd Menu toggle device toolbar 질문입니다.
메뉴를 구현하고 모바일버전에서도 확인을 하고싶어서 개발자도구에서 toggle device toolbar를 클릭하고 메뉴의 버튼들을 눌렀는데 이러한 에러가 뜹니다. 그리고 모바일로 접속해서 클릭을 해봐도 동일한 오류가 뜹니다. 이러면은 antd-mobile로 메뉴를 두개로 구성을 해야하나요? 아래는 제 코드입니다. import PropTypes from "prop-types"; import React, { useCallback } from "react"; import Link from "next/link" import {Menu, Input, Row, Col} from "antd"; import UserProfile from "./UserProfile"; import LoginForm from "./LoginForm"; import styled from "styled-components"; import {useSelector} from "react-redux"; import Router from "next/router"; import useInput from "../hooks/useInput"; const InputSearch = styled(Input.Search)` vertical-align: middle; `; const AppLayout = ({ children }) => { const {me } = useSelector((state) => state.user); const [search, changeSearch] = useInput(''); const searchHashtag = useCallback(() => { Router.push(`/hashtag/${search}`); }, [search]); return ( <div> <Menu mode="horizontal"> <Menu.Item key="home"> <Link href={"/"}><a>home</a></Link> </Menu.Item> <Menu.Item key="profile"> <Link href={"/profile"}><a>profile</a></Link> </Menu.Item> <Menu.Item key="search"> <InputSearch enterButton value={search} onChange={changeSearch} onSearch={searchHashtag}/> </Menu.Item> <Menu.Item key="signup"> <Link href={"/signup"}><a>signup</a></Link> </Menu.Item> </Menu> <Row gutter={8}> <Col xs={24} md={6}> {me ? <UserProfile/> : <LoginForm />} </Col> <Col xs={24} md={12}>{children}</Col> <Col xs={24} md={6}><a href="https://velog.io/@mayrang" target="_blank" rel="noreferrer noopener">Made by Mayrang</a> </Col> </Row> </div> ); }; AppLayout.propTypes = { children: PropTypes.node.isRequired, }; export default AppLayout;
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
다솜이형... 나의 완패야... 인정할게... (1620 시간초과 관련)
어디서 시간이 많이 걸리는지...모르겠습니다 ㅜㅜ 아래는 제가 스스로 짠 코드인데 시간초과가 나왔습니다. 초록 글씨 코드는 강사님 코드 딱 한번 보구 제 방식대로 만들자 해서 비슷하게 따라하려 했는데 또 시간초과가 나옵니다 ㅠ 제가 처음 짠 검은 글씨 코드는 입력을 받자마자 출력을 하는게 아니라 입력 다 받구나서 마지막에 몰아서 출력시키는게 원인같은 의심이라도 드는데, 강사님 코드 보구 짠 초록글씨는 왜 시간초과가 나는지 너무 궁금하고 억울(?)합니다. #include<bits/stdc++.h> using namespace std; int N, M; map<int, string> dogam; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> M; string name; for (int i = 1; i <= N; i++) { cin >> name; dogam.insert(make_pair(i, name)); } string Q; multimap<int, string> A; for (int i = 1; i <= M; i++) { cin >> Q; if (isdigit(Q[0])) { //숫자가 들어올때 , A.insert(make_pair(i, dogam.find(stoi(Q))->second)); } else {//질문이 문자인경우 for (auto it = dogam.begin(); it != dogam.end(); it++) { if (it->second == Q) A.insert(make_pair(i, to_string(it->first))); } } } for (auto it = A.begin(); it != A.end(); it++) // 출력을 받자마자 하는게 아니라 여기서 몰아서 했습니다.. cout << it->second<< "\n"; } #include <bits/stdc++.h> using namespace std; int N, M; string input; map<int, string> dogam_byint; map<string, int> dogam_bystr; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> M; for (int i = 1; i <= N; i++) { cin >> input; dogam_byint.insert(make_pair(i, input)); dogam_bystr.insert(make_pair(input, i)); } for (int i = 1; i <= M; i++) { cin >> input; if (isalpha(input[0])) cout << dogam_bystr.find(input)->second << endl; else cout << dogam_byint.find(stoi(input))->second << endl; } }
-
미해결만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)
궁금한 점 질문 드립니다~
1. memberDoc에 사용자가 이미 추가된 상태인지를 판별해서 addResult 이후에 성공 코드(200, 201)를 리턴하는 방식 대신 트랜잭션 콜백 안에서 성공 코드를바로 리턴하는 방식을 사용하지 않는 이유가 있을까요? 코드로 표현하면 아래와 같습니다. await firebaseInstance.Firebase.runTransaction(async (transaction) => { const memberRef = firebaseInstance.Firebase.collection('members').doc(uid); const screenName = (email as string).replace('@gmail.com', ''); const screenNameRef = firebaseInstance.Firebase.collection('screen_names').doc(screenName); const memberDoc = await transaction.get(memberRef); if (memberDoc.exists) { // 이미 추가된 상태 return res.status(201).json({ result: true, id: uid }); } await transaction.set(memberRef, addData); await transaction.set(screenNameRef, addData); return res.status(200).json({ result: true, id: uid }); }); 2. screenName을 알기 위해 위해 screen_names라는 컬렉션을 새로 추가하셨는데, 컬렉션을 추가하지 않고 members 컬렉션을 uid로 조회한 뒤 해당 도큐먼트의 email값을 이용하는 방법을 이용하지 않는 이유가 있을까요?
-
미해결C#으로 로그인 가능한 앱 구현하기 Xamarin 자마린 폼즈 (안드로이드, 윈도우)
api를 만든후
api를 만든후 exe 파일로 뽑아야 하는데요 게시를 해도 exe파일은 보이질 않는데 폴더로 게시로 하는게 아닌건지요
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
아니 왜 갑자기 엣지 지원이 안되는건가요
크롬안쓰는 엣지유저로서 맘이 아픕니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
교재 파일 문의
안녕하세요! 제가 잘 못찾겠어서 문의드립니다. 혹시 강의 자료가 pdf로 제공된다고 알고 있는데 자료는 어디 있을까요? TRM과 같은 문서 밖에 보이지 않아서요! 감사합니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
img파일이 제대로 확인되지 않습니다.
위의 사진처럼 코드를 작성한 후 결과물을 확인하면 상품이미지가 출력되지 않습니다. 혹시 어떤점을 제가 실수하였을까요?
-
미해결처음 배우는 리액트 네이티브
6분쯤 디버깅했을때 화면이 뜨질않습니다.(오류코드 또한 뜨지않습니다)
딱히 오류나는것도없는데 6분06초 네비게이션 컨테이너 안에 <Auth/> 를 넣었을때 화면이 뜨질않습니다 아래 깃허브 주소입니다. https://github.com/park980929/Study-React
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
watchSchedules에서 쿼리를 옮길때 toUtc() 조건은 빠져 있습니다.
StreamBuilder에서 필터링할때는 toUtc()를 사용해서 타임존을 일치 시켜서 비교했는데 8:55 쯤에 작성된 쿼리에는 이 조건이 사라져 있습니다. 여기서는 타입이 GeneratedColumn이라서 같은 방법으로 써지지 않는데 어떻게 하면 되나요?
-
미해결홍정모의 따라하며 배우는 C언어
10.18 질문입니다.
include <stdio.h>#define COLS 4 int sum_1d(int arr[], int n);int sum_2d(int arr[][COLS], int rows); int main(){ int a = 1; 3; //Literals are constants that aren't symbolic 3.14f; int b[2] = { 3,4 }; (int[2]) {3, 4};//compound literal //int c[2] = (int[2]){ 3,4 }; //error int arr1[2] = { 1,2 }; int arr2[2][COLS] = { {1,2,3,4},{5,6,7,8,} }; printf("%d\n", sum_1d(arr1, 2)); printf("%d\n", sum_2d(arr2, 2)); printf("\n"); printf("%d\n", sum_1d((int[2]) { 1, 2 }, 2)); printf("%d\n", sum_2d((int[2][COLS]){ {1,2,3,4},{5,6,7,8} }, 2)); printf("\n"); int* ptr1; int(*prt2)[COLS]; ptr1 = (int[2]){ 1,2 }; ptr2 = (int[2][COLS]){ {1,2,3,4},{5,6,7,8,} }; printf("%d\n", sum_1d(ptr1, 2)); printf("%d\n", sum_2d(ptr2, 2)); printf("\n"); return 0;} int sum_1d(int arr[],int n){ int total = 0; for (int i = 0; i < n; ++i) total += arr[i]; return total;} int sum2d(int arr[][COLS], int rows){ int total = 0; for (int r = 0; r < rows; r++) for (int c = 0; c < COLS; c++) total += arr[r][c]; return total;} 저는 다 그대로 입력한거같은데 도대체 왜안되는거죠?
-
미해결웹 게임을 만들며 배우는 React에 TypeScript 적용하기
Props type 질문드립니다.
const Try: FunctionComponent<{tryInfo: TryInfo}> = ({ tryInfo }) => {...} 대신에 const Try = ({ tryInfo } : TryInfo) => {...} 로 써도 될까요? 둘 중 뭐가 많이 쓰이나요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
질문드립니다
import requests from bs4 import BeautifulSoup from openpyxl import Workbook keyword = input("검색어를 입력하세요") lastpage = input("마지막 페이지 번호를 입력해 주세요") pageNum = 1 for i in range(1, int(lastpage) * 10, 10): print(f"{pageNum}페이지 입니다.~~~~~~~~~~~~~~~~~") response = requests.get(f"https://search.naver.com/search.naver?sm=tab_hty.top&where=news&query={keyword}&start={i}") html = response.text soup = BeautifulSoup(html, 'html.parser') links = soup.select(".news_tit") wb = Workbook() ws1 = wb.active ws1.title = "연습" ws1.append(["제목", "링크"]) print(links) for link in links: title = link.text url = link.attrs['href'] print(title, url) ws1.append([title, url]) pageNum = pageNum + 1 wb.save(filename='연습.xlsx') 네이버 기사 제목과 url 수집한 걸 엑셀에 옮겨보려고 합니다. 터미널에서는 마지막 페이지 번호 입력를 4로 했다고 하면 총 40개의 제목과 링크가 나타나는데 엑셀에는 옮겨지기는 하는데 10개의 기사 제목, 링크만 옮겨집니다. 어떻게 수정해주어야 할까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findByID 소스 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. Class 'JdbcMemberRepository' must either be declared abstract or implement abstract method 'findById(Long)' in 'MemberRepository'라고 오류가 뜹니다. @Overridepublic Optional<Member> findByName(String name) { String sql = "select * from member where name = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } return Optional.empty(); } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); }}이런식으로 findByID가 정의 되있는데에도 계속 오류가 뜨네요 어떻게 해야될까요 ㅠㅠ
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
빌더의 장점
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 빌더 관련 설명에서 궁금한점 질문 드립니다. 빌더 장점 중 객체의 불변성 이야기 해주셨는데요, 멤버변수 final로 선언하고, 만약 변경 시 빌더를 이용해서 새로운 객체를 리턴하는것을 말씀하시는 걸까요? 감사합니다.
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
제이쿼리 질문있습니다
선생님 보이기를 눌렀을 때 '태그 선택자 a를 클릭했습니다' 는 딱 보이는데 감추기가 안됩니다 ㅠ 뭐가 문제일까요? - 다운로드가 필요한 파일은 해당 강의의 마지막 섹션에 모두 있습니다.