반응형 전체 글58 Enum equals , == 들어가며... 운영중인 시스템에서 최근들어 NullPointException이 자주 발생하였고 대부분이 Enum의 equals 였습니다. 원인은 DB 컬럼에 디폴트값 설정도 안되어 있는 컬럼과 특정 로직에서 그 컬럼을 Null로 업데이트를 하였고 비교로직에서는 memberDto.joinYn.equals(TypeYn.N) 형식으로 되어있어 발생 했습니다. 이미 턴키 프로젝트 개발자들은 다 떠난상태고 소스레벨까지 제대로 체크하지 못한 죄도 있고... 이렇게 구현된 부분을 전체 수정할겸 어떤형식으로 하는게 좋을지 남기기위해 포스팅 합니다. Enum Enum은 Java에서 상수를 정의하는 특별한 형태의 클래스입니다. Enum 상수들은 클래스로 정의되어 있으며, JVM 메모리에는 다음과 같은 방식으로 로드됩니다... 2024. 4. 11. Spring Boot 모니터링 구축 들어가며... 실무에서는 와탭과 같은 모니터링 솔루션을 도입하여 사용하고 있으나, Spring Boot로 구성한 개인 프로젝트에서는 모니터링을 위해 많이 사용되고 있다는 Spring Actuator + Prometheus + Grafana 조합으로 적용 하면서 내용을 정리해 보기 위해 포스팅 합니다. Spring Actuator 기본 설정 + Prometheus + Grafana 적용 Spring Actuator 보안 적용 (추후 작성 예정) Spring Actuator Spring Actuator는 Spring Boot 애플리케이션의 모니터링과 관리를 간편하게 할 수 있는 기능을 제공합니다. 이 기능은 애플리케이션의 상태를 실시간으로 추적하고, 메트릭을 수집하며, 다양한 관리 작업을 수행할 수 있도록 .. 2024. 4. 9. SpringBoot Gradle Gradle Gradle은 프로젝트를 빌드하고 관리하기 위한 오픈 소스 빌드 자동화 도구입니다. Groovy 또는 Kotlin을 기반으로 하는 DSL(Domain Specific Language)을 사용하여 빌드 스크립트를 작성하며, 안드로이드 애플리케이션부터 Java, Kotlin, 그루비 등의 프로젝트까지 다양한 유형의 프로젝트를 지원합니다. 특징 유연성: Gradle은 Groovy나 Kotlin과 같은 DSL(Domain Specific Language)을 사용하여 빌드 스크립트를 작성할 수 있습니다. 이는 빌드 프로세스를 세밀하게 제어할 수 있도록 합니다. 선언적 DSL: Gradle은 선언적 DSL을 사용하여 프로젝트의 의존성, 작업 등을 정의할 수 있습니다. 이는 빌드 스크립트를 간단하게 만들.. 2024. 3. 26. Spring Batch Spring Batch 스프링 배치(Spring Batch)는 스프링 프레임워크 기반으로 개발된 배치 처리 프레임워크입니다. 배치 처리란 대량의 데이터를 일괄적으로 처리하는 작업을 말합니다. 스프링 배치는 이러한 대량의 데이터를 처리하는데 필요한 모든 기능을 제공하여, 안정적이고 확장 가능한 배치 처리 시스템을 구축할 수 있도록 도와줍니다. 또한, 기업 환경에서 대용량 데이터 처리 및 정기적인 배치 작업이 필요한 시스템에 쿼츠와같은 스케줄러와 함께 사용되고 있습니다. 특징 단순한 설정: 스프링 배치는 스프링 프레임워크와 통합되어 있어서, 스프링의 IoC(Inversion of Control) 컨테이너와 의존성 주입(Dependency Injection) 등의 기능을 활용할 수 있습니다. 이를 통해 간단한.. 2024. 3. 24. SpringBoot Gzip 설정 프론트 서버에서 백엔드 서버에 API를 요청시 헤더 설정에 Accept-Encoding: gzip 설정하여 요청을 하였지만 json 응답값이 gzip 으로 압축되지 않고 온다는 문의를 받았습니다. gzip 압축... 그게 뭔지 모르니 우선 검색을 통해 알게 되었고 SpingBoot 에 적용 후, 개발 프론트 서버 + 로컬 백엔드와 연결하여 테스트 후 응답값이 정상적으로 gzip 으로 압축이 된걸 확인하고 배포하였지만 백엔드 개발 서버에서는 여전히 적용되지 않았습니다. 로컬서버 내장톰캣,개발서버 외장톰캣의 차이는 생각도 안하고 CloudFront, Nginx에도 설정도 변경...해봤으니 각각에 대해 설정하는 포스팅 입니다. gzip 데이터를 보다 효율적으로 전송하고 저장하기 위해 사용됩니다. 주로 웹 서버.. 2024. 3. 17. Spring SSE 주문 프로젝트에서 고객이 웹에서 주문에 대한 상태변경을 실시간 알림으로 받기 위해 숏폴링으로 구축되어 있었고 불필요한 요청을 줄이기위해 SSE 와 웹소켓중 고민하다 SSE 를 진행하였으며, SSE에 대한 기술 포스팅입니다. (결국 웹소켓으로 변경...) 롱 폴링(Long Polling) 클라이언트가 서버에 데이터를 요청하면, 서버는 업데이트가 발생할 때까지 응답을 보류합니다. 업데이트가 발생하면 즉시 응답하고, 클라이언트는 다시 요청을 보내어 새로운 업데이트를 기다립니다. 이러한 방식은 폴링보다는 더 효율적으로 업데이트를 전달할 수 있지만, 여전히 서버에 부하가 발생할 수 있습니다. 숏 폴링(Short Polling) 폴링과 롱 폴링의 중간 형태로, 클라이언트가 주기적으로 서버에 데이터를 요청하며, 서버.. 2024. 3. 17. Spring Cache 목적 운영중이던 프로젝트에서 사용자별 권한,즐겨찾기,메뉴별 다국어 정보를 메뉴 이동마다 DB를 통해 가져오고 있었고 해당 정보들은 거의 변동이 없었기에 반복적으로 사용되는 데이터를 redis 메모리에 저장함으로써 애플리케이션의 성능을 향상 Cache . . .? 데이터나 값을 미리 저장해 두는 임시 저장소를 말합니다. 주로 프로그램이나 시스템의 성능을 향상시키기 위해 사용됩니다. 캐시는 일반적으로 데이터나 계산 결과를 저장하고, 해당 데이터나 결과가 필요할 때 바로 사용할 수 있도록 합니다. 특징 속도 향상: 캐시된 데이터는 메모리나 빠른 저장 장치에 저장되어 있기 때문에 데이터에 빠르게 접근할 수 있습니다. 이로 인해 데이터 액세스 시간이 단축되어 전반적으로 프로그램이 더 빨리 실행됩니다. 자원 절약:.. 2024. 3. 16. Aws CodeCommit 사용법 Code Commit AWS CodeCommit은 완전히 관리되는 서비스로, 안전하고 확장 가능한 프라이빗 Git 저장소를 제공합니다. 이 서비스를 통해 AWS 클라우드 환경에서 개발자 팀이 협업하여 소스 코드를 효율적으로 저장, 관리, 공유할 수 있습니다. 주요 특징 1.보안 및 권한 관리 AWS IAM(Identity and Access Management)을 통해 사용자별 액세스 권한을 설정하여 Git 저장소에 대한 접근을 관리합니다. 또한, 데이터는 안전한 네트워크 및 저장소에서 암호화되어 보관됩니다. 2.프라이빗 Git 저장소 완전 관리형 프라이빗 Git 저장소를 제공하며, 여러 사용자가 함께 작업하고 소스 코드를 저장, 관리할 수 있습니다. 3.협업 기능 여러 명의 개발자가 동시에 작업하며 소.. 2023. 11. 20. WebSocket Client 라이브러리 목적 WebSocket Client 사용방법 업비트 웹소켓을 연결하여 실시간 데이터처리시 Mysql 과 Redis 저장 속도를 비교해보기 위해!! 예제소스 https://github.com/devHjlee/devHjBlog/tree/main/WebSocketClient WebSocket ? 웹 애플리케이션에서 양방향 통신을 가능하게 하는 통신 프로토콜 및 API이며 HTTP와 마찬가지로 웹 브라우저와 웹 서버 간의 통신을 위해 사용 양방향 통신: 클라이언트(웹 브라우저)와 서버 간에 양방향 통신을 제공. 클라이언트나 서버가 데이터를 보낼 때 언제든지 연결을 통해 상호 작용할 수 있음을 의미하며 실시간 채팅, 온라인 게임, 주식 시장 데이터 업데이트 등의 기능을 구현 낮은 오버헤드: 기존의 HTTP 프로토.. 2023. 9. 14. Spring Interceptor 개념 구현방법 Spring Interceptor 구현 목적 interceptor 활용 및 filter 차이점 filter 정리글 : https://devhj.tistory.com/59 예제소스 https://github.com/devHjlee/devHjBlog/tree/main/filter-interceptor-aop Interceptor Interceptor(인터셉터)는 스프링 프레임워크에서 제공하는 기능으로, 웹 애플리케이션의 요청 처리 과정에서 컨트롤러 호출 전후에 추가적인 작업을 수행할 수 있도록 해줍니다. Interceptor는 주로 요청의 전/후 처리, 인증 및 권한 검사, 로깅, 캐싱 등의 공통적인 기능을 구현하기 위해 사용됩니다. Interceptor의 주요 특징은 다음과 같습니다: HandlerInt.. 2023. 5. 26. Spring Filter 개념 구현방법 목적 Filter 활용 예제소스 https://github.com/devHjlee/devHjBlog/tree/main/filter-interceptor-aop Filter 필터는 디스패처서블릿에 요청이 전달되기 전/후 에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리 할 수 있는 기능을 제공합니다. javax.servlet.Filter는 Java Servlet API의 일부로, 웹 애플리케이션에서 들어오는 요청과 해당 응답을 가로채고 조작하는 데 사용되는 인터페이스입니다. 필터는 요청 전후에 특정 작업을 수행하거나 응답을 수정하는 데 유용합니다. 주요 목적은 애플리케이션의 공통된 작업을 중앙에서 관리하고 코드 중복을 피하는 것입니다. 필터는 웹 애플리케이션의 요청 및 응답 처리 파이프라인에서 동작.. 2023. 5. 22. CodeDeploy BlockTraffic AllowTraffic 단축 프로젝트(멀티프로젝트 A API, B API) 의 CI/CD 를 Aws code series 사용하여 구축 서버의 구성 A API 이중화, B API 이중화 하여 총 4개의 WAS ALB 를 통해 로드밸런싱 운영서버의 배포시간이 최소 25분이 소요되어 CodeDeploy view events 를 분석하던 중 BlockTraffic , AllowTraffic 에서 시간이 오래걸리고 AllowTraffic은 5분이 넘어가면 배포가 실패되면서 롤백이 되는 현상을 발견하여 설정값을 변경하여 시간을 단축 변경 전 소요 시간 Deregistration delay(등록취소지연 시간) 컨테이너를 종료하고 싶거나 다른 이유로 로드 밸런서에 컨테이너로의 트래픽 전송을 중지하는 신호를 전송하면 로드 밸런서는 다운스트림 컨테.. 2023. 5. 12. Spring ControllerAdvice 활용 목적 Spring ControllerAdvice 사용방법 예제소스 https://github.com/devHjlee/devHjBlog/tree/main/springControllerAdivce ControllerAdvice 스프링프레임워크에서 예외 처리 코드를 중복해서 작성하지 않고, 전체 컨트롤러에 대한 전역적인 예외처리를 정의 할 수 있다. 컨트롤러 메소드에서 예외가 발생하면 ControllerAdvice가 이를 가로채고 정의된 예외 처리 로직을 적용한다. RestControllerAdvice ControllerAdvice 와 비슷한 기능을 제공하지만 반환되는 값의 형식이 다르다. ControllerAdvice 는 ModelAndView 객체를 반환하여 뷰를 랜더링 할 수 있지만, RestContro.. 2023. 5. 4. Spring Event 활용 목적 Spring Event 사용방법 예제소스 https://github.com/devHjlee/devHjBlog/tree/main/springEventPublisher Spring Event 스프링이벤트란 스프링의 Bean 과 Bean 사이에 데이터를 전달하는 방법 일반적으로 DI 를 통해 이루어진다 A Class 에서 B Class 에 대한 의존성을 주입받아 A Class 에서 B Class Method 를 호출하여 본인의 클래스에서 사용 이벤트는 A Class 에서 ApplicationContext 로 넘겨주고 이를 Listener 에서 받아 처리. 이벤트에는 발생시키는 Publisher 와 받는 Listener 이 있고 이벤트에서 데이터를 담는 이벤트 모델로 이루어져 있다. 직접적인 결합이 없기 .. 2023. 3. 21. FOREIGN KEY 연관된 데이터 삭제 오픈초기에 테스트 했던 데이터를 삭제해 달라는 요청이 와서 진행 하려던중 RDB 제약조건중 무결성 보장하기위해 물리적으로외래키를 설정하여 아래와 같은 오류가 발생 오류 > SQL Error [1451] [23000]: Cannot delete or update a parent row: a foreign key constraint fails 해결방법으로는 아래와 같이 3가지정도가 존재하고 이번 삭제건에 대해서는 3번방법을 택했다. 1. 외래키 옵션해제SET foreign_key_checks = 0;옵션을 해제 후 삭제해야 할 테이블의 데이터를 삭제 후 옵션을 다시 활성화SET foreign_key_checks = 1;해당 기능을 사용할 시에는 정합성이 떨어질 수 있으므로 주위 해야한다. 2. CASCADE.. 2023. 3. 16. Mac Java 버전 관리 회사에서 운영중인 플젝들은 특정 솔루션때문에 JDK 1.8 으로 설정해야했고 블로그용 플젝에서는 11이상부터 사용하고 싶기에 설정을 추가하면서 설명을 위해 포스팅 1.) /usr/libexec/java_home -V : 설치된 Java 버전들을 확인하기 위한 명령어 2.) /usr/libexec/java_home -v 1.8.0, 11, 19 명령어로 해당 java 버전들이 설치된 경로를 확인 (저는 1.8.0 이랑 1.8이랑 다르기에...) 3.) vim ~/.zshrc(or bashrc) : 해당 파일을 편집모드로 들어가 아래와 같이 JDK 버전별 경로 및 JAVA_HOME 설정 export JAVA_HOME8=$(/usr/libexec/java_home -v 1.8.0) export JAVA_HOM.. 2023. 3. 13. JPA+QueryDsl 게시판 CRUD 구현(2) JPA+QueryDsl 게시판 CRUD 구현(1) 목적 신규 프로젝트에서 사용 되었던 JPA, QueryDsl 을 정리 Spring Data Jpa 로 간단한 게시판 구현을 통해 정리 User, Post Entity 에서 Fetch LAZY, EAGER 변경해가면서 이해 QueryDsl 로 동적쿼리 작성 예제소스 https://github.com/devHjlee/devHjBlog/tree/main/springJpaCrud QueryDsl 이란? 정적타입을 이용하여 SQL 과 같은 쿼리를 생성할 수 있도록 제공하는 오픈소스(JPQL 을 만들어주는 builder 최종적으로는 JPQL 로 변환) 예시 : 학교 1:N 학급 1:N 학생 연관관계를 갖고있을때 JPA만을 통해 조회를 진행하게되면 학교에 해당하는 학.. 2023. 3. 9. Nginx AWS ELB connect() failed (113: No route to host) while connecting to upstream connect() failed (113: No route to host) while connecting to upstream 시스템 운영중에 이런 이슈가 발생했다. Aws 담당자분과 연락을 해보니 Aws ELB의 IP는 사용자 증가 감소에따라 유동적으로 변한다는 얘기를 듣고 커넥션실패할때 로그시간을 보니 ELB IP변경 된후부터 발생한다는걸 알게되었고 Nginx 설정 파일을 아래처럼 변경 resolver 시간을 줄이고 elb DNS 를 변수로 선언하여 적용 변경 전 Nginx.conf server { listen 80; resolver AWS ELB DNS IP(ex:10.XX.XX2) valid=10s; ...생략 location / { proxy_pass http://awselbendpoin; } ... 2023. 3. 8. AWS Aurora DB Cluster 엔드포인트 서버 클러스터란 각기 다른 서버들을 하나로 묶어서 하나의 시스템같이 동작하게 함으로써 클라이언트들에게 고가용성의 서비스를 제공하는 것을 말한다. 클러스터로 묶인 한 시스템에 장애가 발생하면, 정보의 제공 포인트는 클러스터로 묶인 다른 정상적인 서버로 이동한다. 서버클러스터는 사용자로 하여금 서버 기반 정보를 지속적이고 끊기지 않게 제공받을 수 있게 한다. 혼자 생각하고 있던게 AWS Aurora DB Cluster 에서는 하나의 엔드포인트만 존재해서 그 하나로 라이터/리더 인스턴스 와 리더 인스턴스를 분산 시켜주는 걸로 인지하고 있다가 아니라는걸 알게되어 포스팅 Amazon Aurora DB cluster 하나 이상의 DB 인스턴스와 이 DB 인스턴스의 데이터를 관리하는 클러스터 볼륨으로 구성됩니다. A.. 2023. 3. 8. JPA Batch JDBC Batch 목적 JPA를 통해 개발할시 대용량 Insert 방법 구현 JPA Batch JDBC Batch 예제소스 https://github.com/devHjlee/devHjBlog/tree/main/springJpaBulk Enity ID 전략에따라 구현하는 방법 ID 직접할당 : JPA, JDBC Batch IDENTITY : JDBC Batch Hibernate 에서는 IDENTITY 전략에 대해서는 Batch Insert를 비활성화시켜놨는데 새로 할당할 Key에 대해 미리 알수 없기 때문이다. SEQUENCE : 데이터베이스 시퀀스를 사용해 식별자를 조회해오고 조회된 식별자를 엔티티에 할당하는방법(Mysql 불가능) JPA, JDBC Batch TABLE : 키생성용 테이블을 통해 시퀀스전략을 흉내내는 전.. 2023. 3. 3. JPA+QueryDsl 게시판 CRUD 구현(1) 목적 신규 프로젝트에서 사용 되었던 JPA, QueryDsl 을 정리 Spring Data Jpa 로 간단한 게시판 구현을 통해 정리 User, Post Entity 에서 Fetch LAZY, EAGER 변경해가면서 이해 QueryDsl 로 동적쿼리 작성 예제소스 https://github.com/devHjlee/devHjBlog/tree/main/springJpaCrud ORM ?? ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스를 매핑하며 ORM 프레임워크는 객체와 테이블을 매핑하여 패러다임 불일치 문제를 개발자 대신 해결해준다. 하이버네이트(hibernate.org)라는 오픈소스 ORM 프레임워크가 등장하면서 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준이.. 2023. 2. 15. Srping Boot Quartz DB Cluster,Log 구현 개요 스프링스케줄러+shedLock 로 이중화 기능 구현하였으나 스케줄에 대한 설정을 위해 Quartz 로 변경 구현 목록 DB Cluster 를 통한 이중화 CronTrigger 생성,수정,일시정지,재기동 스케줄 변경 정보, 스케줄 수행 이력 Job 실패시 기존 등록된 수행시간에 맞춰 지정된 횟수만큼 수행 (횟수 초과시 중지) 목차 공식 홈페이지 : http://www.quartz-scheduler.org/ 0.Quartz란? 1.개발환경 2.용어정리 3.프로젝트 구조 4.소스 설명 Quartz란? Job Scheduling 라이브러리 이며 자바로 개발되어 모든 자바 프로그램에서 사용 가능하고 간단한 interval형식이나 Cron 표현식 스케줄링 지원 장점 DB 기반의 클러스터 기능 제공 시스템 Fa.. 2023. 1. 18. IntelliJ + Github 연동 IntelliJ + Github 연동 방법 Eclipse 만 사용하다 IntelliJ로 변경 후 GitHub 에 연동하는 방법 포스팅 테스트 프로젝트 명 : jpaStudy 1. IntelliJ Git 설정 1) File >> Settings 선택 2) Version Control >> Git 선택 후 Test Local Pc에 Git 설치 되어있으면 아래 캡쳐 처럼 Git 버전이 나오고 없다면 Git Bash 설치 3) GitHub 계정연동 GitHub 계정 비밀번호를 입력 후 인증 아래와 같이 연결된 화면이 나오면 성공 2. GitHub 프로젝트 생성 1) 위에 명시했던 jpaStudy 명으로 프로젝트 생성 2) GitHub japStudy 복사 3. IntellJ 프로젝트 GitHub 연동 1) E.. 2022. 11. 10. Eclipse Lombok 적용 Eclipse Lombok 설치하여 사용하기 Intellj 에서는 설치 없이 사용하다 STS 에서 프로젝트를 진행하려다 보니 Lombok 관련 오류가 발생하게되어 따로 lombok을 설치 하면서 정리 설치방법 1. 다운로드 https://projectlombok.org/ 2. 설치 Lombok.jar 다운로드를 후 cmd를 열어 java -jar lombok.jar 를 실행 eclipse ,sts 가 설치된 경로를 지정하여 설치 완료 3. 설치확인 설치가 완료 후 eclipse, sts ini 파일 확인 설치가 완료 됐어도 바로 적용이 안되어있을 수 있으니 maven update나 gradle build 진행 2022. 11. 7. Spring Boot zip END header not found zip END header not found 관련 정리 intellij에서 진행중이던 프로젝트가 건드린것 없이 build 오류 발생 오류내역 : zip END header not found jdk 버전이 잘못된줄 알았으나 maven 프로젝트들은 정상적으로 동작하고 있었고 구글링 검색결과 gradle 연관된 파일이 잘못되어 졌다는 결론 해결방법 2가지중 2번을 선택하여 해결 1. 해당 프로젝트의 gradle-wrapper.properties 파일에서 gradle 버전변경 gradle 버전은 최신으로 되어있어서 기존 그대로 유지 2. /usr/x/.gradle 폴더 삭제 삭제 후 intellij 재기동을 하니 gradle build가 정상적으로 동작하여 해결 2022. 11. 2. Spring Boot Connection Pool 설정 Spring Boot Connection Pool 설정 Spring boot 기본 connection pool이 spring boot 2.0.0버전부터 hikariCP로 변경되었고 Spring boot 2.0.0 이상버전에서 hikariCP를 TomcatJDBC Connection Pool 로 변경하는 방법 성능상으로 hikariCP가 다른 DBCP보다 성능은 좋지만 혹시 변경할 일이 있을 경우를 대비해 포스팅 Spring boot 초기세팅(hikaraCP) Pom.xml 1 2 3 4 5 6 7 8 9 10 org.springframework.boot spring-boot-starter-data-jpa mysql mysql-connector-java runtime Colored by Color Scri.. 2022. 11. 1. 여의도 불꽃축제 명당 불꽃축제 이틀전에 노량진 수산시장에 회먹으러 갔다가 주차장에 텐트가 쳐져있는걸 보고 축제당일에 노량진회센터 근처로 가볼만한 곳 검색! 1. 노량진 수산시장 주차장 2. 노량진 수산시장 옆 구이천국 6시쯤 도착했는데 자리가 전부 예약석이었으나 운좋게 실내 자리가 캔슬! 7시20분쯤 불꽃축제가 시작되면 바로앞에 축구경기장으로 들어가서 구경이 가능해요 야외예테이블을 예약하게되면 먹으면서 볼 수 있어서 좋을거 같아요 3. 노량진 수산시장 옆 전망좋은집 여기는 당일에 예약손님만 받는다는 안내 문구가 써있던걸로 봐서는 내년 불꽃축제때 미리 예약해서 가보는거 추천! 야외테이블이 있어서 여기도 야외테이블만 예약한다면 편하게 앉아서 불꽃축제를 즐기면서 술을 마실수 있을거 같아요 축구경기장에서 찍은 불꽃축제 사진 2022. 10. 28. Windows STS 설치 Windows STS 설치 설치방법 0. JDK 설치되어 있어야함 https://devhj.tistory.com/32?category=901011 1. 다운로드 https://spring.io/tools Spring Tools 4 is the next generation of Spring tooling Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE. spring.io 2. 설치 예전 버전은 zip 형태로 제공되어 압축해.. 2022. 10. 28. 카라멜 팝콘 집에서 액트투팝콘 버터맛만 먹다가 카라멜 팝콘 레시피를 보고 도전 재료 액트투팝콘 버터맛 반봉지 ,설탕 80g , 버터 20g ,소금 조금 조리방법 후라이팬에 설탕을 부은 후 약한불에서 녹여주다가 버터,소금을 넣은 후 계속 휘저어준다. 색깔이 카라멜색으로 변하게되면 불을 잠시 끄고 액트투팝콘의 반을 넣고 카라멜이 잘 묻어주고 섞어준다. 넓은 쟁반이나 액트투봉지를 펼쳐서 위에 펼쳐주는데 팝콘끼리 뭉치지 않게 한다. 2022. 10. 26. git fetch --prune git remote prune origin git fetch --prune git remote prune origin 이클립스에서 git fetch를 통해 remote 최신화 시킨 후 local remote branch 에서 불필요한 remote를 하나씩 삭제하던중 내가 왜이러고있나 생각이들어 검색 1 2 3 4 5 git fetch --prune or git remote prune origin cs prune : 치다 위에 명령어를 실행하면 리모트저장소에 지원 branch를 로컬 remote traking 목록에서도 삭제가 된다 git config --global fetch.prune true 를 실행시에는 git fetch git pull 명령어 실행시에 prune 옵션을 안붙여도 된다. 2022. 10. 24. 이전 1 2 다음 반응형