안녕하세요 강사님!! 강의 정말 잘 듣고 있습니다. 다름이 아니라 템플릿 프로젝트를 기반으로 다른 프로젝트를 진행하고 있었는데, Spring Security를 적용하고 회원가입 구현을 조금 진행 해봤는데 localhost:8080/kakao/login 에서 카카오 로그인 버튼을 클릭하자 다음과 같은 에러 메시지가 출력되는 것을 확인하였습니다. feign.codec.DecodeException: Type definition error: [simple type, class com.server.seb41_main_11.web.kakaotoken.dto.KakaoTokenDto$Response]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.server.seb41_main_11.web.kakaotoken.dto.KakaoTokenDto$Response (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 2] 로그를 확인하고 KakaoTokenController의 requestKakaoToken 메서드를 통해 KakaoTokenDto.Response를 반환하는 문제가 생긴 것 같아 해당 에러를 구글링 해봤는데, 기본 생성자를 추가해줘야 한다고 해서 @NoArgsConstructor를 rsponse 부분에 추가를 하고, Builder패턴을 사용하고 있으니 @AllArgsConstructor 어노테이션 또한 추가를 해주었습니다. 변경한 코드입니다 @ToString @NoArgsConstructor @AllArgsConstructor @Builder @Getter public static class Response { private String token_type; private String access_token; private Integer expires_in; private String refresh_token; private Integer refresh_token_expires_in; private String scope; } 다음과 같이 수정하니 정상적으로 토큰을 반환받는 것을 확인하였습니다. 따라서 어노테이션을 추가했을 때와 추가하지 않았을 때를 비교하기 위해서 build 폴더의 KakaoTokenDto.Response 구현 부분을 확인을 해봤는데, 어노테이션을 추가했을 때와 추가하지 않았을 때의 구현부가 같았습니다. 해당 에러가 왜 생기는지 잘 모르겠고, 어노테이션을 붙였을 때 왜 해결이되는지도 잘 모르겠습니다 ㅠㅠ
강의 타임라인 중 13:55 부터 Awake를 설명하는 부분에서 " 꺼놓은 상태에서 적용되는 애가 더 있어요" "게임 신 현재 들고 있는 컴포넌트를 끈 상태에서도 잘 작동하길 원한다면 Awake로 만드는 것도 하나의 방법이 되겠구요" 라고 언급하고 있습니다. 그런데, Unity Documentation에 따르면 active(켜놓은 상태) 할 때 Awake가 작동된다고 나와있습니다. 실제로 제가 @Scene을 끄고 Awake가 동작하는 지 디버깅을 했을 때 Awake가 호출되지 않았으며 EventSystem Null Reference Error가 로그로 찍혔습니다. 강의에서는 @Scene을 킨 상태에서(체크 박스를 체크한 상태) 테스트를 하고 있기도 합니다. Awake는 active한 상태 + 컴포넌트가 disabled 된 경우일 때 Start와 달리 호출된다고 정정해야 할 것으로 보입니다. https://docs.unity3d.com/ScriptReference/MonoBehaviour.Awake.html
먼저, 제가 컨텍스트 스위칭에 대해 알고 있던 내용은 프로세스 컨텍스트 스위칭인데, CPU 코어 하나당 하나의 프로세스만 점유를 할 수 있기에, 한 코어에서 여러 프로세스를 번갈아 가며 수행하기 위해 컨텍스트 스위칭이 일어난다고 알고 있습니다. 궁금증이 생긴 부분은 쓰레드 컨텍스트 스위칭의 구조와 스프링 웹플럭스에서 쓰레드의 개수를 CPU 코어의 개수에 따라 설정해두어 성능을 높인다는 부분입니다. 쓰레드는 프로세스에 종속적이라고 알고 있습니다. 한 프로세스 안에서 여러 쓰레드가 생성 될 수 있는 건 알지만, 그렇게 생성된 여러 쓰레드 간에 컨텍스트 스위칭이 일어난다는 것은, 무엇을 점유하기 위해 발생하는 것인지 궁금합니다. 프로세스는 CPU 코어를 점유하기 위해 컨텍스트 스위칭이 일어나기에, 쓰레드도 CPU 코어를 점유하기 위해 컨텍스트 스위칭이 일어난다 생각해보기는 조금 모순인 부분이 있어 질문 드립니다. 또한, 스프링 웹플럭스에 관련한 부분도, 한 프로세스는 하나의 CPU를 점유하기에 그 프로세스 안에서 생성된 쓰레드 또한 해당 프로세스가 점유한 CPU 코어에만 관련되어 수행된다고 생각했는데, 쓰레드 개수를 CPU 개수에 맞췄다는 말은 쓰레드를 생성한 프로세스가 점유한 CPU 코어 외 다른 코어도 쓰레드가 쓸 수 있다는 것인가 싶어 질문 드립니다. 감사합니다.
for(j=0; j<8; j++){ arr[j] = arr [j+1]; } arr [j]= tmp; 여기서 왜 마지막 j가 8일 수가 있는 것인가요? for 구문에서 8전까지 즉 7까지만 하고 for 구문에서의 j 변수는 끝나는게 아닌가요? {} 이 대괄호 밖에 있는 부분이 계속해서j 의 영향을 받을 수가 있는 것인가요?
안녕하세요 선생님! 지난번에 보내주신 쿠폰은 정말 감사했습니다. 덕분에 다음으로 공부할 것에 대해 계획할 수 있었습니다. 개인 공부중에 궁금한 것이 있어 이렇게 여쭤봅니다. 제가 사이버보안 분야를 머신러닝으로 향상시키는 것에 관심이 있는데요. 마침 앙상블 수업을 듣던 와중에 개인적으로 공부하고 있던 IDS(침입탐지) 데이터 셋 관련해서 어떤 아이디어가 생겨서요. 이 데이터셋은 다중 분류에 해당되는 것인데요. 공격 패턴이 15가지(라벨) 정도라고 가정하겠습니다.이 라벨들을 저만의 방법으로 새로 분류하여 새로운 라벨들을 추가하여 만들어서 각각 학습하고 테스트를 진행해봤습니다. 첫번째로, 이진 분류로 라벨을 0, 1로 다시 만들어서 모든 공격들은 1로 분류하고, 일반적인 것(양성,Benign)들은 0으로 분류하는 것이죠. 즉, 공격이긴 공격인데 어떤 공격인지는 모르는 정도로만 시스템이 탐지하는 것입니다. 이럴 경우, 정확도, 정밀도, 재현율이 모두 99.97%로 아주 높은 확률로 탐지를 해냅니다. 두번째 분류는 비슷한 공격 패턴끼리 묶어서 그룹화를 한 뒤(즉, 라벨의 수를 줄이는 것입니다.) 학습 및 테스트를 하는 것입니다. 이럴 경우에도 아주 높은 점수를 보였습니다. 마지막 분류는 원래 라벨들입니다(전처리 작업 후). 역시 높은 점수를 보이긴 하나, 약간 낮은 점수를 보이는 일부 라벨들이 있습니다.그래서 말인데요. 혹시 이 세가지 모델을 연결해서 결과를 추출하는 방법이 있을 까요? 예를 들어, 먼저 공격인지 아닌지를 보고(첫번째 분류), 공격이라면 어떤 그룹에 속하는 지 보고(두번 째 분류), A라는 그룹이라면, 마지막 단계의 분류에서 세부적으로 어떤 라벨인지(세번째 분류)를 예측해내는 것이죠. 이렇게 연계하여 결과를 예측할 수 있는 모델을 만든다면, 점수가 약간 낮은 라벨들도 일부 보완할 수 있지 않을 까 생각되어서요. 아이디어는 떠올랐는데, 구글에 검색해보니 앙상블이나, 파이프라인 등의 관련된 내용만 검색이 되어서요. 혹시 제가 모르는 어떤 기술이 있을까요? 선생님의 조언을 구합니다.
mutations 의 메소드들은 하나의 state 값만 수정하는 것이 컨벤션 인가요? mutations: { LOGIN_USER_SUCCESS(state, { user, token }) { state.user = user; state.accessToken = token; }, 이렇게 한번에 두개의 처리를 해도 작동은 하는데, 코드 가이드에서 어긋나는 건가요?
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
배열이 아닌 그냥 클래스 객체 같은 경우에 동적 할당은 왜 필요한가요? CTest* test1 = new CTest(); CTest test2; 이러한 경우에 포인터를 이용한 동적할당이 갖는 이점은 뭔가요?? 그리고 void* 에서 void는 auto 같은 개념으로 이해하면 되나요?
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
isDetail 여부에 따라 String? detail 을 적용시켜주는 부분에서 질문 드립니다. 팩토리를 만들때 원래 클래스에서 받는 내용을 그대로 받는 것으로 알고 있었는데 RestaurantCard 에서 선언한 final String? detail; 과 컨스트럭터 parameter 인 this.detail; 이 factory 에서는 받아오지 않아도 되는 것인가요? factory RestaurantCard.fromModel({ required RestaurantModel model, bool isDetail = false, String? detail, <-이부분 }) { return RestaurantCard( image: Image.network( model.thumbUrl, fit: BoxFit.cover, ), name: model.name, tags: model.tags, ratings: model.ratings, ratingsCount: model.ratingsCount, deliveryTime: model.deliveryTime, deliveryFee: model.deliveryFee, isDetail: isDetail, detail: detail, <-이부분 ); } 스스로 해볼때 <- 이부분 이라고 표시한 부분도 포함해서 저는 작성해보았었습니다. 작동도 잘 되구요.. 굳이 입력을 하지 않아도 되는 이유가 알듯말듯한데 확실하지가 않습니다. 그리고 저처럼 했을때 어떤 문제가 있는 것인가요? 감사합니다.
20분 2초 구간에서 오브젝트의 기즈모가 바로 보이는데, 3강에서 알려주셨던 것처럼 뷰포트 기즈모 드롭다운 메뉴의 Object Gizmos의 체크박스를 체크한 것이 영상에서는 빠진 걸로 영상이 편집된 건가요? 아니면 단축키가 있어서 바로 오브젝트의 기즈모가 보이도록 변경하신 건가요? 단축키가 있는 거라면 알고 싶어서 질문했습니다.
안녕하세요. 강사님 올인원 강의 전체를 결제하여 보며 저의 방향성과 목표를 설정하게 되었습니다. 덕분에 국비지원이 아닌 기업에서 진행하는 소프트웨어 교육에 합격하여 파이썬을 공부하고 있는데요. 알고리즘 스터디를 진행하려고 하니 규칙 및 알고리즘을 어떻게 설정할지가 조금 어렵습니다. 현재 비전공자(3명, 파이썬 조금 공부 및 알고리즘을 모름) 나머지 비전공자(2명, SWEA D2~D3정도 가능)입니다. 단순히 알고리즘을 푸는 것이 아닌 개념을 공부하는 스터디의 사례가 있고 알고리즘 종류는 백준, 프로그래머스, swea 가 있으며 사용하는 팀 블로그의 종류도 노션, 벨로그, 깃허브 등이 있는데 위와 같은 상황(멤버)에서는 어떻게 스터디를 진행할지 궁금합니다. (일주일 3번, 2시간이라고 한다면 해시, 스택, 큐와 같은 개념과 알고리즘을 같이 공부해야할지 아니면 파이썬 문법도 어려우니 일단 쉬운 난이도의 알고리즘을 푸는 방식&맛보기를 하며 파이썬이 익숙해질 때 까지 문제를 많이 풀어야할지 등등 대체적인 방향성이 어렵네요.) (ps. 서류와 면접에서 한정수 강사님의 이야기를 많이했을 정도로 정말 도움 많이 받았습니다. 출근길 개발 카톡 및 종종 개인 블로그 회고록도 보고있는데, 2023년도 가족분들과 좋은 일만 있으시길 바랍니다.)
package lecture2; import java.util.Scanner; public class Prob2452 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int totalWinTime = 0; int totalWinTime2 = 0; int startWinTime =0; int endWinTime = 0; int startWinTime2=0; int endWinTime2=0; int score = 0,score2 = 0; for (int i = 0; i < n; i++) { int goalTeam = sc.nextInt(); if(goalTeam == 1)score++; else score2++; String str = sc.next(); if(score-score2==1 && goalTeam==1){ startWinTime = Integer.parseInt(str.split(":")[0])*60 + Integer.parseInt(str.split(":")[1]); }else if(score2-score==1 && goalTeam ==2){ startWinTime2 = Integer.parseInt(str.split(":")[0])*60 + Integer.parseInt(str.split(":")[1]); } if(score == score2){ if(goalTeam==1){ endWinTime2 = Integer.parseInt(str.split(":")[0])*60 + Integer.parseInt(str.split(":")[1]); totalWinTime2 += endWinTime2 - startWinTime2; }else{ endWinTime = Integer.parseInt(str.split(":")[0])*60 + Integer.parseInt(str.split(":")[1]); totalWinTime += endWinTime - startWinTime; } } } if(score>score2){ totalWinTime+=48*60 - startWinTime; }else if(score2>score){ totalWinTime2+=48*60 - startWinTime2; } System.out.printf("%02d:%02d\n",totalWinTime/60,totalWinTime%60); System.out.printf("%02d:%02d\n",totalWinTime2/60,totalWinTime2%60); } } 이기기 시작한 순간(자신이 골을 넣고, 점수차이가 1인 순간)을 저장하고, 비긴 순간에 총 이기고 있던 시간에 계산하여 더해주는 구조입니다. Java의 LocalTime 등의 시간 관련 클래스들을 사용하려다가 실패해서 40분 날려먹고 10분만에 작성한 코드입니다. 제대로 모르는 클래스를 문제풀이에 사용하는 것 보다 그냥 필요한 만큼만 구현하는게 더 빠른 경우가 많은 것을 깨달았습니다.