묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결블록체인, 가상자산거래소 보안
교안은 제공 안되는 건가요?
제목 그대로 입니다.교안을 찾을 수가 없네요.강사님 강의 일부 내용은 교안 보라고 하시고 넘어 가셨는데찾지를 못하겠습니다. ㅠㅠ 답변 부탁 드립니다.
-
해결됨디지털포렌식 입문자를 위한 디지털포렌식 전문가 2급 실기 시험대비 강의(Encase/Autopsy)
안녕하세요^^. 교재관련하여 질문드립니다.
강의 정말 잘 듣고 있습니다. 다름이 아니라 Autopsy 교재를 제본하려고 하는데요. Autopsy 실습 시나리오가 추가되면서 교재가 추가될 가능성이 있나요? 아니면 올려주신 교재가 완성본일까요? 항상 건강하세요.
-
해결됨Next.js 시작하기(feat. 지도 서비스 개발)
getStaticPaths로 각 매장의 상세 페이지 만들기
안녕하세요! 강의 수강 중 에러 원인을 모르겠어서 문의드립니다.next.js 최신 업데이트 버전을 사용하고 있어 동적 페이지 아래와 같이 생성 후 동일한 코드를 작성하였습니다. getstaticpath로 페이지 생성은 되었습니다. console에 path도 잘 나타나는 것 확인했습니다!근데 getstaticprops에서의 console이 아무것도 찍히지 않습니다. 실행 자체가 되지 않는 것 같은데 아무리 찾아도 모르겠습니다ㅜㅜ 무엇이 잘못된 것일까요?ㅜㅜ
-
미해결[스프링 배치 입문] 예제로 배우는 핵심 Spring Batch
빌드가 실패해요 ㅠㅠ
안녕하세요!강의와는 조금 다르게 java11과 springboot 2.7.13(snapshot)으로 진행해봤는데요.빌드가 계속 실패합니다 ㅠhttps://github.com/chojuyeon94/SpringBatchTutorialorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'batchDataSourceInitializer' defined in class path resource [org/springframework/boot/autoconfigure/batch/BatchAutoConfiguration$DataSourceInitializerConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.batch.BatchDataSourceScriptDatabaseInitializer]: Factory method 'batchDataSourceInitializer' threw exception; nested exception is java.lang.IllegalStateException: Unable to detect database type데이터베이스 타입을 찾을 수 없다고 나오는데요이게 데이터베이스에 연결이 잘 안되는거라고 해서 여러 방법을 써봤는데 잘 안되서 글 남깁니다!!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2에 명목형 컬럼 train=train.select_dtypes(exclude='object').copy()
작업형2에 명목형 컬럼 train/test=train/test.select_dtypes(exclude='object').copy()으로 담으면 라벨인코딩/원핫인코딩은 skip해도 무방할까요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
재고 데이터를 Redis에서 관리했을 때 분산락의 필요성
현재 강의에서 재고 데이터를 MySQL에서 관리하고 있는데, 만약에 다중 서버 환경이라고 가정하고, 재고 데이터를 Redis에서 관리한다했을 때에도 분산락이 필요한건가요? 제가 redisson을 이용해서 재고 감소 시키는 로직과 redisson을 이용하지 않고 재고 감소 시키는 로직을 구현했는데, 제가 예상한 바로는 redisson을 이용하지 않고 재고 감소 시킬 때에는 데이터 정합성이 맞지 않고, redisson을 이용해서 재고 감소시키는 로직에선느 데이터 정합성이 맞을 것이다라고 생각했는데, 결과는 둘다 동일하게 데이터 정합성이 맞더라구요. 왜 그런걸까요? 1번째 코드는 구현코드고, 2번째 코드는 테스트 코드입니다. @Repository public class InventoryRepository { private final RedisStringsRepository redisStringsRepository; private final RedissonClient redissonClient; private int waitTimeForAcquiringLock = 1; private int leaseTimeForLock = 1; @Autowired public InventoryCommandRepository( RedisStringsRepository redisStringsRepository, RedissonClient redissonClient ) { this.redisStringsRepository = redisStringsRepository; this.redissonClient = redissonClient; } public void set(String key, int amount) { redisStringsRepository.set(key, String.valueOf(amount)); } public void delete(String key) { redisStringsRepository.delete(key); } // lock 없이 재고 로직 감소 public void decreaseByAmountWithoutLock(String key, int amount) { redisStringsRepository.decreaseByAmount(key, Long.valueOf(amount)); } // lock 하고 재고 로직 감소 public void decreaseByAmount(String key, int amount) { RLock rlock = redissonClient.getLock(key+"lock"); try { boolean available = rlock.tryLock(waitTimeForAcquiringLock, leaseTimeForLock, TimeUnit.SECONDS); if (!available) { System.out.println("lock 획득 실패 "); return; } redisStringsRepository.decreaseByAmount(key, Long.valueOf(amount)); } catch (InterruptedException e) { throw new RuntimeException(e); if (rlock != null && rlock.isLocked()) { rlock.unlock(); } } } } @DisplayName("InventoryRepository") @SpringBootTest public class InventoryRepositoryTest { @Autowired private InventoryRepository inventoryRepository; @Autowired private RedisStringsRepository redisStringsRepository; @Autowired private RedisTemplate<String, String> redisTemplate; String key = "testKey"; int initialAmount = 100; @BeforeEach public void setUp() { redisStringsRepository.set(key, String.valueOf(initialAmount)); } @AfterEach void teardown() { redisStringsRepository.delete(key); } @Nested @DisplayName("decreaseByAmountWithoutLock") class Describe_decreaseByAmountWithoutLock { @Nested @DisplayName("with 1 thread") class Context_With_Single_Thread { @Test @DisplayName("decreases inventory by amount") void It_Decreases_Inventory_By_Amount() throws InterruptedException { int decreaseAmount = 1; inventoryRepository.decreaseByAmountWithoutLock(key, decreaseAmount); String value = redisStringsRepository.get(key); int expectedAmount = initialAmount - decreaseAmount; assertEquals(expectedAmount, Integer.valueOf(value)); } } @Nested @DisplayName("with multi thread") class Context_With_Multi_Thread { @Test @DisplayName("does not decrease inventory by amount") void It_Does_Not_Decrease_Inventory_By_Amount() throws InterruptedException { int threadCount = 100; int decreaseAmount = 1; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch latch = new CountDownLatch(threadCount); for (int i = 0; i < threadCount; i++) { executorService.submit(() -> { try { // Perform the test inventoryRepository.decreaseByAmountWithoutLock(key, decreaseAmount); } catch (Exception e) { System.out.println(e.getMessage()); } finally { latch.countDown(); } }); } latch.await(); String value = redisStringsRepository.get(key); assertNotEquals(0, Integer.valueOf(value)); // 테스트 통과 안함. } } } @Nested @DisplayName("decreaseByAmount") class Describe_decreaseByAmount { @Nested @DisplayName("with 1 thread") class Context_With_Single_Thread { @Test @DisplayName("decreases inventory by amount") void It_Decreases_Inventory_By_Amount() throws InterruptedException { int decreaseAmount = 1; inventoryRepository.decreaseByAmount(key, decreaseAmount); String value = redisStringsRepository.get(key); int expectedAmount = initialAmount - decreaseAmount; assertEquals(expectedAmount, Integer.valueOf(value)); } } @Nested @DisplayName("with multi thread") class Context_With_Multi_Thread { @Test @DisplayName("decrease inventory by amount") void It_Does_Not_Decrease_Inventory_By_Amount() throws InterruptedException { int threadCount = 100; int decreaseAmount = 1; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch latch = new CountDownLatch(threadCount); for (int i = 0; i < threadCount; i++) { executorService.submit(() -> { try { // Perform the test inventoryRepository.decreaseByAmount(key, decreaseAmount); } catch (Exception e) { System.out.println(e.getMessage()); } finally { latch.countDown(); // Latch의 숫자가 1개씩 감소 } }); } latch.await(); // Latch의 숫자가 0이 될 때까지 기다리는 코드 String value = redisStringsRepository.get(key); assertEquals(0, Integer.valueOf(value)); } } } }
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형2 회귀문제인지, 분류문제인지 어떻게 판별하는 지 궁금합니다.
작업형2 회귀문제인지, 분류문제인지 처음에 판별하는게 중요하다고 했는데, f1 score, roc auc로 평가한다는 조건이 있으면 분류문제rsme 같은 걸로 평가한다는 조건이 있으면 회귀문제일까요 ?혹은 id / 타겟값 이면 분류문제, 하나의 값만 제출하는 것이면 회귀문제일까요 ? 궁금합니다
-
미해결코딩테스트 [ ALL IN ONE ]
시간복잡도
섹션1 [기본]시간복잡도 2:39 부분이에요. 여기서 시간복잡도가 전부 더하면 5n²+3n+33ns 아닌가요 왜 5n²+3n+30ns 인가요ㅠㅠ단순 오타인건지 제가 이해를 못하는건지 모르겠네요...ns는 나노세컨드 이런의미인가요..?
-
해결됨딥러닝 CNN 완벽 가이드 - TFKeras 버전
안녕하세요 교수님 CIFAR10의 픽셀 크기에 대해서 질문있습니다.
강의 1분 20초에 IMAGE_SIZE = 32로 설정하여 Feature Extractor의 마지막 layer의 크기가 (1,1,512)가 나와 학습이 원할하게 잘 안된다고 하셨습니다.그래서 IMAGE_SIZE를 64로 설정하셨는데, CIFAR10의 픽셀개수를 강제로 64개로 바꿔주면 화질이 더 안좋다고 하셨는데,저의 생각은 픽셀개수가 더 많아짐으로 화질이 더 좋은것이 아닌가 라는 생각이 들었습니다. 혹시 Interpolation 때문에 화질이 더 안좋아진다고 생각해도 될까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
혹시 MYSQL만 사용하는 경우랑 graphql이랑 같이하는경우랑 TypeORM사용법
혹시 MYSQL만 사용하는 경우랑 graphql이랑 같이하는경우랑 TypeORM사용법 차이 많이 나나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
lightgbm help 사용법
lightgbm을 사용할때 help를 활용하려하는데 어떻게 해야 할까요 ?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OSIV에 대해 질문이 있습니다.
질문1커넥션을 많이 사용하지 않는 경우 OSIV를 키고,실시간 요청이 많은 경우는 OSIV를 끈다고 했는데OSIV를 끄는 경우가 스트리밍 서비스나, 채팅 기능에 해당할가요 ?? 질문2질문1의 내용이 맞다면 만약 프로젝트에 게시판, 작성자와 1:1 채팅 기능이 있다면,게시판은 OSIV를 키고, 채팅 기능을 담고 있는 로직들에만 별도로 OSIV를 끄는 옵션이 따로 있나요??아니면 제가 멀티 모듈을 사용한적이 없어 자세히는 모르지만 멀티 모듈을 사용해서 각 기능들을 모듈화해서 따로 옵션을 설정하는건가요??
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
B4 최종본, 네비 메뉴가 이상해요.
B4 최종본 작성중인데영상에 나온대로 따라했는데네비 메뉴와 서브메뉴가 엄청 크게 출력됩니다 ㅠㅠ 왜 이럴까요..
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
컬렉션 조회 최적화 - 엔티티 조회 vs DTO 직접 조회
안녕하세요 강의 정말 잘 듣고있습니다.해당 챕터의 마지막 강의인 "API 개발 고급 정리" 영상에서 엔티티 조회 방식과 DTO 직접 조회 방식 중 어떤 것을 더 권장하는지에 대해 설명해주시는 부분에 대해 질문이 생겼습니다.저는 아무래도 DTO 조회 방식은 쿼리문도 까다롭고 DTO를 추가로 만들어야 하기 때문에 우선 손이 잘 안가는 느낌이있었던 반면에,엔티티 조회는 쿼리가 더 단순하고 배치사이즈 옵션으로 쉽게 페이징도 적용할 수 있어서 좀 더 다가오긴했습니다.두 방식에 대한 차이와 장단점을 듣고나서는 네트워크 성능과 컴퓨터 성능이 워낙 좋아져서 엔티티 조회 방식으로 접근해도 거의 충분하다라고 이해를 했는데요.강의를 만드신 시기가 몇년 전인만큼 현재는 시간이 흘러 네트워크 성능과 컴퓨터 성능이 더 발전했는데지금은 엔티티 조회하는 방식만으로 컬렉션 조회하는데 성능 문제가 없을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의문제3의 문제9번 질문드립니다
안녕하세요. 작업형1 모의문제3의 문제9번 질문드리고자 합니다.강사님께서 판다스의 datetime을 활용하여 풀어주셨는데혹시 'subscribed'를 슬라이싱하여 년/ 월/일 컬럼을 만들어 풀이하는 방법도 알 수 있을까요? 해보려고 하는데 자꾸 오류가 발생하여 여쭤봅니다 ㅠㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
결제 API 문의(frontend html)
포트원(아임포트) 결제 API 강의를 들으면서 실습중에 있습니다.frontend영역에서의 결제 버튼을 눌렀을때 결제 성공에 대한 부분이 이뤄지지 않는 상태입니다.포트원 라이브러리 추가하는부분이 당시 강의 내용때의 스크립트 내용이 일부 좀 다른부분도 있는상태이지만 똑같이 소스코드를 만들었을때 pg의 코드를 확인하고 넣어도 success가 false로 발생되고 있습니다. 이부분을 해결하기 위해서는 어떻게 해야할까요??
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
post-list.html - test 화면표시
안녕하세요 강사님.vuetify 3 사용중이며, 테이블이 표시가 안돼서 문의 남깁니다.<template> <v-data-table :headers="headers" :items="posts" :sort-by="name" class="elevation-1" items-per-page="5"> <template v-slot:top> <v-toolbar flat> <v-toolbar-title>Post List</v-toolbar-title> <v-divider class="mx-4" inset vertical></v-divider> <v-spacer></v-spacer> <v-dialog v-model="dialog" max-width="500px"> <template v-slot:activator="{ props }"> <v-btn color="primary" dark class="mb-2" v-bind="props"> New Post </v-btn> </template> <v-card> <v-card-title> <span class="text-h5">{{ formTitle }}</span> </v-card-title> <v-card-text> <v-container> <v-row> <v-col cols="12" sm="6" md="4"> <v-text-field v-model="editedItem.name" label="Dessert name"></v-text-field> </v-col> <v-col cols="12" sm="6" md="4"> <v-text-field v-model="editedItem.calories" label="Calories"></v-text-field> </v-col> <v-col cols="12" sm="6" md="4"> <v-text-field v-model="editedItem.fat" label="Fat (g)"></v-text-field> </v-col> <v-col cols="12" sm="6" md="4"> <v-text-field v-model="editedItem.carbs" label="Carbs (g)"></v-text-field> </v-col> <v-col cols="12" sm="6" md="4"> <v-text-field v-model="editedItem.protein" label="Protein (g)"></v-text-field> </v-col> </v-row> </v-container> </v-card-text> <v-card-actions> <v-spacer></v-spacer> <v-btn color="blue-darken-1" variant="text" @click="close"> Cancel </v-btn> <v-btn color="blue-darken-1" variant="text" @click="save"> Save </v-btn> </v-card-actions> </v-card> </v-dialog> <v-dialog v-model="dialogDelete" max-width="500px"> <v-card> <v-card-title class="text-h5">Are you sure you want to delete this item?</v-card-title> <v-card-actions> <v-spacer></v-spacer> <v-btn color="blue-darken-1" variant="text" @click="closeDelete">Cancel</v-btn> <v-btn color="blue-darken-1" variant="text" @click="deleteItemConfirm">OK</v-btn> <v-spacer></v-spacer> </v-card-actions> </v-card> </v-dialog> </v-toolbar> </template> <template v-slot:[`item.actions`]="{ item }"> <v-icon size="small" class="me-2" @click="editItem(item.raw)"> mdi-pencil </v-icon> <v-icon size="small" @click="deleteItem(item.raw)"> mdi-delete </v-icon> </template> <template v-slot:no-data> <v-btn color="primary" @click="initialize"> Reset </v-btn> </template> </v-data-table> </template> <script> export default { data: () => ({ dialog: false, dialogDelete: false, headers: [ { title: 'ID', align: 'start', sortable: false, key: 'name', }, { title: '제 목', key: 'calories' }, { title: '요 약', key: 'fat' }, { title: '수정일', key: 'carbs' }, { title: '작성자', key: 'protein' }, { title: 'Actions', key: 'actions', sortable: false }, ], posts: [], editedIndex: -1, editedItem: { name: '', calories: 0, fat: 0, carbs: 0, protein: 0, }, defaultItem: { name: '', calories: 0, fat: 0, carbs: 0, protein: 0, }, }), computed: { formTitle() { return this.editedIndex === -1 ? 'New Item' : 'Edit Item' }, }, watch: { dialog(val) { val || this.close() }, dialogDelete(val) { val || this.closeDelete() }, }, created() { this.initialize() }, methods: { initialize() { this.posts = [ { name: 1, calories: 'Django 3.0 Released', fat: '2019년 12월 장고 3.0 버전 팔표함.', carbs: '2020-07-13', protein: 'shkim', }, { name: 'Ice cream sandwich', calories: 237, fat: 9.0, carbs: 37, protein: 4.3, }, { name: 'Eclair', calories: 262, fat: 16.0, carbs: 23, protein: 6.0, }, ] }, editItem(item) { this.editedIndex = this.desserts.indexOf(item) this.editedItem = Object.assign({}, item) this.dialog = true }, deleteItem(item) { this.editedIndex = this.desserts.indexOf(item) this.editedItem = Object.assign({}, item) this.dialogDelete = true }, deleteItemConfirm() { this.desserts.splice(this.editedIndex, 1) this.closeDelete() }, close() { this.dialog = false this.$nextTick(() => { this.editedItem = Object.assign({}, this.defaultItem) this.editedIndex = -1 }) }, closeDelete() { this.dialogDelete = false this.$nextTick(() => { this.editedItem = Object.assign({}, this.defaultItem) this.editedIndex = -1 }) }, save() { if (this.editedIndex > -1) { Object.assign(this.posts[this.editedIndex], this.editedItem) } else { this.posts.push(this.editedItem) } this.close() }, }, } </script> 최근에 올려주신 코드를 복붙해봤는데도 잘 안됩니다 ㅜㅜ
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
외부 REST API 사용시 보안관련한 문제
안녕하세요~ 제가 현재 Nestjs 와 React로 구성한 app애서 추가로 다른 app의 API를 사용해야되는 상황인데요. API키와SECRET을 생성하고 이를 이용하여 호출하고 있는데, 이 때 클라이언트에서 요청을 한 내용을 보면 이 Authentication 관련된 토큰들이 다 노출되서 고민입니다.정확히 말하면 이건 백엔드 관련도 아니라 프론트쪽이긴한데요.. 프론트에서 다른 앱의 Restful API를 사용하여 요청할때 사용되는 토큰을 보안적으로 안전하게 숨길 수 있는 방법이 있을까요?
-
미해결타입스크립트 입문 - 기초부터 실전까지
관련 설정 파일 작성하는 방법
.eslintrc.js, package.json 같은 파일들은 직접 작성한건가요? 아니면 관련 커맨드 쳐서 생성되는 건가요?만약 직접 작성하신거면, 저희가 직접 프로젝트 만들 때는 공식문서를 보면서 어떤걸 적어야 하는지 따로 공부해야 하나요? 꽤나 복잡해보이네요
-
미해결
수료증은 어떻게 진행하나요?
대부분 강의 수업을 수강을 마쳐야만 수료증이 나오나요?아니면 그기간에 수강을 해야 하나요?