묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
핸들러, 어댑터 사용하는 이유
지금까지 만든 컨트롤러들MemberFormController, Save,List 전부 궁극적인 기능은 똑같은데 로직이 달랐던 거고, 각 버전마다 프론트 컨트롤러 만들어서 점점 좋게 리팩토링 시켜갔는데 .. 결국 궁극적인 목표가 같은 컨트롤러들을 (로직은 다르지만) 여러 개 만들고 어댑터를 사용하면서 바꿔가야 하는 상황이 어떤 상황인지 이해가 안가요..(최종으로 리팩토링된 컨트롤러 쓰면 되는거 아닌가요? ) 그리고 v5 프론트 컨트롤러에서, v3 버전이든 v4 버전이든 들어오는 경로에 따라서 v3,v4로 컨트롤러가 결정되는데개발자가 각 컨트롤러에 맞게 구현한다 라는 표현도 이해가 안가요.. (이미 요청하는 경로로 정해지는데 뭘 구현한다는건지..?)들어오는 요청이 같은데 컨트롤러를 골라서 한다던가.. 그런것도 아닌거같고 그리고 v4도 깔끔하게 코딩해서 ModelView를 직접 생성하지 않게 해서 만든건데 왜 굳이 어댑터를 사용해서 modelview를 만들고 v3나 v4나 같게하는건지...? ai 답변말고 지식인분들의 답변을 기다립니다
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
TObjectPtr 과 일반 포인터에 대한 용도 질문
안녕하세요 좋은강의 만들어주셔서 감사합니다.8강 16분 40초 부터 있는 TObjectPtr에 대한 질문입니다.TObjectPtr을 쓰는 이유는 해당 생성한 객체를 언리얼에서 더 안전하게 관리하고 GC추적에 용이하기 때문에 쓰는 것으로 이해 했습니다. 그리고 구현부 cpp파일에서는 임시로 사용하고 바로 해제하기 때문에 일반 포인터를 사용하는 것으로도 이해 했습니다. 그래서 궁금한 점 질문드립니다.클래스 내부에서 NewObject 직접 생성한 클래스가 아닌 외부에서 참조한 즉 캐싱용도인 멤버변수로 저장하는 경우에도 TObjectPtr을 쓰는게 맞을까요? 예를들어 GameInstance는 싱글톤 형식이라GetWorld()->GetGameInstance()이런식으로 접근하던데 그렇다는 것은 언리얼 내부 어딘가에서 GameInstance를 생성하고 이를 TObjetPtr 스마트 포인터 형식으로 관리를 하고 있을것이다 생각했습니다.그랬을떄 만약 어떤 클래스에서 매 프레임GetWorld()->GetGameInstance() 호출하는 대신 효율을 위해 한 번만 가져와 멤버 변수에 캐싱 하는 경우를 가정하면이때는 해당 클래스가 생명주기를 직접 책임지는 것도 아니고 GC가 따로 추적할 이유도 없어보이고 단순 캐싱용도로만 저장했기때문에 이런 목적에는 TObjectPtr 대신 일반 포인터를 써도 되지 않을까 생각이 들었습니다.아무래도 해당 클래스에서 생성한 객체가 아니고 단순히 빠르게 접근하기위한 캐싱용도로만 저장했기 때문에 TObjectPtr로 굳이 넣을 필요가 있을까? 의문이 들었습니다. 어떤 방법이 맞을까요?
-
해결됨해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
handray 문제 푸는 법을 모르겠습니다.
디버거에다가 실행했는데 뭘 어떻게 해야할지 모르겠어요
-
미해결해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
가상환경 세팅은 어디로 들어가야 볼 수 있나여?
찾아도 안보입니다..
-
미해결Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)
상세 페이지 404 에러 발생
안녕하세요, 짐코딩님.덕분에 재밌는 수업 듣고 있습니다. :) 현재 저는 짐코딩 님의 깃허브에서=> 최종 코드를 clone해서 모두 받은 후 그 중에서 Notion API만 변경해서 제 notion과 연결을 한 후 수업을 수강하고 있습니다. (API 연결 활성화가 되어 있는 캡처본/.env에서도 환경변수로 설정 완료) 혼자서 노션 블로그 게시물 등록 및 조회 테스트를 해보다가 2가지 문제점이 발생했습니다. 제가 직접 노션에 추가한 게시물의 경우 '게시물 목록'에는 뜨지만 상세페이지 클릭했을 경우 404 에러 발생 예를 들어) localhost:3000/blog/web (web은 slug 값) 이렇게 타이핑하면 상세 페이지에 잘 들어가는데, 해당 블로그를 클릭해서 들어가면 아직 url에 localhost:3000/blog/243888f~~ 이런식으로 뜨네요 ㅜㅜ 반영이 늦는걸까요직접 노션에 추가한 게시물을 노션에서삭제한 후브라우저에서 보면 사라지지 않고 '게시물 목록'에 뜨고, 상세페이지를 클릭했을 경우 '404 에러 발생' 제가 직접 올린 노션 게시물만 저런 현상이 발생하고. 짐코딩님께서 미리 작성해놓으신 '웹 개발 학습 가이드'나 'Git 시작하기' 등은 상세 페이지를 클릭하면 잘 뜹니다. 이유를 모르겠습니다 ㅜㅜ 코드를 전달 드리고 싶은데,짐코딩님 코드를 모두 클론한 걸 사용하고 있어서 어떻게 전달드려야 할지 모르겠어서 우선은 404 에러가 뜨는 이미지와 상황 설명만 먼저 전달 드립니다! 참고로 현재까지 저는 remark and rehype 플러그인 설치 강의까지 학습했습니다! 제가 왕초보라 많이 미흡합니다. 최대한 쉽게 설명해주시면 너무나 감사드리겠습니다!항상 친절한 답변과 강의 감사드립니다.
-
미해결인프런 클론 바이브코딩 with Windsurf, Cursor, Claude Code, Rails
surf 명령어 입력 안되는 문제
5강 1:37 부분 surf 명령어가 입력되게 하려면 세팅을 어떻게 해야 하는지 궁금합니다.
-
미해결국내는 기본, 해외까지 노리는 코딩 인터뷰 실전 패키지
실전문제풀이 영상 코드 폰트가 작으며 영상이 뭔가 흐릿합니다.
안녕하세요.강사님 실전문제풀이 잘 보고 있습니다만,일부 문제 폰트 크기가 작아서 문제나 풀이 코드가 잘 보이지 않습니다. 그래서인지 영상도 흐릿하게 보입니다.추가되는 다음 영상에서는 폰트 크기 키워주시기를 부탁드립니다. 감사합니다.
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
"Enter 키 발생 시 항목 추가" 부분에서 공백이 포함되면 한 줄이 더 입력됩니다
추가할 todo에 공백이 포함된 상태로 엔터를 입력하면 위와 같이 추가가 되는데 제가 잘못한 부분이 있을까요?https://github.com/juan-rybczinski/learn-react/commit/dba6aab43a96601fed941edfa652e4508f6a88e9
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
리액트로 전환 하는 방법
이미 만든 홈페이지를 리엑트로 전환해야하는데어떤 강의를 들으면 되나요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
props에서 컬러 변경 안됩니다
다른건 다 됫는데 컬러만 변경이 안되네요ㅠ
-
해결됨친절한 블렌더 - [LV.1] 기초 모델링
창문 렌더링이 검은색으로 깨져보여요
안녕하세요 선생님! 창문이 검은색으로 깨져보여서 여쭤봅니다! 렌더링 화면을 보면 창문 틀이 저렇게 검은색으로 깨져보입니다.렌더링 화면 외 다른 와이어,솔리드 화면에서 보면 딱히 이상한 점이 없어 보이는데 렌더 화면으로 보면 저렇게 보이네요. f12로 봐도 마찬가지였습니다. 혹시 물체가 두개로 겹친건가 싶어 체크해봤지만 하나로 되어있었구요...그리고 미러 모드를 끄면 2번째 이미지처럼 또 멀쩡해보입니다. 어디가 문제인 걸까요??ㅜㅜ
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
vscode 코드 작성 후 저장 누르면 괄호가 없어지는 문제
return 다음 괄호가 저장을 하면 없어지는데어떻게 해결해야하나요?
-
미해결실무자를 위한 구글애널리틱스(GA4+GTM) 활용법(25년 Update)
미리보기에서는 수집되나 제출 후 실제 사이트에서는 수집 안됩니다..
안녕하십니까 강사님 강의 정말 유용하게 잘 듣고 있습니다.한 번 강의를 다들은 후에 제가 티스토리 블로그를 만들어서 해당 블로그를 바탕으로 데이터를 수집하고자 합니다. cafe24와는 조금 다르지만 티스토리에서 html <head>, <body> 부분에 구글 태그 매니저 코드를 넣고 구성 태그도 모두 설정해주고 제출도 모두 하였습니다.수집이 되는 것을 보고 추후 이벤트 설계 등 더 발전시켜 나가고자 하였는데, 미리보기로 사이트에 접속되면 데이터가 수집되나 실제 사이트에 접속하면 데이터가 수집되지 않습니다..그래서 새로운 컨테이너를 또 만들고 기존 컨테이너를 삭제하였는데 시간을 기다려야 적용이 다시 될까요..?제가 잘못한 부분이나 놓친 부분이 있을까요..?? 도움 부탁드립니다< 미리보기 옵니버그>< 실제 사이트 옵니버그 > 사이트에서 실행한 Tag Assistant에서는 태그를 찾았다고 나오는데태그 관리자 설치에서 테스트를 해보면 감지되지 않는다고 나오는데 이게 문제일까요..?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
인텔리제이 커뮤니티 버전 사용시 데이터베이스 사용방법에 대하여
10강에서 데이터 베이스 다룰때 인텔리제이 커뮤니티 버전에서는 어떻게 해야할까요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
생산자,소비자와 작업큐 질문 드립니다.
앞서 생성자, 소비자 강의에서 생산자가 데이터를 생성하면 다음과 같이 데이터를 넣었고queue.offer(data);소비자는 큐에서 생산자가 생산한 데이터를 꺼내어 소비하였습니다.queue.poll(); 이번 강의에서는 큐에 작업을 넣고, 빼서 처리합니다.생산자 소비자에서는 데이터를 넣고 빼고 이번 스레드풀 강의에서는 작업을 넣고 빼니 처음에는 작업을 넣고 빼는 큐와 생산자,소비자가 사용하는 큐가 별도로 있는 건가? 했는데 강의를 들어보니 별도로 있는건 아니고 같은 큐인것 같더라구요. 그런데 생산자,소비자에서는 어떤 작업의 결과인 데이터를 생산하여 큐에 넣고 꺼내어 소비한다는 것이 직관적이어서 이해가 잘되었는데요.이번 강의에서는 생산자가 '작업'을 큐에 넣고 빼서 소비자가 큐에서 작업을 빼는데 큐에 넣는 주체가 '데이터'에서 '작업'으로 바뀌어 설명하니 무엇을 생산하는 것이지? 하며 헷갈린다고나 할까요.생산자소비자 강의에서처럼 어떤 작업의 결과를 큐에 넣고 빼는 것이 아니라실제로는 작업 자체를 생산하여 큐에 넣는건가요? 그러니까 앞선 생산자와 소비자는 단순 이해를 위한 것이고 실제로는 Runnable 이라던지 Callable 같은 작업 객체 자체가 생산되어 큐에 들어가는 것인가요? 감사합니다
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
AtomicInteger.get()을 CAS 연산 후 반환값으로 사용하면 안 되는 이유 공유
AtomicInteger.get()을 CAS 연산 후 반환값으로 사용하면 안 되는 이유 🚨 핵심 문제: 원자성에 대해서 다시 생각해보기CAS 연산의 원자성은 compareAndSet() 호출 자체에만 적용됨CAS 성공 후 get() 호출은 완전히 별개의 연산두 연산 사이에 다른 스레드가 개입 가능멀티스레드 환경에서는 언제든지 다른 스레드가 개입 가능개발자는 OS가 중간에 어떤 스레드를 호출할지 알 수 없음 🔍 문제 발생 메커니즘1. 시간적 틈(Time Gap) 존재result = atomicInteger.compareAndSet(getValue, getValue + 1); // ✅ 원자적 // ← 이 시점에서 다른 스레드가 값을 변경할 수 있음 return atomicInteger.get(); // ❌ 별개의 연산, 원자성 보장 안됨 2. 스레드 스케줄링의 불확실성sleep(100) 동안 CPU가 다른 스레드로 전환CAS 성공 직후에도 스케줄러가 해당 스레드를 중단시킬 수 있음먼저 시작된 스레드가 먼저 완료된다는 보장 없음 📊 실제 문제 시나리오초기값: atomicInteger = 0 Thread A: getValue = 0 Thread A: compareAndSet(0, 1) 성공! → atomicInteger = 1 Thread A: CPU 스케줄러에 의해 중단됨 Thread B: getValue = 1 Thread B: compareAndSet(1, 2) 성공! → atomicInteger = 2 Thread A: 재개됨 Thread A: atomicInteger.get() 호출 → 2 반환 ❌ 결과: Thread A가 실제로는 0→1로 증가시켰지만, 2를 반환하게 됨 ✅ 올바른 해결책: getValue + 1 사용동작 원리private static int incrementAndGet(AtomicInteger atomicInteger) { int getValue; boolean result; do { getValue = atomicInteger.get(); // 현재값 저장 result = atomicInteger.compareAndSet( // CAS 연산 getValue, getValue + 1 ); } while (!result); return getValue + 1; // CAS에서 사용한 기댓값 + 1 } 장점CAS 연산 시점의 값 고정: getValue는 CAS 연산에서 사용한 정확한 기댓값다른 스레드 개입 무관: 이후 다른 스레드가 값을 어떻게 변경하든 영향받지 않음메서드 의미 보장: "이 메서드가 실제로 설정한 값"을 정확히 반환 🎯 핵심 교훈❌ 잘못된 가정"CAS 성공 후 바로 get()을 호출하면 방금 설정한 값을 가져올 것이다" ✅ 올바른 이해원자성은 단일 연산에만 적용연산 간의 순서나 연속성은 보장되지 않음멀티스레드 환경에서는 언제든지 다른 스레드가 개입 가능개발자는 OS가 중간에 어떤 스레드를 호출할지 알 수 없음 💡 실무 적용점AtomicInteger의 내장 메서드 활용// 직접 구현하지 말고 내장 메서드 사용 int result = atomicInteger.incrementAndGet(); CAS 패턴 사용 시 주의사항연산 결과는 CAS에서 사용한 값을 기준으로 계산별도의 get() 호출로 "현재값"을 가져오려 하지 말 것원자성의 범위 명확히 이해단일 메서드 호출 = 원자적여러 메서드 호출의 조합 = 원자적이지 않음
-
해결됨웹소켓/STOMP 채팅서비스(spring, vue, redis)
웹소켓 서버 재배포시 고려해야 할 상황 질문
안녕하세요. 우선 좋은 강의 만들어주셔서 정말 감사드립니다. 한가지 질문이 있습니다. 만약 spring boot 이용해서 stomp 프로토콜을 이용해서 채팅 서비스를 구축 한다고 하였을 때 특정 사용자가 최초 웹소켓 connection 연결 후 해당 웹소켓 서버가 재배포 했을때 고려해야 될 상황이 있습니다. 그럼 프론트 서버에서는 기존에 연결되었던 프론트 서버 정보는 모두 삭제가 될텐데요. 이렇게 된다고 하면 사용자는 채팅 페이지에서 채팅 서비스가 멈춤 현상이 발생 할 것 같습니다. 이것을 해결하기 위해 특정 프론트 서버 정보는 백엔드 서버 메모리에 저장 하는 것보다 외부 서버에 (Ex> Redis) 관리 해야 할까요?
-
미해결바이브 코딩으로 만드는 재미있는 재무제표 (커서 ai)
무료버전이라 그런가요 .. accept 버튼이 안보이네요 파일 형태로 자동으로 만들어주는 기능이없어요
무료버전이라 그런가요 .. accept 버튼이 안보이네요 파일 형태로 자동으로 만들어주는 기능이없어요
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
함수 사용식 문의합니다
강의에서function Header () {}와 const Header = () => {}이 식이 똑같다고 하셔서function Header () {} 이 식으로 컴포넌트header.jsx파일에 붙혀넣었더니 페이지오류가 나오더라구요import로 연결할땐 차이가 있는걸까요?
-
미해결김영한의 실전 자바 - 중급 1편
내부 클래스의 바깥 클래스 참조
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]교재 챕터7(중첩클래스, 내부클래스) 16쪽에서 "실제로는 내부 인스턴스는 바깥 인스턴스의 참조를 보관"이라고 나와있는데, 정확히 어느 공간에 저장하는건가요?