개발이 좋아서

    SAP ALV 띄우기

    SAP ALV 띄우기

    반드시 Z로 시작해야한다. ABAP 구조 3가지1. 필드2. 행3. 테이블 선언 방법1. 필드 - 아밥타입 / 데이터타입으로 자리수를 넣어서 선언하는 것 types: slis_list_type(1) type n, - sy-crow - 가 들어가면 그 구조안에 있는 필드 하나를 가져온 것이다 row_pos like sy-curow,2. 행 - structure로 선언되어있는 구조 types: slis_qinfo_alv type alv_s_qinf, - begin of end of 묶어놓으면 행 begin of slis_add_fieldcat, fieldname type slis_fieldname, web_field type slis_fieldname..

    SAP 데이터 타입

    SAP 데이터 타입

    ABAP은 두가지 타입이다.1. ABAP 타입 원초적인 속성 : 문자 C / 정수(소수점X) I / 실수(소수점O) P / 시간 T / 날짜 D / 숫자로 구성된 문자 N2. 데이터타입 : 용도에 따라 나눠지는 속성 : ABAP타입과 똑같은 것도 있고 세부적으로 더 나눠지는 속성들도 있다. CLNT : 클라이언트 용도 / 아밥타입 문자C CHAR : 문자타입 / 아밥타입 문자C =>아밥타입과 똑같은 데이터타입 NUMC : 숫자로 구성된 문자 / 아밥타입 N 똑같다. DATS : 날짜 타입 / 아밥타입 D QUAN : 무게 질량 측정 / 아밥타입 P 정수 자리수 internal length / 소수점 자리수 demical places UNIT : 무게 질량 측정 단위 타입 / 아밥타입 C CURR : 금..

    SAP 인프라

    오픈수세를 사용한 이유 => SAP에서 배포한 매뉴얼 오픈수세로 하라되어있었고 SAP와 오픈수세가 밀접한 관련이 있고 공동 연구 솔루션 시장 90프로이상 2010년에 SAP에서 SYBASE를 인수해서 라이선스 배포가 자유롭다. SAP 서버 설치할 때 포함되어있었다. 자동설치. 표현층 : SAP GUI 설치 네트워크 - 오픈수세 설치 방화벽끄고 SSH키고 설치 직전 - hosts (ip와 host 이름 매핑) / hostname(서버이름) 수정 - 포트포워딩 127.0.0.1 10.0.2.15 sap gui 3220 rfc 3300 - sap gui 에서 127.0.0.1로 넣어놨다. 응용층 : 오픈수세 설치 / install.sh로 서버 설치 - install.sh - npladm 같은 사용자 계정..

    cors 에러 문제 - trim을 안했다..

    cors 에러 문제가 자꾸 나서 원인을 파악하려 했지만 찾기가 힘들었다.이미 하라는 것은 다했기 때문에 뭐가 문제인지 몰랐다. 하지만 원인은 너무도 쉬운 것이었다.원래 쉬운 것을 찾는게 더 어려운 것 같다.... app: cors: allowedOrigins: http://localhost:8080, http://localhost:8081, http://localhost:3000 이런식으로 허용해주고 있었는데 private List parseAllowedOrigins() { return Arrays.asList(allowedOrigins.split(","));}- 여기가 문제였다. 콤마하고 띄워쓰기가 있어서 제대로 적용이 되지 않았던 것이다...ㅠㅠㅠ private List parseAllo..

    빈 등록 안하고 싶을 때 - @Autowired(required = false)

    빈 등록이 필수가 아닌데 final로 빈을 등록하고 있었다!!그래서 @Autowired(required = false)를 주었다. 이후 null 체크를 하여 코드를 진행하였다.@Autowired(required = false)private SlackNotifier slackNotifier;if(slackNotifier != null) { // Slack으로 에러 알림 전송 slackNotifier.sendErrorNotification( "서버 에러 발생 (500 Internal Server Error)", e.getMessage() != null ? e.getMessage() : "알 수 없는 서버 에러가 발생했습니다.", e );}

    @WithCustomMockUser - 테스트 코드 작성 시 인증

    컨트롤러단에서 @AuthenticationPrincipal을 이용해 id값을 가져와 쓰고 있었다.테스트 코드를 작성하는데 id값을 어떻게 가져와야 할 지 몰랐다. 그래서 @WithCustomMockUser 어노테이션을 만들어 사용하였다.package com.swyp.libri.domain.annotation;import org.springframework.security.test.context.support.WithSecurityContext;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)@WithSecurityContext(factory = ..

    There were failing tests. See the report at: file:///C:/repository/ 프로젝트/build/reports/tests/test/index.html

    사이드 프로젝트를 하는 도중 Swagger와 restDocs를 같이 쓸 수 있다하여 우선 빌드를 했다.그런데 There were failing tests. See the report at: file:///C:/repository/ 프로젝트/build/reports/tests/test/index.html이런 에러가 뜨는 것이다.에러 경로를 따라가 파악해보니 테스트 코드는@ActiveProfiles("test")이것으로 테스트 환경에서 돌리는 것이었다. 그래서 application-test.yml에 jwt와 Oauth와 같은 설정 정보를 넣어줘서 apllication-local.yml 파일과 맞추어 줘야 한다는 것을 알았다.

    AWS ElasticCache 활용하기

    AWS ElasticCache 활용하기

    현업에서 EC2에 Redis를 설치해서 쓰지않고 ElastiCache를 쓰는 이유현업에서 EC2에 Redis를 직접 설치해서 사용하는 경우는 드물다. 일일이 Redis를 설치하고 셋팅하고 관리하면서 확장까지 하려면 신경쓸 게 생각보다 많다. 하지만 ElastiCache를 사용하면 셋팅도 쉽게할 수 있고, 확장도 쉽게 할 수 있고, 기본적인 모니터링 기능도 제공해주고, 장애가 날 가능성도 훨씬 적다. 이런 이유로 인해 현업에서는 ElasitiCache를 많이 활용한다.  AWS ElastiCache 셋팅하기1. ElastiCache 서비스로 들어가기2. 캐시 생성을 위해 ‘지금 시작’ 버튼 누르기 3. 클러스터 설정에서 ‘구성’ 선택하기- 여기서 얘기하는 클러스터(cluster)란 여러 캐시 서버를 이루는..

    Docker Compose로 Redis + Spring Boot 띄우기

    1. Dockerfile 만들기FROM openjdk:17-jdkCOPY build/libs/*SNAPSHOT.jar app.jarENTRYPOINT ["java", "-jar", "/app.jar"] 2. compose.yml 만들기services: api-server: build: . ports: - 8080:8080 depends_on: cache-server: condition: service_healthy cache-server: image: redis ports: - 6379:6379 healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 5s ..

    부하 테스트를 통해 Redis 적용 전 후 성능 비교하기

    부하 테스트에서 서비스가 1초당 처리할 수 있는 작업량을 보고 Throughput이라고 부른다. 단위는 TPS(Transaction Per Seconds, 1초당 처리한 트랜잭션의 수)이다. 부하 테스트를 위한 환경 세팅 (k6)k6란?부하테스트 툴에는 k6 이외에도 ngrinder, jmeter, ab, locust 등 다양한 툴이 있다. 하지만 그 중에서 간단하고 빠르게 테스트 해볼 수 있는 툴인 k6를 활용하고자 한다. (실무에서도 많이 쓰임) k6는 사용자인척 요청을 보내는 툴이다.1. k6 설치하기2. 터미널 창에서 잘 설치됐는 지 확인$ k6 3. API에 부하를 주기 위해 k6 스크립트 작성script.jsimport http from 'k6/http';import { sleep } from..