학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 1. 첫번째오류 error: JdbcMemberRepository is not abstract and does not override abstract method clearStore() in MemberRepository public class JdbcMemberRepository implements MemberRepository{ 두번째오류 error: method does not override or implement a method from a supertype @Override ^ 두시간째 헤매이고있어요
[질문 내용] 여기에 질문 내용을 남겨주세요. "아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계"한다고 설명해주셨는데, save findById findByName findAll 이 메서드들에 대한 실제 구현 코드를 DB가 변경되면 새로 작성하면서 service단에서는 수정할 필요 없도록 인터페이스를 사용해야한다는 뜻인가요? 인터페이스 없이 아래처럼 MemoryMemberRepository2를 새로 작성하고, public class MemoryMemberRepository { save( ... ){ ... } findById( ... ){ ... } findByName( ... ){ ... } findAll( ... ){ ... } } // DB가 변경되어 새로 작성한 클래스 public class MemoryMemberRepository2 { save( ... ){ ... } findById( ... ){ ... } findByName( ... ){ ... } findAll( ... ){ ... } } 타입만 MemoryMemberRepository2로 바꿔주면 똑같이 service단에서 별도의 수정 없이 처리할 수 있지 않나요? public class MemberService { private final MemoryMemberRepository2 memberRepository = new MemoryMemberRepository2(); memberRepository.save(...); memberRepository.findById(...); ... } 다른 질문에 답변으로 써주신 내용(느슨한 결합 등) 읽어보긴 했는데, 인터페이스의 필요성을 완전히 이해하지 못해서 질문 남깁니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 이전강의부터 불변이라는게 좀 헷갈렸는데요 setXxx 메서드로 다른개발자가 MemberRepositroy를 MemoryRepository에서 JdbcRepositroy로 바꾸면 안되니까 final을 붙여 수정을 못하게하고 생성자를 열어놔서 AppConfig에서 Bean을 등록하여 거기서 인스턴스화해서 생성자에 값을 넣어주잖아요 그런데 궁금한건 다른 개발자가 AppConfig에서 똑같이 Memory를 Jdbc로 바꿀수있을텐데 왜 불변인지 잘 이해가 안갑니다 ㅠㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. npm start 후 작성한 코드가 실행되지 않고 빈화면 띄는데 어떻게 해야할까요? 구글링 해본 결과 package.json 파일에 "homepage="." 추가하면된다고하는데,,, (제가 참고한 블로그입니다. 리액트 빌드 결과 빈화면만 보일때 - 상대경로 설정하기 ( tistory.com ) ) 일단 index.html 파일에 있는 내용 첨부해드립니다.. <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="theme-color" content="#000000" /> <meta name="description" content="Web site created using create-react-app" /> <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> <!-- manifest.json provides metadata used when your web app is installed on a user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ --> <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> <!-- Notice the use of %PUBLIC_URL% in the tags above. It will be replaced with the URL of the `public` folder during the build. Only files inside the `public` folder can be referenced from the HTML. Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> <title>React App</title> </head> <body> <noscript>You need to enable JavaScript to run this app.</noscript> <div id="root"></div> <!-- This HTML file is a template. If you open it directly in the browser, you will see an empty page. You can add webfonts, meta tags, or analytics to this file. The build step will place the bundled scripts into the <body> tag. To begin the development, run `npm start` or `yarn start`. To create a production bundle, use `npm run build` or `yarn build`. --> </body> </html>
문단 글머리 기호를 추출하고자 합니다. 원래 목적은 문단별 글머리 기호가 다르고 문단별로 각각 다른 폰트를 적용이 목적입니다. GetHeadingString()을 써보니 코드를 적용해서 커서를 옮겨도 문서를 최초 불러온 커서의 위치의 글머리 기호를 불러오네요.. 이유를 몰겟습니다. ㅠㅠ 아래는 테스트 코드입니다. import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") hwp.Open("D:\Automation\Test.hwpx") text = hwp.GetHeadingString() hwp.InitScan() hwp.HAction.Run("MoveDocBegin") hwp.HAction.Run("MoveParaBegin") print(text) hwp.HAction.Run("MoveSelParaEnd") hwp.HAction.Run("CharShapeItalic") hwp.HAction.Run("Cancel") hwp.MovePos(10) print(text) hwp.HAction.Run("MoveSelNextParaBegin") hwp.HAction.Run("MoveSelParaEnd") hwp.HAction.Run("CharShapeItalic") hwp.HAction.Run("Cancel") hwp.ReleaseScan()
선생님 안녕하세요 알고리즘을 공부하고 다시 들으니 이해가 더 잘 되는 것 같습니다. 이제 막 분류에 대한 마지막까지 들었는데 제가 이해한 부분이 맞는지 모르겠습니다. 결정트리는 머신러닝의 한 방법이다. 정확도를 높이기 위해서 앙상블 기법(여러가지 머신러닝을 섞거나, 데이터를 부트스트래핑 등)을 쓴다. 대표적인 앙상블 기법으로는 배깅과 보팅, 부스팅이 있는데, 배깅에서는 여러가지 결정트리로 되어있는 랜덤포레스트 방식, 보팅은 서로 다른 머신러닝들로 학습하는 것, 부스팅은 약한 분류기를 순차적으로 학습하면서 전에 학습했던 특정데이터에 가중치를 두어 점차적으로 학습하는 방식 스태킹은 분류된 데이터를 가지고 다시 한번 하나의 머신러닝 기법으로 학습한다. (하지만 학습에 테스트데이터를 쓰기때문에 오버피팅이 발생) 이 정도로 머릿속으로 정리를 했는데 틀린 것이 있는지, 또는 보팅을 할때 다른 머신러닝 여러개와 결정트리 여러개 로 구성된 앙상블 모델도 랜덤포레스트라고 부를 수 있는지가 궁금합니다
선생님처럼 단지 첫 줄 내용만 있는 것이 아닌 bootable medium and reboot하라는데 무슨 의미인지 모르겠습니다. 무시하고 저장소에 ubuntu 이미지를 넣으면 이러한 결과가 생깁니다. 어떻게 해결해야하나요,,??ㅠㅠㅠ ubuntu 22.04를 다운로드하였습니다.
def LCA(root, p, q): if root == None: return None left = LCA(root.left, p, q) right = LCA(root.right, p, q) if root == p or root == 1: return root elif left and right: return root return left or right https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/description/ 이 문제 질문드립니다. 맨 밑에 코드가 이해가 안가서 질문드려요 root가 q 이거나 p 이면 root를 반환하는 것 까지 이해했습니다. elif left and right: return root return left or right 저 부분이 잘 이해가 안됩니다 elif left and right 의 의미가 left 랑 right 둘다 존재하면 root를 반환하라는 의미인가요? 그게 아니면 left 아니면 right 중 둘 중 하나 존재하는 것을 리턴하라는 의미구요 저는 자바로 하고있는데 저부분이 이해가 안가서 질문드립니다..!
function solution(k, nums, m) { const isMulti = (n, m) => { if (!(n % m)) return 1; return 0; }; let ans = 0; function DFS(L, sp, sum) { if (L === k) { console.log(L, tmp, sp, sum); if (isMulti(sum, m)) ans++; } else { for (let i = sp; i < nums.length; i++) { DFS(L + 1, i + 1, sum + nums[i]); } } } DFS(0, 0, 0); return ans; } 해당 문제 시간복잡도가 궁금하여 질문드립니다. 해당 문제를 선생님과 똑같이 풀이했는데요, DFS 내부 for문의 i시작점이 동적으로 변하다보니 시간복잡도를 어떻게 잡아야 할지 몰라 헷갈려 질문드려요. 만일 for문의 i의 시작점이 고정적으로 0이라면 O(N^K)가 될 것 같은데, 이처럼 i가 유동적으로 변하는 것으로 기존 빅오 표기에 영향이 갈만큼 차이가 발생하게 되나요? 시간내어 확인해주셔서 감사합니다.
m1 mac에서 강의를 듣고있습니다. env에서 channel_layer_redis 값을 파싱하는 것까지는 잘 따라왔는데 run_test_hello_channel.py 에서 해당 오류가 발생하네요 강사님 github에 있는 코드 그대로 복사해서 붙였는데도 오류가 나서 어디서부터 해결해야 할 지 모르겠습니다!도와주세요 ㅜㅜ import asyncio import os import django from channels.layers import get_channel_layer os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"django.setup() async def main(): channel_layer = get_channel_layer() message_dict = {'content': 'world'} await channel_layer.send('hello', message_dict) response_dict = await channel_layer.receive('hello') is_equal = message_dict == response_dict print("송신/수신 데이터가 같습니까?", is_equal) asyncio.run (main()) 터미널 결과는 다음과 같습니다. (webchat) tk_mac@itaegyeong-ui-MacBookAir webchat % python run_test_hello_channel.py Traceback (most recent call last): File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 65, in make backend backend_class = import_string(self.configs[name]["BACKEND"]) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/django/utils/module_loading.py", line 30, in import_string return cached_import(module_path, class_name) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/django/utils/module_loading.py", line 15, in cached_import module = import_module(module_path) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/importlib/__init__.py", line 126, in import_module return bootstrap. gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in gcd import File "<frozen importlib._bootstrap>", line 1027, in find and_load File "<frozen importlib._bootstrap>", line 992, in find and_load_unlocked File "<frozen importlib._bootstrap>", line 241, in call with_frames_removed File "<frozen importlib._bootstrap>", line 1050, in gcd import File "<frozen importlib._bootstrap>", line 1027, in find and_load File "<frozen importlib._bootstrap>", line 1004, in find and_load_unlocked ModuleNotFoundError: No module named 'channel_redis' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/tk_mac/github/webchat/run_test_hello_channel.py", line 22, in <module> asyncio.run (main()) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/asyncio/runners.py", line 44, in run return loop.run _until_complete(main) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete return future.result() File "/Users/tk_mac/github/webchat/run_test_hello_channel.py", line 12, in main channel_layer = get_channel_layer() File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 357, in get_channel_layer return channel_layers[alias] File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 78, in getitem self.backends[key] = self.make_backend(key) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 44, in make_backend return self._make_backend(name, config) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 69, in make backend raise InvalidChannelLayerError( channels.exceptions.InvalidChannelLayerError: Cannot import BACKEND 'channel_redis.core.RedisChannelLayer' specified for default
main.c파일을 컴파일 해서 main.exe 파일이 만들어졌는데 이후에 main.o파일을 만들고 나서 왜 main.o에 대한 실행파일을 만드는 건지 궁금합니다 gcc -c main.c는 컴파일만 하고 실행파일은 생성이 안 되니까 실행파일을 더 만드는 것까진 알겠는데 왜 obj파일을 또 컴파일 해서 obj파일로 실행파일을 만드는지가 궁금합니다 main.c를 컴파일 => main.exe main.c의 obj 파일 생성 => main.o main.o를 컴파일 => exe_from_obj.exe 이 중에 1,2번만 해도 obj파일과 exe파일이 생성된 것이니 더 생성해야될 파일이 없는 것이 아닌가요...?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 로그인 기능 강의를 듣던 중 의문점이 생겨 질문 드립니다. 제가 이해하기로는 1.사용자가 GET /login 요청시 "login/loginForm" 뷰 응답 -> loginForm() 메서드 호출 2.사용자가 login/loginFom.html 에서 loginId, password 입력 후 POST /login 요청 -> login() 메서드 호출 이런 순서로 이루어지는 것 같은데 위의 순서 중 1번에서 loginForm()의 파라미터인 @ModleAttribute LoginForm에 들어가는 값은 사용자가 GET /login 호출시 쿼리 파리미터로 넣어준 값이 없으니까 null이 되는 것을 확인했습니다. 이 때 이 ModelAttribute를 받은 이유가 뷰를 렌더링 할 때 null값을 넣어주기 위한 용도로 받았다고 생각하면 되는 것 맞나요??