묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
upload file의 타입지정은 어떻게 해야 할까요?
upload file 의 타입은 어떻게 지정하는게 좋을까요? 강의 정말 잘 듣고 있습니다.!! 감사합니다
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃 권한 부탁드립니다 !
인프런 아이디 : i4way.lje 인프런 이메일 : i4way.lje@gmail.com 깃헙 아이디 : i4way.lje@gmail.com 깃헙 Username : imjaeun 감사합니다 !
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
1. 세션 구현체(bean)이 Map을 가지는데, 이 부분은 stateful 한 구현이 아닌가요? 2. jsessionId로 세션 저장소에 접근 가능한가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용] 안녕하세요. 세션에 대한 질문이지만 다소 장황한 질문이 될 것 같습니다. 양해 부탁드립니다. 저는 중복로그인 방지 혹은 블락된 회원의 로그아웃처리를 위한 부분을 구현하고자 하였습니다. 중복 로그인을 방지하기 위해서는 세션을 두 개 가진 회원에 대하여 하나를 삭제해야 하며, 블락된 회원의 경우 즉각적으로 로그아웃을 시키려면 해당 회원의 세션을 서버에서 삭제해야 합니다. 이러한 고민을 통해 코드를 구현하는 과정에서 몇 가지 의문이 생겼습니다. 1. 세션 구현체(bean)이 Map을 가지는데, 이 부분은 Stateful 한 구현이 아닌가요? 김영한 선생님이 구현한 SessionManager를 보면, 회원들의 데이터를 `private Map<string, object> sessionStore = new ConcurrentHashMap<>();` 의 형태로 구현하였습니다. 저는 bean과 스프링 컨테이너를 생성함에 있어서 상태값이 존재하면 안된다는 것을 일종의 금과옥조로 여기며 구현해왔습니다. 만약 상태값이 필요로 하다면 final 을 사용했습니다. 가능하면 properties, enum을 사용하는 등 stateless 를 지키기 위하여 노력했습니다. 그런데 생각해보면, 필드에 map을 사용하는 것이, 어떤 스레드의 동작 결과로서 데이터가 남아서, 다른 스레드의 로직에 영향을 미칠 일은 없을 것 같습니다. 그렇게 생각하니, 로직만 잘 짠다면 빈을 설계할 때 항상 stateless 하게 설계할 필요가 없겠다는 생각이 듭니다. stateful bean 의 구현과 관련하여 제 나름의 정리가 필요했습니다. 그래서 자료를 찾기 위해 노력했지만, 검색 능력이 딸려서인지 관련한 블로그나 자료를 찾을 수 없었습니다. 그래서 이렇게 질문을 올립니다. 혹시 관련하여 현업에서 빈을 구현할 때, stateful 한 구현을 하는지, 만약 한다면 어느 수준과 어떤 규칙으로 구현하는지 궁금합니다. 만약 관련한 좋은 자료가 있다면 공유 부탁드려도 되는지 궁금합니다. 2. jsessionId로 세션 저장소에 접근 가능한가요? 특정 회원을 블락하고, 블락한 회원의 세션을 종료시킨다고 하면, 가장 좋은 방법은 톰캣에 있는 세션저장소의 세션을 즉각적으로 삭제하는 것이라 생각합니다. 모든 세션에는 jsessionId가 부여됩니다. 저는 세션저장소의 값을 jsessionId를 key로 하여 꺼내고 조작할 수 있는 방법이 있을 것이라 생각했고, 그 방법을 찾기 위하여 노력했습니다. 하지만 실패하고 말았습니다ㅠ. 세션 저장소에서 세션을 바로 삭제할 수 없기 때문에, 해당 세션을 가진 클라이언트가 접근할 때까지 기다리는 방법을 선택할 수밖에 없었습니다. 어드민이 특정 회원을 블락한 경우, 해당 회원의 데이터도 변경하고 동시에 DB에 블락회원리스트를 만들어 삽입합니다. 그리고 모든 회원이 웹 어플리케이션에 접근할 때, 해당 리스트에 자신이 있는지를 확인하였습니다(그 내용은 아래의 소스와 같습니다). 블락된 회원이 세션이 있는 상태로 웹 어플리케이션에 접근하면, 그때 세션을 조작하는 방식입니다. 회원 정보와 관련한 전체 테이블을 조회하는 것보다는, 블락된 회원 리스트를 조회하는 것이 그나마 리소스를 덜 쓴다고 생각하지만, 이것 또한 많은 리소스를 쓴다고 생각합니다. 그래서 다시금 질문을 드리자면, 세션 저장소에 jsessionId를 가지고 직접 조작하는 방법이 없을까요? 회원이 로그인을 하면 로그인시 사용한 jsessionId를 수집합니다. 해당 회원을 블락할 경우, 해당 jsessionId를 가지고 바로 session.invalidate()를 하면 제일 빠르고 적은 리소스를 사용할 것 같습니다. 만약 그러한 방법을 사용하지 못한다면, 보통 어떤 식으로 현업에서 특정 회원의 세션을 조작하는지 궁금합니다. 감사합니다. @GetMapping("/access") @ResponseBody public String access(HttpServletRequest request, HttpServletResponse response) { blockedUserService.clearExcpectedExpiredSession(sec); // 세션 유효기간을 초과한 웨이팅 리스트는 삭제한다. HttpSession session = request.getSession(); UserEntity userInSession = (UserEntity) session.getAttribute("user"); if(userInSession!=null) { String id = userInSession.getId(); if(blockedUserService.isBlocked(id)) { session.invalidate(); // 세션 삭제 blockedUserService.pop(id); log.info("블락된 회원. 세션 삭제 : {}", session.getId()); return "블락된 회원입니다. 세션이 남아있습니다. 세션이 삭제됩니다."; } } // ... 후략... } 마지막으로 데이타 다루는 기술 관련한 차후 강의는 언제 열리나요? 무척 기대하고 있습니다~~
-
미해결Vue.js + TypeScript 완벽 가이드
안녕하세요 깃헙 접근 권한 부탁드립니다.
안녕하세요. "Vue.js 끝장내기 - 실무에 필요한 모든 것" 강의에 이어 "Vue.js + TypeScript 완벽 가이드" 강의도 재미있게 잘 보고 있습니다. 다음 챕터 수강을 위해 vue-advanced 레포에 대한 권한 요청드립니다. 유익한 강의 항상 감사드립니다. github : chessive@gmail.com
-
미해결스프링 핵심 원리 - 기본편
빈 이름으로 조회
여기에 질문 내용을 남겨주세요. 안녕하세요 김영한 개발자님. 강의를 듣다가 궁금한 점이 생겨서 질문 남겨요. ApplicationContextBasicFindTest에서 빈 이름으로 조회 / 이름 없이 타입만으로 조회 등등의 부분에서 MemberService.class를 사용하는 이유가 있는건가요 아님 OrderService와 같은 클래스도 사용할 수 있는데 임의로 정하신건가요? 빈이 등록되어만 있다면 클래스 상관없이 조회할 수 있는걸까요? 항상 좋은 강의 감사합니다!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
서버에서 build 질문
리눅스 환경 즉 서버에서 npm run build를 할때 대문자를 소문자로 바꿔야하는 이슈가 있다면 처음 개발할때부터 소문자로 파일명을 지어서 프로젝트를 만들면 되는걸까요? 아니면 npm run build를 해놓고 서버에서 git pull만 한다면 상관은 없을 거같은데 빌드 커밋을 해줘야 하는 문제가 있는것 같고 제로초님은 현업에서 1. 파일명을 소문자로 지어서 개발한다, 2. build된 결과물을 push하고 pull 받는다. 어떠한 방식으로 하시는지 궁금합니다.
-
미해결
[수강제한]문의_2022년1월18일
안녕하세요. 수강제한 관련하여, 문의 드립니다. 어제 수강전문의들 달았엇는데, 오늘(01/18) 방문해보니, 수강제한 으로 걸려잇던데, 먼가요???? 과정명: DB 성능고도화 원리 및 SQL 튜닝 ① (SQLP 자격증 대비) 수고하세요
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Selective Search된 Region의 Feature Map 맵핑 질문
안녕하세요. 항상 양질의 강의 감사드립니다. Selective Search된 Region을 Feature Map에 맵핑시킨 뒤 SPP를 진행한다고 하셨는데, 그렇다면 RCNN과 같이 Selective Search로 나온 2000개의 Region을 모두 Feature Map에 맵핑시키는 것인가요??
-
미해결차량 번호판 인식 프로젝트와 TensorFlow로 배우는 딥러닝 영상인식 올인원
후반부 강의자료 부탁드립니다
안녕하세요. 강의 정말 잘 보고 있습니다! 후반부 강의 자료 메일로 보내주시면 감사하겠습니다. 이메일: dsrmj98@naver.com 감사합니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
Unhandled Runtime Error 질문입니다
아래는 에러 문구입니다.'REACT_APP_SC_ATTR'로 검색시 확인되지 않습니다1. package.json을 지우고 npm install을 다시 하는게 최선일까요?2. 제 폴더 내에서는 검색되지 않는 내용인데, 왜 이런 에러가 나는지도 궁금합니다. Unhandled Runtime Error TypeError: Cannot read properties of undefined (reading 'REACT_APP_SC_ATTR') Call Stack eval node_modules\styled-components\dist\styled-components.browser.esm.js (1:1130) Module../node_modules/styled-components/dist/styled-components.browser.esm.js file:///D:/2021/NodeBirdSNS/front/.next/static/chunks/pages/index.js (9943:1) Module.options.factory /_next/static/chunks/webpack.js (633:31) __webpack_require__ file:///D:/2021/NodeBirdSNS/front/.next/static/chunks/webpack.js (37:33) fn /_next/static/chunks/webpack.js (302:21) eval webpack-internal:///./components/AppLayout.js (13:75) Module../components/AppLayout.js file:///D:/2021/NodeBirdSNS/front/.next/static/chunks/pages/index.js (1568:1) Module.options.factory /_next/static/chunks/webpack.js (633:31) __webpack_require__ file:///D:/2021/NodeBirdSNS/front/.next/static/chunks/webpack.js (37:33) fn /_next/static/chunks/webpack.js (302:21) eval webpack-internal:///./pages/index.js (4:79) Module../pages/index.js file:///D:/2021/NodeBirdSNS/front/.next/static/chunks/pages/index.js (1623:1) Module.options.factory /_next/static/chunks/webpack.js (633:31) __webpack_require__ file:///D:/2021/NodeBirdSNS/front/.next/static/chunks/webpack.js (37:33) fn /_next/static/chunks/webpack.js (302:21) eval node_modules\next\dist\build\webpack\loaders\next-client-pages-loader.js?page=%2F&absolutePagePath=D%3A%5C2021%5CNodeBirdSNS%5Cfront%5Cpages%5Cindex.js! (5:15) eval node_modules\next\dist\client\route-loader.js (236:50)
-
미해결윤재성의 Google 공식 언어 Kotlin 프로그래밍 시작하기
Java 함수형 프로그래밍 방식 관련해 궁금한점이 있어 문의드립니다!
안녕하세요, 강의를 듣다가 헷갈리는 개념이 있어 질문드립니다. Java는 100% 객체 지향 프로그래밍 방식만 지원한다고 말씀주셨는데, Java 람다,익명class에서 일급 객체,순수함수,고차함수를 지원하는 것은 함수형 프로그래밍 처럼 사용할 수 있게 해주는 것이고, 결국에 class안에 작성해야함으로 함수형 프로그래밍 방식을 지원하지 않는다고 보는게 맞을까요? 제가 함수형 프로그래밍 방식에 대해 완전히 이해를 못해서 문의드립니다.
-
미해결홍정모의 따라하며 배우는 C++
포인터 주소 질문 드립니다.
안녕하세요 강의 도중 질문이 있어서 문의 드립니다. #include <iostream> using namespace std; int main() { int length; cin >> length; int* array = new int[length]; array[0] = 1; array[1] = 2; for (int i = 0; i < length; ++i) { cout << uintptr_t(&array[i]) << endl; cout << array[i] << endl; } delete [] array; return 0; } 위 코드에서 array[i]번째 주소를 출력할 때, array가 포인터기 때문에 &를 안붙여도 될 것 같아서 &를 안붙이고 출력해봤는데 array의 i번째 값이 출력되었습니다. 왜 선언할 때 array를 포인터로 선언했는데 array[i]는 배열에 할당된 값을 의미하나요?
-
미해결풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]
저만의 웹사이트로 바꿔보려고 내용들을 바꿔보았는데요
웹페이지 만들기 따라하면서 저만의 웹사이트를 만들어보려고 내용만 바꿔봤는데 디버깅하니까 사이트에 연결할 수 없음 localhost에서 연결을 거부했습니다. 라고 뜨는데 뭐가 문제일까요
-
미해결리눅스 입문 - 개념으로 탄탄히!!
프로그램 설치 질문
안녕하세요 버츄얼박스 설치과정에서 '지원되지 않는 아키텍처를 발견했습니다. VirtualBox는 amd64 아키텍처에서만 실행됩니다.' 라는 팝업창이 뜨는데 해결방법이 있을까요,,
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
크롤링 질문
안녕하세요. 강의 열심히 잘 듣고 있습니다.! 항상 강의가 끝나고 제 스스로 학습한 내용을 복습하는데요! html 태그와 select를 활용하여서 크롤링을 시도하고 있었습니다. 아래 이미지와 같이 초록색으로 표시한 부분의 태그와 클래스 관계를 이용해서 html 정보를 프린트 해봤는데 [] 이렇게 아무것도 뜨지 않습니다.. 분명 태그간 상하과계를 제대로 적었는데 말이죠... 신기한건 초록색 부분을 없애고 ul > li.-qHwcFXhj0 이렇게 입력한 뒤 select을 하면 데이터가 뜬다는 것입니다 ㅜㅠ 분명 초록색으로 표시한 부분도 있는데 왜 초록색 부분을 추가해서 select 하면 데이터가 뜨지 않는 걸까요?
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
게시글 등록시 title 빈칸일 경우 등록안됨
게시글 등록시 빈칸일 경우 등록이 안되게 하고 싶은데 잘 안되네요..ㅠ 회원가입때 처럼 binding.write.setonClickListener{ var isWrite = true . . . if (title.isEmpty()){ Toast.makeText(this, "글을입력해주세요", Toas.LENGTH_LONG).show() isWrite = false } } 라고 입력해보았지만 토스트 메시지는 뜨지만 게시글은 작성이 되네요ㅠ도와주세요ㅠㅠ
-
미해결팀 개발을 위한 Git, GitHub 입문
수업 잘 듣고 있습니다
git, github 를 공부하고자 생각만하다가 듣고 있는데 쉬운설명으로 이해가 잘됩니다. 수업후 복습을 하려고 합니다. kks99502@naver.com 로 ppt파일 요청드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 초기화
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 ~~ 저는 스프링부트 JPA 활용 수강 중인 학생 입니다. H2 실행이 안되길래 이것저것 눌렀습니다... ㅠ 그래서 강사님 처럼 "지정한 설정" 되있는 게 아니라 이렇게 됐습니다. 구글링 해서 찾아보았지만 도움을 받지 못해, 강사님에게 도움을 요청 합니다...
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
감사합니다!
너무 도움이 되는 강의였습니다ㅜㅜㅜ 지금 당장 이해하긴 어렵더라도 반복하다보면 이해하게 되리라 믿고 해보겠습니다 감사합니다~~!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
p 값을 Integer.MAX_VALUE 할 경우
안녕하세요. int p = Integer.MAX_VALUE; 라고 두고 코드를 짰는데 결과값이 -2147483648 0 1 2 1 0 1 2 2 1 0 이렇게 나옵니다. 게다가 정수 최대값으로 설정했는데 결과는 음수값으로 나오네요. 왜 그러는 걸까요?