묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
WriteLock이 기존 진행 되는 ReadLock이 끝남을 기다리는 과정에 대해서 질문드립니다.
int desired = (Thread.CurrentThread.ManagedThreadId << 16) & WRITE_MASK; while (true) { for(int i = 0; i < MAX_SPIN_COUNT; i++) { if (Interlocked.CompareExchange(ref _flag, desired, EMPTY_FLAG) == EMPTY_FLAG) return; } Thread.Yield(); } desired 부분에서 마스크를 통해 WriteThreadId를 제외하고 밀어버린 뒤 Interlocked부분에서 비교를 통해 ReadLock과 WriteLock이 없는지 비교하고 있습니다. 위 과정에서 만약 먼저 ReadLock이 잡혀있다면 ReadLock이 풀릴 때 까지 기다리게 되는데 만약 끊임없이 Read가 일어나 ReadLock이 풀리는 틈이 없어 Write가 되지않는 극단적인 경우는 일어나지 않는건가요? 혹시라도 일어나지 않는다면 Read 하는 과정이 매우 짧기 때문에 그런 일이 발생하지 않는 것인지 궁금합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
24년 2회기출 35분 52초
24년 2회기출 35분 52초 에 아스키코드 65,97 설명하시는데65가 더 작은 소문자 a 라고 말한게 잘못말한거 같아요
-
해결됨비전공자도 이해할 수 있는 Docker 입문/실전
workdir 대신에 RUN mkdir /directory COPY 상대경로 /directory/복사할파일 이런식으로 구현해도 되나요 ?
둘 중 뭐가 보편적으로 사용되는 편인지 궁금합니다! 1번 사안WORKDIR /directory 2번 사안 RUN mkdir /directoryCOPY [복사할 파일의 상대경로] [/directory/복사할 파일]
-
미해결실리콘밸리 데이터 리더가 알려주는 기초 SQL
DuckDB API 사용시 Connection Error가 발생합니다.
실습 코드를 순서대로 진행하니 아래와 같은 에러가 발생했습니다.*********************확인해보니 3번째 셀에서 duckdb를 연결하고%sql duckdb:///duckdb.db 그 아래에서 다음과 API로 연결을 시도하면 계속 에러가 발생합니다.duckdb_con = duckdb.connect("duckdb.db") **********************그래서 노트북 세션을 초기화하고 duckdb.db 파일을 삭제하고 3번째 셀을 실행하지 않고 duckdb API로 바로 연결하니 그때서야 제대로 연결되었습니다.
-
미해결비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편)
@Cacheable key 속성에서 page, size 파라미터값 null
BoardService.class@Cacheable( cacheNames = "getBoards", key = "'boards:page:' + #page + ':size:' + #size", cacheManager = "boardCacheManager" ) public List<Board> getBoards(int page, int size) { log.info("page={},size={}", page, size); Pageable pageable = PageRequest.of(page - 1, size); Page<Board> pageOfBoards = boardRepository.findAllByOrderByCreatedAtDesc(pageable); return pageOfBoards.getContent(); }BoardController.class@GetMapping public List<Board> getBoards( @RequestParam(name = "page", defaultValue = "1") int page, @RequestParam(name = "size", defaultValue = "10") int size ) { log.info("page={}, size={}", page, size); return boardService.getBoards(page, size); }#page, #size 값에 모두 null이 저장되는 것 같습니다.위 코드에서처럼 BoardService.getBoards(), BoardController.getBoards() 두 메서드 전부 page, size 값을 로그로 출력해보니 각각 1, 10으로 여기서는 정상적으로 나오는데, 어디서 문제가 있는지 모르겠습니다.구글링을 해도 마땅한 답을 구할 수 없어서 질문 남깁니다!
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
카운터앱 구현하기에서 커스텀훅으로 관리하는 방법은 어떤가요?
안녕하세요!카운터앱 구현하기를 조금 다르게 코드를 짜보았는데, 커스텀훅을 활용법에 익숙하지 않아서, 이렇게 구현하는 방법이 적절한지 감이 안와요.. 바쁘신데 죄송하지만 아래와 같은 커스텀훅 구현방식의 장단점에 대해서 알려주시면 감사하겠습니다! 먼저 useCount.jsx를 아래와 같이 작성하였구요import { useState } from 'react'; function useCount() { const [num, setNum] = useState(0); const onClinkCount = (e) => { setNum(num + Number(e.target.value)) } return [num, onClinkCount]; } export default useCount; 아래는 넘버 조작 부분인 Controller.jsxconst Controller = ({ onClinkCount }) => { return ( <div> <button onClick={onClinkCount} value="-1">-1</button> <button onClick={onClinkCount} value="-10">-10</button> <button onClick={onClinkCount} value="-100">-100</button> <button onClick={onClinkCount} value="+100">+100</button> <button onClick={onClinkCount} value="+10">+10</button> <button onClick={onClinkCount} value="+1">+1</button> </div> ) } export default Controller카운트 넘버 표시부분인 Viewer.jsxconst Viewer = ({ num }) => { return ( <div> <div>현재 카운트:</div> <h1>{num}</h1> </div> ) } export default Viewer그리고 부모 컴포넌트인 App.jsx 입니다.import "./App.css" import Controller from './components/Controller' import Viewer from './components/Viewer' import useCount from './hooks/useCount' function App() { const [num, onClinkCount] = useCount(); return ( <div className='App'> <h1>Simple Counter</h1> <section> <Viewer num={num} /> </section> <section> <Controller onClinkCount={onClinkCount} /> </section> </div> ) } export default App 🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨질문 하시기 전에 꼭 확인해주세요- 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다)- 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다)- 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢)질문 하실때 꼭 확인하세요- 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X)- 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지)- 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우)- 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요- 강의의 몇 분 몇 초 관련 질문인지 알려주세요!- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨Godot Engine 마리오라이크 2D PC 게임 만들기
Region Rect 디버그할때 수치가 바뀌는걸 볼 수 없어요.
배경화면이 X, Y 축으로 반복되면서 흐르는 걸 하는 중인데요...region_rect.position이 계속 증가하면 수치가 커지니까Vector2.ZERO로 초기화하는 부분을 하고 있어요.코드는 작성했고 동작은 정상적으로 하는데제 고도엔진 화면에서는 영상처럼 Region의 Rect.x Rect.Y의 수치가 변하지 않고 0으로 고정되어있는데 무슨 문제일까요?
-
해결됨2시간으로 끝내는 코루틴
async await 관련 질문
안녕하세요.val job1 = async { apiCall1() } val job2 = async { apiCall2(job1.await()) } printWithThread(job1.await() + job2.await())만약, job1에 대한 결과를 메인 코루틴과 job2 코루틴 각각에서 사용하고 싶으면 위와 같이 작성하면 되나요?제가 실제로 apiCall1에 print문을 넣어 보니까 1번만 출력이 되는 것을 확인했습니다. 만약, 위에 질문이 맞다면 코루틴 job을 생성하고 해당 결과를 받을 때는 항상 await() 함수를 호출하면 되나요?여기서 궁금한 점은 만약 서버와 통신하는 api라고 한다면, 새롭게 호출하고 싶을 때도 있을 텐데 이럴 때는 어떻게 기존 값이 아닌 새로운 값을 받을 수 있는지도 궁금합니다. 감사합니다.
-
해결됨Godot Engine 마리오라이크 2D PC 게임 만들기
영상에서는 디버깅할때 Sprite2D에서 Region Rect 수치가 계속 변하는걸로 보이는데...
어려운 점이 있으신가요? 망설이시지 말고 인프런이나 유투브에 질문을 남겨주세요.가능한 시간에 답변을 남겨 드리겠습니다. 또는 아래 커뮤니티에도 도움을 요청해 보세요.Sweet Spot 디스코드 서버- https://discord.gg/veAnCmBf고도 엔진 코리아 디스코드 서버- https://discord.com/invite/XK8Emsf고도 엔진 코리아 네이버 카페- https://cafe.naver.com/godotk커뮤니티에 본인을 소개하고 직접 완성하신 작품도 자랑해보세요 :)
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
학습자료 통합본
수업자료 PDF 통합본 언제쯤 나오나요? 이제 한 달이 채 안 남았네요ㅠㅠ
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
region
만약에 사용자가 한국에도 있고 다른나라 미국 프랑스 에도 있다고 한다면어떻게 해야할까요 ?
-
해결됨코딩테스트 [ ALL IN ONE ]
노션이 뭐죠??
그냥 구글폼에 제 메일주소 eovnfjfpa@naver.com으로 교재 신청했는데 아직 안와서요교재 좀 부탁드릴게요 노션이 뭔지 아무 설명이 없는데 메일로는 강의 교재가 안와서 문의드려요
-
해결됨독하게 시작하는 C 프로그래밍
파일에 대한 질문입니다.
안녕하세요 좋은 강의 잘 보고 있습니다!파일에 대해서 질문이 있어서 합니다.현재 저의 수준에서 User mode에서 파일이라 함은 장치를 추상화한 파일과 데이터 파일 두개가 존재한다고 보면 될까요?장치를 추상화한 파일을 콘솔로 예를 들어서 설명해 주셔서 직관적으로는 이해는 간 것 같습니다. 그렇다면 데이터 파일의 경우 우리가 모니터로 보는 데이터 파일 또한 추상화한 데이터라고 생각하여 모니터로 표현된 파일에 DATA를 쓴다면 사실은 내부적으로 추상화된 파일에서 파일 시스템에 접근 후에 필터와 드라이버를 거쳐서 HDD나 SDD에 접근하여 실제 물리적인 부분?을 고친 것이다. 라고 이해하면 될까요?
-
해결됨2시간으로 끝내는 코루틴
코루틴 실행 순서 궁금합니다.
안녕하세요.먼저 선생님 강의가 도움 많이 되고 있습니다.감사합니다. 질문이 두 가지 있습니다.질문 1.fun main() = runBlocking { println("START") launch { println("1") } launch { println("2") } launch { println("3") } launch { println("4") } yield() println("END") }이런식으로 되어 있다면yield실행 후에 1~4번 중 어떤게 출력될지는 랜덤인건가요?실제 실행 시에는 순서대로 되는걸 확인 했는데, 이게 항상 launch가 호출된 순서대로 출력되는건가요?질문 2.fun main() = runBlocking { println("START") launch { println("1") } launch { println("2") } launch { yield() println("3") } launch { println("4") } yield() println("END") }만약 3번에 yield 가 있다면, 어떻게 되는건가요?3번에 들어온 순간 끝나지 않은 Coroutine 중에서 랜덤하게 호출되는건가요?아니면 main으로 가서 END가 출력되는건가요?감사합니다.
-
미해결CPPG 자격증 취득 과정 (2025년)
EU-GDPR 주요 용어
수령인에서의 비고란 내용이 이해되지 않습니다.비고란에서의 내용은 결국 GDRP의 수령인과 제3자를 구분하는 범위에 대한 이야기일까요??
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
버튼 스타일링에서 Material State Property는 Depreciated?
depreciated되어 다른걸 사용 권장한다며 단어가 크로스아웃되어 나옵니다. 그래도 사용해야 할까요?
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
ios 캐시 삭제 방법 알 수 있을까요?
아래 방법을 진행하고 앱을 실행해도 앱이 사용자의 위치를 사용하도록 허용하시겠습니까? 라는 알림이 나오지를 않습니다.혹시 방법이 있을까요!? 방법 1.설정 -> 개발자 -> Xcode 프로젝트 빌드 파일 -> 2개 삭제 방법 2.npx react-native start --reset-cache 방법 3.yarn cache clean
-
해결됨Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
navigationBarTitle에 대해 (질문X, 공유O)
안녕하세요.먼저, macOS를 Sequoia로 업데이트 하면서 Xcode도 15에서 16으로 업데이트 했습니다.강의 6분 50초 정도부터 navigationTitle 관련된 코드 작성을 해주시는데 이전 OS나 Xcode15에서는 강의 내용대로 작성하면 제대로 되었던게 업데이트를 하고나니 안되더라구요.찾아보니 Xcode 16에서는 내비게이션 타이틀과 툴바의 상호작용이 일부 변경되었다고 합니다.하단에 .navigationBarTitleDisplayMode(.inline)을 추가하니 강의 내용과 동일하게 나타났습니다. 코드는 아래에 첨부하겠습니다..navigationTitle("프로필 편집") .navigationBarTitleDisplayMode(.inline) .navigationBarBackButtonHidden() .toolbar { ToolbarItem(placement: .topBarLeading) { Button { dismiss() } label: { Image(systemName: "arrow.backward") .tint(.black) } } }게시판 내용과 어긋나거나 잘못된 정보면 말씀해 주세요.감사합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
테스트 코드 createOrderWithStock 로그에 관하여
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요 강사님. 테스트코드의 @Transactional은 마지막에 rollback을 하기 때문에 dirty checking을 하지 않고, 이로 인하여 update쿼리가 전송되지 않을것이라 생각했습니다.하지만 로그에는 update stock set created_date_time=?, modified_date_time=?, product_number=?, quantity=? where id=? Hibernate: update stock set created_date_time=?, modified_date_time=?, product_number=?, quantity=? where id=?이처럼 quantity를 변경한것에 대한 update쿼리가 전송되었습니다.이 부분에 대해서 찾아본 결과 "테스트 코드 마지막에서 stockRepository.findAll() 을 통해 stock을 전체 조회할때, select쿼리가 db에 직접 날라가기 때문에 select쿼리가 수행되기전 flush()로 인하여 update쿼리가 날아갔다." 라고 이해했습니다. 제가 이해한 내용이 맞을까요?
-
해결됨비전공자도 이해할 수 있는 AWS 입문/실전
$0.131 per GB-month of provisioned GP3 storage running MariaDB
위 항목은 혹시 어디서 과금되는 것인가요? rds는 IPv4로 열지 않고 공유해주신 https://velog.io/@server30sopt/VPC-%EC%84%9C%EB%B8%8C%EB%84%B7-%EC%84%A4%EC%A0%95%EC%9C%BC%EB%A1%9C-RDS%EC%97%90-%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C-%EC%A0%91%EA%B7%BC%ED%95%98%EA%B8%B0위 블로그 참고해서 ec2 내부에서만 접근 가능하게 설정해놓은 상태입니다.여러 블로그 참고해서 현재 rds 세팅은 아래와 같습니다.매일매일 야금야금 오르고 있네요 ㅠ스냅샷도 없습니다.