안녕하세요 강의와 자료를 보면서 차근차근 배워가고 있는 수강생입니다. 카카오 토큰 발금하기 강의를 듣는 과정에서 토큰을 받을때 Bad Client error가 발생했고, 이 문제를 해결하지 못하고 있어서 질문을 남깁니다. 현재 제가 작성한 코드 및 에러코드는 아래와 같습니다. {"errorCode":"500 INTERNAL_SERVER_ERROR","errorMessage":"[401 Unauthorized] during [POST] to [ https://kauth.kakao.com/oauth/token ] [KakaoTokenClient#requestKakaoToken(String,Request)]: [{\"error\":\"invalid_client\",\"error_description\":\"Bad client credentials\",\"error_code\":\"KOE010\"}]"} 아래와 같은 글을 참고하여 에러를 해결해 보려고 했으나 잘 해결되지 않아 3일째 삽질중에 있습니다. https://velog.io/@okhaeeumm/kakao-%EB%A1%9C%EA%B7%B8%EC%9D%B8-api-%EB%8F%84%EC%9E%85-%EC%A4%91-%EB%A7%88%EC%A3%BC%ED%95%9C-%EC%97%90%EB%9F%AC%EB%93%A4 혹시 시간이 괜찮으시다면, 에러 원인에 대해서 한번 봐주실 수 있는지 여쭤보고자 질문을 남기게 되었습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 우선 스프링 부트 버전이 달라서 강의 버전과 다른 것(2.7.6)을 선택해서 프로젝트 생성했습니다. Q1 pdf의 build.gradle 부분 통째로 복사해서 덮어쓰기 했는데 이래도 괜찮나요? Q2 프로젝트 실행하면 JPA Buddy Trial 이 만료되었다고 하는 데, 강의랑 관련 있는 것일까요? Q3 테스트에서 에러가 뜹니다. https://drive.google.com/file/d/18MOAFV6DnU4Wo-YtKXtk0rvzvp6gDOyI/view?usp=sharing
안녕하세요. DDR3 Controller 강의 자료를 보고 공부 중인데요. 전에 부터 가졌던 궁금증인데 본 강의 보면서 생각나 질문 드려봅니다. 자료를 보면 ddr_controller라고 하는 부분은 현재 MIG IP로 구현되어 있고 그 내부는 크게 Memory controller 와 PHY부분으로 되어 있는거 같은데요. 실제 강의 자료 Write/Write8이나 Read/Read8 block들은 "User FPGA Logic"에 해당되는 블락들이고 이 블락들은 마지막에 영상데이터를 구현하는데 사용하는 블락들로 생각 되는데 맞나요? 그리고 다른 질문은 처음에 강의 개요에 보면 전문가들은 실제로 Memory controller를 직접 구현해서 사용한다고 말씀하셨는데, FPGA에 MIG IP내부의 Memory Contoller 부분은 직접 Verilog/VHDL로 설계해서 사용한다는 말씀이신걸로 이해했습니다. 설계경험이 많으신 분들은 실제로 이렇게 많이 프로젝트를 하시나요? 그리고 모든 FPGA가 이 Memory controller를 MIG를 사용하지 않고 직접 설계한 Verilog로 MIG를 대체해서 설계 가능하도록 지원이 되나요? 3.4에 나와 있느 Physical layer라고 묘사된 부분은 어떤 부분인가요? 그리고 이 부분이 직접 설계된 Memory controller와 같이 FPGA에 구현되는 부분인가요? 아직 잘 모르는 부분이 많아 강의 자료 보면 공부 하고 있습니다. 감사합니다.
작성 이유 --> loadable에서 코드 스플리트가 정상적으로 동작하는데, Channel과 Workspace 코드를 작성 시 Login/index.tsx가 오류가 생김 --> 타입을 지정했어야 했나?(아니었음) 여러 고민하면서 시간을 보내 다른 분들도 참고하시라고 올리는 글 코드 오류가 나오는 곳 --> pages/SignUp/index.tsx에 오류 없이 작성했으나 layouts/App.tsx에서 오류 나는 경우 const LogIn = loadable(() => import('@pages/LogIn')); //import가 오류난다고 하는 경우 오류 코드 Type 'Promise' is not assignable to type 'Promise>'. Type 'typeof import("C:/OneDrive/\uBC14\uD0D5 \uD654\uBA74/\uD070 \uD30C\uC77C\uB4E4/slack_react/sleact/alecture/pages/LogIn/index")' is not assignable to type 'DefaultComponent'. Type 'typeof import("C:/Users/131ji/OneDrive/\uBC14\uD0D5 오류 원인 --> redirect를 제대로 인식하지 못함 if (data) { return redirect('/workspace/channel/'); } 오류 해결 --> redirect 대신 Navigate를 사용해보세요 Navigate 공식 문서 import { Link, Navigate } from 'react-router-dom'; if (data) { return <Navigate to="/workspace/channel/" />; }
안녕하세요. Thymeleaf를 이용한 html 파일 수정 후 재시작하지 않고 반영된 내용을 곧바로 확인하기 위해 아래와 같이 구성했습니다. resources/application.yml spring: profiles: active: local devtools: restart: enabled: false thymeleaf: cache: false Intellij 설정 Run/Debug Configurations > Spring Boot > (구동중인 App) On 'Update' action/On frame deactivation > Update class and resources로 설정. Settings > Build, Execution, Deployment > Compiler에 "Build project automatically" 선택. Settings > Advanced Settings > "Allow auto-make to start even if developed application is currently running" 선택. 위와 같이 구성해놓고 브라우저에서 화면을 띄우면 아래와 같이 간헐적으로 TemplateInputException이 나옵니다. resources/ 하위에 있는 앞단 코드를 수정한 후, 수정한 내역을 확인할 때도 간헐적으로 나옵니다. ERROR 9104 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template [index], template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause org.thymeleaf.exceptions.TemplateInputException: Error resolving template [index], template might not exist or might not be accessible by any of the configured Template Resolvers at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE] at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.0.15.RELEASE.jar:3.0.15.RELEASE] 그리고 위에 기재한 설정에서 On frame deactivation 설정을 아예 지워버리면, 서버를 내렸다 올려야만 변경된 내용 확인이 가능한 상황입니다. 어떠한 문제가 있는건지 전혀 감이 안오네요. 어떠한 부분을 추가로 확인해봐야하나요?? 확인 후 알려주시면 감사하겠습니다.
따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
sub create페이지가 잘나오다가 api/me연결해주는 getServerSideProps 함수 코드를 써준 순간부터 create 페이지가 나오지 않고 계속 로딩만 됩니다 네트워크 탭을 확인해보았을 땐 create 페이지에서 status가 canceled 로만 뜹니다 코드도 똑같이 썼고, 쿠키값도 잘 전달됐고,백엔드 프론트 둘다 로그를 찍어보았을 때 쿠키에 있는 토큰 값도 잘 나오는데 왜 페이지가 나오지 않는건지 어디서 오류가 난 것인지 궁금합니다 client/pages/subs/create.tsx 백엔드 routes/auth.ts 의 router 부분 user , auth 미들웨어
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 항상 친절한 답변해주셔서 감사드립니다. 1.URI, 리소스에대한 정의가 헷갈려서 강의를 계속 돌려봐도 이해가 되지를 않아 따로 정리해보았는데 이렇게 이해하면될까요? 예를 들어 회원정보관리 API를 설계한다고 하면 URI = /members (리소스에 접근할수있는 식별자) 리소스 = 회원 또는 회원목록웹페이지 행위 = 조회, 등록, 삭제, 변경 HTTP메서드 = 리소스를 대상으로 행위를 함 URI == 리소스 이렇게 이해하면될까요 ? 2.추가적으로 URI와 리소스에대한 분명한 정의가 무엇인지 질문드립니다. URI는 path + query(ex. /member?q=hello&hl=ko)인가요 ? 그래서 예를들면 GET /search?q=hello&kl=ko HTTP/1.1 에서 /search?q=hello&kl=ko 이 부분이 URI인가요? 그리고 리소스는 강의자료에는 리소스=회원이라고만되어있고 구글링을해서 찾아보면 리소스=자원이라고만 되어있는데, 리소스조회, 리소스등록과 같이 '리소스'에 대한 정의가 무엇인지 질문드립니다.
조회용 샘플 데이터를 입력하면서 application.yml 파일의 ddl-auto : none 옵션으로 바꾸어주면, 실행 시에 데이터가 더이상 쌓이지 않아야 하는 것이 맞는지 궁금합니다. 저는, 실행할 때 마다 InitDb의 데이터가 쌓여서 저장이 되는데, 이게 맞는 건지 잘 모르겠습니다. 제가 생각한 바로는, 최초에 create 옵션일 때 데이터를 넣어두고, 이후에 none으로 바꾸게 되면 더 이상 데이터가 입력되지 않는 것이라고 생각했는데 혹시 제 생각이 맞다면, none 옵션 시에 insert 쿼리가 안나가게 하는 방법이 있을까요? 참고로 제 스프링부트 버전은 2.7.1입니다. h2 데이터베이스는 2.1.214가 설치되어있음을 확인했습니다.
안녕하세요 ㅎㅎ 강의 잘 보고있습니다. 강의를듣고 수업자료 말고 기존에 작성했었던 , Django , python 을 배포하려고 하는데여 강의에서 나오대로 했지만 심각이라는 메세지가 나오면서 502 에러가 발생했습니다. 502 에러가 발생해서 아마 nginx 가 뜬거 같은데 서버가 안뜬게 아닌가 ?? 생각을 하고있는데여 이럴때 어떻게 해야하면 될까요 ? 및에 최근 이벤트를 보니 Environment health has transitioned from Degraded to Severe. 100.0 % of the requests are failing with HTTP 5xx. ELB processes are not healthy on all instances. Configuration update completed 74 seconds ago and took 75 seconds. ELB health is failing or not available for all instances. Impaired services on all instances. 유형으로 이러한 에러가 발생하네여 현재 검색하면서 이러한 자료를 보면서 해결해보려고 하고있습니다 ㅎㅎ https://shinsunyoung.tistory.com/101 찾아보면서 생각이 드는건데 환경 속성을 변경 한다던지.. 다른것을 편집하려고 할때 규칙이 따로 있을까요 ?? ㅎㅎ 예를들어 port 를 변경한다고 할때 이름을 SERVER_PORT 로 적어야한다던지요 ㅎ
따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
ec2 instance connect 에서 npm run build:prod 시 에러가 뜹니다 ubuntu@ip-172-31-7-125:~/raddit-clone-deploy/client$ npm run build:prod > client@0.1.0 build:prod > env-cmd -f .env.production next build info - Loaded env from /home/ubuntu/raddit-clone-deploy/client/.env.production Failed to compile. ./src/pages/_app.tsx 31:3 Error: Synchronous scripts should not be used. See: https://nextjs.org/docs/messages/no-sync-scripts @next/next/no-sync-scripts ./src/pages/index.tsx 42:5 Warning: React Hook useEffect has missing dependencies: 'observeElement' and 'observedPost'. Either include them or remove the dependency array. react-hooks/exhaustive-deps ./src/pages/r/[sub].tsx 28:7 Warning: React Hook useEffect has missing dependencies: 'authenticated' and 'user'. Either include them or remove the dependency array. react-hooks/exhaustive-deps info - Need to disable some ESLint rules? Learn more here: https://nextjs.org/docs/basic-features/eslint#disabling-rules info - Linting and checking validity of types .ubuntu@ip-172-31-7-125:~/raddit-clone-deploy/client$ ^C 31:3 Error: Synchronous scripts should not be used. See: https://nextjs.org/docs/messages/no-sync-scripts 여기서 async 나 defer 추가하래서 client>src>pages>_app.tsx에서 return <> <Head> <script defer src="https://kit.fontawesome.com/0d9816814b.js" crossOrigin="anonymous"></script> </Head> <SWRConfig value = {{ fetcher }}> <script defer src="https://kit.fontawesome.com/0d9816814b.js" crossOrigin="anonymous"></script> 추가해보았지만 해결이 안되었습니다. 선생님 소스코드 보니 integrity가 추가되었는데 이게 문제일까요? <script defer src="https://use.fontawesome.com/releases/v6.1.1/js/all.js" integrity="sha384-xBXmu0dk1bEoiwd71wOonQLyH+VpgR1XcDH3rtxrLww5ajNTuMvBdL5SOiFZnNdp" crossOrigin="anonymous"></script>
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요. 김영한님의 강의를 잘 보고 있습니다. 강의를 보던도중, 문득 의문점이 들어서 여쭤보고자 질문을 작성하게 되었습니다. 질문의 테마는 값 타입 컬렉션과 기본키라고 할 수 있겠네요. 기본 지식 테이블은 기본키가 있을수도, 없을수도 있다. 제가 배운대로는, 테이블은 기본키가 존재할 수도 있고 존재하지 않을 수도 있다고 배웠습니다. 그리고 기본키를 두는 이유는 기본키가 겹치지 않도록 해서, 데이터 중복을 막고, 조회 시 효율 증가를 위해서라고 생각했습니다. 김영한님의 강의에서 말하는 값타입은 주소가 다르더라도 안에 있는 값이 모두 같다고 하신걸로 이해했습니다. 그래서 자바 객체가 값타입으로 들어가는 경우에는 equals를 통해서 같은지를 비교한다는 것도요!! 김영한님의 강의 중 예제로 들어주셨던 Member의 favoriteFoods, addressHistory는 값 타입을 데이터베이스 테이블로 변환한 예시로 이해했습니다. 그리고 강의 내용에서 JPA를 이용해서 Table 구조를 생성하는 걸로 이해했습니다. 여기까지가 제가 이해한 내용입니다. 저는 그래서 해당 구조로 데이터베이스를 만들어준다고 인지했고, FAVORITE_FOOD, ADDRESS는 각각 중복값이 들어갈 수없다고 생각했습니다. 문제상황 하지만 테이블의 생성 내용을 보면, 기본키 설정 부분이 빠져 있습니다. 외래키 매핑만 되어 있고 실제로 기본키 부분이 빠져있습니다. 제가 만든, ADDRESS 테이블을 예시로 들면, 이는, FAVORITE_FOOD 도 동일합니다. 정말 중복값이 들어갈 수 없는지 테스트해보았습니다. 테스트를 위한 코드는 다음과 같습니다. Address address = new Address("newCity", "street", "10000"); Member member1 = new Member(); member1.setName("member1"); member1.setHomeAddress(address); member1.getFavoriteFoods().add("치킨"); member1.getFavoriteFoods().add("치킨"); member1.getFavoriteFoods().add("치킨"); member1.getFavoriteFoods().add("피자"); member1.getFavoriteFoods().add("족발"); Address oldAddress = new Address("oldCity3", "street", "10000"); member1.getAddressList().add(new Address("oldCity", "street", "10000")); member1.getAddressList().add(new Address("oldCity2", "street", "10000")); member1.getAddressList().add(new Address("oldCity3", "street", "10000")); member1.getAddressList().add(new Address("oldCity3", "street", "10000")); member1.getAddressList().add(new Address("oldCity3", "street", "10000")); em.persist(member1); 결과값은 다음과 같습니다. 값을 보게되면, FAVORITE_FOOD의 경우는 Set 자료구조 사용으로 중복값이 들어갈 수 없는 것이고, ADDRESS의 경우는 중복값이 들어갈 수 있었습니다. 만약 값의 변경이 일어나는 경우에는 어떻게 될까? 하는 고민이 생겨, 중복으로 들어있는 내용의 값을 변경해보았습니다. Address address = new Address("newCity", "street", "10000"); Member member1 = new Member(); member1.setName("member1"); member1.setHomeAddress(address); member1.getFavoriteFoods().add("치킨"); member1.getFavoriteFoods().add("치킨"); member1.getFavoriteFoods().add("치킨"); member1.getFavoriteFoods().add("피자"); member1.getFavoriteFoods().add("족발"); Address oldAddress = new Address("oldCity3", "street", "10000"); member1.getAddressList().add(new Address("oldCity", "street", "10000")); member1.getAddressList().add(new Address("oldCity2", "street", "10000")); member1.getAddressList().add(new Address("oldCity3", "street", "10000")); member1.getAddressList().add(new Address("oldCity3", "street", "10000")); member1.getAddressList().add(new Address("oldCity3", "street", "10000")); em.persist(member1); em.flush(); em.clear(); Member findMember = em.find(Member.class, member1.getId()); System.out.println("================== Start 2 =================="); findMember.getAddressList().remove(oldAddress); findMember.getAddressList().add(new Address("newCity1", "street", "10000")); tx.commit(); 결과값은 다음과 같습니다. 중복값을 한번에 지워준다면, 그래도 결과적으로는 ADDRESS값을 중복이 없는 값객체로 쓸 수 있겠다고 생각했지만, 모두 지우지 않고 중복값을 하나만 지웠습니다. 물론 List의 특성 상 중복 값 한개만 지우는게 당연하지만요. 가설 목표하던 테이블 구조로 실제로 만들어지지 않았다고 생각했습니다. -> 기본키가 없다. 왜냐하면 생성하고자 하는 테이블 구조와 생성된 테이블 구조가 다르기 때문입니다. 음식에서 중복이 생기지 않는 이유는 Set의 특성 때문이지 테이블 때문이 아니라고 생각이 들었습니다. 값 객체의 특성 상 중복을 허용하는 경우는 없다. 좋아하는 음식의 경우 같은 음식이 두번 있을 이유는 없지만, 이전의 주소의 경우는 같은 주소에 두번 이사갈 수 있다. 그렇다면 음식과 다르게 주소의 경우는 중복이 가능하고, 값을 추적할 수 있어야 하므로 Entity로 사용하는게 맞지 않을까요? 이 부분은 김영한님깨서 설명해주신 부분과 일치하지만, 결론까지 도달한게 맞는지 궁금합니다. 두서 없이 길게 적은 것 같은데, 제가 생각한 가설이 맞는지가 궁금합니다. 그리고 나아가 가설까지 도달하는 방식에 문제가 있거나 고칠점이 있다고 피드백도 부탁드립니다. 읽어주셔서 감사합니다.
$ yarn run seed yarn run v1.22.17 $ ts-node ./node_modules/typeorm-extension/dist/cli/index.js seed -d ./dataSource.ts query: SELECT VERSION() AS `version` typeorm-extension seed Populate the database with an initial data set or generated data by a factory. Options: -h, --help Show help [boolean] -r, --root Path to the data-source / config file. [default: "/Users/teetee6/code_react/sleact/hback"] -c, --connection Name of the connection on which run a query. [deprecated] [default: "default"] -f, --config Name of the file with the data-source configuration. [deprecated] [default: "ormconfig"] -d, --dataSource Name of the file with the data-source. [default: "data-source"] -s, --seed Specify the seed class to run. -v, --version Show version number [boolean] TypeError: connection.createQueryBuilder is not a function at CreateInitialData.run (/Users/teetee6/code_react/sleact/hback/src/database/seeds/create-initial-data.ts:40:8) at /Users/teetee6/code_react/sleact/hback/node_modules/typeorm-extension/src/seeder/module.ts:125:18 at Generator.next (<anonymous>) at fulfilled (/Users/teetee6/code_react/sleact/hback/node_modules/typeorm-extension/dist/seeder/module.js:5:58) error Command failed with exit code 1. 4달전 즈음의 공지사항에 typeorm 0.3버전이 Seeding이 아직 호환 안된다고 되있던데 아직 안나온 거겟죠,, /database/seeds/create-initial-data.ts Connection이 deprecated되었다던데 제가 못찾은 새로운 seed방법이 나온걸까요 검색해봐도 안나오는데 아니면 없는걸까요 export default class CreateInitialData implements Seeder { public async run(factory: Factory, connection: Connection): Promise<any> { await connection .createQueryBuilder() .insert() .into(Workspaces) .values([{ id: 1, name: 'Sleact', url: 'sleact' }]) .execute(); await connection .createQueryBuilder() .insert() .into(Channels) .values([{ id: 1, name: '일반', WorkspaceId: 1, private: false }]) .execute(); } }