묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
크롤링 로켓배송 제외
안녕하세요. 문의드립니다.쿠팡 로켓배송 크롤링강의를 보고 쿠팡 1~10(위에 빨간리본상품) 중 로켓배송상품, 광고상품을 빼고 상품의 이름을 가져오고 싶은데요. 강의 보고 어떻게 적용을 해야할지 해매고 있어 문의드립니다.초보라 모르는게 많네요. 도와주세요~
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
스프링부트 3.0.2 querydsl + rest docs + propoerties
스프링부트 3.0.2로 따라하고 계신분들을 위한 공유입니다.queryDSLimplementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api"Spring REST Docsext { asciidocVersion = "3.0.0" }버전을 3.0.0으로 지정application.propertiesspring.h2.console.enabled=true spring.datasource.url=jdbc:h2:mem:test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password=
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
seeder is not a constructor
yarn seed를 통해 더미데이터를 생성하려 했으나 "seeder is not a constructor" 라는 에러에 마주칩니다. 어느 부분이 잘못됫는지 알아보기 위해 에러코드를 살펴봤으나 제 코드 부분이 아닌 typeorm-extension 부분에서 에러가 나는것 같아 해결하기 어렵습니다.TypeError: seeder is not a constructor at /Users/jinyoung/Desktop/try-own-version/practice-version/node_modules/typeorm-extension/src/seeder/module.ts:122:19 at Generator.next (<anonymous>) at fulfilled (/Users/jinyoung/Desktop/try-own-version/practice-version/node_modules/typeorm-extension/dist/seeder/module.js:5:58) dataSource.ts import dotenv from 'dotenv'; //dataSource에 entity를 입력해줄때는 절대경로면 못찾아온다. 그래서 상대 경로로 써줘야함 import { User } from './src/users/entities/user.entity'; import { DataSource } from 'typeorm'; const mode = process.env.NODE_ENV || 'development'; dotenv.config({ path: process.cwd() + `/.env.${mode}` }); const dataSource = new DataSource({ type: 'mysql', host: 'localhost', port: 3306, database: process.env.DB_DATABASE, username: process.env.DB_USERNAME, password: process.env.DB_PASSWORD, charset: 'utf8mb4_general_ci', entities: [User], migrations: [__dirname + '/src/migrations/*.ts'], synchronize: true, logging: true, }); export default dataSource; package.json seed부분 설정 "seed": "ts-node ./node_modules/typeorm-extension/dist/cli/index.js seed -d ./dataSource.ts" database/seeds/create-initial-data.ts import { User } from '../../users/entities/user.entity'; import { DataSource } from 'typeorm'; import { Seeder, SeederFactoryManager } from 'typeorm-extension'; export class UserSeeder implements Seeder { async run( dataSource: DataSource, factoryManager: SeederFactoryManager, ): Promise<any> { const userRepository = dataSource.getRepository(User); await userRepository.save({ email: 'ggg@gmail.com', firstName: 'sfvs', lastName: 'wdwdwd', nickname: 'hihi', }); } } typeorm-extension 버젼 "typeorm-extension": "^2.4.2", "typeorm": "^0.3.12", 시도해본 내용1. dataSource 생성시 new DataSource({... 중략seed:["create-initial-data.ts 경로"] 추가})2. db 삭제후 다시 생성(생성시 테이블 싱크까지 맞춘후 seed 시도)3. typeorm-extension 버전 문제일까 해서 다운그레이드 시도4. typeorm 0.3대는 유지하고 0.3.11, 0.3.10등 다른 버전으로 시도결과 모두 실패
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
자바스크립트에서는 항상 맨날 힙 구현해서 풀어야했는데..
실시간 정렬해야되는 문제들 보면 거의 무조건 힙구조도 같이 이용해야하는 문제들이여서..자바스크립트로 풀때는 최소 빨라도 3~4분정도는..요로코롬Min이나 Max 힙 구조 만드는데 소요해야하고,class MaxHeap { constructor() { this.heap = [null]; } push(value) { this.heap.push(value); let currentIndex = this.heap.length - 1; let parentIndex = Math.floor(currentIndex / 2); while (parentIndex !== 0 && value > this.heap[parentIndex]) { const temp = this.heap[parentIndex]; this.heap[parentIndex] = value; this.heap[currentIndex] = temp; currentIndex = parentIndex; parentIndex = Math.floor(currentIndex / 2); } } pop() { if (this.heap.length === 1) return; if (this.heap.length === 2) { return this.heap.pop(); } const returnValue = this.heap[1]; this.heap[1] = this.heap.pop(); let currentIndex = 1; let leftIndex = 2; let rightIndex = 3; while ( this.heap[currentIndex] < this.heap[leftIndex] || this.heap[currentIndex] < this.heap[rightIndex] ) { if (this.heap[leftIndex] < this.heap[rightIndex]) { const temp = this.heap[currentIndex]; this.heap[currentIndex] = this.heap[rightIndex]; this.heap[rightIndex] = temp; currentIndex = rightIndex; } else { const temp = this.heap[currentIndex]; this.heap[currentIndex] = this.heap[leftIndex]; this.heap[leftIndex] = temp; currentIndex = leftIndex; } leftIndex = currentIndex * 2; rightIndex = currentIndex * 2 + 1; } return returnValue; } } 심지어 문제 구조에서, 힙에 들어가야하는게 객체요소이면서, 객체의 어떤 Key 값에 따라서 실시간 정렬해야할 경우엔 여기서 또 out of index , key값 더 생각해서, class MinHeap { constructor() { this.heap = [null]; } isEmpty() { return this.heap.length === 1; } _swap(a, b) { [this.heap[a], this.heap[b]] = [this.heap[b], this.heap[a]]; } push(value) { this.heap.push(value); let currentIndex = this.heap.length - 1; let parentIndex = Math.floor(currentIndex / 2); // while (parentIndex !== 0 && this.heap[parentIndex].key > value.key) { this._swap(parentIndex, currentIndex); currentIndex = parentIndex; parentIndex = Math.floor(currentIndex / 2); } } pop() { if (this.isEmpty()) return; if (this.heap.length === 2) return this.heap.pop(); const returnValue = this.heap[1]; this.heap[1] = this.heap.pop(); let currentIndex = 1; let leftIndex = 2; let rightIndex = 3; while ( (this.heap[leftIndex] && this.heap[currentIndex].key > this.heap[leftIndex].key) || (this.heap[rightIndex] && this.heap[currentIndex].key > this.heap[rightIndex].key) ) { if (this.heap[rightIndex] === undefined) { this._swap(leftIndex, currentIndex); currentIndex = leftIndex; } else if (this.heap[rightIndex].key < this.heap[leftIndex].key) { this._swap(rightIndex, currentIndex); currentIndex = rightIndex; } else if (this.heap[rightIndex].key >= this.heap[leftIndex].key) { this._swap(leftIndex, currentIndex); currentIndex = leftIndex; } leftIndex = currentIndex * 2; rightIndex = currentIndex * 2 + 1; } return returnValue; } } 요로코롬 이렇게 힙구조 작성하는데만 4~5분 먹고, 그담 문제 풀이 본격적으로 시작할 수 있습니다..파이썬의 deque 같은경우는 자바스크립트에선 Queue 구조 1분. 먹고왜 사람들이 파이썬 코테로 많이 쓰는지 알겠네요..ㄷㄷ;;import heapq , 단 1초면 모듈 가져오고, 끝이네요.코테에서 import 모듈 제한 없다면 진짜 무조건 파이썬이네요 ;;
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
열부분 슬라이싱 질문
행부분을 temp = board[j][i+5]로 슬라이싱하셨는데열부분은 temp = board[j:j+5][i]로는 슬라이싱이 안되나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DI 이해도 확인
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]제가 DI를 제대로 이해한 것인지 확인 부탁드려도 될까요?MemberService클래스와 MemberServiceTest클래스의 멤버변수인 MemoryMemberRepository 객체가 다른 객체일 가능성이 있습니다. 각각의 두 클래스에서 굳이 동일한(총 2개) MemoryMemberRepository객체를 만들 필요는 없습니다. 왜냐하면 두 객체가 다른 객체일 가능성도 있고 목적상 다른 객체이어야 할 이유가 전혀 없기 때문입니다. 이러한 문제를 개선하기 위해 DI가 필요합니다. DI를 하는 방법은 다음과 같습니다. MemberService클래스에서 멤버변수에MemoryMemberRepository 객체를 생성하지 않고 참조변수만을 선언합니다. 생성자를 만들어 MemoryMemberRepository 객체를 주입받고 그 객체를 멤버변수 MemoryMemberRepository로서 사용하도록 합니다. MemberServiceTest클래스에서 MemberService 생성자를 사용하여 MemberService 객체를 생성하는데 이 때, 생성자의 인자에 MemoryMemberRepository 객체를 생성해 주입합니다. MemberService클래스에서 생성자를 만들었고 생성자의 인자로 MemoryMemberRepository 객체를 주입받고 그 객체를 멤버변수로 사용하기로 했다는 것을 잊지말아야 합니다. 이것이 핵심입니다. 물론 14분대 강의영상에서는 MemberServiceTest클래스에서 MemberService의 각 메서드들이 테스트되기 전 매번 MemberService 객체가 만들어져야 하므로 beforeEach() 메서드 안에서 구현이 되었을 뿐, DI의 원리는 지금까지 설명한 바와 동일합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Math.max
안녕하세요 강사님궁금한 것이 있는데요마지막에 answer = Math.max(answer, cnt)는 처음부터 못 사는 경우를 생각해서 하는건가요??answer = cnt만 해도 그냥 답이 나와가지고 궁금해서 여쭤봅니다.
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
이해가됐습니다...
강의를 보면서 왜 갑자기 count 1이 2가 되지 했는데hanoi 함수가 스택에 쌓이면서 count가 2이었던 함수 3이었던 함수가 끝이 안났기 때문에 계속 count가 올라갔던거군요. 이거 때문에 분명 count 1인 상태로 함수가 끝났는데 갑자기 2이었던 함수가 왜 시작되는지 의아했습니다. 동영상 5번 반복적으로 보니깐 이제야 이해되네요! 감사합니다!
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
Docker 설치 질문드립니다.
윈도우에 WSL2 설치해서 사용중인 사람도Docker Desktop 을 윈도우 버전으로 설치 해야하는게 맞는건가요?Docker Desktop 도 설치하고, 노션에 있는 설치 스크립트도 실행하면 될까요?
-
미해결3dsmax 초급부터 전문가까지 - 한방에 끝내는 3dsmax 강좌
tank rig 저장 후 열었을 때 오류
탱크 리깅 수업 5번인 track spline 까지 따라하고 맥스 파일을 저장후 다시 열었는 데 오류가 생긴건지 바퀴나 헬퍼들이 한곳에 합쳐져 있습니다. 본은 사라진건지 보이지도 않습니다. 도대체 뭐가 원인인지 감도 안잡힙니다. 버전은 2023입니다.
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
npm run dev 에러
➜ vue-til-server git:(master) ✗ npm i bcrypt npm WARN deprecated bcrypt@3.0.8: versions < v5.0.0 do not handle NUL in passwords properlynpm WARN deprecated node-pre-gyp@0.14.0: Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the futurenpm ERR! code 1npm ERR! path /Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcryptnpm ERR! command failednpm ERR! command sh -c node-pre-gyp install --fallback-to-buildnpm ERR! CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.onpm ERR! CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.onpm ERR! CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.onpm ERR! Failed to execute '/opt/homebrew/Cellar/node/19.6.0/bin/node /opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node --module_name=bcrypt_lib --module_path=/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcrypt/lib/binding --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v111' (1)npm ERR! node-pre-gyp info it worked if it ends with oknpm ERR! node-pre-gyp info using node-pre-gyp@0.14.0npm ERR! node-pre-gyp info using node@19.6.0 | darwin | arm64npm ERR! node-pre-gyp WARN Using needle for node-pre-gyp https download npm ERR! node-pre-gyp info check checked for "/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node" (not found)npm ERR! node-pre-gyp http GET https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.8/bcrypt_lib-v3.0.8-node-v111-darwin-arm64-unknown.tar.gznpm ERR! node-pre-gyp http 404 https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.8/bcrypt_lib-v3.0.8-node-v111-darwin-arm64-unknown.tar.gznpm ERR! node-pre-gyp WARN Tried to download(404): https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.8/bcrypt_lib-v3.0.8-node-v111-darwin-arm64-unknown.tar.gz npm ERR! node-pre-gyp WARN Pre-built binaries not found for bcrypt@3.0.8 and node@19.6.0 (node-v111 ABI, unknown) (falling back to source compile with node-gyp) npm ERR! node-pre-gyp http 404 status code downloading tarball https://github.com/kelektiv/node.bcrypt.js/releases/download/v3.0.8/bcrypt_lib-v3.0.8-node-v111-darwin-arm64-unknown.tar.gz npm ERR! gyp info it worked if it ends with oknpm ERR! gyp info using node-gyp@9.3.0npm ERR! gyp info using node@19.6.0 | darwin | arm64npm ERR! gyp info ok npm ERR! gyp info it worked if it ends with oknpm ERR! gyp info using node-gyp@9.3.0npm ERR! gyp info using node@19.6.0 | darwin | arm64npm ERR! gyp info find Python using Python version 3.10.10 found at "/opt/homebrew/opt/python@3.10/bin/python3.10"npm ERR! gyp info spawn /opt/homebrew/opt/python@3.10/bin/python3.10npm ERR! gyp info spawn args [npm ERR! gyp info spawn args '/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',npm ERR! gyp info spawn args 'binding.gyp',npm ERR! gyp info spawn args '-f',npm ERR! gyp info spawn args 'make',npm ERR! gyp info spawn args '-I',npm ERR! gyp info spawn args '/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcrypt/build/config.gypi',npm ERR! gyp info spawn args '-I',npm ERR! gyp info spawn args '/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',npm ERR! gyp info spawn args '-I',npm ERR! gyp info spawn args '/Users/seungwonjang/Library/Caches/node-gyp/19.6.0/include/node/common.gypi',npm ERR! gyp info spawn args '-Dlibrary=shared_library',npm ERR! gyp info spawn args '-Dvisibility=default',npm ERR! gyp info spawn args '-Dnode_root_dir=/Users/seungwonjang/Library/Caches/node-gyp/19.6.0',npm ERR! gyp info spawn args '-Dnode_gyp_dir=/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp',npm ERR! gyp info spawn args '-Dnode_lib_file=/Users/seungwonjang/Library/Caches/node-gyp/19.6.0/<(target_arch)/node.lib',npm ERR! gyp info spawn args '-Dmodule_root_dir=/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcrypt',npm ERR! gyp info spawn args '-Dnode_engine=v8',npm ERR! gyp info spawn args '--depth=.',npm ERR! gyp info spawn args '--no-parallel',npm ERR! gyp info spawn args '--generator-output',npm ERR! gyp info spawn args 'build',npm ERR! gyp info spawn args '-Goutput_dir=.'npm ERR! gyp info spawn args ]npm ERR! gyp info ok npm ERR! gyp info it worked if it ends with oknpm ERR! gyp info using node-gyp@9.3.0npm ERR! gyp info using node@19.6.0 | darwin | arm64npm ERR! gyp info spawn makenpm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]npm ERR! In file included from ../src/bcrypt_node.cc:1:npm ERR! In file included from ../../nan/nan.h:174:npm ERR! ../../nan/nan_callbacks.h:55:23: error: no member named 'AccessorSignature' in namespace 'v8'npm ERR! typedef v8::Local<v8::AccessorSignature> Sig;npm ERR! ~~~~^npm ERR! In file included from ../src/bcrypt_node.cc:1:npm ERR! ../../nan/nan.h:2536:8: error: no matching member function for call to 'SetAccessor'npm ERR! tpl->SetAccessor(npm ERR! ~~~~~^~~~~~~~~~~npm ERR! /Users/seungwonjang/Library/Caches/node-gyp/19.6.0/include/node/v8-template.h:814:8: note: candidate function not viable: no known conversion from 'imp::Sig' (aka 'int') to 'v8::SideEffectType' for 7th argumentnpm ERR! void SetAccessor(npm ERR! ^npm ERR! /Users/seungwonjang/Library/Caches/node-gyp/19.6.0/include/node/v8-template.h:807:8: note: candidate function not viable: no known conversion from 'imp::NativeGetter' (aka 'void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value> &)') to 'v8::AccessorGetterCallback' (aka 'void (*)(Local<v8::String>, const PropertyCallbackInfo<v8::Value> &)') for 2nd argumentnpm ERR! void SetAccessor(npm ERR! ^npm ERR! In file included from ../src/bcrypt_node.cc:1:npm ERR! In file included from ../../nan/nan.h:2884:npm ERR! ../../nan/nan_typedarray_contents.h:34:43: error: no member named 'GetContents' in 'v8::ArrayBuffer'npm ERR! data = static_cast<char*>(buffer->GetContents().Data()) + byte_offset;npm ERR! ~~~~~~~~^npm ERR! 3 errors generated.npm ERR! make: *** [Release/obj.target/bcrypt_lib/src/bcrypt_node.o] Error 1npm ERR! gyp ERR! build error npm ERR! gyp ERR! stack Error: make failed with exit code: 2npm ERR! gyp ERR! stack at ChildProcess.onExit (/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:203:23)npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:512:28)npm ERR! gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:293:12)npm ERR! gyp ERR! System Darwin 22.3.0npm ERR! gyp ERR! command "/opt/homebrew/Cellar/node/19.6.0/bin/node" "/opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node" "--module_name=bcrypt_lib" "--module_path=/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcrypt/lib/binding" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v111"npm ERR! gyp ERR! cwd /Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcryptnpm ERR! gyp ERR! node -v v19.6.0npm ERR! gyp ERR! node-gyp -v v9.3.0npm ERR! gyp ERR! not ok npm ERR! node-pre-gyp ERR! build error npm ERR! node-pre-gyp ERR! stack Error: Failed to execute '/opt/homebrew/Cellar/node/19.6.0/bin/node /opt/homebrew/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node --module_name=bcrypt_lib --module_path=/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcrypt/lib/binding --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v111' (1)npm ERR! node-pre-gyp ERR! stack at ChildProcess.<anonymous> (/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/node-pre-gyp/lib/util/compile.js:83:29)npm ERR! node-pre-gyp ERR! stack at ChildProcess.emit (node:events:512:28)npm ERR! node-pre-gyp ERR! stack at maybeClose (node:internal/child_process:1098:16)npm ERR! node-pre-gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:304:5)npm ERR! node-pre-gyp ERR! System Darwin 22.3.0npm ERR! node-pre-gyp ERR! command "/opt/homebrew/Cellar/node/19.6.0/bin/node" "/Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"npm ERR! node-pre-gyp ERR! cwd /Users/seungwonjang/Desktop/VUE-ENDGAME/vue-til-server/node_modules/bcryptnpm ERR! node-pre-gyp ERR! node -v v19.6.0npm ERR! node-pre-gyp ERR! node-pre-gyp -v v0.14.0npm ERR! node-pre-gyp ERR! not oknpm ERR! A complete log of this run can be found in:npm ERR! /Users/seungwonjang/.npm/_logs/2023-02-12T15_29_26_893Z-debug-0.log➜ vue-til-server git:(master) ✗ 미치겠습니다..npm i -g @vue/cli는 입력한 상태입니다그뒤로 npm run dev를 입력하면 에러가 나서 npm i bycrypt 를 입력하면 ➜ vue-til-server git:(master) ✗ npm i bycrypt npm ERR! code E404npm ERR! 404 Not Found - GET https://registry.npmjs.org/bycrypt - Not foundnpm ERR! 404 npm ERR! 404 'bycrypt@*' is not in this registry.npm ERR! 404 npm ERR! 404 Note that you can also install from anpm ERR! 404 tarball, folder, http url, or git url.npm ERR! A complete log of this run can be found in:npm ERR! /Users/seungwonjang/.npm/_logs/2023-02-12T15_33_38_306Z-debug-0.log해당 에러가 발생합니다 확인 부탁드립니다
-
미해결대세는 쿠버네티스 (Helm편)
jenkins에서 helm, kubectl 사용하도록 설정?
안녕하세요.강의 잘 듣고 있습니다.jenkins에서 helm, kubectl 사용할 수 있도록 설정하는 부분에 대하여 질문드립니다.강의에서kubectl, helm 명령어가 동작하지 않아 mkdir,cp,chown 명령어 사용하고 나니, 해당 명령어들을 jekins에서 사용할 수 있게 되었는데 사용 가능해지는지 원리가 궁금합니다.강의만 들었을 때는 디렉토리생성, 파일copy, jekins권한부여 이정도만 다루고 있는데...이 명령어들로 인해 어떻게 사용이 가능해지는 원리가 궁금합니다! 감사합니다.
-
미해결대세는 쿠버네티스 (초급~중급편)
Vagrantfile 내부 질문드립니다.
설치완료 후 kubectl get pod -A 실행시coredns, dashboard 관련 pod가 계속 pending 상태이고, 강의에서 해당명령어를 쳤을때와 다르게 pod 중 calico 관련 파드가 존재하지 않아서 Vagrantfile의 Calico 설치부분중# Calico 설치 curl https://docs.projectcalico.org/manifests/calico.yaml -O kubectl apply -f calico.yaml구문을 직접 master node에서 커맨드로 쳐본 결과[root@k8s-master ~]# kubectl apply -f calico.yamlerror: error validating "calico.yaml": error validating data: invalid object to validate; if you choose to ignore these errors, turn validation off with --validate=false에러가 발생합니다.해결방법 문의드립니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
12분대 memberRepository 참조변수 이름 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]MemberService에서 아직 어떤 DB를 사용할지 모르니 참조타입을 MemberRepository로 하고생성자를 MemoryMemberRepository를 한 것은 이해가 갔습니다. 다형성을 위해서 그러신 것이죠.private final MemberRepository memberRepository = new MemoryMemberRepository(); 근데 강의영상 12:00부터의도치 않은 Member객체를 가르킬 수 있으니 MemberServiceTest에서 멤버변수 AfterEach()를 새로 만들어 리포지토리를 지우기 위해 MemoryMemberRepository의 clearStore()를 가져와야 했습니다.그래서 MemberServiceTest 16라인에MemoryMemberRepository memberRepository = new MemoryMemberRepository();이렇게 작성하셨습니다. 근데 제가 생각했을 때 참조타입도 MemoryMemberRepository 이고 생성자도 MemoryMemberRepository인데 어째서 참조변수의 이름은 memberRepository 인건지 궁금합니다. 귀한 시간 내주셔서 제 질문 읽어주셔서 감사합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Basic Video Call을 통해서 영상 접속이 처음에만 되는 이유가 뭘까요?
코드를 그대로 따라하면서 작성했는데이상하게도 영상 마지막 부분에서 나온 웹사이트를 통해서 시도해보면채널 참가 첫 1회시에만 기능하고채널 나가기를 누른 후 다시 참여할때는 emulator에서 아무리 기다려도 채널에 유저가 없습니다 가 뜹니다.이유를 찾으려고 해봤지만,, 쉽지 않네요...
-
미해결퀘이사(Quasar) 완벽 마스터: Vue 프론트 웹을 빠르게 만들고 싶다면! (Based Vue3)
훌륭한 강의 잘 보고 있습니다~
혹시 파일 업로드 처리 관련해서는 추가 강의나 예제 자료를 제공해주실 수는 없을까요~?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
시간복잡도 기준 질문
전 강의(수의 합)에서는 시간복잡도 때문에 for문 한번만 작성해야하고 어느문제는 그냥풀어도 되는건지 그 기준이 궁금합니다.
-
미해결몇 줄로 끝내는 인터랙티브 웹 개발 노하우 [초급편]
수업 파일 부탁드립니다~
안녕하세요수업 자료를 받아볼 수 있을까요?실무편은 자료가 있는데 초급편은 없네요 ㅠㅠdbtkdgml91@gmail.com로 부탁드립니다. 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
조건(where)을 포함한 일대다(1:N) 페이징 쿼리 질문
안녕하세요. 영한님20만 수강생 진심으로 축하드립니다.^^🎉프로젝트 도중에 막혀서 강의를 👀복습하던 중 질문드립니다..!(영한님 강의 덕분에 저도 이러한 고민을 하게되다니... 감사의 말씀 드립니다.😊) 페이징이 가능하고 item.name으로 order를 조회하려고 하면 어떠한 방식으로 코드를 작성 해야할까요? 일단 제가 생각한 방법은 다음과 같습니다.V3.1 적용요구사항은 회원(member), 결제(payment), 배송(delievery), 주문 상품(orderItem)을 포함해서 페이징이 되도록 주문(order)을 조회하고, 조건으로 상품 이름(item.name)으로 조회가 가능해야 하는 것 입니다.orderItem은 일대다 관계 이기 때문에 페이징이 불가합니다.그래서 V3.1의 방법인 hibernate.default_batch_fetch_size 을 이용하여 IN 쿼리로 orderItem을 조회하려고 합니다.이렇게 하면 페이징이 가능하도록 order는 조회할수는 있지만, item.name을 조건으로 조회 할 수는 없습니다. V5 적용그래서 V5에서 알려주신 방법을 사용했습니다.order와 orderItem을 분리한다.order을 이용하여 orderItem을 조회한다.(추가로 item.name 조건도 넣는다.)조회한 결과를 하나의 List으로 만든다.List을 다시 Page로 변환한다.public Page<AdminOrderListQueryDto> findOrdersByAdmin(Pageable pageable, OrderSearchCondition condition) { // 주문 전체 조회 List<AdminOrderListQueryDto> content = queryFactory .select(new QAdminOrderListQueryDto(order.id, order.status.stringValue(), order.safeKingPayment.amount, order.createDate, order.merchantUid, new QAdminOrderListPaymentQueryDto(order.safeKingPayment.status.stringValue()), new QAdminOrderListMemberQueryDto(order.member.name), new QAdminOrderListDeliveryQueryDto(order.delivery.receiver, order.delivery.status.stringValue())) ) .from(order) .leftJoin(order.safeKingPayment, safekingPayment) .leftJoin(order.delivery, delivery) .leftJoin(order.member, member) .where( orderBetweenDate(condition.getFromDate(), condition.getToDate()), deliveryStatusEq(condition.getDeliveryStatus()), paymentStatusEq(condition.getPaymentStatus()) ) .orderBy(order.createDate.desc()) .fetch(); // 주문 아이디 저장 List<Long> orderIds = content.stream() .map(o -> o.getId()) .collect(Collectors.toList()); // 상품명으로 검색 조건 Map<Long, List<AdminOrderListOrderItemQueryDto>> orderItemMap = findOrderItemMap(orderIds, condition.getKeyword()); // 주문객체에 주문 상품컬렉션 저장 content.forEach(o -> o.setOrderItems(orderItemMap.get(o.getId()))); // 주문상품이 null이 아닌 컬렌션으로 구성 List<AdminOrderListQueryDto> resultContent = content.stream() .filter(o -> o.getOrderItems() != null) .collect(Collectors.toList()); // List를 Page로 변환 PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize()); int start = (int) pageRequest.getOffset(); int end = Math.min(start + pageRequest.getPageSize(), resultContent.size()); if(start > end) { throw new OrderException("데이터가 없습니다. 관리자에게 문의하세요."); } return new PageImpl<>(resultContent.subList(start, end), pageRequest, resultContent.size()); } private Map<Long, List<AdminOrderListOrderItemQueryDto>> findOrderItemMap(List<Long> orderIds, String keyword) { // 주문 상품 검색(item.name 조건 포함) List<AdminOrderListOrderItemQueryDto> orderItems = queryFactory.select(new QAdminOrderListOrderItemQueryDto(orderItem.order.id, orderItem.id, orderItem.item.name)) .from(orderItem) .leftJoin(orderItem.item, item) .where( orderItem.order.id.in(orderIds), keywordContains(keyword) ) .fetch(); // Map 으로 변환 Map<Long, List<AdminOrderListOrderItemQueryDto>> orderItemMap = orderItems.stream() .collect(Collectors.groupingBy(orderItemQueryDto -> orderItemQueryDto.getOrderId())); return orderItemMap; } // 아이템이름 포함 조건 private BooleanExpression keywordContains(String keyword) { return hasText(keyword) ? item.name.contains(keyword) : null; } 이러한 방식을 사용하는게 맞을까요? 🤔 감사합니다.^^
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
!pip install -r requirements.txt 설치시 에러
!pip install -r requirements.txt 설치시 에러 메시지가 뜹니다 에러 내용이 길어서 아래 세 부분만 켭쳐했습니다-에러메시지 나오기전 바로 위-에러메시지 시작부분-에러메시지 끝부분 정말 왕초보이니 해결책 제발 쉽게 설명좀 부탁드립니다