안녕하세요. 강의 영상 화질과 관련해서 문의 드립니다. 강의 영상 중에 섹션2 클라이언트 시스템 구현 근접 공격 영상부터 FHD에서도 강의 영상이 조금 흐리게 보이는 현상이 있습니다. (Render Texture 강의는 괜찮습니다!) 근접 공격 이전 강의인 방치형 레벨업 버튼 강의와 바로 비교가 됩니다. 확인 부탁 드립니다. 감사합니다!
안녕하세요 선생님 , 자바에 대해 깊이 학습하고자 다시 기초부터 배우고있는 주니어 개발자입니다. 다름이 아니라 현재 목차에서 데이터와 기능들이 분리되어 있는것은 유지보수 관점에서 힘들기때문에 그 둘을 묶기위한 설계가 객체지향이라고 이해를 했는데요. 스프링 관점에서 보면 데이터의 무결성을 지키기위해 데이터(dto) 와 서비스는 분리하는 설계를 하는것으로 알고있습니다. 일반 자바와 스프링은 조금 다른 시각으로 바라봐야 할까요?
안녕하세요 강사님 좋은 강의 감사드립니다. readme파일을 잘 작성하는 것도 과제전형을 진행하는데 중요한 요소라고 들었는데 예제 소스에 작성된 readme 파일 형식으로 실제 과제전형 시에 제출하기에는 조금 부족해보이는데 보통 어떤 형식으로 작성하시는 편이신가요? 또는 이 부분은 꼭 들어갔으면 하는 요소가 있을까요?
강의 따라 하고있습니다만.. ci/cd 지식이 없는경우?? 기존에는 깃만 사용하다가 강의들으면서 처음 사용하게되었습니다. 강의내용 처럼 ci/cd메뉴를 설정하는것을 따라하는 방법이 있을까요? 아래는 제가 깃러너?랑 깃랩 설치한 부분입니다. 따로 추가 설정해야 하는 부분이 있을까요? 동영상의 내용과 비슷하게 진행할수가 없습니다. 깃 런너 설치도 여러번 해야지 설치가 생각보다 잘 안됩니다.. 깃랩을 처음 사용하는 사람이다보니까 런너 부터 연결해서 .gitlab-ci.yml? 그것을 한다음에.. 깃랩에 msa 프로젝트 올려야하는것같은데.. 처음부터 설명이 없으시니까 우왕자왕하게되네요.. 파이프라인 어떻게해야할지 모르겠습니다. 진행이 어렵습니다. 깃랩을 하는데 있어서 CI/CD메뉴가 처음부터 없으면 어떻게해야하면 좋을까요?
안녕하세요, 강의 내용에 대해 몇 가지 여쭤보고 싶은 점이 있습니다. 먼저, 강의 자료 중 하트 아이콘과 플러스 아이콘 , 엑셀데이터 등 몇 개가 보이지 않는 것 같아요. 혹시 제가 놓친 부분이 있는지, 아니면 자료를 다시 한번 확인해 주실 수 있을까요? 그리고 강의 중 유튜브 영상이 재생되어 오디오가 중복되는 경우가 있었어요. 집중해서 들을 수 있도록 이 부분을 조정해 주시면 정말 감사하겠습니다.
리플렉션을 써야하는 이유를 잘 모르겠습니다. 리플렉션은 가능하면 지양하는게 좋다고 알고 있습니다. 런타임일반화하는 특성상 성능이 떨어질 수 밖에 없다고 알고 있습니다. 그래서 아래과 같이 작성해 보았는데, 이건 어떠신가요? 가독성 때문에 이렇게 작성하신것 같다는 생각도 들긴하는데 아직 충분히 의문이 해소되질 않네요
안녕하세요 강의 참고하면서 서버 만들어 보고 있는데 https://learn.microsoft.com/ko-kr/dotnet/api/system.net.sockets.socketasynceventargs?view=net-8.0#remarks 해당 문서에서 pooling이 있더라구요 생각해보니 동접이 꽤 많다라고 가정하면(약 3000?) 이 SocketAsyncEventArgs 생성 소멸이 많이 일어난다고 생각했습니다. 그래서 pooling을 한번 만들어보고 있는데 만드는 중에 Dispose를 언제 해줘야 할지 감이 잘 안옵니다. 현재는 Client가 Disconnect될 때 Push하게 되는데 Push에서 poolCount가 3000이 넘으면 이걸 AllClear라는걸로 pool에 있는 SocketAsyncEventArgs를 다 Dispose해주는 상황인데 이렇게하면 3000이 넘기 전까지는 메모리에 계속 남아 있으니 먼가 찜찜합니다. 이런 문제가 있는데 좋은 해결책이 있을까요? 감사합니다!
둘의 차이가 뭔가여?? Character character = characterRepository.findByUserId(userPrincipal.getId()).orElseThrow(CharacterNotFoundException::new); List<Quest> quests = character.getQuests(); 현재 프로젝트 중인데 이 강의를 들으면서 느낀점은 qeustRepository.findByCharacter(character)를 하는 경우와 character.getQuests의 차이가 궁금합니다. 어떤게 더 좋은방식이구 각자의 장단점이 있을까요? https://www.inflearn.com/community/questions/66107/member%EC%99%80-order%EA%B0%84%EC%9D%98-%EC%96%91%EB%B0%A9%ED%96%A5-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4 추가로 이거랑 질문이 관련이 있는걸까요?
4강 레퍼클래스 로또 번호 생성기 질문 있습니다. package class04wrapperClass; import java.util.Random; public class Lottery { public static void main(String args[]) { //랜덤 생성자 선언 ==> 로또 값이 그때 그때 바뀜 Random random = new Random(); //로또 범위 지정 배열 int[] randomArray = new int[6]; //로또 배열에 로또 값 넣기 for (int i = 0; i < randomArray.length; i++) { int randomValue=random.nextInt(45)+1; randomArray[i]=randomValue; if (randomArray[i]==randomArray[i++]||randomArray[i]==0) randomArray[i]=random.nextInt(45)+1; } for(int i =0; i<randomArray.length; i++){ System.out.print(randomArray[i]+" , "); } } } 이렇게 풀었는데 이것도 올바른 풀이 일까요???
import React, { useState, MouseEvent } from "react"; import * as S from "./mypoint.index.styles"; import TapPointLoading from "./mypoint_loading"; import TapPointBuying from "./mypoint_buying"; import TapPointAll from "./mypoint_all"; import TapPointSelling from "./mypoint_selling"; export default function MyPoint(): JSX.Element { const [selectedValue, setSelectedValue] = useState<{ name: string; index: number; }>({ name: "전체내역", index: 0, }); const MyPageHeadInfoButton = [ { name: "전체내역", component: <TapPointAll /> }, { name: "충전내역", component: <TapPointLoading /> }, { name: "구매내역", component: <TapPointBuying /> }, { name: "판매내역", component: <TapPointSelling /> }, ]; const onClickTap = ( event: MouseEvent<HTMLDivElement>, index: number ): void => { const newValue = event.currentTarget.id; setSelectedValue({ name: newValue, index, }); }; // 버튼 클릭으로 해당 data 값을 보여주기 위함 const renderData = (): JSX.Element | undefined => { return ( <S.TableWrap> {/* 해당 탭의 배열의 객체 name통해 컴포넌트 가져옴 */} {MyPageHeadInfoButton.map((el) => { if (el.name === selectedValue.name && el.component) { return <div key={el.name}>{el.component}</div>; } return null; })} </S.TableWrap> ); }; return ( <S.Wrap> <S.MyPageHeadWrap> <S.MyPageHeadBtn> {/* 서브 탭 버튼 */} {MyPageHeadInfoButton.map((el, index) => ( <S.MyPageInfoBtn key={el.name} id={el.name} onClick={(event) => onClickTap(event, index)} selected={selectedValue.name === el.name} > {el.name} </S.MyPageInfoBtn> ))} </S.MyPageHeadBtn> </S.MyPageHeadWrap> <S.MyPageBodyWrap> {/* 해당 탭 data */} <div>{renderData()}</div> </S.MyPageBodyWrap> </S.Wrap> ); } 이렇게 탭을 클릭을 해서 해당 컴포넌트가 보이도록 했습니다. 그러면서 각각의 API data도 받아와 cache에 저장을 하도록 해 추가 API 요청이 일어나지 않도록 했는데 여기서 로그아웃을 하고 다른 아이디로 로그인을 하면 이전의 로그인 했던 data가 그대로 남아있어 최신 data를 가져오기 위해 여러가지 방법으로 시도했습니다. 로그아웃 시 useApolloClient를 활용해 cache를 삭제 했습니다. 이렇게 하면 다시 로그인 한 유저의 data를 잘 가져오는데 로그아웃을 하면서 cache data가 삭제되니 다른 API, Board, Markets 등 해당 page의 사용한 query문의 data를 다시 요청하는 문제가 있습니다. refetch()로 query문을 선언하면 해당 refetch()를 실행하지 않아도 API 요청이 일어나 refetchQueries를 사용해 data 최신화 하려는데 그렇게 되면 모든 탭을 refetch 해줘야 되는 문제가 있습니다. 각 탭 이동마다 API 요청 나가는게 싫어서 fetchporicy나 refetch()를 사용 하지 않았는데 보통 어떻게 사용을 하나요? 로그인에 의한 data는 탭 이동마다 refetch를 시켜주는게 좋을까요? 그리고 구매, 충전 등 하면 바로 MyPoint에 업데이트 되도록 client.writeQuery / readQeury 나 refetchQueries를 사용했는데 이런 결제 정보 같은거는 refetch로 실시간으로 data를 가져오는게 좋겠죠? 로그인, 로그아웃은 LayoutHeader에서 사용하고 있습니다.