본문 바로가기
반응형

직장이 아닌 직업을 가지자!694

keycloak quick start springsecurity진영에서 더이상 oauth2.0에 대한 지원을 중단하고 오픈소스를 통해 구현하라는 권고가 있었다. OKTA(유료)와 Keycloak(무료)중에 keycloak을 찍먹 해보려고 한다. https://www.keycloak.org/getting-started/getting-started-docker 우선 k8s베이스나 docker 베이스등 어떤 베이스로 셋팅을 할지 고를수 있다. 여기에서는 로컬에 docker가 셋팅 되어있으니 docker based로 해보겠다. docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:19.0.1 start-dev 위.. 2022. 8. 10.
Spring Cloud Contract https://spring.io/projects/spring-cloud-contract Spring Cloud Contract is an umbrella project holding solutions that help users in successfully implementing the Consumer Driven Contracts approach 위의 내용은 spring.io에 spring cloud contract 설명을 한 내용인데 내용중에 Consumer Driven Contracts라는 내용이 나온다. 한글로 번역하면 "소비자 주도 계약" 이것은 무엇을 말하는걸까? 제공자(Producer) 가 소비자(Consumer)에 대한 연동을 확인하면서 모듈화된 시스템 구성 요소를 TEST하는데 사용되는 .. 2022. 8. 3.
타 회사 지식그래프에 대해 알아보자 https://www.stardog.com/ 어떤 데이터든 액세스가 가능 원격으로 데이터를 액세스 좋은 추론 엔진 보유 통찰력을 위한 데이터 통합 안정적으로 확장 가능(kubernetes와 호환 및 ACID를 준수) 당사의 온톨로지 기능은 검색, 패턴 인식 및 권장 사항에 대한 공통 분류 체계를 만드는 데 도움이 됩니다. Stardog은 SNOMED, ​​PubMed, NCIt 등을 지원합니다. Stardog은 많은 고객사를 현재 보유하고 있음 https://www.stardog.com/company/customers/ Designer 데이터 엔지니어와 분석가가 데이터를 연결, 매핑, 모델링 및 게시할 수 있는 코드 없는 시각적 환경을 제공 Explorer 코드나 쿼리 없이 데이터의 연결을 탐색할 수 있.. 2022. 8. 2.
@Scheduled @Scheduled 어노테이션은? 말그대로 스케쥴링 즉, 주기적인 작업이 있을 때 사용한다. 마치 리눅스의 crontab과 같다. 사용법 우선 사용하려고 하면 @EnableScheduling 선언이 필요하다. 그리고 수행할 메소드위에 선언하여 사용하면 된다. @Scheduled(initialDelayString = "6000", fixedDelayString = "6000") protected void scheduledReloadAllGraphs() { log.debug("reloadAllGraph"); reloadAllGraphsMono().subscribe(); } 속성 cron : cron 표현식을 지원한다. ex) @Scheduled(cron="* * * * * *") 초/분/시/일/달/주 201.. 2022. 7. 19.
k9s 셋팅 및 사용법 k9s란? k8s(쿠버네티스) 클러스터를 제어하기 위해 보통 kubectl 을 사용하는데 오늘 한 크루가 k9s라는것을 사용하는것을 보았다. 터미널에서 제어를 하는거였는데 좀 더 편하게 쿠버네티스를 제어할 수 있다고 한다. 그래서 설치를 해보고 사용해보려고 한다. 장단점으로 k9s를 바로 사용한다면 kubctl의 명령어들에 대해서 점점 더 잊혀질 가능성이 크다. 하지만 매우 편할것 같긴하다. 일단 둘 다 사용해보는걸로 하자! 셋팅-macOS 기준 brew install k9s 명령어로 인스톨 해줍니다. brew install k9s Running `brew update --preinstall`... ==> Downloading https://ghcr.io/v2/homebrew/portable-ruby/p.. 2022. 6. 17.
Dockerfile 명령어 정리 봐도 봐도 잘 까먹는 Dockerfile 명령어..정리 해보았습니다. Dockerfile 포맷 #주석 명령어(INSTRUCTION) 인자(arguments) ex) #dockerfile format ex FROM ubuntu:latest FROM 명령어 FROM FROM : 하나의 Docker image는 base 이미지부터 시작해서 기존 이미지 위에 새로운 이미지를 중첩해서 여러 단계의 이미지 층(layer)을 쌓아가며 만들어 집니다. FROM 명령어는 이 base image를 지정해주기 위해서 사용되고 보통 Dockerfile 내에서 최상단에 위치 합니다. base image는 일반적으로 Docker Hub 등 공개 이미지인 경우가 많음. ex) FROM node:12 FROM python:3.8-a.. 2022. 6. 10.
gradle - Could not resolve all dependencies for configuration ':detachedConfiguration4'.Using insecure protocols with repositories, without explicit opt-in, is unsupported. 넥서스에 있는 것을 가져오려는데 오류가 났다. 에러발생 Could not resolve all dependencies for configuration ':detachedConfiguration4'.Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository 'maven(http://maven.xxx.com/어쩌구저쩌구)' to redirect to a secure protocol (like HTTPS) or allow insecure protocols. See https://docs.gradle.org/7.4.1/dsl/org.gradle.api.artifacts.repo.. 2022. 5. 9.
인텔리J 업데이트 후 한글로 나오는 것 다시 영어로 영어로만 여태 보다가 한글로 나오니 무척 어색...ㅋㅋ 저 처럼 영어가 더 편해진 분들은 아래와 같이 플러그인에서 한글언어패치 플러그인을 삭제 해주시면 됩니다. 플로그인에서 korea로 검색 체크 박스에 있는 체크를 없애주시고 적용 및 확인 해주세요 그리고 재시작을 해주시면 아래와 같이 기존 처럼 영어로 나옵니다~ 2022. 4. 20.
local에 Docker 기반 Redis 셋팅(feat. mac) ■ 우선 docker가 셋팅되어져있어야 한다. ■ docker명령어로 redis 이미지를 가져온다. docker pull or docker image pull docker pull redis:6.2.6 // 해당 버전을 가져오려면 redis:버전 docker image pull redis // 최신을 그냥 가져오려면 redis ■ 네트워크 리스트 확인 docker network ls NETWORK ID NAME DRIVER SCOPE 614b4249a627 bridge bridge local 3b3695c608b6 host host local a9a8dbbfa136 none null local ■ 네트워크 설정 docker network create redis-net redis-cli도 같이 구동해서 통.. 2022. 4. 12.
gradlew clean build 시 error 발생(java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor) mac에서 IDE가 아닌 gradlew로 빌드 시키려는데 아래와 같이 오류가 발생했다. 현재 mac에서 jdk는 디폴트로 11을 사용하고 있었는데 git clone 받은 프로젝트는 jdk 8을 사용하고 있었다. > Task :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x57e49654) cannot access class com.sun.tools.javac.processi.. 2022. 4. 11.
(intelliJ ) java: Internal error in the mapping processor: java.lang.NullPointerException java: Internal error in the mapping processor: java.lang.NullPointerException at org.mapstruct.ap.internal.processor.DefaultVersionInformation.createManifestUrl(DefaultVersionInformation.java:182) at org.mapstruct.ap.internal.processor.DefaultVersionInformation.openManifest(DefaultVersionInformation.java:153) at org.mapstruct.ap.internal.processor.DefaultVersionInformation.getLibraryName(Default.. 2022. 4. 11.
spark_study) AggregateByKey TEST AggregateByKey https://www.projectpro.io/recipes/explain-aggregatebykey-spark-scala 위의 링크를 통해 개념을 살펴보고 아래처럼 작성해보았다. spark-shell을 사용해서 작성 /usr/local/Cellar/apache-spark/3.1.2/bin/spark-shell // Bazic aggregateByKey example in scala // Creating PairRDD studentRDD with key value pairs, Number partitions is 3 defined in parallelize method. val studentRDD = sc.parallelize(Array( ("Joseph", "Maths", 8.. 2022. 4. 7.
docker 기반 postgreSQL 접속하기 목표 : docker 컨테이너가 띄워져있다는 전제하에 postgresql에 접속을 해서 테이블을 조회 해보자 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 13e2af478713 postgres "docker-entrypoint.s…" 11 days ago Up 11 days 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp rest 접속 docker exec -i -t rest bash 데이터베이스 보기 /l postgres-# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+--------.. 2022. 4. 4.
junit error - java.lang.IllegalArgumentException: 'url' should start with a path or be a complete HTTP URL: api/events 오류 발생 java.lang.IllegalArgumentException: 'url' should start with a path or be a complete HTTP URL: api/events 컨트롤러쪽을 확인해보니! /api/events로 되어있었다.. 해결 테스트 코드쪽 url을 api/events에서 /api/events로 변경을 해줬더니 잘 동작 하였다. 2022. 3. 27.
springboot error - Could not write JSON: Can not start an array, expecting field name (context: Object) 에러 발생 .HttpMessageNotWritableException: Could not write JSON: Can not start an array, expecting field name (context: Object); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not start an array, expecting field name (context: Object) (through reference chain: org.springframework.hateoas.EntityModel["content"])] 위의 에러는 테스트 코드를 돌리는데 발생. @Test @DisplayName("입력 값이 잘못된 경우에.. 2022. 3. 25.
test code error - java.lang.NullPointerException: Cannot invoke "org.springframework.test.web.servlet.MockMvc.perform(org.springframework.test.web.servlet.RequestBuilder 오류 내용 java.lang.NullPointerException: Cannot invoke "org.springframework.test.web.servlet.MockMvc.perform(org.springframework.test.web.servlet.RequestBuilder)" because "this.mockMvc" is null 소스 package kr.pe.acet.acetrestapi.index; import kr.pe.acet.acetrestapi.common.RestDocsConfiguration; import org.junit.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.. 2022. 3. 24.
Spring Rest Docs 사용하기 api 개발 시에 문서화를 해서 이해관계자에게 전달을 하거나 개발자들간에 공유를 하거나 한다. 이런 문서는 wiki 나 다른 기업에서는 doc이라던지 심지어 한글이라던지 문서를 만들어서 공유한다. 문서화는 개발자한테 정말 곤욕이였다. 개발하기도 바쁜데 문서까지 신경써야 하니 말이다. 혹은 개발은 해놓고 문서와의 동기화가 매번 늦거나 까먹거나 하는 경우가 빈번하게 일어난다. 그래서 문서화를 좀 더 쉽게 하기 위해 아주 오래전엔 javaDocs라고 메소드 위에다가 설명 넣고 만들어줬던 기억이 어렴풋이 난다. 내가 본 근래에는 swagger를 많이 사용하는것 같다. 그런데 이번에 새롭게 알게된 RestDocs라는것을 소개해보려고 한다. https://techblog.woowahan.com/2597/ 위에서 보.. 2022. 3. 22.
HATEOAS(Hypermedia as the engine of application state) HATEOAS(Hypermedia as the engine of application state) You will build a hypermedia-driven REST service with Spring HATEOAS: a library of APIs that you can use to create links that point to Spring MVC controllers, build up resource representations, and control how they are rendered into supported hypermedia formats (such as HAL). HAL이 좀 더 궁금하다면? 클릭 더보기 Hypertext Application Language HAL is a simp.. 2022. 3. 15.
Junit5 - 파라미터처리로 중복 제거! 중복적인 코드를 제거하기 위해 파라미터 처리를 하여 테스트 코드를 수정. @Test public void testFree(){ // Given Event event = Event.builder() .basePrice(0) .maxPrice(0) .build(); // When event.update(); // Then assertThat(event.isFree()).isTrue(); // Given event = Event.builder() .basePrice(100) .maxPrice(0) .build(); // When event.update(); // Then assertThat(event.isFree()).isFalse(); // Given event = Event.builder() .basePr.. 2022. 3. 12.
Spark - 파티셔너(Partitioner)&셔플링(shuffling) 파티셔너에 의해 RDD 파티셔닝이 실행된다. 파티셔너는 파티션 인덱스를 RDD 엘리먼트에 할당한다. 동일 파티션에 존재하는 모든 엘리먼트는 동일한 파티션 인덱스를 가질 것이다. 스파크는 HashPartitioner와 RangePartitioner라는 두개의 파티션이 있다. (사용자 정의 파티셔너도 구현 가능!) HashPartitioner Spark의 기본 파티셔너이고, RDD 엘리먼트의 각 키에 대한 해시값을 계산한다. 동일한 해시 코드를 가진 모든 엘리먼트는 다음 코드처럼 동일 파티션을 얻는다. hashCode()를 사용해 3으로 설정된 파티션 개수를 기반으로 각 엘리먼트마다 partitionIndex를 얻을 수 있다. RangePartitioner RangePartitioner는 RDD를 거의 동일.. 2022. 3. 10.
git - 중요한 file을 모르고 push했을땐? 1. 임의로 test.pem을 생성하여 push하였다. 2. test.pem이 알고봤더니 정말 중요한 파일 이였다! 예를 들어 나의 비밀번호들이 저장되어있다..!! 3. 삭제를 하기 위해서는 아래와 같은 git filter-branch명령어를 사용 합니다. git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch src/main/resources/test.pem' --prune-empty -- --all git rm --cached는 원격지 브랜치에 있는 파일을 삭제 해줍니다. git rm 로컬과 원격지 둘다 삭제. 여기에는 로컬에는 남아있어도 되지만 원격지에 올라가면 안되기때문에 --cached 옵션을 사용한 것이다. --ignore-.. 2022. 3. 3.
반응형