묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 고급편
logTrace의 Level이 높게 출력되는 문제를 겪고있어 질문올립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용 & 문제점] - 안녕하세요 강의 진행도중, "쓰레드로컬 동기화" 부분을 진행하다 조금 의하하게 동작하는 부분이 있어서 질문올립니다! - 제가 이해한 강의 흐름은 1) 필드변수를 사용해서 동기화한다 >> 동시성 문제 발생 2) 쓰레드 로컬을 사용해서 동시성 문제를 해결한다! - 위 순서인데, 쓰레드 로컬을 사용한 코드에서도 log의 depth 가 올바르게 정상적인 깊이로 표시되지 않고 여러번 반복되서 붙는 문제가 있습니다 - 문제증상이 발생할때의 로그는 아래처럼 찍힙니다 ``` 2022-01-01 11:54:07.809 INFO 2553 --- [nio-8080-exec-9] h.a.trace.logtrace.ThreadLocalLogTrace : [4202b619] | | | | | | | | | | | | | | | | | | | | |-->,OrderControllerV3-request()! 2022-01-01 11:54:07.809 INFO 2553 --- [nio-8080-exec-9] h.a.trace.logtrace.ThreadLocalLogTrace : [4202b619] | | | | | | | | | | | | | | | | | | | | | |-->,OrderServiceV3.orderItem() 2022-01-01 11:54:07.809 INFO 2553 --- [nio-8080-exec-9] h.a.trace.logtrace.ThreadLocalLogTrace : [4202b619] | | | | | | | | | | | | | | | | | | | | | | |-->,v3 Repository.save() 2022-01-01 11:54:07.810 INFO 2553 --- [nio-8080-exec-9] h.a.trace.logtrace.ThreadLocalLogTrace : OK:[4202b619] | | | | | | | | | | | | | | | | | | | | | |<--,OrderServiceV3.orderItem() time=1ms OK!! 2022-01-01 11:54:07.810 INFO 2553 --- [nio-8080-exec-9] h.a.trace.logtrace.ThreadLocalLogTrace : OK:[4202b619] | | | | | | | | | | | | | | | | | | | | |<--,OrderControllerV3-request()! time=1ms OK!! ``` - 제가 겪고 있는 문제를 시연하는 영상입니다 [https://youtu.be/hBYAinNtMxg] [시도한 방법] - 첫번째로 수업을 따라가며 작성한 코드가 있는지 검증했는데요, IDE 코드 비교 기능을 이용해서 교안과 제가 작성한 코드 사이의 다른 부분으로 인한 버그인지 순차적으로 탐색해봤는데 발견하지 못했습니다 - 두번째로 Debug 모드로 실행해봤는데, 실제로 addSpace() 함수에 level 에 값이 10, 11, 12~~ 로 점점 증가하게 들어왔습니다. 대략 브라우저에서 새로고침을 통해 Request를 10번 보낼때마다 level 값이 1스텍씩 증가합니다 [질문] Q1) 진행하시는 강의에서처럼 1초에 두번 세번정도까지 요청을 날리면 정상적으로 동작 하는데, 그 이상으로 브라우저에서 refresh 연타를 날리면 발생하는 문제인데, 혹시 해당동작은 "정상동작" 범주에 벗어나는 비정상적인 요청인가요?? Q2) 디버깅을 하는 중인데, Depth Level이 높게 들어오는 부분이 InteliJ에서도 확인 가능한데요, 이걸 근거로 요청을 보내는 브라우저의 문제가 아닌 코드상의 문제로 생각이 드는데 올바른 해결 방향일지 궁금합니다 [실행환경 & 재현하는 방법] - 코드 : https://github.com/d-h-k/Spring_PlayGround/tree/v0.220101/spring-advenced/advenced - 위 링크에서 tag v0.220101 로 만들어놓았고, /spring-advenced/advenced 디렉토리 하위의 인텔리제이 프로젝트로 실험을 진행했습니다 - (위 링크와 동일)증상은 여기 링크의 영상에서 확인 가능합니다 : https://youtu.be/hBYAinNtMxg
-
미해결
개복치님의 블로그가 어디 인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 개복치님의 불로그가 어디 인가요?
-
미해결차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원
강의자료요청
차량번호판 인식실전프로젝트 후반부 강의자료를 부탁 합니다 이메일주소 hakjuknu@gmail.com
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
안녕하세요 맛비님
설치 하려고 하는데 C드라이브가 기본으로 잡혀있고 그런데 왜 왜 저장공간이 부족하다는지 모르겠네요 혹시 저게 70기가가 넘어갈까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
굳이 locale을 설정해야 하는 이유가 있나요?
유니코드 관련해 질문이 있습니다! UTF16 방식이 2바이트에 각종 문자를 할당하는 것이라면, 한글에도 문자 하나하나에 2바이트 크기의 어떤 고유한 데이터가 할당되어 있는 것이라고 이해했습니다. 그런데 이러면 굳이 왜 locale("kor")을 해야하는 것인지 의문이 듭니다. wchar_t와 L을 쓰면, 이 데이터가 유니코드이면서 utf16 방식임을 충분히 알려준 것 아닐까요..? 그러면 데이터를 보고 이것이 한글임을 바로 알 수 있지 않나요??
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수내에서의 동적할당
여기까지 공부하다가 궁금한 점이 생겨서 여쭈어봅니다 함수내에서 new로 동적할당을 하게 된다면 어떻게 해야하나요? 만약 Item이라는 클래스의 포인터를 반환하는 함수라면 new선언 후에 리턴값으로 이 new로 선언한 것을 반환하게 된다면 delete는 어디에서 선언해야하는 걸까요? 일단 생각해본건 return후 반한된건 new로 선언한 힙에 저장된 객체의 주소일테니 함수의 이름을 delete하는 걸로 생각하고있는데 궁금해서 여쭈어봅니다 Item* Find() { Item* item = new Item(); item->a = 100; return item; } int main() { Item* it = Find(); delete it; return 0; }
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HOST, PORT 질문드리겠습니다.
새해복많이받으세요!밑의 질문글들 전부 읽어도 이해가 안가서 질문드립니다 배달의민족 백엔드서버host : www.delivery.comIP와 포트 : 200.200.200.2:8080 배달의민족 프론트엔드서버host: www.delivery.comIP와 포트 : 200.200.200.2:3000 위 두개의 서버를 한개의 서버(컴퓨터)에서 돌릴시처음에는 우선 Host정보를 바탕으로 찾고 그다음 패킷의 Port정보로 찾아들어간다고 보면 될까요? 두번째 질문은동일IP에 Host만(도메인명) 다르다고해서 동일 포트를 지정할수있나요? 만약 가능하다면 이경우 Host를 이용해서 찾아간다고 이해하면 될까요? host: www.delivery.comIP와 포트 : 200.200.200.2:3000 host:www.hungry.comIP와 포트 : 200.200.200.2:3000 같은 서버(컴퓨터)내에서 구동중
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
어셈블리 코드가 좀 다릅니다.
강사님 코드에는 함수를 call 하기 전에 a, b를 스택에 push를 하는데 제꺼에는 그러한 부분이 없고 mov로 처리를 하네요. 혹시 제가 visual studio 2022 버전을 사용해서 컴파일러가 달라서 이런건가요?? 아니면 x64와 x86의 차이인가요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
질문드립니다
어떤 경우에는 함수를 따로 쓰고 어떤 경우에는 함수를 print 안에 넣어서 사용하는데 어떤 차이가 있는지 궁금합니다 예를 들어, a. reverse () print ('a - ', a) 이렇게 쓰는 경우가 있는데 print ('a - ', a. pop()) 이렇게 적는 경우도 있는데 어떤 차이가 있는지 궁금합니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
number가 0이 안되는 상황이 이해가 않습니다.
public void Acquire() { while (_locked) // 화장실 문이 비어있을 때 까지 대기를 한다. { } // 들어가서 문을 잠그는 작업 _locked = true; } 이렇게 화장실에 들어가는 과정과 잠그는 과정이 달라서, 그 시간차 동안에 두 쓰레드가 동시에 공유 자원에 접근해서 number에 0이지 나오지 않는다고 설명해주셨습니다. 근데 이 설명이 잘 이해가 가지 않습니다. 위 코드에 화장실에 2명이 들어간다는 게 어떤 의미인가요? 제가 이해한 바로는 _locked이 false가 되어 while문을 빠져나왔을 때 다른 쓰레드도 Acquire함수에 접근하여, 두 쓰레드에서 _locked에 true를 대입하는 것으로 이해했습니다. 근데 이러한 이유 때문에 number++와 number-- 연산에서 에러가 나는 과정이 이해가 되지 않습니다. 결국 for문을 만번이든, 10만번이든 돈 다는 뜻은 number++ 혹은 nunber-- 연산을 했다는 뜻인데 왜 number에 0이 출력되지 않고 이상한 값이 출력되는지 잘 모르겠습니다. number++ 혹은 number-- 연산이 스킵이 되는 과정이 이해가 안갑니다.
-
해결됨스프링 핵심 원리 - 기본편
DIP위반 정확히 이해가 가지 않습니다
아래 질문들을 보면서 'appconfig를 사용하면 dIP위반이 아니다'라는 답변도 있고 '클라이언트 객체에서 구현체를 의존하니 DIP위반이다' 라는 답변도 있어 헷갈리네요ㅜ 결국 구현체에서 만든 객체를 가져다 쓰는것이 문제가 아닌, 호출하는 클라이언트에서 getInstance()라는 구현체에 속하는 매소드를 사용해서 DIP위반이라는 말씀이신가요? (클라이언트는 메인이나 test에서 appconfig or 구현체를 실행하는 부분) (클라이언트(구현체) <-> getInstance()(구현체매소드)) 그러면 이경우 appcofig에서도 getInstance()를 받아주는(객체.getinstance()를 리턴하는) 매소드를 만들어 주면 DIP가 만족된다는 말씀이신거죠? 그리고 위의 말이 맞다면 'private생성자(컴파일 에러나도록) + 각 구현체마다 static 객체생성 + AppConfig에서도 객체리턴이 아닌 객체.getInstance()를 넣어주는 것' 을 spring boot에서는 자동적으로 실행하여 주기에 엄청 편리하다. 해당 설명을 보여주기위해 영한님이 자바로 실행 했을 때와 스프링으로 했을 때를 비교해주신 거고요.. 맞나요?? 제가 머리가 나빠서 그런지 추상적으로 설명해주신 아래 글들로는 이해가 잘 가지않네요ㅜ 구체적으로 해당 편의 강의에서 어떻게 DIP가 위반된건지 설명해 주실 수 있으신가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
IDE로는 정상적으로 빌드되는데 cmd에서는 빌드가 되지않으신 분들!!
혹시 여러버전의 jdk를 설치해서 사용하시는 분들중에 java 버전과 javac 버전 11로 뜨는 걸 확인했는데도 cmd에서 빌드가 안되시는 분들은 컴퓨터 재부팅 해보시고 다시 빌드해보세요!! 저 같은 경우가 이랬었는데 적용이 제대로 안됬나 싶어 설마 하면서 재부팅하고 다시 해보니 정상적으로 빌드가 되네요....
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
수업의 코드가 이해가 안되어서 질문드립니다.
Thread1이 TestUser에서 lock이 걸리고 public static void TestUser() { lock(_lock) <-- 요기 { Console.WriteLine("This is TestUser"); } } Thread2가 TestSession에서 lock이 걸리는 걸로 알고 있습니다. public static void TestSession() { lock(_lock) { Console.WriteLine("This is TestSession"); } } 근데 이렇게 해서 데드락이 걸린다는 게 잘 와닿지 않습니다. 수업시간에 2개의 자물쇠를 각각 다른 사람이 잠굴 때 데드락이 발생한다고 하셨는데 위 코드가 그것을 설명하는 내용인가요? TestUser에서 lock이 걸려도 lock안의 코드를 수행하고 나오고, TestSession에서도 lock안의 코드를 수행하고 나오면 되지 않나요? 서로 다른 쓰레드여도 작업하는 공간이 다를텐데 왜 둘다 lock에서 먹통이 되는지 잘 이해가 가지 않습니다.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
라이브러리 여부 or 검색법
저는 강의를 듣기 전 커스텀 스크롤, dayjs이라는게 있는지 몰라서 라이브러리를 사용하지 못했었는데 , 어떻게 각 기능마다 딱맞는 라이브러리들을 어떻게 찾으시는지 궁금합니다 ! 주변에 많은 인프라로 이런 라이브러리를 접하게 되시는건지 , 구글에 검색하셔서 접하시는건지 궁금합니다 ! 그리고 moment에서 dayjs로 흐름이 넘어가는 것 같은데 이런 정보드는 어떻게 알 수 있는지 궁금합니다 !
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mask r-cnn custom data로 학습 하려다가 발생하는 오류 문의드립니다
안녕하세요. 저는 현재 제 custom data로 mask rcnn을 통해 학습을 진행하고자 하고 있습니다. 현재 각 label을 1로 masking한 후, 강의처럼 폴더를 만들어서 진행하였습니다. 그림에는 image가 추가가 안되어 있지만 이후에 추가를 하여서 데이터셋 자체는 잘 구축하였습니다. 각 image당 mask 이미지가 24장 있는 dataset입니다. 이미지 데이터는 이미지와 mask 모두 (512,512) 크기입니다 이후에 순차적으로 coco dataset으로 만들어주고, 코드를 실행하다가 마지막 train_detctor 부분의 에러를 해결하지 못하고 있습니다.. 실행을하고자 하는데 에러가 떠서 그냥 에러 전체를 첨부해보겠습니다. type이 현재 float 형식으로 되어 있는 것 같은데 어디에서 잘못된건지 잘 모르겠어서 이렇게 문의합니다. 감사합니다. ------------------------------------------------------------------------------------------------------------------------
-
미해결Slack 클론 코딩[실시간 채팅 with React]
return 함수 질문
return () => { disconnect(); }; 이부분을 왜 return disconnect(); 라고 하지 않고 함수안으로 감싸는지 궁금합니다 ! javascript 보면 이런씩으로 함수안에 감싸져있는 경우가 종종 있던데 어떻게 검색해서 공부해야할지 궁금합니다 ! 감사합니다
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
Configuration 사용자 인증처리 관련 (SecurityConfig) 적용되지않음..
application.xml 에 username/password 지정했을때는 Authroized 가 정상적으로동작했는데 SecurityConfig 클래스 생성 이후에는, ...;; 해당 클래스가 우선순위를 가지는데 뭔가 적용이 안되는지 항상 Authentication이 성공하게 됩니다;;; 무엇이 문제일까요? 일단 강의상으로 다른 화면은 .roles 쪽에 "USER"라는 것이 밑줄이 생기고 마우스 오버시에 No documentation found 라는 메시지가 뜬다는 차이점밖에 모르겠습니다;..... (Authrization이 적용안되었다는 증거 ) API call 할때, Postman에서 Authroization에 아무값도 넣지 않을때도 Authrization에 이전 application.xml 의 아이디비번을 쓸떄도 Authrization에 configure에 등록한 아이디/비번, 등록하지 않은 아이디/비번 입력시에도 항상 http://localhost:8088/users/1 의 데이터를 Return합니다. 혹시 몰라 새로운 탭 열어서도 get api 날렸는데도 데이터 return이 되었습니다; + 음....................... 정말 이상하게 질문글 올렸더니......ㅋㅋㅋ (이미 이전에 서버 재기동을 몇번이나 했었는데..ㅠㅠ) 갑자기 잘되네요............... 무엇이 문제였을까요;; + 새해 복 많이 받으세요 :) - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결스프링 핵심 원리 - 기본편
싱글톤 DIP위반
이전 글 들을 참고하였는데 이해가 완전히 된 것 같지 않아 확인차 질문드립니다. 아래의 코드에서 SingletonTest, 즉 클라이언트가 인터페이스가 아닌 클래스에 의존하고 있기 때문에 DIP위반이다.라고 이해했는데 맞나요...? public class SingletonTest { @Test @DisplayName("실글톤 패턴을 적용한 객체 사용") void singletonServiceTest() { SingletonService instance1 = SingletonService.getInstance(); SingletonService instance2 = SingletonService.getInstance(); } }
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
kubectl 명령어 질문
안녕하세요 강의 2-2에서 kubectl expose pod nginx --type=NodePort --port=80이렇게 설정하는데 kubectl expose pod nginx --port=80 이것과 차이점이 뭔가요? NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 38m nginx NodePort 10.103.228.4 <none> 80:31956/TCP 4m37s [root@m-k8s ~]# k get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 28m nginx ClusterIP 10.101.56.107 <none> 80/TCP 5m2s 80을 쓰지 않고 31956을 사용한다는 의미인가요?!
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
drf와 form
form도 구현해서 장고만으로 돌아가는 사이트와 drf를 거기에 얹어서 api를 동시에 사용 가능한가요