랜덤하게 에너미이동을 진행할 때, speed를 높이면 씬뷰에서 카메라 범위를 벗어나게 되어서 기존 코드에 다음 코드를 추가하였습니다. 그런데도 씬뷰를 벗어나게 되더라고요. 업데이트 부분에서 현재 위치의 x,y가 주어진 범위를 벗어나면 코루트를 시작하는 함수를 호출하여 다시 목표 방향을 설정한건데 왜 벗어나는 걸까요? if(transform.position.x < (-hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.x > (hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y < (-hs.y)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y > (hs.y)){ StartCoroutine(ChangeDir(3f)); } using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyMove1 : MonoBehaviour { public float speed = 3; Vector2 hs; //half screen: 원점 초기화 Vector2 dir; //direction: 원점 초기화 // Start is called before the first frame update void Start() { hs.x = Camera.main.orthographicSize; //카메라 위쪽에서 아래쪽 바라보는 가로의 길이 hs.y = Camera.main.aspect * hs.x; //가로세로 비율 * 가로 길이 = 세로 길이 StartCoroutine(ChangeDir(3f)); } // Update is called once per frame void Update() { Vector2 delta = dir * speed * Time.deltaTime; transform.Translate(delta); //자동으로 z가 0으로 됨. if(transform.position.x < (-hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.x > (hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y < (-hs.y)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y > (hs.x)){ StartCoroutine(ChangeDir(3f)); } } IEnumerator ChangeDir(float delta){ Vector2 goal; while(true){ goal.x = Random.Range(-hs.x,hs.x); //전체 가로 길이 goal.y = Random.Range(-hs.y,hs.y); //전체 세로 길이 dir = goal - (Vector2) transform.position; //이동방향 = 목표지점 - 현재위치(Vector3) dir.Normalize(); float delay = Random.Range(1f,delta); yield return new WaitForSeconds(delta); } } }
안녕하세요. 강의를 복습하던 도 중 궁금한게 생겨서 질문 드립니다. onClick={qqq}으로 버튼을 클릭시 5개 정도의 데이터가 refetchqueries 되어야 하는데 모두 다 쓰면 비효율적 인 듯 합니다. 많은 데이터가 refetch되어야 할 때 페이지가 새로고침 되는것이 낫다고 생각 하는데.. 1.새로고침을 한다면 어떤식으로 코드를 써야하나요? 2. 둘 중 어느것이 더 효율적일까요.
안녕하세요 어플라이 부분을 보고 있는데 3:20초 쯤 Space between 을 해제하는 부분이 있는데 현재 피그마에서 그 부분 <Spacing mode> 탭 자체가 보이지가 않아서요 혹시 제가 못 따라간 부분이 있을까요? 아니면 ui가 바껴서 탭 위치가 달라졌을까요?? ㅜㅜ
function render() { valueEl.innerHTML = store.getState().toString(); } render(); // redux store에 변화가 있을 때마다 render 함수를 호출한다. store.subscribe(render); 정말 별건 아니지만 store.subscribe(render) 부분이 그냥 문맥 상 읽으면 store가 render를 구독한다 의 표현이 되는데, 코드 상의 흐름은 store의 변화에 따라 render가 실행되니 render가 store를 구독하는 걸로 이해했습니다. 이게 맞는지 궁금합니다.
안녕하세요 강의를 듣다가 궁금증이 생겨서 질문을 드립니다. void init() { // given List<Product> products = List.of( createProduct("001", 1000), createProduct("002", 2000) ); // when Order order = Order.create(products, LocalDateTime.now()); // then assertThat(order.getOrderStatus()).isEqualByComparingTo(OrderStatus.INIT); } 강의에서 OrderTest 클래스 테스트 과정에서 enum을 비교할때 isEqualByComparingTo를 사용하셨습니다. assertThat(order.getOrderStatus()).isEqualTo(OrderStatus.INIT); 위와 같이 isEqualTo를 사용해도 enum을 비교할 수 있는데, 혹시 isEqualTo 대신 isEqualByComparingTo를 사용한 이유를 알 수 있을까요? isEqualByComparing가 정의된 AbstractComparableAssert.java를 확인해보면 BigDecimal을 예시로 들어서 사용법을 설명하고 있습니다. BigDecimal의 예시로 Enum을 써야 하는 방법을 생각해보았는데, 유추(?)가 잘 되지 않아서 질문을 남깁니다. 항상 좋은 강의 제공해주셔서 감사합니다!!😀😀
현재 일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석 이라는 수업을 듣고 있습니다. 최근에 ChatGPT 실무에 100% 활용하기 라는 수업이 생겨서 수강 여부를 고민중에 있습니다. 챕터만 보게되면 중복되는 부분이 꽤 있는 것 같은데, 중복으로 들을 필요가 있을지? 어떤 점이 다른지 궁긍하여 문의드립니다.
const { notifications } = this.state; const index = notifications.length; notifications.push(reservedNotifications[index]); this.setState({ notifications: notifications }) 위 코드에서 state.notifications 배열에 바로 push를 해서 setState를 해줬는데 지난 강의에서는 state에 있는 배열 또는 객체를 직접 수정하지 않고 복사해서 newNotifications = [...notifications] 처럼 새로 할당 한 다음 setState를 해준다고 봤던 부분이 있어서 어떤 경우에는 직접 state배열에 push가 가능한지 질문 드려도 괜찮을까요 강의 잘 보고 있습니다. 감사합니다!
해당 도커서버도 아래 명령어처럼 privileged를 사용하지 않고 2번째 방식으로 작성하면 될까요?? docker run -itd --name docker-server -p 10022:22 -p 8081:8080 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/docker:latest /usr/sbin/init
제목: 인프런 내 수강 중 강의에 대한 질문을 올리는 절차 및 환경에 대한 불편함 배경: 사용자(나)는 강의 종료 후 하루 뒤에 과제(or 질문)에 대한 생각이 떠올랐음. 과제를 작성하기 위해 거쳐야할 버튼이 3개 였으며, 텍스트 작성하다 실수로 브라우저 뒤로가기 버튼을 했고, 다시 돌아왔으나 내용이 날라가 다시 작성 함. 영향 예측: 강의 내 과제(or 질문) 참여 활성도가 낮아질 것으로 예상됨. 학생들이 직접 올리는 과제(or 질문)은 "참여율"을 판단하는 한 가지 지표로 보임. 해당 지표를 눈 여겨 봐야할 이유는, 장기적 관점에서 사용자의 탈퇴율을 낮추는 회사의 핵심 목표와도 밀접한 영향이 있다고 판단됨. 개선이 필요한 내용: 1. 강의를 수강하고 있는 사용자의 경우, 강의별 질문 올리기에 대한 접속 절차 개선 (아래 스크린샷은 현재 접속 절차임) 2. 텍스트 입력 환경 개선 필요 입력 중 내용 자동 저장 기능 및 사진 이미지 조정 기능이 필요 과제를 하며 느낀 점: 디자이너가 어떤 문제를 발견해, 이를 해결해야겠다고 생각했더라도 다른 팀원들 (기획자 및 개발자, CEO 등등)을 설득해 공감을 이끌어내는 것이 중요할 것 같다는 생각이 들었습니다. 또한 문제 발견 및 해결을 위한 리서치 과정의 관점에 대해서도 생각해보았습니다. 그 문제를 정당화시키는 관점이 아닌, 객관적으로 보는 자세가 역시 중요하며, 이를 계속 고수하는 것이 필요하겠다고 생각했습니다. 질문 사항: 사실 과제를 하며, 제가 느낀 불편한 점이 정말 맞는가? 내가 제기한 불편함이 소수의 사용자가 느끼는 불편함이면?과 같은 의문이 들었어요. 또 한가지는 강렬하게 들었던 생각은 원래 기능을 잘 몰라 그런 것이 아닐까? 에 대한 것입니다. 이런 생각이 들면 어떻게 해야 하는 것일까요? 파악하지 못한 기능이 없는지 더 적극적인 자세로 임해 기능을 찾아봐야 하는 것인지, 선생님의 생각이 궁금해 질문 드립니다. 참고로 좋은 UX 사례는 다시 정리해 글 올리도록 하겠습니다. 읽어주셔서 감사합니다! 앗, 제가 과제의 의도를 잘 이해하지 못한 것 같습니다. "디자인 원리를 토대로" 라고 이야기 해 주셨는데, 그저 제가 느낀 불편감을 토대로 입력했던 것 같습니다. 디자인 원리에 근거해 다시 다른 주제로 과제올려보도록 할게요! 감사합니다 :)
예시 상황은 여러 학생이 테이블을 공유해서 사용하여 모든 테이블에 student_id 컬럼이 있고 이를 이용해 데이터 사용자를 구별한다고 했을 때입니다. 이럴 때 모든 find, update, delete 절에 where student_id = '1000' 와 같은 조건이 필요하다고 하면 단순히 모든 find문에 findByStudentId 하고 아이디를 넣어주는 수밖에 없을까요? 어플리케이션 사용자 학생 아이디는 properties에 적어놓고 가져와 사용할 것이라 프로세스 실행중에 파라미터로 받아오는 경우는 없습니다.