묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결React로 NodeBird SNS 만들기
user/1 보안적 질문
안녕하세요. 제로초님 아바타를 클릭시 URL는 user/1(userid) 이렇게 뜨잖아요? 하지만 이렇게 할시 보안적으로 안좋지 않나요?? 이건 user가 1번 user라는 뜻이나 다름없을거같은데 이걸 감추려면 crypto나 bcrypt로 보안해야하나요??
-
미해결React로 NodeBird SNS 만들기
남의 정보 가져오는 라우터 질문
안녕하세요. 제로초님 다름이 아니라 router.get(':/id') 남의 정보 가져오는 라우터인데 여기에 const jsonUser = user.toJSON() 하고 res.json(jsonUser)하셔서 보냈잖아요. 여기서 궁금한거 jsonUser말고 const user = await db.User.findOne({})으로 해서 한번 보내봤는데 CORS 등 에러가 뜨더군요 이 이유가 먼지 궁금합니다.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
12강 토큰생성 질문드립니다.
안녕하세요! 강의 너무 잘듣고있습니다. 진행중에 막히는 부분이 생겨 질문드립니다. generateToken을 할때 token을 만들어주고 model 단에서 user.save()를 통해 token을 저장한다고 알고있습니다. 그런데 save() 함수에 들어간 후 부터 response가 오지 않고, 에러도 뜨지 않으며 sending request 에서 멈추는 현상이 있습니다. 1. save 함수 이전까지 console로 찍어서 동작이 되는걸 확인하였습니다. 코드가 같은데 왜 이런현상이 일어나는지 잘 모르겠습니다 ㅠㅠ 제 생각에는 var user = this; 에서 mongoose 객체를 가져올때 문제가 생기는거 같습니다. (이전 회원가입때 사용한 save() 함수는 ctrl 을 눌러서 해당 함수로 이동이 가능하지만 로그인에서 사용한 save() 함수는 함수로 이동이 안되었습니다.) user.save(function (err, user) { console.log("test") // 해당 로그도 출력이 안되는걸로 보아 save function에서 어떤 문제가 있는것 같습니다. ㅠ if(err) return cb(err); cb(null, user); }); *추가 07/28* app.post('/api/users/login', (req, res)=>{ // email을 db에서 조회 User.findOne({email : req.body.email}, (err, userInfo) => { if(!userInfo){ return res.json({ loginSuccess : false, message : "일치하는 이메일이 없습니다." }) } // email이 있다면 비밀번호 체크 userInfo.comparePassword(req.body.password, function(err, isMatch) { if(!isMatch){ return res.json({loginSuccess:false, message:"비밀번호가 틀렸습니다."}); } //비밀번호까지 맞으면 토큰 생성. userInfo.generateToken((user) => { const userSave = new User(user) userSave.save((err,userInfo)=>{ // 가져온 토큰으로 저장 if(err) return res.status(400).send(err); res.cookie("x_auth", userInfo.token) .status(200) .json({loginSuccess:true, userId: userInfo._id}); }) }); }); }) }); User.js 에서 const user = this; 로 받아올때 user 정보는 정상적으로 가져오지만, save() 함수는 호출할 수 없는걸 확인했습니다. 그래서 위와 같이 app.js 에서 해결했는데 괜찮은가요? https://www.inflearn.com/questions/30724 이 글이랑 비슷한 증상인것 같습니다. 2. 부가적인 질문입니다. save() 함수 안에서 선생님께서는 if(err) return cb(err); // save 실패시 cb(null, user); // save 성공시 이와 같이 코드를 작성하셨는데, if 단에서는 callback 함수를 return 해주는데 성공시에는 왜 return을 사용하지 않고 cb 함수를 호출하는지 알수있을까요? 두가지의 차이가 무엇인지 궁금합니다. 혹시나 도움이 되실까 싶어 github 주소를 남기겠습니다. https://github.com/dding-g/node-study 감사합니다.
-
미해결[라즈베리파이] IoT 딥러닝 Computer Vision 실전 프로젝트
예제소스 코드와 실습 자료는 유료인가요
안녕하세요, 인프런에서 구매 후 강의를 청강하고 있습니다~ 자료를 받으려 하는데, 사이트에 들어가 받으려 하니, 전자책을 또 구매하라고 하는데 따로 결제가 필요한 서비스 인가요..?
-
해결됨파이썬 사용자를 위한 웹개발 입문 A to Z Django + Bootstrap
pk 질문 있습니다
#test.pydef test_post_detail(self): post_000 = create_post( title='The first post', content='hello wolrd.', author=self.author_000, ) self.assertGreater(Post.objects.count(), 0) post_000_url = post_000.get_absolute_url() self.assertEqual(post_000_url, '/blog/{}/'.format(post_000.pk)) response = self.client.get('/blog/{}/'.format(self.pk)) # post_000.get_absolute_url()의 소스를 가져오겠다 << 이 부분!! self.assertEqual(response.status_code, 200) soup = BeautifulSoup(response.content, 'html.parser') title = soup.title # soup = html 태그 가져옴 # models.pydef get_absolute_url(self): return '/blog/{}/'.format(self.pk) test.py에서 제가 이부분이라고 표시한 곳에서 post_000_url이나 '/blog/{}/'.format(self.pk) 나 같다고 생각해서전자대신 후자를 넣고 테스트를 돌렸는데AttributeError: 'Testview' object has no attribute 'pk' 가 뜨더군요 pk가 models.py 에서도 쓰이고 urls.py 에서도 쓰이는데 왜 여기서 쓸수 없는지 궁금합니다
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
정규화관련 질문
안녕하세요 회귀의 경우 타겟은 물론 피쳐에서도 왜곡이 심한 데이터는 정규화나 로그값을 취해줘야 한다고 하셨는데 분류의 경우는 크게 상관이 없을까요?
-
미해결Flutter 초급 - Http통신, 상태관리
Flutter Kotlin작성중 문제
Android SDK를 잡아줬는데 Android studio 껏다가 다시 켜도 빨간 에러가 뜨네요....
-
해결됨홍정모의 따라하며 배우는 C언어
메인함수 질문입니다.
이런식으로 한 프로젝트 안에 두 개의 소스파일을 작성하고 각 소스파일 내부에서 각각 메인함수를 작성했을 때, 소스파일을 컴파일하려 하면 이런 에러가 뜹니다. 혹시 이런 경우에는 다른 소스파일에 있는 메인함수 이름을 바꿔서 실행시키는 방법 말고는 해결 방법이 없을까요?
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
regplot 사용 시 2015.5 와 같은 표현 관련 질문
안녕하세요. 좋은 강의 감사합니다. 3분 강의 내용과 다르게, 저는 regplot 시 년도가 2015.5등으로 나오던데, 어떤 옵션을 바꾸어야 강의와 같이 나누어 떨어지는 년도만 나오고, 데이터가 없는 2013~2014, 2020~2021이 나오게 표현할 수 있나요?
-
미해결홍정모의 따라하며 배우는 C++
쓰레드와 logical processors?
안녕하세요 강의 11:30 을 보면 교수님이 본인 컴퓨터의 core 와 logical processors의 개수를 살펴보고 계신데요 . 제가 검색을 조금 해보니 코어수x2 = 쓰레드의 수 라는 말이 많더라구요. 그렇담 logical processor = thread 인거고, 쓰레드는 최대 16개(여기서는)까지 동원할 수 있는건가요?
-
미해결쉽게 배우는 Webpack
쿠폰 주세요 ㅜㅜ
강의가 리뉴얼 된지 모르고 쿠폰을 못써서 쿠폰 부탁드려요 ㅜㅜ
-
미해결페이스북 클론 - full stack 웹 개발
회원가입 부분을 하나씩 조정하고싶습니다
form.as_p말고 하나씩 만들고자하는데 password부분을 어떻게 가져와야하는지 모르겠습니다.다른것들은 form.username, form.email등으로 불러와지는데 password는 뭘로 불러오나요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
sequelize 질문
현재 sequelize 관계설정이라는 강의를 보고있습니다.1. 보통 같은 테이블에 관계를 맺을때만 foreign key를 쓰는건가요?2. 강좌만 받을때는 foreign key와 as 둘다 column명에Aliaes를 부여하는거 같은데 차이점이 궁금합니다.헤헤
-
미해결스프링 데이터 JPA
질문 있습니다.
1. Runwith와 assertThat이 제대로 먹질 않습니다 ㅠㅠ assertThat같은 경우에는 해당 패키지경로를 검색해서 찾아서 import static org.assertj.core.api.Assertions.*; 이런식으로 수동 입력을 하였으나 Runwith는 https://junit.org/junit4/javadoc/latest/index.html 해당하는곳에서 레퍼런스를 찾았으나 패키지에 보이질 않네요 원래 패키지를 하나하나 찾아가며 등록해야하는건가요?? 아니면 설정이나 의존성이 잘못된 걸까요??
-
미해결성공적인 SQL 인젝션 공격을 위한, SQL 기본 문법
선생님
seq 실수로 122345 를 줫는데 2가 두개라 수정할려면 어떻게해야하나요.
-
미해결페이스북 클론 - full stack 웹 개발
form에 비밀번호는 안들어가는건가요?
forms.py에 비밀번호는 안들어가는건가요?
-
해결됨해커를 위한 iOS 앱 모의 해킹 전문 과정
iTunesDriver64_0205
어디에서 받을 수 있나요?
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
seaborn sort option 관련(6분 )
6분쯤에 강사님께서 sort option이 있다고 하셨는데 어떻게 구현할 수 있나요?
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
css 호버 안에는 바뀌는 값들만 넣으면 되는건가요?
기존 태그에 있던 css 값을 복사 안해줘도 문제 없는건가요?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
localStorage 관련 문의드립니다.
안녕하세요! TodoList.vue 에서 localStorage JSON.parse으로 변경 시 [Vue warn]: Error in created hook: "SyntaxError: Unexpected token 바 in JSON at position 0" found in ---> <TodoList> at src/components/TodoList.vue <App> at src/App.vue <Root> 라는 오류가 뜨고 리스트가 나오질 않습니다 코드를 아무리 봐도 문제가 뭔지 모르겠네요...어디가 잘못된걸까요 ㅜㅜ TodoList.vue 코드 첨부해드립니다 .. <template> <section> <ul> <li v-for="(todoItem, index) in todoItems" class="shadow" v-bind:key="todoItem"> <i class="checkBtn fas fa-check" v-on:click="toggleComplete"></i> {{todoItem}} <span class="removeBtn" v-on:click="removeTodo(todoItem, index)"> <i class="removeBtn fas fa-trash-alt"></i> </span> </li> </ul> </section> </template> <script> export default { data: function() { return { todoItems: [] } }, methods: { removeTodo: function(todoItem, index) { this.todoItems.splice(index, 1); // 화면에서 지우기 인덱스 하나를 지우자(하나를 콕 집어서 splice) localStorage.removeItem(todoItem); //데이터베이스에서 지우기 }, toggleComplete: function(){ } }, created: function() { if (localStorage.length > 0) { for (var i = 0; i < localStorage.length; i++) { if (localStorage.key(i) !== 'loglevel:webpack-dev-server') { this.todoItems.push(JSON.parse(localStorage.getItem(localStorage.key(i)))); //문자열로 변환 } } } } } </script> <style scoped> ul { list-style-type: none; padding-left: 0px; margin-top: 0; text-align: left; } li { display: flex; min-height: 50px; height: 50px; line-height: 50px; margin: 0.5rem 0; padding: 0 0.9rem; background: white; border-radius: 5px; } .checkBtn { line-height: 45px; color: #62acde; margin-right: 5px; } .checkBtnCompleted { color: #b3adad; } .textCompleted { text-decoration: line-through; color: #b3adad; } .removeBtn { margin-left: auto; color: #de4343; } </style>