TIL

TIL - 스프링, 자연어처리

yolang 2025. 1. 3. 22:01
728x90

📚 Today's TODO

🗃️ 스프링 입문 - 인프런

  • ✅ [섹션 1] 강의 소개 
  •  [섹션 2] 프로젝트 환경설정 (1/2) 
  •  [섹션 2] 프로젝트 환경설정 (2/2)
  •  [섹션 3] 스프링 웹 개발 기초 
  • [섹션 4] 회원 관리 예제 - 백엔드 개발 (1/2)

🗃️ 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터 비전 심층학습 

  • [1부] 01장: 인공지능과 방법론 

🤨 오늘 내운 내용

스프링 입문 - 인프런

  • Maven 과 Gradle의 차이?
    • 둘다 Java build tool 이다. 요즘 주류는 Gradle이라고 한다. Maven 은 xml를 사용하며 Gradle은 groovy 나 kotlin을 사용한다. Gradle이 Maven 보다 속도가 2배이상 빠르고, 플러그인이 다양하여 유연하기 때문에 주류가 되었다고 생각했다. 그리고 구글 안드로이드 스튜디오의 기본 빌드로 Gradle이 채택된 것도 영향이 없지 않을 거라고 생각했다.
  • Daemon이 뭐야?
    • Docker를 실행할때나 오늘도 뭘 찾아보다가 Daemon이라는 단어가 뜨길래 찾아봤다. 발음이 데이몬인데 백그라운드로 돌아가는 시스템을 뜻한다. 이 시스템은 대게 부모 프로세스를 갖지 않고, init 바로 아래에 위치한다. 백그라운드로 돌아가는 만큼 네트워크 요청을 처리한다. 즉 언제 요청이 올지 모르니 백그라운드에서 대기하고 있는 시스템이라고 이해했다. (위키피디아 참고)
  • Spring initializr (https://start.spring.io/)
    • 오늘 스프링 공부를 시작하면서 해당 사이트로 처음 프로젝트를 만들었다. 여기에서 Maven, Gradle 선택도 하고 Java 버전 및 라이브러리 설정을 하면 초기 프로젝트를 만들어서 다운로드 받을 수 있다. 그냥 초기 설정을 IDE에서 할수도 있겠지만 아직 어려워서 해당 사이트를 사용하면 편리하다고 한다. 
  • thymeleaf
    • modern server-side Java template engine for both web and standalone environments (공식사이트)
    • 원래는 JSP 라는 것을 사용했는데 이게 html 코드에 Java 코드를 넣는 방식이라고 한다. 듣기만 해도 유지보수가 어려울 거 같은데 thymeleaf를 통해 템플릿 안에 동적으로 컨텐츠를 제공할 수 있다.
  • tomcat
    • 아파치 톰캣은 웹서버이다.spring-boot-starter-web 를 설치하면 같이 설치되는 데, 오픈소스였다. 가장 대중적으로 사용하는 자바 웹서버였다. 
  • JUnit : Java 테스트 프레임워크로 우테코 프리코스할때 한번 들어봤었다. 자바 개발에 있어서 test 폴더가 기본적으로 제공되는 만큼 test 파일이 필수인거 같다. Junit에 대해서는 다음에 좀 더 알아보겠다.
  • @ 로 annotation을 쓰는 이유는?
    • 자바 애너테이션은 클래스 파일에 임베디드 되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다. (위키피디아)
    • 음 그렇군요, 그러니까 자바 annotation을 통해 IDE나 컴파일러에게 추가적인 메타데이터를 줘서 작업을 더 효율적으로 수행할 수 있도록 한다.
    • 예를 들어, @ResponseBody 라는 annotation을 사용하면 viewResolver를 사용하지 않고 HttpMessageResolver를 사용하여 jsonConverter를 사용해 반환한다.
  • Optional 이 뭐야?
    • Optional은 Java 8에서 도입된 클래스이며, 값이 있거나 없을 수 있는 상황에서 이를 우아하게 처리하기 위해 사용됩니다. 이 클래스는 주로 null을 직접 처리하는 대신 더 안전하고 명시적인 방식으로 사용할 수 있도록 설계되었습니다. (ChatGPT)
    • 예를 들어 Optional.ofNullable(어떤값) 이렇게 해주면 값이 있으면 Optional 안에 값을 넣어서 return 하고 null 이면 값 없이 return 빈 Optional을 반환한다.
  • Static Import?
    • option + enter 를 하면 static import를 할 수 있는데 코드가 간결해 진다.
    • Assertions.assertThat 에서 asserThat 만 쳐도 되게 됨
  • Assertion에 Junit 이랑 assertj 가 추천으로 뜨는 데 뭐 쓰지??
    • assertj 가 가독성이 더 좋고 JUnit에서 써드 파티 라이브러리인 assertj 사용을 추천한다.
  • Extract/Introduce variable :https://www.jetbrains.com/help/idea/extract-variable.html
  • 📌 아니 미친 intellij 이정도인줄 몰랐는데 Method도 그냥 단축키로 추출해준다....!!!!!
  • given-when-then : 무엇이 주어졌을때, 어떤 것을 실행하고 결과는 이렇게 예상된다. 이런 식으로 TEST를 작성한다.

 

파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터 비전 심층학습

  • Data Lake? - 대량의 정형, 반정형, 비정형 데이터를 저장, 처리, 보호하기 위한 중앙 집중식 저장소입니다. 데이터 레이크는 데이터를 기본 형식으로 저장할 수 있으며, 크기 제한을 무시하고 다양한 데이터를 처리 할 수 있습니다. (Google Cloud), 대규모 원시데이터를 저장하는 데이터 저장소 유형 (책)
  • EDA(exploratory data analysis) : 데이터 세트를 분석해 주요 특성을 파악하는 것. 시각화를 사용하기도 함. 
  • 데이터 준비 - 모델링 - 모델평가 - 모델배포
  • MLOps - DevOps 에서 유래한 말로 머신러닝 모델을 소프트웨어 개발 수명 주기에 통합하는 방법, 데이터 과학자와 데이터 엔지니어의 협업을 포함

🎛️ 오늘의 TroubleShooting

  • Caused by: org.gradle.jvm.toolchain.internal.NoToolchainAvailableException - 다른 컴퓨터로 프로젝트를 옮겨서 작업하려고 했는데 이게 떴다. 결론은 JAVA 버전이 달라서 생긴 문제로 새로 깔아서 설정해주니까 해결됐다.

👻 오늘 하루 복기

오늘 스프링 공부해보니까 내가 얼마나 애송이였는지 알게 되었다. 단축키도 너무 좋은 것들이 많고 intellij는 짱이다. Test에 관련해서도 개념이 생기니까 이전에 java로 코딩했을 때 안보였던 것들이 보이기 시작했다. 새로 시작하다보니까 용어에 대한 학습내용이 많았는데 다 습득하는 것을 목표로 하기 보다는 한번 봤다는 것에 의미를 두기로 했다.

 

오늘은 자연어처리는 가볍게 예전에 배웠던 딥러닝 개념들을 복습했는데 (사실 기억이 잘 안나지만) 일단 시작했다는 것에 의의를 두자.☺️

728x90