안녕하세요. 강의를 듣는 과정에서 궁금한 사항이 있어서 질문 드립니다. 유저 모드 관련 특권 모드와 유저 모드가 있는데, 대부분 특권모드에서 동작한다고 알려주셨습니다. 인터럽트 핸들러도 특권모드에서 동작을 하고요. 유저 모드에서는 특권모드로 이동도 못해서 제약이 상당히 많은 것 같은데, 유저 모드는 어떠한 상황에서 사용되는지 궁금합니다. xSPR 관련 AR, VR 등을 합쳐서 부르기 위해, XR이라고 부르는 것과 같이 xSPR도 ASPR, ESPR 등을 통칭하기 위해 xSPR로 부르는 것인가요? 아니면, xSPR은 ASPR, ESPR, ISPR을 모두 합친 프로세서 레지스터라고 봐야 할까요? 어셈블리어 활용 관련 요즘에는 어셈블리어로 코딩하는 일이 많지 않을 것 같은데, 어셈블리어의 지식은 어떤 곳에 활용할 수 있을까요? 프로그램에 문제가 생겼을 때 디버깅을 하면서 어셈블리어를 알면 문제 원인을 찾기가 쉬울 것 같은데, 혹시 다른 용도로는 어떻게 활용할 수 있는지 궁금합니다. STM32 관련 ARM Cortex-M4를 사용하는 MCU를 만드는 제조사는 ST Micronics 외에도 Nordic이나 Microchip등 여러 회사들이 있는 것을 알고 있습니다. 그런데, 대부분의 강의를 보면 STM32 Series의 보드를 사용하시더라고요. STM32 Series 보드의 장점이 무엇이기에 대부분 이를 선택하시는지 궁금합니다. 또한, STM Cube IDE와 유사하게 nRF Series에서도 segger IDE를 제공하는 것으로 알고있는데, Cube IDE처럼 segger로도 disassemble 등의 기능을 사용할 수 있는지도 궁금합니다. 질문 사항이 좀 길어졌네요... 강의는 잘 듣고 있습니다! 감사합니다.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class VPlayer : MonoBehaviour { #region 변수 모음 public float speed; public float power; public Vector3 direction; Animator pAnimator; Rigidbody2D pRig2D; SpriteRenderer sp; GrapplingHook grappling; // GrapplingHook C# 코드 불러오기 #endregion #region 점프 변수 모음 [Header("Jump System")] [SerializeField] float jumpUp; [SerializeField] float fallMultiplier; [SerializeField] float jumpTime; [SerializeField] float jumpMuitiplier; Vector2 vecGravity; bool isJumping; float JumpCounter; #endregion #region 벽 점프 변수 모음 [Header("Wall Jump System")] public Transform wallChk; public float wallchkDistance; public LayerMask wLayer; bool isWall; public float slidingSpeed; public float wallJumpPower; public bool isWallJump; float isRight = 1; #endregion #region 공격 관련 변수 [Header("Attack System")] public GameObject Vslash; // 공격 모션 #region 마우스 관련 변수 모음 Vector2 MousePos; Vector3 dir; float angle; Vector3 dirNo; #endregion #endregion #region 초기화 void Start() { pAnimator = GetComponent<Animator>(); pRig2D = GetComponent<Rigidbody2D>(); direction = Vector2.zero ; sp = GetComponent<SpriteRenderer>(); grappling = GetComponent<GrapplingHook>(); vecGravity = new Vector2(0, -Physics2D.gravity.y); } #endregion void Update() { if (!isWallJump) { KeyInput(); Move(); mousePos(); } #region 점프 키 누름 if (Input.GetKeyDown(KeyCode.W)) { if (pAnimator.GetBool("Jump") == false) { Jump(); isJumping = true; JumpCounter = 0; pAnimator.SetBool("Jump", true); //JumpDust(); } } #endregion #region 점프 후 떨어질 때 가속 if (pRig2D.velocity.y < 0) { pRig2D.velocity -= vecGravity fallMultiplier Time.deltaTime; } #endregion #region 점프 키를 꾹 눌렀을 시 더 높이 점프 if (pRig2D.velocity.y > 0 && isJumping) { JumpCounter += Time.deltaTime; if (JumpCounter > jumpTime) isJumping = false; pRig2D.velocity += vecGravity jumpMuitiplier Time.deltaTime; } if (Input.GetKeyUp(KeyCode.W)) { isJumping = false; } #endregion #region 벽인지 체크 isWall = Physics2D.Raycast(wallChk.position, Vector2.right * isRight, wallchkDistance, wLayer); pAnimator.SetBool("Wall", isWall); #endregion #region 벽타기 if (isWall) { isWallJump = false; pRig2D.velocity = new Vector2(pRig2D.velocity.x, pRig2D.velocity.y * slidingSpeed); #region 벽을 잡고 있는 상태에서 점프 if (Input.GetKeyDown(KeyCode.W)) { isWallJump = true; //벽점프 먼지 //GameObject go = Instantiate(walldust, transform.position + new Vector3(0.6f * isRight, -0.32f, 0), Quaternion.identity); //go.GetComponent<SpriteRenderer>().flipX = sp.flipX; Invoke("FreezeX", 0.3f); pRig2D.velocity = new Vector2(-isRight wallJumpPower, 0.9f wallJumpPower); sp.flipX = sp.flipX == false ? true : false; isRight = -isRight; } #endregion } #endregion } private void FixedUpdate() { #region 바닥 감지 레이저 Debug.DrawRay(pRig2D.position, Vector3.down, new Color(0, 1, 0)); RaycastHit2D rayHit = Physics2D.Raycast(pRig2D.position, Vector3.down, 0.8f, LayerMask.GetMask("Ground")); #endregion #region Ground를 감지할 때 if (pRig2D.velocity.y < 0) { if (rayHit.collider != null) { if (rayHit.distance < 0.6f) { pAnimator.SetBool("Jump", false); } } #region 6-2. 떨어질 때의 감지 방식 else { if (!isWall) { //그냥 떨어지는 중 fall pAnimator.SetBool("Jump", true); } else { //벽타기 pAnimator.SetBool("Wall", true); } } #endregion } #endregion } #region 키 입력 void KeyInput() { direction.x = Input.GetAxisRaw("Horizontal"); #region 왼쪽 if (direction.x < 0) { //left sp.flipX = true; //점프벽잡기 방향 isRight = -1; pAnimator.SetBool("Run", true); } #endregion #region 오른쪽 else if (direction.x > 0) { //right sp.flipX = false; //점프벽잡기 방향 isRight = 1; pAnimator.SetBool("Run", true); } #endregion #region Idle 상태 else if (direction.x == 0) { pAnimator.SetBool("Run", false); } #endregion #region 공격 버튼 if (Input.GetMouseButtonDown(0)) { pAnimator.SetTrigger("Attack"); //Instantiate(hit_lazer, transform.position, Quaternion.identity); } #endregion } #endregion #region 이동 void Move() { if (direction.x != 0) { if (grappling.isAttach) { pRig2D.AddForce(new Vector2(direction.x * speed, 0)); //로프 이동 } else pRig2D.velocity = new Vector2(direction.x * speed, pRig2D.velocity.y); //보통 이동 } } #endregion #region 점프 public void Jump() { pRig2D.velocity = new Vector2(pRig2D.velocity.x, jumpUp); } #endregion #region 마우스 방향 public void mousePos() { Transform tr = GetComponent<Transform>(); MousePos = Input.mousePosition; MousePos = Camera.main.ScreenToWorldPoint(MousePos); Vector3 Pos = new Vector3(MousePos.x, MousePos.y, 0); dir = Pos - tr.position; // 바라보는 각도 구하기 angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; } #endregion #region 공격 이펙트 public void AttSlash() { pRig2D.AddForce(dir.normalized * power, ForceMode2D.Impulse); GameObject go = Instantiate(Vslash, transform.position, Quaternion.identity); if (dir.x <= 0) { sp.flipX = true; } else { sp.flipX = false; } } #endregion void FreezeX() { isWallJump = false; } } 마우스 방향 값을 이용해 좌클릭을 할 때 마우스 방향으로 공격을 하는 코드를 짜고 있는 데, 이동을 velocity로 해서 그런지 idle 상태 run 상태에서 좌클릭을 누르면 공격 모션만 마우스 방향으로만 가고 플레이어는 마우스 방향으로 앞으로 대쉬하지 않습니다. 이때는 어떻게 처리해야 하는 지 알려주시면 감사하겠습니다. 코루틴도 써봤지만 답이 안나와서 올립니다.
안녕하세요 강사님. 모든 강의를 수강한 이후에 왜 처음에 beautiful soup로 시작해서 selenium으로 끝이 나는지 절실하게 깨달을 수 있었습니다. 가르쳐 주신 예제를 바탕으로 개인적으로 추가 실습을 진행하면서 크롤링에 대한 이해를 높이려고 하는데 selenium의 경우 특정 버튼을 클릭하여 넘어간 이후에 크롤링이 진행되도록 자동화에 맞추어져 있는 라이브러리임을 알 수 있었습니다. 네이버 예제 화면에 있는 메일, 카페, 블로그, 쇼핑, 뉴스, 증권, 부동산, 지도, 웹툰이 모여져 있는 배너에서 사용자가 특정 버튼을 눌렀을 때 이동한 해당 페이지에서 크롤링을 진행할 수 있도록 자동화하는 예제를 스스로 만들어 공부 중인데 이러한 경우에서 if 메일 if 카페 if 블로그 같은 분기를 바탕으로 작성한 로직 대신 동적으로 사용자가 클릭했을 때의 정보를 가져올 수 있도록 하는 방법이 있을까요? 수많은 버튼이 존재하게 된다면 사용자가 어떤 버튼을 누를지 xpath라던가 class를 특정할 수 없는 경우가 생길 수 있을 것 같아서 질문 드립니다..!
안녕하세요 저는 직장인입니다. 사무직을 하고있으며, 현재 회사는 개발부는 C언어, C#언어를 주로 사용합니다. 저는 사무직으로써 먼가 성장하기위해 언어를 배워야하는거같은데 나름 생각을 한게 엑셀 파일을 많이 만지고있어서 VBA를 배울까했습니다. 근데 요즘은 파이썬으로 엑셀 자동화하는게 핵심인거같아 어떤걸 먼저 배워야할지 고민을 하고있습니다. 그 후 최종적으로 C언어를 배울까 하는데 무엇부터 시작하는게 좋을까요? VBA > 파이썬 > C언어 로 가는게 좋을까요? 파이썬 > VBA > C언어로 가는게 좋을까요? 그리고 해당하는 인프런 강의도 추천해주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 솔직히 인터페이스 처음 설정에 대한 내용이 하나도 이해가 가질 않네요.. SpringDataJPA가 JpaRepository를 상속 받은 SpringDataJpaMemberRepository에 대한 구현체를 스프링 빈으로 등록해준다는 건 알겠는데, JpaRepository<Member, Long>에 있는 Member와 Long은 어떤 역할을 하기에 들어가는 것이며, 그 뒤에 함께 상속받는 MemberRespository는 어떤 역할을 하기위해 상속되는 건지 궁금합니다. 기초적인 질문을 드려 죄송합니다만, GPT도 설명을 제대로 안해주기에 정말 모르겠어서 이렇게 질문드립니다.
org.junit.runners.model.InvalidTestClassError: Invalid test class 'hello.core.member.MemberServiceTest': 1. Method join() should be public 영한님 코드랑 동일한데 해당 에러가 발생합니다. 에러 메시지처럼 join() 에 public 을 붙여 줬더니 해결이 되었는데, 이유가 뭘까요?
만약에 키나 몸무게 필드에 숫자가 아닌 값을 입력할 경우 '숫자를 입력하세요'라고 출력하고 싶은데 어떻게 하면 좋을까요? 그리고 입력된 숫자가 특정 범위를 넘길 경우 제한 하는 방법도 궁금합니다. 뭔가 아래와 같은 느낌으로 하고싶은데 방법이 궁금합니다. TextFormField( decoration: const InputDecoration( border: OutlineInputBorder(), hintText: '키', ), keyboardType: TextInputType.number, validator: (value){ if(value == null || value.isEmpty){ return '키를 입력하세요'; }else if(value의 타입 != TextInputType.number){ return '숫자를 입력하세요.'; }else if(value > 1000){ return '정상적인 값이 아닙니다.'; } return null; }, ),
안녕하세요. 6)Trigger강의중 Trigger Property 설정에서 Control.IsMouseCaptured를 사용 할 수가 없습니다. ItemControl로 변환을 유도하는데 정작 ItemControl에는 IsMouseCaputred 구문이 없습니다. Setter 설정 시에도 Control. Foregruund 가 에러가 나서Property="ItemsControl.Foreground" 로 진행하였습니다. 추가) 해당 구문을 다시 강제(?)로 입력하여 동작 확인 하였습니다. <Trigger Property="Control.IsMouseCaptured" Value="True"> <Setter Property="Control.Foreground" Value="Blue"> </Setter> </Trigger>
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 8분 20초 쯤에 JpaRepository 인터페이스로 들어가볼 때 강사님의 인터페이스 내용과 제 JpaRepository 인터페이스의 내용이 달라요. 저는 findById()도 없고, findAll() 메서드의 리턴타입도 <S extends T> List<S> 이렇게 생겼고, 뭔가 강사님의 화면에서는 보이지 않는 잡다한 것들이 너무 많아요. 저의 JpaRepository 인터페이스는 왜 이렇게 뜨는 걸까요ㅠㅠ 사진 첨부합니다. 위 사진이 저의 JpaRepository 전체 입니다.
안녕하세요 Rookiss강사님 Pawn으로 AI이동하고 있는데 Cube로 하면 이동이 되는데 제가 먼가 큐브말고 로봇청소기로 한번 이동하는걸 만들어 보고 싶어서 sketchfab에서 fbx로 다운받은 것을 이용해 static mesh를 만들고 mesh를 변경해서 로봇 청소기 모양으로 만들었는데 실행하면 이동하지 않습니다. 그래서 로봇청소기 mesh는 삭제하고 큐브를 추가해주면 다시 이동이 됩니다. BP_AIController
기존에 인텔리제이에서 자바 11버전으로 설정했었습니다. 그래서 자바 버전 설정 관련된 부분을 모두 17 버전으로 변경했는데도 빌드에 실패하네요.. 그래서 build.gradle 파일에서 아래 부분 주석 처리하니깐 빌드에 성공했습니다. 왜 그런지 이유를 알 수 있을까요? //sourceCompatibility = '17'
빈등록하는 방법에 @Bean을 통한 직접등록, @Component를 통해 자동 스캔 @Import를 통한 등록 3가지를 말씀해주셨는데요, @Bean과 @Component는 왜 구분지어지는건가요? @Bean은 @Configuration 객체안에서만 사용할 수 있는 규칙이라던지 있는건가요?
메서드나 함수 안에서 선언해서 사용하는 변수를 지역변수라 칭하는데, 마찬가지로 메서드 안에 클래스 인스턴스를 생성해서 사용할 경우 해당 객체는 뭐라고 부르나요?(메서드 안에서 클래스를 선언하는 지역클래스 말고요.) 예로는 void methodA () { int i = 0; ClassA m = new ClassA() m.a = i; } 대충 이런 식의 코드일 때 변수 i를 methodA의 지역변수라 하고 객체 m은 어떻게 불러야 할까요
안녕하세요. 좋은 강의를 감사히 듣고 있는 학생입니다. 다름이 아니라 이번에 실무에 가까운 프로젝트를 하면서 Common Error Page (Custom Error Page) 가 필요하다는 얘기를 듣게 되었습니다. 어떤 에러가 발생하는 경우에 기본적인 에러 화면이 아닌 디자인 된 에러 페이지로 항상 가야한다는 요청 사항인데 이건 static 인가요 template 인가요? 어떻게 구현하나요?