묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]
인터넷 익스플로러 호환성
모던 HTML/CSS 로 상용화도 가능한 반응형 모던 웹페이지만들기 11(9:37) 내용중인터넷 익스플로러 호환성을 위해 width:240px 대신 max-width:240px를 사용하고 flex-shrink:0;을 설정하셨는데인터넷 익스플로러가 사용되지 않는 현 시점에서 <link rel="short icon" type="image/x-icon" href="img/fun-coding.ico" />이와 같이 익스플로러의 호환성을 고려하는 행위가 현업에서 필요한지 궁금합니다!
-
미해결스프링 시큐리티
ajax 구현 부분 작동이 안되서 질문드립니다.
ajax가 아예 진행이 안되서 질문드립니다. springSecurity6, 스프링부트 3.2.1 사용중입니다. 코드는 아래와 같은데 이게 어디서 어디가 틀렸는지를 도저히 모르겠습니다.ajax 전까지 form 방식은 정상적으로 작동하고 있으며,ajax 요청 보낼 시 POST http://localhost:8080/api/loginorg.apache.http.client.ClientProtocolException 이런 에러가 발생합니다. ajax.http 파일은 강의 문서를 다시 다운받아 했으며 postman으로 요청시 이유는 모르겠지만 get 요청으로 처리되고 위의 요청시 아래와 같은 로그 발생합니다 10000자 제한떄문에 댓글로 변경 curl 요청시 아래와 같습니다 10000자 제한떄문에 댓글로 변경 아래 코드에서 csrf disable을 하였음에도 계속 동일한 상태이고 강의 git 코드를 여러 브랜치에서 계속 참고해서 막 섞여있어서 어디서부터 고쳐야될지 전혀 모르겠습니다. 거의 6시간 넘게 헤매고 있는데 전혀 모르겠습니다. 혹시 확인 가능하시면 변경해야될 부분 부탁드립니다. 감사합니다. @Configuration @Slf4j @Order(0) public class AjaxSecurityConfig { @Autowired protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(authenticationProvider); } @Qualifier("ajaxAuthenticationProvider") @Autowired private AuthenticationProvider authenticationProvider; // 변경된 부분 @Bean protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception { log.info("여기옴2"); http .authorizeHttpRequests(auth-> auth .requestMatchers("/api/login").permitAll() .anyRequest().authenticated() ); http.exceptionHandling(exceptionHandling -> exceptionHandling .authenticationEntryPoint(new AjaxLoginAuthenticationEntryPoint()) .accessDeniedHandler(ajaxAccessDeniedHandler()) ); http.addFilterBefore(ajaxLoginProcessingFilter(), UsernamePasswordAuthenticationFilter.class); http.csrf(csrf -> csrf.disable()); return http.build(); } @Autowired private ObjectMapper objectMapper; @Autowired private AuthenticationConfiguration authenticationConfiguration; @Bean public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception { return authenticationConfiguration.getAuthenticationManager(); } @Bean public AuthenticationSuccessHandler ajaxAuthenticationSuccessHandler(){ return new AjaxAuthenticationSuccessHandler(); } @Bean public AuthenticationFailureHandler ajaxAuthenticationFailureHandler(){ return new AjaxAuthenticationFailureHandler(); } public AccessDeniedHandler ajaxAccessDeniedHandler() { return new AjaxAccessDeniedHandler(); } @Bean public AjaxLoginProcessingFilter ajaxLoginProcessingFilter() throws Exception { AjaxLoginProcessingFilter filter = new AjaxLoginProcessingFilter(); filter.setAuthenticationManager(authenticationManager(authenticationConfiguration)); filter.setAuthenticationSuccessHandler(ajaxAuthenticationSuccessHandler()); filter.setAuthenticationFailureHandler(ajaxAuthenticationFailureHandler()); return filter; } // @Bean // public AjaxLoginProcessingFilter ajaxLoginProcessingFilter(){ // AjaxLoginProcessingFilter ajaxLoginProcessingFilter = new AjaxLoginProcessingFilter(); // ajaxLoginProcessingFilter.setAuthenticationManager(authenticationManagerBean()); // return ajaxLoginProcessingFilter; // } } @Slf4j @Component public class AjaxAuthenticationProvider implements AuthenticationProvider { @Autowired private UserDetailsService userDetailsService; @Autowired private PasswordEncoder passwordEncoder; /** * 검증에 대한 구현 부분 * * 여기서 전달받는 authentication 객체는 AuthenticationManager에서 전달받는 것 * @param authentication the authentication request object. * @return * @throws AuthenticationException */ @Transactional @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { String username = authentication.getName(); String password = (String) authentication.getCredentials(); log.info("ajax Authentication"+ authentication); log.info("ajax username : "+username); log.info("ajax password : "+password); /** * db에 있는 사용자를 가져오는 부분 */ AccountContext accountContext = (AccountContext)userDetailsService.loadUserByUsername(username); if (!passwordEncoder.matches(password, accountContext.getPassword())){ throw new BadCredentialsException("ajax invalid password!"); } /** * 섹션 4-8에서 secret key 추가해서 검증하는 부분 */ // FormWebAuthenticationDetails formWebAuthenticationDetails = (FormWebAuthenticationDetails) authentication.getDetails(); // String secretKey = formWebAuthenticationDetails.getSecretKey(); // // if (secretKey == null || !"secret123".equals(secretKey)){ // throw new InsufficientAuthenticationException("secret key invalid"); // } AjaxAuthenticationToken authenticationToken = new AjaxAuthenticationToken(accountContext.getAccount(),null,accountContext.getAuthorities()); // log.info(""+accountContext.getAccount()); // log.info(""+authenticationToken); return authenticationToken; } /** * parameter 로 전달되는 authentication 타입과 여기서 검증하려는 대상의 타입이 일치하면 검증하도록 하는거 * @param authentication * @return */ @Override public boolean supports(Class<?> authentication) { return authentication.equals(AjaxAuthenticationToken.class); } } public class AjaxAuthenticationToken extends AbstractAuthenticationToken { private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID; private final Object principal; private Object credentials; /** * 인증받기전에 사용자가 입력한 아이디와 비밀번호 담는 생성자 * */ public AjaxAuthenticationToken(Object principal, Object credentials) { super(null); this.principal = principal; this.credentials = credentials; setAuthenticated(false); } /** * 여기는 인증 완료후 아이디와 비번, 권한정보를 담는 생성자 */ public AjaxAuthenticationToken(Object principal, Object credentials, Collection<? extends GrantedAuthority> authorities) { super(authorities); this.principal = principal; this.credentials = credentials; super.setAuthenticated(true); // must use super, as we override } public static UsernamePasswordAuthenticationToken unauthenticated(Object principal, Object credentials) { return new UsernamePasswordAuthenticationToken(principal, credentials); } public static UsernamePasswordAuthenticationToken authenticated(Object principal, Object credentials, Collection<? extends GrantedAuthority> authorities) { return new UsernamePasswordAuthenticationToken(principal, credentials, authorities); } @Override public Object getCredentials() { return this.credentials; } @Override public Object getPrincipal() { return this.principal; } @Override public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException { Assert.isTrue(!isAuthenticated, "Cannot set this token to trusted - use constructor which takes a GrantedAuthority list instead"); super.setAuthenticated(false); } @Override public void eraseCredentials() { super.eraseCredentials(); this.credentials = null; } } @Slf4j public class AjaxLoginProcessingFilter extends AbstractAuthenticationProcessingFilter { private ObjectMapper objectMapper = new ObjectMapper(); private static final String XML_HTTP_REQUEST = "XMLHttpRequest"; private static final String X_REQUESTED_WITH = "X-Requested-With"; public AjaxLoginProcessingFilter() { /** * 여기서 정한 경로의 요청만 받음 * 여기서 path 가 일치해야만 수행함 */ super(new AntPathRequestMatcher("/login", "POST")); } @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException, IOException, ServletException { log.info("isAjax processing"); if (isAjax(request)){ throw new IllegalStateException("Authentication is not supported"); } AccountDto accountDto = objectMapper.readValue(request.getReader(), AccountDto.class); /** * accountDto 비어있는지 확인하는 부분인데 StringUtils.isEmpty 가 deprecated 되어서 ObjectUtils.isEmpty 사용 */ if (ObjectUtils.isEmpty(accountDto.getUsername()) || ObjectUtils.isEmpty(accountDto.getPassword())){ throw new AuthenticationServiceException("Username op Password is empty"); } AjaxAuthenticationToken token = new AjaxAuthenticationToken(accountDto.getUsername(), accountDto.getPassword()); return this.getAuthenticationManager().authenticate(token); } /** * 클라이언트와 약속 정해서 * 그게 참이면 ajax 요청이 맞다고 판단함 * @param request * @return */ private boolean isAjax(HttpServletRequest request) { return "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); } }
-
미해결초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지
ch08 02_instagram_exp.py 실행 시 오류 발생
코드에 USER_ID와 USER_PASSWORD는 제 인스타그램 계정으로 설정했습니다.실습하는 컴퓨터에서 해당 ID와 패스워드로 인스타그램에 로그인도 확인했구요.실습 과정과 같이 실행했더니 아래와 같이 에러가 발생합니다. 설치된 패키지 정보는 아래와 같습니다.(ch08_env) D:\inflearn_chatGPT\ch08>pip show openaiName: openaiVersion: 0.28.1Summary: Python client library for the OpenAI APIHome-page: https://github.com/openai/openai-pythonAuthor: OpenAIAuthor-email: support@openai.comLicense:Location: D:\inflearn_chatGPT\ch08\ch08_env\Lib\site-packagesRequires: aiohttp, requests, tqdmRequired-by:(ch08_env) D:\inflearn_chatGPT\ch08>pip show instagrapiName: instagrapiVersion: 2.0.1Summary: Fast and effective Instagram Private API wrapperHome-page: https://github.com/subzeroid/instagrapiAuthor: Mark SubzeroidAuthor-email: 143403577+subzeroid@users.noreply.github.comLicense: MITLocation: D:\inflearn_chatGPT\ch08\ch08_env\Lib\site-packagesRequires: pycryptodomex, pydantic, PySocks, requestsRequired-by:< 실행 및 오류 메시지 >(ch08_env) D:\inflearn_chatGPT\ch08>python 02_instagram_exp.pyTraceback (most recent call last): File "D:\inflearn_chatGPT\ch08\ch08_env\Lib\site-packages\instagrapi\mixins\private.py", line 360, in sendprivate_request response.raise_for_status() File "D:\inflearn_chatGPT\ch08\ch08_env\Lib\site-packages\requests\models.py", line 1021, in raise_for_status raise HTTPError(http_error_msg, response=self)requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://i.instagram.com/api/v1/accounts/login/During handling of the above exception, another exception occurred:Traceback (most recent call last): File "D:\inflearn_chatGPT\ch08\02_instagram_exp.py", line 17, in <module> cl.login(USER_ID, USER_PASSWORD) File "D:\inflearn_chatGPT\ch08\ch08_env\Lib\site-packages\instagrapi\mixins\auth.py", line 441, in login logged = self.private_request("accounts/login/", data, login=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\inflearn_chatGPT\ch08\ch08_env\Lib\site-packages\instagrapi\mixins\private.py", line 542, in private_request raise e File "D:\inflearn_chatGPT\ch08\ch08_env\Lib\site-packages\instagrapi\mixins\private.py", line 527, in private_request self._send_private_request(endpoint, **kwargs) File "D:\inflearn_chatGPT\ch08\ch08_env\Lib\site-packages\instagrapi\mixins\private.py", line 447, in sendprivate_request raise ProxyAddressIsBlocked(**last_json)instagrapi.exceptions.ProxyAddressIsBlocked: Instagram has blocked your IP address, use a quality proxy provider (not free, not shared)(ch08_env) D:\inflearn_chatGPT\ch08>
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2.Driver 오류와 HelloProjectApplication 실행오류
[질문 내용]여기서 org.h2.Driver 인식이 안되는 문제가 발생합니다. 초록색으로 떠야하는 것 같은데 왜 인식이 안되는지 모르겠어요. build.gradle에도 dependencies에도 h2관련되어서 잘 추가했고 뒤에 띄어쓰기도 되어 있지 않습니다! 이 상태에서 HelloProjectApplication을 실행시켰더니 여러 오류들이 뜨는 것을 발견했습니다. com.zaxxer.hikari.pool.HikariPool j.LocalContainerEntityManagerFactoryBeano.s.boot.SpringApplication 이 3곳에서 에러가 발생합니다. 아래에 소스코드 파일 구글드라이브 첨부드립니다.. 감사합니다!https://drive.google.com/drive/folders/18tc10v1OtuO7iS6ZFTqcy0ag6eJH0NGU?usp=sharing
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
도메인 객체와 영속성 객체를 구분하게 되면
도메인 객체와 영속성 객체를 구분하게 되면 비즈니스 로직을 짤때 JPA에서 제공해주는 기능들을 사용하지 못할거 같은데 제가 이해한 방식들이 맞나요??예를들어 User의 update 메소드를 확인해보면 기존 JPA에서 repository로 영속성 객체를 가져와서 값을 수정하는 방식이 아닌 완전히 새로운 User 객체를 생성하고 repository로 save 하는 방식으로 구현을 하시길래 그러면 JPA에서 영속성 객체들 끼리 단방향 매핑이나 양방향 매핑을 구현한 객체들은 도메인 객체로 어떻게 연결지어야할지 감이 안잡히네요..
-
해결됨실전! 스프링 데이터 JPA
커스텀 인터페이스 구현체 이름 작성 시 순환 참조 발생 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 영한님. 이번 강의도 잘 수강한 학생입니다.강의 내용과 공식 문서를 참고하며 간단한 게시글 리포지토리를 만들어보고자, 아래처럼 작성했었습니다. public interface BoardRepository { Long save(final Board board); ... }@Repository @RequiredArgsConstructor public class BoardJpaRepositoryImpl implements BoardRepository { private final BoardJpaRepository boardJpaRepository; ... }public interface BoardJpaRepository extends JpaRepository<Board, Long> { }강의 내용대로 스프링 데이터 JPA인 BoardJpaRepository에 Impl을 붙인 BoardJpaRepositoryImpl을 만들었는데, 아래와 같이 순환 참조 문제가 발생했습니다. The dependencies of some of the beans in the application context form a cycle: boardController defined in file [/Users/hyunjoonchoi/Desktop/2024/2024-mju-mentoring/build/classes/java/main/com/mju/mentoring/board/controller/BoardController.class] ↓ boardService defined in file [/Users/hyunjoonchoi/Desktop/2024/2024-mju-mentoring/build/classes/java/main/com/mju/mentoring/board/service/BoardService.class] ┌─────┐ | boardJpaRepositoryImpl defined in file [/..../build/classes/java/main/com/mju/mentoring/board/infrastructure/BoardJpaRepositoryImpl.class] └─────┘ Action: Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true. 그런데 이름을 BoardRepositoryImpl, JpaBoardRepositoryImpl 등 다른 이름으로 하니까 순환 참조 문제가 해결되더라구요이에 대해서 다른 외국 개발자 분들도 이슈로 올리고, 그것들을 찾아봤으나 메인테이너 분이 @Lazy를 사용하거나 ObjectProvider를 사용해야 한다고 말씀해주시는 것 밖에 없었습니다. 공식 문서 (https://docs.spring.io/spring-data/jpa/docs/1.5.0.RELEASE/reference/html/repositories.html#repositories.create-instances)를 보면 스프링 데이터 JPA + Impl로 할 시 자동으로 스프링 데이터 JPA의 구현체로 인식한다고 되어 있는 것 같은데, 이런 순환 참조 이슈가 발생한 원인을 알 수 있을까요? 이를 해결해보고자 스프링 데이터 JPA 레포지토리에 직접 이슈로 남기고 (https://github.com/spring-projects/spring-data-jpa/issues/3320) 답변을 받았긴 했습니다만, 여전히 다른 이야기를 하시는 것 같아 영한 님께도 문의드리고 싶습니다!
-
해결됨코딩테스트 [ ALL IN ONE ]
강의자료 공유 요청 드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강사님 강의 너무 잘 보고 있습니다.교재 공유 요청 드립니다!
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
Checked, Unchecked 예외 변환 질문드립니다.
안녕하세요. 복습 도중 개념적으로 혼동이 와서 질문드립니다.Checked Exception - 체크를 하라고 만든 예외Unchecked Exception(Runtime Exception) - 체크를 하지 말라고 만든 예외예를 들어서 NullPointerException 같은 경우, 개발자가 예외를 잡아서 처리하지 않습니다.런타임 예외는 원래 처리하지 않기 때문에 당연하다고 생각합니다.그런데 체크를 하라고 만든 예외를 체크를 하지 말라고 만든 예외로 변환을 하는 것이 개념적으로 이해가 잘 가지 않습니다.Checked 예외를 Unchecked 예외로 변환함으로써Unchecked는 체크를 하는게 아닌데, 마치 Checked 처럼 핸들링 하는 느낌이 듭니다.물론 강의에서 설명해 주신 변환을 함으로써의 이점은 이해가 잘 갑니다!throws SQLException → throws JPAException반복적인 throws 을 변경하지 않아도 되고, 특정 기술에 의존하지 않아도 됨다만, 이는 커스텀 Checked 예외를 사용해도 해결할 수 있다고 생각합니다.public class MyCustomCheckedException extends Exception { ... }Checked 예외를 커스텀 Checked 예외로 변환 이 경우에는 반복적인 throws 작성은 피할 수 없긴 합니다.코틀린 등의 언어에서 이런 개념적 혼동을 막기 위해 Checked/Unchecked를 나누지 않는 것인지..제가 무언가 잘못 이해하고 있는것이 있을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
매출액의 종류 문제에서 시간초과 에러가 뜨는데요...
public static void main(String[] args){ Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); int[] arr = new int[a]; for(int i = 0 ; i < a ; i++) { arr[i] = in.nextInt(); } String answer = ""; HashMap<Integer, Integer> map = new HashMap<>(); for(int i = 0 ; i <= (a - b) ; i++) { map.clear(); for(int j = i ; j < (i+b) ; j++) { map.put(arr[j], map.getOrDefault(arr[j], 0) + 1); } answer = answer + map.size() + " "; } System.out.println(answer); }저는 이렇게 짰는데요...아무리 봐도 강의에서 알려주신 것과 크게 차이를 못 느끼겠는데... 혹시 어떤 부분에서 문제가 되는걸까요?
-
미해결[30만 수강생 기념] 1/31 김영한님 온라인 밋업 Live
제발 나와라이
당첨되게 해주세요.
-
해결됨홍정모의 따라하며 배우는 C언어
5분 50초경 제가 생각하는 게 맞는 건가요?
int a = 1;int* a_ptr = &a;a_ptr은 a를 가리키고a_ptr + 1은 a + 1을 가리킨다.배열에서는 원소에서 다음 원소로 갈 때 원소의 자료형의 크기 만큼 이동하는 걸 생각하면a + 1은 a 다음의 변수를 가리키는 것이고, a에서 a의 자료형인 (int 자료형의 크기) * 1 만큼 이동하는 것이다.그렇게 (int 자료형의 크기) * 1 만큼 이동을 해야지 a 다음의 변수를 가리킬 수 있다. 이렇게 생각을 해봤는데 이게 맞는 걸까요?a 다음의 변수라는 표현은 뭔가 틀린 것 같은데 저도 잘은 모르겠습니다.
-
해결됨웹플로우(Webflow) 시작하기 - 코딩 없이 자유도 높은 프로토타입 만들기
대시보드에서 만든 사이트 자체를 삭제하는 방법
대시보드에서 만든 사이트 자체를 삭제하는 방법을 알려주세요.10개가 넘어 삭제하고 다시 New site를 하고 싶은데 이미 만들어진 사이트로 인해 새로운 사이트를 만들 수 없습니다. 이미 만들어진 사이트를 삭제하는 방법을 알려 주세요.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestMapping에 대하여
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]1. 스프링 부트를 구동시켜서 톰캣 서버가 띄워지면 HandlerMapping 인터페이스가 애플리케이션 내에 존재하는 핸들러 매핑을 시도하는데 우선적으로 HandlerMapping 인터페이스의 구현체인 RequestMappingHandlerMapping 클래스가 @RequestMapping 어노테이션이 지정된 핸들러를 매핑해서 사용자가 해당 어노테이션으로 지정된 핸들러 중 하나를 요청할 경우 해당 핸들러가 반환되고해당 핸들러에 대한 어댑터를 연결하고 호출하는데 필요한 구현체가 RequestMappingHandlerAdapter 로 이해했는데 맞을까요? 1번의 내용이 맞다면 @RequestMapping을 컨트롤러에 지정할 경우 해당 컨트롤러가 매핑 정보로 활용이 되는데 한 컨트롤러 내에 여러 메서드에 @RequestMapping을 지정할 경우 그 메서드들이 전부 컨트롤러가 되는 것인가요? 그렇다면 메서드들을 정의하고 있는 클래스도 컨트롤러인데 어떤 차이가 있는 건지 궁금합니다 ! 그리고 추가로 컨트롤러는 클래스로 알고있는데 어떻게 메서드 레벨에 @RequestMapping을 지정할 수 있는지도 궁금합니다..
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 데이터베이스 연결 문제
[질문 내용]db 생성 확인하고 주신대로 입력하였는데 이런 오류가..ㅠ 도와주심 감사하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
값은 정상적으로 나오는데 어디가틀린지모르겠습니다.
안녕하세요 큰돌님. 언제나 늘감사하게 수업듣고있습니다.vscode에서는 이코드로돌리면 정상적으로 나오는데 어디가틀린지 모르겠네요 한번만 봐주실수있을까요? 감사합니다.#include<bits/stdc++.h> using namespace std; string a[104][104]; int h,w,cnt,ret[104][104]; string s; bool flag; int main() { cin >> h >> w; for(int i=0; i<h; i++){ for(int j=0; j<w; j++){ cin >> s; a[i][j] = s; } } for(int i=0; i<h; i++){ flag = 0; for(int j=0; j<w; j++){ if(a[i][j] == "c"){ cnt = 0; flag = 1; ret[i][j] = cnt; } if(flag && a[i][j] == "."){ cnt++; ret[i][j] = cnt; } else if(!flag) { flag = 0; ret[i][j] = -1; } } }; for(int i=0; i<h; i++){ for(int j=0; j<w; j++){ cout << ret[i][j] << " "; } cout << "\n"; } return 0; }
-
해결됨홍정모의 따라하며 배우는 C언어
13.7강 0:53 fputs 함수 질문이 있습니다.
fputs 함수의 함수 원형에서 첫 번째 인수가 char* 형태인데 char 형태의 ch를 인수로 입력해서 그런지 아래 오류가 발생하면서 실행이 안되는 것 같습니다.'function': 'const char *' differs in levels of indirection from 'int' 혹시 다른 설정을 해야 하는 걸까요..??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
정적 생성 메서드 파라미터에는 DTO or Parameters ?
package jpabook.jpashop.domain.item; import jakarta.persistence.DiscriminatorValue; import jakarta.persistence.Entity; import jpabook.jpashop.controller.BookForm; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import static lombok.AccessLevel.PROTECTED; @Entity @DiscriminatorValue("B") @Getter @Setter @NoArgsConstructor(access = PROTECTED) public class Book extends Item { private String author; private String isbn; // public static Book createBook(String author, String isbn, String name, int price, int stockQuantity) { // Book book = new Book(); // book.setName(name); // book.setPrice(price); // book.setStockQuantity(stockQuantity); // book.setAuthor(author); // book.setIsbn(isbn); // // return book; // } public static Book createBook(BookForm form) { Book book = new Book(); book.setName(form.getName()); book.setPrice(form.getPrice()); book.setStockQuantity(form.getStockQuantity()); book.setAuthor(form.getAuthor()); book.setIsbn(form.getIsbn()); return book; } }이렇게 정적 생성 메서드의 파라미터를 Dto형태로 두는 것과 파라미터를 전부 명시적으로 적는 것 중에서 어떤 코드가 더 나은 코드일까요?createBook을 호출해서 사용할 때도, 인자 값을 Dto 하나만 넣어주면 되고, 실제 스펙은 BookForm에서 간단하게 확인 가능하다고 판단했습니다..!
-
미해결카프카 완벽 가이드 - 코어편
브로커 네트워크 주소 질문
안녕하세요, 인텔리제이에서 클라이언트 프로듀서 생성 후 데이터 전송 시 브로커를 찾을 수 없다는 에러 로그가 자꾸 발생해서, server.properties의 advertised.listeners에서 저희가 사용하는 고정 IP를 직접 작성해주니 해결되었는데요, 이렇게 하니 외부 클라이언트에서 192.168.56.101 주소로 전송한 데이터는 VM에서 콘솔 컨슈머를 통해 read 할 때 localhost로 접근 시 조회가 되지 않습니다. 혹시 Host PC에서 VM의 브로커에 send 할 때 advertised.listeners 값을 고정 IP로 등록해주어야 하는 이유가 있는지, 그리고 이렇게 등록 시 VM 내부에서도 localhost 참조가 불가능해지는게 맞는지 알 수 있을까요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
특정 섹션 모바일 수강 관련 문의!
프로님 반가워요 ㅎㅎ강의 너무 재미있게 듣고 있습니다 !다만 모바일 환경에서 특정 섹션이 재생되지 않아서 문의드려요! "섹션 4. Sprint2 - 배포 파이프라인 단계적으로 구축하기" 파트가 PC 웹브라우저에선 정상 시청이 되고 모바일에서는 아래화면으로 나오더라구요!모바일에서 시청할 수 있으면 하는 마음에 문의드려요 !..
-
해결됨블렌더 입문 : UX/UI 디자이너를 위한 3D 아이콘으로 배우는 블렌더!
스케일 오리진...?
이번엔 제가 또 무엇을 눌렀을까요?Circle의 스케일을 줄이려고했더니, 빨간 표시를 해 둔 위치를 기준으로XYZ 위치값이 바뀌면서 늘었다가 줄었다가 하는데 제가 또 무엇을 건든걸까요...? 혹시몰라 Ctrl + A의 Apply All을 해도,,,클리어 페어런트를 해도,,, Origin to Geometry를 해도,,, 그대로인 이유가 무엇일까요 ㅜ ㅜ