묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결팀 개발을 위한 Git, GitHub 입문
안녕하세요! PPT 자료 공유 부탁드립니다!
안녕하세요! 다름이 아니고 PPT 자료 보내주실 수 있을까요? 협업 중에 기억이 안날 때 틈틈이 보면 좋을 것 같네요 ㅎㅎ luckyfelliix@gmail.com 입니다. 감사합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
맵 질문
연습으로 게임을 하나 만들고 있는데 맵 같은 경우에는 terrain과 AssetStore의 에셋을 이용하여 본인이 원하는대로 일일이 꾸미는 건가요? 혹시 맵 제작시에 편리하게 할 프로그램 같은게 있을까요? 참고로 3D RPG 형식 제작중입니다 유튜브에 맵 제작 관련하여 검색하니 terrain 말고는 따로 나오는게 없어서 여쭤봅니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
클라이언트에서 보낸 데이터가 다 도착하지 않았을 때...? 처리하는 부분이 있는건가요?
클라이언트에서 보낸 데이터가 다 도착하지 않았을 때 다음 데이터가 올 때까지 기다린 후 처리한다고 말씀하셨는데, 이 부분이 코드 어디에 구현되어있는건가요...? 위에 있는 코드를 나름대로 해석해보니 1. OnWrite()는 _recvArgs.Buffer에 들어있는 데이터만큼 _recvBuffer의 _writePos를 증가시킨다. 2. OnRecv()한 데이터(_recvArgs.Buffer에 들어있는 데이터)의 크기를 processLen에 담는다. 3. processLen의 크기만큼 _readPos를 증가시킨다. 라고 이해했는데, 클라이언트에서 보낸 데이터가 완전한지 불완전한지 딱히 판단하는 부분은 없어보이고 그냥, [1.데이터가 들어온만큼 _writePos를 증가시킨다 2. 처리한다 3. 처리한만큼 _readPos를 증가시킨다]를 실행시킨거같아서요!
-
미해결[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기
netlify 가 아무리해도 안되는데 좀 도와주세요
판다님! 안녕하세요~ 판다님의 어마어마한 강의 덕분에 MBTI 마지막 부분까지 왔는데요 netlify 업로드 하고 배포/공유 하려고 하는데 강의 영상에서는 그냥 집어 넣으면 바로 됐는데 저는 안 돼요... 어디를 수정해야 할까요..
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 영화 사이트 만들기
강의자료 질문입니다
안녕하세요. 기본강의 듣고 넘어 왔습니다. 기본강의에서는 강의자료 HTML 버젼이 있어서 보기 쉬웠는데 이번 자료는 XML이라 XML HTML로 변환도 해보고 했는데 잘 안되네요 다른 방법있을까요?
-
미해결김영삼 작가의 XD를 이용한 모바일 UI UX 실무 디자인
안드로이드 사이즈 만들기가 없어요
맥 사용하는데 새로만들기>>안드로이드 사이즈가 없어요 아이폰 사이즈 밖에 없는데 이런경우 맞춤형 크기로 문서 만들어야하나요?
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
vuex 사용에 대한 질문입니다.
강의에서는 모든 데이터를 vuex에 저장해서 사용하시는데요. 실제 개발할 때도 모든 데이터를 vuex에 저장하는게 좋나요? 프로젝트가 커져도요? 딱 한 컴포넌트 내에서만 사용되는 데이터가 있다면 그 컴포넌트 내에서 비동기 처리하고 데이터 사용 하는게 좋나요? 아니면 vuex에서 action, mutation해서 중앙에서 모든 데이터를 관리하는게 좋나요?
-
미해결자바스크립트 중고급: 엔진 핵심
[정리 시간] 작성해보았습니다.
선생님 안녕하세요. 항상 감사드립니다! [정리 시간]의 내용을 작성해보았는데 어렵네요...ㅜㅜ 가독성 좋고 효율적인 코드를 짜보고 싶은데 맘처럼 쉽지 않은 것 같습니다...ㅎㅎ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
공격 판정이 잘 안됩니다
공격 판정이 기사의 발을 클릭해야 공격이 들어갑니다 머리를 클릭하면 RUN상태로 부비부비를 하고 있어요 ㅜㅜ 코드는 강의 그대로 따라했습니다! ============================================ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class PlayerController : MonoBehaviour { public enum PlayerState { Die, Idle, Moving, Skill, } int _mask = (1 << (int)Define.Layer.Ground) | (1 << (int)Define.Layer.Monster); PlayerStat _stat; Vector3 _destPos; GameObject _lockTarget; [SerializeField] PlayerState _state = PlayerState.Idle; public PlayerState State { get { return _state; } set { _state = value; Animator anim = GetComponent<Animator>(); switch (_state) { case PlayerState.Die: break; case PlayerState.Idle: anim.CrossFade("WAIT00", 0.1f); break; case PlayerState.Moving: anim.CrossFade("RUN00_F", 0.1f); break; case PlayerState.Skill: anim.CrossFade("Attack1", 0.1f, -1, 0); break; } } } void Start() { #region // Managers.Input.KeyAction -= OnKeyboard; // Managers.Input.KeyAction += OnKeyboard; #endregion _stat = gameObject.GetComponent<PlayerStat>(); Managers.Input.MouseAction -= OnMouseEvent; Managers.Input.MouseAction += OnMouseEvent; Managers.UI.ShowSceneUI<UI_Inven>(); } void UpdateDie() { } void UpdateMoving() { //몬스터가 내 사정거리보다 가까우면 공격 if(_lockTarget != null) { float distance = (_destPos - transform.position).magnitude; if(distance <= 1) { State = PlayerState.Skill; return; } } //이동 Vector3 dir = _destPos - transform.position; if (dir.magnitude < 0.1f) { State = PlayerState.Idle; } else { NavMeshAgent nma = gameObject.GetOrAddComponent<NavMeshAgent>(); float moveDist = Mathf.Clamp(_stat.MoveSpeed * Time.deltaTime, 0, dir.magnitude); nma.Move(dir.normalized * moveDist); Debug.DrawRay(transform.position + Vector3.up * 0.5f , dir.normalized, Color.green); if(Physics.Raycast(transform.position + Vector3.up * 0.5f, dir, 1.0f, LayerMask.GetMask("Block"))) { if (Input.GetMouseButton(0) == false) State = PlayerState.Idle; return; } transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(dir), 10 * Time.deltaTime); } } void UpdateIdle() { } void UpdateSkill() { if(_lockTarget != null) { Vector3 dir = _lockTarget.transform.position - transform.position; Quaternion quat = Quaternion.LookRotation(dir); transform.rotation = Quaternion.Lerp(transform.rotation, quat, 20 + Time.deltaTime); } } void OnHitEvent() { Debug.Log("OnHitEvent"); if(_stopSkill) { State = PlayerState.Idle; } else { State = PlayerState.Skill; } } void Update() { switch (State) { case PlayerState.Die: UpdateDie(); break; case PlayerState.Moving: UpdateMoving(); break; case PlayerState.Idle: UpdateIdle(); break; case PlayerState.Skill: UpdateSkill(); break; } } #region //void OnKeyboard() //{ // if (Input.GetKey(KeyCode.W)) // { // transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.forward), 0.2f); // transform.position += Vector3.forward * Time.deltaTime * _speed; // } // if (Input.GetKey(KeyCode.S)) // { // transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.back), 0.2f); // transform.position += Vector3.back * Time.deltaTime * _speed; // } // if (Input.GetKey(KeyCode.A)) // { // transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.left), 0.2f); // transform.position += Vector3.left * Time.deltaTime * _speed; // } // if (Input.GetKey(KeyCode.D)) // { // transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.right), 0.2f); // transform.position += Vector3.right * Time.deltaTime * _speed; // } // _moveToDest = false; //} #endregion bool _stopSkill = false; void OnMouseEvent(Define.MouseEvent evt) { switch (State) { case PlayerState.Idle: OnMouseEvent_IdleRun(evt); break; case PlayerState.Moving: OnMouseEvent_IdleRun(evt); break; case PlayerState.Skill: { if(evt == Define.MouseEvent.PointerUp) _stopSkill = true; } break; } } void OnMouseEvent_IdleRun(Define.MouseEvent evt) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); bool raycastHit = Physics.Raycast(ray, out hit, 100.0f, _mask); // Debug.DrawRay(Camera.main.transform.position, ray.direction * 100.0f, Color.red, 1.0f); switch (evt) { case Define.MouseEvent.PointerDown: { if (raycastHit) { _destPos = hit.point; State = PlayerState.Moving; _stopSkill = false; if (hit.collider.gameObject.layer == (int)Define.Layer.Monster) _lockTarget = hit.collider.gameObject; else _lockTarget = null; } } break; case Define.MouseEvent.Press: { if (_lockTarget == null && raycastHit) _destPos = hit.point; } break; case Define.MouseEvent.PointerUp: _stopSkill = true; break; } } }
-
미해결실전! 웹사이트제작! Step by Step! ('라한호텔' 사이트제작_Application Course)
강의
강의 왜 안 보이나요??재생하니까 비공개 동영상이라고 뜨는데..
-
미해결Node.js로 웹 크롤링하기
mocha puppeteer 사용시 질문
삭제된 글입니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요. 질문있습니다!
안녕하세요. 이미 아래 질문글을 다 읽어보면서 비슷한 질문이 몇번 있었던 것은 확인했지만 명확하게 이해가 되지 않아서 재차 질문을 남깁니다. 1. MemberForm을 Controller에 선언한 이유와 실무에서도 저렇게 선언해도 되는지, 선언해도 되고 많이 선언해 사용한다면 vo? dto? domain? 이곳에 선언해야 할 것과 Controller에 선언해 사용해도 될 것의 차이가 무엇인지 궁금합니다. 국비지원 교육을 받은 수준에서는 MemberForm이 그냥 vo 같다고 밖에 안느껴지는데, vo를 domain에 선언하지 않아서 혼란이 생겼습니다. (이전 질문을 보며 domain 과 vo는 다르다고 글을 쓰신건 보긴 했지만 개념은 모르는 상태입니다.) 2. 어디서 lombok이란 라이브러리? api?를 쓰는 것을 봤는데, 제가 보기에는 자동으로 getter, setter를 생성해주는 녀석이라고 느꼈습니다. 그렇다면 lombok이라는 녀석을 무조건 쓰는게 이득이지 않나 1차원적인 생각이 들어서 lombok을 쓸때의 단점과 lombok을 사용하지 않고 getter, setter를 기재해서 사용할 떄의 장점이 있나 궁금해서 질문 남기게 됐습니다. 좋은강의 남겨 주셔서 감사하고 좋은하루 되세요!
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
파일 경로 alias
수업을 잘 보고 있습니다. 혹시 vue.config.js 에 경로 alias를 안주는 이유가 있으신가요? 개인프로젝트 때 인텔리제이에서 할려고 하는데 거기서는 vue.config.js에서 경로 alias를 줘도 크게 문제가 없는건가요? 답변 주시면 감사하겠습니다.
-
미해결스프링 핵심 원리 - 기본편
접근 제어자 관련 질문입니다.
제가 아직 자바 기본 개념이 많이 미숙한가봅니다... 접근제어자에 관한 질문이 좀 있는데요. 1. OrderServiceImpl 등에서 MemberRepository와 DiscountPolicy가 private final로 선언되는 이유가 궁금하고, 2. AppConfig 리팩토링에서 왜 memberRepository()는 접근 제어자가 private인 반면, discountPolicy()는 public으로 하셨는지 궁금합니다.
-
미해결
react 안배웠는데
자바스크립트는 기본은 알지만 리액트 안배웠는데 이강좌 배워도 되는지.. 그리고 깊이가 어느정도 되는지용? 여기 배우면 리액트 프로젝트 들어갈수있나요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
colab Error 관련
안녕하세요 선생님, tensorflow-gpu==1.15.2 를 설치 후 코랩에서 import keras를 실행할 때 버전에러?같은것이 발생합니다. 혹시 해결할 수 있는 방법이 있을까요?
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
컨테이너에서 볼륨 설정 문의 드립니다
안녕하세요! 딱 61강 끝내고 서버 잘 돌아가는거 확인하고 한가지 의문이 생겨서 문의드립니다. 혹시 django_container_gunicorn 만들 때 볼륨 설정했던 것 같은데 pragmatic 폴더가 원래 여기쯤 생겨있어야 하지 않나 싶어서요..
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
mapper
mapper에서 그냥 쿼리문을 쓰지않고 CDATA를 넣는 이유가 무엇인가요?
-
미해결
png파일 관련
안녕하세요 html과 css를 시작한지 얼마 안되 왕초보입니다. 동영상 강의를 들으면서 따라하는 중인데 css에서 png파일이 적용이 안돼서 질문 남깁니다ㅜ 이 png 파일이 스프라이트 형식으로 되어있어서 이미지가 여러 개 있는데 처음 로고에 적용할 때는 투명 배경이 적용돼서 잘 적용했습니다. 두 번째에 같은 이미지의 다른 부분(검색 아이콘)을 넣으려고 했더니 같은 png파일임에도 불구하고 회색 배경?이 같이 들어가더라고요ㅠㅠ 여기서부터 강의를 못듣고 있습니다. 혹시 문제를 아시는 분 답변 부탁드립니다ㅠㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이에서 실행과 jar파일 배포해서의 실행 차이에 대해 궁금합니다.
@Controller @RequestMapping("/test") public class TestController { @GetMapping("/test") public void test1(){ System.out.println("test1"); } @GetMapping("/test2") public String test2(){ System.out.println("test2"); return "test/test"; } @GetMapping("/test3") public String test3(){ System.out.println("test3"); return "/test/test"; } } 위와 같이 컨트롤러 작성하고 resources/templates/test/test.html 파일을 생성해 두었습니다. 인텔리제이에서는 아무런 문제없이 test, test2, test3 모두 정상적으로 실행되는데 jar파일 생성후 java -jar로 실행하면 test, test2는 실행되는데 test3를 호출하면 http://localhost:8080/test/test3 ERROR 3380 --- [nio-8080-exec-3] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-3] Exception processing template "/test/test": Error resolving template [/test/test], template might not exist or might not be accessible by any of the configured Template Resolvers 위와 같이 오류가 발생됩니다. test3의 리턴값에 "/" 을 붙여 절대경로로 설정되어 있는것인데. 왜 인텔리제이에서는 정상적으로 실행되는반면 jar배포 파일로 실행하면 오류가 발생되는지 모르겠네요. 1. 위의 상황에서 리턴값에 "/" 이 포함안된 상대경로로 하는게 맞는것인지? "/" 포함된 절대경로로 하는게 맞는것인지? 또는 둘다 맞는것인지 궁금합니다. 2. 인텔리제이와 jar파일 배포시 왜 다른 결과가 나오는지 궁급합니다. 인텔리제이 2020.0.4 버전 스프링부트 2.5.0 자바 11