<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>azimicat techblog</title><link>https://tech-b.azimicat.dev/</link><description>Recent content on azimicat techblog</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Sat, 23 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tech-b.azimicat.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>お試し投稿</title><link>https://tech-b.azimicat.dev/docs/2026-05-23-%E3%81%8A%E8%A9%A6%E3%81%97%E6%8A%95%E7%A8%BF/</link><pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/2026-05-23-%E3%81%8A%E8%A9%A6%E3%81%97%E6%8A%95%E7%A8%BF/</guid><description>&lt;hr>
&lt;h2 id="date-2026-05-23">title: &amp;ldquo;お試し投稿&amp;rdquo;
blog: tech
date: 2026-05-23&lt;/h2>
&lt;p>静的サイトからメールを飛ばしてブログに投稿するテスト中です。&lt;/p>
&lt;p>Email sent via EmailJS.com [https://www.emailjs.com?src=email-footer]&lt;/p></description></item><item><title>テスト_2</title><link>https://tech-b.azimicat.dev/docs/2026-05-23-%E3%83%86%E3%82%B9%E3%83%88_2/</link><pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/2026-05-23-%E3%83%86%E3%82%B9%E3%83%88_2/</guid><description>&lt;p>静的サイトからメールを飛ばしてブログに投稿するテスト中です。&lt;/p></description></item><item><title>push.autoSetupRemote を有効化する（Git 2.37以降）</title><link>https://tech-b.azimicat.dev/docs/tech/2025-02-19-push.autosetupremote_%E3%82%92%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%99%E3%82%8Bgit_2.37%E4%BB%A5%E9%99%8D/</link><pubDate>Wed, 19 Feb 2025 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2025-02-19-push.autosetupremote_%E3%82%92%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%99%E3%82%8Bgit_2.37%E4%BB%A5%E9%99%8D/</guid><description>&lt;h2 id="目的">目的&lt;/h2>
&lt;p>gitで新規branchを作ってpushしようとすると &lt;code>git push --set-upstream origin new-branch-name&lt;/code> しろと言われる。
これをしなくても新規で作ったbranchをデフォルトpush先と指定したかった。&lt;/p>
&lt;h2 id="対応">対応&lt;/h2>
&lt;p>新しいブランチを push したときに自動的に &lt;code>--set-upstream&lt;/code> を設定するように global setting を指定する。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>git config --global push.autoSetupRemote true
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="設定実行sample">設定&amp;amp;実行sample&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>&amp;gt; git config --global push.autoSetupRemote true
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; git push
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>〜略〜
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>remote:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>To github.com:username/RepositoryName.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> * [new branch] new-branch-name -&amp;gt; new-branch-name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>branch &amp;#39;new-branch-name&amp;#39; set up to track &amp;#39;origin/new-branch-name&amp;#39;.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>この設定で、新しいブランチを作成後に &lt;code>git push&lt;/code> するだけで &lt;code>--set-upstream&lt;/code> を省略できるようになる。&lt;/p></description></item><item><title>pomera DM250 メール設定について</title><link>https://tech-b.azimicat.dev/docs/tech/2025-02-18-pomera_dm250_%E3%83%A1%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2025-02-18-pomera_dm250_%E3%83%A1%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</guid><description>&lt;h2 id="概要">概要&lt;/h2>
&lt;p>DM250の機能で、メールアップロードが存在する。
これのgmail設定を行う時、パスワードを求められるがこれはgoogleアカウントのパスワードではなかったという話。&lt;/p>
&lt;h2 id="詳細">詳細&lt;/h2>
&lt;p>&lt;a href="https://www.kingjim.co.jp/resource-files/download/manual/pomera/pomera_dm250.pdf">取扱説明書P82&lt;/a>（このpdfだと85枚目あたり）にメールアップロードの説明がある。&lt;br>
実は普通に書いてあるのだが見逃していたのでここにメモ。&lt;br>&lt;/p>
&lt;blockquote>
&lt;ol>
&lt;li>Gmailアカウントを設定する&lt;br>
Gmail を使用する場合、次の設定1または設定2のどちらかを設定します。&lt;br>
設定1：&lt;br>
　安全性の低いアプリの許可を有効にする&lt;br>
設定2：&lt;br>
　2段階認証を使用する&lt;br>
　2段階認証を使用している場合、アプリパスワードを生成してください。&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;br>
&lt;p>ここに書いてあるんですよ本当は。&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>2段階認証を使用している場合、アプリパスワードを生成してください。&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;br>
&lt;p>そういうわけで設定します。&lt;br>&lt;/p>
&lt;h3 id="1-アプリパスワードを設定する">1. アプリパスワードを設定する&lt;/h3>
&lt;ul>
&lt;li>アプリパスワード設定ページへのリンクはこちら：&lt;a href="https://myaccount.google.com/apppasswords">googleアカウント&amp;gt;アプリ パスワード&lt;/a>&lt;/li>
&lt;/ul>
&lt;ol>
&lt;li>
&lt;p>ページに飛ぶと、このようにアプリ名を入れるformが表示されます。
&lt;img src="https://tech-b.azimicat.dev/post/images/2025-02-18-pomera_DM250_%E3%83%A1%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6_1739857660.png" alt="アプリパスワード画面">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>お好みの名前を入れる（私は&amp;quot;pomera dm250&amp;quot;とした）とパスワードが生成、表示されます。
&lt;img src="https://tech-b.azimicat.dev/post/images/2025-02-18-pomera_DM250_%E3%83%A1%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6_1739857749.png" alt="パスワードが発行された画面">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>メールも飛びます。
&lt;img src="https://tech-b.azimicat.dev/post/images/2025-02-18-pomera_DM250_%E3%83%A1%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6_1739859882.png" alt="パスワードつくられたよお知らせメール">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>これをポメラの&amp;quot;メニュー &amp;gt; ツール &amp;gt; アップロード &amp;gt; アカウント設定 &amp;gt; Gmail &amp;gt; パスワード&amp;quot;へ入力する。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>これで完了です。&lt;/p></description></item><item><title>GitHub CLIでデフォルトのリモートリポジトリを設定する</title><link>https://tech-b.azimicat.dev/docs/tech/2025-01-02-github_cli_%E3%81%A7%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/</link><pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2025-01-02-github_cli_%E3%81%A7%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/</guid><description>&lt;p>&lt;strong>問題と推測される原因&lt;/strong>&lt;/p>
&lt;p>Forkしたリポジトリで&lt;code>gh pr create&lt;/code>すると、本来以下のようにエラーとなる。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&amp;gt; gh pr create
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>X No default remote repository has been set &lt;span style="color:#c2ffdf">for&lt;/span> this directory.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>今回詰まったのは、rebase先をいつの間にかoriginのrepo（fork元のリポジトリ）へと設定してしまっていたからっぽい。
この場合、gh pr createはfork元にプルリクエストを作成しようとする挙動をするらしい。&lt;/p>
&lt;p>Gitでは、ブランチごとにリモートとrebase先を設定することができ、以下のコマンドで確認できた。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>git config --list | grep branch
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>例:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>branch.master.remote&lt;span style="color:#ffb8d1">=&lt;/span>origin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>branch.master.merge&lt;span style="color:#ffb8d1">=&lt;/span>refs/heads/master
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>が、しかし。&lt;/p>
&lt;p>&lt;code>branch.&amp;lt;branch_name&amp;gt;.remote&lt;/code>や&lt;code>branch.&amp;lt;branch_name&amp;gt;.merge&lt;/code>が&lt;code>origin&lt;/code>となっている場合でも、rebase先をFork元のmasterブランチに設定していると、&lt;code>gh pr create&lt;/code>はFork元のmasterに向けて動作してしまう。&lt;/p>
&lt;p>たとえば、以下のようなことをしてしまっているとダメ。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>git remote add origin git@github.com:ForkOwner/repository.git
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>この設定では、&lt;code>git rebase origin/master&lt;/code>がFork元のリポジトリを参照することになる。&lt;/p>
&lt;p>&lt;strong>リモート設定の確認・修正&lt;/strong>&lt;/p>
&lt;p>以下のコマンドを使用して、デフォルトリポジトリを設定し直す。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>gh repo set-default
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>実行すると、&lt;code>? Which repository should be the default? [Use arrows to move, type to filter]&lt;/code>と聞かれるので、自分がオーナーになっている方のリポジトリを選ぶよとい。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&amp;gt; gh repo set-default
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>This command sets the default remote repository to use when querying the
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GitHub API &lt;span style="color:#c2ffdf">for&lt;/span> the locally cloned repository.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gh uses the default repository &lt;span style="color:#c2ffdf">for&lt;/span> things like:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - viewing and creating pull requests
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - viewing and creating issues
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - viewing and creating releases
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - working with GitHub Actions
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - adding repository and environment secrets
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>? Which repository should be the default? &lt;span style="color:#ffb8d1">[&lt;/span>Use arrows to move, type to filter&lt;span style="color:#ffb8d1">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; ForkOwner/branch-name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> YourName/branch-name
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>自分のrepoの方を選ぶと&lt;/p></description></item><item><title>npmの--save-dev オプションについてのメモ</title><link>https://tech-b.azimicat.dev/docs/tech/2024-06-03-npm%E3%81%AE--save-dev_%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E3%83%A1%E3%83%A2/</link><pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2024-06-03-npm%E3%81%AE--save-dev_%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E3%83%A1%E3%83%A2/</guid><description>&lt;p>&amp;ndash;save-dev オプションは、パッケージが package.json のどのセクションに保存されるかに関係するオプションです。&lt;/p>
&lt;h2 id="--save-dev-オプションをつける場合">&amp;ndash;save-dev オプションをつける場合&lt;/h2>
&lt;p>インストールするパッケージは package.json の devDependencies セクションに保存されます。&lt;br>
devDependencies に含まれるパッケージは、開発やテストの段階でのみ必要なものであり、本番環境では使用しません。（例：テストフレームワーク、ビルドツール、開発サーバーなど）&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>npm install hogehoge --save-dev
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;devDependencies&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;hogehoge&amp;#34;&lt;/span>: &lt;span style="color:#1bc5e0">&amp;#34;^1.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="--save-dev-オプションをつけない場合">&amp;ndash;save-dev オプションをつけない場合&lt;/h2>
&lt;p>パッケージは package.json の dependencies セクションに保存されます。&lt;br>
dependencies に含まれるパッケージは本番環境でも必要なもので、アプリケーションの動作に直接関与します。（例：アプリケーションの主要な機能に必要なライブラリやフレームワークなど）&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>npm install hogehoge
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;dependencies&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;hogehoge&amp;#34;&lt;/span>: &lt;span style="color:#1bc5e0">&amp;#34;^1.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="まとめ">まとめ&lt;/h2>
&lt;ul>
&lt;li>dependencies:
&lt;ul>
&lt;li>本番環境で必要な依存関係。&lt;/li>
&lt;li>アプリケーションの主要な機能に関与するパッケージ。&lt;/li>
&lt;li>npm install &amp;ndash;production 実行時にインストールされる。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>devDependencies:
&lt;ul>
&lt;li>開発環境やテスト環境でのみ必要な依存関係。&lt;/li>
&lt;li>テスト、ビルド、開発支援ツールなどのパッケージ。&lt;/li>
&lt;li>npm install &amp;ndash;production 実行時にはインストールされない。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>開発やテストのみに必要な場合は &amp;ndash;save-dev を使う。&lt;br>
本番環境でも必要な場合は &amp;ndash;save-dev を使わずにインストールする。&lt;/strong>&lt;/p></description></item><item><title>テクサポ改善録_2023年12月</title><link>https://tech-b.azimicat.dev/docs/tech/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2/</link><pubDate>Sun, 24 Dec 2023 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2/</guid><description>&lt;p>これは&lt;a href="https://qiita.com/advent-calendar/2023/lapras">LAPRAS Advent Calendar 2023&lt;/a>の記事です。&lt;/p>
&lt;h2 id="あらまし">あらまし&lt;/h2>
&lt;p>弊社におけるテクニカルサポート（以下「テクサポ」といいます）は、ソフトウェアエンジニア（SWE）が週単位で持ち回りながら担当しています。この際、多くの方から「手が回らない」という声が挙がっており、人手不足なのか、仕組み自体に問題があるのかの判断が難しい状況にありました。私はこの問題に対し、約1年間にわたって計測と改善の取り組みを続けてきました。&lt;/p>
&lt;p>この記事では、約1年間私がどういう意図で何をしたのかを簡単にまとめました。&lt;/p>
&lt;h2 id="当時の状況">当時の状況&lt;/h2>
&lt;p>計測及び改善を行う前の状況においては、いくつかの課題が存在していました。&lt;/p>
&lt;ul>
&lt;li>対応の漏れが目立っていました。&lt;/li>
&lt;li>担当者の交代により、数週間にわたって対応が続くことがありました。&lt;/li>
&lt;li>担当者にどの程度の負担がかかっているのかが明確ではありませんでした。&lt;/li>
&lt;li>長年の経験を持つ技術者への負担が顕著に大きかったこと。&lt;/li>
&lt;li>担当者の中には、「テクサポ担当週は望ましくない」という認識を持っている方もいました。&lt;/li>
&lt;/ul>
&lt;h2 id="計測目的の変化">計測目的の変化&lt;/h2>
&lt;p>当初の目的は「人員が不足しているか否かを判断するための十分なデータを収集すること。」でした。&lt;/p>
&lt;p>現在はこの目的が達成されたことにより目的を変更し、計測と改善の活動を継続しています。&lt;/p>
&lt;p>現在の主な目的&lt;/p>
&lt;ul>
&lt;li>テクニカルサポートの業務負担を軽減する。&lt;/li>
&lt;li>将来的にテクニカルサポートがほぼ不要となるような基盤を築くこと。&lt;/li>
&lt;/ul>
&lt;h2 id="対応すべきものを見逃さない零さない">対応すべきものを“見逃さない”、“零さない“&lt;/h2>
&lt;p>これまで、Slackのピン留め機能を用いて対応中の要件を管理していましたが、この方法は一覧性に欠け、対応漏れや引き継ぎ漏れの原因となっていることが明らかでした。
この時すでに各対応に対してはGitHubのイシューを作成し、それに基づいて対応している状況だったため、この問題を解決するために、ピン留めを行わないように方針を変更しつつGitHub Projectを要件のマスターとして使用してその管理を行うように周知しました。&lt;/p>
&lt;h2 id="計測support-issueのラベルから対応件数と時間を調べる">計測：support-issueのラベルから対応件数と時間を調べる&lt;/h2>
&lt;p>Data AggregatorにGitHubのissueを取り込むことで、「対応開始日時」、「対応終了日時」、「対応者」を計測できるようになりました。また、ラベルを付けることで、どのような対応にどれくらいの時間がかかっているかを計測できるようにしました。ラベルは、「プロダクト」、「発生元」、「対応種別」の3つのカテゴリーで分類するルールを定めています。
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2_1703387807464.png" alt="picture 1">&lt;/p>
&lt;h2 id="過去のsupport-issueを整理する">過去のsupport-issueを整理する&lt;/h2>
&lt;p>計測開始当初、過去に対応したissueが大量に残っており今後の計測の妨げとなっていました。そのため以下の対応を行いました。&lt;/p>
&lt;ul>
&lt;li>対応が完了しているものをcloseしました。&lt;/li>
&lt;li>テクニカルサポートが原因のバグ修正イシューについて再検討を行い、「対応済み」、「対応不要」、「未対応」の3つに分類しました。ここで「未対応」以外はクローズしました。
&lt;ul>
&lt;li>対応済み：過去に対応を行って解決しているケース。&lt;/li>
&lt;li>対応不要：対応は行っていないが、改修等により対応が不要と判断されたケース。&lt;/li>
&lt;li>未対応：対応が行われておらず、バグが改善されていないケース。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>「未対応」のイシューについて、対応が必要かどうかを検討しました。
&lt;ul>
&lt;li>現在のプロダクトのフェーズと照らし合わせ、「根治が必要かどうか」という観点から必要なものだけを残し、再調査を行いました。&lt;/li>
&lt;li>根治が必要ないと判断された場合は、エラーハンドリングの追加など新たなイシューを作成しました。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="可視化dashboardを用いて計測した件数や時間を可視化">可視化：DashBoardを用いて計測した件数や時間を可視化&lt;/h2>
&lt;p>対応時間が明確にグラフに表されることで、その週にどのような対応が多かったかが分かるようにしました。&lt;br>
例えば、問い合わせ件数が3件程度であるにも関わらず、issue1件あたりのcloseまでの平均時間が長い場合、調査に時間がかかったか、問い合わせの返答待ちであったかなどを推測できます（これは週次の共有時に報告されています）。&lt;/p>
&lt;p>また、平均対応時間をグラフ化することで対応時間の短縮へのモチベーションが高まり、改善が実現した際には、その喜びも大きくなります。全体への共有の際文字通り目に見えて分かりやすくなるのも良い点でした。&lt;/p>
&lt;p>グラフは週平均および月平均で計測されており、土日の時間はカウントされていません。
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2_1703387991460.png" alt="picture 3">&lt;br>
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2_1703390081245.png" alt="picture 15">&lt;/p>
&lt;h2 id="持ち回り担当を通知">持ち回り担当を通知&lt;/h2>
&lt;p>これまで、担当者はスプレッドシートに手作業で入力するという運用を行っていましたが、以下のような問題が生じていました。&lt;/p>
&lt;ul>
&lt;li>次週の担当者が誰であるかが確認しにくく、忘れがちでした。&lt;/li>
&lt;li>気付くと翌日からの担当リストが空となっており、誰も続けて記入していない状況がありました。&lt;/li>
&lt;/ul>
&lt;p>翌週の担当者を事前に通知することにより、メインプロジェクトが忙しい時期でも、他の人にテクニカルサポートの担当期間の交代を依頼しやすくなりました。持ち回り担当はスプレッドシートで自動採番するように設定し、必要に応じて手動での入れ替えも可能となっています。
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2_1703388247034.png" alt="picture 5">&lt;br>
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2_1703387944823.png" alt="picture 2">&lt;/p>
&lt;h2 id="アンケートの実施">アンケートの実施&lt;/h2>
&lt;p>いつもテクサポを利用している方向けに、満足度アンケートを行いました。
アンケート項目は概ね以下の通りシンプルに設定しました。&lt;/p>
&lt;ul>
&lt;li>満足していますか？（5段階）&lt;/li>
&lt;li>不満があると回答した方はその点について（自由記入）&lt;/li>
&lt;li>ご意見・ご感想（自由記入）
です。&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://tech-b.azimicat.dev/post/images/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2_1703389915945.png" alt="picture 12">&lt;/p>
&lt;p>このアンケートは、細かいニーズを確認することよりも、「現在のテクニカルサポートの運営が利用者の方々にどのように受け取られているか」という点を確認するために行いました。この目的に鑑みて、上記の項目で十分と判断しました。&lt;/p>
&lt;p>これまでに2回の実施を行い、結果は以下の通りです。&lt;/p>
&lt;p>&lt;img src="https://tech-b.azimicat.dev/post/images/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2_1703389926556.png" alt="picture 13">&lt;br>
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2_1703389963798.png" alt="picture 14">&lt;/p>
&lt;h2 id="定型の対応に対する手順書の改善">定型の対応に対する手順書の改善&lt;/h2>
&lt;p>これまではGitHubにMarkdown形式で手順書を書いていましたが、検索性が悪いと感じていたため、手順書の公開方法を見直すことにしました。&lt;/p>
&lt;p>新しい方法では、Hugoという静的サイトジェネレーターを使って、ブログのように閲覧できるようにしました。
さらに、検索機能を良くするためにAlgoliaを導入し、日本語検索もできるようになりました。
加えて、AWSを活用して社内からだけアクセスできるようにIP制限を設定しました（この部分はSREの方に大変お世話になりました🐧）。
Algoliaによって、どんなワードが検索されたか、どの記事に多くアクセスされたかなどが分かるため、担当者がどんな時に手順書を見ているかを知る手がかりになっています。
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2_1703389239171.png" alt="picture 7">&lt;br>
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-12-24-2023%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC_%E3%83%86%E3%82%AF%E3%82%B5%E3%83%9D%E6%94%B9%E5%96%84%E9%8C%B2_1703389483567.png" alt="picture 8">&lt;/p></description></item><item><title>SQLServerで文字列内全ての空白（半角・全角）を除去する</title><link>https://tech-b.azimicat.dev/docs/tech/2023-11-28-sqlserver%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E5%86%85%E5%85%A8%E3%81%A6%E3%81%AE%E7%A9%BA%E7%99%BD%E5%8D%8A%E8%A7%92%E5%85%A8%E8%A7%92%E3%82%92%E9%99%A4%E5%8E%BB%E3%81%99%E3%82%8B/</link><pubDate>Tue, 28 Nov 2023 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2023-11-28-sqlserver%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E5%86%85%E5%85%A8%E3%81%A6%E3%81%AE%E7%A9%BA%E7%99%BD%E5%8D%8A%E8%A7%92%E5%85%A8%E8%A7%92%E3%82%92%E9%99%A4%E5%8E%BB%E3%81%99%E3%82%8B/</guid><description>&lt;p>このpostは、『&lt;a href="https://tech-b.azimicat.dev/docs/old/2018-04-02-sqlserver%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E5%86%85%E5%85%A8%E3%81%A6%E3%81%AE%E7%A9%BA%E7%99%BD%E5%8D%8A%E8%A7%92%E5%85%A8%E8%A7%92%E3%82%92%E9%99%A4%E5%8E%BB%E3%81%99%E3%82%8B/">2018-04-02-SQLServerで文字列内全ての空白（半角・全角）を除去する&lt;/a>』の焼き直しです。
あまりにも昔の同内容の記事にアクセスが続いていたので、放置していたところを描き増しました。&lt;/p>
&lt;hr>
&lt;h2 id="左右のスペースを除去する">左右のスペースを除去する&lt;/h2>
&lt;p>左右のスペースを除去する場合、&lt;code>LTRIM()&lt;/code>と&lt;code>RTRIM()&lt;/code>を組み合わせることで左右からスペースを除去することができる。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">SELECT&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>LTRIM(RTRIM(&lt;span style="color:#1bc5e0">&amp;#39;　 いろ はに　ほへと　 &amp;#39;&lt;/span>))&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">AS&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">result&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#b0bec5">--- | result |
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">--- | ------------ |
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">--- | いろ はに　ほへと |
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="中間のスペースを除去する">中間のスペースを除去する&lt;/h2>
&lt;p>指定された整数のUnicode文字を返す、&lt;code>NCHAR&lt;/code>関数を使ってREPLACEする。&lt;/p>
&lt;ul>
&lt;li>&lt;code>12288&lt;/code>: 全角スペース&lt;/li>
&lt;li>&lt;code>0x0020&lt;/code>: 半角スペース&lt;/li>
&lt;/ul>
&lt;p>以下の例では、まず&lt;code>REPLACE('　 いろ はに　ほへと　', ' ', '')&lt;/code>で半角スペースを除去し、
その結果から全角スペースを除去する。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">SELECT&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">REPLACE&lt;/span>(&lt;span style="color:#c2ffdf">REPLACE&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;　 いろ はに　ほへと　&amp;#39;&lt;/span>,&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39; &amp;#39;&lt;/span>,&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;&amp;#39;&lt;/span>),&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NCHAR&lt;/span>(&lt;span style="color:#c5a3ff">12288&lt;/span>),&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;&amp;#39;&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">AS&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">result&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#b0bec5">--- | result |
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">--- | ---------- |
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">--- | いろはにほへと |
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>通常のSQL文では、半角スペースを直接指定することが一般的だと思いますが、
半角スペースであることを明示したい場合に&lt;code>REPLACE(REPLACE('　 いろ はに　ほへと　', NCHAR(0x0020), ''), NCHAR(12288), '')&lt;/code>のようなやり方は有効かと思います。&lt;/p></description></item><item><title>Subversion（SVN）で古いリビジョンに戻してコミットする</title><link>https://tech-b.azimicat.dev/docs/tech/2023-11-28-subversionsvn%E3%81%A7%E5%8F%A4%E3%81%84%E3%83%AA%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AB%E6%88%BB%E3%81%97%E3%81%A6%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%99%E3%82%8B/</link><pubDate>Tue, 28 Nov 2023 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2023-11-28-subversionsvn%E3%81%A7%E5%8F%A4%E3%81%84%E3%83%AA%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AB%E6%88%BB%E3%81%97%E3%81%A6%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%99%E3%82%8B/</guid><description>&lt;p>あまりにも昔の同内容の記事にアクセスが続いていたので、コマンドラインからの実行方法をまとめました。
試していないので本当にこれでちゃんと動くのか怪しげではあるのですが、gitとやることは変わらないのでおそらく大丈夫かと思います。&lt;/p>
&lt;p>&lt;strong>※この作業は新たにブランチを作成してから行った方が良いぞ！&lt;/strong>&lt;/p>
&lt;h2 id="1-リビジョンの確認">1. リビジョンの確認&lt;/h2>
&lt;p>戻したいリビジョンを特定する&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>svn log
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="2-最新のリビジョンに更新する">2. 最新のリビジョンに更新する&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>svn update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="3-リバートする">3. リバートする&lt;/h2>
&lt;p>&lt;code>svn merge&lt;/code>で特定の古いリビジョンに戻る。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>svn merge -r HEAD:&lt;span style="color:#ffb8d1">{{&lt;/span>戻りたいリビジョン番号&lt;span style="color:#ffb8d1">}}&lt;/span> &lt;span style="color:#ffb8d1">{{&lt;/span>リポジトリのURL&lt;span style="color:#ffb8d1">}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>ちょっと解説すると、&lt;br>
&lt;code>svn merge -r N:M URL_TO_REPOSITORY&lt;/code> としたとき、&lt;br>
&lt;code>-r&lt;/code>：リビジョン（Revision）の指定オプション
&lt;code>N&lt;/code>：開始リビジョン番号
&lt;code>M&lt;/code>：終了リビジョン番号
&lt;code>URL_TO_REPOSITORY&lt;/code>：リポジトリのURL&lt;br>
を表します。&lt;/p>
&lt;p>このコマンドは、&lt;code>N&lt;/code> と &lt;code>M&lt;/code> の間の変更差分を現在の作業コピーにマージします。&lt;br>
リビジョン番号を最近から過去に（例えば -r 100:99）することで、特定の&amp;quot;最近のリビジョン&amp;quot;から&amp;quot;過去のリビジョン&amp;quot;へ戻すことができます。&lt;/p>
&lt;h2 id="4-変更を確認する">4. 変更を確認する&lt;/h2>
&lt;p>マージが正しく行われたかを確認するため、変更を確認する。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>svn status
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>svn diff
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="5-コミットする">5. コミットする&lt;/h2>
&lt;p>コンフリクトがないことを確認してから、以下のコマンドで任意のコメントを入れて変更をコミットする。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>svn commit -m &lt;span style="color:#1bc5e0">&amp;#34;Reverted to revision xxxxx.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>flutterに入門する(2)</title><link>https://tech-b.azimicat.dev/docs/tech/2023-06-13-flutter%E3%81%AB%E5%85%A5%E9%96%80%E3%81%99%E3%82%8B2/</link><pubDate>Tue, 13 Jun 2023 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2023-06-13-flutter%E3%81%AB%E5%85%A5%E9%96%80%E3%81%99%E3%82%8B2/</guid><description>&lt;p>&lt;strong>path確認&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fish" data-lang="fish">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span> which flutter
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/Users/azimicat/Library/flutter/bin/flutter
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>&lt;a href="https://docs.flutter.dev/get-started/install/macos#platform-setup">Platform setup&lt;/a>&lt;/strong>&lt;/p>
&lt;p>macOSは、iOS、Android、macOS本体、Web向けのFlutterアプリの開発をサポートしている。
私は、「&lt;a href="https://docs.flutter.dev/get-started/install/macos#android-setup">Androidプラットフォームのセットアップ&lt;/a>を完了し、最初のFlutterアプリを構築して実行できるようにするところまで」を目標とする。&lt;/p>
&lt;p>Android Studioの設定は&lt;a href="https://tech-b.azimicat.dev/docs/tech/2023-06-12-flutter%E3%81%AB%E5%85%A5%E9%96%80%E3%81%99%E3%82%8B1/">前回&lt;/a>で完了済み&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fish" data-lang="fish">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span> flutter doctor
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5"># 以下二つを確認
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#ffb8d1">[&lt;/span>✓&lt;span style="color:#ffb8d1">]&lt;/span> Android toolchain &lt;span style="color:#ceb1ff">- develop&lt;/span> for Android devices &lt;span style="color:#ffb8d1">(&lt;/span>&lt;span style="color:#ceb1ff">Android&lt;/span> SDK version &lt;span style="color:#c5a3ff">34&lt;/span>.&lt;span style="color:#c5a3ff">0&lt;/span>.&lt;span style="color:#c5a3ff">0&lt;/span>&lt;span style="color:#ffb8d1">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">[&lt;/span>✓&lt;span style="color:#ffb8d1">]&lt;/span> Android Studio &lt;span style="color:#ffb8d1">(&lt;/span>&lt;span style="color:#ceb1ff">version&lt;/span> &lt;span style="color:#c5a3ff">2022&lt;/span>.&lt;span style="color:#c5a3ff">2&lt;/span>&lt;span style="color:#ffb8d1">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>デバイスの開発者向けオプションを設定する&lt;/strong>&lt;/p>
&lt;p>&amp;ldquo;ビルド番号&amp;quot;オプションを7回タップする……がもうやってた&lt;br>
&lt;img src="https://gyazo.com/bcc17b85a029e28d26c3ca5e94075eeb.png" alt="android">&lt;/p>
&lt;p>USBデバッグを有効にする&lt;br>
&lt;img src="https://i.gyazo.com/20ccaea149ae1e3f966128ad36acacd5.png" alt="usb debug">&lt;br>
&lt;img src="https://gyazo.com/f3aac469646f5e4c0c1671318b04ec14.jpg" alt="usb debug">&lt;/p>
&lt;p>&amp;ldquo;Device Managerアイコン &amp;gt; Virtualタブ &amp;gt; Create Device&amp;quot;で、バーチャルデバイスを追加&lt;br>
&lt;img src="https://gyazo.com/8936a7d9956270e170afaf04b2069359.png" alt="img">&lt;br>
&lt;img src="https://gyazo.com/a71449adef9147053b6080848da9d99d.png" alt="img">&lt;br>
system imageはデフォルト値で進める。&lt;/p>
&lt;p>バーチャルデバイスが追加された。&lt;br>
&lt;img src="https://gyazo.com/bfce7139322beb1ed90cbb5fb93672aa.png" alt="img">&lt;/p>
&lt;p>各種必要なプラグインを入れる。&amp;ldquo;Preferences &amp;gt; Plugins&amp;rdquo;&lt;br>
Flutter, Dartが最低限入っていれば良い。反映にはAndroid Studioの再起動が必要。
&lt;img src="https://gyazo.com/b7977f0590b8388b2fc4116d62d4af53.png" alt="img">&lt;/p>
&lt;p>あとは&lt;a href="https://docs.flutter.dev/get-started/test-drive?tab=androidstudio">このページ&lt;/a>に従って起動を試した。&lt;br>
とりあえず、バーチャルデバイス。&lt;br>
&lt;img src="https://gyazo.com/816908eeebef3f43b643cc56678391dc.png" alt="img">&lt;/p>
&lt;p>これで一旦、開発の環境は整った。&lt;/p></description></item><item><title>flutterに入門する(1)</title><link>https://tech-b.azimicat.dev/docs/tech/2023-06-12-flutter%E3%81%AB%E5%85%A5%E9%96%80%E3%81%99%E3%82%8B1/</link><pubDate>Mon, 12 Jun 2023 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2023-06-12-flutter%E3%81%AB%E5%85%A5%E9%96%80%E3%81%99%E3%82%8B1/</guid><description>&lt;h2 id="環境構築">環境構築&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>&lt;a href="https://docs.flutter.dev/get-started/install/macos">flutter公式サイト&lt;/a>からmacOS用のSDKをDLする&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://docs.flutter.dev/get-started/install/macos#get-sdk">手順&lt;/a>に従って、解凍・PATHを通す&lt;/p>
&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>解凍先は &lt;code>~/Library/&lt;/code> を指定した&lt;/li>
&lt;li>fishを利用しているため、PATHは &lt;code>~/.config/fish/fish.config&lt;/code> へ下記パスを追加した&lt;br>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>set -gx PATH $HOME/Library/flutter/bin $PATH
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>
&lt;p>&lt;a href="https://docs.flutter.dev/get-started/install/macos#run-flutter-doctor">手順&lt;/a>に従って、&lt;code>$ flutter doctor&lt;/code> を実行する&lt;/p>
&lt;/li>
&lt;li>
&lt;p>不足を指摘されている、Android Studioを&lt;a href="https://developer.android.com/studio">公式サイト&lt;/a>からDLする&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Android Studioを起動し、指示に従ってセットアップする（カスタマイズなどは行わない）&lt;/p>
&lt;/li>
&lt;li>
&lt;p>サンプルのflutterプロジェクトを作り、プロジェクトから &lt;code>tools &amp;gt; sdk manager&lt;/code> を選択&lt;br>
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-06-12-flutter%E5%85%A5%E9%96%80(1)_1686581678.png" alt="tools&amp;gt;sdk_manager">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>SDK Tools タブ&lt;/code> へ移動し、&lt;code>Android SDK Command-line Tool&lt;/code> をチェックしてApplyする&lt;br>
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-06-12-flutter%E5%85%A5%E9%96%80(1)_1686581834.png" alt="Android SDK Command-line Tool">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://developer.android.com/studio/command-line?hl=ja#environment-variables">手順&lt;/a>に従って、PATHを通す&lt;br>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fish" data-lang="fish">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">set&lt;/span> &lt;span style="color:#ceb1ff">-gx&lt;/span> ANDROID_HOME $HOME/Library/Android
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">set&lt;/span> &lt;span style="color:#ceb1ff">-gx&lt;/span> PATH $ANDROID_HOME/tools $PATH
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">set&lt;/span> &lt;span style="color:#ceb1ff">-gx&lt;/span> PATH $ANDROID_HOME/tools/bin $PATH
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">set&lt;/span> &lt;span style="color:#ceb1ff">-gx&lt;/span> PATH $ANDROID_HOME/platform-tools $PATH
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="9">
&lt;li>
&lt;p>設定が通ったか確認するため、&lt;code>$ flutter doctor&lt;/code> を実行する&lt;/p>
&lt;/li>
&lt;li>
&lt;p>androidライセンスへの許諾が足りないと言われたので、指定されたコマンドを実行し&amp;quot;yes&amp;quot;する&lt;/p>
&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fish" data-lang="fish">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ceb1ff">flutter&lt;/span> doctor &lt;span style="color:#ceb1ff">--android-licenses&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="11">
&lt;li>一旦ここまで。&lt;br>
&lt;img src="https://tech-b.azimicat.dev/post/images/2023-06-12-flutter%E5%85%A5%E9%96%80(1)_1686580616688.png" alt="picture 1">&lt;/li>
&lt;/ol>
&lt;p>memo: 反映されていなかったりPATHが通っていなかったりした時はとりあえず再起動。結構効く。&lt;/p></description></item><item><title>Hugoのmarkdownセクション備忘録</title><link>https://tech-b.azimicat.dev/docs/tech/2023-06-03-hugo%E3%81%AEmarkdown%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%82%99%E5%BF%98%E9%8C%B2/</link><pubDate>Sat, 03 Jun 2023 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2023-06-03-hugo%E3%81%AEmarkdown%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%82%99%E5%BF%98%E9%8C%B2/</guid><description>&lt;p>Hugoの&lt;code>markup&lt;/code>セクションでは、Hugoがマークアップ（HTML、Markdown、その他）をどのように解析、レンダリングし、表示するかを設定できる。&lt;/p>
&lt;p>Hugoの公式ドキュメントのリンク：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>&lt;code>markup&lt;/code>セクション全般&lt;/strong>: &lt;a href="https://gohugo.io/content-management/formats/">https://gohugo.io/content-management/formats/&lt;/a>&lt;/li>
&lt;li>&lt;strong>&lt;code>goldmark&lt;/code>&lt;/strong>: &lt;a href="https://gohugo.io/getting-started/configuration-markup/#goldmark">https://gohugo.io/getting-started/configuration-markup/#goldmark&lt;/a>&lt;/li>
&lt;li>&lt;strong>&lt;code>highlight&lt;/code>&lt;/strong>: &lt;a href="https://gohugo.io/content-management/syntax-highlighting/">https://gohugo.io/content-management/syntax-highlighting/&lt;/a>&lt;/li>
&lt;li>&lt;strong>&lt;code>tableOfContents&lt;/code>&lt;/strong>: &lt;a href="https://gohugo.io/content-management/toc/">https://gohugo.io/content-management/toc/&lt;/a>&lt;/li>
&lt;li>&lt;strong>&lt;code>asciidocExt&lt;/code>&lt;/strong>: &lt;a href="https://gohugo.io/content-management/formats/#additional-configurations">https://gohugo.io/content-management/formats/#additional-configurations&lt;/a>&lt;/li>
&lt;/ol>
&lt;p>当サイトでは現在以下の設定になっている（2023/06/03現在）&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>[markup]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [markup.goldmark]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [markup.goldmark.renderer]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> unsafe = &lt;span style="color:#c2ffdf">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [markup.highlight]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> guessSyntax = &lt;span style="color:#c2ffdf">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> noClasses = &lt;span style="color:#c2ffdf">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> style = &lt;span style="color:#1bc5e0">&amp;#34;witchhazel&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> tabWidth = &lt;span style="color:#c5a3ff">2&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>ざっくり説明すると&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;code>[markup.goldmark.renderer]&lt;/code>&lt;/p>
&lt;ul>
&lt;li>&lt;code>unsafe = true&lt;/code>：Markdown内の生のHTMLを有効にする設定。（改行が&lt;code>&amp;lt;br&amp;gt;&lt;/code>派なので必須）&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;code>[markup.highlight]&lt;/code>：コードハイライトに関する設定&lt;/p>
&lt;ul>
&lt;li>&lt;code>guessSyntax = true&lt;/code>：Hugoが勝手にコードブロックの言語を推測してくれる。&lt;/li>
&lt;li>&lt;code>noClasses = true&lt;/code>：インラインスタイルを使用してシンタックスハイライトを行う。どっちがいいかはよくわからない。自分で設定作る人は&lt;code>false&lt;/code>でクラスがつくようにする方がいいのかも。&lt;/li>
&lt;li>&lt;code>style = &amp;quot;witchhazel&amp;quot;&lt;/code>：シンタックスハイライトのスタイルを&amp;quot;WitchHazel&amp;quot;にする。&lt;/li>
&lt;li>&lt;code>tabWidth = 2&lt;/code>：タブの幅を2スペース。（宗教）&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>&lt;code>style = &amp;quot;&amp;quot;&lt;/code>部分の指定は&lt;a href="https://github.com/alecthomas/chroma">Chroma&lt;/a>というシンタックスハイライターが提供されている。：&lt;a href="https://xyproto.github.io/splash/docs/all.html">公式のChromaスタイル一覧&lt;/a>&lt;/p></description></item><item><title>awsumeがexecutableでないということで失敗する</title><link>https://tech-b.azimicat.dev/docs/tech/2023-06-02-awsume%E3%81%8Cexecutable%E3%81%A7%E3%81%AA%E3%81%84%E3%81%A8%E3%81%84%E3%81%86%E3%81%93%E3%81%A8%E3%81%A7%E5%A4%B1%E6%95%97%E3%81%99%E3%82%8B/</link><pubDate>Fri, 02 Jun 2023 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2023-06-02-awsume%E3%81%8Cexecutable%E3%81%A7%E3%81%AA%E3%81%84%E3%81%A8%E3%81%84%E3%81%86%E3%81%93%E3%81%A8%E3%81%A7%E5%A4%B1%E6%95%97%E3%81%99%E3%82%8B/</guid><description>&lt;h2 id="エラーの内容">エラーの内容&lt;/h2>
&lt;blockquote>
&lt;p>exec: Failed to execute process &amp;lsquo;/Users/user_name/.local/bin/awsumepy&amp;rsquo;: The file specified the interpreter &amp;lsquo;/Users/user_name/.local/pipx/venvs/awsume/bin/python&amp;rsquo;, which is not an executable command.&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>~ ❯❯❯ awsume mfa
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>exec: Failed to execute process &lt;span style="color:#1bc5e0">&amp;#39;/Users/user_name/.local/bin/awsumepy&amp;#39;&lt;/span>: The file specified the interpreter &lt;span style="color:#1bc5e0">&amp;#39;/Users/user_name/.local/pipx/venvs/awsume/bin/python&amp;#39;&lt;/span>, which is not an executable command.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="状況">状況&lt;/h2>
&lt;p>権限は足りてた。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>~ ❯❯❯ ls -l ~/.local/pipx/venvs/awsume/bin/python
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lrwxr-xr-x &lt;span style="color:#c5a3ff">1&lt;/span> user_name staff &lt;span style="color:#c5a3ff">10&lt;/span> &lt;span style="color:#c5a3ff">3&lt;/span> &lt;span style="color:#c5a3ff">20&lt;/span> 11:01 .local/pipx/venvs/awsume/bin/python@ -&amp;gt; python3.11
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>invalid interpreterって言われてる。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>~ ❯❯❯ pipx list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>venvs are in /Users/user_name/.local/pipx/venvs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apps are exposed on your $PATH at /Users/user_name/.local/bin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>:warning: package awsume has invalid interpreter /opt/homebrew/Cellar/python@3.11/3.11.2_1/Frameworks/Python.framework/Versions/3.11/bin/python3.11
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>One or more packages have a missing python interpreter.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> To fix, execute: pipx reinstall-all
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="対応">対応&lt;/h2>
&lt;p>&lt;code>To fix, execute: pipx reinstall-all&lt;/code> と言われたので、pipx reinstall-all してみる&lt;/p></description></item><item><title>switchしたbranchのsubmoduleをセットアップする</title><link>https://tech-b.azimicat.dev/docs/tech/2023-06-02-switch%E3%81%97%E3%81%9Fbranch%E3%81%AEsubmodule%E3%82%92%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%81%99%E3%82%8B/</link><pubDate>Fri, 02 Jun 2023 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2023-06-02-switch%E3%81%97%E3%81%9Fbranch%E3%81%AEsubmodule%E3%82%92%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%81%99%E3%82%8B/</guid><description>&lt;ol>
&lt;li>リポジトリ内で、&lt;code>git submodule init&lt;/code>を実行し、必要なsubmoduleを初期化する。これで、&lt;code>.gitmodules&lt;/code>ファイル内のすべてのsubmoduleが初期化される。&lt;/li>
&lt;li>&lt;code>git submodule update&lt;/code>を実行し、各submoduleの内容を取得する。これで、submoduleの指定されたコミットがチェックアウトする。&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>git switch &amp;lt;branch-name&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git submodule update --init
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>git submodule update --init&lt;/code>が使える。これは&lt;code>git submodule init&lt;/code>と&lt;code>git submodule update&lt;/code>を組み合わせたものだ。&lt;/p>
&lt;ol start="3">
&lt;li>すでにサブディレクトリが存在し、それが空でない場合、次のようなエラーが表示されることがある。&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&amp;gt; git switch &amp;lt;branch-name&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>warning: unable to rmdir &lt;span style="color:#1bc5e0">&amp;#39;themes/hoge: Directory not empty
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">branch &amp;#39;&lt;/span>&amp;lt;branch-name&amp;gt;&lt;span style="color:#1bc5e0">&amp;#39; set up to track &amp;#39;&lt;/span>origin/&amp;lt;branch-name&amp;gt;&lt;span style="color:#1bc5e0">&amp;#39;.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">Switched to a new branch &amp;#39;&lt;/span>&amp;lt;branch-name&amp;gt;&lt;span style="color:#960050;background-color:#1e0010">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>この問題を解決するには、&lt;code>themes/hoge&lt;/code>ディレクトリを手動で削除するか、内容を別の場所に移動する必要がある。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5"># ディレクトリを移動または削除する&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mv themes/hugo-book /path/to/new/location/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5"># または&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>rm -rf themes/hugo-book
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>上記の問題が解決したら、サブモジュールを初期化し、アップデートする。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>git submodule update --init
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これで完了です。&lt;/p></description></item><item><title>GoogleFormsに回答が来た時にSlackへ通知するスクリプトを書いた</title><link>https://tech-b.azimicat.dev/docs/tech/2023-06-01-googleforms%E3%81%AB%E5%9B%9E%E7%AD%94%E3%81%8C%E6%9D%A5%E3%81%9F%E6%99%82%E3%81%ABslack%E3%81%B8%E9%80%9A%E7%9F%A5%E3%81%99%E3%82%8B%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E6%9B%B8%E3%81%84%E3%81%9F/</link><pubDate>Thu, 01 Jun 2023 12:36:12 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2023-06-01-googleforms%E3%81%AB%E5%9B%9E%E7%AD%94%E3%81%8C%E6%9D%A5%E3%81%9F%E6%99%82%E3%81%ABslack%E3%81%B8%E9%80%9A%E7%9F%A5%E3%81%99%E3%82%8B%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E6%9B%B8%E3%81%84%E3%81%9F/</guid><description>&lt;h2 id="slack通知">Slack通知&lt;/h2>
&lt;p>&lt;img src="https://gyazo.com/0c5dd6a2c454ef4b3cb733316c7a9d95.png" alt="img">&lt;/p>
&lt;h2 id="全貌">全貌&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// ==============================================
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// GoogleFormの応答が送信されたときに実行される
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// ==============================================
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">function&lt;/span> onFormSubmit(e) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">// 取得したフォームの回答を変数に代入する
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">const&lt;/span> formResponse &lt;span style="color:#ffb8d1">=&lt;/span> e.namedValues;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">const&lt;/span> itemResponses &lt;span style="color:#ffb8d1">=&lt;/span> formResponse.getItemResponses();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">// 通知メッセージを初期化
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">var&lt;/span> message &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;New response in Google Form:\n&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">// 各質問と回答をメッセージに追加する
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">for&lt;/span> (&lt;span style="color:#c2ffdf">var&lt;/span> i &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c5a3ff">0&lt;/span>; i &lt;span style="color:#ffb8d1">&amp;lt;&lt;/span> itemResponses.length; i&lt;span style="color:#ffb8d1">++&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">var&lt;/span> itemResponse &lt;span style="color:#ffb8d1">=&lt;/span> itemResponses[i];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> message &lt;span style="color:#ffb8d1">+=&lt;/span> itemResponse.getItem().getTitle() &lt;span style="color:#ffb8d1">+&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;: &amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">+&lt;/span> itemResponse.getResponse() &lt;span style="color:#ffb8d1">+&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;\n&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">// Slackに通知
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> sendNotificationToSlack(message);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// ==============================================
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// Slackに通知を送る
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// ==============================================
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">function&lt;/span> sendNotificationToSlack(text) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">// Slack の Webhook URL
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">const&lt;/span> webhookUrl &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;https://hooks.slack.com/services/XXXXXX/XXXXXX/XXXXXX&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">// POST メッセージの設定
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">const&lt;/span> payload &lt;span style="color:#ffb8d1">=&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#34;text&amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">:&lt;/span> text
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> };
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">// HTTPオプションを設定します。
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">const&lt;/span> options &lt;span style="color:#ffb8d1">=&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#34;method&amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">:&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;post&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#34;payload&amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">:&lt;/span> JSON.stringify(payload)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> };
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">// HTTPリクエストを送信
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> UrlFetchApp.fetch(webhookUrl, options);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="トリガー">トリガー&lt;/h2>
&lt;p>&lt;img src="https://gyazo.com/9655afac65eedddf88582ade1d35c84d.png" alt="img">&lt;/p></description></item><item><title>Trickleというサービスを使っています</title><link>https://tech-b.azimicat.dev/docs/notes/2022-12-17-trickle%E3%81%A8%E3%81%84%E3%81%86%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99/</link><pubDate>Sat, 17 Dec 2022 23:56:46 +0900</pubDate><guid>https://tech-b.azimicat.dev/docs/notes/2022-12-17-trickle%E3%81%A8%E3%81%84%E3%81%86%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99/</guid><description>&lt;h1 id="trickleを使い始めた経緯と良さみたいな事を書く">Trickleを使い始めた経緯と良さみたいな事を書く&lt;/h1>
&lt;p>この記事は&lt;a href="https://adventar.org/calendars/8284">Trickleアドべントカレンダー2022&lt;/a>の17日目の記事です。
軽い記事でも良いとのことなので簡単に……。&lt;/p>
&lt;h2 id="tricklehttpstrickledayとは">&lt;a href="https://trickle.day/">Trickle&lt;/a>とは&lt;/h2>
&lt;p>私の認識では、ミニブログサービスの一つです。
トピックを分けて文字や画像を投稿することができ、他ユーザーのトピックを複数サブスクライブできます。&lt;/p>
&lt;h2 id="tricleの何が気に入ったのか">Tricleの何が気に入ったのか&lt;/h2>
&lt;p>何が好きで使っているかと言うと、その静かさです。&lt;br>
リアクションをする必要がないし、しても良い。他人の投稿を見ても良いし見なくても良い。&lt;br>
そういった雰囲気がTricleにはあります。&lt;br>
ユーザー数が限られているのでフォローできるtopicがそもそも少なく、無限に回遊し続けてしまうこともありません。（作り手としては嬉しくないかと思いますが…）&lt;/p>
&lt;ul>
&lt;li>緩やかに他人の日常が流れてくる&lt;/li>
&lt;li>負の感情は1つのtopicにまとめる人が多い（不意打ちをくらわない）&lt;/li>
&lt;li>拡散されない&lt;/li>
&lt;/ul>
&lt;p>そういったところが気に入っています。&lt;/p>
&lt;p>&lt;img src="https://media.shodousercontents.com/task_images/319/15382d0d-5837-4aa0-9484-2e0d9cfadf6a.gif" alt="ダッシュボードスクロール">&lt;/p>
&lt;h2 id="具体的な使い方">具体的な使い方&lt;/h2>
&lt;p>これが現在の私のtopic一覧です。&lt;/p>
&lt;p>&lt;img src="https://media.shodousercontents.com/task_images/319/2a7b531f-2774-436e-9207-9e68691f2605.png" alt="topic_list">&lt;/p>
&lt;p>いまのところ、15topicを使い分けています。&lt;br>
ほぼ毎日更新するものもあれば、半年以上ほったらかしのtopicもあります。&lt;br>
誰かに見られているという意識が薄いtopicもあり、内容が暗めだったりします。ですが、そのようなトピックは参考トピックに表示させないようにできないので安心ですし、積極的にサブスクライブしようという人もいないでしょう。&lt;br>
日記というほどしっかりしていない、dairyの記録用topicや面白かったweb記事を集めるためのtopic、パートナーが気に入ってくれたお家ご飯の記録用topicなどをよく更新しています。&lt;/p>
&lt;p>今月は、「12月の目標：本を買わない」に対して、我慢した本topicというのを作りました。&lt;/p>
&lt;p>&lt;img src="https://media.shodousercontents.com/task_images/319/bd889f4a-6c2f-463d-951f-8e6dedf7a6b0.png" alt="">&lt;/p>
&lt;p>このように、気軽にtopicを増やせるのも大きな魅力です。&lt;/p>
&lt;h2 id="おわりに">おわりに&lt;/h2>
&lt;p>使ったり使わなかったりの期間がありますが、私はこれからもTrickleがあり続けることを願っています。&lt;br>
そして、使っている人は少額でいいからスポンサーになりましょう。（最近まで気づかなかったので自戒を込めて…）&lt;br>
開発ありがとうございます！応援しています。&lt;/p></description></item><item><title>地方移住のすすめ</title><link>https://tech-b.azimicat.dev/docs/notes/2022-12-11-%E5%9C%B0%E6%96%B9%E7%A7%BB%E4%BD%8F%E3%81%AE%E3%81%99%E3%81%99%E3%82%81/</link><pubDate>Sun, 11 Dec 2022 19:15:29 +0900</pubDate><guid>https://tech-b.azimicat.dev/docs/notes/2022-12-11-%E5%9C%B0%E6%96%B9%E7%A7%BB%E4%BD%8F%E3%81%AE%E3%81%99%E3%81%99%E3%82%81/</guid><description>&lt;p>これは、&lt;a href="https://qiita.com/advent-calendar/2022/lapras">LAPRAS Advent Calendar 2022&lt;/a>の11日の記事です。&lt;/p>
&lt;h2 id="1-挨拶">1. 挨拶&lt;/h2>
&lt;p>ごきげんよう。azimicatです。東京から北海道へ移住して1年8ヶ月が経ちました。&lt;br>
せっかくの機会なので移住に関する諸々をまとめようと思い立ち筆を取りました。&lt;br>
具体的な移住検討の手法などについては「東京から外に出る人」向けに書いていますが、実際はどの地域からでもどこへでも移住して良いのだということを念頭にこの記事を読んでいただけると幸いです。&lt;/p>
&lt;h2 id="2-ここに書かれていることは">2. ここに書かれていることは？&lt;/h2>
&lt;ul>
&lt;li>地方移住の経緯&lt;/li>
&lt;li>地方移住のすすめ&lt;/li>
&lt;li>地方に移住するには何を準備すれば良いのか　など&lt;/li>
&lt;/ul>
&lt;h2 id="3-なぜこの記事を">3. なぜこの記事を？&lt;/h2>
&lt;ul>
&lt;li>私自身が移住で充実した生活を送れるようになった（東京暮らし比）ため&lt;/li>
&lt;li>友人/知人に移住について聞かれることが増えた&lt;/li>
&lt;/ul>
&lt;h2 id="4-移住とはなにか">4. 移住とはなにか？&lt;/h2>
&lt;p>移住という言葉を聞きなれない方も多いと思います。&lt;br>
ざっくり言うと移住とは、「その地域に永住するという意思を持って行う引越し」のことです。&lt;br>
そのため、やむを得ない理由での他都道府県への引越しは移住ではありません。&lt;br>
逆に東京で暮らしたくて東京の学校へ進学する場合は、「進学を機に移住を決めた」と言えるわけです。&lt;/p>
&lt;h2 id="5-地方移住はいいぞ">5. 地方移住はいいぞ&lt;/h2>
&lt;h3 id="51-引越遍歴と今の移住先">5.1. 引越遍歴と今の移住先&lt;/h3>
&lt;h4 id="511-引越遍歴">5.1.1. 引越遍歴&lt;/h4>
&lt;p>東京から北海道へ移住して、1年8ヶ月経ちました。&lt;br>
人生スパンで見ると、&lt;br>
福岡（18年1拠点）→東京（4年2拠点）→札幌（2年3拠点）→東京（4年4拠点）→北海道（2年1拠点）という引越しをしています。&lt;br>
&lt;code>凡例：地域名（概算年 拠点数）&lt;/code>&lt;/p>
&lt;p>福岡から東京の大学へ進学し、札幌で就職。&lt;br>
転職のため東京に戻りさらに都内でもう一度転職。&lt;br>
転職のため北海道へ引っ越し公務員として勤務後、東京の会社に転職してフルリモート勤務。という経緯です。&lt;/p>
&lt;h4 id="512-今の移住先について">5.1.2. 今の移住先について&lt;/h4>
&lt;p>きっかけはオホーツクキャンパスのリモート講義で、それを機に北海道に興味を持ちました。&lt;br>
恩師を頼りに友人と2人、自転車で初めての北海道を巡り、自然の雄大さに感動しました。&lt;br>
それをきっかけにして、4年をかけじっくりと北海道を巡る中で北海道を愛する旅の友人たちに恵まれ、移住という手段を知りました。&lt;br>
移住の決め手はいくつかありますが、「人のおおらかさ」「豊かな自然」「夏の快適さ」「花粉症の不在」が大きな理由です。&lt;/p>
&lt;h4 id="513-移住先の紹介">5.1.3. 移住先の紹介&lt;/h4>
&lt;p>北海道河東郡上士幌町という大雪山国立公園の東山麓に位置し、十勝平野の北端でもあります。面積の70%以上を森林が占める自然豊かな町です。コンクリートアーチ橋梁群やバルーンフェスタが有名です。&lt;br>
&lt;img src="https://user-images.githubusercontent.com/15308284/206842646-1ba0f255-98a7-4e93-8da4-7085fa031248.svg" alt="簡単地図">&lt;br>
&lt;img src="https://user-images.githubusercontent.com/15308284/206897422-c7844009-b181-4ff1-8268-5fecfd1d18b5.jpg" alt="三国峠">&lt;br>
↑三国峠&lt;br>
&lt;img src="https://user-images.githubusercontent.com/15308284/206897516-cea06b67-cb2d-4e19-bb11-b6f5138b78d8.jpg" alt="夏のタウシュベツ">&lt;br>
↑夏のタウシュベツ&lt;/p>
&lt;h3 id="52-私の移住理由">5.2. 私の移住理由&lt;/h3>
&lt;p>いろいろありますが、いちばんの決め手は東京に住んでいた時に聞いた老夫婦の会話でした。&lt;br>
週末にいつも行っていた大きなショッピングモールがあったのですが、その中にあるカフェで老夫婦がボソッと「私たち、いつもここに来ているね。」と言ったのが聞こえたのです。
あの年齢になっても、ここに住んでいると今の私のように毎週末、いずれは毎日、このショッピングモールに通うことになる……いや、通ってしまうようになるのか！と、とてもショックで、それがきっかけで地方移住を本気で計画し始めました。&lt;/p>
&lt;h3 id="53-周りの移住者に聞いた移住理由">5.3. 周りの移住者に聞いた「移住理由」&lt;/h3>
&lt;ul>
&lt;li>自治体の優遇施策
&lt;ul>
&lt;li>子育て支援がある（保育園費用が無料・高校までの医療費が無料など）&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>地域を気に入った
&lt;ul>
&lt;li>自然が豊かな中での生活&lt;/li>
&lt;li>旅行で訪れて気に入った&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>故郷
&lt;ul>
&lt;li>故郷へのUターン&lt;/li>
&lt;li>故郷近くへの就業&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>仕事
&lt;ul>
&lt;li>地域活性化に興味がある&lt;/li>
&lt;li>やりたい仕事がある（酪農や農業、地域特化型の食品加工など）&lt;/li>
&lt;li>気になっていた地域へ希望転勤&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="54-移住先での生活">5.4. 移住先での生活&lt;/h3>
&lt;p>&lt;strong>（前職）&lt;/strong>&lt;/p></description></item><item><title>invalid active developer path ... CommandLineTools)</title><link>https://tech-b.azimicat.dev/docs/tech/2022-11-06-invalid_active_developer_path/</link><pubDate>Sun, 06 Nov 2022 15:40:30 +0900</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2022-11-06-invalid_active_developer_path/</guid><description>&lt;h2 id="現象">現象&lt;/h2>
&lt;p>久々に自前macでコミットをしようとしたら、&lt;code>invalid active developer path ... CommandLineTools)&lt;/code>と怒られてしまった。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&amp;gt; git status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>xcrun: error: invalid active developer path &lt;span style="color:#ffb8d1">(&lt;/span>/Library/Developer/CommandLineTools&lt;span style="color:#ffb8d1">)&lt;/span>, missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="原因">原因&lt;/h2>
&lt;p>macOSのメジャーアップデートで、XcodeCommandLineToolが消えていたから。&lt;/p>
&lt;h2 id="対応">対応&lt;/h2>
&lt;p>&lt;code>xcode-select&lt;/code>コマンドを使って、インストールダイアログからインストールします。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&amp;gt; xcode-select --install
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>installが終わったら、アクティブなデベロッパディレクトリを確認します。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&amp;gt; xcode-select -print-path
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/Library/Developer/CommandLineTools
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これで動く。&lt;/p></description></item><item><title>jekyllで作ったサイトにog:image(OGP画像)を追加する</title><link>https://tech-b.azimicat.dev/docs/tech/2022-07-13-jekyll%E3%81%A7%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%B5%E3%82%A4%E3%83%88%E3%81%ABogpimage%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B/</link><pubDate>Wed, 13 Jul 2022 18:16:00 +0900</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2022-07-13-jekyll%E3%81%A7%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%B5%E3%82%A4%E3%83%88%E3%81%ABogpimage%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B/</guid><description>&lt;h2 id="手法">手法&lt;/h2>
&lt;p>&lt;a href="https://github.com/jekyll/jekyll-seo-tag">jekyll-seo-tag&lt;/a> を使います&lt;/p>
&lt;h2 id="手順">手順&lt;/h2>
&lt;ol>
&lt;li>&lt;code>Gemfile&lt;/code> に &lt;code>jekyll-seo-tag&lt;/code> を追加します&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>gem &amp;#39;jekyll-seo-tag&amp;#39;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>
&lt;p>任意のOGP画像を追加します
&lt;code>assets/images/{任意のファイル名}&lt;/code>&lt;br>
🥱 &amp;lt; OGP画像の推奨サイズは1200×630pxとのことです&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>_config.yml&lt;/code> に以下の設定を追加します&lt;/p>
&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-yml" data-lang="yml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">defaults&lt;/span>:&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>- &lt;span style="color:#ffb8d1">scope&lt;/span>:&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">path&lt;/span>:&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;&amp;#34;&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">values&lt;/span>:&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">image&lt;/span>:&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ae81ff">/assets/images/{任意のファイル名}&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="表示">表示&lt;/h2>
&lt;p>ソース内での表示は以下のようになります&lt;br>
&lt;code>http://localhost:4000/assets/images/ogp-default.png&lt;/code> にアクセスすると画像が表示されることが確認できます&lt;/p>
&lt;p>&lt;img src="https://i.gyazo.com/ef5b810a8cf8e00c67546dfa302b62f0.png" alt="として表示されます">&lt;/p>
&lt;p>Facebookでの投稿だとこんな感じに
&lt;img src="https://i.gyazo.com/46d2f40b1bf02cb4a904d342ae63ff20.png" alt="">&lt;/p></description></item><item><title>VScode Remote SSH で [Missing or invalid credentials.] が出る。</title><link>https://tech-b.azimicat.dev/docs/tech/2022-06-27-vscoderemotessh%E3%81%A7missing_or_invalid_credentials%E3%81%8C%E5%87%BA%E3%82%8B/</link><pubDate>Mon, 27 Jun 2022 20:14:30 +0900</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2022-06-27-vscoderemotessh%E3%81%A7missing_or_invalid_credentials%E3%81%8C%E5%87%BA%E3%82%8B/</guid><description>&lt;h2 id="エラー">エラー&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>&amp;gt; git push -f origin develop
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Missing or invalid credentials.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="解決法">解決法&lt;/h2>
&lt;p>設定の &lt;code>git.terminalAuthentication&lt;/code> をOFFにする。&lt;/p>
&lt;p>&lt;img src="https://user-images.githubusercontent.com/15308284/175934067-9d5ef3d8-f533-4333-b6df-e0336bded4c3.png" alt="git.terminalAuthentication">&lt;/p></description></item><item><title>jekyllをM1macで使う</title><link>https://tech-b.azimicat.dev/docs/tech/2022-06-05-jekyll%E3%82%92m1mac%E3%81%A7%E4%BD%BF%E3%81%86/</link><pubDate>Sun, 05 Jun 2022 21:14:30 +0900</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2022-06-05-jekyll%E3%82%92m1mac%E3%81%A7%E4%BD%BF%E3%81%86/</guid><description>&lt;h2 id="環境">環境&lt;/h2>
&lt;p>&lt;img src="https://i.gyazo.com/69f02ea9a3beb6b5bd57b1f0f0e0a37b.png" alt="このmacについて">&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">&lt;/th>
 &lt;th style="text-align: left">&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Homebrew&lt;/td>
 &lt;td style="text-align: left">3.4.11&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">gem&lt;/td>
 &lt;td style="text-align: left">3.0.3.1&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">ruby&lt;/td>
 &lt;td style="text-align: left">2.7.1&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Apple clang&lt;/td>
 &lt;td style="text-align: left">13.1.6 (clang-1316.0.21.2.5)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Target&lt;/td>
 &lt;td style="text-align: left">arm64-apple-darwin21.5.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Thread model&lt;/td>
 &lt;td style="text-align: left">posix&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">InstalledDir&lt;/td>
 &lt;td style="text-align: left">/Library/Developer/CommandLineTools/usr/bin&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Homebrewとgemはそれぞれ公式ページに則ってインストールしました。&lt;/p>
&lt;h2 id="rbenv-installでコケる">&lt;code>rbenv install&lt;/code>でコケる&lt;/h2>
&lt;p>普通に実行すると以下のようにエラーとなる。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fish" data-lang="fish">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span> rbenv install &lt;span style="color:#c5a3ff">2&lt;/span>.&lt;span style="color:#c5a3ff">7&lt;/span>.&lt;span style="color:#c5a3ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>~~~
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ceb1ff">BUILD&lt;/span> FAILED &lt;span style="color:#ffb8d1">(&lt;/span>&lt;span style="color:#ceb1ff">macOS&lt;/span> &lt;span style="color:#c5a3ff">12&lt;/span>.&lt;span style="color:#c5a3ff">4&lt;/span> using ruby-build &lt;span style="color:#c5a3ff">20220426&lt;/span>&lt;span style="color:#ffb8d1">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>~~~
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ceb1ff">make&lt;/span>: *** &lt;span style="color:#ffb8d1">[&lt;/span>build&lt;span style="color:#ffb8d1">-&lt;/span>ext&lt;span style="color:#ffb8d1">]&lt;/span> Error &lt;span style="color:#c5a3ff">2&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>rubyのバージョンによってはうまくいくこともあるようですが、私の環境ではダメでした。
オプションに &lt;code>RUBY_CFLAGS=&amp;quot;-w&amp;quot;&lt;/code> を設定すると、インストールできるようになりました。
これについてはissueが上がっていました（&lt;a href="https://github.com/rbenv/ruby-build/issues/1691">Installation issues with Arm Mac (M1 Chip) · Issue #1691 · rbenv/ruby-build&lt;/a>）&lt;/p>
&lt;h3 id="オプションの詳細">オプションの詳細&lt;/h3>
&lt;p>&lt;code>RUBY_CFLAGS&lt;/code>: デフォルトのCFLAGSへ追加オプションを渡す
(出典: &lt;a href="https://ruby.studio-kingdom.com/rbenv/ruby_build/">ruby-build | rbenv日本語リファレンス | Ruby STUDIO&lt;/a>)&lt;/p>
&lt;p>&lt;code>CFLAGS&lt;/code>: ソースコードをコンパイルするときに使われるオプションを、コンパイラに指示するため、慣例的に使われる環境変数の一種&lt;/p>
&lt;p>&lt;code>-w&lt;/code>: コンパイラからの警告メッセージを出力しない
(出典: &lt;a href="https://docs.oracle.com/cd/E19957-01/806-4836/ccOptions.html">Oracle Help Center|C ユーザーズガイド&lt;/a>)&lt;/p></description></item><item><title>突然VSCodeからRemoteSSHができなくなった（TimeOut）件の対処</title><link>https://tech-b.azimicat.dev/docs/tech/2022-05-27-remotessh%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E4%BB%B6/</link><pubDate>Fri, 27 May 2022 11:00:00 +0900</pubDate><guid>https://tech-b.azimicat.dev/docs/tech/2022-05-27-remotessh%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E4%BB%B6/</guid><description>&lt;h2 id="事象">事象&lt;/h2>
&lt;ul>
&lt;li>停電の後VSCodeからEC2へRemoteSSHできなくなった(TimeOut)&lt;/li>
&lt;li>fishShellからは &lt;code>ssh dev&lt;/code> で正常に接続できる&lt;/li>
&lt;/ul>
&lt;h2 id="原因">原因&lt;/h2>
&lt;ul>
&lt;li>VSCodeの設定周りが吹き飛んでいた
&lt;ul>
&lt;li>設定や拡張機能の一部がuninstallされていた&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>なぜそれが起きたかは不明&lt;/li>
&lt;/ul>
&lt;h2 id="対処">対処&lt;/h2>
&lt;ul>
&lt;li>設定回りの吹き飛びにより、fishShellを接続する時に必要な設定が失われていたためそれを設定することで解決
&lt;ul>
&lt;li>Settingから、&lt;code>remote.ssh.uselocalserver&lt;/code>を&lt;code>false&lt;/code>に設定&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://gyazo.com/22fbd0e89edb137a3856190f87854c49">&lt;img src="https://i.gyazo.com/22fbd0e89edb137a3856190f87854c49.png" alt="Image from Gyazo">&lt;/a>&lt;/p></description></item><item><title>nodebrewのinstallで&amp;quot;Failure writing output to destination&amp;quot;が出た時の対応</title><link>https://tech-b.azimicat.dev/docs/old/2022-04-18-nodebrew%E3%81%AEinstall%E3%81%A7quotfailure_writing_output_to_destinationquot%E3%81%8C%E5%87%BA%E3%81%9F%E6%99%82%E3%81%AE%E5%AF%BE%E5%BF%9C/</link><pubDate>Mon, 18 Apr 2022 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2022-04-18-nodebrew%E3%81%AEinstall%E3%81%A7quotfailure_writing_output_to_destinationquot%E3%81%8C%E5%87%BA%E3%81%9F%E6%99%82%E3%81%AE%E5%AF%BE%E5%BF%9C/</guid><description>&lt;h3 id="結論">結論&lt;/h3>
&lt;p>&lt;code>~/.nodebrew/src&lt;/code> が必要だった&lt;/p>
&lt;h3 id="手順">手順&lt;/h3>
&lt;p>#このようなエラーが出ます&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span> nodebrew install&lt;span style="color:#ffb8d1">-&lt;/span>binary latest
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Fetching: https:&lt;span style="color:#ffb8d1">//&lt;/span>nodejs&lt;span style="color:#ffb8d1">.&lt;/span>org&lt;span style="color:#ffb8d1">/&lt;/span>dist&lt;span style="color:#ffb8d1">/&lt;/span>v17&lt;span style="color:#ffb8d1">.&lt;/span>&lt;span style="color:#c5a3ff">9.0&lt;/span>&lt;span style="color:#ffb8d1">/&lt;/span>node&lt;span style="color:#ffb8d1">-&lt;/span>v17&lt;span style="color:#ffb8d1">.&lt;/span>&lt;span style="color:#c5a3ff">9.0&lt;/span>&lt;span style="color:#ffb8d1">-&lt;/span>darwin&lt;span style="color:#ffb8d1">-&lt;/span>arm64&lt;span style="color:#ffb8d1">.&lt;/span>tar&lt;span style="color:#ffb8d1">.&lt;/span>gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Warning: Failed to create the file 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Warning: &lt;span style="color:#ffb8d1">/&lt;/span>Users&lt;span style="color:#ffb8d1">/&lt;/span>azimicat&lt;span style="color:#ffb8d1">/.&lt;/span>nodebrew&lt;span style="color:#ffb8d1">/&lt;/span>src&lt;span style="color:#ffb8d1">/&lt;/span>v17&lt;span style="color:#ffb8d1">.&lt;/span>&lt;span style="color:#c5a3ff">9.0&lt;/span>&lt;span style="color:#ffb8d1">/&lt;/span>node&lt;span style="color:#ffb8d1">-&lt;/span>v17&lt;span style="color:#ffb8d1">.&lt;/span>&lt;span style="color:#c5a3ff">9.0&lt;/span>&lt;span style="color:#ffb8d1">-&lt;/span>darwin&lt;span style="color:#ffb8d1">-&lt;/span>arm64&lt;span style="color:#ffb8d1">.&lt;/span>tar&lt;span style="color:#ffb8d1">.&lt;/span>gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Warning: : No such file &lt;span style="color:#ffb8d1">or&lt;/span> directory
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c5a3ff">0.0&lt;/span>&lt;span style="color:#ffb8d1">%&lt;/span>curl: (&lt;span style="color:#c5a3ff">23&lt;/span>) Failure writing output to destination
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>download failed: https:&lt;span style="color:#ffb8d1">//&lt;/span>nodejs&lt;span style="color:#ffb8d1">.&lt;/span>org&lt;span style="color:#ffb8d1">/&lt;/span>dist&lt;span style="color:#ffb8d1">/&lt;/span>v17&lt;span style="color:#ffb8d1">.&lt;/span>&lt;span style="color:#c5a3ff">9.0&lt;/span>&lt;span style="color:#ffb8d1">/&lt;/span>node&lt;span style="color:#ffb8d1">-&lt;/span>v17&lt;span style="color:#ffb8d1">.&lt;/span>&lt;span style="color:#c5a3ff">9.0&lt;/span>&lt;span style="color:#ffb8d1">-&lt;/span>darwin&lt;span style="color:#ffb8d1">-&lt;/span>arm64&lt;span style="color:#ffb8d1">.&lt;/span>tar&lt;span style="color:#ffb8d1">.&lt;/span>gz
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>#件のディレクトリを作る&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>&amp;gt; mkdir -p ~/.nodebrew/src
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>#うまく行きます&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>&amp;gt; nodebrew install-binary latest
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Fetching: https://nodejs.org/dist/v17.9.0/node-v17.9.0-darwin-arm64.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>###################################################################################################################################################################################### 100.0%
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Installed successfully
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>github pagesでカスタムドメインがpublishの度に外れて困っていたのをなおしたやつ</title><link>https://tech-b.azimicat.dev/docs/old/2022-03-28-github_pages%E3%81%A7%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%8Cpublish%E3%81%AE%E5%BA%A6%E3%81%AB%E5%A4%96%E3%82%8C%E3%81%A6%E5%9B%B0%E3%81%A3%E3%81%A6%E3%81%84%E3%81%9F%E3%81%AE%E3%82%92%E3%81%AA%E3%81%8A%E3%81%97%E3%81%9F%E3%82%84%E3%81%A4/</link><pubDate>Mon, 28 Mar 2022 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2022-03-28-github_pages%E3%81%A7%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%8Cpublish%E3%81%AE%E5%BA%A6%E3%81%AB%E5%A4%96%E3%82%8C%E3%81%A6%E5%9B%B0%E3%81%A3%E3%81%A6%E3%81%84%E3%81%9F%E3%81%AE%E3%82%92%E3%81%AA%E3%81%8A%E3%81%97%E3%81%9F%E3%82%84%E3%81%A4/</guid><description>&lt;h2 id="状況">状況&lt;/h2>
&lt;p>github workfrowsを利用して別のbranchにpushすると、github Pagesのカスタムドメインが外れてしまっていた。&lt;/p>
&lt;h2 id="環境">環境&lt;/h2>
&lt;ol>
&lt;li>ビルドコンテンツは&lt;code>docs&lt;/code>下に出力するようにしている&lt;/li>
&lt;li>publishDirは&lt;code>./docs&lt;/code>を指定している&lt;/li>
&lt;li>CNAMEファイルは&lt;code>./CNAME&lt;/code>にあり、ビルド対象でないため&lt;code>docs&lt;/code>下には出力されない&lt;/li>
&lt;/ol>
&lt;h2 id="原因">原因&lt;/h2>
&lt;ul>
&lt;li>たとえ過去に&lt;code>./docs&lt;/code>下へCNAMEファイルを追加していても、force pushしているのでビルド時に上書かれて消えてしまっていた&lt;/li>
&lt;/ul>
&lt;h2 id="対処">対処&lt;/h2>
&lt;p>jobs:
Build:
- name: Generate pages
run: |
hugo -D #ここでビルド
cp ./CNAME ./docs #CNAMEファイルをコピー&lt;/p>
&lt;pre>&lt;code> - name: Deploy gh-pages
 uses: peaceiris/actions-gh-pages@v3
 with:
 github_token: ${{ secrets.GITHUB_TOKEN }}
 publish_dir: ./docs
 publish_branch: gh-pages
&lt;/code>&lt;/pre></description></item><item><title> 【vba】DictionaryのkeyがVariant型だとStringでは呼び出せない</title><link>https://tech-b.azimicat.dev/docs/old/2021-12-27-_vbadictionary%E3%81%AEkey%E3%81%8Cvariant%E5%9E%8B%E3%81%A0%E3%81%A8string%E3%81%A7%E3%81%AF%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%9B%E3%81%AA%E3%81%84/</link><pubDate>Mon, 27 Dec 2021 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2021-12-27-_vbadictionary%E3%81%AEkey%E3%81%8Cvariant%E5%9E%8B%E3%81%A0%E3%81%A8string%E3%81%A7%E3%81%AF%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%9B%E3%81%AA%E3%81%84/</guid><description>&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: center">&lt;/th>
 &lt;th style="text-align: center">A&lt;/th>
 &lt;th style="text-align: center">B&lt;/th>
 &lt;th style="text-align: center">C&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: center">1&lt;/td>
 &lt;td style="text-align: center">ねこ&lt;/td>
 &lt;td style="text-align: center">いぬ&lt;/td>
 &lt;td style="text-align: center">うさぎ&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">2&lt;/td>
 &lt;td style="text-align: center">にゃー&lt;/td>
 &lt;td style="text-align: center">わん&lt;/td>
 &lt;td style="text-align: center">きっ&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">3&lt;/td>
 &lt;td style="text-align: center">たま&lt;/td>
 &lt;td style="text-align: center">ぽち&lt;/td>
 &lt;td style="text-align: center">うさ&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-vb" data-lang="vb">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">Sub&lt;/span> &lt;span style="color:#ceb1ff">sample1&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Dim&lt;/span> dic1 &lt;span style="color:#ffb8d1">As&lt;/span> dictionary
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Set&lt;/span> dic1 &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">New&lt;/span> dictionary
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Dim&lt;/span> dic2 &lt;span style="color:#ffb8d1">As&lt;/span> dictionary
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Set&lt;/span> dic2 &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">New&lt;/span> dictionary
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">For&lt;/span> &lt;span style="color:#c2ffdf">Each&lt;/span> Item &lt;span style="color:#ffb8d1">In&lt;/span> Sheets(1).Range(&lt;span style="color:#1bc5e0">&amp;#34;A1:C1&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Call&lt;/span> dic1.Add(Item, &lt;span style="color:#1bc5e0">&amp;#34;★_&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">&amp;amp;&lt;/span> Item)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Call&lt;/span> dic2.Add(&lt;span style="color:#c2ffdf">CStr&lt;/span>(Item), &lt;span style="color:#1bc5e0">&amp;#34;★_&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">&amp;amp;&lt;/span> Item)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Next&lt;/span> Item
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Debug.Print &lt;span style="color:#1bc5e0">&amp;#34;dic1: &amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">&amp;amp;&lt;/span> dic1.Item(&lt;span style="color:#1bc5e0">&amp;#34;ねこ&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">&amp;#39;=&amp;gt; dic1: 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> Debug.Print &lt;span style="color:#1bc5e0">&amp;#34;dic2: &amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">&amp;amp;&lt;/span> dic2.Item(&lt;span style="color:#1bc5e0">&amp;#34;ねこ&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">&amp;#39;=&amp;gt; dic2: ★_ねこ
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">End&lt;/span> &lt;span style="color:#c2ffdf">Sub&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>格納するときは必ずキャストしよう。&lt;/p></description></item><item><title>tree表示っぽくfindを整形する</title><link>https://tech-b.azimicat.dev/docs/old/2021-12-23-tree%E8%A1%A8%E7%A4%BA%E3%81%A3%E3%81%BD%E3%81%8Ffind%E3%82%92%E6%95%B4%E5%BD%A2%E3%81%99%E3%82%8B_/</link><pubDate>Thu, 23 Dec 2021 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2021-12-23-tree%E8%A1%A8%E7%A4%BA%E3%81%A3%E3%81%BD%E3%81%8Ffind%E3%82%92%E6%95%B4%E5%BD%A2%E3%81%99%E3%82%8B_/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ pwd; find . | sort | sed &amp;#39;1d;s/^\\.//;s/\\/\\(\[^/\]\*\\)$/|--\\1/;s/\\/\[^/|\]\*/|  /g&amp;#39;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>php7.2->7.3へ上げるとき</title><link>https://tech-b.azimicat.dev/docs/old/2020-07-09-php7.2-gt7.3%E3%81%B8%E4%B8%8A%E3%81%92%E3%82%8B%E3%81%A8%E3%81%8D/</link><pubDate>Thu, 09 Jul 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-07-09-php7.2-gt7.3%E3%81%B8%E4%B8%8A%E3%81%92%E3%82%8B%E3%81%A8%E3%81%8D/</guid><description>&lt;p>とりあえず、PHP7.2→7.3をphpbrewを使って入れることに。&lt;/p>
&lt;p>必要な手順はこれ&lt;/p>
&lt;p>7系のinstall状況を確認&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ brew search php@7 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Formulae 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>php@7.2 ✔  php@7.3  php@7.4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>入れる&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ phpbrew install 7.3.19 +default +mysql -- --with-zlib-dir=$(brew --prefix zlib)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>以上だ！&lt;/p>
&lt;p>以下自分の作業ログ&lt;/p>
&lt;hr>
&lt;p>7系のinstall状況を確認&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ brew search php@7 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Formulae 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>php@7.2 ✔  php@7.3  php@7.4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>入れる&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ phpbrew install 7.3.19
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Error
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>checking for the location of zlib... configure: error: zip support requires ZLIB. Use --with-zlib-dir=&amp;lt;DIR&amp;gt; to specify prefix where ZLIB include and library are located
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Install 確認&lt;/p></description></item><item><title>phpbrew 7.2系を入れるときのメモに追記〜mysqlもいれる〜</title><link>https://tech-b.azimicat.dev/docs/old/2020-07-09-phpbrew_7.2%E7%B3%BB%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AE%E3%83%A1%E3%83%A2%E3%81%AB%E8%BF%BD%E8%A8%98mysql%E3%82%82%E3%81%84%E3%82%8C%E3%82%8B/</link><pubDate>Thu, 09 Jul 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-07-09-phpbrew_7.2%E7%B3%BB%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AE%E3%83%A1%E3%83%A2%E3%81%AB%E8%BF%BD%E8%A8%98mysql%E3%82%82%E3%81%84%E3%82%8C%E3%82%8B/</guid><description>&lt;p>以前、このようなメモを残したけれど明らかにスマートじゃなかった。&lt;br>
phpbrewの開発者に怒られそうな使い方をしていたのでちゃんとした方法をやり直したメモ。 &lt;/p>
&lt;p>&lt;code>+mysql&lt;/code>オプションをつけること。&lt;br>
コレだけで解決しました。 &lt;code>.bash_profile&lt;/code> の記述は不要です。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ phpbrew install 7.2.9 +default +mysql -- --with-zlib-dir&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#c2ffdf">$(&lt;/span>brew --prefix zlib&lt;span style="color:#c2ffdf">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title> [mysql] tableが存在するのに呼べない時 [docker-compose]</title><link>https://tech-b.azimicat.dev/docs/old/2020-06-18-mysql_table%E3%81%8C%E5%AD%98%E5%9C%A8%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AB%E5%91%BC%E3%81%B9%E3%81%AA%E3%81%84%E6%99%82_docker-compose/</link><pubDate>Thu, 18 Jun 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-06-18-mysql_table%E3%81%8C%E5%AD%98%E5%9C%A8%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AB%E5%91%BC%E3%81%B9%E3%81%AA%E3%81%84%E6%99%82_docker-compose/</guid><description>&lt;p>docker-compose で作成したmysqlへのアクセスで、&lt;br>
存在するはずのテーブルに接続できない問題が発生しました。&lt;/p>
&lt;p>結果的に、原因はわからなかったのですが コンテナとネットワークの削除 で解決しました。&lt;/p>
&lt;p>以下事象と対処のbashコマンド&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>&amp;gt; show tables;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+-----------------------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| Tables_in_azimicat_dev |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+-----------------------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| azimicat |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| azimicatTest |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+-----------------------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>2 rows in set (0.01 sec)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>&amp;gt; show columns fromazimicatTest;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ERROR 1146 (42S02): Table &amp;#39;azimicat_dev.azimicatTest&amp;#39; doesn&amp;#39;t exist
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>こんな感じで存在するはずなのにしないことにされる。&lt;/p>
&lt;p>コンテナとネットワークの削除&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ docker-compose down
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>コンテナとネットワークを再度起動する&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ docker-compose up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>今回はこれで解決しました。&lt;/p></description></item><item><title>php 7.2 laravel 5.5 起動しない “could not find driver”</title><link>https://tech-b.azimicat.dev/docs/old/2020-06-16-php_7.2_laravel_5.5_%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%AA%E3%81%84_could_not_find_driver/</link><pubDate>Tue, 16 Jun 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-06-16-php_7.2_laravel_5.5_%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%AA%E3%81%84_could_not_find_driver/</guid><description>&lt;p>&lt;strong>laravel 5.5&lt;/strong> 環境において、&lt;strong>php 7.1.33 から php 7.2.9 にあげた&lt;/strong>ところ、初期画面で**“could not find driver”**が出て正常に起動しなくなってしまった。&lt;/p>
&lt;p>それの対処。&lt;/p>
&lt;p>追記修正しました！&lt;/p>
&lt;p>&lt;del>&lt;a href="https://blog.azimicat.com/entry/20200709/1594288663">blog.azimicat.com&lt;/a>&lt;/del>&lt;/p>
&lt;p>以下元の記事&lt;/p>
&lt;hr>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ sudo composer update // composerを最新にする 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ git -C &amp;#34;$(brew --repo homebrew/core)&amp;#34; fetch --unshallow // 最新にする際に指摘されたコマンドを実行 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ brew install php@7.2 // 必要なphpバージョンを指定でインストール
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>パスの登録&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">$&lt;/span> echo &lt;span style="color:#1bc5e0">&amp;#39;export PATH=&amp;#34;/usr/local/opt/php@7.2/bin:$PATH&amp;#34;&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#ffb8d1">/&lt;/span>Users&lt;span style="color:#ffb8d1">/&lt;/span>[user_name]&lt;span style="color:#ffb8d1">/.&lt;/span>bash_profile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ brew services start php@7.2 // 起動&amp;amp;自動起動を設定
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これで起動できました！&lt;/p></description></item><item><title>うっかりdocker-composeファイルを起動状態のまま削除してしまった時</title><link>https://tech-b.azimicat.dev/docs/old/2020-06-16-%E3%81%86%E3%81%A3%E3%81%8B%E3%82%8Adocker-compose%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%B5%B7%E5%8B%95%E7%8A%B6%E6%85%8B%E3%81%AE%E3%81%BE%E3%81%BE%E5%89%8A%E9%99%A4%E3%81%97%E3%81%A6%E3%81%97%E3%81%BE%E3%81%A3%E3%81%9F%E6%99%82/</link><pubDate>Tue, 16 Jun 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-06-16-%E3%81%86%E3%81%A3%E3%81%8B%E3%82%8Adocker-compose%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%B5%B7%E5%8B%95%E7%8A%B6%E6%85%8B%E3%81%AE%E3%81%BE%E3%81%BE%E5%89%8A%E9%99%A4%E3%81%97%E3%81%A6%E3%81%97%E3%81%BE%E3%81%A3%E3%81%9F%E6%99%82/</guid><description>&lt;p>こういう感じで残っている。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ docker ps -a 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>8cd85ba19c5b        mysql:5.7           &amp;#34;docker-entrypoint.s...&amp;#34;   8 minutes ago       Exited (0) 7 minutes ago                       local-mysql 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>f2e36d653ef5        rabbitmq:3.7        &amp;#34;docker-entrypoint.s...&amp;#34;   8 minutes ago       Exited (0) 7 minutes ago                       local-mq02 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>e9e9e8b58232        rabbitmq:3.7        &amp;#34;docker-entrypoint.s...&amp;#34;   8 minutes ago       Exited (0) 7 minutes ago                       local-mq01 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>c55fbdeac81b        redis:4.0           &amp;#34;docker-entrypoint.s...&amp;#34;   8 minutes ago       Exited (0) 7 minutes ago                       nicoex-local-redis
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>無理だよって言われる。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">$&lt;/span> docker&lt;span style="color:#ffb8d1">-&lt;/span>compose down 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>WARNING: The MYSQL_DATABASE variable is &lt;span style="color:#ffb8d1">not&lt;/span> set&lt;span style="color:#ffb8d1">.&lt;/span> Defaulting to a blank string&lt;span style="color:#ffb8d1">.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>無理だよって言われる。&lt;/p></description></item><item><title>正しいクラス名でClassName not foundがでるとき</title><link>https://tech-b.azimicat.dev/docs/old/2020-06-08-%E6%AD%A3%E3%81%97%E3%81%84%E3%82%AF%E3%83%A9%E3%82%B9%E5%90%8D%E3%81%A7classname_not_found%E3%81%8C%E3%81%A7%E3%82%8B%E3%81%A8%E3%81%8D/</link><pubDate>Mon, 08 Jun 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-06-08-%E6%AD%A3%E3%81%97%E3%81%84%E3%82%AF%E3%83%A9%E3%82%B9%E5%90%8D%E3%81%A7classname_not_found%E3%81%8C%E3%81%A7%E3%82%8B%E3%81%A8%E3%81%8D/</guid><description>&lt;p>laravelはcomposerがクラス名を管理している&lt;/p>
&lt;p>composer管轄外でクラス名を変更する（手で勝手にクラス名を変えたり、コマンドを挟まずにクラスを新規に作るなど）すると、クラスが見つからないエラーが発生する時がある&lt;/p>
&lt;p>composerにクラス名を変更したことを伝えるためのコマンドは↓これ&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>composer dump&lt;span style="color:#ffb8d1">-&lt;/span>autoload
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>オートローダーについてはこののブログがわかりやすかった&lt;/p>
&lt;p>&lt;a href="https://laraweb.net/surrounding/1642/">laraweb.net&lt;/a>&lt;/p></description></item><item><title>larave5.5 Unknown database type enum requested を解決できた</title><link>https://tech-b.azimicat.dev/docs/old/2020-05-26-larave5.5unknown_database_type_enum_requested_%E3%82%92%E8%A7%A3%E6%B1%BA%E3%81%A7%E3%81%8D%E3%81%9F/</link><pubDate>Tue, 26 May 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-05-26-larave5.5unknown_database_type_enum_requested_%E3%82%92%E8%A7%A3%E6%B1%BA%E3%81%A7%E3%81%8D%E3%81%9F/</guid><description>&lt;p>↓この記事、解決しました！！&lt;/p>
&lt;p>&lt;del>&lt;a href="https://blog.azimicat.com/entry/20200522/1590131293">blog.azimicat.com&lt;/a>&lt;/del>&lt;/p>
&lt;p>ドキュメントが間違っていました。&lt;/p>
&lt;p>enumカラムの名前の変更はサポートされていないと書いてありましたが、実際にはenumカラムを含むテーブル上の任意のカラムの名前を変更したときにエラーが発生します。&lt;/p>
&lt;p>そしてこれには回避策がありました。&lt;/p>
&lt;p>&lt;strong>Doctrine に enum が文字列であることを伝えればよい&lt;/strong>です。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span>$platform &lt;span style="color:#ffb8d1">=&lt;/span> Schema&lt;span style="color:#ffb8d1">::&lt;/span>getConnection()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>getDoctrineSchemaManager()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>getDatabasePlatform();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$platform&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>registerDoctrineTypeMapping(&lt;span style="color:#1bc5e0">&amp;#39;enum&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;string&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これをこんな感じでいれてあげればOK&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">public&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> up()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  &lt;span style="color:#b0bec5">// enum を string 扱いするように指示する
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>  $platform &lt;span style="color:#ffb8d1">=&lt;/span> Schema&lt;span style="color:#ffb8d1">::&lt;/span>getConnection()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>getDoctrineSchemaManager()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>getDatabasePlatform();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  $platform&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>registerDoctrineTypeMapping(&lt;span style="color:#1bc5e0">&amp;#39;enum&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;string&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  &lt;span style="color:#b0bec5">// カラム名を変更
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>  Schema&lt;span style="color:#ffb8d1">::&lt;/span>table(&lt;span style="color:#1bc5e0">&amp;#39;animals&amp;#39;&lt;/span>, &lt;span style="color:#c2ffdf">function&lt;/span> (Blueprint $table) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>      $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>renameColumn(&lt;span style="color:#1bc5e0">&amp;#39;Lion&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;Cat&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  &lt;span style="color:#b0bec5">// string型へ変更
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>  Schema&lt;span style="color:#ffb8d1">::&lt;/span>table(&lt;span style="color:#1bc5e0">&amp;#39;newsBotPrograms&amp;#39;&lt;/span>, &lt;span style="color:#c2ffdf">function&lt;/span> (Blueprint $table) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>      $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>string(&lt;span style="color:#1bc5e0">&amp;#39;Cat&amp;#39;&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>change();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>解決はできたけど、バグのようなので「update で解決されるといいね」というものらしい。&lt;/p></description></item><item><title>larave5.5 において enum を含む table では getColumnType() は使用できない</title><link>https://tech-b.azimicat.dev/docs/old/2020-05-22-larave5.5_%E3%81%AB%E3%81%8A%E3%81%84%E3%81%A6_enum_%E3%82%92%E5%90%AB%E3%82%80_table_%E3%81%A7%E3%81%AF_getcolumntype_%E3%81%AF%E4%BD%BF%E7%94%A8%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84/</link><pubDate>Fri, 22 May 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-05-22-larave5.5_%E3%81%AB%E3%81%8A%E3%81%84%E3%81%A6_enum_%E3%82%92%E5%90%AB%E3%82%80_table_%E3%81%A7%E3%81%AF_getcolumntype_%E3%81%AF%E4%BD%BF%E7%94%A8%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84/</guid><description>&lt;p>以下の記事で解決しました！&lt;/p>
&lt;p>&lt;del>&lt;a href="https://blog.azimicat.com/entry/20200526/1590480388">blog.azimicat.com&lt;/a>&lt;/del>&lt;/p>
&lt;p>以下元記事 &lt;/p>
&lt;hr>
&lt;p>以下のようにカラムのタイプを確認してchange()をかけようとしたところ、エラー (Unknown database type enum requested) が発生する&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">if&lt;/span> (&lt;span style="color:#ffb8d1">!&lt;/span>Schema&lt;span style="color:#ffb8d1">::&lt;/span>getColumnType(&lt;span style="color:#1bc5e0">&amp;#39;animal&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;cat&amp;#39;&lt;/span>) &lt;span style="color:#ffb8d1">===&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;int&amp;#39;&lt;/span>) { 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>staring(&lt;span style="color:#1bc5e0">&amp;#39;cat&amp;#39;&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>change(); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>似ているissueが上がっていたのでみてみたけど結局は &lt;strong>使えない&lt;/strong> という結論になった。&lt;/p>
&lt;p>&lt;a href="https://github.com/cloudstudio/resource-generator/issues/10">https://github.com/cloudstudio/resource-generator/issues/10&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>このメソッドにquick try/catchを入れて、DBALExceptionsをキャッチしたときに‘enum’を返すとうまくいくようです。&lt;/p>
&lt;/blockquote>
&lt;p>って感じのことが書かれてた。わからん。&lt;/p>
&lt;p>カラム属性の確認をするのに、&lt;/p>
&lt;p>&lt;strong>vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php&lt;/strong>&lt;/p>
&lt;p>の &lt;strong>public function getColumnType($table, $column)&lt;/strong> を使おうとしたのだけれど&lt;/p>
&lt;p>このテーブルにenumが含まれるとDBALExceptionsが飛ぶ様子。&lt;/p>
&lt;p>正確にはこれが返ってくる&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>In AbstractPlatform&lt;span style="color:#ffb8d1">.&lt;/span>php line &lt;span style="color:#c5a3ff">434&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  Unknown database type &lt;span style="color:#c2ffdf">enum&lt;/span> requested, Doctrine\\DBAL\\Platforms\\MySQL57Platform may &lt;span style="color:#ffb8d1">not&lt;/span> support it&lt;span style="color:#ffb8d1">.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>MySQL57Platform は上記URLの人が言うMarinaDB同様に enum に対応していないので使えないよってことらしい。（読んだそのままだ&amp;hellip;&lt;/p>
&lt;p>どうしようもないのでチェックは諦めることにした。&lt;/p>
&lt;p>せっかくあるのに使えないなんて残念。&lt;/p></description></item><item><title> ルーティングが正しそうなのに死ぬときは post と バリデーションエラーによる redirect の罠</title><link>https://tech-b.azimicat.dev/docs/old/2020-05-14-_%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%9D%E3%81%86%E3%81%AA%E3%81%AE%E3%81%AB%E6%AD%BB%E3%81%AC%E3%81%A8%E3%81%8D%E3%81%AF_post_%E3%81%A8_%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%82%88%E3%82%8B_redirect_%E3%81%AE%E7%BD%A0/</link><pubDate>Thu, 14 May 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-05-14-_%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%9D%E3%81%86%E3%81%AA%E3%81%AE%E3%81%AB%E6%AD%BB%E3%81%AC%E3%81%A8%E3%81%8D%E3%81%AF_post_%E3%81%A8_%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%82%88%E3%82%8B_redirect_%E3%81%AE%E7%BD%A0/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Symfony \\ Component \\ HttpKernel \\ Exception \\ MethodNotAllowedHttpExceptionNo message
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="このエラー時に疑うべきこと">このエラー時に、疑うべきこと。&lt;/h4>
&lt;ul>
&lt;li>ルーティング間違い&lt;/li>
&lt;li>&lt;strong>post時のバリデーション落ちによるループエラー&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>→ どういうことかというと&amp;hellip;&lt;/p>
&lt;p>controller に post の function A, function B があるとして&lt;br>
A&lt;br>
→ post + param&lt;br>
→ Bに進むがバリデーションで落ちる&lt;br>
→ リダイレクト**(問答無用でget)**&lt;br>
→ Aに戻って画面を表示したいが &lt;strong>get なので 403 エラー&lt;/strong>&lt;/p>
&lt;h4 id="確認順序">確認順序&lt;/h4>
&lt;ul>
&lt;li>バリデーションを一番ゆるいものにしてみる（ガバガバ運用）&lt;/li>
&lt;li>ルーティングを確認してみる（似たような名前で躓いている可能性）&lt;/li>
&lt;li>HTMLを最も単純なものにする（クライアントのエラーか、サーバーのエラーかを切り分ける）&lt;/li>
&lt;li>fetchのレスポンスを確認してみる（サーバーから帰ってきたレスポンスによってクライアントがリダイレクトしている可能性を排除）&lt;/li>
&lt;li>typoを確認してみる（最も見つけにくいので最後）&lt;/li>
&lt;/ul></description></item><item><title>php.ini の場所を探すコマンド</title><link>https://tech-b.azimicat.dev/docs/old/2020-03-17-php.ini_%E3%81%AE%E5%A0%B4%E6%89%80%E3%82%92%E6%8E%A2%E3%81%99%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/</link><pubDate>Tue, 17 Mar 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-03-17-php.ini_%E3%81%AE%E5%A0%B4%E6%89%80%E3%82%92%E6%8E%A2%E3%81%99%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/</guid><description>&lt;p>php.ini の場所を探す時のコマンド&lt;/p>
&lt;p>phpbrew とかを入れていてもこれで検索できる。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ php -i | grep php.ini
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Configuration File &lt;span style="color:#ffb8d1">(&lt;/span>php.ini&lt;span style="color:#ffb8d1">)&lt;/span> Path &lt;span style="color:#ffb8d1">=&lt;/span>&amp;gt; /Users/&lt;span style="color:#ffb8d1">{&lt;/span>username&lt;span style="color:#ffb8d1">}&lt;/span>/.phpbrew/php/php-7.1.33/etc 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Loaded Configuration File &lt;span style="color:#ffb8d1">=&lt;/span>&amp;gt; /Users/&lt;span style="color:#ffb8d1">{&lt;/span>username&lt;span style="color:#ffb8d1">}&lt;/span>/.phpbrew/php/php-7.1.33/etc/php.ini
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>phpbrew: システムデフォルトバージョンの切り替え</title><link>https://tech-b.azimicat.dev/docs/old/2020-03-12-phpbrew_%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88/</link><pubDate>Thu, 12 Mar 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-03-12-phpbrew_%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88/</guid><description>&lt;p>phpbrew をインストールしたものの切り替えを間違えていた。&lt;/p>
&lt;p>use と switch があったのだけれど、help のとおり&lt;strong>system 全体に適用するには switch&lt;/strong> を使うこと。&lt;/p>
&lt;p>&lt;strong>現在のディレクトリだけに一時的に適用するなら use&lt;/strong> を使う。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>use    Use php, switch version temporarily 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>switch    Switch default php version.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p># 例&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>phpbrew use php-7.2.9
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>phpbrew known で json_decode() 云々のエラーが発生する</title><link>https://tech-b.azimicat.dev/docs/old/2020-03-02-phpbrew_known_%E3%81%A7_json_decode_%E4%BA%91%E3%80%85%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B/</link><pubDate>Mon, 02 Mar 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-03-02-phpbrew_known_%E3%81%A7_json_decode_%E4%BA%91%E3%80%85%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ phpbrew known
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>を実行すると以下のようなエラーが発生しました&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>PHP Fatal error: Uncaught Error: Call to undefined function PhpBrew\\json_decode() in phar:///usr/local/bin/phpbrew/src/PhpBrew/ReleaseList.php:50
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>解決の参考にしたサイト： &lt;a href="https://github.com/phpbrew/phpbrew/issues/970">https://github.com/phpbrew/phpbrew/issues/970&lt;/a>&lt;/p>
&lt;p>サイトには以下のように書かれていましたが、&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>&amp;gt; _solved_
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; _phpbrew ext install json worked for me_
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>私の場合実行すると autoconf が足りないというエラーが出たので先に autoconf を入れることにしました&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ brew install autoconf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ phpbrew ext install json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>再度実行すると、ちゃんと表示されるようになりました&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ phpbrew known 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>_\# WARNING: ctype extension might be required for parsing yaml file._ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Read local release list (last update: 2020-02-26 11:05:46 UTC). 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>You can run \`phpbrew update\` or \`phpbrew known --update\` to get a newer release list. 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>7.4: 7.4.3, 7.4.2, 7.4.1, 7.4.0 ... 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>7.3: 7.3.15, 7.3.13, 7.3.12, 7.3.11, 7.3.10, 7.3.9, 7.3.8, 7.3.7 ... 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>7.2: 7.2.28, 7.2.27, 7.2.26, 7.2.25, 7.2.24, 7.2.23, 7.2.22, 7.2.21 ... 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>7.1: 7.1.33, 7.1.32, 7.1.31, 7.1.30, 7.1.29, 7.1.28, 7.1.27, 7.1.26 ... 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>7.0: 7.0.33, 7.0.32, 7.0.31, 7.0.30, 7.0.29, 7.0.28, 7.0.27, 7.0.26 ... 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>5.6: 5.6.40, 5.6.39, 5.6.38, 5.6.37, 5.6.36, 5.6.35, 5.6.34, 5.6.33 ... 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>5.5: 5.5.38, 5.5.37, 5.5.36, 5.5.35, 5.5.34, 5.5.33, 5.5.32, 5.5.31 ... 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>5.4: 5.4.45, 5.4.44, 5.4.43, 5.4.42, 5.4.41, 5.4.40, 5.4.39, 5.4.38 ...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>composer を入れる</title><link>https://tech-b.azimicat.dev/docs/old/2020-02-07-composer_%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B/</link><pubDate>Fri, 07 Feb 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-02-07-composer_%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B/</guid><description>&lt;p>Composer のインストールは、コマンドを実行したディレクトリで実行・ファイル生成されるので、ホームディレクトリで作業するのをオススメします&lt;/p>
&lt;p>以降のコマンドもホームディレクトリで実行したものとして記載しています&lt;/p>
&lt;h1 id="インストール">&lt;strong>インストール&lt;/strong>&lt;/h1>
&lt;p>&lt;a href="https://getcomposer.org/download/">Composer の公式サイト&lt;/a>で指定されているコマンドを入力&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ php -r &amp;#34;copy(&amp;#39;[https://getcomposer.org/installer&amp;#39;,](https://getcomposer.org/installer&amp;#39;,) &amp;#39;composer-setup.php&amp;#39;);&amp;#34; 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ php -r &amp;#34;if (hash_file(&amp;#39;sha384&amp;#39;, &amp;#39;composer-setup.php&amp;#39;) === &amp;#39;c5b9b6d368201a9db6f74e2611495f369991b72d9c8cbd3ffbc63edff210eb73d46ffbfce88669ad33695ef77dc76976&amp;#39;) { echo &amp;#39;Installer verified&amp;#39;; } else { echo &amp;#39;Installer corrupt&amp;#39;; unlink(&amp;#39;composer-setup.php&amp;#39;); } echo PHP_EOL;&amp;#34; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Installer verified
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">$&lt;/span> php composer&lt;span style="color:#ffb8d1">-&lt;/span>setup&lt;span style="color:#ffb8d1">.&lt;/span>php 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>All settings correct &lt;span style="color:#c2ffdf">for&lt;/span> using Composer 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Downloading&lt;span style="color:#ffb8d1">...&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Composer (version &lt;span style="color:#c5a3ff">1.9&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>&lt;span style="color:#c5a3ff">3&lt;/span>) successfully installed to: &lt;span style="color:#ffb8d1">/&lt;/span>Users&lt;span style="color:#ffb8d1">/&lt;/span>{user_name}&lt;span style="color:#ffb8d1">/&lt;/span>htdocs&lt;span style="color:#ffb8d1">/&lt;/span>{project_name}&lt;span style="color:#ffb8d1">/&lt;/span>composer&lt;span style="color:#ffb8d1">.&lt;/span>phar 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Use it: php composer&lt;span style="color:#ffb8d1">.&lt;/span>phar 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ php -r &amp;#34;unlink(&amp;#39;composer-setup.php&amp;#39;);&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Version を確認する&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ ./composer.phar -V 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Composer version 1.9.3 2020-02-04 12:58:49
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>composer.phar から拡張子を消す&lt;/p></description></item><item><title>GitへのSSH接続時の設定など</title><link>https://tech-b.azimicat.dev/docs/old/2020-02-06-git%E3%81%B8%E3%81%AEssh%E6%8E%A5%E7%B6%9A%E6%99%82%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%AA%E3%81%A9/</link><pubDate>Thu, 06 Feb 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-02-06-git%E3%81%B8%E3%81%AEssh%E6%8E%A5%E7%B6%9A%E6%99%82%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%AA%E3%81%A9/</guid><description>&lt;p>SSH接続を2方向にするやつ。当然だけど、設定後 clone は ssh を使うこと！&lt;/p>
&lt;p>[秘密鍵の生成] ファイル名、私は個人のユーザ名(asahina-dev)とcompanyで分けている&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ ssh-keygen -t rsa -C &amp;#34;your_email@example.com&amp;#34; -f &amp;#34;{file_name}&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>[公開鍵のコピー]&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ pbcopy &amp;lt; ~/.ssh/{file_name}.pub
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>[公開鍵を Git に設定]&lt;/p>
&lt;p>&lt;a href="https://github.com/settings/keys">https://github.com/settings/keys&lt;/a>&lt;/p>
&lt;p>ここで設定する。余分な改行とかスペースとか入らないように気をつける。&lt;/p>
&lt;p>Titleは好きにして良い。わかりやすいもの。自分のPC名とかだとわかりやすいかも。&lt;/p>
&lt;p>[権限] &lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ ls -l ~/.ssh/ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-------  asahina-dev 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r--  asahina-dev.pub 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r--  config 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-------  company 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r--  company.pub 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r--  known_hosts _#これは接続すると自動で追加されるファイル_
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>[~/.ssh下の構成]&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>/.ssh 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>|--asahina-dev 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>|--asahina-dev.pub 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>|--config 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>|--company 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>|--company.pub 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>|--known_hosts _#これは接続すると自動で追加されるファイル_
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>[~/.ssh/config] ホストがかぶる場合は &lt;strong>github.com.hoge&lt;/strong> とかで名前を分けると良い分けた場合はcloneのときつけ忘れないよう注意&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Host github.com 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  HostName github.com 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  User git 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  Port 22 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  IdentityFile ~/.ssh/asahina-dev 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  TCPKeepAlive yes 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  IdentitiesOnly yes 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Host {会社のGitnoHost名} 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  HostName {会社のGitnoHost名} 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  User git 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  IdentityFile ~/.ssh/company 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  TCPKeepAlive yes 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  IdentitiesOnly yes
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>[接続を試す]&lt;/p></description></item><item><title> VSCodeをいれた時に code で起動するように設定する</title><link>https://tech-b.azimicat.dev/docs/old/2020-02-05-_vscode%E3%82%92%E3%81%84%E3%82%8C%E3%81%9F%E6%99%82%E3%81%AB_code_%E3%81%A7%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/</link><pubDate>Wed, 05 Feb 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-02-05-_vscode%E3%82%92%E3%81%84%E3%82%8C%E3%81%9F%E6%99%82%E3%81%AB_code_%E3%81%A7%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/</guid><description>&lt;p>VSCode を起動したら、&lt;code>⌘+P&lt;/code> を入力するとこういうのが出てくるので&lt;/p>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20200205/20200205193634.png" alt="f:id:azix:20200205193634p:plain" title="f:id:azix:20200205193634p:plain">&lt;/p>
&lt;p>以下を入力する &amp;amp; Enter&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Shell Command: Install &amp;#39;code&amp;#39; command in PATH
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20200205/20200205193650.png" alt="f:id:azix:20200205193650p:plain" title="f:id:azix:20200205193650p:plain">&lt;/p>
&lt;p>これでもう、terminal で &lt;code>code .&lt;/code> とかで VSCode でプロジェクトを開ける&lt;/p></description></item><item><title>nodeをmacに入れる</title><link>https://tech-b.azimicat.dev/docs/old/2020-02-05-node%E3%82%92mac%E3%81%AB%E5%85%A5%E3%82%8C%E3%82%8B/</link><pubDate>Wed, 05 Feb 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-02-05-node%E3%82%92mac%E3%81%AB%E5%85%A5%E3%82%8C%E3%82%8B/</guid><description>&lt;p>homebrewをつかってnodeを入れることにします。&lt;/p>
&lt;h1 id="1-homebrewを入れる">&lt;strong>1. homebrewを入れる&lt;/strong>&lt;/h1>
&lt;p>&lt;a href="https://brew.sh/index_ja">https://brew.sh/index_ja&lt;/a>&lt;/p>
&lt;p>ここに書かれているスクリプトを実行します&lt;/p>
&lt;h1 id="2-nodebrewを入れる">&lt;strong>2. nodebrewを入れる&lt;/strong>&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ brew install nodebrew
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>実行結果の最後に、こんな感じの出力がされればOK&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>==&amp;gt; Summary 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>🍺  /usr/local/Cellar/nodebrew/1.0.1: 8 files, 38.6KB, built in 3 seconds
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>バージョンの確認 1.0.1 が入ったことがわかります&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ nodebrew help 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nodebrew 1.0.1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>次はセットアップです&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">$&lt;/span> nodebrew setup 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Fetching nodebrew&lt;span style="color:#ffb8d1">...&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Installed nodebrew &lt;span style="color:#ffb8d1">in&lt;/span> &lt;span style="color:#ffb8d1">$&lt;/span>HOME&lt;span style="color:#ffb8d1">/.&lt;/span>nodebrew 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">========================================&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Export a path to nodebrew: 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">export&lt;/span> PATH&lt;span style="color:#ffb8d1">=$&lt;/span>HOME&lt;span style="color:#ffb8d1">/.&lt;/span>nodebrew&lt;span style="color:#ffb8d1">/&lt;/span>current&lt;span style="color:#ffb8d1">/&lt;/span>bin:&lt;span style="color:#ffb8d1">$&lt;/span>PATH 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">========================================&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>指示通りに実行します&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">$&lt;/span> &lt;span style="color:#c2ffdf">export&lt;/span> PATH&lt;span style="color:#ffb8d1">=$&lt;/span>HOME&lt;span style="color:#ffb8d1">/.&lt;/span>nodebrew&lt;span style="color:#ffb8d1">/&lt;/span>current&lt;span style="color:#ffb8d1">/&lt;/span>bin:&lt;span style="color:#ffb8d1">$&lt;/span>PATH
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>export だけだとターミナルを落とすと初期化されちゃうので ~/.bash_profile にも設定を書くこと&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">export&lt;/span> PATH&lt;span style="color:#ffb8d1">=$&lt;/span>PATH:&lt;span style="color:#ffb8d1">$&lt;/span>HOME&lt;span style="color:#ffb8d1">/.&lt;/span>nodebrew&lt;span style="color:#ffb8d1">/&lt;/span>current&lt;span style="color:#ffb8d1">/&lt;/span>bin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="3-nodejs-のインストール">&lt;strong>3. Node.js のインストール&lt;/strong> &lt;/h1>
&lt;p>インストールできるバージョンの確認をするとき&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ nodebrew ls-all
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>私は、安定版を入れたいので&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ nodebrew install-binary stable
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Fetching: [https://nodejs.org/dist/v12.14.1/node-v12.14.1-darwin-x64.tar.gz](https://nodejs.org/dist/v12.14.1/node-v12.14.1-darwin-x64.tar.gz)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>######################################################################## 100.0%
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Installed successfully
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>入ったバージョンを確認します&lt;/p></description></item><item><title>rustupのインストール</title><link>https://tech-b.azimicat.dev/docs/old/2020-02-05-rustup%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/</link><pubDate>Wed, 05 Feb 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-02-05-rustup%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/</guid><description>&lt;p>&lt;a href="https://doc.rust-jp.rs/the-rust-programming-language-ja/1.6/book/getting-started.html">ここ&lt;/a>に書いてあることを簡略化して書いています。&lt;/p>
&lt;h1 id="rustup-をインストール">&lt;strong>Rustup をインストール&lt;/strong>&lt;/h1>
&lt;p>（Rust 1.14.0 以降はインストール方法が変更されて以下になった&amp;hellip;とのこと）&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">$&lt;/span> curl [https:&lt;span style="color:#ffb8d1">//&lt;/span>sh&lt;span style="color:#ffb8d1">.&lt;/span>rustup&lt;span style="color:#ffb8d1">.&lt;/span>rs](https:&lt;span style="color:#ffb8d1">//&lt;/span>sh&lt;span style="color:#ffb8d1">.&lt;/span>rustup&lt;span style="color:#ffb8d1">.&lt;/span>rs) &lt;span style="color:#ffb8d1">-&lt;/span>sSf &lt;span style="color:#ffb8d1">|&lt;/span> sh 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Welcome to Rust&lt;span style="color:#ffb8d1">!&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">...&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">略&lt;/span>&lt;span style="color:#ffb8d1">...&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Current installation options: 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  default host triple: x86_64&lt;span style="color:#ffb8d1">-&lt;/span>apple&lt;span style="color:#ffb8d1">-&lt;/span>darwin 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>    default toolchain: stable 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>              profile: default 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  modify PATH variable: yes 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c5a3ff">1&lt;/span>) Proceed with installation (default) 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c5a3ff">2&lt;/span>) Customize installation 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c5a3ff">3&lt;/span>) Cancel installation 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これが出たら Enter でOK&lt;/p>
&lt;p>その後このように出るので&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>Rust is installed now&lt;span style="color:#ffb8d1">.&lt;/span> Great&lt;span style="color:#ffb8d1">!&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>To get started you need Cargo&lt;span style="color:#1bc5e0">&amp;#39;s bin directory ($HOME/.cargo/bin) in your PATH &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>environment variable&lt;span style="color:#ffb8d1">.&lt;/span> Next time you log &lt;span style="color:#ffb8d1">in&lt;/span> this will be done 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>automatically&lt;span style="color:#ffb8d1">.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>指示に従いPATH を追加（永続的に設定するには ~/.bash_profile に設定すること）&lt;/p></description></item><item><title>エラー解決 [Unable to authenticate, need: Basic realm="Artifactory Realm"]</title><link>https://tech-b.azimicat.dev/docs/old/2020-02-04-%E3%82%A8%E3%83%A9%E3%83%BC%E8%A7%A3%E6%B1%BA_unable_to_authenticate_need_basic_realmquotartifactory_realmquot/</link><pubDate>Tue, 04 Feb 2020 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2020-02-04-%E3%82%A8%E3%83%A9%E3%83%BC%E8%A7%A3%E6%B1%BA_unable_to_authenticate_need_basic_realmquotartifactory_realmquot/</guid><description>&lt;p>&lt;strong>エラー解決&lt;/strong>&lt;/p>
&lt;p>$ npm install 時に以下のエラーが発生&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Unable to authenticate, need: Basic realm=&amp;#34;Artifactory Realm&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これはおそらくProxy認証の問題なので設定を見直す必要がある&lt;/p>
&lt;ul>
&lt;li>Proxy設定を確認する&lt;/li>
&lt;li>設定変更する&lt;/li>
&lt;li>再実行で確認&lt;/li>
&lt;/ul>
&lt;h1 id="proxy設定の確認">&lt;strong>Proxy設定の確認&lt;/strong>&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ npm config list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これで出てくる。&lt;/p>
&lt;p>目的のパスが含まれていなかったら設定されていないと思ってOK&lt;/p>
&lt;h1 id="設定変更する">&lt;strong>設定変更する&lt;/strong>&lt;/h1>
&lt;p>設定のやり方は2パターンあると思っていて&lt;/p>
&lt;p>1.こんな感じで入力していくやり方&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ npm login --registry=[http://domain/](http://domain/){任意のpath} 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Username: {your Username} 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Password: {your Password} 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Email: (this IS public) {your Email} 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Logged in as Username on [http://domain/](http://domain/){任意のpath}.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>2.一行でバシッときめちゃうやり方&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ npm config set proxy &amp;#34;http://{domain}\\{username}:{password}@{servername}:{port}/&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>です。&lt;/p>
&lt;p>私は1のやり方が楽だったのでそうしました。&lt;/p>
&lt;h1 id="再実行で確認">&lt;strong>再実行で確認&lt;/strong>&lt;/h1>
&lt;p>再実行で確認してみます。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ npm i 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>...略... 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>npm notice created a lockfile as package-lock.json. You should commit this file. 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>added 917 packages from 695 contributors and audited 1769137 packages in 55.781s 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>19 packages are looking for funding 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>  run \`npm fund\` for details 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>found 0 vulnerabilities
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>うごいた！OK〜！&lt;/p></description></item><item><title> define() を用いた配列定数の定義</title><link>https://tech-b.azimicat.dev/docs/old/2019-12-18-_define_%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E9%85%8D%E5%88%97%E5%AE%9A%E6%95%B0%E3%81%AE%E5%AE%9A%E7%BE%A9/</link><pubDate>Wed, 18 Dec 2019 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2019-12-18-_define_%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E9%85%8D%E5%88%97%E5%AE%9A%E6%95%B0%E3%81%AE%E5%AE%9A%E7%BE%A9/</guid><description>&lt;p>&lt;a href="https://www.php.net/manual/ja/migration70.new-features.php#migration70.new-features.define-array">PHP 7.0.xx〜の機能&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>define(配列名, [&lt;span style="color:#1bc5e0">&amp;#39;あいうえお&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;かきくけこ&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;さしすせそ&amp;#39;&lt;/span>]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> 配列名[&lt;span style="color:#c5a3ff">0&lt;/span>]; &lt;span style="color:#b0bec5">// &amp;#34;あいうえお&amp;#34; が出力される
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>このように配列を定義できる。&lt;br>
当然ながらdefine()で定義した配列に値を代入することはできない。&lt;br>
&lt;br/>
&lt;del>以下&lt;a href="https://paiza.io/projects/ssb7LikvXCNoqSR2-oknGQ:embed:cite">sample code&lt;/a>&lt;/del>&lt;/p></description></item><item><title>Null合体演算子(??)について</title><link>https://tech-b.azimicat.dev/docs/old/2019-12-18-null%E5%90%88%E4%BD%93%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</link><pubDate>Wed, 18 Dec 2019 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2019-12-18-null%E5%90%88%E4%BD%93%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</guid><description>&lt;p>PHP7.0.xx〜 &lt;code>null 合体演算子 (??)&lt;/code> がシンタックスシュガーとして追加された。&lt;/p>
&lt;p>三項演算子とisset()を組み合わせた演算子で、以下のような挙動をする。&lt;br>
第1オペランドが非NULLの値であればそれを返し、 そうでない場合は第2オペランドを返す。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// https://3v4l.org/8ns9N
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$array &lt;span style="color:#ffb8d1">=&lt;/span> [];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> $array[&lt;span style="color:#1bc5e0">&amp;#34;hoge&amp;#34;&lt;/span>] &lt;span style="color:#ffb8d1">??&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;undefined index&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">.&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">??&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;空文字&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">.&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#c2ffdf">null&lt;/span> &lt;span style="color:#ffb8d1">??&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;null&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">.&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#c2ffdf">false&lt;/span> &lt;span style="color:#ffb8d1">??&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;false&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">.&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// Output for 7.2.0 - 7.4.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// undefined index
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// null
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>連想配列において特定のindexのみを抜き出して（加工したりして）配列にする処理</title><link>https://tech-b.azimicat.dev/docs/old/2019-10-29-%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97%E3%81%AB%E3%81%8A%E3%81%84%E3%81%A6%E7%89%B9%E5%AE%9A%E3%81%AEindex%E3%81%AE%E3%81%BF%E3%82%92%E6%8A%9C%E3%81%8D%E5%87%BA%E3%81%97%E3%81%A6%E5%8A%A0%E5%B7%A5%E3%81%97%E3%81%9F%E3%82%8A%E3%81%97%E3%81%A6%E9%85%8D%E5%88%97%E3%81%AB%E3%81%99%E3%82%8B%E5%87%A6%E7%90%86/</link><pubDate>Tue, 29 Oct 2019 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2019-10-29-%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97%E3%81%AB%E3%81%8A%E3%81%84%E3%81%A6%E7%89%B9%E5%AE%9A%E3%81%AEindex%E3%81%AE%E3%81%BF%E3%82%92%E6%8A%9C%E3%81%8D%E5%87%BA%E3%81%97%E3%81%A6%E5%8A%A0%E5%B7%A5%E3%81%97%E3%81%9F%E3%82%8A%E3%81%97%E3%81%A6%E9%85%8D%E5%88%97%E3%81%AB%E3%81%99%E3%82%8B%E5%87%A6%E7%90%86/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// 元になる配列
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$data &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">array&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">array&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;id&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#c5a3ff">1&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;name&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;Bob&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;position&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;Clerk&amp;#39;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">array&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;id&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#c5a3ff">2&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;name&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;Alan&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;position&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;Manager&amp;#39;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">array&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;id&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#c5a3ff">3&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;name&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;James&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;position&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;Director&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;hoge&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;hogeeeeee&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// array_map()を使って、index=hogeを抽出/加工。 参考: https://www.php.net/manual/ja/function.array-map.php
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$names &lt;span style="color:#ffb8d1">=&lt;/span> array_map(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">function&lt;/span>($person) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">// &amp;#39;hoge&amp;#39;を持たないものは無視
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">if&lt;/span> (&lt;span style="color:#ffb8d1">!&lt;/span>&lt;span style="color:#c2ffdf">empty&lt;/span>($person[&lt;span style="color:#1bc5e0">&amp;#39;hoge&amp;#39;&lt;/span>])){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">return&lt;/span> [&lt;span style="color:#1bc5e0">&amp;#39;NAME&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;&amp;gt;&amp;gt;&amp;gt;&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">.&lt;/span> $person[&lt;span style="color:#1bc5e0">&amp;#39;hoge&amp;#39;&lt;/span>]];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $data
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>print_r($names); &lt;span style="color:#b0bec5">// --- *1
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// コールバック関数を使用して、空配列を除去する処理
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$function &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span>($element) &lt;span style="color:#c2ffdf">use&lt;/span> ($names) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">if&lt;/span> (&lt;span style="color:#ffb8d1">!&lt;/span>&lt;span style="color:#c2ffdf">empty&lt;/span>($element)) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">return&lt;/span> $element;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// array_filter()にコールバック関数として先の関数を指定する　参考: https://www.php.net/manual/ja/function.array-filter.php
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// array_values()がindexを振り直してくれる　参考: https://www.php.net/manual/ja/function.array-values.php
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$result &lt;span style="color:#ffb8d1">=&lt;/span> array_values(array_filter($names, $function));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>print_r($result); &lt;span style="color:#b0bec5">// --- *2
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>*1 &amp;ndash; ただ抽出/加工したもの。空のコンテンツができてしまう。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">Array&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#c5a3ff">0&lt;/span>] &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#c5a3ff">1&lt;/span>] &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#c5a3ff">2&lt;/span>] &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#c2ffdf">Array&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [NAME] &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#ffb8d1">&amp;gt;&amp;gt;&amp;gt;&lt;/span>hogeeeeee
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>*2 &amp;ndash; indexが整い、目的のものが取り出される。indexの振り直しを行わなかった場合は[2] =&amp;gt; Array&amp;hellip;.という感じになる&lt;/p></description></item><item><title>dockerコンテナの中でviコマンドが使えないとき</title><link>https://tech-b.azimicat.dev/docs/old/2019-09-12-docker%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AE%E4%B8%AD%E3%81%A7vi%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D/</link><pubDate>Thu, 12 Sep 2019 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2019-09-12-docker%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AE%E4%B8%AD%E3%81%A7vi%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D/</guid><description>&lt;p>こういうエラーが出た時の話&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span># vi /etc/my.cnf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bash: vi: command not found
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>私の環境では、rootユーザーのときこんな感じで &lt;code>apt-get&lt;/code> が使えたのでそこからvimを入れることにしました。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span># yum -v
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bash: yum: command not found
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># apt-get -v
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt 1.4.9 (amd64)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># apk -v
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bash: apk: command not found
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>🌾 vim/vi の違いがわかんなかったのでこれを読んだ
[https://www.softel.co.jp/blogs/tech/archives/5851:embed:cite]&lt;/p>
&lt;ul>
&lt;li>とりあえずアップデートをかける&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">#&lt;/span> apt&lt;span style="color:#ffb8d1">-&lt;/span>get update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">-&lt;/span>略&lt;span style="color:#ffb8d1">-&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Fetched &lt;span style="color:#c5a3ff">7949&lt;/span> kB in &lt;span style="color:#c5a3ff">3&lt;/span>&lt;span style="color:#ceb1ff">s&lt;/span> (&lt;span style="color:#c5a3ff">2533&lt;/span> kB&lt;span style="color:#ffb8d1">/&lt;/span>s) 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Reading &lt;span style="color:#ffb8d1">package&lt;/span> lists&lt;span style="color:#ffb8d1">...&lt;/span> Done
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>vim をインストール（途中で続けるか聞かれるので &lt;code>Y&lt;/code> と答える）&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">#&lt;/span> apt&lt;span style="color:#ffb8d1">-&lt;/span>get install vim
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Reading &lt;span style="color:#ffb8d1">package&lt;/span> lists&lt;span style="color:#ffb8d1">...&lt;/span> Done
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Building dependency tree 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Reading state information&lt;span style="color:#ffb8d1">...&lt;/span> Done
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">-&lt;/span>略&lt;span style="color:#ffb8d1">-&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Do you want to &lt;span style="color:#c2ffdf">continue&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">?&lt;/span> [Y&lt;span style="color:#ffb8d1">/&lt;/span>n] Y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">-&lt;/span>略&lt;span style="color:#ffb8d1">-&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>update&lt;span style="color:#ffb8d1">-&lt;/span>alternatives: warning: skip creation of &lt;span style="color:#ffb8d1">/&lt;/span>usr&lt;span style="color:#ffb8d1">/&lt;/span>share&lt;span style="color:#ffb8d1">/&lt;/span>man&lt;span style="color:#ffb8d1">/&lt;/span>ja&lt;span style="color:#ffb8d1">/&lt;/span>man1&lt;span style="color:#ffb8d1">/&lt;/span>editor&lt;span style="color:#c5a3ff">.1&lt;/span>.gz because associated file &lt;span style="color:#ffb8d1">/&lt;/span>usr&lt;span style="color:#ffb8d1">/&lt;/span>share&lt;span style="color:#ffb8d1">/&lt;/span>man&lt;span style="color:#ffb8d1">/&lt;/span>ja&lt;span style="color:#ffb8d1">/&lt;/span>man1&lt;span style="color:#ffb8d1">/&lt;/span>vim&lt;span style="color:#c5a3ff">.1&lt;/span>.&lt;span style="color:#ceb1ff">gz&lt;/span> (of link group editor) doesn&lt;span style="color:#960050;background-color:#1e0010">&amp;#39;&lt;/span>t exist
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>update&lt;span style="color:#ffb8d1">-&lt;/span>alternatives: warning: skip creation of &lt;span style="color:#ffb8d1">/&lt;/span>usr&lt;span style="color:#ffb8d1">/&lt;/span>share&lt;span style="color:#ffb8d1">/&lt;/span>man&lt;span style="color:#ffb8d1">/&lt;/span>man1&lt;span style="color:#ffb8d1">/&lt;/span>editor&lt;span style="color:#c5a3ff">.1&lt;/span>.gz because associated file &lt;span style="color:#ffb8d1">/&lt;/span>usr&lt;span style="color:#ffb8d1">/&lt;/span>share&lt;span style="color:#ffb8d1">/&lt;/span>man&lt;span style="color:#ffb8d1">/&lt;/span>man1&lt;span style="color:#ffb8d1">/&lt;/span>vim&lt;span style="color:#c5a3ff">.1&lt;/span>.&lt;span style="color:#ceb1ff">gz&lt;/span> (of link group editor) doesn&lt;span style="color:#960050;background-color:#1e0010">&amp;#39;&lt;/span>t exist
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>こんな感じで完了&lt;/p></description></item><item><title>シングルコーテーションとダブルコーテーションの使い分けに気をつけること</title><link>https://tech-b.azimicat.dev/docs/old/2019-07-23-%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91%E3%81%AB%E6%B0%97%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E3%81%93%E3%81%A8/</link><pubDate>Tue, 23 Jul 2019 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2019-07-23-%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91%E3%81%AB%E6%B0%97%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E3%81%93%E3%81%A8/</guid><description>&lt;p>シングルコーテーションは「文字列中の変数を変数値に置換する」&lt;br>
ダブルコーテーションは「文字列中の変数を変数値に置換しない」くらいにおもっていたけど、そういうわけでもなく。&lt;br>
&lt;br/>
以下のように改行コードなんかの変換も担っているようで、 &lt;code>echo&lt;/code>した時とかに違いが出たりする。&lt;br>
&lt;br/>&lt;br/>
&lt;i>なんでシングルコーテーションだと&lt;code>preg_replace&lt;/code>で変換されないのかはちょっとわからない&amp;hellip;&lt;/i>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>$シングルコーテーション &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;北見の\r\nロマンを\nそのままパック！！&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ダブルコーテーション &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;北見の&lt;/span>&lt;span style="color:#1bc5e0">\r\n&lt;/span>&lt;span style="color:#1bc5e0">ロマンを&lt;/span>&lt;span style="color:#1bc5e0">\n&lt;/span>&lt;span style="color:#1bc5e0">そのままパック！！&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$シングルコーテーション変換後 &lt;span style="color:#ffb8d1">=&lt;/span> preg_replace(&lt;span style="color:#1bc5e0">&amp;#39;/\\r\\n|\\r|\\n/m&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;&amp;#39;&lt;/span>, $シングルコーテーション);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ダブルコーテーション変換後 &lt;span style="color:#ffb8d1">=&lt;/span> preg_replace(&lt;span style="color:#1bc5e0">&amp;#39;/\\r\\n|\\r|\\n/m&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;&amp;#39;&lt;/span>, $ダブルコーテーション);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span> シングルコーテーション元のメッセージ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>北見の\r\nロマンを\nそのままパック！！
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span> シングルコーテーション変換後のメッセージ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>北見の\r\nロマンを\nそのままパック！！
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span> ダブルコーテーション元のメッセージ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>北見の
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ロマンを
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>そのままパック！！
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span> ダブルコーテーション変換後のメッセージ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>北見のロマンをそのままパック！！
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>2019/07/23 19:00　追記&lt;/p>
&lt;p>これでした&lt;br>
&lt;a href="https://www.php.net/manual/ja/language.types.string.php">language.types.string.php&lt;/a>&lt;/p>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20190723/20190723185613.png" alt="f:id:azix:20190723185613p:plain" title="f:id:azix:20190723185613p:plain">&lt;/p></description></item><item><title>エラー `Dotenv values containing spaces must be surrounded by quotes.` が出た時</title><link>https://tech-b.azimicat.dev/docs/old/2019-05-22-%E3%82%A8%E3%83%A9%E3%83%BC_dotenv_values_containing_spaces_must_be_surrounded_by_quotes._%E3%81%8C%E5%87%BA%E3%81%9F%E6%99%82/</link><pubDate>Wed, 22 May 2019 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2019-05-22-%E3%82%A8%E3%83%A9%E3%83%BC_dotenv_values_containing_spaces_must_be_surrounded_by_quotes._%E3%81%8C%E5%87%BA%E3%81%9F%E6%99%82/</guid><description>&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20190522/20190522190508.png" alt="f:id:azix:20190522190508p:plain" title="f:id:azix:20190522190508p:plain">&lt;/p>
&lt;p>&lt;code>$ php arrisan serve&lt;/code> した時に、上記のエラーが出た。&lt;/p>
&lt;p>原因は &lt;strong>「.env」ファイルにスペースを含む文字列を記載していること。&lt;/strong>&lt;/p>
&lt;p>スペースを入れたい場合はシングルコーテーションで囲う必要がある&lt;/p>
&lt;p>例)&lt;br>
❌DESCRIPTION=これは 説明です&lt;br>
⭕️DESCRIPTION=&amp;lsquo;これは 説明です&amp;rsquo;&lt;/p></description></item><item><title>Carbon::addXXX系は元の値を上書くので注意</title><link>https://tech-b.azimicat.dev/docs/old/2019-05-08-carbonaddxxx%E7%B3%BB%E3%81%AF%E5%85%83%E3%81%AE%E5%80%A4%E3%82%92%E4%B8%8A%E6%9B%B8%E3%81%8F%E3%81%AE%E3%81%A7%E6%B3%A8%E6%84%8F/</link><pubDate>Wed, 08 May 2019 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2019-05-08-carbonaddxxx%E7%B3%BB%E3%81%AF%E5%85%83%E3%81%AE%E5%80%A4%E3%82%92%E4%B8%8A%E6%9B%B8%E3%81%8F%E3%81%AE%E3%81%A7%E6%B3%A8%E6%84%8F/</guid><description>&lt;p>例&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$dt = new Carbon(&amp;#39;2019-05-01 09:00:00&amp;#39;);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo $dt.PHP_EOL;			// 2019-05-01 09:00:00
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo $dt-&amp;gt;addMinutes(10); // 2019-05-01 09:10:00
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo $dt; 			 	// 2019-05-01 09:10:00
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>😞💬addXXX()系は元の値を上書きするので注意すること。&lt;/p></description></item><item><title>rabbitmq.cluster.confのrabbit@xxxのxxxはコンテナ名っぽい</title><link>https://tech-b.azimicat.dev/docs/old/2019-04-01-rabbitmq.cluster.conf%E3%81%AErabbit@xxx%E3%81%AExxx%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%90%8D%E3%81%A3%E3%81%BD%E3%81%84/</link><pubDate>Mon, 01 Apr 2019 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2019-04-01-rabbitmq.cluster.conf%E3%81%AErabbit@xxx%E3%81%AExxx%E3%81%AF%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%90%8D%E3%81%A3%E3%81%BD%E3%81%84/</guid><description>&lt;p>rabbitmq.cluster.conf に設定していたこの辺&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span># cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>#
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cluster_formation.classic_config.nodes.1 = rabbit@hostname_01
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cluster_formation.classic_config.nodes.2 = rabbit@hostname_02
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># cluster_formation.classic_config.nodes.3 = rabbit3@hostname
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># cluster_formation.classic_config.nodes.4 = rabbit4@hostname
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>てっきりhostnameを見てクラスタリングしてくれるものと思っていたけど、実はコンテナ名を見ていたみたい。&lt;br>
なので、 docker-compose.yml に↓を追加してやると解決した。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">container_name&lt;/span>:&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ae81ff">hostname_01 &lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#b0bec5"># またはhostname_02&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>特定のポートを開いているプロセスを殺す</title><link>https://tech-b.azimicat.dev/docs/old/2019-03-26-%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E9%96%8B%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%92%E6%AE%BA%E3%81%99/</link><pubDate>Tue, 26 Mar 2019 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2019-03-26-%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E9%96%8B%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%92%E6%AE%BA%E3%81%99/</guid><description>&lt;h2 id="特定のポートで実行中のプロセスを調べる">特定のポートで実行中のプロセスを調べる&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ lsof -i:3314
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>com.docke 771 user_name 20u IPv4 0x6e99dd572d5a95e7 0t0 TCP *:uohost (LISTEN)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>com.docke 771 user_name 21u IPv6 0x6e99dd572593ae5f 0t0 TCP localhost:uohost (LISTEN)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>lsof&lt;/code> コマンドを使います&lt;br>
今回つけているオプションは &lt;code>-i:xxxx&lt;/code> で、これはポート番号を指定しています&lt;/p>
&lt;p>結果に出てくる項目は&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>COMMAND：プロセスが実行しているコマンド（プログラム） 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>PID：そのポートを利用しているプロセスのID 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>USER：プロセスの実行ユーザー 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>FD：ファイルディスクリプター 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>TYPE：ファイルの種別 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DEVICE：デバイスID 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SIZE/OFF：ファイルのサイズまたはオフセット 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NODE：プロトコル 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NAME：ポート名 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>という感じ&lt;br>
NAMEについている &lt;code>(LISTEM)&lt;/code> は待ち受け状態であることを表している&lt;/p>
&lt;h2 id="特定のプロセスを殺す">特定のプロセスを殺す&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ kill -9 771
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>kill&lt;/code> コマンドを使います&lt;br>
基本は &lt;code>kill PID&lt;/code> です&lt;br>
&lt;code>-9&lt;/code> コマンドは強制終了&lt;/p>
&lt;p>ちなみに、 &lt;code>-0&lt;/code> オプションをつけるとプロセスを殺さずに存在確認だけができます&lt;br>
プロセスが存在すると出力はなく、プロセスが存在しないとエラーメッセージがかえってきます&lt;/p></description></item><item><title>Composerでdev-masterを指定しているpackageの正確なバージョンの確認方法</title><link>https://tech-b.azimicat.dev/docs/old/2019-01-24-composer%E3%81%A7dev-master%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%84%E3%82%8Bpackage%E3%81%AE%E6%AD%A3%E7%A2%BA%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95/</link><pubDate>Thu, 24 Jan 2019 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2019-01-24-composer%E3%81%A7dev-master%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%84%E3%82%8Bpackage%E3%81%AE%E6%AD%A3%E7%A2%BA%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>composerのパッケージのバージョンを調べるときは &lt;code>composer show -i packagename&lt;/code> する．&lt;br>
packagenameつけなかったりcomposer.lock見ても &lt;code>dev-master&lt;/code> で使っているパッケージの正確な名前はわからないので気をつけよう．&lt;/p>
&lt;h2 id="経緯">経緯&lt;/h2>
&lt;p>例えばこんな感じの composer.json があったとして，&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#960050;background-color:#1e0010">“test”&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;description&amp;#34;&lt;/span>: &lt;span style="color:#960050;background-color:#1e0010">“this&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">is&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">test&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">server&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0"> &amp;#34;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">keywords&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;: [&amp;#34;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">framework&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;, &amp;#34;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">laravel&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;],
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0"> &amp;#34;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">license&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;: &amp;#34;&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0"> &amp;#34;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">type&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;: &amp;#34;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">project&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0"> &amp;#34;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">require&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;: {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0"> &amp;#34;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">intervention/image&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;: &amp;#34;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">dev-master”&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }&lt;span style="color:#960050;background-color:#1e0010">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>この部分 &lt;code>&amp;quot;intervention/image&amp;quot;: &amp;quot;dev-master”,&lt;/code> の， &lt;code>dev-master&lt;/code> について．&lt;/p>
&lt;p>&lt;code>dev-master&lt;/code> とは，このpackageのmasterブランチのことで、このバージョンを指定するとmasterの最新コミットが適用される．&lt;br>
つまり，最新機能が入っているけど不安定なものがインストールされてしまう．&lt;br>
この状態は障害を生みやすいので，動いている状態で一旦固めてしまうのが良い．&lt;/p>
&lt;p>というわけで，このパッケージ &lt;code>intervention/image&lt;/code> の正式バージョン名を調べる．&lt;/p>
&lt;h2 id="バージョンを調べる">バージョンを調べる&lt;/h2>
&lt;h3 id="ダメだった方法">ダメだった方法&lt;/h3>
&lt;ul>
&lt;li>composer.lock を見る&lt;/li>
&lt;li>&lt;code>composer show -i&lt;/code> から目的パッケージを探して見る&lt;/li>
&lt;/ul>
&lt;h3 id="よかった方法">よかった方法&lt;/h3>
&lt;ul>
&lt;li>&lt;code>composer show -i packagename&lt;/code> して目的パッケージの詳細情報を見る&lt;/li>
&lt;/ul>
&lt;p>ダメだった方法は２つは，&lt;/p>
&lt;ul>
&lt;li>composer.lock を見る&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#1bc5e0">&amp;#34;intervention/image&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;version&amp;#34;&lt;/span>: &lt;span style="color:#1bc5e0">&amp;#34;dev-master&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;source&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#1bc5e0">&amp;#34;git&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;url&amp;#34;&lt;/span>: &lt;span style="color:#1bc5e0">&amp;#34;https://github.com/Intervention/image.git&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;#34;reference&amp;#34;&lt;/span>: &lt;span style="color:#1bc5e0">&amp;#34;e82d274f786e3d4b866a59b173f42e716f0783eb&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#960050;background-color:#1e0010">...略...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}&lt;span style="color:#960050;background-color:#1e0010">,&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;code>composer show -i&lt;/code> から目的パッケージを探して見る&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ composer show -i
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>…略…
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>intervention/image dev-master e82d274 Image handling and manipulation library with support for Laravel integration
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>という感じで，composer.jsonに書ける形式のバージョンはわかりませんでした．&lt;/p></description></item><item><title>2018.07に考えたキャリアプランメモがあったので忘れないように書いておく</title><link>https://tech-b.azimicat.dev/docs/old/2018-11-12-2018.07%E3%81%AB%E8%80%83%E3%81%88%E3%81%9F%E3%82%AD%E3%83%A3%E3%83%AA%E3%82%A2%E3%83%97%E3%83%A9%E3%83%B3%E3%83%A1%E3%83%A2%E3%81%8C%E3%81%82%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%A7%E5%BF%98%E3%82%8C%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%8A%E3%81%8F/</link><pubDate>Mon, 12 Nov 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-11-12-2018.07%E3%81%AB%E8%80%83%E3%81%88%E3%81%9F%E3%82%AD%E3%83%A3%E3%83%AA%E3%82%A2%E3%83%97%E3%83%A9%E3%83%B3%E3%83%A1%E3%83%A2%E3%81%8C%E3%81%82%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%A7%E5%BF%98%E3%82%8C%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%8A%E3%81%8F/</guid><description>&lt;h2 id="直近201810">直近（〜2018.10）&lt;/h2>
&lt;h4 id="業務">業務&lt;/h4>
&lt;ul>
&lt;li>PHP,JS のスキルを伸ばす → 基礎の復習と実装の正確性&lt;/li>
&lt;/ul>
&lt;h4 id="個人">個人&lt;/h4>
&lt;ul>
&lt;li>PHPで作成したwebアプリケーションのβ版リリース（〜7月16日まで）&lt;/li>
&lt;li>画像処理講座の修了（7月中）&lt;/li>
&lt;/ul>
&lt;h2 id="１年後20181120196--26歳">１年後（2018.11〜2019.6 = 26歳）&lt;/h2>
&lt;h4 id="業務-1">業務&lt;/h4>
&lt;ul>
&lt;li>React.js, TypeScriptを業務で使用できるレベルまで引き上げる&lt;/li>
&lt;/ul>
&lt;h4 id="個人-1">個人&lt;/h4>
&lt;ul>
&lt;li>AWSの機能いくつかを理解できるようになる&lt;/li>
&lt;li>勉強会等での登壇&lt;/li>
&lt;li>プレゼン（軽いLT）などを抵抗なくできる&lt;/li>
&lt;/ul>
&lt;h2 id="３年後2019720216--29歳">３年後（2019.7〜2021.6 = 29歳）&lt;/h2>
&lt;h4 id="業務-2">業務&lt;/h4>
&lt;ul>
&lt;li>その時業務で使っている、フロントエンド技術の習得（緊急の対応時に呼んでもらえるくらい）&lt;/li>
&lt;li>リーダーとして小さめのチームのマネジメントができること&lt;/li>
&lt;li>バックエンド系の習得（webエンジニアとして、インフラ以外を一通り回せる）&lt;/li>
&lt;li>テクニカルディレクターへの足がけになるようなことができるといいな……&lt;/li>
&lt;/ul>
&lt;h4 id="個人-2">個人&lt;/h4>
&lt;ul>
&lt;li>やりたいことを人にプレゼンできること&lt;/li>
&lt;li>自分の専門技術を他の人に教育できること&lt;/li>
&lt;li>今後の方針を決めること&lt;/li>
&lt;/ul>
&lt;h2 id="５年後2021720236--31歳">５年後（2021.7〜2023.6 = 31歳）&lt;/h2>
&lt;h4 id="業務-3">業務&lt;/h4>
&lt;ul>
&lt;li>チームマネジメントができること（中心に立ち、方向性を示していく役割が概ねできること）&lt;/li>
&lt;li>会社では産休とか育休中の予定&amp;hellip;&lt;/li>
&lt;/ul>
&lt;h4 id="個人-3">個人&lt;/h4>
&lt;ul>
&lt;li>自宅でできる仕事を取りながら職場復帰時に技術の遅れが出ないようにしたい&lt;/li>
&lt;/ul></description></item><item><title>npmでTS2304Cannot_find_nameというエラーが出る時の原因と対処</title><link>https://tech-b.azimicat.dev/docs/old/2018-10-31-npm%E3%81%A7ts2304cannot_find_name%E3%81%A8%E3%81%84%E3%81%86%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B%E6%99%82%E3%81%AE%E5%8E%9F%E5%9B%A0%E3%81%A8%E5%AF%BE%E5%87%A6/</link><pubDate>Wed, 31 Oct 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-10-31-npm%E3%81%A7ts2304cannot_find_name%E3%81%A8%E3%81%84%E3%81%86%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B%E6%99%82%E3%81%AE%E5%8E%9F%E5%9B%A0%E3%81%A8%E5%AF%BE%E5%87%A6/</guid><description>&lt;h2 id="エラー">エラー&lt;/h2>
&lt;ul>
&lt;li>&lt;code>npm -i&lt;/code> したらこんなエラーが．&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>node_modules/@types/superagent/index.d.ts:29:29 - error TS2304: Cannot find name &lt;span style="color:#1bc5e0">&amp;#39;Blob&amp;#39;&lt;/span>.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c5a3ff">29&lt;/span> type MultipartValueSingle &lt;span style="color:#ffb8d1">=&lt;/span> Blob | Buffer | fs.ReadStream | string | boolean | number;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ~~~~
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>node_modules/@types/superagent/index.d.ts:116:14 - error TS2304: Cannot find name &lt;span style="color:#1bc5e0">&amp;#39;XMLHttpRequest&amp;#39;&lt;/span>.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c5a3ff">116&lt;/span> xhr: XMLHttpRequest;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ~~~~~~~~~~~~~~
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="原因">原因&lt;/h2>
&lt;ul>
&lt;li>それぞれを呼ぶライブラリが足りなかったせい&lt;/li>
&lt;/ul>
&lt;h2 id="解決">解決&lt;/h2>
&lt;ul>
&lt;li>オプション &lt;code>--lib dom&lt;/code> を付けてインストールし直すことで，不足している標準ライブラリを一緒にインストールしてくれる&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ npm i --lib dom
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>npm notice created a lockfile as package-lock.json. You should commit this file.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+ dom@0.0.3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>added &lt;span style="color:#c5a3ff">1&lt;/span> package and audited &lt;span style="color:#c5a3ff">10248&lt;/span> packages in 4.722s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>found &lt;span style="color:#c5a3ff">0&lt;/span> vulnerabilities
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="参考">参考&lt;/h2>
&lt;p>&lt;a href="https://github.com/DefinitelyTyped/DefinitelyTyped/issues/12044">@types/superagent error TS2304: Cannot find name &amp;lsquo;XMLHttpRequest&amp;rsquo;. #12044&lt;/a>&lt;/p></description></item><item><title>dropColumnするつもりでdropしたらテーブルを消そうとしてびっくりした</title><link>https://tech-b.azimicat.dev/docs/old/2018-10-26-dropcolumn%E3%81%99%E3%82%8B%E3%81%A4%E3%82%82%E3%82%8A%E3%81%A7drop%E3%81%97%E3%81%9F%E3%82%89%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E6%B6%88%E3%81%9D%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%B3%E3%81%A3%E3%81%8F%E3%82%8A%E3%81%97%E3%81%9F/</link><pubDate>Fri, 26 Oct 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-10-26-dropcolumn%E3%81%99%E3%82%8B%E3%81%A4%E3%82%82%E3%82%8A%E3%81%A7drop%E3%81%97%E3%81%9F%E3%82%89%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E6%B6%88%E3%81%9D%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%B3%E3%81%A3%E3%81%8F%E3%82%8A%E3%81%97%E3%81%9F/</guid><description>&lt;h2 id="原因">原因&lt;/h2>
&lt;p>&lt;code>dropColumn&lt;/code> するべきところで &lt;code>drop&lt;/code> をしていた．&lt;/p>
&lt;h2 id="リファレンス">リファレンス&lt;/h2>
&lt;p>&lt;a href="https://readouble.com/laravel/5.5/ja/migrations.html#renaming-and-dropping-tables">テーブルリネーム／削除&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>存在するテーブルを削除する場合は、dropかdropIfExistsメソッドを使います。&lt;/p>
&lt;/blockquote>
&lt;h2 id="コードとエラー">コードとエラー&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// 正しいコード
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>Schema&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">connection&lt;/span>($this&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">connection&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">table&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;tableName&amp;#39;&lt;/span>, &lt;span style="color:#c2ffdf">function&lt;/span> (Blueprint $table) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">dropColumn&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;createdAt&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">dropColumn&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;updatedAt&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>});
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// 間違ってるコード
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>Schema&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">connection&lt;/span>($this&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">connection&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">table&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;tableName&amp;#39;&lt;/span>, &lt;span style="color:#c2ffdf">function&lt;/span> (Blueprint $table) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">drop&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;createdAt&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">drop&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;updatedAt&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>});
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>エラーの内容&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">[&lt;/span>Illuminate&lt;span style="color:#1bc5e0">\D&lt;/span>atabase&lt;span style="color:#1bc5e0">\Q&lt;/span>ueryException&lt;span style="color:#ffb8d1">]&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> SQLSTATE&lt;span style="color:#ffb8d1">[&lt;/span>42S02&lt;span style="color:#ffb8d1">]&lt;/span>: Base table or view not found: &lt;span style="color:#c5a3ff">1051&lt;/span> Unknown table &lt;span style="color:#1bc5e0">&amp;#39;databaseName.tableName&amp;#39;&lt;/span> doesn&lt;span style="color:#960050;background-color:#1e0010">&amp;#39;&lt;/span>t exist
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">(&lt;/span>SQL: drop table &lt;span style="color:#1bc5e0">`&lt;/span>products&lt;span style="color:#1bc5e0">`&lt;/span>&lt;span style="color:#ffb8d1">)&lt;/span> 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>唐突の &lt;code>drop table&lt;/code> 😱&lt;br>
エラーにならなかったら恐ろしいことになってしまう．&lt;br>
ここで一番怖いと思ったことが， &lt;code>$table-&amp;gt;drop('ココ')&lt;/code> で指定しているのがテーブル名でなくカラムなのに &lt;code>$table&lt;/code> で指されているテーブルを消そうとしていたこと．
「タイポでした〜😂」じゃすまないっすよ．．．
ちなみに，phpは関数の引数の数が合ってなくても動くので、&lt;code>$table-&amp;gt;drop(‘カラム名’)&lt;/code> と書いても死なずに &lt;code>$table-&amp;gt;drop()&lt;/code> と同等の動作をするためこのようなことになったと推測．．．&lt;/p>
&lt;h2 id="今回のエラーの追い方">今回のエラーの追い方&lt;/h2>
&lt;ol>
&lt;li>とりあえず実行して，エラーログを確認（ &lt;code>storage/logs/laravel-yyyy-MM-dd.log&lt;/code> ）&lt;/li>
&lt;li>エラーが起きているファイルと場所がわかったら，気になる箇所にdumpを入れて実行する&lt;/li>
&lt;li>dumpが出なかった手前でエラーが起きているので処理を１つずつ実行して見ていく&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>🤔💬 わたしは大体カラム名ミスってるとかメソッド名が違うとかtypoしてるとかが多いので同じようなことをしている他のファイルと見比べたりしながら原因を見つけました．&lt;/li>
&lt;/ul></description></item><item><title>laravel のマイグレーション機能の`string()`で作成したカラムの長さ</title><link>https://tech-b.azimicat.dev/docs/old/2018-10-23-laravel_%E3%81%AE%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E6%A9%9F%E8%83%BD%E3%81%AEstring%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E3%82%AB%E3%83%A9%E3%83%A0%E3%81%AE%E9%95%B7%E3%81%95/</link><pubDate>Tue, 23 Oct 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-10-23-laravel_%E3%81%AE%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E6%A9%9F%E8%83%BD%E3%81%AEstring%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E3%82%AB%E3%83%A9%E3%83%A0%E3%81%AE%E9%95%B7%E3%81%95/</guid><description>&lt;h2 id="stringhoge-がデフォルトでvarchar幾つになるのか">&lt;code>string('hoge')&lt;/code> がデフォルトでvarchar幾つになるのか？&lt;/h2>
&lt;p>laravel のマイグレーション機能で作成したカラムの長さは，&lt;br>
例： &lt;code>$table-&amp;gt;string('hoge');&lt;/code> → &lt;code>varchar(191)&lt;/code> となる．&lt;/p></description></item><item><title>mysqlでユーザ作成＆パスワード変更</title><link>https://tech-b.azimicat.dev/docs/old/2018-10-16-mysql%E3%81%A7%E3%83%A6%E3%83%BC%E3%82%B6%E4%BD%9C%E6%88%90%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E5%A4%89%E6%9B%B4/</link><pubDate>Tue, 16 Oct 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-10-16-mysql%E3%81%A7%E3%83%A6%E3%83%BC%E3%82%B6%E4%BD%9C%E6%88%90%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E5%A4%89%E6%9B%B4/</guid><description>&lt;ul>
&lt;li>MySQLでuserを新規作成
&lt;ul>
&lt;li>ユーザ名： &lt;code>NECO&lt;/code> , パスワード： &lt;code>nyan&lt;/code> というアカウントを &lt;code>localhost&lt;/code> に作成する&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>mysql&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">create&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">user&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;NECO&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;localhost&amp;#39;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>identified&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">by&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;nyan&amp;#39;&lt;/span>;&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>パスワードが不要な場合はidentified以下を省略する。&lt;/p>
&lt;ul>
&lt;li>passwordを変更
&lt;ul>
&lt;li>&lt;code>localhost&lt;/code> にある, ユーザ名： &lt;code>NECO&lt;/code> というアカウントのパスワードを &lt;code>mellow&lt;/code> に変更する&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>mysql&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">set&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>password&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">for&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>NECO&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;localhost&amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>password(&lt;span style="color:#1bc5e0">&amp;#39;mellow&amp;#39;&lt;/span>);&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>webpack3環境下でvueを動かしてる状態からtypescriptを導入する</title><link>https://tech-b.azimicat.dev/docs/old/2018-09-21-webpack3%E7%92%B0%E5%A2%83%E4%B8%8B%E3%81%A7vue%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E3%82%8B%E7%8A%B6%E6%85%8B%E3%81%8B%E3%82%89typescript%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%99%E3%82%8B/</link><pubDate>Fri, 21 Sep 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-09-21-webpack3%E7%92%B0%E5%A2%83%E4%B8%8B%E3%81%A7vue%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E3%82%8B%E7%8A%B6%E6%85%8B%E3%81%8B%E3%82%89typescript%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%99%E3%82%8B/</guid><description>&lt;h2 id="手順">手順&lt;/h2>
&lt;ul>
&lt;li>typescriptを入れる
&lt;ul>
&lt;li>&lt;code>$ yarn add --dev typescript ts-loader@3.5.0&lt;/code>&lt;/li>
&lt;li>ts-loaderはwebpack 3に対応している v3.5.0を入れる必要あり&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>vue-cliが入っていることを確認
&lt;ul>
&lt;li>&lt;code>$ vue --version&lt;/code>&lt;/li>
&lt;li>入っていなければインストール（&lt;code>yarn global add vue-cli&lt;/code>）&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>インストールされた &lt;code>/node_modules/ts-loader/README.md&lt;/code> を読みつつ進める&lt;/li>
&lt;/ul>
&lt;p>１. &lt;code>webpack.config.js&lt;/code> を以下のように作成or追記&lt;/p>
&lt;pre>&lt;code> module.exports = {
 devtool: 'inline-source-map',
 entry: './app.ts',
 output: {
 filename: 'bundle.js'
 },
 resolve: {
 // Add \`.ts\` and \`.tsx\` as a resolvable extension.
 extensions: ['.ts', '.tsx', '.js']
 },
 module: {
 rules: [
 // all files with a \`.ts\` or \`.tsx\` extension will be handled by \`ts-loader\`
 { test: /\\.tsx?$/, loader: 'ts-loader' }
 ]
 }
 }
&lt;/code>&lt;/pre>
&lt;p>２. &lt;code>tsconfig.json&lt;/code> に以下を追加&lt;/p></description></item><item><title>【解決】dump結果とview表示結果が異なる@Laravel 5.6</title><link>https://tech-b.azimicat.dev/docs/old/2018-08-24-%E8%A7%A3%E6%B1%BAdump%E7%B5%90%E6%9E%9C%E3%81%A8view%E8%A1%A8%E7%A4%BA%E7%B5%90%E6%9E%9C%E3%81%8C%E7%95%B0%E3%81%AA%E3%82%8B@laravel_5.6/</link><pubDate>Fri, 24 Aug 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-08-24-%E8%A7%A3%E6%B1%BAdump%E7%B5%90%E6%9E%9C%E3%81%A8view%E8%A1%A8%E7%A4%BA%E7%B5%90%E6%9E%9C%E3%81%8C%E7%95%B0%E3%81%AA%E3%82%8B@laravel_5.6/</guid><description>&lt;h2 id="解決しました">解決しました&lt;/h2>
&lt;p>&lt;a href="https://qiita.com/amymd/items/7cba844b03754f9c849b">参考リンク&lt;/a>&lt;/p>
&lt;h2 id="解決方法">解決方法&lt;/h2>
&lt;ul>
&lt;li>Modelに &lt;code>protected $casts = ['id' =&amp;gt; 'string'];&lt;/code> を追加したことで解決！！&lt;/li>
&lt;/ul>
&lt;h2 id="解決までの道筋">解決までの道筋&lt;/h2>
&lt;ul>
&lt;li>dump結果とviewでの表示を見比べて、型がintegerになっているのではと推測&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>dump($items);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dump($items-&amp;gt;last()-&amp;gt;id);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>echo $items-&amp;gt;last()-&amp;gt;id . &amp;#39;&amp;lt;br&amp;gt;&amp;#39;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>return gettype($items-&amp;gt;last()-&amp;gt;id); // 型を返す
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>とかしてたら、「collectionで取得したものの型変換がおかしいんじゃない？」という気持ちになり検索&lt;/p>
&lt;ul>
&lt;li>検索ワードは「lalravel collection 型変換」&lt;/li>
&lt;li>&lt;a href="https://qiita.com/amymd/items/7cba844b03754f9c849b">この記事&lt;/a>を見つけてSUCCESS！！！&lt;/li>
&lt;/ul>
&lt;h2 id="問題だったもの">問題だったもの&lt;/h2>
&lt;ul>
&lt;li>モデルに定義したテーブルからとってきた値をビューに表示するだけなのに、表示結果がおかしい。&lt;/li>
&lt;li>ModelクラスのtoStringを追うと、jsonEncodeするときに値がおかしくなっていることがわかるがそれが本当の原因かは不明。&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">+&lt;/span>&lt;span style="color:#b0bec5">------------------+-------------+------+-----+---------+-------+
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>Field&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">Type&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">Null&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">Key&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">Default&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>Extra&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#ffb8d1">+&lt;/span>&lt;span style="color:#b0bec5">------------------+-------------+------+-----+---------+-------+
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>id&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>varchar(&lt;span style="color:#c5a3ff">97&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NO&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>PRI&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NULL&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#ffb8d1">+&lt;/span>&lt;span style="color:#b0bec5">------------------+-------------+------+-----+---------+-------+
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$query &lt;span style="color:#ffb8d1">=&lt;/span> ItemModel&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">query&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$items &lt;span style="color:#ffb8d1">=&lt;/span> $query
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">orderBy&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;id&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;asc&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">get&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dump($items);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">return&lt;/span> view(&lt;span style="color:#1bc5e0">&amp;#39;test.index&amp;#39;&lt;/span>, [&lt;span style="color:#1bc5e0">&amp;#34;items&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> $items]);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#c2ffdf">foreach&lt;/span>($items &lt;span style="color:#c2ffdf">as&lt;/span> $item)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;lt;&lt;/span>p&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>{{ $item&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">id&lt;/span> }}&lt;span style="color:#ffb8d1">&amp;lt;/&lt;/span>p&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#c2ffdf">endforeach&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php &lt;span style="color:#b0bec5">/* dump結果 */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">&amp;#34;id&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;123--これはID--456&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// -&amp;gt; [123]が表示される
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;id&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// -&amp;gt; [0]が表示される
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;id&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;あいうえお&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// -&amp;gt; [0]が表示される
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;id&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// -&amp;gt; [9223372036854775807]が表示される
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>gitの複数のブランチを一括で削除する</title><link>https://tech-b.azimicat.dev/docs/old/2018-08-16-git%E3%81%AE%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%82%92%E4%B8%80%E6%8B%AC%E3%81%A7%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B/</link><pubDate>Thu, 16 Aug 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-08-16-git%E3%81%AE%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%82%92%E4%B8%80%E6%8B%AC%E3%81%A7%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B/</guid><description>&lt;p>xargs コマンドを使います。&lt;/p>
&lt;h2 id="xargs-コマンドとは">xargs コマンドとは？&lt;/h2>
&lt;p>xargs コマンドとは、Linux のコマンドの１つ。&lt;br>
あるコマンドの出力を xargs コマンドに送り込み、別のコマンドの引数として指定することができます。&lt;/p>
&lt;h2 id="消したくない-branch-を除いた全ての-branch-を削除するとき">消したくない branch を除いた全ての branch を削除するとき&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>git branch | grep -v 消したくないbranch名など | xargs git branch -D
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これは、パイプ（ | ）でくくった部分のコマンドを実行した結果に対して、 &lt;code>xargs&lt;/code> 以降のコマンドを適用するという意味になります。 実際に実行したコマンドは以下の画像。（👹&lt;code>&amp;lt;s&amp;gt;-v&lt;/code>が抜けてるのであとで書き直す 書き直した）&lt;/p>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180816/20180816174516.jpg" alt="f:id:azix:20180816174516j:plain" title="f:id:azix:20180816174516j:plain">&lt;/p>
&lt;p>&lt;code>git branch&lt;/code> に対するコマンドは自分で判断してね。&lt;/p></description></item><item><title>【JavaScript】配列の比較について</title><link>https://tech-b.azimicat.dev/docs/old/2018-08-15-javascript%E9%85%8D%E5%88%97%E3%81%AE%E6%AF%94%E8%BC%83%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</link><pubDate>Wed, 15 Aug 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-08-15-javascript%E9%85%8D%E5%88%97%E3%81%AE%E6%AF%94%E8%BC%83%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</guid><description>&lt;h2 id="まとめ">まとめ&lt;/h2>
&lt;p>JavaScriptで、配列の比較の際に==又は===演算子を用いると、その配列が参照しているメモリ上のアドレスが同じかどうかでtrue/falseを返す。&lt;br>
&lt;code>Object.is()&lt;/code> も同様。&lt;/p>
&lt;h2 id="例">例&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-javascript" data-lang="javascript">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">var&lt;/span> list_1 &lt;span style="color:#ffb8d1">=&lt;/span> [&lt;span style="color:#1bc5e0">&amp;#34;mike&amp;#34;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#34;saba&amp;#34;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#34;tora&amp;#34;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">var&lt;/span> list_2 &lt;span style="color:#ffb8d1">=&lt;/span> [&lt;span style="color:#1bc5e0">&amp;#34;mike&amp;#34;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#34;saba&amp;#34;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#34;tora&amp;#34;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>console.log(list_1 &lt;span style="color:#ffb8d1">===&lt;/span> list_2);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// -&amp;gt; false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>console.log(Object.is(list_1, list_2));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// -&amp;gt; false
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>配列が全く同じであっても、比較の際に &lt;code>==&lt;/code> &lt;code>===&lt;/code> &lt;code>Object.is()&lt;/code> を用いると &lt;code>false&lt;/code> が返る。&lt;br>
これは、比較対象が中の値ではなくポインタのアドレスを見ているため。&lt;/p>
&lt;h2 id="じゃあどうやって比較する">じゃあどうやって比較する？&lt;/h2>
&lt;p>一番楽なのは、&lt;code>toString()&lt;/code> してしまう。
もしくは（冗長になってしまうけど）配列を回して比較。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-javascript" data-lang="javascript">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">var&lt;/span> list_1 &lt;span style="color:#ffb8d1">=&lt;/span> [&lt;span style="color:#1bc5e0">&amp;#34;mike&amp;#34;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#34;saba&amp;#34;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#34;tora&amp;#34;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">var&lt;/span> list_2 &lt;span style="color:#ffb8d1">=&lt;/span> [&lt;span style="color:#1bc5e0">&amp;#34;mike&amp;#34;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#34;saba&amp;#34;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#34;tora&amp;#34;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>console.log(list_1.toString() &lt;span style="color:#ffb8d1">===&lt;/span> list_2.toString());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// -&amp;gt; true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>console.log(Object.is(list_1.toString(), list_2.toString()));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// -&amp;gt; true
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>ただ、&lt;code>Object.is()&lt;/code> や &lt;code>===&lt;/code> のようにオブジェクトを比較したいときはまたちょっと複雑そう・・・。いつか調べる。&lt;/p>
&lt;h2 id="追記">追記&lt;/h2>
&lt;p>ツイッタで質問があったので。&lt;br>
JavaScriptの配列型にはequalsメソッドが存在しません。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>[1, 2] == [1, 2];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>// -&amp;gt; false
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[1, 2].equals([1, 2]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>// -&amp;gt; Uncaught TypeError: [1,2].equals is not a function
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>外部キー制約 migration の foreigndrop がうまくいかない</title><link>https://tech-b.azimicat.dev/docs/old/2018-08-15-%E5%A4%96%E9%83%A8%E3%82%AD%E3%83%BC%E5%88%B6%E7%B4%84_migration_%E3%81%AE_foreigndrop_%E3%81%8C%E3%81%86%E3%81%BE%E3%81%8F%E3%81%84%E3%81%8B%E3%81%AA%E3%81%84/</link><pubDate>Wed, 15 Aug 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-08-15-%E5%A4%96%E9%83%A8%E3%82%AD%E3%83%BC%E5%88%B6%E7%B4%84_migration_%E3%81%AE_foreigndrop_%E3%81%8C%E3%81%86%E3%81%BE%E3%81%8F%E3%81%84%E3%81%8B%E3%81%AA%E3%81%84/</guid><description>&lt;h2 id="先にまとめ">（先に）まとめ&lt;/h2>
&lt;p>⭐️ 外部キー制約の drop と同時に、制約対象の key を変更や削除する場合はスキーマを分ける必要がある&lt;br>
✏️ 外部キー制約を drop するときは１つのスキーマでまとめて実行できる&lt;/p>
&lt;h2 id="テーブル条件">テーブル条件&lt;/h2>
&lt;ul>
&lt;li>テーブル名：animals&lt;/li>
&lt;li>カラム名：kindId&lt;/li>
&lt;li>外部キー設定先テーブル名：animal_kinds&lt;/li>
&lt;li>外部キー設定先カラム名：id&lt;/li>
&lt;/ul>
&lt;h2 id="作成した-migration-ファイル">作成した migration ファイル&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">public&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">up&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Schema&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">table&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;animals&amp;#39;&lt;/span>, &lt;span style="color:#c2ffdf">function&lt;/span> (Blueprint $table) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">unsignedBigInteger&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;kind&amp;#39;&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">change&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">foreign&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;kind&amp;#39;&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">references&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;id&amp;#39;&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">on&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;animal_kinds&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">public&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">down&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Schema&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">table&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;animals&amp;#39;&lt;/span>, &lt;span style="color:#c2ffdf">function&lt;/span> (Blueprint $table) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">dropForeign&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;animals_kind_foreign&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">bigInteger&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;kindId&amp;#39;&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">change&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> })
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="migration-を実行しrollback-した際にエラー発生">migration を実行し、rollback した際にエラー発生&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span> [Illuminate\Database\QueryException] 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> SQLSTATE[HY000]: General error: &lt;span style="color:#c5a3ff">1832&lt;/span> Cannot change column &lt;span style="color:#1bc5e0">&amp;#39;kind&amp;#39;&lt;/span>: used &lt;span style="color:#ffb8d1">in&lt;/span> a foreign key constraint &lt;span style="color:#1bc5e0">&amp;#39;animal_kinds&amp;#39;&lt;/span> (SQL: ALTER TABLE animal_kinds CHANGE kind kind BIGINT NOT NULL COMMENT &lt;span style="color:#1bc5e0">&amp;#39;-&amp;#39;&lt;/span>) 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [Doctrine\DBAL\Driver\PDOException] 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> SQLSTATE[HY000]: General error: &lt;span style="color:#c5a3ff">1832&lt;/span> Cannot change column &lt;span style="color:#1bc5e0">&amp;#39;kind&amp;#39;&lt;/span>: used &lt;span style="color:#ffb8d1">in&lt;/span> a foreign key constraint &lt;span style="color:#1bc5e0">&amp;#39;animal_kinds&amp;#39;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [PDOException] 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> SQLSTATE[HY000]: General error: &lt;span style="color:#c5a3ff">1832&lt;/span> Cannot change column &lt;span style="color:#1bc5e0">&amp;#39;kind&amp;#39;&lt;/span>: used &lt;span style="color:#ffb8d1">in&lt;/span> a foreign key constraint &lt;span style="color:#1bc5e0">&amp;#39;animal_kinds&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="down-を以下のように書き換えることで成功">down() を以下のように書き換えることで成功&lt;/h2>
&lt;ul>
&lt;li>外部キー制約の drop と、カラム変更のスキーマを分割&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">public&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">down&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Schema&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">table&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;animals&amp;#39;&lt;/span>, &lt;span style="color:#c2ffdf">function&lt;/span> (Blueprint $table) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">dropForeign&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;animals_kind_foreign&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Schema&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">table&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;animals&amp;#39;&lt;/span>, &lt;span style="color:#c2ffdf">function&lt;/span> (Blueprint $table) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $table&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">bigInteger&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;kindId&amp;#39;&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">change&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>【Laravel】HasManyThrough() を使うときに規定通りに書いているにも関わらず結果が0件で困った</title><link>https://tech-b.azimicat.dev/docs/old/2018-08-01-laravelhasmanythrough_%E3%82%92%E4%BD%BF%E3%81%86%E3%81%A8%E3%81%8D%E3%81%AB%E8%A6%8F%E5%AE%9A%E9%80%9A%E3%82%8A%E3%81%AB%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AB%E3%82%82%E9%96%A2%E3%82%8F%E3%82%89%E3%81%9A%E7%B5%90%E6%9E%9C%E3%81%8C0%E4%BB%B6%E3%81%A7%E5%9B%B0%E3%81%A3%E3%81%9F/</link><pubDate>Wed, 01 Aug 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-08-01-laravelhasmanythrough_%E3%82%92%E4%BD%BF%E3%81%86%E3%81%A8%E3%81%8D%E3%81%AB%E8%A6%8F%E5%AE%9A%E9%80%9A%E3%82%8A%E3%81%AB%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AB%E3%82%82%E9%96%A2%E3%82%8F%E3%82%89%E3%81%9A%E7%B5%90%E6%9E%9C%E3%81%8C0%E4%BB%B6%E3%81%A7%E5%9B%B0%E3%81%A3%E3%81%9F/</guid><description>&lt;p>[https://readouble.com/laravel/5.4/ja/eloquent-relationships.html#has-many-through:title]
5.4公式サイトの表記&lt;/p>
&lt;blockquote>
&lt;p>リレーションのクエリ実行時は、典型的なEloquentの外部キー規約が使用されます。リレーションのキーをカスタマイズしたい場合は、hasManyThroughメソッドの第３引数と、第４引数を指定してください。第３引数は仲介モデルの外部キー名、第４引数は最終的なモデルの外部キー名です。そして第５引数はローカルキーです。&lt;/p>
&lt;/blockquote>
&lt;p>[https://readouble.com/laravel/5.5/ja/eloquent-relationships.html#has-many-through:title]
5.5公式サイトの表記&lt;/p>
&lt;blockquote>
&lt;p>リレーションのクエリ実行時は、典型的なEloquentの外部キー規約が使用されます。リレーションのキーをカスタマイズしたい場合は、hasManyThroughメソッドの第３引数と、第４引数を指定してください。第３引数は仲介モデルの外部キー名、第４引数は最終的なモデルの外部キー名です。第５引数はローカルキーで、第６引数は仲介モデルのローカルキーです。&lt;/p>
&lt;/blockquote>
&lt;p>しかしながら、この通りに実装しても全然値が取れない。&lt;br>
実はこれ、第６引数までとるみたい&amp;hellip;&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">class&lt;/span> &lt;span style="color:#ceb1ff">First&lt;/span> &lt;span style="color:#c2ffdf">extends&lt;/span> Model {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">public&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">Third&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">return&lt;/span> $this&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">hasManyThrough&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;App\Third&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;App\Second&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;C_id&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;A_id&amp;#39;&lt;/span>, &lt;span style="color:#c2ffdf">null&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;B_id&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> );
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>上記のような「FirstクラスからSecondクラスを経由してThirdクラスのデータを取得したい」場合、&lt;br>
hasManyThroughメソッドに渡す引数は順に、&lt;/p>
&lt;ul>
&lt;li>最終的にデータを取得するクラス（Third）&amp;hellip;&amp;lsquo;App\Third&amp;rsquo;&lt;/li>
&lt;li>経由するクラス（Second）&amp;hellip;&amp;lsquo;App\Second&amp;rsquo;&lt;/li>
&lt;li>経由するクラス（Second）と呼び出し元（First）を繋ぐキー&amp;hellip;&amp;lsquo;C_id&amp;rsquo;&lt;/li>
&lt;li>呼び出し元（First）のマスターキー&amp;hellip;&amp;lsquo;A_id&amp;rsquo;&lt;/li>
&lt;li>&lt;s>よくわからないやつ👹&lt;/s> 呼び出し元（First）のローカルキー&amp;hellip;null&lt;/li>
&lt;li>経由するクラス（Second）と最終的にデータを取得するクラス（Third）を繋ぐキー&amp;hellip;&amp;lsquo;B_id&amp;rsquo;
となる。&lt;/li>
&lt;/ul>
&lt;p>５番目の&lt;s>「よく分からないやつ」&lt;/s>「呼び出し元（First）のローカルキー」には&lt;code>null&lt;/code>を渡すとうまくいった&amp;hellip;&lt;s>これはいったいなんなのか？？？ &lt;/s>&lt;br>
これ、指定しなくてもいいんだねぇ&amp;hellip;&amp;hellip;謎&lt;/p>
&lt;p>😱💬 最初はこういう書き方してたせいで結果が0件だった. &lt;br>
　　 　そりゃ経由するクラス（Second）と最終的にデータを取得するクラス（Third）を繋ぐキーがなければ結果が出るはずもないよね. 反省.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">class&lt;/span> &lt;span style="color:#ceb1ff">First&lt;/span> &lt;span style="color:#c2ffdf">extends&lt;/span> Model {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">public&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">Third&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">return&lt;/span> $this&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">hasManyThrough&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;App\Third&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;App\Second&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;C_id&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;A_id&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;B_id&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> );
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>😭💬 &lt;b>教訓：ちゃんとバージョンにあったドキュメント読みましょうね.&lt;/b>&lt;/p></description></item><item><title>【AWS】Laravelアプリケーションのデプロイ</title><link>https://tech-b.azimicat.dev/docs/old/2018-07-22-awslaravel%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4/</link><pubDate>Sun, 22 Jul 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-07-22-awslaravel%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4/</guid><description>&lt;h2 id="composer-で作成されたファイルを含むソースバンドルを作成する">Composer で作成されたファイルを含むソースバンドルを作成する&lt;/h2>
&lt;ul>
&lt;li>アプリケーションのルートで実行する&lt;/li>
&lt;li>hoge.zip には付けたいファイル名を入れる
&lt;code>zip ../hoge.zip -r * .[^.]* -x &amp;quot;vendor/*&amp;quot;&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="ソースバンドルをデプロイする">ソースバンドルをデプロイする&lt;/h2>
&lt;ul>
&lt;li>Elastic Beanstalk コンソールの管理ページへ移動する
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180722/20180722234450.png" alt="f:id:azix:20180722234450p:plain" title="f:id:azix:20180722234450p:plain">&lt;/li>
&lt;li>アップロードとデプロイで先程のファイルを選択し、デプロイボタンを押下する
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180722/20180722235200.png" alt="f:id:azix:20180722235200p:plain" title="f:id:azix:20180722235200p:plain">
🦑 &amp;lt; 結構時間かかるよ&lt;/li>
&lt;/ul>
&lt;h2 id="確認">確認&lt;/h2>
&lt;ul>
&lt;li>ダッシュボードに遷移するので、完了になるまで待つ&lt;/li>
&lt;/ul>
&lt;h2 id="ルートの設定">ルートの設定&lt;/h2>
&lt;p>アプリケーションのURL叩くとエラーになってしまう。その原因は、ルートが　&lt;strong>/&lt;/strong> になっているから。&lt;br>
なので、ルートを &lt;strong>/public&lt;/strong> にする必要がある。&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Elastic Beanstalk コンソールの管理ページへ移動する&lt;/p>
&lt;/li>
&lt;li>
&lt;p>サイドメニューの [設定] へ移動する&lt;/p>
&lt;/li>
&lt;li>
&lt;p>[設定] の [ソフトウエア] から [変更] でページ移動する&lt;/p>
&lt;/li>
&lt;li>
&lt;p>[ドキュメントのルート] に [/public] と入力し [変更] で完了
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180722/20180722235255.png" alt="f:id:azix:20180722235255p:plain" title="f:id:azix:20180722235255p:plain">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>ダッシュボードに遷移するので、完了になるまで待つ&lt;br>
🦑 &amp;lt; 結構時間かかるよ&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>PHPでCSVのデータを加工するときに使った関数の備忘録</title><link>https://tech-b.azimicat.dev/docs/old/2018-07-19-php%E3%81%A7csv%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8A%A0%E5%B7%A5%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E4%BD%BF%E3%81%A3%E3%81%9F%E9%96%A2%E6%95%B0%E3%81%AE%E5%82%99%E5%BF%98%E9%8C%B2/</link><pubDate>Thu, 19 Jul 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-07-19-php%E3%81%A7csv%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8A%A0%E5%B7%A5%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E4%BD%BF%E3%81%A3%E3%81%9F%E9%96%A2%E6%95%B0%E3%81%AE%E5%82%99%E5%BF%98%E9%8C%B2/</guid><description>&lt;h2 id="改行とカンマで区切られたcsv文字列を想定し実施">改行とカンマで区切られたCSV文字列を想定し実施&lt;/h2>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180719/20180719203926.png" alt="f:id:azix:20180719203926p:plain" title="f:id:azix:20180719203926p:plain">&lt;/p>
&lt;h3 id="目的与えられたcsv形式のデータから頭２つのデータを配列として取り出す">目的：与えられたCSV形式のデータから、頭２つのデータを配列として取り出す&lt;/h3>
&lt;ul>
&lt;li>こんな感じのフォームを準備&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">form&lt;/span> &lt;span style="color:#ceb1ff">action&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;{{ action(&amp;#39;よしなに&amp;#39;) }}&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">method&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;よしなに&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {{ csrf_field() }}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">textarea&lt;/span> &lt;span style="color:#ceb1ff">name&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;csv&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">cols&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;30&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">rows&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;10&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">placeholder&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;CSV情報を入れてください&amp;#34;&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#ffb8d1">textarea&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">input&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;submit&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">value&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;SEND&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">pre&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>例：
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>title-1, author-1, description-1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>title-2, author-2, description-2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>title-3, author-3, description-3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">pre&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">form&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>このフォームに例をそのままぶち込んで送信したものを加工する。&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$csv &lt;span style="color:#ffb8d1">=&lt;/span> $request[&lt;span style="color:#1bc5e0">&amp;#34;csv&amp;#34;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//改行ごとの配列
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$item_groups &lt;span style="color:#ffb8d1">=&lt;/span> preg_split(&lt;span style="color:#1bc5e0">&amp;#34;/&lt;/span>&lt;span style="color:#1bc5e0">\n&lt;/span>&lt;span style="color:#1bc5e0">|&lt;/span>&lt;span style="color:#1bc5e0">\r\n&lt;/span>&lt;span style="color:#1bc5e0">|&lt;/span>&lt;span style="color:#1bc5e0">\r&lt;/span>&lt;span style="color:#1bc5e0">/&amp;#34;&lt;/span>, $csv);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//タイトルと著者の配列
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$items &lt;span style="color:#ffb8d1">=&lt;/span> [];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$keys &lt;span style="color:#ffb8d1">=&lt;/span> [&lt;span style="color:#1bc5e0">&amp;#39;title&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;author&amp;#39;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">foreach&lt;/span> ($item_groups &lt;span style="color:#c2ffdf">as&lt;/span> $item_group) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $c &lt;span style="color:#ffb8d1">=&lt;/span> preg_split(&lt;span style="color:#1bc5e0">&amp;#34;/,/&amp;#34;&lt;/span>, $item_group); &lt;span style="color:#b0bec5">//カンマごとに配列に格納
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> $chunk &lt;span style="color:#ffb8d1">=&lt;/span> array_chunk($c, &lt;span style="color:#c5a3ff">2&lt;/span>)[&lt;span style="color:#c5a3ff">0&lt;/span>]; &lt;span style="color:#b0bec5">//前から2項目のみを配列に追加
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> $changeKey &lt;span style="color:#ffb8d1">=&lt;/span> array_combine($keys, $chunk); &lt;span style="color:#b0bec5">//keyを変更
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> array_push($items, $changeKey);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="説明">説明&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>&lt;code>preg_split&lt;/code> を使って、改行ごとに配列にする.&lt;br>
正規表現は &lt;code>\n|\r\n|\r&lt;/code> で、改行コードを網羅.&lt;/p></description></item><item><title>【Guzzle】POST時のoptionの設定仕方</title><link>https://tech-b.azimicat.dev/docs/old/2018-07-18-guzzlepost%E6%99%82%E3%81%AEoption%E3%81%AE%E8%A8%AD%E5%AE%9A%E4%BB%95%E6%96%B9/</link><pubDate>Wed, 18 Jul 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-07-18-guzzlepost%E6%99%82%E3%81%AEoption%E3%81%AE%E8%A8%AD%E5%AE%9A%E4%BB%95%E6%96%B9/</guid><description>&lt;p>APIの条件が以下のようになっていて、JSONでオプションを送ってくれと言われている場合。&lt;/p>
&lt;p>条件&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>Method: POST
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uri: /{ID} //対象のIDを指定
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Media type: application/json //JSONで送ってねと言われている
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>contents: required (array of string) //IDに対して追加する対象
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$base_url &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;https://hoge&amp;#34;&lt;/span>; &lt;span style="color:#b0bec5">//ダミーです
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$uri &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;/&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">.&lt;/span> $ID;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$method &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;POST&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$okomes &lt;span style="color:#ffb8d1">=&lt;/span> [&lt;span style="color:#1bc5e0">&amp;#39;contents&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> [&lt;span style="color:#1bc5e0">&amp;#39;ビタミン&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;ミネラル&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;食物繊維&amp;#39;&lt;/span>]];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//接続
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$client &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">new&lt;/span> Client($base_url);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$options &lt;span style="color:#ffb8d1">=&lt;/span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;json&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> $okomes, &lt;span style="color:#b0bec5">// ここにぶち込むと勝手にjsonにしてくれる
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;http_errors&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#c2ffdf">false&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;headers&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;Accept&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;application/json&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;Content-Type&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;application/json&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$response &lt;span style="color:#ffb8d1">=&lt;/span> $client&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">request&lt;/span>($method, $uri, $options);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$response_contents_json &lt;span style="color:#ffb8d1">=&lt;/span> $response&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">getBody&lt;/span>()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">getcontents&lt;/span>();
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>🙂💬&lt;br>
GETだとパラメータに打ち込むことができたけど、POSTだとそれができずoptionに突っ込む必要があった。&lt;br>
その時にform_paramsを使ってbodyに打ち込むとBadRequest飛んできたりしてはまってしまった。&lt;br>
（bodyにぶち込むとWarnningでそもそもリクエストが飛ばないなど問題ありありでした。&lt;br>
公式ドキュメントはちゃんと読もう。&lt;br>
&lt;a href="http://docs.guzzlephp.org/en/latest/request-options.html">Guzzle-公式ドキュメント&lt;/a>&lt;/p></description></item><item><title>【HTML】checkbox のチェックを付けていない時もパラメータを送る</title><link>https://tech-b.azimicat.dev/docs/old/2018-07-10-htmlcheckbox_%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%82%92%E4%BB%98%E3%81%91%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E6%99%82%E3%82%82%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%92%E9%80%81%E3%82%8B/</link><pubDate>Tue, 10 Jul 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-07-10-htmlcheckbox_%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%82%92%E4%BB%98%E3%81%91%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E6%99%82%E3%82%82%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%92%E9%80%81%E3%82%8B/</guid><description>&lt;ul>
&lt;li>checkbox のチェックが付いていない場合、 name も value も送信されない&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;lt;!-- 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5"> チェックされた場合は on が送信されるが、
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5"> チェックされていない場合は何も送信されない。
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5"> --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">input&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;checkbox&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">name&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;test&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">value&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;on&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>name属性が同じ場合、後に書かれたものが優先的に送信される&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;lt;!-- 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">hidden 属性で、 vlaue に off を設定しておくと、
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">(1)が送信され、(2)は送信されない。
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5"> --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;lt;!-- (1) --&amp;gt;&lt;/span>&amp;lt;&lt;span style="color:#ffb8d1">input&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;hidden&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">name&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;test&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">value&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;off&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;lt;!-- (2) --&amp;gt;&lt;/span>&amp;lt;&lt;span style="color:#ffb8d1">input&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;checkbox&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">name&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;test&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">value&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;on&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;lt;!-- 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">以下の場合、 test には最初(1)の off が設定されているが、
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">(2)の checked により value が(2)のものに上書きされ、 on が送信される。
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5"> --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;lt;!-- (1) --&amp;gt;&lt;/span>&amp;lt;&lt;span style="color:#ffb8d1">input&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;hidden&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">name&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;test&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">value&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;off&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;lt;!-- (2) --&amp;gt;&lt;/span>&amp;lt;&lt;span style="color:#ffb8d1">input&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;checkbox&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">name&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;test&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">value&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;on&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">checked&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>🙂💬 分岐処理いっぱい書くことになるんだったら、これでサクッとやっちゃう方が私は好き。&lt;/p></description></item><item><title>【Laravel】メンテナンスモードの切替, IP制限の設定</title><link>https://tech-b.azimicat.dev/docs/old/2018-07-05-laravel%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AE%E5%88%87%E6%9B%BF_ip%E5%88%B6%E9%99%90%E3%81%AE%E8%A8%AD%E5%AE%9A/</link><pubDate>Thu, 05 Jul 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-07-05-laravel%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AE%E5%88%87%E6%9B%BF_ip%E5%88%B6%E9%99%90%E3%81%AE%E8%A8%AD%E5%AE%9A/</guid><description>&lt;h2 id="maintenance-mode">Maintenance Mode&lt;/h2>
&lt;p>メンテナンスモードの切替が標準搭載されている&lt;/p>
&lt;p>メンテナンスモード有効&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ php artisan down
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Application is now in maintenance mode.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>メンテナンスモード無効&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ php artisan up
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Application is now live.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>この時のメンテナンス画面は &lt;code>resources/views/errors/503.blade.php&lt;/code> が使われる&lt;br>
上記ファイルがない場合の画面はこれ&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180705/20180705143434.png" alt="f:id:azix:20180705143434p:plain" title="f:id:azix:20180705143434p:plain">&lt;/p>
&lt;h2 id="ip制限をかけることもできる">IP制限をかけることもできる　&lt;/h2>
&lt;p>指定したIPからのアクセスの場合は正常に画面を表示する&lt;br>
設定は&lt;code>.env&lt;/code>からカンマ区切りで指定できる&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>#メンテナンス時のアクセス許可IP
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>MAINTENANCE_IP=IPaddress1,IPaddress2,IPaddress3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>env("PARAMETER") といった形の .env で定義した値が読み込めなく（Nullに）なる</title><link>https://tech-b.azimicat.dev/docs/old/2018-07-02-envquotparameterquot_%E3%81%A8%E3%81%84%E3%81%A3%E3%81%9F%E5%BD%A2%E3%81%AE_.env_%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%E5%80%A4%E3%81%8C%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%8Fnull%E3%81%AB%E3%81%AA%E3%82%8B/</link><pubDate>Mon, 02 Jul 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-07-02-envquotparameterquot_%E3%81%A8%E3%81%84%E3%81%A3%E3%81%9F%E5%BD%A2%E3%81%AE_.env_%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%9F%E5%80%A4%E3%81%8C%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%8Fnull%E3%81%AB%E3%81%AA%E3%82%8B/</guid><description>&lt;h1 id="20180702">2018/07/02&lt;/h1>
&lt;h2 id="ローカルログイン画面からログインできない件">ローカルログイン画面からログインできない件&lt;/h2>
&lt;p>起こったこと： &lt;code>env(&amp;quot;PARAMETER&amp;quot;)&lt;/code> といった形の &lt;code>.env&lt;/code> で定義した値が読み込めなく（Nullに）なる事象が発生していた。&lt;/p>
&lt;p>原因1：configキャッシュの作り直しをするため &lt;code>php artisan config:cache&lt;/code> コマンドを実行し、キャッシュが固定されたため。&lt;/p>
&lt;p>原因2：5.2以降の仕様で、キャッシュがある時は、 &lt;code>config/*.php&lt;/code> 以外の場所で使われる &lt;code>env()&lt;/code> は無効化される。（NULLになる）&lt;/p>
&lt;p>解決方法：以下のコマンドを実行&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span># キャッシュファイルの場所まで移動
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ pwd
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>~projectdir/bootstrap/cache
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># configのキャッシュファイルを削除
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ ls -l
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>-rw-r--r-- 1 user_name 46682944 16560 6 28 16:43 config.php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ rm -f config.php
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0">Upgrading To 5.2.0 From 5.1 &amp;gt; Configuration&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>Caching And Env&lt;br>
If you are using the config:cache command during deployment, you must make sure that you are only calling the env function from within your configuration files, and not from anywhere else in your application.&lt;/p></description></item><item><title>正規表現考える</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-22-%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E8%80%83%E3%81%88%E3%82%8B/</link><pubDate>Fri, 22 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-22-%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E8%80%83%E3%81%88%E3%82%8B/</guid><description>&lt;ul>
&lt;li>元: /content/hoge/fuga/piyo/ドメイン/hoge.html&lt;/li>
&lt;li>パターン全体にマッチしたテキスト: /content/hoge/fuga/piyo/
&lt;ul>
&lt;li>正規表現: //content/(.&lt;em>?)/(.&lt;/em>?)/(.*?)//&lt;/li>
&lt;li>正規表現: /^/([^/]*/){4}/&lt;/li>
&lt;li>正規表現: /^/((.*?)/){4}/&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$str &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;/content/hoge/fuga/piyo/ドメイン/hoge.html&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$regular1 &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;/\/content\/(.*?)\/(.*?)\/(.*?)\//&amp;#34;&lt;/span>; &lt;span style="color:#b0bec5">//[/content/hoge/fuga/piyo/]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$regular2 &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;/^\/([^\/]*\/){4}/&amp;#34;&lt;/span>; &lt;span style="color:#b0bec5">//[/content/hoge/fuga/piyo/]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$regular3 &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;/^\/((.*?)\/){4}/&amp;#34;&lt;/span>; &lt;span style="color:#b0bec5">//[/content/hoge/fuga/piyo/]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>preg_match($regular1, $str, $matches1);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>preg_match($regular2, $str, $matches2);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>preg_match($regular3, $str, $matches3);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;元: &amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>$str&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;正規表現: &amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>$regular1&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;パターン全体にマッチしたテキスト: &amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>$matches1[&lt;span style="color:#c5a3ff">0&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;正規表現: &amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>$regular2&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;パターン全体にマッチしたテキスト: &amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>$matches2[&lt;span style="color:#c5a3ff">0&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;正規表現: &amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>$regular3&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;パターン全体にマッチしたテキスト: &amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>$matches3[&lt;span style="color:#c5a3ff">0&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="パターンマッチを確認">パターンマッチを確認&lt;/h3>
&lt;blockquote>
&lt;p>&lt;strong>matches&lt;/strong>&lt;br>
matches を指定した場合、検索結果が代入されます。 $matches[0] にはパターン全体にマッチしたテキストが代入され、 $matches[1] には 1 番目のキャプチャ用サブパターンにマッチした 文字列が代入され、といったようになります。&lt;/p></description></item><item><title>はてなブログ無料会員でも広告を消す方法（これ書いていいのかな？）</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-20-%E3%81%AF%E3%81%A6%E3%81%AA%E3%83%96%E3%83%AD%E3%82%B0%E7%84%A1%E6%96%99%E4%BC%9A%E5%93%A1%E3%81%A7%E3%82%82%E5%BA%83%E5%91%8A%E3%82%92%E6%B6%88%E3%81%99%E6%96%B9%E6%B3%95%E3%81%93%E3%82%8C%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%84%E3%81%84%E3%81%AE%E3%81%8B%E3%81%AA/</link><pubDate>Wed, 20 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-20-%E3%81%AF%E3%81%A6%E3%81%AA%E3%83%96%E3%83%AD%E3%82%B0%E7%84%A1%E6%96%99%E4%BC%9A%E5%93%A1%E3%81%A7%E3%82%82%E5%BA%83%E5%91%8A%E3%82%92%E6%B6%88%E3%81%99%E6%96%B9%E6%B3%95%E3%81%93%E3%82%8C%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%84%E3%81%84%E3%81%AE%E3%81%8B%E3%81%AA/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>デザインCSSに以下の指定を入れる&lt;/p>
&lt;p>.test-google-rectangle-ads {
display: none!important;
}&lt;/p>
&lt;h2 id="説明">説明&lt;/h2>
&lt;p>このようにうっとおしい画像には、2つのクラスが指定されています.&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180620/20180620004437.png" alt="f:id:azix:20180620004437p:plain" title="f:id:azix:20180620004437p:plain"> どうも、googleが自動的に選択してきたものが表示されるようになっているみたい.&lt;/p>
&lt;p>これが表示されるのはこの部分に &lt;code>display: block!important;&lt;/code> が指定されているから.&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180620/20180620004425.png" alt="f:id:azix:20180620004425p:plain" title="f:id:azix:20180620004425p:plain">&lt;/p>
&lt;p>これを上書きしてやればいいので、デザインCSSに以下の指定を入れる.&lt;/p>
&lt;p>.test-google-rectangle-ads {
display: none!important;
}&lt;/p>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180620/20180620004452.png" alt="f:id:azix:20180620004452p:plain" title="f:id:azix:20180620004452p:plain"> （管理画面のデザインからこの編集画面に飛べるよ.）&lt;/p>
&lt;p>指定してやると、このように上書きされて広告は消える. はず. （2018/06/20 0:53 現在） &lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180620/20180620004422.png" alt="f:id:azix:20180620004422p:plain" title="f:id:azix:20180620004422p:plain">&lt;/p></description></item><item><title>【Laravel】クエリビルダーでスペース区切りの複数ワード検索を行う</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-19-laravel%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%93%E3%83%AB%E3%83%80%E3%83%BC%E3%81%A7%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E5%8C%BA%E5%88%87%E3%82%8A%E3%81%AE%E8%A4%87%E6%95%B0%E3%83%AF%E3%83%BC%E3%83%89%E6%A4%9C%E7%B4%A2%E3%82%92%E8%A1%8C%E3%81%86/</link><pubDate>Tue, 19 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-19-laravel%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%93%E3%83%AB%E3%83%80%E3%83%BC%E3%81%A7%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E5%8C%BA%E5%88%87%E3%82%8A%E3%81%AE%E8%A4%87%E6%95%B0%E3%83%AF%E3%83%BC%E3%83%89%E6%A4%9C%E7%B4%A2%E3%82%92%E8%A1%8C%E3%81%86/</guid><description>&lt;p>&lt;a href="http://f.hatena.ne.jp/azix/20180619211409">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180619/20180619211409.png" alt="f:id:azix:20180619211409p:image" title="f:id:azix:20180619211409p:image">&lt;/a>&lt;/p>
&lt;h3 id="所感とか">所感とか&lt;/h3>
&lt;h4 id="所感">所感&lt;/h4>
&lt;p>🤪 考えるのすごい時間かかったのに、寝たら一瞬で思いついた. 睡眠は大事.&lt;/p>
&lt;h4 id="大事だと思ったこと">大事だと思ったこと&lt;/h4>
&lt;ul>
&lt;li>ワードをどの要素にどういう条件で絞り込むのかを明確にすること&lt;/li>
&lt;li>はじめに目的とするSQLを書いてみること&lt;/li>
&lt;li>要素ごとにまとめてwhere句を作っていくこと&lt;/li>
&lt;li>正規表現は何パターンか覚えておきたいところ&lt;/li>
&lt;/ul>
&lt;h3 id="ポイント">ポイント&lt;/h3>
&lt;ul>
&lt;li>半角スペースを全角スペースにする： &lt;code>mb_convert_kana($request-&amp;gt;words, 's');&lt;/code>&lt;/li>
&lt;li>スペースごとに配列に格納： &lt;code>preg_split('/[\s]+/', $request-&amp;gt;words);&lt;/code>&lt;/li>
&lt;li>Illuminate\Support\Collectionで配列要素全てに処理を追加： &lt;code>Collection::make($strArry)-&amp;gt;map(function($p){return &amp;quot;%&amp;quot;.$p.&amp;quot;%&amp;quot;;})-&amp;gt;toArray();&lt;/code>&lt;/li>
&lt;li>それぞれごとにwhere句を形成する： &lt;code>$query-&amp;gt;where(function($query)use(...){});&lt;/code> を複数使うとこでまとまったwhere句を形成できる&lt;/li>
&lt;li>最初に受け取ったinputを引き出せる： &lt;code>$request-&amp;gt;session()-&amp;gt;getOldInput()&lt;/code>&lt;/li>
&lt;/ul>
&lt;h3 id="ソース">ソース&lt;/h3>
&lt;ul>
&lt;li>SQL&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">//&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">検索ワード&lt;/span>[aaa&lt;span style="color:#a8757b"> &lt;/span>bbb&lt;span style="color:#a8757b"> &lt;/span>ccc]&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">の場合&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">select&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">*&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">from&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">`&lt;/span>products&lt;span style="color:#ffb8d1">`&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">where&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>(&lt;span style="color:#ffb8d1">`&lt;/span>title&lt;span style="color:#ffb8d1">`&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">like&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;%aaa%&amp;#34;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">and&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">`&lt;/span>title&lt;span style="color:#ffb8d1">`&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">like&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;%bbb%&amp;#34;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">and&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">`&lt;/span>title&lt;span style="color:#ffb8d1">`&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">like&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;%ccc%&amp;#34;&lt;/span>)&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">or&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>(&lt;span style="color:#ffb8d1">`&lt;/span>description&lt;span style="color:#ffb8d1">`&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">like&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;%aaa%&amp;#34;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">and&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">`&lt;/span>description&lt;span style="color:#ffb8d1">`&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">like&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;%bbb%&amp;#34;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">and&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">`&lt;/span>description&lt;span style="color:#ffb8d1">`&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">like&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;%ccc%&amp;#34;&lt;/span>);&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Model(Search.php)&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">static&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">search&lt;/span>(Request $request)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $products &lt;span style="color:#ffb8d1">=&lt;/span> self&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">query&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $hasParam &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">true&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $search_words;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">if&lt;/span>(isset($request&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">words&lt;/span>)) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//検索ワードを分割
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">if&lt;/span>(isset($request&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">words&lt;/span>)) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//半角スペースを全角スペースにする
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> $request&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">words&lt;/span> &lt;span style="color:#ffb8d1">=&lt;/span> mb_convert_kana($request&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">words&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;s&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//スペースごとに配列に格納
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> $strArry &lt;span style="color:#ffb8d1">=&lt;/span> preg_split(&lt;span style="color:#1bc5e0">&amp;#39;/[\s]+/&amp;#39;&lt;/span>, $request&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">words&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//use Illuminate\Support\Collectionで配列要素全てにワイルドカード（%）を追加
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#b0bec5">//$pが配列の要素ひとつずつになる. その要素に処理をして,returnで元の要素と入れ替えるイメージ
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> $search_words &lt;span style="color:#ffb8d1">=&lt;/span> Collection&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">make&lt;/span>($strArry)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">map&lt;/span>(&lt;span style="color:#c2ffdf">function&lt;/span>($p)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">return&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;%&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">.&lt;/span> $p &lt;span style="color:#ffb8d1">.&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;%&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> })&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">toArray&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $count &lt;span style="color:#ffb8d1">=&lt;/span> count($search_words);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//title, descriptionそれぞれごとにwhere句を形成
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> $products &lt;span style="color:#ffb8d1">=&lt;/span> $products
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">where&lt;/span>(&lt;span style="color:#c2ffdf">function&lt;/span>($query)&lt;span style="color:#c2ffdf">use&lt;/span>($search_words){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">foreach&lt;/span>($search_words &lt;span style="color:#c2ffdf">as&lt;/span> $search_word) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $query&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">where&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;title&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;like&amp;#39;&lt;/span>, $search_word);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> })
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">orwhere&lt;/span>(&lt;span style="color:#c2ffdf">function&lt;/span>($query)&lt;span style="color:#c2ffdf">use&lt;/span>($search_words){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">foreach&lt;/span>($search_words &lt;span style="color:#c2ffdf">as&lt;/span> $search_word) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $query&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">where&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;description&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;like&amp;#39;&lt;/span>, $search_word);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">else&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $hasParam &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">false&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $products &lt;span style="color:#ffb8d1">=&lt;/span> $products;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $result &lt;span style="color:#ffb8d1">=&lt;/span> [];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//初期表示にメッセージが出ないようにする
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">if&lt;/span>($products&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">count&lt;/span>() &lt;span style="color:#ffb8d1">&amp;lt;=&lt;/span> &lt;span style="color:#c5a3ff">0&lt;/span> &lt;span style="color:#ffb8d1">&amp;amp;&amp;amp;&lt;/span> $hasParam){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $result[&lt;span style="color:#1bc5e0">&amp;#39;message&amp;#39;&lt;/span>] &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;検索結果は0件です&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> } &lt;span style="color:#c2ffdf">else&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $result[&lt;span style="color:#1bc5e0">&amp;#39;message&amp;#39;&lt;/span>] &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $result[&lt;span style="color:#1bc5e0">&amp;#39;products&amp;#39;&lt;/span>] &lt;span style="color:#ffb8d1">=&lt;/span> $products;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">return&lt;/span> $result;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Controller(Controller.php)&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">public&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">index&lt;/span>(Request $request)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $products &lt;span style="color:#ffb8d1">=&lt;/span> Search&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">search&lt;/span>($request);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $message &lt;span style="color:#ffb8d1">=&lt;/span> $products[&lt;span style="color:#1bc5e0">&amp;#39;message&amp;#39;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $products &lt;span style="color:#ffb8d1">=&lt;/span> $products[&lt;span style="color:#1bc5e0">&amp;#39;products&amp;#39;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">if&lt;/span>($message) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//検索結果が0件の場合
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">return&lt;/span> view(&lt;span style="color:#1bc5e0">&amp;#39;index&amp;#39;&lt;/span>, [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;products&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> $products,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;inputs&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> array_merge($request&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">input&lt;/span>(), $request&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">session&lt;/span>()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">getOldInput&lt;/span>()),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;message&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> $message
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//検索結果が1件以上の場合
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">return&lt;/span> view(&lt;span style="color:#1bc5e0">&amp;#39;akashic-game.products.index&amp;#39;&lt;/span>, [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;products&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> $products,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;inputs&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> array_merge($request&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">input&lt;/span>(), $request&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">session&lt;/span>()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">getOldInput&lt;/span>()),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;message&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> $message
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>View(index.blade.php)&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>@if (isset($message))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">p&lt;/span>&amp;gt;{{ $message }}&amp;lt;/&lt;span style="color:#ffb8d1">p&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@else
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">form&lt;/span> &lt;span style="color:#ceb1ff">action&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;{{ action(&amp;#39;Controller@index&amp;#39;) }}&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">method&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;GET&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">fieldset&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">input&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;text&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">name&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;words&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">value&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;@if(!empty($inputs[&amp;#39;words&amp;#39;])){{ $inputs[&amp;#39;words&amp;#39;] }}@endif&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">button&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;submit&amp;#34;&lt;/span>&amp;gt;検索&amp;lt;/&lt;span style="color:#ffb8d1">button&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">fieldset&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">form&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@forelse($items as $item)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">li&lt;/span>&amp;gt;{{ $item-&amp;gt;title }} : {{ $item-&amp;gt;description }}&amp;lt;/&lt;span style="color:#ffb8d1">li&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@endforeach
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>display:none の時のimgサイズ</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-19-displaynone_%E3%81%AE%E6%99%82%E3%81%AEimg%E3%82%B5%E3%82%A4%E3%82%BA/</link><pubDate>Tue, 19 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-19-displaynone_%E3%81%AE%E6%99%82%E3%81%AEimg%E3%82%B5%E3%82%A4%E3%82%BA/</guid><description>&lt;p>へーと思ったのでメモ。&lt;/p>
&lt;h2 id="displaynone-の時のimgサイズは-00pix-になる">display:none の時のimgサイズは 0*0pix になる&lt;/h2>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180619/20180619150505.png" alt="f:id:azix:20180619150505p:plain" title="f:id:azix:20180619150505p:plain">&lt;/p>
&lt;p>表示中のサイズ&lt;/p>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180619/20180619150953.png" alt="f:id:azix:20180619150953p:plain" title="f:id:azix:20180619150953p:plain">&lt;/p>
&lt;p>非表示中のサイズは0になる&lt;/p>
&lt;p>ソースはこんな感じ&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">body&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">div&lt;/span> &lt;span style="color:#ceb1ff">class&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;wrap&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">button&lt;/span> &lt;span style="color:#ceb1ff">id&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;item&amp;#34;&lt;/span>&amp;gt;さーばる&amp;lt;/&lt;span style="color:#ffb8d1">button&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">button&lt;/span> &lt;span style="color:#ceb1ff">id&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;reset&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">style&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;display: none;&amp;#34;&lt;/span>&amp;gt;もどす&amp;lt;/&lt;span style="color:#ffb8d1">button&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">div&lt;/span> &lt;span style="color:#ceb1ff">style&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;margin-top: 1em;&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">img&lt;/span> &lt;span style="color:#ceb1ff">alt&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;さーばる&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">src&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;animal_serval.png&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">style&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;display: none; height: 30%;&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $(&lt;span style="color:#1bc5e0">&amp;#39;#item&amp;#39;&lt;/span>).click(&lt;span style="color:#c2ffdf">function&lt;/span> () {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $(&lt;span style="color:#c2ffdf">this&lt;/span>).hide();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $(&lt;span style="color:#1bc5e0">&amp;#39;img&amp;#39;&lt;/span>).show();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $(&lt;span style="color:#1bc5e0">&amp;#39;#reset&amp;#39;&lt;/span>).show();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $(&lt;span style="color:#1bc5e0">&amp;#39;#reset&amp;#39;&lt;/span>).click(&lt;span style="color:#c2ffdf">function&lt;/span> () {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $(&lt;span style="color:#c2ffdf">this&lt;/span>).hide();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $(&lt;span style="color:#1bc5e0">&amp;#39;img&amp;#39;&lt;/span>).hide();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $(&lt;span style="color:#1bc5e0">&amp;#39;#item&amp;#39;&lt;/span>).show();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">body&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>MacでPATHを通す</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-17-mac%E3%81%A7path%E3%82%92%E9%80%9A%E3%81%99/</link><pubDate>Sun, 17 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-17-mac%E3%81%A7path%E3%82%92%E9%80%9A%E3%81%99/</guid><description>&lt;p>😌💬　laravelのinstall時に、端末でlaravelコマンドが実行できるようにcomposer関連のパスを通す必要があった.&lt;/p>
&lt;h2 id="bash_profileに通したいpathを記入する">&lt;code>.bash_profile&lt;/code>に通したいPATHを記入する&lt;/h2>
&lt;p>ホームディレクトリ直下にある設定ファイル &lt;strong>&lt;code>.bash_profile&lt;/code>&lt;/strong> がすべてのPATHを統括しているらしい.&lt;/p>
&lt;ul>
&lt;li>ターミナルで実行&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ vi ~/.bash_profile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>目的のパスを記入&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5"># ←これでコメントにできるのでパスの説明をつけるとわかりやすい&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">export&lt;/span> PATH&lt;span style="color:#ffb8d1">=$&lt;/span>PATH:&lt;span style="color:#960050;background-color:#1e0010">通したい&lt;/span>PATH
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>今回の目的はlaravelを使えるようにすることなので、 &lt;code>.composer/vendor/bin&lt;/code> を通す.&lt;br>
パスの出典：&lt;a href="https://readouble.com/laravel/4.2/ja/quick.html">Laravel 4.2 Laravelクイックスタート&lt;/a>&lt;br>
以下のように書いた&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">#laravel&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">export&lt;/span> PATH&lt;span style="color:#ffb8d1">=$&lt;/span>PATH:&lt;span style="color:#ffb8d1">~/.&lt;/span>composer&lt;span style="color:#ffb8d1">/&lt;/span>vendor&lt;span style="color:#ffb8d1">/&lt;/span>bin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="bash_profileを更新">&lt;code>.bash_profile&lt;/code>を更新&lt;/h2>
&lt;p>そのままでは反映されないため、ターミナルを開き直すか、sourceコマンドで更新する.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ source ~/.bash_profile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="pathの確認">PATHの確認&lt;/h2>
&lt;p>パスが通ったかどうかを確認する. ↑の更新をしていない場合反映されていない情報が出てくるので注意.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ printenv PATH
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>実行すると[:]で区切られたパス達がゾゾゾっと出てくる&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>/usr/local/Cellar/git/2.17.0/bin:/Users/username/.pyenv/shims:/Users/username/.pyenv/bin:/usr/local/Cellar/git/2.17.0/bin:/Users/username/.pyenv/shims:/Users/username/.pyenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/username/.composer/vendor/bin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>😌💬　後はただlaravel newコマンドで、指定したディレクトリーに真新しいLaravelプロジェクトを作ることができる!!&lt;/p></description></item><item><title>追跡させたいブランチを指定する</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-17-%E8%BF%BD%E8%B7%A1%E3%81%95%E3%81%9B%E3%81%9F%E3%81%84%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B/</link><pubDate>Sun, 17 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-17-%E8%BF%BD%E8%B7%A1%E3%81%95%E3%81%9B%E3%81%9F%E3%81%84%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B/</guid><description>&lt;h2 id="git-pull-だけでmaster-branchからpullしたい">&lt;code>git pull&lt;/code> だけでmaster branchからpullしたい&lt;/h2>
&lt;p>🤔💬　何も指定しないと、&lt;code>git pull &amp;lt;remote&amp;gt; &amp;lt;branch&amp;gt;&lt;/code> を指定する必要がある. めんどう.&lt;/p>
&lt;h3 id="1-githubのリモートブランチと対応するローカルブランチを確認する">1. GitHubのリモートブランチと対応するローカルブランチを確認する.&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ git branch -vv
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これで、以下のような結果が出てくるはず.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span> develop 4192c2b [origin/develop] commit
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> master e26b393 [origin/master: behind 1] first try
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>* test 4192c2b commit
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;code>*&lt;/code> が現在のブランチ&lt;/li>
&lt;li>&lt;code>[リモート/ブランチ名]&lt;/code> が追跡（対応）しているブランチ&lt;/li>
&lt;/ul>
&lt;h3 id="2-追跡ブランチを指定する">2. 追跡ブランチを指定する.&lt;/h3>
&lt;ul>
&lt;li>追跡させたいローカルブランチにcheckoutした状態で以下を実行&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ git branch --set-upstream-to=origin/[ブランチ名]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>　&lt;em>or&lt;/em>&lt;/p>
&lt;ul>
&lt;li>オプションを省略できる（-u）&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ git branch -u origin/[ブランチ名]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>webの送信処理についての基礎</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-12-web%E3%81%AE%E9%80%81%E4%BF%A1%E5%87%A6%E7%90%86%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E5%9F%BA%E7%A4%8E/</link><pubDate>Tue, 12 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-12-web%E3%81%AE%E9%80%81%E4%BF%A1%E5%87%A6%E7%90%86%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E5%9F%BA%E7%A4%8E/</guid><description>&lt;p>&lt;a href="http://f.hatena.ne.jp/azix/20180613004741">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180613/20180613004741.png" alt="f:id:azix:20180613004741p:image" title="f:id:azix:20180613004741p:image">&lt;/a>&lt;/p>
&lt;h3 id="formタグについて">formタグについて&lt;/h3>
&lt;p>送信をするためには&lt;strong>formタグ&lt;/strong>を用いる必要があります.（Ajax通信を用いる場合やHTML5の場合は不要）&lt;br>
&lt;code>&amp;lt;form&amp;gt;～&amp;lt;/form&amp;gt;&lt;/code> の間には（formタグを入れ子にする以外）どんなタグが埋め込まれていても問題ありません.&lt;/p>
&lt;p>formタグには必須の属性が2つあります.&lt;/p>
&lt;ul>
&lt;li>action属性&lt;/li>
&lt;li>method属性&lt;/li>
&lt;/ul>
&lt;h4 id="action属性">action属性&lt;/h4>
&lt;p>送信先のファイルのパスを指定します.&lt;br>
送信ボタンを押した際に,ここで指定したファイルにデータの送信とページ遷移を行います.&lt;/p>
&lt;h4 id="method">method&lt;/h4>
&lt;p>送信の方法を指定します.&lt;br>
POST/GETのいずれかを指定します. POSTは秘匿性があり個人情報の送信などに強く、GETは公開性がありアクセスログの開示を容易にしたりアドレスバーへの表示で渡した条件をユーザに見せることができます.&lt;/p>
&lt;h3 id="inputタグについて">inputタグについて&lt;/h3>
&lt;p>inputタグは送信する値を定義するタグで,基本的に &lt;code>&amp;lt;form&amp;gt;～&amp;lt;/form&amp;gt;&lt;/code> の間に設置します.&lt;br>
&lt;strong>※これがないと値はなにも送信されません&lt;/strong>&lt;/p>
&lt;p>inputタグには必須の属性は３つです&lt;/p>
&lt;ul>
&lt;li>type属性&lt;/li>
&lt;li>name属性&lt;/li>
&lt;li>value属性（入力フィールド以外は必須）&lt;/li>
&lt;/ul>
&lt;h4 id="name属性">name属性&lt;/h4>
&lt;p>サーバー側が送信された値を受け取る時に必要なラベルになります. 詳細は下記の「送信後の例」をみてください.&lt;/p>
&lt;h4 id="type属性">type属性&lt;/h4>
&lt;p>入力される要素のタイプ（種類）を指定するもので、たくさんの種類があります.&lt;br>
入力する値に応じて適切な属性を指定する必要があります.&lt;br>
参考：&lt;a href="http://www.htmq.com/html5/input.shtml">&lt;code>&amp;lt;input&amp;gt;&lt;/code>HTML5タグリファレンス&lt;/a>&lt;/p>
&lt;h4 id="value属性">value属性&lt;/h4>
&lt;p>name属性の値とセットでプログラム側に送られます.&lt;br>
&lt;code>input type=&amp;quot;text&amp;quot;&lt;/code> のようにユーザが入力できる場合には, value属性の値は空（ &lt;code>value=&amp;quot;&amp;quot;&lt;/code> ）または属性自体を省略してもOKですが,&lt;br>
その他のラジオボタン, チェックボックス, プルダウン等ではチェックされたinputのvalueを送信することからvalueが必須となります.&lt;/p>
&lt;h4 id="送信後の例">送信後の例&lt;/h4>
&lt;p>もし、以下のような &lt;code>input&lt;/code> が定義されていた場合、&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">form&lt;/span> &lt;span style="color:#ceb1ff">action&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;/&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">method&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;GET&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">input&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;text&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">name&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;ジュース&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">value&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;贅沢みかん&amp;#34;&lt;/span> &amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">form&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>送信される値はvalue属性に指定されている「贅沢みかん」となります.&lt;br>
受け取り側では、&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$_GET[&amp;#39;ジュース&amp;#39;]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>のように、nameで指定した名称からvalueを得ることができます.&lt;br>
つまりname属性が無いと, &lt;strong>どの&lt;/strong>入力データであるのかがプログラム側で判断できないためname属性が必須扱いなのです.&lt;/p></description></item><item><title>【jQuery】n秒間hoverすると発火する処理</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-08-jqueryn%E7%A7%92%E9%96%93hover%E3%81%99%E3%82%8B%E3%81%A8%E7%99%BA%E7%81%AB%E3%81%99%E3%82%8B%E5%87%A6%E7%90%86/</link><pubDate>Fri, 08 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-08-jqueryn%E7%A7%92%E9%96%93hover%E3%81%99%E3%82%8B%E3%81%A8%E7%99%BA%E7%81%AB%E3%81%99%E3%82%8B%E5%87%A6%E7%90%86/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-javascript" data-lang="javascript">&lt;span style="display:flex;">&lt;span>$(&lt;span style="color:#1bc5e0">&amp;#34;#target&amp;#34;&lt;/span>).mouseenter(&lt;span style="color:#c2ffdf">function&lt;/span>(){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#b0bec5">//1秒間hoverしたら表示
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> timmer &lt;span style="color:#ffb8d1">=&lt;/span> setTimeout(&lt;span style="color:#c2ffdf">function&lt;/span>(){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 	console.log(&lt;span style="color:#1bc5e0">&amp;#34;SUCCESS!&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },&lt;span style="color:#c5a3ff">1000&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}).mouseleave(&lt;span style="color:#c2ffdf">function&lt;/span>(){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> clearTimeout(timmer);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>});
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="ポイント">ポイント&lt;/h3>
&lt;ul>
&lt;li>&lt;code>setTimeout&lt;/code>を使う.&lt;/li>
&lt;li>カーソルが外れた時に&lt;code>clearTimeout&lt;/code>でタイマーを切って処理への道を断つ.&lt;/li>
&lt;li>&lt;code>setTimeout([処理], [n/1000秒])&lt;/code>なので、1秒=1000で記載する.&lt;/li>
&lt;/ul>
&lt;h3 id="heading">✌️&lt;/h3>
&lt;p>もちろん&lt;code>hover()&lt;/code>でもできる.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-javascript" data-lang="javascript">&lt;span style="display:flex;">&lt;span>$(&lt;span style="color:#1bc5e0">&amp;#34;#target&amp;#34;&lt;/span>).hover(&lt;span style="color:#c2ffdf">function&lt;/span>(){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#b0bec5">//1秒間hoverしたら表示
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> timmer &lt;span style="color:#ffb8d1">=&lt;/span> setTimeout(&lt;span style="color:#c2ffdf">function&lt;/span>(){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 	console.log(&lt;span style="color:#1bc5e0">&amp;#34;SUCCESS!&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },&lt;span style="color:#c5a3ff">1000&lt;/span>);},&lt;span style="color:#c2ffdf">function&lt;/span>(){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> clearTimeout(timmer);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>})
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>view内での改行の出力</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-06-view%E5%86%85%E3%81%A7%E3%81%AE%E6%94%B9%E8%A1%8C%E3%81%AE%E5%87%BA%E5%8A%9B/</link><pubDate>Wed, 06 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-06-view%E5%86%85%E3%81%A7%E3%81%AE%E6%94%B9%E8%A1%8C%E3%81%AE%E5%87%BA%E5%8A%9B/</guid><description>&lt;p>mysqlを使っていると、改行は&lt;code>\r\n&lt;/code>で登録されます.&lt;br>
これをviewでそのまま出力（&lt;code>{{ $value['str'] }}&lt;/code>）すると、改行されずに表示されます.&lt;br>
&lt;br>
改行をするには以下の対応が必要です.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>{!! nl2br($value[&amp;#39;str&amp;#39;]) !!}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="--">{!! ~~ !!}&lt;/h2>
&lt;p>bladeで、変数などを埋め込む時に使うタグ.&lt;br>
&lt;br>
&lt;code>{{ 値・式・変数・関数など }}&lt;/code>：HTMLエスケープ処理される&lt;br>
&lt;code>{!! 値・式・変数・関数など !!}}&lt;/code>：HTMLエスケープ処理されない&lt;br>
&lt;br>
という風になっているので、HTMLタグをタグとして使いたい場合は２番目の&lt;code>{!! !!}&lt;/code>を使うとよい.&lt;/p>
&lt;h2 id="nl2br">nl2br()&lt;/h2>
&lt;blockquote>
&lt;p>string に含まれるすべての改行文字 (\r\n、 \n\r、\n および \r) の前に &amp;lt;br /&amp;gt; あるいは &amp;lt;br&amp;gt; を挿入して返します。&lt;/p>
&lt;/blockquote>
&lt;p>&lt;a href="http://php.net/manual/ja/function.nl2br.php">PHP マニュアル&amp;gt;関数リファレンス&amp;gt;テキスト処理&amp;gt;文字列&amp;gt;String 関数&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> nl2br(&lt;span style="color:#1bc5e0">&amp;#34;プレーンな味わいの中に&lt;/span>&lt;span style="color:#1bc5e0">\r\n&lt;/span>&lt;span style="color:#1bc5e0">発行の風味が活きる&lt;/span>&lt;span style="color:#1bc5e0">\r\n&lt;/span>&lt;span style="color:#1bc5e0">ソーダ クラッカー&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// [出力]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// プレーンな味わいの中に
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// 発行の風味が活きる
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// ソーダ クラッカー
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>⚠️ &lt;strong>nl2br()を使っても、中の文字列をシングルコーテーション（&amp;rsquo;）でくくると変換されず、\r\nが表示されるので注意.&lt;/strong>&lt;/p></description></item><item><title>コミットしたくない変更を保存する</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-05-%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%8F%E3%81%AA%E3%81%84%E5%A4%89%E6%9B%B4%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B/</link><pubDate>Tue, 05 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-05-%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%8F%E3%81%AA%E3%81%84%E5%A4%89%E6%9B%B4%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B/</guid><description>&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605205339.png" alt="f:id:azix:20180605205339p:plain" title="f:id:azix:20180605205339p:plain">&lt;/p>
&lt;p>ということがありましたので、メモ。&lt;/p>
&lt;h1 id="git-stash">git stash&lt;/h1>
&lt;p>stash &amp;ndash; こっそりしまう、隠す、蓄える&lt;/p>
&lt;p>ということらしく、 &lt;strong>コミットしたくないけど変更は残したまま違うブランチで作業したい！&lt;/strong> というときに使う。&lt;/p>
&lt;h2 id="用例">用例&lt;/h2>
&lt;p>基本的な部分だけ。&lt;/p>
&lt;h3 id="1-保存">1. 保存&lt;/h3>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605205809.png" alt="f:id:azix:20180605205809p:plain" title="f:id:azix:20180605205809p:plain">
このように変更したものをコミットはせず退避させます。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ git stash save
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Saved working directory and index state WIP on hoge_branch: 6796c35 Merge pull request #3 from hoge/dev
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>ファイルを見ると変更がなくなっているはずです。&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605210147.png" alt="f:id:azix:20180605210147p:plain" title="f:id:azix:20180605210147p:plain">&lt;/p>
&lt;p>これで、hoge_branchにあった変更を保存できました。
本当に保存できているか確認してみます。&lt;/p>
&lt;h3 id="2-保存済みを確認">2. 保存済みを確認&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ git stash list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>stash@{0}: WIP on hoge_branch: 6796c35 Merge pull request #3 from hoge/dev
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>stashの0番目に保存されていることがわかります。&lt;br>
これを取り出していまのブランチに反映させてみます。&lt;/p>
&lt;h3 id="3-取り出し削除">3. 取り出し+削除&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ git stash pop
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>On branch hoge_branch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Changes not staged for commit:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (use &amp;#34;git add &amp;lt;file&amp;gt;...&amp;#34; to update what will be committed)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (use &amp;#34;git checkout -- &amp;lt;file&amp;gt;...&amp;#34; to discard changes in working directory)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	modified: README.md
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>no changes added to commit (use &amp;#34;git add&amp;#34; and/or &amp;#34;git commit -a&amp;#34;)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Dropped refs/stash@{0} (df55bea129a52dcbe86235da8db0f8acb4f4d7a6)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>変更が今のbranchに適用されます。&lt;/p></description></item><item><title>仕事中とかに考えていたメモ</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-05-%E4%BB%95%E4%BA%8B%E4%B8%AD%E3%81%A8%E3%81%8B%E3%81%AB%E8%80%83%E3%81%88%E3%81%A6%E3%81%84%E3%81%9F%E3%83%A1%E3%83%A2/</link><pubDate>Tue, 05 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-05-%E4%BB%95%E4%BA%8B%E4%B8%AD%E3%81%A8%E3%81%8B%E3%81%AB%E8%80%83%E3%81%88%E3%81%A6%E3%81%84%E3%81%9F%E3%83%A1%E3%83%A2/</guid><description>&lt;h1 id="hover等で表示されるモーダルについて">hover等で表示されるモーダルについて&lt;/h1>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212247.png" alt="f:id:azix:20180605212247p:plain" title="f:id:azix:20180605212247p:plain">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212255.png" alt="f:id:azix:20180605212255p:plain" title="f:id:azix:20180605212255p:plain">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212309.png" alt="f:id:azix:20180605212309p:plain" title="f:id:azix:20180605212309p:plain">&lt;/p>
&lt;h1 id="そこそこちゃんとしてるメモ">そこそこちゃんとしてるメモ&lt;/h1>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212657.png" alt="f:id:azix:20180605212657p:plain" title="f:id:azix:20180605212657p:plain">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212640.png" alt="f:id:azix:20180605212640p:plain" title="f:id:azix:20180605212640p:plain">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212649.png" alt="f:id:azix:20180605212649p:plain" title="f:id:azix:20180605212649p:plain">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212601.png" alt="f:id:azix:20180605212601p:plain" title="f:id:azix:20180605212601p:plain">&lt;/p>
&lt;h1 id="その他メモ">その他メモ&lt;/h1>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212615.png" alt="f:id:azix:20180605212615p:plain" title="f:id:azix:20180605212615p:plain">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212631.png" alt="f:id:azix:20180605212631p:plain" title="f:id:azix:20180605212631p:plain">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212707.png" alt="f:id:azix:20180605212707p:plain" title="f:id:azix:20180605212707p:plain">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212608.png" alt="f:id:azix:20180605212608p:plain" title="f:id:azix:20180605212608p:plain">&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180605/20180605212623.png" alt="f:id:azix:20180605212623p:plain" title="f:id:azix:20180605212623p:plain">&lt;/p></description></item><item><title>【PHP】ファイルの出力</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-01-php%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%87%BA%E5%8A%9B/</link><pubDate>Fri, 01 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-01-php%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%87%BA%E5%8A%9B/</guid><description>&lt;p>コーディング中に配列の中身とかを確認したくなる時があるのでメモ.&lt;/p>
&lt;h2 id="file_put_contents-を使う">&lt;strong>file_put_contents()&lt;/strong> を使う.&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//ファイルにリクエスト内容をアウトプット
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$filename &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;/Users/username/Desktop/出力ファイル.txt&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$data &lt;span style="color:#ffb8d1">=&lt;/span> $request&lt;span style="color:#ffb8d1">.&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;&lt;/span>&lt;span style="color:#1bc5e0">\n&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>file_put_contents($filename, $data); &lt;span style="color:#b0bec5">//必要であればフラグを立てる
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>file_put_contents($filename, $data, $flag)&lt;/code>&lt;/p>
&lt;h2 id="フラグについて">フラグについて&lt;/h2>
&lt;ul>
&lt;li>FILE_USE_INCLUDE_PATH：ファイルパスをインクルードディレクトリから検索する&lt;/li>
&lt;li>FILE_APPEND → ファイルに追記する（上書きしない）&lt;/li>
&lt;li>LOCK_EX → 書き込み中にファイルを排他ロックする&lt;/li>
&lt;/ul></description></item><item><title>APIから取得した値を配列に突っ込むまで</title><link>https://tech-b.azimicat.dev/docs/old/2018-06-01-api%E3%81%8B%E3%82%89%E5%8F%96%E5%BE%97%E3%81%97%E3%81%9F%E5%80%A4%E3%82%92%E9%85%8D%E5%88%97%E3%81%AB%E7%AA%81%E3%81%A3%E8%BE%BC%E3%82%80%E3%81%BE%E3%81%A7/</link><pubDate>Fri, 01 Jun 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-06-01-api%E3%81%8B%E3%82%89%E5%8F%96%E5%BE%97%E3%81%97%E3%81%9F%E5%80%A4%E3%82%92%E9%85%8D%E5%88%97%E3%81%AB%E7%AA%81%E3%81%A3%E8%BE%BC%E3%82%80%E3%81%BE%E3%81%A7/</guid><description>&lt;h2 id="apiからの値の取得guzzlehttpをつかう">APIからの値の取得（GuzzleHttpをつかう）&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">namespace&lt;/span> App;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">use&lt;/span> GuzzleHttp\Client;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">class&lt;/span> &lt;span style="color:#ceb1ff">API&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#c2ffdf">static&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">getData&lt;/span> () 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		$base_url &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;APIのURL&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		$path &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;API目的のPATH&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		$client &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">new&lt;/span> GuzzleHttp\Client([&lt;span style="color:#1bc5e0">&amp;#39;base_uri&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> $base_url,]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#b0bec5">//接続
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>		$response &lt;span style="color:#ffb8d1">=&lt;/span> $client&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">request&lt;/span>( &lt;span style="color:#1bc5e0">&amp;#39;GET&amp;#39;&lt;/span>, $path, []);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		$response_contents &lt;span style="color:#ffb8d1">=&lt;/span> $response&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">getBody&lt;/span>()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">getcontents&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#c2ffdf">echo&lt;/span> $response_contents;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="jsonを配列へ変換し加工する">jsonを配列へ変換し加工する&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$response_contents &lt;span style="color:#ffb8d1">=&lt;/span> file_get_contents(&lt;span style="color:#1bc5e0">&amp;#39;out/response.json&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//エンコーディング確認
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">echo&lt;/span> mb_detect_encoding($response_contents)&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//response_contentsを配列に変換
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$returnDatas &lt;span style="color:#ffb8d1">=&lt;/span> json_decode($response_contents, &lt;span style="color:#c2ffdf">true&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//返却用加工データ
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$show &lt;span style="color:#ffb8d1">=&lt;/span> [];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">try&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//各種情報を配列に格納
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">for&lt;/span>($i &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c5a3ff">0&lt;/span>; $i &lt;span style="color:#ffb8d1">&amp;lt;&lt;/span> count($returnDatas[&lt;span style="color:#1bc5e0">&amp;#39;data&amp;#39;&lt;/span>]); $i&lt;span style="color:#ffb8d1">++&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $data &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">array&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;programId&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span>$returnDatas[&lt;span style="color:#1bc5e0">&amp;#39;data&amp;#39;&lt;/span>][$i][&lt;span style="color:#1bc5e0">&amp;#39;id&amp;#39;&lt;/span>], &lt;span style="color:#b0bec5">//ID
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;title&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span>$returnDatas[&lt;span style="color:#1bc5e0">&amp;#39;data&amp;#39;&lt;/span>][$i][&lt;span style="color:#1bc5e0">&amp;#39;title&amp;#39;&lt;/span>], &lt;span style="color:#b0bec5">//タイトル
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> );
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> array_push($show,$data);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">catch&lt;/span>(Exception $e){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;$e-&amp;gt;getmessage()&amp;gt;&amp;gt;&amp;gt;&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">echo&lt;/span> $e&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">getmessage&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;&amp;lt;&amp;lt;&amp;lt;$e-&amp;gt;getmessage()&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;最終結果&amp;gt;&amp;gt;&amp;gt;&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> print_r($show)&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;&amp;lt;&amp;lt;&amp;lt;最終結果&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>日付フォーマット</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-28-%E6%97%A5%E4%BB%98%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88/</link><pubDate>Mon, 28 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-28-%E6%97%A5%E4%BB%98%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88/</guid><description>&lt;h2 id="apiからの値の取得guzzlehttpをつかう">APIからの値の取得（GuzzleHttpをつかう）&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">namespace&lt;/span> App;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">use&lt;/span> GuzzleHttp\Client;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">class&lt;/span> &lt;span style="color:#ceb1ff">API&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#c2ffdf">static&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">getData&lt;/span> () 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		$base_url &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;APIのURL&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		$path &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;API目的のPATH&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		$client &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">new&lt;/span> GuzzleHttp\Client([&lt;span style="color:#1bc5e0">&amp;#39;base_uri&amp;#39;&lt;/span> &lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span> $base_url,]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#b0bec5">//接続
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>		$response &lt;span style="color:#ffb8d1">=&lt;/span> $client&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">request&lt;/span>( &lt;span style="color:#1bc5e0">&amp;#39;GET&amp;#39;&lt;/span>, $path, []);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		$response_contents &lt;span style="color:#ffb8d1">=&lt;/span> $response&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">getBody&lt;/span>()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">getcontents&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#c2ffdf">echo&lt;/span> $response_contents;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="jsonを配列へ変換し加工する">jsonを配列へ変換し加工する&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$response_contents &lt;span style="color:#ffb8d1">=&lt;/span> file_get_contents(&lt;span style="color:#1bc5e0">&amp;#39;out/response.json&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//エンコーディング確認
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">echo&lt;/span> mb_detect_encoding($response_contents)&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//response_contentsを配列に変換
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$returnDatas &lt;span style="color:#ffb8d1">=&lt;/span> json_decode($response_contents, &lt;span style="color:#c2ffdf">true&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//返却用加工データ
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$show &lt;span style="color:#ffb8d1">=&lt;/span> [];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">try&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//各種情報を配列に格納
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#c2ffdf">for&lt;/span>($i &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c5a3ff">0&lt;/span>; $i &lt;span style="color:#ffb8d1">&amp;lt;&lt;/span> count($returnDatas[&lt;span style="color:#1bc5e0">&amp;#39;data&amp;#39;&lt;/span>]); $i&lt;span style="color:#ffb8d1">++&lt;/span>){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $data &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">array&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;programId&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span>$returnDatas[&lt;span style="color:#1bc5e0">&amp;#39;data&amp;#39;&lt;/span>][$i][&lt;span style="color:#1bc5e0">&amp;#39;id&amp;#39;&lt;/span>], &lt;span style="color:#b0bec5">//ID
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;title&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span>$returnDatas[&lt;span style="color:#1bc5e0">&amp;#39;data&amp;#39;&lt;/span>][$i][&lt;span style="color:#1bc5e0">&amp;#39;title&amp;#39;&lt;/span>], &lt;span style="color:#b0bec5">//タイトル
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> );
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> array_push($show,$data);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">catch&lt;/span>(Exception $e){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;$e-&amp;gt;getmessage()&amp;gt;&amp;gt;&amp;gt;&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">echo&lt;/span> $e&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">getmessage&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;&amp;lt;&amp;lt;&amp;lt;$e-&amp;gt;getmessage()&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">echo&lt;/span> PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;最終結果&amp;gt;&amp;gt;&amp;gt;&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> print_r($show)&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;&amp;lt;&amp;lt;&amp;lt;最終結果&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">.&lt;/span>PHP_EOL;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>PHPUnitでテストを行う</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-25-phpunit%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E8%A1%8C%E3%81%86/</link><pubDate>Fri, 25 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-25-phpunit%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E8%A1%8C%E3%81%86/</guid><description>&lt;h2 id="testメソッド作成">Testメソッド作成&lt;/h2>
&lt;ul>
&lt;li>makeでTestUnitを作成&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ php artisan make:test [TestUnitName]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>🙂💬 作成したTestUnitは[tests/Feature/]配下に配置されるので、機能が分かれている時は[TestUnitName]にディレクトリも追加する.&lt;/p>
&lt;h2 id="testメソッドを実装">Testメソッドを実装&lt;/h2>
&lt;ul>
&lt;li>以下が初期状態&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">namespace&lt;/span> Tests\Feature;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">use&lt;/span> Tests\TestCase;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">use&lt;/span> Illuminate\Foundation\Testing\RefreshDatabase;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">class&lt;/span> &lt;span style="color:#ceb1ff">SampleTest&lt;/span> &lt;span style="color:#c2ffdf">extends&lt;/span> TestCase
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0"> * A basic test example.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0"> * @return void
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">public&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">testExample&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $this&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">assertTrue&lt;/span>(&lt;span style="color:#c2ffdf">true&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>一番重要なのが &lt;strong>assertHoge()&lt;/strong> のようなアサートメソッド. アサーションを行う.&lt;br>
このメソッドがそのテストの成功失敗を判定する. 基本的に１メソッドに対して１アサートメソッドだが、複数指定も可能.&lt;br>
（私は今回１：１でやったので複数指定の場合は他を参照してね.）&lt;/li>
&lt;/ul>
&lt;h2 id="アサートメソッド一覧">アサートメソッド一覧&lt;/h2>
&lt;p>アサートメソッドに関しては私がまとめるよりも公式が充実しているのでそちらを参照のこと.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://e-words.jp/w/%E3%82%A2%E3%82%B5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.html">アサーションとは&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://phpunit.de/manual/6.5/ja/appendixes.assertions.html">アサートメソッドに関する公式ドキュメント（メソッドの一覧もある）&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="dbとのやりとりが発生する場合の約束ごと">DBとのやりとりが発生する場合の約束ごと&lt;/h2>
&lt;p>🙁💭 ここが一番大変だった、というか知らなかったのではまった.&lt;/p>
&lt;ul>
&lt;li>必ず &lt;strong>setUp()&lt;/strong> すること&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">...&lt;/span>略&lt;span style="color:#ffb8d1">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">public&lt;/span> &lt;span style="color:#c2ffdf">function&lt;/span> &lt;span style="color:#ceb1ff">setUp&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">parent&lt;/span>&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">setUp&lt;/span>(); &lt;span style="color:#b0bec5">//おまじない. よくわからんがこれを書くことで環境をリセットしてる.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>DBとの接続をするときに必ず必要.&lt;br>
各テストメソッドの実行前に呼ばれるメソッドで、テストメソッドごとに同じ環境を用意しテストメソッド内で動的に変化させて追従したい場合に使う.&lt;br>
DBとの接続で必要なのは、メソッドごとにDBの環境をリセットしたいから.&lt;br>
例）テストメソッド１で全データを削除→テストメソッド２で特定のデータを取得できることを確認すると、データが消えているのでNGとなる&amp;hellip;ﾅﾄﾞ&lt;/p></description></item><item><title>transaction処理中の動きで変数が更新されず嵌った.（解決済み）</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-22-transaction%E5%87%A6%E7%90%86%E4%B8%AD%E3%81%AE%E5%8B%95%E3%81%8D%E3%81%A7%E5%A4%89%E6%95%B0%E3%81%8C%E6%9B%B4%E6%96%B0%E3%81%95%E3%82%8C%E3%81%9A%E5%B5%8C%E3%81%A3%E3%81%9F.%E8%A7%A3%E6%B1%BA%E6%B8%88%E3%81%BF/</link><pubDate>Tue, 22 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-22-transaction%E5%87%A6%E7%90%86%E4%B8%AD%E3%81%AE%E5%8B%95%E3%81%8D%E3%81%A7%E5%A4%89%E6%95%B0%E3%81%8C%E6%9B%B4%E6%96%B0%E3%81%95%E3%82%8C%E3%81%9A%E5%B5%8C%E3%81%A3%E3%81%9F.%E8%A7%A3%E6%B1%BA%E6%B8%88%E3%81%BF/</guid><description>&lt;p>これ、try-catch中の変数の変化を取得できてないのかな？と思い検証.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>{{-- blade --}}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@if(session(&amp;#39;message&amp;#39;))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">ul&lt;/span> &lt;span style="color:#ceb1ff">class&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;list-group&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">li&lt;/span> &lt;span style="color:#ceb1ff">class&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;list-group-item list-group-item-success&amp;#34;&lt;/span>&amp;gt;{{ session(&amp;#39;message&amp;#39;) }}&amp;lt;/&lt;span style="color:#ffb8d1">li&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">ul&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@endif
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//controller
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//成功チェック
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>$success &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">false&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">try&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> DB&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">transaction&lt;/span>(&lt;span style="color:#c2ffdf">function&lt;/span> () &lt;span style="color:#c2ffdf">use&lt;/span> ($success) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//登録処理
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> DB&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">insert&lt;/span>($data);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $success &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">true&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">catch&lt;/span>(Exception $e)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $success &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">false&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//成功メッセージの表示
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">if&lt;/span>($success)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">return&lt;/span> redirect(&lt;span style="color:#1bc5e0">&amp;#39;cbt/user&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">with&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;message&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;成功しました&amp;#39;&lt;/span>); &lt;span style="color:#b0bec5">//ここが出力されない
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">else&lt;/span>&lt;span style="color:#b0bec5">//TODO
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">return&lt;/span> redirect(&lt;span style="color:#1bc5e0">&amp;#39;cbt/user&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">with&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;message&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;予期せぬ状態&amp;#39;&lt;/span>); &lt;span style="color:#b0bec5">//ここが出力される
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;br>
間違っていた箇所はフラグの変更位置. 
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>	DB&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">transaction&lt;/span>(&lt;span style="color:#c2ffdf">function&lt;/span> () {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	 &lt;span style="color:#b0bec5">//登録処理
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>	 DB&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">insert&lt;/span>($data);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	});
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $success &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">true&lt;/span>; &lt;span style="color:#b0bec5">//transaction外でフラグを変更.
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;br>
どうやら、transaction内部ではDBでの処理が完了し次第、スコープの外に出てしまうようです. 
以下のような処理にしても、returnしてくれなかった. 
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>	DB&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">transaction&lt;/span>(&lt;span style="color:#c2ffdf">function&lt;/span> () {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	 &lt;span style="color:#b0bec5">//登録処理
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>	 DB&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">insert&lt;/span>($data);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">return&lt;/span> redirect(&lt;span style="color:#1bc5e0">&amp;#39;cbt/user&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">with&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;message&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;これはtransaction内からのredirectです&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	});
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;h3 id="まとめ">まとめ&lt;/h3>
&lt;p>transactionメソッド中では、DB接続が終了し次第 &lt;code>exit&lt;/code> 状態となるため、DB処理の後ろで何かやっても無意味！！！&lt;/p></description></item><item><title>トランザクション処理で詰まった</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-21-%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%87%A6%E7%90%86%E3%81%A7%E8%A9%B0%E3%81%BE%E3%81%A3%E3%81%9F/</link><pubDate>Mon, 21 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-21-%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%87%A6%E7%90%86%E3%81%A7%E8%A9%B0%E3%81%BE%E3%81%A3%E3%81%9F/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>トランザクション処理では外部で定義したの変数は指定して呼び出す必要がある.&lt;/p>
&lt;h2 id="詳細">詳細&lt;/h2>
&lt;p>ざっくり以下のような状態で実行すると&amp;hellip;&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>$kinds &lt;span style="color:#ffb8d1">=&lt;/span> [&lt;span style="color:#1bc5e0">&amp;#39;cat&amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;dog&amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;mouse&amp;#39;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DB&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">transaction&lt;/span>(&lt;span style="color:#c2ffdf">function&lt;/span> (){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//格納データ配列の作成
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> $data &lt;span style="color:#ffb8d1">=&lt;/span> [];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">foreach&lt;/span>($kinds &lt;span style="color:#c2ffdf">as&lt;/span> $kind){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> array_push($data,[
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;kind&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span>$kind,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#1bc5e0">&amp;#39;createdAt&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span>date(&lt;span style="color:#1bc5e0">&amp;#39;Y-m-d H:i:s&amp;#39;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">//登録処理
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> DB&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">insert&lt;/span>($data);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>});
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>このようなエラーメッセージが表示される.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//ERROR MESSAGE
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>Undefined variable&lt;span style="color:#ffb8d1">:&lt;/span> kind
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>引数の呼び出しが必要だったようで、以下のようにして解決。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>$kinds &lt;span style="color:#ffb8d1">=&lt;/span> [&lt;span style="color:#1bc5e0">&amp;#39;cat&amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;dog&amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;mouse&amp;#39;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DB&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">transaction&lt;/span>(&lt;span style="color:#c2ffdf">function&lt;/span> () &lt;span style="color:#c2ffdf">use&lt;/span> ($kind) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#b0bec5">//...同処理...
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>🙁💭 このtransactionがメソッドでスコープが限定されてるものだってことを知らなかったせいで嵌ってしまった。基礎を知るis大切。一晩きちんと寝たら気づいたのでよかった。&lt;/p>
&lt;p>&lt;a href="http://omachizura.com/note/Laravel5%20%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%E5%BC%95%E6%95%B0%E3%82%92%E6%B8%A1%E3%81%99%E6%96%B9%E6%B3%95.html">参考&lt;/a>&lt;/p></description></item><item><title>マイグレーションファイルの作成でエラー</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-21-%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC/</link><pubDate>Mon, 21 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-21-%E3%83%9E%E3%82%A4%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC/</guid><description>&lt;ul>
&lt;li>以下のファイルを実行&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">//@&lt;/span>migrationファイル&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#c2ffdf">public&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">function&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>up()&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">{&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">if&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>(&lt;span style="color:#ffb8d1">!&lt;/span>&lt;span style="color:#c2ffdf">Schema&lt;/span>::hasTable(&lt;span style="color:#1bc5e0">&amp;#39;Test&amp;#39;&lt;/span>))&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">{&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">Schema&lt;/span>::&lt;span style="color:#c2ffdf">create&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;Test&amp;#39;&lt;/span>,&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">function&lt;/span>(Blueprint&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">$&lt;/span>&lt;span style="color:#c2ffdf">table&lt;/span>)&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">{&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">$&lt;/span>&lt;span style="color:#c2ffdf">table&lt;/span>&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>engine&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;InnoDB&amp;#34;&lt;/span>;&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">$&lt;/span>&lt;span style="color:#c2ffdf">table&lt;/span>&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>bigInteger(&lt;span style="color:#1bc5e0">&amp;#39;empId&amp;#39;&lt;/span>,&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c5a3ff">20&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>unsigned()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#c2ffdf">comment&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;従業員ID&amp;#39;&lt;/span>);&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">//&lt;/span>BIGINT(&lt;span style="color:#c5a3ff">20&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>UNSIGNED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">PRIMARY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">KEY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NOT&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NULL&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">$&lt;/span>&lt;span style="color:#c2ffdf">table&lt;/span>&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>bigInteger(&lt;span style="color:#1bc5e0">&amp;#39;compId&amp;#39;&lt;/span>,&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c5a3ff">20&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>unsigned()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#c2ffdf">comment&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;会社ID&amp;#39;&lt;/span>);&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">//&lt;/span>BIGINT(&lt;span style="color:#c5a3ff">20&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>UNSIGNED&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">}&lt;/span>);&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">}&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">}&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>auto columnは設定していないのに以下のエラーが発生する.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>SQLSTATE[42000]: Syntax error or access violation: 1075 Incorrect table definition; there can be only one auto column and it must be defined as a key 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;ul>
&lt;li>こうするとうまくいく. 😕💭カラム長の指定がまずいの？？？&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">Schema&lt;/span>::&lt;span style="color:#c2ffdf">create&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;Test&amp;#39;&lt;/span>,&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">function&lt;/span>(Blueprint&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">$&lt;/span>&lt;span style="color:#c2ffdf">table&lt;/span>)&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">{&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">$&lt;/span>&lt;span style="color:#c2ffdf">table&lt;/span>&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>engine&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;InnoDB&amp;#34;&lt;/span>;&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">$&lt;/span>&lt;span style="color:#c2ffdf">table&lt;/span>&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>bigInteger(&lt;span style="color:#1bc5e0">&amp;#39;empId&amp;#39;&lt;/span>,&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c5a3ff">20&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>unsigned()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#c2ffdf">comment&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;従業員ID&amp;#39;&lt;/span>);&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">//&lt;/span>BIGINT(&lt;span style="color:#c5a3ff">20&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>UNSIGNED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">PRIMARY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">KEY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NOT&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NULL&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">$&lt;/span>&lt;span style="color:#c2ffdf">table&lt;/span>&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>bigInteger(&lt;span style="color:#1bc5e0">&amp;#39;compId&amp;#39;&lt;/span>)&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>unsigned()&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#c2ffdf">comment&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;会社ID&amp;#39;&lt;/span>);&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">//&lt;/span>BIGINT(&lt;span style="color:#c5a3ff">20&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>UNSIGNED&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">}&lt;/span>);&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>mysql&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">show&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>columns&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">from&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>Test;&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#ffb8d1">+&lt;/span>&lt;span style="color:#b0bec5">-----------------------------+---------------------+------+-----+---------+----------------+
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>Field&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">Type&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">Null&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">Key&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">Default&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>Extra&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#ffb8d1">+&lt;/span>&lt;span style="color:#b0bec5">-----------------------------+---------------------+------+-----+---------+----------------+
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>empId&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>bigint(&lt;span style="color:#c5a3ff">20&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>unsigned&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NO&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>PRI&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NULL&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>auto_increment&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>compId&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>bigint(&lt;span style="color:#c5a3ff">20&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>unsigned&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NO&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NULL&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">|&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#ffb8d1">+&lt;/span>&lt;span style="color:#b0bec5">-----------------------------+---------------------+------+-----+---------+----------------+
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>🙁💭 目的は達成できたけど原因がわからずもにょる.&lt;br>
&lt;br>
BIGINTは8バイト整数なので、必要記憶容量は8バイト.&lt;br>
桁数はマイナスを含め20桁なので、上記では自動で最大が振られたということ&amp;hellip;？&lt;br>
他のファイル見ててもそんな感じだった. 目的のサイズが最大より小さくなるなら指定する感じかな？&lt;br>
&lt;br>
⚠️ BIGINT(20)の20は表示幅のこと. 桁数ではない. &lt;a href="http://takasing104.hateblo.jp/entry/2013/01/11/203958">TINYINT(1)で格納可能値の勘違いをしていた件&lt;/a>&lt;/p></description></item><item><title>連想配列が格納された配列</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-18-%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97%E3%81%8C%E6%A0%BC%E7%B4%8D%E3%81%95%E3%82%8C%E3%81%9F%E9%85%8D%E5%88%97/</link><pubDate>Fri, 18 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-18-%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97%E3%81%8C%E6%A0%BC%E7%B4%8D%E3%81%95%E3%82%8C%E3%81%9F%E9%85%8D%E5%88%97/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$input	=	(&amp;#39;id&amp;#39;		=&amp;gt; &amp;#39;52738495&amp;#39;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>			 &amp;#39;name&amp;#39;		=&amp;gt; &amp;#39;ねこ&amp;#39;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>			 &amp;#39;birthday&amp;#39;	=&amp;gt; &amp;#39;2000/01/31&amp;#39;);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>↑みたいな連想配列を作りたい。&lt;/p>
&lt;ul>
&lt;li>できた&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>$values &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">array&lt;/span>(&lt;span style="color:#c5a3ff">100&lt;/span>,&lt;span style="color:#c5a3ff">200&lt;/span>,&lt;span style="color:#c5a3ff">300&lt;/span>,&lt;span style="color:#c5a3ff">400&lt;/span>,&lt;span style="color:#c5a3ff">500&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$data &lt;span style="color:#ffb8d1">=&lt;/span> []; &lt;span style="color:#b0bec5">//全体の配列
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">foreach&lt;/span>($values &lt;span style="color:#c2ffdf">as&lt;/span> $value) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $item &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#c2ffdf">array&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;id&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span>$value, &lt;span style="color:#1bc5e0">&amp;#39;name&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;ねこ&amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;birthday&amp;#39;&lt;/span>&lt;span style="color:#ffb8d1">=&amp;gt;&lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;2000/01/31&amp;#39;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> array_push($data,$item);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;&amp;lt;pre&amp;gt;&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>print_r($data);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#1bc5e0">&amp;#34;&amp;lt;/pre&amp;gt;&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>//出力
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Array
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [0] =&amp;gt; Array
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [id] =&amp;gt; 100
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [name] =&amp;gt; ねこ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [birthday] =&amp;gt; 2000/01/31
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [1] =&amp;gt; Array
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [id] =&amp;gt; 200
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [name] =&amp;gt; ねこ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [birthday] =&amp;gt; 2000/01/31
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [2] =&amp;gt; Array
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [id] =&amp;gt; 300
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [name] =&amp;gt; ねこ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [birthday] =&amp;gt; 2000/01/31
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [3] =&amp;gt; Array
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [id] =&amp;gt; 400
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [name] =&amp;gt; ねこ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [birthday] =&amp;gt; 2000/01/31
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [4] =&amp;gt; Array
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [id] =&amp;gt; 500
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [name] =&amp;gt; ねこ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [birthday] =&amp;gt; 2000/01/31
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>MySQLからの出力で改行を表示する（PHPで処理）</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-17-mysql%E3%81%8B%E3%82%89%E3%81%AE%E5%87%BA%E5%8A%9B%E3%81%A7%E6%94%B9%E8%A1%8C%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8Bphp%E3%81%A7%E5%87%A6%E7%90%86/</link><pubDate>Thu, 17 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-17-mysql%E3%81%8B%E3%82%89%E3%81%AE%E5%87%BA%E5%8A%9B%E3%81%A7%E6%94%B9%E8%A1%8C%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8Bphp%E3%81%A7%E5%87%A6%E7%90%86/</guid><description>&lt;ul>
&lt;li>これだと、改行が反映されない&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;&lt;/span>table&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#c2ffdf">foreach&lt;/span> ($items &lt;span style="color:#c2ffdf">as&lt;/span> $items)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;lt;&lt;/span>tr&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;lt;&lt;/span>td&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>{{ $items[&lt;span style="color:#1bc5e0">&amp;#39;comment&amp;#39;&lt;/span>] }}&lt;span style="color:#ffb8d1">&amp;lt;/&lt;/span>td&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;lt;/&lt;/span>tr&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#c2ffdf">endforeach&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;/&lt;/span>table&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>修正するとこんな感じになりました&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;&lt;/span>table&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#c2ffdf">foreach&lt;/span> ($items &lt;span style="color:#c2ffdf">as&lt;/span> $items)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;lt;&lt;/span>tr&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;lt;&lt;/span>td&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;lt;&lt;/span>pre&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>{{ $items[&lt;span style="color:#1bc5e0">&amp;#39;comment&amp;#39;&lt;/span>] }}&lt;span style="color:#ffb8d1">&amp;lt;/&lt;/span>pre&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;lt;/&lt;/span>td&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">&amp;lt;/&lt;/span>tr&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#c2ffdf">endforeach&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;/&lt;/span>table&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>preだとフォームみたいなのがついちゃうので、以下のスタイルを当てる&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-css" data-lang="css">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">pre&lt;/span> {&lt;span style="color:#c2ffdf">border&lt;/span>: &lt;span style="color:#c5a3ff">0&lt;/span>; &lt;span style="color:#c2ffdf">background-color&lt;/span>: &lt;span style="color:#c2ffdf">transparent&lt;/span>;}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="まとめ">まとめ&lt;/h3>
&lt;ul>
&lt;li>preタグを使って整形済みテキストとして表示するとよい&lt;/li>
&lt;/ul>
&lt;h3 id="追記">追記&lt;/h3>
&lt;p>こっちの方が現実的なので追記。&amp;ldquo;view内での改行の出力&amp;rdquo;&lt;/p></description></item><item><title>TypeScriptを使う（本当に使ってみるだけの場合。）</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-17-typescript%E3%82%92%E4%BD%BF%E3%81%86%E6%9C%AC%E5%BD%93%E3%81%AB%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E3%81%A0%E3%81%91%E3%81%AE%E5%A0%B4%E5%90%88/</link><pubDate>Thu, 17 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-17-typescript%E3%82%92%E4%BD%BF%E3%81%86%E6%9C%AC%E5%BD%93%E3%81%AB%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%E3%81%A0%E3%81%91%E3%81%AE%E5%A0%B4%E5%90%88/</guid><description>&lt;h3 id="typescriptとはなんぞや">TypeScriptとはなんぞや&lt;/h3>
&lt;ol>
&lt;li>大規模開発言語に近い仕様でソースコードを書くことができる&lt;/li>
&lt;li>コンパイルするとJavaScriptになる&lt;/li>
&lt;/ol>
&lt;h3 id="コンパイラをインストールする">コンパイラをインストールする&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">$&lt;/span> npm install &lt;span style="color:#ffb8d1">-&lt;/span>g typescript
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">/&lt;/span>Users&lt;span style="color:#ffb8d1">/&lt;/span>ホスト名&lt;span style="color:#ffb8d1">/&lt;/span>.nvm&lt;span style="color:#ffb8d1">/&lt;/span>versions&lt;span style="color:#ffb8d1">/&lt;/span>node&lt;span style="color:#ffb8d1">/&lt;/span>v8&lt;span style="color:#c5a3ff">.11.1&lt;/span>&lt;span style="color:#ffb8d1">/&lt;/span>bin&lt;span style="color:#ffb8d1">/&lt;/span>tsserver &lt;span style="color:#ffb8d1">-&lt;/span>&amp;gt; &lt;span style="color:#ffb8d1">/&lt;/span>Users&lt;span style="color:#ffb8d1">/&lt;/span>ホスト名&lt;span style="color:#ffb8d1">/&lt;/span>.nvm&lt;span style="color:#ffb8d1">/&lt;/span>versions&lt;span style="color:#ffb8d1">/&lt;/span>node&lt;span style="color:#ffb8d1">/&lt;/span>v8&lt;span style="color:#c5a3ff">.11.1&lt;/span>&lt;span style="color:#ffb8d1">/&lt;/span>lib&lt;span style="color:#ffb8d1">/&lt;/span>node_modules&lt;span style="color:#ffb8d1">/&lt;/span>typescript&lt;span style="color:#ffb8d1">/&lt;/span>bin&lt;span style="color:#ffb8d1">/&lt;/span>tsserver
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">/&lt;/span>Users&lt;span style="color:#ffb8d1">/&lt;/span>ホスト名&lt;span style="color:#ffb8d1">/&lt;/span>.nvm&lt;span style="color:#ffb8d1">/&lt;/span>versions&lt;span style="color:#ffb8d1">/&lt;/span>node&lt;span style="color:#ffb8d1">/&lt;/span>v8&lt;span style="color:#c5a3ff">.11.1&lt;/span>&lt;span style="color:#ffb8d1">/&lt;/span>bin&lt;span style="color:#ffb8d1">/&lt;/span>tsc &lt;span style="color:#ffb8d1">-&lt;/span>&amp;gt; &lt;span style="color:#ffb8d1">/&lt;/span>Users&lt;span style="color:#ffb8d1">/&lt;/span>ホスト名&lt;span style="color:#ffb8d1">/&lt;/span>.nvm&lt;span style="color:#ffb8d1">/&lt;/span>versions&lt;span style="color:#ffb8d1">/&lt;/span>node&lt;span style="color:#ffb8d1">/&lt;/span>v8&lt;span style="color:#c5a3ff">.11.1&lt;/span>&lt;span style="color:#ffb8d1">/&lt;/span>lib&lt;span style="color:#ffb8d1">/&lt;/span>node_modules&lt;span style="color:#ffb8d1">/&lt;/span>typescript&lt;span style="color:#ffb8d1">/&lt;/span>bin&lt;span style="color:#ffb8d1">/&lt;/span>tsc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">+&lt;/span> typescript&lt;span style="color:#960050;background-color:#1e0010">@&lt;/span>&lt;span style="color:#c5a3ff">2.8.3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>added &lt;span style="color:#c5a3ff">1&lt;/span> &lt;span style="color:#ffb8d1">package&lt;/span> in &lt;span style="color:#c5a3ff">2.891&lt;/span>s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="プロジェクトフォルダを作成">プロジェクトフォルダを作成&lt;/h3>
&lt;ul>
&lt;li>コマンド&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ cd htdocs/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ mkdir typescript-test1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ cd typescript-test1/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ touch tscode.ts
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ touch show.html
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ touch tsconfig.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>構成&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>📁 htdocs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>└ 📁 typescript-test1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	├ 🗒 tscode.ts
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	├ 🗒 show.html
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	└ 🗒 tsconfig.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="とりあえず出力して表示までやってみる">とりあえず出力して表示までやってみる&lt;/h3>
&lt;h4 id="わーっと書いてみる">わーっと書いてみる&lt;/h4>
&lt;p>[show.html]&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;lt;!DOCTYPE&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">html&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">head&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">meta&lt;/span> &lt;span style="color:#ceb1ff">charset&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;utf-8&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">style&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">body&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">width&lt;/span> :&lt;span style="color:#c5a3ff">500&lt;/span>&lt;span style="color:#c2ffdf">px&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">padding&lt;/span> :&lt;span style="color:#c5a3ff">10&lt;/span>&lt;span style="color:#c2ffdf">%&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">style&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">head&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">body&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">script&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;text/javascript&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">src&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;tscode.js&amp;#34;&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#ffb8d1">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">body&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">html&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;br>
&lt;p>[tscode.ts]&lt;/p></description></item><item><title>2018年4月7日の「もくもく会」作業目標と成果</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-16-2018%E5%B9%B44%E6%9C%887%E6%97%A5%E3%81%AE%E3%82%82%E3%81%8F%E3%82%82%E3%81%8F%E4%BC%9A%E4%BD%9C%E6%A5%AD%E7%9B%AE%E6%A8%99%E3%81%A8%E6%88%90%E6%9E%9C/</link><pubDate>Wed, 16 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-16-2018%E5%B9%B44%E6%9C%887%E6%97%A5%E3%81%AE%E3%82%82%E3%81%8F%E3%82%82%E3%81%8F%E4%BC%9A%E4%BD%9C%E6%A5%AD%E7%9B%AE%E6%A8%99%E3%81%A8%E6%88%90%E6%9E%9C/</guid><description>&lt;p>state：coinspace 神南&lt;br>
date：2018年4月7日 10:00 - 19:00&lt;br>
member：@akome_hero @necomeshi @andesm @zerokfy @akarui_1206 @grwth1009 @anya_an1&lt;/p>
&lt;h1 id="目的">目的&lt;/h1>
&lt;ul>
&lt;li>android studioを使ってみたい&lt;/li>
&lt;li>dockerを使ってみたい&lt;/li>
&lt;/ul>
&lt;h1 id="目標">目標&lt;/h1>
&lt;ol>
&lt;li>android studioのインストールと日本語化&lt;/li>
&lt;li>android appでhello world! @エミュレーター&lt;/li>
&lt;li>dockerのインストールと起動&lt;/li>
&lt;li>作成したandroid appをdocker上でbuild&amp;amp;エミュレーターで動かす&lt;/li>
&lt;/ol>
&lt;h1 id="成果">成果&lt;/h1>
&lt;ol>
&lt;li>[Clear]android studioのインストールと日本語化&lt;/li>
&lt;li>[Clear]android appでhello world! @エミュレーター&lt;/li>
&lt;li>[Clear]dockerのインストールと起動&lt;/li>
&lt;li>[Unclear]作成したandroid appをdocker上でbuild&amp;amp;エミュレーターで動かす&lt;/li>
&lt;/ol>
&lt;h1 id="docker-install">docker install&lt;/h1>
&lt;p>&lt;a href="https://docs.docker.com/docker-for-mac/install/">Install Docker for Mac&lt;/a>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>stable版をインストール&lt;/p>
&lt;ol>
&lt;li>&lt;code>docker start&lt;/code> で起動&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>
&lt;p>VMを作成する&lt;/p>
&lt;ol>
&lt;li>目的の画面が出てこない（localhost）&lt;/li>
&lt;li>apacheがいきていたので &lt;code>sudo apachectl stop&lt;/code> で殺してから 1. を再度実行するもエラー……&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ docker-machine create --driver virtualbox default
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Running pre-create checks...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Error with pre-create check: &amp;#34;VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>って言って怒られる。docker for macではHyperKitがいるからVirtualBoxはいらないという話では…？&lt;br>
HyperKitがいるかどうか確認してみましたが普通にいました。&lt;/p></description></item><item><title>MySQLのReInstall</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-16-mysql%E3%81%AEreinstall/</link><pubDate>Wed, 16 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-16-mysql%E3%81%AEreinstall/</guid><description>&lt;p>HomeBrewで入れたMySQLのrootパスワードを忘れたので入れ直すことにした……&lt;/p>
&lt;h2 id="コマンドリスト１順に実行していく">コマンドリスト１〜順に実行していく&lt;/h2>
&lt;ol>
&lt;li>&lt;code>brew remove mysql&lt;/code>&lt;/li>
&lt;li>&lt;code>brew cleanup&lt;/code>&lt;/li>
&lt;li>&lt;code>~/Library/LaunchAgents/com.mysql.mysqld.plist&lt;/code> の有無を確認&lt;/li>
&lt;li>3.があった場合 remove する&lt;/li>
&lt;li>&lt;code>sudo rm -rf /usr/local/var/mysql&lt;/code>&lt;/li>
&lt;li>&lt;code>brew install mysql&lt;/code>&lt;/li>
&lt;li>&lt;code>unset TMPDIR&lt;/code> （TMPDIR環境変数の解除）&lt;/li>
&lt;li>&lt;code>mkdir -p ~/Library/LaunchAgents&lt;/code>&lt;/li>
&lt;li>&lt;code>cp /usr/local/Cellar/mysql/5.7.22/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/&lt;/code> （パスのバージョンはinstallした時に表示されたものを指定すること）&lt;/li>
&lt;li>&lt;code>launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist&lt;/code>&lt;/li>
&lt;li>&lt;code>mysql_secure_installation&lt;/code> （セキュリティ関連セットアップ）&amp;ndash;&amp;gt; YES/NO形式で答えていく
&lt;ol>
&lt;li>root ユーザーのパスワードの変更&lt;/li>
&lt;li>VALIDATE PASSWORD プラグインのインストール&lt;/li>
&lt;li>ポリシーに沿った root ユーザーパスワードの設定 (VALIDATE PASSWORD プラグインをインストールした場合)&lt;/li>
&lt;li>anonymous ユーザーの削除&lt;/li>
&lt;li>リモートホストから root ユーザーでログインするのを禁止する&lt;/li>
&lt;li>testデータベースの削除 (存在する場合)&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>設定ファイルによる設定（my.cnf）&lt;/li>
&lt;/ol>
&lt;h2 id="6のinstall結果は以下のようになる現在の最新は5722">6.のinstall結果は以下のようになる（現在の最新は5.7.22）&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-cmd" data-lang="cmd">&lt;span style="display:flex;">&lt;span>$ brew install mysql
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Installing dependencies for mysql: openssl
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Installing mysql dependency: openssl
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2o_1.high_sierra.bottle.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>######################################################################## 100.0%
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Pouring openssl-1.0.2o_1.high_sierra.bottle.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Caveats
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>A CA file has been bootstrapped using certificates from the SystemRoots
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>keychain. To add additional certificates (e.g. the certificates added in
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>the System keychain), place .pem files in
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> /usr/local/etc/openssl/certs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>and run
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> /usr/local/opt/openssl/bin/c_rehash
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>This formula is keg-only, which means it was not symlinked into /usr/local,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">If&lt;/span> you&lt;span style="color:#960050;background-color:#1e0010"> need to have this software first in your PATH run:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">echo&lt;/span> &amp;#39;export PATH=&lt;span style="color:#1bc5e0">&amp;#34;/usr/local/opt/openssl/bin:$PATH&amp;#34;&lt;/span>&amp;#39; &amp;gt;&amp;gt; ~/.bash_profile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">For&lt;/span> compilers to find this software you may need to set:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> LDFLAGS: -L/usr/local/opt/openssl/lib
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> CPPFLAGS: -I/usr/local/opt/openssl/include
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Summary
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>🍺 /usr/local/Cellar/openssl/1.0.2o_1: 1,791 files, 12.3MB
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Installing mysql
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Downloading https://homebrew.bintray.com/bottles/mysql-5.7.22.high_sierra.bottle.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>######################################################################## 100.0%
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Pouring mysql-5.7.22.high_sierra.bottle.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; /usr/local/Cellar/mysql/5.7.22/bin/mysqld --initialize-insecure --user=asahinakamura --basedir=/usr/local/Cellar/mysql/5.7.22 --datadir=/usr/local/var/mysql --tmpdir=/tmp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Caveats
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>We&amp;#39;ve installed your MySQL database without a root password. To secure it run:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> mysql_secure_installation
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>MySQL is configured to only allow connections from localhost by default
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>To connect run:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> mysql -uroot
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>To have launchd start mysql now and restart at login:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> brew services start mysql
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Or, if you don&amp;#39;t want/need a background service you can just run:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> mysql.server start
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>==&amp;gt; Summary
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>🍺 /usr/local/Cellar/mysql/5.7.22: 317 files, 234.2MB
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="12設定ファイルは左から順に読み込まれる">12.設定ファイルは左から順に読み込まれる&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-cmd" data-lang="cmd">&lt;span style="display:flex;">&lt;span>$ mysql --help | grep my.cnf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> order of preference, my.cnf, $MYSQL_TCP_PORT,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>▷一つずつみていくと &lt;code> /usr/local/etc/my.cnf&lt;/code> だけファイルが有ったのでこれに以下の設定を追記&lt;/p></description></item><item><title>Laravel Mixを使おう！</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-15-laravel_mix%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86/</link><pubDate>Tue, 15 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-15-laravel_mix%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86/</guid><description>&lt;h3 id="laravel-mix-とは">laravel mix とは&lt;/h3>
&lt;p>一言で言うと、&lt;/p>
&lt;ul>
&lt;li>web packの設定を簡単に書くことができるlaravel向けのnpmパッケージ&lt;/li>
&lt;/ul>
&lt;p>なのですが。これ言われても意味わかんなかったので噛み砕きます。分かる人は飛ばして。&lt;/p>
&lt;p>web packはwebコンテンツを構成するJavaScriptやSassなどのリソースを &lt;strong>モジュール&lt;/strong> と言う単位で取り扱い、&lt;br>
複数のモジュールを1つにまとめたファイルを出力・最適な形に作り変えてくれるツールです。&lt;br>
（例：３つのJavaScriptをまとめて１ファイルの呼び出しで良いようにしてくれる）&lt;br>
ざっくり言うと &lt;strong>リソースの依存関係を解消してくれるコンパイラ&lt;/strong> です。&lt;/p>
&lt;h3 id="導入方法">導入方法&lt;/h3>
&lt;p>導入にはグローバルインストールとローカルインストールがある。&lt;br>
グローバルインストールはwebpackを利用したいディレクトリ（プロジェクト）以外の &lt;em>全ての環境に影響を及ぼす&lt;/em> ので各自よしなにお願いします。&lt;/p>
&lt;ul>
&lt;li>グローバルインストールの場合&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-cmd" data-lang="cmd">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">cd&lt;/span> ~/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>npm install webpack -g
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>ローカルインストールの場合&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>cd [目的のプロジェクトルート]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>npm install --save-dev webpack
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>（必要ならば）足りないパッケージを補うため以下のコマンドを実行&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>npm init -y
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="使用方法">使用方法&lt;/h3>
&lt;h4 id="準備">準備&lt;/h4>
&lt;ul>
&lt;li>node/npmをインストール（yarnでもOK）&lt;/li>
&lt;li>Laravel 5.* のプロジェクトを作成&lt;/li>
&lt;li>npm installを実行&lt;/li>
&lt;/ul>
&lt;ul>
&lt;li>プロジェクトルートに「webpack.mix.js」があるのでコンパイルの対象を追加（JSファイルやSassファイルなど）&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-js" data-lang="js">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// mix.js(&amp;#39;ビルド元のソースコード&amp;#39;, &amp;#39;ビルド済みファイル出力場所&amp;#39;)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// 例
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>mix.js(&lt;span style="color:#1bc5e0">&amp;#39;resources/assets/js/common.js&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;public/js&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	.js(&lt;span style="color:#1bc5e0">&amp;#39;resources/assets/js/sub.js&amp;#39;&lt;/span>, &lt;span style="color:#1bc5e0">&amp;#39;public/js&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>viewでの呼び出しを追加&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;lt;!-- これで上記２つのjsが読み込まれる --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">head&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&amp;lt;&lt;span style="color:#ffb8d1">script&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;text/javascript&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">src&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;{{ mix(&amp;#39;js/common.js&amp;#39;) }}&amp;#34;&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#ffb8d1">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">head&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="実行">実行&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>npm run dev
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>[f:id:azix:20180515182735p:plain]
こんな感じの結果で、 &lt;code>DONE&lt;/code> が表示されていたら成功！&lt;/p></description></item><item><title>gitで新規リポジトリを作ったときの公式案内の説明</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-14-git%E3%81%A7%E6%96%B0%E8%A6%8F%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%E5%85%AC%E5%BC%8F%E6%A1%88%E5%86%85%E3%81%AE%E8%AA%AC%E6%98%8E/</link><pubDate>Mon, 14 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-14-git%E3%81%A7%E6%96%B0%E8%A6%8F%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%E5%85%AC%E5%BC%8F%E6%A1%88%E5%86%85%E3%81%AE%E8%AA%AC%E6%98%8E/</guid><description>&lt;p>gitではじめてリポジトリ作ったときに、公式サイトに書かれている手順の意味がわからなくて「？？？」ってなりながらやったことがようやく分かるようになったのでメモ。&lt;/p>
&lt;h2 id="まず何が書かれているのか">まず何が書かれているのか。&lt;/h2>
&lt;p>これは私のGitアカウントに新しくリポジトリを作ったときの画面です。
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180514/20180514180543.png" alt="f:id:azix:20180514180543p:plain" title="f:id:azix:20180514180543p:plain">&lt;/p>
&lt;p>大きな４つの項目がありますね。&lt;/p>
&lt;ol>
&lt;li>Quick setup — if you’ve done this kind of thing before&lt;/li>
&lt;li>…or create a new repository on the command line&lt;/li>
&lt;li>…or push an existing repository from the command line&lt;/li>
&lt;li>…or import code from another repository&lt;/li>
&lt;/ol>
&lt;p>それぞれこんなことが書いてあります&lt;/p>
&lt;ol>
&lt;li>セットアップをしたことあるならさっさとやっちゃおう！＋必要情報&lt;/li>
&lt;li>コマンドラインから新しいリポジトリを作る方法&lt;/li>
&lt;li>コマンドラインから既存のリポジトリをプッシュする方法&lt;/li>
&lt;li>他のリポジトリからコードをインポートする方法&lt;/li>
&lt;/ol>
&lt;p>で、解説していきます。１はほかが出来たら「アッソ。」になるので割愛。&lt;/p>
&lt;h2 id="2-コマンドラインから新しいリポジトリを作る方法">2. コマンドラインから新しいリポジトリを作る方法&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>echo &amp;#34;# ReDarekaDiary&amp;#34; &amp;gt;&amp;gt; README.md
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>→今いるディレクトリにREADME.mdというファイルを作って底に「””」の中の文を書き込む
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git init
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>→今いるディレクトリにgitのリポジトリを追加する。「.git」というディレクトリができ、この中にGitの管理ファイルが作成される（既存のディレクトリでのリポジトリの初期化）
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git add README.md
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>→コミットするファイルにREADME.mdを追加する
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git commit -m &amp;#34;first commit”
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>→コミットする。 （-m “ここがコミットコメントになる”）
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git remote add origin https://github.com/AsahiNakamura/ReDarekaDiary.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>→URLに&amp;#34;origin&amp;#34;という短縮名(ニックネーム)を付ける（.git/config内の「remote」項目に定義される）
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git push -u origin master
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>→originサーバへ今いるディレクトリの中身をデフォルトのブランチとしてアップロード（push）する（-uオプションを付けると次回から「git push」だけでorigin masterでpushしてくれる。）
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="3コマンドラインから既存のリポジトリをプッシュする方法">3.コマンドラインから既存のリポジトリをプッシュする方法&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>git remote add origin https://github.com/AsahiNakamura/ReDarekaDiary.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>→URLに&amp;#34;origin&amp;#34;という短縮名(ニックネーム)を付ける（.git/config内の「remote」項目に定義される）
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git push -u origin master
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>→originサーバへ今いるディレクトリの中身をデフォルトのブランチとしてアップロード（push）する（-uオプションを付けると次回から「git push」だけでorigin masterでpushしてくれる。）
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="4他のリポジトリからコードをインポートする方法">4.他のリポジトリからコードをインポートする方法&lt;/h2>
&lt;p>特にコマンドは書かれていないけれど、やることは「リポジトリをクローンする」こと。 &lt;br>
コマンドだと &lt;code>git clone [url]&lt;/code> を使います。&lt;/p></description></item><item><title>hostやportを指定してサーバーを起動する</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-11-host%E3%82%84port%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B/</link><pubDate>Fri, 11 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-11-host%E3%82%84port%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-cmd" data-lang="cmd">&lt;span style="display:flex;">&lt;span>$ php artisan --host=127.0.0.1 --port=9999
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="ちなみに">ちなみに&lt;/h4>
&lt;p>defaultでは host:localhost port:8000 が採用されている。　
設定が書かれているのはここ（vendor/laravel/framework/src/illuminate/Foundation/Console/server.php）。&lt;/p></description></item><item><title>MySQLコマンドプロンプトでの画面クリア</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-11-mysql%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%A7%E3%81%AE%E7%94%BB%E9%9D%A2%E3%82%AF%E3%83%AA%E3%82%A2/</link><pubDate>Fri, 11 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-11-mysql%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%A7%E3%81%AE%E7%94%BB%E9%9D%A2%E3%82%AF%E3%83%AA%E3%82%A2/</guid><description>&lt;ul>
&lt;li>&lt;code>\!&lt;/code> コマンドを利用すると、LinuxのコマンドをSQLコマンドプロンプトから実行できる&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>\! clear
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>ヒアドキュメントとNowdoc構文の違い</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-11-%E3%83%92%E3%82%A2%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%A8nowdoc%E6%A7%8B%E6%96%87%E3%81%AE%E9%81%95%E3%81%84/</link><pubDate>Fri, 11 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-11-%E3%83%92%E3%82%A2%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%A8nowdoc%E6%A7%8B%E6%96%87%E3%81%AE%E9%81%95%E3%81%84/</guid><description>&lt;p>&lt;a href="https://tech-b.azimicat.dev/docs/old/2018-05-08-%E3%83%92%E3%82%A2%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-%E5%91%BD%E5%90%8D%E8%A6%8F%E5%89%87%E3%81%A8%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%82%A8%E3%83%A9%E3%83%BC/">関連記事&lt;/a>&lt;/p>
&lt;h4 id="書き方">書き方&lt;/h4>
&lt;ul>
&lt;li>違いは、終端IDが「&amp;rsquo;&amp;rsquo;」で括られているかどうかだけ！&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;!--&lt;/span> ヒアドキュメント &lt;span style="color:#ffb8d1">--&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$text &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;lt;&amp;lt;&amp;lt;&lt;/span>&lt;span style="color:#1bc5e0">EOL&lt;/span>&lt;span style="color:#1bc5e0">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">ここにテキストを入れます
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">&lt;/span>&lt;span style="color:#1bc5e0">EOL&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;!--&lt;/span> Nowdoc構文 &lt;span style="color:#ffb8d1">--&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$text &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;lt;&amp;lt;&amp;lt;&amp;#39;&lt;/span>&lt;span style="color:#1bc5e0">EOL&lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">ここにテキストを入れます
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">&lt;/span>&lt;span style="color:#1bc5e0">EOL&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="違い">違い&lt;/h4>
&lt;ul>
&lt;li>出力の結果が変わります
&lt;ul>
&lt;li>変数が変数として出力されるかどうか。&lt;/li>
&lt;li>ヒアドキュメント-&amp;gt;変数として出力&lt;/li>
&lt;li>Nowdoc構文-&amp;gt;文字列として出力&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;!--&lt;/span> [入力]ヒアドキュメント &lt;span style="color:#ffb8d1">--&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$animal &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;ねこ&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$text &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;lt;&amp;lt;&amp;lt;&lt;/span>&lt;span style="color:#1bc5e0">EOL&lt;/span>&lt;span style="color:#1bc5e0">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">これはヒアドキュメントです&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">かわいい生き物：$animal
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">&lt;/span>&lt;span style="color:#1bc5e0">EOL&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$echo $text;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-txt" data-lang="txt">&lt;span style="display:flex;">&lt;span>[出力]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>これはヒアドキュメントです
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>かわいい生き物：ねこ
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;!--&lt;/span> Nowdoc構文 &lt;span style="color:#ffb8d1">--&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$animal &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;#39;ねこ&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$text &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">&amp;lt;&amp;lt;&amp;lt;&amp;#39;&lt;/span>&lt;span style="color:#1bc5e0">EOL&lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">これはNowdoc構文です&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">かわいい生き物：$animal
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">&lt;/span>&lt;span style="color:#1bc5e0">EOL&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$echo $text;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-txt" data-lang="txt">&lt;span style="display:flex;">&lt;span>[出力]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>これはNowdoc構文です
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>かわいい生き物：$animal
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="使い分けについて">使い分けについて&lt;/h4>
&lt;ul>
&lt;li>文字列中の特殊文字をそのまま表示したい時にNowdoc構文を使う。それ以外ではヒアドキュメントが無難。（かな）&lt;/li>
&lt;/ul></description></item><item><title>CSVファイルをtableへまるごと取り込む</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-09-csv%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92table%E3%81%B8%E3%81%BE%E3%82%8B%E3%81%94%E3%81%A8%E5%8F%96%E3%82%8A%E8%BE%BC%E3%82%80/</link><pubDate>Wed, 09 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-09-csv%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92table%E3%81%B8%E3%81%BE%E3%82%8B%E3%81%94%E3%81%A8%E5%8F%96%E3%82%8A%E8%BE%BC%E3%82%80/</guid><description>&lt;h2 id="load-data-infile-を使う">load data infile を使う&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">-- ※localなのでlocalオプションを追加しています
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">LOAD&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">DATA&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">LOCAL&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>INFILE&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;HOKKAI.CSV&amp;#39;&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#c2ffdf">INTO&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">TABLE&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>zipcode&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>FIELDS&lt;span style="color:#a8757b"> &lt;/span>TERMINATED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;,&amp;#39;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>OPTIONALLY&lt;span style="color:#a8757b"> &lt;/span>ENCLOSED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>LINES&lt;span style="color:#a8757b"> &lt;/span>TERMINATED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;\r\n&amp;#39;&lt;/span>;&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="エラーが発生">エラーが発生&lt;/h2>
&lt;ul>
&lt;li>エラー内容&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-txt" data-lang="txt">&lt;span style="display:flex;">&lt;span>ERROR 1148 (42000): The used command is not allowed with this MySQL version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>調べたところ、「セキュリティ的な問題で、権限がないとできないよ。」ということらしい。&lt;br>
なので、一度 &lt;code>quit&lt;/code> して以下でDBに入る。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-cmd" data-lang="cmd">&lt;span style="display:flex;">&lt;span>$ sudo mysql --local_infile=1 -u username -p password
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これで、権限については解消される。&lt;/p>
&lt;ul>
&lt;li>次に、こんなエラーが・・・&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>ERROR 1300 (HY000): Invalid utf8 character string: &amp;#39;&amp;#34;&amp;#39;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>「読み込もうとしたファイルがutf8じゃないよ。」と言われている。&lt;br>
→DBをsjisに変えます・・・&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">set&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>character_set_database&lt;span style="color:#ffb8d1">=&lt;/span>sjis;&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これでOK。&lt;/p>
&lt;p>再度、以下を実行して完了。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">LOAD&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">DATA&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">LOCAL&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>INFILE&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;HOKKAI.CSV&amp;#39;&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#c2ffdf">INTO&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">TABLE&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>zipcode&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>FIELDS&lt;span style="color:#a8757b"> &lt;/span>TERMINATED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;,&amp;#39;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>OPTIONALLY&lt;span style="color:#a8757b"> &lt;/span>ENCLOSED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>LINES&lt;span style="color:#a8757b"> &lt;/span>TERMINATED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;\r\n&amp;#39;&lt;/span>;&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>Query&lt;span style="color:#a8757b"> &lt;/span>OK,&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c5a3ff">8253&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">rows&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>affected&lt;span style="color:#a8757b"> &lt;/span>(&lt;span style="color:#c5a3ff">0&lt;/span>.&lt;span style="color:#c5a3ff">09&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>sec)&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>Records:&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c5a3ff">8253&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>Deleted:&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c5a3ff">0&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>Skipped:&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c5a3ff">0&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>Warnings:&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c5a3ff">0&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="結論">結論&lt;/h2>
&lt;ul>
&lt;li>権限をつけてDBに入ること&lt;/li>
&lt;li>文字コードを確認すること&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">LOAD&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">DATA&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>[&lt;span style="color:#c2ffdf">LOCAL&lt;/span>]&lt;span style="color:#a8757b"> &lt;/span>INFILE&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;取り込みたいCSVファイルのパス&amp;#39;&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#c2ffdf">INTO&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">TABLE&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>tablename&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>FIELDS&lt;span style="color:#a8757b"> &lt;/span>TERMINATED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;,&amp;#39;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>OPTIONALLY&lt;span style="color:#a8757b"> &lt;/span>ENCLOSED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;&amp;#34;&amp;#39;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>LINES&lt;span style="color:#a8757b"> &lt;/span>TERMINATED&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BY&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;\r\n&amp;#39;&lt;/span>;&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>メソッドチェーンを利用する</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-09-%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B/</link><pubDate>Wed, 09 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-09-%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B/</guid><description>&lt;h2 id="環境や条件">環境や条件&lt;/h2>
&lt;ul>
&lt;li>http://localhost:8000/test&lt;/li>
&lt;li>/htdocs/laravelapp/app/Http/Controllers/Controller.php&lt;/li>
&lt;li>/htdocs/laravelapp/resources/views/helloworld/index.blade.php&lt;/li>
&lt;li>/htdocs/laravelapp/app/Http/Middleware/TestMiddleware.php &amp;lt;- これをメソッドチェーンで定義したい&lt;/li>
&lt;/ul>
&lt;br>
&lt;ul>
&lt;li>以下をweb.phpへ追加&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>Route&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">get&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;test&amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;Controller@index&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">middleware&lt;/span>(TestMiddleware&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">class&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="上記だけだとエラーが発生">上記だけだとエラーが発生&lt;/h2>
&lt;ul>
&lt;li>エラー内容&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-txt" data-lang="txt">&lt;span style="display:flex;">&lt;span>[ReflectionException]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Class App\Http\Middleware\TestMiddleware does not exist
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>→ 「TestMiddlewareなんてクラスはありません」と言われています&lt;/p>
&lt;ul>
&lt;li>解決方法&lt;/li>
&lt;/ul>
&lt;p>→use文が抜けていました&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">use&lt;/span> App\Http\Middleware\TestMiddleware; &lt;span style="color:#b0bec5">//これが抜けていた
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Route&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">get&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;test&amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;Controller@index&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">middleware&lt;/span>(TestMiddleware&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">class&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="結論文法">結論（文法）&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">use&lt;/span> 目的のミドルウェアまでのパス
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Route&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">get&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;hoge1&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">middleware&lt;/span>(mdlwr1&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">class&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#ffb8d1">-&amp;gt;&lt;/span>&lt;span style="color:#ceb1ff">middleware&lt;/span>(mdlwr2&lt;span style="color:#ffb8d1">::&lt;/span>&lt;span style="color:#ceb1ff">class&lt;/span>); &lt;span style="color:#b0bec5">//複数の場合連結して書く
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>現在のブランチとインデックスの状態を確認する</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-09-%E7%8F%BE%E5%9C%A8%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%81%A8%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B/</link><pubDate>Wed, 09 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-09-%E7%8F%BE%E5%9C%A8%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%81%A8%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ git status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># 現在のブランチ
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>On branch origin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Your branch is up to date with &amp;#39;origin/manage&amp;#39;.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># インデックスしていない変更がある場合表示される
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Untracked files:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (use &amp;#34;git add &amp;lt;file&amp;gt;...&amp;#34; to include in what will be committed)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	test.php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nothing added to commit but untracked files present (use &amp;#34;git add&amp;#34; to track)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># インデックスしているがコミットしていない変更がある場合表示される
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Changes to be committed:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (use &amp;#34;git rm --cached &amp;lt;file&amp;gt;...&amp;#34; to unstage)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> new file: zipcode.csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># 最新のコミット以後変更がない場合表示される
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nothing to commit, working directory clean
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>MySQLのstatusコマンド表示内容</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-08-mysql%E3%81%AEstatus%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E8%A1%A8%E7%A4%BA%E5%86%85%E5%AE%B9/</link><pubDate>Tue, 08 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-08-mysql%E3%81%AEstatus%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E8%A1%A8%E7%A4%BA%E5%86%85%E5%AE%B9/</guid><description>&lt;ul>
&lt;li>使用コマンド&lt;/li>
&lt;/ul>
&lt;p>&lt;code>$ mysqladmin -u root -p status&lt;/code>&lt;/p>
&lt;ul>
&lt;li>出力結果&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-cmd" data-lang="cmd">&lt;span style="display:flex;">&lt;span>$ mysqladmin -u root -p status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Enter password: HOGEHOGE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Uptime: 92 Threads: 1 Questions: 2 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.021
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>それぞれの意味&lt;/li>
&lt;/ul>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">項目&lt;/th>
 &lt;th style="text-align: left">意味&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Uptime&lt;/td>
 &lt;td style="text-align: left">起動からの総稼働秒数&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Threads&lt;/td>
 &lt;td style="text-align: left">MySQLが使用しているスレッド数 ※表示されているスレッド以外に、管理用のスレッドが存在する&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Questions&lt;/td>
 &lt;td style="text-align: left">起動時からの総問合せ数&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Slow queries&lt;/td>
 &lt;td style="text-align: left">設定時間秒数を超えたクエリ数&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Opens&lt;/td>
 &lt;td style="text-align: left">起動してから開かれたテーブルの数&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Flush tables&lt;/td>
 &lt;td style="text-align: left">flush,refresh,reloadの実行回数&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Open tables&lt;/td>
 &lt;td style="text-align: left">現時点で開かれているテーブルの数&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Queries per second avg&lt;/td>
 &lt;td style="text-align: left">クエリの平均応答秒数&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description></item><item><title>Windowsのバージョン情報、セットアップ時の名前・組織名の確認</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-08-windows%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E6%99%82%E3%81%AE%E5%90%8D%E5%89%8D%E7%B5%84%E7%B9%94%E5%90%8D%E3%81%AE%E7%A2%BA%E8%AA%8D/</link><pubDate>Tue, 08 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-08-windows%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E6%99%82%E3%81%AE%E5%90%8D%E5%89%8D%E7%B5%84%E7%B9%94%E5%90%8D%E3%81%AE%E7%A2%BA%E8%AA%8D/</guid><description>&lt;ol>
&lt;li>cmdを起動&lt;/li>
&lt;li>ディレクトリを移動&lt;br>
C:&amp;gt; cd C:\Windows\System32&lt;/li>
&lt;li>winver.exeを実行&lt;br>
C:\Windows\System32&amp;gt; winver.exe&lt;/li>
&lt;/ol></description></item><item><title>ヒアドキュメントについて　〜命名規則とよくあるエラー〜</title><link>https://tech-b.azimicat.dev/docs/old/2018-05-08-%E3%83%92%E3%82%A2%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-%E5%91%BD%E5%90%8D%E8%A6%8F%E5%89%87%E3%81%A8%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%82%A8%E3%83%A9%E3%83%BC/</link><pubDate>Tue, 08 May 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-05-08-%E3%83%92%E3%82%A2%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-%E5%91%BD%E5%90%8D%E8%A6%8F%E5%89%87%E3%81%A8%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%82%A8%E3%83%A9%E3%83%BC/</guid><description>&lt;h3 id="命名規則">命名規則&lt;/h3>
&lt;ul>
&lt;li>開始ID,終端IDは同じ名前にする&lt;/li>
&lt;li>IDはアルファベット大文字・小文字、日本語でもOK（基本はアルファベット大文字）&lt;/li>
&lt;li>数字を先頭にしてはいけない&lt;/li>
&lt;li>記号は_（アンダースコア）のみ可&lt;/li>
&lt;/ul>
&lt;h4 id="よくあるid">よくあるID&lt;/h4>
&lt;ul>
&lt;li>EOD（End of Document）&lt;/li>
&lt;li>EOM（End of Message）&lt;/li>
&lt;li>EOF（End of File）&lt;/li>
&lt;/ul>
&lt;h3 id="よくあるエラーというか私が引っかかったエラー">よくあるエラー（というか私が引っかかったエラー）&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//終端IDの後ろで改行していない
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#ffb8d1">&amp;lt;&amp;lt;&amp;lt;&lt;/span>EOD
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ヒアドキュメントの内容
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>EOD; &lt;span style="color:#b0bec5">?&amp;gt;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//終端IDの前後に空白やコメントが入っている
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#ffb8d1">&amp;lt;&amp;lt;&amp;lt;&lt;/span>EOD
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ヒアドキュメントの内容
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> EOD; &lt;span style="color:#b0bec5">//ここまで!!
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#b0bec5">?&amp;gt;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">//先端IDの後に空白やコメントが入っている
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;?&lt;/span>php
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">echo&lt;/span> &lt;span style="color:#ffb8d1">&amp;lt;&amp;lt;&amp;lt;&lt;/span>EOD &lt;span style="color:#b0bec5">//ここから!!
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span> ヒアドキュメントの内容
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>EOD;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">?&amp;gt;&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>SQLServerで改行を入れる</title><link>https://tech-b.azimicat.dev/docs/old/2018-04-24-sqlserver%E3%81%A7%E6%94%B9%E8%A1%8C%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B/</link><pubDate>Tue, 24 Apr 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-04-24-sqlserver%E3%81%A7%E6%94%B9%E8%A1%8C%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B/</guid><description>&lt;p>ManagementStudio2008では改行をこぴぺで入れたりCtr+Enterで入れることが出来ない。
（2016からプロパティの設定でできるらしい･･･）&lt;br>
文字列挿入の際に、シングルコート内で改行をがつがつ入れるのは&lt;/p>
&lt;ul>
&lt;li>可読性を損なう&lt;/li>
&lt;li>つかっている改行コードがデータによって変わってしまう&lt;/li>
&lt;/ul>
&lt;p>場合があるため出来るだけ避けたいところ。&lt;br>
そのようなときにCHAR関数を用いると良い。&lt;/p>
&lt;h2 id="char関数で制御文字を挿入する">CHAR関数で制御文字を挿入する&lt;/h2>
&lt;h3 id="よく使われる制御文字">よく使われる制御文字&lt;/h3>
&lt;ul>
&lt;li>CHAR(9) - タブ&lt;/li>
&lt;li>CHAR(10) - ラインフィード (LF)&lt;/li>
&lt;li>CHAR(13) - キャリッジリターン (CR)&lt;/li>
&lt;/ul>
&lt;p>※Windows 系はキャリッジリターン (CR) + ラインフィード (LF)、Unix 系はラインフィード (LF)&lt;br>
　SQL Server Management Studio では、どれを使っても改行が挿入される。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>SELECT &amp;#39;午後の紅茶&amp;#39; + CHAR(9) + &amp;#39;おいしい無糖&amp;#39; AS &amp;#39;TAB&amp;#39;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SELECT &amp;#39;午後の紅茶&amp;#39; + CHAR(10) + &amp;#39;おいしい無糖&amp;#39; AS &amp;#39;LF&amp;#39;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SELECT &amp;#39;午後の紅茶&amp;#39; + CHAR(13) + &amp;#39;おいしい無糖&amp;#39; AS &amp;#39;CR&amp;#39;;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SELECT &amp;#39;午後の紅茶&amp;#39; + CHAR(13) + CHAR(10) + &amp;#39;おいしい無糖&amp;#39; AS &amp;#39;CR+LF&amp;#39;;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180424/20180424161515.png" alt="f:id:azix:20180424161515p:plain" title="f:id:azix:20180424161515p:plain">&lt;/p>
&lt;h2 id="注意">注意&lt;/h2>
&lt;p>テキスト表示した結果をこぴぺすると、改行コードの種類によっては各種テキストエディタで改行されないこともあります･･･&lt;br>
Windowsのメモ帳とか。&lt;/p></description></item><item><title>インストールされている.NET Frameworkのバージョンを確認する@Windows7</title><link>https://tech-b.azimicat.dev/docs/old/2018-04-17-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B.net_framework%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B@windows7/</link><pubDate>Tue, 17 Apr 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-04-17-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B.net_framework%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B@windows7/</guid><description>&lt;ol>
&lt;li>
&lt;p>win + R で「レジストリエディター（regedit.exe）」を開く&lt;br>
※レジストリエディターとは：レジストリ領域のデータを閲覧したり変更できるツール。Windowsには最初から付属してるプログラム。&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180417/20180417112916.png" alt="f:id:azix:20180417112916p:plain" title="f:id:azix:20180417112916p:plain">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>レジストリエディター &lt;code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP&lt;/code> 配下を確認する&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180417/20180417112931.png" alt="f:id:azix:20180417112931p:plain" title="f:id:azix:20180417112931p:plain">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>NDP のサブキーの下に一覧表示されているのがバージョンNo.です&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>【参考】&lt;a href="https://docs.microsoft.com/ja-jp/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed">方法 : インストールされている .NET Framework バージョンを確認する&lt;/a>&lt;/p></description></item><item><title>作成した文字列で他のSPを呼び出す</title><link>https://tech-b.azimicat.dev/docs/old/2018-04-13-%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E6%96%87%E5%AD%97%E5%88%97%E3%81%A7%E4%BB%96%E3%81%AEsp%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99/</link><pubDate>Fri, 13 Apr 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-04-13-%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E6%96%87%E5%AD%97%E5%88%97%E3%81%A7%E4%BB%96%E3%81%AEsp%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99/</guid><description>&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180413/20180413163155.png" alt="f:id:azix:20180413163155p:plain" title="f:id:azix:20180413163155p:plain">&lt;/p>
&lt;p>例：以下のようなSPがあるとして&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">ストアドプロシージャ名&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Main_SP.StoerdProcedur&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">19_SP.StoerdProcedure&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">17_SP.StoerdProcedure&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">18_SP.StoerdProcedure&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>年度ごとに微妙に異なるストアドを呼び出さなくてはいけない場合、既存システムではメインSP内で年度をずら～～～っとif文で分岐させていた。（悪しき文化かと思うの。）&lt;br>
ここでは[Main_SP]から受け取ったパラメータ[@年度]を受けとりさえすれば、分岐を作らずに対応する各年度のSPを呼び出せるようにした。&lt;/p>
&lt;h2 id="名前の組み立て">名前の組み立て&lt;/h2>
&lt;h3 id="年度はint型で入ってくるのでnvarchar型にconvertします">年度はint型で入ってくるのでnvarchar型にconvertします&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#b0bec5">-- 年度をnvarchar型にします
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">convert&lt;/span>(nvarchar,&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">年度&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">as&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">年度&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="必要な文字列を抜き出します">必要な文字列を抜き出します&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#b0bec5">-- 右から2文字をconvertした年度から抜き出します
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">right&lt;/span>(&lt;span style="color:#c2ffdf">convert&lt;/span>(nvarchar,&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">年度&lt;/span>),&lt;span style="color:#c5a3ff">2&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">as&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#960050;background-color:#1e0010">下&lt;/span>&lt;span style="color:#c5a3ff">2&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">桁&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="sp名を組み立てます">SP名を組み立てます&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>[dbo].[&lt;span style="color:#1bc5e0">&amp;#39; + right(convert(nvarchar,@年度),2) + &amp;#39;&lt;/span>_SP]&lt;span style="color:#1bc5e0">&amp;#39; as SP名
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="メインのspからの呼び出し">メインのSPからの呼び出し&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">CREATE&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">PROCEDURE&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>[dbo].[Main_SP]&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#b0bec5">-- 受け取るパラメータを宣言
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">対象年度&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>int&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NULL&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>,&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">従業員&lt;/span>ID&lt;span style="color:#a8757b"> &lt;/span>int&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">AS&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BEGIN&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">SET&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>NOCOUNT&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">ON&lt;/span>;&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BEGIN&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">IF&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">対象年度&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">IS&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NOT&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">NULL&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">BEGIN&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#b0bec5">-- 先ほどの組み立てをここで利用
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#b0bec5">-- [dbo].[年度下2桁_SP]が呼び出される
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">DECLARE&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">@&lt;/span>module_name&lt;span style="color:#a8757b"> &lt;/span>nvarchar(&lt;span style="color:#c5a3ff">50&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;[dbo].[&amp;#39;&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">+&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">right&lt;/span>(&lt;span style="color:#c2ffdf">convert&lt;/span>(nvarchar,&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">対象年度&lt;/span>),&lt;span style="color:#c5a3ff">2&lt;/span>)&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">+&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#1bc5e0">&amp;#39;_SP]&amp;#39;&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">EXEC&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">@&lt;/span>return_value&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">@&lt;/span>module_name&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#b0bec5">-- 呼び出しSP名を指定
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">対象年度&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">対象年度&lt;/span>,&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">従業員&lt;/span>ID&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#ffb8d1">@&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">従業員&lt;/span>ID&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">return&lt;/span>;&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">END&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">END&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#b0bec5">-- 必要に応じてエラー処理を入れるなど･･･ --
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#a8757b"> &lt;/span>&lt;span style="color:#c2ffdf">END&lt;/span>&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>DB名も同様に組み立てて作成できる。&lt;br>
例：以下のようなDBがあるとして&lt;/p></description></item><item><title>JavaScriptで文字数をカウントする。</title><link>https://tech-b.azimicat.dev/docs/old/2018-04-10-javascript%E3%81%A7%E6%96%87%E5%AD%97%E6%95%B0%E3%82%92%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%99%E3%82%8B/</link><pubDate>Tue, 10 Apr 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-04-10-javascript%E3%81%A7%E6%96%87%E5%AD%97%E6%95%B0%E3%82%92%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%99%E3%82%8B/</guid><description>&lt;h1 id="構文stringlengthを用いる">構文[string.length]を用いる&lt;/h1>
&lt;p>文字列内のコード単位の数を返す&lt;br>
空の文字列の場合、length は 0&lt;br>
※一般的に使用されない文字は2バイトで数える場合があるので注意&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-javascript" data-lang="javascript">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// バッククォートで囲むと改行をそのまま受け入れてくれる
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">// タブやスペースも認識してしまうのでそこだけ注意が必要
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">var&lt;/span> str &lt;span style="color:#ffb8d1">=&lt;/span> &lt;span style="color:#1bc5e0">`
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">『更級日記』　作者・菅原孝標女
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">あづまぢの道のはてよりも、なほ奥つかたに生ひ出でたる人、いかばかりかはあやしかりけむを、
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">いかに思ひはじめける事にか、世の中に物語といふ物のあんなるを、いかで見ばやと思ひつつ、
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">つれづれなる昼間・宵居（ヨイヰ）などに、姉・まま母などやうの人々の、
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">その物語・かの物語・光源氏のあるやうなど、ところどころ語るを聞くに、いとどゆかしさまされど、
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">わが思ふままに、そらにいかでかおぼえ語らむ。
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#1bc5e0">`&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">var&lt;/span> stringCount &lt;span style="color:#ffb8d1">=&lt;/span> str.length;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>console.log(&lt;span style="color:#1bc5e0">&amp;#34;文字数：&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">+&lt;/span> stringCount);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>出力&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>文字数：211
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Linux，Wiindowsで空のファイルを作りたい！</title><link>https://tech-b.azimicat.dev/docs/old/2018-04-06-linuxwiindows%E3%81%A7%E7%A9%BA%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E3%82%8A%E3%81%9F%E3%81%84/</link><pubDate>Fri, 06 Apr 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-04-06-linuxwiindows%E3%81%A7%E7%A9%BA%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E3%82%8A%E3%81%9F%E3%81%84/</guid><description>&lt;h2 id="--linux--">&amp;ndash;Linux&amp;ndash;&lt;/h2>
&lt;p>linuxだと2パターンでした。&lt;/p>
&lt;h3 id="touch-コマンドtouchコマンドについて詳しくまとめました-linuxコマンド集httpseng-entrancecomlinux-command-touchi">&lt;code>touch&lt;/code> コマンド(([touchコマンドについて詳しくまとめました 【Linuxコマンド集】]https://eng-entrance.com/linux-command-touch#i))&lt;/h3>
&lt;p>※ &lt;code>touch&lt;/code> コマンドはファイルのタイムスタンプを更新するコマンド。&lt;br>
ファイルの内容を書き換えた日時：mtime&lt;br>
ファイルのアクセス権設定などを変更した日時：ctime&lt;/p>
&lt;p>touchコマンド実行後に、タイムスタンプ情報だけを持ったファイルが新規作成されます。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ touch filename.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="改行コードを含まないコマンドを付けてechoする">改行コードを含まないコマンドを付けてechoする&lt;/h3>
&lt;p>※echoの出力はデフォルトで最後に改行がつくので、それを除くために &lt;code>-n&lt;/code> する&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ echo -n &amp;gt; filename.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="--windows--">&amp;ndash;Windows&amp;ndash;&lt;/h2>
&lt;p>&lt;code>nul&lt;/code> ファイルを作成するコマンド。&lt;br>
「NUL」はデバイスファイルの一種であり、「空っぽ」のファイルとして扱うことができます。&lt;br>
また、「NUL」はシステムによって予約された名前なので、ファイル名・ディレクトリ名としては使えません。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>type nul &amp;gt; filename.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>type&lt;/code> は指定したファイルの中身を表示するコマンドです。他に、 &lt;code>copy&lt;/code> で代用することも可能です。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>copy nul &amp;gt; filename.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>SQLServerで文字列内全ての空白（半角・全角）を除去する</title><link>https://tech-b.azimicat.dev/docs/old/2018-04-02-sqlserver%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E5%86%85%E5%85%A8%E3%81%A6%E3%81%AE%E7%A9%BA%E7%99%BD%E5%8D%8A%E8%A7%92%E5%85%A8%E8%A7%92%E3%82%92%E9%99%A4%E5%8E%BB%E3%81%99%E3%82%8B/</link><pubDate>Mon, 02 Apr 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-04-02-sqlserver%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E5%86%85%E5%85%A8%E3%81%A6%E3%81%AE%E7%A9%BA%E7%99%BD%E5%8D%8A%E8%A7%92%E5%85%A8%E8%A7%92%E3%82%92%E9%99%A4%E5%8E%BB%E3%81%99%E3%82%8B/</guid><description>&lt;h2 id="左右のスペースを除去する場合">左右のスペースを除去する場合&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>LTRIM(&lt;span style="color:#1bc5e0">&amp;#39;　 いろ はに　ほへと　 &amp;#39;&lt;/span>)&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>RTRIM(&lt;span style="color:#1bc5e0">&amp;#39;　 いろ はに　ほへと　 &amp;#39;&lt;/span>)&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>この二つを合体させて、&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>LTRIM(RTRIM(&lt;span style="color:#1bc5e0">&amp;#39;　 いろ はに　ほへと　 &amp;#39;&lt;/span>))&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>とする&lt;br>
この場合、&lt;code>　 いろ はに　ほへと　 &lt;/code>という文字列だった場合に&lt;code>いろ はに　ほへと&lt;/code>と変換される。&lt;br>
今回はこれを、&lt;code>いろはにほへと&lt;/code>にしたい場合を考える。&lt;/p>
&lt;h2 id="中間のスペースを除去する">中間のスペースを除去する&lt;/h2>
&lt;p>TRIM関数が使えればよいのだが、SQLServerにはそういうのがないのでREPLACE関数を代用する。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">-- [半角スペース]を[文字列無し]に置換
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">REPLACE&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;　 いろ はに　ほへと　 &amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39; &amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;&amp;#39;&lt;/span>)&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これを実行することで、目的の「いろはにほへと」が取得できる。&lt;br>
どうも半角スペースと全角スペースを区別していないようで、&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">-- [半角スペース]を[文字列無し]に置換
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">REPLACE&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;　 いろ はに　ほへと　 &amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39; &amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;&amp;#39;&lt;/span>)&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a8757b">&lt;/span>&lt;span style="color:#b0bec5">-- [全角スペース]を[文字列無し]に置換
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">REPLACE&lt;/span>(&lt;span style="color:#1bc5e0">&amp;#39;　 いろ はに　ほへと　 &amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;　&amp;#39;&lt;/span>,&lt;span style="color:#1bc5e0">&amp;#39;&amp;#39;&lt;/span>)&lt;span style="color:#a8757b">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>上記のどちらを実行しても「いろはにほへと」が取得される。&lt;br>
区別するには正規表現とか使うのかしら？？？&lt;/p></description></item><item><title>【VBA】ColorIndexは色によってユニークな値ではなかった話</title><link>https://tech-b.azimicat.dev/docs/old/2018-03-27-vbacolorindex%E3%81%AF%E8%89%B2%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E3%83%A6%E3%83%8B%E3%83%BC%E3%82%AF%E3%81%AA%E5%80%A4%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%E8%A9%B1/</link><pubDate>Tue, 27 Mar 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-03-27-vbacolorindex%E3%81%AF%E8%89%B2%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E3%83%A6%E3%83%8B%E3%83%BC%E3%82%AF%E3%81%AA%E5%80%A4%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%E8%A9%B1/</guid><description>&lt;p>こんな関数を作って同じ背景色の合計を出そうとしました。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-vb" data-lang="vb">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;#39;## 背景色が合致したセルをカウントする ##
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">Function&lt;/span> &lt;span style="color:#ceb1ff">CountColor&lt;/span>(計算範囲, 条件色セル)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Application.Volatile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> CountColor &lt;span style="color:#ffb8d1">=&lt;/span> 0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">For&lt;/span> y &lt;span style="color:#ffb8d1">=&lt;/span> 1 &lt;span style="color:#c2ffdf">To&lt;/span> 計算範囲.Columns.Count
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">For&lt;/span> x &lt;span style="color:#ffb8d1">=&lt;/span> 1 &lt;span style="color:#c2ffdf">To&lt;/span> 計算範囲.Rows.Count
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">If&lt;/span> 計算範囲.Rows(x).Columns(y).Interior.ColorIndex &lt;span style="color:#ffb8d1">=&lt;/span> 条件色セル.Interior.ColorIndex &lt;span style="color:#c2ffdf">Then&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> CountColor &lt;span style="color:#ffb8d1">=&lt;/span> CountColor &lt;span style="color:#ffb8d1">+&lt;/span> 1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">End&lt;/span> &lt;span style="color:#c2ffdf">If&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Next&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Next&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">End&lt;/span> &lt;span style="color:#c2ffdf">Function&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>これ、同系色?は同じ色としてカウントするみたい。（正確なルールがよく分からない）&lt;br>
取得できるColorIndexには皆さん気をつけてくださいませ･･･&lt;/p>
&lt;p>ちなみに確認するために作った関数。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-vb" data-lang="vb">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&amp;#39;## 背景色のColorIndexを取得する
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">&lt;/span>&lt;span style="color:#c2ffdf">Function&lt;/span> &lt;span style="color:#ceb1ff">GetColorIndex&lt;/span>(対象セル) 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Application.Volatile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GetColorIndex &lt;span style="color:#ffb8d1">=&lt;/span> 対象セル.Interior.ColorIndex
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">End&lt;/span> &lt;span style="color:#c2ffdf">Function&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>この画像を見ていただくと分かるのですが、E6～H6のColorIndexをE7～H7に出しました。
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180327/20180327161754.png" alt="f:id:azix:20180327161754p:plain">&lt;/p>
&lt;p>見事に同じ･･･&lt;br>
これのせいで計算が間違っているように見えたみたい。&lt;br>
&lt;del>一定の透明度？濃度？からさがるとColorIndexが共通しちゃうのかな？原因は不明です。&lt;/del>&lt;br>
&lt;del>（いつか調査するかも）&lt;/del>&lt;br>
&lt;br/>
【調べました】&lt;br>
&lt;code>ColorIndex()&lt;/code> は古いExcelの時のメソッドらしく新しめのExcelの色合いには対応していないそう。&lt;br>
代わりに使うのが &lt;code>Color()&lt;/code> で、これはRGB値をlong型で返してくれる。&lt;br>
このlong値は「B・G・R」の順に「&lt;span style="color: #0000cc">bbbbbbbb&lt;/span>&lt;span style="color: #00cc00">gggggggg&lt;/span>&lt;span style="color: #ff0000">rrrrrrrr&lt;/span>（1文字1bit）」で返ってくるので、R,G,Bの形にするには計算の必要がある。&lt;/p>
&lt;p>なので、&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-vb" data-lang="vb">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">Sub&lt;/span> &lt;span style="color:#ceb1ff">Sample&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Dim&lt;/span> n &lt;span style="color:#ffb8d1">As&lt;/span> &lt;span style="color:#c2ffdf">Long&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Dim&lt;/span> r &lt;span style="color:#ffb8d1">As&lt;/span> &lt;span style="color:#c2ffdf">Byte&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Dim&lt;/span> g &lt;span style="color:#ffb8d1">As&lt;/span> &lt;span style="color:#c2ffdf">Byte&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c2ffdf">Dim&lt;/span> b &lt;span style="color:#ffb8d1">As&lt;/span> &lt;span style="color:#c2ffdf">Byte&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> # 対象セルの色をLong値で取得
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> n &lt;span style="color:#ffb8d1">=&lt;/span> 対象セル.Interior.Color
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> # それぞれRGBごとに計算
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> r &lt;span style="color:#ffb8d1">=&lt;/span> n &lt;span style="color:#ffb8d1">\&lt;/span> 256 &lt;span style="color:#ffb8d1">^&lt;/span> 0 &lt;span style="color:#ffb8d1">Mod&lt;/span> 256 # 0&lt;span style="color:#960050;background-color:#1e0010">～&lt;/span>16,777,215の範囲の値&lt;span style="color:#960050;background-color:#1e0010">（&lt;/span>R,G,B&lt;span style="color:#960050;background-color:#1e0010">）&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">%&lt;/span> 256
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> g &lt;span style="color:#ffb8d1">=&lt;/span> n &lt;span style="color:#ffb8d1">\&lt;/span> 256 &lt;span style="color:#ffb8d1">^&lt;/span> 1 &lt;span style="color:#ffb8d1">Mod&lt;/span> 256 # 256&lt;span style="color:#960050;background-color:#1e0010">～&lt;/span>16,777,215の範囲の値&lt;span style="color:#960050;background-color:#1e0010">（&lt;/span>G,B&lt;span style="color:#960050;background-color:#1e0010">）&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">%&lt;/span> 256
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> b &lt;span style="color:#ffb8d1">=&lt;/span> n &lt;span style="color:#ffb8d1">\&lt;/span> 256 &lt;span style="color:#ffb8d1">^&lt;/span> 2 &lt;span style="color:#ffb8d1">Mod&lt;/span> 256 # 65,536&lt;span style="color:#960050;background-color:#1e0010">～&lt;/span>16,777,215の範囲の値&lt;span style="color:#960050;background-color:#1e0010">（&lt;/span>B&lt;span style="color:#960050;background-color:#1e0010">）&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">%&lt;/span> 256
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> # #rrggbb の形で出力
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> MsgBox &lt;span style="color:#1bc5e0">&amp;#34;#&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">&amp;amp;&lt;/span> r &lt;span style="color:#ffb8d1">&amp;amp;&lt;/span> g &lt;span style="color:#ffb8d1">&amp;amp;&lt;/span> b
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">End&lt;/span> &lt;span style="color:#c2ffdf">Sub&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;br/>
「0～16,777,215の範囲の値」とか言っているのは、10進数／16進数　で見た時に各値が持つ範囲が以下のようになるので算出している。 
　R：0～255／0000&lt;span style="color: #ff0000">00&lt;/span>～0000&lt;span style="color: #ff0000">FF&lt;/span> 
　G：256～65,535／00&lt;span style="color: #00cc00">00&lt;/span>FF～00&lt;span style="color: #00cc00">FF&lt;/span>FF 
　B：65,536～16,777,215／&lt;span style="color: #0000cc">00&lt;/span>FFFF～&lt;span style="color: #0000cc">FF&lt;/span>FFFF 
&lt;p>簡単に言うと、532円を100の位、10の位、1の位に分けているようなもの。&lt;/p></description></item><item><title>C# ファイルの存在チェック時の相対パス指定</title><link>https://tech-b.azimicat.dev/docs/old/2018-03-27-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%AD%98%E5%9C%A8%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E6%99%82%E3%81%AE%E7%9B%B8%E5%AF%BE%E3%83%91%E3%82%B9%E6%8C%87%E5%AE%9A/</link><pubDate>Tue, 27 Mar 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-03-27-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%AD%98%E5%9C%A8%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E6%99%82%E3%81%AE%E7%9B%B8%E5%AF%BE%E3%83%91%E3%82%B9%E6%8C%87%E5%AE%9A/</guid><description>&lt;p>★絶対パスの使用は控えましょう&lt;br>
理由：ディスク構成、ディレクトリ名の変更、データ保存場所の変更時に修正が発生するため。&lt;br>
　　　ハードコーディングで絶対パスは使用しない。&lt;/p>
&lt;p>★絶対パスでしか比べられないと思っていたけれど、MapPath()を使うことにより相対パスから絶対パスを取り出すことが出来る。&lt;/p>
&lt;h2 id="いままで">いままで&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-c#" data-lang="c#">&lt;span style="display:flex;">&lt;span>filePath = &lt;span style="color:#1bc5e0">@&amp;#34;C:\world\asia\japan\pdf&amp;#34;&lt;/span> + &lt;span style="color:#1bc5e0">@&amp;#34;\&amp;#34;&lt;/span> + DV[&lt;span style="color:#c5a3ff">0&lt;/span>][&lt;span style="color:#1bc5e0">&amp;#34;ID&amp;#34;&lt;/span>].ToString() + &lt;span style="color:#1bc5e0">&amp;#34;.pdf&amp;#34;&lt;/span> &lt;span style="color:#b0bec5">//構成が変わった場合が面倒･･･&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">if&lt;/span> (File.Exists(filePath) == &lt;span style="color:#c2ffdf">true&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> HL_FileLink.NavigateUrl = filePath;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="servermappath-を使う場合">Server.MapPath() を使う場合&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-c#" data-lang="c#">&lt;span style="display:flex;">&lt;span>filePath = &lt;span style="color:#1bc5e0">&amp;#34;~/pdf/&amp;#34;&lt;/span> + DV[&lt;span style="color:#c5a3ff">0&lt;/span>][&lt;span style="color:#1bc5e0">&amp;#34;ID&amp;#34;&lt;/span>].ToString() + &lt;span style="color:#1bc5e0">&amp;#34;.pdf&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c2ffdf">if&lt;/span> (File.Exists(Server.MapPath(filePath) == &lt;span style="color:#c2ffdf">true&lt;/span>) &lt;span style="color:#b0bec5">//相対パスを絶対パスに書き換えてから比較している&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> HL_FileLink.NavigateUrl = filePath;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>[参考]
&lt;a href="https://msdn.microsoft.com/ja-jp/library/system.web.httpserverutility.mappath(v=vs.110).aspx">https://msdn.microsoft.com/ja-jp/library/system.web.httpserverutility.mappath(v=vs.110).aspx&lt;/a>&lt;/p></description></item><item><title>npm init の (name: Hogehoge-Projecy) みたいなのでエラー</title><link>https://tech-b.azimicat.dev/docs/old/2018-03-21-npm_init_%E3%81%AE_name_hogehoge-projecy_%E3%81%BF%E3%81%9F%E3%81%84%E3%81%AA%E3%81%AE%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC/</link><pubDate>Wed, 21 Mar 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-03-21-npm_init_%E3%81%AE_name_hogehoge-projecy_%E3%81%BF%E3%81%9F%E3%81%84%E3%81%AA%E3%81%AE%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC/</guid><description>&lt;h2 id="npm-init-したらエラーが出た">npm init したらエラーが出た&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Sorry, name can no longer contain capital letters.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>どうも、プロジェクト名には大文字は使えないらしい。&lt;br>
プロジェクト名を全部小文字にしたら出来た。&lt;/p>
&lt;p>&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180321/20180321211231.png" alt="image">&lt;/p></description></item><item><title>レスポンシブデザイン vw, vh</title><link>https://tech-b.azimicat.dev/docs/old/2018-03-04-%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3-vw_vh/</link><pubDate>Sun, 04 Mar 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-03-04-%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B7%E3%83%96%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3-vw_vh/</guid><description>&lt;h1 id="メディアクエリで書いていた文字サイズ指定をビューポート幅で指定する">メディアクエリで書いていた文字サイズ指定をビューポート幅で指定する&lt;/h1>
&lt;h2 id="ビューポートとは">ビューポートとは&lt;/h2>
&lt;p>ビューポートとは、webブラウザ等でコンテンツが表示される「表示領域」のことを指す。&lt;br>
PCの表示サイズは最近はフルHDの1920×1080が多く、スマホであればiphone端末ごとのサイズなどになる（最大画面で表示している時の話）。端末によってまちまち。&lt;/p>
&lt;h2 id="メディアクエリとは">メディアクエリとは&lt;/h2>
&lt;p>ユーザーがアクセスしている端末を判断して、その特性からスタイルを指定できる機能&lt;br>
書き方の例：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-css" data-lang="css">&lt;span style="display:flex;">&lt;span>@&lt;span style="color:#c2ffdf">media&lt;/span> &lt;span style="color:#ffb8d1">screen&lt;/span> &lt;span style="color:#ffb8d1">and&lt;/span> &lt;span style="color:#ffb8d1">(&lt;/span>&lt;span style="color:#ffb8d1">min-width&lt;/span> &lt;span style="color:#ffb8d1">:&lt;/span> &lt;span style="color:#ffb8d1">500px&lt;/span>&lt;span style="color:#ffb8d1">)&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b0bec5">/* 画面サイズが 500px 以上の場合以下を読み込む */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ffb8d1">body&lt;/span> { &lt;span style="color:#c2ffdf">background-color&lt;/span>: &lt;span style="color:#c5a3ff">#fff&lt;/span>; }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}&lt;span style="color:#ffb8d1">;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>※ &lt;code>max-width&lt;/code> や &lt;code>min-width&lt;/code> を用いて、目的の端末（媒体）のサイズを指定する必要がある。これが面倒くさかった。種類いっぱいあるし。&lt;/p>
&lt;p>これに対して、フォントサイズを「px」や、「em」「rem」「%」等で指定していた。&lt;/p>
&lt;h2 id="ビューポートのcssでの指定">ビューポートのCSSでの指定&lt;/h2>
&lt;p>まず、ビューポートを使うためのmetaタグ指定が必要&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-css" data-lang="css">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b0bec5">/* contentにはビューポートのプロパティとその値を記載する */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ffb8d1">&amp;lt;&lt;/span>&lt;span style="color:#ffb8d1">meta&lt;/span> &lt;span style="color:#ffb8d1">name&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;viewport&amp;#34;&lt;/span> &lt;span style="color:#ffb8d1">content&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;...&amp;#34;&lt;/span>&lt;span style="color:#ffb8d1">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="プロパティとその値httpwwwtagindexcomhtml5pagemeta_viewporthtml">&lt;a href="http://www.tagindex.com/html5/page/meta_viewport.html">プロパティとその値&lt;/a>&lt;/h3>
&lt;table border="1">
 &lt;colgroup>
 &lt;col class="groupAttribute" />
 &lt;col class="groupDescription" />
 &lt;/colgroup>
 &lt;colgroup>
 &lt;col class="groupValue" />
 &lt;col class="groupDescription" />
 &lt;/colgroup>
 &lt;thead>
 &lt;tr>
 &lt;th colspan="2" scope="colgroup">プロパティ&lt;/th>
 &lt;th colspan="2" scope="colgroup">値&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td rowspan="2">&lt;code class="soValue">width=&lt;/code>&lt;/td>
 &lt;td rowspan="2">表示領域の幅&lt;/td>
 &lt;td>数値&lt;/td>
 &lt;td>
 ピクセル数 （&lt;code class="soValue">200&lt;/code>～&lt;code class="soValue"
 >10000&lt;/code
 >
 の範囲、初期値は &lt;code class="soValue">980&lt;/code>）
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code class="soValue">device-width&lt;/code>&lt;/td>
 &lt;td>端末画面の幅に合わせる&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td rowspan="2">&lt;code class="soValue">height=&lt;/code>&lt;/td>
 &lt;td rowspan="2">表示領域の高さ&lt;/td>
 &lt;td>数値&lt;/td>
 &lt;td>
 ピクセル数 （&lt;code class="soValue">233&lt;/code>～&lt;code class="soValue"
 >10000&lt;/code
 >
 の範囲、初期値は&lt;i class="voice">自動&lt;/i>）
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code class="soValue">device-height&lt;/code>&lt;/td>
 &lt;td>端末画面の高さに合わせる&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code class="soValue">initial-scale=&lt;/code>&lt;/td>
 &lt;td>初期のズーム倍率&lt;/td>
 &lt;td>数値&lt;/td>
 &lt;td>
 倍率 （&lt;code class="soValue">minimum-scale&lt;/code>～&lt;code class="soValue"
 >maximum-scale&lt;/code
 >
 の範囲）
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code class="soValue">minimum-scale=&lt;/code>&lt;/td>
 &lt;td>最小倍率&lt;/td>
 &lt;td>数値&lt;/td>
 &lt;td>
 倍率 （&lt;code class="soValue">0&lt;/code>～&lt;code class="soValue">10&lt;/code>
 の範囲、初期値は &lt;code class="soValue">0.25&lt;/code>）
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code class="soValue">maximum-scale=&lt;/code>&lt;/td>
 &lt;td>最大倍率&lt;/td>
 &lt;td>数値&lt;/td>
 &lt;td>
 倍率 （&lt;code class="soValue">0&lt;/code>～&lt;code class="soValue">10&lt;/code>
 の範囲、初期値は &lt;code class="soValue">1.6&lt;/code>）
 &lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td rowspan="2">&lt;code class="soValue">user-scalable=&lt;/code>&lt;/td>
 &lt;td rowspan="2">ズームの操作&lt;/td>
 &lt;td>&lt;code class="soValue">yes&lt;/code>&lt;/td>
 &lt;td>許可する （初期値）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code class="soValue">no&lt;/code>&lt;/td>
 &lt;td>許可しない&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="ビューポートでフォントサイズを指定する">ビューポートでフォントサイズを指定する&lt;/h3>
&lt;p>指定の単位。&lt;/p></description></item><item><title>display:flex と&lt;li>でちょっと困ったやつ</title><link>https://tech-b.azimicat.dev/docs/old/2018-03-03-displayflex_%E3%81%A8ltligt%E3%81%A7%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E5%9B%B0%E3%81%A3%E3%81%9F%E3%82%84%E3%81%A4/</link><pubDate>Sat, 03 Mar 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-03-03-displayflex_%E3%81%A8ltligt%E3%81%A7%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E5%9B%B0%E3%81%A3%E3%81%9F%E3%82%84%E3%81%A4/</guid><description>&lt;h1 id="liタグに-displayflex-をつけたらマーカーが消えちゃう">liタグに display:flex をつけたらマーカーが消えちゃう&lt;/h1>
&lt;p>↓みたいな要素を横並びにしたくてスタイルを当てていたんだけど&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">ul&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">li&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">h3&lt;/span>&amp;gt;hogehoge&amp;lt;/&lt;span style="color:#ffb8d1">h3&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">input&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;button&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">value&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;button&amp;#34;&lt;/span>/&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">li&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">ul&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ul {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> list-style: square inside;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>li {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> display: flex;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> align-items: center;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>input {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> margin-left: 10px;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>こんな風にマーカーが消えちゃう。&lt;/p>
&lt;p>原因は、&lt;code>&amp;lt;li&amp;gt;&lt;/code>に&lt;code>display: flex;&lt;/code>が指定されていたから。 なので、&lt;code>&amp;lt;div&amp;gt;&lt;/code>とかを噛ませてやるとうまく出てくれる。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#ffb8d1">ul&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">li&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">div&lt;/span> &lt;span style="color:#ceb1ff">class&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;flex&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">h3&lt;/span>&amp;gt;hogehoge&amp;lt;/&lt;span style="color:#ffb8d1">h3&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#ffb8d1">input&lt;/span> &lt;span style="color:#ceb1ff">type&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;button&amp;#34;&lt;/span> &lt;span style="color:#ceb1ff">value&lt;/span>&lt;span style="color:#ffb8d1">=&lt;/span>&lt;span style="color:#1bc5e0">&amp;#34;button&amp;#34;&lt;/span>/&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#ffb8d1">li&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#ffb8d1">ul&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>.flex {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> display: flex;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> align-items: center;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>input {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> margin-left: 10px;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>プロジェクトがまたひとつ終わったので振り返り</title><link>https://tech-b.azimicat.dev/docs/old/2018-03-03-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%8C%E3%81%BE%E3%81%9F%E3%81%B2%E3%81%A8%E3%81%A4%E7%B5%82%E3%82%8F%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%A7%E6%8C%AF%E3%82%8A%E8%BF%94%E3%82%8A/</link><pubDate>Sat, 03 Mar 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-03-03-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%8C%E3%81%BE%E3%81%9F%E3%81%B2%E3%81%A8%E3%81%A4%E7%B5%82%E3%82%8F%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%A7%E6%8C%AF%E3%82%8A%E8%BF%94%E3%82%8A/</guid><description>&lt;h1 id="やったこと">　やったこと&lt;/h1>
&lt;ul>
&lt;li>仕様が届く前の調査（修正予定のＳＱＬの洗い出し）&lt;/li>
&lt;li>仕様が届いた後の対応（その後仕様変更されたため途中まで）&lt;/li>
&lt;li>メニュー画面のおしらせ領域の表示修正・文言の追加&lt;/li>
&lt;li>修正された仕様が届いた後の対応（コード体系の変更）&lt;/li>
&lt;li>ＳＱＬ修正&lt;/li>
&lt;li>Ｄｅｌｐｈｉ修正&lt;/li>
&lt;li>テンプレート（HTML）修正&lt;/li>
&lt;li>テスト&lt;/li>
&lt;li>リリース資産まとめ&lt;/li>
&lt;/ul>
&lt;h1 id="振り返り">振り返り&lt;/h1>
&lt;h2 id="面談者所見">＜面談者所見＞&lt;/h2>
&lt;ul>
&lt;li>認識合わせ引き続き改善していく&lt;/li>
&lt;li>作業の計画を立てる。
&lt;ul>
&lt;li>終わりまでの道筋をつけ、コントロールできるように&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>ギリギリで出てきた仕様に対する対応は、やらないという選択肢を提示できたらよかった
&lt;ul>
&lt;li>スケジュール間に合わない、品質が犠牲になる、影響範囲が見えていないなどリスクがあった&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="今後">＜今後＞&lt;/h2>
&lt;h3 id="計画">計画&lt;/h3>
&lt;p>&lt;strong>いちばん初めに&lt;/strong>全体を通した計画を立てる。&lt;br>
リリースまでに１週間程度の余裕を持つように心がける。&lt;/p>
&lt;h3 id="認識合わせ">認識合わせ&lt;/h3>
&lt;p>自分の言葉で噛み砕いて再確認する。&lt;br>
確認までに、出来るだけ時間をあけないようにしたい&lt;br>
思ったことはとりあえず言ってみる（その場で言うのが難しければメモ程度にまとめるなど）&lt;/p>
&lt;h3 id="追加対応が出たときの対応">追加対応が出たときの対応&lt;/h3>
&lt;p>スケジュールの再見積もり&lt;br>
上記を踏まえた判断（やる／やらないを含める）&lt;/p>
&lt;ul>
&lt;li>間に合うのか？品質はどうなるか？使う人のことまで考えているか？&amp;hellip;ﾅﾄﾞ&lt;/li>
&lt;/ul>
&lt;h3 id="その他">その他&lt;/h3>
&lt;p>心理的距離を減らして、思ったことをもっと共有できるようにしたい&lt;br>
日ごろからたくさん話したり、相談したり･･･&lt;/p></description></item><item><title>&lt;font size=-1>　とか言われたときに　styleに直す方法（考え方）</title><link>https://tech-b.azimicat.dev/docs/old/2018-02-28-ltfont_sizequot-1quotgt-%E3%81%A8%E3%81%8B%E8%A8%80%E3%82%8F%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB-style%E3%81%AB%E7%9B%B4%E3%81%99%E6%96%B9%E6%B3%95%E8%80%83%E3%81%88%E6%96%B9/</link><pubDate>Wed, 28 Feb 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-02-28-ltfont_sizequot-1quotgt-%E3%81%A8%E3%81%8B%E8%A8%80%E3%82%8F%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB-style%E3%81%AB%E7%9B%B4%E3%81%99%E6%96%B9%E6%B3%95%E8%80%83%E3%81%88%E6%96%B9/</guid><description>&lt;h2 id="お客さんから送られてくるこんな感じでよろしくのhtmlに毎回-font-タグが入ってきて文字サイズ合わせるのに手間取っていたので防備録">お客さんから送られてくる、「こんな感じでよろしく！」のHTMLに毎回 &lt;code>&amp;lt;font&amp;gt;&lt;/code> タグが入ってきて文字サイズ合わせるのに手間取っていたので防備録。&lt;/h2>
&lt;p>FONTタグとfont-sizeプロパティの相関&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">FONTタグ&lt;/th>
 &lt;th style="text-align: left">→&lt;/th>
 &lt;th style="text-align: left">font-sizeプロパティ&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">xx-small&lt;/td>
 &lt;td style="text-align: left">→&lt;/td>
 &lt;td style="text-align: left">font size=1&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">x-small&lt;/td>
 &lt;td style="text-align: left">→&lt;/td>
 &lt;td style="text-align: left">font size=2&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">small&lt;/td>
 &lt;td style="text-align: left">→&lt;/td>
 &lt;td style="text-align: left">font size=3&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">medium&lt;/td>
 &lt;td style="text-align: left">→&lt;/td>
 &lt;td style="text-align: left">font size=4&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">large&lt;/td>
 &lt;td style="text-align: left">→&lt;/td>
 &lt;td style="text-align: left">font size=5&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">x-large&lt;/td>
 &lt;td style="text-align: left">→&lt;/td>
 &lt;td style="text-align: left">font size=6&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">xx-large&lt;/td>
 &lt;td style="text-align: left">→&lt;/td>
 &lt;td style="text-align: left">font size=7&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>これに加え、&lt;/p>
&lt;blockquote>
&lt;p>mediumが標準サイズです。1段階上がると1.2倍のサイズになります。また、smaller、largerを指定すると大きさが1段階上下します。&lt;a href="#f-e038e639" title="http://www.htmq.com/style/font-size.shtml">*1&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>つまり、デフォルトのフォントサイズさえ決まっていればそれの&lt;strong>1.2倍のサイズ&lt;/strong>と判断すればよい。&lt;/p>
&lt;hr>
&lt;p>ってことはわかったんだけど、じゃあ &lt;code>&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;&lt;/code> は何にあたるのかしら？　&lt;code>font size=2&lt;/code> と同等？と思って調べました。&lt;/p>
&lt;blockquote>
&lt;p>フォントの大きさはsize属性で指定します。1～7までの整数、または現在のフォントサイズに対して｢+｣｢-｣で指定します。 フォントサイズは1～7までしかないので、プラスマイナスした結果が1～7の範囲に収まるようにしなくてはなりません。 より大きなサイズやより小さなサイズの文字を表示させたいときには、スタイルシートを用いてください。 特にフォントサイズを指定しない場合のデフォルト値はsize= &amp;ldquo;3&amp;quot;となります。&lt;a href="#f-2e6f834c" title="http://www.htmq.com/html/font.shtml">*2&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>要するに、デフォルトのフォントサイズが 15px だった場合、 &lt;code>&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;&lt;/code> は&lt;code>font-size: 12.5px;&lt;/code>となる。と。（計算：15/1.2 = 12.5）&lt;/p>
&lt;h2 id="結論">結論&lt;/h2>
&lt;p>&lt;strong>デフォルトのサイズに対して「1.2倍」「-1.2倍」で考える！&lt;/strong>&lt;/p>
&lt;h2 id="余談">余談&lt;/h2>
&lt;p>タイトルみたいなこと言ってくるお客さんのシステムでは、デフォルトのフォントサイズが指定されていない。。。 なので、後日ブラウザごとの標準の表示サイズをまとめます。&lt;/p>
&lt;p>&lt;a href="#fn-e038e639">*1&lt;/a>:&lt;a href="http://www.htmq.com/style/font-size.shtml">http://www.htmq.com/style/font-size.shtml&lt;/a>&lt;/p>
&lt;p>&lt;a href="#fn-2e6f834c">*2&lt;/a>:&lt;a href="http://www.htmq.com/html/font.shtml">http://www.htmq.com/html/font.shtml&lt;/a>&lt;/p></description></item><item><title>disable-output-escapingってなんだったか度忘れした</title><link>https://tech-b.azimicat.dev/docs/old/2018-01-16-disable-output-escaping%E3%81%A3%E3%81%A6%E3%81%AA%E3%82%93%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%8B%E5%BA%A6%E5%BF%98%E3%82%8C%E3%81%97%E3%81%9F/</link><pubDate>Tue, 16 Jan 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-01-16-disable-output-escaping%E3%81%A3%E3%81%A6%E3%81%AA%E3%82%93%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%8B%E5%BA%A6%E5%BF%98%E3%82%8C%E3%81%97%E3%81%9F/</guid><description>&lt;h1 id="disable-output-escaping">disable-output-escaping？&lt;/h1>
&lt;h2 id="disable-output-escapingyes-を使用すると整形式でないドキュメントを生成できる">disable-output-escaping=&amp;ldquo;yes&amp;rdquo; を使用すると、整形式でないドキュメントを生成できる&lt;/h2>
&lt;h2 id="整形式でないドキュメントとは">［整形式でないドキュメント］とは？？&lt;/h2>
&lt;p>「整形式」という訳語は、「整形・式」ではなく「整・形式」とされている。&lt;/p>
&lt;p>適合性の一種で、ある文字列ないしオクテット列が仕様に照らしてある程度正しいことをいいます。&lt;br>
特に限定がない場合は、 XML の仕様に照らして構文的に正しいことをいいます。&lt;/p></description></item><item><title>JDKがどこに格納されているか調べたかった@mac</title><link>https://tech-b.azimicat.dev/docs/old/2018-01-12-jdk%E3%81%8C%E3%81%A9%E3%81%93%E3%81%AB%E6%A0%BC%E7%B4%8D%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E8%AA%BF%E3%81%B9%E3%81%9F%E3%81%8B%E3%81%A3%E3%81%9F@mac/</link><pubDate>Fri, 12 Jan 2018 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2018-01-12-jdk%E3%81%8C%E3%81%A9%E3%81%93%E3%81%AB%E6%A0%BC%E7%B4%8D%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E8%AA%BF%E3%81%B9%E3%81%9F%E3%81%8B%E3%81%A3%E3%81%9F@mac/</guid><description>&lt;h3 id="そもそもjavaが入っているかどうか">そもそもjavaが入っているかどうか&lt;/h3>
&lt;p>&lt;code>java -version&lt;/code> を実行で&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>java version &amp;#34;1.8.0_45&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>このように出力される。ここで入っていないと、「インストールしますか？」みたいなことを聞かれるらしい。 ついでにバージョンもわかる。&lt;/p>
&lt;h3 id="jdkは何が入っている">JDKは何が入っている？&lt;/h3>
&lt;p>&lt;code>$ /usr/libexec/java_home -V&lt;/code> を実行すると、ずらずら〜っとJDKのリストを出してくれる&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Matching Java Virtual Machines (1):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 1.8.0_45, x86_64: &amp;#34;Java SE 8&amp;#34; /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>OracleのJDKがインストールされているようです&lt;/li>
&lt;li>Appleが提供しているのはJava6までらしい&lt;/li>
&lt;/ul>
&lt;h3 id="java_home環境変数">JAVA_HOME環境変数&lt;/h3>
&lt;p>&lt;code>$ java -version&lt;/code> 実行で、現在指定されているバージョンがわかる（さっきも書いちゃったけど&amp;hellip;） これに、先程の&lt;code>$ /usr/libexec/java_home&lt;/code>を組み合わせて考えると、対応しているバージョンのパスがJAVA_HOME環境変数に指定されていると判断できる&lt;/p></description></item><item><title>リモートデスクトップ接続時ローカルドライブを共有する方法</title><link>https://tech-b.azimicat.dev/docs/old/2017-12-22-%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E6%8E%A5%E7%B6%9A%E6%99%82%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%82%92%E5%85%B1%E6%9C%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Fri, 22 Dec 2017 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2017-12-22-%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E6%8E%A5%E7%B6%9A%E6%99%82%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%82%92%E5%85%B1%E6%9C%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;h2 id="リモートデスクトップ接続時ローカルドライブを共有する方法">リモートデスクトップ接続時ローカルドライブを共有する方法&lt;/h2>
&lt;ol>
&lt;li>［ローカルリソース］タブを開く&lt;/li>
&lt;li>［ローカル デバイスとリソース］の［詳細］ボタンを押下する&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20171222/20171222114525.png" alt="f:id:azix:20171222114525p:plain" title="f:id:azix:20171222114525p:plain">&lt;/li>
&lt;li>［ドライブ］配下の目的のドライブにチェックを入れ、［OK］ボタンを押下する&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20171129/20171129165217.png" alt="f:id:azix:20171129165217p:plain" title="f:id:azix:20171129165217p:plain">&lt;/li>
&lt;li>この状態で接続する&lt;/li>
&lt;/ol></description></item><item><title>古いリビジョンに戻してコミットしたい（SVN）</title><link>https://tech-b.azimicat.dev/docs/old/2017-12-07-%E5%8F%A4%E3%81%84%E3%83%AA%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AB%E6%88%BB%E3%81%97%E3%81%A6%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%84svn/</link><pubDate>Thu, 07 Dec 2017 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2017-12-07-%E5%8F%A4%E3%81%84%E3%83%AA%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AB%E6%88%BB%E3%81%97%E3%81%A6%E3%82%B3%E3%83%9F%E3%83%83%E3%83%88%E3%81%97%E3%81%9F%E3%81%84svn/</guid><description>&lt;h2 id="リポジトリのリビジョンのロールバック取り消し">リポジトリのリビジョンのロールバック（取り消し）&lt;/h2>
&lt;blockquote>
&lt;ol>
&lt;li>変更を取り消す必要のあるファイルやフォルダーを選択してください。すべての変更を取り消す場合は、トップレベルフォルダーを選択してください。&lt;/li>
&lt;li>TortoiseSVN → ログを表示 を選択してリビジョン一覧を表示します。参照したいリビジョンを表示させるために、必要に応じてすべて取得や次の100件を使用してください。&lt;/li>
&lt;li>変更を取り消したいリビジョンを選択してください。リビジョン範囲を取り消すのなら、最初のものを選択してから、Shift キーを押したまま最後のものを選択してください。複数のリビジョンやその範囲を選択する場合は、Ctrlキーを押しながらリビジョンを選択してください。選択したリビジョンで右クリックし、コンテキストメニュー → このリビジョンにおける変更を取り消す を選択してください。&lt;/li>
&lt;li>もしくは、もっと古いリビジョンを HEAD リビジョンにしたい場合は、選択したリビジョンの上で 右クリック し、コンテキストメニュー → このリビジョンに戻す を選択してください。これにより、選択したリビジョン以降の変更がすべて取り消されます。&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>&lt;a href="https://tortoisesvn.net/docs/release/TortoiseSVN_ja/tsvn-howto-rollback.html">リポジトリのリビジョンのロールバック（取り消し）&lt;/a>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>古いリビジョンに戻す &lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180417/20180417102834.png" alt="f:id:azix:20180417102834p:plain" title="f:id:azix:20180417102834p:plain">&lt;/p>
&lt;/li>
&lt;li>
&lt;p>選択したリビジョンに戻したらそのままコミット &lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20180417/20180417102833.png" alt="f:id:azix:20180417102833p:plain" title="f:id:azix:20180417102833p:plain">&lt;/p>
&lt;/li>
&lt;/ol></description></item><item><title>SQLserver で CREATE PRPC したときの変数の扱いについて</title><link>https://tech-b.azimicat.dev/docs/old/2017-12-05-sqlserver_%E3%81%A7_create_prpc_%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%E5%A4%89%E6%95%B0%E3%81%AE%E6%89%B1%E3%81%84%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</link><pubDate>Tue, 05 Dec 2017 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2017-12-05-sqlserver_%E3%81%A7_create_prpc_%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%E5%A4%89%E6%95%B0%E3%81%AE%E6%89%B1%E3%81%84%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</guid><description>&lt;h2 id="create-prpc-procname-変数1変数2変数3">CREATE PRPC [PROCNAME] 変数1,変数2,変数3&amp;hellip;&lt;/h2>
&lt;h3 id="create-prpcしたときの変数にデフォルト値があるときとないときの違いってなに">CREATE PRPCしたときの変数にデフォルト値があるときとないときの違いってなに？？&lt;/h3>
&lt;ul>
&lt;li>プロシージャの作成&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>CREATE PROCEDURE hoge_procedure
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> @変数1 int = 1 -- デフォルト値あり
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> @変数2 int = 2 -- デフォルト値あり
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> @変数3 int -- デフォルト値なし
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>AS
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>BEGIN
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ...処理
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>変数にデフォルト値を指定しない場合との違い&lt;/li>
&lt;/ul>
&lt;p>本来、 プロシージャーを呼び出すためには全ての引数を指定する必要があるが、&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>EXEC hoge_procedure (1,2,3)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>デフォルト値を設定していると、指定がない引数のみの指定でプロシージャーを呼び出すことが出来る&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>EXEC hoge_procedure (3) -- @変数1,@変数2 を指定していない
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>XAMPP の M が MySQL じゃなくなっていた</title><link>https://tech-b.azimicat.dev/docs/old/2017-10-29-xampp_%E3%81%AE_m_%E3%81%8C_mysql_%E3%81%98%E3%82%83%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%9F/</link><pubDate>Sun, 29 Oct 2017 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2017-10-29-xampp_%E3%81%AE_m_%E3%81%8C_mysql_%E3%81%98%E3%82%83%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%9F/</guid><description>&lt;h2 id="何になったの">何になったの？&lt;/h2>
&lt;p>どうも &lt;code>M&lt;/code> は &lt;code>MarinaDB&lt;/code> を指すらしい&lt;/p>
&lt;h2 id="marinadb-とは">MarinaDB とは？&lt;/h2>
&lt;p>&lt;strong>MySQLと広く互換性があるフリーのDBMS&lt;/strong>&lt;br>
最新のMySQLと最新のMarinaDBが常に互換性を持つように頑張ってるよ！ってサイトには書いてありました。&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="https://mariadb.com/kb/ja/mariadb/">https://mariadb.com/kb/ja/mariadb/&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="何ができるの">何ができるの？&lt;/h2>
&lt;p>ストレージエンジンテーブルごとに選択できるのが特徴です （ストレートエンジンについては以下を参照ください)&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="http://shindolog.hatenablog.com/entry/2015/04/01/185703">http://shindolog.hatenablog.com/entry/2015/04/01/185703&lt;/a>&lt;br>
&lt;a href="https://mariadb.com/kb/ja/choosing-the-right-storage-engine/">https://mariadb.com/kb/ja/choosing-the-right-storage-engine/&lt;/a>&lt;br>
選択できるストレートエンジンは&lt;/p>
&lt;/blockquote>
&lt;h2 id="ストレージエンジン説明">ストレージエンジン説明&lt;/h2>
&lt;h3 id="archive">Archive&lt;/h3>
&lt;p>データのアーカイブに最適です。&lt;/p>
&lt;h3 id="aria">Aria&lt;/h3>
&lt;p>MariaDBによってなされたMyISAMのより現代的な改善ですが、フットプリントが小さく、システム間で簡単にコピーすることができます。&lt;/p>
&lt;h3 id="blackhole">BLACKHOLE&lt;/h3>
&lt;p>データを受け入れますが、それを全く保持せずに、常に空の結果を返します。これは、例えば、マスター上の任意のオーバーヘッドを招くことなく、スレーブ上の複雑なフィルタリングルールを実行したい場合、のようなreplication環境で役立ちます。&lt;/p>
&lt;h3 id="cassandrase">CassandraSE&lt;/h3>
&lt;p>NoSQLのDBMSであるApache Cassandraの古いバージョンへのアクセスを可能にするストレージエンジンです。実験的要素が強かったため、現在は活発に開発されていません。&lt;/p>
&lt;h3 id="columnstore">ColumnStore&lt;/h3>
&lt;p>大規模並列分散データ・アーキテクチャを利用し、ペタバイト規模のデータを処理するためのスケーリングを意識して設計されています。&lt;/p>
&lt;h3 id="connect">CONNECT&lt;/h3>
&lt;p>異なる種類のテキストファイルやリモートリソースにMariaDBテーブルであるかのようにアクセスすることができます。&lt;/p>
&lt;h3 id="csv">CSV&lt;/h3>
&lt;p>CSV（カンマ区切り値）形式で保存されたファイルを読んだり、データを追加したりすることができます。しかし、MariaDB 10.0以降では、CONNECTがより柔軟にこのようなファイルを読み書きできる良い選択となります。&lt;/p>
&lt;h3 id="federatedx">FederatedX&lt;/h3>
&lt;p>モートRDBMSを含むデータソースとのやり取りにlibmysqlを使用しています。 FederatedXはlibmysqlのみを使用しているため、現在、MySQL RDBMSとのみやり取りすることができます。&lt;/p>
&lt;h3 id="innodb">InnoDB&lt;/h3>
&lt;p>一般的なトランザクションストレージエンジンです。これはMySQLのデフォルトのストレージエンジンで、バージョン10.2においてのデフォルトエンジンです。バージョン10.1までは、XtraDBはInnoDBのパフォーマンス強化フォークであり、通常はXtraDBを選択することをお勧めします。&lt;/p>
&lt;h3 id="merge">MERGE&lt;/h3>
&lt;p>1つとして使用することができる同一のMyISAMテーブルの集合です。「同一」とは、すべてのテーブルが同一のカラムとインデックス情報を有することを意味します。&lt;/p>
&lt;h3 id="memory">MEMORY&lt;/h3>
&lt;p>ディスク上にデータを書き込まれず（すべての行がクラッシュ時に失われます）、他のテーブルからのデータの読み取り専用キャッシュや、一時作業エリアとしての使用に最適です。デフォルトのXtraDBやその他の性能の良いキャッシュ機構を持つストレージエンジンがあるため、以前に比べるとこのエンジンはあまり必要とされていません。&lt;/p>
&lt;h3 id="mroonga">Mroonga&lt;/h3>
&lt;p>カラム型ストレージを使用して高速CJK対応のフルテキスト検索を提供します。&lt;/p>
&lt;h3 id="myisam">MyISAM&lt;/h3>
&lt;p>フットプリントが小さく、システム間で簡単にコピーすることができます。MyISAMはMySQL最古のストレージエンジンです。通常は、レガシー目的以外に使用する理由はほとんどありません。Ariaは、MariaDBによる改善されたストレージエンジンです。&lt;/p>
&lt;h3 id="oqgraph">OQGRAPH&lt;/h3>
&lt;p>階層（ツリー構造）と複雑なグラフ（ノードが多方向に多くの接続を持つ）を処理することができます。&lt;/p>
&lt;h3 id="scaledb">ScaleDB&lt;/h3>
&lt;p>大規模なオンライントランザクション処理およびデータ・ウェアハウスに適した商用ストレージエンジンです。&lt;/p>
&lt;h3 id="sequence">Sequence&lt;/h3>
&lt;p>指定した開始値、終了値、増分を指定した昇順または降順の数値（正の整数）の配列の一時テーブルを必要に応じて作成します。&lt;/p>
&lt;h3 id="sphinxse">SphinxSE&lt;/h3>
&lt;p>リモートSphinxデータベースサーバー（主に高度な全文検索に便利）上でステートメントを実行するためにプロキシとして使用されます。&lt;/p>
&lt;h3 id="spider">Spider&lt;/h3>
&lt;p>パーティショニングを使用し、複数のサーバーにわたるデータシャーディングを提供します。&lt;/p>
&lt;h3 id="tokudb">TokuDB&lt;/h3>
&lt;p>メモリに収まらないワークロード向けに最適化されたトランザクション対応ストレージエンジンであり、高い圧縮率を誇ります。&lt;/p>
&lt;h3 id="xtradb">XtraDB&lt;/h3>
&lt;p>大抵の場合にベストな選択です。これは、InnoDBのパフォーマンスが強化されたフォークで、バージョン10.1までのMariaDBのデフォルトエンジンです。&lt;/p>
&lt;h2 id="日本語のドキュメントある">日本語のドキュメントある？&lt;/h2>
&lt;p>一応、あります。&lt;br>
基本的なところ（MarinaDBとはなにか〜とか）は翻訳されていないけれど、ライブラリとかは少しずつ日本語化されているみたい。&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20171029/20171029174847.png" alt="f:id:azix:20171029174847p:plain" title="f:id:azix:20171029174847p:plain">&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="https://mariadb.com/kb/ja/mariadb/">https://mariadb.com/kb/ja/mariadb/&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="どこでdlできる">どこでDLできる？&lt;/h2>
&lt;p>tarball、バイナリ (Linux, Solaris, Windows)、いくつかの Linux ディストリビューション用パッケージがあるようです。&lt;/p></description></item><item><title>gbak コマンドではまった</title><link>https://tech-b.azimicat.dev/docs/old/2017-10-26-gbak_%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%81%AF%E3%81%BE%E3%81%A3%E3%81%9F/</link><pubDate>Thu, 26 Oct 2017 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2017-10-26-gbak_%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%81%AF%E3%81%BE%E3%81%A3%E3%81%9F/</guid><description>&lt;p>参考サイトで見ていた &lt;code>gbak&lt;/code> コマンドではまったので解決策&lt;/p>
&lt;p>コレが基本の構文 &lt;code>gbak -B -USER ユーザー名 -PASSWORD パスワード バックアップするデータベースの名前 バックアップ先ファイル&lt;/code>&lt;/p>
&lt;p>あわせて書くと &lt;code>gbak -B -USER sysdba -PASSWORD masterkey &amp;quot;C:/hoge/hoge.fdb&amp;quot; &amp;quot;C:/hoge/hoge.fbk&amp;quot;&lt;/code> このようになる。 実行で以下のエラーが出た&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#433e56;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>gbak: ERROR: unavailable database
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gbak: Exiting before completion due to errors
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>いろんなサイトをめぐってみると、「ファイルパスが違うのでは」とか「サーバーは起動しているか確認しろ」とか出てきた。&lt;/p>
&lt;p>でも、その辺は全部クリアしていて、結局は &lt;code>gbak -B -USER sysdba -PASSWORD masterkey &amp;quot;localhost:C:/hoge/hoge.fdb&amp;quot; &amp;quot;C:/hoge/hoge.fbk&amp;quot;&lt;/code>&lt;/p>
&lt;p>つまり &lt;code>gbak -B -USER ユーザー名 -PASSWORD パスワード バックアップするデータベースのIPアドレスからのフルパス バックアップ先ファイルのフルパス&lt;/code>&lt;/p>
&lt;p>ということだったみたい。&lt;/p>
&lt;p>DBと接続元の関係がちゃんと理解できなかったからはまったのねという感じでした。&lt;/p>
&lt;p>参考：&lt;a href="http://www.gesource.jp/weblog/?p=5748">http://www.gesource.jp/weblog/?p=5748&lt;/a>&lt;/p></description></item><item><title>「ログイン時の表示」が「名前とパスワード」のときユーザ名を調べる方法（Mac）</title><link>https://tech-b.azimicat.dev/docs/old/2017-10-22-%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E6%99%82%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%81%8C%E5%90%8D%E5%89%8D%E3%81%A8%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%81%AE%E3%81%A8%E3%81%8D%E3%83%A6%E3%83%BC%E3%82%B6%E5%90%8D%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B%E6%96%B9%E6%B3%95mac/</link><pubDate>Sun, 22 Oct 2017 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/docs/old/2017-10-22-%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E6%99%82%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%81%8C%E5%90%8D%E5%89%8D%E3%81%A8%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%81%AE%E3%81%A8%E3%81%8D%E3%83%A6%E3%83%BC%E3%82%B6%E5%90%8D%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B%E6%96%B9%E6%B3%95mac/</guid><description>&lt;h2 id="環境">環境&lt;/h2>
&lt;p>macOS Sierra 10.12.6&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20171022/20171022224429.png" alt="f:id:azix:20171022224429p:plain">&lt;/p>
&lt;h2 id="やってしまったこと">やってしまったこと&lt;/h2>
&lt;p>ログイン画面でユーザ名とパスワードを入力する設定に変えた&lt;/p>
&lt;p>ログインユーザ情報を変更するときに、 &lt;em>ログイン時の表示&lt;/em> を &lt;em>名前とパスワード&lt;/em> にしてしまった&lt;br>
&lt;img src="https://cdn-ak.f.st-hatena.com/images/fotolife/a/azix/20171022/20171022224923.png" alt="f:id:azix:20171022224923p:plain">&lt;/p>
&lt;h2 id="問題">問題&lt;/h2>
&lt;p>ユーザ名が思い出せずログインできない……&lt;/p>
&lt;h2 id="対応">対応&lt;/h2>
&lt;p>コマンドラインを使ってログインユーザ名を確認した&lt;/p>
&lt;ul>
&lt;li>「Command」＋「S」キーを長押ししながらMacを起動&lt;/li>
&lt;li>コマンドラインが表示されたら &lt;code>ls /Users&lt;/code> とタイプ&lt;/li>
&lt;li>ユーザ名がずらずら〜っと表示されるのでWinner!!!!&lt;/li>
&lt;li>&lt;code>exit&lt;/code> でコマンドラインを出る&lt;/li>
&lt;li>ログイン情報入力画面へ遷移するので、得られたユーザ名とパスワードを入力&lt;/li>
&lt;li>ログイン完了&lt;/li>
&lt;/ul>
&lt;h2 id="まとめ">まとめ&lt;/h2>
&lt;p>`⌘ + S` でコマンドラインを表示できる
`ls /Users` でユーザ名を表示できる&lt;/p></description></item><item><title>Introduction</title><link>https://tech-b.azimicat.dev/pages/introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tech-b.azimicat.dev/pages/introduction/</guid><description>&lt;h2 id="6月の目標">6月の目標&lt;/h2>
&lt;p>なにか新しいことに挑戦する。&lt;/p></description></item></channel></rss>