묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
ERD 대신 UML
ERD에 대한 글을 보다가 요즘에는 ERD를 안그리고 UML로 대체한다는 글을 봤는데프로젝트 초기에 UML을 다 그리고 시작하기에는 너무 변경 사항이 많아질 것 같은데요.ERD 대신 UML로 대체하는 회사에서 근무하시는 분들은 어느시점에 어느정도의 UML을 그리는지 궁금합니다..
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
Premium 문의…!
선생님 어제 코드 감사합니다 아쉽게도 많이 배워야할것같아서 ㅠㅜ 혹시 제가 빠트린 코드가 있을까요 ? 아니면 다른부분 확인할 사항이 있을까요? 작성한 코드 올려드립니다nodebird-api -> middlewares-> index.jsconst jwt = require("jsonwebtoken"); //토큰을 검사하는 미들웨어 const rateLimit = require("express-rate-limit"); const User = require("../models/user"); const { Domain } = require("../models/"); const cors = require("cors"); exports.isLoggedIn = (req, res, next) => { if (req.isAuthenticated()) { next(); } else { res.status(403).send("로그인 필요"); } }; exports.isNotLoggedIn = (req, res, next) => { if (!req.isAuthenticated()) { // 패스포트 통해서 로그인 안했으면 next(); } else { const message = encodeURIComponent("로그인한 상태입니다."); res.redirect(`/?error=${message}`); //localhost:8001? error=메시지 } }; //토근검사 exports.verifyToken = (req, res, next) => { try { res.locals.decoded = jwt.verify( req.headers.authorization, process.env.JWT_SECRET ); return next(); } catch (error) { if (error.name === "TokenExpiredError") { return res.status(419).json({ code: 419, message: "토큰이 만료되었습니다.", }); } return res.status(401).json({ code: 401, message: "유효하지 않은 토큰입니다.", }); } }; const limiter = rateLimit({ widowMs: 60 * 1000, max: (req, res) => { if (req.user?.Domains[0]?.type === "premium") { return 10; } return 1; }, handler(req, res) { res.status(this.statusCode).json({ code: this.statusCode, message: `1분에 ${ req.user?.Domains[0]?.type === "premium" ? "열" : "한" } 번만 요청 할 수 있습니다...`, }); }, }); exports.apiLimiter = async (req, res, next) => { let user; if (res.locals.decoded) { user = await User.findOne({ where: { id: res.locals.decoded.id }, include: { model: Domain }, }); } req.user = user; limiter(req, res, next); }; exports.deprecated = (req, res) => { res.status(410).json({ code: 410, message: "새로운 버전이 나왔습니다. 새로운 버전을 사용하세요", }); }; exports.corsWhenDomainMatches = async (req, res, next) => { const domain = await Domain.findOne({ where: { host: new URL(req.get("origin")).host }, }); if (domain) { cors({ origin: true, Credential: true, })(req, res, next); //미들웨어 확장패턴 } else { next(); } }; nodebird-api -> routes -> v2.jsconst express = require("express"); const { verifyToken, apiLimiter, corsWhenDomainMatches, } = require("../middlewares"); const { createToken, tokenTest, getMyPosts, getPostsByHashtag, } = require("../controllers/v2"); const cors = require("cors"); const router = express.Router(); router.use(corsWhenDomainMatches); router.use( cors({ origin: true, credentials: true, //쿠키요청 }) ); router.post("/token", apiLimiter, createToken); router.get("/test", verifyToken, apiLimiter, tokenTest); router.get("/posts/my", verifyToken, apiLimiter, getMyPosts); // GET /v2/posts/hashtag/:title router.get("/posts/hashtag/:title", verifyToken, apiLimiter, getPostsByHashtag); module.exports = router;
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
결과값이 안뜹니다.
이런식으로 결과값이 안뜨는데 어디가 잘못된건지 궁금합니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 관련 질문입니다.
@Entity @Table(name = "ORDERS") @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "order_id", nullable = false) private Long id; @ManyToOne(fetch = FetchType.LAZY) //연관관계 주인 @JoinColumn(name = "user_id") private User user; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true) private List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "delivery_id") private Delivery delivery; //배송정보 @Enumerated(EnumType.STRING) private OrderStatus status; //ORDER, CANCEL private LocalDateTime orderDate;// 주문 날짜 public Order(User user) { this.user = user; } @Builder public Order(User user, Delivery delivery, OrderStatus status, LocalDateTime orderDate) { this.user = user; this.delivery = delivery; this.status = status; this.orderDate = orderDate; } //--- 양방향 연관관계 편의 메서드 ------// 편의메서드는 컨트롤 하는 쪽에 만들어주면 됨 // 다 쪽이 연관관계 주인으로 값 의 변경사항은 주인쪽에서 함 // 다 쪽이 set // 일쪽이 add public void setUser(User user) { this.user = user; user.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); } public void SetDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); } }중 public void SetDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); } 에서 연관관계 주인은 order 이면 delivery.setOrder(this); 해도 변경사항이 데이터베이스에 반영이 안되는 것 아냐?이것도 setUser() 와 동일하게 delivery.getOrder().add(this); 해야하는 거 아닌가요?? 헷갈리는게 연관관계 주인쪽에서만 변경사항이 데이터베이스에 반영되는것으로 알고 있는데 이 말의 정확한 예시가 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-b질문입니다.
2-b질문입니다.1.2분 29초에 y가 가로이고 x가 세로라고 하셨는데 그걸 어떻게 알아요?2.사진에서 n이 10이고 m이 8로 받아져있는데요. 왜 y가 10까지 돌아야 하는데 왜 8에서 멈추나요?import sys sys.stdin = open('input.txt', 'r') from collections import deque testcase=int(input()) n,m,k=map(int,input().split()) # print(n,m,k) # grid=[list(map(int,input().split())) for _ in range(m)] grid2=[[0]*n for _ in range(m)] visited=[[0]*n for _ in range(m)] for _ in range(k): x,y=map(int,input().split()) grid2[y][x]=1 # for i in range(m): # print(grid2[i]) dxs=[-1,0,1,0] dys=[0,-1,0,1] Q=deque() def in_range(x,y): return 0<=x and 0<=y and x<n and y<n for y in range(n):#가로 for x in range(m):#세로 if grid2[y][x]==1: if visited[y][x]==0: Q.append((y,x)) visited[y][x] = 1 while Q: y,x=Q.popleft() for dx,dy in zip(dxs,dys): nx=dx+y ny=dy+x if not in_range(ny,nx): continue if visited[ny][nx]==1: continue if visited[ny][nx]==0 and grid2[ny][nx]==1: visited[ny][nx] =1 for i in range(m): print(visited[i])
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
엔드포인트에 아이피 할당은 어떻게 하나요
세션계층들어가니깐 엔드포인트들이 갑자기 다. 아이피가 부여되어있네요
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
섹션 5 퀴즈 질문
질문1:빨간색 부분에 width랑 background가 하얀글씨로 되어있는데적용이 된건가요? 그리고강의 중 이 부분에 예시가 없어서 레퍼런스 코드를 참고해버렸는데요질문2:transition:제일 앞에 선언할수 있는 속성이 무엇이 있는지질문3:transition-property:는 어떤식으로 사용하는지 궁금합니다
-
해결됨[개정판] 파이썬 머신러닝 완벽 가이드
Recursive Feature Elimination 관련 질문드립니다.
안녕하세요. 좋은 강의 잘 듣고 있습니다.<신규> Recursive Feature Elimination과 SelectFromModel 실습 강의 부분에서svc = SVC(kernel="linear") # REFCV로 Feature들을 반복적으로 제거해가면서 학습/평가 수행. rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(2), scoring='accuracy', verbose=2) rfecv.fit(X, y) print("Optimal number of features : %d" % rfecv.n_features_)이 코드를 돌렸을 때 나오는 verbosity가 잘 이해되지 않아서 질문드립니다.Fitting estimator with 25 features. Fitting estimator with 24 features. Fitting estimator with 23 features. Fitting estimator with 22 features. ... Fitting estimator with 4 features. Fitting estimator with 3 features. Fitting estimator with 2 features. Fitting estimator with 25 features. Fitting estimator with 24 features. Fitting estimator with 23 features. Fitting estimator with 22 features. ... Fitting estimator with 4 features. Fitting estimator with 3 features. Fitting estimator with 2 features. Fitting estimator with 25 features. Fitting estimator with 24 features. Fitting estimator with 23 features. Fitting estimator with 22 features. ... Fitting estimator with 7 features. Fitting estimator with 6 features. Fitting estimator with 5 features. Fitting estimator with 4 features. Optimal number of features : 3cv=2라서 25~2 features로 코드가 2번 돌아가는 것 같은데그 후에 25~4(optimal number of features + 1)까지 한 번 더 돌아가는 이유가 무엇인가요? 추가적으로, plt.ylabel("Cross validation score (nb of correct classifications)") 여기 nb of correct classifications에서 nb가 number의 약자가 맞을까요? 이상입니다. 감사합니다.
-
해결됨[중급편] 코인 가격 모니터링 앱 제작 (Android Kotlin)
navigation 관련 질문 있습니다
강의 잘 듣고 있습니다! bottom navigation 파트를 들으면서 질문이 생겨 질문 올립니다. 초급강의도 들었는데 navigation을 사용하실 때 Activity 하나에 여러 개의 Fragment를 잇는 SAA 구조를 보여주시는데, 그럼 혹시 Activity 없이는 navigation을 사용할 수는 없나요? 예를 들어 코인리스트 페이지에서 또 다른 페이지들로 가기 위해서 CoinListFragment를 navHostFragment로 하는 navigation은 만들 수 없나요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
CSS 섹션3 퀴즈 질문
박스사이즈를 구하라는 문제에서 저는 div의 크기를 생각하고24*3(폰트사이즈*3em) + 20(가로세로 padding 10+10)=92 생각했는데 93이라는 약간의 오차도 있고정답은 폰트사이즈인 72네요 ㅠ 1.제가 문제를 잘못이해했는지2.div크기 구하는데 오차가 발생하는 이유위 두가지가 궁금합니다.
-
해결됨Practical Testing: 실용적인 테스트 가이드
'외부 계층으로 분리한다'는 말이 궁금합니다.
강의에서 LocalDateTime.now()를 파라미터로 받게끔 해서 분리하는 걸 예시로 들어주셨는데요.'테스트하기 어려운 영역을 외부 계층으로 분리한다'는 말씀이 위 예시처럼 파라미터로 받게끔한다는 것인가요?외부 계층이라는 말이 잘 이해되지 않아서 질문드립니다! 테스트하기 어려운 메서드를 호출하는 상위 레벨의 메서드를 외부 계층이라고 하는 것일까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
앱 배포시 jar 질문
앱을 배포하는 도중 계속 에러가 나 질문 올립니다. plugins { id 'java' id 'org.springframework.boot' version '3.0.4' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-security' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.mysql:mysql-connector-j' implementation 'io.jsonwebtoken:jjwt-api:0.11.5' implementation 'io.jsonwebtoken:jjwt-impl:0.11.5' implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5' implementation 'com.auth0:java-jwt:3.19.2' } tasks.named('test') { useJUnitPlatform() } 위와 같이 build.gradle 파일을 설정하였는데 ./gradlew build 시 아래와 같은 오류가 계속 뜹니다. * What went wrong:Execution failed for task ':bootJar'.> Entry META-INF/MANIFEST.MF is a duplicate but no duplicate handling strategy has been set. Please refer to https://docs.gradle.org/7.6.1/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:duplicatesStrategy for details.해결방법이 있을가요
-
미해결Java TPC (생각하고, 표현하고, 코딩하고)
ArrayLIst에 대해서 궁금합니다
ArrayList 흉내내기 강의에서ObjectArray arr = new ArrayList(5) 를ArrayList arr= new ArrayList(5)로 바꾸신후에도각 메서드가 잘 작동한것이 헷갈립니다. 제가 이해한바로는모든 클래스의 최상위클래스 Object의 ArrayList가 부모클래스로써 존재한다.즉 상속이고 ArrayList는 ObjectArray가 가지고 있는 add, size get 등의 메서드를 가지고 있는데그것을 ObjectArray가 그 메서드들에 대해 재정의(?) 를 해놓았기 때문에 똑같이 작동한다. 만약에 ArrayList에게 해당메서드가 없으면((ObjectArray)ArrayList).add 이런식으로 다운캐스팅이 되어야 될건데 말이죠제가 재정의라고 이해한것이 맞을까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
springmvc패키지 안에 있는 v1,v2,v3에서는 왜 프론트 컨트롤러가 없어도 되는건지 궁금합니다.
앞 강의에서 frontcontroller 패키지에 있는 v1,v2,v3,v4,v5같은 경우에는 FrontControllerServletV5 이런식으로 프론트컨트롤러가 존재했는데 springmvc패키지 안에 있는 v1,v2,v3패키지에서는 왜 프론트 컨트롤러없이 단순히 컨트롤러만 존재해도 되는건지 궁금합니다.감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 컨트롤러와 프론트 연동
목적이 스프링 컨트롤러를 작성하고 프론트와 서로 axios로 api를 주고 받아야 하는데 아직 dto가 뭔지도 모르겠고 포스트, 겟방식도 잘 다루지 못해요 무엇보다 협업이 되어야 하는게 주목적입니다.혹시 이 강의를 들으면 프론트의 값을 받는 dto까지 다 설명을 들을 수 있는 것인지 너무 궁금합니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
실습자료 다운로드 실패
실습자료 링크에 암호 넣은 후 아래처럼 "문제 발생" 페이지가 뜨네요. OneDrive 일시적 문제인 건지..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2 - D 입력질문드립니다.
안녕하세요.2583번 문제에서 예제가 왜5 7 3 0 2 4 4 1 1 2 5 4 0 6 2이렇게 받는지 잘 모르겠습니다ㅠㅠ그리고for(int i = 0; i < k; i++) { cin >> x1 >> y1 >> x2 >> y2; for(int x = x1; x < x2; x++) { for(int y = y1; y < y2; y++) { a[y][x] = 1; } } }cin 으로 x1 y1 x2 y2 받는 줄 아래에왜 x가 x2랑 엮이고 y가 y2랑 엮이는지 잘 모르겠습니다ㅠㅠ 문제 풀기전에 예제입력&예제출력이 왜 이렇게 나오나 먼저 좀 생각을 해보고 코드 작성하는데 한참을 들여다 봤는데 잘 이해가 안되니 도저히 감이 안와서 이렇게 여쭙니다.
-
미해결스파크 머신러닝 완벽 가이드 - Part 1
spark_xgboost_lightgbm 강의부분 관련
안녕하세요. 강사님, 수업을 잘 듣고 있습니다! 다름이 아니라 spark_xgboost_lightgbm에서 버전이 바뀌면서앞선 댓글을 통해 SparkXGBClassifier로 수정하여해결은 하였으나, 새로 바뀐 XGB에서는xgb_model.feature_importances 이부분이 나오질 않아서, 혹시 SparkXGBClassifier의 featureImportances를 보려면 어떻게 해야하는지 from mmlspark.lightgbm import LightGBMClassifierimport mlflowlgbm_classifier = LightGBMClassifier(featuresCol="features", labelCol="label", numLeaves=100, maxDepth=10, numIterations=100)lgbm_model = lgbm_classifier.fit(train_sdf)-> 이부분부터 값이 나오질 않습니다.오류메시지org.apache.spark.SparkException: Job aborted due to stage failure: Task 4 in stage 73.0 failed 1 times, most recent failure: Lost task 4.0 in stage 73.0 (TID 285) (ip-번호.us-west-2.compute.internal executor driver): java.lang.NoSuchMethodError: com.microsoft.ml.lightgbm.lightgbmlib.new_doubleArray(J)Lcom/microsoft/ml/lightgbm/SWIGTYPE_p_double;이 두부분에 대해서 문의 드립니다!
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
4-8. 지표 정의 연습 문제(꼭 풀어보세요!) - 7문제
안녕하세요 :)자유롭게 질문을 남겨주세요!궁금하신 부분, 궁금한 이유(맥락) 등을 알려주시면 더욱 답변에 도움이 되어요안녕하세요 :)자유롭게 질문을 남겨주세요!궁금하신 부분, 궁금한 이유(맥락) 등을 알려주시면 더욱 답변에 도움이 되어요 #1. 기능이 잘 동작하고 있는지 확인하려면?'배너 영역' -> CTR'배너 영역'과 연결된 화면이 특정 이벤트를 홍보하기 위한 영역이라고 했을 때, 유저가 해당 페이지를 볼 수 있도록 유도하는 것이 배너의 역할이므로 유저가 해당 영역을 얼마나 잘 클릭하는지 확인하는 것이 필요함.'메뉴 카테고리' -> 체류 시간유저가 해당 메뉴의 음식점을 탐색하는 페이지로 전환시키는 영역임. 체류 시간이 너무 길어지는 것은 유저가 마음에 드는 음식점이 없거나, 어떤 음식점을 선택할 지 결정하기 어렵다는 것으로 볼 수 있기 때문에 적정한 체류 시간을 유지할 수 있도록 조정해야 함.'이런 음식은 어때요?', '동네 맛집' -> 전환율추천 알고리즘에 따라 유저의 전환율이 높을 것이라 기대되는 음식점을 추천해주는 영역이므로 해당 영역에 노출되는 음식점에서의 주문완료 전환율을 확인해야 함. #2. 검색 만족도 지표유저 스토리검색 -> 검색 결과 확인 -> 검색 결과 클릭 -> 주문지표검색 결과에 대한 CTR주문 전환율 (CVR) #3. 검색 필터 기능의 활성화 지표유저 스토리검색 -> 검색 결과 확인 -> 필터 영역 클릭 -> 필터 결과 확인 -> 검색 결과 클릭 -> 주문지표필터 기능에 대한 CTR필터 기능 사용 이후의 주문 전환율 (CVR)#4 배달 서비스에서 가장 중요한 지표는?1인당 주문 건 수배달은 기본적으로 유저의 편의 향상을 위한 기능이라고 생각합니다. 조리된 음식을 먹기 위해 식당으로 가는 수고를 덜어주는 데 그 본질이 있기 때문입니다.편의를 느끼는 유저는 가격 등 외부적인 변수가 없다는 가정 하에 그 서비스를 반복적으로 사용할 가능성이 높습니다. 그것 자체로 유저는 편의성이라는 가치를 이 서비스를 통해서 얻고 있음을 의미하고, 이는 회사의 매출과도 직결됩니다.이러한 관점에서 이 지표를 늘릴 수 있는 방법 중 하나로 유저에게 맞는 추천 서비스를 강화하는 것이 있을 수 있습니다. 일정한 패턴이 형성되어있을 경우, 유저는 그 패턴에 따라 반복적인 액션을 취합니다. 따라서 유저의 '앱 접속 시간대 로그', '검색 키워드', '주문 전환 여부' 등의 요소를 통해 추천 알고리즘을 강화할 수 있을 것 같습니다. #5 추천 알고리즘의 성능 지표주문 전환율유저는 추천받은 메뉴가 적합하다고 생각될 때 주문 전환할 것이므로 가장 중요한 지표라고 생각합니다.메뉴의 클릭율 & 이탈율다수의 메뉴를 추천할 때 유저가 클릭한 메뉴와 클릭했으나 이탈한 메뉴 데이터를 통해 추천 알고리즘을 강화할 수 있습니다.#6 여러분들이 자주 사용하는 서비스의 지표자주 사용하는 서비스 : 듀오링고중요한 지표: 유료(구독) 회원 전환율이유: 회사 매출과 직결그 외 확인해야할 지표 2가지학습 완료율유저가 언어 학습을 완료할 때마다 광고가 발생하여 매출 발생유저가 구독 회원으로 전환할 수 있는 가장 큰 동기 중 하나리텐션유저가 자주 방문할수록 학습을 하게 되기 때문#7 퍼널 개선 프로젝트온보딩 도입 이후 가입 증감율온보딩은 서비스가 전하고자 하는 가치를 유저에게 인식시키는 기능을 수행하는데, 이 기능으로 인해 유저의 가입율이 늘었다면 유저가 서비스의 가치를 인식하여 가입했다고 볼 수 있기 때문
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
회원수정 프로파일 컨트롤러에서 수정하신부분
폼에서 히든으로 프로파일 넘겨버려도 될까요?저만 안되는줄 알고 그렇게 처리했더니 정상작동하길래 혹시나 나중에 안좋은 코드일까해서 여쭈어봅니다!