묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨곰책으로 쉽게 배우는 최소한의 운영체제론
cpu 예측 문제점 15:30 질문
cpu 예측 문제점 15:30 내용이 이해가 안되서 질문입니다.기존 웹서버가 1~5번까지 동작하는건 이해했습니다.근데 15:30에서 하는 말씀을 모르겠습니다.게스트가 요청을 하던 안하던 웹서버의 자주쓰는 내용은 L3에 캐시될거고 그게 게스트가 요청 많이하면 웹서버를 해킹하는것이랑 어떻게 이어지는 것인가요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
패킷이 라우터를 통해 인터넷 세계로 나온 다음 remote host로 전달되는 과정
패킷이 인터넷 세계로 나온 다음 remote host로 전달되기 까지 정말 수 많은 라우터들을 만나게 될텐데, 거미줄처럼 엮여있는 수많은 라우터를 헤치고 어떻게 remote 까지 도착하게 될까요??라우터는 L3이고 그 다음 라우터로 도착할때까지 오직 IP 주소만으로 식별하여 해당 라우터에 패킷을 보낼 수 있는 건가요?? 이 라우터들은 서로 물리적으로 연결되어 있지 않을 텐데 그렇다면 어떻게 상대방의 라우터의 위치를 식별할 수 있는 것인가요??L2 수준에서 ARP를 사용해 mac 주소를 파악했던것과 같은 이치일까요??
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
패킷이 라우터를 통해 인터넷으로 나간 후에 다른 라우터로 스위칭되는 과정을 모르겠습니다.
지금까지 제가 이해한 네트워크 흐름은 이렇습니다.로컬 프로세스에서 Socket에 IO를 통해 Stream data 생성 (브라우저라면 HTTP Request를 Stream으로 TCP에 전달하겠군요)OS 수준인 TCP에서 일련의 Stream data를 Segment들로 분할하며, 이때 TCP 헤더에 Remote Endpoint의 Port 번호가 추가TCP에서 받은 Segment를 Packet에 캡슐화. 이때 Source IP와 Remote IP가 Packet 헤더에 추가L4에서 Packet을 Frame으로 캡슐화. 이때 자신이 속한 사설망의 L2 Switch의 mac 주소가 Frame 헤더에 추가Frame이 pc의 NIC를 출발하여 L2 access에 도착L2 access에서 L2 Distribution으로 Frame 전달 (없을 수도 있겠네요)L2 Distribution에서는 Frame을 디캡슐화하여 패킷을 확인하고 해당 패킷의 Source IP를 자신의 public IP로 변환 후 인터넷 세계로 패킷을 전송... 8번 과정부터 머릿속에 잘 그려지지 않는데, 인터넷 세계에서 해당 패킷이 가고자 하는 remote host로 가기 위해서는 어떤 과정을 거치게 되나요??? 이 세상에는 ipv4 갯수만큼 엄청나게 많은 라우터들이 존재할텐데 말입니다... ARP가 그러했듯 라우터들끼리 미리미리 주변 라우터가 어디에 있는지 broadcast로 파악을 해두고 있는 것일까요?? 그리고 인터넷에서는 remote host가 속한 사설망에 패킷이 도착할때 까지는 L3 끼리만 스위칭을 하게될까요?? 각 라우터들도 자신만의 사설망에 속해 있을 것이고 그렇다면 자신이 관리하는 L2 스위치도 있을 것인데, 패킷이 remote host로 전달되느 ㄴ과정에서 L2, L3, L2, L3 로 번갈아가면서 전달되지 않을까라는 생각이 듭니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
redirect: authStateProvider._redirectLogic 빨간줄
아래와 같은 코드인데 redirect부분에서 빨간줄이 나는데 뭐가 문제일까요 import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:gorouter_practice/model/user_model.dart'; import 'package:gorouter_practice/screen/login_screen.dart'; import 'package:riverpod/riverpod.dart'; import '../screen/1_screen.dart'; import '../screen/2_screen.dart'; import '../screen/3_screen.dart'; import '../screen/error_screen.dart'; import '../screen/home_screen.dart'; final routerProvider = Provider<GoRouter>((ref){ final authStateProvider = AuthNotifier( ref: ref ); return GoRouter( initialLocation: '/', errorBuilder: (context,state){ return ErrorScreen( error: state.error.toString()); }, // redirect 주소가 잘못됐을때 올바른 주소로 연결 redirect: authStateProvider._redirectLogic, // refresh 새로고침, 상태가 변경할 때마다 redirect실행 refreshListenable: authStateProvider, routes: authStateProvider._routes ); }); class AuthNotifier extends ChangeNotifier{ final Ref ref; AuthNotifier({ required this.ref, }){ ref.listen<UserModel?>( userProvider, (previous, next) { if(previous!=next){ notifyListeners(); } } ); } String? _redirectLogic(GoRouterState state){ //UserModel의 인스턴스 or null final user = ref.read(userProvider); //로그인을 하려는 상태인지(location은 현재 위치를 가져옴) final logginIn = state.location == '/login'; //유저 정보가 없다 - 로그인한 상태가 아니다 // //유저 정보가 없고 //로그인하려는 중이 아니라면 //로그인 페이지로 이동한다. if(user == null){ //로그인을 시도하려는 상태면 null 반환 로그인페이지 위에 로그인페이지가 쌓이는걸 방지하기 위해 return logginIn ? null : '/login'; } //유저 정보가 있는데 //로그인 페이지라면 //홈으로 이동 if(logginIn){ return '/'; } //가려는 페이지로 보내줌 위의 로직은 일종의 필터 역할 return null; } List<GoRoute> get _routes => [ GoRoute( path: '/', builder: (_,state) => HomeScreen(), routes: [ GoRoute( //라우트안에 라우트를 넣으면 슬래시를 안넣어도됨 path: 'one', builder:(_,state) => OneScreen(), routes: [ GoRoute( //http://....../one/two 위의 페이지들이 다 깔림 //라우트안에 라우트를 넣으면 슬래시를 안넣어도됨 path: 'two', builder:(_,state) => TwoScreen(), routes: [ GoRoute( //http://....../one/two/three 위의 페이지들이 다 깔림 //라우트안에 라우트를 넣으면 슬래시를 안넣어도됨 //name으로 이름으로 이동 가능 중복x name: ThreeScreen.routename, path: 'three', builder:(_,state) => ThreeScreen(), ) ] ) ] ), GoRoute(path: '/login',builder: (_,state)=>LoginScreen()) ] ), //http://...../three -> 깔리지 않고 독립적으로 존재 GoRoute( path: '/three', builder:(_,state) => ThreeScreen(), ) ]; } final userProvider = StateNotifierProvider<UserStateNotifier,UserModel?>( (ref) => UserStateNotifier() ); //로그인한 상태면 UserModel 인스턴스 상태로 넣어주기 //로그아웃 상태면 null 상태로 넣어주기 class UserStateNotifier extends StateNotifier<UserModel?>{ UserStateNotifier(): super(null); login({ required String name }){ state = UserModel(name: name); } logout(){ state = null; } }
-
미해결C++20 훑어보기
게임 업계에서 C++20을 많이 쓰나요?
성능 상의 이유로 일부러 과거의 표준만 사용하는 곳도 많다고 어디서 봤는데 게임업계에서는 어떤가요
-
미해결따라하면서 배우는 고박사의 유니티 기초
총알이 player 뒤로 나가게하려면 따로 설정이 필요한가요?
안녕하세요 고박사님!활용예제 마지막예제인 총알 발사하는 부분 질문입니다!위의 사진을 보시면 player위로 총알이 나오게되는데 고박사님 영상으로 보면 player 뒤로 총알이 생성되더라구요.. 하이라키창도 고박사님과 같은데 혹시 어떤 부분을 확인해보면 될까요?
-
미해결따라하면서 배우는 고박사의 유니티 기초
총알이 player 뒤로 생성되게 따로 설정이 필요한가요?
강의해주신 내용대로 작성한 것 같은데.. 계속 돌려봐도 어떤게 다른지 모르겠어서 질문드립니다..!고박사님과 하이라키창이 같게 총알이 생성이 되는데, 저는 총알이 player 위에 생성이되어서... 혹시 어떤부분을 확인하면 될까요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
API 응답
await을 두 번 쓰는 이유가 fetch의 리턴 값인 Response (Promise 객체 타입)가 언제 올지 기다리기 위함인가요?위 질문에서 Response 객체는 Promise 객체와 같다고 생각해도 되나요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
혹시 말안듣고 장고 최신버전(4.2)으로 하시는 분들 parse_header() 문제
drf와 django버전이 안맞아서 그렇습니다parse_header()는 django 4.2에서는 없어졋는데drf 최신버전에서는 여전히 사용합니다.django 4.1 로 재설치하면 해결됩니다!
-
미해결
JPA 사용시 hibernate 오류 문의
[질문 내용]안녕하세요. JPA 를 활용하여 개발 중 해결이 안되서 문의 남깁니다.상황복수개의 DB 에서 데이터를 읽어와 Main DB 에 넣는 상황특이사항으로는 Main 에서 @ID 로 사용할 값이 원본 DB에서는 복수개의 데이터가 있는 상황ex) Main DB 에서는 IP 를 PK 로 사용하려고 Entity 를 만들었고, 각 원본 DB(이기종으로 Cubrid, MS-SQL, Postrgre 등)에서는 IP 가 PK 가 아님10.10.10.10 데이터가 2~5개 있음Main DB 에서는 10.10.10.10 을 PK 로 만들어서 1개 row 만 있기를 희망함질문(개발환경)H2 사용문제없이 JPA 에서 자동으로 마지막 것으로 업데이트 후 1개의 ROW 만 INSERT 됨NULL인 경우는 자동으로 제거됨(운영환경)MySQL 사용개발환경에서 문제없던 코드가 javax.persistence.OptimisticLockException 예외 발생됨에러부분 전체2023-05-24 16:16:53.311 ERROR 33726 --- [ main] o.s.batch.core.step.AbstractStep : Encountered an error executing step powerpackBatchStep in job chunkProcessingJobjavax.persistence.OptimisticLockException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update tba_powerpack_agent set agent_version=?, ccyn=?, ccyndt=?, creation_time=?, dept_name=?, drdt=?, dridno=?, last_scan_time=?, last_update_time=?, updrdt=?, updridno=?, user_id=? where CRDT=? and IP=? at org.hibernate.internal.ExceptionConverterImpl.wrapStaleStateException(ExceptionConverterImpl.java:238) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:93) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1411) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1394) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.springframework.batch.item.database.JpaItemWriter.write(JpaItemWriter.java:94) ~[spring-batch-infrastructure-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.item.SimpleChunkProcessor.writeItems(SimpleChunkProcessor.java:193) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.item.SimpleChunkProcessor.doWrite(SimpleChunkProcessor.java:159) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.item.SimpleChunkProcessor.write(SimpleChunkProcessor.java:294) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:217) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:77) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:407) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:331) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) ~[spring-tx-5.3.26.jar:5.3.26] at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:273) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:375) ~[spring-batch-infrastructure-4.3.8.jar:4.3.8] at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215) ~[spring-batch-infrastructure-4.3.8.jar:4.3.8] at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:145) ~[spring-batch-infrastructure-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:258) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:208) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:152) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:413) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:136) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:320) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:149) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) ~[spring-core-5.3.26.jar:5.3.26] at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:140) ~[spring-batch-core-4.3.8.jar:4.3.8] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.26.jar:5.3.26] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.26.jar:5.3.26] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.26.jar:5.3.26] at org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration$PassthruAdvice.invoke(SimpleBatchConfiguration.java:128) ~[spring-batch-core-4.3.8.jar:4.3.8] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.26.jar:5.3.26] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.26.jar:5.3.26] at jdk.proxy2/jdk.proxy2.$Proxy119.run(Unknown Source) ~[na:na] at org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner.execute(JobLauncherApplicationRunner.java:199) ~[spring-boot-autoconfigure-2.7.10.jar:2.7.10] at org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner.executeLocalJobs(JobLauncherApplicationRunner.java:173) ~[spring-boot-autoconfigure-2.7.10.jar:2.7.10] at org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner.launchJobFromProperties(JobLauncherApplicationRunner.java:160) ~[spring-boot-autoconfigure-2.7.10.jar:2.7.10] at org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner.run(JobLauncherApplicationRunner.java:155) ~[spring-boot-autoconfigure-2.7.10.jar:2.7.10] at org.springframework.boot.autoconfigure.batch.JobLauncherApplicationRunner.run(JobLauncherApplicationRunner.java:150) ~[spring-boot-autoconfigure-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:759) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:749) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.10.jar:2.7.10] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.10.jar:2.7.10] at io.kabang.excavator.ExcavatorApplication.main(ExcavatorApplication.java:12) ~[classes/:na]Caused by: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update tba_powerpack_agent set agent_version=?, ccyn=?, ccyndt=?, creation_time=?, dept_name=?, drdt=?, dridno=?, last_scan_time=?, last_update_time=?, updrdt=?, updridno=?, user_id=? where CRDT=? and IP=? at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:67) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:54) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:47) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3571) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:3438) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3870) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:202) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:478) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) ~[na:na] at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:475) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:344) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:40) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1407) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final] … 46 common frames omitted
-
해결됨스프링 시큐리티
5.7 이후로 Deprecated 되었습니다.
이제, 'SecurityFilterChain'의 각 요청에 대해 별도의 'SecurityContext'에 인스턴스가 존재한다고 합니다.이를 통해 'Spring Security'는 'SecurityContext'의 생명주기를 'HTTP Request'와 동일하게 관리할 수 있게 되었다고 합니다.즉, 이전 방식처럼 'SecurityContextPersistenceFilter'와 같이 'SecurityContext'를 세션에 저장하고 불러오는 별도의 필터가 불필요해져서 지금은 Deprecated 되었고, SecurityContext'의 저장 위치를 'SecurityContextRepository' 인터페이스 구현체인 'HttpSessionSecurityContextRepository'가 담당하게 되면서 더욱 유연해졌다고 하는데 맞을까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
nestjs에서 DB에 데이터를 주입한 이후에 다시 서버를 작동시키고자 할때 발생하는 에러에 대한 문의점
ORM으로 API 구현중에 서버 작동을 위해 yarn start:dev로 진행하던중에DB에 데이터를 주입한 이후에 서버를 다시 작동하게 되는 경우에 위 이미지와 같은 에러들이 발생하게됩니다.DB에서 어떠한 변화가 일어나고 난 다음에 새롭게 서버를 작동시키게 되면 기존과 다른 상태(?)에서 서버가 작동되는것때문에 오류가 발생하는게 아닐까 라는 추측을 하게되는데요이는 어떠한 문제가 있어서 그런것이고 이걸 해결하기 위해서는 어떠한 방향성을 갖고 DB연결 이후에 데이터를 주입한 이후에도 정상적으로 서버를 연결할 수 있을까요?! 아직 강의가 다 끝나지는 않았지만 다음 강의에 설명들이 나와있는지도 궁금합니다 !
-
해결됨Do it! 알고리즘 코딩테스트 with JAVA
교재 227p 백준 1016번 질문드립니다.
저자 선생님 안녕하세요좋은 교재와 강의 잘 보고 있습니다.강의가 없는 1016번 문제에 대해 오래동안 고민을 해도 해결이 안되어 질문을 드리고 싶은데, 받아주시면 정말 감사하겠습니다.시간초과가 난 전체 코드입니다.import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { InputStreamReader is = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(is); StringTokenizer st = new StringTokenizer(br.readLine()," "); long min = Long.parseLong(st.nextToken()); long max = Long.parseLong(st.nextToken()); // 최댓값과 최솟값의 차이만큼 배열 선언하기 boolean[] Check = new boolean[(int)(max-min+1)]; // 2의 제곱수인 4부터 Max보다 작거나 같은 값까지 반복하기 /* 저자님 코드(정답) for(long i=2; i*i<=max; i++){ long pow = i*i; //제곱수 long start_index = min/pow;//최솟값/제곱수 if(min%pow!=0){ start_index++; } for(long j = start_index; pow*j <=max; j++){//제곱수를 true로 변경하기 Check[(int)((j*pow)-min)] = true; } } */ //제 코드(시간초과) for(long i=2; i*i<=max; i++){ long pow = i*i;//제곱수 for(long j=1; (j*pow)<=max; j++){ long t= j*pow;//제곱수의 배수 if((min<=t) && (t<=max)){//제곱수의 배수가 min과 max 범위 안이면 Check[(int)(t-min)] = true; //제곱수의 배수 표시 } } } // long count = 0; for(long i = 0; i<=max-min; i++){ if(!Check[(int)i]){ count++; } } System.out.println(count); } } 위의 전체 코드에서 저자 선생님 코드를 주석 /* */ 로 감싸고제 코드를 바로 아래에 작성했는데, 보시기 힘들 것 같아서 보라색과 초록색으로 구분한 스크린샷을 같이 올려드립니다.제 코드의 경우, 백준 문제에서 보여준 테스트케이스는 통과하는데시간초과가 발생했습니다.그래서 많은 테스트케이스를 시도해봤는데입력1000000000000 1000001000000이 테스트케이스에서저자 선생님 코드는 제대로 작동을 하고, 제 코드는 시간초과가 발생하는 것 같았습니다.하루종일 고민해도 그 이유가 도저히 이해가 안돼서, 질문을 드리고 싶습니다.가르쳐주시면 정말 감사하겠습니다.읽어주셔서 감사합니다. +오후 8시에 질문을 추가드립니다.시간초과가 안나는 핵심 로직이 long start_index = min/pow;//최솟값/제곱수 if(min%pow!=0){ start_index++; }같은데 이 부분이 이해가 너무 어렵습니다..이 코드를 더 자세하게 가르쳐주시면 감사하겠습니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
async
11번째 줄에서 res가 "hello Async"라는 건 알겠는데 갑자기 어디에서 튀어 나온 변수인지 모르겠습니다. 혹시 Promise의 executor resolve인가요? 맞다면 왜 그런 건가요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
라우터 ip와 게이트웨이 ip
안녕하세요! 제가 강의를 듣고 게이트웨이 ip를 알고싶어서 찾아봤는데 라우터 ip가 게이트웨이 ip랑 같은 뜻인건가요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
Promise 객체
resolve, reject, then, catch 모두 Promise 객체에 기본적으로 들어있는 메서드가 맞는 건가요?
-
해결됨실전! Querydsl
DTO에 Entity 포함
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요.public class MemberTeamDto { private Member member; private Team team; @QueryProjection public MemberTeamDto(Member member, Team team) { this.member = member; this.team = team; } }이런식으로 DTO에 엔티티를 직접 포함해도 되나요??실행은 잘되는거 같은데 이렇게 활용해도 되는지 궁금합니다
-
미해결ESXi 가상 인프라 구축과 보안 솔루션을 활용한 이상징후 탐지 모니터링
kali linux에서 pfsense wan 인터페이스로 curl은 되는데 브라우저로 접속이 안되는 이유는 무엇일까요?
kali에서 패킷을 캡쳐해보니 cul에서는 tcp세션 정상적으로 맺고, http get request/response가 정상적으로 이루어지는데요. 브라우저에서 10.0.0.254로 접속을 할때 wireshark로 패킷을 캡쳐해보면 tcp retransmission이 일어납니다.왜 그럴까요?- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[자동화 완전 정복] 인스타그램 휴대폰, 웹 자동화 프로그램 개발
해시태그 추출
로그인 > 해시태그 검색 까지는 작동되는데... 이후 스크롤부터 링크 추출까지 막혔습니다. 어떤 문제가 있는지 알수 있을까요?---------------------------------------------------------import timeimport chromedriver_autoinstallerchromedriver_autoinstaller.install()from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver import ActionChainsdriver = webdriver.Chrome()driver.get("https://www.instagram.com/")# time.sleep(2)id_selector = "#loginForm > div > div:nth-child(1) > div > label > input"WebDriverWait(driver, 10).until(EC.presence_of_element_located( (By.CSS_SELECTOR, id_selector) ))import mdataid_input = driver.find_element(By.CSS_SELECTOR,id_selector)id_input.send_keys(mdata.id)time.sleep(1)pw_selector = "#loginForm > div > div:nth-child(2) > div > label > input"pw_input = driver.find_element(By.CSS_SELECTOR,pw_selector)pw_input.send_keys(mdata.pw)time.sleep(1)login_btn_selector = "#loginForm > div > div:nth-child(3) > button"login_btn = driver.find_element(By.CSS_SELECTOR, login_btn_selector)login_btn.click()time.sleep(10)from urllib import parsekeyword = "사업가"keyword = parse.quote(keyword)driver.get(f"https://www.instagram.com/explore/tags/{keyword}/")time.sleep(10)all_posting_sel = "div[id^='mount_0_0'} > div > div > div.x9f619.x1n2onr6.x1ja2u2z > div > div > div > div.x78zum5.xdt5ytf.x10cihs4.x1t2pt76.x1n2onr6.x1ja2u2z > div.x9f619.xnz67gz.x78zum5.x168nmei.x13lgxp2.x5pf9jr.xo71vjh.x1uhb9sk.x1plvlek.xryxfnj.x1c4vz4f.x2lah0s.x1q0g3np.xqjyukv.x1qjc9v5.x1oa3qoh.x1qughib > div.xh8yej3.x1gryazu.x10o80wk.x14k21rp.x1porb0y.x17snn68.x6osk4m > section > main > article > div:nth-child(3) > div"time.sleep(3)all_posting_box = driver.find_element(By.CSS_SELECTOR, all_posting_sel)time.sleep(3)'''링크 100개 추출'''links = []while len(links) < 100 : for _ in range(6): driver.execute_script("window.scrollBy(0.600);") time.sleep(1) all_posting_box = driver.find_element(By.CSS_SELECTOR, all_posting_sel) posk_links = all_posting_box.find_elements(By.TAG_NAME,"a") for eachLink in posk_links: link = eachLink.get_attribute('href') links.append(link) links = set(links) links = list(links) for link in links: print(link)print("******")print(len(links), "개의 링크를 추출")input()------------------------------------------------------DevTools listening on ws://127.0.0.1:50287/devtools/browser/ed0f17f2-033d-4ba2-80b8-8f3d2f886171Traceback (most recent call last): File "c:\Users\문소희\Desktop\project\insta_auto\insta_web.py", line 50, in <module> all_posting_box = driver.find_element(By.CSS_SELECTOR, all_posting_sel) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\문소희\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 831, in find_element return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\문소희\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 440, in execute self.error_handler.check_response(response) File "C:\Users\문소희\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 245, in check_response raise exception_class(message, screen, stacktrace)selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified (Session info: chrome=113.0.5672.127)Stacktrace:Backtrace: GetHandleVerifier [0x005C6DF3+48691] (No symbol) [0x00558CC1] (No symbol) [0x00465068] (No symbol) [0x00468401] (No symbol) [0x00469641] (No symbol) [0x004696E0] (No symbol) [0x004900D0] (No symbol) [0x004906AB] (No symbol) [0x004BDD62] (No symbol) [0x004AA314] (No symbol) [0x004BC452] (No symbol) [0x004AA0C6] (No symbol) [0x00487E18] (No symbol) [0x00488F3D] GetHandleVerifier [0x00824EAA+2531050] GetHandleVerifier [0x00864B60+2792352] GetHandleVerifier [0x0085E6EC+2766636] GetHandleVerifier [0x00650820+612448] (No symbol) [0x005625BC] (No symbol) [0x0055E808] (No symbol) [0x0055E8EB] (No symbol) [0x00551C77] BaseThreadInitThunk [0x754900C9+25] RtlGetAppContainerNamedObjectPath [0x772E7B4E+286] RtlGetAppContainerNamedObjectPath [0x772E7B1E+238]
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
pyinstaller UnicodeDecodeError 가 발생합니다.
안녕하세요. 강의 잘 듣고 있습니다.다름이 아니라, pyinstaller 대부 modulegraph.py 에서 오류가 있어서 이것저것 인코딩을 바꿔줘도 문제가 사라지지 않습니다.pyinstaller가 문제가 없다고 한다면 제 쪽 환경에서 문제가 있는건데 아무리 서치를 해도 compat.py? 쪽에 문제가 있는 분들은 많으신데 modulegraph에 문제가 있다는 분은 안보이네요..명쾌한 해결책을 가지신 분들 꼭 해답을 알려주세요..