묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
블로그나 깃허브 업로드 질문
안녕하세요 앱만들기 강의를 열심히 수강 중인 수강생입니다.강의로 가이드 라인을 받으며 공부하니 혼자서는 놓쳤을 부분도 많이 챙길 수 있었습니다, 감사합니다.다름이 아니라 블로그나 깃허브에 업로드 할 수 있는 기준에 대해서 여쭤보려고 질문을 드립니다.저작권에 많이 신경쓰고 계시고, 제공된 자료나 강의 내용은 사용불가하다는 점 알고 있습니다.다만 예전에 제가 어디서 봤는지 기억은 안나지만 코드 자체를 올리는 건 괜찮다고 본 기억이 있는데,이 기억이 맞는지 여쭙고 싶습니다.만약 코드 자체를 올리는건 괜찮다고 하시면, 블로그나 깃허브에 공부 증빙용으로 업로드하려고 합니다.항상 좋은 강의를 제공해주셔서 감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
5-2 강의 내용 관련 질문있습니다.
안녕하세요. 선생님. 5-2 강의 내용 중 잘 이해가 되지 않는 것이 있어 질문드립니다.train.nunique()를 통해 나타난 컬럼 중 name, host_name, last_review, host_id 데이터를 삭제하신 이유가 궁금합니다.nunique()함수는 그 컬럼값 중 고유값이 몇 종류나 되는지 알려주는 것으로 알고 있는데, 그 값과 결측치의 개수가 서로 상관이 있어서 그런것인가요?가령, name같은 데이터는 강의에서 거의 전체 데이터 개수와 nunique함수를 통해 나타난 개수가 별로 차이가 나지 않을 만큼 많기에 지운다고 말씀하셨는데, 이 부분이 잘 이해되지 않습니다.
-
해결됨한 입 크기로 잘라먹는 타입스크립트(TypeScript)
ReturnType 질문있습니다ㅏ.
type ReturnType<T extends (...args: any) => any> = T extends ( ...args: any ) => infer R ? R : never;여기서 rest parameter인 ...args가 왜 any타입인가요..?rest parameter는 인수들을 배열 형태로 받는 매개변수 아닌가요?그러면 ...args는 배열 타입으로 선언이 되어야 할 것 같은데 any타입으로 선언할 수 있는 건가요? 잘 이해가 되지 않습니다.
-
해결됨15일간의 빅데이터 파일럿 프로젝트
휴 설치 에러 yum install scl-utils
yum install centos-release-scl 까지는 설치가 됐는데utils 부분에서 에러가 나네요 ㅠㅠ 어떻게 해결하나요? 그런데 python27은 정상적으로 설치가 됐어요.. 문제없는건가요? 추가로 휴 설치 이후 HBase 탭에서 DriverCarInfo에 들어왔는데 실시간 적재 데이터가 하나도 없는데 실시간 적재 데이터를 다시 수행해야 하는 건지 아니면 데이터가 날라간건지 궁금합니다 .. ㅠㅠ
-
해결됨스프링 핵심 원리 - 고급편
@AfterReturning에서 질문있습니다.
안녕하세요 강사님!강사님께서 말씀해주신 AOP로 구현하면 좋은 기능을 실제 코드로 작성해봤습니다.로그 트레이스기능에 매서드 종료가 1초 5초 10초가 될때 로그 레벨을 높여서 로그를 찍는 기능입니다. @Aspect @Slf4j static class LogTraceSelf { ThreadLocal<TraceStatus> trace = new ThreadLocal<>(); private TraceStatus SynchronizedTrace(){ TraceStatus traceStatus = trace.get(); if (traceStatus == null) { trace.set(new TraceStatus()); traceStatus = trace.get(); } return traceStatus; } @Pointcut("@annotation(hello.aop.exam.annotation.Trace)") public void logTrace() {} @Before("logTrace()") public void doTrace(JoinPoint joinPoint) { TraceStatus traceStatus = SynchronizedTrace(); traceStatus.begin(joinPoint.getSignature().getName()); } @AfterReturning("logTrace()") public void doTraceSuccess(JoinPoint joinPoint) { TraceStatus traceStatus = SynchronizedTrace(); long gap = traceStatus.end(joinPoint.getSignature().getName()); } @AfterThrowing(value = "logTrace()", throwing = "ex") public void doTraceException(JoinPoint joinPoint, Exception ex) { TraceStatus traceStatus = SynchronizedTrace(); traceStatus.end(joinPoint.getSignature().getName(),ex); } }조인포인트 실행 권한이 필요없는 부가 기능이다보니@Around 사용을 하지 않고 나누어서 처리를 하다보니 불필요한 코드가 더 증가하게되었습니다.그리고 @Around와 다르게 어드바이스내 지역변수에 TraceStatus를 저장하고 사용할수 없기때문에ThreadLoacal에 공유할 데이터와 본인이 가지고 있어야하는 timestamp도 저장했습니다.@Slf4j public class TraceStatus { private final String id; private int depth = 0; private Deque<Long> timeStampHolder = new ArrayDeque<>(); private final int offsetInfoMs; private final int offsetWarningMs; private final int offsetErrorMs; }기능은 stack 자료구조를 활용해서 begin을 할때마다 timeStampHolder에 시작시간을 저장합니다.end를 호출하면 pop으로 자신이 넣은 시작 시간을 꺼내서 시간을 계산하고 로그를 출력합니다.기타 기능 메서드들은 강사님이 작성하신거와 유사해서 제외했습니다. 이제 소요된 시간이 1초, 5초, 10초가 걸릴 경우 info,warning,error로 출력하는 로그를 남기려고할때어드바이스가 조건을 가지고 추가 기능을 만든다.위 코드처럼 로그 트레이스 내에 저장하고 로그 트레이스 내부에서 출력하도록 한다.경고 알림용 트레이스를 따로 만들고 상태를 전달한다.제 생각은 트레이스에게 넘길경우 트레이스를 인터페이스로 만들어서 필요에 따라 다른 트레이스를 사용한다고 한다면 이 기능을 계속 구현해야 된다는 단점이 생길거 같습니다.저라면 어드바이스에서 소요시간을 트레이스에게 받아서 추가 로직을 수행하려고 할거같습니다. 강사님께서 코드를 작성하신다면어떤 포인트컷을 사용하셔서 구현하실건지,그리고 애노테이션에서 넘어온 값을 가지고 어드바이스에서 처리하게 하시는지아니면 로그 트레이스 내에서 처리하게 하실건지 그 이유가 궁금합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
EDA 데이터 합치기에서 만약 id 순서가 다르거나, 데이터 개수가 다르면 어떻게 합치나요? 시험에서 그런 경우도 있을까요?
데이터를 합칠 때 수업 내용을 보면 ID를 빼고 그냥 합치는 것 같던데 (제가 이해한게 맞다면요.) 혹시 데이터 개수가 다르거나 ID 순서가 다르면 어떻게 해야하나요? 혹시 시험에서 그런 경우도 있나요?
-
해결됨실전! Redis 활용
Sliding Window Rate Limiter에 대한 질문
예시 그림을 보면 새로운 요청을 add할때 ZADD 1.1.1.1 1693494130 1693494130 형식으로 add를 하던데 이러면 혹시 동일한 timestamp에 여러번 요청이 올 경우는 어떻게 구분하나요? 가령 1693494130에 3번의 요청이 동시에 발생한다면 스코어는 1693494130로 하고 item을 1693494130_0이런식으로 index를 추가해야할 것 같아서요
-
미해결Flutter 초입문 왕초보편
000강 뒤에 있는 소스코드 어떻게 받는거죠?
000강 뒤에 있는 소스코드 깃허브에서 어떻게 받는거죠 깃허브에서 exe형태나 zip 형태는 받아 봤는데 이런형태는 첨이라 그런데 모르겠습니다.
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Integer.MIN_VALUE
max = Integer.MIN_VALUE로 초기화해주는 이유가 따로 있나요??
-
미해결스프링 핵심 원리 - 기본편
코드를 똑같이 따라쳤는데 사용자 등록 빈 전체가 안 나와요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]직접 등록한 빈에서 이렇게만 나옵니다.AppConfig 설정 정보의 모든 메서드들이 나오지 않고 클래스만 나오네요.name = appConfig object=hello.core.AppConfig@3cce5371
-
미해결파이썬 무료 강의 (활용편4) - 업무자동화 (RPA)
시트 이름 지정하려는데 title 명령이 안 먹혀요
기본 명령어인 것 같은데 어째서 title만 어트리뷰트가 없다고 에러 뜰까요? 프로그램을 껐다 켜봐도 이렇습니다..파이선 3.8.6 버전 쓰고 있고 비주얼 스튜디오 코드는 1.83.1 버전 쓰고 있는 것 같네요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
form 안에 form이 있을 경우 vo를 어떻게 사용해야 할까
<form th:action=@"{/board/create}" th:object="${board}"> <input type="text" th:field="*{name}"> <button type="button" th:onclick="boardSubmit">글작성</button> <form th:action=@"{/board/create2}" th:object="${notice}"> <input type="hidden" th:field="*{boardId}"> <input type="text" th:field="*{title}"> <button type="button" th:onclick="noticeSubmit">글작성</button>위에 적은 소스는 샘플로 간단하게 Vo 안에 하나의 필드들만 들어갔을 경우를 예로 작성한 내용입니다.현업에서 작업을 하다보면 글 작성 form 안에 여러개의 form 이 들어가야 하는 경우가 한번씩 발생이 됩니다. 이럴 경우에는 어떤식으로 구조를 잡아야 할지 궁금합니다.@Getter @Setter public class RequestBoard{ private String name; private RequestNotice Notice; @Getter @Setter private static class RequestNotice { private String notice } }위와같이 innerClass를 이용해서 작성을 했는데 잘 안됩니다. 구현하고자 하는 기능은.boardSubmit을 클릭했을 때는 board의 name값이 저장되고,noticeSubmit을 클릭했을때는 title이 저장이 되게 하고 싶습니다.javascript에서 값을 받아서 ajax로 넘겨서 저장을 할려고 하면 input 값들이 많이 있을 경우에는 해당 vo도 만들어야하고, script에서도 그 값들을 일일히 받아서 컨트롤러로 넘겨줘야 하는데.. 타임리프를 이용해서 할 수 있는 방법이 있을까요?
-
미해결선형대수학개론
Theorem 4 질문입니다
b가 R^m에 해당된다고 했을때, Ax=b has a solution이랑The columns of A span R^m이 왜 같은말인지 이해가 안됩니다. 예시로 설명 부탁드려도 될까요?
-
해결됨포트폴리오 초간단 배포하기
질문
안녕하세요 자바는 사용해본적은 없어서 문의드립니다.저는 파이썬기반 flask를 사용중인데, 리눅스 서버에 어떻게 올려야하나요? flask 는 빌드가 필요가 없는것 같은데요,1, 프로그램 을 리눅스서버에 올리면 되나요?일단 프로그램을 올린후 , nginx 웹서버와 상관없이 작동이 되는 건가요?
-
미해결스프링 시큐리티 OAuth2
Session id가 인가 코드와 access token을 교환하는 도중에 변경됩니다.
안녕하세요. 강의 잘 듣고 있습니다.제목에서처럼, session id가 access token을 교환하는 일련의 과정 중에 변경되어 다음과 같은 오류가 브라우저 상에서 보여집니다.해당 에러 메시지를 내뱉는 로직이 OAuth2LoginAuthenticationFilter 클래스의 attemptAuthentication 메소드에 있음을 확인하였습니다. 제가 찾은 원인은 OAuth2AuthorizationRequestRedirectFilter에서 AuthorizationRequest의 저장까지는 성공적인데, OAuth2LoginAuthenticationFilter에서 AuthorizationRequest를 Repository에서 꺼내오려고 시도할 때 바뀐 session id값 때문에 이전의 AuthorizationRequest 객체를 가져오지 못하고 null을 반환하는 것이었습니다. 이렇게 session id가 바뀌는 원인이 무엇인지 알려주시면 감사하겠습니다 ㅠㅠ
-
미해결vue.js 실전 프로젝트(트위터 클론)
쪽지에서 메세지를 쓰면 상대방에게 즉시 나타나게 하려면 어떻게 해야 할까요?
쪽지에서 메세지를 쓰면 쪽지를 받는 상대방은 이름을 선택해 주어야 새로운 메시지가 나타나네요.메시지를 쓰면 상대방에게 즉시 나타나게 하려면 어떻게 해야 할까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
Asio 기반 서버 멘토링
안녕하세요 루키스님. 질문할 곳을 찾지 못해 이 곳에 질문하게 되었습니다.이번 Asio 기반 C++서버 멘토링을 일단 신청은 해놨는데, 선수 지식으로 part4 게임서버 정도까지의 수강이 필요할까요 ? 요구되는 수준을 알려주시면 감사하겠습니다 !
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
개발환경과 배포환경시 다른 의존성을 주입하는 예제
질문보다는 코드 리뷰에 가까운데 강의 내용중에 나온 테스트 코드와 실제 배포시 다르게 적용할 경우 예제를 작성해 보았습니다.이해한 내용이 맞는지 또는 보안이나 수정할 만한 내용이 있는지 알려주시면 감사합니다.//app.service.ts import { Injectable } from '@nestjs/common'; export interface IAppService { getSecret(): string; } @Injectable() export class AppService implements IAppService { getSecret(): string { return '실제 배포 환경'; } } @Injectable() export class Test_AppService implements IAppService { getSecret(): string { return '개발 테스트 환경'; } } //app.module.ts import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService, Test_AppService } from './app.service'; import { ConfigModule } from '@nestjs/config'; @Module({ imports: [ConfigModule.forRoot({ isGlobal: true })], controllers: [AppController], providers: [ { provide: 'AppService', useClass: process.env.NODE_ENV === 'production' ? AppService : Test_AppService, }, ], }) export class AppModule {} //app.controller.ts import { Controller, Get, Inject } from '@nestjs/common'; import { IAppService } from './app.service'; @Controller() export class AppController { constructor(@Inject('AppService') private readonly appService: IAppService) {} @Get() getHello(): string { return this.appService.getSecret(); } }
-
해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]
의존성 주입시 객체가 반복적으로 생성될 수 있다고 했는데 해결방법이 어떻게 되는건가요?
강의 내용중 어떤것들은 DI 때마다 객체가 생성될수가 있고그럴 경우 웹소캣 객체같은 경우 문제가 생길수 있다고 하셧는데Nest 에서 그것을 해결하기 위해 자동으로 Module 단에서 Provider에 추가시 자동으로 객체를 하나만 만든후 재사용하여 (싱글톤과 유사하게 작동) 등을 통해 해결을 해주는것인지아니면 직접 해당 Class에서 싱글톤으로 생성을 해줘야 하는건지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
강의 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. 강의를 들으며 헷갈리는 부분 질문 남깁니다. 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다.회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)먼저 회원은 가입하고 조회할 수 있는 기능이 있고 이를 역할과 구현으로 구분하기 위해 역할인 MemberService와 구현인 MemberServiceImpl을 생성했다고 이해했습니다. 그 다음부터 헷갈리기 시작하는데요. 여기서부터 질문입니다. MemberRepository 라는 interface를 생성했는데. 일단 저는 Repository를 현업에서 거의 사용한 적이 없어서 명칭부터가 익숙치 않았는데요. 제가 이해하기로는 주로 외부와의(DB) 통신을 담당하는 친구로 DAO와 유사한 역할을 하는 것으로 이해했습니다. 맞나요? 다만, 자체 DB를 구축할지 외부시스템과 연동할지 정해지지 않았기 때문에 Interface로 생성한거고, 만약 정해져 있다면 굳이 Interface로 생성하지 않아도 될 것 같은데 맞나요? 제가 현업에서 일하면서 Service와 DAO를 연결할때는 보통 같은 기능명칭을 사용했는데 여기서는 join을 save로, findMember를 findById로 사용하더라구요. 명칭을 다르게 하는 이유가있나요?