묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Send관련 질문입니다.
로그도 찍어보고 브레이크 포인트도 잡아보면서 해보아도 도저히 무슨문제인지 파악이 안되서 질문드립니다. 핸들러함수안에서 아래와같이 1번패킷과 2번패킷으로 Send를 두번 연속호출했을 때 클라이언트에선 2번패킷으로만 두번 호출되더라구요. 근데 또 1번패킷과 2번패킷 Send사이에 브레이크 포인트로 지연시간을 잠깐 둔 후 실행하면 클라이언트에서 제대로 1번 2번 순서대로 받게 되더라구요. 왜 이런 현상이 나오는지에 대해 질문드립니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
해시태그와 이미지 업로드가 안됩니다.
해시태그를 달고 이미지 첨부해서 올려도 게시글과 사진이 서버로 넘어가지 않는거 같습니다. Request 요청은 가는데 그 이후로 처리가 안되네요. MySQL Workbench에서 새로고침눌러봐도 게시글 해시태그 이미지 모두 안올라 가집니다.. const express = require('express'); const multer = require('multer'); const path = require('path'); const fs = require('fs'); const { Post, Image, Comment, User, Hashtag } = require('../models'); const { isLoggedIn } = require('./middlewares'); const router = express.Router(); try { fs.accessSync('uploads'); } catch (error) { console.log('uploads 폴더가 없으므로 생성합니다.'); fs.mkdirSync('uploads'); } const upload = multer({ storage: multer.diskStorage({ destination(req, file, done) { done(null, 'uploads'); }, filename(req, file, done) { const ext = path.extname(file.originalname); // 확장자 추출(png) const basename = path.basename(file.originalname, ext); // 레니 done(null, basename + '_' + new Date().getTime() + ext); // 레니15335436332.png }, }), limits: { fileSize: 20 * 1024 * 1024 }, // 20MB }); router.post('/', isLoggedIn, upload.none(), async (req, res, next) => { try { const hashtags = req.body.content.match(/#[^\s#]+/g); const post = await Post.create({ content: req.body.content, UserId: req.user.id, }); if (hashtags) { const result = await Promise.all(hashtags.map((tag) => Hashtag.findOrCreate({ where: {name: tag.slice(1).toLowerCase() }, }))); // [[노드, true], [리액트, true]] await post.addHashtags(result.map((v) => v[0])); } if (req.body.image) { if (Array.isArray(req.body.image)) { // 이미지를 여러개 올리면 배열로 올라감 const images = await Promise.all(req.body.image.map((image) => Image.create({ src: image }))); // map을 해서 시퀄라이즈 create 만들어주세요. await post.addImages(images); } else { // 이미지를 하나만 올리면 image: 레니.png const image = await Image.create({ src: req.body.image }); await post.addImages(image); } } const fullPost = await Post.findOne({ where: { id: post.id }, include: [{ model: Image, }, { model: Comment, include: [{ model: User, // 댓글 작성자 attributes: ['id', 'nickname'], }], }, { model: User, // 게시글 작성자 attributes: ['id', 'nickname'], }, { model: User, // 좋아요 누른 사람 as: 'Likers', attributes: ['id'], }] }) res.status(201).json(fullPost); } catch(error) { console.error(error); next(error); } }); router.post('/images', isLoggedIn, upload.array('image'), async (req, res, next) => { // POST /post/images console.log(req.files); res.json(files.map((v) => v.filename)); }); router.post('/:postId/comment', isLoggedIn, async (req, res, next) => { // POST / post/1/comment try { const post = await Post.findOne({ where: { id: req.params.postId } }); if (!post) { return res.status(403).send('존재하지 않는 게시글입니다.'); } const comment = await Comment.create({ content: req.body.content, PostId: parseInt(req.params.postId, 10), // reducer > post.js > ADD_COMMENT_SUCCESS -> action.data.PostId 대소문자 일치시켜주어야 한다! UserId: req.user.id, }) // const fullComment = await Comment.findOne({ // where: { id: comment.id }, // include: [{ // model: User, // attributes: ['id', 'nickname'], // }], // }) res.status(201).json(comment); } catch(error) { console.error(error); next(error); } }); router.patch('/:postId/like', isLoggedIn, async (req, res, next) => { // PATCH /post/1/like try { const post = await Post.findOne({ where: { id: req.params.postId }}); if (!post) { return res.status(403).send('게시글이 존재하지 않습니다.'); } await post.addLikers(req.user.id); res.json({ PostId: post.id, UserId: req.user.id}); } catch (error) { console.error(error); next(error); } }); router.delete('/:postId/like', isLoggedIn, async (req, res, next) => { // DELETE /post/1/like try { const post = await Post.findOne({ where: { id: req.params.postId }}); if (!post) { return res.status(403).send('게시글이 존재하지 않습니다.'); } await post.removeLikers(req.user.id); res.json({ PostId: post.id, UserId: req.user.id}); } catch (error) { console.error(error); next(error); } }); router.delete('/:postId', isLoggedIn, async (req, res) => { // DELETE /post/10 try { await Post.destroy({ where: { id: req.params.postId, UserId: req.user.id, }, }); res.status(200).json({ PostId: parseInt(req.params.postId, 10) }); } catch(error) { console.error(error); next(error); } }); module.exports = router;
-
미해결스프링 핵심 원리 - 고급편
스프링 빈 생성 순서에 따라 프록시 객체가 주입되지 않을수도 있는지?
안녕하십니까, 강의 너무 잘 들었고, 실무에도 큰 도움이 될것 같습니다. 실무에 적용해보려고 테스트중인데, 잘 되지 않는 부분이 있어 문의 드립니다. @Aspect 로 어드바이저를 만들어, 특정 빈에 대해 프록시객체가 적용되길 기대하였는데, 그 빈을 주입받는 서비스에 가서 로그를 찍어보니, 프록시 객체가 주입된것이 아니고, 원래의 타겟 객체가 주입되어있었습니다. 표현식이 잘못된거나 한건 아니었습니다. 이것저것 해보다가 빈 생성 순서때문이 아닐까 싶어, 스프링 설정 파일에서 조정을 좀 했더니, 이번엔 잘 되더라구요, @Aspect 로 선언한 class 가 먼저 빈으로 등록이 되고, 원본 타겟이 이후에 빈으로 등록이 되어야만 정상적으로 AOP 가 적용되는것이 맞는걸까요?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
images저장 코드가 이해가 되질 않습니다
안녕하세요 제로초님 질문에 대한 빠른답변 항상 감사드립니다 :) 제로초님 sleact express code에서 이미지를 저장하는 부분의 코드가 이해가 되지 않아서 질문 올립니다 밑에 처럼 코드가 되어있는데 for문을 돌면서 req.files 길이 마다 n번 create를 하는 것인가요? 궁금해서 console.log(req.files)를 입력해보았는데 undefined라고 뜹니다. 코드를 작성하면 잘 저장은 되는데.. 왜 for문을 도는 건가요?? for (let i = 0; i < req.files.length; i++) { const chat = await ChannelChat.create({ UserId: req.user.id, ChannelId: exChannel[0].id, content: req.files[i].path, }); }
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
self 입력?
self 는 왜 입력하나요? 임의로 정의하신건지, 어떤 의미가 있는 지 궁금합니다. 강의에는 설명이 없네요~!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
메모리 저장
루키스님 좋은강의 잘 듣고있습니다! 다름이 아니라 강의를 듣다가 메모리에 데이터가 저장된 부분을 보니 데이터가 연속적으로 저장되지않고 16바이트 정도 띄워져서 저장이 된걸보고 구글링을하다 64비트 환경이여서 메모리 정렬때문에 8바이트 단위로 저장이 된거구나 라고 생각했는데 이 이유가 맞나요?? 또,막상 이렇게 확인해보니 cccccccc 0113f8a0 0000001 ccccccccc 이런식으로 저장된걸 보니 왜 cccccccc 0113f8a0 ccccccccc 0000001 이 아니지라는 의문이 생기더라구요 이유를 알고싶으면 운영체제를 공부해야하나요? 아니면 컴퓨터 구조쪽을 공부해야하나요??? 무엇을 공부해야 알 수 있을지 궁금해요 ㅜㅜ
-
미해결[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
mongoDB 의 capped 컬렉션 질문
몽고DB 데이터 삭제 - SQL과 비교강의 10분 20초 안녕하세요. 좋은 강의 잘 듣고 있습니다 :) 저는 employees 컬렉션을 만들 때 { capped : true, size:10000 } 으로 옵션을 주고 컬렉션을 만들었는데요. Q1 아래와 같이 조건을 주고 데이터를 삭제하려고 하니 capped 조건이 있는 컬렉션에서 데이터를 삭제할 수 없다는 에러 메시지가 뜨는데 capped 조건이 있는 컬렉션에서는 왜 데이터 삭제가 안되나요? db.employees.deleteMany( { age : { $lt : 30 } } ) Q2 예를 들어 key 값이 user_id이고 value 값이 a007인 데이터를 a0078로 데이터 수정을 하려고 할 때 capped 옵션(size : 10000으로 설정)이 부여된 컬렉션에 데이터를 업데이트 할 때 a007과 a0078의 규격이 달라서 그런지 데이터 수정이 안됩니다. 수업에서 들은 바로는 capped 옵션을 통해 데이터 저장 공간을 미리 넉넉히 확보해 두는 것으로 알고 있는데 위와 같이 규격이 하나 차이난다고 오류가 나올리가 없는데 왜 데이터 수정에 오류가 생기는 걸까요..? 항상 답변 감사합니다 :)
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
권한 요청 드립니다
- 인프런 아이디 : hyoni0712@gmail.com - 인프런 이메일 : hyoni0712@gmail.com - 깃헙 아이디 : hyoni0712@gmail.com - 깃헙 Username : hyoniiii
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
그냥 웃겨서 올려봐요
길죠..? 헛웃음나오네요 열심히 배우겠습니다 화이팅! n = int(input()) arr = [list(map(int, input().split())) for _ in range(n)] cnt = 0 for i in range(n): for j in range(n): a = arr[i][j] if 0 <i<n-1 and 0 < j <n-1 : if a > arr[i-1][j] and a > arr[i+1][j] and a>arr[i][j-1] and a > arr[i][j+1]: cnt +=1 elif i == n-1 or j == n-1: if i == n-1 and j ==n-1: if a > arr[i-1][j] and a>arr[i][j-1]: cnt+=1 elif i == n-1: if j>0: if a > arr[i-1][j] and a>arr[i][j-1] and a > arr[i][j+1]: cnt +=1 if j == 0 : if a > arr[i-1][j] and a > arr[i][j+1]: cnt +=1 elif j == n-1: if i > 0: if a > arr[i-1][j] and a > arr[i+1][j] and a>arr[i][j-1]: cnt+=1 if i == 0 : if a > arr[i+1][j] and a>arr[i][j-1]: cnt +=1 elif i== 0 or j == 0 : if i == 0 and j == 0: if a > arr[i+1][j] and a>arr[i][j+1]: cnt+=1 elif i == 0: if j <n-1: if a > arr[i+1][j] and a>arr[i][j+1] and a > arr[i][j-1]: cnt +=1 elif j == n-1: if a > arr[i+1][j] and a > arr[i][j-1]: cnt +=1 elif j == 0: if i <n-1: if a > arr[i+1][j] and a > arr[i-1][j] and a>arr[i][j+1]: cnt+=1 elif i == n-1: if a > arr[i-1][j] and a > arr[i][j+1]: cnt +=1 print(cnt)
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
assertion error at /public/이 뜹니다
안녕하세요? 강의 잘 듣고 잇습니다. 에러가 발생하는데, drf는 정말 생소해서 뭘 어떻게 건드려야 할지도 모르겠네요 ㅠㅠ 우선 다음과 같은 에러가 발생합니다 현재 view는 다음과 같습니다. from rest_framework.serializers import ModelSerializer from.models import Post from rest_framework import serializers from django.contrib.auth import get_user_model class AuthorSerializer(serializers.ModelSerializer): class Meta: model = get_user_model() firelds = ['username','email'] class PostSerializer(serializers.ModelSerializer): # author_email = serializers.ReadOnlyField(source='author.email') author = AuthorSerializer() class Meta: model = Post fields = [ 'pk', # 'author_email', 'author', 'message', 'created_at', 'updated_at', ] author serializer부분에 뭔가를 해줘야 하는 것 같은데 잘모르겠네요 ㅠㅠ 늘 좋은 강의와 답변 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
세션 생성
안녕하세요.강의를 들으면서 몇가지 의문점이 생겨서 질문드립니다.일단 서버 하나가 존재하고 수백개의 클라이언트가 해당 서버로 연결을 했다면 서버에서 비동기식으로 Lisiten을 하고 있다가 AcceptComplete이 되면 Session new를 하면서 100개가 만들어지는건가요?? 만약 그렇다면 쓰레드 엄청 많이 생성되고 각각 Recving을 하고 있는건가요?? 아니면_listenSocket.AcceptAsync(args) 라는게 실행되면 메인쓰레드는 While문으로 빠져있게 되고 딱 하나의 쓰레드만 거기서 체크하고 있는건가요??..
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
슬릭슬라이더에서 아래에 DOTS가 안보여서요.
프로젝트 섹션 마지막 slick.js에서 dots: true 로 되어 있는데.제 화면에서는 아래쪽에 동그라미들이 안보여서요 ㅜㅜ
-
미해결처음 배우는 리액트 네이티브
expo go와 연결시 계속되서 오류가 생깁니다!
안녕하십니까 강사님 강의정말 유익하게 잘듣고 있습니다. 2번째 프로젝트의 login등록 구현파트에서 firebase를 이용하여 구현하다가 로그인 버튼을 눌렀을 시 Profile화면으로 이동하지 않아 다시키고 cmd에서 expo start를 실행한 후 expo 어플을 통해 바코드를 찍고 연결하는 도중 01:36 Building JavaScript bundle: error ERROR 01:36 While trying to resolve module `firebase` from file `C:\Windows\System32\Capstone\src\firebase.js`, the package `C:\Windows\System32\Capstone\node_modules\firebase\package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`C:\Windows\System32\Capstone\node_modules\firebase\index`. Indeed, none of these files exist: * C:\Windows\System32\Capstone\node_modules\firebase\index(.native|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json) * C:\Windows\System32\Capstone\node_modules\firebase\index\index(.native|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json) 이러한 오류가 발생하였습니다. 제가 어느부분에서 놓친것이 있나요? 다시돌려봐도 찾기 힘들어서 질문을 올립니다..! GitTutorials/Capstone at master · sss654654/GitTutorials (github.com)
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
5장에서의 질문
안녕하세요 맛비님 수업을 듣는도중에 헷갈리는 부분이 생겨서 글을 올립니다. 5장에서 6:37쯤 부분에서 i_cnt_th의 값이 500000일때 0.5초마다 LED의 불이깜빡이신다고 하셨는데 zybo z7의 입력 clk는 125MHZ로 알고있어 0.5초마다 깜빡이기위해서는 i_cnt_th의 값이 62.5M(62500000) 이어야 하지않나요? 혹시 제가 잘못알고있는 걸까요? 답변주시면 감사드리겠습니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
H2 에러 관련 질문입니다!
강의를 진행하다 에러가 발생해서 질문 드립니다!! 이렇게 에러가 발생하고 있습니다. 버전을 199, 200, 202, 206, 210 이렇게 다 깔아서 해보고 했지만 똑같이 문제가 발생했고 자바11을 사용해서 bind도 넣었지만 똑같았습니다... DB 생성은 잘 돼서 콘솔로 접속하는 것까진 문제 없습니다. 다음 사진은 제 코드입니다!
-
미해결OpenCV 강좌 - 컴퓨터 비전
맥북에서 cuda toolkit
맥북에서 cuda toolkit support 안한다고 나와있는데 그냥 CUDA 사용 안해도 상관없는건가요?
-
미해결3DS MAX 입문강좌 (입문부터 자동차 예제까지)
이전에 질문하셨 분과 같은 내용인데...
이전 유사한 질문이 있었는데 링크가 열리지 않아 다시 질문드립니다. X,Y,Z가 입체되 되니 않고 가는선으로만 보여지는데요. 별도의 셋팅을 해야 하는 건가요? 한글판은 바로 입체로 보여지던데요.. 빠른 답변 부탁드립니다. 버전은 2022 영문판입니다
-
미해결
Heroku EROFS: read-only file system, mkdir '/client' 오류가 납니다
react와 nodejs를 heroku에 배포할 때 문제가 생겼습니다. push는 성공했지만 해당 페이지에 접속하면 에러가 뜹니다. heroku log --tail을 찍어본 결과 아래와 같은 오류를 확인 할 수 있었습니다. 2022-03-16T12:25:47.734926+00:00 app[web.1]: > node index.js 2022-03-16T12:25:47.734926+00:00 app[web.1]: 2022-03-16T12:25:48.422901+00:00 app[web.1]: us-cdbr-east-05.cleardb.net 2022-03-16T12:25:48.429348+00:00 app[web.1]: /app/node_modules/mkdirp/index.js:91 2022-03-16T12:25:48.429350+00:00 app[web.1]: throw err0; 2022-03-16T12:25:48.429351+00:00 app[web.1]: ^ 2022-03-16T12:25:48.429352+00:00 app[web.1]: 2022-03-16T12:25:48.429353+00:00 app[web.1]: Error: EROFS: read-only file system, mkdir '/client' 2022-03-16T12:25:48.429353+00:00 app[web.1]: at Object.mkdirSync (node:fs:1336:3) 2022-03-16T12:25:48.429354+00:00 app[web.1]: at sync (/app/node_modules/mkdirp/index.js:72:13) 2022-03-16T12:25:48.429354+00:00 app[web.1]: at sync (/app/node_modules/mkdirp/index.js:78:24) 2022-03-16T12:25:48.429355+00:00 app[web.1]: at Function.sync (/app/node_modules/mkdirp/index.js:78:24) 2022-03-16T12:25:48.429356+00:00 app[web.1]: at new DiskStorage (/app/node_modules/multer/storage/disk.js:21:12) 2022-03-16T12:25:48.429376+00:00 app[web.1]: at Function.module.exports [as diskStorage] (/app/node_modules/multer/storage/disk.js:65:10) 2022-03-16T12:25:48.429376+00:00 app[web.1]: at Object.<anonymous> (/app/index.js:57:24) 2022-03-16T12:25:48.429377+00:00 app[web.1]: at Module._compile (node:internal/modules/cjs/loader:1103:14) 2022-03-16T12:25:48.429377+00:00 app[web.1]: at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10) 2022-03-16T12:25:48.429378+00:00 app[web.1]: at Module.load (node:internal/modules/cjs/loader:981:32) { 2022-03-16T12:25:48.429378+00:00 app[web.1]: errno: -30, 2022-03-16T12:25:48.429378+00:00 app[web.1]: syscall: 'mkdir', 2022-03-16T12:25:48.429378+00:00 app[web.1]: code: 'EROFS', 2022-03-16T12:25:48.429379+00:00 app[web.1]: path: '/client' 2022-03-16T12:25:48.429379+00:00 app[web.1]: } 2022-03-16T12:25:48.629426+00:00 heroku[web.1]: Process exited with status 1 2022-03-16T12:25:48.702790+00:00 heroku[web.1]: State changed from starting to crashed 그런데 무엇이 문제인지 모르겠습니다 도움 부탁드립니다.
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
5분 42초쯤에 delete 태그대신 select 태그를 다셨는데 select태그를 달아도 되는건가요
select 태그를 달고 dao에서는 delete로 호출하네요!
-
미해결Do it! 자바 프로그래밍 입문 with 은종쌤
32비트에 음수 양수 다 있으려면 2^32 나누기 2 한만큼이 최대값이겠네요?
32비트에 음수 양수 다 있으려면 2^32 나누기 2 한만큼이 최대값이겠네요? 2147483647이라는 10진수를 2진수로 변환해보니 1만으로 32비트를 채우더라구요 맞나요? 11111111111111111111111111111111 -> 2147483647(10진수) 그러면 -2147483647을 표현하려면 1의보수인 0만으로 32비트를 채우고나서 맨오른쪽자리를 1로 바꿔주면 그게 음수형태로 나타내는거죠? 00000000000000000000000000000001 이렇게요 근데 위의 2진수를 10진수로 나타내면 결국 1 아닌가요?