묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Practical Testing: 실용적인 테스트 가이드
예외 처리에 대한 rest doc 작성하기
안녕하세요!강사님 덕분에 테스트에 많은 관심이 생겨 개인 프로젝트에도 적용을 해보고 있습니다! Rest doc 작성 중 궁금한 점이 생겨 질문드립니다.API의 정상 응답이 아닌 예외 발생 시의 응답도 Rest doc으로 작성하고자 합니다.예를 들어 인증, 인가 관련하여 예외가 발생하는 경우가 있을 때 다음과 같이 생각했습니다.예외 케이스 별로 에러 코드를 상세하게 나누어 세밀한 응답을 전달하기 (ex. 아이디가 틀렸을 때 - 401A, 비밀번호가 틀렸을 때 - 401B, 아이디가 존재하지 않을 때 - 401C 등등..)공통 예외코드로 처리하기 (ex. 인증 실패 시 어떤 경우라도 401 코드 반환)위의 2가지 경우에 어떤 식으로 rest doc을 작성하는 것이 좋을까요? 1번 케이스의 경우는 특정 API 문서마다 함께 적는 것이 좋을 것 같긴 한데 2번 케이스의 경우는 프로젝트 전반적인 공통 예외처리라 별도의 문서 항목으로 1개만 작성하는 게 좋을 지 고민이 됩니다. 혹시 현업에서는 예외 발생 시 응답에 대한 문서도 작성하시는 지 궁금하고 1번, 2번 케이스에 대하여 어떻게 rest doc을 작성하는 것이 다른 인원과 소통하기 편할지 의견 부탁드리겠습니다! 감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프로젝트 빌드 및 어노테이션 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]pom.xml을 작성하였고, META-INF도 작성하였습디ㅏ. 이제 Member를 만들어서 Entity 어노테이션을 붙이려고 하는데, 어노테이션이 뜨지 않습니다. 또한 우측 하단에 계속 Scanning files to index라고 뜨는데.. 어떻게 된 건지 알 수 있을까요??META-INF 입니다.<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="javax.persistence.jdbc.user" value="sa"/> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <!--<property name="hibernate.hbm2ddl.auto" value="create" />--> </properties> </persistence-unit> </persistence> <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jpa-basic</groupId> <artifactId>ex1-hello-jpa</artifactId> <version>1.0.0</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <!-- JPA 하이버네이트 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>5.6.15.Final</version> </dependency> <!-- H2 데이터베이스 --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.200</version> </dependency> </dependencies> </project>pom.xml입니다. 자바 11로 진행중이며, 이에 맞게 hibernate와 h2 버전을 변경하였습니다. 우측 하단에 이런 식으로 계쏙 로딩도 되고요.. 왜그런걸까요??
-
해결됨스프링 프레임워크는 내 손에 [스프1탄]
29강. boardInsert 메서드 @ResponseBody 붙이는 이유
안녕하세요. boardInsert 메서드에 @ResponseBody를 붙이는 이유가 궁금합니다. insert 후에 리턴 값이 없는데 왜 @ResponseBody를 붙이는 건가요? callback 함수인 loadList 때문인가요? 감사합니다.
-
해결됨Windows 시스템 프로그래밍 - 기본
임계영역 기반 동기화 질문입니다.
안녕하세요. 시스템 프로그래밍 수업을 듣고 있는 수강생입니다. "임계영역 기반 동기화" 에서 질문이 있습니다. 해당 예제 코드는 ThreadFunc1과 ThreadFunc2가 경쟁적으로 SetString, GetString 하는 것을 CRITICAL_SECTION 으로 해결해보려는 예제로 인지했습니다. 그런데 main함수 초반에 hHandle에 ThreadFunc1쓰레드를 실행(_beginthreadex)하고 ::CloseHandle(hThread);를 했습니다. 저는 그래서 ThreadFunc1쓰레드가 종료되었다 생각하여 ThreadFunc1을 출력할 일이 없을거라 생각했습니다.하지만 실행결과는 ThreadFunc1과 ThreadFunc2이 랜덤으로 5번 출력되는데 왜 ThreadFunc1이 출력되는지 궁금합니다. 혹시 제가 간과한 개념이 있을까요??
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
dto vo 개념이 너무 헷갈립니다.
회원생성 부분에서 @PostMapping("/api/v2/members") public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request) { Member member = new Member(); member.setName(request.getName()); Long id = memberService.join(member); return new CreateMemberResponse(id); }CreateMemberRequest 가 dto라고 설명하셨는데회원가입시 json값은 값 변경이 없는데 vo가 아닌가요?
-
해결됨따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]
강의 리뉴얼 일정을 알 수 있을까요?
"따라하며 배우는 리액트, 파이어베이스"이 강의를 리뉴얼 예정이라고 하셨는데언제 완성이 될지 일정을 알 수 있을까요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
updatName 메소드 질문입니다.
안녕하세요 강사님, 강의 잘 듣고있습니다.강의에서 updateName 메소드를 domain에 작성하였는데 그 이유가 궁금합니다. 다른 기능은 userrepository의 메소드를 활용하는 것 같은데 수정 기능은 다른 이유가 궁금합니다.감사합니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
플립플롭의 1 cycle delay?
=================현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================20장 강의를 듣다 마지막 o_read 신호를 플립플롭에 넣어서 1cycle delay하신다고 설명하셨습니다.그것은 이해했는데 reset_n신호가 들어오면 1cycle delay 없이 바로 r_valid가 0으로 초기화되는 이유는 무엇인가요?? 여기서도 105번줄에서 i_run신호가 들어오면 num_cnt가 1 cycel delay 없이 바로 100이 되는 반면,107번 줄에서는 o_done 신호가 들어오면 1cycle delay후에 num_cnt가 0으로 초기화되는 것을 확인했습니다.왜 그런 것인지 알수 있을까요 선생님??
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
스태틱으로 만든 메서드 빨간줄 안사라짐
클래스 1번 GestureDetector( onTap: () { Schedule.onTap(context); }, ---------------------------------------------- 클래스 2번 class Schedule { static void onTap(BuildContext context) async { (데이터불러오기) return AlertDialog 입니다. 약간에 변형을 줘서 공부중인데 1번클래스에서 온탭 누르면 알림창은 문제 없이 뜨고있습니다 그러나 onTab 밑에 빨간줄이 영~신경쓰이는데 마우스 대보면 The method 'onTap' isn't defined for the type 'Schedule 이렇게 나오는데 관련 자료 부터 구글 다뒤져봐도 onTab에 빨간줄이 안사라집니다 방법좀 알려주세요 ㅠ
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
_Quiz_10 번 문제
저는 Customer 클래스를 선언할 때 name, age를 private 으로 선언하고 Getter, Setter를 이용하여 값을 접근할려고 짯습니다. 근데 map() 을 하는 과정에서 아래와 같은 오류가 떠서 setName()을 그냥 String 반환값으로 고쳐서 했더니 에러가 해결이 됐습니다. 근데 왜 이런 오류가 났는지 이해가 안갑니다 public class _Quiz_10 { public static void main(String[] args) { List<Customer> customerList = new ArrayList<>(); customerList.add(new Customer("챈들러",50)); customerList.add(new Customer("레이첼", 42)); customerList.add(new Customer("모니카", 21)); customerList.add(new Customer("벤자민", 18)); customerList.add(new Customer("제임스", 5)); System.out.println("미술관 입장료"); System.out.println("=================="); customerList.stream() .map(x->x.getAge()>=20 ? x.setName(x.getName() + " 5000원"):x.setName(x.getName()+ " 무료")) .forEach(System.out::println); } } class Customer{ private String name; private int age; public Customer(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
-
해결됨실습으로 배우는 선착순 이벤트 시스템
안녕하세요 선생님 질문이 있습니다
먼저 강의 잘 들었습니다.취준 중인데도 이해가 잘 돼서 좋습니다! 다름이 아니라 동시성 제어를 할 때 redis, kafka로도 해결할 수 있다는 것은 알겠습니다. 다만, Lock으로도 동시성 제어도 할 수 있지만 줄줄이 기다리기 때문에 선착순 쿠폰 같은 이슈에 대해서는 비관적 락을 걸 경우 100명까지 순차적으로 느리게 된다는 것으로 이해했는데 맞을까요? 제가 이해한 것이 맞다면 락을 사용하면 많이 느릴텐데 보통 어떤 경우에 락을 통해 동시성 제어를 하고, 어떤 경우에 카프카를 쓰시나요? 같은 경우라도 상황마다 다르겠지만.. 예시를 조금만 들어주실 수 있을까요? 잘 이해를 하지 못해서 질문 남깁니다감사합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-E 뮤탈리스크문제 질문있습니다
http://boj.kr/76d330363fe14462b380a7036a3434f7문제가 이해가 잘 가지않아 선생님의 코드를 보고 작성하였습니다여기서 궁금한부분이 bfs일경우일때 visited[][][]3차원 배열에 이미 들어가있는 값이 있으면 continue하는 조건인데 q에들어가는 원소가 추후에 들어오는 visited일 경우 같은 원소의 idx라고 하여도 dfs가 아닌 bfs인 이상 무조건 count되는 레벨의 갯수가 트리나 그래프로 따졌을때 depth 가 깊은 탐색순서가 되기때문에 visited가 원소가 있을때 이후에 들어오는 count는 무조건 기존에들어가있는 vistied의 원소보다 클 것이므로 해당조건만으로 문제를 풀수있는것인가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
finditems() 에러
'테스트 - 스프링 부트와 임베디드 모드' 수강 중에 ItemRepositoryTest를 h2를 모두 끄고 동작시켰는데강사님처럼 모두 성공을 뜨지 않고 finditems()에서 에러가 납니다.강의자료 초반에 데이터베이스에서 데이터가 보관되어 있어서 그렇다고 들었는데어떻게 해결해야하나요?? h2는 접속 종료한 상태입니다.
-
미해결스프링 핵심 원리 - 고급편
request 스코프 활용
스프링 핵심 원리 기본편에서 설명해주신 request 스코프를 사용하면 uuid가 유지되는 객체를 컨트롤러, 서비스, 레퍼지토리 로직에서 공유할 수 있을 것 같은데 이를 활용해서는 level 까지 포함한 로깅을 구현하긴 어려운걸까요? 지금 내용처럼 TraceId를 파라미터로 넘겨 받는 방식으로만 가능한건지 궁금합니다.
-
미해결Nuxt.js 시작하기
db.json 에 제공되는 imgUrl 서비스가 종료된듯하네요
img 가 안떠서 해당 url 검색해보니 placeIMG stopped serving i ages on June 30, 2023 이라고 합니다..비슷한 서비스로 url 수정해서 실습은 계속하긴하는데 git 소스코드 업데이트가 필요할것 같아서 말씀드려봅니다~
-
미해결처음 배우는 리액트 네이티브
expo init 에러
expo init mfp 를 실행했는데이런 에러가 나오네요 어떻게 해결해야할까요
-
해결됨[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
SentenceList를 intent.putExtra로 옮길 수 없을까요?
안녕하세요 좋은 강의로 도움 많이받고있는 학생입니다.똑같은 리스트를 또 선언해야하는 점을 보완하고 싶어서 시도해보고있습니다.intent.putStringArrayListExtra("list",ArrayList(sentenceList)) 와val sentenceList = intent.getStringArrayExtra("list")!!.toMutableList()로 시도해보니 intent.get에서 null값만 옵니다.List를 두 액티비티가 공유해서 사용할 방법이 뭐가 있을까요?MainActivity.ktpackage com.yndoo.goodwords import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.databinding.DataBindingUtil import com.yndoo.goodwords.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { private lateinit var binding:ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val sentenceList = mutableListOf<String>() sentenceList.add("시간이 흐른다고 미래가 되지는 않는다.") sentenceList.add("먼 과거에 몰두하지 말고 가까운 현재를 파악하라.") sentenceList.add("인생에서 가장 진귀한 것은 시간이다.") sentenceList.add("결혼에는 많은 고통이 있지만 독신에는 아무런 즐거움이 없다.") sentenceList.add("야구에 만약이란 없습니다. 만약이란 걸 붙이면 다 우승하죠.") sentenceList.add("지식은 사랑이자, 빛이자, 통찰력이다.") binding = DataBindingUtil.setContentView(this, R.layout.activity_main) binding.showAllSentenceBtn.setOnClickListener { val intent = Intent(this, SentenceActivity::class.java) //intent.putExtra("ㅇㅇ",ArrayList(sentenceList)) intent.putStringArrayListExtra("list",ArrayList(sentenceList)) startActivity(intent) } binding.goodwordTextView.setText(sentenceList.random()) } } SentenceActivity.ktpackage com.yndoo.goodwords import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.widget.ListView class SentenceActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_sentence) /* val sentenceList = mutableListOf<String>() sentenceList.add("시간이 흐른다고 미래가 되지는 않는다.") sentenceList.add("먼 과거에 몰두하지 말고 가까운 현재를 파악하라.") sentenceList.add("인생에서 가장 진귀한 것은 시간이다.") sentenceList.add("결혼에는 많은 고통이 있지만 독신에는 아무런 즐거움이 없다.") sentenceList.add("야구에 만약이란 없습니다. 만약이란 걸 붙이면 다 우승하죠.") sentenceList.add("지식은 사랑이자, 빛이자, 통찰력이다.") */ //val sentenceList = intent.getStringArrayExtra("ㅇㅇ")?.toMutableList() val sentenceList = intent.getStringArrayExtra("list")!!.toMutableList() Log.d("여기",sentenceList.toString()) //로그에 null찍힘 val myadapter = ListViewAdapter(sentenceList!!) val listview = findViewById<ListView>(R.id.sentenceListView) listview.adapter = myadapter } }
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈 11을 if~else 대신 swtich문으로 풀어도 똑같은 결과가 나오는데, 취사선택의 문제일까요??
package chap_11; public class _Quiz_11 { public static void main(String[] args) { //todo 사용자 정의 예외 클래스(extends Exception을 통해 가능) //todo 예외 객체 생성 메시지가 2개인 것을 보아, 클래스도 2개를 만들어야 할듯...? //todo 경우의 수가 3가지니까 if~else문으로 작성 int errorCode = 0; try { switch (errorCode) { case 0: System.out.println("상품 구매를 완료하였습니다."); break; case 1: throw new NotOnSaleException("상품 구매 가능 시간이 아닙니다."); case 2: throw new SoldOutException("해당 상품은 매진되었습니다."); default: throw new Exception("이외의 에러코드는 여기서 처리하였습니다."); } } catch (NotOnSaleException e) { System.out.println(e.getMessage()); System.out.println("상품 구매는 20시부터 가능합니다."); } catch (SoldOutException e) { System.out.println(e.getMessage()); System.out.println("다음 기회에 이용해주세요."); } catch (Exception e) { System.out.println(e.getMessage()); } } } class NotOnSaleException extends Exception { public NotOnSaleException(String msg) { super(msg); } } class SoldOutException extends Exception { public SoldOutException(String msg) { super(msg); } }위의 errorCode를 각각넣으면 퀴즈의 요구사항대로 정상적으로 출력이 됩니다. 또한, int errorCode = 99; 같이 default에 해당하는 다른 값을 넣어도 정상적으로 다음과 같이 출력이 되구요:제목과 같이 if~else문이나 swtich문으로 선택하는 것은 개인의 자유인가요? 아니면 특정 상황에 따라 다른가요?
-
해결됨Flutter 중급 3편 - 의존성 주입 가이드
데이터 추상화 문제
안녕하세요. 코드를 작성하다가 궁금증이 생겨 질문을 올립니다.사용자 입장에서 인터넷이 되나 안되나 비슷한 경험을 제공하려고 합니다. 아래 데이터 흐름을 예로 들겠습니다.뷰모델학교 디테일 정보 fetch use case학교 repository(interface fetch)remote data source - 학교repository확장 local data source - 학교 repository 확장 이런 상황에서 인터넷이 되면 4번에서 데이터를 가져오고 안되면 5번에서 가져오려고 합니다. 이럴때 인터넷이 되는지 안되는 지 판단하는 클래스는 use case 내 execute 안에서 하는 것이 옳은지 아니면 use case 와 data source 사이에 로컬 및 리모트 데이터 소스를 주입 받는 새로운 클래스를 새로만드는 것이 옳은지 아니면 다른 접근이 있는 지 궁금합니다. 또한 인터넷이 안되는 것 뿐만 아니라 인터넷이 되는 상황에서도 로컬의 값과 서버의 값이 같으면 로컬 데이터를 사용하도록 하고 싶은데 어디 클래스에서 어떤 방식으로(더티비트?) 구현하는 것이 좋을 지 궁금합니다. 감사합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
갑자기 '에러가 있습니다'라고 떠요!
원래 drawer 색상 변경하기 전에 스크롤컨트롤러 부분까지는 아무 문제 없었는데, 이제 futurebuilder안에 Scaffold를 넣고 나니까 restart 했을 때 '에러가 있습니다.'라고 뜹니다. 프로젝트상에는 에러가 하나도 없는 상태입니다. 혹시 몰라서 drawer 색상 변경 수정 전으로 코드를 돌려봐도 여전히 '에러가 있습니다.'라고 뜹니다. 정부 api를 받아오는데 문제가 발생한 경우인가요?api에서 에러가 발생하면 이 에러를 어떻게 확인할 수 있나요?