inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?

해결됨

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유가 궁금합니다. 제가 스프링으로 개발했을 때는 role을 jwt에 담고 별도의 db 조회 없이 스프링 시큐리티에서 검증을 했어서요. 유저 엔티티가 필요하다면 서비스 레이어에서 조회를 하구요. NestJs 현업에서 쓰이는 일반적인 패턴이 궁금합니다

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
김산 댓글 1 좋아요 0 조회수 94

run 실행했는데 결과창이 이렇게 뜨네요 왜 그런건가요>

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 이전까지 괜찮다가 이번에 프로젝트 생성하고 처음 run 했을때 이렇게 나오네요 결과는 볼 수 있긴한데 영상처럼 나오게 다시 할 수 있나요?

  • java
  • spring
박혁진 댓글 2 좋아요 0 조회수 146

형 실무에서 배치 시스템은 어떤 식으로 HA를 구성해??

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

형! 퇴근도 못하고 일하다가 이제야 형 강의보면서 주말을 맞이하고 있어! 스프링 배치를 써서 분 단위, 하루 단위 KPI를 산출하는 배치 프로그램을 만드려고 하는데, 실무에서는 어떻게 HA를 구성하는 지 궁금해졌어. 가령, k8s에서 같은 배치를 돌리는 pod가 여러 개이면 배치가 동시에 돌 것 같고, pod가 한 개이면 하나의 배치 시스템이라서 위험할 것 같은데, 어떤 식으로 실무에서 하는 지 궁금해!

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
gyuyoung park 댓글 1 좋아요 1 조회수 127

그랩님의 답변을 기다립니다/102강 전반적인 에러

미해결

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

그랩님, 강의 잘 듣고 있습니다. 102강 강의를 듣고 있는데요, react-native-reanimated-carousel 설치를 위해 노션에 링크대로 npm install react-native-reanimated-carousel@3.3.0 명령어로 vs code 터미널에서 설치하고 그 이후 한번 더 expo install --npm react-native-reanimated react-native-gesture-handler 를 입력하여 vs code 터미널에서 성공적으로 설치를 완료 하였습니다. 질문 1. 그 이후 babel.config.js 파일 에 가서 plugins: ["react-native-reanimated/plugin"], 추가 해주려고 하는데요, 문제 는 babel.config.js 파일 이 어디에도 존재하지 않아 서 어디에서 플러그인 문구를 입력해 주어야 하는지 모르겠습니다. 아래는 첨부 사진입니다. 어떻게 해야 위 플러그인 문구를 입력 가능 할까요? 참고로 grab-market-mobile의 package.json에 디펜던시를 보면 아래와 같이 확인 할 수 있습니다. "react": "19.1.0", "react-native": "0.81.5", "react-native-reanimated-carousel": "^3.3.0", "react-native-reanimated": "~4.1.1", "react-native-gesture-handler": "~2.28.0" 질문 2. Babel 설정을 위해 Cache 초기화 하는 부분도 위에 질문1이 순서대로 정상적으로 진행이 되지 않아 스킵 하고 강의를 이어갔는데요, babel.config.js에 플러그인 문구부터 저장한 뒤 바벨 설정 캐시 초기화 하는 것이 옳은 건가요? 즉 순서대로 해야 하는지도 궁금합니다. 질문 3. 102강 시작부터 ~ 18분 56초 까지 타이핑 한 grab-market-mobile의 App.js react-native-reanimated-carousel 소스 내용 이 아래와 같은데요, 이것을 실행 하면 첨부한 사진과 같이 안드로이드 스튜디오(runtime not ready) 에서 에러 가 납니다. 참고 로 아래 App.js 소스는 강의 전체 완성본 소스 가 아니라 에러가 난 시점까지의 소스 입니다. 질문3-1. -->그리고 여기에서 Carousel 부분 살펴보면요, 아래 App.js 소스 에서 아래와 같이 작성하는 것 맞나요 ? 만약 아래 작성 소스 가 다르다면 , 어떻게 작성 해야하는지 답변 댓글에 소스를 적어주시면 감사하겠습니다 . < Carousel data = {banners} width = {Dimensions.get( " window ") .width } height = {200} autoPlay = {true} renderItem = {(obj) =>{ return( < TouchableOpacity > < Image source = {{uri :obj.item.imageUrl }} /> </ TouchableOpacity > ) }} /> import { StatusBar } from "expo-status-bar"; import React from "react"; import { StyleSheet, Text, View, Image, ScrollView, Dimensions, TouchableOpacity } from "react-native"; import BasketballImage from "./assets/products/basketball1.jpeg"; import Avatar from "./assets/icons/avatar.png"; import {API_URL} from "./config/constants"; import axios from "axios"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; import "dayjs/locale/ko"; import Carousel from "react-native-reanimated-carousel"; dayjs.extend(relativeTime); dayjs.locale("ko"); export default function App() { const [products, setProducts] = React.useState([]); const [banners, setBanners] = React.useState([]); React.useEffect(()=>{ axios.get(`${API_URL}/products`).then((result)=>{ setProducts(result.data.products); }).catch((error)=>{ console.error(error); }) axios.get(`${API_URL}/banners`).then((result)=>{ setBanners(result.data.banners); }).catch((error)=>{ console.error(error); }) },[]) return ( <View style={styles.container}> <ScrollView> <Carousel data={banners} width={Dimensions.get("window").width} height={200} autoPlay={true} renderItem={(obj)=>{ return( <TouchableOpacity> <Image source={{uri : obj.item.imageUrl}} /> </TouchableOpacity> ) }} /> <Text style={styles.headline}>판매되는 상품들</Text> <View style={styles.productList}> { products.map((product, index)=>{ return (<View style={styles.productCard} key={product.id}> {product.soldout === 1 && <View style={styles.productBlur}/>} <View> <Image style={styles.ProductImage} source={{uri: `${API_URL}/${product.imageUrl}`,}} resizeMode={"contain"} /> </View> <View style={styles.productContents}> <Text style={styles.productName}>{product.name}</Text> <Text style={styles.productPrice}>{product.price}원</Text> <View style={styles.productFooter}> <View style={styles.productSeller}> <Image style={styles.productAvatar} source={Avatar} /> <Text style={styles.productSellerName} >{product.seller}</Text> </View> <Text style={styles.productDate}>{dayjs(product.createdAt).fromNow()}</Text> </View> </View> </View>); }) } </View> </ScrollView> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', paddingTop: 32, }, productCard: { width: 320, borderColor: 'rgb(230,230,230)', borderWidth:1, borderRadius: 16, backgroundColor: "white", marginBottom: 8, }, ProductImage :{ width: '100%', height: 210 }, productContents : { padding: 8 }, productSeller : { flexDirection: 'row', alignItems: 'center' }, productAvatar: { width:24, height:24, }, productFooter: { flexDirection: 'row', justifyContent:'space-between', alignItems: 'center', marginTop: 12, }, productName : { fontSize: 16 }, productPrice: { fontSize: 18, fontWeight: '600', marginTop: 8 }, productSellerName: { fontSize: 16, }, productDate: { fontSize: 16, }, productList: { alignItems:"center", }, headline : { fontSize: 24, fontWeight: "800", marginBottom:24 }, productBlur : { position: 'absolute', top: 0, bottom: 0, right: 0, left: 0, backgroundColor: "#ffffffaa", zIndex: 999, }, }); 그랩님 께서 진행하시는 강의 처럼 에러가 뜨지 않고 제대로 결과값이 나와야 하는데, 아무리 해도 어떻게 에러를 해결해야 하는지 차근차근 알려주셨으면 좋겠습니다. 아직 그랩님의 강의 102강 처음부터 ~ 19분 안되는 정도까지 진행하다 위 에러를 만나게 되어 해결이 안되고 있어서 더 진행을 하지 못하고 있어서 질문을 남깁니다. 질문 4. 아래 AI 인턴 답변을 보고 vs code의 grab-market-mobile에서 babel.config.js 을 프로젝트 루트에 파일 을 직접 생성 하고 module.exports = { presets: ['babel-preset-expo'], plugins: ['react-native-reanimated/plugin'], }; 위 소스입력 후 저장을 완료 한 뒤 캐시 초기화 를 위해 vs code grab-market-mobile의 터미널에서 expo start -c 까지 차례대로 수행 한 후 ngrok과 grab-market-server와 안드로이드 스튜디오 에뮬레이터 실행 후 마지막으로 grab-market-mobile로 연동 실행 후 결과 가 위 버전 에러와 다르게 또 새로운 에러가 발생 하게 되었습니다. 아래 사진 첨부합니다. 이 점은 어떻게 해결 해야 하는지요? 질문 5. 그리고 Vs code에서 아래 인턴님이 답변 준대로 질문 2까지 수행 하니 아래와 같은 에러가 발생 하여 사진을 첨부합니다. 이 에러 는 어떤 것을 의미 하며 해결하는 방법 은 무엇인가요? 질문 6. AI 인턴님이 남겨주신 <질문 3 및 질문 3-1>에서는 " package.json 에서 관련 패키지 를 제거 하세요"라고 써있는데요, 이것은 구체적으로 무엇을 어떻게 수행하는 건가요? 예를들면 어떤 명령어를 입력해야 합니다와 같이 알려주시면 좋겠습니다. 질문 7. ( 확인 차원 에서 재 질문 합니다.) Carousel 소스 가 궁금 한데요, 그랩님께서 강의에서 찍었을 당시 오픈소스인데 오래된 것 이라 다른 것으로 변경하여 재 촬영 해주셨다고해서 조금 햇갈린데요 , Carousel 부분 살펴보면요, 아래 App.js 소스 에서 아래와 같이 작성하는 것 맞나요 ? 만약 아래 작성 소스 가 다르다면 , 어떻게 작성 해야하는지 답변 댓글에 소스를 적어주시면 감사하겠습니다 . < Carousel data = {banners} width = {Dimensions.get( " window ") .width } height = {200} autoPlay = {true} renderItem = {(obj) =>{ return( < TouchableOpacity > < Image source = {{uri :obj.item.imageUrl }} /> </ TouchableOpacity > ) }} /> 질문 8. AI 인턴님이 남겨주신 답변에 관한 질문 3 및 3-1은 하라는대로 실행해보면 에러가 더 많이 발생할까봐아직 수행을 안했는데요 , 아래 답변대로 명령어 3개를 입력해 줘도 괜찮은건가요 ? 여쭈어보고 하는게 나을 것 같아서 다시한번 작성해 보았습니다. 명령어 1: npm uninstall react-native-reanimated-carousel react-native-reanimated 명령어 2: npm install react-native-reanimated-carousel@3.3.0 react-native-reanimated@^2.0.0 명령어 3: expo install react-native-gesture-handler 확인하시면, 그랩님께서 꼭 답변 부탁 드립니다.

  • HTML/CSS
  • javascript
  • react
  • node.js
  • react-native
  • 머신러닝
  • express
  • tensorflow
isbcom1004 댓글 2 좋아요 0 조회수 200

common 모듈의 필요성과 다른 방법에 대한 문의

해결됨

카카오 면접관이 알려주는 MSA 관점에서의 분산 트랜잭션 패턴

안녕하세요! 궁금증이 생겨 문의 드립니다. common 공통 모듈은 서비스간 통신 데이터 구조를 표준화해서 통일성 있게 사용하기 위해서 사용한다고 이해하였습니다. 현재, 멀티모듈로 작성된 프로젝트라서 common 모듈을 작성된 것 같은데, 각각 독립적인 repository 로 운영된다면 이를 극복하기 위해 Nexus 같은 repository 에 관리하여 공통 dto 를 관리하는 방법은 어떤지 문의 드립니다. 적다 보니, 분산 환경에 대한 질문은 아니라서 죄송합니다...

  • java
  • spring
  • mysql
  • spring-boot
  • msa
BeakGwa 댓글 1 좋아요 0 조회수 115

app.controller app.service 는 지워도되나요?

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

선생님 강의를 보다 궁금한게 있는데 src최상위 경로 main.ts는 nestjs를 실행시키기 위한 시작점이고 async function bootstrap() { const app = await NestFactory.create(AppModule); //앱모듈로 부터 모듈들을 확장해나갔음 await app.listen(process.env.PORT ?? 3000); }//nestjs를 실행하는 함수 시작점 bootstrap(); 통해 app.module.ts에는 다른 (posts)모듈을 적어줘서 루트가되는 모듈 같은데 posts폴더안에 posts모듈 관련 컨트롤러 서비스(프로바이더 할 거) 이렇게 순서대로 nest가 처리해 주는 건 알 것 같은데 -app.module.ts에서 각 모듈을 연결해주고 서비스나 기능 만들려면 모듈별로 폴더 관리해서 만드는거구나? 이렇게 이해하고있는데 그러면 app.service.ts,app.controller는 지워도되는거 아닌가 생각이 들어서요. -깃허브 레포지토리에 강의 코드 올려주신 거 봤는데 따로 초반 부분이랑 다른 코드가 추가된 건 아닌 것 같고 동일해서요 따로 안지우시고 그대로 두신 이유가 있을까요?(기다리면..뒤에 알려주실것 같지만 궁금함을 못참고 여쭤봅니다) (약간 두서 없이 여쭤보는것 같아 죄송합니다.생각보다 쉽지않네요ㅎㅎ)

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
치킨피자 댓글 1 좋아요 0 조회수 97

26년 실기

해결됨

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

이 강의로 26년 실기 준비가능할까요?

  • python
  • java
  • c
  • 정보처리기사
경준 댓글 2 좋아요 0 조회수 318

Todo구현중 memo함수에 대해서

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

todo리스트 구현중 TodoItem.jsx에서 memo에 대해 강의를 보며 공부중입니다. 이렇게 console.log로 찍었는데 체크박스를 한 개만 찍어도 3가지 모두 다 console로 찍히는데 제대로 적용된 것 맞나요? 하이라이트를 켜도 색상이 비슷해서 구분이 잘 가지않습니다. 로그는 이렇게 찍힙니다. prev next = {"id":0,"isDone":false,"content":"React 공부하기","date":1764731042079}{"id":0,"isDone":true,"content":"React 공부하기","date":1764731042079} TodoItem.jsx?t=1764729548020:40 prev next = {"id":1,"isDone":false,"content":"빨래하기","date":1764731042079}{"id":1,"isDone":false,"content":"빨래하기","date":1764731042079} TodoItem.jsx?t=1764729548020:40 prev next = {"id":2,"isDone":false,"content":"노래 연습하기","date":1764731042079}{"id":2,"isDone":false,"content":"노래 연습하기","date":1764731042079} import { memo } from 'react'; import './TodoItem.css' function TodoItem({id, isDone, content, date, onUpdate, onDelete}) { const onChangeCheckbox = () => { onUpdate(id); } const onClickDeleteButton = () => { onDelete(id) } return ( <div className="TodoItem"> <input onChange={onChangeCheckbox} readOnly checked={isDone} type="checkbox"/> <div className="content">{content}</div> <div className="date">{new Date(date).toLocaleDateString()}</div> <button onClick={onClickDeleteButton}> 삭제 </button> </div> ); } export default memo(TodoItem, (prevProps, nextProps) => { console.log("prev next = " + JSON.stringify(prevProps) + JSON.stringify(nextProps)) if(prevProps.id !== nextProps.id) return false if(prevProps.isDone !== nextProps.isDone) return false if(prevProps.content !== nextProps.content) return false if(prevProps.date !== nextProps.date) return false return true });

  • javascript
  • react
  • node.js
  • 카카오공채-개발
최어진 댓글 2 좋아요 0 조회수 72

for, while문 작성

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 입문 > 반복문을 공부하고 있는 학생입니다. for, while문에 대해 1번 2번 문제와 풀이를 하는 중인데요, 답안을 보니 int num, int count라는 변수를 각각 사용했더라구요. 그런데 저는 num선언을 통해서만 작성했는데. 보통 반복문의 경우 count라는 변수를 별개로 선언하여 반복하는 횟수를 잡아 개발하는지 문의드립니다. 참고로 제가 작성한 코드는 아래와 같습니다. /* for(int count = 1; count<=10; count++){ System.out.println(count); } int count1 = 1; while (count1<=10){ System.out.println(count1); count1++; } */ int num = 2; while (num<=20){ System.out.println(num); num = num+2; } for(int num1=2; num1<=20; num1=num1+2){ System.out.println(num1); //num1++; }

  • java
  • 객체지향
민지 댓글 1 좋아요 0 조회수 96

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

미해결

실전! 스프링 데이터 JPA

@PrePersist 가 있는 메서드는 영속성 컨텍스트에 엔티티를 저장할때 즉, save()나 persist() 호출 시점에 호출되는것인가요? 아니면 flush()이후에 INSERT쿼리가 실행되기 직전에 호출되는것인가요? @PreUpdate 가 있는 메서드는 엔티티의 변경 감지가 일어나고 트랜잭션 커밋 또는 em.flush()시점에 UPDATE쿼리가 실행되는데, 이 UPDATE쿼리가 실행되기 직전에 호출되는것이 맞을까요?

  • java
  • spring
  • spring-boot
  • jpa
오리쉐리 댓글 2 좋아요 0 조회수 128

주식거래와 같은 실시간 보장이 필요한 상황에서 SAGA 패턴 도입에 대한 문의

해결됨

카카오 면접관이 알려주는 MSA 관점에서의 분산 트랜잭션 패턴

안녕하세요! 과거에, MSA 학습용으로 모의 주식 투자 서비스(?)를 만들어본 사람입니다. 당시에, 주식 매수의 기능을, 2개의 service 로 운영했었고, 이때 각 요청의 순서는 이벤트 기반으로 처리하였습니다. client -> stock service -> kafka -> payment service(이벤트 구독) 이때, 특정 문제에 대한 트랜잭션 보장을, 보장 로직을 통해 구현하였었습니다. 이때, kafka pub/sub 이벤트를 동기적으로 처리되었는지 확인하도록 구성해놓았었습니다. 주식 거래와 같은 일관성이 매우 중요한 서비스에서 어떤 방향성이 더 올바른(?) 방향이라고 생각하고, 어떤 생각을 가지고 계신지 궁금합니다. 현재 생각으로는, 2pc 를 채택하는게 더 올바른 선택이었다고 생각이 듭니다.

  • java
  • spring
  • mysql
  • spring-boot
  • msa
BeakGwa 댓글 2 좋아요 0 조회수 124

플러그인 질문

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

강사님이 사용하시는 코드에서 오류가 났을때 빨간문자로 보이는 도움말? 은 무슨 플러그인을 사용하시는건가요?

  • javascript
  • react
  • node.js
  • 카카오공채-개발
athena1998 댓글 2 좋아요 0 조회수 77

메타데이터 관리

미해결

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

킬구형 메타데이터쪽 update를 읽다가 이해가 안가는게 있는데 형이 update() 메서드는 매 트랜잭션의 커밋 직전에 호출된다. 단, 처리 도중 예외가 발생하여 트랜잭션이 롤백되는 경우에는 호출되지 않는다. 이는 실패한 처리 내용이 실행 정보에 반영되는 것을 방지한다. 라고 했는데 그러면 문제가 생겨서 update를 호출하지 않고 롤백이 됬다고 하면 open입장에서는 실패했는지 안했는지도 모르는거아니야? 실패를 해도 마지막으로 저장된 곳부터 다시 시작하니까 실패를 아예 저장을 안한다는거야? 재시작할때 메타테이블에서 execution값을 받아와서 괜찮은건가?

  • java
  • spring
  • spring-boot
  • spring-batch
  • backend
ABBCD 댓글 2 좋아요 1 조회수 96

고양이 이미지가 엑박이 뜨네요

미해결

만들면서 배우는 리액트 : 기초

API 스펙이 변경되었네요! 제보 감사합니다. https://github.com/milooy/cat-jjal-maker/blob/main/answers/29-useEffect.html#L48 위 코드를 참고해서 fetchCat 함수를 변경해주세요. 위 답변해주신대로 소스를 변경해도 고양이 이미지가 엑박으로 뜨질 않습니다.

  • javascript
  • react
gangsugi 댓글 1 좋아요 0 조회수 88

68강 ArrayEx6 클래스 질문

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 혹시 이 코드도 정답으로 인정되나요? package array.ex; import java.util.Scanner; public class ArrayEx6 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("입력받을 숫자의 개수를 입력하세요:"); int n = sc.nextInt(); System.out.println(n + "개의 정수를 입력하세요:"); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for (int i = 0; i < n; i++) { max = Math.max(max, arr[i]); min = Math.min(min, arr[i]); } System.out.println("가장 작은 정수: " + min); System.out.println("가장 큰 정수: " + max); } }

  • java
lgh8079 댓글 1 좋아요 0 조회수 89

디스코드 문의

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

안녕하세요, 소개 영상에서는 디스코드 채널이 있는거 같은데요. 관련 링크가 없네요. 어디서 확인가능할까요?

  • javascript
  • react
  • node.js
  • 카카오공채-개발
Jim 댓글 2 좋아요 0 조회수 52

안녕하세요. 좋은 강의 감사합니다. 질문이 있습니다.

해결됨

포트폴리오 어나더레벨 | 합격하는 이력서 작성법

안녕하세요. 큰돌님 유튜브도 보고있고 최근 개발 소식도 자주 접하고 있습니다. 최근에는 새로 내신 강의도 구매하여 수강을 하였습니다. 여기서 질문이 있습니다. 강의에서 "배포가 되어있는게 좋다"는 말이 있습니다. 포트폴리오나 사이드 프로젝트를 할 때 "배포의 중요성"이 중요한지 아니면 대체를 할 수 있는지 생각을 듣고 습니다. 요즘은 많은 오픈소스를 사용하는 것으로 알고있습니다. 그중에는 kafka, elasticsearch, redis 더 나아가 debezium, flink같은 것도 많습니다. 물론 이러한 것들은 대규모 트래픽이 발생하거나 많은 정보가 있을 때 사용하면 좋은 효율을 내고 있습니다. 보통 사이드 프로젝트 더 나아가서는 스타트업이나 중소기업까지도 트래픽이 적다면 구지 사용을 하지 않고 유지를해도 문제가 없을 수 있는 인프라 구조도 될 수 있다고 생각합니다. 하지만 기업들은 이러한 것을 요구합니다. 여기서 질문이 이런 인프라들은 배포를 할려면 비용이 상당히 많이 발생하고 유지가 힘든것으로 알고있습니다. 강의에서 말씀하신 인스턴스 최소 두대 또한 계속 유지하기에는 비용이 계속 누적이 될거라고 생각합니다. 물론 배포를 해놓고 그걸 보여주면 아주 best이고 현재의 상태를 잘 보여주고 느낄 수 있다고 생각합니다. 그런데 배포라는게 중요한것인지 의문이 들어 질문드렸습니다. 경력직에서 이직을 할때도 경력서에 쓰는 프로젝트 대부분이 배포는 현재 되있지만 실제적으로 그런 부분을 신경을 쓰지 않는 것(못하는것)으로 알고있어요. 그리고 회사에서도 막상 큰 회사일 수록 많은 트래픽을 받고있지만 인프라가 좋아 그거에 대해서 체감을 못하고 올바르지 않은 방향으로 나갈 수 있고 효율적인거보다 기능구현이 우선순위로 높게 배정됬을 수 도 있을 것 같아요. 반대로 큰 회사나 적은 회사든 어드민 부서는 존재하고 어드민 부서는 코어 부서보다 적은 트래픽을 받는 것 으로 알고있습니다. 그러면 이 때는 어떻게 어필을 하면 좋을 지 고민입니다. 이거에 대한 큰돌님의 생각을 의견을 듣고싶어 질문을 올렸습니다. 감사합니다.

  • HTML/CSS
  • javascript
  • python
  • java
  • 포트폴리오
kth004 댓글 1 좋아요 0 조회수 104

V8에서 undefined를 관리하는 방법에 대한 질문입니다

해결됨

진짜! 자바스크립트(Javascript) - 기초부터 고급까지

안녕하세요 좋은 강의 재밌게 잘 시청하고 있습니다 V8에서 undefined, null 그리고 string을 어떻게 관리할까? 강의를 보다가 V8 문서를 찾아보게 되었습니다 영어로 된 문서를 번역을 해서 질문하는 글 이기에 번역이 어색하거나 틀릴 수 있으며, 전체 내용을 담지는 않았습니다! 강의 4분 26초에 LOAD_ROOT 함수 부분을 설명하시면서 힙 상수를 찾고 있다고 설명해주셨습니다 그 후 다음 단계에서 캐시를 하고 힙 상수를 찾고, 만약 해당 위치가 존재한다면 해당 위치를 반환하고, 그 위치가 없다면 새로운 힙 상수를 생성하고 캐싱을 한다고 해주셨습니다 그래서 실제로 저희가 자바스크립트에서 undefined를 사용할 때마다 캐싱해두었던 그 값을 찾기 때문에 해당 위치에 접근하여 사용할 수 있다 라고 이해를 했습니다 여기서 추가적으로 궁금했던것이 V8 문서를 보면, undefined , true 등 자바스크립트의 핵심 객체들은 반드시 먼저 존재해야 하고, read-only heap에 존재한다고 합니다 V8은 이들을 immovable immutable roots 라고 부른다고 합니다 정의되지 않은 객체의 주소를 참조하기 위해 찾아볼 필요 없이, 포인터가 0x61 이런식으로 끝나는지만 확인한다면, 정의가 되었는지, 되지 않았는지 알 수 있다면 좋을 것 같다 이것이 V8의 static root 를 달성하는 것이다 라고 설명되어 있습니다 지속적으로 사용되는 것들이기에 빠른 접근이 필수적이며, V8은 컴파일 시점에 이들을 생성한다고 나와있습니다 읽기 전용 힙을 모든 포인터 compression cage의 시작 부분에 배치하여 알려진 위치를 제공하며, 예를 들어 V8의 힙에 있는 모든 객체 중에서 undefined는 항상 가장 작은 압축 주소를 가지며, 0x61 바이트에서 시작한다고 합니다 V8을 컴파일 하기 위해서는 먼저 mksnapshot 이라는 V8 바이너리를 컴파일을 진행을 하고, 결과물로는 read-only heap 내의 모든 객체의 cage base 주소를 포함한다고 합니다 두 번째 단계로 libv8을 다시 컴파일하여, 플래그를 통해서 undefined를 참조할 때마다 문자 그대로 cage_base + StaticRoot::kUndefined 을 사용하도록 보장한다고 나와있습니다 d8이 실행되면 모든 read-only 객체는 메모리에서 고정된 위치를 가지며, 절대 이동하지 않는다고 합니다 이를 통해 d8 바이너리에서 undefined의 압축 주소가 0x61로 하드코딩되도록 만든다고 합니다 이 글을 읽으면서 들었던 생각은 위 과정을 통해 "undefined 같은 기본 객체들의 cage base로부터의 오프셋이 컴파일 시점에 결정 되어 있어서, 런타임에 배열에서 찾아볼 필요 없이 cage_base + 0x61 같은 계산식으로 바로 접근 할 수 있다" 라고 이해를 했습니다 여기서 컴파일 시점에 결정된 주소 라는 것이 4분 26초부터 말씀해주신 캐시 과정이 포함되는 것이 맞을까요? 아니면 강의 내용과는 상관이 없는 내용일까요? 참고한 글 링크는 아래에 걸어두겠습니다! https://v8.dev/blog/static-roots

  • javascript
  • es6
  • 객체지향
  • es5
츄르보단캣닢 댓글 2 좋아요 0 조회수 115

h2데이터베이스 실행오류

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. h2.bat 을 실행하거나 cmd 들어가서 실행하면 실행까지는 되는데 콘솔이 안열립니다.

  • java
  • jpa
김영우 댓글 2 좋아요 0 조회수 138

tailwind 화면 크기에 따른 ui 변화 기준

해결됨

React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드

sm : 640 이상 md : 768 이상 lg : 1024 이상 2xl : 1536 이상 은 설정하신건가요? 기본 설정인가요?

  • HTML/CSS
  • javascript
  • react
  • node.js
  • mongodb
kindjin12 댓글 1 좋아요 0 조회수 95

인기 태그

인프런 TOP Writers

주간 인기글