Set rel nofollow to external links

This commit is contained in:
2025-02-10 21:00:01 +09:00
parent 39adcdd502
commit 0e7287bca7
12 changed files with 78 additions and 41 deletions

View File

@@ -24,6 +24,7 @@
"mdsvex": "0.12.3",
"misskey-js": "2024.11.1-alpha.0",
"prismjs": "1.29.0",
"rehype-external-links": "3.0.0",
"rehype-katex": "7.0.1",
"rehype-katex-svelte": "1.2.0",
"remark-footnotes": "2.0",

View File

@@ -41,10 +41,10 @@ let { children } = $props();
<LuCopyleft aria-label="Copyleft" size=12 /> 2024 cannorin. Some rights reserved.
</p>
<p>
The text of this website is licensed under <a class="underline" href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">CC BY-SA 4.0</a>.
The text of this website is licensed under <a class="underline" href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="nofollow noopener noreferrer">CC BY-SA 4.0</a>.
</p>
<p>
Code examples are licensed under the <a class="underline" href="https://spdx.org/licenses/MIT.html" target="_blank">MIT License</a>.
Code examples are licensed under the <a class="underline" href="https://spdx.org/licenses/MIT.html" target="_blank" rel="nofollow noopener noreferrer">MIT License</a>.
</p>
</footer>
</div>

View File

@@ -46,32 +46,32 @@ export const snapshot: Snapshot<SnapshotData> = {
<nav>
<ul class="flex flex-row flex-nowrap items-center gap-4 text-sm">
<li>
<a href="https://keybase.io/cannorin" target="_blank">
<a href="https://keybase.io/cannorin" target="_blank" rel="nofollow noopener noreferrer">
<SiKeybase title="Keybase" />
</a>
</li>
<li>
<a href="https://x.com/cannorin3" target="_blank">
<a href="https://x.com/cannorin3" target="_blank" rel="nofollow noopener noreferrer">
<SiX title="X (Twitter)" />
</a>
</li>
<li>
<a href="https://misskey.cannorin.net/@cannorin" target="_blank">
<a href="https://misskey.cannorin.net/@cannorin" target="_blank" rel="nofollow noopener noreferrer">
<SiMisskey title="Misskey" />
</a>
</li>
<li>
<a href="https://www.twitch.tv/cannorin" target="_blank">
<a href="https://www.twitch.tv/cannorin" target="_blank" rel="nofollow noopener noreferrer">
<SiTwitch title="Twitch" />
</a>
</li>
<li>
<a href="https://discord.com/users/497190979216867329" target="_blank">
<a href="https://discord.com/users/497190979216867329" target="_blank" rel="nofollow noopener noreferrer">
<SiDiscord title="Discord" />
</a>
</li>
<li>
<a href="https://steamcommunity.com/id/cannorin/" target="_blank">
<a href="https://steamcommunity.com/id/cannorin/" target="_blank" rel="nofollow noopener noreferrer">
<SiSteam title="Steam" />
</a>
</li>

View File

@@ -59,23 +59,23 @@ import Card from "./card.svelte";
<h3 id="works">つくったもの・関わったもの</h3>
<ul>
<li><a href="https://github.com/ocsigen/ts2ocaml" target="_blank">ts2ocaml</a>, <a href="https://github.com/CoreTweet/CoreTweet" target="_blank">CoreTweet</a> (作者)</li>
<li><a href="https://github.com/fsprojects/FSharpPlus" target="_blank">FSharpPlus</a>, <a href="https://github.com/ionide/Ionide-vim" target="_blank">Ionide-vim</a> (メンテナ)</li>
<li><a href="https://xn--pckjp4dudxftf.xn--tckwe/" target="_blank">ゴーストクラブ.コム</a>, <a href="https://www.0b4k3.com" target="_blank">0b4k3.com</a> (インフラ構築・実装)</li>
<li><a href="https://github.com/ocsigen/ts2ocaml" target="_blank" rel="nofollow noopener noreferrer">ts2ocaml</a>, <a href="https://github.com/CoreTweet/CoreTweet" target="_blank" rel="nofollow noopener noreferrer">CoreTweet</a> (作者)</li>
<li><a href="https://github.com/fsprojects/FSharpPlus" target="_blank" rel="nofollow noopener noreferrer">FSharpPlus</a>, <a href="https://github.com/ionide/Ionide-vim" target="_blank" rel="nofollow noopener noreferrer">Ionide-vim</a> (メンテナ)</li>
<li><a href="https://xn--pckjp4dudxftf.xn--tckwe/" target="_blank" rel="nofollow noopener noreferrer">ゴーストクラブ.コム</a>, <a href="https://www.0b4k3.com" target="_blank" rel="nofollow noopener noreferrer">0b4k3.com</a> (インフラ構築・実装)</li>
<li>
他にもコンパイラやパッケージマネージャに対するデカめの PR を通したことがあります (<a href="https://github.com/fable-compiler/Fable/pull/2618" target="_blank">fable-compiler/Fable#2618</a>,
<a href="https://github.com/ocaml/opam/pull/5171" target="_blank">ocaml/opam#5171</a>,
<a href="https://github.com/rescript-lang/rescript/pull/5364" target="_blank">rescript-lang/rescript#5364</a>, ...)
他にもコンパイラやパッケージマネージャに対するデカめの PR を通したことがあります (<a href="https://github.com/fable-compiler/Fable/pull/2618" target="_blank" rel="nofollow noopener noreferrer">fable-compiler/Fable#2618</a>,
<a href="https://github.com/ocaml/opam/pull/5171" target="_blank" rel="nofollow noopener noreferrer">ocaml/opam#5171</a>,
<a href="https://github.com/rescript-lang/rescript/pull/5364" target="_blank" rel="nofollow noopener noreferrer">rescript-lang/rescript#5364</a>, ...)
</li>
</ul>
<h3 id="contact">連絡先</h3>
<ul>
<li>チューターやバグ修正など、カジュアルな案件は <a href="https://github.com/sponsors/cannorin" target="_blank">GitHub Sponsors</a> をご利用ください。</li>
<li>チューターやバグ修正など、カジュアルな案件は <a href="https://github.com/sponsors/cannorin" target="_blank" rel="nofollow noopener noreferrer">GitHub Sponsors</a> をご利用ください。</li>
<li>
ウェブサイト構築など、大規模な案件についてのご連絡は <a href="https://keybase.io/cannorin" target="_blank">Keybase</a>,
<a href="https://discord.com/users/497190979216867329" target="_blank">Discord</a>,
ウェブサイト構築など、大規模な案件についてのご連絡は <a href="https://keybase.io/cannorin" target="_blank" rel="nofollow noopener noreferrer">Keybase</a>,
<a href="https://discord.com/users/497190979216867329" target="_blank" rel="nofollow noopener noreferrer">Discord</a>,
または contact(atmark)cannorin.net までお願いします。
</li>
<li>なお、現在特に転職の予定はありません。</li>

View File

@@ -22,17 +22,17 @@ let { more, ...rest }: Pick<CardProps, "more" | "class"> = $props();
{#snippet links()}
<li>
<a href="https://github.com/cannorin" target="_blank">
<a href="https://github.com/cannorin" target="_blank" rel="nofollow noopener noreferrer">
<SiGithub title="GitHub" />
</a>
</li>
<li>
<a href="https://qiita.com/cannorin" target="_blank">
<a href="https://qiita.com/cannorin" target="_blank" rel="nofollow noopener noreferrer">
<SiQiita title="Qiita" />
</a>
</li>
<li>
<a href="https://zenn.dev/cannorin" target="_blank">
<a href="https://zenn.dev/cannorin" target="_blank" rel="nofollow noopener noreferrer">
<SiZenn title="Zenn" />
</a>
</li>

View File

@@ -21,12 +21,12 @@ let { more, ...rest }: Pick<CardProps, "more" | "class"> = $props();
{#snippet links()}
<li>
<a href="https://orcid.org/0009-0009-3946-4260" target="_blank">
<a href="https://orcid.org/0009-0009-3946-4260" target="_blank" rel="nofollow noopener noreferrer">
<SiOrcid title="ORCiD" />
</a>
</li>
<li>
<a href="https://www.researchgate.net/profile/Yuta-Sato-22" target="_blank">
<a href="https://www.researchgate.net/profile/Yuta-Sato-22" target="_blank" rel="nofollow noopener noreferrer">
<SiResearchgate title="ResearchGate" />
</a>
</li>

View File

@@ -47,10 +47,10 @@ import Card from "./card.svelte";
<p>普段の DJ の際は、以下の機材を持ち込んでいます。あまりサイズは取りませんが、ブースに置くスペースがあるとうれしいです。なお、CDJ + USB のオーソドックスなプレイもできます。</p>
<ul>
<li><a href="https://www.allen-heath.com/hardware/xone-series/xonek2/" target="_blank">Allen & Heath Xone:K2</a> (4ch MIDI コントローラ)</li>
<li><a href="https://evo.audio/products/audio-interfaces/evo-4/overview/" target="_blank"> Audient EVO 4</a> (AIF, フォンから RCA に変換)</li>
<li><a href="https://mixxx.org/" target="_blank">Mixxx</a> (DJ ソフトウェア)</li>
<li><a href="https://www.audio-technica.co.jp/product/ATH-M50x" target="_blank">audio-technica ATH-M50x</a></li>
<li><a href="https://www.allen-heath.com/hardware/xone-series/xonek2/" target="_blank" rel="nofollow noopener noreferrer">Allen & Heath Xone:K2</a> (4ch MIDI コントローラ)</li>
<li><a href="https://evo.audio/products/audio-interfaces/evo-4/overview/" target="_blank" rel="nofollow noopener noreferrer"> Audient EVO 4</a> (AIF, フォンから RCA に変換)</li>
<li><a href="https://mixxx.org/" target="_blank" rel="nofollow noopener noreferrer">Mixxx</a> (DJ ソフトウェア)</li>
<li><a href="https://www.audio-technica.co.jp/product/ATH-M50x" target="_blank" rel="nofollow noopener noreferrer">audio-technica ATH-M50x</a></li>
<li>オヤイデ d+ classB RCA ケーブル</li>
<li>ートPC</li>
</ul>
@@ -81,14 +81,14 @@ import Card from "./card.svelte";
</ul>
</li>
<li>
<a href="https://oooto.otherman-records.com/4/" target="_blank">大音4</a> (中野 ヘビーシックゼロ)
<a href="https://oooto.otherman-records.com/4/" target="_blank" rel="nofollow noopener noreferrer">大音4</a> (中野 ヘビーシックゼロ)
<ul>
<li>サブフロアのキュレーションも担当しました。</li>
</ul>
</li>
<li><a href="https://x.com/cannorin3/status/1800402487771549782" target="_blank">4KICKS FOR GEEKS #4</a> (心斎橋 夜来香)</li>
<li><a href="https://x.com/cannorin3/status/1655598762822365189" target="_blank">embodiment</a> (心斎橋 夜来香)</li>
<li><a href="https://x.com/tohlpeaks/status/1570381932365434880" target="_blank">miracle☆sugar - sato♡shin &amp; TohLPeaks Release Party</a> (難波 ベアーズ)</li>
<li><a href="https://x.com/cannorin3/status/1800402487771549782" target="_blank" rel="nofollow noopener noreferrer">4KICKS FOR GEEKS #4</a> (心斎橋 夜来香)</li>
<li><a href="https://x.com/cannorin3/status/1655598762822365189" target="_blank" rel="nofollow noopener noreferrer">embodiment</a> (心斎橋 夜来香)</li>
<li><a href="https://x.com/tohlpeaks/status/1570381932365434880" target="_blank" rel="nofollow noopener noreferrer">miracle☆sugar - sato♡shin &amp; TohLPeaks Release Party</a> (難波 ベアーズ)</li>
<li>
and more...
<ul>
@@ -101,8 +101,8 @@ import Card from "./card.svelte";
<p>
ブッキングや音楽制作などのご連絡は
<a href="https://discord.com/users/497190979216867329" target="_blank">Discord</a>,
<a href="https://x.com/cannorin3" target="_blank">Twitter (X)</a>,
<a href="https://discord.com/users/497190979216867329" target="_blank" rel="nofollow noopener noreferrer">Discord</a>,
<a href="https://x.com/cannorin3" target="_blank" rel="nofollow noopener noreferrer">Twitter (X)</a>,
または contact(atmark)cannorin.net までお願いします。
</p>

View File

@@ -22,17 +22,17 @@ let { more, ...rest }: Pick<CardProps, "more" | "class"> = $props();
{#snippet links()}
<li>
<a href="https://cannorin.bandcamp.com/" target="_blank">
<a href="https://cannorin.bandcamp.com/" target="_blank" rel="nofollow noopener noreferrer">
<SiBandcamp title="Bandcamp" />
</a>
</li>
<li>
<a href="https://soundcloud.com/cannorin" target="_blank">
<a href="https://soundcloud.com/cannorin" target="_blank" rel="nofollow noopener noreferrer">
<SiSoundcloud title="Soundcloud" />
</a>
</li>
<li>
<a href="https://mixcloud.com/cannorin" target="_blank">
<a href="https://mixcloud.com/cannorin" target="_blank" rel="nofollow noopener noreferrer">
<SiMixcloud title="Mixcloud" />
</a>
</li>

View File

@@ -38,7 +38,7 @@ let copied = $state(false);
<section id="about" class="prose !w-full !min-w-full sect">
<h2>あるびのすきーとは?</h2>
<p>
あるびのすきーは「シンプル」と「かわいい」をテーマにした <a href="https://misskey-hub.net/ja/" target="_blank">Misskey</a> インスタンスです。
あるびのすきーは「シンプル」と「かわいい」をテーマにした <a href="https://misskey-hub.net/ja/" target="_blank" rel="nofollow noopener noreferrer">Misskey</a> インスタンスです。
</p>
<ul>

View File

@@ -1,7 +1,7 @@
## 利用規約
<aside class="text-xs text-muted-foreground">
この利用規約の内容は、hota さんが運営する Mastodon インスタンスの <a href="https://wiki.maud.io/ja/mastodon/about" target="_blank">:don: 利用規約</a> を元にしています!
この利用規約の内容は、hota さんが運営する Mastodon インスタンスの <a href="https://wiki.maud.io/ja/mastodon/about" target="_blank" rel="nofollow noopener noreferrer">:don: 利用規約</a> を元にしています!
</aside>
### はじめに
@@ -132,11 +132,11 @@
管理者の連絡先として利用可能な経路の一覧です。信頼できる経路を選択してください。また、可能な限り連絡者とアカウントが同一人物であることを確認できる手段を推奨しています。
- Keybase <a href="https://keybase.io/cannorin" target="_blank">@cannorin</a>
- Keybase <a href="https://keybase.io/cannorin" target="_blank" rel="nofollow noopener noreferrer">@cannorin</a>
- おそらく最もセキュア。
- 当サーバーの <a href="https://misskey.cannorin.net/@admin" target="_blank">@admin</a> または <a href="https://misskey.cannorin.net/@cannorin" target="_blank">@cannorin</a>
- 公開範囲をダイレクトにしてください。
- Discord <a href="https://discord.com/users/497190979216867329" target="_blank">@cannorin</a>
- Discord <a href="https://discord.com/users/497190979216867329" target="_blank" rel="nofollow noopener noreferrer">@cannorin</a>
- フレンドを送ってからDMを送信してください。
- X (Twitter) <a href="https://x.com/cannorin3" target="_blank">@cannorin3</a>
- X (Twitter) <a href="https://x.com/cannorin3" target="_blank" rel="nofollow noopener noreferrer">@cannorin3</a>
- 通知を見落としがちなのであんまり推奨しないです。

View File

@@ -1,6 +1,7 @@
import adapter from "@sveltejs/adapter-auto";
import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
import { mdsvex } from "mdsvex";
import rehypeExternalLinks from "rehype-external-links";
import rehypeKatex from "rehype-katex-svelte";
import remarkFootnotes from "remark-footnotes";
import remarkMath from "remark-math";
@@ -15,7 +16,13 @@ const config = {
mdsvex({
extensions: [".md"],
remarkPlugins: [remarkMath, remarkFootnotes],
rehypePlugins: [rehypeKatex],
rehypePlugins: [
rehypeKatex,
[
rehypeExternalLinks,
{ rel: ["nofollow", "noopener", "noreferrer"], target: "_blank" },
],
],
}),
vitePreprocess(),
],

View File

@@ -950,6 +950,13 @@ __metadata:
languageName: node
linkType: hard
"@ungap/structured-clone@npm:^1.0.0":
version: 1.3.0
resolution: "@ungap/structured-clone@npm:1.3.0"
checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a
languageName: node
linkType: hard
"abbrev@npm:^2.0.0":
version: 2.0.0
resolution: "abbrev@npm:2.0.0"
@@ -2020,6 +2027,13 @@ __metadata:
languageName: node
linkType: hard
"is-absolute-url@npm:^4.0.0":
version: 4.0.1
resolution: "is-absolute-url@npm:4.0.1"
checksum: 10c0/6f8f603945bd9f2c6031758bbc12352fc647bd5d807cad10d96cc6300fd0e15240cc091521a61db767e4ec0bacff257b4f1015fd5249c147bbb4a4497356c72e
languageName: node
linkType: hard
"is-arrayish@npm:^0.3.1":
version: 0.3.2
resolution: "is-arrayish@npm:0.3.2"
@@ -2771,6 +2785,20 @@ __metadata:
languageName: node
linkType: hard
"rehype-external-links@npm:3.0.0":
version: 3.0.0
resolution: "rehype-external-links@npm:3.0.0"
dependencies:
"@types/hast": "npm:^3.0.0"
"@ungap/structured-clone": "npm:^1.0.0"
hast-util-is-element: "npm:^3.0.0"
is-absolute-url: "npm:^4.0.0"
space-separated-tokens: "npm:^2.0.0"
unist-util-visit: "npm:^5.0.0"
checksum: 10c0/486b5db73d8fe72611d62b4eb0b56ec71025ea32bba764ad54473f714ca627be75e057ac29243763f85a77c3810f31727ce3e03c975b3803c1c98643d038e9ae
languageName: node
linkType: hard
"rehype-katex-svelte@npm:1.2.0":
version: 1.2.0
resolution: "rehype-katex-svelte@npm:1.2.0"
@@ -3771,6 +3799,7 @@ __metadata:
mdsvex: "npm:0.12.3"
misskey-js: "npm:2024.11.1-alpha.0"
prismjs: "npm:1.29.0"
rehype-external-links: "npm:3.0.0"
rehype-katex: "npm:7.0.1"
rehype-katex-svelte: "npm:1.2.0"
remark-footnotes: "npm:2.0"