실시간TAG
빌런포럼 TOP 20
일간 l 주간 l 월간
인텔 코어 울트라7
빌런포럼
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
2026년 Steam 축제 및 할인 일정 2026년 1월 Steam 추리 게임 축제: 1월 12일~1월 19일 Steam 보드게임 축제: 1월 26일~2월 2일 2026년 2월 Steam 타자 게임 축제: 2월 5일~2월 9일(집중 조명 축제) Steam PvP 게임 축제: 2월 9일~2월 16일 Steam 말 게임 축제: 2월 19일~2월 23일(집중 조명 축제) Steam Next Fest 2026년 2월 에디션: 2월 23일~3월 2일 2026년 3월 Steam 타워 디펜스 게임 축제: 3월 9일~3월 16일 2026년 Steam 봄 할인: 3월 19일~3월 26일(계절 할인) Steam 집 및 주택 게임 축제: 3월 30일~4월 6일 2026년 4월 Steam 숨은 그림 및 물체 게임 축제: 4월 9일~4월 13일(집중 조명 축제) Steam 중세 게임 축제: 4월 20일~4월 27일 2026년 5월 Steam 덱빌딩 게임 축제: 5월 4일~5월 11일 Steam 바다 게임 축제: 5월 18일~5월 25일 2026년 6월 Steam 탄막 게임 축제: 6월 8일~6월 15일 Steam Next Fest 2026년 6월 에디션: 6월 15일~6월 22일 2026년 Steam 여름 할인: 6월 25일~7월 9일(계절 할인) 2026년 7월 Steam 소셜 디덕션 게임 축제: 7월 13~7월 16일 Steam 기차 게임 축제: 7월 20일~7월 27일 2026년 8월 Steam 사이버펑크 게임 축제: 8월 3일~8월 10일 Steam 핀 및 페그 게임 축제: 8월 17일~8월 20일 Steam PvE 생존 제작 게임 축제: 8월 31일 ~9월 7일 2026년 9월 Steam 프로그래밍 게임 축제: 9월 10일~9월 14일 Steam 파티 기반 RPG 게임 축제: 9월 14일~9월 21일 2026년 10월 2026년 Steam 가을 할인: 10월 1일~10월 8일(계절 할인) Steam 요리 게임 축제: 10월 12일~10월 19일 Steam Next Fest 2026년 10월 에디션: 10월 19일~10월 26일 Steam 스크림 축제 5: 10월 26일~11월 2일 2026년 11월 Steam 오토 배틀러 RPG 게임 축제: 11월 16일~11월 23일 11월 추가 이벤트: 블랙 프라이데이 할인을 진행하는 게임을 집중 조명하기 위해 '특별 할인' 허브로 트래픽을 유도할 계획입니다. 구체적인 날짜와 세부 사항은 추후 공지해 드릴 예정입니다. 2026년 12월 2026년 Steam 겨울 할인: 2026년 12월 17일~2027년 1월 4일(계절 할인) https://store.steampowered.com/news/group/4145017?emclan=103582791433666425&emgid=493837645658461607
2026.01.16
3
2
처음 글 올리네요. ㅎㅎ 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
이제 태국 생활도 한달 반 가량 지났네요. 처음에는 두근두근 흥분 상태였지만 슬슬 차분해지며 현지 생활 분위기가 되어 갑니다. 이런 가운데서도 가장 중요한 건 역시 음식! 매일 무엇을 먹으며 즐기느냐 입니다. 매일 비싸고 호화로운 걸 먹지는 않습니다. 그래도 될 수 있도록 매일 다른 음식을 먹어보려고 애씁니다. 다행히 쇼핑몰 푸드코트에는 매우 다양한 메뉴의 음식코너가 있습니다. 시푸드 팟타이는 부드러운 볶음면과 해산물의 감칠맛이 참 좋습니다. 가격은 80밧(약 4천원). 아침식사로는 이런 오믈렛도 좋습니다. 얇은 계란 부침과 돼지고기가 섞인 아래에 있는 밥을 같이 먹으면 든든하죠. 가격은 70밧(약 3500원). 때로는 저녁으로 이런 저렴한 스테이크를 즐길 수도 있습니다. 드레싱을 친 돼지고기 스테이크로 갓 만든 프렌치 프라이와 함께 나옵니다. 가격은 69밧(약 3400원). 그렇지만 이런 일상 음식을 먹다보면 어느 날은 그냥 배터지게 고기를 먹고 싶은 생각도 듭니다. 또한 한국 음식이 생각나기도 하죠. 그럴 때 치앙마이에서 부담적게 찾을 수 있는 곳에 갔습니다. 음식점 이름은 신기하게도 명동! 바로 한국 명동에서 딴 이름입니다. 한국식 삼겹살을 메인으로 하는 고기부페입니다. 그 아래 있는 숫자 259는 뭘까요? 이게 바로 가격입니다. 1인당 259밧(약 12200원)에 거의 모든 음식을 양껏 먹을 수 있습니다. 네 바로 고기 부페입니다. 들어가면 딱 보이는 이곳이 메인 코스인 고기입니다. 삼겹살, 양념 불고기를 비롯해 갖가지 돼지고기와 꼬치 고기가 준비되어 있습니다. 한국식이면 당연히 김치와 나물이 있어야죠? 나름 현지에 맞춘 여러 채소가 준비되어 있습니다. 구워서 그냥 먹는 건 한국식이 아니죠? 쌈채소인 상추와 배추 등이 버섯 양파와 함께 있습니다. 한국식이면 밥도 있어야죠? 아예 밥솥채로 있습니다. 특별히 준비한 다른 부위도 있긴 합니다만 이건 추가 요금을 내고 먹는 고기 입니다. 좋은 점은 고기부페인데 새우 같은 해산물도 기본요금으로 양껏 먹을 수 있다는 점입니다. 최고의 가성비죠! 고기만 먹으면 목 마르겠죠? 옆에는 콜라 같은 탄산음료를 비롯해 아이스티와 슬러시까지 무한리필되는 디스펜서가 있습니다. 고기 다 먹은 후에 땅기는 거? 아이스크림까지도 있습니다. 그 옆에는 작은 케이크도 있어요! 그럼 먹어볼까요? 우선 불판에 새우부터 구웠고요, 삼겹살도 바짝 구워서 먹습니다. 영업시간은 오후 4시 반부터 새벽 2시! 치앙마이 오시는 분은 꼭 한번 와서 드셔보세요!
2026.01.13
6
4
개인적으로 좋아하는 홍콩영화 1탄. 추억을 곱씹어 보고자 올려 봅니다. 저는 80년대 후반 홍콩영화의 황금기를 이끌었던 서극 감독을 무척 좋아합니다. 단, 홍콩이 중국에 반환 된 이후로의 서극 감독 작품 활동은 제외로 하겠습니다. 여튼 80년대 홍콩영화계 거장 서극 감독의 필모 중 명작으로 꼽히는 영화 중 가장 좋아하는 영화. 다들 아시는 작품이라 생각 합니다. 동방불패 (1992) 김용 소설 ‘소오강호’를 각색한 영화로, 임청하의 매력이 철철 넘치는 작품. 국내에서의 인기도 엄청 났었습니다. 임청하를 일약 최고의 전성기로 끌어올려준 작품이며, 남주인공 화산파 영호충 역을 맡은 이연걸은 서극이 직접 중국 본토에서 발굴한 배우로 함께 전성기를 누리게 됩니다. 70년대 임청하 꽃다운 시절,. 유부남과 눈맞는 바람에 미국으로 도망갔다가 동방불패로 성공적인 복귀! 원작 소설에서 동방불패는 메인 빌런이라고 하기 어려운, 최강인줄 알았는데 최강 빌런은 다른 놈인 그런 캐릭인데, 영화에서는 동방불패를 중심으로 파격적인 각색을 했습니다. 이 때문에 원작 파괴 논란도 있었습니다. 절대 무공을 얻었지만 성별이 바뀌어 결국 한 남자의 사랑을 원하는 동방불패 임청하의 연기력과 무협영화의 급을 올려준 아름다운 영상미가 돋보인 작품이라 생각합니다.. 여기에 나온 최강의 무공 “규화보전”은 환관이 만든 무공으로 익히기 위해서는 남성을 포기 해야하는 무서운 무공이죠. 서극 감독은 현란한 와이어 액션과 바늘과 붉은 실을 이용해 임청하의 매섭고도 고혹적인 무공을 잘 표현했습니다. 원작 소설에서 규화보전은 무림을 시끄럽게 하는 요망한 절대 무공으로 나옵니다. 소림사에서 천재 무승이 요망한 무공이라 없애버리는데, 화산파 두 제자가 이를 태우기 전 몰래 읽어 익히게 됩니다. 그중 한 제자는 출가하여 규화보전을 변형한 벽사검법이라는 무공을 만들고, 남은 한 제자가 남긴 규화보전은 일월신교가 화산파를 습격해 빼앗는 과정이 있게됩니다. 무림은 이 벽사검법이 적힌 벽사검보와, 규화보전을 차지하기 위한 피바람이 나는데 화산파 장문인 군자검 악불군, 마누라 몰래 트랜스젠더 되어 파문! 일월신교가 빼앗은 규화보전은 동방불패가 익히고, 벽사검법은 다시 화산파 장문인 악불군이 몰래 익히며 두 명의 트랜스젠더가 탄생하는게 원작이지요. 다시 봐도 또 다시 봐도 괜찮은 영화 동방불패, 새해 첫 영화로 추억을 되새겨 보시는 게 어떨지 추천 드리고, 원작소설 “소오강호”를 아직 읽어 보지 않으셨다만 함께 즐겨 보시길 추천 드립니다.
2026.01.08
2
2
1 2 3 4 5 6 7 8 9 10