From 16fdece0bb178bb31f050c182b44c6ad376aeafb Mon Sep 17 00:00:00 2001 From: "yu.otsubo" Date: Sat, 14 Jan 2023 23:20:35 +0900 Subject: [PATCH 1/3] pj: textlint --- .textlintignore | 1 - ...260\343\202\222\344\275\234\343\202\213.md" | 18 +++++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) delete mode 100644 .textlintignore diff --git a/.textlintignore b/.textlintignore deleted file mode 100644 index 97c9ed7376..0000000000 --- a/.textlintignore +++ /dev/null @@ -1 +0,0 @@ -src/content/2019-*.md diff --git "a/src/content/2019-09-01-gatsby-netlify-csm-\343\201\247\344\273\212\346\233\264\343\203\226\343\203\255\343\202\260\343\202\222\344\275\234\343\202\213.md" "b/src/content/2019-09-01-gatsby-netlify-csm-\343\201\247\344\273\212\346\233\264\343\203\226\343\203\255\343\202\260\343\202\222\344\275\234\343\202\213.md" index 544880ac41..92d47605b6 100644 --- "a/src/content/2019-09-01-gatsby-netlify-csm-\343\201\247\344\273\212\346\233\264\343\203\226\343\203\255\343\202\260\343\202\222\344\275\234\343\202\213.md" +++ "b/src/content/2019-09-01-gatsby-netlify-csm-\343\201\247\344\273\212\346\233\264\343\203\226\343\203\255\343\202\260\343\202\222\344\275\234\343\202\213.md" @@ -20,9 +20,9 @@ templateKey: blog-post ``` -## なぜこんなことを・・・。 +## なぜこんなことを・・・ -今更にはなりますがNetlify CMSを使ってみたくなったのでGatsbyを使ってブログ作ってみました。 +いまさらにはなりますがNetlify CMSを使ってみたくなったのでGatsbyを使ってブログ作ってみました。 ## 登場人物 @@ -30,8 +30,7 @@ templateKey: blog-post - -Netlifyとは静的ホスティングサービスですが、S3とは違いGithubのpush契機にBuildが走るCI機能などが充実していてこれでOK感ある。 +Netlifyとは静的ホスティングサービスですが、S3とは違いGitHubのpush契機にBuildが走るCI機能などが充実していてこれでOK感ある。 Identityという認証も用意されているのでCMSサイトも作れちゃう。 @@ -44,7 +43,7 @@ Identityという認証も用意されているのでCMSサイトも作れちゃ NetlifyにGithubへのアクセスキーを持たせることで、CMS上でコンテンツを編集、GithubへのPushを一気にやってしまうことができます。 -さらに記事のWorkflowも[Github Flow](http://scottchacon.com/2011/08/31/github-flow.html) に乗っけることができるので、CMSで編集しながらにしてレポジトリはぐちゃぐちゃにならない。 +さらに記事のWorkflowも[GitHub Flow](http://scottchacon.com/2011/08/31/github-flow.html) に乗っけることができるので、CMSで編集しながらにしてレポジトリはぐちゃぐちゃにならない。 これ結構いいアイディア! @@ -66,7 +65,7 @@ MarkdownをGithubにPostすれば完全に求めている感じのことがで ### Netlify対応版のGatsby-starterをダウンロードする -[https://github.com/netlify-templates/gatsby-starter-netlify-cms +[ ](https://github.com/netlify-templates/gatsby-starter-netlify-cms ) @@ -75,8 +74,8 @@ git cloneしてきます。 とりあえずローカル上で動かしてみます。 ```bash{numberLines: 1} -$ npm install -$ npm start +npm install +npm start ``` するとコーヒー屋さん(?)のページが出てきます。 @@ -93,7 +92,6 @@ CMSの要素は残す必要があるため、ComponentsのTemplateを編集す 無事サイトができたら、Netlifyに挙げていきます。 - ![Imgur](https://i.imgur.com/P0E2109.png) アカウントを作ってGithubと連携するとDeployするレポジトリを選択できます。 @@ -144,5 +142,3 @@ Githubの[PersonalAccessToken](https://github.com/settings/tokens/new)から作 Netlify CMSはすごいぞ! ![Imgur](https://i.imgur.com/mIcrB6K.png) - - From 246ca533433b2a95de82f4a0ab50593d31f4123d Mon Sep 17 00:00:00 2001 From: "yu.otsubo" Date: Sat, 14 Jan 2023 23:24:11 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E4=B8=8D=E9=81=A9=E5=88=87=E3=81=AA?= =?UTF-8?q?=E8=A1=A8=E7=8F=BE=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 ++- ...343\203\274\343\202\271\345\256\237\347\270\276.md" | 10 ++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 78e68f9b87..93b4a47a34 100644 --- a/package.json +++ b/package.json @@ -122,6 +122,7 @@ "browserslist:update": "npx browserslist --update-db", "textlint": "npx textlint \"src/content/*.md\"", "textlint:fix": "npx textlint --fix \"src/content/*.md\"", + "textlint:fix-ls": "npx textlint --fix", "storybook": "start-storybook -p 6006", "build-storybook": "build-storybook", "prepare": "husky install", @@ -265,7 +266,7 @@ "yarn format-style:fix" ], "src/content/*.md": [ - "yarn textlint:fix" + "yarn textlint:fix-ls" ], "*.md": [ "yarn format-md:fix" diff --git "a/src/content/2019-12-16-\351\235\242\345\200\222\343\201\252\343\201\223\343\201\250\343\201\257python\343\201\253\343\202\204\343\202\211\343\201\233\343\202\210\343\201\206-\343\203\252\343\203\252\343\203\274\343\202\271\345\256\237\347\270\276.md" "b/src/content/2019-12-16-\351\235\242\345\200\222\343\201\252\343\201\223\343\201\250\343\201\257python\343\201\253\343\202\204\343\202\211\343\201\233\343\202\210\343\201\206-\343\203\252\343\203\252\343\203\274\343\202\271\345\256\237\347\270\276.md" index d0ed06fa15..3cb3d46442 100644 --- "a/src/content/2019-12-16-\351\235\242\345\200\222\343\201\252\343\201\223\343\201\250\343\201\257python\343\201\253\343\202\204\343\202\211\343\201\233\343\202\210\343\201\206-\343\203\252\343\203\252\343\203\274\343\202\271\345\256\237\347\270\276.md" +++ "b/src/content/2019-12-16-\351\235\242\345\200\222\343\201\252\343\201\223\343\201\250\343\201\257python\343\201\253\343\202\204\343\202\211\343\201\233\343\202\210\343\201\206-\343\203\252\343\203\252\343\203\274\343\202\271\345\256\237\347\270\276.md" @@ -40,9 +40,9 @@ templateKey: blog-post [GitHub API v3 (RestAPI)](https://developer.github.com/v3/)と[v4(GraphQL)](https://developer.github.com/v4/)です。 -もちろん使い慣れたRestAPIを使ってもいいのですが、GraphQLくらい使えないと会社でバカにされそうなので**GraphQL**を使うことにします。 +もちろん使い慣れたRestAPIを使ってもいいのですが、GraphQLくらい使えないと会社で怒られそうなので**GraphQL**を使うことにします。 -## なぜGraphQLを使わないと会社でバカにされるのか +## なぜGraphQLを使わないと会社で怒られそうにされるのか ちょっと閑話休題。 @@ -64,7 +64,6 @@ APIサービスを提供する人も使う人両者からみてRESTよりはい GraphQLなら自分が必要な項目を必要なだけ取得できます。 - ### BFFとして使うことでたくさんのエンドポイントを作らなくてよい [Backends For Frontends](https://samnewman.io/patterns/architectural/bff/)な世界では、フロントエンドが使いやすい形式でさまざまな業務ロジックをGatewayしてあげることが求められます。 @@ -77,7 +76,6 @@ GraphQLはまさに呼び手、つまりフロントエンドがデータの形 次のような形で作るとGraphQLのリクエストができ、PythonのDictで結果を受け取ることができます。 - ```python def post(query): headers = {"Authorization": "bearer " + token} @@ -290,7 +288,6 @@ TOKENとENDPOINTは.envファイルから取得するようにしてます。 print文が残念なかんじですね。今回は急ぎ作ってしまいましたが、今後ちょっとリファクタします。 - ## 結論 急ぎの依頼でしたが楽しくプログラミングできました。 @@ -304,6 +301,3 @@ Terminalでこんな感じで出ます。 ![csv](https://i.imgur.com/CyagH52.png) 今回はレポジトリが100件未満だったので特にベージネーションをしてませんが次はベージネーションも実装しようかと思います。 - - - From ec64499cb7411319a7f50b454b2cea309057570d Mon Sep 17 00:00:00 2001 From: "yu.otsubo" Date: Sat, 14 Jan 2023 23:59:54 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...43\343\201\246\343\201\277\343\202\213.md" | 15 +- ...72\350\252\215\343\201\231\343\202\213.md" | 4 +- ...21\343\201\237\346\204\237\346\203\263.md" | 4 +- ...zure-devops-build-pipeline\347\267\250.md" | 4 +- ...10\343\202\222\346\222\256\343\202\213.md" | 21 +- ...03\343\203\210\351\233\206\357\275\236.md" | 10 +- ...37\343\201\271\343\201\237\343\201\204.md" | 6 +- ...37\343\201\271\343\202\215\357\274\201.md" | 7 +- ...37\343\201\256\343\201\212\350\251\261.md" | 14 +- ...51\343\203\274\343\203\241\343\203\263.md" | 8 +- ...63\343\202\222\346\233\270\343\201\217.md" | 6 +- ...77\343\201\237\346\204\237\346\203\263.md" | 251 +++++++++--------- ...10\343\201\246\343\201\277\343\201\237.md" | 23 +- ...13\343\202\213\346\226\271\346\263\225.md" | 10 +- ...22\344\275\234\343\202\215\343\201\206.md" | 76 +++--- ...1\250\303\227deep-learning\357\275\236.md" | 10 +- ...ue\343\202\222\344\275\277\343\201\206.md" | 8 +- ...7\343\202\213-nuxtjs-toast\347\267\250.md" | 12 +- ...nuxtjs-toast-global-option\347\267\250.md" | 6 +- ...67\343\203\245\343\203\274\351\243\257.md" | 4 +- ...77\343\201\206\346\226\271\346\263\225.md" | 14 +- ...37\346\235\220\344\270\200\350\246\247.md" | 48 +--- ...22\346\261\202\343\202\201\343\202\213.md" | 17 +- ...13\343\201\244\343\201\221\343\201\237.md" | 2 +- ...41\343\201\256\345\277\203\345\276\227.md" | 8 +- textlint-allow-list.yml | 1 + 26 files changed, 259 insertions(+), 330 deletions(-) diff --git "a/src/content/2019-09-02-github-action\343\202\222\344\275\277\343\201\243\343\201\246\343\200\201\347\260\241\345\215\230ci\343\202\222\344\275\234\343\201\243\343\201\246\343\201\277\343\202\213.md" "b/src/content/2019-09-02-github-action\343\202\222\344\275\277\343\201\243\343\201\246\343\200\201\347\260\241\345\215\230ci\343\202\222\344\275\234\343\201\243\343\201\246\343\201\277\343\202\213.md" index 2dcec6025b..6d1d8ca00d 100644 --- "a/src/content/2019-09-02-github-action\343\202\222\344\275\277\343\201\243\343\201\246\343\200\201\347\260\241\345\215\230ci\343\202\222\344\275\234\343\201\243\343\201\246\343\201\277\343\202\213.md" +++ "b/src/content/2019-09-02-github-action\343\202\222\344\275\277\343\201\243\343\201\246\343\200\201\347\260\241\345\215\230ci\343\202\222\344\275\234\343\201\243\343\201\246\343\201\277\343\202\213.md" @@ -11,7 +11,7 @@ headerImage: 'https://i.imgur.com/6T4kjdf.png' templateKey: blog-post --- -最近Github Actionを触って便利さに気がついてしまったのでご紹介します。 +最近GitHub Actionを触って便利さに気がついてしまったのでご紹介します。 ## Table of Contents @@ -19,17 +19,17 @@ templateKey: blog-post ``` -## Github Actionとは? +## GitHub Actionとは? -Github Actionとは、 ***built by you, run by us*** です。[(公式より)](https://github.blog/2018-10-17-action-demos/) +GitHub Actionとは、 ***built by you, run by us*** です。[(公式より)](https://github.blog/2018-10-17-action-demos/) 詰まるところGithub製のCIです。 結構簡単に使えたのでご紹介します。 -## Github Actionのプレビューに応募する +## GitHub Actionのプレビューに応募する -Github Action自体はまだプレビュー版ですので、[こちらのサイト](https://github.com/features/actions)から +GitHub Action自体はまだプレビュー版ですので、[こちらのサイト](https://github.com/features/actions)から 利用申請をする必要があります。 私は申し込みから一週間くらいで使えるようになりました。 @@ -41,7 +41,7 @@ Github Action自体はまだプレビュー版ですので、[こちらのサイ ## Workflowを設定する -Github ActionはほかのCIと同じくYAMLファイルで定義します。 +GitHub ActionはほかのCIと同じくYAMLファイルで定義します。 今回はPythonのPytestでテストを回します。 @@ -163,5 +163,4 @@ StepはほかのCIと同じような感じで設定します。 ## 結論 -Github Actionを使えば、めんどっちいCIサーバー連携も不要で楽々です。 - +GitHub Actionを使えば、めんどっちいCIサーバー連携も不要で楽々です。 diff --git "a/src/content/2019-09-22-sentry\343\202\222\344\275\277\343\201\243\343\201\246\343\203\225\343\203\255\343\203\263\343\203\210\343\202\250\343\203\263\343\203\211\343\201\256\343\202\250\343\203\251\343\203\274\343\202\222\347\242\272\350\252\215\343\201\231\343\202\213.md" "b/src/content/2019-09-22-sentry\343\202\222\344\275\277\343\201\243\343\201\246\343\203\225\343\203\255\343\203\263\343\203\210\343\202\250\343\203\263\343\203\211\343\201\256\343\202\250\343\203\251\343\203\274\343\202\222\347\242\272\350\252\215\343\201\231\343\202\213.md" index 9596197029..b71b850695 100644 --- "a/src/content/2019-09-22-sentry\343\202\222\344\275\277\343\201\243\343\201\246\343\203\225\343\203\255\343\203\263\343\203\210\343\202\250\343\203\263\343\203\211\343\201\256\343\202\250\343\203\251\343\203\274\343\202\222\347\242\272\350\252\215\343\201\231\343\202\213.md" +++ "b/src/content/2019-09-22-sentry\343\202\222\344\275\277\343\201\243\343\201\246\343\203\225\343\203\255\343\203\263\343\203\210\343\202\250\343\203\263\343\203\211\343\201\256\343\202\250\343\203\251\343\203\274\343\202\222\347\242\272\350\252\215\343\201\231\343\202\213.md" @@ -59,7 +59,7 @@ Cloudwatchでもいいのですが、アプリへの導入が簡単にできる ![Img](https://i.imgur.com/7dWvynP.png) -くわしくは[公式Demo: What is Sentry?](https://sentry.io/_/demo/?referrer=welcome)へ。 +詳しくは[公式Demo: What is Sentry?](https://sentry.io/_/demo/?referrer=welcome)へ。 ### main.ts @@ -97,7 +97,7 @@ SentryInitを呼び出すだけです。たったそれだけ。 さらにVue用にIntegrateされたSentryVueを呼び出します。 たったそれだけ。 -### 実際にエラーを起こしてみた。 +### 実際にエラーを起こしてみた 実際にエラーを起こします。F12で確認してみると404NotFoundのエラーが出ています。 diff --git "a/src/content/2019-09-27-github\343\201\25330\346\227\245\351\226\223\350\215\211\343\202\222\347\224\237\343\202\204\343\201\227\347\266\232\343\201\221\343\201\237\346\204\237\346\203\263.md" "b/src/content/2019-09-27-github\343\201\25330\346\227\245\351\226\223\350\215\211\343\202\222\347\224\237\343\202\204\343\201\227\347\266\232\343\201\221\343\201\237\346\204\237\346\203\263.md" index 1a0ac8b75e..b463c8faa0 100644 --- "a/src/content/2019-09-27-github\343\201\25330\346\227\245\351\226\223\350\215\211\343\202\222\347\224\237\343\202\204\343\201\227\347\266\232\343\201\221\343\201\237\346\204\237\346\203\263.md" +++ "b/src/content/2019-09-27-github\343\201\25330\346\227\245\351\226\223\350\215\211\343\202\222\347\224\237\343\202\204\343\201\227\347\266\232\343\201\221\343\201\237\346\204\237\346\203\263.md" @@ -28,7 +28,6 @@ GitHubへのコントリビュートをすることをいわゆる**草**とい [Write Code Every Day](https://johnresig.com/blog/write-code-every-day/)というお話があります。 - 要は毎日**意味のある**コードを書きましょうということで、自身のスキルをあげるためにとりくんでみました。 というのも、本業でも少しはコードを書くのですが、一般的なエンジニアに比べると書く量も時間も少ないのが悩みで、明らかにエンジニアとしての力が不足していると最近感じたからです。 @@ -46,7 +45,7 @@ GitHubへのコントリビュートをすることをいわゆる**草**とい > All code must be written before midnight. **(夜の0時になる前に草はやせ!)** > -> The code must be Open Source and up on Github. **(GitHubにOSSとしてコードを展開しろ!)** +> The code must be Open Source and up on GitHub. **(GitHubにOSSとしてコードを展開しろ!)** > > [Write Code Every Day](https://johnresig.com/blog/write-code-every-day/) @@ -93,4 +92,3 @@ GitHubへのコントリビュートをすることをいわゆる**草**とい 次は60日連続で草を生やすことを目標にします。 微妙なことをいかに改善するかが成功の秘訣だと思っているので頑張ります。 - diff --git "a/src/content/2019-10-11-ansible-serverspec\343\202\222\344\275\277\343\201\243\343\201\246mac\343\201\256\347\222\260\345\242\203\346\247\213\347\257\211\343\202\222\350\207\252\345\213\225\343\201\247\343\201\231\343\202\213-azure-devops-build-pipeline\347\267\250.md" "b/src/content/2019-10-11-ansible-serverspec\343\202\222\344\275\277\343\201\243\343\201\246mac\343\201\256\347\222\260\345\242\203\346\247\213\347\257\211\343\202\222\350\207\252\345\213\225\343\201\247\343\201\231\343\202\213-azure-devops-build-pipeline\347\267\250.md" index 9ec94e17f8..ee59dbbe93 100644 --- "a/src/content/2019-10-11-ansible-serverspec\343\202\222\344\275\277\343\201\243\343\201\246mac\343\201\256\347\222\260\345\242\203\346\247\213\347\257\211\343\202\222\350\207\252\345\213\225\343\201\247\343\201\231\343\202\213-azure-devops-build-pipeline\347\267\250.md" +++ "b/src/content/2019-10-11-ansible-serverspec\343\202\222\344\275\277\343\201\243\343\201\246mac\343\201\256\347\222\260\345\242\203\346\247\213\347\257\211\343\202\222\350\207\252\345\213\225\343\201\247\343\201\231\343\202\213-azure-devops-build-pipeline\347\267\250.md" @@ -34,11 +34,11 @@ CIで回そう! ``` -## MacOS X が使えるCIってあるの? +## macOS X が使えるCIってあるの? 結論から先にかけばあります。 -私の大好きなCIのCircleCIだってMacOS XのOSイメージは用意されています。 +私の大好きなCIのCircleCIだってmacOS XのOSイメージは用意されています。 ですが、CircleCIの場合で[$39/Month](https://circleci.jp/pricing/#build-os-x)とお金がかかってしまいます…。(2019/10現在) diff --git "a/src/content/2019-10-15-google-apps-script-gas-\343\201\250api-flash\343\201\250slackapi\343\202\222clasp\343\201\250jest\343\201\250azure-devops-build-pipeline\343\201\247\350\252\277\347\220\206\343\201\227\343\201\246\345\256\232\346\234\237\347\232\204\343\201\253web\343\203\232\343\203\274\343\202\270\343\201\256\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210\343\202\222\346\222\256\343\202\213.md" "b/src/content/2019-10-15-google-apps-script-gas-\343\201\250api-flash\343\201\250slackapi\343\202\222clasp\343\201\250jest\343\201\250azure-devops-build-pipeline\343\201\247\350\252\277\347\220\206\343\201\227\343\201\246\345\256\232\346\234\237\347\232\204\343\201\253web\343\203\232\343\203\274\343\202\270\343\201\256\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210\343\202\222\346\222\256\343\202\213.md" index 11796c710e..a54d15cbb8 100644 --- "a/src/content/2019-10-15-google-apps-script-gas-\343\201\250api-flash\343\201\250slackapi\343\202\222clasp\343\201\250jest\343\201\250azure-devops-build-pipeline\343\201\247\350\252\277\347\220\206\343\201\227\343\201\246\345\256\232\346\234\237\347\232\204\343\201\253web\343\203\232\343\203\274\343\202\270\343\201\256\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210\343\202\222\346\222\256\343\202\213.md" +++ "b/src/content/2019-10-15-google-apps-script-gas-\343\201\250api-flash\343\201\250slackapi\343\202\222clasp\343\201\250jest\343\201\250azure-devops-build-pipeline\343\201\247\350\252\277\347\220\206\343\201\227\343\201\246\345\256\232\346\234\237\347\232\204\343\201\253web\343\203\232\343\203\274\343\202\270\343\201\256\343\202\271\343\202\257\343\203\252\343\203\274\343\203\263\343\202\267\343\203\247\343\203\203\343\203\210\343\202\222\346\222\256\343\202\213.md" @@ -19,7 +19,7 @@ tags: headerImage: 'https://i.imgur.com/QCjxEBN.png' templateKey: blog-post --- -タイトル長い +タイトル長い。 くっそ長いタイトルで恐縮ですが、Google Apps Script(GAS)とAPI FLASHとSlackAPIをClaspとJestとGitHub Actionで調理して定期的にWebページのスクリーンショットを撮っていきたいと思います。 @@ -47,10 +47,10 @@ ExcelやPowerPointだとVBAがマクロ言語ですが、Google Apps ScriptはJa またGoogle Apps Scriptのことを省略してGASとか言ったりするそうです。 -ガスガス +ガスガス✨ GAS専用のマクロ用関数がある程度用意されてるのでマクロを組むのも簡単ですし、時間で関数をキックするトリガー機能もあるので、簡単なFaaS(Function as a Service)として -利用することもできます。 +利用できます。 今回は後者の使い方が中心となります。 @@ -91,7 +91,7 @@ Chromeベースのキャプチャリングなので、レンダリングも正 さらに、うれしい機能として遅延キャプチャリング機能があり、ページのレンダリングを待ってからキャプチャを撮ることも可能です。 -``` +```text https://api.apiflash.com/v1/urltoimage?access_key=hoge&url=hoge&delay=10 ``` @@ -140,7 +140,6 @@ URLFetchAppはもちろんGAS専用のAPIですが、TypeSciptのLintがちゃ コードは省略しますが上と同じ要領でURLFetchを使って、Slackコール部も作ります。 - ## テスト テストはJestで作ります。 @@ -149,7 +148,7 @@ URLFetchAppはもちろんGAS専用のAPIですが、TypeSciptのLintがちゃ Jestのグローバル変数定義であらかじめURLFetchを作り、JestのMock関数をテストケースごとにfetch関数と置き換えることで実現できます。 -package.jsonに +package.jsonに、 ```json "jest": { @@ -160,7 +159,7 @@ package.jsonに }, ``` -とすることでグローバルにUrlFetchAppができますので、テストコードで +とすることでグローバルにUrlFetchAppができますので、テストコードで、 ```typescript const mockFetch = jest.fn(); @@ -188,7 +187,7 @@ mock関数をあらかじめ作成しておくと、コールのassertも可能 StarterではWebpackを使ってTypeSciptのGAS化を実行しているようです。 -``` +```shell{promptUser: tubone}{promptHost: dev.localhost} npm run build ``` @@ -196,7 +195,7 @@ npm run build デプロイは、claspを利用します。 -``` +```shell{promptUser: tubone}{promptHost: dev.localhost} clasp login clasp push ``` @@ -215,11 +214,11 @@ clasp loginをローカル上で実施したときに取得できるトークン GitHub ActionのSecretにはこのようにアクセスします。 -``` +```shell{promptUser: tubone}{promptHost: dev.localhost} echo "${{ secrets.CLASPRC_JSON }}" > ~/.clasprc.json ``` -## 完成! +## 完成 GASにデプロイできたらcronでトリガーさせてあげれば定期的にキャプチャをとります。 diff --git "a/src/content/2019-10-23-\347\251\266\346\245\265\343\201\256\350\254\235\347\275\252\343\201\257slack\343\201\256\343\202\271\343\202\277\343\203\263\343\203\227\343\202\222\346\264\273\347\224\250\343\201\227\343\202\210\343\201\206\357\274\201-\357\275\236\346\230\216\346\227\245\343\201\213\343\202\211\344\275\277\343\201\210\343\202\213slack\343\202\271\343\202\277\343\203\263\343\203\227\343\202\271\343\203\213\343\203\232\343\203\203\343\203\210\351\233\206\357\275\236.md" "b/src/content/2019-10-23-\347\251\266\346\245\265\343\201\256\350\254\235\347\275\252\343\201\257slack\343\201\256\343\202\271\343\202\277\343\203\263\343\203\227\343\202\222\346\264\273\347\224\250\343\201\227\343\202\210\343\201\206\357\274\201-\357\275\236\346\230\216\346\227\245\343\201\213\343\202\211\344\275\277\343\201\210\343\202\213slack\343\202\271\343\202\277\343\203\263\343\203\227\343\202\271\343\203\213\343\203\232\343\203\203\343\203\210\351\233\206\357\275\236.md" index a8a8ec32ff..93866cfa6c 100644 --- "a/src/content/2019-10-23-\347\251\266\346\245\265\343\201\256\350\254\235\347\275\252\343\201\257slack\343\201\256\343\202\271\343\202\277\343\203\263\343\203\227\343\202\222\346\264\273\347\224\250\343\201\227\343\202\210\343\201\206\357\274\201-\357\275\236\346\230\216\346\227\245\343\201\213\343\202\211\344\275\277\343\201\210\343\202\213slack\343\202\271\343\202\277\343\203\263\343\203\227\343\202\271\343\203\213\343\203\232\343\203\203\343\203\210\351\233\206\357\275\236.md" +++ "b/src/content/2019-10-23-\347\251\266\346\245\265\343\201\256\350\254\235\347\275\252\343\201\257slack\343\201\256\343\202\271\343\202\277\343\203\263\343\203\227\343\202\222\346\264\273\347\224\250\343\201\227\343\202\210\343\201\206\357\274\201-\357\275\236\346\230\216\346\227\245\343\201\213\343\202\211\344\275\277\343\201\210\343\202\213slack\343\202\271\343\202\277\343\203\263\343\203\227\343\202\271\343\203\213\343\203\232\343\203\203\343\203\210\351\233\206\357\275\236.md" @@ -28,11 +28,11 @@ Slackにはスタンプ機能があり、回りくどい文章を書かずに感 最上位の謝罪ができる。 見た目は汗をかきながら必死にする組体操なので、教育現場への疑問提起もできる。 -ダイバーシティーを意識して人種のバリエーションを持たせるのがコツ +ダイバーシティーを意識して人種のバリエーションを持たせるのがコツ。 ![preview](https://raw.githubusercontent.com/tubone24/markdown-memo/master/src/loose/man-bowing-pyramid.png) -``` +```text :man-bowing: < ごめん! :man-bowing::skin-tone-3: :man-bowing::man-bowing::skin-tone-6: @@ -49,7 +49,7 @@ Slackにはスタンプ機能があり、回りくどい文章を書かずに感 ![img](https://raw.githubusercontent.com/tubone24/markdown-memo/master/src/loose/invador.png) -``` +```text :space_invader: :space_invader: :space_invader: :space_invader: :space_invader: :space_invader: :boom: :space_invader: @@ -70,7 +70,7 @@ Slackのスタンプになぜ顔のパーツがあるか、考えた結果思い ![img](https://raw.githubusercontent.com/tubone24/markdown-memo/master/src/loose/hukuwarai.png) -``` +```text :eye: :eye: :nose::skin-tone-4: :lips: @@ -88,6 +88,6 @@ Slackのスタンプになぜ顔のパーツがあるか、考えた結果思い これからも思いつき次第下記noteに記載していきます!! -https://note.tubone-project24.xyz/loose/slack-stamp-snipet.html#%E8%AC%9D%E7%BD%AA%E3%83%94%E3%83%A9%E3%83%9F%E3%83%83%E3%83%89 + みんなもSlackスタンプ生活、始めよう! diff --git "a/src/content/2019-11-15-\346\230\224\343\201\252\343\201\214\343\202\211\343\201\256\343\203\251\343\203\274\343\203\241\343\203\263\343\201\237\343\201\271\343\201\237\343\201\204.md" "b/src/content/2019-11-15-\346\230\224\343\201\252\343\201\214\343\202\211\343\201\256\343\203\251\343\203\274\343\203\241\343\203\263\343\201\237\343\201\271\343\201\237\343\201\204.md" index 5157dfd7ff..f52f3da21b 100644 --- "a/src/content/2019-11-15-\346\230\224\343\201\252\343\201\214\343\202\211\343\201\256\343\203\251\343\203\274\343\203\241\343\203\263\343\201\237\343\201\271\343\201\237\343\201\204.md" +++ "b/src/content/2019-11-15-\346\230\224\343\201\252\343\201\214\343\202\211\343\201\256\343\203\251\343\203\274\343\203\241\343\203\263\343\201\237\343\201\271\343\201\237\343\201\204.md" @@ -10,7 +10,7 @@ tags: headerImage: 'https://i.imgur.com/N0Vkj2U.jpg' templateKey: blog-post --- -昔ながらのラーメン +昔ながらのラーメン...。 食べたいですよね。 @@ -22,8 +22,8 @@ templateKey: blog-post [南雲](https://tabelog.com/tokyo/A1308/A130802/13024487/) -共同通信会館というビルの地下。いい雰囲気 +共同通信会館というビルの地下。いい雰囲気。 -是非、皆さんも行ってみては? +ぜひ、皆さんも行ってみては? diff --git "a/src/content/2019-11-15-\347\217\240\347\216\211\343\201\256\344\270\200\346\235\257\343\200\202\343\201\237\343\201\217\343\201\225\343\202\223\346\256\213\346\245\255\343\201\227\343\201\237\346\227\245\343\201\257\343\201\223\343\201\256\343\203\251\343\203\274\343\203\241\343\203\263\343\202\222\351\243\237\343\201\271\343\202\215\357\274\201.md" "b/src/content/2019-11-15-\347\217\240\347\216\211\343\201\256\344\270\200\346\235\257\343\200\202\343\201\237\343\201\217\343\201\225\343\202\223\346\256\213\346\245\255\343\201\227\343\201\237\346\227\245\343\201\257\343\201\223\343\201\256\343\203\251\343\203\274\343\203\241\343\203\263\343\202\222\351\243\237\343\201\271\343\202\215\357\274\201.md" index f0b3da5d56..695d1449c4 100644 --- "a/src/content/2019-11-15-\347\217\240\347\216\211\343\201\256\344\270\200\346\235\257\343\200\202\343\201\237\343\201\217\343\201\225\343\202\223\346\256\213\346\245\255\343\201\227\343\201\237\346\227\245\343\201\257\343\201\223\343\201\256\343\203\251\343\203\274\343\203\241\343\203\263\343\202\222\351\243\237\343\201\271\343\202\215\357\274\201.md" +++ "b/src/content/2019-11-15-\347\217\240\347\216\211\343\201\256\344\270\200\346\235\257\343\200\202\343\201\237\343\201\217\343\201\225\343\202\223\346\256\213\346\245\255\343\201\227\343\201\237\346\227\245\343\201\257\343\201\223\343\201\256\343\203\251\343\203\274\343\203\241\343\203\263\343\202\222\351\243\237\343\201\271\343\202\215\357\274\201.md" @@ -9,11 +9,11 @@ tags: headerImage: 'https://i.imgur.com/WtqaANF.jpg' templateKey: blog-post --- -うまい!もう一杯 +うまい!もう一杯! ラーメン食べました。 -今日の一杯は +今日の一杯は、 [纏](https://tabelog.com/tokyo/A1301/A130103/13156937/) @@ -27,7 +27,4 @@ templateKey: blog-post - 美味しいお味でした。(仕事しろ) - - diff --git "a/src/content/2019-11-19-docopt\343\201\257nim\343\201\247\343\202\202\344\275\277\343\201\210\343\201\237\343\201\256\343\201\212\350\251\261.md" "b/src/content/2019-11-19-docopt\343\201\257nim\343\201\247\343\202\202\344\275\277\343\201\210\343\201\237\343\201\256\343\201\212\350\251\261.md" index 09b764f671..7f68a9c423 100644 --- "a/src/content/2019-11-19-docopt\343\201\257nim\343\201\247\343\202\202\344\275\277\343\201\210\343\201\237\343\201\256\343\201\212\350\251\261.md" +++ "b/src/content/2019-11-19-docopt\343\201\257nim\343\201\247\343\202\202\344\275\277\343\201\210\343\201\237\343\201\256\343\201\212\350\251\261.md" @@ -11,7 +11,7 @@ tags: headerImage: 'https://i.imgur.com/FeDnyEc.jpg' templateKey: blog-post --- -めっちゃ便利じゃんアゼルバイジャン +めっちゃ便利じゃんアゼルバイジャン。 Pythonで結構有名なdocoptがNimという言語でも使えたので喜びのあまり記事を書く運びになりました。 @@ -25,7 +25,7 @@ Pythonで結構有名なdocoptがNimという言語でも使えたので喜び ![img](https://i.imgur.com/kYsjLcW.png) -Nimとは、公式Doc https://nim-lang.org/ によると、静的型付なコンパイラ言語でPython, Ada, modulaなどの成熟した言語のいいとこ取りをした**能率的**で、**表現力豊か**で、**エレガント**な言語とのこと。 +Nimとは、公式Doc によると、静的型付なコンパイラ言語でPython, Ada, modulaなどの成熟した言語のいいとこ取りをした**能率的**で、**表現力豊か**で、**エレガント**な言語とのこと。 **大手化粧品メーカー**ばりにうたい文句が多いですが、私なりに触っての特徴をお伝えしますと… @@ -41,11 +41,11 @@ Goとの優位差を見せつけるには、**Nimのコンパイラ**の優秀 (構文が楽とかPythonライクで書きやすいとかそういった優位差を示す記事もありますが、個人的にはGoもNimもそんなに難しさは変わらないと思います。~~Rustは難しいけど書いてて楽しいです。~~) -自分で検証してないので完全に他人の受け売りですが、[こちらの記事](http://h-miyako.hatenablog.com/entry/2015/01/23/060000)を確認すると、最適化オプションをがちゃがちゃしたC(いわゆる -O3オプション)には負けましたが、それでも他の言語と比較すると**圧倒的に早い**。 - -(ちょっと古めの記事なので最新はわからん。) +自分で検証してないので完全に他人の受け売りですが、[こちらの記事](http://h-miyako.hatenablog.com/entry/2015/01/23/060000)を確認すると、 +最適化オプションをがちゃがちゃしたC(いわゆる -O3オプション)には負けましたが、それでも他の言語と比較すると**圧倒的に早い**。 +(ちょっと古めの記事なので最新はわからん。) | **Language** | sec(exec) | sec(compile) | | ------------------ | --------- | ------------ | @@ -59,8 +59,6 @@ Goとの優位差を見せつけるには、**Nimのコンパイラ**の優秀 (引用: \[この頃流行りの言語たち(他)でベンチマーク(Dart, Go, Julia, Nim, Python, Rust他)](http://h-miyako.hatenablog.com/entry/2015/01/23/060000)) - - 詳しいことはわからないのですが、-o3オプションって、いいイメージないんですよね…。昔、-o3オプションで爆速な実行ファイルを作成しようとしたら、コンパイルは問題なく完了するのにいざ実行しようとするとコアダンプ吐いて落ちまくったんですよね。。 そんな危険なオプションに匹敵するスピードがあるのはすごい。 @@ -212,7 +210,7 @@ when isMainModule: * サブコマンドは**status**, **convert** のように直接指定します。 * 位置引数は と<>カッコで囲みます。位置引数は特性上必須パラメーターと任意パラメーター(後述しますが\[]で囲む)を併用する場合は必須パラメーターを先に書かなければなりません。 -* オプションは --hogeとします。また、\[]で囲むことで任意なパラメーターになります。また、ショートオプション(-h)とロングオプション両方使いたい場合は**\|**(パイプ)を使います。 +* オプションは --hogeとします。また、\[]で囲むことで任意なパラメーターになります。加えて、ショートオプション(-h)とロングオプション両方使いたい場合は**\|**(パイプ)を使います。 * \-h, --helpもしくは間違ったパラメータ指定の場合はconst docの内容を出力します。(help表示) 引数の取り出しかたは、 diff --git "a/src/content/2019-11-21-\343\202\271\343\203\274\343\203\227\343\201\256\350\241\235\346\222\203\357\274\201\343\201\223\343\201\223\343\201\276\343\201\247\343\201\206\343\201\276\343\201\204\343\202\271\343\203\274\343\203\227\343\201\257\343\201\202\343\202\213\343\201\256\343\201\213\357\274\201\357\274\237\343\201\252\343\203\251\343\203\274\343\203\241\343\203\263.md" "b/src/content/2019-11-21-\343\202\271\343\203\274\343\203\227\343\201\256\350\241\235\346\222\203\357\274\201\343\201\223\343\201\223\343\201\276\343\201\247\343\201\206\343\201\276\343\201\204\343\202\271\343\203\274\343\203\227\343\201\257\343\201\202\343\202\213\343\201\256\343\201\213\357\274\201\357\274\237\343\201\252\343\203\251\343\203\274\343\203\241\343\203\263.md" index e3e78e978b..ee32302688 100644 --- "a/src/content/2019-11-21-\343\202\271\343\203\274\343\203\227\343\201\256\350\241\235\346\222\203\357\274\201\343\201\223\343\201\223\343\201\276\343\201\247\343\201\206\343\201\276\343\201\204\343\202\271\343\203\274\343\203\227\343\201\257\343\201\202\343\202\213\343\201\256\343\201\213\357\274\201\357\274\237\343\201\252\343\203\251\343\203\274\343\203\241\343\203\263.md" +++ "b/src/content/2019-11-21-\343\202\271\343\203\274\343\203\227\343\201\256\350\241\235\346\222\203\357\274\201\343\201\223\343\201\223\343\201\276\343\201\247\343\201\206\343\201\276\343\201\204\343\202\271\343\203\274\343\203\227\343\201\257\343\201\202\343\202\213\343\201\256\343\201\213\357\274\201\357\274\237\343\201\252\343\203\251\343\203\274\343\203\241\343\203\263.md" @@ -19,7 +19,6 @@ templateKey: blog-post - ## くろおびラーメン塩 ![img](https://i.imgur.com/TsiKWJM.jpg) @@ -28,13 +27,12 @@ templateKey: blog-post スープを啜ったときに優しく甘みのある豊かな出汁な感じが伝わってきて思わず頷く。 -これが昆布か~ +これが昆布か~。 チャーシュー、たまごのクオリティーも高い! 完飲してしまいました。 - ## くろおびラーメン醤油 ![img](https://i.imgur.com/7agAEdF.jpg) @@ -60,7 +58,3 @@ templateKey: blog-post くろおびは1000円超えるなぁ・・と思ったらこちら。 くおおびじゃなくてもらーめんスープは変わらないのでこっちもおいしかった!! - - - - diff --git "a/src/content/2019-11-25-github\343\201\253\350\215\211\343\202\222\347\224\237\343\202\204\343\201\227\347\266\232\343\201\22190\346\227\245\343\201\214\347\265\214\343\201\243\343\201\237\343\201\256\343\201\247\346\204\237\346\203\263\343\202\222\346\233\270\343\201\217.md" "b/src/content/2019-11-25-github\343\201\253\350\215\211\343\202\222\347\224\237\343\202\204\343\201\227\347\266\232\343\201\22190\346\227\245\343\201\214\347\265\214\343\201\243\343\201\237\343\201\256\343\201\247\346\204\237\346\203\263\343\202\222\346\233\270\343\201\217.md" index e8c8b65ebc..5f2aba9b5a 100644 --- "a/src/content/2019-11-25-github\343\201\253\350\215\211\343\202\222\347\224\237\343\202\204\343\201\227\347\266\232\343\201\22190\346\227\245\343\201\214\347\265\214\343\201\243\343\201\237\343\201\256\343\201\247\346\204\237\346\203\263\343\202\222\346\233\270\343\201\217.md" +++ "b/src/content/2019-11-25-github\343\201\253\350\215\211\343\202\222\347\224\237\343\202\204\343\201\227\347\266\232\343\201\22190\346\227\245\343\201\214\347\265\214\343\201\243\343\201\237\343\201\256\343\201\247\346\204\237\346\203\263\343\202\222\346\233\270\343\201\217.md" @@ -10,7 +10,7 @@ tags: headerImage: 'https://i.imgur.com/am1DJ7O.png' templateKey: blog-post --- -ついに90日突破 +ついに90日突破! GitHubへのコントリビュートをすることをいわゆる草といいますが90日生やし続けてたので振り返りがてら感想を書きます。 @@ -85,7 +85,7 @@ GitHubへのコントリビュートをすることをいわゆる草といい まだまだ世間的には実装のスピードは遅いほうですが、成長を感じられる瞬間だったと思います。 -### 特にCIの実装がめちゃんこあがった。 +### 特にCIの実装がめちゃんこあがった これは、まぁ書けば書くだけわかってくるので当たり前といえば当たり前ですが、CIに乗っけるところまでプライベートでやることは大きな価値があるんだなぁと思いました。 @@ -103,6 +103,6 @@ GitHubへのコントリビュートをすることをいわゆる草といい プロは練習、**質も量もすごい**と。 -https://youtu.be/guDWmY7wJOg + とりあえず、4ヶ月目も頑張ります… diff --git "a/src/content/2019-11-26-go\343\201\247aws-lambda\343\202\222\345\213\225\343\201\213\343\201\227\343\201\246\343\200\201githubapiv4-graphql-\343\202\222\345\217\251\343\201\204\343\201\246\343\201\277\343\201\237\346\204\237\346\203\263.md" "b/src/content/2019-11-26-go\343\201\247aws-lambda\343\202\222\345\213\225\343\201\213\343\201\227\343\201\246\343\200\201githubapiv4-graphql-\343\202\222\345\217\251\343\201\204\343\201\246\343\201\277\343\201\237\346\204\237\346\203\263.md" index 3f4be0d0e8..2fb62ddf93 100644 --- "a/src/content/2019-11-26-go\343\201\247aws-lambda\343\202\222\345\213\225\343\201\213\343\201\227\343\201\246\343\200\201githubapiv4-graphql-\343\202\222\345\217\251\343\201\204\343\201\246\343\201\277\343\201\237\346\204\237\346\203\263.md" +++ "b/src/content/2019-11-26-go\343\201\247aws-lambda\343\202\222\345\213\225\343\201\213\343\201\227\343\201\246\343\200\201githubapiv4-graphql-\343\202\222\345\217\251\343\201\204\343\201\246\343\201\277\343\201\237\346\204\237\346\203\263.md" @@ -61,77 +61,77 @@ Lambda自体は、裏側の基盤に[AWS Firecracker](https://aws.amazon.com/jp/ package main import ( - "context" - "fmt" - "github.com/shurcooL/githubv4" - "golang.org/x/oauth2" - "github.com/deckarep/golang-set" - "github.com/aws/aws-lambda-go/lambda" + "context" + "fmt" + "github.com/shurcooL/githubv4" + "golang.org/x/oauth2" + "github.com/deckarep/golang-set" + "github.com/aws/aws-lambda-go/lambda" ) type Language struct { - Name string - Color string + Name string + Color string } type Repository struct { - Name string - Languages struct { - Nodes []struct { - Language `graphql:"... on Language"` - } - } `graphql:"languages(first: 100)"` + Name string + Languages struct { + Nodes []struct { + Language `graphql:"... on Language"` + } + } `graphql:"languages(first: 100)"` } var query struct { - Search struct { - Nodes []struct { - Repository `graphql:"... on Repository"` - } - } `graphql:"search(first: 100, query: $q, type: $searchType)"` + Search struct { + Nodes []struct { + Repository `graphql:"... on Repository"` + } + } `graphql:"search(first: 100, query: $q, type: $searchType)"` } func getLangList () (mapset.Set){ - src := oauth2.StaticTokenSource( - &oauth2.Token{AccessToken: "7xxxxxxxxxxxxxxxxxxxxxxxx"}, - ) - httpClient := oauth2.NewClient(context.Background(), src) - - client := githubv4.NewClient(httpClient) - - langlist := mapset.NewSet() - - variables := map[string]interface{}{ - "q": githubv4.String("user:tubone24"), //検索するuser名 - "searchType": githubv4.SearchTypeRepository, - } - - err := client.Query(context.Background(), &query, variables) - if err != nil { - // Handle error. - fmt.Println(err) - } - - for _, repo := range query.Search.Nodes { - fmt.Println("---------") - fmt.Println(repo.Name) - for _, lang := range repo.Languages.Nodes { - fmt.Println(lang.Name) - langlist.Add(lang.Name) - } - } - return langlist + src := oauth2.StaticTokenSource( + &oauth2.Token{AccessToken: "7xxxxxxxxxxxxxxxxxxxxxxxx"}, + ) + httpClient := oauth2.NewClient(context.Background(), src) + + client := githubv4.NewClient(httpClient) + + langlist := mapset.NewSet() + + variables := map[string]interface{}{ + "q": githubv4.String("user:tubone24"), //検索するuser名 + "searchType": githubv4.SearchTypeRepository, + } + + err := client.Query(context.Background(), &query, variables) + if err != nil { + // Handle error. + fmt.Println(err) + } + + for _, repo := range query.Search.Nodes { + fmt.Println("---------") + fmt.Println(repo.Name) + for _, lang := range repo.Languages.Nodes { + fmt.Println(lang.Name) + langlist.Add(lang.Name) + } + } + return langlist } func LambdaHandler () (string, error){ - result := getLangList() - return fmt.Sprint(result), nil + result := getLangList() + return fmt.Sprint(result), nil } func main() { - lambda.Start(LambdaHandler) + lambda.Start(LambdaHandler) } ``` @@ -184,65 +184,65 @@ shurcooL/githubv4自体の使い方はそこまで難しくなく、HttpClient //main.go import ( - "context" - "fmt" + "context" + "fmt" "golang.org/x/oauth2" - "github.com/shurcooL/githubv4" + "github.com/shurcooL/githubv4" ) // 構造体でGraphQL定義 type Language struct { - Name string - Color string + Name string + Color string } type Repository struct { - Name string - Languages struct { - Nodes []struct { - Language `graphql:"... on Language"` - } - } `graphql:"languages(first: 100)"` + Name string + Languages struct { + Nodes []struct { + Language `graphql:"... on Language"` + } + } `graphql:"languages(first: 100)"` } var query struct { - Search struct { - Nodes []struct { - Repository `graphql:"... on Repository"` - } - } `graphql:"search(first: 100, query: $q, type: $searchType)"` + Search struct { + Nodes []struct { + Repository `graphql:"... on Repository"` + } + } `graphql:"search(first: 100, query: $q, type: $searchType)"` } func hoge () { - src := oauth2.StaticTokenSource( - &oauth2.Token{AccessToken: "7xxxxxxxxxxxxxxxxxxxxxxxx"}, - ) //AccessTokenを設定 - - httpClient := oauth2.NewClient(context.Background(), src) //AccessTokenをhttpClientに設定 - - client := githubv4.NewClient(httpClient) //先ほど作ったhttpClient使ってclientを作成 - - variables := map[string]interface{}{ - "q": githubv4.String("user:tubone24"), //検索するuser名 - "searchType": githubv4.SearchTypeRepository, - } - - err := client.Query(context.Background(), &query, variables) //client.Queryで実行。エラーのみが戻りで実行結果は咲くほど定義した構造体に格納 - if err != nil { - // Handle error. - fmt.Println(err) - } - - for _, repo := range query.Search.Nodes { - fmt.Println("---------") - fmt.Println(repo.Name) - for _, lang := range repo.Languages.Nodes { - fmt.Println(lang.Name) + src := oauth2.StaticTokenSource( + &oauth2.Token{AccessToken: "7xxxxxxxxxxxxxxxxxxxxxxxx"}, + ) //AccessTokenを設定 + + httpClient := oauth2.NewClient(context.Background(), src) //AccessTokenをhttpClientに設定 + + client := githubv4.NewClient(httpClient) //先ほど作ったhttpClient使ってclientを作成 + + variables := map[string]interface{}{ + "q": githubv4.String("user:tubone24"), //検索するuser名 + "searchType": githubv4.SearchTypeRepository, + } + + err := client.Query(context.Background(), &query, variables) //client.Queryで実行。エラーのみが戻りで実行結果は咲くほど定義した構造体に格納 + if err != nil { + // Handle error. + fmt.Println(err) + } + + for _, repo := range query.Search.Nodes { + fmt.Println("---------") + fmt.Println(repo.Name) + for _, lang := range repo.Languages.Nodes { + fmt.Println(lang.Name) fmt.Println(lang.Color) - } - } + } + } } @@ -275,31 +275,31 @@ func hoge () { } ``` -のようにedgesに項目がありnodeを取りたい場合 +のようにedgesに項目がありnodeを取りたい場合、 ```go{numberLines: 1}{9-13} type Language struct { - Name string - Color string + Name string + Color string } type Repository struct { - Name string - Languages struct { + Name string + Languages struct { Edges []struct { - Node struct { - Language `graphql:"... on Language"` - } + Node struct { + Language `graphql:"... on Language"` + } } - } `graphql:"languages(first: 100)"` + } `graphql:"languages(first: 100)"` } var query struct { - Search struct { - Nodes []struct { - Repository `graphql:"... on Repository"` - } - } `graphql:"search(first: 100, query: $q, type: $searchType)"` + Search struct { + Nodes []struct { + Repository `graphql:"... on Repository"` + } + } `graphql:"search(first: 100, query: $q, type: $searchType)"` } ``` @@ -313,7 +313,6 @@ var query struct { 今回は趣旨から反するのでいったん塩漬け。。 - ## LambdaでGoを使うとき main関数にはAWSが用意している `github.com/aws/aws-lambda-go/lambda` からロジックを @@ -323,12 +322,12 @@ Invokeさせないと問答無用でLambdaでエラーになってしまいま ```go{numberLines: 1}{7} func LambdaHandler () (string, error){ - result := hoge() //login - return fmt.Sprint(result), nil + result := hoge() //login + return fmt.Sprint(result), nil } func main() { - lambda.Start(LambdaHandler) + lambda.Start(LambdaHandler) } ``` @@ -341,8 +340,8 @@ Lambda画面のCloud9から編集できないんですね・・・ 実行ファイル、ということはビルドするプラットフォーム(OSとか)に依存してしまうのでは?と思ったのですが、 ベストプラクティスとして `GOOS=linux` をgo build時につけることでLinux互換な実行ファイルになるみたいです。 -``` -$ GOOS=linux go build main.go +```shell{promptUser: tubone}{promptHost: dev.localhost} +GOOS=linux go build main.go ``` あとは実行ファイルをZIPで固めて、Lambda作ってアップロードして保存すれば終わりです。 @@ -373,24 +372,24 @@ PythonではSetという便利なものがあるのですが、Goではあるの ```go{numberLines: 1}{3,9,16} import ( - "fmt" - "github.com/deckarep/golang-set" + "fmt" + "github.com/deckarep/golang-set" ) // 中略・・ func main () { - langlist := mapset.NewSet() // setを作る + langlist := mapset.NewSet() // setを作る // 中略 - for _, repo := range query.Search.Nodes { - fmt.Println("---------") - fmt.Println(repo.Name) - for _, lang := range repo.Languages.Nodes { - fmt.Println(lang.Name) - langlist.Add(lang.Name) //setにAddする - } - } - return langlist // set{hoge, fuga} 重複がないsetが返る + for _, repo := range query.Search.Nodes { + fmt.Println("---------") + fmt.Println(repo.Name) + for _, lang := range repo.Languages.Nodes { + fmt.Println(lang.Name) + langlist.Add(lang.Name) //setにAddする + } + } + return langlist // set{hoge, fuga} 重複がないsetが返る } ``` @@ -400,7 +399,7 @@ func main () { ## 使ってみての感想 -GoでLambdaを組んでみての感想は +GoでLambdaを組んでみての感想は、 - Cloud9で直接Lambda編集したいなぁ… - lambda.startにラッピングする必要があるのでローカルで確認しにくいなぁ diff --git "a/src/content/2019-11-28-hadoop\343\202\276\343\202\246\343\201\225\343\202\223\343\201\253\343\201\244\343\201\204\343\201\246\346\234\254\346\260\227\345\207\272\343\201\227\343\201\246\350\200\203\343\201\210\343\201\246\343\201\277\343\201\237.md" "b/src/content/2019-11-28-hadoop\343\202\276\343\202\246\343\201\225\343\202\223\343\201\253\343\201\244\343\201\204\343\201\246\346\234\254\346\260\227\345\207\272\343\201\227\343\201\246\350\200\203\343\201\210\343\201\246\343\201\277\343\201\237.md" index 75d4b59b17..d25a69e29d 100644 --- "a/src/content/2019-11-28-hadoop\343\202\276\343\202\246\343\201\225\343\202\223\343\201\253\343\201\244\343\201\204\343\201\246\346\234\254\346\260\227\345\207\272\343\201\227\343\201\246\350\200\203\343\201\210\343\201\246\343\201\277\343\201\237.md" +++ "b/src/content/2019-11-28-hadoop\343\202\276\343\202\246\343\201\225\343\202\223\343\201\253\343\201\244\343\201\204\343\201\246\346\234\254\346\260\227\345\207\272\343\201\227\343\201\246\350\200\203\343\201\210\343\201\246\343\201\277\343\201\237.md" @@ -14,7 +14,7 @@ templateKey: blog-post みなさん、Hadoopライフをお過ごしですか? -本業のなかでHadoop ecosystemでびっくりするような仕様を見つけて**アバアバ**してしまった帰り道にふと +本業のなかでHadoop ecosystemでびっくりするような仕様を見つけて**アバアバ**してしまった帰り道にふと、 ![img](https://i.imgur.com/l7yJoBP.jpg) @@ -30,7 +30,7 @@ templateKey: blog-post ``` -## きいろいゾウ… うっ頭が!! +## きいろいゾウ… うっ頭が この業界にある程度勤めていると目にする耳にすることのある**Hadoop**という単語。 @@ -54,7 +54,7 @@ templateKey: blog-post ちなみにその内容含め、分析に使えるサービスを丁寧にパワポにしたのですが、元締めの人が抜けて研修が崩壊したので研修はお蔵入りになった経緯があり、腹が立ったのでパワポだけ社外秘抜いてアップしてます。 -https://www.slideshare.net/tubone24/aws-158992259 + ### Hadoopの名前の由来 @@ -66,19 +66,18 @@ Hadoopの名前の由来について調べていくと**CNBC**の記事が見つ [Hadoop: Toddler Talk Provides Big Data Name](https://www.cnbc.com/id/100769719) -ひとつひとつ確認していきます。 +1つ1つ確認していきます。 以降の記事は画像も含め[Hadoop: Toddler Talk Provides Big Data Name](https://www.cnbc.com/id/100769719)から引用しています。 - ### Hadoop、それは彼の愛する黄色いゾウのぬいぐるみ 以下原文です。 -> The name, on the other hand, is a homey story going back 10 years—into the realm of a toddler's experimentation with old-fashioned human language. - +> The name, on the other hand, is a homey story going back 10 years—into the realm of a toddler's experimentation with old-fashioned human language. +> > Cutting's son, then 2, was just beginning to talk and called his beloved stuffed yellow elephant "Hadoop" (with the stress on the first syllable). - +> > "Being a guy in the software business, we're always looking for names," Cutting said. "I'd been saving it for the right time." なるほど。Cuttingさんの息子さんが当時2歳だったころに**可愛がっていたゾウのぬいぐるみ**の名前だったんですね。 @@ -96,7 +95,7 @@ Hadoopの名前の由来について調べていくと**CNBC**の記事が見つ さらに記事を読み進めていくと衝撃の事実が判明します。 > As work began and Cutting considered finally using the name he had been guarding, he noticed the toy was being crammed inside a toilet paper roll and shot across the back yard. - +> > That's when Hadoop was retired from his son's collection of playthings. **トイレットペーパーロール**に詰め込まれて・・・・ @@ -109,15 +108,15 @@ Hadoopの名前の由来について調べていくと**CNBC**の記事が見つ さらに原文を読んでいくと、 -> Today, Hadoop the toy lives not on a shelf or in a case but in Cutting's sock drawer—a rather ignominious home for a company's namesake. - +> Today, Hadoop the toy lives not on a shelf or in a case but in Cutting's sock drawer—a rather ignominious home for a company's namesake. +> > Cutting lets it out occasionally, bringing it to conferences or appearances, where fans of the software pose with the cuddly yellow elephant. 今ではソックスケース引き出しに住みながら、たまに出かけて会社を代表する愛されるキャラクターとして活躍されているんですね! よかったー。 -![img](https://fm.cnbc.com/applications/cnbc.com/resources/img/editorial/2013/05/23/100762543-Hadoop-at-Cloudera-ITPT2-Dinner.1910x1000.jpg?v=1418397661) +![img](https://fm.cnbc.com/applications/cnbc.com/resources/img/editorial/2013/05/23/100762543-Hadoop-at-Cloudera-ITPT2-Dinner.1910x1000.jpg?v=1418397661) ## 結論 diff --git "a/src/content/2019-11-30-aws-\350\252\215\345\256\232\343\202\275\343\203\252\343\203\245\343\203\274\343\202\267\343\203\247\343\203\263\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\210\342\200\223\343\203\227\343\203\255\343\203\225\343\202\247\343\203\203\343\202\267\343\203\247\343\203\212\343\203\253\343\201\25316-5\346\231\202\351\226\223\343\201\247\345\217\227\343\201\213\343\202\213\346\226\271\346\263\225.md" "b/src/content/2019-11-30-aws-\350\252\215\345\256\232\343\202\275\343\203\252\343\203\245\343\203\274\343\202\267\343\203\247\343\203\263\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\210\342\200\223\343\203\227\343\203\255\343\203\225\343\202\247\343\203\203\343\202\267\343\203\247\343\203\212\343\203\253\343\201\25316-5\346\231\202\351\226\223\343\201\247\345\217\227\343\201\213\343\202\213\346\226\271\346\263\225.md" index 06010fd17b..9573277782 100644 --- "a/src/content/2019-11-30-aws-\350\252\215\345\256\232\343\202\275\343\203\252\343\203\245\343\203\274\343\202\267\343\203\247\343\203\263\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\210\342\200\223\343\203\227\343\203\255\343\203\225\343\202\247\343\203\203\343\202\267\343\203\247\343\203\212\343\203\253\343\201\25316-5\346\231\202\351\226\223\343\201\247\345\217\227\343\201\213\343\202\213\346\226\271\346\263\225.md" +++ "b/src/content/2019-11-30-aws-\350\252\215\345\256\232\343\202\275\343\203\252\343\203\245\343\203\274\343\202\267\343\203\247\343\203\263\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\210\342\200\223\343\203\227\343\203\255\343\203\225\343\202\247\343\203\203\343\202\267\343\203\247\343\203\212\343\203\253\343\201\25316-5\346\231\202\351\226\223\343\201\247\345\217\227\343\201\213\343\202\213\346\226\271\346\263\225.md" @@ -105,7 +105,7 @@ AWS認定ソリューションアーキテクトプロフェッショナルに ![img](https://i.imgur.com/bPDyskg.png) -### 学習2 問題を解け! +### 学習2 問題を解け さぁ、ブートキャンプも中盤だ。 @@ -157,7 +157,7 @@ IAM関連は特にややこしいので暗記したところで問題の本質 -あら^~ +あら^~。 ここまでで**10:00**。 @@ -171,7 +171,7 @@ IAM関連は特にややこしいので暗記したところで問題の本質 ここでトーストを食べる。 -### 学習5 会場に行くまでが勉強です! +### 学習5 会場に行くまでが勉強です **13:00**。 @@ -195,7 +195,7 @@ IAM関連は特にややこしいので暗記したところで問題の本質 最後の確認もJayendra’s兄貴のブログ。 -今度は最後の方の +今度は最後の方の、 > Went through a lot of Whitepapers especially the > @@ -215,7 +215,7 @@ IAM関連は特にややこしいので暗記したところで問題の本質 ロボットのように解ける問題を増やしたおかげで、時間には余裕があり考える問題も図を書きながら丁寧に答えることができました。 -## 合格! +## 合格 やったぜ。 diff --git "a/src/content/2019-11-30-\344\273\212\346\233\264\357\274\201\357\274\201-chainer-1-6-1-\343\201\247\343\201\212\343\201\227\343\202\203\343\201\271\343\202\212bot\343\202\222\344\275\234\343\202\215\343\201\206.md" "b/src/content/2019-11-30-\344\273\212\346\233\264\357\274\201\357\274\201-chainer-1-6-1-\343\201\247\343\201\212\343\201\227\343\202\203\343\201\271\343\202\212bot\343\202\222\344\275\234\343\202\215\343\201\206.md" index f42eb98d68..a000952b84 100644 --- "a/src/content/2019-11-30-\344\273\212\346\233\264\357\274\201\357\274\201-chainer-1-6-1-\343\201\247\343\201\212\343\201\227\343\202\203\343\201\271\343\202\212bot\343\202\222\344\275\234\343\202\215\343\201\206.md" +++ "b/src/content/2019-11-30-\344\273\212\346\233\264\357\274\201\357\274\201-chainer-1-6-1-\343\201\247\343\201\212\343\201\227\343\202\203\343\201\271\343\202\212bot\343\202\222\344\275\234\343\202\215\343\201\206.md" @@ -39,7 +39,7 @@ templateKey: blog-post - [LSTMで自然な受け答えができるボットをつくった](https://sekailab.com/wp/2015/11/02/lstm-general-responce-bot/) - このコードを元にあらかじめ作成したChainerモデルでおしゃべりBotに命を吹き込みます。 -- [yusuketomoto/chainer-char-rnn](https://github.com/yusuketomoto/chainer-char-rnn)  +- [yusuketomoto/chainer-char-rnn](https://github.com/yusuketomoto/chainer-char-rnn) - Chainer・日本語界隈では知らない人はいないだろうChainerの言語モデル作成コード。こちらを用いてChainerモデルを作成していきます。 - [Chainerで学習した対話用のボットをSlackで使用+Twitterから学習データを取得してファインチューニング](https://qiita.com/GushiSnow/items/79ca7deeb976f50126d7) @@ -68,16 +68,16 @@ PyenvとVirtualenvのインストール方法はこちらの記事が参考に まず、Pythonの環境を作ります。 -```bash -$ pyenv install 3.4.1 +```shell{promptUser: tubone}{promptHost: dev.localhost} +pyenv install 3.4.1 -$ pyenv install 2.7 +pyenv install 2.7 -$ pyenv rehash +pyenv rehash -$ virtualenv -p ~/.pyenv/versions/3.4.1/bin/python3.4 my_env3.4.1 +virtualenv -p ~/.pyenv/versions/3.4.1/bin/python3.4 my_env3.4.1 -$ virtualenv -p ~/.pyenv/versions/2.7/bin/python2.7 my_env2.7 +virtualenv -p ~/.pyenv/versions/2.7/bin/python2.7 my_env2.7 ``` 続いてコーパスをダウンロードします。 @@ -92,7 +92,7 @@ $ virtualenv -p ~/.pyenv/versions/2.7/bin/python2.7 my_env2.7 こんな感じでlistファイルを作ります。 -``` +```shell{promptUser: tubone}{promptHost: dev.localhost} ../dev/1404365812.log.json ../dev/1407143708.log.json ../dev/1407143981.log.json @@ -102,7 +102,7 @@ $ virtualenv -p ~/.pyenv/versions/2.7/bin/python2.7 my_env2.7 …… ``` -Linuxのコマンド(bash)で +Linuxのコマンド(bash)で、 `ls -1 ../dev > list` @@ -110,14 +110,14 @@ Linuxのコマンド(bash)で 学習データを作っていきます。 -```bash -$ source my_env3.4.1/bin/activate +```shell{promptUser: tubone}{promptHost: dev.localhost} +source my_env3.4.1/bin/activate -$ git clone https://github.com/SnowMasaya/Chainer-Slack-Twitter-Dialogue.git +git clone https://github.com/SnowMasaya/Chainer-Slack-Twitter-Dialogue.git -$ cd chainer-slack-twitter/utils +cd chainer-slack-twitter/utils -$ python data_load.py +python data_load.py ``` player_1.txt , player_2.txtというテキストファイルができます。 @@ -130,7 +130,7 @@ player_1.txt , player_2.txtというテキストファイルができます。 さて、分かち書きします。今回は **mecab-ipadic-NEologd** を利用します。 -```bash +```shell{promptUser: tubone}{promptHost: dev.localhost} mecab –Owakati –d /usr/local/lib/mecab/dic/mecab–ipadic–neologd player_1.txt > player_1_wakati.txt mecab –Owakati –d /usr/local/lib/mecab/dic/mecab–ipadic–neologd player_2.txt > player_2_wakati.txt @@ -138,8 +138,8 @@ mecab –Owakati –d /usr/local/lib/mecab/dic/mecab–ipadic–neologd player_2 次に使うChainer-char-rnn用に1つのinput.txtに統合していきます。統合の際に、player1とplayer2の会話ごとに空行を入れておきます。 -```bash -$ paste -d “\n” player_1_wakati.txt player_2_wakati.txt | awk ‘(NR%2==0){$0=$0″\n”}{print}’ > input.txt +```shell{promptUser: tubone}{promptHost: dev.localhost} +paste -d “\n” player_1_wakati.txt player_2_wakati.txt | awk ‘(NR%2==0){$0=$0″\n”}{print}’ > input.txt ``` こちらのinput.txtをコーパスデータとして利用します。 @@ -152,27 +152,27 @@ $ paste -d “\n” player_1_wakati.txt player_2_wakati.txt | awk ‘(NR%2==0){$ さきほど作っておいたPython 2.7用に切り替えます。PipでChainer1.6.1を入れてからChainer-char-rnnを実行していきます。 -```bash -$ source my_env2.7/bin/activate +```shell{promptUser: tubone}{promptHost: dev.localhost} +source my_env2.7/bin/activate -$ pip install chainer==”1.6.1″ +pip install chainer==”1.6.1″ -$ git clone https://github.com/yusuketomoto/chainer-char-rnn.git +git clone https://github.com/yusuketomoto/chainer-char-rnn.git -$ cd chainer-char-rnn +cd chainer-char-rnn -$ mkdir -p data/chat +mkdir -p data/chat -$ mkdir -p cv/chat +mkdir -p cv/chat -$ cp ../chainer-slack-twitter/input.txt data/chat +cp ../chainer-slack-twitter/input.txt data/chat -$ python train.py –data_dir data/chat –checkpoint_dir cv/chat –rnn_size 1024 +python train.py –data_dir data/chat –checkpoint_dir cv/chat –rnn_size 1024 ``` しばらく待ちます。全部が終わるのは途方もない時間がかかります。 -学習が進むごとにCheckpointとしてChainer modelファイルがcv/chat配下にできますので、適当なEpochのところのものを次の「APIで話す」に使ってもいいですし、学習の最新ファイルである +学習が進むごとにCheckpointとしてChainer modelファイルがcv/chat配下にできますので、適当なEpochのところのものを次の「APIで話す」に使ってもいいですし、学習の最新ファイルである、 latest.chainermodelを使ってもいいです。もちろん、最後まで待ってからlatest.chainermodelを使ってもいいです。 @@ -188,25 +188,25 @@ latest.chainermodelを使ってもいいです。もちろん、最後まで待 こちらのmodelsディレクトリにChainer modelを投入します。 -```bash -$ git clone https://github.com/tubone24/japanese_talk_api/tree/chainer1.6.1.git +```shell{promptUser: tubone}{promptHost: dev.localhost} +git clone https://github.com/tubone24/japanese_talk_api/tree/chainer1.6.1.git -$ mkdir japanese_talk_api/tornado/models +mkdir japanese_talk_api/tornado/models -$ cp chainer-char-rnn/cv/chat/latest.chainermodel japanese_talk_api/tornado/models +cp chainer-char-rnn/cv/chat/latest.chainermodel japanese_talk_api/tornado/models ``` Chainerの他にTornadoも必要になるのでPipでインストールします。 そしてAPIを8787ポートで起動します。 -```bash -$ pip install tornado +```shell{promptUser: tubone}{promptHost: dev.localhost} +pip install tornado -$ python japanese_talk_api/tornado/app.py –port=8787 –debug=True +python japanese_talk_api/tornado/app.py –port=8787 –debug=True ``` -あとは起動を待ってからcurlやブラウザなどで +あとは起動を待ってからcurlやブラウザなどで、 `http://localhost/?q=こんにちは` @@ -214,9 +214,7 @@ $ python japanese_talk_api/tornado/app.py –port=8787 –debug=True 学習用input.txtにないことばとか出すとたまにエラー吐きます。 -~~ビンビンビンビンビンビンビンビン… チクッ あ・あ・あぁ・ぁああああ↑↑ アーッ…イクッ チ~ン 問いかける言葉には気をつけよう!~~ - -## 付属のHubot Scriptで遊んでみよう! +## 付属のHubot Scriptで遊んでみよう [LSTMで自然な受け答えができるボットをつくった](https://sekailab.com/wp/2015/11/02/lstm-general-responce-bot/)のHubotScriptをお借りして遊んでみましょう。 @@ -230,6 +228,8 @@ $ python japanese_talk_api/tornado/app.py –port=8787 –debug=True ![img](https://i.imgur.com/DJL1fwu.png) + **DocomoAPI**に比べると天然というか、不思議系というか… バカですね(直球) + お借りした多くのコードや参考にさせていただいた多くのサイト・記事に改めて感謝しつつ、智絵里ちゃんとのラブラブライフを送りますね。 diff --git "a/src/content/2019-11-30-\345\244\247\343\201\215\343\201\217\345\220\270\343\201\243\343\201\246\343\201\233\343\203\274\343\201\256\357\274\201-\343\201\247\343\203\273\343\201\203\343\203\273\343\201\267\343\203\273\343\202\211\343\203\273\343\202\223\343\203\273\343\201\253\343\203\273\343\202\223\343\203\273\343\201\220\357\274\201\343\200\200\357\275\236\343\201\262\343\201\252\343\201\223\343\201\256\343\203\274\343\201\250\303\227deep-learning\357\275\236.md" "b/src/content/2019-11-30-\345\244\247\343\201\215\343\201\217\345\220\270\343\201\243\343\201\246\343\201\233\343\203\274\343\201\256\357\274\201-\343\201\247\343\203\273\343\201\203\343\203\273\343\201\267\343\203\273\343\202\211\343\203\273\343\202\223\343\203\273\343\201\253\343\203\273\343\202\223\343\203\273\343\201\220\357\274\201\343\200\200\357\275\236\343\201\262\343\201\252\343\201\223\343\201\256\343\203\274\343\201\250\303\227deep-learning\357\275\236.md" index ad32290594..9624c0b6ac 100644 --- "a/src/content/2019-11-30-\345\244\247\343\201\215\343\201\217\345\220\270\343\201\243\343\201\246\343\201\233\343\203\274\343\201\256\357\274\201-\343\201\247\343\203\273\343\201\203\343\203\273\343\201\267\343\203\273\343\202\211\343\203\273\343\202\223\343\203\273\343\201\253\343\203\273\343\202\223\343\203\273\343\201\220\357\274\201\343\200\200\357\275\236\343\201\262\343\201\252\343\201\223\343\201\256\343\203\274\343\201\250\303\227deep-learning\357\275\236.md" +++ "b/src/content/2019-11-30-\345\244\247\343\201\215\343\201\217\345\220\270\343\201\243\343\201\246\343\201\233\343\203\274\343\201\256\357\274\201-\343\201\247\343\203\273\343\201\203\343\203\273\343\201\267\343\203\273\343\202\211\343\203\273\343\202\223\343\203\273\343\201\253\343\203\273\343\202\223\343\203\273\343\201\220\357\274\201\343\200\200\357\275\236\343\201\262\343\201\252\343\201\223\343\201\256\343\203\274\343\201\250\303\227deep-learning\357\275\236.md" @@ -28,7 +28,9 @@ templateKey: blog-post ``` + ## ひなこのーとって、エロいごちうさじゃね? + はぁああああああん!? @@ -79,7 +81,7 @@ Deep Learningの難しいところは、とにかく大量のトレーニング こんな感じ。 50×50の可愛い画像がたくさん! -データセットはそれぞれ +データセットはそれぞれ、 - ひなこ1164枚 - くいな678枚 @@ -550,12 +552,10 @@ cv2.imwrite('out.png',image) むむっ。ココアさんがひなこに、シャロちゃんがまゆちゃんと認識されているではないか。 -ココアさんとひなこ、なんか似ているように感じなくもなくもない????? +ココアさんとひなこ、なんか似ているように感じなくも... フルール・ド・ラパンの制服と、まゆちゃんの私服が似ているというのはあるが、髪色で判断しているわけではないよな?? - - 金髪で判断しているという可能性がぬぐいきれないので。これでもくらえ!きんモザ&ごちうさのコラボじゃあああ。 ![img](https://i.imgur.com/mWRGXtm.png) @@ -582,7 +582,7 @@ cv2.imwrite('out.png',image) どうやら、くいなちゃんの認識率が一番いい。くいなちゃんかわいいからね。 -### おまけ2 くいなちゃん、某オタク少女に似ている説を確かめる。 +### おまけ2 くいなちゃん、某オタク少女に似ている説を確かめる ![img](https://i.imgur.com/DCkFvv2.png) diff --git "a/src/content/2019-12-02-nuxt-js\343\201\247particles-bg-vue\343\202\222\344\275\277\343\201\206.md" "b/src/content/2019-12-02-nuxt-js\343\201\247particles-bg-vue\343\202\222\344\275\277\343\201\206.md" index fedcf3f2b2..6b870a59c4 100644 --- "a/src/content/2019-12-02-nuxt-js\343\201\247particles-bg-vue\343\202\222\344\275\277\343\201\206.md" +++ "b/src/content/2019-12-02-nuxt-js\343\201\247particles-bg-vue\343\202\222\344\275\277\343\201\206.md" @@ -52,7 +52,7 @@ Vue.js版だけでなく、[React版](https://github.com/lindelof/particles-bg) インストールはnpmまたはyarnを使います。 ```bash -$ npm install --save particles-bg-vue +npm install --save particles-bg-vue ``` 簡単ですね。 @@ -119,7 +119,7 @@ particleを当てたいページに対しては上記で作成したlayoutsを 今回は最新のVue.jsのAPI [Vue Composition API](https://vue-composition-api-rfc.netlify.com/)を例に使ってみます。 -たとえばトップページ(index)に当てたい場合 +たとえばトップページ(index)に当てたい場合、 ```javascript{numberLines: 1}{19}