172만명의 커뮤니티!! 함께 토론해봐요.
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
안녕하세요, node.js 설치시 Linux, nvm을 선택하고 Copy해서 Linux창에서 설치하였는데, 첨부한 그림 파일과 같은 오류메세지가 뜹니다. nvm을 찾을 수 없다고 하는 것 같은데, 혹시 오류를 어떻게 해결할 수 있을지 여쭙니다. 참고로 node.js 다운로드 창에 들어가보니 버전이 V22.19.0으로 되어 있습니다. 책에는 V22.18.0으로 되어 있습니다. 그런데 V22.18.0버전은 더 이상 node.js 다운로드 페이지에서 찾을 수 없습니다.
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
이석호
2025-09-22T13:04:57.508Z
댓글 2
좋아요 0
조회수 240
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
책을 보면 윈도우의 경우 wsl에 우분투올려서 진행하는데, 금일 기준으로는 클로드코드 네이티브 윈도우용도 있는 것으로 보이는데 그걸로 진행해도 뒷부분 진행에 문제가 없을까요?
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
kykim818
2025-09-22T12:30:45.233Z
댓글 2
좋아요 0
조회수 169
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
https://claude.ai/settings/billing 에러문제로 결제가 되질 않아서 클로드로드 측에 문의해서 받은 결제 링크입니다. 이걸로 결제하니 오류도 발생하지 않더라구요.
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
불을뿜는 냉기마법사
2025-09-22T12:30:26.074Z
댓글 2
좋아요 1
조회수 965
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
저 주소를 복사해 브라우저에 직접 붙여넣었더니 계속 결제 실패하는데 홈 클로드에 들어가서 결제해도 되나요? 계속 결제 실패하면 어떻게 하나요?ㅠ
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
고은아
2025-09-22T12:13:55.757Z
댓글 3
좋아요 0
조회수 545
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
설문진행, 도서등록, 37페이지까지 결제하고 완료 했습니다.
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
불을뿜는 냉기마법사
2025-09-22T08:35:40.282Z
댓글 3
좋아요 0
조회수 132
미해결
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
강의에서 강사님께서 11에서 17로 바꾸라는 모든 설정 확실하게 수정 완료했고 gradle 코드 수정하여 실행하니 A problem occurred configuring root project 'library-app'. > java.util.concurrent.ExecutionException: org.gradle.api.GradleException: Failed to create Jar file C:\Users\seong\.gradle\caches\jars-9\3baa90cc2341a9ffd1656b87b2a3526e\spring-core-6.2.11.jar. 아래와 같은 jar 파일 오류가 떴습니다. 구글링과 GPT를 써보니 캐시 파일 버전 충돌 오류라고 하여 캐시 파일을 삭제 하려고 해도 디렉터리가 비어있지 않다는 오류가 뜨며 삭제되지 않고, 또 .\gradlew wrapper 버전이 현재 7.5인데 스프링 부트 3.5.6은 최소 8.x를 사용한다고 하여 이것 또한 업그레이드 하려고 하였으나 PS C:\Project\Study-SpringBoot\library-app> .\gradlew wrapper --gradle-version 8.3 --distribution-type all Starting a Gradle Daemon, 5 stopped Daemons could not be reused, use --status for details FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project 'library-app'. > java.util.concurrent.ExecutionException: org.gradle.api.GradleException: Failed t o create Jar file C:\Users\seong\.gradle\caches\jars-9\3baa90cc2341a9ffd1656b87b2a3526e\spring-core-6.2.11.jar. 동일한 이런 jar 파일 오류가 떴습니다. 이 오류를 어떻게 해결해야 할까요 .... 도와주세요 ㅜㅜ
java spring aws mysql spring-boot jpa
seongmin2053
2025-09-22T08:32:30.681Z
댓글 3
좋아요 0
조회수 206
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
제본을하려고 합니다! 총 매수가 어느정도 나오나요??
boll1235
2025-09-22T07:58:34.040Z
댓글 2
좋아요 0
조회수 131
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
윈도우 파워셀을 관리자 권한으로 실행하니까 다음 화면이 뜹니다 .
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
강동호
2025-09-22T07:41:50.552Z
댓글 2
좋아요 0
조회수 110
미해결
스프링 시큐리티 OAuth2
안녕하십니까. 스프링 시큐리티 강의를 듣고 있는 대학생입니다. 현재 강의를 들으면서 팀 프로젝트에 소셜 로그인을 적용하던 중 궁금증이 생겨 글을 작성하게 되었습니다. 현재 사용자가 로그인 후 토큰을 발급받고 MySQL에 리프레시 토큰을 저장한 뒤에, 사용자가 API에 접근할 때마다 매번 사용자 정보를 조회하는 것이 좋은 방법인지 궁금합니다. 현재 매번 조회하는 이유는 토큰의 사용자 정보가 서버 데이터베이스에 올바르게 저장된 사용자인지 검증하기 위해서 이 방식을 채택했습니다 package backend_lingua.linguas.infrastructure.security.filter; import backend_lingua.linguas.infrastructure.security.token.enumerated.TokenType; import io.jsonwebtoken.ExpiredJwtException; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import org.springframework.web.filter.OncePerRequestFilter; import java.io.IOException; @Slf4j @Component @RequiredArgsConstructor public class JwtAuthenticationFilter extends OncePerRequestFilter { private final JwtTokenProvider jwtTokenProvider; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String token = getBearerToken(request); // 토큰이 있는 경우에만 검증 if (StringUtils.hasText(token)) { try { if (jwtTokenProvider.validateAccessToken(token)) { Authentication authentication = jwtTokenProvider.getAuthentication(token, TokenType.ACCESS_TOKEN); SecurityContextHolder.getContext().setAuthentication(authentication); log.debug("Security Context에 '{}' 인증 정보를 저장했습니다.", authentication.getName()); } } catch (ExpiredJwtException e) { log.error("토큰 인증 실패: {}", e.getMessage()); response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Authentication failed"); return; } } filterChain.doFilter(request, response); } private String getBearerToken(HttpServletRequest request) { String bearerToken = request.getHeader("Authorization"); if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer ")) { return bearerToken.substring(7); } return null; } } public TokenInfo generateToken(Authentication authentication) { String accessToken = createAccessToken(authentication); String refreshToken = createRefreshToken(authentication); Date accessTokenExpiryDate = createExpiryDate(accessTokenExpiration); return TokenInfo.from(accessToken, refreshToken, accessTokenExpiryDate.getTime(), refreshTokenExpiration); } public String createAccessToken(Authentication authentication) { return createToken(authentication, accessTokenExpiration, accessTokenSecret); } public String createRefreshToken(Authentication authentication) { String token = createToken(authentication, refreshTokenExpiration, refreshTokenSecret); Date expiryDate = createExpiryDate(refreshTokenExpiration); // DB에 리프레시 토큰 저장 tokenService.createRefreshToken(token, expiryDate, authentication); return token; } private String createToken(Authentication authentication, long expirationTime, String secretKey) { String authorities = authentication.getAuthorities() .stream() .map(GrantedAuthority::getAuthority) .collect(Collectors.joining(",")); return Jwts.builder() .setSubject(authentication.getName()) // email .claim("auth", authorities) .setIssuedAt(new Date()) .setExpiration(createExpiryDate(expirationTime)) .signWith(createKey(secretKey)) .compact(); } public String getUsernameFromToken(String token, TokenType tokenType) { String secretKey = (tokenType == TokenType.ACCESS_TOKEN) ? accessTokenSecret : refreshTokenSecret; return Jwts.parserBuilder() .setSigningKey(createKey(secretKey)) .build() .parseClaimsJws(token) .getBody() .getSubject(); } public Authentication getAuthentication(String token, TokenType tokenType) { String username = getUsernameFromToken(token, tokenType); UserPrincipal userPrincipal = (UserPrincipal) userDetailsService.loadUserByUsername(username); return new UsernamePasswordAuthenticationToken( userPrincipal, token, userPrincipal.getAuthorities() ); } public boolean validateAccessToken(String token) { return validateToken(token, accessTokenSecret); } public boolean validateRefreshToken(String token) { return validateToken(token, refreshTokenSecret); } private boolean validateToken(String token, String secretKey) { try { Jwts.parserBuilder() .setSigningKey(createKey(secretKey)) .build() .parseClaimsJws(token); return true; } catch (ExpiredJwtException e) { log.error("만료된 JWT 토큰입니다."); throw e; // Filter에서 401 처리하도록 } catch (SecurityException | MalformedJwtException e) { log.error("잘못된 JWT 서명입니다."); } catch (UnsupportedJwtException e) { log.error("지원되지 않는 JWT 토큰입니다."); } catch (IllegalArgumentException e) { log.error("JWT 토큰이 잘못되었습니다."); } return false; } private Date createExpiryDate(long expirationTime) { return new Date(System.currentTimeMillis() + expirationTime); } private SecretKey createKey(String secret) { byte[] keyBytes = Decoders.BASE64.decode(secret); return Keys.hmacShaKeyFor(keyBytes); } @Service @RequiredArgsConstructor public class UserDetailsServiceImpl implements UserDetailsService { private final MemberRepository memberRepository; @Override @Transactional(readOnly = true) public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { Member member = memberRepository.findByEmail(email) .orElseThrow(() -> new UsernameNotFoundException("사용자를 찾을 수 없습니다: " + email)); return UserPrincipal.create(member); } } public class TokenServiceImpl implements TokenService { private final RefreshTokenRepository refreshTokenRepository; private final MemberRepository memberRepository; @Override @Transactional public RefreshToken createRefreshToken(String token, Date expiryDate, Authentication authentication) { String email = authentication.getName(); Member member = memberRepository.findByEmail(email) .orElseThrow(() -> new RuntimeException("사용자를 찾을 수 없습니다: " + email)); // 새 토큰 생성 RefreshToken refreshToken = RefreshToken.builder() .token(token) .member(member) .expiryDate(convertToLocalDateTime(expiryDate)) .build(); return refreshTokenRepository.save(refreshToken); } @Override @Transactional public void deleteRefreshToken(String email) { Member member = memberRepository.findByEmail(email) .orElseThrow(() -> new RuntimeException("사용자를 찾을 수 없습니다: " + email)); deleteRefreshTokenByUser(member); } @Override @Transactional public void deleteRefreshTokenByUser(Member member) { refreshTokenRepository.findByMemberId(member.getId()) .ifPresent(refreshTokenRepository::delete); } private LocalDateTime convertToLocalDateTime(Date date) { return Instant.ofEpochMilli(date.getTime()) .atZone(ZoneId.systemDefault()) .toLocalDateTime(); } }
java spring spring-boot oauth
Jun
2025-09-22T07:02:11.259Z
댓글 1
좋아요 0
조회수 105
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
이 나오면서 결제가 안되는데요. 참 어렵습니다. ㅎㅎ
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
불을뿜는 냉기마법사
2025-09-22T06:58:25.819Z
댓글 2
좋아요 0
조회수 658
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
구글로 계속하기 안뜨고 아래 화면이 나옵니다.
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
불을뿜는 냉기마법사
2025-09-22T06:24:50.719Z
댓글 2
좋아요 0
조회수 66
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
가볍게 클로드에 대해, 클로드 사용법과 응용 방법을 접하기 좋은 책이라고 생각합니다. 다만, 오늘 메일을 받아보니 기존 책의 내용에서 수정사항이 많은 것 같습니다. 수정이 완료된다면, pdf 파일이나 eBook을 받아볼 수 있을까요?
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
무영
2025-09-22T06:02:01.198Z
댓글 3
좋아요 0
조회수 148
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
라이브 사전 설문은 진행했는데, 챌린지 설문을 어디서 하는지 모르겠습니다.
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
serahan
2025-09-22T05:14:24.447Z
댓글 2
좋아요 0
조회수 84
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
(사진)
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
불을뿜는 냉기마법사
2025-09-22T04:54:47.615Z
댓글 2
좋아요 0
조회수 106
해결됨
6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
안녕하세요 딩코님 제가 완강을 하여 이력서를 작성해봤는데 보완·추가 할만한 부분을 알려주실수 있을까요 https://earthy-chalk-721.notion.site/Lee-Jeongwon-1aa176858bf380cca9cce9625a5ad1e4?pvs=73 강의중 살짝 봤는데 포공 졸업하셨나요,,, 역시 너무 잘배웠습니다
큐펀치
2025-09-22T04:30:57.429Z
댓글 1
좋아요 0
조회수 175
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
"가상 머신 플랫폼" 선택적 구성 요소를 사용하도록 설정하고 BIOS에서 가상화가 사용하도록 설정되어 있는지 확인하세요. 실행하여 "가상 머신 플랫폼"을 사용하도록 설정: wsl.exe --install --no-distribution 위에처럼 작성하고 나면 작업을 완료했습니다.라고 나오지만 그대로 에러가 발생합니다.
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
불을뿜는 냉기마법사
2025-09-22T04:02:04.854Z
댓글 3
좋아요 0
조회수 262
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
안녕하세요.... p32, git clone을 하니 github의 username을 물어보네요... 혹시 회원 가입을 하고 난 뒤에 git clone을 해야 할까요?
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
Kefa Lee
2025-09-22T03:02:08.880Z
댓글 3
좋아요 0
조회수 157
해결됨
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
26페이지1번_ 윈도우에 설치하려는데 파워셀을 관리자권한으로 실행했습니다. 26페이지2번_ 기능을 활성화 한다는데 파워셀의 C:\windows/system32에 다가 책 사각박스의 $ dism.exe /online..... 이걸 작성하는 건가요? 첫장부터 뭘 해야하는지 모르겠어요.
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
불을뿜는 냉기마법사
2025-09-22T00:51:44.562Z
댓글 2
좋아요 0
조회수 150
미해결
[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
영상 없는 건가요? 그럼 뭐하러..돈 주고 이걸 보라고 하는 건지..모르겠네.. 도서를 구매 하면 영상과 함께 책에 대한 설명을 듣는 거라 생각 하고 책과 영상을 구매한건데.. 영상이 없다면..다른 책이 내용은 더 좋던데..완전 난감 하네..
업무-생산성 인공지능(ai) ai-활용-(ax) claude 바이브코딩
민경언
2025-09-22T00:28:48.039Z
댓글 2
좋아요 2
조회수 174
해결됨
(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
func 매서드에서 while문 마지막 실행문인 node = node -> next -> next; 가 이해가 잘 안되었는데요. 해당 실행문 위에 있는 다른 실행문은 node->value 또는 node->next를 통해서 n1메모리에 참조해서 그 값을 가르키기 때문에 =을 통해 값변화가 일어난다. 하지만 node = node -> next -> next; 의 경우에 node는 func메서드가 가지고 있는 지역변수이기 때문에 main에서부터 참조받은 n1 변수를 변경하지 않는다. 이게 맞을까요? 저말고도 다른분들도 여럿 같은 질문을 했는데 정확한 답변이 없어서 제가 이해한게 맞는지 올려봅니다.. 그럼에도 확실하게 개념이 잡히지 않네요. node -> value 또는 node -> next조차도 func메서드 안에 있는 지역변수의 요소들인 건 매한가지 아닌가요...ㅠㅠ node도 메모리주소.. node->next->next도 메모리주소인데.. 왜 지역변수로 얕은복사(?)가 되는 것인지..ㅠㅠ
민혁
2025-09-21T13:19:40.333Z
댓글 2
좋아요 0
조회수 91