728x90
며칠전부터 MCP에게 알고리즘을 점령당하다가, 본 것 중에 가장 이해가 쉬운 MCP에 대한 짧은 강의를 니꼬 선생님이 찍어주셨다. Model Context Protocol, MCP2024년 11월, Anthropic님이 MCP라는 프로토콜을 오픈 소스로 공개했다. 이건 AI 모델이 다양한 데이터 소스와 연결되어 실시간으로 정보 공유를 할 수 있도록 설계된 프로토콜이다. 예를 들어, 최근 향상된 이미지 성능에 힘입어 가장 많이 쓸 GPT에게 다음과 같은 상황을 생각할 수 있다.🍊ME: GPT야 네이버 API를 통해서 날씨 정보 가져와🤖GPT: 난 네이버 API 못 써.🍊ME: 내가 미리 그 API 쓸 수 있도록 뚫어놓은 MIP 붙여줄게. 니꼬 선생님은 USB 비유를 했는데 내 PC에 외부 저장소인..
30살을 맞이한 JAVA의 준비Oracle이 Java24(Oracle JDK 24)를 그저께, 2025년 3월 18일에 정식 출시 발표를 했다.Java21 나와서 가상스레드 적용된 게 불과 1년 전이었는데 벌써 24다. Java 24에 대한 기능은 (시차가 있지만) 2025년 3월 18일부터 20일까지 열리는 JavaOne 2025 컨퍼런스에서 공개되고 있다. 이 컨퍼런스의 발표내용에 따르면 "올해로 Java 30주년을 맞았어!" 몰랐다. Java 아직 30살 밖에 안되었구나, 나랑 크게 차이 안 나네 👓 하고 글쿤글쿤 한 번. "AI 기반 애플리케이션 개발을 지원하려고 확장 중이야!" AI를 지원한다는 건 어떤 의미인지 궁금 한 번. 조금 더 들어보면 "Java 24에는 20개 이상의 새로운 기능이..
SOLID는 여전히 중요하다소프트웨어 설계의 다섯 가지 핵심 원칙인 SOLID는 명명된 지 20여 년이 지나가고 있지만, 여전히 개발자들에게 중요한 기준으로 자리잡고 있다. 최근 카카오뱅크의 안드로이드 개발자도 이를 언급하여, SOLID 원칙이 소프트웨어 설계에서 어떤 시사점을 제공하는지 강조한 바 있다. 모든 개발자가 알아야 할 SOLID의 진실 혹은 거짓기술 면접 자리에서 SOLID 5대 원칙에 대한 질문을 받아보신 분이라면 주목! 이 글에서는 SOLID 원칙의 역사와 장점, 그리고 각각의 원칙에서 중요한 점을 면접 상황 예시를 통해 가볍게 풀어보았습tech.kakaobank.com 다만 SOLID가 설계 품질을 높이기 위한 지침일 뿐, 모든 프로젝트에서 반드시 지켜야할 필수 요건이라거나 법이란 건..
Thread, Process, Core는 많을수록 좋을까보통 이러한 질문은 느낌상 '아니니까 묻는 것 같은데' 라는 직감을 준다.만약 누군가 이 각각이 많을수록 어떠한 영향을 줍니까?라고 물어보면 단순히 생각했을 때 Core는 뇌의 역할이니까 뇌가 많을수록 처리량이 많을 것 같고, 한 프로그램 내에 Process가 여러개로 있다면 병렬처리할 기회가 많이 생길 것 같아서 괜찮을 것 같고, Thread가 여러 개라면 이 또한 병렬처리에 유리할 것 같다. 그러한 생각이 틀렸는가를 판단하기 위해서 각각을 살펴본다. Thread가 많으면 어떨까Thread는 크게 하드웨어 입장과 소프트웨어 입장에서 생각할 수 있다. 여기선 소프트웨어 입장으로서 Process 내의 Thread라고 해해보자. 우리는 Thread가 ..
인덱스저번에 말한 바와 동일하게 이런 특징이 있다B-Tree 등의 자료구조 기반의 효율적인 탐색이 가능하다특정 열(Column)에 대해 정렬된 형태로 저장하여 검색 속도를 높인다데이터가 많아질수록 index의 유무가 쿼리 성능에 큰 영향을 미친다그리고 이제 이 인덱스는 그 특징에 따라 분류할 수 있다. 클러스터/비클러스터(Cluster/NonCluster) 인덱스 잘 알려진 지식으로 테이블의 PK는 보통 인덱스 설정이 되어있음을 우린 알고 있다. 이와 관련하여 클러스터/비클러스터 유형이 있는데, 이 PK가 '클러스터 인덱스' 유형에 속한다. ✔️ 클러스터 인덱스간단히 그렸다. 그림을 보면- 인덱스 페이지 내에서 Root 노드는 PK(id)를 Key로, Page에 위치에 대한 포인터를 갖고 있다.-..
Dart의 const와 finalFlutter를 시작하려면 Dart 언어를 알아야하는데, 기본적인 자료형 외에도 필수로 적할 키워드가 있다.바로 const와 final인데 이 두 키워드는 불변성을 나타내고 있지만 사용목적은 다르다. Java나 JavaScript를 이미 해 본 사람이라면 이 키워드 자체는 익숙한데 또 그것과 다른 점도 있다. ✔️ final의 특징런타임을 포함해 한 번만 할당 가능하다final로 선언된 변수는 한 번만 값을 할당할 수 있다. 할당 시점은 런타임을 포함해 언제든 가능하지만 그 이후 다시 변경할 수 없다.final name = 'Flutter'; name = 'Dart'; // Error: name is final and cannot be reassigned.위는 선언 시 할..