묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
강의에서 발생한 이슈에 관하여 (30:40)
안녕하세요. 30:40 강의 구간에서 발생한, 메서드 추출 이슈에 관하여, 원인이 무엇인지 궁금해서 질문 드립니다.발생한 문제는지뢰를 밟았을 때, 모든 지뢰 구간이 노출 된다거나,셀을 열었을 때 엉뚱한 곳도 같이 열리는 현상이 나타납니다.문제 발생 지점은 updateCellAt 메서드 사용 구간 입니다. private void initializeEmptyCells(CellPositions cellPositions) { List<CellPosition> positionList = cellPositions.getPositionList(); updateCellsAt(positionList, new EmptyCell()); } private void initializeLandMineCells(List<CellPosition> landMinePositionList) { updateCellsAt(landMinePositionList, new LandMineCell()); } ... private void updateCellsAt(List<CellPosition> positionList, Cell cell) { for (CellPosition position : positionList) { updateCellAt(position, cell); } } 상위 호출 부분으로 넘어가서,제 생각에 initializeEmptyCells 와 initializeLandMineCells 메서드 호출로 넘기는 인자가, 공유될 대상이었나 라고 생각해볼 수 있었습니다.cellPositions 나 landMinePositionList 모두 새로운 컬렉션으로 리턴되어서, 공유되지 않다고 생각되었습니다. public void initializeGame() { CellPositions cellPositions = CellPositions.from(board); initializeEmptyCells(cellPositions); List<CellPosition> landMinePositionList = cellPositions.extractRandomPositions(landMineCount); initializeLandMineCells(landMinePositionList); ... }그러면 어느 부분이 메서드 추출로 인해, 공유될 대상이 발생한 원인이었나가 궁금합니다.
-
해결됨문법 공부 다음엔, 자바스크립트 프로젝트 101
bmi 계산기 질문있습니다.
bmi 계산기 부분에서 display함수 안에 let group; 이렇게 변수 선언만 해주는 이유가 뭔가요? 조금 쉽게 설명부탁드리겠습니다.
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
가상메모리 개념에 대해서
강사님의 가상메모리 강의를 듣고, 가상메모리는 무엇인가에 대해 대략적인 내용을 학습할 수 있었습니다. 이에 제가 이해한 개념이 올바른 내용인지 확인 부탁드리겠습니다. 최초에 저는 가상메모리에 대해 이해가지 않았던 부분이 있었습니다. 가상메모리는 실제 메모리보다 더 크게 보이게하는 기술이라는 맥락으로 설명을 주셨던 거 같습니다. 여기서 저는, "그러면 그 가상메모리는 어디에서 오는 건데?" 였습니다. 메모리라 하면, 주기억장치든 보조기억장치든 그 장치들이 실존하는 것이며, 용량도 정해져 있는데, 도대체 이 가상메모리는 어떤 메모리를 기반으로 제공되는 것인가. 이러한 생각이 드니, 어떻게 이해하려고 해도 쉽게 이해가 가지 않았습니다. 이에 구글링과 다른 영상 자료를 보며 이해에 도달했는데, 내용은 다음과 같습니다. 프로그램이 RAM 위에 올라가면 프로세스가 된다. (이는 강사님께서 말씀해주신 내용으로, 해당 개념을 기반으로 이해를 도모했습니다.)OS 는 프로세스에게 가상 주소 공간을 제공한다. (32biit 기준으로 4gb, 이때 가상 주소 공간과 가상 메모리 공간은 다른 개념)프로세스 내의 가상 주소 공간은 페이지 단위로 나눠지고, 논리 주소가 부여되며, stack 이나 heap, code 등이 해당 공간에 할당된다.이때 사용되는 페이지만이 RAM 의 프레임과 매핑되며, 사용되지 않는 페이지는 보조기억장치에 저장된다.이에 프로세스의 가상 주소 공간의 크기는 32bit 기준 4gb 지만, 실제로 운용되는 것은 1mb ~ 2mb 이다. (예를 들어) 이때 "가상 메모리는 실제 메모리보다 더 크게 보이게 하는 기술이다" 라고 말씀하신 이유는 실제 프로세스는 크기가 4gb 라고 치고, 불필요한 부분까지 모두 RAM 위에서 자리를 잡고 있다면, 소수의 프로세스 밖에 운용하지 못할 것이다.-> 이에 필요한 부분만 RAM 에 올림으로써 자원의 낭비를 줄이고, 많은 프로세스를 운용하게 할 수 있게 하기 때문이라고 이해를 했습니다. 추가적으로 이해한 내용으로는 가상메모리를 사용하는 이유로써,임의의 프로세스가 죽었을 때 OS 에서 이를 감지하여, 해당 프로세스의 페이지와 매핑된 프레임을 반환한다.이를 통해 다른 프로세스는 반환된 공간을 사용할 수 있게 된다.만일 가상메모리 기법이 존재하지 않는다면, 프로세스가 죽어도 RAM 위에서 자리를 차지할 것이며, 또 다른 프로세스들이 계속해서 죽어갈 때 끝내 RAM 에는 자리가 존재하지 않을 것이다. 위 내용과 같이 이해를 했으며, 최종적으로 가상메모리를 정의한다면, "가상 주소 공간을 주 기억장치와 보조 기억 장치 사이에서 매핑하여 효율적으로 메모리를 관리하는 기법이다" 혹시 제가 이해한 부분에 대해서 잘못된 점이나 보완할만한 점이 있다면, 조언을 부탁드리고 싶습니다.
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
MacOs m1 컨테이너 실행 문제
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.MacOs m1 사용중인데 Dockerfile을 이용해서 이미지 빌드한 후에 docker run --privileged -p 8080:8080 --name mytomcat docker-server:latest 명령어로 컨테이너 실행하면 exec /usr/local/tomcat/bin/catalina.sh: invalid argument 오류가 발생합니다edowon0623/docker-server:m1으로 이미지 받아서 실습 내용과 동일하게 실행했습니다
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
기출 24년 2회차 (파이썬 Split() 문제 )
강사님 안녕하세요 파이썬 Split 문제 풀던중 궁금한점이 있어 문의 드립니다.아래 코드 수행시 최종 출력값은 아래와 같이 출력 되어야 하는거 아닌가요?실제로 잘린 값: ['I' , 'IS', 'ES' , 'S' , 'RING']S코드 (아래 부터)dedef split_k(input_str, k): split_result = input_str.split('T') print(" 실제로 잘린 값: ", end="")print(split_result)return split_result[k](중략)
-
미해결해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문
이거 플래그 찾는거맞나요?
basic 을 넣고하면 flag가 HackWorld{censor}로 나와서 답이 아니길래 ./basic 을 빼고 했는데이렇게 경로가 / 여기로 가지는데 여기서 플래그를 찾아야 하는건가요? ..
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
패키지 관련 코드 질문이요.
UPackage* StudentPackage = ::LoadPackage(nullptr, *PackageName, LOAD_None);if (nullptr == StudentPackage){UE_LOG(LogTemp, Warning, TEXT("패키지를 찾을 수 없습니다."));return;}//내부에 가지고 있는 에셋을 모두 다 로딩해주는 함수StudentPackage->FullyLoad();다음 코드에서 내부에 가지고 있는 애셋을 모두 다 로딩해주는 함수가 FullyLoad()라고 들었는데요.애초에 하나의 패키지는 하나의 애셋만 가질수있는 구조라고 들었는데 그러면 FullyLoad()는애셋을 하나만 로딩해주는 거 아닌가요? 그리고 SaveStudentPackage( ) 함수에서 패키지를 생성하고 저장하기 전에 UPackage* StudentPackage = ::LoadPackage(nullptr, *PackageName, LOAD_None); if (StudentPackage) { StudentPackage->FullyLoad(); }이 작업을 하면 더 안정적 이다고 하셨는데, 잘 이해가 안가요.. 제가 이해한 바로는로딩해주는 작업은 에디터 상 애셋을 코드상에 가져오기 위해 쓰이는 걸로 알고있는데 그게 아닌가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
상태패턴과 브랜드 트리가 필요한 프로젝트의 경우
결국 상태 패턴을 적용해서 그걸 그대로 애니메이터의 스테이트로 연동하면서정리하셨는데 만약 상태패턴을 그대로 쓰면서 브랜트 트리를 꼭 써야하는 프로젝트면어떤식으로 정리하시는지 궁금합니다.
-
해결됨파이썬 알고리즘 트레이딩 파트1: 알고리즘 트레이딩을 위한 파이썬 데이터 분석
5분챌린지: Window 가상머신 만들기에서,,,
6:23~30 사이에 커서가 잠깐 사라지는데Remote Desktop Connection 창이 어디서 나타나는지 잘 안보이네요. Connect에서 연결, Bastion을 통한 연결 모두 선택해 보았는데동일한 창이 생성되지 않습니다. 확인 부탁드리겠습니다!
-
미해결프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
[수강 중 트러블슈팅 공유] webpack, webpack-cli 버전
"devDependencies": { "webpack": "^4.41.5", "webpack-cli": "^3.3.10" }수업과 동일한 명령어를 실행하려면 강의 내용과 동일한 버전을 사용하시면 문제 없이 실행됩니다. 버전이 바뀜에 따라 --help 결과물과 명령어 옵션들이 다소 변경되네요. (webpack major version이 4여도 변경 여부가 있습니다) 수업 노트에 webpack@4.41.5 버전을 사용하도록 안내해주시면 어떨까요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
강의에서 구조적, 행위 다이어그램 구분이 잘 된건가요?
화면설계/애플리케이션 테스트 강의의 4:15 입니다.PPT 상단에 [구조 - 커뮤니케이션, 활동 다이어그램] 제목으로 커뮤니케이션, 상태 다이어그램을 설명하고 있습니다.하지만 3:00 내용에 따르면 커뮤니케이션, 상태 다이어그램은 행위 다이어그램이지 않나요?
-
미해결Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)
firebase에서 데이터를 불러오는데 오류가 발생합니다.
grpc.resource_quota=0x600000cab5a0, grpc.server_uri=dns:///firestore.googleapis.com}}: connect failed (UNKNOWN:(domain:NSPOSIXErrorDomain, code:50, description:The operation couldn’t be completed. Network is down)위의 오류가 발생하는데 로그인 정보는 제대로 출력되는데 다른 부분에서 데이터를 불러오지 못하는데 어떤 부분을 수정해보면 좋을까요?
-
미해결노코드 버블, 클론웹사이트 만들기 A to Z
강의 자료는 어디에 있나요?
강의자료나 전달드린 파일이라고 하시는데어디에서 어떻게 받아야하는 걸까요?제가 놓친 걸까요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
정렬 문제에서 질문있습니다~~
혹시 강사님~~printf("\n\n")printf("\n정렬된 배열 상태: \n");이런식으로 나오면계행을 세번해서 출력문을 써야하나요??정렬강의 보다가 밑에 추가 예제보고 질문드립니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
빌드 배포
안녕하세요 강사님 !쇼핑몰 만들기 강의 빌드 배포과정에서 헤매는 수강생들이(저 포함) 많은 것 같은데 혹시 빌드 배포과정까지 영상으로 올려주실 계획은 없으실까요??
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
@Transactional(transactionManager = "createChatTransacationMansger") 질문 있습니다.
질문1: 강의에서 saveChatMessage() 메소드 진입시 @Transactional(transactionManager = "createChatTransacationMansger") 사용하는것을 말씀 해주셨는데요. 선생님께서 말씀해주신 강의 내용을 그대로 말씀드리자면 " 웹소켓 같은 경우에는 하나의 커넥션 즉 세션을 하나에 계속 공유하고 계속 사용 중이기 때문에 이 스톰프를 사용하는 웹소켓 통신 아니면 기본적인 웹소켓 통신에서도 이 트랜잭션에 대한 경계가 되게 명확하지가 않는 경우가 있습니다. " 즉 이 말씀은 따로 이렇게@Transactional public void saveChatMessage(Message msg) { chatRepository.save(chat); } @TransactionManager() 만 추가해서 관리 하면 문제가 생기고 @Transactional(transactionManager = "createChatTransacationMansger")이렇게 별도로 TransactionManager 를 추가해서 관리 해야 문제가 없다고 이해 하면 될까요??? 왜 TransactionManager 를 따로 만들어서 관리하는지 이해가 안가네요 ㅠ,ㅠ그리고 "웹소켓 같은 경우에는 하나의 커넥션 즉 세션을 하나에 계속 공유하고 계속 사용 중이기 때문에 이 스톰프를 사용하는 웹소켓 통신 아니면 기본적인 웹소켓 통신에서도 이 트랜잭션에 대한 경계가 되게 명확하지가 않는 경우가 있습니다"즉 이 말씀은 saveChatMessage 경우는 웹소켓 전용만 사용 할때만 이용하는 오퍼레이션 이기 때문에 다른 HTTP 통신 경우에 오는 FLOW 경우는 saveChatMessage() 메소드는 사용하지 마라 라는 의미로 @Transactional(transactionManager = "createChatTransacationMansger")이렇게 별도의 TransactionManager을 사용한 것인지 궁금 합니다. 질문2 선생님이 말씀해주신 내용을 그대로 말씀드리자면플러시는 기본적으로 JPA에서 다루고자 하는 트랜잭션이 담겨있어야 되는데 담겨있지 않았다는 에러가 발생하게 될 거예요 왜냐하면 제가 말씀드렸던 것처럼 웹소켓은 하나의 통신으로만 공유를 하기 때문에 경계가 명확하지 않아서 JPA 에서 일반적으로 트랜지액션을 잘 인식을 하지 못하고 잘 넣어주지를 못합니다 이렇게 트랜젝션을 선언하지 않으면 문제가 발생된다고 해주셨는데요. @Transactional public <S extends T> S save(S entity) { Assert.notNull(entity, "Entity must not be null"); if (this.entityInformation.isNew(entity)) { this.entityManager.persist(entity); return entity; } else { return this.entityManager.merge(entity); } }JPA save 메소드를 보면 이렇게 @Transaction 을 선언하기 때문에 굳이 @Transaction 을 선언하지 않아도 문제가 없지 않을까요??
-
해결됨친절한 블렌더 - [LV.0] 입문 필수
Subdivison Apply가 안됩니다
Subdivision Surface 영상 질문드립니다.6:14, 영상에서는 섭디비젼 모디파이어 적용 단축키인 Ctrl A를 누르면 적용이 바로 됬는데 저는 바로 적용이 안되고 파이가 나옵니다. 4.2버전을 사용하고 있고, 파이 나온거 다 눌러봤는데 apply되는 건 없었습니다. 프리퍼런스- 3D 뷰포트 파이 메뉴에서 Ctrl A 단축키의 표시를 꺼도 파이가 아닐 뿐 메뉴가 나오는 건 똑같았어요.어떻게 하면 단축키로 섭디비전 모디파이어를 apply 시킬 수 있을까요?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
getLayout이 받는 page라는 인자는 왜 "현재 페이지"인가요??
각 페이지에 레이아웃을 덮어씌워 보내는 함수인 getLayout이라는 메소드는 저희가 정의한 커스텀 메소드인데이 메소드가 받는 page라는 인자는 어떻게 현재 페이지가 되는지 모르겠습니다. 떄문에 app.tsx에서 해당하는 Component(접속한 페이지)의 getLayout이라는 메소드가 없을 경우에 (page)=> page라는 함수를 리턴시켜 기본의 페이지를 리턴한다는 맥락도 또한 이해가 가지 않습니다.page라는 인자는 도대체 왜 현재페이지라고 인식해서 오는지요ㅠㅜ
-
해결됨Real MySQL 시즌 1 - Part 1
ep11) Prepared Statement에서 질문
안녕하세요 강사님Client Side PreparedStatement 는 어떻게 SQL Injection을 막을 수 있다는게? 에 set하기전에 application에서 체크해서 막는다는의미인가요?
-
미해결코로나맵 개발자와 함께하는 지도서비스 만들기 1
마커이미지가 깨집니다
content:'<img class="pulse" draggable="false" unselectable="on" src="https://myfirstmap.s3.ap-northeast-2.amazonaws.com/circle.png">',아무리 봐도 주소가 잘 입력된 것 같은데 마커가 깨져서 보입니다 ㅠㅠ 대체이미지 링크 넣었을 때는 잘 되는 걸로 보아 문제는 없어 보이는데 주소 문제인 것 같습니다...