묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실습으로 배우는 선착순 이벤트 시스템
프로젝트셋팅
안녕하세요 강의 잘 듣고있습니다.설정 하실때 ,api 와 consumer 두개로 나눠서 하셨는데 ,하나의 src 밑에 있는 프로젝트로 진행을 할수가 있을까요 ?? 코드를 봤는데 중복된게 많아서 api 와 consumer 로 나누지 않고 하나의 src 밑에서 작성해도 되지않을까 생각했습니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
자동로그인 구현방법 문의
안녕하세요.네이버 자동로그인 강의를 보고 실습한 뒤다른사이트(영풍문고) 자동로그인을 구현해보던 중 아이디 입력창의 선택자 확인방법이 네이버와 다른건지 잘 확인이 안되는데 혹시 어떻게 확인하면 될까요? <input name="id" type="text" tabindex="5" maxlength="16" class="textbox focus" style="ime-mode:disabled;" placeholder="아이디" title="아이디" onkeypress="enterSearch();" onfocus="pfocus(this);" onblur="pblur(this);" value="" data-gtm-form-interact-field-id="0">
-
미해결포트폴리오 사이트 만들고 배포까지! : 웹 개발 입문 활용편
footer
수업을 따라하다 보니 footer 부분에서 footer 윗 부분에 살짝 파랑색 라인이 보입니다. 이걸 없애고 싶으면 어떻게 해야하는 건가요 ?
-
해결됨[React / VanillaJS] UI 요소 직접 만들기 Part 1
[아코디언 1/6 챕터] 클로저 활용 질문 있습니다.
안녕하세요! 이제 막 강의를 듣고 있는 배정규라고 합니다. 아코디언 강의를 듣고나니 UI 컴포넌트 개발뿐만 아니라 자바스크립트와 프론트엔드 개발의 실무 팁까지 배울 수 있겠다라는 기대감이 생기네요 🙂 질문은 toggleItem 함수를 클로저를 활용해서 개선을 해주셨는데요, 왜 클로저로 개선을 해주셨는지가 궁금합니다. 클로저를 활용했을 때와 이전 함수와 비교했을 때 어떤 이점이 생기는지 크게 와닿지가 않아서요.왜 toggleItem 함수를 클로저를 활용해서 개선해주셨는지 궁금합니다 😃
-
미해결실무에 바로 쓰자! 이커머스 데이터로 배우는 실전 SQL 분석
SQL 라이트가 ORDER를 인식하지 못합니다
선생님이 알려주신 그대로 진행했음에도 불구하고 구현이 안되네요 ㅠ
-
미해결AWS Certified Cloud Practitioner 자격증 준비하기
접속 시 took too long to respond 오류
안녕하세요, 실습대로 웹서버를 만들고 접속해봤는데 어쩔때는 정상적으로 접속되지만 대부분 브라우저에서 took too long to respond가 뜨면서 접속이 안됩니다. 어떤 문제가 있는 걸까요? +시크릿 모드로는 잘 접속 됩니다!
-
해결됨독하게 되새기는 C 프로그래밍
const char *를 char*에 초기화할때의 컴파일 에러 처리 방식 문의
문자(배)열 상수는 어디에 저장되는가? 강의에서 문의 드립니다. (06:45)선생님 강의를 들으면서 따라치면 C2440 오류가 발생하며 다음과 같은 오류가 발생합니다.hello world는 const char* 이나 char* 자료형에 초기화하여 문제가 발생하는 것으로 이해하는데, 강의에서는 자연스럽게 디버깅이 되는 것 같더라구요 (저는 디버그로 돌리니 컴파일 에러가 발생합니다.) 혹시 디버깅을 하기 위해 추가적으로 진행되어야 하는 사항이 있을까요 ?.?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
if 구문에서 return 사용과 관련한 질문입니다.
강의 17:18 쯤에 나오는@Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("FrontControllerServletV1.service"); // / front-controller/v1/members String requestURI = request.getRequestURI(); ControllerV1 controller = controllerMap.get(requestURI); if (controller == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); // 404 return; } controller.process(request, response); }이 코드에서 if 구문 내부에 return만 사용하셔서 탈출하도록 하신거같은데 return response.setStatus(HttpServletResponse.SC_NOT_FOUND); 라고 표현해도 상관없을까요?=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결Airflow 마스터 클래스
localhost:8080 에서 로그인이 안됩니다.
위 상황에서 인터넷창에 localhost:8080 후 진입하면 우선 선생님과 같은 로그인 화면이 아닌 다른 UI가 나옵니다. 그리고 초기 아이디/비번으로 설정된 airflow/airflow 로 시도해도 로그인이 안되고 있어서 해결방법을 알수있을까요?
-
미해결실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
테스트 오류
수업에서 처럼 이렇게 코드를 작성했을 때는 오류가 발생하는데placeholder를 넣으면 에러가 나지않습니다. 왜그런지 알 수 있을까요?!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
뷰를 찾을때
@RequestMapping("/response-view-v2") public String responseViewV2(Model model) { model.addAttribute("data", "hello"); return "response/hello"; } response/hello 를 찾을 때, 정적 리소스에서 먼저 찾은다음 없으면, 동적에서 찾는걸로 순서가 정해져 있나요? 아니면 response/hello 가 정적인지 동적인지 판별하고 정적 또는 동적 리소스 폴더 아래에서만 찾는건가요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
AuthenticationManger - HttpSecurity 사용
customFilter 메소드에 http를 전달받는 부분은 무시하라고 하셨는데강의 자료에도 http를 인수로 넘기는 부분이 그대로 있어서, 이건 수정이 필요한 부분인가요?다른 질문이 또 있습니다.HttpSecurity 사용과 직접 생성의 차이점이 궁금합니다.직접 생성 방식우리가 생성한 필터?(CustomAuthenticationFilter이게 맞는지는 모르겠지만)를 통해 인증을 진행할 때 ,직접 생성한 AuthenticationManger를 사용해서 인증을 진행하도록 한다고 이해했습니다. 이게 맞나요?http.formLogin을 통해 FormLoginConfigurer를 설정하는 부분이 있던데,UsernamePasswordAuthenticationFilter가 DaoAuthenticationProvider를 사용하지만,우리가 만든 CustomAuthenticationFilter가 사용하는 AuthenticationManager에도 DaoAuthenticationProvider를 사용하니까 여기서 처리되도록 한 것인가요? 굳이 formLogin 부분이 추가된 이유를 명확하게 잘 모르겠습니다.HttpSecurity 사용 방식여기서는 AuthenticationManager를 AuthenticationManagerBuilder를 통해서 생성하는데,이 authenticationManager는 그럼 기본적으로 AuthenticationProvider들을 갖고있는게 있나요? 생성 후 따로 넣어주는 authenticationProvider들이 없는 것 같아서 이해가 잘 안됩니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
소스코드 받을 수 있나요
자바강의처럼 소스코드 받아보고 싶은데 혹시 업데이트 해 주실 수 있으신가요? 만약 안된다면 이유가 뭘까요
-
해결됨Next + React Query로 SNS 서비스 만들기
배포테스트할때 클라이언트에서 api호출하면 쿠키가 전달되지 않고있습니다.
안녕하세요 선생님배포테스트할때 클라이언트에서 api호출하면 쿠키가 전달되지 않고있습니다. 클라이언트에서는credentials: 'include'를 적용했고const response = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/user/setting`, { method: 'PATCH', credentials: 'include', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(userSettingObj), }); if (response.ok) { const sessionUpdateInfo = await response.json(); await updateSession(sessionUpdateInfo); router.push('/'); } 서버에서는const express = require('express'); const cors = require('cors'); const passport = require('passport'); const session = require('express-session'); const cookieParser = require('cookie-parser'); const dotenv = require('dotenv'); const morgan = require('morgan'); const path = require('path'); const hpp = require('hpp'); const helmet = require('helmet'); const postRouter = require('./routes/post'); const postsRouter = require('./routes/posts'); const userRouter = require('./routes/user'); const usersRouter = require('./routes/users'); const db = require('./models'); const passportConfig = require('./passport'); dotenv.config(); const app = express(); db.sequelize.sync() .then(() => { console.log('db 연결 성공') }) .catch(console.error); passportConfig(); if (process.env.NODE_ENV === 'production') { app.use(morgan('combined')); app.use(hpp()); app.use(helmet()); } else { app.use(morgan('dev')); } app.use( cors({ origin: ['http://localhost:3000', 'whatisyourmbti.com', 'http://43.201.56.221'], // true or * // access-control-allow-origin가 true된다. --> 다른 도메인끼리 api 요청 credentials: true, // access-control-allow-credential가 true된다. --> 다른 도메인끼리 쿠키 전달 method: '*', }) ); // 프론트에서 보낸 정보를 req.body에 넣어준다. 순서 중요! app.use(express.json()); // json 형식으로 보냈을때 데이터 처리해줌 app.use(express.urlencoded({ extended: true })); // form submit으로 보냈을 때 데이터 처리해줌 app.use(cookieParser(process.env.COOKIE_SECRET)); app.use(session({ saveUninitialized: false, resave: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, secure: false, } })); app.use(passport.initialize()); app.use(passport.session()); app.use((req, res, next) => { console.log('Session ID:', req.sessionID); console.log('Cookies:', req.cookies); console.log('Signed Cookies:', req.signedCookies); next(); }); app.get('/', (req, res) => { res.send('hello express'); }); app.get('/api', (req, res) => { res.send('hello api'); }); app.use('/post', postRouter); app.use('/posts', postsRouter); app.use('/user', userRouter); app.use('/users', usersRouter); app.listen(80, () => { console.log('서버 실행 중!'); });credentials: true, 쿠키옵션을 설정해주었는데0|app | Session ID:---------------------------- U8DRuillNv2DBRmexmO1mZZ7fGJeWXCw0|app | Cookies:------------------------------- [Object: null prototype] {}0|app | Signed Cookies:------------------------ [Object: null prototype] {}이런식으로 쿠키값이 전달되고 있지 않아서유저 정보가 필요한(로그인 확인)로직에서 401에러가 떨어지게 됩니다.app.use(session({ saveUninitialized: false, resave: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, secure: false, } }));위부분들을 검색해보고 바꿔보기도 했는데, 잘안되더라구요.클라이언트의 ip는 http://43.201.56.221입니다. 쿠키는 로그인 후 프론트서버에서 브라우저에 삽입해주고 있습니다.console.log(`${process.env.NEXT_PUBLIC_BASE_URL}/user/login ---------------------login api`); const authResponse = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/user/login`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ...credentials }), } ); // 프론트서버에서 백엔드서버의 로그인 토큰을 받아온것. 토큰은 문자열이라서 // cookie라이브러리로 객체로 만들어준다. let setCookie = authResponse.headers.get('Set-Cookie'); console.log('set-cookie', setCookie); if (setCookie) { const parsed = cookie.parse(setCookie); console.log(parsed, '---------------parsed cookie'); // 브론트서버에서 브라우저에 쿠키를 심어준다. // 프론트서버에 쿠키를 심으면 안된다! 왜냐하면 프론트서버는 서버라서 공용이다. // 여러 브라우저가 전부 프론트서버르 바라본다. 개인정보 유출 문제 발생할 수 있다. cookies().set('connect.sid', parsed['connect.sid'], parsed); // parsed = 나머지 옵션들 } console.log(authResponse, '--------------------------------authResponse'); let user = await authResponse.json(); console.log(user, '--------------------------------user'); // console.lo(authResponse); if (!authResponse.ok) { return null; } // return user object with the their profile data return { ...user, email: user.email, name: user.nickname, image: user.image, id: user.id, } } catch (err) { console.error('로그인 에러', err); } 그리고 cors에러는 발생하지 않고있습니다. 혹시 수정해야할 코드나, 참고해야할 부분이 있다면 알려주시면 감사하겠습니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
db, jdbc, jpa 등 관계 정리 문의
현재 트랜잭션관하여 강의를 듣고있는 중입니다. jdbc 트랜잭션 코드랑 jpa 트랜잭션 코드랑 다르다고 하셨는데 이 부분에서 관계정리가 안되거 같아 질문드립니다.위의 사진처럼 이해하면 되나요?? jpa에서 자체적으로 데이터소스를 관리하는지 jdbc 트랜잭션 코드라고 설명을 해주셨는데 여기서 jdbc가 의미하는게 데이터소스 코드를 의미하는지 위의 두개의 질문도 궁금합니다.
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
Entity 질문 있습니다.
private Transform GetTransformSocket(Transform root, string socketName) { if (root.name == socketName) return root; foreach(Transform child in root) { var socket = GetTransformSocket(child, socketName); if (socket) return socket; } return null; } 재귀에서 child를 계속 찾는다는게 이해가 가지 않습니다.child는 그냥 변수명 아닌가요?ㅠ
-
미해결빅데이터/텍스트마이닝 분석법 (LDA,BERTtopic,감성분석,CONCOR with ChatGPT)
데이터 전처리 관련 질문드립니다.
안녕하세요 선생님데이터 전처리 과정에서 힘든점이 있어 한가지 여쭙고 싶어 질문드립니다.텍스트 마이닝의 경우 원본(예를 들어 리뷰 등) 데이터가 많게는 몇천건에서 수만건, 수십만건 까지 자료를 수집해서 분석할 수 있는데 한글의 경우 okt 분석기로 형태소 분석을 하고 나면 여전히 제대로 단어가 분리되지 않아 단어 정제, 불용어 제거, 단어 정규화 과정을 계속 거쳐야 하잖아요..그런데 원본 리뷰 데이터가 수천, 수만건일 경우 수천 수만건을 개인이 일일이 하나씩 봐가면서 전처리 작업을 진행해야 할 것 같은데 이 과정이 너무나 시간이 많이 소요되고 힘든 것 같습니다.데이터 전처리시 이렇게 하나씩 데이터를 봐가면서 정제작업을 거치는 것이 정상적인 진행과정인지 너무 궁금합니다. ㅠ질문 읽어주셔서 감사합니다!
-
해결됨모의해킹 실무자가 알려주는, 파일 업로드 취약점 공격 기법과 실무 사례 분석 : PART 1
Response from?
실습5-3에 21초에 보면 Request to를 Response from으로 만드는게 보이는데 저는 이렇게 나옵니다. 어떻게 해야 html소스가 다 보일수 있죠?
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
지표 정의하기 연습 문제
안녕하세요! 연습 문제에 대한 피드백 부탁드립니다 🙂각 기능에 대한 이탈률각 기능이 동작하지 않는다를 특정 이슈 혹은 고객 불만족으로 인해 기능의 다음 액션을 수행하지 못했다로 정의하고자 합니다. 그 경우 동작 여부는 각 기능을 클릭한 후 전환(특정 행동) 발생 여부로 파악할 수 있습니다. 이는 각 기능의 클릭 수 대비 유저가 특정 행동 없이 얼마나 이탈을 했느냐로 지표를 정의할 수 있습니다. 이는 이슈로 인한 미전환인지 고객 불만으로 인한 이탈로 나누어 데이터를 다시 한번 나눠야 합니다.이탈률 = (클릭 - 전환)/클릭검색 결과에 대한 CTR검색 기능을 search 바를 클릭하여 유저가 직접 상품을 검색하는 것으로 정의할 때 검색 기능은 유저가 원하는 것을 클릭했는 지에 대해 만족 여부를 파악할 수 있습니다. 이는 검색 결과 페이지 PV 대비 검색 결과의 상품 리스트를 클릭한 클릭율로 측정해야 합니다.CTR = 검색 결과 상품 클릭 / 검색 결과 페이지 PV필터를 사용한 검색 결과에 대한 CTR필터 기능의 활성화는 검색 결과에서 필터를 사용하여 상품을 클릭한 수로 정의할 수 있습니다. CTR = 필터 기능을 사용한 후 상품 클릭 수 / 검색 결과 페이지 PV주문(배달) 수 배달 서비스에서 가장 중요한 전환은 주문을 했는지 여부입니다. 그 이유는 주문이 발생해야 배달앱의 매출이 발생하기 때문입니다. 이 수를 늘리기 위해선 각 퍼널의 전환 지표를 개선해야 합니다. 이 중 가장 먼저 개선해야 하는 전환 지표는 주문 페이지에서 실제 주문을 하는 비율이며, 결제 과정에서의 오류 및 유저 경험을 개선해야 합니다.주문 비율이 아닌 주문 수가 중요한 이유는 비율은 주문 수가 줄어들어도 이전 퍼널의 지표가 감소한다면, 주문율이 증가한 것처럼 보여질 수 있기 때문입니다. 추천 수 대비 구매율추천은 유저가 특정 상품을 구매할 수 있도록 유도하는 기능입니다. 이 기능의 목적은 추천 상품 구매이며, 성능을 파악하기 위해서는 추천한 상품 수 대비 몇 건이나 유저들이 구매했는 지를 확인해야 합니다. 추천 수 대비 구매율이 좋지 않다면 추천 알고리즘의 성능이 좋지 않다는 것을 의미합니다.유튜브 쇼츠 - 체류시간유튜브 쇼츠의 가장 중요한 지표는 체류시간으로 생각됩니다. 특정 체류시간을 기반으로 콘텐츠를 소비 혹은 전환되었다고 정의할 수 있습니다. 쇼츠를 통해 유저들이 앱에 머무르게 하여 여러 콘텐츠를 소비하게 하고 이 체류시간을 기반으로 광고 영상 또한 자연스럽게 소비 시키는 것이 수익 모델이라고 예상됩니다. 체류 시간이 수익과 가장 접점에 있는 지표였다면, 그 다음 보조 지표는 추천 알고리즘과 동일하게 유저가 콘텐츠를 소비하기 까지 얼만큼의 스크롤을 하는지로 유튜브 콘텐츠의 질을 파악할 수 있습니다. 마지막으로 쇼츠를 클릭하는 수를 트래킹하여 쇼츠 DAU를 관리해야 합니다.온보딩 진행 후 가입율기존 : 가입 페이지 -> 가입변경 : 가입 페이지 -> 온보딩(선택) -> 가입 위와 같이 온보딩 기능이 추가되었다면, 온보딩 한 유저의 가입률을 보아야 합니다. 해당 지표가 낮아지면 온보딩은 유저에게 허들로 작용할 것이고, 지표가 개선된다면 온보딩을 통해 유저가 서비스에 흥미를 느끼고 가입을 했다고 판단할 수 있습니다.
-
해결됨Flutter 앱 개발 기초
수강 기간 연장 문의 드립니다.
오늘 접속해서보니...수강 기간이 정해져 있는 강의였네요. T T혹시 연장 받을 수 있을까요?