묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
case문 우선순위
안녕하세요다른 분께 남겨주신 if-else문과 case문의 차이에 대한 답변을 봤는데, case문은 우선순위가 없다는 말에 대해 혼란이 생겨 질문 남깁니다.기존에 verilog를 학습했을때, verilog의 case문은 C의 switch case문과는 다르게 각각의 조건에 break가 있는 것과 같다. 그래서 맨 위 조건부터 우선순위가 있다고 알고있었는데요.예를 들어 아래의 모듈의 시뮬레이션 결과로 sel=4'b0011인 경우에 out=a가 나옵니다. 따라서, case문에서 맨 위 조건부터 우선순위가 있다고 생각했습니다.module priorityencoder( input [2:0] a, input [2:0] b, input [2:0] c, input [2:0] d, input [3:0] sel, output reg [2:0] out ); always@(*) begin case(1'b1) sel[0] : out = a; sel[1] : out = b; sel[2] : out = c; sel[3] : out = d; default : out = 3'b0; endcase end endcase end endmodule그런데, 남겨주신 답변에 case문에는 우선순위가 없다고 하셔서 조금 혼란이 생겼는데..말씀하신 'case문에 우선순위가 없다'는 말은, 코드상의(=function상의 ) 우선순위를 말하는 것이 아닌합성에서 생기는 우선순위(?)가 없다는 말로 생각하면 될까요?(위의 예시 모듈을 합성하면 아래 그림처럼, if-else로 적으면 mux chain형태로 합성되고 case로 적으면 하나의 mux로 합성됨을 확인하긴했습니다..)그러면 이렇게 case문이 합성된 회로(위 그림의 아래의 회로)는 그럼.. function적으로는 우선순위가 있는데 형태는 우선순위가 없는(??)것.. 인건가요?
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
한개의 컴퍼넌트 안에 v-bind 와 v-on 설정이 가능하나요?
제목그대로 한개의 컴퍼넌트 안에 v-bind 와 v-on 설정이 가능하나요?한개의 컴퍼넌트 안에서 데이터를 부모에게 주고 부모데이터를 해당 컴퍼넌트로 전달이 가능한가요?
-
미해결웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩
인증서 설치하고 다 설정 제대로 되있는데 무한정 대기걸립니다.
강사님과 같이 파이어폭스에 폭스프록시 설치해서 동일하게 세팅하고 네이버 접속했는데 무한정 대기가 걸립니다. 인증서도 다운받아 신뢰가능한루트저장소에 설치된거도 확인했는데 무한정 대기가 안풀리네요ㅠㅠ 빠른 답변 주시면 감사하겠습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
hibernate.hbm2ddl.auto = create 했지만 FK 때문에 DROP에 실패
안녕하세요,hibernate.hbm2ddl.auto의 값을 create로 두고 실습을 진행하고 있는데첫 번째 질문은 1. create로 설정하고 수업을 따라하는 게 맞는지?두 번 째 질문은 처음 프로그램이 실행할 때 다음과 같은 에러메시지를 보여주면서 테이블 drop에 계속 해서 실패하는데 이게 기대하는 결과가 맞는지, 아니라면 어떻게 해결할 수 있는지 입니다. 에러메시지 : WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Category if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table Category if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString(SchemaDropperImpl.java:375) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings(SchemaDropperImpl.java:359) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata(SchemaDropperImpl.java:241) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop(SchemaDropperImpl.java:154) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:126) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:112) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:144) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at jpabook.jpashop.JpaMain.main(JpaMain.java:16) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "CATEGORY" because "FKJIP0OR3VEMIXCCL6VX0KLUJ03" depends on it; SQL statement:새로운 Entity를 추가하거나 Entity에 필드를 추가하는 실습을 할 때마다 일일히 직접 h2 콘솔에서 테이블을 몽땅 drop 해주지 않으면변경 사항을 확인할 수가 없는 상황입니다.감사합니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
axios 통신에서 문제가 생기는 것 같은데 정확히 파악하질 못하고 있습니다.
강의 잘 듣고 있습니다.그런데 계속 이렇게 axios 통신을 못하고 있더라구요...backend/server.js 파일은 강의를 보면서 그대로 진행했고올려주신 깃허브 코드와도 비교를 했습니다.근데 왜 안되는건지 모르겠네요...backend/server.js// 필요한 모듈들을 가져오기 const express = require("express"); const bodyParser = require('body-parser'); const db = require('./db'); // Express 서버를 생성 const app = express(); // json 형태로 오는 요청의 본문을 해석해줄 수 있게 등록 app.use(express.urlencoded({ extended: true })); // 테이블 생성하기 db.pool.query(`CREATE TABLE lists ( id INTEGER AUTO_INCREMENT, value TEXT, PRIMARY KEY (id) )`, (err, results, fileds) => { console.log('results', results) }) //DB lists 테이블에 있는 모든 데이터를 프론트 서베에 보내주기 app.get('/api/values', function (req, res) { //데이테베이스에서 모든 정보 가져오기 db.pool.query('SELECT * FROM lists;', (err, results, fileds) => { if (err) return res.status(500).send(err) else return res.json(results) }) }) // 클라이언트에서 입력한 값을 데이터베이스 lists 테이블에 넣어주기 app.post('/api/value', function(req, res, next) { // 데이터베이스에 값 넣어주기 db.pool.query(`INSERT INTO lists (value) VALUES("${req.body.value}")`, (err, results, fileds) => { if(err) return res.status(500).send(err); else return res.json({ success: true, value: req.body.value }); }) }) app.listen(5000, () => { console.log('애플리케이션이 5000번 포트에서 시작되었습니다.') })backend/db.jsconst mysql = require("mysql"); const pool = mysql.createPool({ connectionLimit: 10, host: 'mysql', user: 'root', password: 'johnahn', database: 'myapp' }); exports.pool = pool;frontend/src/App.jsimport React, { useState, useEffect } from 'react'; import logo from './logo.svg'; import './App.css'; import axios from 'axios'; function App() { useEffect(() => { // 여기서 데이터베이스에 있는 값을 가져온다. axios.get('/api/values') .then(response => { console.log('test') console.log('response', response) setLists(response.data) }) }, []) const [lists, setLists] = useState([]) const [value, setValue] = useState("") const changeHandler = (event) => { setValue(event.currentTarget.value) } const submitHandler = (event) => { event.preventDefault(); axios.post('/api/value', { value: value }) .then(response => { if(response.data.success) { console.log('response', response) setLists([...lists, response.data]) setValue(""); } else { alert('값을 DB에 넣는 데에 실패했습니다.') } }) } return ( <div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> <div className="container"> {lists && lists.map((list, index) => ( <li key={index}>{list.value}</li> ))} <form className="example" onSubmit={submitHandler}> <input type="text" placeholder="입력해주셔요~~~" onChange={changeHandler} value={value} /> <button type="submit">확인</button> </form> </div> </header> </div> ); } export default App;각각의 소스 파일은 이런 상태인데혹시나 어떤 부분이 문제인지 확인해 주시면 좋을거 같습니다
-
미해결
안드로이드 스튜디오 오류
기존에 존재하던 안드로이드 스튜디오를 삭제하고 최신버전 안스를 설치해 프로그램을 열었는데 에러가 두개 뜨더라구요. 구글링해서 방법이란 방법은 찾아봤지만... 참 어렵네요전문가님들 도와주세요!
-
미해결스프링 핵심 원리 - 기본편
[스프링핵심원리-기본편] 주문과 할인 도메인 테스트 관련해서 질문드립니다.
강의: 스프링 핵심 원리 - 기본편 (김영한님)질문내용: 테스트코드 중 서로다른 객체 참조로 인한 null값 오류<멤버레포지토리구현체 클래스>public class MemoryMemberRepository implements MemberRepository{ private Map<Long, Member> memberRepository = new HashMap<>(); @Override public void save(Member member) { memberRepository.put(member.getId(), member); } @Override public Member findById(Long id) { return memberRepository.get(id); } @Override public List<Member> findAll() { return new ArrayList<>(memberRepository.values()); } }<멤버서비스구현체 클래스>public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); @Override public void join(Member member) { memberRepository.save(member); } @Override public Member findOne(Long id) { return memberRepository.findById(id); } @Override public List<Member> findMembers() { return memberRepository.findAll(); } }<주문서비스구현체 클래스>public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository = new MemoryMemberRepository(); private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); System.out.println(memberId); System.out.println(member); int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } }<테스트코드>public class OrderApp { public static void main(String[] args) { MemberService memberService = new MemberServiceImpl(); //일단 회원가입 해야하니 필요 OrderService orderService = new OrderServiceImpl(); Long memberId = 1L; Member member = new Member(memberId, "Spring강의", Grade.VIP); memberService.join(member); Order order = orderService.createOrder(memberId, "iteamA", 10000); System.out.println("order = " + order); } }테스트코드 프로세스:1) 멤버서비스객체: 회원가입 (join메소드)2) 주문서비스객체: 회원조회하여 할인정책 적용하여 리턴질문은 다음과 같습니다!테스트케이스를 실행시,다음과 같은 NullPointerException이 발생하는데요,위의 멤버서비스와 주문서비스 클래스를 보시면 서로 다른 MemoryMemberRepository 객체를 생성하는 즉, 서로 다른 객체를 참조하고 있기 때문에 당연한 에러라고 생각합니다.(멤버서비스에서 회원가입을 진행한 레포지토리와, 주문서비스에서 조회하는 레포지토리가 다르기 때문)하지만, 강의에선 에러 없이 정상작동하는데... 놓친 부분이 없을텐데 무엇이 문제인 것인지지 여쭙고싶습니다 ㅠ(추가)다음과 같이 테스트케이스 메인메소드에서 동일한 객체를 참조하도록 멤버레포지토리 의존성주입을 하여 에러는 해결했습니다만, 강의에선 생성자주입없는 상태에서도 에러가 발생하지 않았는데 이유를 모르겠습니다 ㅠ의존성 주입의 이유중 하나로 다음과 같이 "동일한 객체를 참조하기 위함"도 있는 것인지 여쭙고싶습니다.public class OrderApp { public static void main(String[] args) { MemberRepository memoryRepository = new MemoryMemberRepository(); MemberService memberService = new MemberServiceImpl(memoryRepository); //일단 회원가입 해야하니 필요 OrderService orderService = new OrderServiceImpl(memoryRepository); Long memberId = 1L; Member member = new Member(memberId, "Spring강의", Grade.VIP); memberService.join(member); Order order = orderService.createOrder(memberId, "iteamA", 10000); System.out.println("order = " + order); } }
-
해결됨Flutter 앱 개발 기초
터미널 shared_preferences 문제 질문드립니다 ㅜㅜ
터미널에서 flutter pub add shared_preferences 입력 시 Expected to find project root in current working directory. 이런문구가 뜨면서 적용이 되질 않습니다.. 구글로 찾아보고 시도해봤는데도 안되네요
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
Authorization 질문드립니다.
22.08.26일 기준으로 강의를 듣고있습니다.index.js에서 Authorization: store.state.token, 과 같이 입력하였을경우 network에서의 token값이 test1234 혹으 빈값이 아닌 콘솔로 찍었던 token값이 그대로 출력됩니다. 강의에서는 안된다고 설명해주셨는데요 무엇이 맞는건가요..? (강의 코딩 외 추가 코딩은 하지 않았습니다)
-
해결됨배달앱 클론코딩 [with React Native]
토큰 프로세스 관련질문
안녕하세요 제로초님!강의를 듣던도중 궁금한 점이 생겨서 질문남깁니다!제로초님 강의를 기반으로 프로젝트를 만들고 있는데 카카오 로그인 구현에서 고민되는 포인트가 생겼습니다.https://github.com/react-native-seoul/react-native-kakao-login 라이브러리를 활용하여 login을 하면 accessToken과 refresh 토큰이 오고 getProfile을 하면 동의항목에 체크된 정보들이 앱으로 내려옵니다.여기서부터 어떻게 토큰기반으로 유저로그인을 해야할지 고민입니다..ㅠ기존 제로초님 강의들에서 대부분 passport를 활용하여 로그인 전략을 구상하시는데 카카오 로그인 같은 경우는앱에서 카카오로그인(native key 사용) -> 프로필정보(email, nickname 등) 받은 후 서버에 전달(kakao accessToken, refreshToken은 서버에 보낼 필요 없겠죠? 그렇게다면 이 토큰들은 처음에 유저 정보를 가져오기 위해서만 사용되고 db에 저장된 후에는 사용하지 않는건가요?)서버에서 email 확인 후 존재하지 않으면 user 생성 후 토큰 및 리프레시 토큰 전송, 이미 존재하면 바로 토큰 및 리프레시 토큰 전송이렇게 프로세스가 진행될거 같은데 이 프로세스가 적절한지 궁금하고 서버에서 어떻게 토큰을 만들어야하는지도 궁금합니다..(더미 파일에서는 jsonwebtoken을 사용중이신데 괜찮은지도 궁금합니다)
-
미해결
[전액무료,온라인진행,병행가능] 블록체인 기술사업화 실무 프로젝트
안녕하세요. 과학기술정보통신부 주관 지역ICT이노베이션스퀘어 확산사업으로 블록체인 기술사업화 실무 프로젝트 과정 진행중입니다. 온라인수강, 전액무료, 누구나 과정을 이수할 수 있으니 신청해보세요. 학생, 취업준비생, 재직자, 이직자 예정자분들 병행 추천드립니다! https://www.baeulang.kr/bbs/board.php?bo_table=BlockChain&wr_id=34&sca=%EA%B2%BD%EB%82%A8이외에도 블록체인 고급 프로젝트 과정도 있으니 참고하시기바랍니다. https://www.baeulang.kr/bbs/board.php?bo_table=BlockChain&wr_id=36
-
미해결따라하며 배우는 웹 게임
도표자료에서 5번째 문서가 주소가 4번째 문서랑 같은거 같아요 수정 부탁드리겠습니다
도표자료에서 5번째 문서가 주소가 4번째 문서랑 같은거 같아요 수정 부탁드리겠습니다
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
게시판 글쓰기에 editor(summer note)를 달아서 쓰고 있습니다.
입력하는 곳에 editor(summer note)를 달아서 쓰고 있습니다.editor에서 이미지를 첨부할때 server로 formData 전송하여 임시 장소에 저장한 다음그 결과를 json으로 받아 화면에 출력하고 있습니다.그리고 하단에 다시 input file을 하나 만들어서 대표 이미지로 업로드하여 쓰게끔 구성되어 있는데두가지를 동시에 하면 MulterError: Unexpected field 가 나는 현상이 발생하고 있습니다.editor에 이비지 첨부를 하지 않소 대표 이미지만 보내면 전송이 잘되는데두가지를 동시에 하면 오류가납니다.해결 방법이 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 인메모리 데이터베이스 눈으로 확인
강의를 들으면서 h2 인메모리 기능을 보고 매우 좋은 기능이라고 생각이 들었습니다.한편 "인메모리 h2 데이터베이스도 @Test를 이용해 삽입한 데이터를 눈으로 확인할 수 있을까?"에 대한 궁금증이 남더라구요.궁금해서 테스트해보았는데 데이터가 남지 않더라구요. 1. main의 application.yml에서 h2를 인 메모리로 바꾸고 서버를 실행하였습니다. (서버를 메모리상에서 계속 실행시켜두고 싶었습니다.)2. http://localhost:8080/h2-console에 들어가보니 테이블이 정상적으로 생성된걸 확인할 수 있었습니다.3.test의 application.yml애서 h2를 인메모리로 바꾸었습니다.->test의 application.yml의 ddl-auto를 none으로 하니 main에서 스프링을 실행시켜 서버를 구동하고 테이블을 만들었음에도 불구하고 Test는 서버를 찾지 못한다. 즉 main의 인메모리 서버와 Test의 인메모리 서버는 application.yml에서 이름을 동일하게 했음에도 작동을 안하는것을 보면 Test의 h2(인메모리)와 main의 h2(인메모리)는 독자적으로 작동한다.4.Test의 회원가입을 ROLLBACK을 false로 바꾸고 실행해 보았습니다. (이때 서버가 인메모리가 아닌 경우,즉 일반 TCP h2 서버에는 데이터가 테스트이후에도 남아있었습니다.)(Test의 ddl-auto는 create)->main(실제어플리케이션)와 @Test의 h2인메모리는 서로 다르기 때문에 ddl-auto값이 none이였으면 실패했을것이고 create이기때문에 테이블을 만들 수 있어 테스트가 실패하지않고 진행되었다.5.확인해보니 h2 인메모리 서버에는 데이터가 남아있지 않았습니다.->h2인메모리는 @Test와 main(실제어플리케이션)에서 각자 독자적으로 실행되기때문에 남지않는다.->h2를 인메모리로 할 경우 Test가 끝나면 삽입했던 데이터를 메모리에서 삭제해버리기때문에 ROLLBACK을 false로 해도 인메모리 h2 서버에는 데이터가 남지 않는다.즉 tcp h2서버를 사용할때 @Test에서 rollback을 false로 해두면 데이터베이스에 데이터가 삽입된걸 눈으로 확인 할 수 있지만 @Test에서는 애초에 main과 다른 h2인메모리를 사용하고 테스트가끝나면 @Test의 인메모리h2를 삭제해버리기 때문에 눈으로 확인할 수 없다라고 이해를 했는데 옳바른 이해일까요?한편으로 데이터가 데이터베이스에 삽입 삭제하는걸 눈으로 확인 하고 싶을 것 같은데 h2데이터 베이스를 인메모리로 두면 확인이 안될것 같아서 불안할 것 같더라구요. 만약 현업에서 테스트를 한다면 인메모리보다는 아예 개발DB를 두고 테스트를 하기때문에 이러한 고민은 안해도 되는게 맞는거겠죠?
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
@JosnIgnore
안녕하세요 강의 잘 듣구 있습니다.@JsonIgnore 에 대해서 질문이 있습니다.해당 어노테이션을 사용하면 클라이언트가 못보는 것 뿐이고 해당 도메인이 controller 나 dao 를 탈 때 여전히 값이 같이 넘어가는것으로 아는데, 현업에서 @JsonIgnore 을 그대로 필드에 이와같이 사용하는지, 아니면, 따로 Dto를 생성해서 전송하는지 궁금합니다.감사합니다.
-
미해결Kotlin으로 개발하는 Spring Boot Web MVC
문득 궁금해져서 한번 해봤던 건데요
var createdAt 쪽에 만약 빈값이 들어왔을 때 안내문을 내는 건 어떻게 할까 하고위에 address 쪽과 동일하게 NotBlank나 NotEmpty를 적었었는데 작동이 안되더라구요.따로 뭔가를 지정해줘야 하는 건가요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
BLoc 패턴이란?
플러터를 사용할때는 BLoC패턴을 이용한다 라는 글을 보았는데요. 수업에서 배우는 형태가 Bloc 패턴으로 개발하는것인지 궁금합니다.!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
용어 관련 질문입니다.
public int add(int a, int b){ ... }이렇게 메서드를 정의할 때 a와 b를 파라미터 내지는 인자라고 부르는데,@ResponseStatus(code= HttpStatus.BAD_REQUEST, reason = "잘못된 요청 오류")애너테이션에서 중괄호를 사용해 code = ... , reason = ... 데이터를 추가할 때 추가되는 요소들은 뭐라고 부르나요?code나 reason을 부르는 어떻게 불러야 하는지 궁금합니다.감사합니다.
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
질문드립니다.
Header부분에서 <span> {{ $store.state.username }}</span>와 같은 코드를 입력하면 로그인을 하였을 당시 username의 값이 상단에 노출이 되는데요 새로고침을하면 개발자도구에서도 username이 리셋이 됩니다. 이건 어떤 원리인지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DTO 사용 문의
안녕하세요 좋은 강의 감사드립니다. 한가지 여쭤볼게 있어서요강의에서는 DTO를 따로 정의안하고 엔티티로 모두 사용한것으로 보여지는데 실무에서도 DTO와 엔티티를 구분안하고 해도 되는 걸까요?찾아보니 엔티티는 setter를 사용안하는것을 권장하고DTO의 setter를 구현해서 대부분 기능적 처리하고 마지막으로 DB저장할때 엔티티를 사용하는 것 같아서요