묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
[Next Step] 코딩 스터디 맨티 모집
[Next Step] 코딩 스터디 맨티 모집👉 혼자가 아닌, 함께 성장하는 코딩의 첫걸음! 안녕하세요 🙌코딩에 관심은 있는데…✔ 어디서부터 시작해야 할지 막막하거나✔ 혼자 공부하다가 금방 동기부여가 떨어지거나✔ 실제로 활용할 경험이 부족해 고민한 적 있으신가요?「Next Step」은 그런 고민을 가진 분들을 위해 만들어진 비전공자·초보자 친화형 코딩 스터디입니다.처음부터 차근차근 배우면서, 함께 성장하고 기록을 남기는 과정을 경험할 수 있어요 🚀👨🏻🏫운영자 소개• ㅇㅅ대학교 컴퓨터공학과 졸업• IT 연구원 인턴 경험• 현) 대학생·비전공자 대상 코딩 스터디/멘토링 다수 진행 💡 운영자의 포부저도 혼자 공부할 때는 늘 벽에 부딪히곤 했습니다.하지만 남을 가르치며 더 깊이 배우고, 함께 공부하면서 서로의 성장을 지켜볼 때 큰 동기부여가 되더라고요.「Next Step」은 저 혼자만의 성장이 아니라, 함께 배우고 익히며 나아가는 과정 그 자체를 소중히 생각하는 스터디입니다. ✅ 스터디 방식• 주 1회 정규 스터디(오프라인: 신촌, 홍대, 서울대입구 / 온라인: 디스코드)• 진행 구조: - 개념 학습 (코딩 기초 설명) - 실습 & 문제 풀이 (직접 따라하면서 이해) - 미니 프로젝트 or 코드 리뷰 (작은 결과물 만들기)• 실제 협업 경험: 깃허브 기록, 코드리뷰, 팀 프로젝트 📚 커리큘럼 (예시)1⃣ 1개월차: - 자바/자바스크립트/파이썬 기초 (변수, 조건문, 반복문 등) - 생활 속 문제를 코드로 풀어보기2⃣ 2개월차: - 간단한 데이터 다루기 (텍스트/숫자 정리하기) - 미니 웹페이지 or 간단한 자동화 프로그램 만들기3⃣ 3개월차: - 팀 프로젝트 (주제 정해서 결과물 만들고 발표하기) - 협업 도구 익히기 (깃허브, 코드리뷰 경험)* 비전공자도 따라올 수 있도록 쉬운 단계부터 진행하며, 세부 커리큘럼은 참여자 수준과 의견에 맞게 조정됩니다! 📍 모집 정보• 모집 마감: ~ 9월 30일(화)• 모집 대상: 대학생 / 휴학생 / 취준생 / 직장인(👉 코딩 처음 시작하는 분도 환영!)• 활동 기간: 2025년 10월 ~ 12월 (3개월)• 모집 인원: 10명 내외• 참가비: 없음 (스터디룸/카페 이용 시 1/N)• 준비물: 노트북 필수• 학습언어 : Java, JavaScirpt, Python 📝 신청하기👉 https://forms.gle/wZNpDxnMyM5tqjbw8 ⚠ 스터디 맛보기https://treealgorithm.notion.site/2025-Code-Study-2613eb454ce980d5bdb2ce4b9ed042a1
-
미해결[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
뭘 해야지 오늘 미션완료가 뜯는건가요?
설문진행, 도서등록, 37페이지까지 결제하고 완료 했습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
마이그레이션 오류입니다.
강의에서 강사님께서 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 allStarting a Gradle Daemon, 5 stopped Daemons could not be reused, use --status for detailsFAILURE: 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 to create Jar file C:\Users\seong\.gradle\caches\jars-9\3baa90cc2341a9ffd1656b87b2a3526e\spring-core-6.2.11.jar.동일한 이런 jar 파일 오류가 떴습니다.이 오류를 어떻게 해결해야 할까요 .... 도와주세요 ㅜㅜ
-
미해결타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게
Router 궁금증
<BrowserRouter> <Routes> <Route path="home" element={<AdminHome />} /> <Route path="post" element={<AdminPost />} /> <Route path="update/:id" element={<AdminUpdate />} /> </Route> </BrowserRouter>Q1. 저는 항상 app.js 위에 코드와 같이 작성하는 편인데 강의에서는 주로 CreateBrowserRouter를 따로 이용하시는데 특별한 이유가 있나요?Q2. 간혹 프로젝트 중간중간 Header나 Footer 컴포넌트를 몇몇 페이지에서는 안보이거나 다른 header, footer 컴포넌트가 보이게끔 하고 싶은데 이런 경우 주로 어떻게 하실지 생각(?) 아이디어(?) 가 궁금합니다. 저는 안보이게 하고 싶은 페이지를 url로 구분하는 편인데 다른 좋은 방법이 있을까요?
-
미해결[UI3 업데이트] 피그마 배리어블을 활용한 디자인 시스템 구축하기
베리어블을 등록했는데 토큰으로 잡히지않아요
베리어블을 등록해서 개발할려고하는데 플러그인으로 해도 등록한 토큰들이 잡히지 않아요.. 뭐가 문제일까요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
제본
제본을하려고 합니다!총 매수가 어느정도 나오나요??
-
미해결[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
26페이지 1번 부터 질문 하게 되네요 ㅠ.ㅠ
윈도우 파워셀을 관리자 권한으로 실행하니까 다음 화면이 뜹니다.
-
미해결직장인 생존 엑셀 - 8개의 실무 프로젝트로 엑셀 마스터하기
기능 범위 지정 시 헷깔리는분
임의데이터 선택ctrl+A 전체선택머릿글포함 선택머릿글빼고선택 케이스마다 다른데 쉽게 외우는법이나 기준이있나요?
-
미해결직장인 생존 엑셀 - 8개의 실무 프로젝트로 엑셀 마스터하기
9강 양수 음수혼합차트
폭포차트로 구현이가능한가요?
-
미해결[VLM101] 파인튜닝으로 멀티모달 챗봇 만들기 (feat.MCP)
좋은 강의 감사합니다. 궁금한게 있어 질의 드립니다.
# 모델을 로드하는 코드 model_id = "/work/checkpoints/hf/Qwen2.5-VL-3B-Instruct" # 사용할 모델 경로 지정 model_org = Qwen2_5_VLForConditionalGeneration.from_pretrained( model_id, # 모델 경로로부터 모델 불러오기 device_map="auto", # 자동으로 장치 설정 (예: GPU 사용) torch_dtype=torch.bfloat16, # 모델의 데이터 타입을 bfloat16으로 설정 (메모리 최적화) ) processor = AutoProcessor.from_pretrained(model_id) # 모델에 맞는 processor 불러오기 ==> 질문 사항 (2개) 질문1) 위 코드에 동일한 모델을 model_org 와 processor 로 정의한 거 같은데 왜 이렇게 정의한 이유는 무엇인가요? 질문2) datacollator 는 모델마다 정의하는 방법이 다른 거 같은데 현재 샘플로 주신 모델은 어디를 참고해야 하나요?
-
해결됨수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
18강에서 Blog-Image-Maker 연결시에 에러가 납니다.
JSON parameter needs to be valid JSON위와 같은 에러가 발생하여 이미지 생성에 실패합니다. JSON 내용은 아래와 같습니다.{ "image_prompt": "A clear and inviting workspace showing a modern laptop displaying a simple Python code editor with 'print(\"Hello, Python!\")' and a friendly terminal window ready for input. Bright, high-definition, realistic style.", "image_alt": "파이썬 첫 코드 실행 환경을 보여주는 현대적인 노트북 작업 공간" }Blog-Image-Maker에서 같은 image_prompt로 실행시에는 문제 없이 진행되고 있습니다.
-
미해결스프링 시큐리티 OAuth2
JWT 조회 에 대한 질문
안녕하십니까. 스프링 시큐리티 강의를 듣고 있는 대학생입니다. 현재 강의를 들으면서 팀 프로젝트에 소셜 로그인을 적용하던 중 궁금증이 생겨 글을 작성하게 되었습니다. 현재 사용자가 로그인 후 토큰을 발급받고 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(); } }
-
미해결[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
클로드 코드 결제시 우측상단 경고창
이 나오면서 결제가 안되는데요.참 어렵습니다. ㅎㅎ
-
해결됨
ansible 설치
16강 수강중에 있고 ping이 보내지지 않습니다.
-
미해결[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
33페이지 3번 1.claude account.. 눌렀는데
구글로 계속하기 안뜨고아래 화면이 나옵니다.
-
미해결[4주 과정] <클로드 코드> 완독 챌린지 : 매일 1시간씩 4주 동안 클로드 코드 도서 완독하기!
eBook 출판 계획이 있으신가요?
가볍게 클로드에 대해, 클로드 사용법과 응용 방법을 접하기 좋은 책이라고 생각합니다.다만, 오늘 메일을 받아보니 기존 책의 내용에서 수정사항이 많은 것 같습니다.수정이 완료된다면, pdf 파일이나 eBook을 받아볼 수 있을까요?
-
미해결Kafka & Spark 활용한 Realtime Datalake
터미널에서 NAT 인스턴스로 직접 로그인 안됨
16강 ansible 설치를 위해 터미널에서 NAT 인스턴스로 직접 로그인하려고 하는데 오류가납니다. PS C:\Users\nayun\downloads> ssh -i public-nat-key.pem ec2-user@3.39.207.192ssh: connect to host 3.39.207.192 port 22: Connection timed out 15강까지 원활히 강의따라 실습 진행한 상태입니다.
-
해결됨[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)
피그마 수업자료
피그마 소스파일을 복사해서 붙여 넣어도 그림은 안나오는데 어떻게 하는지 알려주세요
-
해결됨QGIS 입문자 올인원 스타터팩 (이론/실습형)
[음영기복도] 심볼과 툴박스 차이 여부
안녕하세요.심볼-음역기복도와 툴박스-hillshade가 기능적으로 차이가 있는 건가요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
사용자 삭제가 안되는 이유
그림 보시면 사용자 삭제 버튼이 활성화 안되는 이유는 뭘까요??하위 정책도 없습니다.