묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결게임 캐릭터를 위한 3ds Max 리깅의 기초
플립이 없는 회전 보간법?
안녕하세요.커스텀 스플라인 ik 세팅으로 플립이 없는 트위스트를 구현하고자 합니다.캐릭터 셋업 테크닉에 나온 makecloset함수를 응용해서 다음과 같은 로테이션 스크립트를 작성했습니다.(nodeA와 B는 스플라인 IK의 양 끝단 트위스트 컨트롤러 객체 노드, 아래 수식은 회전 보간 될 중간 본들에 적용 된 로테이션 스크립트)fn quatDot a b = (a.w*b.w + a.x*b.x + a.y*b.y + a.z*b.z)fn midSlerpNoFlip qA qB t = ( if (quatDot qA qB) < 0 do qB = -qB ; slerp qA qB t )(local P = if self.parent != undefined then self.parent.transform else (matrix3 1)local qA = (nodeA.transform * inverse P).rotationlocal qB = (nodeB.transform * inverse P).rotationlocal qMid = midSlerpNoFlip qA qB 0.5local qOut = qMidqOut)문제는 local qMid = midSlerpNoFlip qA qB 0.5가 0.5가 아닌 다른 값으로 보간을 하면 플립이 생긴다는 건데, 제가 뭔가 수식을 잘못 작성한 것인지, 아니면 맥스에서 혹은 수학적으로 완벽한 논플립 회전 보간이 불가능한 것인지 궁금합니다.(와이어 파라미터에서 회전값을 받아오는 방식은 컨트롤러의 부모가 회전했을 때는 컨트롤러의 실질적인 회전 변화가 0이라 제가 원하는 방식은 아니었습니다.)
-
미해결옵시디언 마스터 클래스(생산성을 바꾸는 기록 습관)
궁금한 점 있습니다.
안녕하세요. 평소 지식 관리 및 기록에 관심이 있던 참에 좋은 강의를 수강하고 기록을 시작하고 있습니다.수강 중 궁금한 점이 몇 가지가 있어 질문을 드리려고 합니다. Calendar.Logs의 경우 동일 주제, 다른 날의 기록을 한 파일에 남기고 있습니다. 이러면 한 파일이 너무 길어져서 나중에 보기가 힘들 것 같은데 이렇게 관리를 하시는지, 아니면 다른 방법으로 관리를 하시는지 궁금합니다.Efforts의 예제 노트들에는 아무 내용도 없는데, 어떤 내용을 추가하면 좋을지 궁금합니다.현재 진행 중인 앱 개발 사이드 프로젝트를 Efforts를 통해 관리하려고 하는데, 주로 개발 지식, 회의록, DB 변천사를 저장하게 될 것 같습니다.저의 생각은 개발 지식은 Atlas, 회의록 및 DB 변천사는 Calendar/Logs에 저장을 하려고 합니다. 그리고 Efforts.On에서 base를 통해 두 정보를 볼 수 있도록 하려고 하는데 이렇게 관리를 하는 것은 어떻게 생각하시는지, 더 좋은 방법이 있다면 추천해 주실 수 있는지 질문드립니다.
-
미해결비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
홈페이지 저장 위치 및 삭제
첫 웹사이트로 자기소개 싸이트 만들기 연습을 하고 있는데, 이걸 만들면 이 홈페이지는 lovable 서버에 저장이 되는거죠? 그럼, 이 홈페이지를 폐쇄하고 싶으면 어떻게 삭제하나요?
-
미해결BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
3-13 리텐션 과제 제출
3-13 리텐션 과제 제출합니다!https://www.notion.so/13-22f60e878b2580c097eaf0e1eb15d73c?source=copy_link 혼자 쿼리를 쓰다가 고객 정의를 내리고 나니 너무 어려워 AI의 도움도 받고, 여러 방법으로 좀 접근을 해봤습니다만.. 정의를 너무 어렵게 내린 것 같아 시간이 오래 걸렸네요ㅠㅠ 서비스나 업종마다 다르겠지만, 일반적으로 신규, 활성, 복귀, 휴면 유저에 대한 정의는 어떻게 내리고, 분석을 어떤 식으로 진행하는 건가요? 과제를 진행하긴 했으나 쿼리가 제대로 작성된 게 맞는지 분석을 올바르게 한 게 맞는지 너무 어렵군여ㅠ
-
미해결비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
supabase 설정 설명 부분이 없어요.
1-3에 자기 소개 웹사이트 만들때 방문자 수 추가하는 것 해보니 supabase를 연결해야 한다고 하는데, 처음하는 사람은 이게 뭔지 잘 모르는데, 이 부분에 대한 설명이 없어 추가하는 것이 필요합니다. 동영상에서는 그런 과정 없이 바로 되는데, 나의 경우에는 supabase의 연결을 설정해야 기능이 정상 작동했어요. 뒤에 이 부분에 대한 설명이 있는지 모르겠지만, 없다면 자세히 설명 부탁합니다.
-
미해결AI 시대의 혁신적인 게임 개발 입문 with Unity6
질문이 하나 있습니다.
기존에 VISUAL STUDIO 2022 를 사용중인데VISUAL STUDIO CODE를 써야 더 좋을까요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 15684 시간복잡도 질문드립니다.
안녕하세요 선생님! 결국 시간초과 문제를 해결했긴 했지만, 시간 복잡도를 어떻게 계산하는게 좋을지 궁금해서 질문드리려고 해요. 시간 초과가 났던 코드http://boj.kr/8fe9f1e620454720a985b58a993d229a통과 됐던 코드http://boj.kr/864f7c65db52442bada271fe193a2ec3기본적으로 선생님의 설명대로, 300C3 == 대략 4,500,000(450만) 은 반드시 든다고 가정했어요. 이때, 두 코드의 차이점은 다음과 같아요.movePlayer + isSamePosition 함수를 각기 사용하는가checkedPlayer 함수 하나를 사용하는가 만약 movePlayer + isSamePosition 를 사용한다면 제 생각에는 300 + 10 = 310 정도를 생각했고, 이로 인해 최종 시간 복잡도는 13억 5000만(450만 * 대략 300) 으로 생각했어요. 이는 13초 정도로 생각했고요. 하지만 checkedPlayer 함수를 사용하는 순간, 중간에 break 할 수 있어 300까지 계산할 일은 거의 없겠지만.. 정말 최악의 최악일 경우 n-1 player의 맨 h 행까지 계산해야할 수도 있을거라고 생각했어요. 그럼 결국 300까지 계산하게 되는거고, 이 또한 시간 복잡도가 13초 정도가 되는거고요.그래서 제 질문의 핵심은 다음과 같아요.시간 초과가 났던 코드, 통과한 코드의 시간 복잡도는 어떻게 계산해야하는가? 계산 결과 어떤 시간 복잡도를 가진다고 봐야하는가?checkedPlayer를 사용한다고 하더라도 최악의 경우에는 300번 가량을 계산해야하는 것은 마찬가지일 것 같은데, 왜 통과되는것인가? 물론 시간복잡도를 완전 정확히 계산할 수는 없지만, loop 횟수나 재귀함수의 호출횟수로 정량화하여 대략 예상하고 싶은데 이 예상치 조차 세워지지 않아서 혼란스러워 질문드렸어요 ㅜㅡㅜ
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
external-ip로 지정된 ip주소로 접속되지 않습니다.
컨테이너를 배포 후 get pod,svc로 확인해보면 다음과 같은 현상이 나타납니다.Status가 Running이 되지 않고, 이는 톰캣의 버전을 9로 바꿔도 진행되지 않습니다. 어떻게 해결해야 좋을지 알고 싶습니다!
-
미해결홍정모의 따라하며 배우는 C++
Resource.h 코드 알려주세요
169.15.4170.15.5 등에서 cpp 파일은 있어서 따라 코드를 치면서 컴파일러 해보는데요.강의에서 Resource.h 코드를 몰라서 컴파일러 못하고 있어요.코드 알려주세요.컴파일러 해 보면서 확인하고 싶고, 강사님 의도를 이해하고 싶습니다. 감사합니다.
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
이미지 pull중 no basic auth credentials 문제입니다.
msa 프로젝트 중 각 마이크로 서비스의 이미지를 pull 하는 곳에서 문제가 생깁니다.err: ERROR: for seat-service Head "https://139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/v2/seat-service/manifests/1.0": no basic auth credentials이렇게 에러가 나오게 되네요... IAM 사용자 생성했고 권한 정책에 AmazonEC2ContainerRegistryFullAccess를 추가해줬습니다. 또한 이 사용자를 EC2에 연결까지 했습니다. 추가적으로 helper 설정을 위해 ./docker 폴더를 만들고 config.json에 "credsStore":"ecr-login"도 추가해주어 강의랑 매우 똑같이 만들었습니다. 이 deploy.yml 은 github action 코드입니다. 7번에서 이 오류가 발생하게 됩니다.======선을 기준으로 아래는 docker-compose.yml파일입니다. 이 문제를 어떻게 해결해야할까요? 또한 각 마이크로 서비스에 연결된 데이터베이스가 모두 maraiDB라면 이걸 docker-compose.yml로 이미지화 시켜야하는것이 맞을까요?# 6. EC2로 Compose 파일 전송 - name: Copy docker-compose.yml to EC2 uses: appleboy/scp-action@v0.1.7 with: host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} source: "docker-compose.yml" target: "/home/ubuntu/movie-project/" strip_components: 0 overwrite: true # 7. EC2에서 Compose 실행 - name: SSH into EC2 and deploy uses: appleboy/ssh-action@v0.1.7 with: host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} script: | cd /home/ubuntu/movie-project sudo docker-compose down sudo docker-compose pull sudo docker-compose up -d ================================================ movie-service: image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/movie-service:1.0 depends_on: - redis book-service: image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/book-service:1.0 depends_on: - kafka payment-service: image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/payment-service:1.0 depends_on: - kafka seat-service: image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/seat-service:1.0 depends_on: - kafka
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
OnAcceptHandler 액션 함수
강의 코드에서 _onAcceptHandler에 +=로 onAcceptHandler를 등록해주고 있는데,어차피 액션 함수는 한 번만 변수에 할당해두고 이후 통신할 때마다 재사용되는 구조잖아요?그렇다면 =로 해도 될 것 같은데, +=를 사용한 특별한 이유가 있을까요?
-
미해결실전! Querydsl
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
-
미해결[Unity6] 나만의 서바이벌 게임 만들기
Inventory #1 강의 31분 28초경 오류 납니다
Inventory #1강의 31분 28초경 오류 납니다Assets\00_Scripts\UI\PART\INVENTORY.cs(27,23): error CS1503: Argument 1: cannot convert from 'UnityEngine.GameObject' to 'Item_Panel'go가 gameObject가 아니라는 오류 같은데 어떻게 해야할까?
-
미해결친절한 블렌더 - [LV.3] 캐릭터 애니메이션
코가 얼굴에 가려져서 앞으로 안나와요..
4강 39:14/ 코는 만들었는데 얼굴에 안붙고 감춰져요ㅜ 어떻게 앞으로 오게 할수 있을까요?
-
미해결
강의 연장 요청 드립니다
프로젝트 후에 취준으로 인해 아직 시험 준비를 못했습니다 ㅠㅠ연장 부탁드립니다..
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
Notion 주소?
노션 주소가 어떻게 되나요?
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
파워포인트 자료 다운로드 버튼 어디에 있나요?
안녕하세요 7강 파워포인트 자료 다운로드 버튼 어디에 있나요? 나중에 코딩소스도 다운로드해서 볼수있나요?
-
미해결
App RefreshToken 관리 방법
안녕하세요 React Native으로 React Query 를 이용해서 소셜로그인 기능을 구현중입니다.이유는 간단하게 템플릿으로 매 프로젝트 진행할때마다 수월하게 하기 위해서 입니다.RefreshToken을 DB에 넣는편이 좋을까요 안넣는편이 좋을까요?일반적인 앱 로그인 플로우 차트 알려주시면 감사하겠습니다,, 현재는 keychain으로 넣고 끝입니다..accessToken 만료 시 2개 토큰 전부 재발급 해주고 있구요.
-
미해결웹 애니메이션을 위한 GSAP 가이드 Part.01
hover pulse animation 관련해서 질문있습니다!
mouseenter 마우스 이벤트를 할때 pulse.start(); 대신 pulse.restart();로 처음시작하게 하는것처럼 실습 때 mouseleave 마우스가 벗어날 때 자연스럽게 하려면pulse.pause();gsap.to('button',{scale:0.8,duration:0.4})두개를 사용해서 어색하지 않게 구현했는데요, pulse.pause();gsap.to('button',{scale:0.8,duration:0.4})대신 pulse.reverse();를 사용해도 동일하게 어색하지 않게 줄 수있는 효과인건가요? 차이점은 없는건지 궁금합니다.
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
브라우저 화면 줄일 시 빈 공간 발생
D1 유형이고, 브라우저 화면을 줄이면 위와 같이 빈 공간이 발생합니다. 슬라이드 이미지로 꽉 채워져야 할 것 같은데 말입니다. 제공된 예제 파일에서도 이런 증상이 있는 것 같은데 혹시 잘못된 부분이 있는 건가요?아니면 원래 예상된 동작인지 궁금합니다. <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="container"> <div class="maincontant"> <div class="left"> <header> <div class="headerlogo"></div> <div class="navi"></div> <div class="spotmenu"></div> </header> </div> <div class="right"> <div class="slide"> <div class="slideimg"> <div class="slideinner slideitems"> <a class="sitem" href="#none"><img src="images/slide-d-01.jpg" alt="slide-d-01"></a> <a class="sitem" href="#none"><img src="images/slide-d-02.jpg" alt="slide-d-02"></a> <a class="sitem" href="#none"><img src="images/slide-d-03.jpg" alt="slide-d-03"></a> </div> </div> <div class="slidebanner"> <a href="#none"><img src="images/banner-01.png" alt="banner-01"></a> <a href="#none"><img src="images/banner-02.png" alt="banner-02"></a> <a href="#none"><img src="images/banner-03.png" alt="banner-03"></a> </div> </div> <div class="items"> <div class="shortcut"></div> <div class="newsgallery"></div> </div> </div> </div> <footer> <div class="footerlogo"></div> <div class="copyright"></div> <div class="sns"></div> </footer> </div> <script type="text/javascript" src="script/jquery-1.12.4.js"></script> <script type="text/javascript" src="script/custom.js"></script> </body> </html>@charset "utf-8"; body { margin: 0; background-color: #fff; color: #333; } .container {} .maincontant { display: flex; } .maincontant > div{ border: 1px solid; /* height: 800px; */ } .left { width: 200px; } .right { flex : 1 } /* header */ header{} header > div { border: 1px solid red; } .headerlogo { height: 200px; } .navi { height: 500px; } .spotmenu { height: 50px; } .slide { height: 400px; position: relative; } .slideimg { /* border: 1px solid blue; */ height: 400px; position: relative; overflow: hidden; } /* Slide Animation */ .slideinner { /* 실제로 움직이는 요소 */ position: absolute; top: 0; left: 0; font-size: 0; /* animation: slide 10s linear infinite; */ height: inherit; } .slideinner a { /* 움직이는 .slide-image-inner에 포함된 요소 */ height: inherit; } .slideinner a img { width: 100%; height: inherit; /* 부모요소인 a의 너비에 유동적으로 맞춰지게 하는 속성 */ object-fit: cover; } .slidebanner { width: 100px; height: 300px; position: absolute; top: 0; right: 0; } .slidebanner img{ width: 100px; } /* items */ .items{} .items > div{ border: 1px solid green; } .shortcut { height: 200px; } .newsgallery { height: 250px; } /* footer */ footer { display: flex; } footer > div { border: 1px solid; height: 100px; } .footerlogo { width: 200px; } .copyright { flex:1 } .sns { width: 300px; }setInterval(function(){ $('.slideitems').animate({top:'-100%'},function(){ $('.slideitems').css({top:0}); $('.sitem:first-child').appendTo('.slideitems') }) },1000);