묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결프로그래밍, 데이터 과학을 위한 파이썬 입문
과제 질문입니다. baseball game
또 과제 제출에서 마지막 main() 부분이 fail 로 나오네요. 다른 함수는 다 success로 나오는데요... 막상 cmd에서 실행하면 정상적으로 작동 하는데 왜 fail 로 나올까요? 혹시 첨삭 가능한가요? 어떤 문제인지 몰라서 답답합니다. ''' def main(): print("Play Baseball (Y/N)") user_input = 999 yes_or_no = input() while is_yes(yes_or_no) == True: random_number = str(get_not_duplicated_three_digit_number()) print("Random Number is : ", random_number) while is_yes(yes_or_no) == True: print("Input Guess Number is:") user_input = str(input()) input_1 = is_validated_number(user_input) try: if input_1 is True: output = get_strikes_or_ball(user_input_number = user_input, random_number = random_number) print("결과는 %d Strike" % output[0], "and %d ball 입니다." %output[1]) if output[0] == 3: break except TypeError: output = False print("다시 입력해주세요") print("계속 하시겠습니까?") yes_or_no_2 = input() if is_yes(yes_or_no_2) == True: continue break ================================== print("Thank you for using this program") print("End of the Game") '''
-
미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
Main.pug 파일에 과 정적파일에 관한 질문입니다.
※파일 전체의 코드는 질문 하단에 있습니다. 안녕하세요. 항상 최고의 node.js 강좌 잘 듣고 있습니다. 질문은 두개 입니다.main.pug 파일을 보면 다음과 같은 부분이 있습니다. [].forEach.call(document.querySelectorAll('.twit-follow'), function (tag) {tag.addEventListener('click', function () {[] 부분이 이해가 안갑니다. 빈 리스트를 forEach 하는게 어떻게 가능한지요. "변수".forEach라면 모르겠는데...이 부분에는 어떤 값이 어떻게, 언제 오기에 저 문법이 가능한지 알고 싶습니다. 정적파일은 기왕이면 다른 미들웨어들 위에 두라고 하신 부분이 이해가 잘 되지 않습니다.예를 들어, app.use(morgan('dev'));app.use(express.static(path.join(__dirname, 'public')));app.use('/img', express.static(path.join(__dirname, 'uploads')));app.use(express.json());app.use(express.urlencoded({ extended: false }));app.use(cookieParser(process.env.COOKIE_SECRET));위와 같은 코드에서 morgan 뒤쪽에 static middleware 를 위치 시켜서, 다른 미들웨어들이 불필요하게 사용되지 않게 해서 자원을 아끼라고 말씀하셨습니다. 그러나, 미들웨어들은 일단 실행되면 (next() 가 있다는 가정하에, 에러가 없다면) 순서대로 마지막 미들웨어까지 계속 나가야 하는것 아닌가요? 결국 위에 위치시키나, 아래 위치시키나 다른 미들웨어들을 실행하는건 마찬가지 같은데요. a) express.static은 next()가 없는 건가요?b)만약 express static이, 다음 미들웨어를 실행하지 않고 저기서 끝난다면, app.js 파일을 사용할 때마다 모든 요청이 전부 express.static 에서 끝나 버릴텐데, 그럼 json, eurlencoded, cookieParser 등등도 사용할 수 없게 되는 거 아닐까요?혹시 express.static은 특정 요청에만 응답하고, 일반적인 요청에는 응답을 안하는 기능이 있는 건가요? 그렇다고 하면, 결국 이 명령어를 상위에 위치시킬 필요는 없는것 같은데요.main.pug 파일 -----------extends layoutblock content .timeline if user div form#twit-form(action='/post' method='post' enctype='multipart/form-data') .input-group textarea#twit(name='content' maxlength=140) .img-preview img#img-preview(src='' style='display: none;' width='250' alt='미리보기') input#img-url(type='hidden' name='url') div label#img-label(for='img') 사진 업로드 input#img(type='file' accept='image/*') button#twit-btn.btn(type='submit') 짹짹 .twits form#hashtag-form(action='/post/hashtag') input(type='text' name='hashtag' placeholder='태그 검색') button.btn 검색 for twit in twits .twit input.twit-user-id(type='hidden' value=twit.user.id) input.twit-id(type='hidden' value=twit.id) .twit-author= twit.user.nick -const follow = user && user.Followings.map(f => f.id).includes(twit.user.id); if user && user.id !== twit.user.id && !follow button.twit-follow 팔로우하기 .twit-content= twit.content if twit.img .twit-img img(src=twit.img alt='섬네일') script. if (document.getElementById('img')) { document.getElementById('img').addEventListener('change', function (e) { var formData = new FormData(); console.log(this, this.files); formData.append('img', this.files[0]); var xhr = new XMLHttpRequest(); xhr.onload = function () { if (xhr.status === 200) { var url = JSON.parse(xhr.responseText).url; document.getElementById('img-url').value = url; document.getElementById('img-preview').src = url; document.getElementById('img-preview').style.display = 'inline'; } else { console.error(xhr.responseText); } }; xhr.open('POST', '/post/img'); xhr.send(formData); }); } [].forEach.call(document.querySelectorAll('.twit-follow'), function (tag) { tag.addEventListener('click', function () { var isLoggedIn = document.querySelector('#my-id'); if (isLoggedIn) { var userId = tag.parentNode.querySelector('.twit-user-id').value; var myId = isLoggedIn.value; if (userId !== myId) { if (confirm('팔로잉하시겠습니까?')) { var xhr = new XMLHttpRequest(); xhr.onload = function () { if (xhr.status === 200) { location.reload(); } else { console.error(xhr.responseText); } }; xhr.open('POST', '/user/' + userId + '/follow'); xhr.send(); } } } }); });app.js 파일입니다. const express = require('express');const cookieParser = require('cookie-parser');const morgan = require('morgan');const path = require('path');const session = require('express-session');const flash = require('connect-flash');const passport = require('passport');require('dotenv').config();const pageRouter = require('./routes/page');const authRouter = require('./routes/auth');const postRouter = require('./routes/post');const userRouter = require('./routes/user');const { sequelize } = require('./models');const passportConfig = require('./passport');const app = express();sequelize.sync();passportConfig(passport);app.set('views', path.join(__dirname, 'views'));app.set('view engine', 'pug');app.set('port', process.env.PORT || 8001);app.use(morgan('dev'));app.use(express.static(path.join(__dirname, 'public')));app.use('/img', express.static(path.join(__dirname, 'uploads')));app.use(express.json());app.use(express.urlencoded({ extended: false }));app.use(cookieParser(process.env.COOKIE_SECRET));app.use(session({ resave: false, saveUninitialized: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, secure: false, },}));app.use(flash());app.use(passport.initialize());app.use(passport.session());app.use('/', pageRouter);app.use('/auth', authRouter);app.use('/post', postRouter);app.use('/user', userRouter);app.use((req, res, next) => { const err = new Error('Not Found'); err.status = 404; next(err);});app.use((err, req, res) => { res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; res.status(err.status || 500); res.render('error');});app.listen(app.get('port'), () => { console.log(app.get('port'), '번 포트에서 대기중');});
-
미해결스프링 데이터 JPA
findById()와 findAll()의 차이점이 궁금합니다.
예제를 따라 보고 하다가 문의가 있습니다.강사님의 경우 UPDATE를 테스트 코드에 작성을 하실때 아래와 같이 하셨습니다,Post save = savePost();save.setTitle("hibernate");List<Post> posts = postRepository.findAll();assertThat(posts.get(0).getTitle()).isEqualTo("hibernate");위 의 경우 발생되는 쿼리를 보면 UPDATE & SELECT 쿼리가 모두 발생합니다.저는 아래와 같이 findAll() 대신에 findById() 메서드를 통해 테스트 해보았습니다.Post save = savePost();<p>save.setTitle("hibernate");Optional<Post> post = postRepository.findById(save.getId());assertThat(post.get().getTitle()).isEqualTo("hibernate");테스트 결과는 Pass이나 발생되는 쿼리를 보면 실제 DB쪽으로는 UPDATE, SELECT 쿼리 모두 발생하지 않습니다.JPA Query 메서드인 findAll() 와 findById()가 차이가 있는 것인지 궁금합니다.늘 빠르게 피드백 주셔서 감사드립니다.
-
미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
선생님 혹시 mySQL설치시에
Developer Default버전으로 설치하면 되나요?아니면 server only로 설치해야 되나요?그리고 설치하는 과정에서 Path Conflicts 부분중에 하단에 install Directory와 data Directory가 같은 경로로 설정이 되어있습니다그런경우 하단에 보면 노란색 느낌표 경고에 the selected path already exists라는 경고가 떠있는데다른 폴더 하나 만들어서 경로를 바꾸어 주어야 하나요?만약 경로가 똑같은 상태에서 넥스트를 누르면 you still have warnings with your selected paths, are you sure you want to continue?라는 문구가 뜨는데요제가 설치 후 자꾸 실습에서 에러나는 이유가 아마 설치과정에 있는거 같은데 원인이 뭔지 잘 모르겠습니다.
-
미해결화이트해커가 되기 위한 모의해킹 완전 정복
칼리리눅스 시작이 되지 않아요
VT-x is disabled in the BIOS for all CPU modes (VERR_VMX_MSR_ALL_VMX_DISABLED). 라는 메세지가 뜹니다. BIOS 가서 enable 을 따로 해야하는건가요?
-
미해결파이어베이스(Firebase)를 이용한 웹+안드로이드 메모 어플리케이션 만들기
더미데이터는 어디있나요 ?
더미데이터는 어디있나용?파이어 베이스 데이터를 넣을려고 해도 어떻게 넣는지 잘 모르겠는데 .그부분에 대한 설명은 따로 없나용 .ㅠ
-
미해결Kotlin Android부터 Firebase 서버 그리고 훌륭한 Chatbot 만들기
각 객체를 사용하는 이유와 방법의 설명이 없어서 안드로이드 처음하는 사람은 어렵네요
.
-
미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
노드모듈스 파일에도 mysql2파일있는거 확인했는데
다시 지우고 해봐도 안되네요 이것 때문에 실습진행이 안되고 있어서요.. 그래서 의문이 드는 부분이 첫째 혹시 mySQL다운로드 받아서 설치시에 폴더는 그냥 program files폴더에 따로 경로 지정없이 설치하면되나요? 둘째 설치후 환경변수 설정같은건 건들지 않았는데 혹시 필요없나요? 셋째 강사님은 Users/zerocho폴더로 상위 폴더가 C:Users 폴더로 되어있으신데 원래 Users폴더는 만든폴더가 아닌 윈도우 자체에 있는 폴더잖아요 저는 그냥 C:드라이브 밑에 test 라는 폴더 하나 생성해서 C:testzerocho 라고 폴더 만들어서 실습중이거든요 혹시 이게 문제가 될 수도 있나요?
-
미해결자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!
lec27Pjt004 MainClass0041에서 EOF익셉션
java.io.EOFExceptionat java.io.DataInputStream.readFully(Unknown Source)at java.io.DataInputStream.readUTF(Unknown Source)at java.io.DataInputStream.readUTF(Unknown Source)at DataStream_copy.MainClass.main(MainClass.java:24)이렇게 오류가 뜹니다. input = new FileInputStream("D:\\JAVA_inflearn\\project\\hi_DataStream.txt"); dataInput = new DataInputStream(input); String str = null; str = dataInput.readUTF(); output = new FileOutputStream("D:\\JAVA_inflearn\\project\\hi_DataStream_copy.txt"); dataOutput = new DataOutputStream(output); dataOutput.writeUTF(str);
-
미해결iOS AutoLayout 완벽 가이드 - 실무 프로젝트를 위한 실전강의
FirstItem & SecondItem 순서에 관해 질문이있습니다.
안녕하세요.Multiplier1 강의를 들으며 따라해보는 중이 똑같이 나오지않아 질문드립니다.강의와 다른점은 xcode 10.1 을 사용하고있습니다.강의처음부터 똑같이 leading / trailing / top / bottom 을 추가하였고강의해주신 내용처럼trailing / bottom은 나누기로 적용된다고하셨는데 ..처음에 저는 trailing / bottom도 multiplier가 곱셈으로 적용되어 커진것을 확인할 수 있었습니다.그러면서 삽질을 좀하다가 보니...FirstItem & SecondItem 순서를 바꿔보니 나누기로 적용이 되더군요..아직 뒤의 강의를 더 듣진않았지만FirstItem & SecondItem 은 시스템이 정해주는것이라고 들었는데혹시 저는 왜 시스템이 다르게 지정되있는지 궁굼합니다.그리고 뒤에 FirstItem & SecondItem에 관한 설명에 대한 강의가 있나요?감사합니다.
-
미해결12시간만에 웹기획 노하우 따라잡기
자료 요청합니다.
강좌에서 사용하시는 ppt 자료 좀 받아 볼 수 있을까요?
-
미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
mysql설치후 시퀄라이즈 명령어에서 db:create 에러가 납니다
C:testzerocholearn-sequelize>sequelize db:createSequelize CLI [Node: 8.11.3, CLI: 5.3.0, ORM: 4.41.2]Loaded configuration file "configconfig.json".Using environment "development".ERROR: Please install mysql2 package manuallydb:create입력하면 위와 같은 에러가 뜹니다!!mysql정상적으로 설치하였고 models/index.js파일도 제대로 설정해주었고package.json 파일에도"dependencies": {"cookie-parser": "~1.4.3","debug": "~2.6.9","express": "~4.16.0","http-errors": "~1.6.2","jade": "~1.11.0","morgan": "~1.9.0","mysql2": "^1.6.4","sequelize": "^4.41.2"정상적으로 mysql2와 sequelize 설치가 되어있는데 원인을 모르겠습니다
-
미해결홍정모의 따라하며 배우는 C++
안녕하세요 1.14 강의 질문드려요
여기서 #include로 different_source의 cpp를 포함시키지 않았는데도 Chapter1_14는 어떻게 different_source의 내용을 읽어올 수 있나요?
-
미해결자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌
트랜젝션 관련 처리
템플릿 객채로 트랜젝션 관리에 대한 설명이 없어 궁금합니다.반디시 필요한 항목인데 간략하게라도 트렌젝션을 관리 할 수 있는 내용을 알려 주셧으면 합니다.
-
미해결스프링 데이터 JPA
테스트 범위 관련 질문 있습니다.
JpaRepository.save() 강의에서 나오는 테스크 코드를 실행을앞의 JPA 웹 기능때 작성한 테스트 코드에서 실행해보고 있었습니다.앞의 강의는 웹 기능 테스트라 테스트 범위가 @SpringBootTest 이였는데,그 상태에서 save() 기능을 테스트 해보니,첫번째 savedPost.setTitle("JPA01"); 에서는 INSERT 쿼리가 발생이 됐으나,두번째 savedPost.setTitle("JPA02"); 에서는 UPDATE 쿼리가 발생하지 않았습니다.그리고 아래 코드에서 post 객체와 savedPost객체도 PersistenceContext에서 persistence 상태가 되지도 않는것 같습니다.물론 @SpringBootTest 대신에 @DataJpaTest로 하면 정상적으로 수행됩니다.테스트 범위에 따라 persistence 전이 상태가 다른지 궁금합니다. Post post = new Post(); post.setTitle("JPA01"); Post savedPost = postRepository.save(post) ; assertThat(entityManager.contains(savedPost)).isTrue(); // FAIL!! assertThat(entityManager.contains(post)).isTrue(); // FAIL!! List<Post> all =postRepository.findAll(); all.forEach(s->s.getTitle()); System.out.println("=================================================="); savedPost.setTitle("JPA02"); List<Post> all2 =postRepository.findAll(); all2.forEach(s->s.getTitle());
-
미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
v1.js => '/posts/hashtag/:title' 라우터에서 질문 입니다.
Hashtag.find 후 hashtag.getPosts() 함수를 호출 했는데요Hashtag.find함수 안에서 include 즉 join을 따로 하지 않아도 hashtag를 통해게시글 목록을 가져올 수 있나요??(즉 getPosts함수가 호출이 가능한가요?) 그 동안에는 관계를 맺어준 다른 테이블을 호출하기 위해서 include키워드를 포함한것 같아서 질문드립니다.
-
해결됨홍정모의 따라하며 배우는 C++
9.1 friend 관련
유투브로 듣다가 넘어왔습니다 ㅎㅎㅎㅎㅎㅎ연산자 오버로딩 함수에서 getCents()를 쓰지 않기위해,Cents 클래스에서 firend를 쓴다고 하셨는데,강의상에서는 계속 getCents()를 쓰고 있습니다.이부분이 잘이해되지 않습니다.제생각에는 Cents 클래스에서 firend를 쓰고연산자오버로딩에서는 Cents operator +(const Cents &c1, const Cents &c2){return Cents(c1.m_cents + c2.m_cents);}이런 의미로 쓸수있다는 말씀이신가요?????
-
미해결Node.js 교과서 - 기본부터 프로젝트 실습까지
hashtag 관련 질문입니다!
post.js 라우터중 const query = req.query.hashtag; 여기 설명에 쿼리스트링으로 해시태그 이름을 받는다고 설명되어있습니다 라우터에서 따로 쿼리스트링을 require한 패키지가 없는데 어떻게 이게 가능한건가용? 그리고 라우터 코드중에 include : {} 가 있고 include: [{}] 이런식으로 두가지 방법이 있는데 어떤 차이가 있는지도 궁금합니다
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github 권한 부탁드려요
강좌 내용대로 댓글 남겼습니다.github 권한 부탁드립니다.
-
미해결고현철의 Unity 3D 장르별 실전 게임 프로젝트- 클리커게임
볼륨이 너무 작아요...
처음 강의랑 비교했을 때 소리가 너무 작네요...