안녕하세요. 강의를 듣던 중 생성자 호출 결과와 관련해 궁금한 점이 생겨 질문드립니다. 해당 예제에서 new 연산자 사용 시 다중 정의된 int 타입 파라미터를 받는 생성자가 호출된다고 설명해 주셨는데, 그 이유가 궁금합니다. new 연산자에 int 타입 매개변수를 전달한 상황을 가정하고 설명하신 것일까요? 강의와 유튜브 항상 잘 보고 있습니다. 감사합니 다.
강의를 완료한 후에 썸네일 이미지 작업을 진행하려고 합니다. 텍스트가 들어간 이미지를 받아서 제공받은 키워드를 추가해 대표 이미지로 만들 계획인데요, 이 과정에서 캔바 API를 활용하고 싶습니다. 현재 이미지 메이크 워크플로우의 어느 단계에 캔바 API 노드를 추가하면 좋을까요?
안녕하세요 현재 수동설치로 진행중인데 kubeadm, kubelet, kubectl 패키지까지는 설치가 잘 진행 되었습니다 문제는 클 러스터 초기화 및 pod network 세팅 과정인데요 kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address 192.168.56.30 명령어 실행 후에 다음과 같은 문제가 발생하였습니다 현재 이런 로그가 뜨는데 뭐때문에 그러는 건지 궁금합니다 그리고 vagrantfile에 kube패키지 설치하는 구간에서 SHELL $install_master = <<-SHELL 리눅스에서 명령어로 입력해도 안되는 것 같은데 의미가 궁금합니다
현재 flux_schnell 을 물려 사용하는데 api 문제라기보단 '이미지프롬프트에이전트'가 이미지의 프롬프트를 작성되는 글의 맥락과는 전혀 상관없는 것으로 리턴하고 있습니다. Blog-image-Maker의 테스트용 트리거를 변경해야 할 것같은데... 정확한 원인을 모르겠어요. 모든 이미지가 파이썬과 관련된 것들로 생성이 되고 있는데... 어찌해야 할까요, 이미지 생성 프롬프트는 남박사님이 작성하신 내용 그대로를 사용하고 있습니다.
본래의 생각대로 글쓰기는 airtable에서 yes한 목록을 순차적으로 스캐줄링 기능으로 자동화를 하고 싶은데 문제는 계속해서 사진에서처럼 에러가 발생하며 그냥 멈춰버립니다. 에이전트나 챗모델의 시간을 5000(최대값) 으로 줬는데도 멈춰버리는데 이러면 자동화가 어려운 것이 사실이잖아요. 혹시 이런 경우엔 어떻게 대처할 수 있을런지요?
안녕하세요. 상속과 별로 연관된 질문은 아닌 듯 하지만 강의에서 나온 부분에 궁금증이 생겨 질문 남깁니다. val swimAbility: Int get() = 3 이라는 예제 코드를 작성하셨는데요. 코틀린은 어차피 필드를 선언하면 게터, 세터를 만들어주고 필드 선언 시 디폴트 값도 지정해줄 수 있는데 그렇다면 위와 같은 형태의 커스텀 게터는 굳이 구현할 필요 없는 것 아닌가? 하는 생각이 듭니다. 그냥 초기값 3을 갖는 필드를 선언하기만 하면 게터까지 알아서 만들어질 테니까요. 그냥 인터페이스의 게터 상속 의도를 표현하기 위해 별 의미나 실 용례는 없는 코드를 작성하신 거라고 봐도 될지? 아니면 저런 방식의 커스텀 게터에 제가 이해하지 못하는 어떤 의미가 있는 것일지가 궁금합니다. 감사합니다. ㅇ
실제로 워프를 운영하고 있는 서버에서 N8N을 돌리고 싶은맘에 시놀로지 환경에서 운영하고 있습니다. 헌데 이것저것 만지다 N8N 연결이 깨져버렸네요. 제미나이 클로드 이놈들에 수많은 핑퐁을 했지만... 계속 사태가 커지는 것 같아 강의와 상관없는 내용이지만 질문 남겨봅니다. 프로젝터에 컨테이너가 0이 뜨고 있는데.... 클로드와 연결해서 이것저것 하다보니 뭔가가 꼬인것 같습니다. ㅜㅠ 현재 컨테이너도 이런 상태인데 어떤것이 켜져 있어야 하고 어떤 것이 꺼져 있어야 하는지.... 정상 상태를 모르겠네요. 현재 워크플로우와 노드에 접근은 되는데, 이런 상태라면 처음 단계에서 처럼 도커에 N8N을 다시 올리면 되 살릴 수 있을까요? 넘 초짜다보니...
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@PutMapping("/user") public void updateUser(@RequestBody UserUpdateRequest request){ String readSql = "select * from user where id=?"; String sql = "update user set name=? where id=?"; jdbcTemplate.update(sql, request.getName(), request.getId()); } 웹페이지에서 update를 발생시켜서 put 요청이 올라 왔을때 UserUpdateRequest dto에 id와 name이 들어 간다는건 웹에서 요청이 올라왔을때 json에 이미 해당 name에 대한 id 정보가 있다는 거죠? id는 db에서 자동적으로 생성해 준다고 했었는데, 이 id를 웹에서는 어떻게 알고 있나요?
문제가 있어요.. 저는 추가정보요구도 없고 VPS 생성도 안되고 있습니다.. Balance에 금액 충전되고 Current monthly price에 금액이 0 이어서.. 한 번 더 오더했더니.. 또 결제되고 Balance만 또 충전되었어요.. 결제시 페이지 번역해서 사용하지 않았어요.. 이거 환불 받으려면 어떻게 해야 할까요... CONTABO 아닌 다른 대안은 없을까요.. 코딩 뿐 아니라 이런거 완전 처음 배워보는 중인데.. 처음부터 막히니 답답하네요.. 앞으로 강의보고 진행하는데 괜찮을까요;;
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4-8강 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? chapter4/_2_event_with_participant 폴더의 EventJoinService 객체의 메서드 코드에 대한 질문입니다. 코드의 어떤 로직이 이해가 안 되시나요? @Transactional public void joinEvent(Long eventId, Long memberId) { Event event = eventRepository.findById(eventId) .orElseThrow(() -> new EntityNotFoundException("이벤트를 찾을 수 없습니다.")); Member member = memberRepository.findById(memberId) .orElseThrow(() -> new EntityNotFoundException("회원을 찾을 수 없습니다.")); // save()를 호출하지 않아도 Dirty Checking에 의해 Update 쿼리가 나가지 않나요? event.increaseParticipants(); eventRepository.save(event); EventParticipant participant = EventParticipant.builder() .event(event) .member(member) .build(); participantRepository.save(participant); } } 코드 블럭의 주석 란에 질문을 적어놓았습니다. 저 상황에서 save() 를 호출하는 이유가 궁금합니다. JPA 엔티티의 상태 변경분에 대한 쿼리는 트랜잭션 커밋 후, 자동으로 나가는 것으로 알고 있습니다. 혹시, 제가 잘못 알고 있는건지 궁금합니다.
현재 사정상 회사망에서 구성을 하여 공부해볼 생각인데 말그대로 회사망이라서 vagrant를 사용하는 데에 제한이 있습니다 그래서 직접 설치할 예정이고 github에 올려주신 vagrantfile 내용을 토대로 설치해볼 생각인데 rocky 리눅스 같은 경우 8버전을 쓰는지도 궁금하고 minimal 버전으로 설치해서 구성하는지도 궁금합니다 이전에도 비슷한 내용으로 질문 드린 적이 있긴한데 제가 알고 있는 지식이 많지 않아 한계가 있어서 차근 차근 설치해 보면서 공부해 보려고 하는데 이전에도 언급해주신 적이 있어서 우선 카페에 올려주신 mac 설치 버전을 기점으로 참고하여 설치해보려고 합니다
안녕하세요 토비님!! 강의를 완강하고 제 프로젝트를 리팩토링하면서 피드백받고싶은점이 생겨 질문글을 올립니다. Repository Port를 기술에 종속시키지 않기 위해 Adapter에서 JPA, MyBatis, QueryDSL을 조합하는 구조를 선택했는데, 이 설계 방향이 적절한지 조언을 구하고 싶습니다. 현재 구조 core/ └── domain/ └── application/ └── required/ ← Port 인터페이스 └── ~Repository adapter/ └── persistence/ ├── ~RepositoryAdapter ← Port 구현체 ├── ~JpaRepository ← Spring Data JPA └── ~MybatisMapper ← Mybatis 매퍼 인터페이스 의존 관계 [Service] → [Repository] ←impl― [RepositoryAdapter] → [JpaRepository] → [MybatisMapper] → [JPAQueryFactory] (core) (core) (adapter) (adapter) 예시 @Repository @RequiredArgsConstructor public class ItemRepositoryAdapter implements ItemRepository { private final ItemJpaRepository itemJpaRepository; private final ItemMybatisMapper itemMybatisMapper; @Override public List<Item> findBySearchRequest(ItemSearchRequest request) { return itemMybatisMapper.findBySearchRequest(request) .stream() .map(Item::from) .toList(); } @Override public List<Item> saveAll(List<Item> items) { return itemJpaRepository.saveAll(items); } } @Repository @RequiredArgsConstructor public class AuctionRepositoryAdapter implements AuctionRepository { private final JPAQueryFactory jpaQueryFactory; private final AuctionJpaRepository auctionJpaRepository; @Override public void deleteAllByRegionAndRealmId(RegionType region, Long realmId) { QAuction qAuction = QAuction.auction; BooleanBuilder filter = new BooleanBuilder(); filter.and(qAuction.region.eq(region)); if (realmId == null) { filter.and(qAuction.realmId.isNull()); } else { filter.and(qAuction.realmId.eq(realmId)); } jpaQueryFactory.delete(qAuction) .where(filter) .execute(); } @Override public int saveAll(List<Auction> auctions) { if (auctions.isEmpty()) return 0; return auctionJpaRepository.saveAll(auctions).size(); } } 이 구조를 선택한 이유 동적 쿼리, 벌크 연산 등 JPA만으로 해결하기 어려운 케이스가 있어 MyBatis와 QueryDSL을 병행 사용하고 있습니다. 일반적인 방식인 Port 인터페이스가 Spring Data JPA Repository를 상속하는 구조를 채택하지 않은 이유: MyBatis나 QueryDSL 기반 구현체를 만들 수 없음 CustomRepository 인터페이스를 별도로 만들어야 하는 복잡도 증가 현재 방식의 장점: Port 인터페이스가 순수 Java 인터페이스로 유지됨 RepositoryAdapter에서 상황에 맞는 기술을 자유롭게 조합 가능 추가 인터페이스 없이 단순한 구조 유지 저는 현재 구조가 의존 관계도 외부에서 내부로 향하고 테스트도 쉬워서 괜찮다고 생각하는데 토비님의 생각도 듣고싶습니다!! 좋은 강의 감사합니다!!