안녕하세요! 혹시 아래 링크와 같이 페이지가 로드되었을때 숫자가 슬롯모션처럼 넘버 카운트 업 되는 인터렉션은 어떻게 구현할까요? 예를들어 목표 100건 , 달성 100건 이런식으로 숫자를 인터렉션으로 표시하려고 합니다 https://codeconvey.com/Tutorials/pure-css-number-counter-animation/
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
for (int i = 0; i < 15; i++) { Console.Write("*"); if (i == 0) Console.WriteLine(); else if(i == 2) Console.WriteLine(); else if (i == 5) Console.WriteLine(); else if (i == 9) Console.WriteLine(); else if (i == 14) Console.WriteLine(); } 이렇게해도 괜찮은가요
햄버거 아이콘을 그룹으로 만들고, guide와 iconbox를 비표시로 설정하면 갑자기 크기가 18x16으로 변합니다. 강사님의 영상에 있는 햄버거 아이콘은 guide와 iconbox를 비표시로 설정해도 24x24되네요... 저도 강사님처럼 24x24으로 되는 것이 배치하기 쉬울것같은데 어떻게 설정하면 될까요?
select member0_.username as col_0_0_, 'HELLO' as col_1_0_, 1 as col_2_0_ from Member member0_ where member0_.type='USER' 여기에서 1 as col_2_0_가 나오는데 1이 의미하는게 무엇인가요?
영화 나열을 위한 Row 컴포넌트 생성 도중 'NETFLIX ORIGINALS' 자료들이 나타나지 않는 오류가 생겼습니다. 더불어 배경 또한 검정색이 아닌 흰색으로 보입니다. 제 생각에 Row.js 폴더의 movies.map 함수에 문제가 있는 것 같은데 구글링을 해봐도 해결 방법을 찾지 못했습니다. 참고로 movies.map 함수의 앞에 movies && 를 덧붙인 건 그렇게 하지 않으면 화면이 잠깐 나오다가 사라지기 때문입니다. 오타가 있나 싶어서 영상과 소스코드를 몇 번이나 비교해 봤지만 차이점을 찾지 못했습니다. 제 코드의 어떤 부분이 잘못된 걸까요? 혹시 도움을 주실 수 있을까요? 깃허브 주소를 첨부합니다.. https://github.com/minumsa/React_Netflix_Clone/
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
main() { const char* msg = "Hello"; retrun 0; } Hello 라는 문자열이 수정이 불가능 한 이유로는 rodata영역에 들어가기 때문에 수정이 불가능하고 또한 const가 *이전에 붙어있어서 주소로 접근하여 값을 수정하는 것이 불가능하다. (msg라는 포인터 변수의 데이터(가르키는 주소는 수정이 가능하다) 그리고 SetMessage함수에 msg의 주소(값을)를 const char* a로 넘겨주고 a = "Bye"; 로 선언 및 초기화를 해주었을 경우 a는 const char* a 즉, a가 가르키는 값(주소)의 값(데이터 == Hello라는 문자열)수정이 불가능 한 것이지 a라는 포인터 변수가 담고있는 값부분(주소값)을 수정하는 게 불가능 한 것이 아니다. 따라서 SetMessage 함수가 호출되면 a라는 포인터 변수에 처음에 msg의 값에 담긴 "Hello"라는 문자열의 첫번째 주소값이 a에 담기기는 하지만, a = "Bye"로 인해 데이터 영역에 있는 "Bye"의 첫번째 주소가 a라는 포인터 변수의 값에 할당된다. 그리고 a라는 포인터 변수는 스택메모리에 쌓인다. SetMessage함수 호출이 종료되고 나면 a 포인터 변수 메모리 공간은 해제된다. (함수 호출이 종료되면 사용할 수 없는 포인터 변수이다) 제가 이해한것이 맞나요?? (추가로 SetMessage 함수에서 데이터 영역에 Bye"라는 문자열을 데이터 영역에 메모리만 추가를 하고, a가 가르키는 값은 해제가 되니까 결론적으로는 데이터 영역의 메모리만 잡아먹고 아무것도 안한셈이 되는 것인가요?)
1:01:53 부분에서 getTelno() 함수에서 0부터 telno.length()-4로 지정해줬으면 010-9999-8888이 아니라 010-9999-까지 출력되야 하는 것 아닌가요? 그 뒤로 ****으로 출력되게 만드는 부분이 생략됐습니다. 1:01:55에서 갑자기 완성된 Score 클래스를 보여주면서 School 클래스에서 출력하는 부분이 나오는데 그 사이에 누락된 내용이 많은 것 같은데 빨리 수정됐으면 합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 강의를 듣다 궁금한점이 있어서 질문드립니다! file.transferTo(new File(fullPath)) 이렇게 해주면 fullPath 경로에 파일이 저장된다고 하셨는데 어떻게 파일이 저장되는 걸까요? @RequestParam MultipartFile file 이렇게 file을 처음에 컨트롤러에서 받는데 이 file 객체에 현재 첨부한 파일이 들어있는거고 file.transferTo()를 하면 ()안의 경로에 file 객체가 가지고 있는 파일이 저장이 되는거라고 생각하면 될까요? 그리고 new File() 이 무슨 역할을 하는지 혹시 알수있을까요?
반복문 강의 7분대 상황에서, m3의 값이 저는 똑같이 적용해도 달라요. 보시면 선생님은 i가 1일때 5,3인데.. 저는 i가 1일때 5120,3 이런 식이거든요. 제가 판단할때는 m2에 어떤 식으로든 함수계산을 해놓으면 저는 그 이전의 값으로 적용이 안되서 그런거고, 선생님은 m2 맨처음 값으로 치환해서 진행이 된 것 같은데요. 저는 한번 m2에 함수를 넣어 계산하면 그 함수 이전으로 가도, 한번 나온 값으로 다음 계산이 진행되는데 왜 그런걸까요? 선생님처럼 하려면 어떻게 해야하나요??? 답변 좀 꼭 부탁드립니다!!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 강의를 듣던 도중 router주소를 정하는데 있어서 궁금증이 들어서 질문하게 되었습니다. export function removeCartItem(productId) { const request = axios.get(`/api/users/removeFromCart?id=${productId}`) .then(response => { //productInfo , cart 정보를 조합해서 CartDetail을 만든다. response.data.cart.forEach(item => { response.data.productInfo.forEach((product, index) => { if (item.id === product._id) { response.data.productInfo[index].quantity = item.quantity } }) }) return response.data; }); return { type: REMOVE_CART_ITEM, payload: request } } export function onSuccessBuy(data) { const request = axios.post(`/api/users/successBuy`, data) .then(response => response.data); return { type: ON_SUCCESS_BUY, payload: request } } 위의 코드에서 onSuccessBuy 함수에서는 data로 상품 정보등을 보내주었는데, removeCartItem함수에서도 마찬가지로 복잡하게 서버에서 query 정보를 가지고 id를 추출하는 대신, get 대신 post를 쓰고 id정보가 담긴 객체를 보내주는 방법을 사용해도 될까요?? 항상 좋은 강의해주셔서 감사합니다! 앞으로 남은 강의도 열심히 듣겠습니다.
마우스 오른쪽 버튼 클릭 후 live server로 창을 띄운다음에 검사를 들어가고,..,., 저는 Vue라는것이 안보입니다. 플러그인설치 : vetur , material icon , night owl , live server 이와같이 했는데 안되는 이유가 뭘까요.,.,
파이참을 안쓰고 vscode로 실습을 따라하고 있는데 bootstrap적용하는 과정에서 {% bootstrap_form form%}을 하면 저러고 오류가 나옵니다. 'bootstrap_form', expected 'endblock'. Did you forget to register or load this tag?
M.match_join이 호출되긴 하는데 PlayerView.js에서 op_code 값이 2가 나오는지 찍어봐도 찍히지 않고 호출되지 않는 거 같습니다. import React, { useEffect, useState, useRef } from 'react' import '../App.css'; const PlayView = () => { const [isHit, setIsHit] = useState(false) const setTimeOutRef = useRef(null); useEffect(() => { if(!window.pc.app.gameApp) return; window.pc.app.gameApp.socket.onmatchdata = (matchState) => { let jsonResult = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(matchState.data))) switch (matchState.op_code) { case 1: onPlayerMove(jsonResult) break; case 2: onHandleInitialData(jsonResult) break; case 3: onPlayerSpawn(jsonResult) break; default: break; } } }, []) const onPlayerMove = () => { } const onHandleInitialData = (data) => { const myAccountId = window.pc.app.gameApp.user.user_id; console.log('onHandleInitialData', data); for (const player of data.players) { if(myAccountId === player.user_id) { continue; } console.log(player); setTimeout(() => { onPlayerSpawn(player); }, 1000); } } const onPlayerSpawn = (data) => { // Create a new player entity. let playerEntity = window.pc.app.root.findByName("Player"); let newPlayerEntity = playerEntity.clone(); // Put Location into new player entity. if(data.position) { let position = data.position; newPlayerEntity.rigidbody.teleport(position[0], position[1], position[2]); } else { newPlayerEntity.rigidbody.teleport(0, 3, 0); } // addChild into Root newPlayerEntity.enabled = true; let sceneRoot = window.pc.app.root.findByName("Root"); sceneRoot.addChild(newPlayerEntity); } useEffect(() => { window.pc.app.on("boxHit", listener); return () => { window.pc.app.off("boxHit", listener) } // window.addEventListener("message", listener) // return () => { // window.removeEventListener("message", listener); // } }, []) const listener = (event) => { // if(event.origin !== "http://localhost:3000") // return; clearTimeout(setTimeOutRef.current); setIsHit(true); setTimeOutRef.current = setTimeout(() => { setIsHit(false); }, 1000); } return ( <div> {isHit && <div className='Popup'>Box is hit</div> } </div> ) } export default PlayView local nk = require("nakama"); local M = {} local function on_player_move(context, dispatcher, tick, state, message) local player = state.presences[message.sender.session_id] if player == nil then return end local ok, decode_data = pcall(nk.json_decode, message.data) if not ok then nk.session_disconnect(message.sender.session_id) return end player.info["position"] = decode_data.position; dispatcher.broadcast_message(1, message.data) end local function on_player_spawn(context, dispatcher, tick, state, message) -- 실제로 매치에 있는 사람이 보낸 것인지 확인. 아니면 return local player = state.presences[message.sender.session_id] if player == nil then return end dispatcher.broadcast_message(3, message.data) end function M.match_init(context, initial_state) local state = { presences = {}, empty_ticks = 0 } local tick_rate = 30 -- 1 tick per second = 1 MatchLoop func invocations per second local label = "" return state, tick_rate, label end function M.match_join_attempt(context, dispatcher, tick, state, presence, metadata) local acceptuser = true return state, acceptuser end function M.match_join(context, dispatcher, tick, state, presences) for _, presence in ipairs(presences) do state.presences[presence.session_id] = presence state.presences[presence.session_id].info = { user_id = presence.user_id, position = {0, 3, 0} } end local player_infos = {} for _, p in pairs(state.presences) do table.insert(player_infos, p.info) end local player_init_data = { players = player_infos, tick = tick } dispatcher.broadcast_message(2, nk.json_encode(player_init_data), presences) return state end function M.match_leave(context, dispatcher, tick, state, presences) for _, presence in ipairs(presences) do state.presences[presence.session_id] = nil end return state end function M.match_loop(context, dispatcher, tick, state, messages) print("messages: ", nk.json_encode(messages)) for _, message in ipairs(messages) do if (message.op_code == 1) then local ok = pcall(on_player_move, context, dispatcher, tick, state, message) if not ok then nk.session_disconnect(message.sender.session_id) end end if (message.op_code == 3) then local ok = pcall(on_player_spawn, context, dispatcher, tick, state, message) if not ok then nk.session_disconnect(message.sender.session_id) end end end return state end function M.match_terminate(context, dispatcher, tick, state, grace_seconds) return state end function M.match_signal(context, dispatcher, tick, state, data) return state, data end return M