묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2. 스케일링 질문
5회 작업형 2번 질문입니다.수치형 스케일링과 범주형 변수 원핫 인코딩은 같이 사용할 수 없나요 ? n_cols=['year', 'mileage', 'tax', 'mpg', 'engineSize']train[n_cols]=scaler.fit_transform(train[n_cols])test[n_cols]=scaler.transform(test[n_cols])c_cols = ['model', 'transmission', 'fuelType' ]train=pd.get_dummies(train[c_cols])test =pd.get_dummies(test[c_cols])이렇게 해버리면 수치형 데이터를 스케일링해도 해당 값이 사라지고, 원핫 인코딩된 데이터만 남습니다. 스케일링 코드를 뒤쪽으로 옮겨가도, 이미 사라진 수치형 데이터 컬럼명을 사용해서 에러가 뜹니다.그리고 강의에서는train = pd.get_dummies(train)test = pd.get_dummies(test)으로 진행하고 수치형 데이터를 아예 스케일링 안하고 넘어가셨는데, 어떻게 판단해서 해야하나요?
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
[질문 아님]
나름 대로 개인 프로젝트 만들어가는중입니다.요 강의에서 Zookeeper과 Kafka 분리 설치 및 3노드 구성하여 클러스터 구축 완료...제가 오라클 DBA 14년차이지만 이게 저랑 잘맞는거 같습니다. 좋은 강의 끝까지 열심히 들을게요수고하세요~
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
warning 관련
안녕하세요! 답이 나오기는 하는데 이 copy warning은 뭘까요? 어떻게 해결할까요?# print(df.shape) line = int(len(df) * 0.8) df = df[:line] # df.shape # print(df.isnull().sum()) r1 = df['f1'].std() med = df['f1'].median() df['f1'] = df['f1'].fillna(med) # df.isnull().sum() r2 = df['f1'].std() abs(r1 - r2)<ipython-input-47-f10e742b8062>:10: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy df['f1'] = df['f1'].fillna(med) 3.564064430008667
-
미해결블록체인, 가상자산거래소 보안
교안은 제공 안되는 건가요?
제목 그대로 입니다.교안을 찾을 수가 없네요.강사님 강의 일부 내용은 교안 보라고 하시고 넘어 가셨는데찾지를 못하겠습니다. ㅠㅠ 답변 부탁 드립니다.
-
해결됨디지털포렌식 입문자를 위한 디지털포렌식 전문가 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를 끄는 옵션이 따로 있나요??아니면 제가 멀티 모듈을 사용한적이 없어 자세히는 모르지만 멀티 모듈을 사용해서 각 기능들을 모듈화해서 따로 옵션을 설정하는건가요??
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
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> 최근에 올려주신 코드를 복붙해봤는데도 잘 안됩니다 ㅜㅜ