안녕하세요 선생님 !!! 스승님~~ 정말 명품강의에 대해서 다시 한번 감사드립니다. 제가 선생님 강의 코드를 쪼금 변형해서 현 회사에서 사용하고자 하는 코드로 만들려고하는데 ,,, 제가 원하는 구현은 장고 form에 이미지 input을 받는데 한개의 이미지가 아닌 여러개의 이미지를 django form으로 받으려합니다. 이미지를 여러개 저장하는것은 했지만 이것을 업데이트 하는 장고 form, view, model??, template를 만드는데 어려움이 있습니다. 먼저 Post모델로는 (강의 꺼를 쪼금 그대로 사용했습니다.) 그 다음 1:N -> POST1개에 여러 이미지를 넣기 위하여~ 이런식으로 모델을 만들었습니다. 다음으로는 장고 Form으로는 위와 같이 만들어서 fields['pictures']를 만들어 저 위젯을 이용해서 여러 이미지를 받으려고 만들었습니다. 다음은 view로써 위 view역시 강의에서 만든 코드를 토대로 이미지만 여러개 받을 수있는 코드를 추가해서 만들었습니다. 템플릿은 그대로 {% bootstrap_form form%}으로 나타내었고 위와 같이 pictures란 필드에 여러 이미지를 담아서 보낼 수 있습니다. (그리고 저장하면 저장되서 템플렛에 보여줄 수 있고요 ) 다만 제가 updateview를 구현할 방법을 전혀 모르겠어서(구글링을 아무리 해도 모르겠네요 ㅠㅠㅠ ) 모델을 건들어야할지, 뷰를 건들어야할지, 폼을 건들어야할지 잘 모르겠어서 선생님께 질문드립니다. 즉 updateview를 만들어서 수정버튼을 클릭하면 기존에 선택된 이미지가 뜨도록 만들고 싶은데 어떻게 구현을 해야 할까요?? 처음 파일을 생성헸을 댸 파일을 6개 선택했다면 -> 수정버튼을 누르면 기존에 저장한 파일 6개 가 표기되어있고 다시 파일 선택눌러서 다시 다른 이미지들을 선택하거나 선택하지 않고 다시 저장할 수 있도록 만드는게 목표입니다. 위는 저장 됬을 때 모습입니다. 사진은 저장된 개수만큼 아래로 표시 되게 만들었습니다. 다시 설계를 해야 할지 뷰 or 모델 or 폼을 건들어야할지 잘모르겠습니다 (장고를 공부한지 얼마되지 않아서 많이 어렵네요 ㅠㅠ) 아 그리고 업데이트 할 때에도 사진수를 10개로 제한을 걸어서 만들고싶습니다!!!! 혹시 이해가 안되시거나 부족한 설명이 있으면 말씀해주시면 바로 추가해서 넣도록하겠습니다. 감사합니다!!
PS C:\Users\master\Desktop\learn-vue-js-master> npm install -g @vue/cli npm WARN deprecated @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained npm WARN deprecated @hapi/topo@3.1.6: This version has been deprecated and is no longer supported or maintained npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated apollo-tracing@0.15.0: The `apollo-tracing` package is no longer part of Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#tracing for details npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated npm WARN deprecated graphql-extensions@0.15.0: The `graphql-extensions` API has been removed from Apollo Server 3. Use the plugin API instead: https://www.apollographql.com/docs/apollo-server/integrations/plugins/ npm WARN deprecated @hapi/address@2.1.4: Moved to 'npm install @sideway/address' npm WARN deprecated apollo-cache-control@0.14.0: The functionality provided by the `apollo-cache-control` package is built in to `apollo-server-core` starting with Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#cachecontrol for details. npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated @hapi/hoek@8.5.1: This version has been deprecated and is no longer supported or maintained npm WARN deprecated @hapi/joi@15.1.1: Switch to 'npm install joi' npm WARN deprecated graphql-tools@4.0.8: This package has been deprecated and now it only exports makeExecutableSchema.\nAnd it will no longer receive updates.\nWe recommend you to migrate to scoped packages such as @graphql-tools/schema, @graphql-tools/utils and etc.\nCheck out https://www.graphql-tools.com to learn what package you should use instead changed 947 packages, and audited 948 packages in 46s 65 packages are looking for funding run `npm fund` for details 11 vulnerabilities (4 moderate, 7 high) Some issues need review, and may require choosing a different dependency. Run `npm audit` for details. 터미널에 이렇게 뜨는데 무슨 문제일까요?ㅠㅠ
안녕하세요 루키스님. 항상 강의 잘 보고 있습니다! 인벤토리 실습을 보며 공부중에 인벤토리의 기능에 대해 궁금증이 생겨서요. (프리팹으로 된 슬롯을 어떻게 json으로 저장하는지...툴팁이라던지..사용하기라던지 등) 구글링으로도 딱 원하는 정보를 찾을 수가 없어서 보니까 강사님의 파트 7,8? 쯤에 인벤토리 심화과정이 있는거 같더라구요. 근데 아직 파트4는 시작할 엄두도 못내고 있어서...인벤토리 부분만 먼저 따로 봐도 문제가 없을까요? 아니면 역시 순서대로 보는 게 좋을까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요! 강의 잘 듣고 있습니다. join_on_filtering()테스트에서 다음과 같이 assertthat으로 검증을 했는데 null이 반환되더군요 ㅠ.. @Test public void join_on_filtering (){ List<Tuple> result = queryFactory .select( member , team ) .from( member ) .leftJoin( member . team , team ) .on( team . name .eq( "teamA" )) .orderBy( member . username .asc()) .fetch() ; for (Tuple tuple : result) { System. out .println( "tuple = " + tuple) ; } Tuple member1 = result.get( 0 ) ; Tuple member2 = result.get( 1 ) ; assertThat (member1.get( team . name )).isEqualTo( "teamA" ) ; 그래서 아래와 같이 수정하여 테스트 해봤는데 잘 동작됩니다. @Test public void join_on_filtering (){ List<Tuple> result = queryFactory .select( member , team ) .from( member ) .leftJoin( member . team , team ) .on( team . name .eq( "teamA" )) .orderBy( member . username .asc()) .fetch() ; for (Tuple tuple : result) { System. out .println( "tuple = " + tuple) ; } Tuple member1 = result.get( 0 ) ; Tuple member2 = result.get( 1 ) ; assertThat (member1.get( team ).getName()).isEqualTo( "teamA" ) ; assertThat (member2.get( member ).getUsername()).isEqualTo( "member2" ) ; 이전에 했던 gruop() 테스트 코드에서는 다음과 같이 assertthat 에서 team.name으로 검증을 했었습니다. @Test public void group (){ List<Tuple> result = queryFactory .select( team . name , member . age .avg()) .from( member ) .join( member . team , team ) .groupBy( team . name ) .fetch() ; Tuple teamA = result.get( 0 ) ; Tuple teamB = result.get( 1 ) ; assertThat (teamA.get( team . name )).isEqualTo( "teamA" ) ; assertThat (teamA.get( member . age .avg())).isEqualTo( 15 ) ; } 어째서 join_on_filtering () 에서는 team.name으로 참조를 하지 못하는것일까요??
회원 가입 후 DB에 확인하니 이름은 kim으로 고정 나머지는 null 값으로 확인됩니다. 그리고 inset in to 에 저장이 안되고 밑의 내용이 뜨는데 왜그런걸까요? binding parameter [1] as [VARCHAR] - [서울] binding parameter [2] as [VARCHAR] - [거리] binding parameter [3] as [VARCHAR] - [111] binding parameter [4] as [VARCHAR] - [kim] binding parameter [5] as [BIGINT] - [1]
원인은 아직 제대로 파악하지는 못했습니다. 전에 table email unique 관련 문제로 테이블을 다 날렸고 데이터가 아무것도 없는 상태였습니다. 혹시 데이터가 없어서 SSR하는데 문제가 있는가 싶어서 과거 branch로 이동하여 회원가입을 해서 user 데이터를 만들었고 이후 현재 브랜치로 돌아와 실행해보니 문제가 해결되었습니다. 늦은시간 답변 해주셔서 감사합니다.
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요. 평타/화살 스킬 모두 논타겟팅 스킬로 보이는데요. C++ 강의에서도 칼을 휘두르면 부채모양 꼴로 칼이 휘둘러 지며 닿는 오브젝트마다 데미지를 준다거나 하는 논타겟팅 스킬이 사용되는지 궁금합니다. 앞으로 보스 NPC가 공격 시, 데미지 포인트 영역 표시가 되는 것 도 구현이 되었으면 좋겠습니다. 그리고 NPC의 행동에 FSM이나 BehaviorTree를 사용해 주시면좋겠습니다. 어디까지나 건의사항이니 편하게 참고해 주시면 좋을 것 같습니다. 시간이 있고 여건이 된다면 강의는 얼마든지 만들어 주실 수 있으신 것이니까요. 그럼 잘 부탁드립니다.
데이터쪽은 전혀 모르는 상태에서 배포강의를 보고 따라가던 와중에 프론트 서버 배포 후 도메인까지 연결했지만 로그인과 회원가입 에러가 발생했습니다ㅠ url에 백엔드 주소 앞에 프론트주소까지 같이 오는데 어떤곳이 문제인지를 찾지 못해서 질문드립니다... 어떤 소스를 보여드려야 하는지조차 감을 못잡고 있습니다...ㅠㅠ 도메인은 hummingbird.kr을 사용하고 있습니다!
안녕하세요 강사님. 항상 강의 잘 챙겨보고 있습니다. 개인 프로젝트에서 파일 업로드 및 이미지 표시를 할 일이 생겨서 코딩하다가 디렉토리 문제가 생겨서 이렇게 글을 남깁니다. 루트 디렉토리 : /Users/.../files/ 중간 디렉토리 : Q1/, Q2/, Q3/ .... 위와 같이 파일들을 저장할 때 루트 디렉토리 다음 중간 디렉토리 안에 저장해야 할 때 (/Users/.../files/Q1/c6ea4erfd.png 이런 형태로) 어떻게 처리해야하는지 알 수 있을까요? UploadFile 클래스 내에 멤버변수로 directories를 추가하고 안에 파일을 저장하는 것까진 했는데 그 뒤로 url을 호출하는 방법을 방법을 모르겠습니다.. @RestController @RequiredArgsConstructor @RequestMapping ( "/api/files" ) public class FileApi { private final FileStore fileStore ; @GetMapping ( "/{fileName}" ) public Resource downloadImage ( @PathVariable final String fileName) throws MalformedURLException { return new UrlResource( "file:" + fileStore .getFullPath(fileName)) ; } } 다음과 같이 api를 만들고 Get : localhost:8080/api/files/Q1/c6ea4efd-3a73-442a-94c7-5bede446e79c.png 와 같이 호출하면 404 not found가 떨어집니다.. 이미지도 id를 부여하고 @PathVariable로 이미지 id를 보내서 디렉토리와 fileName을 DB에서 가져오도록 처리해야할까요?ㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 수업 잘듣고 있습니다. Glide 이미지 로딩이 정상적으로 되지 않는데, 전체적으로 설정이 잘 되어있고 올려주신 소스코드도 복사해서 테스트 해봤는데(파이어베이스 전) 잘 되지 않아 문의드립니다ㅠㅠ 바쁘시겠지만 확인 부탁드립니다. 소스코드
위와 같이 에러 메세지가 뜹니다 . thunk middleware 문제인가 싶어서 지워도 봤지만 이번엔 getServerSideProps에서 dispatch 할 때 문제가 생깁니다. ```javascript export const getServerSideProps = wrapper . getServerSideProps (( store ) => async ({ req }) => { const cookie = req ? req . headers . cookie : '' ; // req가 있다면 cookie에 요청에 담겨진 cookie를 할당한다. axios . defaults . headers . Cookie = '' ; // 요청이 들어올 때마다 초기화 시켜주는 것이다. 여기는 클라이언트 서버에서 실행되므로 이전 요청이 남아있을 수 있기 때문이다 if ( req && cookie ) { axios . defaults . headers . Cookie = cookie ; // 서버일때랑 cookie를 써서 요청을 보낼 때만 headers에 cookie를 넣어준다 } store . dispatch ({ type : LOAD_MY_INFO_REQUEST , }); store . dispatch ({ type : LOAD_POSTS_REQUEST , }); store . dispatch ( END ); await store . sagaTask . toPromise (); // store/configureStore.js > store.sagaTask }); // 이 부분이 Home 보다 먼저 실행됨 export default Home ; ``` 잘되다가 코드를 수정하거나 건든것이 없고 branch에 push 한 뒤 새로운 branch에서 git pull origin master를 하고 생긴 에러입니다. 뭐가 문제인지 구글링을 해보고 데이터 흐름대로 따라가봐도 감이 오질 않습니다 . 조언 부탁드립니다ㅠㅠ