개발포럼 TOP 20
일간 l 주간 l 월간
인텔 코어 울트라7
개발포럼
제2서울핀테크랩은 지난 7월 20일부터 22일까지 3일간 운영한 ‘블록체인 아카데미’를 성공적으로 마무리했다고 23일 밝혔다. 블록체인 아카데미는 시민들이 블록체인 기술에 대한 이해를 높이고 실습 중심 교육을 통해 직접 기술을 체험할 수 있도록 마련됐다. 참여자 약 67%는 현재 구직 중으로, 한국표준협회에서 블록체인 교육을 강의했던 최광훈 강사가 3일간 진행했다. 1일 차는 블록체인의 기본 개념과 2026년 주목해야 할 블록체인 활용 분야 교육, 그리고 이더리움 실습으로 구성됐다. 2일 차에는 블록체인의 기술 이해에 집중해 비트코인과 블록체인 주요 보안 기술에 대해 알아보고 web3를 활용한 프로그래밍 실습이 진행됐다. 3일 차에는 블록체인에 대한 국내 이슈, NFT와 메타버스로 블록체인을 이해하는 시간을 가지며 2일 차 실습 내용의 심화 학습으로 마무리됐다. 수강생은 블록체인 교육을 접할 기회가 많지 않은데 3일간의 교육과정은 좋은 기회였다며, 이론 이해와 실습이 바로 이어져 기술과 더 가까워지는 느낌이었다는 후기를 전했다. 제2서울핀테크랩 측은 전공자, 전문가가 아니더라도 시민들이 디지털 금융에 쉽게 관심을 갖고 경험하는 기회가 됐길 바란다고 밝혔다. 한편 제2서울핀테크랩은 오는 8월 25일 ‘블록체인, 코인과 뭐가 달라요?’를 주제로 대시민특강을 진행할 예정이다.
2026.07.23
1
0
Cloudera 레이크하우스 데이터 서비스와 VAST AI 운영체제를 NVIDIA AI 데이터 플랫폼 레퍼런스 설계 기반으로 결합 어떤 데이터 환경에서도 AI를 구현하는 유일한 기업인 클라우데라(Cloudera)가 AI 운영체제 전문기업 VAST Data와 전략적 파트너십을 체결했다고 발표했다. 양사는 데이터를 지속적으로 수집하고 정제하며 관리한 뒤 AI 모델의 학습과 추론에 제공하는 확장형 운영 환경인 통합 AI 팩토리(Unified AI Factory)를 구축할 계획이다. 이 인프라는 온프레미스 환경과 퍼블릭 클라우드 전반에서 운영되는 기업을 지원하도록 설계됐으며, 기업이 일관된 AI 운영 체계를 유지하는 동시에 성능과 규제 준수, 비용 요건에 가장 적합한 환경에서 AI 서비스를 운영할 수 있도록 지원한다. 이번 협력은 Cloudera의 차세대 컨테이너 기반 데이터 서비스와 VAST AI 운영체제를 결합하는 것이 핵심이다. VAST AI 운영체제는 고성능 스토리지와 데이터베이스, 글로벌 네임스페이스 기능을 하나의 플랫폼으로 통합해 대규모 AI와 데이터 분석, 미션 크리티컬 데이터 워크로드를 지원한다. 또한 NVIDIA AI 데이터 플랫폼 레퍼런스 설계를 기반으로 구축된 이 데이터 플랫폼 계층은 기업 내에 축적돼 있지만 활용되지 못하던 데이터를 AI가 즉시 활용할 수 있는 형태로 전환해 AI 팩토리의 핵심 기반을 제공한다. 생성형 AI와 에이전틱 AI 도입 경쟁이 가속화되면서 많은 기업은 기존 IT 아키텍처가 데이터 준비부터 모델 학습, 추론, 데이터 분석까지 이어지는 연속적인 AI 파이프라인을 지원하도록 설계되지 않았다는 점을 인식하고 있다. 그 결과로 나타나는 대표적인 문제가 GPU 기아(GPU Starvation) 현상이다. 이는 고가의 GPU 클러스터가 데이터를 기다리느라 유휴 상태에 머무는 상황을 의미한다. 양사의 공동 솔루션은 AI 개발 전 과정에서 데이터를 효율적으로 이동시키고, GPU에 고대역폭·저지연 데이터를 지속적으로 공급함으로써 이러한 문제를 해결한다. 이를 통해 GPU 활용률과 시스템 성능, 투자수익률을 크게 높일 수 있도록 지원한다. 기업용 AI 팩토리 구축 Cloudera의 레이크하우스 아키텍처는 데이터 엔지니어링, 데이터 스트리밍, 분석, 머신러닝, AI를 포함한 컨테이너 기반 데이터 서비스를 제공하며, 이를 하이브리드 및 멀티클라우드 환경 전반에 걸쳐 일관된 방식으로 배포할 수 있도록 지원한다. VAST의 분리형 공유 아키텍처는 VAST AI 운영체제의 기반 기술이다. 이 아키텍처는 엑사바이트급 데이터 인프라를 제공하는 동시에 NVIDIA cuVS를 활용한 GPU 가속 벡터 인덱싱 및 검색 기능을 갖춘 벡터 데이터베이스 서비스를 통합하고, 최신 GPU 클러스터와 AI 워크로드에 최적화된 고성능 스토리지를 지원한다. 양사는 NVIDIA AI 데이터 플랫폼 레퍼런스 설계와 NVIDIA 가속 컴퓨팅을 기반으로 하는 VAST AI 운영체제를 통해 기업 내 활용되지 않던 데이터를 AI가 즉시 사용할 수 있는 데이터로 전환하고, 그 위에서 Cloudera가 데이터 엔지니어링과 데이터 분석, 거버넌스, AI 서비스를 제공하는 구조를 구현했다. 양사의 공동 솔루션은 다음과 같은 기능을 제공한다. · 원시 데이터 수집부터 AI 모델 배포까지 아우르는 통합 AI 팩토리 아키텍처 · 데이터센터, 프라이빗 클라우드, 퍼블릭 클라우드 전반에서 일관된 운영 환경 · 초고대역폭·저지연 데이터 파이프라인을 통한 GPU 기아 현상 해소 · GPU를 지속적으로 최대 활용 상태로 운영해 컴퓨팅 효율 대폭 향상 · 정형·비정형·멀티모달 데이터를 모두 지원하는 대규모 고성능 스토리지 · 기업 수준의 데이터 거버넌스와 규제 준수를 지원하는 안전한 프라이빗 AI 환경 이 아키텍처를 통해 기업은 개별적인 AI 실험 단계를 넘어 기업 데이터를 지속적으로 실행 가능한 인사이트로 전환해 모델 학습과 추론, 데이터 분석, 에이전틱 AI 애플리케이션에 활용하는 상용 수준의 AI 시스템을 구축할 수 있다. 이번 파트너십은 프라이빗 AI 팩토리 구축을 위한 솔루션도 한층 강화한다. NVIDIA의 AI 인프라와 NVIDIA AI Enterprise 소프트웨어, VAST AI 운영체제를 기반 데이터 플랫폼으로 결합하고, Cloudera의 데이터 및 AI 서비스를 통합해 프라이빗 AI와 소버린 AI 환경에 최적화된 솔루션을 제공한다. 대표적인 솔루션인 Cloudera AI Inference Service는 NVIDIA NIM 마이크로서비스를 활용해 AI 추론을 가속화한다. 이를 통해 기업은 최신 NVIDIA Nemotron 오픈 모델을 포함한 다양한 AI 모델을 데이터가 있는 환경에서 직접 배포하고 손쉽게 확장할 수 있다. 또한 고객은 NVIDIA cuDF를 활용해 Apache Spark 워크로드를 가속화할 수 있다. Spark 작업은 GPU 가속 처리와 VAST의 고성능 데이터 서비스를 활용해 Cloudera Data Engineering 환경을 더욱 효율적으로 실행할 수 있으며, 이를 통해 AI 워크로드 최적화 수준도 한층 높일 수 있다. 특히 금융이나 공공, 의료 등 규제가 엄격한 산업의 대기업에는 반도체 수준의 인프라부터 애플리케이션까지 아우르는 ‘실리콘부터 애플리케이션까지(Silicon-to-Application)’ 통합 AI 플랫폼을 제공함으로써 어디서든 상용 수준의 AI 시스템을 구축할 수 있도록 지원한다. 대규모 공동 성장 추진 이번 파트너십은 고객이 관리하는 60엑사바이트 규모의 데이터를 기반으로 양사와 고객 모두에게 새로운 사업 기회를 제공할 것으로 기대된다. 여기에 프라이빗 AI 인프라에 대한 기업 수요가 빠르게 증가하면서 신규 프로젝트와 향후 매출 확대 가능성도 더욱 커질 것으로 전망된다. Cloudera의 최고사업책임자(CBO) 겸 응용 AI 사업 총괄인 아브하스 리키는 “기업들은 GPU에 수십억달러를 투자하고 있지만, 데이터 병목 현상 때문에 GPU를 충분히 활용하지 못하는 경우가 많다”며 “VAST와의 협력을 통해 GPU 기아 현상을 해소하고, 데이터가 수집부터 인사이트 도출까지 끊김 없이 흐르는 진정한 AI 팩토리를 구축할 수 있도록 지원할 것”이라고 말했다. VAST Data의 공동창업자인 제프 덴워스는 “대부분의 기업은 이미 AI에 필요한 데이터를 보유하고 있으며, 과제는 그 데이터의 가치를 끌어내 지속적인 AI 추론과 모델 미세조정, 데이터 분석 파이프라인을 구축해 차세대 지능형 애플리케이션을 만드는 것”이라며 “Cloudera와 VAST는 고객이 데이터와 AI, 인프라를 하나의 운영 플랫폼으로 통합하는 AI 팩토리를 구축해 하이브리드 환경 전반에서 AI를 활용할 수 있도록 지원하고 있다”고 말했다. 양사가 공동 개발한 Cloudera-VAST AI 팩토리 솔루션은 즉시 이용할 수 있으며, 양사의 엔터프라이즈 영업 조직과 파트너 네트워크를 통해 제공된다. 또한 참조 아키텍처와 검증된 구축 방식, 산업별 특화 솔루션도 2026년 동안 지속적으로 확대될 예정이다. 자세한 내용은 VAST 파트너십 페이지에서 확인할 수 있으며, 글로벌 행사인 ‘EVOLVE26’에 등록해 기업들이 데이터와 데이터 분석, AI를 통해 어떻게 더 큰 가치를 창출하고 있는지 확인할 수 있다.
2026.07.15
6
4
생성형 AI가 업무 도구로 자리 잡으면서 어떤 AI를 선택하느냐가 생산성에 직접적인 영향을 미치기 시작했다. 이메일 작성부터 프레젠테이션 제작, 스프레드시트 분석, 업무 시스템 연동까지 동일한 작업을 수행한 결과, 종합적인 완성도에서는 챗GPT가 가장 높은 평가를 받았다. 평가 대상은 클로드(Claude), 챗GPT(ChatGPT), 제미나이(Gemini), 코파일럿(Copilot)까지 총 4종. 실증 테스트는 이메일 작성, 프레젠테이션 제작, 기본 회계 업무, 워크스페이스 연동 등 실제 사무 환경에서 자주 수행하는 업무를 동일한 프롬프트로 실행하는 방식으로 이뤄졌다. 1. 이메일 작성은 모델의 RLHF 성향이 더 크게 작용 업무 일정이 지연되는 상황을 알리는 메일에서는 Claude가 가장 완성도가 높았다. 불필요한 사과를 반복하지 않았고, 일정이 늦어지는 이유와 새로운 마감 시점을 함께 제시하면서 상대방이 판단할 수 있는 정보를 자연스럽게 제공했다. 반대로 후속 메일(Follow-up) 작성에서는 ChatGPT와 Copilot이 더 좋은 결과를 냈다. 두 모델 모두 핵심만 전달하는 구조를 유지했고, 상대방을 압박하지 않으면서도 필요한 행동을 유도하는 문장을 구성했다. 같은 이메일 생성이라도 모델마다 RLHF 과정에서 학습한 커뮤니케이션 스타일 차이가 그대로 드러난 셈이다. 2. 프레젠테이션 생성은 정보 구조를 어떻게 설계하느냐에서 차이 Gemini는 전체 발표 흐름을 하나의 스토리로 구성하면서 슬라이드마다 하나의 메시지만 남기는 Presentation Design 원칙을 가장 잘 구현했다. 레이아웃과 이미지 선택도 비교적 자연스러웠으며 실제 임원 보고용 Deck에 가까운 결과물을 생성했다. Claude는 문장 자체의 완성도는 높았지만 Narrative 비중이 커 발표 자료보다 설명형 문서에 가까웠고, ChatGPT는 논리 구조는 우수했지만 표현이 다소 추상적이었다. Copilot은 웹 환경에서 슬라이드 자체를 생성하지 못하고 개요만 제시하는 데 그쳤다. 3. 스프레드시트 생성에서는 구현 방식에서 차이가 발생 ChatGPT와 Claude는 SUMIF와 IF 같은 Excel Formula를 직접 생성해 결과를 계산했다. 따라서 데이터를 수정하거나 행을 추가하면 모든 값이 자동으로 재계산되는 실제 업무용 스프레드시트가 만들어졌다. 반면 Gemini는 계산 결과를 셀에 직접 입력하는 방식을 선택했다. 처음 보는 결과는 동일하지만 유지보수 관점에서는 차이가 크다. 특히 ChatGPT는 의도적으로 삽입한 중복 데이터를 Potential Duplicate로 별도 표시했고, 예산 대비 지출 차트까지 자동 생성해 단순 계산을 넘어 데이터 검증과 시각화까지 함께 수행했다. 4. Workspace Connector는 Context Management 역량을 확인 Gmail과 Google Calendar를 연결한 뒤 답장이 필요한 메일과 일정 충돌을 찾도록 요청한 결과 ChatGPT와 Gemini는 실제 우선순위가 높은 메일과 출장 일정 충돌을 정확하게 찾아냈다. Claude 역시 대부분의 정보를 올바르게 분석했지만 긴급도 판단은 다소 보수적인 편이었다. Copilot은 일정 충돌보다 중요도가 낮은 메일을 먼저 추천하는 모습을 보였는데, 단순한 Connector 연결보다 Context Ranking과 Priority Resolution 품질이 실제 업무 생산성에 더 큰 영향을 미친다는 점을 보여주는 결과였다. ** 가장 흥미로운 부분은 워크플로우가 생산성을 결정했다는 점 이메일 작성이나 문서 생성처럼 단일 작업에서는 모델 간 성능 차이가 크지 않았다. 그러나 Function Calling, Spreadsheet Generation, Connector Integration, Context Management까지 포함한 전체 워크플로우에서는 차이가 분명하게 나타났다. ChatGPT는 가장 균형 잡힌 생산성을 보여줬고, Gemini는 프레젠테이션과 Google Workspace 연동에서 강점을 보였다. Claude는 장문 생성과 문체 완성도가 뛰어났으며, Copilot은 Microsoft 365 환경에서는 여전히 장점이 있지만 독립적인 웹 환경에서는 활용 범위가 제한적이었다. 결국 생성형 AI 경쟁은 이제 "누가 더 좋은 답을 생성하는가"가 아니라 "누가 실제 업무를 끝까지 수행하는 플랫폼을 제공하는가"로 빠르게 이동하고 있다는 점을 확인할 수 있었다. 출처 = https://www.weeklypost.kr/news/articleView.html?idxno=11647
2026.07.15
6
5
AI 코딩 환경의 경쟁 기준이 빠르게 바뀌고 있다. 코드 편집 기능이나 확장 프로그램 생태계보다 여러 AI 에이전트를 얼마나 효율적으로 오케스트레이션(Orchestration)할 수 있는지가 새로운 경쟁력으로 떠오른다. Cursor 3.0은 이러한 흐름에 맞춰 개발 환경 자체를 AI 에이전트 중심으로 재설계했다. 기존 IDE는 사람이 코드를 작성하는 것을 전제로 설계됐다. VS Code 역시 프로젝트 탐색기와 코드 에디터, 터미널, Git, 디버거를 중심으로 구성된다. GitHub Copilot과 Agent Mode가 추가됐지만 구조 자체는 여전히 사람이 직접 코드를 작성하는 방식에 최적화돼 있다. 반면 Cursor 3.0은 출발점부터 다르다. 새롭게 추가된 Agents View는 AI를 보조 기능이 아닌 개발 워크플로우의 중심에 배치했다. 개발자는 여러 Agent를 동시에 실행하고 각 Agent의 Context, 실행 상태, Diff, Plan, Task Queue를 하나의 화면에서 관리할 수 있다. 가장 큰 변화는 병렬 작업(Parallel Execution)이다. 예를 들어 하나의 Agent에는 Dashboard UI 구현을, 다른 Agent에는 Authentication 리팩토링을, 또 다른 Agent에는 Accessibility Audit이나 Performance Profiling을 동시에 맡길 수 있다. 각 Agent는 독립적으로 작업을 수행하며 개발자는 진행 상황을 확인하고 충돌 가능성이 있는 시점에만 개입하면 된다. 이러한 방식은 기존 IDE와 가장 큰 차이를 만든다. 기존에는 하나의 작업을 끝낸 뒤 다음 작업으로 넘어가는 직렬(Sequential) 개발이 일반적이었다. Cursor는 프로젝트를 여러 개의 Task Graph로 분리해 동시에 실행하는 형태를 기본 워크플로우로 제시한다. 실제로 개발자의 역할도 달라지고 있다. Cursor 환경에서는 코드를 직접 작성하는 시간보다 요구사항을 정의하고 Task를 분리한 뒤 적절한 Agent에 할당하는 시간이 늘어난다. 이후 생성된 Diff를 검토하고 Merge 여부를 결정하며 Architecture 관점에서 전체 품질을 관리하는 비중이 커진다. 결국 개발자는 구현자(Implementer)보다 오케스트레이터(Orchestrator)에 가까운 역할을 수행하게 된다. 마이크로소프트 역시 이러한 변화를 인식하고 있다. VS Code 최신 베타에는 Agents View가 추가됐다. 아직은 초기 단계지만 여러 Agent를 관리하는 방향으로 IDE 구조를 바꾸기 시작했다는 점은 의미가 있다. Cursor는 여기에 다양한 Foundation Model도 통합하고 있다. Claude Code Fable 5, GPT-5.6 Sol, Grok 4.5 등을 하나의 워크플로우 안에서 선택적으로 사용할 수 있도록 준비하고 있으며 모델 자체보다 Agent Workflow를 어떻게 구성하느냐에 초점을 맞추고 있다. 업계에서는 앞으로 IDE 경쟁이 코드 편집 기능보다 Agent Runtime과 Context Management, Workflow Orchestration 경쟁으로 이동할 것으로 보고 있다. Cursor 3.0은 이러한 변화를 가장 먼저 제품 구조에 반영한 사례다. VS Code도 같은 방향으로 진화하고 있지만 현재 기준에서는 Agent 기반 병렬 개발 경험과 Workflow 구성 측면에서 Cursor가 한발 앞서 있다는 평가가 나온다. 출처 : https://www.weeklypost.kr/news/articleView.html?idxno=11646
2026.07.15
3
3
jQuery를 4.0.0 마이그레이션 방법 공유합니다. 1단계: jQuery Migrate 플러그인 사용 (가장 중요) jQuery 팀은 업그레이드 시 발생하는 문제를 자동으로 감지하고 해결책을 제시하는 jQuery Migrate 4.0.0 플러그인을 함께 제공합니다. 개발 환경에 추가: 기존 jQuery를 4.0.0으로 교체한 직후, Migrate 플러그인을 로드합니다. <script src="https://code.jquery.com/jquery-4.0.0.js"></script> <script src="https://code.jquery.com/jquery-migrate-4.0.0.js"></script> 2. 브라우저 개발자 도구(F12)의 콘솔창을 확인합니다. 삭제된 함수를 사용 중이라면 경고(Warning)와 함께 교체해야 할 함수 정보가 나타납니다. 3. 코드 수정: 경고가 나타나지 않을 때까지 코드를 수정한 뒤, 최종 배포 시에는 Migrate 플러그인을 제거합니다. 2단계: 삭제된 API를 네이티브 자바스크립트로 교체 4.0.0에서는 예전부터 "사용 권장 안 함(Deprecated)"이었던 유틸리티 함수들이 대거 삭제되었습니다. 이제는 브라우저 내장 함수(Native JS)를 사용해야 합니다. 삭제된 함수 현대적인 대체 코드 (Native JS) jQuery.trim(str) str.trim() jQuery.isArray(obj) Array.isArray(obj) jQuery.parseJSON(str) JSON.parse(str) jQuery.now() Date.now() jQuery.isFunction(obj) typeof obj === "function" jQuery.type(obj) Object.prototype.toString.call(obj) 등 3단계: 브라우저 지원 범위 확인 마이그레이션 전, 서비스의 지원 대상을 확인해야 합니다. IE 10 이하: 더 이상 지원하지 않습니다. 만약 IE 10 이하를 반드시 지원해야 한다면 jQuery 3.x에 머물러야 합니다. IE 11: 지원은 하지만 "최소한의 수준"이며, 다음 버전인 5.0에서는 완전히 제거될 예정입니다. Edge: 레거시 Edge(크로미움 이전 버전) 지원이 중단되었습니다. 4단계: ES 모듈(ESM) 활용 // npm으로 설치한 경우 import $ from 'jquery'; // 브라우저에서 직접 모듈로 호출 <script type="module"> import $ from 'https://code.jquery.com/jquery-4.0.0.js'; $('body').append('<h1>Hello jQuery 4!</h1>'); </script> 5단계: 주요 변경 사항 및 주의점 AJAX 내부 동작 과거에는 $.ajax로 스크립트를 요청하면 인라인으로 실행했으나, 이제는 실제 <script> 태그를 생성하여 실행합니다. 이는 보안 정책(CSP) 준수를 위함입니다. 이벤트 시스템 jQuery.event.props 및 jQuery.event.fixHooks가 제거되었습니다. 아주 오래된 플러그인을 사용 중이라면 이 부분에서 오류가 날 수 있습니다. Trusted Types 보안이 강화된 환경(CSP 설정 등)에서 DOM에 HTML을 삽입할 때 발생하던 보안 경고를 jQuery가 자체적으로 처리하기 시작했습니다. link : 마이그레이션 공식 문서
2026.01.20
0
0
jQuery 4 공식 릴리즈 드디어 나왔군요 (ㅜ.,ㅜ )… 프론트 개발자들의 손가락을 지켜줄 업데이트 인지 확인해 봐야겠어요. 주요 변경 사항과 특징을 요약해보았습니다. 1. 현대적인 아키텍처로 전환 ES 모듈(ESM) 마이그레이션 내부 소스 코드가 AMD 방식에서 ES 모듈 방식으로 완전히 전환 최신 빌드 도구(Webpack, Rollup 등)와의 호환성 <script type="module">을 통해 브라우저에서 직접 모듈 로드 Rollup 도입 패키징 도구를 기존의 선택 방식에서 Rollup으로 변경하여 결과물의 최적화 2. 브라우저 지원 범위 변경 (탈-IE 가속화) IE 10 이하 버전 지원 종료 IE 11은 지원 범위에 포함 향후 출시될 jQuery 5.0에서는 완전히 제거 레거시 Edge(크로미움 이전), iOS 16 미만, Firefox 146 미만 등 오래된 브라우저들에 대한 코드를 정리 3. 보안 및 최신 웹 표준 준수 Trusted Types 지원 보안 가이드라인인 CSP(콘텐츠 보안 정책)를 준수할 수 있도록 Trusted Types를 지원 DOM 조작 시 발생할 수 있는 보안 취약점을 예방 비동기 스크립트 요청 방식 변경 AJAX를 통한 비동기 스크립트 실행 시 인라인 스크립트 대신 <script> 태그를 활용하도록 하여 CSP 오류 발생 가능성을 최소화 4. 코드 정리 및 슬림(Slim) 빌드 최적화 오래된 API 제거 10년 가까이 'deprecated(사용 권장 안 함)' 상태였던 jQuery.trim, jQuery.isArray, jQuery.parseJSON, jQuery.now 등 네이티브 JavaScript 함수(Array.isArray(), JSON.parse() 등)를 사용 더 가벼워진 Slim 빌드 슬림 빌드에서 Deferred와 Callbacks를 제거하여 용량을 더 줄임 Gzip 기준 약 19.5KB 5. 업그레이드 방법 jQuery Migrate 4.x 기존 코드를 4.0으로 옮기는 것을 돕기 위해 마이그레이션 플러그인 함께 출시 사용 시 제거된 API를 사용하는 곳을 찾아 경고 또는 임시로 복구 jQuery는 이제 "모든 브라우저의 호환성 해결사"라는 과거의 역할 대신, 현대 웹 표준, 편리한 문법을 유지, 안정적인 인프라를 추구하는 것 같다. 기존 프로젝트를 운영 중이라면 마이그레이션 가이드를 참고하여 업데이트를 검토해보는 것이 좋다. 자세한건 릴리스를 확인해 주세요, https://blog.jquery.com/2026/01/17/jquery-4-0-0/
2026.01.20
2
1
처음 글 올리네요. ㅎㅎ Spring boot에서 Tailwind CSS를 사용하고 싶어서 다음과 같은 방식을 고안하게 되었습니다. 저는 템플릿을 Thymeleaf(타임리프)를 좋아해서 이 기준으로 작성하겠습니다. Framework : String boot 4 Template : Thymeleaf(타임리프) CSS : Tailwind CSS 미리 Node.js 설치해 주세요. 우선 프로젝트 하나를 생성합니다. 그 다음 리소스를 생성합니다. 우선 index.html 을 다음과 같은 내용으로 생성합니다. 경로 : src/main/resources/template/index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Tailwind TEST</title> </head> <body> <div>Tailwind CSS</div> </body> </html> 그 다음 스타일 시트를 생성합니다. 우선 스타일시트 파일 확인용이라 아무 스타일이나 입력해주세요. 경로 : src/main/resources/static/css/default.css @charset "UTF-8"; html, body { height: 100%; place-items: center; place-self: center; place-content: center; } div { width: 10rem; height: 5rem; margin: 0 auto; background: lightcoral; border: 1px red solid; } 그럼 두 경로에 파일이 보이실 꺼에요. 그다음 index.html head에 다음 테그를 삽입해 주세요. <link rel="stylesheet" href="./../static/css/default.css"> 스타일이 적용되는지 확인합니다. 적용 확인이 되면 그다음 head에 다음 tag를 삽입해 주세요. <!-- Tailwind CSS dynamic Style CDN 스타일 완성후 삭제 --> <script src="https://unpkg.com/@tailwindcss/browser@4"></script> 개발자 모드를 활용해 실시간으로 스타일이 적용되는지 확인해주세요. 확정 된 스타일을 index.html파일에 적용합니다. 이런 식으로 스타일을 적용하여 완성된 스타일을 default.css로 빌드하여 적용해 보도록 하겠습니다. src랑 같은 위치에 node 경로를 생성해주세요. 그 다음 node안에 package.json 파일 생성 후 다음 내용을 입력해 주세요. { "dependencies": { "@tailwindcss/forms": "^0.5.6", "autoprefixer": "^10.4.16", "fs-extra": "^11.1.1", "heroicons": "^2.0.18", "postcss": "^8.4.31", "tailwindcss": "^3.3.3", "update-browserslist-db": "^1.2.3" } } 터미널에서 다음 명령을 실행하세요. npm install 빌드를 정상적으로 실행하기 위해 postcss 설정 파일을 생성합니다. node/postcss.config.js module.exports = { plugins: [ require('tailwindcss'), require('autoprefixer'), ] } 이제 node안에 css파일을 하나 생성합니다. node/default.css 아래의 내용을 추가합니다. @tailwind base; @tailwind components; html, body { @apply h-full place-items-center place-self-center place-content-center; } div { @apply w-[10rem] h-[5rem] mx-auto rounded shadow-lg shadow-black/15 bg-red-200 text-center place-content-center } 다음으로 할 작업은 nodejs 빌드 스크립트 추가입니다. 저는 node폴더에서 실행하는 기준으로 작성하겠습니다. 우선 빌드 대상은 node안에 있어야 함으로 node/tmpl 에 복사하고 빌드하도록 하겠습니다. 우선 node/tmpl 에 복사하는 스크립트를 작성하겠습니다. node/copy.js 파일을 생성합니다. const fsExtra = require('fs-extra'); console.log('Resource init!'); const sourceDirectory1 = './../src/main/resources/templates'; // 원본 디렉토리 경로 const targetDirectory1 = './tmpl/t'; // 대상 디렉토리 경로 console.log('Try copy '${sourceDirectory1}' -> ${targetDirectory1}'); fsExtra.copy(sourceDirectory1, targetDirectory1, err => { if (err) { console.error('Error copying directory:', err); } else { console.log('Directory copied successfully! 1'); } }); console.log('Finished : ${new Date().toISOString()}'); 그 다음 터미널에서 실행해 복사를 확인합니다. node copy.js index.html에서 <script src="https://unpkg.com/@tailwindcss/browser@4"></script> 를 삭제하고 정합니다. 다음은 tailwindcss 빌드 입니다. -i : 인풋 -o : 아웃풋 터미널에서 아래 명령을 실행헤 주세요. npx tailwindcss build -i default.css -o ../src/main/resources/static/css/default.css 그 다음 적용여부를 확인하면 완료입니다. 그리고 빌드를 쉽게 하기 위해 package.json의에 빌드 스크립트를 추가합니다. 빌드 대상 폴더 비우기 rm -rf tmpl 빌드 대상 복사 node copy.js tailwindcss 빌드 tailwindcss build -i default.css -c tailwind.config.js -o 압축버전 빌드 (공백 삭제 등 용량 최적화) --minify 추가 { "scripts": { "css": "rm -rf tmpl && node copy.js && tailwindcss build -i default.css -c tailwind.config.js -o ../src/main/resources/static/assets/v2/css/default.css", "css-min": "rm -rf tmpl && node copy.js && tailwindcss build --minify -i default.css -c tailwind.config.js -o ../src/main/resources/static/assets/v2/css/default.css" }, "dependencies": { "@tailwindcss/forms": "^0.5.6", "autoprefixer": "^10.4.16", "fs-extra": "^11.1.1", "heroicons": "^2.0.18", "postcss": "^8.4.31", "tailwindcss": "^3.3.3", "update-browserslist-db": "^1.2.3" } } 이렇게 하면 빌드 시 아래화 같이 커맨드를 입력하면 됩니다. 일반 : npm run css 압축 : npm run css-min gradle에서 빌드 시 위 내용을 자동 실행 하고 싶으면 build.gradle 다음 내용을 추가하면 됩니다. task nodePreBuild(type: Exec) { // node 폴더 위치를 절대 경로로 계산 workingDir = file("${projectDir}/node") // Windows와 Mac/Linux 호환성 처리 if (System.getProperty('os.name').toLowerCase().contains('windows')) { executable 'cmd' args '/c', 'npm', 'run', 'css' } else { executable 'sh' args '-c', 'npm run css' } // 3. 디버깅을 위한 출력 (Gradle 실행 시 콘솔에 찍힘) doFirst { println "--------- CSS Build Start ---------" println "Working Directory: ${workingDir}" println "Executable: ${executable}" println "Arguments: ${args}" println "-----------------------------------" } } processResources.dependsOn nodePreBuild 궁금하신건 댓글 달아주세요. Tailwind CSS 좋아하는데… 요즘 많이 힘들다고 하네요. 많이 응원해주세요. ㅎㅎ
2026.01.16
1
1
조텍 프래그마타 번들
  • 종합
  • 뉴스/정보
  • 커뮤니티
  • 질문/토론