묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[D.P.(DappProject)] 디앱 프로젝트(NFT 생성, NFT 구매 및 판매)
npm i @openzeppelin/contracts 실행 시 권한 에러
제목 그대로 강의영상을 따라하며 npm i 명령어로 zeppelin 을 설치하는 과정에 있습니다.명령어를 실행 시 해당 에러메세지와 함께 설치가 중단되는 현상이 나타납니다.이와같은 현상을 검색해 본뒤cmd 창을 관리자 모드로 열어 명령어를 재 실행 해 보아도 결과는 똑같습니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 개념이 잘 이해가 되지 않아서 질문입니다
세션 만들기//로그인 성공 처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션 생성 HttpSession session = request.getSession(); //세션 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 세션 지우기HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } 세션 확인하기HttpSession session = request.getSession(false); if (session == null) { return "home"; }쿠키는 클라이언트 측에서 저장하고 세션은 서버측에서 저장한다고 알고 있는데요. request 로부터 getSession을 통해 얻는 것이 무엇인지가 궁금합니다.request.getSessin()을 통해 얻는다는 것은 사용자의 요청으로부터 얻은 Session이고 여기에 setAttribute 하는 것은 서버에 데이터를 저장하는게 아니라 사용자의 요청에 저장을 하게 되는 것 아닌가요 ?? (setAttribute가 사용자의 request와 서버 모두 저장하는 것인가요?) session은 cookie와 같다면 서버 내부적으로 어디에 저장돼서 어떻게 확인할 수 있는 건지 궁금합니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[오타] 2-4. 피보나치 수열
안녕하세요, 김태원 강의자님!강의 잘 듣고 있습니다 :)채점 사이트에 오타가 있어 글을 남깁니다.환절기 건강 조심하시기 바랍니다 🙂☘️ [오타 내용]2-4. 피보나치 수열설명 1) '피보나키' 수열
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Failed to load ApplicationContext 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]package hellospring11.hellospring.service; import hellospring11.hellospring.repository.JdbcMemberRepository; import hellospring11.hellospring.repository.JdbcTemplateMemberRepository; import hellospring11.hellospring.repository.MemberRepository; import hellospring11.hellospring.repository.MemoryMemberRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import hellospring11.hellospring.service.MemberService; import javax.sql.DataSource; // 자바 코드로 스프링 빈 등록 // 실무에서는 이것 보다는 autowired를 사용 하는데 이방법은 리포지토리를 쉽게 변경을 할 계획이라서 일딴 이렇게 사용 @Configuration public class SpringConfig { private final DataSource dataSource; @Autowired public SpringConfig(DataSource dataSource) { this.dataSource = dataSource; } @Bean public MemberService memberService(){ return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository(){ //return new MemoryMemberRepository(); //return new JdbcMemberRepository(dataSource); return new JdbcTemplateMemberRepository(dataSource); } }package hellospring11.hellospring.repository; import hellospring11.hellospring.domain.Member; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.SimpleJdbcInsert; import javax.sql.DataSource; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; public class JdbcTemplateMemberRepository implements MemberRepository{ private final JdbcTemplate jdbcTemplate; // 생성자가 하나면 오토와이어드 생량 가능 public JdbcTemplateMemberRepository(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } @Override public Member save(Member member) { SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert(jdbcTemplate); jdbcInsert.withTableName("member").usingGeneratedKeyColumns("id"); Map<String, Object> parameters = new HashMap<>(); parameters.put("name", member.getName()); Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource(parameters)); member.setId(key.longValue()); return member; } @Override public Optional<Member> findById(Long id) { List<Member> result = jdbcTemplate.query("select * from member where id = ?", memberRowMapper(), id); return result.stream().findAny(); } @Override public Optional<Member> findByName(String name) { List<Member> result = jdbcTemplate.query("select * from member where name = ?", memberRowMapper(), name); return result.stream().findAny(); } @Override public List<Member> findAll() { return jdbcTemplate.query("select * from member", memberRowMapper()); } // 람다 함수로 만듬 private RowMapper<Member> memberRowMapper(){ return (rs, rowNum) -> { Member member = new Member(); member.setId(rs.getLong("id")); member.setName((rs.getString("name"))); return member; }; } }MemberServiceIntegrationTest 테스트 파일에서 코드를 실행하는데 계속 오류가 나옵니다.@WebAppConfiguration, @ContextConfiguration() 어노테이션을 추가 해보았는데도 오류가 발생하고 데이터베이스 서버는 실행되어 있습니다.
-
미해결
JPA Update 반영이 되지 않습니다.
안녕하세요! JPA를 사용해서 간단한 장바구니 프로젝트를 진행하고 있습니다.장바구니에 들어있는 아이템의 수량을 수정하는 테스트코드를 작성하고 있었습니다.수정할 장바구니아이템 자체는 수정이 되었지만, 장바구니에 들어있는 수정을 요청한 아이템은 수량이 반영되지 않았습니다.혹시 연관관계나 영속성 문제인가 싶어서 게시판<-> 댓글로 테스트코드를 짜보았는데, 게시판 <-> 댓글 테스트코드는 성공하였습니다. 혹시 어떤 문제인지 알 수 있을까요? 아래는 장바구니와 장바구니아이템 연관관계 입니다!@Entity @Table(name = "tbl_cart") public class Cart { @Id @Column(name = "cart_id", columnDefinition = "BINARY(16)") private final UUID id = UlidCreator.getMonotonicUlid().toUuid(); ... @OneToMany(mappedBy = "cart", fetch = FetchType.LAZY) private final List<CartItem> cartItems = new ArrayList<>(); protected Cart() { } private Cart(User user) { this.user = user; } public static Cart create(User user) { return new Cart(user); } public void addCartItem(CartItem cartItem) { cartItems.add(cartItem); } ... }@Entity @Table(name = "tbl_cart_item") public class CartItem { @Id @Column(name = "cart_item_id", columnDefinition = "BINARY(16)") private final UUID id = UlidCreator.getMonotonicUlid().toUuid(); @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "cart_id") private Cart cart; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "item_id") private Item item; @Column(name = "amount") private int amount; protected CartItem() { } private CartItem(Cart cart, Item item, int amount) { this.cart = cart; this.item = item; this.amount = amount; } public static CartItem create(Cart cart, Item item, int amount) { return new CartItem(cart, item, amount); } ... } 아래는 장바구니아이템의 수량을 수정하는 로직입니다!@Transactional @Override public void updateCartItemAmount(UUID userId, CartCommand.UpdateCartItemAmount command) { User user = userRepository.getUser(userId); Cart cart = cartRepository.getCart(user); cart.validateHasSameUser(user); CartItem cartItem = cartItemRepository.getCartItem(command.cartItemId()); cartItem.updateAmount(command.amount()); } 아래는 실패한 테스트코드 입니다!@DisplayName("장바구니 아이템의 수량을 변경한다.") @Test void 장바구니_아이템의_수량을_변경한다() { //given cartService.addCartItem(user.getId(), CART_아이템_요청); //when Cart cart = cartRepository.findByUserId(user.getId()) .orElseThrow(CartNotFoundException::new); CartItem cartItem = cartItemRepository.findByCartAndItem(cart, item) .orElseThrow(CartItemNotFoundException::new); CartCommand.UpdateCartItemAmount CART_아이템_수량_변경_요청 = CartCommand.UpdateCartItemAmount.builder() .cartItemId(cartItem.getId()) .amount(3) .build(); cartService.updateCartItemAmount(user.getId(), CART_아이템_수량_변경_요청); Cart actual = cartRepository.findByUserId(user.getId()) .orElseThrow(CartNotFoundException::new); assertAll(() -> { assertThat(cartItem.getAmount()).isEqualTo(3); assertThat(actual.getCartItems().get(0).getAmount()).isEqualTo(3); }); }
-
미해결스프링 시큐리티 OAuth2
소셜로그인 + Jwt 인증 어떻게 하나요?
소셜로그인 성공 이후 JWT 인증하는 방법을 알고 싶어 강의를 수강했습니다.소셜로그인과 JWT 인증을 어떻게 같이 쓰는지 예시를 알려 주실 수 있나요실무에 바로 적용하고 싶은데 강의에서 보여 소셜로그인, JWT 인증 강의만으론 소셜로그인 성공 이후 어떻게 토큰을 발급해 react 또는 모바일 네이티브 앱의 사용자을 로그인, 회원가입시키는지 모르겠네요.샘플 코드를 첨부해주시면 감사하겠습니다.
-
미해결비트코인 선물거래 자동매매 시스템(저자직강)
서버에서 python파일 돌리는 방법
안녕하세요 완성된 python 파일을 24시간 서버에서 돌리기 위해서는 어떻게 해야 하나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
복합키 다 대 일 단방향 연관관계 @ManyToOne @Fetch 설정 방법 문의 드립니다.
강사님 안녕하세요 ~ 아래 질문은 먼저드린 질문과 다른 질문입니다.아래 첨부이미지 확인해주세요 저는 ComCorpUser.bizCd / teamCd 와ComBizTeam 에 있는 복합키의CombizTeamPK 의 속에 있는 bizCd / teamCd 와@ManyToOne @Fetch 애노페이션 연결 고리를 걸어서다대일 단방향 연관관계를 맺고 싶습니다.ComCorpUser 클래스의 java 파일을 어떻게 만들어야 할까요?강사님이 직접 1개의 클래스 java 파일을 만들어서보여 주실 수 있을까요?
-
해결됨움짤로 빠르게 배우는 파이썬-아래아한글 자동화 레시피
hwp 문서 내의 개체를 파일명으로 찾는 방법이 있을까요?
먼저, 강의 감사합니다. 많은 도움이 되고 있습니다!그림파일로 입력된 원번호를 텍스트 원번호로 교체하고 싶습니다. 문서에 삽입된 그림파일의 파일명(개체 설명문에 나오는)으로 객체를 찾는 방법이 궁금합니다.
-
미해결주니어 기획자에게 꼭 필요한 업무 스킬과 용어를 한번에!
강의 연장 문의
안녕하세요, 강사님!좋은 강의와 자료 공유해주셔서 감사드립니다.다름이 아니라 회사 일과 강의를 병행하다 보니,신경을 쓰지 못하는 사이에 오늘이 강의 수강 마지막 날이더라구요 ㅠㅠ다른 분들 보니 질문 게시판에 비슷한 문의를 올리는 듯 해서혹시 강좌 수강 기간 연장이 되는지 여쭤보고 싶습니다.이제야 여유가 생겨서 꼭 완강하고 싶습니다.감사합니다.
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
HDL 14장 실습관련 질문 있습니다.
안녕하세요 맛비님 14장 8승기 설계 후 Simulation 과정에서 의문점이 들어 질문 드리게 되었습니다.1) 우선 simulation결과는 위와 같은데, r_valid, o_valid가 0으로 초기화(@100ns)는 되었는데 그 다음 rising edge부터 Z로 나오네요. 제 코드가 문제가 있어서 이렇게 나오나 싶어서 맛비님의 코드로 다시 돌려봐도 이렇게 나옵니다. 혹시 다른 질문 내용 중 문제점을 찾을 수 있나 확인해봤는데, high impedence Z는 signal이 연결되지 않은 거라고 답변해 주셨는데, 올려주신 코드대로 simulation을 돌렸는데 왜 이렇게 되는 건지 이유가 궁금합니다.2) Testbench의 Initial Block에서0부터 99까지의 수의 8승을 test하기 위하여 위 코드를 사용하셨는데,@(posedge clk);부분이 있는 이유가 뭔지 궁금합니다. Clock의 positive edge에서 반응하긴 하지만, 그 다음에 뭔가를 하지 않고 바로 다음 loop를 돌거나, for문을 탈출하는데, 결국 이 부분이 하는 역할이 뭔지 궁금합니다. @(posedge clk); 이후에 지시하는 바가 없기 때문에 결국 sensitivity list를 통해서 들어왔다 해도 없는거랑 똑 같은 것 아닌가요? 아니면 다음 negedge가 오기 전에 posedge까지 해당 loop를 유지하기 위해 있는 건가 싶기도 했는데 그런 의미인가요? 어떤 의미가 있는 부분인지 여쭤보고 싶습니다! 3) 강의 듣다가 문득 생각이 난 것인데, 왜 Linux(WSL)환경에서 설계를 하는게 중요한가요?결국 synthesis까지 가면 Linux기반의 EDA tool을 쓸 수밖에 없어서 그런건가요? script기반의 자동화에 용이해서 그런가요? 어떤 점에서 rtl 엔지니어들이 대부분 현업에서 Linux기반으로 작업을 하시는데 큰 이유가 되는 것인지 궁금합니다. 중요하다고 말씀은 하셨는데, 아직 체감이 되는 단계는 아니어서요.. 긴 글 읽어주셔서 감사합니다. 강의 항상 잘 듣고 있습니다 :)
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
recurvie (fractal), GUI, Server
안녕하세요.공부를 하다보니 조금 더 욕심이 생기네요. 다음에 기회되신다면 recurvise, GUI-Fxml과 scene builder, Server 쪽 주제로 강의 해주시면 감사하겠습니다. 자바를 공부하다보면 위의 주제는 꼭 나오더라구요. 조만간 자바 완전체 기다해겠습니다.^^건승하세요.
-
미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
급합니다 안드로이드 오류
안드로이드 스튜디오 오류 도와주세요 3시간넘게 알아보고있습니다..E/OpenGLRenderer: Unable to match the desired swap behavior.라는 에러가 맥북에서 뜨는데 팀원이 윈도우에서 작성한 걸 제 M2맥북에서 돌리니까 저러네요..안드로이드는 처음이라 잘 모르는데 아무리 검색해도 저거에 대한 정보는 거의 없어서요.. 도와주십쇼 ㅠㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
이거 코드는 같은데 이상하게 나와요
어떻게 해결하나요 아래분꺼 봐도 잘 모르겠어요...다른 폰트로 바꿨을 때 순서 맞게 잘 나오는게 있긴한데...이렇게 위 아래 간격이 커요
-
해결됨프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 1
CPU throttling이 뭔가요?
프론트엔드 개발자가 CPU Throttling을 어느정도 까지 coverage를 가지고 가야할까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
댓글을 달면 500에러가 뜹니다
로그인 후 게시물에 댓글을 달면 500에러가 뜨면서 실패합니다 ㅠㅠ 백엔드에는 comment.comment 없다고 에러 뜨는거같은데 어디가 문제인지 잘모르겠습니다지금까지 해본건 오타 찾아보고 대소문자를 바꿔보고 했는데도 안되서 결국에 질문하네요 ㅠㅠconst express = require("express"); const { Post, Image, Comment, User } = require("../models"); const { isLoggedIn } = require("./middlewares"); const router = express.Router(); router.post("/", isLoggedIn, async (req, res, next) => { try { const post = await Post.create({ content: req.body.content, userId: req.user.id, }); const fullPost = await Post.findOne({ where: { id: post.id }, include: [ { model: Image, }, { model: Comment, include: [ { model: User, // 댓글 작성자 attributes: ["id", "nickname"], }, ], }, { model: User, // 게시글 작성자 attributes: ["id", "nickname"], }, { model: User, // 좋아요 누른 사람 as: "Likers", attributes: ["id"], }, ], }); res.status(201).json(fullPost); } catch (error) { console.error(error); next(error); } }); router.post("/:postId/comment", isLoggedIn, async (req, res, next) => { try { const post = await Post.findOne({ where: { id: req.params.postId }, }); if (!post) { return res.status(403).send("존재하지 않는 게시글입니다"); //return을 붙여줘야지 send하고 밑에 json이 동시에 실행안됨 } const comment = await Comment.create({ content: req.body.content, PostId: req.params.postId, UserId: req.user.id, }); const fullComment = await Comment.findOne({ where: { id: comment.id }, include: [ { model: User, attributes: ["id", "nickname"], }, ], }); res.status(201).json(fullComment); } catch (error) { console.error(error); next(error); } }); router.delete("/", (req, res) => { res.json({}); }); module.exports = router;
-
해결됨웹 게임을 만들며 배우는 React
e.preventDefault()
e.preventDefault() 함수의 역할은 잘 알고있습니다만e.preventDefault()를 안썼을 때 setState가 작동되긴 하지만 그 결과가 떳다가 바로 사라지는 현상이 발생하는데그 현상의 이유가 궁금합니다.
-
해결됨프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 1
default export가 아닌 named export일 때 lazy사용법
ListPage컴포넌트가export default ListPage가 아니라 const ListPage = () => { ... }export {ListPage}처럼 한 경우에는 어떻게 import 해야 하나요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
강의를 듣다가 export default function () 관련 궁금점이 있습니다.
안녕하세요 멘토님.항상 강의 잘 보고 있습니다. 예전부터 문의드리려다가 자꾸 잊어먹던게 있었는데 이제서야 질문드립니다.export default function aaa() { const bbb = () => { ... } ... }위와 같이 강의를 들을 때 마다 왜 컴포넌트 부분의 최초 함수 선언 부분만 화살표 함수가 아닌 일반 함수 선언 방식으로 하시는지, 특별한 이유가 있는 것인지 궁금합니다. 감사합니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
if문 - 부정연산자
안녕하세요.If문 부정연산자 관련하여 문의 드립니다. 아래 식에서 !(부정연산자)가 추가되어 false -> true 로 되는 것까지 이해하였습니다.그럼 if (hour < 14 && morningCoffee == true) 라는 식이 성립되는데if (hour < 14 && morningCoffee == false) 이 식과 어떻게 동일한지 이해가 되지 않습니다.. hour = 10;boolean morningCoffee = false; if (hour < 14 && !morningCoffee) sout("아이스 아메리카노 +1")