묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
16진수에 대한 설명
<3.8 8진수와 16진수>강의에서 16진수에 대해 설명하시면서unsigned int의 최댓값을 각각 10진수, 2진수, 8진수, 16진수로 나타내주셨습니다.16진수의 표현에서 f가 8개인 이유는 16이 2의 4제곱이기 때문이라고 하셨는데 해당 설명의 메커니즘이 잘 이해가 되지 않아 질문드립니다.수강 후 공부해본 결과, 2진수 1111이 16진수에서 f 하나에 해당하기 때문에, 해당 unsigned int의 최댓값인 2진수의 32비트는 나누기 4를 하여 16진수에서 8자리가 나타난다는 것은 이해를 하였습니다.그러나 16이 2의 4제곱이라서 8개의 자리만 있으면 된다는 설명에 대해선 이해가 어려워 조금 더 구체적으로 알려주시면 감사하겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI 자동화 장점
예전에 회사에서 유니티로 어플을 만들 때 버튼 클릭할 때 나오는 사운드를 BUTTON 컴포넌트에 함수로 매핑을 해준 적이 있었습니다. 드래그앤드롭으로 인스펙터창에 붙였었는데, 유지보수 측면에서 함수의 이름을 바꿔야할 상황이 왔었는데 함수 이름을 바꾸니 제가 프로젝트의 버튼에 매핑 시켰던 모든 버튼 클릭 함수가 Missing이 떴었습니다. 이 때, 루키스님의 UI 자동화의 장점을 뼈저리게 느꼈었는데 혹시 이런 상황 말고도 루키스님이 자주 쓰시고 저희에게 가르쳐주신 UI 자동화만의 장점이 있을 까요?? 단점도 궁금합니다(아마 단점은 하나의 Scene에서 게임 오브젝트의 이름이 같은 게 2개 이상 있으면 정상 동작하지 않는다 인 것 같은데 맞을까요? 그 외의 단점도 궁금합니다!!)
-
해결됨
hibernate 6.x 에서 batch size의 전략 변경하기 아는 분 있으신가요?(batch_fetch_style deprecated issue)
https://www.inflearn.com/questions/34469위 링크를 참조해보면, 이전에 hibernate 의 batch size 기본전략이 legacy 임을 알 수 있습니다.하지만, 현재 사용 중인 hibernate 6.2 에서 @BatchSize 를 사용하면 기본적으로 dynamic 으로 조회되고 있습니다. 참고로 글로벌 설정으로 default_batch_fetch_size 를 설정해도 동일합니다. select ... from my_table m1_0 where m1_0.id in(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) binding parameter [1] as [INTEGER] - [5] binding parameter [2] as [INTEGER] - [1] binding parameter [3] as [INTEGER] - [null] ... binding parameter [98] as [INTEGER] - [null] binding parameter [99] as [INTEGER] - [null] binding parameter [100] as [INTEGER] - [null] 그래서 batch_fetch_style 을 직접 설정하려고 봤더니 hibernate 6.0 이후부터는 deprecated 되었고, MultiKeyLoadSizingStrategy 를 사용하라고 하네요. 혹시 이 MultiKeyLoadSizingStrategy 사용해보신 분 있으신가요?또는 다른 방법으로 batch size 전략을 이전의 기본전략인 legacy 처럼 변경하신 분이나 현재 프로젝트에서 비슷한 issue 겪으신 분 있으신가요?--(아까 오전에 비슷한 질문 올리면서, spring.jpa.properties.hibernate.jdbc.batch_size 사용하면 되는 것 같다고 했었는데 착각이었습니다. 실제로는 n + 1 발생에 영향을 주지 않습니다.)--(추가)MultiKeyLoadSizingStrategy 를 사용하는 부분은 Dialect 입니다. 이때 넘겨받는 numberOfKeys 는 지정한 BatchSize 와 동일합니다. 그리고 아래 코드에 의해 최종적으로 생성하는 ? 의 개수는 최초로 딱 1번, 1개만 생성되는 것처럼 보입니다. 그러면 코드가 dynamic 처럼 작동하는 게 이해는 가네요. 동적으로 id 의 개수에 따라 다른 PreparedStatement를 사용하는 게 아니니까요.만약 BatchSize 를 10으로 정한 필드가 있다면, 해당 필드는 아래 코드에 의해 10(pad=false, column=1) 또는 16(pad=true, column=1) 둘 중 하나의 쿼리만 생성됩니다.위에서 언급한 링크에서 김영한 님 설명대로라면 10 + nlog2 개의 쿼리가 생성되는 데 반해, MultiKeyLoadSizingStrategy 는 딱 하나의 쿼리만을 생성하고 재사용하는 것 같습니다. 그런데 그 쿼리의 ? 의 개수를 '잘' 정하는 거죠.그러면 pad와 numberOfColumns 를 어떻게 바꾸느냐도 알아봐야겠네요... 그리고 최적화에 대한 새로운 패러다임? 자체도 이해할 필요가 있어 보입니다. 아래는 Dialect 추상클래스의 일부분입니다. protected final MultiKeyLoadSizingStrategy STANDARD_MULTI_KEY_LOAD_SIZING_STRATEGY = (numberOfColumns, numberOfKeys, pad) -> { numberOfKeys = pad ? MathHelper.ceilingPowerOfTwo( numberOfKeys ) : numberOfKeys; final long parameterCount = (long) numberOfColumns * numberOfKeys; final int limit = getParameterCountLimit(); if ( limit > 0 ) { // the Dialect reported a limit - see if the parameter count exceeds the limit if ( parameterCount >= limit ) { return limit / numberOfColumns; } } return numberOfKeys; };--(추가)pad 설정은 아래와 같이 하면 됩니다. 기본값은 false 인 것 같네요.spring.jpa.properties.hibernate.query.in_clause_parameter_padding=true그리고, numberOfColumns 는 굳이 건드려야 할 필요는 없어보입니다.--결론적으로 batch_fetch_style 이 deprecated 된 이후에는 기존의 legacy 처럼 여러 개의 statement 를 만들어서 사용하지 못 하고, 각 Entity 의 batch size 를 얼마나 설정하느냐에 따라 Dialect가 그에 대응하는 딱 하나의 statement 를 만드는 것 같습니다.
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
ES모듈 전환 질문
제가 지금까지 이해한 바로는, esModuleInterop를 true로 설정하면 CommonJS모듈에서 내보내기 한 것들을 ES모듈의 내보내기 한 것으로 변환 시켜주는데 CommonJS에선 module.exports나 exports.변수 나 둘 다 하나의 객체로 담겨져 보내지니 ES모듈의 내보내기로 전환될 땐 무조건 Default Export 방식으로 전환되는 것으로 알고있습니다. 그래서 ES모듈로 가져오는 것으로 바꿔줄 때에도 그냥 Default Export 를 가져오는 방식으로만 변환해주면 되는 것으로 아는데 const { Strategy: LocalStrategy } = require("passport-local"); 이 부분을import { Strategy as LocalStrategy } from "passport-local"이렇게 Named Export를 가져오는 방식으로 바꾸는 것이 가능한 게 이해가 되질 않습니다.import Strategy as from "passport-local" 이렇게 가져와서 따로 구조분해를 해야 하는 것이 아닌가요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
SAA오프라인 시험 준비물
안녕하세요 선생님제가 9월에 SAA 오프라인 시험을 보러가는데 저는 여권이 없습니다.그래서 주민등록증(신분증)과 + 체크카드를 들고가도되나요??
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
useState() 데이터 추가 성능 질문
안녕하세요! React에서 useState()를 사용하여 배열과 같은 데이터 구조에서 자료를 추가하는 경우,다른 언어같은 경우 원소 하나만 추가하는 시간복잡도가 O(1)으로 수행하는 함수가 있는데(C++의 append 혹은 push) React에서는 항상 [newItem,...data] 이런 식으로 원소 하나 추가할 때마다, 배열의 값을 모두 새로 만드는데, 데이터가 많아질 경우 시간복잡도가 O(n)으로 비효율적일 것 같습니다. 그래서 React에는 push()같은 방식으로 데이터를 추가하는 방법이 있나요? 없다면 없는 이유가 무엇인가요??
-
해결됨데이터 분석 SQL Fundamentals
analytic-sql과 상관 서브쿼리
안녕하세요 강의 열심히 듣고 있습니다. 감사드립니다.[서브쿼리 실습-02] 수업에 대해 질문이 있습니다. -- 상관 서브쿼리select * from hr.emp_dept_hist_01 a where todate = (select max(todate) from hr.emp_dept_hist_01 x where x.empno=a.empno);-- Analytic SQLselect * from ( select *, row_number() over (partition by empno order by todate desc) as rnumfrom hr.emp_dept_hist_01 )a where rnum = 1; 위 두 가지 방법의 성능 차이에 대해 궁금합니다. (고객 데이터 분석 업무를 수행하고 있는데, 데이터가 커서 성능이 항상 이슈더라구요)강의에서 말씀해주신대로, online 처리를 해야한다면 analytic-sql은 sorting을 해야하기 때문에 상관 서브쿼리가 더 성능이 좋을 것 같습니다.강의에서 분석을 할 때는(배치로 처리할 때) analytic sql이 더 성능이 좋다고 하셨는데 그 이유는 무엇인가요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp 추가
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]plugins { id 'java' id 'war' id 'org.springframework.boot' version '2.7.13' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' //JSP 추가 끝 providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } build.gradle에 jsp를 추가하였는데, 새로운 jsp파일을 생성할때 <%@ page contentType="text/html;charset=UTF-8" language="java" %>나 html같은 템플릿이 전혀 뜨지 않습니다. 해당 코드를 복붙 후 run하여 페이지를 띄우면 잘 실행 되기는 합니다.File and Code Templates에서 템플릿을 추가해보고자 했지만 jsp 선택 버튼도 보이지 않아 jsp 추가가 정상적으로 되지 않은건가 싶습니다...
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
ARP 프로토콜 관련 질문입니다
보통 L2나 L3 스위치의 enable 모드에서 sh arp 나 sh mac address-table 명령어를 쳐보면그 스위치에 연결된 하드웨어의 ip, mac 주소, 연결된 interface 정보 등이 보이는데이런 하드웨어 관련 정보는 하드웨어를 연결하고 전원을 켜면 스위치 내부에서 자동으로 갱신이 되나요?자동으로 갱신이 되는 거라면 스위치에서 주기적으로 arp request를 보내는 것인가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
비지니스 로직 과 서비스
비지니스 로직 과 서비스가 같은 말인가요?
-
해결됨[코드캠프] 강력한 CSS
반응형 실습
강사님 안녕하세요~ 강의 잘 들었습니다. 다름이 아니라 반응형 실습진행을 flex로 진행하셨는데 grid로 되어있는 css 도 있다고 하신 것 같은데 어디서 받아 볼 수 있을까요?
-
미해결스프링 배치
스프링 배치 청크 프로세스 - 아키텍처 문의
Chunk Process 아키텍처 챕터를 보고 있는데요. 아키텍처 그림에서 ItemReader가 읽은 item이 null 일 경우,모든 반복문 및 Chunk 프로세스를 종료한다고 되어 있는데ItemProcessor, ItemWriter 처리 이후에 Chunk 프로세스가 종료되는게 맞지 않나요?( 설명만 봐서는 read에서 null 리턴시 바로 Step이 종료되는 것 처럼 이해가 됩니다. )예를 들어 11개의 아이템이 있고 Chunk 사이즈가 5이면,Chunk가 총 3개로 처리가 되고, 각 Chunk의 사이즈는 5, 5, 1 로 3번의 트랜잭션 처리가 처리되고 난 뒤에 Chunk 프로세스가 종료가 되니까요.
-
미해결데이터베이스 MSSQL
설치중에 오류가 있습니다.
설치중에 이런 오류가 뜨면서 컴퓨터를 다시 시작해도 하여도 지속적으로 오류가 발생합니다..제 노트북에 DBeaver가 설치 되어있는데 이걸로 수업참여가 가능한가요?
-
해결됨퀘이사(Quasar) 완벽 마스터: Vue 프론트 웹을 빠르게 만들고 싶다면! (Based Vue3)
script setup 태그 유무에 따라서 페이지 출력이 안됩니다.
<template> <q-page class="q-pa-xl"> <section class="q-mb-xl"> <div class="text-h4">Breakpoints</div> <q-separator class="q-my-md" /> <div class="target"></div> </section> <section class="q-mb-xl"> <div class="text-h4">$q.screen</div> <q-separator class="q-my-md" /> <div> {{ $q.screen }} </div> </section> </q-page> </template> <script> export default { mounted() { console.log('this.$q.screen: ', this.$q.screen); }, }; </script> <script setup> import { userQuasar } from 'quasar'; const $q = userQuasar(); console.log('setup -> $q.screen: ', $q.screen); </script> <style lang="scss" scoped> .target { height: 200px; background-color: $dark; } @media (max-width: $breakpoint-xs-max) { .target { background-color: $red; } } .target { body.screen--sm & { background-color: $orange; } } </style> 08:41 초에서 진행하는 userQuasar 를 script setup 태그 안에 임포트하고 실행하면 어떠한 오류도 없이 빈 화면만 출력되고 있습니다. script setup 을 주석 처리하면 정상적으로 breakpoints 페이지로 이동하고 정상 출력이 됩니다. 영상 따라서 하고 있는데 저는 왜 setup 태그 유무에 따라 빈 화면이 출력하는 걸까요 ..?
-
해결됨AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기간 연장 요청드립니다.
안녕하세요. 강사님.취업 이후 힘들다는 핑계로 강의 수강을 미루게 되어 종료일이 다가와 버렸습니다.수강기한 연장 가능하시다면 연장 부탁드립니다.다시 열심히 듣고 자격증 취득하기 위해 노력하겠습니다.감사합니다.
-
해결됨Windows 소켓 프로그래밍 입문에서 고성능 서버까지!
소켓에 대한 질문드립니다.
강사님. 항상 강의 잘 보고 있습니다.궁금한게 있어서 질문 드립니다.제가 이해하기론 클라이언트가 하나 연결될 때마다 서버는 새로운 소켓을 만들고 거기에 클라이언트를 연결한다?로 이해하고 있는데요.만약 제가 이해한 것이 맞다면 새로 만들어진 소켓에 새 포트번호가 매핑되서 클라이언트랑 통신을 해야할 것 같은데 wireshark로 확인해보면 25000로 클라이언트와 통신을 하고 있어서요.제가 놓친 것이 무엇인가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
vscode 복사 단축키
파일 여러개 선택해서 다른 폴더에 복사 붙여넣기하는 단축키가 궁금합니다
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
div id 값이 없을 경우 어떻게 찾을 수 있을가요?
항상 많은 도움을 받고 있습니다 너무 감사드립니다. 수업을 따라서 하다가네이버에 [스포츠]버튼을 찾아보려고 했는데 여긴 아이디 값이 없더라구요 소스창에서 복사한 값은 아래와 같습니다. <a href="#" class="ContentHeaderView-module__tab___uYoNi" role="tab" aria-selected="false">스포츠</a> 이런 경우 어떻게 해야하는지 너무 궁금해요
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
트랜젝션 범위와 준영속 상태
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? ([예]/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ([예]/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? ([예]/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요! 강의에서 [회원 수정 API] 파트에서 질문이 있어 이렇게 문의드리게 되었습니다.트랜잭션 범위와 준영속 상태에 관한 질문입니다.우선 Service 계층에서 update에서 member 객체를 준영속 상태로 반환하도록 하였습니다.그 후 Controller 계층에서 PutMapping 방식으로 member의 이름을 "-newhello"로 변경하여 db에 반영하였고그 다음에 member객체의 이름을 "준영속 상태"로 변경 하였습니다. 이미 트랜잭션이 끝나면서 영속성 컨택스트가 종료되었다고 생각했고여기까지는 db의 값이 여전히 "-newhello"라는 것을 확인해서 문제가 없었는데 그 다음이 이해가 가지 않습니다.memberServie에서 findMember를 다시 조회하였는데이 객체가 member와 완전히 동일한 객체로 나옵니다.전 db에서 값을 가져와서 이름이 "-newhello"일 것으로 예상했는데 이렇게 된 이유를 모르겠습니다...마치 db와의 연동은 안되지만 영속성 컨택스트의 1차캐시에 남아있는 member 객체를 같은 id 식별자를 바탕으로 찾아온 것 같아서 혼란스럽습니다. ㅠㅠ
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
주석은 필수?
안녕하세요직접적으로 DB와 관련있는 질문은 아니지만 내용을 복습하다 궁금한 점이 생겨 질문을 드립니다.코드를 짤 때 다른 사람과의 협업이 기초이니 그것을 기반하여 만드는 것이 좋은 코드라고 알고 있는데, 그럼 주석은 거의 모든 메서드에 다는 것이 좋을까요? 아니면 메서드명을 명확히 한다면 그것만으로 충분한 것일까요?물론 팀마다 프로젝트마다 다르겠지만 평균적으로 현업에서는 어느 정도로 주석이 달리는지 궁금합니다.