본문 바로가기
반응형

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

Field injection is not recommended @Autowired의 시대는 간것인가!!! 인텔리J에서 밑줄이..엄청 신경쓰였다.. 필드 주입은 예전부터 충돌나는 문제가 있었다. 여러후보군이 있으면 어떤걸 잡아서 주입시켜줘야하는지 아리까리 했던 것이다. 방법은 setter방식과 생성자 주입 방식이 있는데 찾아보니 생성자 주입방식이 대세인것 같다. 코드는 롬복을 이용해서 깔끔한 코드를 짤수가 있다. @RequiredArgsConstructor가 필요하다. @Service @RequiredArgsConstructor 아래처럼 변수를 만들어서 사용하면 끝이다!! 또한 final 키워드를 넣어서 immutable로 만들어줄수가 있다. private final TemplateService templateService; 굿바이..@Autowired~~~ Spri.. 2024. 3. 21.
주저리) mvc에서 controller 분리 전략 프로젝트를 하나 만들어서 mvc를 만들려는데..고민을 해보았다. ㅋㅋ Q) 현재는 하나의 도메인을 호출할 예정이지만 다른 도메인이 들어왔을 경우에 컨트롤러를 어떻게 분리를 해야할지 고민해보자! 카테고리별 즉, 디렉토리별로 분리하여 관리를 해주는 방법 아니면 그냥 Controller 디렉토리안에서 각각 필요한 Controller를 명명으로 분리하는 방법 기능적으로 커플링이 없다면 당연히 디렉토리별로 각각 만들어서 그 안에서 관리를 해주면 좋은데.. 기능적으로 중복코드가 발생할 가능성이 크다면? 즉, 서비스쪽 로직코드가 중복이 될 가능성이 크다. 예를 들어서 쇼핑몰을 구축을 한다면 주문/발주/송장입력 등 결이 다른 기능을 가지고 있다면 손쉽게 디렉토리별로 나눠서 관리하면 좋을것이다. 심지어는 MSA아키텍처로.. 2024. 3. 9.
springboot Swagger 설정 swagger란? https://swagger.io/ 사용해보니 api개발을 할 때 이해관계자에게 또는 팀원들한테 개발한 api대한 것을 사용해보라고 공유를 할 수 있습니다. 혹은 post방식의 경우 브라우저에서 테스트하기가 힘든데 swagger를 사용하면 용이 합니다.(물론 postman같은 친구들을 사용하기도 합니다.) 주저리로.. 아주오래전엔 javadoc이라는걸 사용하기 위해서 메소드위에다가 주석을 적고 javadocs를 만들어서 공유하거나 엑셀에 정리를 하거나 위키에 정리해서 공유를 하곤 했습니다. 이제는 springboot에서 swagger를 설정해서 사용하면 됩니다! 그런데..!! springboot 3.x이상에서는 아래와 같이 io.springfox-swagger가 동작하지 않습니다. //.. 2024. 3. 8.
springboot 예외처리(Exception Handler) 안녕하세요~ 오늘은 저번 시간에 이어서 예외처리를 해보려고 합니다 ㅎㅎ 저번시간 리마인드 2024.02.29 - [OpenSource/Spring Boot] - springboot 배너변경..ㅋㅋ;; 2024.02.29 - [OpenSource/Spring Boot] - springboot logging설정 2024.03.03 - [OpenSource/Spring Boot] - springboot profiles 예외처리의 종류 checked exception과 unchecked exception 2종류로 보시면 됩니다. checked exception예상 가능한 예외라고 보시면 됩니다. unchecked exception은 런타임오류이기 때문에 컴파일단계에서 잡아낼수 없으며 실행중에 오류가 나는 경우입.. 2024. 3. 8.
springboot profiles profiles? 이녀석은 언제 사용하는가? 바로 우리가 만든 어플리케이션을 환경에 따라 기동을 시킬때 필요한 내용 입니다. 환경에 따라 기동을 한다는건 로컬에서 실행을하거나 개발서버에서 실행을 한다거나 할때 즉, 개발환경 dev, staging, prod(real)을 뜻 합니다. 보통 배포를 할 때 필요합니다. 로컬에서 개발하다가 개발환경으로 올려서 테스트 하기 위해 배포할 때(혹은 prod) 로컬과 개발환경은 구분되어야 합니다. 여기서 구분되어야할 것은 db설정 같은 정보 입니다. profiles 구성 방법 첫번째 profiles는 보통 하나의 application.yaml에서 구분해서 가져오거나 두번째 application.yaml 즉, 파일 자체를 구분해서 가져올수 있는 방법 2가지 정도로 보시면.. 2024. 3. 3.
springboot logging설정 springboot는 기본적으로 commons-logging을 사용합니다. (https://commons.apache.org/proper/commons-logging/) 하지만 아파치 공통 로그를 사용하되 실질적으로 logging을 logback으로 하고 있다고 합니다ㅋㅋ LOGBACK을 사용을 하려면 2가지 방법이 있습니다. 첫번째는 application.yml을 통해서 관리를 하는 방법입니다. 두번째는 logback-spring.xml을 만들어서 디테일하게 관리하는 방법입니다. 첫번째 방식 기본이 console로그 입니다. 아래는 application.yml의 설정 입니다. logging의 레벨도 정할 수 있으며 spring.output.ansi.enabled를 통해 색깔도 이쁘게 할수 있습니다. 또.. 2024. 2. 29.
4. SPARQL이란? 스파클- SPARQL : Simple Protocol and RDF Query Language 2008년 웹 표준화 기구인 W3C(월드와이드 웹 컨소시엄)에서 제정하였습니다. 관계형 데이터베이스(RDB)에서 데이터 검색과 질의를 위해 구조화 질의 언어(SQL)가 사용되는 것과 같이 웹 환경의 RDF 데이터베이스에서는 SPARQL이 사용 됩니다. 다시 말해 RDF(Resource Description Framework)로 표현된 지식 그래프에 대한 쿼리 언어입니다. SPARQL은 SQL과 유사한 구조를 가지고 있으며, RDF 트리에서 데이터를 검색하고 조작할 수 있습니다. SPARQL의 기본구조 아래와 같은 기본구조로 되어있습니다. PREFIX (SELECT, CONSTRUCT, DESCRIBE, ASK).. 2024. 2. 29.
springboot 배너변경..ㅋㅋ;; 이게 뭐냐면.. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.0) 스프링부트가 기동할 때 뜨는 문구이다. springboot관련해서 재미난거 같아서 해보았다ㅋㅋ 아래 표처럼 배너변수들을 사용할 수 가 있다. Table 1. Banner variablesVariableDescription ${application.version}.. 2024. 2. 29.
3. 지식그래프에서 스키마란?(feat. Fuseki test) 지식그래프에서 스키마는 지식그래프의 구조와 의미를 정의하는 역할을 합니다. 스키마에는 다음과 같은 정보가 포함됩니다. 엔티티: 지식그래프에서 표현하는 개체를 나타냅니다. 속성: 엔티티가 가지고 있는 특성을 나타냅니다. 관계: 엔티티 간의 관계를 나타냅니다. 스키마는 지식그래프의 데이터를 이해하고 처리하는 데 필수적입니다. 스키마가 없으면 지식그래프에 저장된 데이터의 의미를 파악하기 어렵습니다. 또한, 스키마를 통해 지식그래프의 구조를 정리하고 효율적으로 관리할 수 있습니다. 스키마의 주요 역할 지식그래프의 구조와 의미를 정의: 스키마는 지식그래프에 포함된 엔티티, 속성, 관계의 종류와 의미를 정의합니다. 이를 통해 지식그래프의 데이터를 이해하고 처리할 수 있습니다. 지식그래프의 데이터를 정리: 스키마를 .. 2024. 2. 1.
2. About Apache Fuseki Fuseki는 Apache Jena에서 개발한 RDF(Resource Description Framework) 데이터를 제공하기 위한 HTTP 기반의 SPARQL 1.1/1.0 Transaction Protocol Server 입니다. 즉, SPARQL SERVER 입니다. Fuseki는 2가지 형태가 있습니다. 첫째, a single system인 "webapp" 둘째, 대규모 배포를 위한 Docker기반 또는 embeded를 돌리기 위한 "main" Fuseki는 쿼리 및 업데이트를 위한 SPARQL 1.1 프로토콜과 SPARQL Graph Store 프로토콜을 제공 합니다. 또한 TDB와 긴밀하게 통합되어 transactional persistent storage layer이며 Jena text q.. 2024. 1. 18.
1. About Apache Jena 안녕하세요 오늘은 아파치 제나에 대해서 알아보겠습니다 ㅎㅎ A free and open source Java framework for building Semantic Web and Linked Data applications. 아파치 제나는 시멘틱웹과 링크드데이터 어플리케이션을 만들수 있는 자바프레임워크 오픈소스 입니다. 앞으로 학습이 되어야 이해가 될 용어들이 많이 보이는군요! RDF, SPARQL, TDB, Fuseki, OWL etc. 우선 아래의 아키텍처를 살펴보겠습니다. 우선 Fuseki라는것이 보이고 SPARQL API를 찌르는게 보이네요 그리고나서 Inference API, Store API parsers and writers 등등 느낌이 올랑말랑하네요 ㅎㅎ 아키텍처에 나온 전체적인 내용을 .. 2024. 1. 18.
local에서 개발한 소스 github에 올리는 방법! 우선 github에 Repository를 만들어줍니다.(Readme는 만들지X) 아래처럼 가이드를 해주는데 따라하시면 됩니다. 저의 경우 git remote add origin을 통해 원격설정을 해주고 git push를 통해서 push해주었습니다! 2024. 1. 13.
github password를 안물어볼때;;(잘못된 패스워드 넣었음!) github에서 비밀번호를 토큰으로 관리를 하는데.. 비밀번호를 잘못넣었는데 password를 물어보지 않을때..! 대략 난감할때! 맥북에서는 유틸리티 > 키체인 접근.app을 통해서 삭제해줘야 합니다. 로그인쪽에서 해당 github을 찾아서 삭제! 2024. 1. 13.
github remote: Support for password authentication was removed on August 13, 2021. git push를 하는데 오류가 났습니다. 지원을 하지 않는다는 내용이네요 ㅋㅋ 개인github에는 정말 오랫만에 push를 하려는거라;; 2024년도에 2021년도 authentication오류가 나는군요 ㅎㅎ Username for 'https://github.com': pthahaha Password for 'https://pthahaha@github.com': remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#clonin.. 2024. 1. 13.
gradle8.5 error - A problem occurred evaluating root project / Could not find method publishing() for arguments 아래와 같이 오류가 발생! 오류내용은 아래와 같습니다. Build file '/Users/teri.epi/Workspaces/AppArchiGuideGrpcProtoBuf/build.gradle' line: 80 A problem occurred evaluating root project 'AppArchiGuideGrpcProtoBuf'. > Could not find method publishing() for arguments [build_b75x5h20h2167jvjg9tex8or9$_run_closure7@28c0acf5] on root project 'AppArchiGuideGrpcProtoBuf' of type org.gradle.api.Project. * Try: > Run with --sta.. 2023. 12. 19.
springboot controller test시 오류(@WebMvcTest) 환경 junit5, springboot 3.2, jdk21 controller test를 하려는데 오류가 발생 발생 이유 : controller에 autowired된 서비스들 때문에 오류가 발생 오류 내용: java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@7f5538a1 testClass = com.kakao.www.applicationarchitectureguide.controller.ThreadControllerTest, locations = [], classes = [com.kakao.www.applicationarchitectureguide.ApplicationAr.. 2023. 12. 14.
springboot3.2 + jdk21 인텔리J에서 error : Cause: error: invalid source release:21 error : Cause: error: invalid source release:21 요 에러..저번에도 본거 같은 기억이..!! gradle 베이스라 빌드시켜보니 역시나 오류! 그래서 gradle쪽을 살펴보니..jdk 18로 설정되어있었다. 21로 변경해주니 잘된다!! :) 2023. 12. 12.
제주도 공공데이터 분석 세미나 제주도에서 열린 공공데이터 분석 세미나에 참여하였습니다. 분석은 파이썬으로 하기 때문에 첫 시작은 파이썬 소개로 시작! 파이썬 설치를 한 뒤에 할 줄 알고 미리 터미널을 오픈 해놨는데!! Wow! 다른 방법들이 있었습니다 ㅎㅎ 그 중에 구글 Colaboratory라는게 있었는데 사용방법은 드라이브에서 앱을 하나 설치 해야합니다. 더보기 > 연결할 앱 더보기 > Colaboratory로 검색 > 설치! 설치가 되면 더보기 > Google Colaboratory를 통해서 만들수가 있습니다. 실습은 강사님이 미리 만들어놓은 파일로 진행!! 처음에는 파이썬 기초 부분으로 Colaboratory로 바로바로 실행하며 실습 하였습니다 ㅎㅎ 런타임 유형을 확인해보니 파이썬3으로 동작 하네요! 13시부터 17시까지 실습.. 2023. 9. 25.
제주도 web세미나 제주도에서 세미나라니.. 대부분의 큰 세미나는 스울에서 하기 때문에 열정이 식었는지.. 이제는 못가겠다 싶었는데 마침! 제주도에서 세미나를 하는것을 발견하였다 ㅎㅎ 코로나맵을 만든 대학생으로 유명한분이였는데 어떤 세미나인지 궁금해서 들어보았다. 세미나를 들었더니 수료증이 나옴! 필요 없는데..무튼 온라인으로 나옴! 세미나 내용은.. 들으러 오신분들이 완전 초보자들이 많아서 내용은 아주 기초적인 내용이였다. html/css 먼저 visual studio를 깔아서 진행하였다. HTML 릴리즈 노트 로그인 회원가입 CSS body { margin:50px !important; /* 밖으로 간격을 주겠다. */ /* padding은 안쪽으로 간격을 주겠다. !important는 인라인, 이터널등 무시 */ } .. 2023. 9. 22.
스텝6) 오픈api 신청 및 key 발급! 제주도 관련 open api가 있네요! http://www.jejuits.go.kr/open_api/open_apiView.do 그래서 사용하기 위해 신청접수를 했습니다. 신청 시에 법인만 신청하도록 되어있어서 난감했는데요.. 오픈 api이기에 그냥 개발중인 스크린샷을 넣고 신청했어요 ㅋㅋ 계속 연락이 없다가...드디어..오픈소스를 사용할 수 있는 키가 나왔습니다!! 감사합니다! 잘쓰겠습니다~~~~:) 개발은..살짝 딜레이~~ㅋㅋ.. 2023. 8. 31.
까먹을수 있는 문법 정리_1 1) Arrays.sort는 int[]는 정렬이 안된다. Integer여야만 한다. 체크~ Arrays.sort의 default 정렬은 오름차순이다.(1->2->3 등 점점 올라가는) 내림차순으로 해주려면 Comparator.reverseOrder()를 넣어줘야한다. 2) Arrays.asList로 만든 List는 remove가 동작하지 않는다. 동작하려면 아래와 같이 생성해야한다. List tempList = new ArrayList(Arrays.asList(tempArr)); 3) List를 String으로 표현하려면? String.join()을 사용하면 된다. import java.util.*; import java.util.Arrays; class Solution { public String so.. 2023. 8. 25.
반응형