묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@ModelAttribute
안녕하세요! // @PostMapping(value = "/items/edit") @PostMapping(value = "/items/{itemId}/edit") public String updateItem(@ModelAttribute("form") BookForm form) { Book book = new Book(); book.setId(form.getId()); book.setName(form.getName()); 1. @ModelAttribute를 안붙여도 되는데 강사님은 왜 붙이신건지 알고 싶습니다!! 2. url에 itemId가 form으로 넘어오는 상황인데 이때 url에서 itemId를 빼는 것이 더 올바른 건가요? 아니면 강사님 처럼 사용은 하지 않아도 관례상 넣어줘야 하나요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
reducers의 COMMET_REMOVE_SUCCESS
제가 집에서 강의외의 COMMET_REMOVE_SUCCESS부분을 작성하다가 문제가 생겨서 질문 남깁니다. 우선 back 부분을 잘 작동합니다. DB에서 데이터를 지우고 그걸 화면에 반영하는 SUCCESS부분을 작성하는데 문제가 있습니다. mainPosts 안의 특정 포스트를 찾아 그 안의 특정 댓글을 제거해야 해서 저는 COMMET_REMOVE_SUCCESS reducers 부분을 이렇게 작성했습니다. draft.mainPosts = [...state.mainPosts]; const post = draft.mainPosts.find((v) => v.id === action.postId); post.Comments = post.Comments.filter( (v) => v.id !== action.data.CommentId ); UNLIKE_POST_SUCCESS 를 아래 처럼 작성하셔서 비슷한 방법으로 작성을 하였습니다. const post = draft.mainPosts.find((v) => v.id === action.data.PostId); post.Likers = post.Likers.filter((v) => v.id !== action.data.UserId); 하지만 Cannot assign to read only property 'Comments' of object '#<Object>' 이라는 오류를 받았습니다. 제가 생각하기에는 같은 방법으로 코드를 작성한거 같아 Likers는 이 오류가 뜨지 않는 이유가 궁금합니다. 여러 방식으로 이 이벤트를 완성하려고 해봤는데... 하루 종일 완성이 안되어서 질문 남깁니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요 초보적인 질문일것 같은데..
rest 방식으로 회원 등록 api를 만들었는데 , 그럼 예를 들어 1편에서 했던 MemberController에서 회원 등록을 하는것은 필요 없는 과정인가요? 앞으로 rest api 방식으로 해서 html이랑 연결시키면 되는건가요?
-
해결됨Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
data가 바뀌는데 html 태그도 어떻게 바뀌는지 궁금합니다
splice 메서드로 배열 데이터를 삭제를 하는데 이걸 감지해서 어떻게 html 태그도 바뀌는지 궁금합니다. 전체적인 vue의 특성(?)을 아직 제가 이해를 못한것같아요
-
자바 ORM 표준 JPA 프로그래밍 - 기본편
선생님 JPA 질문 하나만 드립니다!!
삭제된 글입니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 데이터 베이스 관련 질문 드립니다
현업에서는 Spring과 h2 데이터 베이스 조합을 가장 많이 사용하나요?? h2 데이터 베이스 외에 다른 데이터 베이스를 사용해도 강의를 따라가기에 별 문제가 없나요..? 내용 관련된 질문이 아니라서 죄송합니다ㅠㅠ
-
미해결남박사의 파이썬으로 실전 웹사이트 만들기
import 문의 - 폴더위치 및 파일명, 함수명
안녕하세요 강사님. 현재 파일구조는 위와 같습니다. 각 파일별 import 규칙이 다른데, 관련하여 문의 드립니다. run.py - from main import app / 하위폴더인 main 폴더를 찾고, init의 변수명. init.py - from .common import login_required / 현재폴더의 common 파일을 찾고 거기서 함수명. from .filter import format_datetime / 현재폴더의 filter 파일을 찾고 거기서 함수명. from . import board / 여기서는 현재폴더의 파일명. from . import member / 여기서는 현재폴더의 파일명. board.py - from main import * / 현재폴더명의 모든것. 질문은 아래와 같습니다. 1. init.py - from .common import login_required ==> from . import common 으로 표기해도 되나요? 2. init.py - from . import board ==> from .board import * 으로 표기해도 되나요? 3. board.py - from main import * ==> from . import __init__ 으로 표기해도 되나요? 4. run.py - from main import app ==> from .main import app 으로 표기해도 되나요? 어떤 경우는 현재폴더의 파일명/함수명, 현재폴더/파일명, 현재폴더명/*, 하위폴더명/하위폴더의__init__의 변수명, 등등, from/import의 규칙 및 구조가 궁금해서 문의드립니다. 감사합니다.
-
해결됨실전! Querydsl
Maven 라이브러리 질문
안녕하세요! 강사님께서 출판하신 JPA책과 같이 보면서 복습하고 있습니다. Jpa 책 73페이지에 보면 hibernate-entitymanager 핵심 라이브러리를 pom.xml에 등록해서 사용하셨는데 현 강의에서는 spring-data-jpa -> hibernate-core만 있고 엔티티매니저는 없는데 버전이 올라가면서 core만 있으면 되는건지 Maven Repository에서도 못찾아 질문 올립니다. 감사합니다.
-
미해결자바스크립트 비기너: 튼튼한 기본 만들기
코딩시간 질문
혹시 foreach문으로는 어떻게 적용될 수 있나요? 도무지 for문 말고는 답이 나오질 않아서요ㅠㅠ // 배열 값을 담을 변수를 생성 var arr = [] // for문을 이용하여 빈 check 함수에 1~1,000,000 배열을 생성 var check = function(){ for(var i = 1; i <= 1000000; i++){ arr.push(i); //arr에 i의 값을 배열로 넣기 } } // check함수가 실행되는 시간 반환 var start = Date.now(); check(); var end = Date.now(); console.log("총 실행시간은 " + (end - start) + "입니다."); }
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
어느 부분이 오류인지 잘 모르겠습니다.
안녕하세요. 강의 감사합니다. 실습 중 동일하게 코딩을 했는데 오류가나서 질문드립니다. 아래는 제가 작성한 코드입니다. gun = 10 def checkpoint(soldiers): global gun gun = gun - soldiers print("[함수 내] 남은 총 : {0}".format(gun)) def checkpoint_ret(gun, soldiers): gun = gun - soldiers print("[함수 내] 남은 총 : {0}".format(gun)) return gun print("전체 총 : {0}".format(gun)) gun = checkpoint_ret(gun, 2) print("남은 총 : {0}".format(gun)) 오류가 어느 부분에서 났는지 질문드립니다.
-
미해결실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
실행 시 html 구문만 나와요.
안녕하세요. 맛보기 servlet를 실행했는데 브라우저에 아래 처럼 나옵니다. 무엇이 잘못된 걸까요??Served at: /testWebPjt1<html><head></head><body><p>Hello Servlet!!</p></body></html>
-
미해결파이썬 무료 강의 (활용편1) - 추억의 오락실 게임 만들기 (3시간)
게임 화면이 늦게 열려요
한번 봐주시면 감사하겠습니다 # 1. 모든 공을 없애면 게임 종료 (성공) # 2. 캐릭터는 공에 닿으면 게임 종료 (실패) # 3. 시간 제한 99초 초과 시 게임 종료 (실패) import os import pygame ####################################################################### # 기본 초기화 (반드시 해야하는 것들) pygame.init() # 화면 크기 설정 screen_width = 640 # 가로 크기 screen_height = 480 # 세로 크기 screen = pygame.display.set_mode((screen_width, screen_height)) # 화면 타이플 설정 pygame.display.set_caption("Game Name") # 게임 이름 # FPS clock = pygame.time.Clock() ####################################################################### # 1. 사용자 게임 초기화 (배경 화면, 게임 이미지, 좌표, 속도, 폰트 등) current_path = os.path.dirname(__file__) # 현재 파일의 위치 반환 image_path = os.path.join(current_path, "images") # 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, "character.png")) character_size = character.get_rect().size character_width = character_size[0] character_height = character_size[1] character_x_pos = (screen_width / 2) - (character_width / 2) character_y_pos = screen_height - character_height - stage_height # 캐릭터 이동 방향 character_to_x = 0 # 캐릭터 이동 속도 character_speed = 5 # 무기 만들기 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 # 공 만들기 (4개 크기에 대해 따로 처리) ball_images = [ pygame.image.load(os.path.join(image_path, "balloon.png")), pygame.image.load(os.path.join(image_path, "balloon2.png")), pygame.image.load(os.path.join(image_path, "balloon3.png")), pygame.image.load(os.path.join(image_path, "balloon4.png"))] # 공 크기에 따른 최초 스피드 ball_speed_y = [-18, -15, -12, -9] # index 0, 1, 2, 3 에 해당하는 값 # 공들 balls = [] # 최초 발생하는 큰 공 추가 balls.append({ "pos_x" : 50, # 공의 x 좌표 "pos_y" : 50, # 공의 y 좌표 "img_idx" : 0, # 공의 이미지 인덱스 "to_x" : 3, # x축 이동방향, -3이면 왼쪽으로, 3이면 오른쪽으로 "to_y" : -6, # y출 이동방향, "init_spd_y" : ball_speed_y[0]}) # y 최초 속도 # 사라질 무기, 공 정보 저장 변수 weapon_to_remove = -1 ball_to_remove = -1 # Font 정의 game_font = pygame.font.Font(None, 40) total_time = 100 start_ticks = pygame.time.get_ticks() # 시작 시간 정의 # 게임 종료 메시지 # TimeOut(시간 초과, 실패) # Mission Complete(성공) # Game Over (캐릭터가 공에 맞음, 실패) game_result = "Game Over" running = True while running: dt = clock.tick(30) # 2. 이벤트 처리 (키보드, 마우스 등) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: # 캐릭터를 왼쪽으로 character_to_x -= character_speed elif event.key == pygame.K_RIGHT: # 캐릭터를 오른쪽으로 character_to_x += character_speed elif event.key == pygame.K_SPACE: # 무기 발사 weapon_x_pos = character_x_pos + (character_width / 2) - (weapon_width / 2) weapon_y_pos = character_y_pos weapons.append([weapon_x_pos, weapon_y_pos]) if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: character_to_x = 0 # 3. 게임 캐릭터 위치 정의 character_x_pos += character_to_x if character_x_pos < 0: character_x_pos = 0 elif character_x_pos > screen_width - character_width: character_x_pos = screen_width - character_width # 무기 위치 조정 # 100, 200 -> 180, 160, 140, ... # 500, 200 -> 180, 160, 140, ... weapons = [ [w[0], w[1] - weapon_speed] for w in weapons] # 무기 위치를 위로 올림 # 천장에 닿은 무기 없애기 weapons = [ [w[0], w[1]] for w in weapons if w[1] > 0] # 공 위치 정의 for ball_idx, ball_val in enumerate(balls): ball_pos_x = ball_val["pos_x"] ball_pos_y = ball_val["pos_y"] ball_img_idx = ball_val["img_idx"] ball_size = ball_images[ball_img_idx].get_rect().size ball_width = ball_size[0] ball_height = ball_size[1] # 가로벽에 닿았을 때 공 이동 위치 변경 (튕겨 나오는 효과) if ball_pos_x < 0 or ball_pos_x > screen_width - ball_width: ball_val["to_x"] = ball_val["to_x"] * -1 # 세로 위치 # 스테이지에 튕겨서 올라가는 처리 if ball_pos_y >= screen_height - stage_height - ball_height: ball_val["to_y"] = ball_val["init_spd_y"] else: # 그외의 모든 경우에는 속도를 증가 ball_val["to_y"] += 0.5 ball_val["pos_x"] += ball_val["to_x"] ball_val["pos_y"] += ball_val["to_y"] # 4. 충돌 처리 # 캐릭터 rect 정보 업데이트 character_rect = character.get_rect() character_rect.left = character_x_pos character_rect.top = character_y_pos for ball_idx, ball_val in enumerate(balls): ball_pos_x = ball_val["pos_x"] ball_pos_y = ball_val["pos_y"] ball_img_idx = ball_val["img_idx"] # 공 rect 정보 업데이트 ball_rect = ball_images[ball_img_idx].get_rect() ball_rect.left = ball_pos_x ball_rect.top = ball_pos_y # 공과 캐릭터 충돌 처리 if character_rect.colliderect(ball_rect): running = False break # 공과 무기들 충돌 처리 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(ball_rect) : weapon_to_remove = weapon_idx # 해당 무기 없애기 위한 값 설정 ball_to_remove = ball_idx # 해당 공 없애기 위한 값 설정 # 가장 작은 크기의 공이 아니라면 다음 단계의 공으로 나눠주기 if ball_img_idx < 3: # 현재 공 크기 정보를 가지고 옴 ball_width = ball_rect.size[0] ball_height = ball_rect.size[1] # 나눠진 공 정보 small_ball_rect = ball_images[ball_img_idx + 1].get_rect() small_ball_width = small_ball_rect.size[0] small_ball_height = small_ball_rect.size[1] # 왼쪽으로 튕겨나가는 작은 공 balls.append({ "pos_x" : ball_pos_x + (ball_width / 2) - (small_ball_width / 2), # 공의 x 좌표 "pos_y" : ball_pos_y + (ball_height / 2) - (small_ball_height / 2), # 공의 y 좌표 "img_idx" : ball_img_idx + 1, # 공의 이미지 인덱스 "to_x" : -3, # x축 이동방향, -3이면 왼쪽으로, 3이면 오른쪽으로 "to_y" : -6, # y출 이동방향, "init_spd_y" : ball_speed_y[ball_img_idx + 1]}) # y 최초 속도 # 오른쪽으로 튕겨나가는 작은 공 balls.append({ "pos_x" : ball_pos_x + (ball_width / 2) - (small_ball_width / 2), # 공의 x 좌표 "pos_y" : ball_pos_y + (ball_height / 2) - (small_ball_height / 2), # 공의 y 좌표 "img_idx" : ball_img_idx + 1, # 공의 이미지 인덱스 "to_x" : 3, # x축 이동방향, -3이면 왼쪽으로, 3이면 오른쪽으로 "to_y" : -6, # y출 이동방향, "init_spd_y" : ball_speed_y[ball_img_idx + 1]}) # y 최초 속도 break else: # 계속 게임을 진행 continue # 안쪽 for 문 조건이 맞지 않으면 continue. 바깥 for 문 계속 수행 break # 안쪽 for 문에서 break를 만나면 여기로 진입 가능. 2중 for 문을 한번에 탈출 #for 바깥조건: # 바깥동작 # for 안쪽조건: # 안쪽동장 # if 충돌하면: # break # else: # continue # break # 충돌된 공 or 무기 없애기 if ball_to_remove > -1: del balls[ball_to_remove] ball_to_remove = -1 if weapon_to_remove > -1: del weapons[weapon_to_remove] weapon_to_remove = -1 # 모든 공을 없앤 경우 게임 종료 (성공) if len(balls) == 0: game_result = "Mission Complete" running = False # 5. 화면에 그리기 screen.blit(background, (0, 0)) for weapon_x_pos, weapon_y_pos in weapons: screen.blit(weapon, (weapon_x_pos, weapon_y_pos)) for idx, val in enumerate(balls): ball_pos_x = val["pos_x"] ball_pos_y = val["pos_y"] ball_img_idx = val["img_idx"] screen.blit(ball_images[ball_img_idx], (ball_pos_x, ball_pos_y)) screen.blit(stage, (0, screen_height - stage_height)) screen.blit(character, (character_x_pos, character_y_pos)) # 경과 시간 계산 elapsed_time = (pygame.time.get_ticks() - start_ticks) / 1000 # ms -> s timer = game_font.render("Time : {}".format(int(total_time - elapsed_time)), True, (255, 255, 255)) screen.blit(timer, (10, 10)) # 시간 초과했다면 if total_time - elapsed_time <= 0: game_result = "Time Over" running = False pygame.display.update() # 게임화면을 다시 그리기! # 게임 오버 메시지 msg = game_font.render(game_result, True, (255, 255, 0)) # 노란색 msg_rect = msg.get_rect(center=(int(screen_width / 2), int(screen_height / 2))) screen.blit(msg, msg_rect) pygame.display.update() # 2초 대기 pygame.time.delay(2000) pygame.quit()
-
미해결애플 웹사이트 인터랙션 클론!
익스플로러에서는 안돌아가나요?
익스플로러에서는 안돌아가나요? 만약안돌아간다면 어느부분에서 문제가 되는 것 일까요?ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의 순서 질문 드립니다!
스프링 입문자 인데 '실전!스프링 부트와 jpa 활용1-웹 애플리케이션 개발'로 시작 하라는 말씀이신가요?스프링 입문이 처음으로 듣는건지 순서인지 이해가 안가서요....
-
미해결실전 리액트 프로그래밍
7분20초 자꾸 이렇게 뜨면서 오류나오네요
처음에 오류떠서 워크스페이스 다 지우고 다시 깔아도 이렇게 나오네요 왜그런걸까요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
예외 발생 시킬때
문득 궁금한 점이 예외가 발생되어서 catch문으로 잡아서 처리하지 않으면 프로그램이 종료되는걸로 알고 있습니다. 여기서 중복 이름 일때 예외 발생시키고 어디서도 catch로 잡아 주지 않았는데 왜 프로그램이 종료되지 않는지 궁금합니다 ㅠㅠ
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
그리고 이렇게나오는데 ㅠㅠ;
(사진)
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
3분20초쯤에 터미털쪽 지우는방법이 어떻게되나요?
단축키용 ㅠ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
시퀀스 방식에 대해서 질문을 드립니다.
디비에 50개씩 올려놓고 메모리에서 1개씩 쓴다는게 무슨 말인지 이해가 안가서 ㅠㅠ 디비에서 메모리로 1개씩 가져온다는 말인가요? 아니면 메모리에 50개씩 쌓아놓고 1개씩 쓴다는 말인지..
-
해결됨실전 리액트 프로그래밍
totalCount는 어디에 사용하나요?
좋은 강의 만들어 주셔서 감사합니다! 강의 내용이 알찬 덕분에 기쁜 마음으로 완강할 수 있었어요 ㅎㅎ 강의에 과제로 남겨놓은 무한 스크롤을 구현하다가 궁금한 점이 생겼는데요. /history api의 응답으로 totalCount가 들어오는데요, 이 데이터는 어디에 사용하는 건가요? 지금 무한 스크롤에 더 이상 받아올 데이터가 있는지 없는지 검사하는 용도로 사용하고 있는데 이런 용도로 사용해도 괜찮을까요?