묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew.bat
파일이 없는대 어떻게 해야 하죠?
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
ubuntu ova 관련해서 질문 드립니다.
안녕하세요. 업무상 VMWare를 사용하고 있어서 VirtualBox로 사용하는데 제약이 있어서 ubuntu VM을 VMWare에 설치해서 진행하려고 하는데, 따로 ova 안에 구성해놓은 것들이 있으신가요? 또 ubuntu가 현재 최신버전으로 나왔는데, 최신버전으로 설치해도 강의를 진행하는데 문제가 없는지도 확인 부탁드립니다.
-
해결됨스프링 데이터 JPA
비동기 쿼리
안녕하세요 기선님 항상 좋은 강의 감사드립니다! 매 영상마다 질문을 남기는 것 같아 죄송하네요.. 비동기 쿼리에 대한 내용을 제 나름대로 요약해서 해석해보려 노력중인데 곡해가 있을까 걱정이 되어 이렇게 글을 남깁니다. 비동기 쿼리를 사용하는 것을 보니, 쿼리를 날리고 데이터를 받아오기 전까지 메인 쓰레드를 놀리지 않기 위해 비동기 쿼리를 사용하는 것으로 보입니다. 그런데 Future 을 사용하면 결국 get 으로 받아오는 작업에서 메인쓰레드가 블로킹이 되니까 Future 보단 콜백메서드를 사용할 수 있는 ListenableFuture 을 사용하는 걸 추천하신거라고 이해 됩니다. 그렇다면 여기서 조금 쓸모없는(?) 작업이긴 하지만 Future 의 get 을 받는 Thread 를 직접 구현해도 되겠다는 생각도 듭니다. 그리고 비동기 쿼리에 대한 테스트 코드 작성이 어려운 이유는 테스트의 특성상 위 테스트는 작업 전체가 한 트랜잭션이 될 테고, save 된 데이터를 가져오기 위한 쓰레드가 작업을 마치기도 전에 메인쓰레드가 끝나버리면서 하이버네이츠의 DB에 변화를 가져오지 않는 쿼리는 날리지도 않는 특성에 의해 insert 쿼리 조차 날라가지 않는 테스트가 되는 거구요. 의도적으로 flush() 를 통해 insert 를 할 수 는 있으나, insert 와 같은 트랜잭션 안에서 시작된 select 쿼리는 그 트랜잭션 내에서 insert가 된 데이터를 인지할 방법은 없게 된다는 설명으로 이해했습니다. 그렇다면.. 테스트를 위해서 @BeforeEach 를 통해 데이터를 먼저 집어넣은 상태로 동작을 확인할 수 있진 않을까 했지만, 이 작업자체도 DB의 변화를 일으키는 작업이 아닌만큼 하이버네이츠가 insert 를 날리지조차 않더군요. 그래서 위 코드에서 flush()를 추가하여 insert를 날렸지만.. 결과는 이렇더군요... 그런데 제 나름대로의 해석으로는 마지막 결과가 조금 이해가 되지 않네요.. 데이터를 집어넣었고 select 를 하는게 보이는데, size 는 0 이뜨고 근데 또 테스트는 성공하네요.. @BeforeEach도 결국은 한 트랜잭션안에서 동작하여 기존의 테스트 코드처럼 내부에서 Comment를 insert 하는 것과 동일한 작업인것인지.. 근데 또 테스트는 어떻게 성공한건지... 어디가 잘못된걸까요? 또 만약,, 제가 이상하게 이해한 부분이 있는 것 같다면 알려주시면 너무 감사하겠습니다!!
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
코랩으로 csv 파일 불러오는 것 질문드립니다.
맥북에 아나콘다 설치돼 있긴한데 데스크탑, 놋북에서 공부하려면 아무래도 코랩이 편해서 코랩 사용중입니다. 여하튼.. 제가 코랩 쓰는 데 csv 파일 불러오는 것에 대해 질문드립니다. 구글 검색해보니 1. 컴퓨터에 저장돼 있는 csv 파일 불러오기 2. 구글드라이브에 있는 csv 파일 불러오기 2가지 방법이 있는데 2번 구글 드라이브에서 csv 파일 불러오는 것을 못하고 있습니당 ㅜ from google.colab import drive drive.mount('/content/drive') 요걸로 계정 액세스하고 filename = '/content/drive/Colab Notebooks/titanic_train.csv' 얘로 불러오려하는데 file notfound 에러가 뜹니당. 경로가 잘못된 것 같은데 지금 csv파일 경로가 내 드라이브 - Colab Notebooks - titanic_train.csv 요렇게 되어있는데.. 잘못된 부분이 있을까요??아님 다른 곳에서 잘못한걸까요 ㅜ 구글 드라이브에서 csv 불러오는 것 설명 부탁드립니당! 참고로 1번 컴퓨터에 있는 csv 파일은 from google.colab import files myfile = files.upload() import io import pandas as pd 이렇게 한다음 pd.read 로 csv파일 잘 불러왔습니당.
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
출력 값 중에 소수점으로 되는건 이유가있나요? (sqrt)
감사합니다
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
리스트 강의에서 질문 있습니다.
변수를 아래와 같이 설정하고 나서 'Ace'의 index를 알고 싶다면 어떻게 사용할 수 있나요? e = [1000, 10000, ['Ace', 'Base', 'Captine']] print(e.index('Ace'))로 작성해 보았는데 에러가 뜨더라고요 어떻게 하면 될까요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
강사님, 다음 강의로는 AWS기반의 EKS, NLB, SSL, Nginx, Aurora for mysql을 활용한 쿠버네티스 강의를 만들어주시면 감사하겠습니다.
안녕하세요, 강사님 다음 강의로는 AWS기반의 EKS, NLB, SSL, Nginx, Aurora for mysql을 활용한 쿠버네티스 강의를 만들어주시면 감사하겠습니다. 그럼 부탁 드리겠습니다. 퀄리티 좋은 강의해주셔서 고맙습니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
Dockerfile와 Dockerfile.dev의 배포 관련 질문
docker-compose.yml 등을 본다면 아래와 같이 대부분 아래와 같이 dockerfile의 설정이 Dockerfile.dev로 되어있습니다. 다만 Dockerfile(NginX와 Compose 80등을 설정)가 배포를 위한 도커파일이라고 하셨는데 이를 별도로 지정하지 않아도 괜찮은 건가요? 결국 EBL에서 docker-compose up이 불리는 거라고 생각되는데 이때 Dockerfile.dev을 통해 빌드하는지 Dockerfile을 통해 빌드하는지 알고 싶습니다. version: "3" services: react: build: context: . dockerfile: Dockerfile.dev ports: - "3000:3000" volumes: - /usr/src/app/node_modules - ./:/usr/src/app stdin_open: true tests: build: context: . dockerfile: Dockerfile.dev volumes: - /usr/src/app/node_modules - ./:/usr/src/app command: ["npm", "run", "test"]
-
해결됨만들면서 배우는 HTML/CSS
질문입니다.
prev next 1 2 3 버튼이 안 나오길래 그냥 진행 했더니 동영상을 다 따라한 이후 나와야 할 슬라이드가 나오지 않고 이미지 1 2 3 이 수직으로 나타납니다.
-
미해결Javascript ES6+ 제대로 알아보기 - 초급
template literal 강의에서의 reduce 메소드
안녕하세요 강의를 듣다가 reduce 메소드를 사용한 코드에 대해 제가 잘 이해하고 있는지 한 번 확인해주실 수 있을까요? 아래 코드의 reduce 메소드가 안에서 어떻게 반복하는지 너무 헷갈려서 한 번 적어보았습니다... 1번 ' ' + 이 사과는 하나에 +(2000+' ').replace(/\d{1,3}(?=(\d{3})+(?!\d))/g, '$&,') 2번 2,000+ ' ' + 원이고, 총 +(1234567 + ' ').replace(/\d{1,3}(?=(\d{3})+(?!\d))/g, '$&,') 3번 1,234,567+ ' ' + 개를 구입하시면 총 +(2000*1234567).replace(/\d{1,3}(?=(\d{3})+(?!\d))/g, '$&,')이다. 마무리로 '원 이에요.'의 strs[strs.length -1]을 더해준다 이렇게 안에서 반복한다고 보면 되나요?
-
미해결윤재성의 처음시작하는 JavaScript Tutorials
질문입니다.
var tag_a=document.createElement("a"); 에서 "a" 라고 작성하지 않으면 지정된 페이지로 넘어가지를 않더라구요. 여기에서 "a"가 무엇을 의미하는지 궁금합니다.
-
미해결스프링 부트 개념과 활용
Failed to start component, 포트 사용 오류
지난 어느 강의에서 이미 8080포트를 사용 중인 프로세스를 조회하는 명령어로 찾아봤는데 8080포트를 사용하는 프로세스가 없어요; 그래서 차선책으로 properties 파일에서 다른 포트 번호로 지정해서(server.port=8090 등) 구동을 시켜봐도 바꾼 포트번호 또한 사용 중이라는 오류가 뜹니다 어떻게 해결해야할까요 ㅜㅜ *추가 내용 3달 전 어느 수강생 질문을 참고하여 server.ssl.key-alias의 value 값을 'spring' 대신 'tomcat'으로 바꾸었더니 정상적으로 동작이 됩니다.. 원래 keytstore 생성 작업 중 설정했던 별칭 spring으로 작성해야하는 거 아닌가요?
-
미해결iOS/Android 앱 개발을 위한 실전 React Native - Basic
state 사용에 관하여..
안녕하세요? 질문 답변에 항상 감사드립니다. ..^^ 실제 코딩을 하다보니 state 값을 control 하기가 참 힘드네요..ㅠㅠ 현재 회원가입화면에서 이메일주소와, 비밀번호, 확인 비밀번호를 입력받아 올바른 입력인지 체크하는 단계입니다. 그런데, 첫번째, 두번째 비밀번호 입력할때마다 첫번째, 두번째 비밀번호가 같은지 비교하여야하는데, 첫번째 비밀번호를 입력하여 setState 를 하고 바로 state값을 얻어와 2번째 비밀번호와 비교를 해야하는데. 바로 적용된 state 값을 안 넘어오고 이전의 state값이 넘어옵니다. (마지막 입력 글자는 state값으로 바로 안넘어옵니다.) 이럴때는 어떻게 해야하는지 참 난감합니다. TextInput onChangeText에서 입력값을 setState를 했는데도 다시 state값을 불러오면 바로 반영이 안되어 내부 멤버변수로 그냥 사용을 했습니다. 그런데, 이번에는 err_password 부분도 setState한 부분이 바로 반영이 되질 않습니다. 이것도 멤버변수로 그냥 사용을 해야 하는지, 아님 제가 모르는 부분이 있는지 꼭 답변 부탁드립니다. 소스코드: 클래스 선언 부분) class Join01_Start extends Component { _emailTextInput = '' _passwordTextInput = '' _passwordTextInput2 = '' constructor(props) { super(props) this.state = { emailTextInput : '', passwordTextInput : '', passwordTextInput2 : '', refEmail : React.createRef(), refPassword : React.createRef(), refPassword2 : React.createRef(), err_email : false, //이메일입력 체크 에러 내용 err_password: false, //패스워드입력 체크 에러 내용 err_password2: false, //패스워드입력 체크 에러 내용 password_msg : '', //패스워드 입력 현황 메시지 password2_msg : '', //패스워드2 입력 현황 메시지 isNextDisable: true, //다음 버튼 활성화여부 } } //패스워드 입력 Validation checkPasswordValidation = (passwordTextInput) => { let reg = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$/; if (reg.test(passwordTextInput) === false) { //잘못 입력시 this.setState({err_password : true}) } else { //에러없음 this.setState({err_password : false}) console.log('err_password false state setting') } console.log('check err_password', this.state.err_password ) this.displayErrPassword() } displayErrPassword = () => { console.log('dis1', this._passwordTextInput, this.state.err_password, this._passwordTextInput2, this.state.err_password2) if (this._passwordTextInput.length === 0 && this._passwordTextInput2.length === 0) { this.setState({password_msg : ''}) this.setState({password2_msg : ''}) } else { if (this.state.err_password) //비번1에 에러 있으면 this.setState({password_msg : '비밀번호가 올바르지 않습니다.'}) else {//비번1에 에러없으면 this.setState({password_msg : '사용가능한 비밀번호입니다.'}) } } } 소스코드: render() 함수 내부 {/* 비밀번호 */} <View> <View style={{ padding: 0, margin: 0, height: 50, flexDirection:'row', alignItems: 'center'}}> <TextInput placeholder="비밀번호(영문,숫자,특수문자 포함 8~12자리)" ref={(password) => {this.state.refPassword = password}} autoFocus={false} secureTextEntry={true} keyboardType='default' //ios에서 키패드 안열리면 command + K 누르면 다음부터 보임 textContentType='oneTimeCode' //yellow strong 패스워드 방지하기 maxLength={12} style={{paddingTop: 0, paddingBottom: 0 , width: '92%', height: '85%', borderColor: '#5378DF', borderBottomWidth : 1, fontSize: 16, textAlign: 'left', marginRight: 5}} value={this.state.passwordTextInput} blurOnSubmit={false} //키보드 깜빡임 방지 returnKeyType='next' onEndEditing={()=>console.log('pw1 endediting')} onSubmitEditing={() => this.state.refPassword2.focus()} onChangeText={(passwordTextInput) => { this._passwordTextInput = passwordTextInput this.setState({ passwordTextInput: passwordTextInput }) this.checkPasswordValidation(passwordTextInput)}} /> 선생님의 경험담을 간절히 기다립니다..
-
미해결예제로 배우는 스프링 입문 (개정판)
혹시 소스코드는 어디서 다운받나요??
소스코드는 어디서 다운 받을 수 있는지 여쭤봅니다.
-
해결됨[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
제이쿼리에서
앞전에 계층구조를 단순화 하기 위해서 body끝나는 지점에 <script>를 위치시키고, 제이쿼리에서 $(function() <--이것을 선언하지 않았는걸로 알고 있는데요. 만일 $(function()을 넣기 위해서는 <head>사이에 <script>를 넣어야 되는것 아닌가요? 궁금합니다.
-
미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
45. RecyclerView의 Adapter에서 viewBinding 문의
//ViewHolder 클래스inner class ViewHolderClass(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener { //val rowImageView = itemView.findViewById<ImageView>(R.id.rowImageView) //val rowTextView = itemView.findViewById<TextView>(R.id.rowTextView) var rowView = itemView as RowBinding val rowImageView = rowView.rowImageView val rowTextView = rowView.rowTextView override fun onClick(v: View?) { binding.textView.text = data1[adapterPosition] }}//항목 구성을 위해 사용할 ViewHolder 객체가 필요할 때 호출되는 메소드override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolderClass { //val itemView = layoutInflater.inflate(R.layout.row, null) val itemView = RowBinding.inflate(layoutInflater) val view = itemView.root val holder = ViewHolderClass(view) view.setOnClickListener(holder) return holder}viewBinding으로 Adapter를 변경했는데 앱이 강제 종료 됩니다. 에러 메시지 java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to com.example.recyclerview.databinding.RowBinding 소스 : https://github.com/pulmuone/RecyclerView
-
미해결실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
404에러
안녕하세요. 아래처럼 작성했는데 login.jsp에서 아이디/비번 입력 후 서밋 시 에러가 발생합니다. login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="loginCon" method="post"> ID : <input type="text" name="mID"><br> PW : <input type="password" name="mPW"><br> <input type="submit" value="login"> </form> </body> </html> ------------------------------------------------------------------------------------------ LoginCon.jsp package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/LoginCon") public class LoginCon extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); String mID = request.getParameter("mID"); String mPW = request.getParameter("mPW"); out.print("mID : " + mID); out.print("mPW : " + mPW); HttpSession session = request.getSession(); session.setAttribute("memberId", mID); response.sendRedirect("loginOK.jsp"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } ----------------------------------------------------------------------------------- loginOK.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% session = request.getSession(); out.print("memberId :" + session.getAttribute("memberId") + "<br>"); %> </body> </html> }
-
미해결웹 게임을 만들며 배우는 자바스크립트
focus(),value()
저 두 메소드 무슨의미죠?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
4:57 test.mv.db
그냥 h2 폴더에 새폴더로 하나 더 만들면 되나요? H2 폴더 들어갔는데 저게 안생기네요
-
미해결홍정모의 따라하며 배우는 C언어
질문입니다
while문에 getchar() 대신 c를 넣으면 실행이 안되는 이유가 무엇인가요? int c = getchar(); 로 선언을 했기 때문에 if문의 조건 부분 처럼 getchar() 부분을 c로 바꾸었더니 실행이 안되네요.