묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바스크립트 비기너: 튼튼한 기본 만들기
강의내용문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님. localecompare()설명주실때 앞에있으면 1, 뒤에있으면 -1이라고 하셨는데요. 앞에 있으면 -1, 같은위치면0, 그보다 오른쪽에있으면 1 아닌가요?
-
미해결
어소트락 c언어/c++ 강의 39강 중에 이해안되는 부분 질문드려요
코드에서 움직이라고 만들어주는 부분에서 코드에서 왜 움직이는지를 모르겠는데요.. 코드 완성본은 아니고 배우던부분까지 쓴건데요. MoveUp, MoveDown, MoveLeft, MoveRight 함수에서 움직이는 코드(명령어?)는 따로 없어보이는데 w,a,s,d 를 누르면 별이 왜 움직이는건가요? #include <iostream> #include <conio.h> //키를 입력하면 반응할 수 있게 해주는 해더파일(_getch) using namespace std; //플레이어(위치) 구조체 struct _tagPoint { int x; int y; }; // typedef: 타입을 재정의하는 기능이다. _tagPoint를 POINT로도 사용할 수 있게 해준다. typedef _tagPoint POINT; typedef _tagPoint* PPOINT; //참고! 하향식으로(객체지향) 인식하므로 구조체를 먼저 선언하고 함수를 선언해야 PPOINT를 사용할 수 있다. void SetMaze(char Maze[21][21], PPOINT pPlayerPos, PPOINT pStartPos, PPOINT pEndPos); void OutPut(char Maze[21][21], PPOINT pPlayerPos); void MoveUp(char Maze[21][21], PPOINT pPlayerPos); void MovePlayer(char Maze[21][21], PPOINT pPlayerPos, char cInput); void CreatBomb(char Maze[21][21], const PPOINT pPlayer, PPOINT pBombArr, int* pBombCount); void Fire(char Maze[21][21], PPOINT pPlayer, PPOINT pBombArr, int* pBombCount); int main() { //20 x 20 미로를 만들어준다.{21에는 0(null)이 들어가야 하므로 21로 설정} char strMaze[21][21] = {}; POINT tPlayerPos; POINT tStartPos; POINT tEndPos; int iBombCount = 0; int addBomb = 0; POINT tBombPos[5]; //미로를 설정한다. SetMaze(strMaze, &tPlayerPos, &tStartPos, &tEndPos); while (true) { system("cls"); //미로를 출력한다. OutPut(strMaze, &tPlayerPos); if (tPlayerPos.x == tEndPos.x && tPlayerPos.y == tEndPos.y) { cout << "도착했습니다." << endl; break; } cout << "t: 폭탄설치, u:폭탄 터트리기" << endl; cout << "w: 위, s: 아래, a: 왼쪽, d: 오른쪽, q: 종료: "; char cInput = _getch(); if (cInput == 'q' || cInput == 'Q') break; else if (cInput == 't' || cInput == 'T') CreatBomb(strMaze, &tPlayerPos, tBombPos, &iBombCount); else if (cInput == 'u' || cInput == 'U') { Fire(strMaze, &tPlayerPos, tBombPos, &iBombCount); } else MovePlayer(strMaze, &tPlayerPos, cInput); } } /* 0: 벽 1: 길 2: 시작점 3: 도착점 4: 폭탄 */ void SetMaze(char Maze[21][21], PPOINT pPlayerPos, PPOINT pStartPos, PPOINT pEndPos) { pStartPos->x = 0; pStartPos->y = 0; pEndPos->x = 19; pEndPos->y = 19; *pPlayerPos = *pStartPos; strcpy_s(Maze[0], "21100000000000000000"); strcpy_s(Maze[1], "00111111111100000000"); strcpy_s(Maze[2], "00100010000111111100"); strcpy_s(Maze[3], "01100010000000000100"); strcpy_s(Maze[4], "01000011110001111100"); strcpy_s(Maze[5], "01000000001111000000"); strcpy_s(Maze[6], "00000000001000000000"); strcpy_s(Maze[7], "00100000001111111000"); strcpy_s(Maze[8], "00100011100000001000"); strcpy_s(Maze[9], "01111110111111111000"); strcpy_s(Maze[10], "01000000000000000000"); strcpy_s(Maze[11], "01111110001111100000"); strcpy_s(Maze[12], "00000011111000111110"); strcpy_s(Maze[13], "01111110000000000010"); strcpy_s(Maze[14], "01000000000111111110"); strcpy_s(Maze[15], "01111110000100000000"); strcpy_s(Maze[16], "00000010001100000000"); strcpy_s(Maze[17], "00000010001000000000"); strcpy_s(Maze[18], "01111110001111000000"); strcpy_s(Maze[19], "11000000000001111113"); Maze = { }; } void OutPut(char Maze[21][21], PPOINT pPlayerPos) { for (int i = 0; i < 20; ++i) { for (int j = 0; j < 20; ++j) { if (Maze[i][j] == '4') { cout << "♨"; } else if (pPlayerPos->x == j && pPlayerPos->y == i)//플레이어를 띄운다. cout << "☆"; else if (Maze[i][j] == '0') cout << "■"; else if (Maze[i][j] == '1') cout << " "; //2바이트므로(■,★,◎) 두번띄운다. else if (Maze[i][j] == '2') cout << "★"; else if (Maze[i][j] == '3') cout << "◎"; } cout << endl; } } void MoveUp(char Maze[21][21], PPOINT pPlayerPos) { if (pPlayerPos->y - 1 >= 0) { //벽인지 체크한다. && 폭탄인지 체크한다. if (Maze[pPlayerPos->y - 1][pPlayerPos->x] != '0' && Maze[pPlayerPos->y - 1][pPlayerPos->x] != '4') { --pPlayerPos->y; } } } void MoveDown(char Maze[21][21], PPOINT pPlayerPos) { if (pPlayerPos->y + 1 < 20) { //벽인지 체크한다. && 폭탄인지 체크한다. if (Maze[pPlayerPos->y + 1][pPlayerPos->x] != '0' && Maze[pPlayerPos->y + 1][pPlayerPos->x] != '4') { ++pPlayerPos->y; } } } void MoveRight(char Maze[21][21], PPOINT pPlayerPos) { if (pPlayerPos->x + 1 < 20) { //벽인지 체크한다. && 폭탄인지 체크한다. if (Maze[pPlayerPos->y][pPlayerPos->x + 1] != '0' && Maze[pPlayerPos->y][pPlayerPos->x + 1] != '4') { ++pPlayerPos->x; } } } void MoveLeft(char Maze[21][21], PPOINT pPlayerPos) { if (pPlayerPos->x - 1 >= 0) { //벽인지 체크한다. && 폭탄인지 체크한다. if (Maze[pPlayerPos->y][pPlayerPos->x - 1] != '0' && Maze[pPlayerPos->y][pPlayerPos->x - 1] != '4') { --pPlayerPos->x; } } } void MovePlayer(char Maze[21][21], PPOINT pPlayerPos, char cInput) { switch (cInput) { case 'w': case 'W': MoveUp(Maze, pPlayerPos); break; case 's': case 'S': MoveDown(Maze, pPlayerPos); break; case 'a': case 'A': MoveLeft(Maze, pPlayerPos); break; case 'd': case 'D': MoveRight(Maze, pPlayerPos); break; } } //포인터 변수를 const로 생성하면 가리키는 대상의 값을 변경할 수 없다. void CreatBomb(char Maze[21][21], const PPOINT pPlayer, PPOINT pBombArr, int* pBombCount) { if (*pBombCount == 5) return; for (int i = 0; i < *pBombCount; ++i) { if (pPlayer->x == pBombArr[i].x && pPlayer->y == pBombArr[i].y) return; } pBombArr[*pBombCount] = *pPlayer; ++(*pBombCount); Maze[pPlayer->y][pPlayer->x] = '4'; } void Fire(char Maze[21][21], PPOINT pPlayer, PPOINT pBombArr, int* pBombCount) { for (int i = 0; i < *pBombCount; ++i) { Maze[pBombArr[i].y][pBombArr[i].x] = '1'; if (pBombArr[i].y - 1 >= 0) { if (Maze[pBombArr[i].y - 1][pBombArr[i].x] == '0') Maze[pBombArr[i].y - 1][pBombArr[i].x] = '1'; //플레이어가 폭탄에 맞았을때 시작점으로 보낸다. if (pPlayer->x == pBombArr[i].x && pPlayer->y == pBombArr[i].y - 1) { pPlayer->x = 0; pPlayer->y = 0; } } if (pBombArr[i].y + 1 < 20) { if (Maze[pBombArr[i].y + 1][pBombArr[i].x] == '0') Maze[pBombArr[i].y + 1][pBombArr[i].x] = '1'; //플레이어가 폭탄에 맞았을때 시작점으로 보낸다. if (pPlayer->x == pBombArr[i].x && pPlayer->y == pBombArr[i].y + 1) { pPlayer->x = 0; pPlayer->y = 0; } } if (pBombArr[i].x - 1 >= 0) { if (Maze[pBombArr[i].y][pBombArr[i].x - 1] == '0') Maze[pBombArr[i].y][pBombArr[i].x - 1] = '1'; //플레이어가 폭탄에 맞았을때 시작점으로 보낸다. if (pPlayer->x == pBombArr[i].x - 1 && pPlayer->y == pBombArr[i].y) { pPlayer->x = 0; pPlayer->y = 0; } } if (pBombArr[i].x + 1 < 20) { if (Maze[pBombArr[i].y][pBombArr[i].x + 1] == '0') Maze[pBombArr[i].y][pBombArr[i].x + 1] = '1'; //플레이어가 폭탄에 맞았을때 시작점으로 보낸다. if (pPlayer->x == pBombArr[i].x + 1 && pPlayer->y == pBombArr[i].y) { pPlayer->x = 0; pPlayer->y = 0; } } } *pBombCount = 0; }
-
미해결Vue로 Nodebird SNS 만들기
start script 누락 오류가 떠서 질문드립니다
안녕하세요 제로초님 server.js만든후 express와 cross-env를 만들고 package.json에 "start": "cross-env PORT=80 NODE_ENV=production node server", 이렇게 추가도 하였습니다 그 후 npm start를 하는데 root@ip-172-31-26-247:/home/ubuntu/VUE.SNS/ch1/front# npm start npm ERR! missing script: start npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2021-09-15T07_12_41_448Z-debug.log 이러한 오류가 뜹니다 ㅜ 무엇이 문제인지 구글링도 해보고 찾아봤는데 해결하지 못하여 질문드립니다. 피드백 주시면 감사하겠습니다! package.json { "name": "vue-nodebird-front", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "nuxt", "build": "nuxt build", "start": "cross-env PORT=80 NODE_ENV=production node server", "lint": "eslint **/*" }, "author": "", "license": "ISC", "dependencies": { "@nuxtjs/axios": "^5.13.6", "@nuxtjs/moment": "^1.6.1", "@nuxtjs/vuetify": "^1.12.1", "axios": "^0.21.1", "cross-env": "^7.0.3", "express": "^4.17.1", "lodash.throttle": "^4.1.1", "nuxt": "^2.15.7", "vue": "^2.6.14", "vuetify": "^2.5.6" }, "devDependencies": { "eslint": "^7.31.0", "eslint-plugin-vue": "^7.14.0" } } server.js const { loadNuxt, build } = require('nuxt') const app = require('express')() const isDev = process.env.NODE_ENV !== 'production' const port = process.env.PORT || 3080 async function start() { // We get Nuxt instance const nuxt = await loadNuxt(isDev ? 'dev' : 'start') // Render every route with Nuxt.js app.use(nuxt.render) // Build only in dev mode with hot-reloading if (isDev) { build(nuxt) } // Listen the server app.listen(port, '0.0.0.0') console.log('Server listening on `localhost:' + port + '`.') } start() 참고할 코드 보내드립니다!
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
실전 크롤링: 브라우저를 제어해서 트위터 사이트 로그인 하기 질문
안녕하세요. 선생님 선생님 강의를 따라하며 정말 잘 듣고 있습니다. 실전 크롤링의 트위터 사이트 로그인 강의를 따라하다 질문이 있어서 이 곳에 글을 올립니다. 선생님께서 강의를 만드셨을 때의 트위터 사이트와 현재의 트위터 사이트가 다르게 바뀌었습니다. 선생님께서 올려주신 새소식의 공지사항을 읽어보고 로그인 및 크롤링을 다시 시도를 해보았지만 잘 되지 않았습니다. 선생님께서 가르쳐 주신 방법으로 driver.find_element_by_name 으로 "username"과 "password"를 입력하려고 시도하였지만 이것도 잘 되지 않아 어떻게 해결 할 수 있을지 모르겠어서 질문을 드립니다.
-
미해결Svelte.js 입문 가이드
혹시 에코시스템에 대한 질문을 해도 괜찮을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 강사님 패캠에서 구매했던 강의에 강사님이 있었는데, svelte에서도 또 만나뵙네요. ㅎㅎ 무료 강의분을 들어보았는데 맘에 들어서 바쁜일이 마무리되면 강사님의 svelte 강의를 구매해 보려고 합니다. 그 전에 제가 잘 이해가 안가는 부분이 있어 질문을 드립니다. 타 블로그 등에서 서로 상반되는 얘기들이 좀 있어서 헷갈리더라고요. 제가 잘못 이해하고 있거나 부족한 부분에 대해 설명 부탁 드립니다. 강사님이 강의에서 프로젝트 생성에 사용하신 방법이 degit을 사용해서 template을 가져오는 방법이었고, 여기서는 rollup을 사용하고 있는 것으로 알고 있습니다. 현재 svelte 쪽에서는 snowpack으로 이전을 하려고 하고 있고, 현재 beta가 공개된 것으로 알고 있고요. 이 snowpack, vite, sveltekit의 관계를 잘 모르겠어서 여쭤봅니다. 누구는 snowpack이 sveltekit을 사용하려다 vite로 바꿨다 하고 누구는 다 다른거다라고 하고 누구는 sveltekit이 vite 기반으로 만들어서 snowpack으로 이름을 바꾼거다 라는 것 같더라고요. 모두 영어권 자료를 본 거라 제가 잘못 해석했을수도 있지만, 이정도로 정리가 되는 거 같은데, 혹시 강사님께 정확한 설명을 부탁 드려도 괜찮을까요? 제가 이해하기로는 현재 svelte 진영은 sveltekit을 recommend 하고, sveltekit은 snowpack을 기반으로 했다가 현재는 vite 기반으로 하는 것으로 이해했습니다. 개인적으로는 template보다 이 방법이 선호되더라고요. linter나 formatter 설정도 쉽고, typescript도 깔끔하게 잘 붙고, 좋아하는 tailwindcss 같은 3rd party를 붙이기도 쉽고 ^^;; 끝으로, 좋은 강의 감사합니다. 설명이 장황하지 않고 깔끔해서 좋았어요. ^^
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github 권한신청
github 권한신청 확인한번만 부탁드립니다.. 퇴근해서 공부해보고싶습니다
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
익스텐션 설치
익스텐션 깔았는데 실행이 되지 않습니다.!
-
미해결SCSS(SASS) FLEX GRID 핵심이론(PDF) 교재 및 활용예제
선생님 저장경로에 관해서도 질문있습니다.
지금 /css로 해놔서 그런가 모든파일이 다 거기에 저장이 되네요 reset.css파일도 css에만 들어가는데 reset.css이나 common.css은 basic이라는 폴더에 넣고싶고 또 scss파일에도 import하려고 하는데 어떻게해야할까요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
SSD를 사용해서 프로젝트를 진행하려고 합니다.
안녕하세요. 항상 좋은 강의 제공해주셔서 감사드립니다. 제가 openCV에서 SSD를 활용하여 작물의 질병영역을 검출하는 프로젝트를 진행하려고 합니다. annotation이 이루어진 질병 영역 이미지가 충분하다고 할때, 학습을 시키려면 어떻게 진행해야 하는지 알고 싶습니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
passport 질문드립니다.
passport에 deserializeUser 에서 세션쿠키에 저장된 id 값을 다시 req.user에 담아준다고 하셨는데, user 라우터에서 req.login시 user 정보를 담아준다면 deserializeUser는 언제 실행되는것이고, 이부분이 실행되었을때는 조인된 테이블의 자료가 없는데 어떻게 작동되는건지 궁굼합니다!
-
미해결[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문
html코드 관련하여 질문드립니다.
수업에서 사용하는 html코드를 따로 제공해주시는지 아니면 직접 하드코딩해야하는지 궁금합니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
Toplogy 생성 관련 문의
이번 강의 중에는 Toplogy 생성에 대해 깊에 들어가는 부분이 아니라고 하셔서 핵심 코드를 설명을 해 주셨는데요. 배포하라고 첨부해주신 bigdata.smartcar.storm-1.0.jar 를 구조가 궁금해서 열어봤는데요 다양한 의존성 lib부터 많은 패키지 및 파일들로 구성되어 있었습니다. 이부분에서 말씀하신 핵심 로직은 어디에 위치하는것일까요? 그리고 토플로지를 생성하려면 어떤 도구나 방법 (JAVA 언어자체 외적으로 기본 의존성 라이브러리를 어떻게 세팅되는지)이 있는지 궁금합니다. 기본 핵심 로직만 설정하고 빌드 과정을 통해서 저런 의존성 java library는 같이 빌드 되는것인지 아니면 소스안에 저 모든 패키지가 토플로지 구성 시작할때 모두 다 준비되어야 하는건지 궁금합니다. 아 그리고 친철한 강의 덕분에 실시작 적재도 실습해 보았습니다. 궁금한게 지난번에 HBase에 Store 는 결국 HDFS랑 연결되어 있다고 하셨는데 실시간 적재를 계속 진행해도 하둡 유틸리티에 hdfs 사이즈 부분은 딱히 증가하지는 않던데. 일정 용량 이상 더 들어가야 hbase에서 hdfs로 데이타를 내리는 구조인가요? 궁금한게 많아서 죄송합니다.. ㅠ
-
미해결프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
npm과 npx 차이에 대해서 궁금합니다.
강사님 강의를 보다보면 제가 npx를 자주 사용하시는데 npx를 쓰는 이유를 인터넷에 검색해보니 npm run 스크립트를 더 편하게 사용하기 위해서라는 이유가 있더군요. 그런데 납득이 되지 않는 것이 $ npx prettier app.js 보다 $ prettier app.js로도 실행이 가능한데, npx를 쓰는 이유가 정말 npm run 스트립트를 사용하지 않기 위해서라는게 맞나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cmd창에서 아무것도 안먹습니다..
cd hello-spring을 치면 지정된 경로를 찾을수 없다고 하고 gradlew를 치면 'gradlew'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고 나오는데 어떻게 하면 될지 모르겠습니다..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의노트는 따로 제공되지 않나요??
수업하시면서 영상에 나오는 자료는 받을 수 없는지 궁금합니다
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
저가 CSS 를 버튼색을 바꾸려고하는데 아예 먹히지도 않아요
-const SearchInput = styled(Input.Search)` vertical-align: middle; color: #ffb618;`const AppLayout = ({ children }) => { const [isLoggedIn, setIsLoggedIn] = useState(false); return( <div> <Menu mode="horizontal"> <Menu.Item> <Link href="/"><a>Studyboard 📢</a></Link> </Menu.Item> <Menu.Item> <Link href="/profile"><a>Profile </a></Link> </Menu.Item> <Menu.Item> <Link href="/about"><a>About </a></Link> </Menu.Item> <Menu.Item> <SearchInput placeholder="Type it what you looking for" enterButton /> </Menu.Item> <Menu.Item> <Link href="/signup"><a>SignUp </a></Link> </Menu.Item> </Menu> {/*컬럽 사이에 간격 gutter*/} <Row gutter={10}> {/*24개 컬럼 화면 100퍼센트 다사용 6개를 사용 25퍼센트 */} <Col xs={24} md={6} > {isLoggedIn ? <UserProfile /> : <LoginForm /> } </Col> <Col xs={24} md={12} > { children } </Col> <Col xs={24} md={6} > 오른쪽 메뉴 </Col> </Row> </div> 이렇게 했는데 적용이 안돼는 듯해요
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
아래 두 가지의 차이점이 궁금합니다.
<activity android:name=".SplashActivity" android:exported="true" /><activity android:name=".MainActivity" android:exported="true"></activity>강의대로 SplashActivity 들어갔을 때 위와 같이 돼있습니다.복치님 강의에서는 SplashActivity가 둘 중 아래처럼 <activity ~~ ~~</activity>로 표시 돼 있고제가 들어갔을 때는 둘 중 위에꺼처럼<activity ~~~ ~~~ />이렇게 돼 있습니다.마무리에 </activity> 이거랑 /> 이거의 차이가 궁금합니다.
-
미해결SCSS(SASS) FLEX GRID 핵심이론(PDF) 교재 및 활용예제
선생님 조건문관련 패딩에 관해 질문드립니다.
패딩이 정해져있는게 em 도 아니고 px로 고정되어 있는데 어떻게 조건문에쓰일수 있는지 궁금합니다. 어짜피 pc에서나 모바일에서나 같은 px로 나오는데 무슨 얘기인지 모르겠습니다
-
미해결SCSS(SASS) FLEX GRID 핵심이론(PDF) 교재 및 활용예제
선생님 저 #은 무엇을 의미하는 건가요?
■ 질문 남기실 때 꼭! 참고해주세요.- 먼저 유사한 질문이 있었는지 검색해주세요.- 궁금한 부분이 있으시면 해당 강의의 타임라인 부분을 표시해주시면 좋습니다.- HTML, CSS, JQUERY 코드 소스를 텍스트 형태로 첨부해주시고 스크린샷도 첨부해주세요.- 다운로드가 필요한 파일은 해당 강의의 마지막 섹션에 모두 있습니다.
-
미해결인공지능 기초수학
안녕하세요. 강의 교안 부탁 드립니다.
rohbr@hanmail.net