묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨홍정모의 따라하며 배우는 C언어
scanf 함수의 시간측정
교수님의 강의에서 status = scanf("%d", &num); while (status == 1) { sum += num; printf("Enter a next integer (q to quit): "); status = scanf("%d", &num); } 이런식으로 된것을 판단식에 scanf 를 넣어서 코드를 간결하게 줄였는데, 이 경우 더 효율적으로 돌아 갈 것 같아서 #include <time.h> 를 통해서 시간측정을 해보려고 하니 scanf 함수를 받을때 제가 값을 입력하는데 걸리는 시간이 매번다르니 측정이 불가능 하였습니다. 방법이 있을 까요?
-
미해결구성 관리 자동화 도구 - 앤서블(Ansible)
좋은 강의 감사합니다
좋은 강의 감사합니다~ 덕분에 막막했던 ansible를 쉽고 재밌게 배울 수 있었습니다. 혹시 출처를 남기고 강의에서 공부한 내용이나 정리한 내용 블로그에 올려도 될까요?
-
미해결게임 수학의 이해
마지막 차원
죄송한데 마지막 차원이라는 말이 무슨 말인가요...?
-
미해결게임 프로그래머 취업 전략 가이드
언리얼 vs 유니티 영상을 보고 궁금한 점/ 외국 게임 회사 관련..
-언리얼 프로젝트를 기업들에서 더 많이 하니까 언리얼 게임을 포폴에 넣으면 뽑힐 확률이 더 높을까요? - 제가 해외 컴공 대학을 나왔고 다시 곧 있으면 출국하는데 거기서도 스타트업 회사에서 시작하면 더 좋은 회사로 가는 기회가 없을까요? (외국 상황을 아신다면)
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
axios로 네트워크 통신하기 질문있습니다!
강의동영상의 모습이랑 제꺼랑 비교했을때 달라요 왜그러나요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
쿼리짜기 vs 연관관계로 값 얻기
안녕하세요. jpa 공부하던 중 궁금한 점이 생겨 질문드립니다. 후에 dto를 구성할 때 값을 얻는 방식에 대한 질문인데요. 예를 들어 댓글 리스트를 출력하는 로직에서 댓글에 대한 정보와 글쓴이 이름, 프로필 사진을 가지는 댓글dto 필요로 할 경우 글쓴이 이름, 프로필 사진은 댓글 엔티티에 얻기 때문에 Member 엔티티에서 값을 얻어와야 하는데 1. 양방향 연관관계를 통해 엔티티 정보를 가져오는 방식 2. join를 사용한 jpql 쿼리 사용하여 가져오는 방식 중 어느 방식을 선택해야 할 지 고민입니다. 만약 양방향 연관관계를 통해 가져오는 엔티티를 다른 비즈니스 로직에서 가져올 필요 유무에 따라 FetchType = LAZY를 선택한 경우 -> 1. 방식 선택 FetchType = EAGER 선택한 경우 -> 2. 방식 선택 로 선택하면 될까요? join을 사용한 jpal 쿼리 사용하는 법은 db에 쿼리를 한 번만 전송하기 때문에 성능면에서 좋을 것 같고, 양방향 연관관계를 통해 엔티티 정보를 가져오는 방식은 좀 더 객체지향적으로 코드를 짤 수 있는 장점이 있는 것 같습니다. 어느 것을 선택하는 것이 좀 더 나은 방식인지 고민이 됩니다. 또 한가지 궁금한 점은 만약 FetchType = LAZY 로 선택한 엔티티를 comment.getChildList().size() 이런 식으로 값을 얻으려 할 때에도 추가 sql 쿼리가 발생하나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
경고 질문
몬스터 AI #2 강의를 9분 43초까지 듣고 실행해본 결과 아래 사진과 같은 경고와 널리퍼런스 오류들과 함께 플레이어가 움직이지 않았습니다 그리고 멀리 떨어져있던 몬스터가 쫓아와서 공격을 하더라구요 이와 같은 상황은 어떻게 해야할지 모르겠습니다...
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
궁금한점이 있어 질문드립니다.
안녕하세요 강의 정말 잘 듣고있습니다. 강의를 듣다보니 @Service애노테이션을 빼고 컴파일하면서 발생하는 에러를 보여주는 부분있습니다. @Service 애노테이션을 붙이지 않으면 스프링이 못찾는다고 말씀하시는 부분이 있었는데 처음에는 그런가보다 했습니다. 그런데... MemoryMemberRepository 에서 new ArrayList<>(); new HashMap<>() 은 순수자바클래스인데 스프링이 어떻게 찾아서 new가 된걸까요? 제가 개념을 잘못알고 있나요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
npm run backend 이후 적용 안돼는 문제
npm run backend 명령어를 입력한 후 , 코드를 수정하고 저장한 후 localhost:5000 페이지에서 결과를 확인할 때 자동으로 수정이 안돼어 nodemon이 적용이 안돼는 현상이 발생하는데 문제를 잘 모르겠습니다. 아래 스크린샷에서 코드를 저장하면 [nodemon] restarting due to changes... 만 뜨고 이후에 아무 내용도 안뜨고 페이지도 바뀐 내용이 적용이 안돼어있습니다.. 깃허브 : https://github.com/ParkSeYun98/boiler-plate-ko
-
미해결스프링 시큐리티
AffirmativeBased 객체에 대한 질문입니다.
안녕하세요. 강의 코드를 직접 타이핑하여 테스트하는중인데 동작이 달라서 질문드립니다. 데이터베이스를 통해 자원 권한처리를 하지 않고 설정클래스로 자원 권한처리를 하였을 때 AcecessDeniedException이 발생하면 화면에 "Access is denied" 메세지가 잘 출력이 되는데요. 강의와 같이 MetadataSource, SecurityInterceptor 등 여러 커스텀 객체를 추가하여 데이터베이스에서 자원의 권한정보를 읽어와서 인가처리시 AcecessDeniedException이 발생하면 화면에 물음표의 형태로 출력되어 제대로 메시지가 출력이 안됩니다. 보니까 인코딩 문제로 물음표로 표시되는데, 그 새로 추가한 AffirmativeBased에서 예외 발생시 예외 메시지가 한글로 출력이 되어서 인코딩문제로 페이지에 제대로 표시가 안되는 현상인것 같습니다. 그런데 제가 궁금한것은 설정 클래스를 통해 인가처리시에는 예외메시지가 영어로 출력되는데, AffirmativeBased 객체를 생성해서 커스텀 FilterSecurityInterceptor를 사용할 때는 예외메시지가 한글로 나오는데 왜 동작이 다른지 궁금합니다. 디버깅모드에서 보니까 AffirmativeBased의 속성중 MessageSource가 설정클래스로 했을때와 다른 것 같은데 직접 생성할때와 설정클래스를 이용할 때 메시지소스 설정이 다르게 되는건가요? 강의 동영상에서는 잘 되는것같은데 저는 왜 안되는지 궁금합니다. 감사합니다.
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
그대로 따라했는데 시간 초과가 나왔습니다
그대로 따라서 했는데 4번 5번 테스트케이스에서 시간초과가 나왔습니다,,, 3번 확인해도 똑같이 따라 코딩했는데 왜 그런걸까요...? #include <iostream> #include <queue> using namespace std; int dx[4] = { -1,0,1,0 }, dy[4] = { 0,1,0,-1 }; int board[1001][1001], dis[2][1001][1001]; queue<pair<int, int>> Q; int w, h; void BFS(int idx) {//idx = 2부터 시작했니, 3부터 시작했니 판가름할 변수 while (!Q.empty()) { int x = Q.front().first; int y = Q.front().second; Q.pop(); for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (nx >= 0 && nx < h&&ny >= 0 && ny < w&&dis[idx][nx][ny]==0) {//경계선 if (board[nx][ny] != 1) { dis[idx][nx][ny] = dis[idx][x][y] + 1; Q.push(make_pair(nx, ny)); } } } } } int main() { cin.tie(NULL); // 입력빨리하기 위해 cin >> w >> h; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) cin >> board[i][j]; } int j; for (int i = 0; i < h; i++) { for (j = 0; j < w; j++) { if (board[i][j] == 2) { //영희의 위치찾기 dis[0][i][j] = 1;//영희로부터의 거리를 1부터 출발 Q.push(make_pair(i, j)); BFS(0); break; } } if (j < w)break; } for (int i = 0; i < h; i++) { for (j = 0; j < w; j++) { if (board[i][j] == 3) { dis[1][i][j] = 1; Q.push(make_pair(i, j)); BFS(1); break; } } if (j < w)break; } int min = 2147000000; for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (board[i][j] == 4 && dis[0][i][j] > 0 && dis[1][i][j] > 0) { int res = dis[0][i][j] + dis[1][i][j]; if (res < min)min = res; } } } cout << min - 2; return 0; }
-
미해결실전! 스프링 데이터 JPA
데이터베이스 설계 시에서 일반적인 상황에 대해 여쭤보고싶습니다!
안녕하세요 강사님! 강사님의 강의 영상을 보고 Spring Data JPA 를 학습했던 학생입니다. 다름이 아니라 데이터베이스 설계 시에 다음과 같은 상황에서는 어떤 방법이 일반적인지 실무의 관점에서 조언을 얻고자 합니다. `USER`, `COURSE`, `ASSIGNMENT`, `ASSIGNMENT_SUBMIT` 이렇게 4개의 테이블이 있다고 가정할 때, USER : 사용자 테이블 COURSE : 강의 테이블 ASSIGNMENT : 과제 테이블 ASSIGNMENT_SUBMIT : 학생이 제출한 과제 테이블 ASSIGNMENT_SUBMIT 테이블의 PK가 어떤 형태로 되어야 하는지 각각의 장단점에 대해 생각을 해보았습니다. 1. id 라는 칼럼을 만들어서 Auto_Increment 로 pk 를 관리한다. - 장점 - findById 에서 숫자 인덱스를 이용한 조회를 하기 때문에 조회 속도가 빠르다. - 단점 - 칼럼 하나가 늘어난다. 2. user_id 와 assignment_id 라는 두 개의 칼럼을 이용해서 pk로 관리한다. - 장점 - id 칼럼이 사라진다. - 단점 - jpa 에서 제공하는 기본 findById 가 사라진다. - fk 를 결합하여 pk 를 만드는 레퍼런스를 찾지 못했다.. 정도 있습니다. 만약 강사님이시라면 어떤 선택을 하실지 또한 각각 어떤 장단점이 더 있을지 알려주실 수 있으실까요?
-
해결됨3dsmax 모델링 고수의 비밀! (Modeling Expert Technique)
타이어 강좌 챔퍼시
타이어 만드는 강좌를 보고잇는데 챔퍼모디파이를 적용하면 면이 찝혀요 왜 이런건가요....?이유가뭐죠...ㅠㅠ? 그리고 어떻게 해야 면이 안찝히게 할수잇는걸까요? ㅠㅠ 그나마 트라이로하면 덜 찝히지만 여전히 찝혀요 ㅠㅠ
-
해결됨스프링 시큐리티
런타임 중, 메소드 인가 맵 등록시, 서비스 Proxy 가 만들어지지 않는 이유의 질문입니다.
좋은강의 감사드립니다. 약간 다른 시도를 해보고 잘 안풀리게되어 질문을 남기게 되었어요.메소드 권한 부여는 반드시 MapBasedMethodSecurityMetadataSource 생성자를 통해서만 등록이 가능할까요? 초기화가 끝난 이후 런타임에서 addSecureMethod(string, configAttrList) 를 통해 등록하면 프록시 생성이 안되는것 같더라구요.. 그래서 아래와 같은 시도가 있었습니다. 저는 MapBasedMethodSecurityMetadataSource 를 extends 하여 CustomMapBasedMethodSecurityMetadataSource 를 만들어, 생성이 된 이후, 메소드 리소스맵 등록을 super.addSecureMethod() 메서드로 하려는 시도를 했습니다. 이후 @EventListener(ContextRefreshedEvent.class) 이벤트 핸들러를 MethodSecurityConfig 에 작성하고, 이벤트 발생 시점에 App컨택스트로 부터 CustomMapBasedMethodSecurityMetadataSource 를 가져와 reload() 를 호출하여 Map 을 통해 메서드 정보 등록이 되도록 구성했습니다 문제는서버 기동 및 컨트롤러 호출 후, Method Resource 가 등록 과정에 서비스 프록시 가 생성되지 않아 서비스 메서드 가 그대로 호출이 되었는데요, Debug 확인 결과 클래스 명 메소드명 Map 파싱은 문제가 없었습니다. 아래는 서버 기동 후, 커스텀 메소드 메타데이터 소스 를 메모리에서 조회 결과입니다. 위의 과정으로반드시 생성자를 통해 Map 을 전달 해야만 Proxy 생성이 되는것으로 판단되었습니다이벤트 리스너를 통해 methodMap 등록을 지연하게 되면 필터링 처리가 안되는 이유가 궁금한데요..이런 부분에 대해 조언을 구합니다. 아래는 작성한 Method..Config 와 Method...Source 입니다 MethodSecurityConfig public class MethodSecurityConfig { ... /** * DB 초기화 직후, METHOD 인가정보 등록 */ @EventListener(ContextRefreshedEvent.class) @Transactional public void onContextRefreshed(ContextRefreshedEvent event) { ApplicationContext ctx = event.getApplicationContext(); var customMapBasedMethodSecurityMetadataSource = ctx.getBean(CustomMapBasedMethodSecurityMetadataSource.class); customMapBasedMethodSecurityMetadataSource.reload(); } ...} CustomMapBasedMethodSecurityMetadataSource public class CustomMapBasedMethodSecurityMetadataSource extends MapBasedMethodSecurityMetadataSource { private final MethodResourceMapFactoryBean methodResourceMapFactoryBean; public CustomMapBasedMethodSecurityMetadataSource(MethodResourceMapFactoryBean methodResourceMapFactoryBean) { /* 생성자를 통해 methodMap 전달시 작동 */// super(Map.of(// "io.security.corespringsecurity.aopsecurity_test.AopMethodAuthTestService.methodSecured",// List.of(new SecurityConfig("ROLE_USER"))// )); this.methodResourceMapFactoryBean = methodResourceMapFactoryBean; } /** * DB 데이터 초기와 직전 로딩 이슈로, DB 초기화 이후 값을 가져오기위한 리로딩 메서드 */ public void reload() { LinkedHashMap<String, List<ConfigAttribute>> resourceMap = methodResourceMapFactoryBean.getObject(); for (Map.Entry<String, List<ConfigAttribute>> resourceEntry : resourceMap.entrySet()) { String fullPackageClassMethodName = resourceEntry.getKey(); List<ConfigAttribute> configAttributes = resourceEntry.getValue(); addSecureMethod(fullPackageClassMethodName, configAttributes); } } /** * 보안 메서드에 대한 설정을 추가합니다. 메서드 이름은 여러 메서드를 등록하기 위해 `*` 로 끝나거나 시작할 수 있습니다.<br /> * 풀패키지 클래스명 + 메서드명 파싱 및 S.Security 에 메서드 정보 추가 <br /> * Key: 풀패키지 클래스명 + 메서드명(ex: "a.b.Class.*method or method*") <br /> * Value: ConfigAttribute List <br /> * 참고: super 클래스 private addSecureMethod(name, attr) 메소드 복제 */ private void addSecureMethod(String name, List<ConfigAttribute> attr) { int lastDotIndex = name.lastIndexOf("."); Assert.isTrue(lastDotIndex != -1, () -> "'" + name + "' is not a valid method name: format is FQN.methodName"); String methodName = name.substring(lastDotIndex + 1); Assert.hasText(methodName, () -> "Method not found for '" + name + "'"); String typeName = name.substring(0, lastDotIndex); Class<?> type = ClassUtils.resolveClassName(typeName, ClassUtils.getDefaultClassLoader()); super.addSecureMethod(type, methodName, attr); } } 읽어주셔서 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
질문 있습니다
제가 체력게이지를 강의를 들으면서 똑같이 만들었는데 왜 널리퍼런스 오류가 뜨는지 모르겠습니다. 코드도 보면서 따라만들었는데도 HP바가 늘어나더니 계속 초마다 널리펀스 오류가 갱신되더라구요... 찾아보니까 float ratio = _stat.Hp / (float)_stat.MaxHp; 위 코드에서 널리퍼런스가 나오고 있었습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
test 작성 시 인터페이스 구현체로 가져오는게 맞나요??
안녕하세요!! 현재 강의 듣고 있는 학생입니다😊 테스트 파일 작성 시 Service와 Repository 모두 아래와 같이 interface 이름 = new 구현체(); 가 아니라 구현체 이름 = new 구현체(); 로 해주셨는데 아직 AppConfig와 같이 연결해주는 역할이 없는 상황이라 이렇게 해주신건가요?? 항상 강의 감사히 듣고 있습니다! Repository MemoryMemberRepository repository = new MemoryMemberRepository(); Service MemberService memberService;MemoryMemberRepository memberRepository;
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
선생님 경사하강법 질문합니다
선생님 강의듣고 유익해서 이번에 책도 같이 구입했습니다..! 다름이 아니라 경사하강법 파트에서 w1,w0를 0으로 초기화 하는 이유를 모르겠습니다. 왜 0으로 초기화 하나요?? def get_weight_updates(w1, w0, X, y, learning_rate=0.01): N = len(y) # 먼저 w1_update, w0_update를 각각 w1, w0의 shape와 동일한 크기를 가진 0 값으로 초기화 w1_update = np.zeros_like(w1) w0_update = np.zeros_like(w0)
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
http-exception.filter.ts 파일 내용 중 질문이 있습니다.
const error = exception.getResponse() as | string | { error: string; statusCode: number; message: string | string[] }; 강의 중에 http-exception.filter.ts 파일에서 error 변수를 위와 같이 할당을 하는데 as | string 뒤에 있는 타입을 { error: string, statusCode: number; message: string | string[] };로 받는데 객체의 속성들을 특별하게 넣어준 이유가 있나요? 단순히 { error: string }로만 처리해도 다른 속성 값들이 자동으로 들어오기 때문에 출력할 때는 문제가 없는 것 같은데 정확한 타입을 제공하기 위해서 라던가 등 특별한 이유가 있는지 궁금합니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
path 출력 추가부분 ch활용해서 출력가능해서 코드 올립니다~!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.경로 출력시 path = [] append(i) pop(0)을 ch 라는 방문표시 리스트와 같이 넣었다뺐다 하는것보다 종착역인 if v ==n :에서 ch에 방문으로 표시된 index = 방문노드들을 출력만 해주면, 경로표시도 잘 출력되는 것 같습니다! if v==n: global cnt cnt+=1 # **경로까지 출력추가** print([ i for i, x in enumerate(ch) if x] )
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
POSTMAN 출력오류
포스트 맨에서 localhost:8008을 넣고 send한 후 아래 출력에서 제대로 된 결과값이 출력되지 않았습니다. 혹시 어떤 부분이 잘못되었는지 알고 싶습니다. 서버 포트를 8008을 쓴 이유는 8080으로 했을때 아예 오류가 발생하여서 8008을 사용하였습니다.