묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티
handler를 커스터마이즈 하는거랑 accessDecisionManager를 커스터마이즈 하는것이 어떤 차이가 있나요?
완전히 같다면 왜 여러 방식이 존재하는건지 궁금합니다
-
미해결실습 UI 개발로 배워보는 순수 javascript 와 VueJS 개발
안녕하세요 총 두 가지 질문사항이 있습니다.
안녕하세요 총 두 가지 질문사항이 있습니다. 1. 매 영상마다 브랜치를 바꾸셔서 하는데 이렇게 작업을 하시는 이유가 궁금합니다. 2. 2-vue 수강시, 브랜치를 바꿔서 작업할 때마다, 2-vue의 models 폴더가 파일로 인식되고 , 그 내용은 ../../1-vanilla/js/models 라고 적혀져 있습니다. 또한, 2-vue의 style.css도 위와 같이 1-vanilla의 css파일 위치만 적혀져 있어서 늘 복사와 붙여넣기로 해결중입니다. 크게 불편함이 있는 것은 아니지만, 개발환경설치도 모두 완수했음에도 이런 차이가 나는 것이 궁금합니다. ps. 저는 git clone 을 통해서 파일들을 받았습니다.
-
미해결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이 한번 더 찍히는 지 고민해봤지만 생각이 꼬이기만 하여, 좀 더 설명을 부탁드리고자 질문드립니다 ㅠㅠ 감사합니다.