묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
배우면서 프로젝트 하면서 궁금하고 답답한게 있어서 질문 해봅니다..
하루종일 고민 해보았지만 답을 찾을 수 없어서 질문을 남깁니다. 지금 vue / springboot 를 사용하여 프로젝트 중인데요.. 본인인증 외부 모듈을 붙이는 과정에서 골치가 아프네요.. 상황은.. 1. vue에서 window.open으로 인증모듈 팝업 호출 (여기까지는 성공) 2. 인증모듈에서 본인인증을 마친후 인증모듈이 제공하는 데로 XXX.jsp 파일에 인증 결과 값을 받아옴( XXX.jsp는 프로젝트 내에 생성한 것이며, js로 받을 수는 없다고 하더라구요..) 2번에서 궁금한 점이.. jsp팝업에서 parent.opener ... document.form.XXX.vlaue = "가져온 인증 데이터" 와 같은 식으로 데이터를 매핑하고 self.close()로 창을 닫고 있습니다. 원래 계획은 어쨋든 인증 창이 닫히면서, 부모창(vue)의 함수를 실행하여 인증 데이터를 받아서 처리 할 예정이었는데요.. opener의 함수명을 적어도 없는 함수로 나오고, 그렇다고 vue의 watch가 작동하지도 않습니다.. 화면의 element에서는 값이 바뀌는데, vue가 관리하는 데이터(?)에서는 값이 변하지 않는 것 같습니다. 궁금한 점은.. 1.vue를 사용하지 않은 일반 jsp파일에서 부모창(vue)의 데이터나 함수에 접근 하여 실행 할 수 있나요..? 2. vuex를 사용하면 이러한 문제를 해결 할 수 있나요? (아직 vuex까지 적용하지 않았습니다....)
-
미해결퍼블리셔 취업을 위해 제대로 배워보는 html과 css, 그리고 웹표준
선생님 복사하실때
th복사하실때 마우스 조작을 안하신거 같은데 키보드로 선택해서 복사할 수 있는 단축키가 있나요?????
-
해결됨웹퍼블리셔가 알려주는 실무 웹사이트 따라만들기 Season1
table 그리기 관련 궁금한 점을 문의 드립니다..
바로 입력및 편집 가능한 table 을 그리는데.. input 을 여백이 없도록 td 와 붙이려고 하는데 잘 맞지를 않네요. 어떻게 해주어야 가능할까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
DTO 변환 시 우아한형제들은 어떻게 처리하시나요?
샘플에서 DTO는 생략하셔서 아쉽습니다. DTO 변환으로 modelmapper나 mapstruct 정도 쓰는것같습니다.물론 mapper 없이도 하시는것 같던데요. 우아한형제들은 mapper에 대한 고견이 어떠신지 매우 궁금합니다!~
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@Autowired EntityManager 세션 관리에 대해 질문 드립니다.
안녕하세요 김영한 선생님. 저번에 아크를 JPA에서 매핑 하는 방법에 대해 질문 드렸던 학생입니다. https://www.inflearn.com/questions/14583 저번 답변은 제가 가지고 있던 의문점을 많이 해소해 주셨습니다. JPA를 재미있게 공부할 수 있게 해주셔서 다시 감사드립니다.^^ 저번 질문에 이어서 질문을 달려다가 다른 주제인것 같아서 새로 질문 드립니다 :D Spring boot 2.1.7 에서 선생님이 주셨던 코드를 기반으로 JPA를 공부 하던 중 생긴 궁금증을 혼자서 해결하지 못했습니다.. `EntityManager`를 스프링으로부터 주입 받아서 사용하는 경우와, `EntityManagerFactory.createEntityManager()`로 생성하여 사용하는 경우에 트랜잭션(세션)의 범위(?)에 대한 질문입니다. 모든 FetchType은 LAZY로 설정 했습니다. `entityManager`는 스프링으로부터 주입 받은 상태 입니다. void selectPoint() { String jpql = "SELECT p FROM Point p"; TypedQuery<Point> query = entityManager.createQuery(jpql, Point.class); final List<Point> resultList = query.getResultList(); System.out.println(" ============================"); for (Point point : resultList) { final Member member = point.getMember(); System.out.println("member.getMemberId() = " + member.getMemberId()); System.out.println("member.getName()= " + member.getName()); } 예제 코드의 엔티티는 `Point`, `Member` 2개고, 관계는 아래와 같습니다. @ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "member_id")private Member member; 1. 위 코드를 기반으로 `selectPoint()`를 실행 시키면 `member.getName()` 시점에 select query를 할거라 기대 했지만, `member.getName()` 부분에서 Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session 에러가 발생합니다. ------------------------------------------------- void selectPoint() { EntityTransaction transaction = entityManager.getTransaction(); transaction.begin(); String jpql = "SELECT p FROM Point p"; TypedQuery<Point> query = entityManager.createQuery(jpql, Point.class); final List<Point> resultList = query.getResultList(); System.out.println(" ============================"); for (Point point : resultList) { final Member member = point.getMember(); System.out.println("member.getMemberId() = " + member.getMemberId()); System.out.println("member = " + member.getName()); } transaction.commit();} 2. 위 코드에서는 EntityTransaction 으로 직접 관리를 하고 실행 시켜 보면 `entityManager.getTransaction()`에서 Caused by: java.lang.IllegalStateException: Not allowed to create transaction on shared EntityManager - use Spring transactions or EJB CMT instead 에러가 발생합니다. ------------------------------------------------- 3. 그래서 `@Transactional` 어노테이션으로 실행을 시켜 보면 `member.getName()`에서 1번과 같은 에러가 발생합니다. @Transactionalvoid selectPoint() { String jpql = "SELECT p FROM Point p"; TypedQuery<Point> query = entityManager.createQuery(jpql, Point.class); final List<Point> resultList = query.getResultList(); System.out.println(" ============================"); for (Point point : resultList) { final Member member = point.getMember(); System.out.println("member.getMemberId() = " + member.getMemberId()); System.out.println("member = " + member.getName()); }} ------------------------------------------------- 4. 그래서 `EntityManagerFactory`를 주입 받아 아래와 같이 `EntityManager`와 `EntityTransaction`을 직접 관리 해보면 void selectPoint() { final EntityManager entityManager = entityManagerFactory.createEntityManager(); EntityTransaction transaction = entityManager.getTransaction(); transaction.begin(); String jpql = "SELECT p FROM Point p"; TypedQuery<Point> query = entityManager.createQuery(jpql, Point.class); final List<Point> resultList = query.getResultList(); System.out.println(" ============================"); for (Point point : resultList) { final Member member = point.getMember(); System.out.println("member.getMemberId() = " + member.getMemberId()); System.out.println("member = " + member.getName()); } transaction.commit();} 제가 기대했던 대로 `member.getName()`에서 select query가 실행 됩니다. ------------------------------------------------- 제가 스프링 쓰고 있으니까 2번의 결과는 OK. 4번도 OK. 궁금한 부분은 1, 3번인데 A. entityManager를 스프링으로 주입 받아 쓰는 1번 예제에서 왜 세션이 미리 종료 되는지 궁금합니다. B. 1. 번 예제에서 트랜잭션의 범위를 제가 지정해주지 않았으니 쿼리 하나 실행하고 알아서 트랜잭션 종료했다고 치면 그나마 OK. 그럼 `@Transactional` 어노테이션으로 범위를 명확히(?) 지정해준 3번의 예제는 왜 `selectPoint()` 함수가 끝나지도 않았는데 트랜잭션이 종료되어 `member.getName()`을 가져오지 못하는 걸까요ㅠㅠ 매 번 질문을 드릴 때 마다, 이제 혼자 해결 해야지 하면서도 답변을 너무 잘해주시니, 마약처럼 쉽게 끊질 못하겠네요.ㅠ
-
해결됨Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
git권한 부탁드립니다.
인프런닉네임: codingc인프런이메일: codingc@hanmail.netgithub: codingc@hanmail.net닉네임: codingc1
-
미해결모던 자바스크립트(javascript) 개발을 위한 ES6 강좌
로또 생성기 실습을 진행해봤습니다.
const SETTING = { name : "LUCKY LOTTO!", count : 6, maxNumber : 45 } function getRandomNumber(maxNumber) { const randomSet = new Set(); for (let i = 0; i < SETTING.count; i++) { let randomNumber; do { randomNumber = Math.floor(Math.random() * (SETTING.maxNumber - 1)) + 1; } while (randomSet.has(randomNumber)) randomSet.add(randomNumber); } return Array.from(randomSet).sort((a, b) => a - b); } console.log(SETTING.name); console.log(getRandomNumber(SETTING.maxNumber)); 피드백 사항이 있다면, 부탁드리겠습니다. 감사합니다!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
불변 객체를 만들때
단순 메소드 레벨에서 불변객체임을 알려주는 것 보다 더 명시적으로 객체를 관리하는 방법이 있을까요? org.hibernate.annotations.Immutable 로도 명시해주는 것은 어떤가요? @Immutable 어노테이션은 JPA API 스펙이 아닌 하이버네이트 구현체라 쓰기 망설여진다면 혹시 다른 더 좋은 방법이 있을까요?
-
미해결프로그래밍, 데이터 과학을 위한 파이썬 입문
파이썬과 MS sql 연동 관련해서 질문드립니다.
강좌와 관련되지 않은 내용이지만.. # pymssql 패키지 import import pymssql # MSSQL 접속 conn = pymssql.connect(host=r"(local)", database='mydb', charset='utf8') # Connection 으로부터 Cursor 생성 cursor = conn.cursor() # SQL문 실행 cursor.execute('SELECT * FROM 고객;') # 데이타 하나씩 Fetch하여 출력 row = cursor.fetchone() while row: print(row[0], row[1]) row = cursor.fetchone() # 연결 끊기 conn.close() 이와 같이 했을 때 deprecating warning 이라는 문구가 나옵니다. 이게 어떤 의미인가요?
-
해결됨남박사의 파이썬 기초부터 실전 100% 활용
12분 30초에 나오는 코드 질문있어요
prime_list = [False, False] + [True] * (num - 1)primes = []for i in range(2, num + 1): if prime_list[i]: for j in range(2 * i, num + 1, i): prime_list[j] = Falseprimes = [i for i in range(2, num+1) if prime_list[i] == True]print(primes) if prime_list[i]: for j in range(2 * i, num + 1, i): 여기서 prime_list에 i를 넣어주는거부터 이해가 안가요 답변 안올라와서 다시 올립니다.
-
미해결자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!
UI만드는것도 배워보고 싶은데 다음으로 어떤강의를 들으면 좋을까요?
강의를 모두 들었습니다. 좋은강의 감사합니다. 자바로 기능을 구현하는 것은 이제 알겠는데, 이번엔 UI도 만들어서 사용해보고 싶습니다. 예를들어 실시간으로 데이터를 받아서 분석하는 프로그램을 만들고 싶은데, 아무래도 2D 3D 그래프등으로 보여지면 훨씬 용이할테니까요. inflearn에서 제공하는 로드맵에는 다음 강의로 웹개발을 추천하던데, 웹개발은 제가 사용하려는 방향이랑 조금 다른것 같아서 이렇게 질문 드리게 되었습니다. 제가 잠정적으로 생각하는 제 학습 로드맵은 '기본강의' -> 'UI' ->'안드로이드' 요렇게 배워서 제 업무에 필요한 프로그램들을 깔끔하게 만들어서 컴퓨터로도 쓰고 앱으로 만들어서 실험 현장에서도 쓰고 하고싶습니다. 이런것을 학습하려면 다음 강의로 어떤 강의를 수강하면 좋을까요?
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
코드 질문
prime_list = [False, False] + [True] * (num - 1)primes = []for i in range(2, num + 1): if prime_list[i]: for j in range(2 * i, num + 1, i): prime_list[j] = Falseprimes = [i for i in range(2, num+1) if prime_list[i] == True]print(primes) if prime_list[i]: for j in range(2 * i, num + 1, i): 여기서 prime_list에 i를 넣어주는거부터 이해가 안가요
-
미해결지옥에서 온 Git
프롬프트에 branch를 표시하는 방법...
안녕하세요 , 강의 정말 잘 듣고 도움많이 받고 있습니다. 다름이아니라 영상을 보면 프롬프트에 계속해서 branch가 표시되고 있던데 어떻게 하면 그렇게 할 수 있는지요?
-
미해결React로 NodeBird SNS 만들기
User 의 프로퍼티가 대문자 소문자 바뀌어서나오는현상
Retweet할때 RETWEET_REQUEST요청으로 리트윗을 했을시에 리트윗이 게시글이 mainposts에 더해지게되는데요 이때 post의 Retweet의 User객체가 {id:1,userName:"제로초"} 이던녀석이 새로고침만하면 {id:1, UserName:"제로초"} userName프로퍼티가 UserName으로 바뀌어버립니다(앞글자가 대문자). 그래서 화면렌더링할떄 userName으로해놔서 안나오게되는데 왜 리트윗하고난뒤엔 멀쩡한게 새로고침해서 LOAD_MAIN_POSTS_REQUEST를통해서 가져올땐 UserName으로 가져오는지 잘모르겠습니다
-
미해결iOS12 앱 개발 퍼펙트 가이드
UISearchController 표시 관련 질문 드립니다.
override func viewDidLoad() { 에서 다음과 같이 호출하면 정상적으로 보이는데 let searchVC = UISearchController(searchResultsController: nil) searchVC.searchResultsUpdater = self 동적으로 보여주기 위해서 navigation bar item에서 action으로 호출해서 추가하려고 하면 화면에 콘트롤이 추가가 안 됩니다. @IBAction func actionShowSearch(_ sender: Any) { let searchVC = UISearchController(searchResultsController: nil) self.navigationItem.searchController = searchVC } 혹시 viewdidload할 때와 다른 부분이 있을까요?
-
미해결퍼블리셔 취업을 위해 제대로 배워보는 html과 css, 그리고 웹표준
오페라 에뮬레이터 받을수없오요 ㅠㅠ
브라우저로 통합됬던지 그런가봐요...
-
미해결React로 NodeBird SNS 만들기
질문있습니다.
const [term, setTerm] = useState(false); const onSubmit = useCallback((e) => { e.preventDefault(); if (password !== passwordCheck) { return setPasswordError(true); } if (!term) { return setTermError(true); } }, [password, passwordCheck, term]); {termError && <div style={{ color: 'red' }}>약관에 동의하셔야 합니다.</div>} 강의에 있는 코드에서 필요한 부분만 뽑아 봤습니다. 먼저 맨마지막 코드는 termError가 true일 때 화면에 표시되는 코드잖아요. 그래서 체크박스에 체크를 안하면 경고문이 뜨게하는거고요. term은 초기값이 false이고요. onSubmit에서 !term이면 !term의 값은 true인거고.. 그러면 term이 true일 때 setTermError가 true가 된다는 뜻인거고... 경고문은 term이 false일 때(체크박스에 체크를 안 한 상태) 나와야되는데 !term은 true인거잖아요. 그런데 체크박스를 체크 안 한 상태(false)에서 제출을 하면 정상적으로 경고문이 뜨는데 이해가 안가서 질문드립니다.
-
미해결정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
조건 질문드립니다.
안녕하세요! 선생님 문제 풀던 와중에 궁금한 점이 생겨 질문드립니다. while (rowStart <= rowEnd && colStart <= colEnd) { for (int i = colStart; i <= colEnd; i++) { result.add(matrix[rowStart][i]); } rowStart++; for (int i = rowStart; i <= rowEnd; i++) { result.add(matrix[i][colEnd]); } colEnd--; if (rowStart <= rowEnd) //조건 for (int i = colEnd; i >= colStart; i--) { result.add(matrix[rowEnd][i]); } rowEnd--; if (colStart <= colEnd) //조건 for (int i = rowEnd; i >= rowStart; i--) { result.add(matrix[i][colStart]); } colStart++; 2차원 배열을 순환 시키는 코드 부분에서, while문에 배열을 벗어나지 않게 조건이 있는데, 추가적으로 왜 조건을 주는 지 궁금해 졌습니다. 조건을 제외하고 배열 부여시 {{1,2,3},{4,5,6},{7,8,9}} 는 원하는 값이 나오지만 {{1,2,3,4},{5,6,7,8},{9,10,11,12}}는 [1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7, 6]와 같이 6이 하나 더 나옵니다. 왜 6이 한번 더 찍히는 지 고민해봤지만 생각이 꼬이기만 하여, 좀 더 설명을 부탁드리고자 질문드립니다 ㅠㅠ 감사합니다.
-
해결됨React로 NodeBird SNS 만들기
formData(req.body에 담기는)를 백단에서 아예 받지 못하는(or 인식하지 못하는) 문제
SequelizeValidationError: notNull Violation: Post.title cannot be null 제로초님 강의듣고 노드버드참고하면서 개인 플젝 하고 있는데요. 새로운 포스트(게시물)을 작성하기 위해 form에 있는 정보를 백단으로 전송하면 위와 같은 에러가 납니다. DB에 포스트 생성할때 title을 제일 먼저 넣어주기때문에 애초에 req.body.title에 값이 없는 것으로 보입니다. req.body에 담긴 값이 없는 것인지 아니면 담겼는데 백단으로 전송되면서 파싱, 인코딩 이런쪽에 문제가 있는 것인지 도무지 모르겠네요.. form태그는 따로 enctype 지정해주지는 않았고요. 저는 파일 업로드하는 부분이 없기 때문입니다. 혹시 몰라서 강의와 동일하게 enctype설정해도 딱히 문제에 변화는 없었습니다. 새로운 포스트 생성에 관한 saga코드도 노드버드와 동일하고, 백단 index.js 파일에서 미들웨어 실행 순서도 동일합니다. 그리고 아래와 같이 네트워크 탭보면 formData는 잘 담겨서 전송은 됩니다. 어떤 식으로 접근해서 해결해야할지 접근법이라도 알려주시면 감사하겠습니다.
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
scrapy 동적 웹페이지
안녕하세요 강의 정말 잘 보고 있습니다 ㅎㅎ 내용을 쉽게 설명해주셔서 바로바로 이해하면서 열심히 공부하고 있습니다. 다름이 아니라 scrapy에 selenium을 응용하여 동적 웹페이지를 크롤링 하려하는데 가이드 라인이 있으면 좋을거 같아서 이렇게 질문드려봅니다. selenium에서의 response를 scrapy에서 이용 할 수 있지 않을까 생각하는데 scrapy 에서 selenium을 이용하여 동적웹페이지를 크롤링 하는 정말 간단한 소스 하나만 예제로 볼 수 있을까요