묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨곰책으로 쉽게 배우는 최소한의 운영체제론
백그라운드 스케쥴링관련 질문입니다.
CPU 스케줄링 개요 20:20초 즈음부터 나오는 내용인데요윈도우에서 프로그램 / 백그라운드 서비스 중 둘중 하나를 최적화시킬 수 있는 설정이 있고, [IO가 있음 + 클라가 많음]라는 서버특성상 대기하는 상황이 많다고, 그래서 백그라운드 서비스에 최적화하는 게 좋다~ 와 같은 뉘앙스로 말씀해주신 것 같은데요 궁금한점이 있습니다 백그라운드 운영체제라는 게 무엇인가요? 제가 이해한바로는 그냥 우선순위가 낮게 설정된 녀석들로 이해했는데 맞을까요?그러면 윈도우에서 백그라운드 최적화를 한다는 게 무슨 의미인지도 궁금하네요. 우선순위와 무관하게 그냥 라운드로빈? 같이 좀더 순차적으로 cpu를 할당해주는 그런느낌인가 싶기도하고 ㅎㅎ..백그라운드에 무엇인가를 두는 게 이점이 있는건가요?설명해주신 부분, 그러니까 20분 걸릴 게 어차피 25분 걸린다 그래서 우선순위를 낮춰서(백그라운드에 둬서) 그냥 알아서 되게 하고, 대신 다른 프로세스(예를 들면 gui관련)를 조금 더 잘 동작하게하자~ 라는 부분은 이해했습니다그런데 서버의 입장에서 보면 , 어차피 서버는 클라의 요청을 처리하는 것이 주목적인만큼 처리하게 되는 대부분의 프로세스가 IO기반의 클라이언트 요청일테고, 그러면 거기서 뭔가 우선순위를 나눠서 백그라운드로 돌리는 것의 의의를 잘 모르겠네요(물론 이건 제가 지식이 부족한 백엔드 웹개발자라.. 그렇게 느끼는 것 같기도 하네요 ㅎㅎ.. )양질의 강의 감사합니다
-
해결됨오브젝트 - 기초편
DIP vs OCP
다른 질문 답변에 DAO에 인터페이스를 사용하는 이유DAO에 인터페이스를 사용하는 이유는 다양한 DAO 구현체를 제공하기 위해서가 아니라 의존성을 끊기 위해서입니다.이렇게 답변을 하신게 있는데, 그렇다면 DAO에 인터테이스를 사용하는 주된이유는 SOLID원칙 중 DIP원칙을 통해서 의존성을 끊기 위해서라고 이해를 했습니다그런데 OCP와 DIP가 의미적인 부분에서 일맥상통하는 부분이 있는 것 같기도 하고,, 좀 구별하기가 어려운 것 같습니다추가적으로 같이 달아주신 블로그 링크도 확인했지만 여전히 모호한 것 같습니다둘다 인터페이스를 통해서 구현을 할 수 있지만 OCP는 다양한 DAO구현체를 제공하기 위한 것에 초점을 맞춘 것이고, DIP는 의존성을 끊기 위한 것에 초점을 맞춘 것이라고 이해하면 될까요흠,, 명확하게 이해하진 못한 것 같습니다 어떻게 이해해야될까요..?!
-
해결됨실리콘밸리 엔지니어에게 배우는 쿠버네티스 for SWE
강의가 안나와요 - Kube Proxy에 대해 알아보자
섹션3의 Kube Proxy에 대해 알아보자 강의가 로딩만 되고 나오지않는데 확인해주실수 있나요?
-
미해결스프링 시큐리티 OAuth2
client-credentials 방식 accessToken null 이슈
Cannot invoke "org.springframework.security.oauth2.client.OAuth2AuthorizedClient.getAccessToken()" because "oAuth2AuthorizedClient" is null] with root causekeycloak 버전은 : 21.1.2 @GetMapping("/oauth2Login") public String oauth2Login(Model model, HttpServletRequest request, HttpServletResponse response) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); OAuth2AuthorizeRequest oAuth2AuthorizeRequest = OAuth2AuthorizeRequest .withClientRegistrationId("keycloak") .principal(authentication) .attribute(HttpServletRequest.class.getName(), request) .attribute(HttpServletResponse.class.getName(), response) .build(); OAuth2AuthorizationSuccessHandler successHandler = (authorizedClient, principal, attributes) -> { oAuth2AuthorizedClientRepository .saveAuthorizedClient(authorizedClient, principal, (HttpServletRequest) attributes.get(HttpServletRequest.class.getName()), (HttpServletResponse) attributes.get(HttpServletResponse.class.getName())); System.out.println("authorizedClient : " + authorizedClient); System.out.println("principal : " + principal); System.out.println("attributes : " + attributes); }; auth2AuthorizedClientManager.setAuthorizationSuccessHandler(successHandler); OAuth2AuthorizedClient oAuth2AuthorizedClient = auth2AuthorizedClientManager.authorize(oAuth2AuthorizeRequest); model.addAttribute("oAuth2AuthorizedClient", oAuth2AuthorizedClient.getAccessToken().getTokenValue()); return "home"; } keycloak: clientId: oauath2-client-app clientSecret: HPWAsKr9dEy9DPU1babedRmpstowiXOs clientName: oauath2-client-app authorizationGrantType: client-credentials clientAuthenticationMethod: client_secret_basic provider: keycloak <form sec:authorize="isAnonymous()" action="#"> <p><input type="button" onclick="authorizationCode()" value="AuthorizationCode Grant"/></p> <p><div sec:authorize="isAnonymous()"><a th:href="@{/oauth2Login(username='user',password='1234')}">Password flow</a></div></p> <div sec:authorize="isAnonymous()"><a th:href="@{/oauth2Login}">Client Credentials Flow Login</a></div> </form> @Configuration public class AppConfig { @Bean public DefaultOAuth2AuthorizedClientManager auth2AuthorizedClientManager(ClientRegistrationRepository clientRegistrationRepository, OAuth2AuthorizedClientRepository oAuth2AuthorizedClientRepository) { OAuth2AuthorizedClientProvider oAuth2AuthorizedClientProvider = OAuth2AuthorizedClientProviderBuilder.builder() .authorizationCode() .password() .clientCredentials() .refreshToken() .build(); DefaultOAuth2AuthorizedClientManager defaultOAuth2AuthorizedClientManager = new DefaultOAuth2AuthorizedClientManager(clientRegistrationRepository, oAuth2AuthorizedClientRepository); defaultOAuth2AuthorizedClientManager.setAuthorizedClientProvider(oAuth2AuthorizedClientProvider); defaultOAuth2AuthorizedClientManager.setContextAttributesMapper(contextAttributeManager()); return defaultOAuth2AuthorizedClientManager; } private Function<OAuth2AuthorizeRequest, Map<String, Object>> contextAttributeManager() { return oAuth2AuthorizeRequest -> { Map<String, Object> contextAttributes = new HashMap<>(); HttpServletRequest httpServletRequest = oAuth2AuthorizeRequest.getAttribute(HttpServletRequest.class.getName()); String userName = httpServletRequest.getParameter(OAuth2ParameterNames.USERNAME); String userPassword = httpServletRequest.getParameter(OAuth2ParameterNames.PASSWORD); if(StringUtils.hasText(userName) && StringUtils.hasText(userPassword)) { contextAttributes.put(OAuth2AuthorizationContext.USERNAME_ATTRIBUTE_NAME, userName); contextAttributes.put(OAuth2AuthorizationContext.PASSWORD_ATTRIBUTE_NAME, userPassword); } return contextAttributes; }; } } 이렇게 됩니다. 현재 상황으로 문제가 되어 있는 부분이 없는 것 같습니다.어디부터 다시 확인해야 될지 조언 부탁드립니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
shouler view의 Look 방향이 quater view에 그대로 적용되고 캐릭터가 방향을 바꾸지 않습니다.
앞으로도 문제가 자꾸 생길 것 같은데 문제가 생길 경우 디버깅하는 방법을 알려주시면 감사드리겠습니다.
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
리텐션 분석 과제
리텐션 분석 과제 노션 문서에 정리해서 공유드립니다~문서 링크
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
h2연결이 되지 않습니다.
<property name="jakarta.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="jakarta.persistence.jdbc.user" value="sa"/> <property name="jakarta.persistence.jdbc.password" value=""/> <property name="jakarta.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/jpashop"/> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>chmod 755 h2.sh./h2 swh 다 해봤는데 안되네요.. 어떻게 해결하나요? 이전 hello-jpa에서 따라하던 test의 경우는 데이터베이스 정상적으로 연결이 되었는데 실습때 jpabook에서 사용할 jpashop은 연결이 안되는데 어떻게 해결하나요? 경로는 맞고 바탕화면에 h2에 bin에 파일들은 정상적으로 있습니다 구글링을 하여 따라해봐도 위 사진처럼 됩니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
첫 번째 요청에 ETag가 들어가는데 클라이언트도 제어 로직에 관여하는거 아닌가요?
ETag 해시값을 보내는 것은 캐시 제어 로직에 포함되지 않는 별개의 작업인가요?
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
강의 영상 화질과 관련해서 문의 드립니다.
안녕하세요.강의 영상 화질과 관련해서 문의 드립니다.강의 영상 중에섹션2 클라이언트 시스템 구현근접 공격영상부터 FHD에서도 강의 영상이 조금 흐리게 보이는 현상이 있습니다.(Render Texture 강의는 괜찮습니다!)근접 공격 이전 강의인 방치형 레벨업 버튼 강의와 바로 비교가 됩니다.확인 부탁 드립니다.감사합니다!
-
미해결Glide를 활용한 노코드 프로토타이핑의 기초
주문하기 폼 만드는데, 코드에 따른 상품명 자동 연동
주문하기 폼을 만드는 과정에서 상품 코드와 상품 명이 자동 연동 되길 원합니다. 상품코드를 넣으면 상품명이 자동으로 검색되어 옆에 표기되는 것이요. 어떻게 해야할까요..
-
미해결생활코딩 - React
2022 개정판
유튜브에 2022버전 개정판이 나와있던데 이걸보는게 나을까요?
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
AssetManager 챕터 강의 중 "FSoftObjectPath GetAssetPathByName(const FName& AssetName)" 함수 Return Type 관련 질문이 있습니다.
AssetManager 챕터 강의 중, 다음의 두 함수를 추가하게 되는데, FSoftObjectPath GetAssetPathByName(const FName& AssetName);const FAssetSet& GetAssetSetByLabel(const FName& Label);첫번째 함수인 "FSoftObjectPath GetAssetPathByName(const FName& AssetName);" 경우에는왜 "const FAssetSet& GetAssetSetByLabel(const FName& Label);" 처럼 "FSoftObjectPath&" Return 타입이 아닌, "FSoftObjectPath" Return 타입으로 작업하셨는지 문의 드려봅니다.
-
해결됨[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
Presigned URL 방식
강사님이 알려주신 방식을 듣고 다양한 이미지 처리 방식을 공부하기 위하여 Presigned URL 방식을 구현중에 있습니다. Nest.js 백엔드에 요청을 통해 발급받은 S3 url 주소에 RN환경에서 PUT 요청으로 이미지를 업로드하고 있습니다. 이 떄, 일반적인 form-data 형식은 들어가지지 않는 것 같은데, binary 형태는 매우 잘 들어가집니다.현업에서도 presigned-url을 활용할 떄 binary 형태로만 전달을 해야하나요, 아니면 다른 방식이 있는지 알고 싶어 식견을 구하고자, 질문드립니다!!또, RN에서 Binary 형태를 만드는 방법이 쉽지 않아보여, 어떻게 하는게 좋은 방식인지 알고싶습니다!
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
이미지 강좌를 듣고 생긴 궁금중입니다.
강사님이 알려주신 방식을 듣고 다양한 이미지 처리 방식을 공부하기 위하여 Presigned URL 방식을 구현중에 있습니다. 백엔드에 요청을 통해 발급받은 S3 url 주소에 PUT 요청으로 이미지를 업로드하고 있습니다. 이 떄, 일반적인 form-data 형식은 들어가지지 않는 것 같은데, binary 형태는 매우 잘 들어가집니다.현업에서도 presigned-url을 활용할 떄 binary 형태로만 전달을 해야하나요, 아니면 다른 방식이 있는지 알고 싶어 식견을 구하고자, 질문드립니다!!
-
미해결김영한의 실전 자바 - 기본편
객체지향관련 질문입니다
안녕하세요 선생님 , 자바에 대해 깊이 학습하고자 다시 기초부터 배우고있는 주니어 개발자입니다. 다름이 아니라 현재 목차에서 데이터와 기능들이 분리되어 있는것은 유지보수 관점에서 힘들기때문에 그 둘을 묶기위한 설계가 객체지향이라고 이해를 했는데요. 스프링 관점에서 보면 데이터의 무결성을 지키기위해 데이터(dto) 와 서비스는 분리하는 설계를 하는것으로 알고있습니다. 일반 자바와 스프링은 조금 다른 시각으로 바라봐야 할까요?
-
미해결파이썬 빅데이터분석 기초
자료 받을 수 있나요?
강의 내용 피피티와 코랩 실습 파일을 받아서 공부하고 싶습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
section04
어제는 잘됬는데 오늘 다시 해보니까 계속 오류가 생겨서 무슨 문제일까요?서버에서도 에러가 뜨고 어제는 잘됬는데요 어제는 오류 안떳는데 오늘은 뜨고요 이거 다운받아야 할까요? 네트워크는 잘 작동을 하는데요.페이로드랑 응답에는 에러가 뜨네요.어제는 분명이 됬는데 오늘 이러니까 이유를 모르겠어요 ㅠ 다른 섹션도요
-
해결됨오브젝트 - 기초편
실제로 객체지향으로 설계를 많이 하는지 궁금합니다.
먼저, 강의 너무 잘 들었습니다. 너무 좋은 내용을 압축적으로 전달 받았습니다. 감사합니다. 강의를 듣고 나니, 두 가지가 인상깊었는데요.객체를 사용한다고 해서 객체 지향이 아니구나. 객체를 사용하더라도 절차지향적으로 설계할 수 있다.객체지향 설계를 제대로 하다보면, DDD를 자연스레 실천하게 된다. (DDD 패턴을 적용하는 것은 아님) 실제 사용 중인 코드를 보니, Service 객체가 비즈니스 로직을 왕창 들고 있더라구요. 클래스의 인스턴스도 객체보다는 데이터에 가까웠습니다. 데이터만 담고 있고, 데이터를 조작하는 로직은 모두 Service가 들고 있었어요. "그동안 절차지향적으로 코드를 작성했던거구나!"를 알게 되었습니다. 그러면서 문득, 강사님 블로그에서 봤던 글이 생각났는데요. [도메인 주도 설계의 본질](https://eternity-object.tistory.com/26)이라는 글의 마지막 부분입니다.아마 모든 소프트웨어 애플리케이션의 95%는 “DDD를 적용하기에 적절하지 않은” 범주에 속할 것이다. 대부분의 소프트웨어는 근본적으로 데이터 중심적이다. 여기서 말씀하시는 "데이터 중심적"이라는 것이, 데이터를 먼저 설계하고 프로세스를 나중에 설계하는 절차지향적 설계를 말씀하신 것인지가 궁금했습니다. 제가 이해한 바가 맞을까요? 적고보니 질문을 위한 사족(?)이 길었군요. 답변 주시면 감사하겠습니다 :)
-
해결됨서버개발자 과제전형 완벽가이드 - 1편
Readme 파일 작성방법
안녕하세요 강사님 좋은 강의 감사드립니다.readme파일을 잘 작성하는 것도 과제전형을 진행하는데 중요한 요소라고 들었는데예제 소스에 작성된 readme 파일 형식으로 실제 과제전형 시에 제출하기에는 조금 부족해보이는데보통 어떤 형식으로 작성하시는 편이신가요? 또는 이 부분은 꼭 들어갔으면 하는 요소가 있을까요?
-
미해결Flutter 중급 2편 - 실전 앱 개발 - 미국 주식 앱 (with 클린 아키텍처)
클린아키텍처 의존관계 관련
안녕하세요.클린아키텍쳐에 대해 다시 공부하다가 근본적인 궁금증이 생겨서 질문 드립니다.저는 강사님 강의를 수강하였고 구글에 여러 레포지토리를 참고하며 아래 구조로 프로젝트를 진행하였습니다. 그러나 최근 java + spring architecture 를 공부하다가 모바일쪽의 클린아키텍쳐와 일부 개념이 충돌하여 혼란을 겪고 있습니다. 위의 그림과 같이 바깥의 presentation/repository 와 같은 계층이 usecase 를 의존하여 개발해야 비즈니스로직(usecase / entity) 가 presentation/repository 의 변화의 의존적이지 않고 온전한 비즈니스 로직을 구현할 수 있습니다. 이러한 문제를 해결하기 위해 백엔드 진영에서는 헥사고날 아키텍쳐로 구현하는 듯 합니다. 참고) https://www.youtube.com/watch?v=saxHxoUeeSw04:00 ~ 06:30, 08:20 ~ 14:00 모바일 진영에서는 domain layer 의 usecase 가 repository 를 그대로 참조하고 있어(물론 개념적으로는 인터페이스를 참조) repository 의 변경에 따른 usecase 변화로 비즈니스로직 및 도메인이 손상될 수 있다고 생각하는데 대부분 그냥 사용하고 있습니다. 그래서 제가 잘 못 이해한 것인지 아니면 다른 이유가 있는 것인지 강사님의 의견이 궁금합니다.또한 Flutter 테스트 기초 다음 강의는 언제 나오는지도 궁금합니다 ㅎㅎ 감사합니다.