묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C++
질문있습니다!
혹시 여기서 sizeof()함수를 이용해 크기를 출력했을 때 왜 8바이트로 로 나오는지 알 수 있을까요??
-
미해결C로 배우는 자료구조 및 여러가지 예제 실습
두번째 예제 질문있습니다!
두번째 예제 맨 마지막에 compressed[i] = '\0'은 \n이 들어가있는 위치에 널문자가 들어가는 건가요? 문자열 입력 시에 \n도 문자열에 들어가는 건지 궁금합니다
-
미해결대세는 쿠버네티스 (초급~중급편)
대시보드 안되네요
대시보드 에러내용은 다음과 같구요 지속적으로 아래 로그가 올라옵니다. 2020/08/05 15:02:33 Metric client health check failed: the server is currently unable to handle the request (get services heapster). Retrying in 30 seconds. 2020/08/05 15:03:33 Metric client health check failed: the server is currently unable to handle the request (get services heapster). Retrying in 30 seconds. 아무리 검색하고 알아보려해도 잘 모르겠네요 ㅠㅠ 추가적으로 왜 대시보드 URL이 저렇습니까?. 기본 메인 URL이 없나요? http://192.168.0.31:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/node?namespace=default
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
질문있습니다.
선생님 강의를 잘 보고 배워나가고 있습니다. list말고 set의 특성을 사용해서 짜보았는데 가능한지 그리고 가능한데 현재 돌아 가지 않는데 틀린 부분이 무엇 인지 궁금합니다. N=[list(map(int,input().split())for _ in range(9))] a,b={},{} for i in range(9): for j in range(9): a.add(N[i][j]) b.add(N[j][i]) if(len(a)!=9): print('NO') break if(len(a)==9): a={} if(len(b)!=9): print('NO') break if(len(b)==9): b={} for x in range(0,6,3): for y in range(x,x+3): for z in range(x,x+3): a.add(N[y][z]) if(len(a)!=9): print('NO') break if(len(a)==9): a={} if(len(a)==0): print('YES')
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
AOP(TimeTraceAop)를 @Component 로 선언 vs SpringConfig에 @Bean으로 등록
안녕하세요. 김영한 팀장님, AOP(TimeTraceAop)를 @Component로 선언하지 않고 SpringConfig에 @Bean으로 등록할 수 있다고 설명하셨는데 실제로 코드를 돌려보면 빈 순환 참조 에러가 발생합니다. 강의대로 @Component로만 선언하면 문제가 없는데 왜 순환참조가 나는지 질문드립니다. 감사합니다. The dependencies of some of the beans in the application context form a cycle: memberController defined in file [~~~\out\production\classes\com\example\springexample\controller\MemberController.class] ↓ memberService defined in class path resource [com/example/springexample/SpringConfig.class] ┌─────┐ | timeTraceAop defined in class path resource [com/example/springexample/SpringConfig.class]
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
dispatch
안녕하세요 제로초님 강의 정말 잘 듣고 있습니다!!!lastId방식으로 스크롤해서 포스트들 불러오는 곳에서요, useEffect(() => { function onScroll() { if (window.pageYOffset + document.documentElement.clientHeight > document.documentElement.scrollHeight - 300) { if (hasMorePosts && !loadPostsLoading) { const lastId = mainPosts[mainPosts.length - 1]?.id; dispatch({ type: LOAD_POSTS_REQUEST, lastId, }); } } } 강의대로 이렇게 하니까 saga로 lastId가 전달이 안돼서 항상 같은 게시물들만 불러오는 오류가 나서 dispatch부분을 dispatch({ type: LOAD_POSTS_REQUEST, data: lastId, }); 이렇게 바꾸고 saga쪽도 lastId를 data로 바꾸니까 정상작동 하더라구요 혹시나 해서 lastId: lastId 이렇게 해보니까 그것도 saga로 데이터가 안 보내지구요,,다른 곳에서 오타가 났을 가능성이 있는건가요?
-
미해결실전! Querydsl
QueryDSL의 Custom Repository 작성 관련 질문이 있습니다.
강의 내용 중에 Custom Repository 작성할 때 구현 클래스는 기존에 JpaRepository를 상속하고 있는 인터페이스명 + Impl을 붙여야 한다고 하셨는데요... ex) ARepository, ARepositoryCustom, ARepositoryImpl 근데 제가 테스트 했을 경우 아래와 같이 작성해도 동작에 문제가 없는것 처럼 확인이 되었습니다. ex) ARepository, ARepositoryCustom, ARepositoryCustomImpl (일반적으로 구현클래스는 구현 대상을 정의한 인터페이스명에 +Impl을 붙이기 때문에 이와 같이 접근함) 그래서 spring 문서를 확인해 봤는데 해당 문서에도 JpaRepository를 상속받고 있는 인터페이스명에 Impl을 추가해서 QueryDSL 구현 클래스 명을 정하라는 내용을 확인하지 못했습니다. interface UserRepository extends CrudRepository<User, Long>, CustomizedUserRepository { class CustomizedUserRepositoryImpl implements CustomizedUserRepository { https://docs.spring.io/spring-data/jpa/docs/2.1.3.RELEASE/reference/html/#repositories.custom-implementations 제가 잘못이해하고 있는 부분일지 문의 드립니다. 감사합니다.
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
좋아요 토글 버튼 구현시 TypeError: Cannot read property 'Likers' of undefined 에러 발생 문의 드립니다.
로그인후 좋아요 버튼이 1회만 작동하고 상태값이 바뀌지 않습니다. 에러 메세지에서는 TypeError: Cannot read property 'Likers' of undefined 라고 나오는데.. PostCard.js import React, { useState, useCallback } from 'react'; import PropTypes from 'prop-types'; import { Card, Popover, Button, Avatar, List, Comment } from 'antd'; import { RetweetOutlined, HeartOutlined, HeartTwoTone, MessageOutlined, EllipsisOutlined } from '@ant-design/icons'; import { useSelector, useDispatch } from 'react-redux'; import PostImages from './PostImages'; import CommentForm from './CommentForm'; import PostCardContent from './PostCardContent'; import { REMOVE_POST_REQUEST, LIKE_POST_REQUEST, UNLIKE_POST_REQUEST } from '../reducers/post'; import FollowButton from './FollowButton'; const PostCard = ({ post }) => { // state.user.me && state.user.me.id => state.user.me?.id const dispatch = useDispatch(); const { removePostLoding } = useSelector((state) => state.post); // const [liked, setLiked] = useState(false); const [commentFormOpened, setCommentFormOpened] = useState(false); const onLike = useCallback(() => { if (!id) { return alert('로그인이 필요합니다.'); } return dispatch({ type: LIKE_POST_REQUEST, data: post.id, }) }, [id]); const onUnLike = useCallback(() => { if (!id) { return alert('로그인이 필요합니다.'); } return dispatch({ type: UNLIKE_POST_REQUEST, data: post.id, }) }, [id]); const onToggleComment = useCallback(() => { setCommentFormOpened((prev) => !prev); }, []); const onRemovePost = useCallback(() => { dispatch({ type: REMOVE_POST_REQUEST, data: post.id, }); }, []) const id = useSelector((state) => state.user.me?.id); const liked = post.Likers.find((v) => v.id === id); return ( <div style={{ marginBottom: 20 }}> <Card cover={post.Images[0] && <PostImages images={post.Images} />} actions={[ <RetweetOutlined key="retweet" />, liked ? <HeartTwoTone twoToneColor="#eb2f96" key="heart" onClick={onUnLike} /> : <HeartOutlined key="heart" onClick={onLike} />, <MessageOutlined key="comment" onClick={onToggleComment} />, <Popover key="more" content={( <Button.Group> {id && post.User.id === id ? ( <> <Button>수정</Button> <Button type="danger" loading={removePostLoding} onClick={onRemovePost}>삭제</Button> </> ) : <Button>신고</Button>} </Button.Group> )}> <EllipsisOutlined /> </Popover>, ]} extra={ id && <FollowButton post={post} />} > <Card.Meta avatar={<Avatar>{post.User.nickname[0]}</Avatar>} title={post.User.nickname} description={<PostCardContent postData={post.content} />} /> </Card> {commentFormOpened && ( <div> <CommentForm post={post} /> <List header={`${post.Comments.length}개의 댓글`} itemLayout="horizontal" dataSource={post.Comments} renderItem={(item) => ( <li> <Comment author={item.User.nickname} avatar={<Avatar>{item.User.nickname[0]}</Avatar>} content={item.content} /> </li> )} /> </div> )} </div> ); }; PostCard.propTypes = { post: PropTypes.shape({ id: PropTypes.number, User: PropTypes.object, content: PropTypes.string, createdAt:PropTypes.string, Comments: PropTypes.arrayOf(PropTypes.object), Images: PropTypes.arrayOf(PropTypes.object), Likers: PropTypes.arrayOf(PropTypes.object), }).isRequired, }; export default PostCard; reducers/post.js import produce from 'immer'; import { REMOVE_POST_OF_ME } from './user'; export const initialState = { mainPosts: [], imagePaths: [], // 이미지를 업로드 할때 이미지 경로 postAdded: false, hasMorePosts: true, likePostLoading: false, likePostDone: false, // 추가 likePostError: null, // 추가 unlikePostLoading: false, unlikePostDone: false, // 추가 unlikePostError: null, // 추가 loadPostsLoading: false, loadPostsDone: false, // 추가 loadPostsError: null, // 추가 // 게시글 추가가 완료되었을때 true 로 변한다. postAdded: false, => addPostLoading: false, addPostLoading: false, addPostDone: false, // 추가 addPostError: null, // 추가 addCommentLoading: false, // 댓글 추가가 완료되었을때 true 로 변한다. addCommentDone: false, // 추가 addCommentError: null, // 추가 removePostLoading: false, removePostDone: false, // 추가 removePostError: null, // 추가 }; export const LOAD_POSTS_REQUEST = 'LOAD_POSTS_REQUEST'; export const LOAD_POSTS_SUCCESS = 'LOAD_POSTS_SUCCESS'; export const LOAD_POSTS_FAILURE = 'LOAD_POSTS_FAILURE'; export const LIKE_POST_REQUEST = 'LIKE_POST_REQUEST'; export const LIKE_POST_SUCCESS = 'LIKE_POST_SUCCESS'; export const LIKE_POST_FAILURE = 'LIKE_POST_FAILURE'; export const UNLIKE_POST_REQUEST = 'UNLIKE_POST_REQUEST'; export const UNLIKE_POST_SUCCESS = 'UNLIKE_POST_SUCCESS'; export const UNLIKE_POST_FAILURE = 'UNLIKE_POST_FAILURE'; export const ADD_POST_REQUEST = 'ADD_POST_REQUEST'; export const ADD_POST_SUCCESS = 'ADD_POST_SUCCESS'; export const ADD_POST_FAILURE = 'ADD_POST_FAILURE'; export const REMOVE_POST_REQUEST = 'REMOVE_POST_REQUEST'; export const REMOVE_POST_SUCCESS = 'REMOVE_POST_SUCCESS'; export const REMOVE_POST_FAILURE = 'REMOVE_POST_FAILURE'; export const ADD_COMMENT_REQUEST = 'ADD_COMMENT_REQUEST'; export const ADD_COMMENT_SUCCESS = 'ADD_COMMENT_SUCCESS'; export const ADD_COMMENT_FAILURE = 'ADD_COMMENT_FAILURE'; export const addComment = (data) => ({ type: ADD_COMMENT_REQUEST, data, }); export const addPost = (data) => ({ type: ADD_POST_REQUEST, data, }); export const removePost = (data) => ({ type: REMOVE_POST_OF_ME, data, }); const reducer = (state = initialState, action) => produce(state, (draft) => { switch (action.type) { case LIKE_POST_REQUEST: draft.likePostLoading = true; draft.likePostDone = false; draft.likePostError = null; break; case LIKE_POST_SUCCESS: { const post = draft.mainPosts.find((v) => v.id === action.data.PostId); post.Likers.push({ id: action.data.UserId }); draft.likePostLoading = false; draft.likePostDone = true; break; } case LIKE_POST_FAILURE: draft.likePostLoading = false; draft.likePostError = action.error; break; case UNLIKE_POST_REQUEST: draft.unlikePostLoading = true; draft.unlikePostDone = false; draft.unlikePostError = null; break; case UNLIKE_POST_SUCCESS: { const post = draft.mainPosts.find((v) => v.id === action.data.PostId); post.Likers = post.Likers.filter((v) => v.id !== action.data.UserId); // 제거 draft.unlikePostLoading = false; draft.unlikePostDone = true; break; } case UNLIKE_POST_FAILURE: draft.unlikePostLoading = false; draft.unlikePostError = action.error; break; case LOAD_POSTS_REQUEST: draft.loadPostsLoading = true; draft.loadPostsDone = false; draft.loadPostsError = null; break; case LOAD_POSTS_SUCCESS: draft.loadPostsLoading = false; draft.loadPostsDone = true; draft.mainPosts = action.data.concat(draft.mainPosts); draft.hasMorePosts = draft.mainPosts.length < 50; break; case LOAD_POSTS_FAILURE: draft.loadPostsLoading = false; draft.loadPostsError = action.error; break; case ADD_POST_REQUEST: draft.addPostLoading = true; draft.addPostDone = false; draft.addPostError = null; break; case ADD_POST_SUCCESS: draft.addPostLoading = false; draft.addPostDone = true; draft.mainPosts.unshift(action.data); break; case ADD_POST_FAILURE: draft.addPostLoading = true; draft.addPostError = action.error; break; case ADD_COMMENT_REQUEST: draft.addCommentLoading = true; draft.addCommentDone = false; draft.addCommentError = null; break; case ADD_COMMENT_SUCCESS: const post = draft.mainPosts.find((v) => v.id === action.data.PostId); post.Comments.unshift(action.data); draft.addCommentLoading = false; draft.addCommentDone = true; break; case ADD_COMMENT_FAILURE: draft.addCommentLoading = false; draft.addCommentError = action.error; break; case REMOVE_POST_REQUEST: draft.removePostLoading = true; draft.removePostDone = false; draft.removePostError = null; break; case REMOVE_POST_SUCCESS: draft.removePostLoading = false; draft.removePostDone = true; draft.mainPosts = draft.mainPosts.filter((v) => v.id !== action.data); break; case REMOVE_POST_FAILURE: draft.removePostLoading = false; draft.removePostError = action.error; break; default: break; } }); export default reducer; sagas/post.js import { all, fork, put, takeLatest, delay, throttle, call } from 'redux-saga/effects'; import axios from 'axios'; import { LOAD_POSTS_REQUEST, LOAD_POSTS_SUCCESS, LOAD_POSTS_FAILURE, LIKE_POST_REQUEST, LIKE_POST_SUCCESS, LIKE_POST_FAILURE, UNLIKE_POST_REQUEST, UNLIKE_POST_SUCCESS, UNLIKE_POST_FAILURE, ADD_POST_REQUEST, ADD_POST_SUCCESS, ADD_POST_FAILURE, ADD_COMMENT_REQUEST, ADD_COMMENT_SUCCESS, ADD_COMMENT_FAILURE, REMOVE_POST_REQUEST, REMOVE_POST_SUCCESS, REMOVE_POST_FAILURE, } from '../reducers/post'; import { ADD_POST_TO_ME, REMOVE_POST_OF_ME, } from '../reducers/user'; function likePostAPI(data) { return axios.patch(`/post/${data}/like`); }; function* likePost(action) { try { const result = yield call(likePostAPI, action.data); yield put({ type: LIKE_POST_SUCCESS, data: result.data, }); } catch (err) { console.error(err); yield put({ // put => dispatch 다. type: LIKE_POST_FAILURE, data: err.response.data, }); } } function unlikePostAPI(data) { return axios.delete(`/post/${data}/like`); }; function* unlikePost(action) { try { const result = yield call(unlikePostAPI, action.data); yield put({ type: UNLIKE_POST_SUCCESS, data: result.data, }); } catch (err) { console.error(err); yield put({ // put => dispatch 다. type: UNLIKE_POST_FAILURE, data: err.response.data, }); } } function loadPostsAPI(data) { return axios.get('/posts', data); }; function* loadPosts(action) { try { const result = yield call(loadPostsAPI, action.data); yield put({ type: LOAD_POSTS_SUCCESS, data: result.data, }); } catch (err) { console.error(err); yield put({ // put => dispatch 다. type: LOAD_POSTS_FAILURE, data: err.response.data, }); } } function addCommentAPI(data) { return axios.post(`/post/${data.postId}/comment`, data); // POST /post/1/comment }; function* addComment(action) { try { const result = yield call(addCommentAPI, action.data); // yield delay(1000); yield put({ type: ADD_COMMENT_SUCCESS, data: result.data, }); } catch (err) { console.error(err); yield put({ // put => dispatch 다. type: ADD_COMMENT_FAILURE, data: err.response.data, }); }; }; function addPostAPI(data) { return axios.post('/post', { content: data }); }; function* addPost(action) { try { const result = yield call(addPostAPI, action.data); yield put({ type: ADD_POST_SUCCESS, // data: action.data, data: result.data }); yield put({ type: ADD_POST_TO_ME, data: result.data.id, }); } catch (err) { console.error(err); yield put({ // put => dispatch 다. type: ADD_POST_FAILURE, data: err.response.data, }); }; }; function removePostAPI(data) { return axios.delete(`/api/post/${data.postId}/comment`, data); }; function* removePost(action) { try { // yield put({ // type: 'REMOVE_POST_REQUEST', // }); // const result = yield call(removePostAPI); yield delay(1000); yield put({ type: REMOVE_POST_SUCCESS, data: action.data, }); console.log('removePost'); yield put({ type: REMOVE_POST_OF_ME, data: action.data, }); } catch (err) { console.error(err); yield put({ // put => dispatch 다. type: REMOVE_POST_FAILURE, data: err.response.data, }); }; }; function* watchLoadPosts() { // 5초에 한번 게사글이 로드 된다. yield throttle(5000, LOAD_POSTS_REQUEST, loadPosts); }; function* watchAddPost() { yield takeLatest(ADD_POST_REQUEST, addPost); }; function* watchAddComment() { yield takeLatest(ADD_COMMENT_REQUEST, addComment); }; function* watchRemovePost() { yield takeLatest(REMOVE_POST_REQUEST, removePost); }; function* watchLikePost() { yield takeLatest(LIKE_POST_REQUEST, likePost); }; function* watchUnLikePost() { yield takeLatest(UNLIKE_POST_REQUEST, unlikePost); }; export default function* postSaga() { yield all([ fork(watchLikePost), fork(watchUnLikePost), fork(watchAddPost), fork(watchLoadPosts), fork(watchRemovePost), fork(watchAddComment), ]); };
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
데이터 조회에 대해서 궁금증이 생겨서 질문 드립니다!
해당 강의에서는 Detailpage를 수정폼을 담는 페이지로 사용했는데, 조회 페이지에 대한 궁금증이 생겨서 문의 드립니다. 보통 메인이 되는 게시판에서 v-for로 내린 하나의 게시글을 보기위해서 router-link를 통해서 detailpage로 가면 props로 내려준 데이터를 표기할텐데, 그냥 주소창에 해당 게시글 번호를 치고 들어가도 그 props를 받아올 수 있나요? 혹시 이런 상황들을 실무에서는 어떻게 처리하는지 궁금합니다
-
미해결대세는 쿠버네티스 (초급~중급편)
MovaxTerm login as 가 안떠요..
안녕하세요! 영상 보며 따라가고있는데 Login as 가 안뜨고 타임아웃이 나서요 ㅠㅠ 무슨 문제가 있는걸까요?
-
미해결트렐로 개발로 배우는 Vuejs, Vuex, Vue-Router 프론트엔드 실전 기술
Vue 개발시 외부 ES5 Script 적용 문의 드립니다.
안녕하세요. 강의를 참고하여 Vue.js로 개발 중입니다. 그러던 중 기존 만들어 놓은 JS 파일들을 재 사용하는 이슈가 있어 문의 드립니다. 아래방식 처럼 사용하던 script를 var cryt = new Crypto(); cryt.setInfo(id, pwd); var enId = cryt.Encrypt(id); 이런식으로 instance 생성후 객체의 매소드를 호출 하는건 어떻게 import해야 할지요? 또는 es5로 만든 js 파일을 import 말고 참조해서 위와 같이 기존에 사용하던 방식으로 사용할 수 있을까요? 아직 vue.js /es6를 공부하는 중이라 후자가 편하긴 합니다.^^ 도움 부탁드립니다.
-
미해결인터랙티브 웹 개발 제대로 시작하기
선생님 질문 드립니다 ㅠㅠ!
제 개인적인 생각으로는.. !! setTimeout은 몇초 후에 값을 나타나게 하는 기능인거 같고, clearTimeout은 멈추게 하는 기능인거 같고..? ㅠㅠ../ 라고 생각하는 도중에 궁금한점이 문득 생겼습니다! 간단하게 button으로 예를 들자면.. setTimeout을 5초(5000) 뒤에 20이라는 값을 나오게 가정하고, clearTimeout도 같이 지정해줬을시, 이 20이라는 값이 5초전에 나오기전에 버튼을 클릭하면 clearTimeout이 실행되면 그 값이 나오지 않나요? 지금 일분이는 무엇을 클릭하기전에 알아서 clearTimeout이 작동하는것은 알겠는데 무엇을 클릭 했을시에도 멈추어지는 기능인지 궁금합니다!! 제가 질문드리는데 아직 배운게 얼마 많지 않아 ㅠ 두서없이 말씀드린거 같습니다.. 죄송합니다 흑..ㅠㅠ
-
미해결C 와 C++ 을 동시에 배워보자 - 두들낙서의 C/C++
scanf unsafe에러가 나네요.
https://bymakers.tistory.com/6 참고하셔도 좋을거같습니다.
-
미해결파이썬 사용자를 위한 웹개발 입문 A to Z Django + Bootstrap
python manage.py runserver 에러
처음에 python manage.py runserver를 했을 때 아래 사진과 같은 에러가 떠서 검색을 해보니 settings.py에서 WSGI_APPLICATION = 'my_site_prj.wsgi.application' 이 문장을 지우라고 해서 지우고 다시 명령어를 실행해 보니 이제는 이런 에러가 뜹니다ㅠㅠ
-
미해결웹 게임을 만들며 배우는 React
webpack nodejs 질문
안녕하세여 다름이 아니라 제가 react는 webpack 그리고 백엔드는 noejs epxress를 하는데 작업을하다가 갑자기 프론트 터미널에 에러가 뜨는데 보니깐 node 모듈이랑 꼬여서 그런거같더라고요. 이런 경우에는 webpack에 target을 target:node해야되나요?? target:node하니깐 require is notdefind에 react is notdefind 이렇게 뜨더라고요... 대체 원인이 먼지 모르겠습니다. const path = require("path"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const nodeExternals = require('webpack-node-externals'); const webpack = require('webpack'); module.exports = { name: "wehago", mode: "development", devtool: "eval", target: 'node', resolve: { extensions: [".js", ".jsx", "css", "scss"], }, entry: { app: ["babel-polyfill","./client"], }, externals: [nodeExternals()], externals: { "React": "react", }, module: { rules: [ { test: /\.jsx?$/, loader: "babel-loader", options: { presets: [ [ "@babel/preset-env", { debug: true, }, ], "@babel/preset-react", ], plugins: ["react-hot-loader/babel"], }, exclude: path.join(__dirname, "node_modules"), }, { test: /\.css$/, use: [MiniCssExtractPlugin.loader, "css-loader"], }, { test: /\.scss$/, loaders: [ require.resolve("style-loader"), require.resolve("css-loader"), require.resolve("sass-loader"), ], }, { test: /\.(ico|png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader", options: { publicPath: "./dist/", name: "[name].[ext]?[hash]", }, }, ], }, node: { net: 'empty', tls: 'empty', fs: 'empty' }, plugins: [ new MiniCssExtractPlugin({ filename: "style.css", }), new webpack.ProvidePlugin({ "React": "react", }), ], output: { path: path.join(__dirname, "dist"), filename: "[name].js", publicPath: "/dist", }, };
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
netlify 서비스 배포 관련
인녕하세요~ 좋은 강의 감사합니다! 한가지 추가적으로 여쭤보고 싶은게 있는데요. 서비스배포를 netlify할 때 https 가 아닌 http로 할 수 있는 방법이 있을까요~?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
CRA에서 eslint했을 때
CRA에서 강좌처럼 해봤는데 eslint설정을 하면 eslint 버전오류나고 버전을 맞춰주면 eslint가 안 먹습니다 ㅠㅠ CRA는 따로 eslint를 맞추는게 있나요?
-
미해결대세는 쿠버네티스 (초급~중급편)
pod생성후 내부IP
저는 우선 마스터는 192.168.0.31부터 시작해서 각 노드는 32 ,32 로 생성했습니다. 마스터 설정후 kubeadm init --pod-network-cidr=10.96.0.0/12 로 설정했는데 내부 아이피는 10.111~ 로 시작합니다. ㅠㅠ 자세한 설명 부탁드립니다ㅏ.
-
미해결메타스플로잇(Metasploit) 활용한 취약점 분석(초중급과정)
mssql 포트 활성화 안되어 있어요.
21, 22 포트가 탐지가 안되네요 ㅠㅠ 제공해주신 WinXP에서 비 활성화된 목록은 각자 활성화 해주어야 하나요?
-
미해결유니티(Unity)로 시작하는 게임개발: Part 2. C# 프로그래밍 입문
강의자료는 어디에 있나요?
강의도중 등장하는 문제와 정답이 담긴 강의자료파일은 어디에서 받을수 있을까요?