묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
- 
      
        
    미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!Map 함수로 실전적용!final numbers = [123, 456, 789];print(numbers.map((x) => x.toString().split('').map((y) => '$y.jpg',).toList(),),([1.jpg, 2.jpg, 3.jpg], [4.jpg, 5.jpg, 6.jpg], [7.jpg, 8.jpg, 9.jpg])print(numbers.map((x) => x.toString().split('').map((y) => '$y.jpg',),).toList(),[(1.jpg, 2.jpg, 3.jpg), (4.jpg, 5.jpg, 6.jpg), (7.jpg, 8.jpg, 9.jpg)]소괄호와 대괄호가 무슨차이죠.처음에 첫번째 처럼하면 list될것같았는데요. 같은줄 알았는데 다르더라구요. 2번째는 그냥 해본거예요.무슨차이인지 알고싶어요. final number = 123; print(number.toString().split('')); print(number.toString().split('').map((x)=> '$x.jpg'));[1, 2, 3](1.jpg, 2.jpg, 3.jpg)위에는 대괄호, 밑에는 소괄호 괄호가 같는결과는 아니네요. 
- 
      
        
    미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)Xilinx Vivado 설치에서 sudo apt install gcc -y 설치가 계속 안됩니다자꾸만 위와 같은 에러가 발생하여 해결 방법을 문의드립니다. 
- 
      
        
    미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트1-G 문제에 대한 질문입니다.http://boj.kr/53d3d972829a47cc80be8c0da3a25fa0안녕하세요 선생님!문제에 대한 코드를 작성한 뒤 예제에 있는 반례와질문하기에 다른 학생들이 질문하고 선생님께서 찾으신반례 모두 입력에 넣어봐도 정답으로 나오는데 백준에선 계속 틀리다고 합니다ㅠ문법적인 오류인지 간단한 실수 인지 잘 모르겠습니다. 
- 
      
        
    미해결CloudNet@ - AWS 네트워킹 입문로그 그룹을 삭제하려 하는데 애초에 로그 그룹이 없네요제목 그대로 입니다.Cloudformation 스택까지 지우는 것 까지 모든 과정을 따라했고 로그 그룹을 삭제하려 했더니 로그 그룹이 애초에 없습니다.스택을 삭제함으로써 같이 지워진건지 애초부터 안만들어진건지 모르겠네요..분명히 CloudWatch로 필터링까지 하면서 로그들을 확인했었는데 말이죠..일단 지금 당장은 로그 그룹이 없으니 자원 미삭제로 인한 불이익을 보진 않겠죠? 
- 
      
        
    미해결five points of digital sales roomfive points of digital sales room Digital Sales Software for Streamlined Growth: Elevate your business with cutting-edge digital sales software that empowers your team to drive revenue like never before. Harness the potential of advanced analytics, automated workflows, and real-time insights to optimize your sales strategies. Our digital sales software lets you close deals faster, nurture leads efficiently, and provide an exceptional customer experience.Unlock Success with Digital Sales Software: Transform your sales approach with our innovative digital sales software. Seamlessly manage leads, track customer interactions, and monitor sales performance all in one place. Our platform integrates powerful tools to enhance collaboration, improve forecasting accuracy, and drive revenue growth. Elevate your sales game and stay ahead in the competitive digital landscape.Revolutionize Your Sales with Digital Sales Software: Discover a game-changing solution for modern sales teams – digital sales software designed to boost efficiency and results. From lead generation to deal closure, our platform offers a comprehensive suite of tools to streamline your processes, enhance customer engagement, and increase your bottom line.Digital Sales Software: Your Path to Success: Embrace the future of sales with our state-of-the-art digital sales software. Elevate your sales performance through dynamic lead tracking, personalized communication, and data-driven insights. Stay in control of your pipeline, nurture relationships, and close deals faster, all while redefining your digital sales strategy.Experience Growth with Digital Sales Software: Amplify your sales potential using digital sales software that redefines how you engage customers. Empower your team with tools that optimize communication, automate tasks, and prioritize leads. Our solution integrates seamlessly into your workflow, fostering collaboration and paving the way for accelerated growth. 
- 
      
        
    해결됨Slack 클론 코딩[백엔드 with NestJS + TypeORM]HttpExceptionFilter에 단순 HttpException 예외처리도 필요하지 않나요?HttpExceptionFilter에서 에러처리시exception.getStatus() 로 err 변수값을 넣을떄HttpException 의 경우 string 타입BadRequestException, UnauthorizedException 와 같이 미리 정의된 경우 { message: any; statusCode: number } 타입class-validator의 경우 { error: string; statusCode: 400; message: string[] } 타입의 3가지 형태가 되는데이번강의에서 string 타입 자체를 제거하셧는데 HttpException 를 사용하게되면 에러 메시지가 제대로 안 날라 가게 됩니다. class-validator를 도입하면서 HttpException 케이스를 제거 하신거 같은데 해당 예외도 포함은 되어있어야 하지 않나요?class-validator 가 완전히 HttpException 를 대체하게 한다면 HttpException를 사용못하게 막을 방법이 있을까요?import { ExceptionFilter, Catch, ArgumentsHost, HttpException, } from '@nestjs/common'; import { Response } from 'express'; @Catch(HttpException) export class HttpExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse<Response>(); const status = exception.getStatus(); const err = exception.getResponse() as | string | { message: any; statusCode: number } | { error: string; statusCode: 400; message: string[] }; //class-validator if (typeof err !== 'string' && err.statusCode === 400) { return response.status(status).json({ success: false, code: err.statusCode, data: err.message, }); } //HttpException if (typeof err == 'string') { return response.status(status).json({ success: false, code: status, data: err, }); } //BadRequestException, UnauthorizedException return response.status(status).json({ success: false, code: status, data: err.message, }); } } 
- 
      
        
    미해결[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편공변성과 반공변성제가 공변성과 반공변성을 공부하는데 너무 큰 어려움이 있었어서, 원리가 너무 궁금해서 나름대로 결론을 내려보았습니다.저는 개인적으로 함수의 동작 과정인,input - process - output 의 방향대로,타입을 만족하기 위하여 이런 순서로 검사하는게 아닐까... 생각해보았습니다. function a(x: string | number): number { return 0;}type B = (x: string) => number | string;let b: B = a;강의 속 코드를 가져와봤습니다. 제가 하고 싶은 말의 요지는,다음 순서를 만족하기 위해서 타입의 크기 비교가 달라진다는 것이지요.1) b의 매개변수 타입을 검사2) a의 매개변수 타입을 검사3) a의 리턴 타입을 검사4) b의 리턴 타입을 검사 검증해보기 위해서,b("1") 이라는 코드를 입력하면, b("1") 실행 :먼저 b의 타입인 B의 매개변수가 검사되어,(x: string) 를 만족하는지 확인 (b = a이므로)b("1")에 의해 a("1")가 실행 :따라서 a의 매개변수 타입이 검사되어,(x: string | number) 를 만족하는지 확인. a("1")의 결과인 0 :a의 리턴 타입을 검사하여,number를 반환하는 지 확인. b("1")의 결과인, a("1")의 결과인 0 :b의 리턴 타입을 검사하여,number | string을 반환하는 지 확인. 타입스크립트가 실제로 이런 식으로 추론하는지는 알지 못하지만, 흥미로운 생각인 것 같아서 나누어보았습니다.개인적인 의견이고,옳지 않은 내용이 있다면 삭제하겠습니다! 
- 
      
        
    미해결[2023 코틀린 강의 무료제공] 기초에서 수익 창출까지, 안드로이드 프로그래밍 A-Z코틀린 프로젝트를 생성하였는데 자바 프로젝트가 생성됩니다안녕하세요 조이스선생님안드로이드 스튜디오 개발 환경설정 강의를 보고 그대로 따라 프로젝트를 생성해 보았는데 자바 프로젝트가 생성됩니다 무엇이 잘못된 걸까요?너무 기초적인 질문인 것 같아 민망하지만 혼자서는 도저히 답이 나오지 않아 질문 드립니다좋은 강의 만들어 주셔서 감사합니다 
- 
      
        
    해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발stock_quantity 동시성 해결하는 방법에 대해@Test public void 상품_주문() { //given Member member = new Member(); member.setName("회원1"); member.setAddress(new Address("서울", "강가", "123-123")); em.persist(member); Book book = new Book(); book.setName("시골 JPA"); book.setPrice(10000); book.setStockQuantity(10); book.setAuthor("kim"); em.persist(book); //when int orderCount = 2; // 두권 주문 Long orderId = this.orderService.order(member.getId(), book.getId(), orderCount); //then Order getOrder = this.orderRepository.findOne(orderId); Assertions.assertEquals(OrderStatus.ORDER, getOrder.getStatus()); }강의 내용 중 테스트 코드//==생성 메서드==// public static OrderItem createOrderItem(Item item, int orderPrice, int count) { OrderItem orderItem = new OrderItem(); orderItem.setItem(item); orderItem.setOrderPrice(orderPrice); orderItem.setCount(count); item.removeStock(count); // 해당 상품의 재고 수량 차감 return orderItem; }강의 내용 중 OrderItem 엔티티 내 생성 메서드 createOrderItem()강의에서는 위와 같이 OrderItem 엔티티의 생성 메서드라는 것을 통해 주문상품을 만들고 상품의 재고를 감소시키는데요. jpa가 상품 수량(stock_quantity) 감소시킬 때 사용한 UPDATE 쿼리를 보니까 UPDATE item SET stock_quantity = 8; 과 같이 되어있더라고요. 이러면 여러 클라이언트가 동시에 해당 상품 주문할 때 덮어쓰는 문제가 발생하니까 따로 해결 방법을 찾아봤습니다.JPA에 낙관적 락이라는 게 있길래 적용해봤더니 다른 트랜잭션이 중간에 상품 수량을 변경하고 커밋하면 해당 트랜잭션에서 변환된 스프링 예외(ObjectOptimisticLockingFailureException)가 올라오며 덮어쓰는 문제는 막을 수 있었습니다(테이블 데이터 생성 후 ddl-auto: none 모드로 실행, h2 콘솔과 함께 테스트). 예외를 잡고 새 스냅샷으로 다시 호출할 수 있겠지만, db에 stock_quantity 데이터만 정확히 맞추면 되는 게 목적이어서 createOrderItem 로직을 별도의 리포지토리로 대체해보았습니다.@Slf4j @Repository @RequiredArgsConstructor public class OrderItemRepository { private final EntityManager em; /** * 주문 상품 생성 * @param item * @param orderPrice * @param count * @return */ public OrderItem createOrderItem(Item item, int orderPrice, int count) { OrderItem orderItem = new OrderItem(); orderItem.setItem(item); orderItem.setOrderPrice(orderPrice); orderItem.setCount(count); int restStock = item.getStockQuantity() - count; if (restStock < 0) { log.info("need more stock for {}.{}", item.getId(), item.getName()); throw new NotEnoughStockException("need more stock"); } // 해당 상품의 재고 수량 차감 em.createQuery("UPDATE Item i " + "SET stock_quantity = stock_quantity - :count " + "WHERE item_id = :item_id") .setParameter("count", count) .setParameter("item_id", item.getId()) .executeUpdate(); // em.refresh(item); return orderItem; }em.createQuery()로 item.removeStock(count); 부분을 바꿨습니다. SET stock_quantity = stock_quantity - :count /** OrderService 내 order 메서드 */ @Transactional(readOnly = false) public Long order(Long memberId, Long itemId, int count) { //엔티티 조회 Member member = this.memberRepository.findOne(memberId); Item item = this.itemRepository.findOne(itemId); //배송 정보 생성 Delivery delivery = new Delivery(); delivery.setAddress(member.getAddress()); //주문 상품 생성 OrderItem orderItem = this.orderItemRepository.createOrderItem(item, item.getPrice(), count); //주문 생성 Order order = Order.createOrder(member, delivery, orderItem); //주문 저장 this.orderRepository.save(order); return order.getId(); }기존에 호출하던 OrderItem.createOrderItem(item, item.getPrice(), count); 대신에 orderItemRepository.createOrderItem()를 호출하도록 OrderService 코드를 변경강의에서 작성한 상품_주문() 테스트를 단일 실행했을 때도 em.createQuery.executeUpdate()할 때 보니까, flush인가 그것도 호출안했는데 jpa가 그전에 persist한 book이랑 member까지는 실제로 인서트하고 업데이트 쿼리를 실행하는 것을 확인했습니다.[질문]1. 강의에선 OrderItem 엔티티 자체에서 createOrderItem()을 처리해주기 때문에 OrderItem의 기본 생성자도 protected로 지정해서 막았는데, 글에서 적용한 방식으로 해결하려면 public으로 바꿔야 했습니다. 지금처럼 OrderItemRepository를 따로 만들어서 처리하는 게 구조상 문제가 없는 건지 리포지토리의 역할이 맞는지 모르겠고, 문제가 생길 수 있는지 궁금합니다.(예측되는 문제점: 주문/주문 취소/상품 수정 등 stock_quantity와 얽혀있는 로직마다 쿼리를 작성해야 됨) 2. JPA의 기본적인 변경 감지 방식을 유지하면서 낙관적 락 없이도 간단하게 해결할 수 있는 방법이 있는지 알고 싶습니다. 
- 
      
        
    미해결코틀린 Binding 설치후 Unsolved referece 에러코틀린 예제를 책대로 하다가 binding이 안 먹혀서 보니까4.0버전에선 다른 코드이길래, 일단 최신 걸로 넣고 설치하고 나니ImageView 부분이 읽혀지지 않는다고 에러가 뜨네요.ㅠㅠcache 지워도 재빌드해도, 에러가 고쳐지지 않는데,원인이 버전인지 아닌 import가 부족한 건지 혹시 원인을 알 수 있을까요? 
- 
      
        
    해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스회원가입 과제infor_box를 css에서 인식?을 못하는데 html 어디에 문제가 있는걸까요?ㅠㅠㅠ 
- 
      
        
    해결됨Spring Boot JWT Tutorialnew User 생성자 오류 발생하는 분들...아래 코드와 같이 에러 발생하는 분들...바보 같았네요.User principal = new User(claims.getSubject(), "", authorities);import me.{..}.jwttutorial.entity.User;이 아니고import org.springframework.security.core.userdetails.User;입니다 
- 
      
        
    미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuexgithub 권한 추가해주세요인프런 아이디: hyzcore@gmail.com인프런 이메일: hyzcore@gmail.com깃허브 아이디: hyzcore@gmail.com깃허브 username: HyungJun Lee 
- 
      
        
    미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술혹시 강의 중에 PDF 파일 관련해서는 다운 받을 수 없나요?혹시 pdf 파일은 어디서 다운 받을 수 있나요? 
- 
      
        
    미해결홍정모의 따라하며 배우는 C언어예제 풀이 이렇게 하면 틀린 건가요?while문을 한번만 써서int main(){ const int secret_code = 337; int guess = 0; while (guess != secret_code) { printf("Enter secret code :"); scanf("%d", &guess); } printf("Great!"); return 0;} 이렇게 쓰니까 결과는 잘 나오던데 틀린 방법인가요?아니면 for문으로int main(){ for (int code = 0;code != 337;printf("Enter secret code :"), scanf("%d", &code)) ; printf("Great!"); return 0;} 이렇게 하는 것도 안되나요?? 잘 돌아가긴 해서 질문 남깁니다! 
- 
      
        
    미해결스프링 시큐리티child_name,parent_name계층권한에서 저 둘의 관계는 왜@ManyToOne로 설정 되어 있을까요 ??현재 프로젝트는 1:1로 해도 문제가 없지 않나요 ?! 
- 
      
        
    해결됨웹 애니메이션을 위한 GSAP 가이드 Part.02안녕하세요 수업자료를 다운받았는데 중간중간 파일이 없어요 ㅠㅠ영상 우측상단에 수업자료를 다운받고 열어보니 중간중간 없는 파일들이 있습니다 ㅠㅠ 저만 그런건지.. 
- 
      
        
    해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술import jakarta.persistence.Entity; jpa 관련 import에러JPA Member 작성 중 오류가 발생하여 질문 드립니다.import javax.persistence.Entity;import jakarta.persistence.Entity;모두 시도 해봤는데 안됩니다.gradle 프로젝트를 reload 하더라도 Unable to load class 'org.gradle.api.plugins.MavenPlugin'.This is an unexpected error. Please file a bug containing the idea.log file.이런 에러만 계속 발생합니다.maven플러그인이 사라졌다고 해서 gradle 버전변경도 시도해보고 자바 버전 변경도 시도해 봤지만 해결하지 못했습니다. 
- 
      
        
    미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!goNamed질문GoRoute( path: 'chef/register/two', name: ChefRegisteScreen2.routeName, builder: (_,state) => ChefRegisteScreen2( //rid: 123 ) ),goNamed로 String값 말고 Map이나 리스트 자료형을 넘기는 방법이 있을까요? 
- 
      
        
    해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스husky 설치과정을 잘 모르겠습니다영상에 나오는 것 처럼 따라하게 되면 npx husky install 부분에서 다음과 같은 오류가 나오게 되고 자료 집에 주신것처럼 husky ver4로 할 때 package.json 설정한 후에 어떻게 해야 될지 잘 모르겠습니다 
