묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
백엔드 라우터에서 로드 팔로잉 팔로워할 때 유저 정보 필터링
const followers = await user.getFollowers(); const followings = await user.getFollowings(); 이 상태로 바로 프론트에게 넘겨주는데 넘겨줄 때 유저의 모든 정보가 넘어갑니다(패스워드 포함) User.findOne()에서는 attributes, exclude, include 를 사용해서 가져올 정보를 걸러내지 않습니까? 저런 임의로 만들어진 테이블에서는 어떻게 정보를 걸러내나요? 검색도 어떻게 해야 찾을 수 있을까요? 영어로 떠오르질 않아서 질문 드립니다. ㅠㅠ // GET /user/followings router.get('/followings', isLoggedIn, async (req: INewRequest, res: Response, next: NextFunction) => { try { const user = await UserModel.findOne({ where: { id: req.user.id }, }); if (!user) { return res.status(403).send('존재하지 않는 유저를 찾을 수 없습니다.'); } const followings = await user.getFollowings(); res.status(200).json(followings); } catch (error) { console.error(error); next(error); // status 500 } });
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 매핑 및 로딩전략 관련 질문입니다.
안녕하세요, 강의 듣다가 궁금한 것이 생겨 질문 드립니다. 총 두 가지 질문이 있는데요 1. 시스템 설계상 연관관계 매핑을 하지 않는 경우(트래픽 관리가 중요한 시스템이라 연관관계 매핑을 따로 하지 않았을 경우), n+1문제 등 즉시로딩/지연로딩 설정과 관련된 이슈는 걱정하지 않아도 되는 걸까요? 2. 연관관계 매핑을 사용했을 경우, Member - Order와 같이 두개의 Join된 테이블을 이용해 집계하는 로직이 있고, 해당 로직은 요청이 들어오는 시점의 모든 Member와 Order의 데이터를 기준으로 집계되어야하는 제약사항이 있다고 가정하겠습니다. (oracle의 consistent모드로 member와 order를 조인해서 데이터를 가져오는 경우와 동일하게 작동이 필요할 경우) 해당 로직이 아래와 같은 순서로 진행이 된다고 생각하겠습니다. a. 모든 member를 조회한다 (lazy로 설정되어 각 member와 연관된 order는 현재 조회되지 않음) 이후 루프를 돌며 b-d를 수행한다. b. 1번 member의 order를 가져와 집계 (lazy) c. 2번 member의 order를 가져와 집계 (lazy) d. 3번 ~ n번 member의 order를 가져와 집계 (lazy) e. 결과 도출 후 종료 위의 a~e순으로 진행이 된다고 했을 때, b단계에서 order를 조회하는 시점과 d단계에서 order를 조회하는 시점이 다를텐데(로직이 수행되는 시간이 길 경우) b단계 수행 중 d단계에 수행되어야할 3번 member의 order 정보가 다른 application에 의해 업데이트 된다거나 혹은 1번 member에 관련된 order가 매우 많아 100번째 order를 조회해 처리하는 도중에 500번째 order 정보가 업데이트 될 경우, 데이터 정합성에 문제가 생길 것 같은데요. 실제로 이와같은 문제가 발생하는지 그리고 문제가 발생한다면 문제를 해결하기 위한 방법으로는 어느 것들이 있는 지 궁금합니다.(지금 생각나는 부분은 해당 로직은 별도 메서드에 entitymanager를 통해 native query를 string으로 선언해 사용하거나 마이바티스를 선택적으로 사용하는 등의 방법이 있을 것 같은데요. 실제 운영 app에서는 어떻게 해결하는지 궁금합니다.)
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
!pip install -r requirements.txt 시 error
강의 결제하고 첫 강부터 난관에 부딪혓네요 ㅠ jupyter lab에서 !pip install -r requirements.txt 입력시 하기와 같이 error 메세지가 뜹니다. 혹시하는 마음으로 기존에 깔았던 python 3.9버젼을 지워보기도 하고 anaconda prompt에서도 동일한 명령문을 실행해보앗지만 error가 발생하여 해결방법 문의드립니다. 태어나서 이렇게 긴 error는 처음입니다. 감사합니다. ----- 내용 길어서 생략함------
-
미해결파이썬으로 장고(Django) 공략하기: 입문
파이썬 버전에 대하여
현재 파이썬은 3.9 버전인데, 3.9 다운로드하면 충돌되나요? 이런 경고가 떠요. "Python3.9(first-django) has been configured as the project interpreter."
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
Could not open a connection to your authentication agent
eval "ssh-agent -s" 를 해서 Agent pid 값이 나오고 그 다음 $ ssh-add ~/.ssh/id_ed25519 을 할려는데 위 제목처럼 오류가 뜨는데 무엇이 문제인가요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기
post관련질문(깃헙링크남겨놨습니다.)
https://github.com/yunjunghun0116/myyoutubeapp_with_react 위 링크는 제 코드 링크입니다. 왜인지 모르겠으나 여러가지 수정을 해보아도 제자리걸음이기에 처음부터 다시 시작해보았으나 같은곳에서 오류가 생기네요 어제부터 거의 한 다섯시간은 구글링에 시간을 쓴듯하네요,, 아무리 알아봐도 제가 해결할수 없는것같아서 도움을 요청해봅니다. john ahn 님 무엇이 문제인지 알아봐주시길 바랍니다. 1.Failed to load resource: the server responded with a status of 404 (Not Found) 2.POST http://localhost:3000/video/api/video/uploadfiles 404 (Not Found) 이뿐아니라 504 error, 500 error도 나타날때도있고 안나타날때도있어서 참 의문입니다.
-
해결됨그림으로 배우는 자바, 파트2: 객체지향!
업캐스팅에 대해 질문드리고 싶습니다.
1.첫번째 내용에 업캐스팅후 해당 부모의 배열안에 넣는 내용을 배웠는데, 두번째 내용의 도형의 넓이를 구하는 과정에서 먼저 부모배열에 넣은 후 업캐스팅을 하여 메소드 오버라이딩을 보여주는것을 보았습니다. 해당 내용으로 복습하면서, 업캐스팅을 하지 않아도 부모 배열에 넣을 수 있는 것으로 결과물이 나왔습니다. public static void main(String[] args) { // 기사 객체 생성 및 초기화 Knight knight = new Knight(); knight.name = "아서스"; knight.hp = 180; knight.strength = 50; // 도적 객체 생성 및 초기화 Thief thief = new Thief(); thief.name = "발리라"; thief.hp = 120; thief.agility = 40; Adventurer[] advs = { knight, thief }; #toString 내용 출력 for (int i = 0; i < advs.length; i++) { System.out.println(advs[i]); } } 부모 배열에 자식 객체가 그냥 들어가는것으로 보이는데, 업캐스팅을 통해 부모 객체로 통일후 관리하면 어떤이점이 있는지 궁금합니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
EntityGraph 적용 시 account 조회 여부 다른 이유?
안녕하세요! 강의 너무 잘 듣고 있습니다. 배울수록 기억이 날라가는지 슬슬 헷갈려지기 시작하네요 ㅎㅎ 첫 질문 남겨봅니다. 최종 리팩토링된 조회 쿼리 기준으로,아래 두 쿼리의 account 조회결과의 차이가 어떤 이유로 달라지나요?(EntityGraphType 을 바꾸는 것으로 테스트해보니 이건 아닌거같네요..) - Study 조회할 때는 account 엔티티도 포함되어 조회됨 select study0_.id as id1_6_0_, tag2_.id as id1_11_1_, zone4_.id as id1_12_2_, account6_.id as id1_0_3_, account8_.id as id1_0_4_, study0_.closed as closed2_6_0_, study0_.closed_date_time as closed_d3_6_0_, study0_.full_description as full_des4_6_0_, study0_.image as image5_6_0_, study0_.path as path6_6_0_, study0_.published as publishe7_6_0_, study0_.published_date_time as publishe8_6_0_, study0_.recruiting as recruiti9_6_0_, study0_.recruiting_updated_date_time as recruit10_6_0_, study0_.short_description as short_d11_6_0_, study0_.title as title12_6_0_, study0_.use_banner as use_ban13_6_0_, tag2_.title as title2_11_1_, tags1_.study_id as study_id1_9_0__, tags1_.tags_id as tags_id2_9_0__, zone4_.city as city2_12_2_, zone4_.local_name_of_city as local_na3_12_2_, zone4_.province as province4_12_2_, zones3_.study_id as study_id1_10_1__, zones3_.zones_id as zones_id2_10_1__, account6_.bio as bio2_0_3_, account6_.email as email3_0_3_, account6_.email_check_token as email_ch4_0_3_, account6_.email_check_token_generated_at as email_ch5_0_3_, account6_.email_verified as email_ve6_0_3_, account6_.joined_at as joined_a7_0_3_, account6_.location as location8_0_3_, account6_.nickname as nickname9_0_3_, account6_.occupation as occupat10_0_3_, account6_.password as passwor11_0_3_, account6_.profile_image as profile12_0_3_, account6_.study_created_by_email as study_c13_0_3_, account6_.study_created_by_web as study_c14_0_3_, account6_.study_enrollment_result_by_email as study_e15_0_3_, account6_.study_enrollment_result_by_web as study_e16_0_3_, account6_.study_updated_by_email as study_u17_0_3_, account6_.study_updated_by_web as study_u18_0_3_, account6_.url as url19_0_3_, managers5_.study_id as study_id1_7_2__, managers5_.managers_id as managers2_7_2__, account8_.bio as bio2_0_4_, account8_.email as email3_0_4_, account8_.email_check_token as email_ch4_0_4_, account8_.email_check_token_generated_at as email_ch5_0_4_, account8_.email_verified as email_ve6_0_4_, account8_.joined_at as joined_a7_0_4_, account8_.location as location8_0_4_, account8_.nickname as nickname9_0_4_, account8_.occupation as occupat10_0_4_, account8_.password as passwor11_0_4_, account8_.profile_image as profile12_0_4_, account8_.study_created_by_email as study_c13_0_4_, account8_.study_created_by_web as study_c14_0_4_, account8_.study_enrollment_result_by_email as study_e15_0_4_, account8_.study_enrollment_result_by_web as study_e16_0_4_, account8_.study_updated_by_email as study_u17_0_4_, account8_.study_updated_by_web as study_u18_0_4_, account8_.url as url19_0_4_, members7_.study_id as study_id1_8_3__, members7_.members_id as members_2_8_3__ from study study0_ left outer join study_tags tags1_ on study0_.id=tags1_.study_id left outer join tag tag2_ on tags1_.tags_id=tag2_.id left outer join study_zones zones3_ on study0_.id=zones3_.study_id left outer join zone zone4_ on zones3_.zones_id=zone4_.id left outer join study_managers managers5_ on study0_.id=managers5_.study_id left outer join account account6_ on managers5_.managers_id=account6_.id left outer join study_members members7_ on study0_.id=members7_.study_id left outer join account account8_ on members7_.members_id=account8_.id where study0_.path=? - Event 조회 쿼리에서는 enrollment의 account id만 조회됨 select event0_.id as id1_4_0_, enrollment1_.id as id1_3_1_, event0_.created_by_id as created10_4_0_, event0_.created_date_time as created_2_4_0_, event0_.description as descript3_4_0_, event0_.end_date_time as end_date4_4_0_, event0_.end_enrollment_date_time as end_enro5_4_0_, event0_.event_type as event_ty6_4_0_, event0_.limit_of_enrollments as limit_of7_4_0_, event0_.start_date_time as start_da8_4_0_, event0_.study_id as study_i11_4_0_, event0_.title as title9_4_0_, enrollment1_.accepted as accepted2_3_1_, enrollment1_.account_id as account_5_3_1_, enrollment1_.attended as attended3_3_1_, enrollment1_.enrolled_at as enrolled4_3_1_, enrollment1_.event_id as event_id6_3_1_, enrollment1_.event_id as event_id6_3_0__, enrollment1_.id as id1_3_0__ from event event0_ left outer join enrollment enrollment1_ on event0_.id=enrollment1_.event_id where event0_.study_id=? order by event0_.start_date_time asc N+1 관련내용은 이해가 되었는데 account 를 보니 좀 헷갈려서.. 확실히 알고 싶어 질문 드립니다!!
-
미해결만들어 가면서 배우는 JAVA 플레이그라운드
배열로 구구단 다시구현
반복문안에 반복문 사용에 관한 부분을 해결할 수 없어서 질문드려요 public class Gugudan{ public static void main(String[] args) { int[] result = new int[9]; for(int j = 2; j < 10; j++) for(int i = 0; i < result.length; i++) { result[i] = j * (i + 1); } for(int i = 0; i < result.length; i++) { System.out.println(result[i]); } } }
-
미해결iOS12 앱 개발 퍼펙트 가이드
Stop Watch 질문
Stop Watch 강의도중 시간, 분, 초를 출력해보고 싶어서 코드를 짯습니다. 근데 start 버튼을 누르면 바로 hour부분이 09가 됩니다. 코드입니다. import UIKit class ViewController: UIViewController { @IBOutlet weak var labelHour: UILabel! @IBOutlet weak var labelMinute: UILabel! @IBOutlet weak var labelSecond: UILabel! @IBOutlet weak var startStopButton: UIButton! @IBOutlet weak var resetButton: UIButton! var isStart = false var timer = Timer() var startTime = 0.0 var elapsed = 0.0 @IBAction func startStop(_ sender: Any) { if isStart{ startStopButton.setTitle("Start", for: .normal) timer.invalidate() }else{ startStopButton.setTitle("Stop", for: .normal) startTime = Date().timeIntervalSince1970 - elapsed timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true) } isStart.toggle() } @IBAction func reset(_ sender: Any) { labelHour.text = "00" labelMinute.text = "00" labelSecond.text = "00" elapsed = 0.0 startTime = Date().timeIntervalSince1970 - elapsed startStopButton.setTitle("Start", for: .normal) timer.invalidate() isStart.toggle() } override func viewDidLoad() { super.viewDidLoad() labelHour.text = "00" labelMinute.text = "00" labelSecond.text = "00" startStopButton.setTitle("Start", for: .normal) resetButton.setTitle("Reset", for: .normal) } @objc func updateTime(){ elapsed = Date().timeIntervalSince1970 - startTime let df = DateFormatter() let date = Date(timeIntervalSince1970: elapsed) df.dateFormat = "HH" labelHour.text = df.string(from: date) df.dateFormat = "mm" labelMinute.text = df.string(from: date) df.dateFormat = "ss" labelSecond.text = df.string(from: date) } } 아래 사진은 5분 28초 경과 사진입니다.
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
올려주신 코트 그대로 실행하는데 실행이 안됩니다.
강의자료에 있는 코드 chapter02_02.py를 vscode로 실행하는데 문법이 틀렸다고 나오는데 어디가 문제인지 모르겠습니다.
-
미해결스프링 핵심 원리 - 기본편
스프링 빈 조회 - 동일한 타입 둘 이상 강의 질문 입니다.
스프링 빈 조회 - 동일한 타입 둘 이상 강의 질문 입니다. SameBeanConfig 내부 클래스 같은 경우 왜 static으로 해야만 하나요?? static으로 하지 않으면 에러가 발생하는데원인을 찾지 못해서요 ㅜ.ㅜ기본 자바로 봤을 때는 static으로 안해도 전혀 문제가 없어야 하는데 말이에요 ㅜ.ㅜ
-
해결됨Node.js에 TypeScript 적용하기(feat. NodeBird)
passport관련 에러가 있습니다
안녕하세요! 제로초님! 좋은 강의 항상 감사드립니다. < passport/index.ts > 질문과 답변란에 저와 같은 passport 에러가 있는 분이 있어 저렇게 제너릭을 사용했었습니다. 그래도 안되서, 제로초님이 질문란에 조언주신대로 tsc돌리고 에러확인해봤는데, console창에 ts파일에서의 에러와 같은 에러가 출력됩니다. 일단 계속 구글링 해보고 있습니다..! < model/user.ts >
-
미해결자바 입문자를 위한 강의
강사님 질문드립니다!
강사님의 강의를 듣기 시작한 열정 불타오르는 학생입니다! 머나먼 이야기지만 제 목표는 풀스택 개발자입니다. 현재 학원에서는 프론트 엔드수업으로 html css javascript jquery에 대하여 배우면서 포트폴리오를 만드는 요령에 대해 배우고 있습니다. 저녁시간에는 자바에 입문하고 나중에는 스프링까지 배우면서 포트폴리오를 두가지 유형으로 만들 생각을 하고있습니다. (6개월 목표) 학업 시간은 평일 9~6시까지 학원수업, 9시부터 12시까지 자바강의듣기 입니다 제가 6개월안에 두개의 포트폴리오를 현실적으로 만들 수 있을지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Address 관련 질문입니다.
안녕하세요, 강의 잘 듣고 있습니다. Address의 경우, 값 변경이 불가능하게 하기 위해 Setter를 제공하지 않고 전체 필드를 사용하는 생성자를 통해서만 값을 변경할 수 있도록 설계하셨는데요. 이와 같은 방법이 @Embeddable을 사용하지 않고 Member와 Delivery에 city, street, zipcode를 직접 매핑해서 사용하는 방법과 비교해 어떤 장점이 있는지 혹은 어떤 차이가 있는지 궁금합니다. 제가 현재 이해한 바로는 @Embeddable을 사용하더라도 결국, Address객체를 새로 만들어서 Member와 Delivery의 주소정보를 변경할 수 있고, 이는 @Embeddable을 사용하지 않았을때와 다른 점이 없어보여서 궁금증이 생겼습니다. @Embeddable을 사용하는 이유에 대해서 좀 더 자세히 알고 싶습니다. (추가로 이뮤터블하게 설계한다는 것이 구체적으로 와닿지 않아 해당 부분도 설명해주시면 감사하겠습니다.)
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
springboot sign-up test 질문드립니다.
안녕하세요 백기선선생님. 현재 강좌를 잘보고 있습니다. 저는 타임리프를 사용하지 않고 기존에 만든 프로젝트가 있어서 jsp로 예제를 따라하는 중인데요 스프링시큐리티 적용하고 jsp 페이지를 컨트롤러에서 호출해서 정상적으로 로드되는 것은 확인 하였습니다. 그런데 테스트를 진행시에 404에러가 뜨면서 호출이 되지 않는데요 원인을 잘 모르겠습니다. application.properties 파일 spring.mvc.view.prefix= /WEB-INF/views/spring.mvc.view.suffix= .jsp 따라서/user/sign-up 을 리턴하구요 @GetMapping("/sign-up")public String signUpForm(Model model) { return "/user/sign-up";} 컨드롤러에서는 위에 url을 호출시에 정상적으로 페이지가 열립니다. 아래는 컨트롤러 테스트입니다. package com.seongbindb.recipe.controller;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.web.servlet.MockMvc;import static org.junit.jupiter.api.Assertions.*;import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;@SpringBootTest@AutoConfigureMockMvcclass UserControllerTest { @Autowired private MockMvc mockMvc; @DisplayName("회원 가입 화면 보이는지 테스트") @Test void signUpForm() throws Exception { mockMvc.perform(get("/sign_up")) .andExpect(status().isOk()) .andExpect(view().name("/user/sign-up")); }} 아래는 콘솔 로그입니다. java.lang.AssertionError: Status expected:<200> but was:<404> Expected :200 Actual :404 <Click to see difference> at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:59) at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:122) at org.springframework.test.web.servlet.result.StatusResultMatchers.lambda$matcher$9(StatusResultMatchers.java:627) at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:196) at com.seongbindb.recipe.controller.UserControllerTest.signUpForm(UserControllerTest.java:24) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) 2021-02-15 21:20:56.279 INFO 11843 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' Process finished with exit code 255
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
동전분배하기 (DFS)
안녕하세요 동전분배하기 문제를 풀고 있는데 in1.txt 에서 [5, 300, 10, 10, 10, 10]이 주어진다면 (300), (10, 10, 5), (10, 10)으로 분배해서 최소차가 280인게 가장 작은 차 아닌가요? 제가 착각한거 일 수 있는데 답이 290이라 어떻게 이렇게 나오는지 궁금합니다.
-
미해결페이스북 클론 - full stack 웹 개발
class 와 id 의 차이
전부다 클래스 혹은 아이디로 써도 되나요? 저렇게 구분지어서 사용하는 이유가 무엇인가요!?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
안녕하세요 선생님 lock과 spinlock에 대해서 질문드립니다.
예전 스핀락 설명 하실때 메모한 내용입니다. 락을 걸고 있는 상대방이 조금만 기다리면 놔줄 것 같다는 확신이 있을 때는 굳이 Context-Switching까지 가지 않고 무식하게 대기하는 SpinLock이 좋습니다. 비행기 1인 화장실 앞에서 대기하는데, 안에서 손 씻고 있는 소리가 들린다면, 굳이 자리에 돌아가서 대기하기 보단 문앞에서 조금만 더 기다리는게 현명합니다. MMO에서 lock을 쓰는 경우는 대부분 컨텐츠의 멀티쓰레드 경합 처리에서 사용하게 되는데, 어마어마하게 오래 걸리는 작업이 아닌 경우가 많기 때문에 SpinLock이 대부분의 경우에서 유리합니다. 질문 컨텍스트 스위칭이라는게 a쓰레드가 공유 자원을 다쓰고 쓰레드 풀로 들어가면 b라는 쓰레드가 공유자원을 획득해서 사용하는 걸로 알고 있는데 그러니까 프로세스 내부에 stack 공간만 바뀌는 스핀락이라는게 무한 반복 타고 들어가서 계속 기다리잖아요 상대방이 빠져나올떄 까지 lock은 접근 했다가 a라는 쓰레드가 사용중이네 글멈 나는 다른 작업 하고 이따 한번 더와바야지 이 개념이 아닌가요? 여기서 왜 컨텍스트 스위칭이라는 표현을 쓰셨는지 여쭤봅니다? a가 가고 b가 들어가야 컨텍스트 스위칭이 성립되는 게 아닌가요?
-
미해결iOS 개발을 위한 swift5 완벽 가이드
drop while 문제
drop while 에서 Character 대신 ch 로 써도 동일한 결과가 나옵니다!ㅜㅜ