TIL

TIL-SOLID 원칙

yolang 2025. 1. 8. 21:16
728x90

📚 Today's TODO

✅ 풀스택 GPT 챌린지 오전에 끝내기

✅  스프링 핵심 원리 - 기본편 : 섹션 1, 2, 3

📡 새로 알게 된 내용

🗃️ 풀스택 GPT

  • Langchain 의 다양한 메모리들 
    • ConversationBufferMemory: 아예 다 버퍼에 저장하는 방식
    • ConversationBufferWindowMemory: 특정 용량만 저장하는 방식, 최근의 것들만 기억하게 됨.
    • ConversationSummaryMemory: 내용을 요약해서 저장하는 방식, 초기에 짧은 대화에 대해서는 ConversationBufferMemory보다 성능이 안좋을 수 있지만 시간이 지나면 더 좋아짐.
    • ConversationSummaryBufferMemory: 최근의 것들은 buffer에 그대로 저장하고 오래된 것들은 summary해서 기억함.
    • ConversationKGMemory: graph 를 이용한 메모리형식인데 entity를 불러 올 수 있다고 한다. NER(Named Entity Recognition) 이라는 또 다른 분야가 있는데 그것과 연관된 것으로 보인다.

🤨 추가적으로 검색해본 결과, 아주 빨리 변하고 있는 AI 생태계에서 이미 이 메모리들 말고 Langgraph를 이용한 메모리를 추천하고 있었다. 아직까지 이 버전들을 없앨 계획은 없다고 하나 엄청 빨리 변한다는 것을 체감했다.

 

  • LLMChain: 이것은 이제는 legacy가 되어버린 LECI를 좀 더 유연하지 않은 대신 편하게 쓸 수 있었던 기능이다.
  • RunnablePassthrough: 데이터를 변경하지 않고 바로 다음 파이프라인의 다음 단계로 전달가능

🗃️ 스프링 핵심 원리 - 기본편

  • Spring Boot: 자동차를 직접 만드는 대신, 조립된 자동차를 가져와 추가적으로 커스터마이징할 수 있는 플랫폼. (ChatGPT)
  • Spring Initializr: 자동차를 사기 전, 기본 옵션과 색상 등을 선택하는 온라인 주문 시스템 (ChatGPT)
  • Spring은 객체지향 언어가 가진 특징을 가장 잘 살려냄
  • 다형성 - 역할(배역)과 구현(연기자)을 구분하기. 
  • 인터페이스가 먼저이다. 인터페이스가(역할)이 흔들리지 않도록 만드는게 진짜 실력
  • SOLID 
    • SRP(Single Responsible Principle) 단일 책임 원칙: 변경이 있을 때 파급효과가 적으면 잘 설계한 것임
    • OCP(Open / Closed Principle) 개방-폐쇄 원칙: 확장에는 열려있고 변경에는 닫혀있음. 다형성과 관련된 개념.
    • LSP(Liskov Substitution Principle): 인터페이스에서 정의된 역할을 다하도록 코드를 짜야한다.
    • ISP(Interface Segregation Pinciple): 클라이언트 인터페이스를 범용적으로 사용하는 것보다 특정 클라이언트용 인터페이스를 만드는 것이 낫다.
    • DIP(Dependency Inversion Principle): 클라이언트 코드가 구현 클래스에 집중하는 것이 아니라 인터페이스에 집중하도록
  • "의존한다" - 그 코드에 대해서 조금이라도 알고 있다.
  • 단축키 - psvm(public static void main) ㅋㅋㅋ
  • DIP를 지키는 척하는 코드를 보여주고 변경을 해야했을 때 실제로 지키지 않았다는 것을 보여주는 사례를 봤다.

👻 오늘 하루 복기

어우 하루가 모자라다 오늘 유투브에서 신기한 내용을 접했는데 하기 싫은 것을 하면 뇌의 특정 부분이 강화된다고 한다. 그럼 인내력을 더 얻을 수 있다고 한다. 그래서 하루에 몇개씩은 하기 싫은 것을 해보려고 한다.. 오늘은 추운데 산책을 했다. 근데 산책하다가 쿠키를 사버렸다. 이건 제대로 이행하지 않은 걸까..ㅋㅋㅋㅋㅋ

 

 

728x90