diff options
| author | nsfisis <nsfisis@gmail.com> | 2022-03-02 20:17:25 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2022-03-02 20:17:25 +0900 |
| commit | 1630f564cd0cd20440b38c142bdee70e99d15175 (patch) | |
| tree | ab762db68f40b05d0574f58c87795fc87f8877f4 /docs | |
| parent | a4a72de9af0d0a6d17944f847a4d5fed2b05d2a7 (diff) | |
| download | blog.nsfisis.dev-1630f564cd0cd20440b38c142bdee70e99d15175.tar.gz blog.nsfisis.dev-1630f564cd0cd20440b38c142bdee70e99d15175.tar.zst blog.nsfisis.dev-1630f564cd0cd20440b38c142bdee70e99d15175.zip | |
attach tags to each post
Diffstat (limited to 'docs')
43 files changed, 1836 insertions, 3 deletions
diff --git a/docs/posts/cpp-you-can-use-keywords-in-attributes/index.html b/docs/posts/cpp-you-can-use-keywords-in-attributes/index.html index 874ddcb..21411bc 100644 --- a/docs/posts/cpp-you-can-use-keywords-in-attributes/index.html +++ b/docs/posts/cpp-you-can-use-keywords-in-attributes/index.html @@ -156,6 +156,12 @@ $ clang++ –std=c++17 hoge.cpp</p> <p>「<code>identifier</code> の構文上の要件を満たさないような代替トークン」はこれらが当てはまると思われる。</p> <p>調べた感想: 字句解析器か構文解析器が辛そう</p> </div> + <footer class="post-footer"> + <ul class="post-tags"> + <li><a href="https://blog.nsfisis.dev/tags/cpp">cpp</a></li> + <li><a href="https://blog.nsfisis.dev/tags/cpp17">cpp17</a></li> + </ul> + </footer> </article></main> <footer class="footer"> diff --git a/docs/posts/phperkaigi-2021/index.html b/docs/posts/phperkaigi-2021/index.html index 977be03..659b8df 100644 --- a/docs/posts/phperkaigi-2021/index.html +++ b/docs/posts/phperkaigi-2021/index.html @@ -568,6 +568,13 @@ Nginx などで相互に gRPC と gRPC-Web で変換</p> (ずっと常体で書いてしまったのでいきなり仏頂面から笑顔になったようで気持ち悪い)</p> <p>ではまた来年。</p> </div> + <footer class="post-footer"> + <ul class="post-tags"> + <li><a href="https://blog.nsfisis.dev/tags/conference">conference</a></li> + <li><a href="https://blog.nsfisis.dev/tags/php">php</a></li> + <li><a href="https://blog.nsfisis.dev/tags/phperkaigi">phperkaigi</a></li> + </ul> + </footer> </article></main> <footer class="footer"> diff --git a/docs/posts/python-unbound-local-error/index.html b/docs/posts/python-unbound-local-error/index.html index 227164a..cba8819 100644 --- a/docs/posts/python-unbound-local-error/index.html +++ b/docs/posts/python-unbound-local-error/index.html @@ -128,6 +128,12 @@ f() g() </code></pre></div><p><code>(*)</code> のように、<code>nonlocal</code> を追加する。これにより一つ外側のスコープ (<code>g</code> の一つ外側 = <code>f</code>) で定義されている <code>x</code> を探しに行くようになる。</p> </div> + <footer class="post-footer"> + <ul class="post-tags"> + <li><a href="https://blog.nsfisis.dev/tags/python">python</a></li> + <li><a href="https://blog.nsfisis.dev/tags/python3">python3</a></li> + </ul> + </footer> </article></main> <footer class="footer"> diff --git a/docs/posts/ruby-detect-running-implementation/index.html b/docs/posts/ruby-detect-running-implementation/index.html index f4642b5..09d79aa 100644 --- a/docs/posts/ruby-detect-running-implementation/index.html +++ b/docs/posts/ruby-detect-running-implementation/index.html @@ -158,6 +158,11 @@ jruby 1.2.0 (ruby 1.8.6 patchlevel 287) (2009-03-16 rev 9419) [i386-java] </span><span style="color:#75715e"> */</span> <span style="color:#75715e">#define MRUBY_RUBY_ENGINE "mruby" </span></code></pre></div></div> + <footer class="post-footer"> + <ul class="post-tags"> + <li><a href="https://blog.nsfisis.dev/tags/ruby">ruby</a></li> + </ul> + </footer> </article></main> <footer class="footer"> diff --git a/docs/posts/ruby-then-keyword-and-case-in/index.html b/docs/posts/ruby-then-keyword-and-case-in/index.html index f055f34..08e90bd 100644 --- a/docs/posts/ruby-then-keyword-and-case-in/index.html +++ b/docs/posts/ruby-then-keyword-and-case-in/index.html @@ -224,6 +224,12 @@ C系の <code>if</code> 後に来る <code>(</code>/<code>)</code> や、Python <li>Ruby の構文を正確に知るには (現状) <code>parse.y</code> を直接読めばよい</li> </ul> </div> + <footer class="post-footer"> + <ul class="post-tags"> + <li><a href="https://blog.nsfisis.dev/tags/ruby">ruby</a></li> + <li><a href="https://blog.nsfisis.dev/tags/ruby3">ruby3</a></li> + </ul> + </footer> </article></main> <footer class="footer"> diff --git a/docs/posts/rust-where-are-primitive-types-from/index.html b/docs/posts/rust-where-are-primitive-types-from/index.html index ab5e557..8253d6f 100644 --- a/docs/posts/rust-where-are-primitive-types-from/index.html +++ b/docs/posts/rust-where-are-primitive-types-from/index.html @@ -215,6 +215,11 @@ rustc_resolve/src/lib.rs: table.insert(sym::i128, Int(IntTy::I128)); <h1 id="まとめ">まとめ</h1> <p>Rust のプリミティブ型は予約語ではない。名前解決の最終段階で特別扱いされ、他に同名の型が見つかっていなければ対応するプリミティブ型に解決される。</p> </div> + <footer class="post-footer"> + <ul class="post-tags"> + <li><a href="https://blog.nsfisis.dev/tags/rust">rust</a></li> + </ul> + </footer> </article></main> <footer class="footer"> diff --git a/docs/posts/vim-difference-between-autocmd-bufwrite-and-bufwritepre/index.html b/docs/posts/vim-difference-between-autocmd-bufwrite-and-bufwritepre/index.html index 082c7d1..ef5ec96 100644 --- a/docs/posts/vim-difference-between-autocmd-bufwrite-and-bufwritepre/index.html +++ b/docs/posts/vim-difference-between-autocmd-bufwrite-and-bufwritepre/index.html @@ -168,6 +168,11 @@ FileEncoding Obsolete. It still works and is equivalent </ul> <p>ところでこの調査で知ったのだが、<code>BufRead</code> と <code>BufWrite</code> は上にある通り発火するタイミングが「後」と「前」で対称性がない。可能なら <code>Pre</code>/<code>Post</code> 付きのものを使った方が分かりやすいだろう。</p> </div> + <footer class="post-footer"> + <ul class="post-tags"> + <li><a href="https://blog.nsfisis.dev/tags/vim">vim</a></li> + </ul> + </footer> </article></main> <footer class="footer"> diff --git a/docs/posts/vim-swap-order-of-selected-lines/index.html b/docs/posts/vim-swap-order-of-selected-lines/index.html index b290e21..09a1e8a 100644 --- a/docs/posts/vim-swap-order-of-selected-lines/index.html +++ b/docs/posts/vim-swap-order-of-selected-lines/index.html @@ -181,6 +181,11 @@ executing autocommands |autocmd-searchpat|. </span><span style="color:#960050;background-color:#1e0010"></span> \ <span style="color:#a6e22e">Reverse</span><span style="color:#960050;background-color:#1e0010"> </span><span style="color:#960050;background-color:#1e0010"></span> \ <span style="color:#a6e22e">keeppatterns</span> <<span style="color:#a6e22e">line1</span>>,<<span style="color:#a6e22e">line2</span>><span style="color:#a6e22e">g</span><span style="color:#e6db74">/^/</span><span style="color:#a6e22e">m</span><<span style="color:#a6e22e">line1</span>><span style="color:#ae81ff">-1</span><span style="color:#960050;background-color:#1e0010"> </span></code></pre></div></div> + <footer class="post-footer"> + <ul class="post-tags"> + <li><a href="https://blog.nsfisis.dev/tags/vim">vim</a></li> + </ul> + </footer> </article></main> <footer class="footer"> diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 26952e6..3507324 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -5,18 +5,39 @@ <loc>https://blog.nsfisis.dev/posts/</loc> <lastmod>2021-10-02T09:39:27+09:00</lastmod> </url><url> + <loc>https://blog.nsfisis.dev/tags/rust/</loc> + <lastmod>2021-10-02T09:39:27+09:00</lastmod> + </url><url> <loc>https://blog.nsfisis.dev/posts/rust-where-are-primitive-types-from/</loc> <lastmod>2021-10-02T09:39:27+09:00</lastmod> </url><url> + <loc>https://blog.nsfisis.dev/tags/</loc> + <lastmod>2021-10-02T09:39:27+09:00</lastmod> + </url><url> <loc>https://blog.nsfisis.dev/posts/ruby-then-keyword-and-case-in/</loc> <lastmod>2021-10-02T09:38:50+09:00</lastmod> </url><url> + <loc>https://blog.nsfisis.dev/tags/ruby/</loc> + <lastmod>2021-10-02T09:38:50+09:00</lastmod> + </url><url> + <loc>https://blog.nsfisis.dev/tags/ruby3/</loc> + <lastmod>2021-10-02T09:38:50+09:00</lastmod> + </url><url> <loc>https://blog.nsfisis.dev/posts/cpp-you-can-use-keywords-in-attributes/</loc> <lastmod>2021-10-02T09:38:30+09:00</lastmod> </url><url> + <loc>https://blog.nsfisis.dev/tags/cpp/</loc> + <lastmod>2021-10-02T09:38:30+09:00</lastmod> + </url><url> + <loc>https://blog.nsfisis.dev/tags/cpp17/</loc> + <lastmod>2021-10-02T09:38:30+09:00</lastmod> + </url><url> <loc>https://blog.nsfisis.dev/posts/ruby-detect-running-implementation/</loc> <lastmod>2021-10-02T09:37:50+09:00</lastmod> </url><url> + <loc>https://blog.nsfisis.dev/tags/vim/</loc> + <lastmod>2021-10-02T09:37:25+09:00</lastmod> + </url><url> <loc>https://blog.nsfisis.dev/posts/vim-swap-order-of-selected-lines/</loc> <lastmod>2021-10-02T09:37:25+09:00</lastmod> </url><url> @@ -26,9 +47,24 @@ <loc>https://blog.nsfisis.dev/posts/python-unbound-local-error/</loc> <lastmod>2021-10-02T09:32:37+09:00</lastmod> </url><url> + <loc>https://blog.nsfisis.dev/tags/python/</loc> + <lastmod>2021-10-02T09:32:37+09:00</lastmod> + </url><url> + <loc>https://blog.nsfisis.dev/tags/python3/</loc> + <lastmod>2021-10-02T09:32:37+09:00</lastmod> + </url><url> <loc>https://blog.nsfisis.dev/</loc> <lastmod>2021-03-31T01:36:49+09:00</lastmod> </url><url> + <loc>https://blog.nsfisis.dev/tags/conference/</loc> + <lastmod>2021-03-30T23:22:40+09:00</lastmod> + </url><url> + <loc>https://blog.nsfisis.dev/tags/php/</loc> + <lastmod>2021-03-30T23:22:40+09:00</lastmod> + </url><url> + <loc>https://blog.nsfisis.dev/tags/phperkaigi/</loc> + <lastmod>2021-03-30T23:22:40+09:00</lastmod> + </url><url> <loc>https://blog.nsfisis.dev/posts/phperkaigi-2021/</loc> <lastmod>2021-03-30T23:22:40+09:00</lastmod> </url><url> @@ -36,7 +72,5 @@ <lastmod>2021-03-05T23:38:21+09:00</lastmod> </url><url> <loc>https://blog.nsfisis.dev/categories/</loc> - </url><url> - <loc>https://blog.nsfisis.dev/tags/</loc> </url> </urlset> diff --git a/docs/tags/conference/index.html b/docs/tags/conference/index.html new file mode 100644 index 0000000..71d75fa --- /dev/null +++ b/docs/tags/conference/index.html @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>conference - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/conference/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>conference</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>PHPerKaigi 2021</h2> + </header> + <section class="entry-content"> + <p>PHPerKaigi 2021 参加レポ 2021/03/26 から 2021/03/28 にかけて開催された、PHPerKaigi 2021 に一般参加者として参加した。 弊社デジタルサーカス株式会社 (今年1月から勤務) はダイヤモンドスポンサーとなっており、スポンサー枠のチケットを使わせていただいた。 +このようなカンファレンスには初めて参加するのでかねてより心待ちにしていたのだが、生憎2日目から体調を崩してしまい、この記事も途中までとなっている。まだ見ていないセッションも多いが、ひとまず現時点での参加レポを書いておく。 +発表はトラック A、B に分かれていたのだが、今回はすべて A トラックを視聴している (切り替えるのが面倒だっただけ)。 +凡例 発表・スライドのメモ (引用ではない) + 感想など +Day 0 前夜祭 (2021/03/27) 17:30 [A] PHP で AWS Lambda + Rails のプロジェクトを PHPer のメンバのみでメンテ →他のメンバもわかる PHP にリプレースを検討 +サーバレス + サーバ・インフラの管理が不要 アプリケーションコードの知識だけで保守可能 ゼロベースで作れる案件が (Railsの件とは別に) あるため、そちらで試験的に導入? +AWSの学習 AWS のドキュメント DevelopersIO +AWS Lambda のカスタムランタイムで PHP を動かす +サーバのセットアップや維持管理を気にしなくて良い サーバーレスで PHP を動かすツールがすでにある サーバーレス構築はすんなり +今は Laravel がルーティングしている Laravel Livewire を Lambda に載せられないか? デプロイ方法は? バッチ処理は? (Lambda は 15分の制限)...</p> + </section> + <footer class="entry-footer"> + <time>March 30, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/phperkaigi-2021/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/conference/index.xml b/docs/tags/conference/index.xml new file mode 100644 index 0000000..7b93c38 --- /dev/null +++ b/docs/tags/conference/index.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>conference on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/conference/</link> + <description>Recent content in conference on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Tue, 30 Mar 2021 23:22:40 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/conference/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>PHPerKaigi 2021</title> + <link>https://blog.nsfisis.dev/posts/phperkaigi-2021/</link> + <pubDate>Tue, 30 Mar 2021 23:22:40 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/phperkaigi-2021/</guid> + <description>PHPerKaigi 2021 参加レポ 2021/03/26 から 2021/03/28 にかけて開催された、PHPerKaigi 2021 に一般参加者として参加した。 弊社デジタルサーカス株式会社 (今年1月から勤務) はダイヤモンドスポンサーとなっており、スポンサー枠のチケットを使わせていただいた。 +このようなカンファレンスには初めて参加するのでかねてより心待ちにしていたのだが、生憎2日目から体調を崩してしまい、この記事も途中までとなっている。まだ見ていないセッションも多いが、ひとまず現時点での参加レポを書いておく。 +発表はトラック A、B に分かれていたのだが、今回はすべて A トラックを視聴している (切り替えるのが面倒だっただけ)。 +凡例 発表・スライドのメモ (引用ではない) + 感想など +Day 0 前夜祭 (2021/03/27) 17:30 [A] PHP で AWS Lambda + Rails のプロジェクトを PHPer のメンバのみでメンテ →他のメンバもわかる PHP にリプレースを検討 +サーバレス + サーバ・インフラの管理が不要 アプリケーションコードの知識だけで保守可能 ゼロベースで作れる案件が (Railsの件とは別に) あるため、そちらで試験的に導入? +AWSの学習 AWS のドキュメント DevelopersIO +AWS Lambda のカスタムランタイムで PHP を動かす +サーバのセットアップや維持管理を気にしなくて良い サーバーレスで PHP を動かすツールがすでにある サーバーレス構築はすんなり +今は Laravel がルーティングしている Laravel Livewire を Lambda に載せられないか? デプロイ方法は? バッチ処理は? (Lambda は 15分の制限)</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/conference/page/1/index.html b/docs/tags/conference/page/1/index.html new file mode 100644 index 0000000..0a923d6 --- /dev/null +++ b/docs/tags/conference/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/conference/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/conference/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/conference/" /></head></html>
\ No newline at end of file diff --git a/docs/tags/cpp/index.html b/docs/tags/cpp/index.html new file mode 100644 index 0000000..0626288 --- /dev/null +++ b/docs/tags/cpp/index.html @@ -0,0 +1,111 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>cpp - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/cpp/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>cpp</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>[C++] 属性構文の属性名にはキーワードが使える [[void]] [[for]]</h2> + </header> + <section class="entry-content"> + <p>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/94090937bcf860cfa93b + タイトル落ち。まずはこのコードを見て欲しい。 +#include <iostream> [[alignas]] [[alignof]] [[and]] [[and_eq]] [[asm]] [[auto]] [[bitand]] [[bitor]] [[bool]] [[break]] [[case]] [[catch]] [[char]] [[char16_t]] [[char32_t]] [[class]] [[compl]] [[const]] [[const_cast]] [[constexpr]] [[continue]] [[decltype]] [[default]] [[delete]] [[do]] [[double]] [[dynamic_cast]] [[else]] [[enum]] [[explicit]] [[export]] [[extern]] [[false]] [[final]] [[float]] [[for]] [[friend]] [[goto]] [[if]] [[inline]] [[int]] [[long]] [[mutable]] [[namespace]] [[new]] [[noexcept]] [[not]] [[not_eq]] [[nullptr]] [[operator]] [[or]] [[or_eq]] [[override]] [[private]] [[protected]] [[public]] [[register]] [[reinterpret_cast]] [[return]] [[short]] [[signed]] [[sizeof]] [[static]] [[static_assert]] [[static_cast]] [[struct]] [[switch]] [[template]] [[this]] [[thread_local]] [[throw]] [[true]] [[try]] [[typedef]] [[typeid]] [[typename]] [[union]] [[unsigned]] [[virtual]] [[void]] [[volatile]] [[wchar_t]] [[while]] [[xor]] [[xor_eq]] // [[using]] int main() { std::cout << "Hello, World!...</p> + </section> + <footer class="entry-footer"> + <time>October 2, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/cpp-you-can-use-keywords-in-attributes/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/cpp/index.xml b/docs/tags/cpp/index.xml new file mode 100644 index 0000000..6cd2016 --- /dev/null +++ b/docs/tags/cpp/index.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>cpp on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/cpp/</link> + <description>Recent content in cpp on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Sat, 02 Oct 2021 09:38:30 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/cpp/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>[C++] 属性構文の属性名にはキーワードが使える [[void]] [[for]]</title> + <link>https://blog.nsfisis.dev/posts/cpp-you-can-use-keywords-in-attributes/</link> + <pubDate>Sat, 02 Oct 2021 09:38:30 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/cpp-you-can-use-keywords-in-attributes/</guid> + <description>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/94090937bcf860cfa93b + タイトル落ち。まずはこのコードを見て欲しい。 +#include &lt;iostream&gt; [[alignas]] [[alignof]] [[and]] [[and_eq]] [[asm]] [[auto]] [[bitand]] [[bitor]] [[bool]] [[break]] [[case]] [[catch]] [[char]] [[char16_t]] [[char32_t]] [[class]] [[compl]] [[const]] [[const_cast]] [[constexpr]] [[continue]] [[decltype]] [[default]] [[delete]] [[do]] [[double]] [[dynamic_cast]] [[else]] [[enum]] [[explicit]] [[export]] [[extern]] [[false]] [[final]] [[float]] [[for]] [[friend]] [[goto]] [[if]] [[inline]] [[int]] [[long]] [[mutable]] [[namespace]] [[new]] [[noexcept]] [[not]] [[not_eq]] [[nullptr]] [[operator]] [[or]] [[or_eq]] [[override]] [[private]] [[protected]] [[public]] [[register]] [[reinterpret_cast]] [[return]] [[short]] [[signed]] [[sizeof]] [[static]] [[static_assert]] [[static_cast]] [[struct]] [[switch]] [[template]] [[this]] [[thread_local]] [[throw]] [[true]] [[try]] [[typedef]] [[typeid]] [[typename]] [[union]] [[unsigned]] [[virtual]] [[void]] [[volatile]] [[wchar_t]] [[while]] [[xor]] [[xor_eq]] // [[using]] int main() { std::cout &lt;&lt; &#34;Hello, World!</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/cpp/page/1/index.html b/docs/tags/cpp/page/1/index.html new file mode 100644 index 0000000..c7ce5f2 --- /dev/null +++ b/docs/tags/cpp/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/cpp/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/cpp/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/cpp/" /></head></html>
\ No newline at end of file diff --git a/docs/tags/cpp17/index.html b/docs/tags/cpp17/index.html new file mode 100644 index 0000000..082b9e1 --- /dev/null +++ b/docs/tags/cpp17/index.html @@ -0,0 +1,111 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>cpp17 - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/cpp17/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>cpp17</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>[C++] 属性構文の属性名にはキーワードが使える [[void]] [[for]]</h2> + </header> + <section class="entry-content"> + <p>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/94090937bcf860cfa93b + タイトル落ち。まずはこのコードを見て欲しい。 +#include <iostream> [[alignas]] [[alignof]] [[and]] [[and_eq]] [[asm]] [[auto]] [[bitand]] [[bitor]] [[bool]] [[break]] [[case]] [[catch]] [[char]] [[char16_t]] [[char32_t]] [[class]] [[compl]] [[const]] [[const_cast]] [[constexpr]] [[continue]] [[decltype]] [[default]] [[delete]] [[do]] [[double]] [[dynamic_cast]] [[else]] [[enum]] [[explicit]] [[export]] [[extern]] [[false]] [[final]] [[float]] [[for]] [[friend]] [[goto]] [[if]] [[inline]] [[int]] [[long]] [[mutable]] [[namespace]] [[new]] [[noexcept]] [[not]] [[not_eq]] [[nullptr]] [[operator]] [[or]] [[or_eq]] [[override]] [[private]] [[protected]] [[public]] [[register]] [[reinterpret_cast]] [[return]] [[short]] [[signed]] [[sizeof]] [[static]] [[static_assert]] [[static_cast]] [[struct]] [[switch]] [[template]] [[this]] [[thread_local]] [[throw]] [[true]] [[try]] [[typedef]] [[typeid]] [[typename]] [[union]] [[unsigned]] [[virtual]] [[void]] [[volatile]] [[wchar_t]] [[while]] [[xor]] [[xor_eq]] // [[using]] int main() { std::cout << "Hello, World!...</p> + </section> + <footer class="entry-footer"> + <time>October 2, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/cpp-you-can-use-keywords-in-attributes/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/cpp17/index.xml b/docs/tags/cpp17/index.xml new file mode 100644 index 0000000..15cb391 --- /dev/null +++ b/docs/tags/cpp17/index.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>cpp17 on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/cpp17/</link> + <description>Recent content in cpp17 on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Sat, 02 Oct 2021 09:38:30 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/cpp17/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>[C++] 属性構文の属性名にはキーワードが使える [[void]] [[for]]</title> + <link>https://blog.nsfisis.dev/posts/cpp-you-can-use-keywords-in-attributes/</link> + <pubDate>Sat, 02 Oct 2021 09:38:30 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/cpp-you-can-use-keywords-in-attributes/</guid> + <description>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/94090937bcf860cfa93b + タイトル落ち。まずはこのコードを見て欲しい。 +#include &lt;iostream&gt; [[alignas]] [[alignof]] [[and]] [[and_eq]] [[asm]] [[auto]] [[bitand]] [[bitor]] [[bool]] [[break]] [[case]] [[catch]] [[char]] [[char16_t]] [[char32_t]] [[class]] [[compl]] [[const]] [[const_cast]] [[constexpr]] [[continue]] [[decltype]] [[default]] [[delete]] [[do]] [[double]] [[dynamic_cast]] [[else]] [[enum]] [[explicit]] [[export]] [[extern]] [[false]] [[final]] [[float]] [[for]] [[friend]] [[goto]] [[if]] [[inline]] [[int]] [[long]] [[mutable]] [[namespace]] [[new]] [[noexcept]] [[not]] [[not_eq]] [[nullptr]] [[operator]] [[or]] [[or_eq]] [[override]] [[private]] [[protected]] [[public]] [[register]] [[reinterpret_cast]] [[return]] [[short]] [[signed]] [[sizeof]] [[static]] [[static_assert]] [[static_cast]] [[struct]] [[switch]] [[template]] [[this]] [[thread_local]] [[throw]] [[true]] [[try]] [[typedef]] [[typeid]] [[typename]] [[union]] [[unsigned]] [[virtual]] [[void]] [[volatile]] [[wchar_t]] [[while]] [[xor]] [[xor_eq]] // [[using]] int main() { std::cout &lt;&lt; &#34;Hello, World!</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/cpp17/page/1/index.html b/docs/tags/cpp17/page/1/index.html new file mode 100644 index 0000000..fbe22d9 --- /dev/null +++ b/docs/tags/cpp17/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/cpp17/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/cpp17/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/cpp17/" /></head></html>
\ No newline at end of file diff --git a/docs/tags/index.xml b/docs/tags/index.xml index f2ae147..6c9a44c 100644 --- a/docs/tags/index.xml +++ b/docs/tags/index.xml @@ -5,6 +5,106 @@ <link>https://blog.nsfisis.dev/tags/</link> <description>Recent content in Tags on REPL: Rest-Eat-Program Loop</description> <generator>Hugo -- gohugo.io</generator> - <language>ja-JP</language><atom:link href="https://blog.nsfisis.dev/tags/index.xml" rel="self" type="application/rss+xml" /> + <language>ja-JP</language> + <lastBuildDate>Sat, 02 Oct 2021 09:39:27 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>rust</title> + <link>https://blog.nsfisis.dev/tags/rust/</link> + <pubDate>Sat, 02 Oct 2021 09:39:27 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/rust/</guid> + <description></description> + </item> + + <item> + <title>ruby</title> + <link>https://blog.nsfisis.dev/tags/ruby/</link> + <pubDate>Sat, 02 Oct 2021 09:38:50 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/ruby/</guid> + <description></description> + </item> + + <item> + <title>ruby3</title> + <link>https://blog.nsfisis.dev/tags/ruby3/</link> + <pubDate>Sat, 02 Oct 2021 09:38:50 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/ruby3/</guid> + <description></description> + </item> + + <item> + <title>cpp</title> + <link>https://blog.nsfisis.dev/tags/cpp/</link> + <pubDate>Sat, 02 Oct 2021 09:38:30 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/cpp/</guid> + <description></description> + </item> + + <item> + <title>cpp17</title> + <link>https://blog.nsfisis.dev/tags/cpp17/</link> + <pubDate>Sat, 02 Oct 2021 09:38:30 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/cpp17/</guid> + <description></description> + </item> + + <item> + <title>vim</title> + <link>https://blog.nsfisis.dev/tags/vim/</link> + <pubDate>Sat, 02 Oct 2021 09:37:25 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/vim/</guid> + <description></description> + </item> + + <item> + <title>python</title> + <link>https://blog.nsfisis.dev/tags/python/</link> + <pubDate>Sat, 02 Oct 2021 09:32:37 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/python/</guid> + <description></description> + </item> + + <item> + <title>python3</title> + <link>https://blog.nsfisis.dev/tags/python3/</link> + <pubDate>Sat, 02 Oct 2021 09:32:37 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/python3/</guid> + <description></description> + </item> + + <item> + <title>conference</title> + <link>https://blog.nsfisis.dev/tags/conference/</link> + <pubDate>Tue, 30 Mar 2021 23:22:40 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/conference/</guid> + <description></description> + </item> + + <item> + <title>php</title> + <link>https://blog.nsfisis.dev/tags/php/</link> + <pubDate>Tue, 30 Mar 2021 23:22:40 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/php/</guid> + <description></description> + </item> + + <item> + <title>phperkaigi</title> + <link>https://blog.nsfisis.dev/tags/phperkaigi/</link> + <pubDate>Tue, 30 Mar 2021 23:22:40 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/tags/phperkaigi/</guid> + <description></description> + </item> + </channel> </rss> diff --git a/docs/tags/php/index.html b/docs/tags/php/index.html new file mode 100644 index 0000000..0e05a74 --- /dev/null +++ b/docs/tags/php/index.html @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>php - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/php/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>php</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>PHPerKaigi 2021</h2> + </header> + <section class="entry-content"> + <p>PHPerKaigi 2021 参加レポ 2021/03/26 から 2021/03/28 にかけて開催された、PHPerKaigi 2021 に一般参加者として参加した。 弊社デジタルサーカス株式会社 (今年1月から勤務) はダイヤモンドスポンサーとなっており、スポンサー枠のチケットを使わせていただいた。 +このようなカンファレンスには初めて参加するのでかねてより心待ちにしていたのだが、生憎2日目から体調を崩してしまい、この記事も途中までとなっている。まだ見ていないセッションも多いが、ひとまず現時点での参加レポを書いておく。 +発表はトラック A、B に分かれていたのだが、今回はすべて A トラックを視聴している (切り替えるのが面倒だっただけ)。 +凡例 発表・スライドのメモ (引用ではない) + 感想など +Day 0 前夜祭 (2021/03/27) 17:30 [A] PHP で AWS Lambda + Rails のプロジェクトを PHPer のメンバのみでメンテ →他のメンバもわかる PHP にリプレースを検討 +サーバレス + サーバ・インフラの管理が不要 アプリケーションコードの知識だけで保守可能 ゼロベースで作れる案件が (Railsの件とは別に) あるため、そちらで試験的に導入? +AWSの学習 AWS のドキュメント DevelopersIO +AWS Lambda のカスタムランタイムで PHP を動かす +サーバのセットアップや維持管理を気にしなくて良い サーバーレスで PHP を動かすツールがすでにある サーバーレス構築はすんなり +今は Laravel がルーティングしている Laravel Livewire を Lambda に載せられないか? デプロイ方法は? バッチ処理は? (Lambda は 15分の制限)...</p> + </section> + <footer class="entry-footer"> + <time>March 30, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/phperkaigi-2021/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/php/index.xml b/docs/tags/php/index.xml new file mode 100644 index 0000000..295c4f2 --- /dev/null +++ b/docs/tags/php/index.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>php on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/php/</link> + <description>Recent content in php on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Tue, 30 Mar 2021 23:22:40 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/php/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>PHPerKaigi 2021</title> + <link>https://blog.nsfisis.dev/posts/phperkaigi-2021/</link> + <pubDate>Tue, 30 Mar 2021 23:22:40 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/phperkaigi-2021/</guid> + <description>PHPerKaigi 2021 参加レポ 2021/03/26 から 2021/03/28 にかけて開催された、PHPerKaigi 2021 に一般参加者として参加した。 弊社デジタルサーカス株式会社 (今年1月から勤務) はダイヤモンドスポンサーとなっており、スポンサー枠のチケットを使わせていただいた。 +このようなカンファレンスには初めて参加するのでかねてより心待ちにしていたのだが、生憎2日目から体調を崩してしまい、この記事も途中までとなっている。まだ見ていないセッションも多いが、ひとまず現時点での参加レポを書いておく。 +発表はトラック A、B に分かれていたのだが、今回はすべて A トラックを視聴している (切り替えるのが面倒だっただけ)。 +凡例 発表・スライドのメモ (引用ではない) + 感想など +Day 0 前夜祭 (2021/03/27) 17:30 [A] PHP で AWS Lambda + Rails のプロジェクトを PHPer のメンバのみでメンテ →他のメンバもわかる PHP にリプレースを検討 +サーバレス + サーバ・インフラの管理が不要 アプリケーションコードの知識だけで保守可能 ゼロベースで作れる案件が (Railsの件とは別に) あるため、そちらで試験的に導入? +AWSの学習 AWS のドキュメント DevelopersIO +AWS Lambda のカスタムランタイムで PHP を動かす +サーバのセットアップや維持管理を気にしなくて良い サーバーレスで PHP を動かすツールがすでにある サーバーレス構築はすんなり +今は Laravel がルーティングしている Laravel Livewire を Lambda に載せられないか? デプロイ方法は? バッチ処理は? (Lambda は 15分の制限)</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/php/page/1/index.html b/docs/tags/php/page/1/index.html new file mode 100644 index 0000000..abae162 --- /dev/null +++ b/docs/tags/php/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/php/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/php/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/php/" /></head></html>
\ No newline at end of file diff --git a/docs/tags/phperkaigi/index.html b/docs/tags/phperkaigi/index.html new file mode 100644 index 0000000..11113d5 --- /dev/null +++ b/docs/tags/phperkaigi/index.html @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>phperkaigi - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/phperkaigi/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>phperkaigi</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>PHPerKaigi 2021</h2> + </header> + <section class="entry-content"> + <p>PHPerKaigi 2021 参加レポ 2021/03/26 から 2021/03/28 にかけて開催された、PHPerKaigi 2021 に一般参加者として参加した。 弊社デジタルサーカス株式会社 (今年1月から勤務) はダイヤモンドスポンサーとなっており、スポンサー枠のチケットを使わせていただいた。 +このようなカンファレンスには初めて参加するのでかねてより心待ちにしていたのだが、生憎2日目から体調を崩してしまい、この記事も途中までとなっている。まだ見ていないセッションも多いが、ひとまず現時点での参加レポを書いておく。 +発表はトラック A、B に分かれていたのだが、今回はすべて A トラックを視聴している (切り替えるのが面倒だっただけ)。 +凡例 発表・スライドのメモ (引用ではない) + 感想など +Day 0 前夜祭 (2021/03/27) 17:30 [A] PHP で AWS Lambda + Rails のプロジェクトを PHPer のメンバのみでメンテ →他のメンバもわかる PHP にリプレースを検討 +サーバレス + サーバ・インフラの管理が不要 アプリケーションコードの知識だけで保守可能 ゼロベースで作れる案件が (Railsの件とは別に) あるため、そちらで試験的に導入? +AWSの学習 AWS のドキュメント DevelopersIO +AWS Lambda のカスタムランタイムで PHP を動かす +サーバのセットアップや維持管理を気にしなくて良い サーバーレスで PHP を動かすツールがすでにある サーバーレス構築はすんなり +今は Laravel がルーティングしている Laravel Livewire を Lambda に載せられないか? デプロイ方法は? バッチ処理は? (Lambda は 15分の制限)...</p> + </section> + <footer class="entry-footer"> + <time>March 30, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/phperkaigi-2021/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/phperkaigi/index.xml b/docs/tags/phperkaigi/index.xml new file mode 100644 index 0000000..b71fc52 --- /dev/null +++ b/docs/tags/phperkaigi/index.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>phperkaigi on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/phperkaigi/</link> + <description>Recent content in phperkaigi on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Tue, 30 Mar 2021 23:22:40 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/phperkaigi/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>PHPerKaigi 2021</title> + <link>https://blog.nsfisis.dev/posts/phperkaigi-2021/</link> + <pubDate>Tue, 30 Mar 2021 23:22:40 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/phperkaigi-2021/</guid> + <description>PHPerKaigi 2021 参加レポ 2021/03/26 から 2021/03/28 にかけて開催された、PHPerKaigi 2021 に一般参加者として参加した。 弊社デジタルサーカス株式会社 (今年1月から勤務) はダイヤモンドスポンサーとなっており、スポンサー枠のチケットを使わせていただいた。 +このようなカンファレンスには初めて参加するのでかねてより心待ちにしていたのだが、生憎2日目から体調を崩してしまい、この記事も途中までとなっている。まだ見ていないセッションも多いが、ひとまず現時点での参加レポを書いておく。 +発表はトラック A、B に分かれていたのだが、今回はすべて A トラックを視聴している (切り替えるのが面倒だっただけ)。 +凡例 発表・スライドのメモ (引用ではない) + 感想など +Day 0 前夜祭 (2021/03/27) 17:30 [A] PHP で AWS Lambda + Rails のプロジェクトを PHPer のメンバのみでメンテ →他のメンバもわかる PHP にリプレースを検討 +サーバレス + サーバ・インフラの管理が不要 アプリケーションコードの知識だけで保守可能 ゼロベースで作れる案件が (Railsの件とは別に) あるため、そちらで試験的に導入? +AWSの学習 AWS のドキュメント DevelopersIO +AWS Lambda のカスタムランタイムで PHP を動かす +サーバのセットアップや維持管理を気にしなくて良い サーバーレスで PHP を動かすツールがすでにある サーバーレス構築はすんなり +今は Laravel がルーティングしている Laravel Livewire を Lambda に載せられないか? デプロイ方法は? バッチ処理は? (Lambda は 15分の制限)</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/phperkaigi/page/1/index.html b/docs/tags/phperkaigi/page/1/index.html new file mode 100644 index 0000000..ecafc09 --- /dev/null +++ b/docs/tags/phperkaigi/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/phperkaigi/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/phperkaigi/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/phperkaigi/" /></head></html>
\ No newline at end of file diff --git a/docs/tags/python/index.html b/docs/tags/python/index.html new file mode 100644 index 0000000..e8908f0 --- /dev/null +++ b/docs/tags/python/index.html @@ -0,0 +1,115 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>python - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/python/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>python</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>[Python] クロージャとUnboundLocalError: local variable 'x' referenced before assignment</h2> + </header> + <section class="entry-content"> + <p>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/5d733703afcb35bbf399 + 本記事は Python 3.7.6 の動作結果を元にして書かれている。 +Python でクロージャを作ろうと、次のようなコードを書いた。 +def f(): x = 0 def g(): x += 1 g() f() 関数 g から 関数 f のスコープ内で定義された変数 x を参照し、それに 1 を足そうとしている。 これを実行すると x += 1 の箇所でエラーが発生する。 + UnboundLocalError: local variable ‘x’ referenced before assignment + local変数 x が代入前に参照された、とある。これは、f の x を参照するのではなく、新しく別の変数を g 内に作ってしまっているため。 前述のコードを宣言と代入を便宜上分けて書き直すと次のようになる。var を変数宣言のための構文として擬似的に利用している。 +# 注: var は正しい Python の文法ではない。上記参照のこと def f(): var x # f の local変数 'x' を宣言 x = 0 # x に 0 を代入 def g(): # f の内部関数 g を定義 var x # g の local変数 'x' を宣言 # たまたま f にも同じ名前の変数があるが、それとは別の変数 x += 1 # x に 1 を加算 (x = x + 1 の糖衣構文) # 加算する前の値を参照しようとするが、まだ代入されていないためエラー g() 当初の意図を表現するには、次のように書けばよい。...</p> + </section> + <footer class="entry-footer"> + <time>October 2, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/python-unbound-local-error/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/python/index.xml b/docs/tags/python/index.xml new file mode 100644 index 0000000..af05598 --- /dev/null +++ b/docs/tags/python/index.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>python on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/python/</link> + <description>Recent content in python on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Sat, 02 Oct 2021 09:32:37 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/python/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>[Python] クロージャとUnboundLocalError: local variable 'x' referenced before assignment</title> + <link>https://blog.nsfisis.dev/posts/python-unbound-local-error/</link> + <pubDate>Sat, 02 Oct 2021 09:32:37 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/python-unbound-local-error/</guid> + <description>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/5d733703afcb35bbf399 + 本記事は Python 3.7.6 の動作結果を元にして書かれている。 +Python でクロージャを作ろうと、次のようなコードを書いた。 +def f(): x = 0 def g(): x += 1 g() f() 関数 g から 関数 f のスコープ内で定義された変数 x を参照し、それに 1 を足そうとしている。 これを実行すると x += 1 の箇所でエラーが発生する。 + UnboundLocalError: local variable &lsquo;x&rsquo; referenced before assignment + local変数 x が代入前に参照された、とある。これは、f の x を参照するのではなく、新しく別の変数を g 内に作ってしまっているため。 前述のコードを宣言と代入を便宜上分けて書き直すと次のようになる。var を変数宣言のための構文として擬似的に利用している。 +# 注: var は正しい Python の文法ではない。上記参照のこと def f(): var x # f の local変数 &#39;x&#39; を宣言 x = 0 # x に 0 を代入 def g(): # f の内部関数 g を定義 var x # g の local変数 &#39;x&#39; を宣言 # たまたま f にも同じ名前の変数があるが、それとは別の変数 x += 1 # x に 1 を加算 (x = x + 1 の糖衣構文) # 加算する前の値を参照しようとするが、まだ代入されていないためエラー g() 当初の意図を表現するには、次のように書けばよい。</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/python/page/1/index.html b/docs/tags/python/page/1/index.html new file mode 100644 index 0000000..9560b32 --- /dev/null +++ b/docs/tags/python/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/python/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/python/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/python/" /></head></html>
\ No newline at end of file diff --git a/docs/tags/python3/index.html b/docs/tags/python3/index.html new file mode 100644 index 0000000..8780528 --- /dev/null +++ b/docs/tags/python3/index.html @@ -0,0 +1,115 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>python3 - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/python3/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>python3</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>[Python] クロージャとUnboundLocalError: local variable 'x' referenced before assignment</h2> + </header> + <section class="entry-content"> + <p>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/5d733703afcb35bbf399 + 本記事は Python 3.7.6 の動作結果を元にして書かれている。 +Python でクロージャを作ろうと、次のようなコードを書いた。 +def f(): x = 0 def g(): x += 1 g() f() 関数 g から 関数 f のスコープ内で定義された変数 x を参照し、それに 1 を足そうとしている。 これを実行すると x += 1 の箇所でエラーが発生する。 + UnboundLocalError: local variable ‘x’ referenced before assignment + local変数 x が代入前に参照された、とある。これは、f の x を参照するのではなく、新しく別の変数を g 内に作ってしまっているため。 前述のコードを宣言と代入を便宜上分けて書き直すと次のようになる。var を変数宣言のための構文として擬似的に利用している。 +# 注: var は正しい Python の文法ではない。上記参照のこと def f(): var x # f の local変数 'x' を宣言 x = 0 # x に 0 を代入 def g(): # f の内部関数 g を定義 var x # g の local変数 'x' を宣言 # たまたま f にも同じ名前の変数があるが、それとは別の変数 x += 1 # x に 1 を加算 (x = x + 1 の糖衣構文) # 加算する前の値を参照しようとするが、まだ代入されていないためエラー g() 当初の意図を表現するには、次のように書けばよい。...</p> + </section> + <footer class="entry-footer"> + <time>October 2, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/python-unbound-local-error/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/python3/index.xml b/docs/tags/python3/index.xml new file mode 100644 index 0000000..bbb1d64 --- /dev/null +++ b/docs/tags/python3/index.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>python3 on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/python3/</link> + <description>Recent content in python3 on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Sat, 02 Oct 2021 09:32:37 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/python3/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>[Python] クロージャとUnboundLocalError: local variable 'x' referenced before assignment</title> + <link>https://blog.nsfisis.dev/posts/python-unbound-local-error/</link> + <pubDate>Sat, 02 Oct 2021 09:32:37 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/python-unbound-local-error/</guid> + <description>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/5d733703afcb35bbf399 + 本記事は Python 3.7.6 の動作結果を元にして書かれている。 +Python でクロージャを作ろうと、次のようなコードを書いた。 +def f(): x = 0 def g(): x += 1 g() f() 関数 g から 関数 f のスコープ内で定義された変数 x を参照し、それに 1 を足そうとしている。 これを実行すると x += 1 の箇所でエラーが発生する。 + UnboundLocalError: local variable &lsquo;x&rsquo; referenced before assignment + local変数 x が代入前に参照された、とある。これは、f の x を参照するのではなく、新しく別の変数を g 内に作ってしまっているため。 前述のコードを宣言と代入を便宜上分けて書き直すと次のようになる。var を変数宣言のための構文として擬似的に利用している。 +# 注: var は正しい Python の文法ではない。上記参照のこと def f(): var x # f の local変数 &#39;x&#39; を宣言 x = 0 # x に 0 を代入 def g(): # f の内部関数 g を定義 var x # g の local変数 &#39;x&#39; を宣言 # たまたま f にも同じ名前の変数があるが、それとは別の変数 x += 1 # x に 1 を加算 (x = x + 1 の糖衣構文) # 加算する前の値を参照しようとするが、まだ代入されていないためエラー g() 当初の意図を表現するには、次のように書けばよい。</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/python3/page/1/index.html b/docs/tags/python3/page/1/index.html new file mode 100644 index 0000000..2e5623f --- /dev/null +++ b/docs/tags/python3/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/python3/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/python3/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/python3/" /></head></html>
\ No newline at end of file diff --git a/docs/tags/ruby/index.html b/docs/tags/ruby/index.html new file mode 100644 index 0000000..e0b157c --- /dev/null +++ b/docs/tags/ruby/index.html @@ -0,0 +1,132 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>ruby - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/ruby/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>ruby</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>[Ruby] then キーワードと case in</h2> + </header> + <section class="entry-content"> + <p>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/787a8cf888a304497223 + TL; DR case - in によるパターンマッチング構文でも、case - when と同じように then が使える (場合によっては使う必要がある)。 +then とは 使われることは稀だが、Ruby では then がキーワードになっている。次のように使う: +if cond then puts "Y" else puts "N" end このキーワードが現れうる場所はいくつかあり、if、unless、rescue、case 構文がそれに当たる。 上記のように、何か条件を書いた後 then を置き、式がそこで終了していることを示すマーカーとして機能する。 +# Example: if x then a end unless x then a end begin a rescue then b end case x when p then a end なぜ普段は書かなくてもよいのか 普通 Ruby のコードで then を書くことはない。なぜか。次のコードを実行してみるとわかる。...</p> + </section> + <footer class="entry-footer"> + <time>October 2, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/ruby-then-keyword-and-case-in/"></a> +</article> +<article class="post-entry"> + <header class="entry-header"> + <h2>[Ruby] 自身を実行している処理系の種類を判定する</h2> + </header> + <section class="entry-content"> + <p>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/74d7ffeeebc51b20d791 + Ruby という言語には複数の実装があるが、それらをスクリプト上からどのようにして programmatically に見分ければよいだろうか。 +Object クラスに定義されている RUBY_ENGINE という定数がこの用途に使える。 +参考: Object::RUBY_ENGINE +上記ページの例から引用する: +$ ruby-1.9.1 -ve 'p RUBY_ENGINE' ruby 1.9.1p0 (2009-03-04 revision 22762) [x86_64-linux] "ruby" $ jruby -ve 'p RUBY_ENGINE' jruby 1.2.0 (ruby 1.8.6 patchlevel 287) (2009-03-16 rev 9419) [i386-java] "jruby" それぞれの処理系がどのような値を返すかだが、stack overflow に良い質問と回答があった。 +What values for RUBY_ENGINE correspond to which Ruby implementations? より引用: + RUBY_ENGINE Implementation <undefined> MRI < 1....</p> + </section> + <footer class="entry-footer"> + <time>October 2, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/ruby-detect-running-implementation/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/ruby/index.xml b/docs/tags/ruby/index.xml new file mode 100644 index 0000000..53e153b --- /dev/null +++ b/docs/tags/ruby/index.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>ruby on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/ruby/</link> + <description>Recent content in ruby on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Sat, 02 Oct 2021 09:38:50 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/ruby/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>[Ruby] then キーワードと case in</title> + <link>https://blog.nsfisis.dev/posts/ruby-then-keyword-and-case-in/</link> + <pubDate>Sat, 02 Oct 2021 09:38:50 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/ruby-then-keyword-and-case-in/</guid> + <description>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/787a8cf888a304497223 + TL; DR case - in によるパターンマッチング構文でも、case - when と同じように then が使える (場合によっては使う必要がある)。 +then とは 使われることは稀だが、Ruby では then がキーワードになっている。次のように使う: +if cond then puts &#34;Y&#34; else puts &#34;N&#34; end このキーワードが現れうる場所はいくつかあり、if、unless、rescue、case 構文がそれに当たる。 上記のように、何か条件を書いた後 then を置き、式がそこで終了していることを示すマーカーとして機能する。 +# Example: if x then a end unless x then a end begin a rescue then b end case x when p then a end なぜ普段は書かなくてもよいのか 普通 Ruby のコードで then を書くことはない。なぜか。次のコードを実行してみるとわかる。</description> + </item> + + <item> + <title>[Ruby] 自身を実行している処理系の種類を判定する</title> + <link>https://blog.nsfisis.dev/posts/ruby-detect-running-implementation/</link> + <pubDate>Sat, 02 Oct 2021 09:37:50 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/ruby-detect-running-implementation/</guid> + <description>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/74d7ffeeebc51b20d791 + Ruby という言語には複数の実装があるが、それらをスクリプト上からどのようにして programmatically に見分ければよいだろうか。 +Object クラスに定義されている RUBY_ENGINE という定数がこの用途に使える。 +参考: Object::RUBY_ENGINE +上記ページの例から引用する: +$ ruby-1.9.1 -ve 'p RUBY_ENGINE' ruby 1.9.1p0 (2009-03-04 revision 22762) [x86_64-linux] &quot;ruby&quot; $ jruby -ve 'p RUBY_ENGINE' jruby 1.2.0 (ruby 1.8.6 patchlevel 287) (2009-03-16 rev 9419) [i386-java] &quot;jruby&quot; それぞれの処理系がどのような値を返すかだが、stack overflow に良い質問と回答があった。 +What values for RUBY_ENGINE correspond to which Ruby implementations? より引用: + RUBY_ENGINE Implementation &lt;undefined&gt; MRI &lt; 1.</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/ruby/page/1/index.html b/docs/tags/ruby/page/1/index.html new file mode 100644 index 0000000..62d3407 --- /dev/null +++ b/docs/tags/ruby/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/ruby/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/ruby/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/ruby/" /></head></html>
\ No newline at end of file diff --git a/docs/tags/ruby3/index.html b/docs/tags/ruby3/index.html new file mode 100644 index 0000000..4f30019 --- /dev/null +++ b/docs/tags/ruby3/index.html @@ -0,0 +1,113 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>ruby3 - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/ruby3/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>ruby3</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>[Ruby] then キーワードと case in</h2> + </header> + <section class="entry-content"> + <p>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/787a8cf888a304497223 + TL; DR case - in によるパターンマッチング構文でも、case - when と同じように then が使える (場合によっては使う必要がある)。 +then とは 使われることは稀だが、Ruby では then がキーワードになっている。次のように使う: +if cond then puts "Y" else puts "N" end このキーワードが現れうる場所はいくつかあり、if、unless、rescue、case 構文がそれに当たる。 上記のように、何か条件を書いた後 then を置き、式がそこで終了していることを示すマーカーとして機能する。 +# Example: if x then a end unless x then a end begin a rescue then b end case x when p then a end なぜ普段は書かなくてもよいのか 普通 Ruby のコードで then を書くことはない。なぜか。次のコードを実行してみるとわかる。...</p> + </section> + <footer class="entry-footer"> + <time>October 2, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/ruby-then-keyword-and-case-in/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/ruby3/index.xml b/docs/tags/ruby3/index.xml new file mode 100644 index 0000000..a4544dd --- /dev/null +++ b/docs/tags/ruby3/index.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>ruby3 on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/ruby3/</link> + <description>Recent content in ruby3 on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Sat, 02 Oct 2021 09:38:50 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/ruby3/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>[Ruby] then キーワードと case in</title> + <link>https://blog.nsfisis.dev/posts/ruby-then-keyword-and-case-in/</link> + <pubDate>Sat, 02 Oct 2021 09:38:50 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/ruby-then-keyword-and-case-in/</guid> + <description>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/787a8cf888a304497223 + TL; DR case - in によるパターンマッチング構文でも、case - when と同じように then が使える (場合によっては使う必要がある)。 +then とは 使われることは稀だが、Ruby では then がキーワードになっている。次のように使う: +if cond then puts &#34;Y&#34; else puts &#34;N&#34; end このキーワードが現れうる場所はいくつかあり、if、unless、rescue、case 構文がそれに当たる。 上記のように、何か条件を書いた後 then を置き、式がそこで終了していることを示すマーカーとして機能する。 +# Example: if x then a end unless x then a end begin a rescue then b end case x when p then a end なぜ普段は書かなくてもよいのか 普通 Ruby のコードで then を書くことはない。なぜか。次のコードを実行してみるとわかる。</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/ruby3/page/1/index.html b/docs/tags/ruby3/page/1/index.html new file mode 100644 index 0000000..5db85b3 --- /dev/null +++ b/docs/tags/ruby3/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/ruby3/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/ruby3/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/ruby3/" /></head></html>
\ No newline at end of file diff --git a/docs/tags/rust/index.html b/docs/tags/rust/index.html new file mode 100644 index 0000000..4062db4 --- /dev/null +++ b/docs/tags/rust/index.html @@ -0,0 +1,116 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>rust - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/rust/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>rust</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>Rust のプリミティブ型はどこからやって来るか</h2> + </header> + <section class="entry-content"> + <p>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/9a429432258bbcd6c565 + 前置き Rust において、プリミティブ型の名前は予約語でない。したがって、次のコードは合法である。 +#![allow(non_camel_case_types)] #![allow(dead_code)] struct bool; struct char; struct i8; struct i16; struct i32; struct i64; struct i128; struct isize; struct u8; struct u16; struct u32; struct u64; struct u128; struct usize; struct f32; struct f64; struct str; では、普段単に bool と書いたとき、この bool は一体どこから来ているのか。rustc のソースを追ってみた。 + 前提知識: 一般的なコンパイラの構造、用語。rustc そのものの知識は不要 (というよりも筆者自身がよく知らない) + 調査 調査に使用したソース (調査時点での最新 master) +https://github.com/rust-lang/rust/tree/511ed9f2356af365ad8affe046b3dd33f7ac3c98 +どのようにして調べるか。rustc の構造には詳しくないため、すぐに当たりをつけるのは難しい。 +大雑把な構造としては、compiler フォルダ以下に rustc_* という名前のクレートが数十個入っている。これがどうやら rustc コマンドの実装部のようだ。...</p> + </section> + <footer class="entry-footer"> + <time>October 2, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/rust-where-are-primitive-types-from/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/rust/index.xml b/docs/tags/rust/index.xml new file mode 100644 index 0000000..f186c90 --- /dev/null +++ b/docs/tags/rust/index.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>rust on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/rust/</link> + <description>Recent content in rust on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Sat, 02 Oct 2021 09:39:27 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/rust/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>Rust のプリミティブ型はどこからやって来るか</title> + <link>https://blog.nsfisis.dev/posts/rust-where-are-primitive-types-from/</link> + <pubDate>Sat, 02 Oct 2021 09:39:27 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/rust-where-are-primitive-types-from/</guid> + <description>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/9a429432258bbcd6c565 + 前置き Rust において、プリミティブ型の名前は予約語でない。したがって、次のコードは合法である。 +#![allow(non_camel_case_types)] #![allow(dead_code)] struct bool; struct char; struct i8; struct i16; struct i32; struct i64; struct i128; struct isize; struct u8; struct u16; struct u32; struct u64; struct u128; struct usize; struct f32; struct f64; struct str; では、普段単に bool と書いたとき、この bool は一体どこから来ているのか。rustc のソースを追ってみた。 + 前提知識: 一般的なコンパイラの構造、用語。rustc そのものの知識は不要 (というよりも筆者自身がよく知らない) + 調査 調査に使用したソース (調査時点での最新 master) +https://github.com/rust-lang/rust/tree/511ed9f2356af365ad8affe046b3dd33f7ac3c98 +どのようにして調べるか。rustc の構造には詳しくないため、すぐに当たりをつけるのは難しい。 +大雑把な構造としては、compiler フォルダ以下に rustc_* という名前のクレートが数十個入っている。これがどうやら rustc コマンドの実装部のようだ。</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/rust/page/1/index.html b/docs/tags/rust/page/1/index.html new file mode 100644 index 0000000..d041e49 --- /dev/null +++ b/docs/tags/rust/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/rust/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/rust/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/rust/" /></head></html>
\ No newline at end of file diff --git a/docs/tags/vim/index.html b/docs/tags/vim/index.html new file mode 100644 index 0000000..3a92104 --- /dev/null +++ b/docs/tags/vim/index.html @@ -0,0 +1,138 @@ +<!DOCTYPE html> +<html lang="ja-JP"> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + + <title>vim - REPL: Rest-Eat-Program Loop</title> + + <meta name="description" content=""> + <meta name="author" content=""> + + <link href="https://blog.nsfisis.dev/an-old-hope.min.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/style.css" rel="stylesheet"> + <link href="https://blog.nsfisis.dev/custom.css" rel="stylesheet"> + + <link rel="apple-touch-icon" href="https://blog.nsfisis.dev/apple-touch-icon.png"> + <link rel="icon" href="https://blog.nsfisis.dev/favicon.ico"> + <meta name="generator" content="Hugo 0.88.1" /> + + <link rel="alternate" type="application/rss+xml" href="https://blog.nsfisis.dev/tags/vim/index.xml" title="REPL: Rest-Eat-Program Loop" /> + + + <script> + function setTheme() { + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.body.classList.add('dark'); + return; + } + + const time = new Date(); + const prev = localStorage.getItem('date'); + const date = String(time.getMonth() + 1) + '.' + String(time.getDate()); + + const now = time.getTime(); + let sunrise; + let sunset; + + function setBodyClass() { + if (now > sunrise && now < sunset) return; + document.body.classList.add('dark'); + } + + if (date !== prev) { + fetch('https://api.ipgeolocation.io/astronomy?apiKey=5ed37d85103e4defa5df4c5298ed5215') + .then((res) => res.json()) + .then((data) => { + sunrise = data.sunrise.split(':').map(Number); + sunset = data.sunset.split(':').map(Number); + }) + .catch(() => { + sunrise = [7, 0]; + sunset = [19, 0]; + }) + .finally(() => { + sunrise = time.setHours(sunrise[0], sunrise[1], 0); + sunset = time.setHours(sunset[0], sunset[1], 0); + setBodyClass(); + localStorage.setItem('sunrise', sunrise); + localStorage.setItem('sunset', sunset); + }); + localStorage.setItem('date', date); + } else { + sunrise = Number(localStorage.getItem('sunrise')); + sunset = Number(localStorage.getItem('sunset')); + setBodyClass(); + } + } + </script> + </head> + <body class="list"> + <script> + setTheme(); + </script> + <header class="header"> + <nav class="nav"> + <p class="logo"><a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></p> + </nav> + </header> + <main class="main"> + +<header class="page-header"><h1>vim</h1></header> + +<article class="post-entry"> + <header class="entry-header"> + <h2>Vimで選択した行の順番を入れ替える</h2> + </header> + <section class="entry-content"> + <p>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/4fefb361d9a693803520 + バージョン情報 :version の一部 + VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Jan 26 2020 11:30:30) macOS version Included patches: 1-148 Huge version without GUI. + よく紹介されている手法 tac / tail tac や tail -r などの外部コマンドを ! を使って呼び出し、置き換える。 + :h v_! + tac コマンドや tail の -r オプションは環境によって利用できないことがあり、複数の環境を行き来する場合に採用しづらい +:g/^/m0 こちらは外部コマンドに頼らず、Vim の機能のみを使う。g は :global コマンドの、m は :move コマンドの略 +:global コマンドは :[range]global/{pattern}/[command] のように使い、[range] で指定された範囲の行のうち、{pattern} で指定された検索パターンにマッチする行に対して、順番に [command] で指定された Ex コマンドを呼び出す。...</p> + </section> + <footer class="entry-footer"> + <time>October 2, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/vim-swap-order-of-selected-lines/"></a> +</article> +<article class="post-entry"> + <header class="entry-header"> + <h2>[Vim] autocmd events の BufWrite/BufWritePre の違い</h2> + </header> + <section class="entry-content"> + <p>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/79ab4db8564032de0b25 + TL; DR 違いはない。ただのエイリアス。 +調査記録 Vim の autocmd events には似通った名前のものがいくつかある。大抵は :help に説明があるが、この記事のタイトルにある2つを含めた以下のイベントには、その違いについて説明がない。 + BufRead/BufReadPost BufWrite/BufWritePre BufAdd/BufCreate このうち、BufAdd/BufCreate に関しては、:help BufCreate に + The BufCreate event is for historic reasons. + とあり、おそらくは BufAdd のエイリアスであろうということがわかる。他の2組も同様ではないかと予想されるが、確認のため vim と neovim のソースコードを調査した。 + ソースコードへのリンク vim (調査時点での master branch) neovim (上に同じ) + vim のソースコード 以下は、autocmd events の名前と内部で使われている整数値とのマッピングを定義している箇所である。見ての通り、上でエイリアスではないかと述べた3組には、それぞれ同じ内部値が使われている。 +https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L85-L86 +{"BufAdd", EVENT_BUFADD}, {"BufCreate", EVENT_BUFADD}, https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L95-L97 +{"BufRead", EVENT_BUFREADPOST}, {"BufReadCmd", EVENT_BUFREADCMD}, {"BufReadPost", EVENT_BUFREADPOST}, https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L103-L105...</p> + </section> + <footer class="entry-footer"> + <time>October 2, 2021</time> + </footer> + <a class="entry-link" href="https://blog.nsfisis.dev/posts/vim-difference-between-autocmd-bufwrite-and-bufwritepre/"></a> +</article></main> +<footer class="footer"> + <span>© 2022 <a href="https://blog.nsfisis.dev">REPL: Rest-Eat-Program Loop</a></span> + <span>·</span> + <span>Powered by <a href="https://gohugo.io/" rel="noopener" target="_blank">Hugo️️</a>️</span> + <span>·</span> + <span>Theme️ <a href="https://github.com/nanxiaobei/hugo-paper" rel="noopener" target="_blank">Paper</a></span> +</footer> +<script src="https://blog.nsfisis.dev/highlight.min.js"></script> +<script> + hljs.initHighlightingOnLoad(); +</script> +</body> +</html> + diff --git a/docs/tags/vim/index.xml b/docs/tags/vim/index.xml new file mode 100644 index 0000000..db40fc3 --- /dev/null +++ b/docs/tags/vim/index.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>vim on REPL: Rest-Eat-Program Loop</title> + <link>https://blog.nsfisis.dev/tags/vim/</link> + <description>Recent content in vim on REPL: Rest-Eat-Program Loop</description> + <generator>Hugo -- gohugo.io</generator> + <language>ja-JP</language> + <lastBuildDate>Sat, 02 Oct 2021 09:37:25 +0900</lastBuildDate><atom:link href="https://blog.nsfisis.dev/tags/vim/index.xml" rel="self" type="application/rss+xml" /> + <item> + <title>Vimで選択した行の順番を入れ替える</title> + <link>https://blog.nsfisis.dev/posts/vim-swap-order-of-selected-lines/</link> + <pubDate>Sat, 02 Oct 2021 09:37:25 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/vim-swap-order-of-selected-lines/</guid> + <description>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/4fefb361d9a693803520 + バージョン情報 :version の一部 + VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Jan 26 2020 11:30:30) macOS version Included patches: 1-148 Huge version without GUI. + よく紹介されている手法 tac / tail tac や tail -r などの外部コマンドを ! を使って呼び出し、置き換える。 + :h v_! + tac コマンドや tail の -r オプションは環境によって利用できないことがあり、複数の環境を行き来する場合に採用しづらい +:g/^/m0 こちらは外部コマンドに頼らず、Vim の機能のみを使う。g は :global コマンドの、m は :move コマンドの略 +:global コマンドは :[range]global/{pattern}/[command] のように使い、[range] で指定された範囲の行のうち、{pattern} で指定された検索パターンにマッチする行に対して、順番に [command] で指定された Ex コマンドを呼び出す。</description> + </item> + + <item> + <title>[Vim] autocmd events の BufWrite/BufWritePre の違い</title> + <link>https://blog.nsfisis.dev/posts/vim-difference-between-autocmd-bufwrite-and-bufwritepre/</link> + <pubDate>Sat, 02 Oct 2021 09:37:12 +0900</pubDate> + + <guid>https://blog.nsfisis.dev/posts/vim-difference-between-autocmd-bufwrite-and-bufwritepre/</guid> + <description>この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/79ab4db8564032de0b25 + TL; DR 違いはない。ただのエイリアス。 +調査記録 Vim の autocmd events には似通った名前のものがいくつかある。大抵は :help に説明があるが、この記事のタイトルにある2つを含めた以下のイベントには、その違いについて説明がない。 + BufRead/BufReadPost BufWrite/BufWritePre BufAdd/BufCreate このうち、BufAdd/BufCreate に関しては、:help BufCreate に + The BufCreate event is for historic reasons. + とあり、おそらくは BufAdd のエイリアスであろうということがわかる。他の2組も同様ではないかと予想されるが、確認のため vim と neovim のソースコードを調査した。 + ソースコードへのリンク vim (調査時点での master branch) neovim (上に同じ) + vim のソースコード 以下は、autocmd events の名前と内部で使われている整数値とのマッピングを定義している箇所である。見ての通り、上でエイリアスではないかと述べた3組には、それぞれ同じ内部値が使われている。 +https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L85-L86 +{&#34;BufAdd&#34;, EVENT_BUFADD}, {&#34;BufCreate&#34;, EVENT_BUFADD}, https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L95-L97 +{&#34;BufRead&#34;, EVENT_BUFREADPOST}, {&#34;BufReadCmd&#34;, EVENT_BUFREADCMD}, {&#34;BufReadPost&#34;, EVENT_BUFREADPOST}, https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L103-L105</description> + </item> + + </channel> +</rss> diff --git a/docs/tags/vim/page/1/index.html b/docs/tags/vim/page/1/index.html new file mode 100644 index 0000000..3ac6e63 --- /dev/null +++ b/docs/tags/vim/page/1/index.html @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>https://blog.nsfisis.dev/tags/vim/</title><link rel="canonical" href="https://blog.nsfisis.dev/tags/vim/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://blog.nsfisis.dev/tags/vim/" /></head></html>
\ No newline at end of file |
