묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공 기획자 및 관리자를 위한 IT 필수 지식
SSL& HTTPS 정확히 잘 모르겠어요
안녕하세요 강의 잘 듣고 있습니다.간호사여서 그런지 관련 IT지식이 전무하여 여쭤보는점 양해 부탁 드립니다.다음과 같이 문의 드리니, 제가 이해한 바가 맞는지 확인 부탁 드립니다.1) SSL을 안하게 된 사이트를 운영할 경우, http://로만 나타나는게 맞는지?2) 위 1이 맞을 경우, http://로 접속하여 로그인하는 고객의 정보 들이 해킹 당할 수 있는 건지?3) 결국 해킹을 막기 위해서는 반드시 SSL이 필요한 것인지?4)SSL이 되면서 인증서는 못받을 수도 있는건지?5) SSL 인증은 누가 해주는건지?ㅠㅠ 어느 기관에 신청을 해서 사는건가요? 6)SSL이 되면 인증서는 자동 발급되는건지? 누가?7) SSL인증을 받은 모든 url사이트는 https//로 봐도 되는건지?8) 그럼 https://는 전혀 해킹 리스크가 없는 것인지? 감사합니다
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
서비스 운영 중에 @MappedSuperclass 확장 가능 여부
안녕하세요.@MappedSuperclass 어노테이션을 사용하는 BaseEntity 클래스는 아래와 같은 필드를 갖고 있습니다.CREATEDBY CREATEDDATE LASTMODIFIEDBY LASTMODIFIEDDATE여기서 궁금한 점이 하나 생겼는데요.만약 처음에 100개의 클래스 중 100개 클래스 모두가 BaseEntity 클래스를 상속받아서 공통 필드를 사용하고 있습니다.그런데 운영중에 100개 중 50개의 클래스에서만 사용하는 공통 필드가 추가되면 이런 경우에는 어떻게 처리하면 좋을까요?자바에서 상속은 1개만 할 수 있어서 고민이 됩니다.50개의 클래스에 노가다로 필드를 입력해야 좋을지,,
-
미해결
38강 H2 데이터베이스 연결 질문
안녕하세요 강의 잘 듣고 있습니다! 강의를 듣던 중 막히는 부분이 있어서 질문드립니다.active 를 local 로 설정한 후 홈페이지에서 목록을 확인했더니 기존 MYSQL의 유저 목록이 그대로 화면에 보여집니다. 인텔리제이 무료 버전이라 강의에서 보여주신 profile 설정법이 아닌 add VM Option에서 -Dspring.profiles.active=local 을 설정해주는 식으로 profile을 설정했습니다. 그리고 다른 문제점은 H2 홈페이지에서 Connect를 하니 이런 메세지가 출력됩니다.Database "mem:library" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-214] 90149/90149 (Help)해결법이 있을까요...?? H2 데이터베이스는 따로 설치를 해야되는건 아닌건가요??
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Agora API 프로젝트 삭제하는 방법
안녕하세요! 강의대로 Agora 사이트에서 프로젝트를 생성했습니다. 그후 실수로 app id를 노출하게되어 해당 프로젝트를 삭제하고 새로운 프로젝트를 생성하고 싶은데, Create 버튼은 있으나 삭제 버튼이 보이지 않아 질문 드립니다.프로젝트를 삭제하는 방법을 알려주시면 감사하겠습니다!
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
단락 회로 평가
단락 회로 평가에서 isVisible이 true이면 반드시 뒤에 컴포넌트가 렌더가 되는데 왜 그럼 컴포넌트는 항상 true인가요?근데 원래가 && 연산자는 앞 뒤 모두 true여야 true인데 이지비지블이 true면 왜 뒤에 컴포넌트는 항상 true인지 궁금합니다?
-
미해결만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)
Error: Illegal url for new iframe
강사님 안녕하세요:)구글 계정 로그인을 구현하다가 제목과 같은 에러가 발생했습니다(구글로그인 버튼 클릭시).팝업을 열기 위한 url이 잘못되었다고 나오는데 어느 부분이 잘못되었는지 감이 안잡히네요ㅠ.env에 있는 내용을 next.config.js에서 export했고 FirebaseClient에서 FirebaseCredentials로 잘 매칭한 것 같은데 이상하네요..어떻게 접근하면 좋을까요.??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
string에서 "="과 "==" 과정이 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님! 저는 기존에 다른 언어로 코딩테스트를 준비하다가 큰돌님 강의로 C++로 언어를 바꾸고 다시 공부를 하고 있습니다.자바에서는 String에 temp = s와 같이 작성하면 temp에 s의 주소값이 넘어가게 되고 temp를 어떻게 바꾸던 s도 함께 바뀌게 되어 어떤 로직이든 temp==s는 참이 되는데C++에서는 string 타입에서 =과 ==이 어떻게 동작하는지가 궁금합니다. 배열에서 배열이름을 주소값으로 사용하는 것처럼 string도 변수명이 첫요소의 주소값인가 생각했는데 코드가 동작하는걸 보면 아닌 것 같아서 어떻게 동작하는지 질문드리고싶습니다.좋은 강의와 자료를 제공해주셔서 감사합니다.
-
해결됨설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
Verilog 문법 관련 질문입니다.
안녕하세요! Verilog 문법 관련 질문드립니다.!always @(a, b, sel) begin if (sel) op = a; else op=b;end이런 형태의 Code가 Latch를 유발할 수 있는 Code인가요? if문 혹은 case문에서 조건을 따질 때, x 혹은 z가 condition으로 입력되는 경우 Latch가 생성되지 않도록 합성되는지 궁금합니다. (위 코드에서 op=b가 실행되는지 궁금합니다. )
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
트랙잭션 전파 구현에 대해서 문의 드립니다.
안녕하세요. 강의 항상 잘 보면서 많은 도움 받고 있습니다.트랜잭션 전파 구현에 대해서 질문이 있어서 질문 드립니다. 트랜잭션 전파 활용 강의를 보면 예제로 MemberService에서 MemberRepository와 LogRepository에 각각 함수를 실행하고 MemberService, MemberRepository, LogRepository에 모두 @Transactional을 사용해서 하나의 물리 트랜잭션으로 묶어주고 만약 MemberRepository에서 에러가 발생하면 LogRepository도 rollback이 되지 않는거는 이해를 했습니다.제가 프로젝트를 하면서 구현을 하다가 이 부분에 의문이 생겨서 문의 드립니다.예를 들어서 제가 회원이 가입을 하면 가입 처리, 인사 메시지 발송, 포인트 지급에 대한 동작을 하려고 하는데 역할 분리를 위해서 각각 MemberService, MessageService, PointService에서 해당 동작을 처리하도록 만들었습니다. #MemberController @Transactional??? public MemberResponse register() { memberService.store(); messageService.send(); pointService.store(); } #MemberService @Transational public Member store() { #가입처리 } #MessageService @Transactional public void send() { #메시지 발송 #발송 } #PointService @Transactional public void store() { #가입 포인트 지급 }위와 같은 방식으로 처리를 하려고 하고 하나의 과정에서라도 문제가 있다면 전부 rollback을 시키려고 합니다. 여기서 의문점은 MemberService, MessageService, PointService를 호출하는 Controller에서 Transactional을 선언하는게 맞는건가? 싶어서 문의 드립니다.이 구조에서라면 Controller에 Transactional을 선언하는게 맞을 것 같은데 다른 예시나 인터넷에 찾아봐도 Controller에서 Transactional을 사용하는 예시를 찾지 못 했습니다.아니면 어떤 방식으로 구현하면 좋을지 답변 부탁드립니다.감사합니다!
-
미해결실전! 스프링 데이터 JPA
안녕하세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]갑자기 궁금한 부분이 생겼는데, 배달의 민족은 웹이 아니라 앱으로 동작하잖아요. 그럼 api 개발을 위주로 하시는 거라고 생각이 되는데 스프링 웹이던 아니면 앱을 이용하는 개발이던 개발하는 부분에 관해서는 큰 차이가 없는 건가요? 스프링으로 개발만 할 줄 알면 필요한 곳에 그대로 쓰기만 하면 되는 건가요?
-
미해결처음 만난 리액트(React)
백틱 내부 색상
선생님처럼 백틱 내부 문자 색상이 원래 색처럼 나오게 하려 어떻게 해야하나요? 같은색이라 구분이 잘되게 보고 싶은데
-
미해결웹플로우(Webflow) 시작하기 - 코딩 없이 자유도 높은 프로토타입 만들기
shortcode 동기화
안녕하세요 현재 에어테이블- 웹플로우 동기화 작업 중 다른건 다 반영이 잘 되었는데 숏코드만 업로드가 안되더라구요 ㅠㅠㅠ 그래서 에어테이블에서 숏코드 설정 안해봤나 찾았는데 설정은 되어있는데 ㅠ 우선 숏코드 부분 무시하고 진행해도 괜찮은건가요~?
-
해결됨IT 기업 취업을 위한: 코딩테스트 혼자서 정복하기 (C/C++)
코딩테스트 공부법에 대한 질문
안녕하세요. 양질의 강의 제공해 주셔서 정말 감사합니다.강사님의 강의를 통해 배운 내용을 바탕으로 문제를 풀고 있는데 제가 공부하는 방식이 도움이 되는지, 너무 비효율적으로 공부하고 있는 것은 아닌지 싶어서 질문드립니다.저는 평소에 문제를 풀다가 막히는 문제가 있으면, 최대한 머리로 고민해 보다가 머리가 돌아가지 않는다 싶으면 종이에 써가면서 어떻게 풀 수 있을지 고민해 봅니다. 30분에서 1시간 정도 고민해 보는 것 같습니다.해결한 문제는 다른 코드와 제 코드를 비교해 보고 제가 짠 코드보다 다른 코드가 더 효율적이고 깔끔한 것 같다 싶으면 해당 코드를 노트에 정리해둡니다. 해결하지 못한 문제는 어떤 부분을 생각해 내지 못했는지를 답안이 되는 코드와 함께 노트에 정리해둡니다. 이렇게 정리한 코드들은 틈틈이 복기해 봅니다.이런 식으로 공부하는 게 맞는 것인지 답변 부탁드립니다.저번에 한 번 다른 질문을 남겼었는데 그 때 빠르게 답변 남겨주셔서 감사했습니다.
-
해결됨남박사의 파이썬 기초부터 실전 100% 활용
list.reverse() 출력에 대해서 질문있습니다.
안녕하세요. 남박사님. list() 데이터 구조에서 reverse() 메서드의 결과값이 이해가 안되서 질문을 남기게 되었습니다.a=[4,5,6,1,2,3] a.sort() print(a) b=[4,5,6,1,2,3] b.reverse() print(b)[1, 2, 3, 4, 5, 6] [3, 2, 1, 6, 5, 4]sort()는 정방향 정렬, reverse()는 역방향 정렬이라고 배웠는데요. 역방향 정렬의 결과값이 제가 생각했을 때는 [6,5,4,3,2,1]로 출력되어야 할것 같은데 제 예상과는 반대로 [3,2,1,6,5,4]로 출력되고 있습니다. 왜 그런지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
lombok 적용 오류
[질문 내용]안녕하세요. 강의 초반에 롬복 설치하고 테스트하는 과정에서 오류가 발생해 문의 드립니다. 강의에서 설명해주신대로 롬복 활성화 후, annotation enable 설정도 다 해봤는데도 setter,getter가 적용이 되지 않습니다.혹시 해결 방법이 있을까요?구글링해서 캐시도 삭제해보고 인텔리제이 재설치도 해봤는데도 안돼서 문의드립니다. 혹시 몰라서 사진 첨부합니다.감사합니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
말그대로 역수열 원리 그자체로 구현했는데 코딩테스트에서는 못쓸것같습니다
문제에서 사람이 처음 생각하는 그 원리 그자체로 구현했습니다.print 중간 중간에 계속 찍고, 오류 수정하고 , 찍고 오류 수정하고, 디버깅하고 수정하고 또 하고 수정하고,처음부터 완벽하게 하는거 if, for문 조건 틀리지않게 하는거 아니면,코딩테스트 시간적으로는(10분 15분 사이로는) 힘들것같습니다.풀이, 강의듣는데 코딩테스트에서는 저런 사고를 많이 늘려야할것같습니다. 많이 배우고 있습니다. 4일안으로 완강해보겠습니다
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Vscode 질문이요~!
안녕하세요 작년에 혼자 vscode로 플러터 깔짝하다가 올해 각잡고 해볼려고 코팩님 mac 셋업 따라하고 vscode로 시뮬레이터 작동이 안되는데요 operation not permitted exit code 126이런 메세지? 가 뜨는데요 제 추측으로는 터미널 설정 때문에 에러가 나는거 같은데요전 vscode가 친숙한데 어떻게 방법 없을까요?flutter doctor 로 체크했을 땐 이상 없습니다!!
-
미해결Slack 클론 코딩[실시간 채팅 with React]
workspace 값이 읽히지 않습니다.(prototype)
채널에서 워크스페이스 정보가 뜨지 않아 검사 창을 열어보니, 제 UserData 객체에 Workspace객체가 없고, prototype 객체가 하나 있는 것을 발견했습니다.이후 네트워크에서 값을 확인해보니, 서버는 user의 data에 정상적으로 워크스페이스를 보내고 있는 것도 확인했습니다.혹시나 싶어, 새 워크스페이스를 만들어서 보내도 서버에서는 정상적으로 처리해주었지만, 클라이언트에선 전혀 받지 못하고있습니다. 이럴 경우 어떻게 처리해주어야 하는지 여쭤보고싶습니다.워크스페이스 부분의 코드를 첨부하며 리액트(+dom)의 버전은 17, axios의 버전은 0.26.1, swr의 버전은 2.0.3 입니다. import Menu from '../../components/Menu'; import loadable from '@loadable/component'; import axios from 'axios'; import React, { useCallback, useState, VFC } from 'react'; import { Route, Switch } from 'react-router'; import useSWR from 'swr'; import fetcher from '../../utills/fetcher'; import { AddButton, Channels, Chats, Header, LogOutButton, MenuScroll, ProfileImg, ProfileModal, RightMenu, WorkspaceButton, WorkspaceModal, WorkspaceName, Workspaces, WorkspaceWrapper, } from '../Workspace/styles'; import { IUser } from '../../typings/db'; import { Link } from 'react-router-dom'; import Modal from '@components/Modal'; import { Button, Input, Label } from '@pages/Login/styles'; import useInput from '@hooks/useInput'; import { toast } from 'react-toastify'; const Channel = loadable(() => import('../../pages/Channel')); const DirectMessage = loadable(() => import('../../pages/DirectMessage')); const Workspace: VFC = () => { const { data: UserData, error, mutate, } = useSWR<IUser | false>('/api/users', fetcher, { dedupingInterval: 2000, }); const [showUserMenu, setShowUserMenu] = useState(false); const [showCreateWorkspaceModal, setShowCreateWorkspaceModal] = useState(false); const [newWorkspace, onChangeNewWorkspace, setNewWorkpsace] = useInput(''); const [newUrl, onChangeNewUrl, setNewUrl] = useInput(''); const onClickUserProfile = useCallback((e) => { e.stopPropagation(); setShowUserMenu((prev) => !prev); }, []); const onClickCreateWorkspace = useCallback(() => { setShowCreateWorkspaceModal(true); }, []); console.log('showUserMenu3 :', showUserMenu); console.log('UserData LastCheck: ', UserData); const onLogout = useCallback(() => { axios .post('http://localhost:3095/api/users/logout', null, { withCredentials: true, }) .then((response) => { mutate(response.data, false); console.log('onLogOut :', response.data); }) .catch((error) => { alert(error.response.data ? error.response.data : '애러 캐치 실패'); }); }, []); const onCloseModal = useCallback(() => { setShowCreateWorkspaceModal(false); }, []); const onCreateWorkspace = useCallback( (e) => { e.preventDefault(); if (!newWorkspace || !newWorkspace.trim()) return; if (!newUrl || !newUrl.trim()) return; axios .post( '/api/workspaces', { workspace: newWorkspace, url: newUrl, }, { withCredentials: true, }, ) .then((response) => { console.log('modalData :', response); mutate(); setShowCreateWorkspaceModal(false); setNewWorkpsace(''); setNewUrl(''); console.log('data check CreateWS: ', UserData); }) .catch((error) => { console.dir(error); toast.error(error.response?.data, { position: 'bottom-center' }); }); }, [newWorkspace, newUrl], ); // if (!data) { // console.log('data check back to login: ', data); // return <Redirect to="/login" />; // } console.log(' :', UserData); return ( <div> <Header> <span onClick={onClickUserProfile}> <ProfileImg src="../../img/leaf_toy.png" alt="fail to load profile" /> {showUserMenu && ( <Menu style={{ right: 0, top: 38 }} show={showUserMenu} onCloseModal={onClickUserProfile}> <ProfileModal> <img src="../../img/leaf_toy.png" /> <div> <span id="profile-name">{UserData ? UserData.nickname : 'false'}</span> <span id="profile-active">Active</span> </div> </ProfileModal> <LogOutButton onClick={onLogout}>로그아웃</LogOutButton> </Menu> )} </span> </Header> <WorkspaceWrapper> <Workspaces> {UserData !== false && UserData?.Workspaces?.map((ws) => { return ( <Link key={ws.id} to={`/workspace/${ws.id}/channel/일반`}> <WorkspaceButton>{ws.name.slice(0, 1).toUpperCase()}</WorkspaceButton> </Link> ); })} <AddButton onClick={onClickCreateWorkspace}>+</AddButton> </Workspaces> <Channels> <WorkspaceName>Select</WorkspaceName> <MenuScroll>menuScroll</MenuScroll> </Channels> <Chats> <Switch> <Route path="/workspace/channel" component={Channel} /> <Route path="/workspace/dm" component={DirectMessage} /> </Switch> </Chats> </WorkspaceWrapper> <Modal show={showCreateWorkspaceModal} onCloseModal={onCloseModal}> <form onSubmit={onCreateWorkspace}> <Label id="workspace-label"> <span>workspace 이름</span> <Input id="workspace" value={newWorkspace} onChange={onChangeNewWorkspace}></Input> </Label> <Label id="workspace-url-label"> <span>workspace url</span> <Input id="workspace" value={newUrl} onChange={onChangeNewUrl}></Input> </Label> <Button type="submit">생성하기</Button> </form> </Modal> </div> ); }; export default Workspace; 또, fetcher의 문제일 수 있을 것 같아, fetcher의 코드 또한 올려봅니다. import axios from 'axios'; import React from 'react'; const fetcher = <Data,>(url: string): any => { axios.get<Data>(url, { withCredentials: true }).then((response) => response.data); }; export default fetcher;
-
미해결[React 1부] 만들고 비교하며 학습하는 React
[순수JS 1] 검색결과 2 reset 버튼 이런식으로 하면 문제되는 점이 있을까요?
안녕하세요 선생님 강의 잘 듣고 많이 배워가고 있는 초보자입니다.저는 searchResultView의 element의 innerHTML을 초기화 해버리는 식으로 풀이를 했었는데요, 혹시 이러면 나중에 문제가 발생할 수 있는 부분이 있을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
뒤집은 소수 / 런타임 에러 + 궁금증
안녕하세요 강사님예시 문제는 합격하는데 다른 4개의 테스트 케이스는 통과하지 못하고 있습니다.문제는 런타임에러가 뜨는데 왜 뜨는지 정확한 이유를 아무리 보아도 모르겠습니다...많이 더러운 코드지만 무엇이 문제인지 확인 한번 부탁 드리겠습니다...import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public String solution(String str) { String answer = ""; String[] arr = new StringBuilder(str).reverse().toString().split(" "); List<Integer> list = new ArrayList<>(); for (String s : arr) { int target = Integer.parseInt(s); if (target != 2 && target % 2 == 0) continue; if (target == 1) continue; boolean check = true; for (int j = 3; j <= Math.sqrt(target); j+=2) { if (target % j == 0) { check = false; break; } } if (check) list.add(target); } for (int i =list.size()-1; i >= 0; i--) { answer += list.get(i) + " "; } return answer; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int input1 = in.nextInt(); in.nextLine(); String str = in.nextLine(); Main main = new Main(); System.out.println(main.solution(str)); return; } }알아낸점저와 비슷한 사례를 겪는 분들을 질문창에서 발견하고 강사님이 적어두신 2번 케이스의 문제를 복사해서 적어보았는데 통과하였습니다.저는 split() 메서드를 이용해서 입력받은 문자열을 배열로 변경하는데 이때 문자열 맨 뒤에 공백이 존재하게 되면 런타임 에러가 발생 하는것을 확인했습니다. 아무래도 그부분 때문인것 같은데 맞다면 확인 한번 부탁드리겠습니다.변경코드를 수정하였습니다.import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public String solution(String[] arr) { String answer = ""; for (int i = 0; i < arr.length; i++) { String s = new StringBuilder(arr[i]).reverse().toString(); int target = Integer.parseInt(s); if (target != 2 && target % 2 == 0) continue; if (target == 1) continue; boolean check = isPrime(target); if (check) answer += target + " "; } return answer; } private boolean isPrime(int target) { for (int j = 3; j <= Math.sqrt(target); j+=2) { if (target % j == 0) { return false; } } return true; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int input1 = in.nextInt(); String[] arr = new String[input1]; for (int i = 0; i < input1; i++) { arr[i] = in.next(); } Main main = new Main(); System.out.println(main.solution(arr)); return; } } 이렇게 하니 해결되었습니다. 궁금증혹시 실제 코딩테스트 볼때도 split을 사용할때 요청값끝부분에 있는 공백의 존재 가능성도 염두해두고 사용을 해야하나요? 아니면 단순 이 사이트의 실수였을까요?