묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
darknet vs ultralytics
이전 시간에는 다크넷으로 YOLO를 사용했고, 이번에는 ultralytics로 YOLO를 사용하는데요. 다크넷과 Ultralytics라는 게 한 회사라고 보면 되나요? 다크넷 YOLO라 하면 그 회사에서 구현한 YOLO 패키지라고 보면 될까요? 혹은 프레임워크 정도로 생각하면 될까요? 추가로 다크넷은 OpenCV로 YOLO를 사용하고, Ultralytics는 파이토치로 YOLO를 사용하는 차이가 있는 것인지요? 이후 강의에서 설명하실 수도 있는데, 강의를 듣고 있는 지금 개념을 잡고 이후 강의를 들어야 할 것 같아 질문드립니다. ^^
-
미해결최반장의 엑셀 피벗테이블 마스터 클래스
피벗차트 보고서 단추 생성
피벗 차트를 생성했는데 기본적으로 보고서 필터 단추가 나타나지 않습니다. 차트에서 보고서 필터 단추를 생성하려면 어떻게 해야하나요 ?
-
미해결Vue.js 시작하기 - Age of Vue.js
Windows 에서 Code 메뉴 찾을 수 없어요
어디서 설정하는지 알려주세요.
-
해결됨그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
NetworkPolicy ipBlock에 대한 질문 입니다.
현재 제 환경에서 실습을 위해 접속하는 net의 ip주소는 172.16.132.37 입니다. egress설정을 통해 172.16.0.0/17대역 쪽으로만 나가도록 허용했는데 방화벽의 아웃바운드와 같은 개념이라면 net에서 트래픽이 나가는 것 자체가 안되거나 ping 통신의 경우 트래픽을 주고 받기 때문에172.16.103.147이 net에서 보낸 트래픽을 받는 건 가능하더라도 net으로 다시 트래픽을 보내는건 불가능 하다고 생각합니다. net(172.16.132.37)이 172.16.103.147 주소를 가진 pod와 어떻게 ping통신이 가능한지 궁금합니다!
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
크롤링되다가 멈춥니다.
이전 글에서 수강생 분이 작성한 바와 같이 terminal 자체가 멈춥니다. 아래는 코드 캡쳐본 입니다. Print(url)만 하면 2번째 사진과 같이 뜨는데, for 문 부터 실행을 시키면 terminal에 깜빡임이나 오류 메세지 없이 그냥 멈춰버립니다.
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
QuestTargetMarker 스크립트 오류
private Dictionary<Quest, Task> targetTasksByQuest = new Dictionary<Quest, Task>(); private void OnDestroy() { QuestSystem.Instance.onQuestRegistered -= TryAddTargetQuest; foreach ((Quest quest, Task task) in targetTasksByQuest) { quest.onNewTaskGroup -= UpdateTargetTask; quest.onCompleted -= RemoveTargetQuest; task.onStateChanged -= UpdateRunningTargetTaskCount; } } 에러내용 1. CS1061 - 'KeyValuePair<Quest, Task>'에는 'Deconstruct'에 대한 정의가 포함되어 있지않고, 'KeyValuePair<Quest, Task>' 형식의 첫 번째 인수를 허용하는 엑세스 가능한 확장 메서드 'Deconstruct'이(가) 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요. 2. CS8129 - 2 out 매개 변수 및 void 반환 형식을 사용하는 'keyValuePair<Quest, Task>' 형식에 대한 적절한 분해 인스턴스 또는 확장 메서드를 찾을 수 없습니다. 1. foreach문에서 빨간색으로 표시한 부분이 에러가 계속 나고 있습니다. 올려주신 수업자료를 복붙해도 4번 강의를 계속 돌려보며 고쳐도 고쳐지지가 않네요... 2. 혹시 수업 자료 풀버전은 따로 올린곳이 있을까요? 현재 챕터마다 수업자료가 흩어져있거나 누락된게 있어서 보기가 어렵네요..
-
미해결<1만 시간의 법칙> 웹 페이지 제작하기
.title_img img css 작성 문의 드립니다.
.title_img img{ width:100%; height:auto; } 이렇게 height:auto 를 주셨는데 height값은 어떻게 설정 되는건가요? width는 부모 요소의 100% 라 564px 인걸로 알고 있습니다 ㅠㅠ
-
미해결Slack 클론 코딩[실시간 채팅 with React]
Workspace: FC = ({children}) 이 안됩니다.
이런식으로 에러가 나는데 어떻게 해결하면 좋을까요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
include 질문이요
const fullUserWithoutPassword = await User.findOne({ where: { id: user.id }, attributes: { // attribute: ['id','nickname','email'] => id,nickname,email만 쓰겠다. exclude: ["password"], }, include: [ { model: Post, attributes: ["id"], }, { model: User, as: "Followings", attributes: ["id"], }, { model: User, as: "Followers", attributes: ["id"], }, ], }); include의 모델 User는 아래와 같이 user와user의 관계에 의해 mysql에 테이블 follow가 만들어 지는데요. db.User.belongsToMany(db.User, { through: "Follow", as: "Followers", foreignKey: "FollowingId", }); db.User.belongsToMany(db.User, { through: "Follow", as: "Followings", foreignKey: "FollowerId", }); 이때 { model: User, as: "Followings", attributes: ["id"], }, { model: User, as: "Followers", attributes: ["id"], }, 1번째 include 모델 User는 테이블follow의 FollowerId 값으로 해당 user를 찾고 2번째는 FollowingId로 user를 찾아서 객체로 반환 해 주는 건가요? 이쪽부분이 잘 이해가 안되네요..
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
lt, rt의 자료형 Node 질문 드립니다.
강의 듣고 이해가 가지 않는 부분이 있어 질문 드립니다! Node 클래스의 lt와 rt 변수의 자료형이 Node라고 코드를 구현하셨는데 이 부분이 잘 이해가 가지 않습니다. 클래스 내부의 변수의 자료형이 본인 클래스일 수 있는 건가요? 자료형이 참조형인 경우 가능한건가요?? 구글 검색을 통해 찾아보려고 했는데 원하는 답을 찾기 어려워서 질문 남깁니다! 감사합니다~
-
해결됨남박사의 파이썬으로 실전 웹사이트 만들기
(회원가입 비밀번호 일치하지 않음 및 flask_wtf.csrf 오류) 보안강화 - 로그인 정보 암호화 하고 CSRF Protect 구현하기 강의중 오류..
남박사님 안녕하세요 이번 보안강화 - 로그인정보 암호화 강좌 진행중에.. 오류를 해결하지 못해서 질문 드립니다. 우선 내용은 이렇습니다. 1. werkzeug.security 설정진행중 패스워드 보안작업중에 "pass": hash_password(pass1) 로 변경후에 회원가입을 하면 비밀번호가 일치하지 않습니다라고 계속 나오더라구요.. 몽고db에서 내용지워도 마찬가지 입니다. 그전에는 정상적으로 로그인이 되었습니다. 2. flask_wtf.csrf import CSRFProtect 를 적용하는데 pip install flask-wtf를 설치해도 오류가 나오더라구요.. 문제 사진 1번 2번 3번 4번 5번 코드 - board.py- from main import * from flask import Blueprint bluerprint = Blueprint("member", __name__, url_prefix="/member") # @csrf.exempt @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": hash_password(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 check_password(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")) 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')) ---------------------------------------------------------------------------------------------------- - common.py - from functools import wraps from main import session, redirect, request, url_for, ALLOWED_EXTENSIONS from string import digits, ascii_uppercase, ascii_lowercase import random import re import os from werkzeug.security import generate_password_hash, check_password_hash def hash_password(password): return generate_password_hash(password) def check_password(hashed_password, user_password): return check_password_hash(hashed_password, user_password) def check_filename(filname): reg = re.compile("[^A-Za-z0-9_.가-힝-]") for s in os.path.sep, os.path.altsep: if s: filname = filname.replace(s, ' ') filname = str(reg.sub('', '_'.join(filname.split()))).strip("._") return filname def allowed_file(filename): return "." in filename and filename.rsplit(".", 1)[1] in ALLOWED_EXTENSIONS def rand_generator(length=8): char = ascii_lowercase + ascii_uppercase + digits return "".join(random.sample(char, length)) 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.member_login", next_url=request.url)) return f(*args, **kwargs) return decorated_function ---------------------------------------------------------------------------------------------------- - __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 # from flask_wtf.csrf import CSRFProtect import math import time import os 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) BOARD_IMAGE_PATH = "C:\\python\\images" BOARD_ATTACH_FILE_PATH = "C:\\python\\uploads" ALLOWED_EXTENSIONS =set(["txt", "pdf", "png", "jpg", "jpeg", "gif"]) app.config["BOARD_IMAGE_PATH"] = BOARD_IMAGE_PATH app.config["BOARD_ATTACH_FILE_PATH"] = BOARD_ATTACH_FILE_PATH app.config["MAX-CONTENT_LENGTH"] = 15 * 1024 * 1024 if not os.path.exists(app.config["BOARD_IMAGE_PATH"]): os.mkdir(app.config["BOARD_IMAGE_PATH"]) if not os.path.exists(app.config["BOARD_ATTACH_FILE_PATH"]): os.mkdir(app.config["BOARD_ATTACH_FILE_PATH"]) from .common import login_required, allowed_file, rand_generator, check_filename, hash_password, check_password from .filter import format_datetime from . import board from . import member app.register_blueprint(board.bluerprint) app.register_blueprint(member.bluerprint) ---------------------------------------------------------------------------------------------------- -member.py- from main import * from flask import Blueprint bluerprint = Blueprint("member", __name__, url_prefix="/member") # @csrf.exempt @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": hash_password(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 check_password(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")) 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')) ---------------------------------------------------------------------------------------------------- - write.html - {% extends "main.html" %} {% block contents %} <script> $(document).ready(function() { $("#summernote").summernote({ height: 300, minHeight: null, maxHeight: null, lang: "ko-KR", popover: { image:[], link:[], air:[] }, callbacks: { onImageUpload: function(image) { for(var i = 0; i < image.length; i++) { uploadImage(image[i]); } } } }); }); function uploadImage(image) { var data = new FormData(); data.append("image", image); var csrf_token = "{{csrf_token()}}"; $.ajaxSetup({ beforeSend: function(x, s) { if(!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(s.type)) { x.setRequestHeader("X-CSRFToken", csrf_token) } } }); $.ajax({ url: "{{url_for('board.upload_image')}}", cache: false, contentType: false, processData: false, data: data, type:"post", success: function(url) { var image = $("<img>").attr("src",url).css('max-width', "900px"); $("#summernote").summernote("insertNode",image[0]); }, error: function(data) { console.log(data); alert(data); } }); } </script> <script> function checkForm() { if ($.trim($("#title").val()) == "") { alert("제목을 입력하세요"); $("#title").focus(); return false; } if ($.trim($("#summernote").val()) == "") { alert("내용을 입력하세요"); $("#summernote").focus(); return false; } } </script> <div style="padding: 50px 50px 50px 50px;"> <form name="form" method="post" action="{{url_for('board.board_write')}}" onsubmit="return checkForm()"enctype="multipart/form-data"> <input type="hidden" name="csrf_token" value="{{csrf_token()}}"> <div class="form-group"> <label for="name">작성자</label> <input class="form-control" id="name" type="text" name="name" value="{{session['name']}}" readonly> </div> <div class="form-group"> <label for="title">제목</label> <input class="form-control" type="text" name="title" id="title" placeholder="제목을 입력하세요"/> </div> <div class="form-group"> <label for="contents">내용</label> <textarea rows="8" class="form-control" name="contents" id="summernote" placeholder="내용을 입력하세요"></textarea> </div> <div class="custom-file"> <input class="custom-file-input" id="customFile" type="file" name="attachfile"> <label class="custom-file-label" for="customFile">파일선택</label> </div> <div class="text-center"><input class="btn btn-primary" type="submit" value="작성하기"></div> </form> </div> {% endblock %} ---------------------------------------------------------------------------------------------------- - edit.html - {% extends "main.html" %} {% block contents %} <script> $(document).ready(function() { $("#summernote").summernote({ height: 300, minHeight: null, maxHeight: null, lang: "ko-KR", popover: { image:[], link:[], air:[] }, callbacks: { onImageUpload: function(image) { for(var i = 0; i < image.length; i++) { uploadImage(image[i]); } } } }); }); function uploadImage(image) { var data = new FormData(); data.append("image", image); var csrf_token = "{{csrf_token()}}"; $.ajaxSetup({ beforeSend: function(x, s) { if(!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(s.type)) { x.setRequestHeader("X-CSRFToken", csrf_token) } } }); $.ajax({ url: "{{url_for('board.upload_image')}}", cache: false, contentType: false, processData: false, data: data, type:"post", success: function(url) { var image = $("<img>").attr("src",url).css('max-width', "900px"); $("#summernote").summernote("insertNode",image[0]); }, error: function(data) { console.log(data); alert(data); } }); } </script> <div style="padding: 50px 50px 50px 50px;"> <form name="form" method="post" action="{{url_for('board.board_edit', idx=data._id)}}" enctype="multipart/form-data"> <input type="hidden" name="csrf_token" value="{{csrf_token()}}"> <div class="form-group"> <label for="name">작성자</label> <input class="form-control" type="text" name="name" value="{{session['name']}}" readonly /> </div> <div class="form-group"> <label for="title">제목</label> <input class="form-control" type="text" name="title" value={{data.title}}> </div> {% if data.attachfile %} <div class="form-check text-right"> <input type="checkbox" class="form-check-input" id="deleteoldfile" name="deleteoldfile"> <label class="form-check-label" for="deleteoldfile">첨부파일 삭제 ({{data.attachfile}})</label> </div> {% endif %} <div class="form-group"> <label for="contents">내용</label> <textarea rows="8" class="form-control" name="contents" id="summernote">{{data.contents}}</textarea> </div> <div class="custom-file"> <input class="custom-file-input" id="customFile" type="file" name="attachfile"> <label class="custom-file-label" for="customFile">파일선택</label> </div> <div class="text-center"><input class="btn btn-primary" type="submit" value="수정하기"/></div> </form> </div> {% endblock %} ---------------------------------------------------------------------------------------------------- - join.html - {% extends "main.html" %} {% block contents %} <script> function checkForm() { if ($.trim($("#name").val()) == "") { alert("이름을 입력하세요"); $("#name").focus(); return false; } if ($.trim($("#email").val()) == "") { alert("이메일을 입력하세요"); $("#email").focus(); return false; } if (!validateEmail($.trim($("#email").val()))) { alert("이메일 유효성이 올바르지 않습니다."); $("#email").focus(); return false; } if ($.trim($("#pass1").val()) == "") { alert("비밀번호를 입력하세요"); $("#pass1").focus(); return false; } if ($.trim($("#pass2").val()) == "") { alert("비밀번호를 입력하세요"); $("#pass2").focus(); return false; } if($.trim($("#pass1").val()) != $.trim($("#pass2").val())) { alert("비밀번호가 일치하지 않습니다."); $("#pass2").select().focus(); return false; } } </script> <div style="padding: 50px 50px 50px 50px;"> <form name="form" action="{{url_for('member.member_join')}}" method="POST" onsubmit="return checkForm()"> <input type="hidden" name="csrf_token" value="{{csrf_token()}}"> <div class="form-group"> <label for="name">이름</label> <input class="form-control" type="text" name="name" id="name"> </div> <div class="form-group"> <label for="name">이메일</label> <input class="form-control" type="text" name="email" id="email"> </div> <div class="form-group"> <label for="name">비밀번호</label> <input class="form-control" type="password" name="pass1" id="pass1"> </div> <div class="form-group"> <label for="name">비밀번호 확인</label> <input class="form-control" type="password" name="pass2" id="pass2"> </div> <div class="text-center"><input class="btn btn-primary" type="submit" value="가입하기" /></div> </form> </div> {% endblock %} ---------------------------------------------------------------------------------------------------- - login.html - {% extends "main.html" %} {% block contents %} <script> function checkForm() { if ($.trim($("#email").val()) == "") { alert("이메일을 입력하세요"); $("#email").focus(); return false; } if (!validateEmail($.trim($("#email").val()))) { alert("이메일 유효성이 올바르지 않습니다."); $("#email").focus(); return false; } if ($.trim($("#pass").val()) == "") { alert("비밀번호를 입력하세요"); $("#pass").focus(); return false; } return true; } </script> <div style="padding: 50px 50px 50px 50px;"> <form name="form" action="{{url_for('member.member_login')}}" method="POST" onsubmit="return checkForm()"> <input type="hidden" name="csrf_token" value="{{csrf_token()}}"> {% if next_url %} <input type="hidden" name="next_url" value="{{next_url}}" /> {% endif %} <div class="form-group"> <label for="email">이메일</label> <input class="form-control" type="text" name="email" id="email"> </div> <div class="form-group"> <label for="pass">비밀번호</label> <input class="form-control" type="password" name="pass" id="pass"> </div> <div class="text-center"><input type="submit" class="btn btn-primary" value="로그인"></div> </form> </div> {% endblock %} ---------------------------------------------------------------------------------------------------- - view.html - {% extends "main.html" %} {% block contents %} <div style="padding: 50px 50px 50px 50px;"> <table class="table table-bordered"> <tbody> <tr> <td colspan="2">{{result.title}}</td> </tr> <tr> <td>{{result.name}}</td> <td class="text-right">{{result.pubdate|formatdatetime}}</td> </tr> {% if result.attachfile %} <tr> <td>첨부파일</td> <td><a href="{{url_for('board.board_files', filename=result.attachfile)}}">{{result.attachfile}}</a></td> </tr> {% endif %} <tr> <td colspan="2"><div style="min-height: 200px;"></div>{% autoescape false %}{{result.contents}}{% endautoescape %}</td> </tr> </tbody> </table> <a class="btn btn-primary" href="{{url_for('board.lists', page=page, search=search, keyword=keyword)}}">리스트</a> {% if session["id"] == result.writer_id %} <a class="btn btn-danger float-right ml-2" href="{{url_for('board.board_delete', idx=result.id)}}">글삭제</a> <a class="btn btn-warning float-right" href="{{url_for('board.board_edit', idx=result.id)}}">글수정</a> {% endif %} </div> {% endblock %} ----------------------------------------------------------------------------------------------------
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원 중복처리 질문입니다.
@PostMapping("/new") public String join (@Valid MemberDTO form, BindingResult result) { if (result.hasErrors()) { return "Oops.."; } Address address = new Address(form.getCity(), form.getStreet(), form.getZipCode()); Member member = new Member(); member.setName(form.getName()); member.setAddress(address); try { memberService.join(member); } catch (IllegalStateException e) { return "회원 중복"; } return "Success"; } 회원중복 처리에 대해선 얘기가 없으셔서 혼자 생각해봐서 구현해봤는데요 실무에서도 보통 저렇게 컨트롤러에서 예외를 잡나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버
어나니머스 타입
// LINQ 버전 레벨 2배 { var players = from p in _players where p.ClassType == ClassType.Knight && p.Level >= 50 orderby p.Level select new { Hp = p.Hp, Level = p.Level * 2 }; Console.WriteLine(); foreach (Player p in players) // 구문오류 { Console.WriteLine($"직업 : {p.classType}, 레벨 : {p.Level}, Hp : {p.Hp}, 공격력 : {p.Attack}"); } } 14:40 쯤에 select에서 new를 이용하여 레벨을 2배인 상태로 추출이 가능하다고 해서 직접 확인해보려 하니까 잘 안되네요 ㅠㅠ foreach문에서 구문오류를 확인해보니 'anonymous type: int Hp, int Level형식을 Player형식으로 변환할 수 없다'고 뜨네요. Player형을 쓰면 안된다는 것 같은데. 그러면 어떤 자료형을 써야하는지 감이 안잡힙니다.. Q1) foreach문의 코드를 어떻게 고쳐야 anonymous type을 출력할 수 있을까요? 레벨이 2배로 된 것을 눈으로 확인하고 싶습니다!
-
미해결UX/UI 시작하기 : Adobe XD 입문(Inflearn Original)
강의 내용도 너무 좋은데 혹시 연습할 만한 예제들을 올려주실 수 있을까요?
강의를 보고 따라하고 있습니다 그런데 몇가지 예제는 그냥 눈으로 볼 수 밖에 없는 몇가지가 있더라고요~ 강의 내용이 너무 좋기는 한데 예제파일도 혹시 올려주시면 감사할 것 같습니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
패키지 변경후에도 전 패키지가 실행됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 현재 메시지 부분을 공부하려고 하는데 파일을 실행하게 되면 전 패키지들이 실행이 됩니다. 크롬에서 8080으로 들어가게 되면 텍스트 관련 부분이 뜨게 되고 웨일을 가게 되면 타임리프 관련 창이 뜨게 되는데 현재 메시지 패키지를 공부하려고 하는데 포트 연결시 계속 전 패키지 파일이 연결이 됩니다. 무엇이 문제인지 잘 모르겠습니다. 아래와 같은 상황에서 링크를 누르면 이동은 되지 않습니다. (처음에는 무엇이 문제인지 몰라서 크롬으로 진행하다가 웨일로 하게 된건데 아래와 같은 상황이 되었습니다.) 인텔리제이를 꺼도 http8080으로 들어가면 저런 상황이 됩니다. 8080을 누가 쓰는지 확인 해보니 tnslsnr.exe라는 파일이 쓰고 있었습니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스프링 어노테이션과 mysql 테이블과의 우선순위 질문
안녕하세요, 강의를 듣다가 저는 데이터 베이스에서 먼저 테이블을 안전하게 생성한 후에 스프링에서 엔티티 클래스를 작성할 때 알맞은 어노테이션을 붙이는 식으로 구현하고 있습니다. 이때 실수로 데이터베이스의 해당 테이블에서는 기본키 전략으로 AI를 하지 않은 바람에 @Generatedvalue 를 사용했을 때 에러가 발생했는데, 보통 어노테이션을 통해 발생되는 하이버네이트 쿼리보다 mysql에서 기본으로 생성된 테이블 전략이 더 우선순위를 가진다고 볼 수 있나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 등록중 오류가 발생합니다
회원은 db에 잘 저장이 되는 상황에서 상품등록은 오류가 발생하여 질문합니다. 2022-04-22 21:35:40.173 ERROR 9460 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Unknown entity: com.sun.proxy.$Proxy111; nested exception is java.lang.IllegalArgumentException: Unknown entity: com.sun.proxy.$Proxy111] with root cause java.lang.IllegalArgumentException: Unknown entity: com.sun.proxy.$Proxy111 이런 오류가 발생합니다
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
예제문제가 안열려요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
부트스트랩 CSS 적용
안녕하세요! 선생님:) 현재 강의에서 CSS 적용이 안돼서 부트스트랩 파일을 /static 이 아닌 /templates 안에 넣었더니 적용이 됩니다! static에 넣었을 경우 인식이 안되는 경우는 왜일까요?
-
미해결Svelte.js SPA 영화 검색 프로젝트
강사님 질문인데요
npx degit sveltejs/template my-svelte-project이렇게 해서 svelte를 설치하면 롤업이 있던데 이게 스노우팩 대체로 써도 되나요?그리고 vite랑 롤업 둘중에 뭐가 더 현시점에서 사용을 추천하시나요?