목록전체 글 (339)
정구리의 우주정복
프로젝트를 하다보면 Response 가 제각각이라 이녀석이 성공인지 실패인지 어떤 상태인지 표현하기가 어렵다그래서 오늘은 공통 Response 를 정의해서 Http status 값과 ,message 그리고 Data 를 넣어보려 한다 어렵지 않음 !!!"기존 Response 를 한번 더 감싸준다"라고 생각하면 쉽다 data class BaseResponse( val status: HttpStatus, val message: String, val data: T? = null) 나는 status , message, data 를 넣었지만 자기한테 필요한 형태로 커스텀 해서 사용 가능하다 만약 기존에 ResponseEntity 이렇게 사용했다면 ResponseEntity> 이렇게 정의해주면 된..
Hash 는 key:value 형태를 가지고 있는 자료구조이다 전화번호부를 예로들 수 있음이름: 번호 이런 형태 !! Hash 의 가장 대표적인 특징은 ``모든 데이터 타입으로 접근 가능`` 하다는 점이다배열을 ['h','e','l','l','o] 이렇게 있을때 각 값에 접근하기 위해선 0~4 까지의 정수로 접근이 가능하다 하지만 hash 의 경우에는{'a':'1234','b':'5678') 이렇게 key 인 a,b 로도 접근이 가능하다 hash 는 주로 언제 쓰이냐면 string 기반으로 정보를 기록하고 관리할 때에 쓰인다 몇문제 풀어보면서 든 생각은dict 랑 set 을 끝내주게 잘 사용할 줄 알면 문제들을 풀 수 있을 것ㄱ 같다
1. 키 (Key) 조회키가 존재하는지 확인 (in 연산자)my_dict = {"apple": 3, "banana": 5, "cherry": 2}print("apple" in my_dict) # ✅ Trueprint("orange" in my_dict) # ❌ False in 연산자를 사용하면 해시 테이블을 이용해 O(1)로 빠르게 키를 검색 가능2. 값(value) 조회특정 값이 딕셔너리에 존재하는지 확인print(2 in hash_map.values()) 3. 키(key) + 값(value) 조회 (items())모든 (key, value) 쌍을 조회할 때 O(n)for key, value in hash_map.items(): print(f"{key}: {value}") 4. 특정 값(valu..

거지같은 메일 전송 (1) 구글 설정Gmail 로 이동 모든 설정보기 클릭 !!! 이거 설정 켜기 (2) 구글 2단계 인증 켜기 보안 > 2단계 인증 들어가서 켜기 !!! 다시 와서 구글 앱 비밀번호 검색 후 만들기 만들어진 앱 비번 복사 고고고 !!!!!!!! (3) Kotlin 으로 돌아와서 spring: mail: host: smtp.gmail.com port: 587 username: 구글 이멤일 password: 앱비밀번호 properties: mail: smtp: auth: true timeout: 5000 starttls: enable: true application.y..
코드를 쓰다보면 val routine = routineRepository.findById(routineId).orElseThrow{ IllegalArgumentException("routine not found") } 이렇게 작성한 경우에는 routine 의 값을 가져올때 (isSuccess) routine.isSuccess 이렇게 가져오고 val routine = routineRepository.findById(routineId) 요롷게 하면 routine.get().isSuccess 이렇게 가져와야한다 왤까 바로바로 타입의 차이이다 orElseThrow 를 사용하게 되면 값이 존재하면 객체 (Routine) 를 반환하고 없으면 예외를 발생하기 때문에 무조건 객체를 가지고 있다고 생각하기 때문에rout..
@Transactional override fun deleteRoutine(userId:Long, routineId: Long): Long { // routine entity 가져와서 val deleteRoutine = routineRepository.findById(routineId).orElseThrow {IllegalArgumentException("routine not found")} // 유저 유효한지 확인하고 val loginUser = userRepository.findById(userId).orElseThrow {IllegalArgumentException("user not found")} if (deleteRoutine...

나도 멋진 CI/CD 를 갖고싶다 Git Action 을 사용해서 만들어봐야징 서버는 Synology 사용했다git action 작성하는거는 어렵지 않았는데 서버 설정이 굉장히 어려웠음 .. 폴더는 .github > workflows > deploy.yml 생성하면 된덩 name: CI/CD for Synologyon: pull_request: branches: - main types: - closedjobs: build: if: github.event.pull_request.merged == true runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@..

원래 user 목록 조회하려면 admin 권한 줘야하는데 그럼 매번 유저 가입할때마다 admin 권한 일일히 줘야해서 현실적으로 불가능쓰 .. 그래서 Role 추가를 통해서 user 목록을 불러올 수 있는 방법을 써볼거임 ~~ 1) create role 2) Action 클릭 > Add Associated roles 3) filter by clients 여기서 view-users, query-users 추가하기 4) Realm role 로 이동 5) default 에 추가 default-roles 에 Client Role 을 추가해준다 !!!!! 6) Test 6-1) token 발급 후 https://{{keycloak주소}}/admin/realms/{{realm명}}/users 을 넣고 ..