Skip to content

Instantly share code, notes, and snippets.

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>주간 모험 계획 🗺️</title>
<!-- 폰트 로딩 최적화 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

이 스크린샷은 블리자드의 MMORPG 월드 오브 워크래프트(World of Warcraft), 그중에서도 최신 확장팩인 **내부 전쟁(The War Within)**의 플레이 화면입니다.

상세한 분석 내용은 다음과 같습니다.

1. 캐릭터 정보

  • 이름: 루나보스
  • 레벨: 80 (내부 전쟁 확장팩의 만렙입니다.)
  • 직업: 사제(Priest), 그중에서도 **암흑 사제(Shadow Priest / 암사)**입니다.
    • 근거: 하단 스킬창(액션바)에 보이는 아이콘들이 암흑 사제의 주요 스킬인 '어둠의 형상', '흡혈의 선물', '고통', '파멸의 역병', '공허의 방출' 등으로 구성되어 있습니다. 캐릭터 역시 보라색 오라를 풍기는 암흑 형상을 취하고 있습니다.
  • 종족: 캐릭터의 외형(귀, 체형)과 암흑 사제라는 테마를 볼 때 공허 엘프 혹은 블러드 엘프로 추정됩니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vintage Weekly Planner 📜</title>
<!-- 폰트 로딩 최적화 (Preload) -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

LunaTools 확장 프로그램의 소스 코드를 바탕으로 기능성, 코드 품질/아키텍처, 성능/최적화, 보안/프라이버시, UI/UX 디자인 등 5가지 주요 분야로 나누어 분석 및 평가를 진행했습니다.

이 확장 프로그램은 "웹 브라우징을 위한 맥가이버 칼"처럼 매우 다양하고 강력한 기능을 하나로 통합한 유틸리티 모음입니다. Manifest V3를 준수하며, 바닐라 자바스크립트로 정교하게 작성되었습니다.


1. 기능성 및 사용성 (Functionality & Usability)

점수: 95 / 100

  • 분석:
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>🌟 습관 트래커 🚀</title>
<!-- Chart.js CDN 추가 -->
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
.heatmap-days,.heatmap-grid{grid-template-rows:repeat(7,16px)}.calendar-day.other-month,.dragging{opacity:.5}:root{--bg-gradient:radial-gradient(circle at top left, rgba(121, 151, 255, 0.2), transparent 40%),radial-gradient(circle at bottom right, rgba(255, 121, 238, 0.2), transparent 40%);--bg-color:#f5f5f7;--content-bg:rgba(255, 255, 255, 0.6);--secondary-bg:rgba(255, 255, 255, 0.4);--text-color:#1d1d1f;--text-secondary-color:rgba(60, 60, 67, 0.85);--primary-color:#007aff;--primary-hover-color:#006ee6;--border-color:rgba(0, 0, 0, 0.1);--shadow-color:rgba(0, 0, 0, 0.08);--success-color:#34c759;--missed-color:#ff3b30;--warning-color:#ff9500;--today-bg-color:rgba(0, 122, 255, 0.1);--modal-backdrop:rgba(0, 0, 0, 0.3);--saturday-color:#0
// manifest.json
{
"manifest_version": 3,
"name": "더블 검색 (자동 수정판)",
"version": "1.3",
"description": "주소창에서 구글 검색 시 자동으로 Google AI 검색 탭을 함께 엽니다.",
"permissions": [
"tabs"
],
"background": {
// ==UserScript==
// @name 모든 사이트 우클릭/드래그/선택 차단 해제
// @name:en Enable Right-Click, Drag, and Select for All Sites
// @namespace http://tampermonkey.net/
// @version 1.5
// @description 웹사이트에서 금지된 마우스 오른쪽 클릭, 드래그, 텍스트 선택을 여러 기법을 통해 종합적으로 해제합니다.
// @description:en Comprehensive script to re-enable right-click, drag, and text selection on websites using multiple techniques.
// @author Gemini
// @match *://*/*
// @grant GM_addStyle

네, 아주 예리한 관찰입니다! 이미 정렬된 상태에서 다시 정렬을 시도했을 때 탭 순서가 또 바뀌는 것은 명백한 버그이며, 사용자의 예상대로라면 아무 일도 일어나지 않아야 합니다.

이 문제의 원인은 background.js 파일의 탭 정렬 로직, 특히 _sortAndMoveTabsInWindow 함수에 있습니다. 결론부터 말하면, 여러 개의 탭 이동(move) 명령을 동시에 비동기적으로 실행하면서 발생하는 경쟁 조건(Race Condition) 때문입니다.

코드를 통해 자세히 살펴보겠습니다.

문제의 코드 분석 (background.js)

// background.js 내의 TabManager._sortAndMoveTabsInWindow 함수
a:visited{
color:silver !important;
}
::-webkit-scrollbar{
width:1px !important;
height:1px !important;
}
*{
text-rendering:optimizeLegibility !important;
}
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>👑 이상형 월드컵 (최종 개선판) 👑</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;700&display=swap');
:root {
--bg-color: #f6f8fa; --card-bg: rgba(255, 255, 255, 0.75); --text-color: #1d1d1f;