inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

이늄 클래스 혹은 레코드 메서드 상속 시 인터페이스 default 메서드 사용에 대한 질문 드리고 싶습니다.

미해결

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 강의를 듣다가 궁금한 점이 생겼습니다. 인터페이스는 구현 메서드를 가능한 지양해야하므로 default 메서드는 하위 호환 등의 특별한 예외에서 사용해야한다는 말씀에 깊이 공감하고 있습니다. 다만 이런 경우는 어떤 접근 방식이 좋을까요? 프로젝트내 특정 이늄 클래스들 혹은 레코드들에 대해서 공통화된 메서드 처리를 하고 싶을 때 디폴트 메서드가 있는 인터페이스를 상속받아서 공통 기능을 사용하고 있습니다. 이늄과 레코드는 클래스 상속이 안되어서 생긴 편법? 같은 느낌이 드는데요. 이에 대한 정석적인 접근 방식이 있을까요? .. 또한 이늄과 레코드는 상속을 못하게한 객체지향적인? 이유가 있을 것 같은데 혹시 어떻게 이해를 하면 좋을지.. 궁금합니다..!

  • java
  • 객체지향
2등전략 댓글 1 좋아요 1 조회수 266

[페이지미스 부분] 프리페칭 관련 질문

미해결

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

미리 많이 사용될 것 같은 데이터를 미리 깔아 놓는 것을 프리페칭이라고 하셨는데, 가상이 아닌 '실제' 메모리에 깔아두는 건가요? 내 요청이 프리페칭에 없는 경우 페이지미스가 뜬다고 했는데, 그럼 오류를 주고 여기서 끝인가요? 아니면 해당 요청에 맞게 메모리로 불러와서 처리를 하나요? 페이지미스 이후 무슨 일이 일어나는지 궁금합니다. 프리페칭에서 페이지미스가 일어나면 데이터를 덮어쓴다고 되어 있는데, 결국 데이터를 불러들이는 과정은 있는건가요? 그런데 이거를 페이지폴트라고 하지는 않는 건가요? 작업세트와 프리페칭 어떤 차이가 있는지 궁금합니다. 감사합니다!

  • 면접
  • 운영체제
  • 기술면접
김인형 댓글 1 좋아요 1 조회수 228

채팅 구현했는데 소켓 연결이 됐다 안됐다 늦게 됐다 합니다.

해결됨

Next + React Query로 SNS 서비스 만들기

안녕하세요 선생님 강의를 보고 참고해서 채팅 기능을 만들었습니다. 그런데 a,b가 채팅화면에 들어왔을때 소켓 연결이 안되거나, 늦게 되거나 하는 경우가 있어서 제가 로직을 잘못짠건지 어딜 확인해야하는건지 조언을 들을수 있을까해서 문의 남깁니다. 먼저 서버에서 이렇게 socket.io 를 설정해주고 /app.js const app = express(); const httpServer = new createServer(app); const io = new Server(httpServer, { cors: { origin: 'https://zzimzzim.com', credentials: true, }, }); /utils/io.js module.exports = function (io, db) { const userSockets = {}; const nsp = io.of('/messages'); nsp.on('connection', (socket) => { console.log('soket connected'); socket.on('disconnect', () => { console.log('-----------------user disconnected'); }); socket.on('login', (user) => { userSockets[user.id] = socket.id; console.log(userSockets, '-------------------------------userSockets'); console.log(`User ${user.id} connected with socket id ${socket.id} --------- 유저입장`); }) socket.on('sendMessage', async (data) => { try { const roomId = data.room.split('-').sort().join('-'); console.log(roomId, '---------------------------------roomId'); console.log(data, '---------------------------------data'); console.log(userSockets, '---------------------------------userSockets'); let room = await db.Room.findOne({ where: { room: roomId }, include: [ { model: db.User, as: 'RoomSender', attributes: ['id', 'email', 'gender', 'mbti'], include: [{model: db.Image}], }, { model: db.User, as: 'RoomReceiver', attributes: ['id', 'email', 'gender', 'mbti'], include: [{model: db.Image}] }, ] }); if (room) { room = await room.update({ content: data.content }); } else { const roomCreated = await db.Room.create({ SenderId: data.senderId, ReceiverId: data.receiverId, content: data.content, room: roomId, }) console.log(roomCreated, '------------------------------roomCreated') room = await db.Room.findOne({ where: { room: roomId }, include: [ { model: db.User, as: 'RoomSender', attributes: ['id', 'email', 'gender', 'mbti'], include: [{model: db.Image}], }, { model: db.User, as: 'RoomReceiver', attributes: ['id', 'email', 'gender', 'mbti'], include: [{model: db.Image}] }, ] }) } const savedMessage = await db.Message.create({ SenderId: data.senderId, ReceiverId: data.receiverId, content: data.content, room: roomId, }); // console.log(savedMessage, '------------------------Message saved'); console.log(room, '------------------------room saved'); const receiverSocketId = userSockets[data.receiverId]; if (receiverSocketId) { socket.to(receiverSocketId).emit('receiveMessage', savedMessage); socket.to(receiverSocketId).emit('receiveRoom', room); } else { console.log(`User ${data.receiverId} is not connected`); } } catch (error) { console.error('Error saving message:', error); } }); }) } 클라이언트에서는 선생님이 useSocket만든것과는 다르게 useContext를 이용해서 /src/app/(afterLogin)/messages/_component/SocketProvider.tsx 'use client'; import { useSession } from 'next-auth/react'; import { ReactNode, createContext, useCallback, useEffect, useMemo, useState } from 'react'; import { io, Socket } from 'socket.io-client'; type Props = { children: ReactNode }; type SocketContextType = { socket: Socket | null; isConnected: boolean; disconnect: Function; goDown: boolean; setGoDown: Function; } export const SocketContext = createContext<SocketContextType>({ socket: null, isConnected: false, disconnect: () => { }, goDown: false, setGoDown: () => {}, }) export default function SocketProvider({ children }: Props) { const { data: session } = useSession(); const [socket, setSocket] = useState<any | null>(null); const [isConnected, setIsConnected] = useState(false); const [goDown, setGoDown] = useState(false); const disconnect = useCallback(() => { socket?.disconnect(); setSocket(null); }, [socket]); const value = useMemo(() => { return { socket, isConnected, disconnect, goDown, setGoDown } }, [socket, isConnected, disconnect, goDown]); useEffect(() => { console.log(socket, '-----------------------------------------socket???'); if (!socket) { const socketInstance = io(`${process.env.NEXT_PUBLIC_BASE_URL}/messages`, { withCredentials: true, }); socketInstance.on('connect', async () => { setIsConnected(true); console.log("소켓연결 성공!!!", socketInstance.id); // console.log(socketInstance, '--------------------socketInstance'); }) setSocket(socketInstance); } }, [socket]); useEffect(() => { if (socket?.connected && session?.user?.id) { console.log('--------------------------------------------socket emit login') socket?.emit('login', { id: session?.user?.id }); } }, [session, socket]); return ( <SocketContext.Provider value={value}> {children} </SocketContext.Provider> ) } 이런식으로 만들고 /src/app/(afterLogin)/messages/layout.tsx import { ReactNode } from 'react'; import SocketProvider from './_component/SocketProvider'; type Props = { children: ReactNode }; export default function Layout({ children }: Props) { return ( <SocketProvider> {children} </SocketProvider> ) } 레이에다가 적용해주었습니다. 이런식으로 해주면 소켓연결을 한번만 하고 원할때 메세지를 주고 받을 수 있을거라고 생각해서 적용한건데 혹시 소켓 연결 관련해서 더 확인해야하거나 수정할 부분이 있을지 궁금합니다. 감사합니다!

  • react
  • next.js
  • react-query
  • next-auth
  • msw
챠챠_ 댓글 1 좋아요 0 조회수 262

validate에러메시지 위치

해결됨

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

validate 에러메시지가 생겼을때 Textfield 위치를 고정하고 싶습니다. 그런데 강의를 진행하면서 Expand로 여러 위젯을 감싸다 보니 방법을 찾기가 힘드네요.제가 원하는건 Sizedbox에 텍스트가 생기길 원합니다.

  • flutter
  • 클론코딩
강민성 댓글 2 좋아요 0 조회수 308

설치 오류 질문드립니다.

해결됨

비전공자의 전공자 따라잡기 - 데이터베이스,SQL

남겨주신 링크로 다운해봤고 직접 들어가서도 다운해봤는데 저 상태에서 그냥 꺼지고 인스톨러가 실행이 안되는데 뭐가 문제일까요? 도움주시면 감사하겠습니다.

  • sql
  • mysql
  • dbms/rdbms
  • mysql-workbench
minjun 댓글 1 좋아요 0 조회수 252

강의자료

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요 좋은 강의 열심히 듣고 있습니다. 설명해주시는 PPT 자료는 받아볼 수 있는지요 ?

  • python
  • 머신러닝
  • 통계
htjnara 댓글 2 좋아요 0 조회수 267

만약 상호작용하는 컴포넌트에서 각각 상태를 관리하고 있다면

해결됨

실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트

안녕하세요. 효율적인 테스트를 위해 상태 관리는 상위 컴포넌트에 응집해서 관리하는것이 좋다고 하셨는데 컴포넌트가 캡슐화 되어있으면 서로 상호 작용하는 컴포넌트지만 동일한 상태 조회를 각 컴포넌트에서 독립적으로 하게되는 경우도 있을거 같습니다. 이런 경우는 테스트에 용이하도록 구현 코드를 수정해야하는지, 아니면 번거롭더라도 그대로 테스트 코드를 작성해야 하는지 궁금합니다. 애초에 컴포넌트 설계를 잘못했다고 판단해야 할까요?

  • javascript
  • react
  • 소프트웨어-테스트
  • vitest
팀오 댓글 1 좋아요 0 조회수 191

WSCC 유틸리티 인스톨 악성코드 검출

해결됨

취미로 해킹#2(해커의 컴퓨팅)

WSCC로 유틸리티 프로그램 이용 실습을 진행하기 위해서 인스톨 진행 도중에 악성코드가 여럿 검출되는데 2024 07 05 공식사이트에서 다운로드를 기준으로 WSCC 최신버전은 바이러스에 감염된 파일인가요?

  • 악성코드
  • 모의해킹
un known 댓글 1 좋아요 0 조회수 294

왜 flex-item box3 대신 .box3를 사용하나요?

미해결

[ 부트스트랩 5 ] 빠르고 스마트하게 웹 사이트 만들기 | Bootsrap 입문용

<div class="container"> <div class="flex-item">1</div> <div class="flex-item">2</div> <div class="flex-item box3">3</div> </div> 여기서 3번째 box만 class="flex-item box3" 하고 css 페이지에서 .box3이라고 해도 3번째 박스만 css적용이되는데 왜 이렇게 써야하는지 이해가 가지 않습니다. 왜 flex-item box3{ padding:30px}이라고 하지 않는것인가요? 이런 코드는 또 어떤 경우에 적용할 수 있나요?

  • HTML/CSS
고예진 댓글 1 좋아요 0 조회수 218

static 변수 질문있습니다

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

두번 째 코드에서 initialized = 1 로 바꿔주고 initialize(); 함수로 다시 들어갈때 static int initialized = 0 ; 을 다시만나는데 여기서 다시 0이 되는게 아닌건가요?

  • python
  • java
  • c
  • 정보처리기사
doy 댓글 2 좋아요 1 조회수 374

world 좌표계, local 좌표계

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

transform.rotation = Quaternion.LookRotation(Vector3.forward); transform.position = transform.TransformDirection(Vector3.foward * Time.deltaTime * _speed); 강의를 듣고, 질문글들을 읽어보았을때 위의 코드에서 rotation일때 Vector3.forward는 world 좌표계에서의 (0, 0, 1) 이고, position일때의 Vector3.foward는 local 좌표계에서의 (0, 0, 1)이라고 이해했는데 Vector3가 어느경우에 world 혹은 local 좌표계에서 사용되는건지 이해가 잘 가지 않습니다.

  • C#
  • unity
jin 댓글 1 좋아요 0 조회수 240

테라폼으로 람다 형상 관리 방법

해결됨

실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)

안녕하세요 모든 리전 알람에 람다.tf 강의 버전으로 배포하면 람다 콘솔에서 코드를 수정하는 경우 테라폼으로 추적이 안되더라구요. 변경점을 추적하는 방법을 찾아보니, 대충 테라폼에서 배포할 때 zip 형태로 말아 배포할때마다 hash값을 비교해서 변경을 감지한다는거 같은데 이도 사실 제가 정확히 이해했는진 모르겠네요. 사실 저는 개인적으로 람다가 워낙 자주 수정되니 그냥 최초 배포할 때 이후로 따로 추적은 안하고 git 같은 곳에서 버전관리를 하면 되지 않을까라고 생각합니다. 아니면, 람다 함수를 git, s3 등에서 버전을 관리하고 테라폼 모듈에서 source를 git or s3와 같이 지정해주면 될 것 같은데 실제 운영하실 땐 어떤 방식으로 테라폼으로 관리하는지 궁금합니다

  • python
  • aws
  • Terraform
  • devsecops
댓글 1 좋아요 1 조회수 343

공부하면서 깃에 잔디도 심고싶은데 클론이 안되네요;;

미해결

PHP 개발자의 최종 테크트리, 라라벨 강의

공부하는 내용을 깃허브에 올려서 잔디를 심으면 꾸준히 공부를 하게되지않을까 하고... Linux/Ubuntu/var/www 폴더에 만들어둔 html폴더를 클로닝 하려고 시도하였으나 Permission denied(권한없음)으로 실패했습니다... 해당 폴더의 보안탭에 들어가 모든 권한 부여를 하라고 하지만 해당 폴더는 보안탭이 뜨지 않네요...;ㅅ; 그래서 일반 로컬 폴더에 레포지토리 클로닝을 해두고 학습 한 날마다 html폴더의 모든 내용을 덮어써버릴까 하는 생각도 해보고 있는데.. 혹시 강사님은 다른 좋은 아이디어 있으실까요...ㅎㅎ

  • php
  • Laravel
  • git
  • clone
베르베릉 댓글 2 좋아요 0 조회수 392

SecurityMockContext 로부터 유저 정보를 가져오기

미해결

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

@Test @DisplayName("글 삭제") @CustomMockUser void test7() throws Exception { // given UserPrincipal principal = (UserPrincipal) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); Member byId = memberRepository.findById(principal.getUserId()).orElseThrow(UserNotFound::new); Post post = Post.builder() .title("Hello World") .content("Hello Java") .member(byId) .build(); postRepository.save(post); // expected mockMvc.perform(delete("/posts/{postId}", post.getId())) .andExpect(status().isOk()) .andDo(print()); }

  • vue.js
  • aws
  • spring-boot
  • jpa
  • spring-security
댓글 1 좋아요 0 조회수 296

선생님 근데 docker로 mysql 돌릴때 데이터는

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

데이터는 어디에 저장이될까요? 도커컨테이너에 저장이되는걸까요? 만약에 이 강의를 완강하고 제 컴퓨터로 서버를 만들어 돌린다고했을때 보통 데이터는 어디에 저장하는걸 추천하시나요? 도커컨테이너에 저장 하드디스크에 저장하고 주기적으로 aws s3에 업로더해준다.

  • javascript
  • node.js
  • docker
  • rest-api
  • nestjs
반가우면반갑다고해 댓글 2 좋아요 0 조회수 295

강의 순서 문의

해결됨

실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)

강의 추천을 받아 구매하게 되었습니다. 무료 강의 + 구매한 강의 총 4개가 있는데 4개 순서를 어떤식으로 들으면 좋을지 문의드립니다. 감사합니다.

  • python
  • aws
  • Terraform
  • devsecops
조정노 댓글 1 좋아요 1 조회수 245

4-C 어느 부분이 틀렸는지 모르겠습니다.

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

https://www.acmicpc.net/source/share/e76dff0067f048f28c1a105de7d81014 강의를 봤는데도 코드가 왜 틀린건지 잘 이해가 안되네요. 테케는 통과했는데, 2%에서 틀립니다. 리뷰 부탁드립니다!

  • c++
  • 코딩-테스트
곰다 댓글 1 좋아요 0 조회수 170

3번문제

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 문제와 풀이 3번문제 선생님 풀이와 다르게 마지막 else 부분을 이렇게 작성했는데 이것도 정답이 될 수 있을까요? public class Ex3 { public static void main(String[] args) { int dollar = 5; if (dollar < 0) { System.out.println("잘못된 금액입니다."); } else if (dollar == 0) { System.out.println("환전할 금액이 없습니다."); } else { System.out.println("환전금액은 " + dollar*1300 + "원입니다." );

  • java
  • 객체지향
박정화 댓글 1 좋아요 0 조회수 182

CNN Core에 weight 와 input feature map 관련해서 질문있습니다!

해결됨

설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)

안녕하세요 맛비님 강의 아주 유용하게 잘 보고 있습니다. 다름이 아니라 Full connected core를 설계하실 때는 Bram을 사용 하여 weight값과 input feature map 값을 읽어 왔던 것으로 기억을 하는데 CNN core에서는 Bram을 사용하지 않는것 같아서요. 혹시 이유가 있을까요?

  • verilog-hdl
  • fpga
  • 임베디드
  • cnn
최규현 댓글 1 좋아요 1 조회수 287

혹시 무선 충전 관련해서 강의가 만들어질 수 있을까요?

해결됨

CAN 통신 - 자동차 신입이 알아야 할 모든 것

CAN 통신을 사용하게 됬는데, 무선충전과 관련된 일을 하게 되었습니다. 혹시 무선충전 관련해서 강의 영상 찍을 계획이 있으신가요?

  • CAN
  • uds
김성규 댓글 1 좋아요 0 조회수 247

인기 태그

인프런 TOP Writers

주간 인기글