묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨웹 게임을 만들며 배우는 React
useEffect의 두 번째 배열인자에 변하는 값을 넣으면 useEffect안의 코드가 재실행되면서 두번째 배열에 넣은 인자값을 계속 추적하게 되나요?
useEffect(() => { interval.current = setInterval(changeHand, 1000) return () => { clearInterval(interval.current) } }, []) 했을때 가위바위보가 제대로 실행이 안되고 useEffect(() => { interval.current = setInterval(changeHand, 1000) return () => { clearInterval(interval.current) } }, [imgCoord]) 했을때는 가위바위보가 제대로 실행되는 이유가 imgCoord 값이 변경될때 useEffect안에있는 코드들이 다시 실행되어서 인건 이해했습니다. 그렇다면 두 번째 인자 배열에 imgCoord값을 넣으면 useEffect안의 코드인 interval.current = setInterval(changeHand, 1000)가 재실행되어서 imgCoord값이 바뀔때 imgCoord값을 추적하게 되니까 imgCoord값이 '바위' -> '가위' -> '보' -> '바위' 이렇게 바뀔 수 있는 건가요?
-
해결됨만들면서 배우는 리액트 : 기초
고양이 이미지들 로딩이 안 됩니다!
502 Bad Gateway 가 뜨면서 이미지 로딩이 안 됩니다~ 일단은 다른 이미지 쓰면서 강의 듣고 있는데 고양이들 이제 못 보는 걸까요? 😿
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
익명화살표함수에 대해 질문드리고 싶습니다
강사님 안녕하세요익명 화살표 함수를 선언하자마자 실행할 때 이렇게 하면 실행이 안되고 (()=>{ console.log( "Hello\n" )})이렇게 한번 더 ( ) 를 붙여주면 실행이 되었습니다(()=>{ console.log( "Hello\n" )})() 혹시 이 원리와 람다가 관련이 있는지 질문드리고 싶습니다
-
해결됨데이터 사이언스 입문 부트캠프
KESS 다운로드 어디서 할 수 있나요?
이 과정에서는 엑셀, KESS기반으로 진행하신다고 하셨는데 현재 KESS를 다운받을 수가 없습니다 저는 현재 2019엑셀을 쓰고 있는데, 그렇다면 KESS없이 본 과정을 수강할 수 있나요...?
-
미해결남박사의 파이썬으로 실전 웹사이트 만들기
글 작성 폼에 HTML 에디터 기능 추가하기 이미지 저장 오류..ㅠ
남박사님 계속 질문해서 죄송합니다..ㅠ 하다보니까 계속 오류가 나네요.... 이미지 업로드 관련해서 ajax 부분에서 오류가 나는것은 영상을 따라 하면서 해봐도 계속 같은 오류가 나와서 답답해서 질문드립니다. - 오류1 - 영상대로 수정하고 적용해서 똑같은 오류가 나오더라구요.. 그래서 이미지 업로드창 눌러서 해봤는데 비슷한 오류가 나옵니다. -오류2- -오류3- - 코드- -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); $.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()"> <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" type="text" name="contents" id="summernote" placeholder="내용을 입력하세요"></textarea> </div> <div class="text-center"><input class="btn btn-primary" type="submit" value="작성하기"></div> </form> </div> {% endblock %} --------------------------------------------------------------------------------------- -viev.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> <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 %} --------------------------------------------------------------------------------------------------- -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> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript"></script> <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script> <!-- include summernote css/js --> <link href="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote.min.js"></script> <script> function validateEmail(email) { var pattern = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/; return pattern.test(email); } </script> {% with messages = get_flashed_messages() %} {% if messages %} <script> alert('{{messages[-1]}}'); </script> {% endif %} {% endwith %} </head> <body> <div class="containter"> {% include "menu.html" %} {% block contents %} {% endblock %} </div> </body> </html> -------------------------------------------------------------------------------------------------- -board.py- from main import * from flask import Blueprint, send_from_directory from flask import send_from_directory bluerprint = Blueprint("board", __name__, url_prefix="/board") @bluerprint.route("/upload_image", methods=["POST"]) def upload_image(): if request.method == "POST": file = request.files["image"] if file and allowed_file(file.filename): filename = "{}.jpg".format(rand_generator()) savefilepath = os.path.join(app.config["BOARD_IMAGE_PATH"], filename) file.save(savefilepath) return url_for("board.board_images", filename=filename) @bluerprint.route("/images/<filename>") def board_images(filename): return send_from_directory(app.config["BOARD_IMAGE_PATH"], filename) @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 is 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")) --------------------------------------------------------------------------------- -__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 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" ALLOWED_EXTENSIONS =set(["txt", "pdf", "png", "jpg", "jpeg", "gif"]) app.config["BOARD_IMAGE_PATH"] = BOARD_IMAGE_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"]) # 아래의 파일들에서 main 의 app 에 접근을 해야하니 # 아래 import 위에 app 가 선언되어야 합니다. from .common import login_required, allowed_file, rand_generator from .filter import format_datetime # 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)
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
commit 관련 질문
안녕하세요 강사님 플러시 강의를 보며 트랜잭션이라는 작업단위와 커밋이 매우 중요하다는 것을 알게 되었는데요, 저는 지금까지 MyBatis만 사용하면서 commit이나 트랜잭션을 전혀 신경쓰지 않았다는 것을 알고 부끄러워졌습니다. MyBatis에서는 insert/update/delete 작업 후 따로 커밋을 하지 않아도 db에 반영되는 것 같던데 이건 MyBatis가 알아서 커밋을 해주는 건가요..?? 항상 좋은 강의 감사하고 요런 다소 한심한 질문을 남기게 되서 죄송합니다..!
-
미해결Vue.js + TypeScript 완벽 가이드
깃헙 권한 요청드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 인프런 아이디 : zaar625인프런 이메일 : zaar625@naver.com깃헙 아이디 : zaar625깃헙 Username : zaar625
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-A 질문드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 처음에 제가 짠 코드가 vscode에서는 테스트케이스가 다 맞게 뜨는데 자꾸 백준에 제출하면 틀렸다고 뜨길래 강사님 코드를 보니 제 코드와 다른 부분이 cin과 cout 대신 scanf, printf 밖에 없어서 cin과 cout 대신 scanf와 printf로 바꿔서 제출했더니 정답 처리가 되었습니다. 입출력 싱크 맞추는 ios_base ~ 를 작성했는데도 두개를 혼용해서 쓰면 안되는건가요?? 아래는 제가 기존에 제출했던 코드입니다 #include <bits/stdc++.h> using namespace std; int n, m; int miro[101][101], visited[101][101]; int now_x=0, now_y=0, x, y; int dy[4] = {-1,0,1,0}, dx[4] = {0,1,0,-1}; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); //input cin>>n>>m; for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { scanf("%1d", &miro[i][j]); } } //bfs queue<pair<int, int>> q; visited[0][0]=1; q.push({0, 0}); //시작위치는 (0, 0) while(q.size()) { tie(y, x) = q.front(); q.pop(); for(int i=0; i<4; i++) { //동서남북에 1이 있는지 확인 int now_y = y+dy[i]; int now_x = x+dx[i]; if(now_y<0 || now_x<0 || now_y >=n || now_x>=m) { //미로 밖으로 벗어난 경우 건너뜀 continue; } if(miro[now_y][now_x]==0) { //0인 경우 건너뜀 continue; } if(visited[now_y][now_x]) { //이미 방문한 경우 건너뜀 continue; } visited[now_y][now_x] = visited[y][x]+1; //전보다 depth가 하나 증가 q.push({now_y, now_x}); //같은 depth를 가지는 애들이 큐에 들어가게 됨 } } cout<<visited[n-1][m-1]; return 0; }
-
미해결자바스크립트+jQuery 기초부터 실무까지 : 중급 Part.2
실습 - 속성값 설정 -ex04 실습 중 알게 된 내용 ( data(), attr() )
HTML문서를 불러올 때 각 요소에 있는 "data-something" 속성은 $jQuery 객체에 불러와 진다. $jQuery.data() 메서드로 추가하는 "data-something" 속성은 DOM 객체에 표시되지 않는다. $jQuery.attr() 메서드로 추가하는 "data-something" 속성은 DOM 객체에 표시된다 동적으로 attr()메서드를 사용해 속성 추가 시 브라우저 개발자 도구에서 속성이 생기는 것을 볼 수 있음). 문서를 불러온 후에 동적으로 만든 "data-something" 속성은 각 방법으로 불러올 수 있다. attr("data-somthing", "value") → attr() 메서드 사용 data("something", "value) → data() 메서드 사용 data() 를 통해 불러오는 값과 attr() 메서드를 사용해 불러오는 값은 자료형이 다르다. $target.data("flag") -> boolean 자료형 $target.attr("data-flag") -> String 자료형 참조: https://this-programmer.tistory.com/300 학우님들이 보기에 오류가 있으면 알려주시기 바랍니다. 감사합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
혹시 제 프로젝트에는 어떤 모델을 사용하면 좋을지 한번 봐 주실수 있을까요?
제 질문이 해당강좌에 적합할지는 잘 모르겠으나 , 교수님의 조언이 꼭 필요하여 질문 드립니다 먼저 제 프로젝트의 경우, 이미지를 입력한 뒤 전처리 과정 ,특히 임계값을 조정 과정을 거쳐야 특정 객체를 예측 할 수 있는데요 이렇게 객체가 인식되는 임계값과 오츠의 알고리즘을 사용해서 나온값 과는 차이가 큽니다 . 예를들어 이미지가 발견되는 임계값의 범위는 40~45 라면 오츠알고리즘을 통한 값은 75입니다 따라서 현재 해당 임계값의 범위를 찾기 위해 1~255까지모두 넣어 확인하고 있으며 알고리즘의 속도는 이미지당 15초 입니다 프로세스가 너무 느리게 때문에, 저는 이미지의 임계값을 찾는 연산에 딥러닝을 사용하고 싶습니다 현재 이렇게 이루어지고 있는 프로세스를 이미지 인풋 - > 임계값추출 -> 해당임계값으로 임계처리 - > 객체 추출 (YOLOv5) 아래와 같이 변경하고 싶은데요 이미지 인풋 - > 임계값추출 (딥러닝) -> 해당임계값으로 임계처리 - > 객체 추출(YOLOv5) 특정 이미지를 입력했을때 그 이미지에 적합한 값을 찾아주는 알고리즘을 설계하고자 할 때 어떤 딥러닝 알고리즘을 사용해야 할지 전혀 모르겠습니다 인풋 데이터 (이미지) , 아웃풋데이터(적정임계값) 데이터가 존재하니 이걸 딥러닝으로 처리할수 있지 않을까 하는 생각입니다.... 혹시 저와같은 경우에 어떤 알고리즘이 적합할지 교수님의 조언이 꼭 필요합니다 . 조언을 구할때마다 남겨 주신 답변들 덕에 프로젝트의 방향을 잡을수 있었습니다 항상 감사드립니다.
-
미해결[PyTorch] 쉽고 빠르게 배우는 GAN
DCGAN Generator 질문
안녕하세요. DCGAN Generator 관련해서 질문이 있습니다. 제너레이터에서 이런 구문이 있는데, Discriminator에서 이미 output 계산한것이 있음에도 다시 작업하는 이유가 궁금합니다. 추가로 주석에서 D를 업데이트해서 다시한다는데 업데이트와 output을 다시 계산하는 것의 의미를 모르겠네요. # Since we just updated D, perform another forward pass of all-fake batch through D output = netD(fake).view(-1) 그리고 추가로, Discriminator에서 output은 .detach()가 있는데 Generator에는 왜 없는건가요? output = netD(fake.detach()).view(-1)
-
미해결타입 파이썬! 올바른 class 사용법과 객체지향 프로그래밍
클래스 상속 순서? 질문
class Siri가 상속을 받을 때, class Siri(Robot[ARM, HEAD], Generic[ARM, HEAD]): pass 는 되는데, class Siri( Generic[ARM, HEAD], Robot[ARM, HEAD]): pass 위는 cannot create consistent method ordering에러를 내뱉네요. 상속 순서가 의미하는 것이 뭔가요? mro 찍어보니까 이렇게 나오네요. print(Siri.mro()) [<class '__main__.Siri'>, <class '__main__.Robot'>, <class 'typing.Generic'>, <class 'object'>]
-
미해결React 기반 Gatsby로 기술 블로그 개발하기
index.tsx오류
경로도 맞게 잘 적었는데 왜 안되는지 모르겠습니다
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
아코디언 슬라이드 질문드립니다!
안녕하세요 선생님 ! 선생님의 강의를 정말 잘 듣고 있는 한 학생입니다. 다름이 아니라 아코디언 컨텐츠 만드는 부분을 학습하고, 혼자 유형을 바꿔서 밀리의 서재 홈페이지 Q&A란을 만들고 있었습니다. <html + css 현재결과물> html과 script 부분 캡처본 올려드립니다. <html> 보시는 것 처럼 예제와 좀 다르게 스타일 형식이 title과 desc가 한 박스에 담겨있는 형태여서, accordian > content > title, desc 이렇게 묶었습니다. < js > 하지만 이 때문에 siblings 요소 안에 넣은 메소드들이 실행이 안되고 있습니다. (addclass와 slidedown은 잘 실행됩니다.) 어떤 요소를 써야지 removeClass와 slideUp이 실행될까요... 바쁘시겠지만 답변 부탁드립니다. ps. 수업 정말 잘 듣고 있습니다! 정말 감사드립니다. 취업 후 수강평 꼭 남기겠습니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
27:10 분쯤에 "정확하게 컬렉션은 프록시는 아닌데.." 관한 질문입니다.
select t from Team t join fetch t.members m 을 할시에List<Members> 컬렉션에는 프록시들로 채워지는게 아닌가요? 디버깅을 해보고 싶지만 디버깅 하는 순간 해당 variable을 조회하기에 바로 db에서 진짜를 가져오는 것 같습니다. (Lazy임에도 불구하고) 제가 이해한바로는 위의 쿼리 실행 직후에는 List<Members>에 프록시 객체들로 채워질 것 같은데 맞나요? 아니라면 뭘 공부해보면 좋을까요..?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
out hit으로 복사값을 전달하는 이유가 참조를 하면 불러온 hit의 값을 변경할 수 있어서 그런건가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
2차원배열을 받는다면 타이핑을 다르게 해야 하지 않나요?
const { data: chatData, mutate: mutateChat, setSize } = useSWRInfinite<IDM[]>( (index) => `/api/workspaces/${workspace}/dms/${id}/chats?perPage=20&page=${index + 1}`, fetcher, ); useSWRInfinite가 2차원배열로 데이터를 받는다고 하셨는데 그러면 타이핑을 IDM[][]로 해야 하지 않나요?
-
해결됨애플 웹사이트 인터랙션 클론!
scroll-section 1 에서 2로 넘어가는 부분(section 2의 시작점)에서,,
안녕하세요. main-add.js에서 코드 붙여넣고 애니메이션은 정상적으로 작동하는데요. 한 가지 신경 쓰이는 이슈가 발생했는데 원인을 모르겠습니다. scroll-section 1 에서 2로 넘어가는 부분(normal scroll 끝나는 부분, section 2의 시작점)에서 섹션2의 desc-message b, desc-message c (pin 메시지 부분)가 처음 한번만 (새로고침 하고 스크롤 할 때) 빠르게 나왔다가 사라집니다. 너무 찰나의 순간이라서 스크린샷도 찍을 수가 없어요. js 코드가 좀 어수선해보여서 정리 후 다시 업로드 하겠습니다;; * 자바스크립트 포맷 정리하고 css 추가 업로드 하였습니다. +추가로 prettier 같은 포매터 사용 때문에 강사님이 작성하시는 것보다 js의 가독성이 떨어지는 것 같은데 강사님은 따로 포매터 사용은 안하시나요?
-
미해결그로스해킹 - 데이터와 실험을 통해 성장하는 서비스를 만드는 방법
강사님 데이터를 활용한 그로스해킹 프로세스에 관해 질문있습니다.
강사님 안녕하세요. 강의를 통해 자기개발해나가며, 데이터를 활용한 마케팅 내부에서 직무 전환을 목표로 하고 있는 상황입니다. 그 과정에서 제가 생각하고 이해한 내용이 맞는지, 이미 관련 직무로 현업에서 종사하시는 강사님께 여쭙고자합니다. 제가 공부해가며 이해한 내용입니다. (아래 과정에서 활용하는 툴은 앱 서비스 기업을 전제로 하여 작성하였습니다.) 1. 어트리뷰션 툴 활용한 데이터 수집 - Amplitude, Appsflyer 2. 특정 문제를 해결하기 위한 원하는 데이터 추출> - 데이터 활용을 위한 정제 역할로서 SQL을 활용. (SQLD 자격증을 취득하며 공부한 지식을 최대한 활용하고 싶습니다.) 잠재 고객의 특성 파악, 신규 고객의 유입 분석, 사용자의 행동 분석 등을 진행 3. 추출한 데이터를 데이터 통합 - 데이터 전처리 과정 - 태블로 4. 데이터 시각화 - 태블로 *윗 과정중 추출과 통합을 합쳐 분석 과정으로 보았습니다. 즉, 정리해보면 수집 > 분석 > 시각화가 되겠군요. Q. 위에 정리한 저의 생각이 제대로 이해한 것이 맞는지요. Q. 실제 현업에서 이러한 과정으로 진행이 되어지는지 궁금합니다. Q. 진행된다면 위 모든 과정에서 필요한 지식과 툴 활용능력이 한 명의 인원에게 필요한 역량이며, 실제로 한 명의 인원으로 진행되고 있는지 궁금합니다.(리드 포지션 포함) 소중한 시간 내주셔서 감사합니다 ㅎ
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
pm2 질문입니다.
nest에 pm2 사용 중입니다. 로그에 텍스트 색 비활성화 하는 방법 알고 싶습니다. tail 로 볼 때는 좋은데 에디터로 보면 ^[[32 ^[[39 같은 문자들이 섞여 있어 로그 보기가 힘듭니다.