묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Svelte.js SPA 영화 검색 프로젝트
vite로 진행해도 문제 없겠지용?
https://vitejs-kr.github.io/guide/#scaffolding-your-first-vite-project 보고 바이트로 진행하니 기본설정이 다 잘 잡혀있네용 vite로 해도될까용
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
교재관련 질문
안녕하세요 파이썬 머신러닝 완벽 가이드 책 구매를 희망하는데 현재 인터넷 도서 판매 사이트들에는 절판 처리가 돼있더라구요 개정이 되는것 같은데 교재출간은 언제 되는지 궁금합니다.
-
미해결코딩의민족 앱 제작 (Android kotlin)
collection에서 오류가나네요
버젼 차이인건가요? 현재 저는 범블리를 통하여 학습하고 있습니다. 혹시 gradle 에 코드를 추가하는건지 궁금합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오류가 발생합니다
경로를 home으로 바꾸고 home.html을 넣고 실행하면 2022-04-11 20:01:53.168 ERROR 6912 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template [home], template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause org.thymeleaf.exceptions.TemplateInputException: Error resolving template [home], template might not exist or might not be accessible by any of the configured Template Resolvers at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:366) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:190) ~[thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE] at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1393) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1138) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1077) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.5.jar:5.3.5] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.5.jar:5.3.5] at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.44.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.5.jar:5.3.5] at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.44.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.5.jar:5.3.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar:5.3.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.5.jar:5.3.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar:5.3.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.5.jar:5.3.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar:5.3.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.44.jar:9.0.44] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] 같은 문구가 나오면서 에러가 발생합니다
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
TCP 4 way handshake
[질문 내용] 안녕하세요. TCP 프로토콜을 공부하다 궁금한 점이 있어 질문드립니다. 연결지향의 특징을 갖는 TCP는 연결할 때 뿐만 아니라 해제할 때도 4-way handshake라는 과정을 거친다고 알고 있습니다. 4-way handshake는 언제 이루어지는 것인가요? 연결을 종료하는 시점이 말씀하신 데이터 전달 보증 과정이 종료되면 일어나는 것인지 궁금합니다..
-
미해결
테스트
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결남박사의 파이썬으로 실전 웹사이트 만들기
redirec vs render_template , 어떻게 구분해서 사용하나요?
사실 이전부터 계속 궁금했는데, 수업진도를 나가도 이해를 못하고있어서 이렇게 문의를 드려요 4분 23초를 보면 render_template를 사용해서 edit.html로 보내주고있어요 어떤 경우에 render_template를 쓰고 어떤 경우에 redirect를 사용해야 하는지 알려주시면 감사하겠습니다 제가 볼땐 redirect를 쓰나, render_template를 쓰나 동일한 결과일거 같은데, 선생님께서는 두개를 혼용해서 사용하시는데, 혹시 무슨이유가 있는지 궁금합니다.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
프론트만 공부하는데 백엔드 서버요..?
axios 강의 보면 백엔드 서버까지 써야하는데 필수인가요..? api가 안 써져도 상관 있나요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
응답할때 send,json 차이 질문이요
19:27초에 응답을 res.json(user)로 보내주셨는데 제가 res.send(user)로도 바꿔서 해보니깐 둘이 다른게 없더군요. 둘의 차이점이 뭔지 궁금해요 json대신 send로 보내도 상관 없는건가요?
-
미해결억대 연봉을 버는 프리랜서 개발자 브랜딩 로드맵
질문이 있습니다.
안녕하세요. 이 강의를 중간정도까지 듣고 무작정 웹프론트엔드 독학에 도전한 스물 중반의 대학교에 적응하지 못하고 자퇴한 상황에 있는 사람입니다. 아직 많이 부족하지만 React까지는 어느정도 다룰 수 있는 정도까지 공부를 했습니다만 뭔가 리액트로 mysql을 이용해 nodejs와 연동해서 로그인 기능이 있는 조촐한 게시판 웹앱을 만드려고 해보니 리액트에서의 로그인 구현이 막혀서 진행이 안되네요... 너무 쉽게 생각하고 공부를 너무 부실하게 했음을 인정하고 바닐라js부터 다시 탄탄히 공부하려합니다. 혹시 강의에서 말씀하신 웹개발 외주를 맡을 수준까지 가려면 어느정도의 능력까지는 최소한은 있어야된다고 생각하실까요 ..? 또 그 수준에 도달하기까지는 대략 어느정도의 시간이 필요할까요 미래에 대한 막막함에 제가 시작한 곳에서 뭔가 조언을 구할 수 있지 않을까 싶어서 작성하다보니 일기처럼 두서없이 작성했네요ㅠㅠ 뭔가 제가 지금 하고있는 길이 맞는 길인지 확신이 안서서 다시 재정비하며 방향을 잡으려고 합니다. 공부를 제대로 안한 탓도 있는 것 같지만 생각보다 프론트엔드 공부라는게 빠르게 바뀌고 양도 만만치 않은 것 같아서 고민이 많습니다.. 한편으론 막연히 취업이 두려워 프리랜서라는 막다른 길목으로 눈가리고 무작정 달려가는게 아닐까 싶기도 합니다..
-
해결됨만들면서 배우는 Svelte
routify 부분 질문있습니다!
질문 있습니다 routify 강의 중에 설정을 다하고 들어갔더니 이 화면에서 멈춰 있는데 왜그런건가요 ㅠㅜ..?
-
해결됨남박사의 파이썬으로 실전 웹사이트 만들기
(board_edit -> if data in None: 오류)오류나는 부분이 있어서 다시 질문 드립니다!
안녕하세요 남박사님! 저번에 질문 올렸는데요!.... 플라스크 프로젝트를 모듈화 하여 패키징 하기 부분에서 오류나서 질문을 드렸었습니다! 죄송합니다만 .... 댓글 달아주셨는데.. 제가 궁금한 부분도 다시 댓글 달았습니다. 답변 부탁드리겠습니다. 지금 진도는 javascript, iQuery 폼 검증 기능 추가하기 입니다. 모듈화 부분에서 전부 모듈화 하고... venv 들어가 있는 상태에서 재생버튼 눌러서 강제로 실행하니까.. 코드 오류 무시하고 실행이 되더라구요...! 왜그런지는 모르겠습니다! 실행이되서 진도를 나갔는데 다른 부분은 전부 정상적으로 적용되는데.. 한곳에서 적용이 안되는 구간이 있어서 질문 올립니다! -코드 오류 -1 - -코드 오류-2 - -글목록 수정- 글목록 작성한다음에 글수정 누르니까 오류가 나옵니다. -웹페이지 오류- -run.py- from main import app if __name__ == "__main__": app.run(host="0.0.0.0", debug=True, port=9000) ---------------------------------------------------------------------------------------------------- -__init__.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 datetime import datetime, timedelta from flask import abort from flask import redirect from flask import url_for from flask import flash from flask import session import math import time 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) # 아래의 파일들에서 main 의 app 에 접근을 해야하니 # 아래 import 위에 app 가 선언되어야 합니다. from .filter import format_datetime from .common import login_required # member, board 에서 login_required, format_datetime 을 사용하니까 # 당연히 member 와 board 가 위의 import 보다 먼저 나와선 안됩니다. from . import member from . import board app.register_blueprint(board.bluerprint) app.register_blueprint(member.bluerprint) -------------------------------------------------------------------------------------------- -board.py- from turtle import title from main import * from flask import Blueprint bluerprint = Blueprint("board", __name__, url_prefix="/board") @bluerprint.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).sort("pubdate", -1) # 게시물의 총 갯수 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, title="게시판 리스트") @bluerprint.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, title="글 상세보기") return abort(404) @bluerprint.route("/write", methods=["GET", "POST"]) def board_write(): if session.get("id") is None: return redirect(url_for("member.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.board_view", idx=x.inserted_id)) else: return render_template("write.html", title="글 작성") @bluerprint.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("board.lists")) else: if session.get("id") == data.get("writer_id"): return render_template("edit.html", data=data, title="글 수정") else: flash("글 수정 권한이 없습니다.") return redirect(url_for("board.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.board_view", idx=idx)) else: flash("글 수정 권한이 없습니다.") return redirect(url_for("board.lists")) @bluerprint.route("/delete/<idx>") def board_delete(idx): board = mongo.db.board data = board.find_one({"_id": ObjectId(idx)}) if data.get("writer_id") == session.get("id"): board.delete_one({"_id": ObjectId(idx)}) flash("삭제 되었습니다.") else: flash("삭제 권한이 없습니다.") return redirect(url_for("board.lists")) --------------------------------------------------------------------------------- -member.py- from turtle import title from main import * from flask import Blueprint bluerprint = Blueprint("member", __name__, url_prefix="/member") @bluerprint.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", title="회원가입") if pass1 != pass2: flash("비밀번호가 일치하지 않습니다.") return render_template("join.html", title="회원가입") members = mongo.db.members cnt = members.count_documents({"email": email}) if cnt > 0: flash("중복된 이메일 주소입니다.") return render_template("join.html", title="회원가입") 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 redirect(url_for("member.member_login")) else: return render_template("join.html", title="회원가입") @bluerprint.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.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("board.lists")) return redirect(url_for("board.lists")) else: flash("비밀번호가 일치하지 않습니다.") return redirect(url_for("member.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, title="회원로그인") else: return render_template("login.html", title="회원로그인") @bluerprint.route("/logout") def member_logout(): try: del session["name"] del session["id"] del session["email"] except: pass return redirect(url_for('member.member_login')) ---------------------------------------------------------------------------------- -main.html- <!DOCTYPE html> <html lang="kr"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>{{title}}</title> {% with messages = get_flashed_messages() %} {% if messages %} <script> alert('{{messages[-1]}}'); </script> {% endif %} {% endwith %} </head> <body> {% include "menu.html" %} {% block contents %} {% endblock %} </body> </html> --------------------------------------------------------------------------- -edit.html- {% extends "main.html" %} {% block contents %} <table> <form name="form" method="post" action="{{url_for('board.board_edit', idx=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> {% endblock %} ------------------------------------------------------------------------- -join.html- {% extends "main.html" %} {% block contents %} <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" name="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> {% endblock %} ------------------------------------------------------------------------------- -list.html- {% extends "main.html" %} {% block contents %} <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('board.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.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('board.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('board.lists', page=i, search=search, keyword=keyword)}}">{{ i }}</a> {% endif %} {% endif %} {% endfor %} {% if block_last < last_page_num %} <a href="{{url_for('board.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.board_write')}}">글작성</a> {% endblock %} -------------------------------------------------- -login.html- {% extends "main.html" %} {% block contents %} <table> <form name="form" action="{{url_for('member.member_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> {% endblock %} ---------------------------------------------- -view.html- {% extends "main.html" %} {% block contents %} {% with messages = get_flashed_messages() %} {% if messages %} <script> alert("{{messages[-1]}}"); </script> {% endif %} {% endwith %} {{result.title}} <br /> {{result.name}} <br /> {{result.pubdate|formatdatetime}} <br /> {{result.view}} <br /> {{result.contents}} <br /> <a href="{{url_for('board.lists', page=page, search=search, keyword=keyword)}}" >리스트</a > {% if session["id"] == result.writer_id %} <a href="{{url_for('board.board_delete', idx=result.id)}}">글삭제</a> <a href="{{url_for('board.board_edit', idx=result.id)}}">글수정</a> {% endif %} {% endblock %} ------------------------- -write.html- {% extends "main.html" %} {% block contents %} <table> <form name="form" method="post" action="{{url_for('board.board_write')}}"> <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"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" /></td> </tr> </form> </table> {% endblock %}
-
미해결
What network does Coinbase Wallet support?
Coinbase's IPO has been enthusiastically expected by a lot of people, however changes in Washington might actually significantly affect the organization and different trades. Coinbase's own previous boss lawful official, Brian Brooks, was the previous summer named as the acting top of the Office of the Comptroller of the Currency (OCC), and among his other crypto-accommodating endeavors, he distributed interpretive letters and declarations announcing that banks can join forces with crypto caretakers and direct installments utilizing stablecoins. It was never completely clear how much weight those letters and declarations conveyed. Gotten some information about Brooks' latest interpretive letter, in which he expressed that monetary organizations can partake as hubs on a blockchain and store or approve installments, the FDIC said in a messaged reaction that it had no remark. Creeks' rule has finished, regardless. With another approaching organization, he left his position this week, supplanted by a vocation OCC worker, Blake Paulson, who may himself be supplanted before long. The change leaves inquiries regarding how and whether the organization's tone toward cryptographic money will change. In the interim, Gary Gensler, a previous monetary controller and Goldman Sachs financier who has most as of late been educating at M.I.T., is supposed to be named to lead the SEC. He is additionally expected to invite more noteworthy oversight of the $1 trillion digital money market than Jay Clayton, the Wall Street lawyer who ventured down from the job last month following three years. Read More:- coinbase stock || coinbase wallet || coinbase issues || coinbase login issues || coinbase connection issues || coinbase support || coinbase support number || coinbase help || coinbase wallet support
-
미해결비전공자를 위한 개발자 취업 올인원 가이드 [취업편]
포트폴리오 프로젝트
안녕하세요 강사님~ 정말 질 좋은 강의 덕분에 많은 많은 팁과 자신감을 얻어가요 감사합니다! 지금 강의들으면서 포트폴리오 작성중인데 제가 개발자 준비하면서 인강이나 아니면 개별적으로 한 프로젝트들이 조금 되더라구요.혹시 포트폴리오에 올릴 프로젝트들은 어떤 기준으로 올리는 것이 좋을까요? 지금 현재 진행중인 팀프로젝트는 혹시 이력서 프로젝트란에 작성해도 괜찮을까요?
-
미해결구글애즈로 배우는 퍼포먼스마케팅 필수 (2023년 업데이트)
안녕하세요! 수강혜택은 어디서 받을 수 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 수강생 ONLY 커뮤니티 채팅방 초대 디지털마케팅 기초 강의 할인 (로드맵 페이지 참고) 디지털마케팅 용어 정리집 PDF 강의 슬라이드 자료 PDF 미디어믹스 템플릿 디스플레이광고 타겟팅 관리 템플릿 검색 광고 캠페인 관리 템플릿 성과 측정 템플릿 AB 테스팅 템플릿-> 전부 받고싶습니다. 커뮤니티는 찾았는데, 그룹 채팅방 비밀번호가 뭔지 모르겠어요 ㅜㅜ!
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
제로초님 이러한 방법은 어떻게 처리할 수 있는지 답변을 주실 수 있을까요 ?
제가 사진 파일들을 어떠한 폴더에 넣고 URL의 형식으로 그 파일들을 클라이언트에게 뿌려주는 개념일 경우에 어떠한 모듈을 사용해서 처리 할 수 있을까요 ?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
Warning: Each child in a list should have a unique "key" prop.
Commet와 ReplyComment에서 key에러 뜨는데 해결할 좋은방법있을까요
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
강사님 cnn 데이터 input shape에 관해 여쭈어보고 싶은게 있습니다.
궁금한 점이 맨처음에 데이터를 chanel-first 형식으로 만들어서 전처리 같은 부분을 진행하고 딥러닝을 시킬 때, 데이터를 chanel-last 형식으로 변경을 시켜서 딥러닝을 하게 되면 문제가 있는 부분일까요? 해당 데이터를 변경시킬떈 reshape를 써서 변경 시키려고 합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ModelAndView 에서 View를 불러오지 못하는거 같습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 안녕하세요 강의를 듣다가 질문이 생겨서 이렇게 질문 드립니다. springmvc 에서 viewResolver 를 사용해서 view를 불러오는 과정에서 404 Whitelabel Error Page 오류가 납니다 ModelAndView를 리턴하지않고 null로 리턴했을때는 호출이 되는데, ModelAndView 를 리턴하려고 하면 404가 뜹니다. null 리턴일때 호출되는건 강사님이 system.out으로도 확인했습니다 ㅠㅠ application.properties에 refix와 suffix도 입력해주었고, 혹시나 싶어서 캐쉬삭제도 해보고 인텔리제이도 재시작 해봤는데 안되더라구요.. 혹시 제가 놓친 부분이 있을까요? InternalResourceViewResolver를 빈으로 등록해서 설정 입력해주면 인식은 하는데 properties를 설정하면 안됩니다 너무 간단한 질문인거 같아서 죄송합니다ㅠㅠ OldController OldController 코드 @Component("/springmvc/old-controller") public class OldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("OldController.handleRequest"); return new ModelAndView("new-form"); } } new-form 경로 application.properties <리턴 null > <리턴 ModelAndView>
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
안녕하세요
안녕하세요 지금 게시글 이미지 파이어베이스에 저장 부분 강의를 수강중입니다. 게시글 작성을 누르고 갤러리에서 사진을 불러와 작성을 완료하면 파이어베이스 Real time database에는 게시글이 저장이 되는데 Storage에는 선생님처럼 사진파일도 같이 저장되어있어야하는데 아무것도 저장이 안됩니다 ㅠㅠ 사진과 같이 윤경서입니다로 제목을하고 사진도 갤러리에서 선택하여 첨부해서 작성을 했는데 Storage에 아무것도 안뜹니다 ㅠㅠ 코드는 어디부분을 넣어야할지몰라서 일단 안되는 현상만 말씀드립니다 ㅠㅠ