묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
Thread.sleep 질문입니다.
제가 이해한 바로는 챕터9장 request스코프 강의에서 Thread.sleep을 이용해서 request소멸을 지연하였습니다.이때 sleep메서드는 InterruptedException를 가지고 있기때문에 예외처리를 해줘야합니다.그래서 throws로 예외를 넘겼는데 어떻게 처리되는 건지 궁금합니다.package hello.core2.web; import hello.core2.common.MyLogger; import hello.core2.logdemo.LogDemoService; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.ObjectProvider; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequiredArgsConstructor public class LogDemoController { private final LogDemoService logDemoService; private final ObjectProvider<MyLogger> myLoggerProvider; //의존관계 주입이 일어남 -> MyLogger는 스코프가 request이다. //request의 생존범위는 고객의 요청이 들어오고 나오기까지의 범위이다. //그런데 고객의 요청이들어오지를 않으니 오류가 난다. @RequestMapping("log-demo") @ResponseBody //뷰 화면이 없으므로 ResponseBody로 바로 반환 //원래는 뷰리졸버에게 템플릿을 넘긴다. public String logDemo(HttpServletRequest request) throws InterruptedException { MyLogger myLogger = myLoggerProvider.getObject();// getObject를 호출시키게해서 request 요청을 한다. String requestURL = request.getRequestURL().toString(); myLogger.setRequestURL(requestURL); //request 시작 myLogger.log("controller test"); Thread.sleep(1000); logDemoService.logic("testId"); //request 요청 마지막 //request close //request 요청이 끝남 return "OK"; } }
-
미해결MySQL 성능 최적화
AUTO INC Lock 하고 뮤택스 락 차이 관련해서 질문 드립니다.
제가 알기로는 뮤택스나 Auto inc Lock 둘다 Lock 기법을 이용해서 사용하는 것으로 알고 있습니다. 그런데 Auto Inc Lock 경우 뮤택스 락과 어떤 것이 차이가 있어서 뮤택스가 더 가볍다는 건가요? 제가 알기로는 Lock 기법이뮤택스세마포어모니터이렇게 3가지가 있다고 알고 있습니다.(간단히 설명하자면....) 일반적으로 뮤택스 경우 Lock 기법을 이용해특정 임계영역을 하나의 스레드로 작동해서 동시성 문제를 해결하고자 하는것인데 그외 세마포어, 모니터 경우 부가 기능 세마포어: 특정 임계영역에 몇개의 스레드를 허용 할것인지그리고 뮤택스 경우 해당 스레드가 Lock을 얻었으면 직접 Lock 을 해지해야 되는 반면 세모포어는 다른 스레드가 직접 다른 스레드 Lock을 해지 가능 모니터: 특정 스레드가 Lock을 획득하고 임계영역에 들어왔을때 어떠한 조건으로 인해 wating 상태로 변환되고 그 다음 스레드가 Lock 획득 후 임계영역으로 들어온다. 이렇게 알고 있습니다. 그럼 여기서 Auto Inc Lock 경우 어떤 Lock 기법을 이용하길래 뮤택스보다 느리다는 건가요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
ios 이미지 전송 질문
Future<void> uploadFile() async { // file picker를 통해 파일 선택 final filePath = _image!.path; // 파일 경로를 통해 formData 생성 var dio = Dio(); var formData = FormData.fromMap({ 'file' : await MultipartFile.fromFile(filePath!) }); dio.options.contentType = 'multipart/form-data'; dio.options.maxRedirects.isFinite; final token = await ref.read(secureStorageProvider).read(key:ACCESS_TOKEN_KEY); dio.options.headers.addAll({ 'authorization': 'bearer $token', }); print("ok"); // 업로드 요청 final response = await dio.post("http://$ip/s3/upload", data: formData); _downloadUrl = response.data; print(response.statusCode.toString() + "hihi"); }이미지 업로드 코드로 위 코드를 사용하고있는데 안드로이드 애뮬레이터에서는 전송이 잘 되지만 ios에서 해당 코드를 실행하면[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: DioError [DioErrorType.response]: Http status error [401] 계속 위와 같은 에러가 뜹니다 구글에 검색해도 잘 안나와서 질문드립니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
IconButton 위치(정렬??) 질문
안녕하세요. 질문이 있어서 글올립니다. 8강 web_view까지 봤는데요, appBar에서 actions하위 IconButton home icon위치를 우측에서 좌측으로 변경하고 싶습니다. 방법이 있을까요???IconButton에 alignment속성이 있어서 추가해줘봤는데 어떤 값을 지정해도 우측에만 나오더라구요 ㅠㅠ return Scaffold(appBar: AppBar(title: Text('Wonsun'),backgroundColor: Colors.orange,centerTitle: true,actions: [IconButton(alignment: Alignment.topLeft,onPressed: () {controller.loadRequest(homeUrl);},icon: const Icon(Icons.home,color: Colors.white,))],),body: WebViewWidget(controller: controller,),);
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
insert() 출력할 때
안녕하세요수업 들으면서 이것저것 시도해보다가궁금한 것이 생겨 질문 올립니다.insert(2,7)print(a) 로 했을 때와print(a.insert(2,7)) 로 입력했을 시출력이 다릅니다.왜 다른지 알려주실 수 있을까요?a = [5, 2, 3, 1, 4] a.insert(2, 7) print(a) print(">>>>>") print(a.insert(2,7))
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:field 에 id부여 방식에 대해서 궁금합니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]먼저 올해도 spring강의 수강생들과 강사님 모두 새해 복 많이 받으시길 기원합니다제가 질문드리고싶은 사항은 th:field=*{regions} 를 통해서 id,name값을 설정하는 부분입니다 addForm에서는 item.regions에 아무런 값이 없는데도 불구하고 id를 th: each 문에 맞춰서 regions1,2,3 를 타임리프가 알아서 단순히 텍스트로 생성해주는 건가요?? addform에서는 분명 데이터가 없을텐데 저렇게 id가 생성되는 이유가 궁금해서 질문 드립니다
-
해결됨Next + React Query로 SNS 서비스 만들기
"Error: This action with HTTP GET is not supported."
안녕하세요.next-auth 로그인부분 수강중 "Error: This action with HTTP GET is not supported." 가 뜨고 있습니다. 다른분들 해결방법이 대부분 버전이슈였어서 버전을 맞췄는데도 해당 오류가 사라지지 않아서 질문드립니다..// package.json { "name": "nadang-com", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint", "mock": "npx tsx watch ./src/mocks/http.ts" }, "dependencies": { "@auth/core": "^0.18.0", "@faker-js/faker": "^8.4.1", "classnames": "^2.5.1", "dayjs": "^1.11.10", "next": "14.1.0", "react": "^18", "next-auth": "^5.0.0-beta.3", "react-dom": "^18" }, "devDependencies": { "@mswjs/http-middleware": "^0.9.2", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "cors": "^2.8.5", "eslint": "^8", "eslint-config-next": "14.1.0", "express": "^4.18.2", "msw": "^2.1.7", "typescript": "^5" }, "msw": { "workerDirectory": "public" } }# 터미널오류 ○ Compiling /api/auth/[...nextauth] ... ✓ Compiled /api/auth/[...nextauth] in 894ms (494 modules) ########### http://localhost:9090 ########### http://localhost:9090 [auth][error] UnknownAction: Cannot parse action at /api/auth/providers .Read more at https://errors.authjs.dev#unknownaction at parseActionAndProviderId (webpack-internal:///(rsc)/./node_modules/next-auth/node_modules/@auth/core/lib/utils/web.js:90:49) at toInternalRequest (webpack-internal:///(rsc)/./node_modules/next-auth/node_modules/@auth/core/lib/utils/web.js:32:40) at Auth (webpack-internal:///(rsc)/./node_modules/next-auth/node_modules/@auth/core/index.js:82:103) ..중략 [auth][error] UnknownAction: Cannot parse action at /api/auth/error .Read more at https://errors.authjs.dev#unknownaction at parseActionAndProviderId (webpack-internal:///(rsc)/./node_modules/next-auth/node_modules/@auth/core/lib/utils/web.js:90:49) at toInternalRequest (webpack-internal:///(rsc)/./node_modules/next-auth/node_modules/@auth/core/lib/utils/web.js:32:40) at Auth (webpack-internal:///(rsc)/./node_modules/next-auth/node_modules/@auth/core/index.js:82:103) at httpHandler (webpack-internal:///(rsc)/./node_modules/next-auth/index.js:139:80) at C:\Users\INA\Documents\workspace\next\nadang-sns\node_modules\next\dist\compiled\next-server\app-route.runtime.dev.js:6:63815 ... at DevServer.renderToResponseWithComponentsImpl (C:\Users\INA\Documents\workspace\next\nadang-sns\node_modules\next\dist\server\base-server.js:1463:53) ○ Compiling /src/middleware ... ✓ Compiled /src/middleware in 1197ms (218 modules) //LoginModal.tsx "use client"; import style from "@/app/(beforeLogin)/_component/login.module.css"; import { signIn } from "next-auth/react"; import { useRouter } from "next/navigation"; import { ChangeEventHandler, FormEventHandler, useState } from "react"; export default function LoginModal() { const [id, setId] = useState(""); const [password, setPassword] = useState(""); const [message, setMessage] = useState(""); const router = useRouter(); const onSubmit: FormEventHandler<HTMLFormElement> = async (e) => { e.preventDefault(); setMessage(""); let shouldRedirect = false; try { await signIn("credentials", { username: id, password, redirect: false, //true로 하면 서버에서 리다이렉트 }); shouldRedirect = true; } catch (error) { console.error(error); setMessage("아이디 또는 비밀번호가 일치하지 않습니다."); } if (shouldRedirect) { router.replace("/home"); } }; const onClickClose = () => { router.back(); }; const onChangeId: ChangeEventHandler<HTMLInputElement> = (e) => { setId(e.target.value); }; const onChangePassword: ChangeEventHandler<HTMLInputElement> = (e) => { setPassword(e.target.value); }; return ( <div className={style.modalBackground}> <div className={style.modal}> <div className={style.modalHeader}> <button className={style.closeButton} onClick={onClickClose}> <svg width={24} viewBox="0 0 24 24" aria-hidden="true" className="r-18jsvk2 r-4qtqp9 r-yyyyoo r-z80fyv r-dnmrzs r-bnwqim r-1plcrui r-lrvibr r-19wmn03" > <g> <path d="M10.59 12L4.54 5.96l1.42-1.42L12 10.59l6.04-6.05 1.42 1.42L13.41 12l6.05 6.04-1.42 1.42L12 13.41l-6.04 6.05-1.42-1.42L10.59 12z"></path> </g> </svg> </button> <div>로그인하세요.</div> </div> <form onSubmit={onSubmit}> <div className={style.modalBody}> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="id"> 아이디 </label> <input id="id" className={style.input} value={id} onChange={onChangeId} type="text" placeholder="" /> </div> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="password"> 비밀번호 </label> <input id="password" className={style.input} value={password} onChange={onChangePassword} type="password" placeholder="" /> </div> </div> <div className={style.message}>{message}</div> <div className={style.modalFooter}> <button className={style.actionButton} disabled={!id && !password}> 로그인하기 </button> </div> </form> </div> </div> ); } // route.ts export { GET, POST } from "@/auth"; // auth.ts import NextAuth from "next-auth"; import CredentialsProvider from "next-auth/providers/credentials"; console.log("###########", process.env.AUTH_URL); export const { handlers: { GET, POST }, auth, } = NextAuth({ // 직접 만든 페이지는 따로 지정해줘야함 pages: { signIn: "/i/flow/login", newUser: "/i/flow/signup", }, providers: [ CredentialsProvider({ async authorize(credentials) { console.log("@#@#@#@#", credentials); const authResponse = await fetch(`${process.env.AUTH_URL}/api/login`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ id: credentials.username, password: credentials.password, }), }); if (!authResponse.ok) { return null; } const user = await authResponse.json(); return user; }, }), ], }); 혹시 제가 확인하다가 빠뜨린 부분이 있거나 잘못된 부분이 있다면 알려주시면 감사하겠습니다 ㅠㅠㅠ계속 node_modules .next packge-lock.json 다 지우고 깔고 코드 하나하나 바꿔보고 하다보니까 이제 뭐가 어디서부터인지 보이지가 않습니다 ㅠㅠㅠㅠ
-
미해결UIKit - iOS14 실무 가이드 <iOS앱 진짜 개발자 되기>
20:01 쯤에서
execute: ()-> void 에서 바로 {code}로 형태를 바꾸시던데 어떻게 하는건가요? 단축키가 따로 있나요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
커스텀 위젯 변수 선언 위치 차이
StatelessWidget이나 StatefulWidget에서 변수를 선언할 때빌드 함수 내에 선언하는 것과 빌드 함수 밖에 선언하는 것은 어떤 차이가 있나요?
-
미해결Do it! Node.js 프로그래밍 입문
localhost:3000 응답없음 문제
안녕하세요. 블로그앱 만들 때 localhost:3000을 사용하고 있는데요. 메인 코드 파일을 실행하면 터미널에서는 서버/몽고DB가 실행 중이라고 뜨는데 포트는 응답이 없네요. 8000 등 다른 포트로 바꿔봐도 마찬가지고요.. 이전까지는 문제가 없다가 갑자기 이래서 어떻게 해야할지 모르겠습니다+_+...혹시 시도해볼만한 방법이 있을까요? 알려주시면 감사하겠습니다.
-
미해결Vue 3 시작하기
윈도우 터미널에서 powershell 사용 비추 이유
터미널에서 기본으로 powershell이 설정되어 있는데node -v 나 npm 명령어도 잘 실행됩니다.그런데 이를 사용말고 cmder을 사용하라는 이유가 뭔가요?
-
해결됨야, 너도 AI 서비스 만들 수 있어. [이미지 AI 서비스 서버리스 풀스택]
Lecture 7 내용 진행중 오류
Lecture 7 진행 하고 있는데.. 코드를 복사해서 붙여 넣어서 똑같이 만든 다음 봐보니까 lambda.ts에서 오류?가 2개가 나오더라구요..내용은 이렇습니다.Bucket: Bucket.Uploads.bucketNameTableName: Table.Collections.tableName여기에 Uploads / Collections 가 속성이 없습니다라고 나오네요.. 확인 부탁드립니다!lambda.ts 오류 내용MyStack.ts 내용
-
해결됨STM32 FreeRTOS 구현
uart 통신 메세지가 두번 출력됩니다..
uart 통신은 잘 되어서 메세지는 출력이 되는데 메세지가 한번출력되고 간격을 두고 또 출력되어 총 두번 출력됩니다. 혹시나 툴의 차이인가 해서 putty로도 진행을 해보았으나 동일하게 두번 메세지가 출력됩니다. 프로젝트도 다시 구성해보았는데 동일한 문제가 발생했습니다. 뭐가 문제일까요..?ㅠㅠ
-
해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
지역 내부 클래스 질문드립니다.
"메서드 호출 이후에도 사용해야 하는 경우가 있을 수 있으므로 지역 내부 클래스에서 사용하는 메서드의 지역 변수나 매개 변수는 final로 선언됨"라고 말씀하셨는데 final로 선언되면 저장되는 영역이 달라지나요? 왜 final을 사용하는지 궁금해서 여쭤봅니다
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
배열 문제와풀이 2 ArrayEx7 질문..
[질문 내용]배열 문제와풀이 2 ArrayEx7문제인데요총점구할 때 궁금해서 질문드립니다 ㅜㅜ ;총점 int total = 0; 인데 왜 for i(행) 문에서 변수를 선언하는 건지 원리를 잘 모르겠습니당..
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
[3강 누적합>이모스1법> 백준 17611] 런타임에러 질문드립니다!
import sys sys.stdin = open('BackJoon/3강_누적합/5_17611.txt','r') input = sys.stdin.readline n = int(input()) vertex = [list(map(int, input().split())) for _ in range(n)] ######## (x_min, y_min) -> (0, 0)으로 이동 x_min, x_max = 500000, -500000 y_min, y_max = 500000, -500000 for x,y in vertex: x_min = min(x, x_min) x_max = max(x, x_max) y_min = min(y, y_min) y_max = max(y, y_max) x_diff = 0 - x_min y_diff = 0 - y_min for i in range(n): vertex[i][0] = vertex[i][0] + x_diff vertex[i][1] = vertex[i][1] + y_diff ##### 수평선 조사 (강의에서와 같이 왼쪽으로 돌려서 봄) vertex_x_incre = sorted(vertex, key = lambda x: (x[0], x[1])) # y_range = y_max-y_min+1 x_range = x_max-x_min+1 x_sum_list = [0] * (y_range+1) # x축 방향으로 [1, 0, 0, ..., -1] 더함 for i in range(0,n,2): # 선분은 2개의 꼭지점으로 이루어짐 v1 = vertex_x_incre[i] v2 = vertex_x_incre[i+1] if v1[0] != v2[0]: # 디버깅 print('x point does not match!!')#만약 선분이 직선이 아니라면(혹은 sort가 잘못됨) break if v1[1] >= v2[1]: print('y point does not align!!')#sort가 잘못됨 print('v1:', v1) print('v2:', v2) break x_sum_list[v1[1]] += 1 x_sum_list[v2[1]] -= 1 x_sum_list = x_sum_list[:-1] #범위밖의 맨 마지막 -1 자리 버림 prefix = [0]*(y_range+1) for i in range(y_range): prefix[i+1] = prefix[i] + x_sum_list[i] prefix = prefix[1:] h = max(prefix) ##### y축 방향으로 조사 (수직선 조사) vertex_y_incre = sorted(vertex, key = lambda x: (-x[1], x[0])) y_sum_list = [0] * (x_range+1) # y축 방향으로 [1, 0, 0, ..., -1] 더함 for i in range(0,n,2): v1 = vertex_y_incre[i] v2 = vertex_y_incre[i+1] if v1[1] != v2[1]: print('y point does not match!!') break if v1[0] >= v2[0]: print('x point does not align!!') print('v1:', v1) print('v2:', v2) break y_sum_list[v1[0]] += 1 y_sum_list[v2[0]] -= 1 y_sum_list = y_sum_list[:-1] prefix = [0]*(x_range+1) for i in range(x_range): prefix[i+1] = prefix[i] + y_sum_list[i] prefix = prefix[1:] v= max(prefix) print(max(h,v))
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
PEFT 수업에서 실습 모델 선택 기준이 궁금합니다.
안녕하세요, 제공해주신 유익한 수업 잘 듣고있습니다 🙂 현재 PEFT 부분 강의를 듣고 있는데요, 강의를 듣다가 궁금한 점이 생겼는데, 각 PEFT 방법들을 적용한 실습에서 backbone 모델과 데이터셋이 계속 바뀌는 것이었습니다.PEFT 방법과 task(dataset), backbone 모델의 조합을 어떻게 구성해서 실습을 할 지에 대한 선택 사항이 있었을 거 같은데, 선택하는데 있어서 특정한 기준이 있었는지 궁금합니다.예를 들면 아래와 같은 궁금증들 입니다. PEFT 방법 별로 잘 동작하는 task가 있는가?다양한 task에 적용이 가능하단걸 보여주시기 위해서 여러 데이터셋을 사용한 것이고, 각 데이터셋 별로 잘 동작하는 backbone 모델을 선택한 것인가?아니면 PEFT 방법과 데이터셋, backbone 모델 모두 자유롭게 선택이 가능해서 자유롭게 바꿔가면서 한 것인가?제가 LLM 공부를 갓 시작한 단계라 잘 몰라서 드린 질문일 수도 있으니 양해부탁드립니다 ㅎ
-
미해결홍정모의 따라하며 배우는 C언어
10분 15초경 질문
dest = "Start something"; // Error여기서 에러가 생기는 이유를 잘 모르겠어서 찾아보니 같은 질문이 있길래 답변을 봤습니다.https://www.inflearn.com/questions/684074답변을 보고 컴파일러가 안 해주도록 만들어진 거고 그 이유는 런타임에 내용을 바꾸고 싶다면한 글자씩 바꾸는 방식으로 사용하도록 의도적으로 그렇게 정해 놨기 때문이라고 답변해주신 건 이해가 됬습니다.그런데그렇다고 안해주는 이유가 아예 없는 것은 아닌데 "Start something" 같은 문자열은 컴파일 할 때 프로그램에 탑재됩니다라는 말씀이 이해가 잘 안됩니다.문자열이 컴파일할 때 프로그램에 탑재되는 거랑 컴파일 타임이 아니라 런타임에 내용을 바꾸고 싶다면한 글자씩 바꾸라고 의도적으로 정해 놓은 거랑 무슨 상관인지 모르겠습니다.답변 항상 감사합니다.
-
해결됨스케치업 실무활용 SketchUp2023
2023버전 트레이관리가 어디있나요?
1강 기본설정 및 화면최적화에서 트레이관리를 못찾겠습니다 ㅠ
-
해결됨김영한의 실전 자바 - 기본편
기본형 관련 메모리 질문이 있습니다.
안녕하세요. 우선!! 강사님 덕분에 자바에 대해 이해가 더 잘 되고 있습니다. 감사합니다강의를 듣다 궁금한 내용이 생겨 질문하게 되었습니다. 자바의 변수는 기본형과 참조형으로 나눌 수 있고, 기본형의 경우 변수에 값이 저장되어 출력되지만 참조형은 메모리에 저장된 위치 값이 저장되어 출력된다고 가르쳐주셨습니다. 그렇다면 기본형 int a = 10;이 있다면 메모리상에는 변수 a가 가리키는 공간에 10이라는 값이 저장되는데 a를 출력하였을 때 어떻게 바로 10이라는 값이 나오는지 궁금합니다. a를 출력하게 되면 메모리상에서 a라는 변수 값을 저장한 공간을 찾게 되고 그 공간에 있는 값인 10을 출력하게 되는데 참조형과 다르게 바로 값이 나오는 이유가 궁금합니다. 감사합니다..!