묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결퍼블리셔 취업을 위해 제대로 배워보는 html과 css, 그리고 웹표준
css +요소 질문드립니다.
안녕하세요 css style에서 +값을 줄 경우 li +li는 두번째 li부터 다른 li까지 다 해당되는데 h1+p는 왜 그 이후부터 다 해당되는게 아니고 h1과 인접한 하나의 p만 해당되는건가요?
-
미해결자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌
소리작은분들 - 크롬앱 사용해보세요.
소리작은분들 크롬에서 강의 들으시면 확장앱 설치후 들어보세요. https://chrome.google.com/webstore/detail/volume-amplifier/hgjaoeaobmnnefhjdphmodcnljkboglb?hl=ko
-
해결됨[개정판] 파이썬 머신러닝 완벽 가이드
회귀 분석 질문입니다.
먼저 강의 감사합니다. 강좌와 책의 예제인 자전거 수요예측을 보고 몇가지 질문이 생겼습니다. 1. 만약 독립변수가 모두 범주형이면 전부 원-핫 인코딩을 하고 회귀분석하는 방법이 올바른지 궁금합니다. 2. 최적 하이퍼파라미터를 찾기위해 GridSearchCV를 사용하는데 데이터의 크기가 크면 시간이 오래 걸린다고 알고있습니다. 이때 먼저 설정하고 추후에 세부적인 하이퍼 파라미터값을 바꾸면 좋다고 질문/답변에서 보았는데 혹시 회귀분석 알고리즘별로 GridSerarchCV를 사용해 먼저 설정할 값과 추후에 세부적으로 설정할 파라미터 값을 알고싶습니다! 3. 하이퍼 파라미터의 최적값을 찾았다는 가정하에 랜덤포레스트보다 그래디언트부스트트리가 더 성능이 좋을까요? 4. 회귀분석에서 모델을 평가 하는 지표는 MSE, RMSE, R-squared, MAE 정도로 알고있습니다. 혹시 강사님께서 보실때 '성능이 좋은 모델'의 위 4개의 지표의 기준이 있을까요? 감사합니다.
-
해결됨정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
replace() 사용은 어떤가요?
안녕하세요. 선생님 보다가 궁금한게 있는대요. 저 같은 경우 String의 replace(), indexOf() 메소드를 이용하여 다음과 같이 구현했습니다. public static int numUniqueEmails(String[] emails) { Set<String> set = new HashSet<>(); for (String email : emails) { String[] str = email.split("@"); str[0] = str[0].replace(".", ""); int index = str[0].indexOf("+"); if (index >= 0) { str[0] = str[0].substring(0, index); } set.add(str[0] + "@" + str[1]); } return set.size();} 단순 구현 방식의 차이인 건지 아니면 StringBuilder 를 이용하는 것이 더 이점이 있는 건지 궁금합니다.
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
IOS 사용중 입니다. 강의 백그라운드 재생 문의 건
안녕하세요 파이썬 강의를 백그라운드로 듣고싶은데 지원이 되나요? IOS 휴대폰 입니다
-
미해결선형대수학개론
3.2 example 1. det(A)구할때
det A 구할때 echelon form 구할때 row 3에서 -6 2를 -3 1로 약분해야 되는것 아닌가요? 약분하면 안된다면 왜 안될까요?
-
해결됨실전! Querydsl
[수정, 삭제 벌크연산] subtract 메서드
안녕하세요 .강사님 작은 부분이지만, 다른 분들도 아시면 좋을 것 같아서 조심스럽게 적어 봅니다. [수정, 삭제 벌크연산] 강의 중 더하기는 add(1), 빼기는 add(-1)하면 된다고 알려주셨는데, 또한 subtract란 메서드로도 뺄셈 연산이 가능하여 전달 드립니다. 항상 좋은 강의 감사드립니다 ^^! 많은 도움 받고 있습니다. @Testpublic void bulkAdd(){ long count = queryFactory .update(member) .set(member.age, member.age.add(1)) .execute();}@Testpublic void bulkSubtract(){ long count = queryFactory .update(member) .set(member.age, member.age.subtract(1)) .execute(); }
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
로그아웃 기능 테스트
화면에선 "로그인 후 이를 이용해 로그아웃해 보면...." 이라고 하셨는데 실제 Postman 설정을 어떻게 해야 로그아웃 테스트를 할 수 있나요?
-
미해결쉽게 따라하는 SketchUp Pro 2019 (한국어판)
5번째 강의 오류 [편집도구]
스마트폰으로 보고있습니다. 그 앞 강의들은 다 괜찮았는데 그 강의만 슬로우모션한 것처럼 들립니다. 속도조절 버튼이 있길래 2배속 빠르게 설정해 보았으나 별 다를게 없었습니다. 어떻게 된 건가요? 저만 이런건가요?
-
미해결R로 하는 웹 크롤링 - 입문편
네이버 실시간 검색어 크롤링 질문드립니다.
네이버 메인에서 페이지 소스 보기를 해도 이제 더이상 실시간 검색어가 찾아지질 않습니다. 이 경우에 어떻게 크롤링해야 하는지 궁금합니다. 두번째 질문은 네이버 데이터랩 자료를 크롤링하려고 하는데, 자꾸 불완전한 마지막 행이 발견되었다는 에러메시지가 뜹니다. 소스 코드로는 url<-"https://datalab.naver.com/keyword/realtimeList.naver?where=main" b<-readLines(url,encoding="UTF-8") 를 입력하였는데, 이 경우 b의 값이 제가 아는 페이지 소스값과 너무 다르게 나와서 혼란스러운데 이 경우 데이터랩의 자료를 어떻게 가져와야 하나요?
-
미해결제발 도커 씁시다!
Security Warning이 뜨는데 패스하고 넘어가도 될까요?
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories. docker build시에 뜨는 경고문인데 그냥 넘어가도 될까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
36번 다소 헷갈려서 질문을 드립니다.
for(j = i-1; j>=0; j--){ // 1 if(a[j]>tmp) a[j+1] = a[j]; else break; } a[j+1]=tmp; // 2 처음 for문이 시행될 때에 j는 i가 1이기 때문에, j는 0으로 초기화가 된 상태에서 for문 안에 있는 일련의 if문을 거치고 난 뒤에 j--에 의해 j가 -1로 바뀐 상황에서, 이미 j>=0이라는 컨디션에 해당안하기에 바로 a[0]=tmp; 가 된다고 이해하였습니다. 이게 다른건 몰라도 삽입은 할 때마다 이상하게 상기 ㅈ주석으로 표시한 2코드의 의미가 이해가 안된다기보다는 오히려 확 와닿지를 않는다고 표현하는게 더 적절하네요ㅜㅜㅜ 그렇다면 for문 대신 while(j>=0&&a[j]>tmp){ if(a[j]>tmp){a[j+1] = a[j];} else break; j--; } a[j+1]=tmp; } 라고 표현해도 괜찮을까요? 늘 감사드립니다.
-
해결됨프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
= 와 ==의 차이
is(=)는 변수가 같은 Object(객체)를 가리키면 True, ==는 변수가 같은 Value(값)을 가지면 True로 알고 있습니다. 그런데 코딩을 하면 할 수록 둘의 차이가 계속 헛갈립니다. 이번 강의에서는 a = 'Park', if a == 'Kim' 으로 표현하셨는데 두 번째에 왜 ==가 오는 지 잘 모르겠습니다.
-
미해결영리한 프로그래밍을 위한 알고리즘 강좌
pdf에 있는 Excercise 답은 없나요?
답과 해설이 있으면 더 좋을것같은데요...
-
해결됨프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
예외와 에러의 차이
강의 설명에서 예외와 에러를 혼동해서 사용하시는 것 같아요. "둘을 나누어 보기보다, 의도한대로 작동하지 않으면 예외로 생각하자"고 하셨는데, 강의의 설명에서 '에러'로 말씀하신걸 "예외'로 생각해도 될까요?
-
미해결초간단 초스피드 데이터 수집 (파이썬 크롤링)
chromedriver 라이브러리
프로젝트 왼쪽에 나온것처럼 chromedriver 추가하려면 어떻게 해야하나요?? 드라이버 설치하고 경로를 바탕화면으로 설정한 다음에 webdriver.Chrome('설치경로')로 했는데도 왼쪽에 추가가 안 됩니다 ㅠㅠ
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
35번 궁금합니다.
선생님, 선생님의 코드에 비해 저의 코드에 어떠한 불필요한 과정이 있는지 알려주시면 대단히 감사하겠씁니다. 많이 까주세요. 감사합니다. #include<iostream> #include<vector> using namespace std; void swap(int* a, int* b) { int tmp; tmp = *a; *a = *b; *b = tmp; } int main() { int N; int negative = 0; //입력받은 음수의 개수 int start = 0; //음수가 맨 앞으로 도달하면 그 다음으로 인덱스를 설정 int positive = 0; //양수의 시발점을 표현하기 위한 인덱스 cin >> N; vector<int>index(N); vector<int>arr(N); for (int i = 0; i < N; i++) { index[i] = i; } for (int i = 0; i < N; i++) { cin >> arr[i]; if (arr[i] < 0) { negative++; } } for (int i = 0; i < N; i++) { if (start == negative) { break; } if (arr[i] < 0) { swap(&arr[start], &arr[i]); swap(&index[start], &index[i]); start++; } } for (int i = 0; i < N; i++) { if (arr[i] < 0) { positive++; } } for (int i = positive; i < N; i++) { int min = index[i]; for (int j = i + 1; j < N; j++) { if (min > index[j]) { swap(&index[i], &index[j]); swap(&arr[i], &arr[j]); } } } for (int i = 0; i < N; i++) { printf("%d ", arr[i]); } }
-
미해결Node.js - Express
이메일 입력하면 제출이 안됩니다..
var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); var template = require('./lib/template.js'); var path = require('path'); var sanitizeHtml = require('sanitize-html'); var app = http.createServer(function(request,response){ var _url = request.url; var queryData = url.parse(_url, true).query; var pathname = url.parse(_url, true).pathname; if(pathname === '/'){ if(queryData.id === undefined){ fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var list = template.list(filelist); var html = template.HTML(title, list, `<h2>${title}</h2>${description}`, `<a href="/create">create</a>` ); response.writeHead(200); response.end(html); }); } else { fs.readdir('./data', function(error, filelist){ var filteredId = path.parse(queryData.id).base; fs.readFile(`data/${filteredId}`, 'utf8', function(err, description){ var title = queryData.id; var sanitizedTitle = sanitizeHtml(title); var sanitizedDescription = sanitizeHtml(description, { allowedTags:['h1'] }); var list = template.list(filelist); var html = template.HTML(sanitizedTitle, list, `<h2>${sanitizedTitle}</h2>${sanitizedDescription}`, ` <a href="/create">create</a> <a href="/update?id=${sanitizedTitle}">update</a> <form action="delete_process" method="post"> <input type="hidden" name="id" value="${sanitizedTitle}"> <input type="submit" value="delete"> </form>` ); response.writeHead(200); response.end(html); }); }); } } else if(pathname === '/create'){ fs.readdir('./data', function(error, filelist){ var title = 'WEB - create'; var list = template.list(filelist); var html = template.HTML(title, list, ` <form action="/create_process" method="post"> <p><input type="text" name="title" placeholder="title"></p> <p> <textarea name="description" placeholder="description"></textarea> </p> <p> <input type="submit"> </p> </form> `, ''); response.writeHead(200); response.end(html); }); } else if(pathname === '/create_process'){ var body = ''; request.on('data', function(data){ body = body + data; }); request.on('end', function(){ var post = qs.parse(body); var title = post.title; var description = post.description; fs.writeFile(`data/${title}`, description, 'utf8', function(err){ response.writeHead(302, {Location: `/?id=${title}`}); response.end(); }) }); } else if(pathname === '/update'){ fs.readdir('./data', function(error, filelist){ var filteredId = path.parse(queryData.id).base; fs.readFile(`data/${filteredId}`, 'utf8', function(err, description){ var title = queryData.id; var list = template.list(filelist); var html = template.HTML(title, list, ` <form action="/update_process" method="post"> <input type="hidden" name="id" value="${title}"> <p><input type="text" name="title" placeholder="title" value="${title}"></p> <p> <textarea name="description" placeholder="description">${description}</textarea> </p> <p> <input type="submit"> </p> </form> `, `<a href="/create">create</a> <a href="/update?id=${title}">update</a>` ); response.writeHead(200); response.end(html); }); }); } else if(pathname === '/update_process'){ var body = ''; request.on('data', function(data){ body = body + data; }); request.on('end', function(){ var post = qs.parse(body); var id = post.id; var title = post.title; var description = post.description; fs.rename(`data/${id}`, `data/${title}`, function(error){ fs.writeFile(`data/${title}`, description, 'utf8', function(err){ response.writeHead(302, {Location: `/?id=${title}`}); response.end(); }) }); }); } else if(pathname === '/delete_process'){ var body = ''; request.on('data', function(data){ body = body + data; }); request.on('end', function(){ var post = qs.parse(body); var id = post.id; var filteredId = path.parse(id).base; fs.unlink(`data/${filteredId}`, function(error){ response.writeHead(302, {Location: `/`}); response.end(); }) }); // 로그인 } else if (pathname === '/login'){ fs.readdir('./data', function(error, filelist){ var title = 'Login'; var list = template.list(filelist); var html = template.HTML(title, list, ` <from action="login_process" method="post"> <p><input type="text" name="email" placeholder="email"></p> <p><input type="password" name="password" placeholder="password"></p> <p><input type="submit"></p> </from>`, `<a href="/create">create</a>` ); response.writeHead(200); response.end(html); }); // 로그인 받기 }else if ( pathname ==='/login_process'){ var body = ''; request.on('data', function(data){ body = body + data; }); request.on('end', function(){ var post = qs.parse(body); if(post.email === 'fkxodbs@naver.com' && post.password ==='111111'){ response.writeHead(302, { 'Set-Cookie' : [ `email=${post.email}`, `password=${post.password}`, `nickname=egoing` ], Location: `/` }); response.end(); }else { response.end('who?'); } }); } else { response.writeHead(404); response.end('Not found'); } }); app.listen(3000); --------- var http = require('http'); var cookie = require('cookie'); http.createServer(function(request,respone){ console.log(request.headers.cookie) var cookies = {} if(request.headers.cookie !== undefined){ cookies = cookie.parse(request.headers.cookie) } console.log(cookies.yummy_cookie); console.log(request.headers.cookie); respone.writeHead(200, { 'Set-Cookie' : [ 'yummy_cookie=choco', 'tasty_cookie=strawberry', `Permanent=cookies; Max-Age=${60*60*24*30}`, // Max-Age= 현재 시점을 기준으로 얼마나 살아있을까 정한다 'Secure=Secure; Secure', 'HttpOnly=HttpOnly; HttpOnly', 'Path=Path; Path=/cookie', 'Domain-Domain; Domain=02.org' ] }) respone.end('cookie!!') }).listen(3000);
-
미해결홍정모의 따라하며 배우는 C++
유투브로 수강하다 이제 인프런으로 건너왔습니다.
교수님의 유투브 [따배씨++]로 공부하다 인프런으로 건너왔습니다. 4.10 구조체 Structure까지 공부했습니다. * 저는 1987년부터 7년간 대한항공 시스템부에서 IBM Macro Assemble어로 프로그래밍, 설계, PM을 했고 PC가 처음 나왔을 때, Turbor-C와 DBase IV를 이용해 Mainframe-PC Interface Program을 1년간 했었습니다 이제 나이 많이 먹었지만, C++을 도전하고 싶습니다. 나이들어도 프로그래머가 되고 싶다는 젊은 시절의 꿈을 이루고 싶습니다. 다음은 파이선도 해보고 싶구요. 어셈블러->C->C++->Python 으로 이어지는 같은 계열의 프로그래밍으로 이어가고 싶군요. 앞으로 많은 가르침 받겠습니다.
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
NameError와 AttributeError의 차이
예컨대 python이 print(time.time())에서 time이 변수인지, 모듈/클래스에 있는 속성인지 어떻게 알 수 있는지 궁금합니다. 구글링 결과, <변수에 바로 접근할 때 오류가 있으면 이름 오류가 발생하고, 마침표(.)를 찍고 그 인스턴스의 속성에 접근할 때 오류가 있으면 속성 오류가 발생합니다.> 라는 설명이 있어 실험적으로 print(a.a())라 적었는데 NameError가 뜨네요. (time도 변수라 생각하면 a도 변수라 생각했습니다.) 두 개를 나누는 기준 혹은 어떤 걸 속성으로 인지하고 어떤 걸 변수로 인지하는지 궁금합니다.