묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링부트 시큐리티 & JWT 강의
수료증 문의
혹시, 강의 수강 완료 후 수료증 발급이 가능할까요?
-
해결됨웹 개발자라면 꼭 알아야 할 보안 기초
수료증 문의
혹시, 강의 수강 완료 후 수료증을 받을 수 있는 강의 인가요?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
클라이언트 컴포넌트에서의 서버컴포넌트 재호출에 대한 질문
선생님이 이번 강의에서 서버액션을 이용한 서버컴포넌트 재검증에 대한 설명을 해주셨는데요. 방금 강의를 듣고나니 불현듯, 어? 그럼 클라이언트 컴포넌트에서, post요청을 날리면 서버컴포넌트 업데이트를 어떻게 치지? 방금 설명해주신것처럼 모든 post 요청을 서버액션으로 만든 후에 revalidatePath나 revalidateTag를 사용해야하는건가? 라는 의문점이 들었습니다. 보통 실무에서는 프론트가 다이렉트로 db에 접근하는 일이 거의 없기 때문에, 백엔드가 항상 붙어있는데그럼 결국 클라이언트 컴포넌트에서 서버액션을 통해 post요청을 보내고, 웹서버측에서는 백엔드에 post요청을 보내는식의 2번작업이 일어나야만, post요청이 끝나고 서버컴포넌트의 업데이트가 가능한걸까요 ?
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
App 라우터 쿼리스트링
App 라우터 방식에서 쿼리 스트링을 불러오는 방식이 강의를 보니까 두 가지로 확인 됩니다. 두 가지의 차이점이 무엇 인지와 두 개를 병행하면서 사용해도 상관없는지 확인 부탁 드립니다. 1. useSearchParams( ) 사용export default function Searchbar() { const router = useRouter(); const searchParams = useSearchParams(); //searchParams 훅은 쿼리스트링을 가져오는 것인데 빌드타임에는 //쿼리스트링을 가져올 수 없으므로 빌드타임에서 오류가 발생한다. //그래서 해당 페이지는 사전렌더링에서 제외시켜야 한다. const [search, setSearch] = useState(""); const q = searchParams.get("q"); 2. searchParams를 함수에 인자로 넣은 경우export default async function Page({ searchParams, }: { searchParams: Promise<{ q?: string; }>; }) { const { q } = await searchParams;
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
서버 개발 시 언어는 어떤걸로
안녕하세요. 서버 개발시에는 저스팩 서버로 최대 효율을 내려면 node로 가야할거같은데 제가 주 언어가 자바라서 고민입니다. 서버는 어떤 프레임워크로 구성하셨나요?
-
해결됨아는 만큼 보이는 웹 접근성 WCAG
노션 링크 어디서 받을 수 있을까요? :)
안녕하세요.노션 링크 제공해주시는 건가요?어디서 받을 수 있을까요? 🙂
-
미해결AI 블로그: 콘텐츠 기획부터 완성까지(전자책 PDF 제공)
pdf 제본소 책출력 문의
제공되는 자료 "AI_BLOG1.pdf"를 제본소에서 떡출력으로 책처럼 출력맡기고 싶은데 저작권이 있는 자료는 안된다고 합니다. 좋은 방법이 있을까요?
-
미해결챗GPT 비즈니스 글쓰기: 당신의 업무 비서가 되는 방법 (입문편)
pdf 제본소 출력문의
제공되는 "챗GPT_프롬프트_사용자_가이드__글쓰기편.pdf" 파일을 제본소에 출력을 맡기고 싶은데 저작권이 있는 파일은 출력이 안된다고합니다. 책자로 떡출력해서 실물로 보고싶은데 방법이 없을까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
실행 시켰을 때 화면이 좀 다르게 나와서 고치고 싶습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.실행 했을 때 강사님과의 실행 결과 화면이 다르게 나오는데 혹시 세팅하는 방법을 좀 알 수 있을까요?
-
미해결파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
git에 있는 코드를 다운 받아 실행 해봤는데 에러가 났습니다.
안녕하세요, 제가 어떤식으로 작동하는지 보고 싶어서 먼저 다운 받아서 실행해봤는데, 이런 에러가 발생합니다. 채팅방 생성까진 되지만 채팅방으로 들어가면 1초후에 팅겨 http://127.0.0.1:8000/chat/ 주소로 자동 이동됩니다. AttributeError: 'ChatConsumer' object has no attribute 'channel_name'. Did you mean: 'channel_layer'?WebSocket DISCONNECT /ws/chat/2/chat/ [127.0.0.1:50136]HTTP GET /chat/ 200 [0.01, 127.0.0.1:50118] 질문 받아주셔서 감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
koreanjson 관련 사이트가 접속이 안되어 postman으로 실행이 안되네요
koreanjson 관련 사이트가 접속이 안되어 postman으로 실행이 안되네요
-
미해결
seo 강의 언제 나올 예정일까요
연기가 계속되고 있는 것 같은데 , 확실히 나오는건 맞는걸까요 ㅜㅜseo 강의 많이 기다리고 있는데 넘 아쉽습니다
-
미해결대세는 쿠버네티스 (초급~중급편)
대쉬보드 화면에서 연결 상태가 보이지 않음
안녕하세요.대쉬보드에서 표시할 데이터가 없다고 나옵니다.master node에서 pods는 정상적으로 구동하는 것 같은데, 어떤 조치가 필요할지 문의드립니다.
-
미해결홍정모의 따라하며 배우는 C++
헤더 가드 이름에 관해서요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.헤더가드 이름은 어떤기준으로 정하는건가요? #ifndef 다음에 오는 이름이요! 어떤걸로 해도 상관없는건가요?
-
미해결스프링 핵심 원리 - 기본편
컴포넌트스캔 오류
@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(this.memberRepository()); } @Bean public OrderService orderService() { return new OrderSerivceImpl(this.discountPolicy(), this.memberRepository()); } @Bean public MemberReposotory memberRepository() { return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { return new FixDiscountPolicy(); // 또는 RateDiscountPolicy()로 변경 가능 } } @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) ) public class AutoAppConfig { }수동등록빈,자동등록빈으로 제일 상위패키지에 구현해두웠고 @Component @Getter public class MemberServiceImpl implements MemberService { // private final MemberReposotory memberReposotory = new MemoryMemberRepository(); private final MemberReposotory memberReposotory; public MemberServiceImpl(MemberReposotory memberReposotory) { this.memberReposotory = memberReposotory; } @Override public void join(Member member) { memberReposotory.save(member); } @Override public Member findMemer(Long memerId) { return memberReposotory.findById(memerId); } }여기서 오류가나는데 Could not autowire. There is more than one bean of 'MemberReposotory' type.Beans:memberRepository (AppConfig. java) memoryMemberRepository (MemoryMemberRepository. java) 이렇게 오루가납니다;;강의에서는 오류가안나던데 저는 왜 오류가날까요
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
안녕하세요,
4월에 구매하여 늦게서야 해당 강의를 수강 중인데 업데이트 된 강의 쿠폰 발급하는걸 몰랐네요ㅠㅠ 혹시 현강의랑 많이 다를까요? 어떤 차이점이 있는지 궁금해요.듣는다고 하면 중간부터 들어야하나요. 현재 eslint부분 듣고있는데 애매하네요. 그리고 듣는다는 가정 하에 쿠폰 재발급이 가능한지 궁금합니다.
-
해결됨디지털포렌식 입문자를 위한 디지털포렌식 전문가 2급 실기 시험대비 강의(Encase/Autopsy)
안녕하세요 학습자료 관련 질문이 있습니다
안녕하세요 선생님 유익한 강의 정말 감사드립니다. 정말 도움이 많이 되었습니다다름이 아니라 제공해주신 학습자료를 포트폴리오에 사용해도 괜찮은지 여쭤보고자 글을 남깁니다.제공해주신 훼손된 GPT파티션, NTFS, FAT32 파티션 자료를 사용하고자 하는데요. 예를 들어 "파티션 복구와 관련되어서 어떤 툴을 사용해서 어떤 방식으로 훼손된 파티션을 복구할 수 있다"라는 느낌으로 해당 자료를 포트폴리오를 작성하는데에 사용하고 싶은데(참고 사진용, 캡쳐본) 혹시 괜찮을지 알고싶습니다
-
미해결김영한의 실전 자바 - 중급 2편
자바 중급 마지막 문제 코드리뷰 및 아이콘 출력 부탁드려요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.코드리뷰 및 아이콘 출력 부탁드려요안녕하세요. 자바 중급 마지막 문제를 풀어보았는데, 코드가 난잡한거 같습니다.혹시 코드 리뷰나 틀린점을 짚어주시면 감사하겠습니다.또한 아이콘 출력은 어려워서 이름으로 출력하게 했는데 아이콘 출력 나온는 법도 알려주시면 감사하겠습니다.참고로 Suit 클래스는 영한님의 클래스를 재사용 하였습니다.마지막으로 List가 비교적 사용이 쉬워서 List를 통한 풀이를 진행했는데,HashMap이나 다른 컬렉션을 이용한 풀이도 있을까요? package class2_8Iterator.MyArray.cardGame; /** * 카드에 대한 속성을 정의하는 클래스 * 1. 문양을 가진다 * 2. 번호를 가진다 * 3. 소팅이 가능하다 */ import static class2_8Iterator.MyArray.cardGame.Suit.*; public class Card implements Comparable<Card>{ private final Suit suit; private Integer cardNumber; public Card(Suit cardIcon, Integer cardNumber ){ this.cardNumber = cardNumber; this.suit = cardIcon; } /**문양을 비교하기 위해 숫자로 변환한다. * */ public Integer iconConverter(String cardIcon) { if(SPADE.getIcon().equals(cardIcon)) { return 1; } else if(HEART.getIcon().equals(cardIcon)){ return 2; } else if(DIAMOND.getIcon().equals(cardIcon)) { return 3; } else if (CLUB.getIcon().equals(cardIcon)) { return 4; } return 0; } public Suit getSuit() { return suit; } /* @Override public String toString() { return "Card{" + "icon=" + icon + ", cardNumber=" + cardNumber + '}'; } */ @Override public String toString(){ return cardNumber+"("+suit+")"; } /** * 문양을 비교하고 같은 문양이면 숫자가 더 큰게 먼저 앞으로 나온다. * */ @Override public int compareTo(Card card) { Integer thisIcon = iconConverter(this.suit.getIcon()); Integer inputIcon = iconConverter(card.suit.getIcon()); if(this.cardNumber==cardNumber){ return thisIcon<inputIcon ? -1 : (thisIcon==inputIcon ? 0 : 1); } else return this.cardNumber<cardNumber ? -1 : (this.cardNumber==cardNumber ? 0 : 1); } public int numberCompareTo(Card card){ return this.cardNumber<card.cardNumber ? -1 : (this.cardNumber==card.cardNumber ? 0: 1); } public Suit getIcon() { return suit; } public Integer getCardNumber() { return cardNumber; } public void setCardNumber(Integer cardNumber) { this.cardNumber = cardNumber; } }package class2_8Iterator.MyArray.cardGame; public enum Suit { SPADE("♠"), // 스페이드(♠) HEART("♥"),// 하트(♥) DIAMOND("♦"),// 다이아몬드(♦) CLUB("♣");// 클로버(♣) private String icon; Suit(String icon){ this.icon=icon; } public String getIcon() { return icon; } }package class2_8Iterator.MyArray.cardGame; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; import static class2_8Iterator.MyArray.cardGame.Suit.*; /** * 카드를 이용하여 덱을 구성한다. * */ public class Deck { private Card card; private List<Card> masterDeck; private List<Card> spadeDeck = new ArrayList<Card>(); private List<Card> heartDeck = new ArrayList<Card>(); private List<Card> diamondDeck = new ArrayList<Card>(); private List<Card> clubDeck = new ArrayList<Card>(); /*** * */ public Deck(){ for(int i =1 ;i <= 13; i++){ card = new Card(SPADE,i); spadeDeck.add(card); } for(int i =1 ;i <= 13; i++){ card= new Card(HEART,i); heartDeck.add(card); } for(int i =1 ;i <= 13; i++){ card = new Card(CLUB,i); clubDeck.add(card); } for(int i =1 ;i <= 13; i++){ card =new Card(DIAMOND,i); diamondDeck.add(card); } /**배열 합치기 * */ List<Card> mergedDeck1 = Stream.of(clubDeck, diamondDeck) .flatMap(Collection::stream) .collect(Collectors.toList()); List<Card> mergedDeck2 = Stream.of(spadeDeck,heartDeck) .flatMap(Collection::stream) .collect(Collectors.toList()); masterDeck = Stream.of(mergedDeck1, mergedDeck2) .flatMap(Collection::stream) .collect(Collectors.toList()); Collections.shuffle(masterDeck); /*** * 덱 생성 확인을 위한 디버깅 */ // for(Card cardEntry :deck){ // // System.out.println(cardEntry.getCardNumber() + "," + cardEntry.getIcon()); // // } // System.out.println("size ie "+ deck.size()); // System.out.println( masterDeck.getClass()); } public List<Card>getMaterDeck(){ return masterDeck; } }package class2_8Iterator.MyArray.cardGame; import java.util.ArrayList; import java.util.List; /** * DECK에서 카드를 뽑아 패에 넣는다. * */ public class Player { List<Card> hands = new ArrayList<>(); Deck deck = new Deck(); // new 연산자 (메모리에 올리기) 안쓰면 nullPointerException 터진다 Integer [] cardNumberList = new Integer[5]; Integer totalNumber = 0; public void drawCard(int turn){ List<Card> playableDeck = deck.getMaterDeck(); Card inputCard = playableDeck.get(turn); hands.add(inputCard); playableDeck.remove(turn); } public Integer getSumOfCardNumber(){ for(int i = 0 ; i <5;i++){ Card handCard = hands.get(i); cardNumberList[i] = handCard.getCardNumber(); totalNumber = totalNumber+cardNumberList[i]; } return totalNumber; } } package class2_8Iterator.MyArray.cardGame; import java.lang.reflect.MalformedParameterizedTypeException; import java.util.*; public class CardGameMain { public static void main(String args[]) { Player player1 = new Player(); Player player2 = new Player(); Deck deck = new Deck(); // List<Card> playerList1 = new ArrayList<>(); // List<Card> playerList2 = new ArrayList<>(); for (int i = 0; i < 10; i++) { if(i%2!=0){ player2.drawCard(i); } else player1.drawCard(i); } //Player 클래스의 hands에 값을 넣었으나 다른 값을 참조하니까 자꾸 OUTOFINDEX 에러 나옴 //다음 코드는 hands내 값을 디버깅 할때 사용 한다 System.out.println("player1의 카드 리스트 "+Arrays.toString(player1.hands.toArray())); System.out.println("player2의 카드 리스트 "+Arrays.toString(player2.hands.toArray())); /*** TODO * 1.손패 카드를 소팅하고 * 2. 카드 번호의 계를 구한다. */ Arrays.sort(player1.hands.toArray()); Arrays.sort(player2.hands.toArray()); System.out.println("==================정렬후 카드 패=================="); System.out.println("player1의 카드 리스트 "+Arrays.toString(player1.hands.toArray())); System.out.println("player2의 카드 리스트 "+Arrays.toString(player2.hands.toArray())); System.out.println("================== 카드 패 숫자 합계 ============="); System.out.println(player1.getSumOfCardNumber()); System.out.println(player2.getSumOfCardNumber()); if(player1.getSumOfCardNumber()> player2.getSumOfCardNumber()){ System.out.println("플레이어 1이 이겼습니다"); }else { System.out.println("플레이어 2가 이겼습니다"); } } }
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
섹션 9 상점 UI Layer 수정 앞부분이 잘린건가요?
상당히 많은 부분이 진행된거같은데 제가 뭔가 놓친게 있는건지.. 인프런 오류인지 아니면 개인적으로 작업하라고 빼놓으신건지 여쭤봅니다.
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
시즌 2, 3 는 언제 수강할 수 있을까요?
안녕하세요.너무 좋은 강의 재밌게 잘 들었습니다.시즌 1으로만 끝나면 너무 아쉬울것 같습니다.혹시 시즌 2, 3 를 계획하고 계시다면 언제쯤 수강할 수 있을까요?