안녕하세요. 과제를 잘 못 이해한건가 싶기도 하지만 아래와 같은 조건하에 구현을 해 봤습니다. 수업 과정에서 Front-end는 고정인 상황이기 때문에 기존 API는 변경이 없다는 가정하에 변경 해 봤습니다. 시간대1개와 요일n개의 설정이 하나의 row로 묶여있는 상태로는 요일별 시간대 변동에 대응하기 까다로운 것 같아 요일별 개별 row로 저장하도록 일부 수정 하였습니다. API endpoint 모델 변경을 피하기 위해서 내부적으로 여러개의 요일별 row로 나누어 저장하도록 했습니다. 고민중에 작가님께서 올려 놓으신 레퍼런스 코드를 봤는데, 책에서 언급하신 것 처럼 postgres 경우와 sqlite 경우로 코드가 분기 되는 것을 보았고, 지금은 교육 과정이기 때문이라고 생각 하지만 배포 코드와 개발 환경 코드가 다른것은 여러모로 좋지 않은 것 같아 현재는 sqlite 기준으로 개별 DB구현에서만 지원하는 것은 배제하는 방향으로 구현 했습니다. 1과 같이 변경 함으로써, 기 등록된 정보의 수정에서는 개별 날짜 별 시간대 설정 면에서 자유도가 생겼다고 생각 됩니다. 타임슬롯의 변경과 삭제에 관해서는 내부적으로는 time-slot으로 관리하지만, 외부공개 id는 아니므로, 키 로서 start-time, end-time, weekday (API형태로서는 리스트)조합으로 정의 해서 동작 하도록 구현했습니다. 특히 삭제의 경우는 부득이 delete method의 경우는 payload가 포함되는것이 받아들여지지 않는 경우도 있는것을 고려해서, 새 등록 값 두가지(new_start_time과, new_end_time) 값이 모두 제공되고 같은 경우를 특정하여 삭제 동작으로 정의하여 동작하도록 구현했습니다. class TimeSlotUpdateByGroupIn(SQLModel): start_time: time end_time: time weekdays: Weekdays new_start_time: time | None = None new_end_time: time | None = None new_weekdays: Weekdays | None = None @model_validator(mode="after") def check_update_fields(self): update_fields = { "new_start_time": self.new_start_time, "new_end_time": self.new_end_time, "new_weekdays": self.new_weekdays, } if not any(value is not None for value in update_fields.values()): raise ValueError("최소 하나의 수정 필드는 반드시 제공되어야 합니다.") return self @router.post("/time-slots", status_code=status.HTTP_201_CREATED, response_model=TimeSlotOut) async def create_time_slot( user: CurrentUserDep, session: DbSessionDep, payload: TimeSlotCreateIn, ) -> TimeSlotOut: if not user.is_host: raise GuestPermissionError() weekdays = sorted(set(payload.weekdays)) # dup. check with already exist one stmt = select(TimeSlot).where( and_( TimeSlot.calendar_id == user.calendar.id, TimeSlot.weekday.in_(weekdays), TimeSlot.start_time < payload.end_time, TimeSlot.end_time > payload.start_time, ) ) result = await session.execute(stmt) existing_time_slot = result.scalars().first() if existing_time_slot: raise TimeSlotOverlapError() time_slots = [ TimeSlot( calendar_id=user.calendar.id, start_time=payload.start_time, end_time=payload.end_time, weekday=weekday, ) for weekday in weekdays ] session.add_all(time_slots) await session.commit() if not time_slots: raise TimeSlotOverlapError() return TimeSlotOut( start_time=time_slots[0].start_time, end_time=time_slots[0].end_time, weekdays=weekdays, created_at=time_slots[0].created_at, updated_at=time_slots[0].updated_at, ) @router.get( "/time-slots/{host_username}", status_code=status.HTTP_200_OK, response_model=list[TimeSlotOut], ) async def get_host_timeslots( host_username: str, session: DbSessionDep, ) -> list[TimeSlotOut]: stmt = ( select(User) .where(User.username == host_username) .where(User.is_host.is_(true())) ) result = await session.execute(stmt) host = result.scalar_one_or_none() if host is None or host.calendar is None: raise HostNotFoundError() stmt = select(TimeSlot).where(TimeSlot.calendar_id == host.calendar.id) result = await session.execute(stmt) time_slots = result.scalars().all() grouped: dict[tuple[time, time], TimeSlotOut] = {} for time_slot in time_slots: key = (time_slot.start_time, time_slot.end_time) if key not in grouped: grouped[key] = TimeSlotOut( start_time=time_slot.start_time, end_time=time_slot.end_time, weekdays=[time_slot.weekday], created_at=time_slot.created_at, updated_at=time_slot.updated_at, ) continue grouped[key].weekdays.append(time_slot.weekday) if time_slot.created_at < grouped[key].created_at: grouped[key].created_at = time_slot.created_at if time_slot.updated_at > grouped[key].updated_at: grouped[key].updated_at = time_slot.updated_at if not grouped: raise TimeSlotNotFoundError() for time_slot in grouped.values(): time_slot.weekdays = sorted(set(time_slot.weekdays)) return list(grouped.values()) @router.patch( "/time-slots", status_code=status.HTTP_200_OK, response_model=TimeSlotOut | None, ) async def update_time_slot( user: CurrentUserDep, session: DbSessionDep, payload: TimeSlotUpdateByGroupIn, ) -> TimeSlotOut | None: if not user.is_host: raise GuestPermissionError() current_weekdays = sorted(set(payload.weekdays)) stmt = select(TimeSlot).where( and_( TimeSlot.calendar_id == user.calendar.id, TimeSlot.start_time == payload.start_time, TimeSlot.end_time == payload.end_time, ) ) result = await session.execute(stmt) current_slots = result.scalars().all() if not current_slots: raise TimeSlotNotFoundError() existing_weekdays = sorted({slot.weekday for slot in current_slots}) if existing_weekdays != current_weekdays: raise TimeSlotNotFoundError() delete_only = ( payload.new_start_time is not None and payload.new_end_time is not None and payload.new_start_time == payload.new_end_time ) if delete_only: current_ids = [slot.id for slot in current_slots] await session.execute(delete(TimeSlot).where(TimeSlot.id.in_(current_ids))) await session.commit() return None new_start_time = payload.new_start_time or payload.start_time new_end_time = payload.new_end_time or payload.end_time new_weekdays = sorted(set(payload.new_weekdays or payload.weekdays)) if new_start_time >= new_end_time: raise HTTPException( status_code=status.HTTP_422_UNPROCESSABLE_CONTENT, detail="시작 시간은 종료 시간보다 빨라야 합니다.", ) current_ids = [slot.id for slot in current_slots] stmt = select(TimeSlot).where( and_( TimeSlot.calendar_id == user.calendar.id, TimeSlot.weekday.in_(new_weekdays), TimeSlot.start_time < new_end_time, TimeSlot.end_time > new_start_time, TimeSlot.id.not_in(current_ids), ) ) result = await session.execute(stmt) existing_time_slot = result.scalars().first() if existing_time_slot: raise TimeSlotOverlapError() await session.execute(delete(TimeSlot).where(TimeSlot.id.in_(current_ids))) new_time_slots = [ TimeSlot( calendar_id=user.calendar.id, start_time=new_start_time, end_time=new_end_time, weekday=weekday, ) for weekday in new_weekdays ] session.add_all(new_time_slots) await session.commit() return TimeSlotOut( start_time=new_start_time, end_time=new_end_time, weekdays=new_weekdays, created_at=new_time_slots[0].created_at, updated_at=new_time_slots[0].updated_at, )
안녕하세요! 강의 두 번째 복습 중 궁금한 점이 생겼습니다. 광고 실험 시 여러 개의 광고 그룹·캠페인을 만든다고 하셨는데, 이는 초기 광고 단계에서도 동일하게 적용되는 방법 인가요? 초기 광고는 소액(일 2,000~5,000원) 으로 세팅한다고 하셨는데, 이 예산 안에서 여러 광고 그룹·캠페인을 동시에 운영할 수 있는지 궁금합니다. (5,000원을 쪼개서 2~3개의 캠페인을 돌리시는지? 아니면 안정성이 확보되고 예산을 늘릴 때 캠페인도 같이 늘리시는지..?)
어떤 강의에 대한 질문인지 자세하게 알려주시면 답변을 드리는데 도움이 됩니다. 스크린샷 윈도우키 + 쉬프트키 + S(윈도우) 을 자세히 첨부하시면 답변 드리는데 많은 도움이 됩니다. 동영상 재생 관련 같은 인프런 서비스 관련 문의는 1:1 문의하기를 이용해 주세요. 7강 강의를 보면 switch 노드에 community에서 검색한 imap노드를 사용하시던데요. 지금은 n8n 정책이 바뀌어서 사용이 안된다고 합니다. AI를 찾아보니 정책 바뀐건 맞더라구요. 혹시 해당 기능을 쓸 수 있는 방법이나 대체 방법 알려주시면 감사하겠습니다.
안녕하세요, 강의 정말 감명 깊게 잘 보고 있습니다. 2026년 새해 복 많이 받으시길 바랍니다! 저는 2022년 비전공 국비 교육을 거쳐 운 좋게 취업에 성공했고, 이후 약 2년 6개월간 중소기업에서 유니티 클라이언트 프로그래머로 근무했습니다. 주로 보드게임과 카지노 분야를 담당해 왔으나, 제가 진정으로 추구하는 개발 방향과 차이가 크다는 생각에 최근 퇴사 후 포트폴리오 정비에 들어갔습니다. 하지만 막상 준비를 시작하니 큰 고민에 빠졌습니다. 현재 4인 규모 모바일 게임사 경력까지 합치면 약 [3년 경력의 클라이언트 프로그래머]라는 타이틀이 붙게 되는데, 솔직히 스스로를 되돌아봤을 때 그 타이틀에 걸맞은 깊이 있는 지식이나 어필할 만한 현업 프로젝트 결과물이 부족하다는 확신이 듭니다. 그래서 2026년 한 해를 온전히 투자해, 오는 4월부터 프로카데미 11개월 커리큘럼을 수료하며 기초부터 다시 단단히 다지고자 합니다. 이후 경력을 내세우기보다, 루키스님께서 강조하신 것처럼 제대로 된 곳에 신입으로 재취업을 도전해보고 싶습니다. 여기서 제가 판단이 서지 않는 점은 두 가지입니다. 1. 3년이라는 실무 시간을 뒤로하고 다시 1년의 교육 과정을 밟는 것이 시간 낭비는 아닐지, 아니면 지금이라도 늦지 않은 선택인지 궁금합니다. 2. 도움이 되지 않는다고 판단되는 지난 경력을 이력서에서 아예 지우는 것이 나을까요? 아니면 경력은 적되 '기초가 부족해 다시 공부한 중고 신입'의 포지션을 취하는 것이 맞을까요? 전문가이신 루키스님의 시선에서 이 선택이 미련한 행동인지, 아니면 제대로 된 방향으로 가는 과정인지 냉정한 조언을 부탁드리고 싶습니다. 긴 글 읽어주셔서 감사합니다.
해당 강의 8:10처럼 동일하게 돌렸을 때 다음과 같이 출력이 찍힙니다. 624만원에 관한 정보는 나오지 않습니다. ㅠㅠ 여러번 돌려도 계속 그렇게 나오네요 .. 어떤 문제일까요?, 혹시나 DB에 문서를 적재하는 과정중에서 55조의 테이블이 씹힌건가? 해서 document_list 찍었을땐 (적재 전 txt 파일을 로딩하는과정에서) 또 624만원에 관련된 내용이 있습니다... 출력내용이 길어 10000자가 넘어 마지막 answer만 올려드립니다. document answer == {'answer': AIMessage(content='연봉 5천만 원인 거주자의 소득세는 근로소득공제를 적용하여 계산됩니다. 총급여액 5천만 원의 경우, 근로소득공제는 1천200만 원+(4천500만 원을 초과하는 금액의 100분의 5)입니다. 따라서, 소득세는 해당 공제를 적용한 과세표준에 세율을 적용하여 계산하게 됩니다. 하지만 세율 정보가 없으므로 정확한 소득세 금액을 계산할 수 없습니다. ++ 다른 테이블은 context로 찍히는데 55조 624만원 관련 테이블만 안찍힙니다..
안녕하세요. 프리랜서 강의 너무 잘 들었습니다. 운이 좋게도 아는 지인분께서 프리랜서 계약 관련 요청을 주셨는데요. 아직 상세 기획서, 예산 등은 받지 않은 상태라 정확한 정보가 없지만 추후에 받게 되면 제가 적절한 견적 및 개발 계획을 세울 예정입니다. 혹시 정리가 된 이후에 적절한지 수정할 부분은 없는지 피드백을 받는 것도 멘토링 신청으로 가능한지 여쭤봅니다!
소득세법 제55조(세율) 및 제47조(근로소득공제)에 따르면, 거주자 기준으로 연봉 5천만원(근로소득)의 소득세는 다음과 같이 계산됩니다. 근로소득공제 적용 총급여액 5천만원 기준 공제액: 1,475만원 (5천만원 × 15% + 75만원, 단 최고 한도 2천만원 미만) 과세표준 산정 5천만원 - 1,475만원 = 3,525만원 종합소득세율 적용 3,525만원 구간: 1,400만원 이하 6% + 초과분 15% 산출세액: 84만원(1,400만원 × 6%) + (3,525만원 - 1,400만원) × 15% = 474.75만원 최종 납부세액 474.75만원에서 근로소득세액공제 (산출세액의 55% 한도) 등 추가 공제 적용 가능 ※ 정확한 세액은 의료비·교육비·보험료 등 추가 공제항목에 따라 달라질 수 있습니다. (추가 설명: "거주자"는 직장·자영업 등 소득 유형과 무관하게 국적에 관계없이 국내 주소를 둔 개인을 의미하며, 직장인은 그 하위 범주에 포함됩니다.) 답변이 전혀 다르고 이상하게 근거없는 숫자도 나오는데 왜그런걸까유 fewshot하는것까지 작성했습니다.
PPT - 11page 2장 max.jsx => main 아닌가요? ( 강의 영상이라..수정이.. 암튼 그러핟고요_ 예전에 제가 "코드로 배우는 스프링 웹 프로젝트" (개정판) ..ㅋㅋ 도서에도 오타 잡는 취미가 있었다는 ㅎㅎㅎ ^^ 다른 분이 찾으셨다면.. . .. 중복 Q&A 문의 죄송합니다.
안녕하세요 강의 잘보고 있습니다. 문의 내용이 있어서요 강의 내용중 소스내용이 많아 강사님 말씀처럼 자료에 있는 소스를 복붙하고 있는데요 문자 인코딩 (PPT와 vscode) 문제인지 복붙을 하고 보면 위와같이 붉은색으로 표시가 되는데 (일반 import를 안해서 생기는 line 말고요) 강의 화면을 보면 같은 증상으로 누구는 한글 에 노락 박스로 나타난다고 하는데 vt 및 저는 한글이 아니어도 같은 증상입니다. 라인 맨앞에 노락박스로 탭표시가 되는데 소스 가독에 상당히 힘들어서요. AI 말로는 위와같이 설정해도 같은 증상이고 저 내용에 "직접 삭제" ? ...ㅡㅡ (하나하나? 라인 마다?) 혹시 강의교안이나 다른데서 받아 올수 없나요? 아 git에서 다운로드 받을 수있는지요? (죄송합니다. 있으면 제가 아직 못찾은듯요..) 강사님... 급해결 요청드립니다. 아~ 너무 보기 힘드네요 ★ 앗! 지금 보니까 강사님 소스 작성할때는 잠깐 나타나따 사라지네요? 말씀드렸지만... 위 AI 내용데로 ..설정햇는데.. 구글링에도 같은소리만..ㅡㅡ; 저만 그런가요..?
안녕하세요 강의 잘보고 있습니다. 문의 내용이 있어서요 강의 내용중 소스내용이 많아 강사님 말씀처럼 자료에 있는 소스를 복붙하고 있는데요 문자 인코딩 (PPT와 vscode) 문제인지 복붙을 하고 보면 위와같이 붉은색으로 표시가 되는데 강의 화면을 보면 같은 증상으로 누구는 한글 에 노락 박스로 나타난다고 하는데 vt 및 저는 한글이 아니어도 같은 증상입니다. 라인 맨앞에 노락박스로 탭표시가 되는데 소스 가독에 상당히 힘들어서요. AI 말로는 위와같이 설정해도 같은 증상이고 저 내용에 "직접 삭제" ? ...ㅡㅡ (하나하나? 라인 마다?) 혹시 강의교안이나 다른데서 받아 올수 없나요? 아 git에서 다운로드 받을 수있는지요? (죄송합니다. 있으면 제가 아직 못찾은듯요..) 강사님... 급해결 요청드립니다. 아~ 너무 보기 힘드네요
안녕하세요. 좋은 강의 감사합니다. 강의를 듣다 몇가지 의문이 있어 글을 작성합니다. 애드몹 광고는 비공개 테스트시에도 적용을 해야하나요. 비공개 테스트시에도 애드몹광고를 추가한 상태에서 진행해야하나요? 비공개 테스트가 완료된 상태에서 애드몹광고를 추가하고 출시가 가능한가요? 비공개 테스트시에는 애드몸광고를 넣지않고 앱을 개시할때 추가해도되나요 애드몹 공고로 등록한 모바일 폰은 비공개 테스트 시 12개중한개의 모바일폰에 포함되나요.
저는 프론트개발자이고(FE) 백앤드개발자(BE)와 어드민개발자와 협업을 진행했었습니다. 프로젝트를 진행하다가 어드민개발자가 (어드민도 BE인데) 만들어준 API를 직접 호출하다가 호출이 정상적으로 되지 않아 백앤드 개발자에게 말하니, 백앤드 개발자가 proxy로 API를 만들어야 해요 라고 하던군요. 백앤드개발자가 만든 proxy로 감싼? API를 따로 제공해주고 그 API를 호출하니 그제서야 데이터를 받아와 처리 할 수 있었습니다. 이제야 약간 왜 그랬었는지 유추가 가능해졌습니다. 서버 투 서버는 CORS가 안나서 그런거 맞나요?
plugins { id 'java' id 'org.springframework.boot' version '3.5.5' id 'io.spring.dependency-management' version '1.1.7' } 안녕하세요 테스트 코드 진행중 가짜객체를 선언하기 위해 @mock를 사용하려는데 자바17과의 충돌?로 계속해서 에러가 발생하는 상황입니다..! 자바 버전 17에서 21로 변경, mockito 5.xx 최신 버전으로 변경해도 같은 에러에서 벗어나지못했습니다.. 밑에는 전체 에러입니다. ByteBuddy 버전도 올려서 빌드의존성 추가해봤는데도 안되네요 > Task :compileJava UP-TO-DATE > Task :processResources UP-TO-DATE > Task :classes UP-TO-DATE > Task :compileTestJava > Task :processTestResources NO-SOURCE > Task :testClasses java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null) at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:85) at jdk.proxy3/jdk.proxy3.$Proxy16.isTypeMockable(Unknown Source) at org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:78) at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22) at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:275) at org.mockito.internal.creation.MockSettingsImpl.build (MockSettingsImpl.java:236) at org.mockito.internal.MockitoCore.mock(MockitoCore.java:82) at org.mockito.Mockito.mock(Mockito.java:2198) at org.mockito.internal.configuration.MockAnnotationProcessor.processAnnotationForMock(MockAnnotationProcessor.java:79) at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:28) at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:25) at org.mockito.internal.configuration.IndependentAnnotationEngine.createMockFor(IndependentAnnotationEngine.java:44) at org.mockito.internal.configuration.IndependentAnnotationEngine.process(IndependentAnnotationEngine.java:72) at org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:62) at org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:47) at org.mockito.MockitoAnnotations.openMocks(MockitoAnnotations.java:81) at org.mockito.internal.framework.DefaultMockitoSession.<init>(DefaultMockitoSession.java:43) at org.mockito.internal.session.DefaultMockitoSessionBuilder.startMocking(DefaultMockitoSessionBuilder.java:83) at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:160) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Caused by: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:105) at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:79) at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:75) at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:49) at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:29) at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:26) at org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:71) at org.mockito.Mockito.<clinit>(Mockito.java:1777) at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:156) ... 2 more Caused by: java.lang.reflect.InvocationTargetException at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:103) ... 10 more Caused by: org.mockito.exceptions.base.MockitoInitializationException: Could not initialize inline Byte Buddy mock maker. It appears as if your JDK does not supply a working agent attachment mechanism. Java : 17 JVM vendor name : Oracle Corporation JVM vendor version : 17.0.10+11-LTS-240 JVM name : Java HotSpot(TM) 64-Bit Server VM JVM version : 17.0.10+11-LTS-240 JVM info : mixed mode, sharing OS name : Windows 10 OS version : 10.0 at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:275) at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23) ... 13 more Caused by: java.lang.IllegalArgumentException at java.instrument/sun.instrument.InstrumentationImpl.appendToClassLoaderSearch0(Native Method) at java.instrument/sun.instrument.InstrumentationImpl.appendToBootstrapClassLoaderSearch(InstrumentationImpl.java:220) at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:175) ... 14 more Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:105) at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:79) at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:75) at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:49) at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:29) at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:26) at org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:71) at org.mockito.Mockito.<clinit>(Mockito.java:1777) at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:156) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Caused by: java.lang.reflect.InvocationTargetException at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:103) ... 10 more Caused by: org.mockito.exceptions.base.MockitoInitializationException: Could not initialize inline Byte Buddy mock maker. It appears as if your JDK does not supply a working agent attachment mechanism. Java : 17 JVM vendor name : Oracle Corporation JVM vendor version : 17.0.10+11-LTS-240 JVM name : Java HotSpot(TM) 64-Bit Server VM JVM version : 17.0.10+11-LTS-240 JVM info : mixed mode, sharing OS name : Windows 10 OS version : 10.0 at app//org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:275) at app//org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23) ... 13 more Caused by: java.lang.IllegalArgumentException at java.instrument/sun.instrument.InstrumentationImpl.appendToClassLoaderSearch0(Native Method) at java.instrument/sun.instrument.InstrumentationImpl.appendToBootstrapClassLoaderSearch(InstrumentationImpl.java:220) at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:175) ... 14 more > Task :test AuthServiceTest > asd() FAILED java.lang.IllegalStateException at PluginLoader.java:85 Caused by: java.lang.IllegalStateException at DefaultMockitoPlugins.java:105 Caused by: java.lang.reflect.InvocationTargetException at Constructor.java:499 Caused by: org.mockito.exceptions.base.MockitoInitializationException at InlineDelegateByteBuddyMockMaker.java:275 Caused by: java.lang.IllegalArgumentException at InstrumentationImpl.java :-2 1 test completed, 1 failed > Task :test FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/%EC%8A%A4%ED%94%84%EB%A7%81/Artrip/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. BUILD FAILED in 12s 4 actionable tasks: 2 executed, 2 up-to-date
제가 이전에 진행했던 프로젝트에서 hosts파일을 수정해 실제 운영하고 있는 도메인으로 접속해 아직 개발진행중인 코드를 테스트 했었는데 hosts파일만 수정해서 개발서버,스테이지서버, 운영서버를 왔다갔다 하는것이 정말 신기했었습니다. 그때는 어떤 원리로 동작하는지 모르고 우와 신기하다~ 하며 사용했었는데 이제야 이해가 가네요^^
아바타 만들기 /post 에는 글쓰기, 수정, 상세화면에 대한 정의가 되어 있습니다. /post/[id].tsx /post/write.tsx /post/update/[id].tsx 글쓰기와 수정은 SafeAreaView를 적용하지 않았는데 상세보기에서 적용한 이유와 어떤 기준에 의해 적용하였는지 문의 드립니다. /post/_layout.tsx 내에 Stack.Screen에서 headerShown : false일때 SafeAreaView를 적용하는걸로 생각했는데 그렇지 않은것 같습니다. 감사합니다.