묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결억대 연봉을 버는 프리랜서 개발자 브랜딩 로드맵
질문이 있습니다.
안녕하세요. 이 강의를 중간정도까지 듣고 무작정 웹프론트엔드 독학에 도전한 스물 중반의 대학교에 적응하지 못하고 자퇴한 상황에 있는 사람입니다. 아직 많이 부족하지만 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에 아무것도 안뜹니다 ㅠㅠ 코드는 어디부분을 넣어야할지몰라서 일단 안되는 현상만 말씀드립니다 ㅠㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
GetComponent<Collider>() 에 질문이 있습니다.
안녕하세요. 강의 정말 잘듣고 있습니다. GetComponent<Collider>에 질문이 있습니다. 지금 bounds.size.y가 0이 왜 나오는지 잘 모르겠습니다. Collider가 지금 인식이 안되는거 같은데 UnityChan에는 Collider가 있는 상태인데 인식 시킬 수 있는 방법이 있을까요? 이건 UnityChan에 Collider가 붙여 있는 사진입니다. parent는 UnityChan이 인식이 되어있구요.. 놓친게 뭔가 있다는 말인데.. 아무리 봐도 잘 모르겠어서 질문을 드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
bean validation 언제 수행되는건가요?
디스페치서블릿에서 핸들러매핑하고 어댑터 실행하고 모델앤뷰 반환하고 뷰 렌더링 되는 과정중에서 bean validation은 뷰 렌더링하는 과정중에 수행이 되는건가요? 궁금합니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
vscode로 사용해도 되나요?
강의를 들으려고 하는데 프로그램을 인텔리j 말고 vscode로 해도 될까요?? vscode 로 하면 다른 부분이 많아서 따라가기 힘든가요?
-
해결됨따라하며 배우는 NestJS
강의 커리큘럼 질문
강의 수강 전 타입 스크립트 어느 정도까지 배워야 할까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프 th:name 에 대한 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 기존의 타임리프를 사용했을때 컨트롤러에서 넘겨준 Model 에 있는 각종 값들을 프로퍼티 접근법을 사용해서 HTML에 렌더링하는 것을 보면서 타임리프의 유용함을 알게되었습니다. 하지만 th:name 태그는 기존 HTML 의 name 속성이 하던 일과 동일하다고 밖에 안보여집니다. 실제로 활용할때 HTML name 속성이 아닌 타임리프의 name 속성이 사용한다면 어떤 상황인가요?
-
미해결프론트엔드 개발자를 위한 웹팩
웹팩의 등장배경 관련해서 문의드립니다!
안녕하세요 Vue 끝장내기 강의를 먼저 듣고 온 뷰린이입니다. 먼저 올려주신 강의들 너무너무 잘 듣고 있습니다. 다름이 아니라 웹팩 등장배경에 관련한 이야기를 하시면서 파일 단위의 자바스크립트 모듈 관리의 필요성을 언급하셨습니다. 저는 해당 부분을 '모듈 관리 기능을 commonJS와 AMD와 같은 라이브러리로 사용하다가 그 필요성이 더욱 강조되면서 ES6부터는 언어 레벨까지 구현되었다.' 로 받아들였습니다. 그래서 어떤 관점에서 모듈 기능의 필요성이 웹팩의 등장 배경과 관련이 있는지 이해가 잘 되지 않습니다. 답변 부탁드리며 항상 좋은 강의 감사드립니다!
-
미해결우디의 포토샵 강좌
포토샵 강좌 #72 - 깊이감이 느껴지는 타이포 그래피 숙제질문입니다.
안녕하세요! 우디님의 강좌를 수강하고 있는 사람입니다. 72강 강좌에서 숙제를 내주셨었는데 R글자 레이어에 나뭇잎을 삐져나오게 하는 부분에서 어려워서 막혔습니다.. 어떻게 하면 되는 부분일까요? 글자 레이어ㅜㅜ 어찌 해야할지 잘 모르겠습니다.
-
미해결Vue.js 제대로 배워볼래?(Vue.js 프로젝트 투입 일주일 전)
lazy-load의 성능에 대해서 질문이 있습니다.
강의 내용을 요약해보면 component를 import 하는 방법에 1. 첫 화면로딩때 모든 컴포넌트에 대해 캐시 로딩, 2. prefetch disable-> 해당 컴포넌트를 부를때 캐시에 로딩 3. 첫 로딩때 한번에 다운? 이렇게 된다고 이해했습니다. app.js에 모든 컴포넌트가 포함되서 받아오는것(3번)과, prefetch enable해서 app.js + 각가 컴포넌트 javascript를 받아올때(1번)와의 차이를 잘모르겠습니다. prefetch의 장점이 캐시에 로드해서 해당 컴포넌트를 호출하면 캐시에서 가져와서 빠르게 로딩할수있다는 것으로 이해했습니다 하지만 3번으로 가져온 app.js도 모든 컴포넌트에 대해 로딩이 끝났기때문에 1번 경우와 동일하게 빠르게 로딩될수있는거 아닌가요? (3번의 경우에는 각 컴포넌트를 호출할때마다 캐시에 로딩하기 때문에 느린건가요?) 질문을 정리하면 아래와 같습니다 1. 브라우저는 스크립트를 받아서 컴포넌트를 실행할때마다 해당 컴포넌트를 캐시에 올려서 사용하나요? 2. 위의 가정이 맞다면 1번과 3번의 차이는 각 컴포넌트를 호출할때 마다 캐시에 올려서 시간이 오래걸림 vs 모든 컴포넌트를 캐시에 올려서 시간이 오래 걸림 일까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
예외처리
1. 문자열은 영어 알파벳으로만 구성되어 있습니다. 2. 문자열은 100자를 넘지않습니다. 3. 대소문자를 구분하지 않습니다. 상기 3가지 사항 중에서 마지막 3번만 코드에서 거를 수 있게 해주셨는데, 나머지 두가지는 왜 따로 처리하지 않으셨나요?