묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서 로그인된 사용자 페이지
실무에서도 강사님이 하신것과 같이 로그인될때 안될때 html파일을 2개작성해야하나요? 1개로는 할 수가 없는건가요?
-
미해결Flutter 중급 1편 - 클린 아키텍처
기능과 UI를 분리하는 이유 중 의존성
fetch를 Widget 내부에서 실행할 경우 fetch가 동작하지 않을 때 Widget rendering이 안 될 수 있는 것을 의존적이다 라고 알고 있습니다.하지만 데이터가 없는 상황이 아니라면 의존적일 수 밖에 없는 것 아닌가요? 의존성을 가지지 않게 만들어야하는 이유를 모르겠습니다.
-
해결됨프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2
css font-face unicode-range
안녕하세요 선생님, 정말 좋은 강의 감사합니다.선생님이 설명해주신 폰트 사이즈 줄이기 (Unicode Range) 를 테스트 해보려고 했습니다. 제가 진행한 Nextjs, React 두가지 프로젝트 환경에서 Unicode range없이 네트워크를 살펴보았는데요, 알아서 그 페이지에서 사용하는 폰트만 불러오는 것을 확인했습니다. 혹시 react 프로젝트는 Unicode-range 를 해주지도 않았는데 알아서 최적화를 해주는 것인가요...??.....
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
404에러
강사님과 똑같이 했는데 저는 404에러가 났습니다.신기한건 url창에서 jsessionid값을 지우고 실행하니까 정상적으로 들어가졌는데 왜그런 걸까요? 그리고 tracking-mode=cookie를 설정하니 url창에 jsessionid값이 나오지 않으면서 정상적으로 들어가졌습니다.
-
해결됨[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
앱 실행 오류 An error occurred while processing the post-install hook of the Podfile
안녕하세요앱실행시 오류가 발생합니다.이전까지 오류가 종종나긴했어도 구글링으로 해결했는데이번에는 도저히 안되고 있습니다. 제 개발환경은 M1맥이고앱실행시콘솔 내리다보면 다음과 같은 문구가 있고 [!] An error occurred while processing the post-install hook of the Podfile. 가장 밑에는 다음과 같이 문구가 발생합니다Error running pod installError launching application on iPhone 11 Pro Max. 관련 내용을 구글링해서 해결해보려는데 안되네요시도한방법들은재부팅, 터미널에서 스튜디오 시작, flutter clean, flutter upgradge, ios - Podfile 두번째줄 주석flutter doctor에는 이상없음cd ios flutter precache --ios pod install sudo arch -x86_64 gem install ffi arch -x86_64 pod install <- 실행시 An error occurred while processing the post-install hook of the Podfile. 등등..
-
미해결스프링 시큐리티
필터 순서파악
WebSecurityConfigurerAdapter 추상클래스를 extends하는 securityConfig클래스는 기본적으로 위와 같은 방식으로 API가 호출됩니다.질문1.API호출 순서대로 필터가 배치되는지 궁금합니다.즉, 요청이 들어올 때 요청이 만나게 되는 필터의 순서가 csrf 필터를 시작으로 basicAuthenticationFilter로 끝나는 것인지 알고싶습니다. 질문2.RememberMe API를 설정클래스에서 호출하면 RememberMeAuthenticationFilter가 추가가 되는데 이때 위 그림에 나와있는 필터들 사이에 몇번째 순번으로 위치하는지를 단번에 파악할 수 있는 방법이 있을까요? 제가 현재 떠오르는 방법은 위 모든 Filter들에 중단점을 하나씩 걸어놓고 디버깅 흐름을 체크하는 고된 방법입니다ㅠㅠ
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
베이지안 최적화 for문 질문
선생님 안녕하세요!hyperopt에서 질문이 생겨서 글 남깁니다. # results에서 loss 키값에 해당하는 밸류들을 추출하여 list로 생성. losses = [loss_dict['loss'] for loss_dict in trial_val.results] 이 문장인데요. loss_dict라는 객체를 만든건가요?제가 알기론 for와 in 사이가 반환값으로 알고 있습니다. 그럼 반환 값이 loss_dict인데 loss_dict을 for 앞에다 바로 선언을 해준건가요? trial_val.results에서 loss 값을 가져오려고 저 코드를 쓴 것으로 압니다. 그런데 loss_dict['loss']를 하면 바로 trial_val.results의 los값에 접근할 수 있는건가요?잘 이해가 되지 않습니다ㅠㅠ
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
미들웨어 커스텀해서 만들때 질문 드립니다!
안녕하세요 제로초님 강의 잘 듣고 있습니다!다름이 아니라 이 강좌를 듣고 플젝에서 Middleware을 좀 변환해서 사용해보고 있는데요.컨트롤러에서 @Param()으로 넘기는 값을 Middleware을 거칠때, req.params[''] 만 안되던데 혹시 이유가 있나요? 그리고 이 문제를 사용하셨던 request.get()으로 해결이 가능한가요?예를 들어 @Query()로 넘기면 쿼리스트링 값을 req.query[]로 하면 가져와지고 @Headers()로 넘겨도 req.headers로 가져와지는데 params()만 안돼서 질문드립니다!
-
미해결[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
인코딩 문제
첨부해주신 코드파일을 다운받아 압축풀고pycharm 으로 .py파일을 열었는데, 인코딩이 깨져서 나옵니다!utf-8 , euc-kr 로 해봤는데 똑같네요 ㅠㅠ 해결방법이 없을까요?
-
미해결모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
실습 과정에서 ORACLE 궁금한점이 있습니다.
[실습6-3 ]ORACLE ERROR-BASED 공격실습과정에서 ORACLE은 게시글을 선택해서 idx 파라미터 값에서 인젝션을 하셨는데요.게시글 검색란에서 인젝션을 수행할 때의 페이로드는 어떻게 해야할까요??idx 파라미터 값에는 CTXSYS.DRITHSX.SN(1,(select+global_name+from+global_name)) 으로 해서 오류에 버전이 잘 나왔는데 검색 기능에는 도저히 페이로드가 생각나지 않아서 쓰게 되었습니다.
-
미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
공부 방향성과 진로
1현재 25살에 공부한지는 이제 혼자서 두달 정도 된것 같습니다. 자바스크립트 보면서 노드 js도 하는데 백쪽으로 방향을 잡고 공부를 하려구하는데 어떤분은 노드하구 리엑트로 넘어가서 next.js 쪽으로 공부 해보라구 하구 아니면 타입배우고 nest.js로 넘어가라고 하시던데 백쪽으간다 하면 네스트로 넘어가는게 맞나요? 그리구 네스트의 대한 전망이나 그런것도 궁금합니다 [제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 질문입니다.
안녕하세요 김영한님! 다름이 아니라 김영한님 JPA책을 읽으면서 궁금한게 생겨서요.db read commtied + JPA 1차 캐시를 사용하면 repeatable read가 가능한데 JPA 락은 더 높은 격리 수준이 필요하면 건다고 하셨는데 serializable 격리 수준이 필요하면 해결 할 수 있는 락이 없는데 JPA 락을 왜 쓰는지 모르겠습니다
-
미해결비전공 기획자 및 관리자를 위한 IT 필수 지식
강의 자료 요청드립니다.
안녕하세요?강의 자료 요청드립니다.oof1213@kakao.com감사합니다~
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
개발자 도구 ⇒ 크롬 “개발자 도구” 샘처럼 직관적으로 어떻게 보이게 하나요?
안녕하세요 🙋♂️개발자도구 선생님처럼 나오게 어떻게 하는 걸까요?지금 리액트 "props"편 2:56 듣고 있습니다.왼쪽은 선생님 개발자도구이고 오른쪽은 제 개발자 도구입니다.(참고 이미지 2개 첨부합니다.)
-
해결됨실전! 스프링 데이터 JPA
페이징 했을때 발생하는 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세여 영한님 강의 너무 잘 보고있습니다.다름이 아니라 JPA 관련 강의를 모두 듣고 사이드 프로젝트에JPA를 적용하던 중에 문제가 발생하여 질문드립니다.문제 상황현재 Issue 라는 엔티티가 member와 milestone이라는 엔티티와 @ManyToOne 관계를 맺고 있는 와중에 Issue의 상태에 따라 Issue를 조회 하는 로직을 만들고 있었습니다.문제 코드@Query(value = "select i from Issue i left join fetch i.member m left join fetch i.milestone mi where i.status = :status") Page<Issue> findIssues(Pageable pageable, @Param("status") IssueStatus status);위에 코드가 상태에 따라 Issue를 조회 하는 코드인데, 우선 N+1 문제를 해결하기 위해 left join fetch 를 사용하고 Issue의 상태에 따른 조회를 위해 where 문을 사용하였습니다. 작성한 코드가 크게 문제가 있다 생각하지 않았는데 막상 실행을 해보니 query specified join fetching, but the owner of the fetched association was not present in the select list 라는 문구의 예외가 발생하였습니다.다행히 구글에 검색하여https://stackoverflow.com/questions/12459779/query-specified-join-fetching-but-the-owner-of-the-fetched-association-was-not해당 글을 보고 따로 count query를 작성하여 해결을 하긴 했는데, 왜 여기서 따로 count query를 작성해야 하는지 의문이 들었습니다. 페이징을 하면 count query를 알아서 날려주는 것으로 생각했는데 여기서는 왜 그렇게 동작하지 않는걸까요??해결 코드@Query(value = "select i from Issue i left join fetch i.member m left join fetch i.milestone mi where i.status = :status", countQuery = "select count(i) from Issue i left join i.member left join i.milestone where i.status = :status") Page<Issue> findIssues(Pageable pageable, @Param("status") IssueStatus status);
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
em.find()와 영속성 컨텍스트 관련 질문
안녕하세요!em.find()와 영속성 컨텍스트 관련해서 학습테스트를 작성하던 도중 의문이 생겨 질문을 남깁니다.em.find() 작업은 1차 캐시에 데이터가 존재한다면 영속성컨텍스트의 데이터를 반환하고, 1차 캐시에 데이터가 존재하지 않을 경우 DB에 select 쿼리문을 보내는 것으로 알고 있습니다. 위 선행지식을 바탕으로, 아래의 학습테스트 경우처럼 1차 캐시가 비어있고 DB에 데이터가 있는 경우에서 delete 메서드를 호출하고 EntityManager를 flush()하지 않은 상태로 테스트하여 delete 쿼리문을 DB에 보내지 않고 쓰기지연 저장소에 남겨둔 상태를 테스트해보도록 했습니다.(여기서 delete는 Spring Data JPA의 delete문입니다! 이 delete 메서드에선 해당 JpaRepository의 구현체를 타겟 프록시로 하는 SimpleJpaRepository에서 em.find() 작업 후 em.remove() 작업을 해주는 것으로 알고 있습니다.)학습 테스트 @Test @DisplayName("1차 캐시가 비어있고 쓰기지연 저장소에 delete 쿼리가 있는 상태에서 em.find()를 할 경우 결과를 확인한다") void test7() { // 영속성 컨텍스트, DB에 모두 member 저장 (IDENTITY 전략) final Member member = new Member("kth990303", "kth990303@naepyeon.com", Platform.KAKAO, "1"); final Long memberId = memberRepository.save(member) .getId(); // 영속성 컨텍스트는 비워줌 em.flush(); em.clear(); System.out.println("==========================="); // delete 쿼리는 쓰기지연저장소에 존재하고 아직 sql로 찌르지는 않음 memberRepository.delete(member); System.out.println("============================================="); // 1차캐시에 Member는 존재하지 않으므로 select 쿼리가 이 때 나갈 줄 알았으나 안나감. em.find(Member.class, memberId); em.flush(); em.clear(); }저는 위 테스트에 대한 결과 예측을 아래와 같이 했습니다.insert문을 DB에 날린다이후 em.clear()로 영속성 컨텍스트를 비워주어 1차 캐시에는 데이터 존재 X======delete 메서드 호출한다. 1차 캐시에 데이터가 존재하지 않아 select 쿼리문 후 delete 쿼리문을 날려야 함. (SimpleJpaRepository) 이 쿼리문들은 쓰기지연 저장소에 저장돼서 아직 날라가지 않음.=======em.find()를 호출하고, 1차 캐시에 데이터가 존재하지 않아 select 쿼리문이 쓰기지연저장소에 쌓임.em.flush()를 해주어 쓰기지연저장소에 있던 select, delete, select가 나갈 것이라 예측.결과적으로 insert -> ==== -> ===== -> select, delete, select 가 나갈 것이라 생각했습니다.하지만 실제 쿼리는 아래와 같았습니다.실제로는 위와 같이 insert -> ==== -> select -> ===== -> delete 만 나가게 됐습니다.이에 대한 이유가 궁금합니다!감사합니다. 참고1. SimpleJpaRepository의 delete 메서드@Override @Transactional @SuppressWarnings("unchecked") public void delete(T entity) { Assert.notNull(entity, "Entity must not be null!"); if (entityInformation.isNew(entity)) { return; } Class<?> type = ProxyUtils.getUserClass(entity); T existing = (T) em.find(type, entityInformation.getId(entity)); // if the entity to be deleted doesn't exist, delete is a NOOP if (existing == null) { return; } em.remove(em.contains(entity) ? entity : em.merge(entity)); }참고2. 해당 질문에 대한 상황을 정리한 노션https://clean-nutria-44b.notion.site/JPA-em-find-1-34fa1ba3df914e24ba9dd9a143f28c8c
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
docker compose timezon 변경방법..?
안녕하세요 강의 너무 잘보고 있습니다! 감사합니다.디비의 타임존을 변경하고 싶은데 어떤 방법이 있을까여..?docker-compose.yml에서 environment TZ 로 설정하고 "data" 폴더 지우고 다시 docker compose up 했는데 잘 안되네요..; 뭔가 방식이 잘못된걸까요..?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
OrderService.order에서 RuntimeException이 발생했을 때, INSERT 쿼리가 실행되지 않은 이유
강의 시점으로 22:00쯤에 INSERT 쿼리가 실행되지 않은 이유를 JPA가 가진 자체 기능이라고 말씀해주셨는데요. 그 기능이 어떤 것인지 구체적으로 알고 싶어요. JPA 기본편 강의에서 언급된 내용이었나요? 아니면 JPA 책에 있는 내용인가요?@Transactional 어노테이션이 붙은 OrderService.order 메소드에서 예외가 발생하면, 롤백한다고 어렴풋이 이해하기엔 뭔가 아쉬워서 질문합니다.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
타입스크립트 질문
첫번째 사진의 빨간색 타입스크립트 코드와 두번째 사진의 <number[]>([])가 무슨 뜻인지 알려주실 수 있을까요,,,두번째는 숫자객체 타입라는 것 같은데 ([])는 왜붙어있는걸까요,, 그리고 타입 찾는게 너무 헷갈리는데 어떻게 공부해야할까요? 타입을 안적으면 자꾸 에러가 나서요 ㅜ
-
미해결Slack 클론 코딩[실시간 채팅 with React]
axios.post에서 로컬호스트 주소를 지우면 404 에러가 나옵니다
제로초님 처럼 axios에서 http://localhost:3095 를 지우니 404에러가 뜹니다.그리고 제로초님이 프록시 부분에 주석처리를 해서 보여주시는 부분은 따라하지 않았습니다 콘솔에서 나오는 에러입니다백엔드 터미널에서는 에러가 뜨지 않는거 같습니다코드 입니다import React, { useState, useCallback } from "react"; import axios from "axios"; import { Success, Form, Error, Label, Input, LinkContainer, Button, Header } from "./SignpStyles"; import useInput from "@hooks/useInput"; const SignUp = () => { const [ email, onChangeEmail, setEmail ] = useInput(""); const [ nickname, onChangeNickname, setNickname ] = useInput(""); const [ password, setPasswrod ] = useState(""); const [ passwordCheck, setPasswordCheck ] = useState(""); const [ mismatchError, setMismatchError ] = useState(false); const onSubmit = useCallback( (e) => { e.preventDefault(); axios .post("/api/users", { email, nickname, password }) .then((response) => { console.log(response); }) .catch((err) => { console.log(err.response); }); }, [ email, nickname, password, passwordCheck ] ); const onChangePassword = useCallback( (e) => { setPasswrod(e.target.value); setMismatchError(e.target.value !== passwordCheck); }, [ passwordCheck ] ); const onChangePasswordCheck = useCallback( (e) => { setPasswordCheck(e.target.value); setMismatchError(e.target.value !== password); }, [ password ] ); return ( <div id="container"> <Header>slack</Header> <Form onSubmit={onSubmit}> <Label id="email-label"> <span>이메일 주소</span> <div> <Input type="email" name="email" id="email" value={email} onChange={onChangeEmail} /> </div> </Label> <Label id="nickname-label"> <span>닉네임</span> <div> <Input type="text" name="nickname" id="nickname" value={nickname} onChange={onChangeNickname} /> </div> </Label> <Label id="password-label"> <span>비밀번호</span> <div> <Input type="password" name="password" id="password" value={password} onChange={onChangePassword} /> </div> </Label> <Label id="password-check-label"> <span>비밀번호 확인</span> <div> <Input type="password" name="password-check" id="password-check" value={passwordCheck} onChange={onChangePasswordCheck} /> </div> {mismatchError && <Error>비밀번호가 일치하지 않습니다</Error>} {!nickname && <Error>닉네임이 비어있습니다</Error>} {!email && <Error>이메일이 비어있습니다</Error>} </Label> <Button type="submit">회원가입</Button> </Form> </div> ); }; export default SignUp; 혼자서 해결해 보고 싶었는데 어디서 문제가 생기는 건지 모르겠어서 이렇게 질문을 남깁니다