묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
filter 질문
@PostMapping("/login") public String loginHttpSession(@Validated @ModelAttribute("member") LoginForm loginForm, BindingResult bindingResult,HttpServletRequest request, @RequestParam(value = "redirectURL") String redirectURL) { if(bindingResult.hasErrors()) { log.info("로그인 에러"); return "login/login"; } SignUpMember signUpMember = loginService.loginMember(loginForm.getLoginId(), loginForm.getPassword()); if(signUpMember == null) { bindingResult.reject("loginFail", "아이디 또는 비밀번호가 틀렸습니다"); return "login/login"; } HttpSession session = request.getSession(); session.setAttribute(SessionConst.LOGIN_MEMBER, signUpMember); return "redirect:/guPage/index"; } 위 코드를 작성해서 http://localhost:8080/login?redirectURL=/basic/items위 url을 post로 받으려 하는데 405 error가 뜨네요 어떻게 하면 될까요?그리고 제가 알기론 @RequestParam(value = "redirectURL") String redirectURL에서 value를 제거해도 된다고 알고 있는데 value를 안적어주니 이것도 에러가 나더라고요 어떻게 하면 될까요?
-
해결됨실전! FastAPI 입문
타입힌트 질문
안녕하세요 강사님강의 듣는 도중 조금 궁금한 내용이 생겨서 질문드립니다. 코드에서 아래와 같이 타입힌트를 사용하는 경우가 있는데def done(self) -> "Todo": self>is done = True ~ 왜 Todo에 "" 를 감싸주시는걸까요??그냥 Todo 라고 타입힌트를 줘도될거 같은데 이유가 궁금해서요
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2차원 DP 1번 문제
안녕하세요, 추가강의를 듣다가 2가지 질문사항이 생겨 다시 글을 쓰게 되었습니다.^^ 위 문제를 설명해주실 때,처음에 recur으로 접근하신 후 dp로 바꿔서 설명을 해주셨는데요,15:45 부분에서 설명해주신 내용 중return으로 인해 계산이 끝나지 않고 이웃 칸으로 이동해서 계속해서 계산을 이어가도록 하는 부분이return 0 을 return dp[y][x] 로 바꾸는 부분에 해당하는 것인지 질문드립니다. 또한, 마지막에 답을 출력할 때,print(max(map(max,dp))+1왜 +1을 해주는지 궁금합니다. [정답 코드]오늘도 감사합니다~
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp파일의 html 태그에 대해 궁금한 것이 있습니다.
강의록을 보면 이전의 MemberFormServlet 코드에서는 응답 메시지 상단에 <!DOCTYPE HTML>을 명시해주었는데, 왜 이번 jsp에서는 html 태그 위에 <!DOCTYPE HTML>를 명시해주지 않아도 정상적으로 동작하나요?https://developer.mozilla.org/en-US/docs/Web/HTML/Quirks_Mode_and_Standards_Mode위에서 <!DOCTYPE HTML>는 브라우저한테 어떤 document 타입을 사용하는지를 알려주기 위해 반드시 최상단에 명시해야 한다고 되어 있습니다. 만약 이것을 명시하지 않으면 quirk mode로 동작이 되서 현재 널리 채택된 full-standard mode와 다르게 렌더링될 수 있다고 되어있습니다.
-
미해결Airflow 마스터 클래스
Task의 실행 주체가 헷갈립니다.
안녕하세요, 강의 잘 듣고 있습니다.제목 그대로 task를 실행하는 주체가 헷갈려 질문 드립니다. airflow document를 읽어본 결과 scheduler는 DAG의 시작 시간을 확인한 후에 Executor에게 시작을 지시하는 것으로 보였습니다. Executor의 종류 중 locally하게 실행하는 task의 경우 executor가 직접 실행하고, remotely하게 실행하는 task의 경우 (특히 분산 환경에서 사용되는 Executor; ex. CeleryExecutor)에는 worker 풀을 활용한다고 이해했습니다.Airflow의 경우 default executor가 SequentialExecutor로 설정된다고 하는데, 이는 local executor이므로 worker가 존재하지 않는다고 이해했습니다. 그래서 local executor에도 따로 worker가 존재하는지 궁금하여 질문 남깁니다!감사합니다.
-
해결됨Vue 3 & Firebase 10 커뮤니티 만들기 풀스택 - "활용편" (with Pinia, Quasar, Tiptap, VueUse)
emit, prop 대신 defineModel()을 사용하여 구현 하는 것에 대한 질문 입니다.
최근 vue 문서를 보다가 "Vue 3.4부터는 defineModel() 매크로를 사용하는 것이 권장되는 접근 방식입니다:"라고 되어있었습니다. 그래서 vue 버전을 올리고 강의에 emit, prop 사용하는 곳을 defineModel()방식으로 변경하고 싶어서 강의 코드를 수정하면서 진행 하고 있습니다. 대표적으로 커리큘럼 email 회원가입&로그인 파트에 사용된 prop, emit 부분을 아래와 같이 수정 해 보았습니다. 기존 AuthDialog.vue변경 AuthDialog.vue기존 SignInForm.vue변경 SignInForm.vue테스트 하면서 동작을 되지만 구현 하면서 질문이 두 가지 셍걌습니다:defaule.vue - AuthDialog.vue - SignInForm.vue간에 viewMode와 closeDialog 값을 제가 구현한 방식 대로 하는 게 문제가 없는지 알고 싶습니다.AuthDialog.vue에서 아래서 변경된 closeDialog 값을 인식 하기 위해서 watch를 사용하였는데 제가 구현한 방식보다 괜찮은 방법이 있는지 알고 싶습니다.defineModel() 방식을 사용하면 강의 코드 상당 수가 간단해 질 것 같네요 좋은 강의 곱씹으면서 보고 또 보고 있습니다. 정말 감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
이미지 업로드 질문
ex) pages/section19/19-04-image-with-board/index.tsx// ... export default function ImageUploadPage(): JSX.Element { // ... const onChangeFile = async ( e: ChangeEvent<HTMLInputElement>, ): Promise<void> => { const file = e.target.files?.[0]; console.log(file); const isValid = checkValidationFile(file); if (!isValid) return; const result = await uploadFile({ variables: { file, }, }); console.log(result.data?.uploadFile.url); setImgUrl(result.data?.uploadFile.url ?? ""); }; // ... }이렇게 이미지를 선택하기만 해도 uploadFile 함수로 인해 storage에 이미지파일이 저장되어 주소를 받아오 것으로 이해하고 있는데 이 상태에서 새로고침을 하거나 사이트 꺼버리면 storage에 이미지파일은 그대로 저장된 채로 유기되어 용량이 낭비되는 것이 아닌가 하는 의문이 들었습니다. 그렇지 않다면 상관없지만 이렇게 선택만하고 중단할 경우 이미 storage에 저장된 이미지가 자동으로 삭제되지는 않을 것 같고 useEffect의 return 안에 입력정보가 DB에 저장되지 않은 채로 사이트가 꺼지거나 새로고침되면 storage에 선택만 했던 이미지를 지우도록 조건문으로 코드를 작성해주면 storage의 용량이 낭비되는 문제를 해결할 수 있지 않을까요?? 혹은 더 옳바른 방법이 있는지, 제가 잘못 이해하고 있는지, 그리고 제가 말한 방법대로 또는 강사님이 생각하시는 더 옳바른 방법으로 코드를 작성하게 됐을 때의 예시 코드를 보여주시면 감사드리겠습니다.
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
4-1 공식문서
안녕하세요 4-1강의에서 본 공식문서혹시 링크 받을 수 있을까요??제가 찾은건 이거밖에 없어서요https://docs.djangoproject.com/ko/5.0/topics/db/models/
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
미로 탐색 문제 질문 있습니다.
미로 탐색에서 재귀에 진입하기 전 board에 표시를 할 때,boarr[nx][ny] = 1이 맞나요?해당 자리에 1로 표시를 해놓고 다음으로 넘어가는 개념이니까arr[x][y] = 1이렇게 하는게 맞지않나라는 생각이 드는데혹시 제가 잘못 이해를 한 걸까요?결과는 똑같이 나와서 의문이네요.// 강사님의 답 if(nx >= 0 && nx <= 6 && ny >= 0 && ny <= 6 && board[nx][ny] === 0){ board[x][y] = 1 DFS(nx,ny) board[x][y] = 0 } // 저의 답 if(nx >= 0 && nx <= 6 && ny >= 0 && ny <= 6 && board[nx][ny] === 0){ board[x][y] = 1 ★★★ DFS(nx,ny) board[x][y] = 0 ★★★ }
-
미해결Next + React Query로 SNS 서비스 만들기
스타일이 바로 적용이 안 되는 문제는 어떻게 해결해야 할까요?
module.css 스타일을 바꿨을때 화면에 바로 적용안되는 문제는 왜 그럴까요?? 새로고침을 해도 적용이 안되고 프론트 서버를 재실행 시켜야 바뀐 스타일이 적용이 됩니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-A 한줄로 디버깅 하고 싶은데 혹시 이 부분 나눌 수 있을까요?
ret과 재귀로 호출하는 부분 최소 값으로 셋팅하는 결과를 실시간으로 보고 싶습니다. ret = min(ret, tsp(i, visited | (1 << i)) + dist[here][i]);이 부분 나눌 수 있을까요? int temp = tsp(i,visited | (1<<i)) + dist[here][i]);if(ret > temp) ret = temp;이런식으로 나누고 싶은데 어떻게 건드려야될지 모르겠습니다..
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
오실로스코프도 필요할까요?
강의 목차에 오실로스코프도 있던데 이 기기도 사야지 강의진행이 되나요?
-
미해결Practical Testing: 실용적인 테스트 가이드
SpringSecurity 사용 시 Controller 테스트
안녕하세요 좋은 강의를 제공해주셔서 너무 감사합니다. 평소 테스트에 대해 고민하던 많은 부분이 해결되었습다. 그러나 아직 해결하지 못 한 부분이 있습니다.전 개인 프로젝트에 Spring Security 를 이용해 인증 및 인가를 구현하였습니다. 또한, 컨트롤러에 @AuthenticationPrincipal 을 이용해 인증 객체를 가져와 로그인한 회원의 정보를 사용하고 있습니다.강사님의 경우 @WebMvcTest 를 이용해 컨트롤러만 띄워 최소한의 파라미터만 검증하였습니다. 저 역시 처음엔 @WebMvcTest 를 이용해 최소한의 비용으로 컨트롤러를 테스트해보려 했으나 테스트 수행 시 Security 관련 빈이 없어 잦은 오류가 발생하였습니다.이 경우 @WebMvcTest 를 그대로 사용하며 TestSupport 와 같은 클래스에 시큐리티 관련 빈들을 모두 목킹하고 @AuthenticationPrincipal 으로 가져오는 인증객체 또한 목킹하는 것이 좋은 테스트일지 @SpringBootTest 를 사용한 다음 인증객체를 주입하는 것이 좋은 테스트인지 잘 판단이 안됩니다. (@AuthenticationPrincipal 의 경우 컨트롤러 메서드의 파라미터로 들어가는데 이것 역시 목킹이 가능한지도 잘 감이 안잡힙니다.)마지막으로 Spring Security 를 구성하는 필터 혹은 인터셉터나 kafka, websocket 같은 비동기 통신의 경우 실무에서 어떻게 테스트를 수행하는지 궁금합니다!긴 질문 읽어주셔서 감사합니다
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
car_list(car1,car2,car3) 인스턴스 tuple 타입 문의
안녕하세요 car1 ~ car3 라는 3개의 인스턴스 참조값을 car_list에 담고 print(car_list[0].company)인스턴스 변수를 참조 하려 했을 떄 튜플 타입 이라고 조회가 되지 않습니다 AttributeError: 'tuple' object has no attribute 'company' 위에 rep 나 이런 생성자 외 리스트에 담겨 있는 3개의 인스턴스 참조 값들의 변수값을 뽑기 위해서는 어떻게 해야 할까요? 자바는 해당 명령어로 company 변수를 가져올 텐데 파이썬은 방법이 다를까요..? ㅠprint(car_list[0].company) car1 = Car("ferrari", {"color ": "White" ,"housepower" : 400 ,"price" : 8000}), car2 = Car("BMW", {"color ": "Black" ,"housepower" : 270 ,"price" : 5000}), car3 = Car("Audi", {"color ": "Silver" ,"housepower" : 300 ,"price" : 6000}) car_list = []; car_list.append(car1); car_list.append(car2); car_list.append(car2);
-
미해결유니티 Addressable 을 이용한 패치 시스템 구현
캐싱을 할때 캐싱 진행상황을 제대로 표시하고싶어요
안녕하세요. 제가 어드레서블을 사용해서 다운을 받고 생성하는거까지 해봤는데요.여기서 몇가지 궁금한게 생겨서요.제가 포톤 pun2를 사용하고있어서 에셋을 바로 PhotonNetwork.Instantiate를 사용할수가 없는 상황이더라구요..그래서 찾아보다가 포톤에서 프리펩풀이라는게있어서 수동으로 생성을 할수있다고 하더라구요DefaultPool defaultPool = PhotonNetwork.PrefabPool as DefaultPool;Task<GameObject> task = character.LoadAssetAsync<GameObject>().Task; // 불러옵니다.await task; //대기.defaultPool.ResourceCache.Add("player01", task.Result); // 넣기_player = PhotonNetwork.Instantiate("player01", Vector3.zero, Quaternion.identity);그래서 이런식으로 프리펩풀에 넣어놓고 불러오는 방식을 사용하게됐습니다.그리고 불러와지는걸 확인을 했죠! 그런데 여기서 문제가 발생하더라구요.. 안드로이드로 스위칭을 한상태라서그런지쉐이더라 에디터상에서는 깨지는문제가 발생하더라구요그래서 playmode script를 simulategroup을하게되면 에디터상에서 정상적으로 보이기는 하는데.. 그전에는 쉐이더가 안불러와져서 그런지 핑크색이긴하지만 바로바로 불러와졌는데씬을 불러오니까 캐릭터가 생성되기까지 시간이 2~3초정도 걸리더라구요그래서 무슨문제일까 찾아보다가 씬에 미리 캐싱을 해두고 써야한다는말이 있어서 public IEnumerator LoadMultipleAssetAsync(List<string> AssetNames, string scene){foreach (string asset in AssetNames){// Addressables.DownloadDependenciesAsync를 사용하여 씬 캐싱AsyncOperationHandle handle = Addressables.DownloadDependenciesAsync(asset);// 캐싱 완료될 때까지 대기while (!handle.IsDone){Debug.Log(handle.PercentComplete); yield return null;}// 씬 로드SceneManager.LoadScene(scene);}// 씬 로드 완료 후 처리}이렇게 진행상황을 표시하는걸 만들고StartCoroutine(LoadMultipleAssetAsync(assets, "Tutorial"));이렇게 씬을 불러오게 만들었는데여기서 문제가 발생합니다. player01을 불러올때 0.8부터 불러온다는 문제가 생기더라구요..그리고 불러오고 나서도 씬이 자연스럽게 나오는게 아니라 뭔가 부자연스럽게 한..0.2~3초정도 눈에 보일정도로 딜레이가생기면서 생성되더라구요.. 제가 여기서 궁금한건 0.8부터 불러지는거랑 딜레이가 생기는부분이 궁금한건데요.. 어떤 문제가 있는걸까요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
오류 질문
안녕하세요!이렇게 오류가 뜹니다. DataModel이 선언 되었는데 뭐가 문제인가요?감사합니다~mingreen0107/diet_memo (github.com)
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
DFS 문제 하나 여쭤봅니다!..
강의를 들어보다가 백준 - 16964번 DFS 스페셜 저지 문제를 풀어 보았는데 여러개의 답이 나올 수 있는 경우를 특정하기가 어려줘 질문 남겨봅니다!..graph에서 순차적으로 나오는 경우는 답을 구할 수 있는데 그래프에서 랜덤한 방향으로 진행될 시 어떻게 해야되는지 궁금합니다!..제가 짜본 기본 코드입니다..ㅜㅜ 도움 부탁드립니다!import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline # 함수 def dfs(idx): global visited, answer, graph, order visited[idx] = True answer[idx] = order order += 1 for i in graph[idx]: if not visited[i]: dfs(i) # 0. 입력 조건 N = int(input()) visited = [False] * (N+1) answer = [0] * (N+1) order = 1 graph = [[] for _ in range(N+1)] # 1. 그래프 받아오기 for _ in range(N-1): x, y = map(int, input().split()) graph[x].append(y) graph[y].append(x) # 2. dfs 수행 dfs(1) # 3. 출력하기 given = list(map(int, input().split())) # answer.sort() answer = answer[1:] if given == answer: print(1) else: print(0)
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
강의 환불관련 문의드립니다.
안녕하세요. 선생님 제가 해당 강의를 유데미에서 수강중인 것을 모르고 실수로 또 구매를 했습니다. 현재 환불 기간이 지나 환불이 불가능한 것으로 확인되어 혹시 해당 강의를 한입 크기로 잘라먹는 타입 스크립트로 변경이 가능한지 문의드립니다. 해당 강의는 아직 수강하지 않았습니다. 제가 아마 할인 기간에 여러 강의 신청할때 같이 신청한거 같은데, 지금 보니 유데미에도 동일 강의를 신청했었네요. 필요시 유데미 강의 결제한 내역 인증도 가능합니다. 동일한 강의를 듣기에는 좀 부담이 있어서 혹시 넓으신 아량으로 강의 변경 또는 환불이 가능한지 문의드리겠습니다.환불이 될 경우 다시 한입 크기 타입 스크립트 강의를 신청하겠습니다.감사합니다.
-
해결됨자동차 SW - UDS 진단통신 정복하기
진단통신 강의 듣다 궁금한 사항이 있습니다.
자동차에 여러 제어기들이 있을건데 개발 초기에는 각각의 제어기들이 미완성된 상태일 것으로 생각됩니다.그럼 이 미완성된 제어기들을 차량 내 전부 탑재시키고 진단통신을 통해 재대로 동작되는지 체크하는건가요? 가전회사에서는 제어기판이 차량용처럼 많지 않아서 그런지 미완성된 제어기판들을 모두 통합제어하기 전에예를들어 3개의 제어기판이 있는 경우이상신호를 보낼 수 있는 PC가 1번 제어기를 대응하고 미완성된 2번 제어기판과 연동하여 상태에서 테스트를 진행하는 식으로 하는데 차량은 어떤식으로 진행되는지 좀 더 알고 싶습니다.
-
미해결스프링 시큐리티
login_proc의 존재에 대한 간략한 설명입니다
정답부터 말하면 내부적인 정상 처리를 위해 일치시켜줘야 합니다.이름이 logic_proc일 필요는 없고요 login 폼의 action이랑, 설정에서 등록해주는 loginProcessingUrl과 맞추기만 하면 됩니다. 저는 /login_perform으로 했는데요.사용자가 로그인 폼에서 아이디와 비밀번호를 입력하면 UsernamePasswordAuthenticationFilter에서 주된 처리를 하게 되잖아요. 본격적인 처리가 들어가기 전에 이 처리를 할지 말지는 요청 Url와 HttpMethod를 검사해야 합니다. 이게 맞아야 해당 요청에 대한 정확한 필터를 작동시키니까요.UsernamePasswordAuthenticationFilter의 실행 여부는 AbstractAuthenticationProcessingFilter가 합니다. doFilter에서 이뤄지죠? 다음 코드를 확인해봅시다.바로 requiresAuthentication 함수를 디버깅해봅시다.저matcher에 loginProcessingUrl에서 설정한 Url과 요청Url이 매치되는지 확인합니다. 해당 Url을 matcher에 설정할 때 시큐리티 내부적으로 POST를 이미 넣어줬습니다. 그렇기 때문에 로그인 폼에서 POST 방식을 지정하고 Action Url을 /login_perform 으로 설정하면 시큐리티에서 설정한 값과 동일하므로 이후의 로그인 절차가 진행될 수 있죠.조금 더 첨언하자면 커스텀 로그인을 하는 순간 로그아웃도 반드시 커스텀해줘야 합니다. 서버 구동 시 설정 쪽에 관련 코드가 있어요. 디폴트 로그인이 아니면 디폴드 로그아웃도 설정 안 한다. 그래서 커스텀 로그인을 하면 DefaultLogoutPageGeneratingFilter가 설정되지 않아요. 그래서 강사님이 /logout 컨트롤러를 생성하신 겁니다. 다시 결론: 로그인 기능을 커스텀할 때 로그인 폼의 action url와 시큐리티에서 loginProcessingUrl은 일치시켜주기만 하면 된다.