@@ 0,0 1,481 @@
+#!/usr/bin/env python3
+"""
+build-village.py — Generate friends.html from a FreshRSS OPML export.
+
+Usage:
+ python build-village.py friends.opml
+
+Reads <outline> entries from the OPML, assigns each to one of 9 hillside
+clusters, picks from 5 house templates, and writes a complete friends.html
+with an interactive zoomable SVG village.
+"""
+
+import hashlib
+import random
+import sys
+import xml.etree.ElementTree as ET
+from dataclasses import dataclass
+
+# ────────────────────────────────────────────────────────────────
+# Data structures
+# ────────────────────────────────────────────────────────────────
+
+@dataclass
+class Friend:
+ name: str
+ url: str
+
+
+# ────────────────────────────────────────────────────────────────
+# OPML parser
+# ────────────────────────────────────────────────────────────────
+
+def _site_url_from_feed(xml_url: str) -> str:
+ """Derive a site URL from a feed URL (best effort)."""
+ from urllib.parse import urlparse
+ parsed = urlparse(xml_url)
+ return f"{parsed.scheme}://{parsed.netloc}/"
+
+
+# Categories to exclude (your own sites)
+EXCLUDE_CATEGORIES = {"第零区"}
+
+
+def parse_opml(path: str) -> list[Friend]:
+ """Extract friends from OPML <outline> elements."""
+ tree = ET.parse(path)
+ root = tree.getroot()
+ friends = []
+
+ for category in root.iter("outline"):
+ cat_name = category.get("text", "").strip()
+
+ # Skip excluded categories
+ if cat_name in EXCLUDE_CATEGORIES:
+ continue
+
+ for outline in category.findall("outline"):
+ name = outline.get("text", "").strip()
+ xml_url = outline.get("xmlUrl", "").strip()
+ html_url = outline.get("htmlUrl", "").strip()
+
+ if not name or not xml_url:
+ continue
+
+ # Prefer htmlUrl; fall back to deriving from xmlUrl
+ url = html_url or _site_url_from_feed(xml_url)
+ friends.append(Friend(name=name, url=url))
+
+ # Deterministic sort by name
+ friends.sort(key=lambda f: f.name.lower())
+ return friends
+
+
+# ────────────────────────────────────────────────────────────────
+# Coordinate layout
+# ────────────────────────────────────────────────────────────────
+
+def _name_hash(name: str) -> int:
+ """Deterministic hash from name string (0–65535)."""
+ return int(hashlib.md5(name.encode()).hexdigest()[:4], 16)
+
+
+# ── Hill boundary calculation ──
+# Upper hill: M100 480 Q350 120 600 130 Q850 120 1100 480
+# Lower hill: M0 480 Q300 240 600 250 Q900 240 1200 480
+
+_HILL_SEGMENTS = [
+ # Upper hill
+ ((100, 480), (350, 120), (600, 130)),
+ ((600, 130), (850, 120), (1100, 480)),
+ # Lower hill
+ ((0, 480), (300, 240), (600, 250)),
+ ((600, 250), (900, 240), (1200, 480)),
+]
+
+VALLEY_FLOOR = 480
+HOUSE_W, HOUSE_H = 38, 34
+MIN_GAP = 5
+
+
+def _bezier_y_at_x(x: float, p0: tuple, p1: tuple, p2: tuple) -> float | None:
+ """Find y on a quadratic bezier at given x. Returns None if outside."""
+ x0, y0 = p0
+ x1, y1 = p1
+ x2, y2 = p2
+
+ a = x0 - 2 * x1 + x2
+ b = 2 * (x1 - x0)
+ c = x0 - x
+
+ if abs(a) < 1e-10:
+ if abs(b) < 1e-10:
+ return None
+ t = -c / b
+ else:
+ disc = b * b - 4 * a * c
+ if disc < 0:
+ return None
+ sqrt_d = disc ** 0.5
+ t = None
+ for tc in [(-b + sqrt_d) / (2 * a), (-b - sqrt_d) / (2 * a)]:
+ if 0 <= tc <= 1:
+ t = tc
+ break
+ if t is None:
+ return None
+
+ if not (0 <= t <= 1):
+ return None
+ return (1 - t) ** 2 * y0 + 2 * t * (1 - t) * y1 + t ** 2 * y2
+
+
+def hill_boundary(x: float) -> float:
+ """Return the highest ground y at given x (lowest value = highest on screen)."""
+ min_y = VALLEY_FLOOR
+ for seg in _HILL_SEGMENTS:
+ y = _bezier_y_at_x(x, *seg)
+ if y is not None and y < min_y:
+ min_y = y
+ return min_y
+
+
+def place_houses(friends: list[Friend]) -> list[tuple[Friend, float, float]]:
+ """Place houses randomly across the hill surface, no overlaps."""
+ # Deterministic seed from all friend names
+ seed_str = "|".join(f.name for f in friends)
+ rng = random.Random(hashlib.md5(seed_str.encode()).hexdigest())
+
+ placed: list[tuple[float, float]] = []
+ result: list[tuple[Friend, float, float]] = []
+
+ for friend in friends:
+ ok = False
+
+ for _ in range(2000):
+ cx = rng.uniform(80, 1120)
+ top = hill_boundary(cx) + 10 # margin below hill edge
+ bottom = VALLEY_FLOOR - HOUSE_H
+ if top >= bottom:
+ continue
+ cy = rng.uniform(top, bottom)
+
+ # Check overlap with all placed houses
+ overlap = False
+ for px, py in placed:
+ if abs(cx - px) < HOUSE_W + MIN_GAP and abs(cy - py) < HOUSE_H + MIN_GAP:
+ overlap = True
+ break
+
+ if not overlap:
+ placed.append((cx, cy))
+ result.append((friend, round(cx, 1), round(cy, 1)))
+ ok = True
+ break
+
+ if not ok:
+ # Fallback: scan for first open spot along valley floor
+ for fx in range(100, 1100, 20):
+ fy = VALLEY_FLOOR - HOUSE_H - 5
+ overlap = any(
+ abs(fx - px) < HOUSE_W + MIN_GAP and abs(fy - py) < HOUSE_H + MIN_GAP
+ for px, py in placed
+ )
+ if not overlap:
+ placed.append((fx, fy))
+ result.append((friend, float(fx), float(fy)))
+ break
+
+ return result
+
+
+# ────────────────────────────────────────────────────────────────
+# House SVG templates
+#
+# Each function returns SVG elements (relative to 0,0) for a house.
+# The caller wraps them in a <g transform="translate(x,y)">.
+# All houses fit in roughly a 40×40 bounding box.
+#
+# ★ USER CONTRIBUTION POINT ★
+# These 5 shapes define the village personality. Modify the paths
+# below to change house silhouettes. Keep fill classes consistent:
+# .fill-wall / .fill-wall-dark — walls
+# .fill-roof — roof
+# .fill-window — windows (glow on hover)
+# .fill-door — door
+# ────────────────────────────────────────────────────────────────
+
+def house_peaked(name: str) -> str:
+ """Type A: Classic peaked roof cottage."""
+ return f'''\
+<rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+<polygon class="fill-roof" points="0,16 16,0 32,16"/>
+<rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+<rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+<rect class="fill-door" x="12" y="28" width="8" height="8"/>'''
+
+
+def house_flat(name: str) -> str:
+ """Type B: Flat-roof modernist block."""
+ return f'''\
+<rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+<rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+<rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+<rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+<rect class="fill-door" x="13" y="28" width="8" height="8"/>'''
+
+
+def house_squat(name: str) -> str:
+ """Type C: Wide squat bungalow."""
+ return f'''\
+<rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+<polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+<rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+<rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+<rect class="fill-door" x="15" y="28" width="8" height="8"/>'''
+
+
+def house_ell(name: str) -> str:
+ """Type D: L-shaped house with extension."""
+ return f'''\
+<rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+<rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+<polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+<rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+<rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+<rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+<rect class="fill-door" x="13" y="28" width="7" height="8"/>'''
+
+
+def house_tower(name: str) -> str:
+ """Type E: Tall narrow tower."""
+ return f'''\
+<rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+<polygon class="fill-roof" points="4,8 16,0 28,8"/>
+<rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+<rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+<rect class="fill-door" x="10" y="30" width="8" height="6"/>'''
+
+
+HOUSE_TEMPLATES = [house_peaked, house_flat, house_squat, house_ell, house_tower]
+
+
+def render_house(friend: Friend, x: float, y: float, template_idx: int) -> str:
+ """Render a single house as an <a> hotspot."""
+ template_fn = HOUSE_TEMPLATES[template_idx % len(HOUSE_TEMPLATES)]
+ house_svg = template_fn(friend.name)
+
+ # Escape name for XML
+ safe_name = friend.name.replace("&", "&").replace("<", "<").replace(">", ">").replace('"', """)
+ safe_url = friend.url.replace("&", "&").replace('"', """)
+
+ return f'''\t\t\t\t<a class="hotspot village-house" href="{safe_url}" target="_blank" rel="noopener noreferrer" aria-label="{safe_name}">
+\t\t\t\t\t<title>{safe_name}</title>
+\t\t\t\t\t<g transform="translate({x},{y})">
+{_indent(house_svg, 6)}
+\t\t\t\t\t</g>
+\t\t\t\t\t<text class="hotspot-label village-label" x="{x + 16}" y="{y - 4}" text-anchor="middle">{safe_name}</text>
+\t\t\t\t</a>'''
+
+
+def _indent(text: str, tabs: int) -> str:
+ prefix = "\t" * tabs
+ return "\n".join(prefix + line for line in text.strip().split("\n"))
+
+
+# ────────────────────────────────────────────────────────────────
+# Background SVG
+# ────────────────────────────────────────────────────────────────
+
+BACKGROUND_SVG = '''\
+\t\t\t\t<!-- Sky -->
+\t\t\t\t<rect class="fill-sky" x="0" y="0" width="1200" height="800"/>
+
+\t\t\t\t<!-- Stars -->
+\t\t\t\t<g class="scene-detail" aria-hidden="true">
+\t\t\t\t\t<rect class="fill-star" x="80" y="30" width="2" height="2"/>
+\t\t\t\t\t<rect class="fill-star" x="200" y="55" width="3" height="3"/>
+\t\t\t\t\t<rect class="fill-star" x="350" y="20" width="2" height="2"/>
+\t\t\t\t\t<rect class="fill-star" x="480" y="45" width="3" height="3"/>
+\t\t\t\t\t<rect class="fill-star" x="620" y="15" width="2" height="2"/>
+\t\t\t\t\t<rect class="fill-star" x="750" y="40" width="2" height="2"/>
+\t\t\t\t\t<rect class="fill-star" x="880" y="25" width="3" height="3"/>
+\t\t\t\t\t<rect class="fill-star" x="1000" y="50" width="2" height="2"/>
+\t\t\t\t\t<rect class="fill-star" x="1100" y="18" width="2" height="2"/>
+\t\t\t\t\t<rect class="fill-star" x="150" y="70" width="2" height="2"/>
+\t\t\t\t\t<rect class="fill-star" x="550" y="60" width="2" height="2"/>
+\t\t\t\t\t<rect class="fill-star" x="950" y="38" width="3" height="3"/>
+\t\t\t\t</g>
+
+\t\t\t\t<!-- Distant mountains -->
+\t\t\t\t<path class="fill-mountain-far" d="M0 200 L100 140 L220 170 L350 110 L500 150 L650 100 L800 130 L950 90 L1100 120 L1200 100 L1200 250 L0 250 Z" aria-hidden="true"/>
+\t\t\t\t<path class="fill-mountain" d="M0 240 L150 180 L300 210 L450 160 L600 200 L750 150 L900 190 L1050 140 L1200 170 L1200 280 L0 280 Z" aria-hidden="true"/>
+
+\t\t\t\t<!-- Hillside terrain (3 tiers) -->
+\t\t\t\t<!-- Upper hill -->
+\t\t\t\t<path class="fill-ground" d="M100 480 Q350 120 600 130 Q850 120 1100 480 Z" aria-hidden="true"/>
+\t\t\t\t<!-- Lower hill -->
+\t\t\t\t<path class="fill-ground" d="M0 480 Q300 240 600 250 Q900 240 1200 480 Z" aria-hidden="true"/>
+\t\t\t\t<!-- Valley floor -->
+\t\t\t\t<rect class="fill-ground" x="0" y="480" width="1200" height="320" aria-hidden="true"/>
+
+\t\t\t\t<!-- Winding path -->
+\t\t\t\t<path class="fill-path" d="M550 140 Q480 200 520 270 Q560 330 500 390 Q440 440 480 520 Q520 580 480 650 L500 650 Q540 580 500 520 Q460 440 520 390 Q580 330 540 270 Q500 200 570 140 Z" aria-hidden="true"/>
+
+\t\t\t\t<!-- Decorative trees -->
+\t\t\t\t<g class="scene-detail" aria-hidden="true">
+\t\t\t\t\t<!-- Top tier trees -->
+\t\t\t\t\t<polygon class="fill-tree" points="280,220 290,180 300,220"/>
+\t\t\t\t\t<polygon class="fill-tree" points="680,210 690,170 700,210"/>
+\t\t\t\t\t<polygon class="fill-tree" points="850,225 860,188 870,225"/>
+\t\t\t\t\t<!-- Middle tier trees -->
+\t\t\t\t\t<polygon class="fill-tree" points="150,340 162,300 174,340"/>
+\t\t\t\t\t<polygon class="fill-tree" points="420,310 430,275 440,310"/>
+\t\t\t\t\t<polygon class="fill-tree" points="680,320 690,285 700,320"/>
+\t\t\t\t\t<polygon class="fill-tree" points="950,340 960,305 970,340"/>
+\t\t\t\t\t<!-- Bottom tier trees -->
+\t\t\t\t\t<polygon class="fill-tree" points="200,460 212,425 224,460"/>
+\t\t\t\t\t<polygon class="fill-tree" points="480,445 490,412 500,445"/>
+\t\t\t\t\t<polygon class="fill-tree" points="780,440 790,408 800,440"/>
+\t\t\t\t\t<polygon class="fill-tree" points="1050,450 1060,418 1070,450"/>
+\t\t\t\t</g>'''
+
+# ────────────────────────────────────────────────────────────────
+# HTML template
+# ────────────────────────────────────────────────────────────────
+
+def build_html(friends: list[Friend]) -> str:
+ all_ordered = place_houses(friends)
+
+ # Generate house SVG
+ house_lines = []
+ for i, (friend, x, y) in enumerate(all_ordered):
+ house_svg = render_house(friend, x, y, i)
+ house_lines.append(house_svg)
+
+ houses_svg = "\n\n".join(house_lines)
+
+ # Generate scene-nav list
+ nav_items = []
+ for friend, _, _ in all_ordered:
+ safe_name = friend.name.replace("&", "&").replace("<", "<").replace(">", ">")
+ safe_url = friend.url.replace("&", "&").replace('"', """)
+ nav_items.append(
+ f'\t\t\t\t<li><a class="scene-nav__link" href="{safe_url}" '
+ f'target="_blank" rel="noopener noreferrer">{safe_name}</a></li>'
+ )
+ nav_list = "\n".join(nav_items)
+
+ # Generate noscript link list
+ noscript_items = []
+ for friend, _, _ in all_ordered:
+ safe_name = friend.name.replace("&", "&").replace("<", "<").replace(">", ">")
+ safe_url = friend.url.replace("&", "&").replace('"', """)
+ noscript_items.append(
+ f'\t\t\t\t<li><a href="{safe_url}" target="_blank" rel="noopener noreferrer">{safe_name}</a></li>'
+ )
+ noscript_list = "\n".join(noscript_items)
+
+ # Back-to-neighbors house SVG at bottom
+ back_svg = '''\t\t\t\t<!-- Return path -->
+\t\t\t\t<a class="hotspot" href="neighbors.html" aria-label="邻邦 — Return to neighbors">
+\t\t\t\t\t<title>邻邦 — Return</title>
+\t\t\t\t\t<path class="hotspot-shape fill-path" d="M475 680 L505 680 L500 620 L480 620 Z"/>
+\t\t\t\t\t<text class="hotspot-label" x="490" y="710" text-anchor="middle">邻邦</text>
+\t\t\t\t</a>'''
+
+ return f'''\
+<!DOCTYPE html>
+<html lang="zh-Hans">
+<head>
+\t<meta charset="utf-8">
+\t<meta name="viewport" content="width=device-width, initial-scale=1">
+\t<title>友邻 — Realm</title>
+\t<meta name="description" content="友邻村落 — Friends village of the Realm">
+\t<meta name="theme-color" content="#1a1a2e">
+\t<link rel="stylesheet" href="realm.css">
+</head>
+<body>
+
+\t<a class="skip-link" href="#scene-nav-friends">跳过场景</a>
+
+\t<main class="realm-folder">
+\t\t<h1 class="visually-hidden">友邻</h1>
+
+\t\t<input type="radio" name="village-zoom" id="vz1" class="visually-hidden" checked>
+\t\t<input type="radio" name="village-zoom" id="vz2" class="visually-hidden">
+\t\t<input type="radio" name="village-zoom" id="vz3" class="visually-hidden">
+\t\t<input type="radio" name="village-zoom" id="vz4" class="visually-hidden">
+
+\t\t<div class="village-controls">
+\t\t\t<label for="vz1" class="village-zoom-label">1×</label>
+\t\t\t<label for="vz2" class="village-zoom-label">1.5×</label>
+\t\t\t<label for="vz3" class="village-zoom-label">2×</label>
+\t\t\t<label for="vz4" class="village-zoom-label">3×</label>
+\t\t</div>
+
+\t\t<div class="village-viewport">
+\t\t\t<div class="village-canvas">
+\t\t\t\t<svg class="village" role="group" aria-labelledby="scene-friends-title" viewBox="0 0 1200 800">
+\t\t\t\t\t<title id="scene-friends-title">友邻村落 — A hillside village of {len(friends)} friends</title>
+
+{BACKGROUND_SVG}
+
+\t\t\t\t\t<!-- Houses -->
+{houses_svg}
+
+{back_svg}
+\t\t\t\t</svg>
+\t\t\t</div>
+\t\t</div>
+
+\t\t<nav id="scene-nav-friends" class="scene-nav" aria-label="友邻导航">
+\t\t\t<ul class="scene-nav__list">
+{nav_list}
+\t\t\t\t<li><a class="scene-nav__link" href="neighbors.html">邻邦 — 返回邻邦</a></li>
+\t\t\t</ul>
+\t\t</nav>
+
+\t\t<noscript>
+\t\t\t<p style="padding:var(--space-md);color:var(--text-secondary);">
+\t\t\t\t以下是所有友邻链接:
+\t\t\t</p>
+\t\t\t<ul style="padding:var(--space-md);list-style:disc;color:var(--text-secondary);">
+{noscript_list}
+\t\t\t</ul>
+\t\t</noscript>
+\t</main>
+
+</body>
+</html>
+'''
+
+
+# ────────────────────────────────────────────────────────────────
+# Main
+# ────────────────────────────────────────────────────────────────
+
+def main():
+ if len(sys.argv) < 2:
+ print("Usage: python build-village.py <friends.opml>", file=sys.stderr)
+ sys.exit(1)
+
+ opml_path = sys.argv[1]
+ friends = parse_opml(opml_path)
+
+ if not friends:
+ print("No friends found in OPML file.", file=sys.stderr)
+ sys.exit(1)
+
+ print(f"Found {len(friends)} friends, generating village...", file=sys.stderr)
+
+ html = build_html(friends)
+
+ with open("friends.html", "w", encoding="utf-8") as f:
+ f.write(html)
+
+ print("✓ friends.html generated.", file=sys.stderr)
+
+
+if __name__ == "__main__":
+ main()
@@ 4,27 4,1104 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>友邻 — Realm</title>
- <meta name="description" content="友邻 — Friends of the Realm">
+ <meta name="description" content="友邻村落 — Friends village of the Realm">
<meta name="theme-color" content="#1a1a2e">
<link rel="stylesheet" href="realm.css">
</head>
<body>
- <a class="skip-link" href="#main-content">跳至正文</a>
+ <a class="skip-link" href="#scene-nav-friends">跳过场景</a>
- <main class="realm">
- <header class="realm-sigil">
- <h1 class="realm-sigil__title">友邻</h1>
- <p class="realm-sigil__subtitle">Friends</p>
- </header>
+ <main class="realm-folder">
+ <h1 class="visually-hidden">友邻</h1>
- <div id="main-content" class="realm-content">
- <p>Allies and neighbors of the realm.</p>
+ <input type="radio" name="village-zoom" id="vz1" class="visually-hidden" checked>
+ <input type="radio" name="village-zoom" id="vz2" class="visually-hidden">
+ <input type="radio" name="village-zoom" id="vz3" class="visually-hidden">
+ <input type="radio" name="village-zoom" id="vz4" class="visually-hidden">
+
+ <div class="village-controls">
+ <label for="vz1" class="village-zoom-label">1×</label>
+ <label for="vz2" class="village-zoom-label">1.5×</label>
+ <label for="vz3" class="village-zoom-label">2×</label>
+ <label for="vz4" class="village-zoom-label">3×</label>
+ </div>
+
+ <div class="village-viewport">
+ <div class="village-canvas">
+ <svg class="village" role="group" aria-labelledby="scene-friends-title" viewBox="0 0 1200 800">
+ <title id="scene-friends-title">友邻村落 — A hillside village of 72 friends</title>
+
+ <!-- Sky -->
+ <rect class="fill-sky" x="0" y="0" width="1200" height="800"/>
+
+ <!-- Stars -->
+ <g class="scene-detail" aria-hidden="true">
+ <rect class="fill-star" x="80" y="30" width="2" height="2"/>
+ <rect class="fill-star" x="200" y="55" width="3" height="3"/>
+ <rect class="fill-star" x="350" y="20" width="2" height="2"/>
+ <rect class="fill-star" x="480" y="45" width="3" height="3"/>
+ <rect class="fill-star" x="620" y="15" width="2" height="2"/>
+ <rect class="fill-star" x="750" y="40" width="2" height="2"/>
+ <rect class="fill-star" x="880" y="25" width="3" height="3"/>
+ <rect class="fill-star" x="1000" y="50" width="2" height="2"/>
+ <rect class="fill-star" x="1100" y="18" width="2" height="2"/>
+ <rect class="fill-star" x="150" y="70" width="2" height="2"/>
+ <rect class="fill-star" x="550" y="60" width="2" height="2"/>
+ <rect class="fill-star" x="950" y="38" width="3" height="3"/>
+ </g>
+
+ <!-- Distant mountains -->
+ <path class="fill-mountain-far" d="M0 200 L100 140 L220 170 L350 110 L500 150 L650 100 L800 130 L950 90 L1100 120 L1200 100 L1200 250 L0 250 Z" aria-hidden="true"/>
+ <path class="fill-mountain" d="M0 240 L150 180 L300 210 L450 160 L600 200 L750 150 L900 190 L1050 140 L1200 170 L1200 280 L0 280 Z" aria-hidden="true"/>
+
+ <!-- Hillside terrain (3 tiers) -->
+ <!-- Upper hill -->
+ <path class="fill-ground" d="M100 480 Q350 120 600 130 Q850 120 1100 480 Z" aria-hidden="true"/>
+ <!-- Lower hill -->
+ <path class="fill-ground" d="M0 480 Q300 240 600 250 Q900 240 1200 480 Z" aria-hidden="true"/>
+ <!-- Valley floor -->
+ <rect class="fill-ground" x="0" y="480" width="1200" height="320" aria-hidden="true"/>
+
+ <!-- Winding path -->
+ <path class="fill-path" d="M550 140 Q480 200 520 270 Q560 330 500 390 Q440 440 480 520 Q520 580 480 650 L500 650 Q540 580 500 520 Q460 440 520 390 Q580 330 540 270 Q500 200 570 140 Z" aria-hidden="true"/>
+
+ <!-- Decorative trees -->
+ <g class="scene-detail" aria-hidden="true">
+ <!-- Top tier trees -->
+ <polygon class="fill-tree" points="280,220 290,180 300,220"/>
+ <polygon class="fill-tree" points="680,210 690,170 700,210"/>
+ <polygon class="fill-tree" points="850,225 860,188 870,225"/>
+ <!-- Middle tier trees -->
+ <polygon class="fill-tree" points="150,340 162,300 174,340"/>
+ <polygon class="fill-tree" points="420,310 430,275 440,310"/>
+ <polygon class="fill-tree" points="680,320 690,285 700,320"/>
+ <polygon class="fill-tree" points="950,340 960,305 970,340"/>
+ <!-- Bottom tier trees -->
+ <polygon class="fill-tree" points="200,460 212,425 224,460"/>
+ <polygon class="fill-tree" points="480,445 490,412 500,445"/>
+ <polygon class="fill-tree" points="780,440 790,408 800,440"/>
+ <polygon class="fill-tree" points="1050,450 1060,418 1070,450"/>
+ </g>
+
+ <!-- Houses -->
+ <a class="hotspot village-house" href="https://lab.gb0.dev/" target="_blank" rel="noopener noreferrer" aria-label="/var/log/gblab">
+ <title>/var/log/gblab</title>
+ <g transform="translate(693.9,246.3)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="709.9" y="242.3" text-anchor="middle">/var/log/gblab</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://pathos.page/" target="_blank" rel="noopener noreferrer" aria-label="2750 words">
+ <title>2750 words</title>
+ <g transform="translate(386.7,298.7)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="402.7" y="294.7" text-anchor="middle">2750 words</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://blog.ursb.me/" target="_blank" rel="noopener noreferrer" aria-label="Airing 的博客">
+ <title>Airing 的博客</title>
+ <g transform="translate(87.6,443.3)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="103.6" y="439.3" text-anchor="middle">Airing 的博客</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://anotherdayu.com/" target="_blank" rel="noopener noreferrer" aria-label="Another Dayu">
+ <title>Another Dayu</title>
+ <g transform="translate(767.7,365.0)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="783.7" y="361.0" text-anchor="middle">Another Dayu</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://blog.est.im/" target="_blank" rel="noopener noreferrer" aria-label="est の 输入 输出和出入">
+ <title>est の 输入 输出和出入</title>
+ <g transform="translate(850.3,420.0)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="866.3" y="416.0" text-anchor="middle">est の 输入 输出和出入</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://fav0.com/" target="_blank" rel="noopener noreferrer" aria-label="FAV0周刊">
+ <title>FAV0周刊</title>
+ <g transform="translate(186.2,392.8)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="202.2" y="388.8" text-anchor="middle">FAV0周刊</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://hellogithub.com/" target="_blank" rel="noopener noreferrer" aria-label="HelloGitHub 月刊">
+ <title>HelloGitHub 月刊</title>
+ <g transform="translate(1011.1,429.3)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="1027.1" y="425.3" text-anchor="middle">HelloGitHub 月刊</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://liangmouyin.com/" target="_blank" rel="noopener noreferrer" aria-label="Home on 梁某银的博客">
+ <title>Home on 梁某银的博客</title>
+ <g transform="translate(609.3,277.7)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="625.3" y="273.7" text-anchor="middle">Home on 梁某银的博客</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.immarcus.com/blog" target="_blank" rel="noopener noreferrer" aria-label="I'm Marcus Blog">
+ <title>I'm Marcus Blog</title>
+ <g transform="translate(372.8,209.4)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="388.8" y="205.4" text-anchor="middle">I'm Marcus Blog</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://imqi1.com/" target="_blank" rel="noopener noreferrer" aria-label="ImQi1">
+ <title>ImQi1</title>
+ <g transform="translate(252.5,317.4)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="268.5" y="313.4" text-anchor="middle">ImQi1</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://blog.zzbd.org/" target="_blank" rel="noopener noreferrer" aria-label="J.F's BLOG">
+ <title>J.F's BLOG</title>
+ <g transform="translate(880.2,271.8)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="896.2" y="267.8" text-anchor="middle">J.F's BLOG</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://jakearchibald.com/" target="_blank" rel="noopener noreferrer" aria-label="Jake Archibald's blog">
+ <title>Jake Archibald's blog</title>
+ <g transform="translate(826.9,306.1)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="842.9" y="302.1" text-anchor="middle">Jake Archibald's blog</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://justgoidea.com/" target="_blank" rel="noopener noreferrer" aria-label="JustGoIdea">
+ <title>JustGoIdea</title>
+ <g transform="translate(308.8,259.9)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="324.8" y="255.89999999999998" text-anchor="middle">JustGoIdea</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.justzht.com/" target="_blank" rel="noopener noreferrer" aria-label="JustZht's EchoChamber">
+ <title>JustZht's EchoChamber</title>
+ <g transform="translate(481.1,419.8)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="497.1" y="415.8" text-anchor="middle">JustZht's EchoChamber</text>
+ </a>
+
+ <a class="hotspot village-house" href="http://study.tczhong.com/" target="_blank" rel="noopener noreferrer" aria-label="Learn More">
+ <title>Learn More</title>
+ <g transform="translate(826.5,221.5)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="842.5" y="217.5" text-anchor="middle">Learn More</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://blog.liuzhen932.top/" target="_blank" rel="noopener noreferrer" aria-label="liuzhen932 的小窝">
+ <title>liuzhen932 的小窝</title>
+ <g transform="translate(250.0,360.4)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="266.0" y="356.4" text-anchor="middle">liuzhen932 的小窝</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://markonreview.com/" target="_blank" rel="noopener noreferrer" aria-label="Markon Review">
+ <title>Markon Review</title>
+ <g transform="translate(434.3,417.7)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="450.3" y="413.7" text-anchor="middle">Markon Review</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://h4ck.org.cn/" target="_blank" rel="noopener noreferrer" aria-label="obaby@mars">
+ <title>obaby@mars</title>
+ <g transform="translate(1095.9,426.1)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="1111.9" y="422.1" text-anchor="middle">obaby@mars</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.owenyoung.com/" target="_blank" rel="noopener noreferrer" aria-label="Owen的博客">
+ <title>Owen的博客</title>
+ <g transform="translate(922.6,403.3)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="938.6" y="399.3" text-anchor="middle">Owen的博客</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://hsu.cy/posts/" target="_blank" rel="noopener noreferrer" aria-label="Posts on neverland">
+ <title>Posts on neverland</title>
+ <g transform="translate(932.0,345.1)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="948.0" y="341.1" text-anchor="middle">Posts on neverland</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.pseudoyu.com/" target="_blank" rel="noopener noreferrer" aria-label="pseudoyu">
+ <title>pseudoyu</title>
+ <g transform="translate(473.5,229.6)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="489.5" y="225.6" text-anchor="middle">pseudoyu</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://weblog.contained.love/" target="_blank" rel="noopener noreferrer" aria-label="r0k1s#i">
+ <title>r0k1s#i</title>
+ <g transform="translate(313.2,432.1)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="329.2" y="428.1" text-anchor="middle">r0k1s#i</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://rayepeng.net" target="_blank" rel="noopener noreferrer" aria-label="Raye's Journey">
+ <title>Raye's Journey</title>
+ <g transform="translate(322.7,316.3)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="338.7" y="312.3" text-anchor="middle">Raye's Journey</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://skywt.cn/" target="_blank" rel="noopener noreferrer" aria-label="SkyWT">
+ <title>SkyWT</title>
+ <g transform="translate(761.7,321.1)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="777.7" y="317.1" text-anchor="middle">SkyWT</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://blog.solazy.me/" target="_blank" rel="noopener noreferrer" aria-label="So!azy">
+ <title>So!azy</title>
+ <g transform="translate(591.4,370.1)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="607.4" y="366.1" text-anchor="middle">So!azy</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://sqybi.com/blog/" target="_blank" rel="noopener noreferrer" aria-label="SQYBI.com Blog">
+ <title>SQYBI.com Blog</title>
+ <g transform="translate(691.7,368.0)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="707.7" y="364.0" text-anchor="middle">SQYBI.com Blog</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.taober.blog/" target="_blank" rel="noopener noreferrer" aria-label="Taober">
+ <title>Taober</title>
+ <g transform="translate(639.7,233.1)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="655.7" y="229.1" text-anchor="middle">Taober</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://taxodium.ink/" target="_blank" rel="noopener noreferrer" aria-label="Taxodium">
+ <title>Taxodium</title>
+ <g transform="translate(865.5,379.5)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="881.5" y="375.5" text-anchor="middle">Taxodium</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://tw93.fun/" target="_blank" rel="noopener noreferrer" aria-label="Tw93 Blog">
+ <title>Tw93 Blog</title>
+ <g transform="translate(464.5,342.9)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="480.5" y="338.9" text-anchor="middle">Tw93 Blog</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://zishu.me" target="_blank" rel="noopener noreferrer" aria-label="Weekly on 子舒的博客">
+ <title>Weekly on 子舒的博客</title>
+ <g transform="translate(713.7,165.5)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="729.7" y="161.5" text-anchor="middle">Weekly on 子舒的博客</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://blog.itswincer.com/" target="_blank" rel="noopener noreferrer" aria-label="Wincer's Blog ATOM">
+ <title>Wincer's Blog ATOM</title>
+ <g transform="translate(254.6,402.9)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="270.6" y="398.9" text-anchor="middle">Wincer's Blog ATOM</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://nelsonboss.ink/" target="_blank" rel="noopener noreferrer" aria-label="一直游到海水变蓝">
+ <title>一直游到海水变蓝</title>
+ <g transform="translate(172.8,436.4)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="188.8" y="432.4" text-anchor="middle">一直游到海水变蓝</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://ihaihe.cn/" target="_blank" rel="noopener noreferrer" aria-label="三十海河">
+ <title>三十海河</title>
+ <g transform="translate(762.6,269.4)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="778.6" y="265.4" text-anchor="middle">三十海河</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://dongjunke.cn/" target="_blank" rel="noopener noreferrer" aria-label="东评西就">
+ <title>东评西就</title>
+ <g transform="translate(542.0,331.9)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="558.0" y="327.9" text-anchor="middle">东评西就</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://doin.pages.dev/" target="_blank" rel="noopener noreferrer" aria-label="主页 on Doin的赛博空间">
+ <title>主页 on Doin的赛博空间</title>
+ <g transform="translate(663.7,175.0)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="679.7" y="171.0" text-anchor="middle">主页 on Doin的赛博空间</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://wiki.eryajf.net/" target="_blank" rel="noopener noreferrer" aria-label="二丫讲梵">
+ <title>二丫讲梵</title>
+ <g transform="translate(518.2,286.2)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="534.2" y="282.2" text-anchor="middle">二丫讲梵</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://jefftay.com/" target="_blank" rel="noopener noreferrer" aria-label="仿生猫梦见电子猫粮">
+ <title>仿生猫梦见电子猫粮</title>
+ <g transform="translate(495.0,186.8)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="511.0" y="182.8" text-anchor="middle">仿生猫梦见电子猫粮</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://vjo.cc/" target="_blank" rel="noopener noreferrer" aria-label="刘郎阁">
+ <title>刘郎阁</title>
+ <g transform="translate(437.9,301.5)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="453.9" y="297.5" text-anchor="middle">刘郎阁</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://yinji.org/" target="_blank" rel="noopener noreferrer" aria-label="印记">
+ <title>印记</title>
+ <g transform="translate(955.0,445.7)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="971.0" y="441.7" text-anchor="middle">印记</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://quaily.com/" target="_blank" rel="noopener noreferrer" aria-label="印记-周报">
+ <title>印记-周报</title>
+ <g transform="translate(674.1,292.4)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="690.1" y="288.4" text-anchor="middle">印记-周报</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://zhoutian.com/" target="_blank" rel="noopener noreferrer" aria-label="周天记">
+ <title>周天记</title>
+ <g transform="translate(1013.6,375.3)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="1029.6" y="371.3" text-anchor="middle">周天记</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.weiwenchao.com/" target="_blank" rel="noopener noreferrer" aria-label="四季·花开——魏文超's Blog">
+ <title>四季·花开——魏文超's Blog</title>
+ <g transform="translate(385.3,350.9)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="401.3" y="346.9" text-anchor="middle">四季·花开——魏文超's Blog</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://wangyurui.com/" target="_blank" rel="noopener noreferrer" aria-label="太隐">
+ <title>太隐</title>
+ <g transform="translate(590.3,158.3)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="606.3" y="154.3" text-anchor="middle">太隐</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.weisay.com/blog" target="_blank" rel="noopener noreferrer" aria-label="威言威语">
+ <title>威言威语</title>
+ <g transform="translate(726.9,423.4)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="742.9" y="419.4" text-anchor="middle">威言威语</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://xyzbz.cn/" target="_blank" rel="noopener noreferrer" aria-label="子夜松声">
+ <title>子夜松声</title>
+ <g transform="translate(385.3,249.3)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="401.3" y="245.3" text-anchor="middle">子夜松声</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://cuixiping.com/blog/" target="_blank" rel="noopener noreferrer" aria-label="崔话记 ATOM 1.0">
+ <title>崔话记 ATOM 1.0</title>
+ <g transform="translate(332.0,363.1)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="348.0" y="359.1" text-anchor="middle">崔话记 ATOM 1.0</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.fengxiaoqiang.com/" target="_blank" rel="noopener noreferrer" aria-label="强少来了">
+ <title>强少来了</title>
+ <g transform="translate(662.7,443.9)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="678.7" y="439.9" text-anchor="middle">强少来了</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://write.laily.net/zh-cn/" target="_blank" rel="noopener noreferrer" aria-label="我与我周旋久">
+ <title>我与我周旋久</title>
+ <g transform="translate(758.9,200.5)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="774.9" y="196.5" text-anchor="middle">我与我周旋久</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.glowisle.me/" target="_blank" rel="noopener noreferrer" aria-label="映屿">
+ <title>映屿</title>
+ <g transform="translate(581.6,207.5)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="597.6" y="203.5" text-anchor="middle">映屿</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://nxxy335.top/" target="_blank" rel="noopener noreferrer" aria-label="暖心向阳335">
+ <title>暖心向阳335</title>
+ <g transform="translate(811.1,379.8)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="827.1" y="375.8" text-anchor="middle">暖心向阳335</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.geedea.pro/" target="_blank" rel="noopener noreferrer" aria-label="極客死亡計劃">
+ <title>極客死亡計劃</title>
+ <g transform="translate(534.0,439.8)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="550.0" y="435.8" text-anchor="middle">極客死亡計劃</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://weekly.tw93.fun/" target="_blank" rel="noopener noreferrer" aria-label="潮流周刊">
+ <title>潮流周刊</title>
+ <g transform="translate(801.5,431.8)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="817.5" y="427.8" text-anchor="middle">潮流周刊</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://blog.southfox.me/" target="_blank" rel="noopener noreferrer" aria-label="狐狸反走矣">
+ <title>狐狸反走矣</title>
+ <g transform="translate(605.8,434.5)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="621.8" y="430.5" text-anchor="middle">狐狸反走矣</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://blog.bxaw.name/" target="_blank" rel="noopener noreferrer" aria-label="白熊阿丸的小屋">
+ <title>白熊阿丸的小屋</title>
+ <g transform="translate(806.4,265.9)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="822.4" y="261.9" text-anchor="middle">白熊阿丸的小屋</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://blog.mzh.ren/zh/" target="_blank" rel="noopener noreferrer" aria-label="码农真经的博客">
+ <title>码农真经的博客</title>
+ <g transform="translate(378.3,421.7)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="394.3" y="417.7" text-anchor="middle">码农真经的博客</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://pewae.com/" target="_blank" rel="noopener noreferrer" aria-label="破袜子">
+ <title>破袜子</title>
+ <g transform="translate(620.4,324.8)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="636.4" y="320.8" text-anchor="middle">破袜子</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.suiyan.cc/" target="_blank" rel="noopener noreferrer" aria-label="碎言 - SuiYan Blog">
+ <title>碎言 - SuiYan Blog</title>
+ <g transform="translate(141.5,396.9)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="157.5" y="392.9" text-anchor="middle">碎言 - SuiYan Blog</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://darmau.co/zh" target="_blank" rel="noopener noreferrer" aria-label="积薪 - 文章">
+ <title>积薪 - 文章</title>
+ <g transform="translate(896.2,442.4)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="912.2" y="438.4" text-anchor="middle">积薪 - 文章</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://blog.zhilu.site/" target="_blank" rel="noopener noreferrer" aria-label="纸鹿摸鱼处">
+ <title>纸鹿摸鱼处</title>
+ <g transform="translate(880.8,322.7)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="896.8" y="318.7" text-anchor="middle">纸鹿摸鱼处</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://lawtee.com/" target="_blank" rel="noopener noreferrer" aria-label="老T博客">
+ <title>老T博客</title>
+ <g transform="translate(647.5,388.9)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="663.5" y="384.9" text-anchor="middle">老T博客</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://weekly.howie6879.com/" target="_blank" rel="noopener noreferrer" aria-label="老胡的周刊">
+ <title>老胡的周刊</title>
+ <g transform="translate(528.0,385.1)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="544.0" y="381.1" text-anchor="middle">老胡的周刊</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://weekly.shawnxie.top/" target="_blank" rel="noopener noreferrer" aria-label="肖恩技术周刊">
+ <title>肖恩技术周刊</title>
+ <g transform="translate(427.3,191.2)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="443.3" y="187.2" text-anchor="middle">肖恩技术周刊</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://hulatu.com/" target="_blank" rel="noopener noreferrer" aria-label="胡拉图">
+ <title>胡拉图</title>
+ <g transform="translate(226.9,445.8)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="242.9" y="441.8" text-anchor="middle">胡拉图</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://onojyun.com/" target="_blank" rel="noopener noreferrer" aria-label="莫比乌斯">
+ <title>莫比乌斯</title>
+ <g transform="translate(538.1,177.9)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="554.1" y="173.9" text-anchor="middle">莫比乌斯</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://www.loyhome.com/" target="_blank" rel="noopener noreferrer" aria-label="落园">
+ <title>落园</title>
+ <g transform="translate(525.9,226.2)">
+ <rect class="fill-wall" x="6" y="8" width="20" height="28"/>
+ <polygon class="fill-roof" points="4,8 16,0 28,8"/>
+ <rect class="fill-window house-window" x="11" y="13" width="6" height="5"/>
+ <rect class="fill-window house-window" x="11" y="22" width="6" height="5"/>
+ <rect class="fill-door" x="10" y="30" width="8" height="6"/>
+ </g>
+ <text class="hotspot-label village-label" x="541.9" y="222.2" text-anchor="middle">落园</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://1q43.blog/" target="_blank" rel="noopener noreferrer" aria-label="虹线">
+ <title>虹线</title>
+ <g transform="translate(966.2,385.4)">
+ <rect class="fill-wall" x="2" y="16" width="28" height="20"/>
+ <polygon class="fill-roof" points="0,16 16,0 32,16"/>
+ <rect class="fill-window house-window" x="7" y="21" width="6" height="6"/>
+ <rect class="fill-window house-window" x="19" y="21" width="6" height="6"/>
+ <rect class="fill-door" x="12" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="982.2" y="381.4" text-anchor="middle">虹线</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://sugarat.top/weekly" target="_blank" rel="noopener noreferrer" aria-label="视野修炼 - 技术周刊">
+ <title>视野修炼 - 技术周刊</title>
+ <g transform="translate(923.4,282.3)">
+ <rect class="fill-wall" x="2" y="10" width="30" height="26"/>
+ <rect class="fill-roof" x="0" y="8" width="34" height="4"/>
+ <rect class="fill-window house-window" x="6" y="15" width="8" height="6"/>
+ <rect class="fill-window house-window" x="20" y="15" width="8" height="6"/>
+ <rect class="fill-door" x="13" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="939.4" y="278.3" text-anchor="middle">视野修炼 - 技术周刊</text>
+ </a>
+
+ <a class="hotspot village-house" href="http://www.ruanyifeng.com/blog/" target="_blank" rel="noopener noreferrer" aria-label="阮一峰的网络日志">
+ <title>阮一峰的网络日志</title>
+ <g transform="translate(563.3,282.4)">
+ <rect class="fill-wall" x="0" y="14" width="38" height="22"/>
+ <polygon class="fill-roof" points="-2,14 19,4 40,14"/>
+ <rect class="fill-window house-window" x="4" y="19" width="7" height="5"/>
+ <rect class="fill-window house-window" x="27" y="19" width="7" height="5"/>
+ <rect class="fill-door" x="15" y="28" width="8" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="579.3" y="278.4" text-anchor="middle">阮一峰的网络日志</text>
+ </a>
+
+ <a class="hotspot village-house" href="https://ameow.xyz/categories/weekly" target="_blank" rel="noopener noreferrer" aria-label="阿猫的博客">
+ <title>阿猫的博客</title>
+ <g transform="translate(429.9,260.0)">
+ <rect class="fill-wall" x="0" y="12" width="24" height="24"/>
+ <rect class="fill-wall-dark" x="24" y="20" width="14" height="16"/>
+ <polygon class="fill-roof" points="-2,12 12,2 26,12"/>
+ <rect class="fill-roof" x="22" y="17" width="18" height="4"/>
+ <rect class="fill-window house-window" x="5" y="18" width="5" height="5"/>
+ <rect class="fill-window house-window" x="28" y="24" width="5" height="5"/>
+ <rect class="fill-door" x="13" y="28" width="7" height="8"/>
+ </g>
+ <text class="hotspot-label village-label" x="445.9" y="256.0" text-anchor="middle">阿猫的博客</text>
+ </a>
+
+ <!-- Return path -->
+ <a class="hotspot" href="neighbors.html" aria-label="邻邦 — Return to neighbors">
+ <title>邻邦 — Return</title>
+ <path class="hotspot-shape fill-path" d="M475 680 L505 680 L500 620 L480 620 Z"/>
+ <text class="hotspot-label" x="490" y="710" text-anchor="middle">邻邦</text>
+ </a>
+ </svg>
+ </div>
</div>
- <nav class="realm-nav" style="margin-top:var(--space-xl)">
- <a href="neighbors.html">← 返回领地</a>
+ <nav id="scene-nav-friends" class="scene-nav" aria-label="友邻导航">
+ <ul class="scene-nav__list">
+ <li><a class="scene-nav__link" href="https://lab.gb0.dev/" target="_blank" rel="noopener noreferrer">/var/log/gblab</a></li>
+ <li><a class="scene-nav__link" href="https://pathos.page/" target="_blank" rel="noopener noreferrer">2750 words</a></li>
+ <li><a class="scene-nav__link" href="https://blog.ursb.me/" target="_blank" rel="noopener noreferrer">Airing 的博客</a></li>
+ <li><a class="scene-nav__link" href="https://anotherdayu.com/" target="_blank" rel="noopener noreferrer">Another Dayu</a></li>
+ <li><a class="scene-nav__link" href="https://blog.est.im/" target="_blank" rel="noopener noreferrer">est の 输入 输出和出入</a></li>
+ <li><a class="scene-nav__link" href="https://fav0.com/" target="_blank" rel="noopener noreferrer">FAV0周刊</a></li>
+ <li><a class="scene-nav__link" href="https://hellogithub.com/" target="_blank" rel="noopener noreferrer">HelloGitHub 月刊</a></li>
+ <li><a class="scene-nav__link" href="https://liangmouyin.com/" target="_blank" rel="noopener noreferrer">Home on 梁某银的博客</a></li>
+ <li><a class="scene-nav__link" href="https://www.immarcus.com/blog" target="_blank" rel="noopener noreferrer">I'm Marcus Blog</a></li>
+ <li><a class="scene-nav__link" href="https://imqi1.com/" target="_blank" rel="noopener noreferrer">ImQi1</a></li>
+ <li><a class="scene-nav__link" href="https://blog.zzbd.org/" target="_blank" rel="noopener noreferrer">J.F's BLOG</a></li>
+ <li><a class="scene-nav__link" href="https://jakearchibald.com/" target="_blank" rel="noopener noreferrer">Jake Archibald's blog</a></li>
+ <li><a class="scene-nav__link" href="https://justgoidea.com/" target="_blank" rel="noopener noreferrer">JustGoIdea</a></li>
+ <li><a class="scene-nav__link" href="https://www.justzht.com/" target="_blank" rel="noopener noreferrer">JustZht's EchoChamber</a></li>
+ <li><a class="scene-nav__link" href="http://study.tczhong.com/" target="_blank" rel="noopener noreferrer">Learn More</a></li>
+ <li><a class="scene-nav__link" href="https://blog.liuzhen932.top/" target="_blank" rel="noopener noreferrer">liuzhen932 的小窝</a></li>
+ <li><a class="scene-nav__link" href="https://markonreview.com/" target="_blank" rel="noopener noreferrer">Markon Review</a></li>
+ <li><a class="scene-nav__link" href="https://h4ck.org.cn/" target="_blank" rel="noopener noreferrer">obaby@mars</a></li>
+ <li><a class="scene-nav__link" href="https://www.owenyoung.com/" target="_blank" rel="noopener noreferrer">Owen的博客</a></li>
+ <li><a class="scene-nav__link" href="https://hsu.cy/posts/" target="_blank" rel="noopener noreferrer">Posts on neverland</a></li>
+ <li><a class="scene-nav__link" href="https://www.pseudoyu.com/" target="_blank" rel="noopener noreferrer">pseudoyu</a></li>
+ <li><a class="scene-nav__link" href="https://weblog.contained.love/" target="_blank" rel="noopener noreferrer">r0k1s#i</a></li>
+ <li><a class="scene-nav__link" href="https://rayepeng.net" target="_blank" rel="noopener noreferrer">Raye's Journey</a></li>
+ <li><a class="scene-nav__link" href="https://skywt.cn/" target="_blank" rel="noopener noreferrer">SkyWT</a></li>
+ <li><a class="scene-nav__link" href="https://blog.solazy.me/" target="_blank" rel="noopener noreferrer">So!azy</a></li>
+ <li><a class="scene-nav__link" href="https://sqybi.com/blog/" target="_blank" rel="noopener noreferrer">SQYBI.com Blog</a></li>
+ <li><a class="scene-nav__link" href="https://www.taober.blog/" target="_blank" rel="noopener noreferrer">Taober</a></li>
+ <li><a class="scene-nav__link" href="https://taxodium.ink/" target="_blank" rel="noopener noreferrer">Taxodium</a></li>
+ <li><a class="scene-nav__link" href="https://tw93.fun/" target="_blank" rel="noopener noreferrer">Tw93 Blog</a></li>
+ <li><a class="scene-nav__link" href="https://zishu.me" target="_blank" rel="noopener noreferrer">Weekly on 子舒的博客</a></li>
+ <li><a class="scene-nav__link" href="https://blog.itswincer.com/" target="_blank" rel="noopener noreferrer">Wincer's Blog ATOM</a></li>
+ <li><a class="scene-nav__link" href="https://nelsonboss.ink/" target="_blank" rel="noopener noreferrer">一直游到海水变蓝</a></li>
+ <li><a class="scene-nav__link" href="https://ihaihe.cn/" target="_blank" rel="noopener noreferrer">三十海河</a></li>
+ <li><a class="scene-nav__link" href="https://dongjunke.cn/" target="_blank" rel="noopener noreferrer">东评西就</a></li>
+ <li><a class="scene-nav__link" href="https://doin.pages.dev/" target="_blank" rel="noopener noreferrer">主页 on Doin的赛博空间</a></li>
+ <li><a class="scene-nav__link" href="https://wiki.eryajf.net/" target="_blank" rel="noopener noreferrer">二丫讲梵</a></li>
+ <li><a class="scene-nav__link" href="https://jefftay.com/" target="_blank" rel="noopener noreferrer">仿生猫梦见电子猫粮</a></li>
+ <li><a class="scene-nav__link" href="https://vjo.cc/" target="_blank" rel="noopener noreferrer">刘郎阁</a></li>
+ <li><a class="scene-nav__link" href="https://yinji.org/" target="_blank" rel="noopener noreferrer">印记</a></li>
+ <li><a class="scene-nav__link" href="https://quaily.com/" target="_blank" rel="noopener noreferrer">印记-周报</a></li>
+ <li><a class="scene-nav__link" href="https://zhoutian.com/" target="_blank" rel="noopener noreferrer">周天记</a></li>
+ <li><a class="scene-nav__link" href="https://www.weiwenchao.com/" target="_blank" rel="noopener noreferrer">四季·花开——魏文超's Blog</a></li>
+ <li><a class="scene-nav__link" href="https://wangyurui.com/" target="_blank" rel="noopener noreferrer">太隐</a></li>
+ <li><a class="scene-nav__link" href="https://www.weisay.com/blog" target="_blank" rel="noopener noreferrer">威言威语</a></li>
+ <li><a class="scene-nav__link" href="https://xyzbz.cn/" target="_blank" rel="noopener noreferrer">子夜松声</a></li>
+ <li><a class="scene-nav__link" href="https://cuixiping.com/blog/" target="_blank" rel="noopener noreferrer">崔话记 ATOM 1.0</a></li>
+ <li><a class="scene-nav__link" href="https://www.fengxiaoqiang.com/" target="_blank" rel="noopener noreferrer">强少来了</a></li>
+ <li><a class="scene-nav__link" href="https://write.laily.net/zh-cn/" target="_blank" rel="noopener noreferrer">我与我周旋久</a></li>
+ <li><a class="scene-nav__link" href="https://www.glowisle.me/" target="_blank" rel="noopener noreferrer">映屿</a></li>
+ <li><a class="scene-nav__link" href="https://nxxy335.top/" target="_blank" rel="noopener noreferrer">暖心向阳335</a></li>
+ <li><a class="scene-nav__link" href="https://www.geedea.pro/" target="_blank" rel="noopener noreferrer">極客死亡計劃</a></li>
+ <li><a class="scene-nav__link" href="https://weekly.tw93.fun/" target="_blank" rel="noopener noreferrer">潮流周刊</a></li>
+ <li><a class="scene-nav__link" href="https://blog.southfox.me/" target="_blank" rel="noopener noreferrer">狐狸反走矣</a></li>
+ <li><a class="scene-nav__link" href="https://blog.bxaw.name/" target="_blank" rel="noopener noreferrer">白熊阿丸的小屋</a></li>
+ <li><a class="scene-nav__link" href="https://blog.mzh.ren/zh/" target="_blank" rel="noopener noreferrer">码农真经的博客</a></li>
+ <li><a class="scene-nav__link" href="https://pewae.com/" target="_blank" rel="noopener noreferrer">破袜子</a></li>
+ <li><a class="scene-nav__link" href="https://www.suiyan.cc/" target="_blank" rel="noopener noreferrer">碎言 - SuiYan Blog</a></li>
+ <li><a class="scene-nav__link" href="https://darmau.co/zh" target="_blank" rel="noopener noreferrer">积薪 - 文章</a></li>
+ <li><a class="scene-nav__link" href="https://blog.zhilu.site/" target="_blank" rel="noopener noreferrer">纸鹿摸鱼处</a></li>
+ <li><a class="scene-nav__link" href="https://lawtee.com/" target="_blank" rel="noopener noreferrer">老T博客</a></li>
+ <li><a class="scene-nav__link" href="https://weekly.howie6879.com/" target="_blank" rel="noopener noreferrer">老胡的周刊</a></li>
+ <li><a class="scene-nav__link" href="https://weekly.shawnxie.top/" target="_blank" rel="noopener noreferrer">肖恩技术周刊</a></li>
+ <li><a class="scene-nav__link" href="https://hulatu.com/" target="_blank" rel="noopener noreferrer">胡拉图</a></li>
+ <li><a class="scene-nav__link" href="https://onojyun.com/" target="_blank" rel="noopener noreferrer">莫比乌斯</a></li>
+ <li><a class="scene-nav__link" href="https://www.loyhome.com/" target="_blank" rel="noopener noreferrer">落园</a></li>
+ <li><a class="scene-nav__link" href="https://1q43.blog/" target="_blank" rel="noopener noreferrer">虹线</a></li>
+ <li><a class="scene-nav__link" href="https://sugarat.top/weekly" target="_blank" rel="noopener noreferrer">视野修炼 - 技术周刊</a></li>
+ <li><a class="scene-nav__link" href="http://www.ruanyifeng.com/blog/" target="_blank" rel="noopener noreferrer">阮一峰的网络日志</a></li>
+ <li><a class="scene-nav__link" href="https://ameow.xyz/categories/weekly" target="_blank" rel="noopener noreferrer">阿猫的博客</a></li>
+ <li><a class="scene-nav__link" href="neighbors.html">邻邦 — 返回邻邦</a></li>
+ </ul>
</nav>
+
+ <noscript>
+ <p style="padding:var(--space-md);color:var(--text-secondary);">
+ 以下是所有友邻链接:
+ </p>
+ <ul style="padding:var(--space-md);list-style:disc;color:var(--text-secondary);">
+ <li><a href="https://lab.gb0.dev/" target="_blank" rel="noopener noreferrer">/var/log/gblab</a></li>
+ <li><a href="https://pathos.page/" target="_blank" rel="noopener noreferrer">2750 words</a></li>
+ <li><a href="https://blog.ursb.me/" target="_blank" rel="noopener noreferrer">Airing 的博客</a></li>
+ <li><a href="https://anotherdayu.com/" target="_blank" rel="noopener noreferrer">Another Dayu</a></li>
+ <li><a href="https://blog.est.im/" target="_blank" rel="noopener noreferrer">est の 输入 输出和出入</a></li>
+ <li><a href="https://fav0.com/" target="_blank" rel="noopener noreferrer">FAV0周刊</a></li>
+ <li><a href="https://hellogithub.com/" target="_blank" rel="noopener noreferrer">HelloGitHub 月刊</a></li>
+ <li><a href="https://liangmouyin.com/" target="_blank" rel="noopener noreferrer">Home on 梁某银的博客</a></li>
+ <li><a href="https://www.immarcus.com/blog" target="_blank" rel="noopener noreferrer">I'm Marcus Blog</a></li>
+ <li><a href="https://imqi1.com/" target="_blank" rel="noopener noreferrer">ImQi1</a></li>
+ <li><a href="https://blog.zzbd.org/" target="_blank" rel="noopener noreferrer">J.F's BLOG</a></li>
+ <li><a href="https://jakearchibald.com/" target="_blank" rel="noopener noreferrer">Jake Archibald's blog</a></li>
+ <li><a href="https://justgoidea.com/" target="_blank" rel="noopener noreferrer">JustGoIdea</a></li>
+ <li><a href="https://www.justzht.com/" target="_blank" rel="noopener noreferrer">JustZht's EchoChamber</a></li>
+ <li><a href="http://study.tczhong.com/" target="_blank" rel="noopener noreferrer">Learn More</a></li>
+ <li><a href="https://blog.liuzhen932.top/" target="_blank" rel="noopener noreferrer">liuzhen932 的小窝</a></li>
+ <li><a href="https://markonreview.com/" target="_blank" rel="noopener noreferrer">Markon Review</a></li>
+ <li><a href="https://h4ck.org.cn/" target="_blank" rel="noopener noreferrer">obaby@mars</a></li>
+ <li><a href="https://www.owenyoung.com/" target="_blank" rel="noopener noreferrer">Owen的博客</a></li>
+ <li><a href="https://hsu.cy/posts/" target="_blank" rel="noopener noreferrer">Posts on neverland</a></li>
+ <li><a href="https://www.pseudoyu.com/" target="_blank" rel="noopener noreferrer">pseudoyu</a></li>
+ <li><a href="https://weblog.contained.love/" target="_blank" rel="noopener noreferrer">r0k1s#i</a></li>
+ <li><a href="https://rayepeng.net" target="_blank" rel="noopener noreferrer">Raye's Journey</a></li>
+ <li><a href="https://skywt.cn/" target="_blank" rel="noopener noreferrer">SkyWT</a></li>
+ <li><a href="https://blog.solazy.me/" target="_blank" rel="noopener noreferrer">So!azy</a></li>
+ <li><a href="https://sqybi.com/blog/" target="_blank" rel="noopener noreferrer">SQYBI.com Blog</a></li>
+ <li><a href="https://www.taober.blog/" target="_blank" rel="noopener noreferrer">Taober</a></li>
+ <li><a href="https://taxodium.ink/" target="_blank" rel="noopener noreferrer">Taxodium</a></li>
+ <li><a href="https://tw93.fun/" target="_blank" rel="noopener noreferrer">Tw93 Blog</a></li>
+ <li><a href="https://zishu.me" target="_blank" rel="noopener noreferrer">Weekly on 子舒的博客</a></li>
+ <li><a href="https://blog.itswincer.com/" target="_blank" rel="noopener noreferrer">Wincer's Blog ATOM</a></li>
+ <li><a href="https://nelsonboss.ink/" target="_blank" rel="noopener noreferrer">一直游到海水变蓝</a></li>
+ <li><a href="https://ihaihe.cn/" target="_blank" rel="noopener noreferrer">三十海河</a></li>
+ <li><a href="https://dongjunke.cn/" target="_blank" rel="noopener noreferrer">东评西就</a></li>
+ <li><a href="https://doin.pages.dev/" target="_blank" rel="noopener noreferrer">主页 on Doin的赛博空间</a></li>
+ <li><a href="https://wiki.eryajf.net/" target="_blank" rel="noopener noreferrer">二丫讲梵</a></li>
+ <li><a href="https://jefftay.com/" target="_blank" rel="noopener noreferrer">仿生猫梦见电子猫粮</a></li>
+ <li><a href="https://vjo.cc/" target="_blank" rel="noopener noreferrer">刘郎阁</a></li>
+ <li><a href="https://yinji.org/" target="_blank" rel="noopener noreferrer">印记</a></li>
+ <li><a href="https://quaily.com/" target="_blank" rel="noopener noreferrer">印记-周报</a></li>
+ <li><a href="https://zhoutian.com/" target="_blank" rel="noopener noreferrer">周天记</a></li>
+ <li><a href="https://www.weiwenchao.com/" target="_blank" rel="noopener noreferrer">四季·花开——魏文超's Blog</a></li>
+ <li><a href="https://wangyurui.com/" target="_blank" rel="noopener noreferrer">太隐</a></li>
+ <li><a href="https://www.weisay.com/blog" target="_blank" rel="noopener noreferrer">威言威语</a></li>
+ <li><a href="https://xyzbz.cn/" target="_blank" rel="noopener noreferrer">子夜松声</a></li>
+ <li><a href="https://cuixiping.com/blog/" target="_blank" rel="noopener noreferrer">崔话记 ATOM 1.0</a></li>
+ <li><a href="https://www.fengxiaoqiang.com/" target="_blank" rel="noopener noreferrer">强少来了</a></li>
+ <li><a href="https://write.laily.net/zh-cn/" target="_blank" rel="noopener noreferrer">我与我周旋久</a></li>
+ <li><a href="https://www.glowisle.me/" target="_blank" rel="noopener noreferrer">映屿</a></li>
+ <li><a href="https://nxxy335.top/" target="_blank" rel="noopener noreferrer">暖心向阳335</a></li>
+ <li><a href="https://www.geedea.pro/" target="_blank" rel="noopener noreferrer">極客死亡計劃</a></li>
+ <li><a href="https://weekly.tw93.fun/" target="_blank" rel="noopener noreferrer">潮流周刊</a></li>
+ <li><a href="https://blog.southfox.me/" target="_blank" rel="noopener noreferrer">狐狸反走矣</a></li>
+ <li><a href="https://blog.bxaw.name/" target="_blank" rel="noopener noreferrer">白熊阿丸的小屋</a></li>
+ <li><a href="https://blog.mzh.ren/zh/" target="_blank" rel="noopener noreferrer">码农真经的博客</a></li>
+ <li><a href="https://pewae.com/" target="_blank" rel="noopener noreferrer">破袜子</a></li>
+ <li><a href="https://www.suiyan.cc/" target="_blank" rel="noopener noreferrer">碎言 - SuiYan Blog</a></li>
+ <li><a href="https://darmau.co/zh" target="_blank" rel="noopener noreferrer">积薪 - 文章</a></li>
+ <li><a href="https://blog.zhilu.site/" target="_blank" rel="noopener noreferrer">纸鹿摸鱼处</a></li>
+ <li><a href="https://lawtee.com/" target="_blank" rel="noopener noreferrer">老T博客</a></li>
+ <li><a href="https://weekly.howie6879.com/" target="_blank" rel="noopener noreferrer">老胡的周刊</a></li>
+ <li><a href="https://weekly.shawnxie.top/" target="_blank" rel="noopener noreferrer">肖恩技术周刊</a></li>
+ <li><a href="https://hulatu.com/" target="_blank" rel="noopener noreferrer">胡拉图</a></li>
+ <li><a href="https://onojyun.com/" target="_blank" rel="noopener noreferrer">莫比乌斯</a></li>
+ <li><a href="https://www.loyhome.com/" target="_blank" rel="noopener noreferrer">落园</a></li>
+ <li><a href="https://1q43.blog/" target="_blank" rel="noopener noreferrer">虹线</a></li>
+ <li><a href="https://sugarat.top/weekly" target="_blank" rel="noopener noreferrer">视野修炼 - 技术周刊</a></li>
+ <li><a href="http://www.ruanyifeng.com/blog/" target="_blank" rel="noopener noreferrer">阮一峰的网络日志</a></li>
+ <li><a href="https://ameow.xyz/categories/weekly" target="_blank" rel="noopener noreferrer">阿猫的博客</a></li>
+ </ul>
+ </noscript>
</main>
</body>