묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
엣지와 static에 대해서 질문드리고 싶습니다.
spi 통신에서 선생님처럼 1엣지로 설정하고 진행하였을 때 작동이 되지 않았습니다. 그래서 2엣지로 바꿔서 작동하는데 성공시켰습니다. 이런 경우는 어떤 문제가 있었던 걸까요? 그리고 hspi2의 주소를 넘길 때 static SPI_HandleTypeDef *mhspi;를 사용하셨는데 static을 제거해도 작동이 되었습니다. static의 목적에 대해서 알고 싶습니다.
-
미해결웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩
파일 업로드 에러
섹션 8 실습 도중에 파일을 업로드 하는데 "파일 업로드를 실패 하셨습니다."라고 나옵니다. 파일 업로드에 대한 코드를 수정한것도 없는데 파일이 업로드 되지 않아서 예전에 있던 질문을 확인하였는데 제 코드는 수정되어 있어서 문제점을 찾을수가 없어서 문의남깁니다.if(!(@move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadPath))) { echo("<script>alert('파일 업로드를 실패 하셨습니다.');history.back(-1);</script>"); exit; }
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
파티션 추가로 해결할 수 있지만 늘어난 파티션은 줄일 수 없지 않나요?
안녕하세요 강의 잘 듣고 있습니다 ㅎㅎ 앞선 강의에서 파티션은 늘릴 수는 있어도 줄일 수는 없다고 말씀하신 것 같은데 예시로 들으셨던 추석, 선날 등 특정 시점에 요청이 증가하는 케이스에서 컨슈머 랙이 지속적으로 증가하게 되는 것을 해결하기 위해서 파티션과 컨슈머를 증가시켜서 컨슈머 랙을 줄일 수 있겠지만 이후에 다시 요청이 줄었을 때는 이미 늘어난 파티션을 줄일 수 없는데.. 해당 해결방법 말고 다른 방법이 있는 걸까요? 아니면 늘어난 채로 계속 서비스하는 건지 궁금합니다 ㅎㅎ
-
해결됨Real MySQL 시즌 1 - Part 1
2강. VARCHAR(255) 저장되는 데이터의 길이 정보 질문
안녕하세요. 2강을 수강하면서 궁금한 점이 있어 질문 글 남깁니다. VARCHAR(30) vs VARCHAR(255) 둘 중에서 데이터 타입을 선택할 때 실제 사용하는 길이만큼만 명시해 주는 게 메모리 사용 효율을 높일 수 있다고 말씀해주셨는데요.VARCHAR(30)와 VARCHAR(255) 모두 저장되는 데이터의 길이 정보를 1 바이트(0~255 표현 가능)로 저장하는 것이 맞는걸까요?강의 자료에 VARCHAR(30) vs VARCHAR(255) 차이를 설명할 때 '디스크 공간 효율 차이도 미미하게 존재(1바이트 vs 2바이트)'라고 적혀 있어 VARCHAR(255)에서 저장되는 데이터 길이 정보에 2바이트의 공간을 할당한다는 의미로 이해되어서요. 좋은 강의 감사합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
eslint 설정 후 오류가 납니다.
강의대로 eslint 설정한 후 { "extends" : [ "react-app" ] } npm run dev 하면 아래와 같은 에러가 납니다. VITE v6.0.3 ready in 354 ms ➜ Local: http://localhost:5173/ ➜ Network: use --host to expose ➜ press h + enter to show help오후 4:41:35 [vite] Internal server error:C:\Dev\fullstack-app\frontend\src\main.jsx 1:1 error Parsing error: The keyword 'import' is reserved✖ 1 problem (1 error, 0 warnings) Plugin: vite-plugin-eslint File: C:/Dev/fullstack-app/frontend/src/main.jsx at TransformPluginContext._formatError (file:///C:/%EC%94%A8%EC%97%94%ED%8B%B0%ED%85%8C%ED%81%AC/Dev/fullstack-app/frontend/node_modules/vite/dist/node/chunks/dep-yUJfKD1i.js:47158:41) at TransformPluginContext.error (file:///C:/%EC%94%A8%EC%97%94%ED%8B%B0%ED%85%8C%ED%81%AC/Dev/fullstack-app/frontend/node_modules/vite/dist/node/chunks/dep-yUJfKD1i.js:47153:16) at TransformPluginContext.transform (file:///C:/%EC%94%A8%EC%97%94%ED%8B%B0%ED%85%8C%ED%81%AC/Dev/fullstack-app/frontend/node_modules/vite-plugin-eslint/dist/index.mjs:1:1989) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async EnvironmentPluginContainer.transform (file:///C:/%EC%94%A8%EC%97%94%ED%8B%B0%ED%85%8C%ED%81%AC/Dev/fullstack-app/frontend/node_modules/vite/dist/node/chunks/dep-yUJfKD1i.js:47001:18) at async loadAndTransform (file:///C:/%EC%94%A8%EC%97%94%ED%8B%B0%ED%85%8C%ED%81%AC/Dev/fullstack-app/frontend/node_modules/vite/dist/node/chunks/dep-yUJfKD1i.js:40852:27)오후 4:41:35 [vite] Pre-transform error:C:\Dev\fullstack-app\frontend\src\main.jsx 1:1 error Parsing error: The keyword 'import' is reserved 파싱 오류 같은데 어느 설정파일을 수정해야 할까요?
-
해결됨코틀린 코루틴 완전 정복
KTOR Server 에서 delay
- 학습 관련 질문을 남겨주세요. 질문을 상세히 작성하면 더 좋습니다.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, coroutine 강의를 듣고 ktor server 공부를 하는 중에 delay 관련 질의가 생겨 글 남깁니다. delay 의 경우 coroutine 이 스레드를 양보하고, 일정 시간 후에 다시 스레드가 비어있으면 점유하는 형식으로 진행될텐데, 아래와 같은 경우 delay 이후 코드가 실행되지 않습니다. 사용자 → KTOR Server → suspend function call → loop { logic → 너무 많은 동작을 제한하기위한 delay } ktor 는 기본적으로 요청이 IO Dispatcher 를 사용하는 것 같은데, coroutine 에서 delay 이후 기능이 동작하지 않는 것에 대한 이유가 있을까요..? (강의랑 무관한 내용이라 죄송합니다 ㅠ.ㅠ) /* Routing.kt */ fun Application.configureRouting(searcher: BaseSearcher) { routing { post("/search") { val params = call.receive<Map<String, String>>() searcher.logging("Received POST request with params: $params") val result: List<BaseDTO> = searcher.search(params) searcher.logging("POST Result: $result") call.respond(HttpStatusCode.OK, mapOf("result" to result)) } get("/") { call.respondText("Hello World!") } } } /* Searcher.kt */ /** * 함수 이름 : search * 내용 설명 : 입력된 map<string, string> param 을 바탕으로 요청 전송 및 응답 반환 */ override suspend fun search(searchParam: Map<String, String>): List<SimpleSearchLandResultDTO> { // 별도의 Job 으로 분리해서 오류시 상위 전파 제한 return HttpClient(CIO).use { client -> val parseResultLst: MutableList<SimpleSearchLandResultDTO> = mutableListOf() try { val initRequestResultDto: SimpleSearchResultDTO = sendFormedRequest(client, SearcherConst.URL_MAIN_PAGE, false) // 기본 페이지 요청이 성공했을 때 다음 요청을 진행 if (initRequestResultDto.isSuccess) { val mutableSearchParam = searchParam.toMutableMap() delay(300) while (true) { val eachPageSearchResultDto: SimpleSearchResultDTO = sendFormedRequest(client, makeGetUrl(mutableSearchParam), true) // 실패한 경우 종료 if (!eachPageSearchResultDto.isSuccess) { logging("[search] 조회 중 오류가 발생하였습니다.") break } // 결과가 빈 경우도 종료 else if (eachPageSearchResultDto.landSearchResultLst.isEmpty()) { break } // 결과가 있는 경우엔 전부 더해줌 parseResultLst.addAll(eachPageSearchResultDto.landSearchResultLst) logging("[search] result(${eachPageSearchResultDto.landSearchResultLst[0].currentPage} : ${eachPageSearchResultDto.landSearchResultLst}") // 마지막 페이지인 경우 종료 if (eachPageSearchResultDto.landSearchResultLst[0].currentPage == eachPageSearchResultDto.landSearchResultLst[0].maxPage ) { break } else { // 다음 페이지 수집 진행 mutableSearchParam["currentPage"] = (eachPageSearchResultDto.landSearchResultLst[0].currentPage + 1).toString() delay(300) } } } } catch (e: Exception) { logging("[search] search 함수 중 오류가 발생하였습니다. param: $searchParam, exception: $e") } logging("[search] Result : $parseResultLst") // parseResultLst 반환 parseResultLst } } private suspend fun sendFormedRequest(client: HttpClient, url: String, isResultNeed: Boolean): SimpleSearchResultDTO { return try { val response = client.get(url) { headers { append(HttpHeaders.Cookie, cookie.toCookieString()) append(HttpHeaders.Accept, SearcherConst.DEFAULT_HTTP_ACCEPT) append(HttpHeaders.AcceptEncoding, SearcherConst.DEFAULT_HTTP_ACCEPT_ENCODING) append(HttpHeaders.Connection, SearcherConst.DEFAULT_HTTP_CONNECTION) append(HttpHeaders.AcceptLanguage, SearcherConst.DEFAULT_HTTP_ACCEPT_LANGUAGE) append(HttpHeaders.UserAgent, SearcherConst.DEFAULT_HTTP_USER_AGENT) } } cookie.putAll(response.headers[HttpHeaders.SetCookie]?.split(";")?.map { it.split("=") }?. filter { it.size == 2 }?.filter { it[1] != "/" && it[1].isNotEmpty() }?.associate { it[0] to it[1] } ?: mapOf()) if (response.status != HttpStatusCode.OK) { SimpleSearchResultDTO(false) } else { SimpleSearchResultDTO(true, if(isResultNeed) parseData(response.bodyAsText()) else mutableListOf()) } } catch(e: Exception) { logging("[sendFormedRequest] Error : $e", Level.ERROR) SimpleSearchResultDTO(false) } }
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
2-3 강의를 듣는 도중 패키지 설치 후 오류가 떴습니다..
해당 오류가 떠서 해결을 못하고 있는 상황인데요.package.json 내에 설치되어 있고 build.gradle 도 다 확인해봤는데 해결이 안됩니다 ㅠㅠ... 모바일에서는 다음과 같은 오류로 뜹니다....
-
미해결[2024 업데이트] UX/UI 시작하기 : Figma 입문 (Inflearn Original)
컬러변수 사용 이유
컬러변수를 사용하는 이유를 모르겠어요.강의를 들어도 UI가 복잡해지고 한개의 컬러를 여러가지UI타입에 사용할 경우 왜 변수설정이 좋은지 모르겠어요.스타일이 등록이 간편해 보이는데, 왜 더 좋은가요?
-
해결됨친절한 블렌더 - [LV.0] 입문 필수
렌더링
해당 오브젝트가 레이아웃에서는 보이는데 렌더링을 하면 보이지 않아요.눈, 카메라 모두 켜져 있는데 뭐가 문제인건가요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
테스트 코드 빌드오류
안녕하세요 강의 설명이 너무 좋아 잘 따라가고있습니다ㅎㅎ저는 Docker + Spring Boot로 배포 자동화 시키는게 목표입니다! 문제는 기존에 로컬 DB 연결로 테스트 코드를 작성했었는데요!(개인 프젝)이 때문에 빌드가 안되다보니 따라가는데 조금 어려움이 있었습니다..! EC2안에 도커로 DB 띄워서 해결해야만 할 것 같은데 이렇게 해도Docker+Spring Boot 목차를 따라가는데 문제 없을까요? 테스트 파일을 삭제하고 싶진 않아서요!!다른 좋은 방법이 있으시다면 알려주시면 감사하겠습니다!
-
해결됨게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (6) - 쉐이딩 기초, 퐁 리플렉션 모델, 블린-퐁 쉐이딩
RGB 값 관련 질문드립니다.
light.position = {-3.0f, 3.0f, 3.0f, 1.0f}; light.ambient = {0.2f, 0.2f, 0.2f, 1.0f}; light.diffuse = {5.0f, 5.0f, 5.0f, 1.0f}; light.specular = {7.0f,7.0f, 7.0f, 1.0f}; light.att = {1.0f, 0.2f, 0.2f, 1.0f}; material.ambient = { 1.0f, 1.0f, 1.0f, 1.0f }; material.diffuse = { 1.0f, 1.0f, 1.0f, 1.0f }; material.specular = { 1.0f, 1.0f, 1.0f, 1.0f }; material.shineness = 32.0f;강의에서 렌더링에 사용된 광원, 매터리얼 파라미터 값들입니다. RGB를 나타내는 값은 일반적으로 0.0~1.0 사이의 float 값을 써서, 이를 0~255 정수범위로 매핑해서 사용한다고 알고 있습니다.하지만 강의에서는 1.0 이 넘는 float 값을 그대로 사용하는 상황이여서, 이게 무슨 차이인지 궁금하여 문의 남깁니다.
-
미해결게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (6) - 쉐이딩 기초, 퐁 리플렉션 모델, 블린-퐁 쉐이딩
vert_phong.vert negate 질문
학습 관련 질문 ❓ 을 남겨주세요. 상세히 작성하면 더 좋아요!출장이 잦아서, ✍ 답변에 시간이 좀 걸릴 수는 있습니다. 양해 바랍니다. 🏃 안녕하세요, 강의를 듣고 직접 구현해보며 연습중인데 한 가지 궁금한게 생겨 질문 드립니다. 앞서 진행했던 강의의 vertex shader와 마찬가지로, z-negate 를 해주어야한다고 생각해서 버텍스 쉐이더에서 vPos를 구하고 vPos.z *= -1 을 해주고 있었습니다. 하지만 강의 소스코드에는 이 negate해주는 부분이 없는게 왜인지 잘 모르겠습니다.강의 소스코드에는 C++ 코드 상에서 negate되어지는 부분이 있는걸까요? 저는 negate하지 않으면 아래와 같은 결과로 렌더링됩니다. vertex shader에서 z-negate하면 잘 나옵니다. #version 410 core struct Light { vec4 position; vec4 ambient; vec4 diffuse; vec4 specular; vec4 att; }; struct Material { vec4 ambient; vec4 diffuse; vec4 specular; float shineness; }; in vec4 aPos; in vec4 aNorm; uniform mat4 uMat; uniform Light light; uniform Material material; out vec4 vColor; void main() { vec4 vPos = uMat * aPos; vec4 vNorm = transpose(inverse(uMat)) * aNorm; vec3 N = normalize(vNorm.xyz); vec3 L = normalize(light.position.xyz - vPos.xyz); vec3 V = vec3(0.0f, 0.0f, 1.0f); vec3 R = reflect(-L,N); vec4 ambient = light.ambient * material.ambient; float d = length(light.position.xyz - vPos.xyz); float denom = light.att.x + light.att.y * d + light.att.z * d * d; vec4 diffuse = max(dot(L,N), 0.0) * light.diffuse * material.diffuse / denom; vec4 specular = pow(max(dot(R, V), 0.0), material.shineness) * light.specular * material.specular / denom; vColor = ambient + diffuse + specular; vPos.z *= -1; gl_Position = vPos; }
-
미해결3분만에 만드는 깃헙 블로그
저자/프로필 사진 변경이 너무 느리게 되네요
5분 넘게 걸리는 것 같아요 ㅠ
-
미해결Vue 3 & Firebase 10 커뮤니티 만들기 풀스택 - "활용편" (with Pinia, Quasar, Tiptap, VueUse)
functions.region is not a function
onCreateUser와 onDeleteUser 함수 작성 후 에뮬레이터를 실행하면functions.region is not a function이라고 로그에 나오고 있는데혹시 firebase-functions 버전 문제일까요??ㅠㅠ어떻게 해결 해야할 지 모르겠어요ㅠㅠ 도움 부탁드립니다~
-
해결됨친절한 블렌더 - [LV.0] 입문 필수
포인트 빛
0:40 포인트 빛을 사용했을 때 뒤에 계속 포인트 그림자가 생겨요ㅠpower: 1500wradius 0.1 m영상처럼 앞에 두 개, 배경 앞에 1개 위치하고 있어요.
-
미해결관찰가능성 엔지니어링
질문이 있습니다.
삭제된 글입니다
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
[파일 입출력] 28:50
28:20 영상을 보면 'Tilemap' 빈 파일을 만들지 않고 저장이 되는 모습입니다. 그런데 제가 진행을 하면 위 이미지와 같이 assert(file != nullptr);에 걸립니다. 혹시 28:50 같이 'Tilemap' 빈 파일을 만들고 타일맵 저장을 진행해야 하는 게 맞는 방법인지 알고 싶어 글 올립니다.
-
미해결관찰가능성 엔지니어링
강의 수강 중 질문
삭제된 글입니다
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
배열에서도 for in 사용이 가능한 것 같습니다!
11:42아래와 같이 for in을 배열에서도 사용이 가능한 것 같습니다!다만 권장되지는 않는 방법이라고 하네요.let arr = [1, 2, 3]; for (let i in arr) { console.log(arr[i]); }권장되는 방법: for...of, 일반 for 루프, forEach() 메서드 등
-
해결됨C개발자를 위한 최소한의 C++
순수 가상 클래스 선언과 일반 인트 변수의 선언과 다른가요?
순수 가상 클래스 강의에서 " virtual int getData() const = 0; " 이 코드는 선언만 있다고 말씀하셨습니다.int a = 0; 이라고 코드를 작성하면 선언 및 정의(초기화)가 된것인데 반해, 함수는 단순히 0을 단순대입했다고 해서 정의가 된것은 아니라는 말씀이신가요? 그렇다면 혹시 " virtual int getData() const; " 만으로 선언이 충분한데 " = 0 " 을하는 이유가 있나요? 단순 초기화 인가요?또 한가지, 엄밀히 말하면 int a = 0;은 인트 클래스의 인스턴스 a가 선언 및 정의 된거고, 클래스내 함수(메서드)는 인스턴스를 생성하는 건 아니기에 다른건지 궁금합니다. 항상 좋은 강의 감사드립니다!