묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C언어
typedef에서 *하나와 두개의 차이
char(*complicated_function1())[3] { return &char3; // Returns a pointer to char[3] typedef char(*FRPTC3())[3]; typedef char(*(*PTFRPTC3)())[3]; FRPTC3* fptr2 = complicated_function1; PTFRPTC3 fptr3 = complicated_function1; 여기서 FRPTC3의 *하나와 PTFRPTC3의 * 두개의 차이는 뭐죠?? 이중포인터인가요??
-
미해결홍정모의 따라하며 배우는 C++
헤더 파일(1.11강)
open containing folder를 이용하여 myheaders파일을 새로 만들고 add.h파일을 옮기고 난 후 우측 explorer창에서 헤더 파일을 우클릭 하고 open을 눌렀는데 계속 실행이 안 되었습니다. include 하여 빌드는 되긴 하지만 이렇게 실행이 계속 안되는게 보편적인 문제인 건지 아니면 제 컴퓨터에 한해서 실행이 안 되는 건지 궁금하여 질문 남깁니다!!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 궁금한게 있어서 질문 드려봅니다
다름이 아니라영상의 27분 50초 쯤 SendBuffer에 대해서C++일경우에 레퍼런스 카운트를 이용해서 0이라면 풀에 반환한다고 말씀하셨는데요.C#에서도 아래처럼 1) 가능한 부분이 아닌가 싶어서 궁금해서 질문드려봅니다TLS 환경에 일정량의 SendBuffer Pool을 만들어 놓고 TLS환경에는 싱글스레드 처럼 하나의 스레드만 접근이 가능하므로 SendBuffer.Open시에 SendBuffer에 FreeSize가 reserveSize보다 크면 Pool에 반납을 하고 새롭게 미리 할당된 메모리를 가져오고 기존 메모리를 초기화해서 다시 풀에 넣는방식이라면 가능하지 않을까 싶은데 어떻게 생각하시는지 궁금합니다 추가질문 입니다. 2) 아래와 같은 이유로 SendBuffer를 새로 할당한 것인가요?C++의 레퍼런스 카운트를 이야기한 부분이 혹시Send시에 SocketAsyncEventArgs의 BuffList에 ArraySegment값들이 들어가고(원본의 참조형태로 들고 있기 떄문에) 그걸 Socket.SendAsync에서 호출하게 되는데 커널단에서 실제 Send 처리 이후의 메모리의 레퍼런스 카운트 시점을 알아야 정확히 풀로 반환할 수 있기 때문인건가요? 위와 같은 문제라서SendBuffer는 새로 할당하는 방법을 선택하신건지도 궁금합니다 3) C#에선 풀은 세션 별로 버퍼 풀방법 뿐인건가요?결국 레퍼런스 카운트 때문이라도C#에선Pool을 활용하려면 결국 세션 단위로 버퍼풀을 만들어서 사용하는 방법뿐일까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
auth.js 에서 cookies가 undefined로 뜹니다
auth.js 에서 req.cookies를 찍어보면 undefined로 뜹니다. 같은문제로 다른 분들이 질문하신 것들을 참고해서 제 코드를 확인해봤는데 오타문제나 cookieParser를 빠뜨려서 생긴 문제는 아니었고요. 현재 저는 cors를 back에서 직접 해주고 있는데 어떻게 해결해야 하나요? let auth = (req, res, next) => { // 인증처리 하는 곳 // 클라이언트 쿠키에서 토큰을 가져온다 let token = req.cookies.x_auth; console.log('쿠키', req.cookies.x_auth); // 토큰을 복호화 한 후 유저를 찾는다. User.findByToken(token, (err, user)=>{ if(err) throw err; // 유저가 없으면 인증 No if(!user) return res.json({isAuth:false, error: true}); // 유저가 있으면 인증 Okay req.token = token; req.user = user; next(); }) }
-
미해결따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]
강사님 안녕하세요 강의 다시 처음부터 복습하려고 보고 있습니다!
그런데 아래와 같이 문구가 뜹니다. useEffect에서 history를 사용했을 때 console창에 아래와 같은 문구가 뜨는데 해결방법이 있을까요?? console.log창에서 아래와같이 문구가뜹니다. Line 26:6: React Hook useEffect has a missing dependency: 'history'. Either include it or remove the dependency array react-hooks/exhaustive-deps useEffect(() => { firebase.auth().onAuthStateChanged(user => { if (user) { history.push("/"); } else { history.push("/login"); } }) }, [])
-
미해결그리드(Grid) 핵심이론 및 실전 활용
에밋 단축키 관련해서 질문 있어요
코드에서 에밋 단축키 설정할 때에 이미 다른 단축키 설정이 되어있다고 하면 못하는건가요? 제가 설치한 vscode에서는 ctrl + d 가 사용중이더라고요. 아직 이게 뭔지 모르겠지만;; ctrl+d로 고치지 않고 초기값 그대로 사용해도 수업에는 지장이 없는지요? 넘넘 기초적인 질문드려서 죄송합니다.
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
TypeError: postData.split is not a function 에러 질문 있습니다!
안녕하세요! 항상 좋은 강의 잘 듣고 있습니다. 감사합니다. 현재 챕터4 끝까지 수강하고 다시 복습하고 있었는데, 자꾸 위와 같은 에러가 발생합니다. 이미 저랑 같은 질문을 했던 분들이 많이 계셔서 밑에 달린 제로초님 답변 따라 PostCard부터 쭉 확인해봤는데도 어떤 문제인지 찾지 못했습니다.. 리덕스데브툴로 확인해보니,ADD_POST_REQUESTADD_POST_SUCCESSADD_POST_TO_ME 까지 실행됐다가 에러가 발생합니다. // PostCard.js <Card.Meta avatar={<Avatar>{post.User.nickname[0]}</Avatar>} title={post.User.nickname} description={<PostCardContent postData={post.content} />} /> // reducers/post.js const dummyPost = (data) => ({ id: data.id, content: data.content, User: { id: 1, nickname: '제로초', }, Images: [], Comments: [], }); // reducers/user.js case ADD_POST_TO_ME: draft.me.Posts.unshift({ id: action.data }); break; // sagas/post.js function* addPost(action) { try { // const result = yield call(addPostAPI, action.data); yield delay(1000); const id = shortId.generate(); yield put({ type: ADD_POST_SUCCESS, data: { id, content: action.data, }, }); yield put({ type: ADD_POST_TO_ME, data: id, }); const onSubmitForm = useCallback(() => { dispatch({ type: ADD_POST_REQUEST, data: { text, }, }); }, []); PostForm의 data: { text } 부분을 그냥 data: text, 로 입력해봤는데그때부터는 위와 같은 TypeError는 발생하지 않았지만, 글이 빈칸으로 포스팅되고 리덕스로 확인해보니 content 가 빈칸으로만 출력되었습니다..
-
미해결그로스해킹 - 데이터와 실험을 통해 성장하는 서비스를 만드는 방법
교차 세일의 기준이 제 생각엔
안녕하세요 ^^ 저는 서동기입니다. 제가 생각하는 크로스세일은 연관 검색어로 노출된 상품을 고객이 구매할 때를 말하는 것 같습니다. 그래서 아까 강의중 예문에 연관 키워드가 들어간 예문이 크로스세일인것 같습니다. 양승화멘토님의 고견을 듣고 싶습니다.^^
-
해결됨실전 리액트 프로그래밍
로그아웃 기능 관련 문의
안녕하세요. 강의 마지막부분에 설명해주신 로그아웃 기능 관련 문의를 드리려합니다. 우측 상단에 있는 로그아웃 버튼을 클릭하게 되면 클릭하자마자 쿠키에 저장된 User 관련 정보가 사라짐으로써 기본 페이지가 로딩되지 않고 로그인 페이지로 리다이렉션이 되어야 하는 것이 정상 시나리오인것 같은데요. 로그아웃 버튼을 클릭하면 리다이렉션이 이루어지지 않은 채 그대로 멈춰있네요. 그 상태에서 새로고침을 하게 되면 로그인 페이지로 리다이렉션이 되고요. 뭔가 놓친 부분이 있는건가요?? 작성한 소스코드 링크를 올려드릴테니 확인해주시면 감사하겠습니다. https://drive.google.com/file/d/1NofoiWcbaZrAl8DV-ZlZREclhx7qlrrX
-
해결됨모던 자바스크립트(ES6+) 기본
[강의자입니다] 브라우저 디버거 창의 오른쪽에 let, const 변수 표시
강의를 만드는 시점에는 let 변수와 const 변수가 브라우저 디버거 창의 오른쪽에 표시되지 않았으나, 2021.02.13 기준, 질문을 받고 확인해보니 표시됩니다. 변경되었습니다.표시되더라도 변수 앞에서 호이스팅으로 let 변수, const 변수를 사용할 수 없으며 에러가 발생합니다만, 블록에 작성된 변수를 표시하여 사용의 편리를 제공하기 위한 것으로 생각됩니다. 바로 아래 질문에 화면 캡처가 있으니 참조하기 바랍니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
어노테이션 관련 질문드립니다.
7분 즘에 MemberRepository 클래스르 만들고 @PersistenceContext 어노테이션을 private EntityManager em; 에 붙였는데 원래 정석대로라면 팩토리를 만들고 그걸로 엔티티매니저를 반환받는거였는데 이 어노테이션으로 그 과정을 스킵한다고 봐도 되나요? 팩토리 만들 때 마다 비용이 많이 소모된다고 알고있는데 이 어노테이션도 똑같이 팩토리를 한번만 만들고 그 팩토리로 엔티티매니저를 반환하나요? 그렇다면 이 과정을 알고 있다는 전제 하에 그냥 간단하게 @Autowired 같은 거라고 보면 될까요 ㅎㅎ...
-
미해결파이썬 무료 강의 (활용편1) - 추억의 오락실 게임 만들기 (3시간)
공이 안없어집니다..
공(고양이)가 안없어집니다.. 이미지를 바꾸면서 ball을 cat으로, to_remove를 _rm으로 바꾼 것 양해부탁드립니다. # 1. 모든 공을 없애면 게임 종료, 성공 # 2. 강아지가 고양이에 닿으면 게임 종료, 실패 # 3. 시간 제한 99초 초과 시 게임 종료, 실패 import pygame, os pygame.init() # 초기화 필수 # 게임 화면 크기 설정 screen_width = 640 # 가로 크기 screen_height = 480 # 세로 크기 screen = pygame.display.set_mode((screen_width, screen_height)) # 화면 타이틀 설정 pygame.display.set_caption('강아지가 츄르주는 게임') # 게임 이름 # FPS clock = pygame.time.Clock() # 1. 사용자 게임 초기화 # 이미지 불러오기 current_path = os.path.dirname(__file__) # 현재 파일 위치 반환 image_path = os.path.join(current_path, "images") # 배경 이미지 background = pygame.image.load(os.path.join(image_path, "background.png")) # 스테이지 stage = pygame.image.load(os.path.join(image_path, "stage.png")) stage_size= stage.get_rect().size stage_height = stage_size[1] # 스테이지 높이 # 캐릭터 만들기 character = pygame.image.load(os.path.join(image_path, "puppy.png")) # 70*70 캐릭터 불러오기 character_size = character.get_rect().size # 캐릭터 이미지의 가로 세로 크기를 가져옴 character_width = character_size[0] # 캐릭터의 가로 크기 character_height = character_size[1] # 캐릭터의 세로 크기 character_pos_x = (screen_width - character_width) / 2 # x position = 화면 가로의 절반에 위치 하도록 (캐릭터의 x 좌표) character_pos_y = screen_height - stage_height - character_height + 10 # 이동할 좌표 chracter_to_x = 0 # 이동 속도 character_speed = 0.4 # 무기 만들기 weapon = pygame.image.load(os.path.join(image_path, "weapon.png")) # 무기 이미지 불러오기 weapon_size = weapon.get_rect().size weapon_width = weapon_size[0] # 무기 동작: 무기는 한 번에 여러 발 발사 가능 weapons = [] # 무기 이동 속도 weapon_speed = 10 # target cat_images = [ pygame.image.load(os.path.join(image_path, "cat0.png")), pygame.image.load(os.path.join(image_path, "cat1.png")), pygame.image.load(os.path.join(image_path, "cat2.png")), pygame.image.load(os.path.join(image_path, "cat3.png")) ] # 타겟 크기에 따른 최초 스피드 cat_speed_y = [-18, -15, -12, -9] # index 0 1 2 3 - cat 1 2 3 4 # 타겟들 cats = [] # 최초 발생하는 큰 고양이 추가 cats.append({ "pos_x" : 50, # 고양이의 x 좌표 "pos_y" : 50, # 고양이의 y 좌표 "img_idx" : 0, # 고양이의 이미지 인덱스 "to_x" : 3, # 고양이의 x축 이동 방향, -3이면 왼쪽으로 3이면 오른쪽ㅇfh "to_y" : -6, # y축 이동 방향 "init_spd_y" : cat_speed_y[0] # y축 최초 속도 }) # 사라질 츄르, 고양이 정보 저장 변수 weapon_rm = -1 cat_rm = -1 # 폰트 정의 game_font = pygame.font.Font(None, 40) # 폰트 객체 생성 (폰트, 크기) # 게임 총 시간 total_time= 100 # 시작 시간 계산 start_ticks = pygame.time.get_ticks() # 현재 tick 정보를 받아옴 # Game Over, TIME OVER, Mission Complete game_result = "GAME OVER" # event loop running = True # 게임이 진행 중인가? while running: dt = clock.tick(30) # delta = clock. FPS 설정 for event in pygame.event.get(): # 키보드에 맞는 이벤트 실행되면 if event.type == pygame.QUIT: # 창 끄기 이벤트 발생 시 running = False if event.type == pygame.KEYDOWN: # 키가 눌러졌는데 확인 if event.key == pygame.K_RIGHT: chracter_to_x += character_speed elif event.key == pygame.K_LEFT: chracter_to_x -= character_speed elif event.key == pygame.K_SPACE: # 스페이스바 누르면 무기 발사 weapon_pos_x = character_pos_x + (character_width / 2) - (weapon_width / 2) weapon_pos_y = character_pos_y weapons.append([weapon_pos_x, weapon_pos_y]) elif event.key == pygame.K_UP: pass elif event.key == pygame.K_DOWN: pass if event.type == pygame.KEYUP: # 방향키를 뗐을 때 if event.key == pygame.K_RIGHT or event.key == pygame.K_LEFT: chracter_to_x = 0 elif event.key == pygame.K_UP or event.key == pygame.K_DOWN: pass # 캐릭터 움직이기 character_pos_x += chracter_to_x * dt # FPS에 따라 속도가 변하지 않게 delta 값을 곱해주어 고정해줌 # 캐릭터 가로 경계값 처리 if character_pos_x < 0: character_pos_x = 0 elif character_pos_x > screen_width - character_width: character_pos_x = screen_width - character_width # 무기 위치 조정 weapons = [[w[0], w[1] - weapon_speed] for w in weapons] # 무기가 천장에 닿으면 없애기 # weapons = [[w[0], w[1]] for w in wea pons if w[1] > 0] # 타겟 위치 정의 for cat_idx, cat_val in enumerate(cats): cat_pos_x = cat_val["pos_x"] cat_pos_y = cat_val["pos_y"] cat_img_idx = cat_val["img_idx"] cat_size = cat_images[cat_img_idx].get_rect().size cat_width = cat_size[0] cat_height = cat_size[1] # 가로 경계값: 타겟의 경계값 처리 -> 경계값이 닿으면 반대 쪽으로 튕김 if cat_pos_x < 0 or cat_pos_x > (screen_width - cat_width): cat_val["to_x"] *= -1 # 세로 경계값: 스테이지에 튕겨서 올라감 if cat_pos_y >= (screen_height - stage_height - cat_height): cat_val["to_y"] = cat_val["init_spd_y"] else: # 그 외 모든 경우에는 to_y를 증가 cat_val["to_y"] += 0.5 cat_val["pos_x"] += cat_val["to_x"] cat_val["pos_y"] += cat_val["to_y"] # 충돌 처리를 위한 rect 정보 update character_rect = character.get_rect() character_rect.left = character_pos_x character_rect.top = character_pos_y for cat_idx, cat_val in enumerate(cats): cat_pos_x = cat_val["pos_x"] cat_pos_y = cat_val["pos_y"] cat_img_idx = cat_val["img_idx"] # cat rect 정보 업뎃 cat_rect = cat_images[cat_img_idx].get_rect() cat_rect.left = cat_pos_x cat_rect.top = cat_pos_y # cat과 puppy 충돌 처리 if character_rect.colliderect(cat_rect): running = False break # cat과 츄르 충돌 처리 for weapon_idx, weapon_val in enumerate(weapons): weapon_pos_x = weapon_val[0] weapon_pos_y = weapon_val[1] # 츄르 rect 정보 업뎃 weapon_rect = weapon.get_rect() weapon_rect.left = weapon_pos_x weapon_rect.top = weapon_pos_y # 충돌 체크 if weapon_rect.colliderect(cat_rect): weapon_rm = weapon_idx # 해당 츄르 없애기 위한 값 설정 cat_rm = cat_idx # 해당 고양이 없애기 위한 값 설정 if cat_img_idx < 3: # 0 1 2 -> 가장 작은 공이 아니라면 # 현재 고양이 크기 정보 cat_width = cat_rect.size[0] cat_height = cat_rect.size[1] #나눠질 고양이 정보 small_cat_rect = cat_images[cat_img_idx + 1].get_rect() small_cat_width = small_cat_rect.size[0] small_cat_heigth = small_cat_rect.size[1] # 왼쪽으로 튕겨나가는 작은 고양이 cats.append({ "pos_x" : cat_pos_x + (cat_width / 2) - (small_cat_width / 2), "pos_y" : cat_pos_y + (cat_height / 2) - (small_cat_heigth / 2), # 고양이의 y 좌표 "img_idx" : cat_img_idx + 1, "to_x" : -3, # 고양이의 x축 이동 방향, -3이면 왼쪽으로 3이면 오른쪽ㅇfh "to_y" : -6, # y축 이동 방향 "init_spd_y" : cat_speed_y[cat_img_idx + 1] # y축 최초 속도 }) # 오른쪽으로 튕겨나가는 작은 고양이 cats.append({ "pos_x" : cat_pos_x + (cat_width / 2) - (small_cat_width / 2), "pos_y" : cat_pos_y + (cat_height / 2) - (small_cat_heigth / 2), # 고양이의 y 좌표 "img_idx" : cat_img_idx + 1, "to_x" : +3, # 고양이의 x축 이동 방향, -3이면 왼쪽으로 3이면 오른쪽ㅇfh "to_y" : -6, # y축 이동 방향 "init_spd_y" : cat_speed_y[cat_img_idx + 1] # y축 최초 속도 }) break else: continue # 충돌된 cat or 무기 없애기 if cat_rm > -1: del cats[cat_rm] cat_rm = -1 if weapon_rm > -1: del weapons[weapon_rm] weapon_rm = -1 # 모든 cat이 없어졌을 때 if(len(cats)==0): game_result = "MISSION COMPLETE" running = False # screen.fill((r, g, b)) # rgb 값으로 배경색 채울 수도 있음 screen.blit(background, (0, 0)) # 배경 이미지를 어디서부터 나타내줄건지. 0, 0 -> 왼쪽 맨 위부터 for weapon_pos_x, weapon_pos_y in weapons: screen.blit(weapon, (weapon_pos_x, weapon_pos_y)) for idx, val in enumerate(cats): cat_pos_x = val["pos_x"] cat_pos_y = val["pos_y"] cat_img_idx = val["img_idx"] screen.blit(cat_images[cat_img_idx], (cat_pos_x, cat_pos_y)) screen.blit(stage, (0, screen_height - stage_height)) screen.blit(character, (character_pos_x, character_pos_y)) # 캐릭터 그리기 # 타이머, 경과 시간 계산 elapsed_time = (pygame.time.get_ticks() - start_ticks) / 1000 # 초단위로 표시 timer = game_font.render("Time: {}".format(int(total_time - elapsed_time)), True, (255, 0, 0)) screen.blit(timer, (10, 10)) # 시간이 0 이하면 game over if(total_time - elapsed_time <= 0): game_result = "TIME OVER" running = False pygame.display.update() # 게임 화면 다시 그리기 # 잠시 대기 pygame.time.delay(1000) # 2초 대기 # 게임 오버 메세지 msg = game_font.render(game_result, True, (255,0,0)) msg_rect = msg.get_rect(center=(int(screen_width / 2), int(screen_height / 2))) screen.blit(msg, msg_rect) pygame.display.update() pygame.time.delay(2000) # pygame 종료 pygame.quit()
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 선생님 backlog : 최대 대기수 에 대해서 질문 드립니다.
class Listener { Socket _listenSocket; Action<Socket> _onAcceptHandler; public void Init(IPEndPoint endPoint, Action<Socket> onAcceptHandler) { // 문지기 생성 : 첫번째 인자에 네트워크 주소를 넣어줌 _listenSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _onAcceptHandler += onAcceptHandler; // 연결 // 문지기 교육을 시킴 : 식당 주소와 포트번호를 기입 _listenSocket.Bind(endPoint); // 영업 시작 : 리슨 소켓을 리슨 상태로 둔다. // backlog : 최대 대기수 _listenSocket.Listen(10); // *** 초기화를 하는 시점에 등록을 해줄 것 // 이 상태에서 클라가 connect 요청이 왔다고 한다면 // 콜백 방식으로 OnAcceptCompletd 함수 호출 된다. // 비동기 방식으로 예약만 하는 것 // 낚시대를 10개를 꼽아 놓는다. 물고기가 많으면 ... // 문지기 10개 버젼 for(int i = 0; i<10; i++) { // 문지기 1 버젼 SocketAsyncEventArgs args = new SocketAsyncEventArgs(); args.Completed += new EventHandler<SocketAsyncEventArgs>(OnAcceptCompleted); RegisterAccept(args); } } 수업 예제 코드 중에 Listen 클래스 를 작성하실 때 리슨 소켓 하나 만들어주고 그놈을 서버 컴퓨터에 바인딩을 시켜준다음 리슨 함수를 호출해 주고, 이상태에서 클라쪽에서 신호가 오면 그 다음 처리를 해주는 코드 설명이셨는데 여기서 리슨 함수 인자를 10으로 놓고 for문을 10번 반복 하셔서 문지기를 10개를 생성하셨습니다. 질문 : 최대대기수가 10이라는 얘기는 클라이언트가 10명이 접속 한다는 얘기 인가요? 그래서 문지기를 10개를 생성 해주셨는지 이게 맞다면 클라이언트 접속이 대략 1000명을 예상한다면 리슨 함수 인자로 1000을 넣어줘야 하나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
질문은 아닙니다만 devtools 동작이 안되는 경우
아무리 devtools 를 적용시켜봐도 리컴파일을 하고 새로고침을 해도 페이지 변하지 않길래 구글님에게 수소문 해본 결과 https://lejewk.github.io/springboot-devtool/ 이거대로 해보니 되네요. 혹시나 devtools 동작 안하시는 분들 참고하시라고 공유차원에서 올려봤습니다~
-
해결됨프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
vscode로 학습중인데 왜 문제가 발생한건지 모르겠어요
클래스에서 self 보면서 코드 작성하고 실행하는데 이부분에서 문제가 발생한다고 하는데 왜 발생을 한건가요? 선생님 강의중에서는 오류 발생한걸로 안보이는데
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Util Class의 GetOrAddComponent<T>(GameObject go) 함수에서...
항상 좋은 강의와 빠른 답변 감사드립니다! 제가 Util Class의 GetOrAddComponent<T>(GameObject go) 함수에서 where T : UnityEngine.Component 작성하시는 부분에서요!(5:07) GetComponent<T> 함수는 오류가 안뜨지만 AddComponent<T> 함수는 오류가 뜨길래 F12로 확인해봤더니 GetComponent는 Object클래스에 정의되어 있지만 AddComponent는 GameObject 클래스에 정의되어 있는것 까지는 확인을 하였습니다.. 하지만 왜 T를 부모클래스인 Object로 한정하면 안되고Component로만 한정해야 AddComponent를 쓸 수 있는건지는 와 닿지가 않아 질문드립니다.. 설명 부탁드립니다...!🙏
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
7장 실습 질문
7장 실습을 하면서 안되는게 있어서 질문을 드립니다. 사용자를 등록하고 코멘트를 등록했습니다. 코멘트를 등록하고 수정을 했을 때 수정된 내용으로 바로 반영이 되어야 하는데 그렇지 않습니다. 책에 있는 소스대로 치니까 getComment()를 부르는데 axios 통신하고나서 이 함수를 호출을 안하네요 왜 그런가요? ㅠㅠ const edit = document.createElement('button'); edit.textContent = '수정'; edit.addEventListener('click', async () => { const newComment = prompt('바꿀 내용을 입력하세요.'); if (!newComment) { return alert('내용을 반드시 입력하셔야 합니다.'); } try { await axios.patch(`/comments/${comment.id}`, { comment : newComment }); getComment(id); } catch (err) { console.error(err); } });
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
extension함수로 교체할 때
영상의 2분 경에 GetOrAddComponent()를 extension method로 추가하고 UI_Inven에서 item. GetOrAddComponent<UI_Inven_ Item>() 이렇게 호출 하잖아요? 함수 정의에서는 인자로 GameObject가 들어가있는데 이건 item이라는 GameObject인스턴스를 통해서, 그리고 함수의 적용 대상이 item이라서 인자를 안넣어도 되는 건가요?
-
미해결Objective-C 강좌 - 12개 앱 만들면서 배우는 iOS 아이폰 앱 개발
Received Actions 버튼이 안보이네요
Received Actions 버튼이 안보이네요
-
해결됨모던 자바스크립트(ES6+) 기본
디버깅 맨 처음부터 Script에 globalLet이 설정되어있습니다.
콘솔은 강의대로 찍혀있지만, 소스 디버깅 처음부터 Script 에 globalLet이 떠있습니다. 강의에서는 ( 16. let globalLet; ) 변수 선언이 실행되어야 Script에 설정되는 것처럼 나오는데 제 브라우저에서는 그 문장 실행 이전부터도 Script에 globalLet이 설정되어 있어서 혼란스럽습니다. 이것 역시 실행하기 전에 엔진이 한 번 훑었다고 생각하면 될까요...?