タグ

ブックマーク / qiita.com (306)

  • インフラエンジニアと謎のサーバ - Qiita

    この記事は闇の魔術に対する防衛術 Advent Calendar 2018の6日目の記事です。 あらすじ この世には歴史的経緯により何が動いているか分からない謎のサーバというものが存在する。 謎のサーバには、気の利いたドキュメントだの仕様だのGitHubにコードが上がってるだの、そういう甘っちょろい物は一切ない。謎のサーバは殆ど変更される事なく、あまりトラブルを起こす事なく、しかし何かのサービスによって必要とされてひっそりと動いている。 インフラエンジニアは時にこういった謎のサーバを調査して、ドキュメントに起こすか、コード化するか、ひっそりと退役させるか、はたまたリプレイスするか、といった対応に追われる。 私はこういったタスクの事を”考古学”とか”遺跡発掘”とか呼んだりする。 (考古学の成果の一例) uptime2700日超えのサーバにshutdown -h nowをカマした — かんが

    インフラエンジニアと謎のサーバ - Qiita
  • Chatbase のススメ - Qiita

    Chatbase とは Chatbase とは対話型アシスタント(チャットボット)用のアナリティクスツールです。 作成したボットのログをプラットフォーム横断で確認することが出来ます。 アクション作ったはいいものの、どう分析すればいいか Google Assistant のアクションや Alexa のスキルを作成する際に問題となるのが、 「会話データの分析をどのようにすればいいかわからない」ということです。 Chatbase は、その問題の解決策の一つです。 この記事では、 Chatbase の使い方を、満月のことを教えてくれる「満月博士」というアプリを例を紹介します。 設定方法 設定チュートリアルは以下のドキュメントを読んでいただければと思います。 できること 処理出来なかったメッセージの確認 「Message」 タブでは、どのようなメッセージを受け取っているか確認出来ます。 この例では、

    Chatbase のススメ - Qiita
  • つらくない複数のGASプロジェクトの横断的な管理について - Qiita

    Google Apps Script (以下GAS)の管理について, 「アレレ,あのトリガーはどこで動いているんだっけ?」 といった事が多々あると思います.しかし,その悩みは G Suite Developer Hub による管理UIの提供によって解消されることになります. この記事では G Suite Developer Hub を使用したGASの管理について書いていこうと思います. G Suite Developer Hub とは G Suite Developer Hub はGASの新しい管理画面とその機能群です. 主に以下の機能が提供されます. Google ドライブ内にあるGASプロジェクトの一覧表示 実行結果や実行数の管理 トリガーの管理 それぞれ紹介していきます 機能紹介 Google ドライブ内にあるGASプロジェクトの一覧表示 実際に https://script.goo

    つらくない複数のGASプロジェクトの横断的な管理について - Qiita
  • [VIM] まだインデントで消耗してるの? 〜スペースインデントでもタブインデントでもない新しいインデント手法〜 - Qiita

    [VIM] まだインデントで消耗してるの? 〜スペースインデントでもタブインデントでもない新しいインデント手法〜VimvimrcvimscriptindentFormat 皆さんはスペースインデントとタブインデントのどちらをお使いでしょうか。 私はタブインデント派なのですが、タブインデントとスペースインデントの双方に利点が存在するため、簡単にどちらが良いと決めることはできません。 ここでは、タブインデントとスペースインデントを組み合わせた新しいインデントの方法を提案し、Vim上で実現するためのvimrcの実装を紹介します。 ※ 提案手法を実際に導入される場合、なにか問題が起こっても私は責任を負いかねますのでご了承ください123。 タブインデントの利点と欠点 ソースコードの閲覧者がtabstopの設定により見やすいインデント幅で閲覧できる タブ幅が環境によってまちまち4なので、ソースコードの

    [VIM] まだインデントで消耗してるの? 〜スペースインデントでもタブインデントでもない新しいインデント手法〜 - Qiita
    AmaiSaeta
    AmaiSaeta 2018/12/12
    どうしても揃えたい時は、俺もこのやり方してる。ただ、この記事みたいにifの条件部の頭を揃えるとかはしないので、本当に稀。
  • ドメイン駆動設計における2つの『不変』 - Qiita

    この記事は ドメイン駆動設計 advent calendar 11日目 の記事です。 日語版だとわかりずらい「不変(不変条件)」 エヴァンスのドメインでは、頻繁に「不変(不変条件)」という言葉が出てきます。Kindleで検索してみたところ、83件でした。 分類してみると、主に2箇所でよく使われています。 1つは「ValueObject(値オブジェクト)」の項。もう一つは「Aggregate(集約)」の項です。 Factoryでも多く使われていますが、こちらはAggregateの不変条件に関連する内容ですね。 さて、実は「ValueObject」と「Aggregate」で使われている「不変(不変条件)」の意味って全然違う意味なんです。 弊社でドメイン駆動設計の読書会をしているなかで、話題になり目から鱗が出てしまったので紹介しますね。 「ValueObject」と「Aggregate」の項

    ドメイン駆動設計における2つの『不変』 - Qiita
  • ユビキタス言語についての知見を共有します - Qiita

    この記事は、ドメイン駆動設計 #1 Advent Calendar 2018の10日目です。 ユビキタス言語は大事 DDDは分類手法の一つという側面があります。 分類の道具は境界づけられたコンテキストと、ユビキタス言語です。 境界づけられたコンテキストで、システムの対象業務を分類し、境界づけられたコンテキスト内部ではユビキタス言語で言葉を分類します。 個人的に、ユビキタス言語はDDDを実践する上でとても大事なテクニックだと思うのですが、何を指すものなのか、どういうメリットがあるものなのかわかりにくいために、初心者にとってはわかりにくいものかもなー、とも感じます。 そこでこの記事では、ユビキタス言語についての私の知見を書いてみます。ユビキタス言語についての学習の助けになれば幸いです。 ユビキタス言語とは何か? ユビキタス言語の定義をする前に、「境界づけられたコンテキスト」について説明します。

    ユビキタス言語についての知見を共有します - Qiita
  • Actions on Googleでパーソナライズ化 - Qiita

    はじめに あなたのGoogleアシスタントアクションで、ユーザ情報に適した情報を提供をしたいと思いませんか? 例えば、連続で起動してくれているユーザには「毎日起動してくれて、ありがとう😸」って言ってみたり、ユーザの位置情報に応じた情報提供したり、ゲームでの最高得点を保存してみたり。 ユーザデータが保存できると作れるアクションの幅も広がるかと思います!💪 次から、Actions on Googleで利用できるユーザデータの保存方法を紹介していきます。 会話中だけデータ保存する 利用例: フレーズを話したかフラグとして保存しておく。 1つ以上前の質問の回答を利用したい。 使い方 1つの会話中だけ(起動->終了まで)情報を保存したい時、 conversationTokenを利用してみましょう。 使い方はアクションのFullfillment処理でActions on Google Node.j

    Actions on Googleでパーソナライズ化 - Qiita
  • Google Assistantアプリで位置情報を取得する - Qiita

    Actions on Google ではパーミッションを適切に求めることで、 位置情報を初めとしたユーザーの情報を取得することが可能です。 大まかな流れ 大きく分けるとこんな感じです。 fulfillment で許可を求める処理を動かす 許可を求めた結果を Intent で受ける 取得した情報を自由にゴニョゴニョする 1. fulfillment で許可を求める処理を動かす 許可を求める処理はnpmパッケージの actions-on-google で定義されている Permmision クラスを用います。 Permission クラスはレスポンスの一種で以下のように記述します。 import { Permission } from 'actions-on-google' app.intent('TestIntent', conv => { const context = '「位置情報を使っ

    Google Assistantアプリで位置情報を取得する - Qiita
  • JavaScript中級者向けHelloWorld - Qiita

    この記事は、JavaScript2 Advent Calendarの9日目の記事です。「javascript に関することなら初心者〜玄人まで歓迎」と書いてあったので、間を取って中級者向けの記事を書きます。(そもそも玄人向けの記事は私には書けませんが…) 内容は、HelloWorldです。中級者の方は、もちろん分かりますよね。 初心者の方はヒントを見ながら(ちょっと厳しいかもしれませんが)、上級者の方は鼻で笑いながら、最後まで読んで頂けると幸いです。 このコードの振る舞いを完全に説明できれば、あなたはJavaScript中級者です。 コード ((_, ...args) => Function.prototype.call.call(...args))`${ function() { console.log(this.valueOf()) } }${ String.raw({ raw: {

    JavaScript中級者向けHelloWorld - Qiita
  • ドメイン駆動設計を勉強するときのオススメ資料 - Qiita

    この記事は、ドメイン駆動設計 #1 Advent Calendar 2018の9日目です。 明日は@kmdsbngさんです。 今回は、ドメイン駆動設計(以下DDD)を学ぼうとする人に対して参考になる資料をまとめます。 DDD関連資料のオススメ まずはDDDの青い、エリック・エヴァンスのドメイン駆動設計から手を出したいところですが、500ページ超えで分厚く、初学者の人とっては解説される内容が抽象度が高く、理解するのに苦労すると思います。 ですのでこれから紹介するSTEPの順番から読んでいくのことをオススメします。 STEP1 まずはDDDの概念から理解していくことから始めましょう。下記のがオススメです。 わかる!ドメイン駆動設計 ~もちこちゃんの大冒険~ https://booth.pm/en/items/392260 このはストーリー形式でDDDを解説されていますので比較的理解しやす

    ドメイン駆動設計を勉強するときのオススメ資料 - Qiita
  • Suffix Array - Qiita

    これは「データ構造とアルゴリズム Advent Calendar 2018」9日目の記事です. ##はじめに Suffix array1 はよく知られたデータ構造のひとつです.1990年に提案2されて以来,その使われ方は多岐にわたります.記事では,この suffix array の基事項として, suffix array とは何か suffix array を全文索引として用いる方法 を紹介したいと思います. ##パターンマッチングと全文索引 パターンマッチング とは,文字列 $T$ から,パターンと呼ばれる文字列 $P$ を探す問題です.たとえば, $T =$ 麒麟鼬蝙蝠駱駝蝦蟇鼈樹懶鼠膃肭臍羆狒狒鰐麒麟猩猩鼠鼠鼠鼠鼠蟒蛇鼈鼬羆蜥蜴駱駝羆麒麟鼈鼬狒狒狒狒羆蝙蝠膃肭臍麒麟蝙蝠鼬蜥蜴鼬狒狒蝮樹懶鼬羆蝮膃肭臍麒麟羆駱駝蝙蝠蟒蛇狒狒蝙蝠樹懶鼈蜥蜴駱駝羆鼬羆樹懶犀鰐蝙蝠鼠狒狒蝦蟇鼬蜥蜴鼠蝮蝦蟇

    Suffix Array - Qiita
    AmaiSaeta
    AmaiSaeta 2018/12/09
    検索対象文字列から特定の文字列を探す時のアルゴリズム。この時、全ての合致する文字列の位置情報を得る事が出来る。 O(m log n)
  • Googleアシスタントのマルチモーダルレスポンスの考え方と最近のレスポンスまわりの変更点 - Qiita

    音声は、会話形式の入力としてはとても自然で、ITの知識も必要なく、どのような年齢層でも利用できる利点があります。一方で、お店でメニューを見るような場合、メニューのすべてを音声で聞いて頭で覚えておき、それから選ぶのは大変です。目で「スキャン」したほうが自然な行動でしょう。音声と画面は文脈にあわせて、返し方を比較する必要性があります。 Googleアシスタントのレスポンス構成 こちらもGoogle I/Oからですが、Googleアシスタントのレスポンス構成は以下のように分離されます。 ユーザの文脈に合わせて自然な会話にしていくためには、会話のターン毎に、Visual Componentを含むすべての方法を検討する必要があります。例えば、prompt、cards, suggestion chipsなどです。例えば、上記の例ですと、Spoken promptですべて話しているトピックを画面上ではリ

    Googleアシスタントのマルチモーダルレスポンスの考え方と最近のレスポンスまわりの変更点 - Qiita
  • 個人的によく使う(ベタな)bash alias - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    個人的によく使う(ベタな)bash alias - Qiita
  • 👻globalThis👻と🌏global🌏と🌝this🌝 - Qiita

    皆さんこんにちは。今回はJavaScriptの👻globalThis👻について解説しようと思います。globalThisはJavaScript (ECMAScript) の新機能です。現在TC39プロセスのStage 3にあり1、このまま何事もなければ近いうちにECMAScript2に正式採用されることになります。 この記事はJavaScript2 Advent Calendar 2018の5日目の記事です。 さて、皆さんはこのglobalThisを使ったことがあるでしょうか。私はありません。というか、現在のところglobalThisが利用可能なのは、つい今日安定版がリリースされたばかりのGoogle Chrome 71のみです。この記事にはglobalThisを使ったコード例が出てきますが、実際に動かしたい場合はちゃんとGoogle Chromeが最新版になっているか確認してください

    👻globalThis👻と🌏global🌏と🌝this🌝 - Qiita
  • :terminal に関する小さい Tips - Qiita

    空いてたので割り込み。 君は Tapi を知っているか Vim に :terminal 機能が実装されている事は全国1億5千万人が知っている事実なのですが、:terminal の Tapi (Terminal API)機能をご存じの方はそのうち300人くらいしかいません。今日はその Tapi 機能について説明します。 Tapi 機能とは :terminal は仮想 pty を用意してコマンドを実行する物で、コマンドを実行した後は :terminal が自発的に画面を更新します。Vim からはキーボードの操作がそのコマンドに対して渡されます。一見これだけで便利そうなのですが、:terminal を使っているユーザはよくこう思います。いや、必ずこう思います。 この :terminal で起動したシェルの中から親の Vim に対してファイルを開かせたいよなぁ ね、思いましたよね。 これを実現する

    :terminal に関する小さい Tips - Qiita
    AmaiSaeta
    AmaiSaeta 2018/12/07
    Tapi、:terminal側から親のVimに対して指示を出せる。いろいろと応用できそう。
  • 今すぐaliasを登録しておくべきGitワンライナー - Qiita

    はじめに 今すぐalias登録すべきワンライナー by ゆめみ① Advent Calendar 2018 の2日目です。 私はプロジェクト依存のものはなるべくMakefileから利用するようにしているので,.zshrc は Git 関連程度で薄く保たれています。 皆さんの素敵なワンライナーが見られるよう,貢献させていただきます。 大いに盛り上がって欲しいと思います。 題 業務で叩くものの中で1番多いであろうGitコマンド。 もう checkout のタイポで移動できない,なんて無くしましょう。gc で十分です。 また,GitHub では issue 駆動の開発をしていますが,issues/ は 7 文字です。i で十分です。 以下をコピペし,些細な工夫でモチベーションが下がるのを防ぎましょう。 # g: git alias g='git' # gc: checkout alias gc

    今すぐaliasを登録しておくべきGitワンライナー - Qiita
  • Arrays.asList(T... a) は、なぜ add や remove ができないのか? - Qiita

    (この記事は 地平線に行く とのマルチポストです) Arrays.asList(T... a) というメソッドについてググると、「このメソッドで返ってくる List は、add や remove ができないので注意しましょう」ということが良く書かれています。 でも、「なぜできないのか?」という点については書かれていないことが多いので、理由を説明します。 一言でまとめると「配列を List として扱えるようにラップするためのものだから」です。 (「変換するもの」ではないです) そもそも、どう使うもの? 配列を List<T> として扱いたいときに使います。 例えば、シャッフルするのに Collections.shuffle​(List<?> list) という引数に List を取るメソッドはあるのですが、引数に配列を取るメソッドがありません。 そういうときに、 Collections.sh

    Arrays.asList(T... a) は、なぜ add や remove ができないのか? - Qiita
    AmaiSaeta
    AmaiSaeta 2018/12/04
    そのインタフェイスでラップしてるだけって、流石に罠過ぎません?
  • switch文が実はもう少し使える子だった? - Qiita

    はじめに JSに関する小ネタです。 以下のように感じる人はもしかしたらこの記事を読む価値があるかもしれません。 if-elseの羅列はやっぱ読みづらいし面倒だなー switch文でパターンマッチみたいなの使いたいなー ただしパターンマッチを実現するという内容の記事ではないので期待はしすぎないでください。 注意 サンプルコードはNode.jsの10.13.0で試してます ほとんどのブラウザで使える内容だとは思いますが、検証しきれていません 間違ってるとこがありましたら指摘お願いします switch文が使いにくいと感じる場面 "/hoge/fuga"のような URL パスっぽいものがあったときに、その値に応じて処理や返り値を変えたいとする。 単純に完全一致だけで扱えるケースであればswitch文を使える。 function returnSomething(path) { switch (pat

    switch文が実はもう少し使える子だった? - Qiita
    AmaiSaeta
    AmaiSaeta 2018/12/03
    なるほど、この発想はなかった……読みやすいかどうかは置いといて……
  • 最古のオブジェクトは値オブジェクトだったが現実とは無関係だった話 - Qiita

    最近久しぶりにオブジェクト指向の話が炎上もとい盛り上がりましたね。 せっかくなので私も一つ書いてみようと思います。ただ私は皆さんの言うオブジェクト指向というものが何なのかわからないので「オブジェクト」とは何かという話です。 オブジェクトとは何か? 歴史的な話 Wikipedia・主体と客体から引用します。 アリストテレスは希: ὑποκείμενον 英語表記:Hypokeimenon ヒュポケイメノン、という用語を用いていた。ヒュポケイメノンは、ヒュポ+ケイメノン =下に + 置かれたもの、という意味の語である。 またアリストテレスはantikeimemonという言葉も用いていた。これは「向こうがわに置かれたもの」という意味である。antikeimenonは『形而上学』においては、複数形で登場し、「たがいに対立しあうもの」という意味で用いられ、Περὶ Ψυχῆς 『ペリ・プシュケース』

    最古のオブジェクトは値オブジェクトだったが現実とは無関係だった話 - Qiita
  • Implicit/Explicit Invocation ~ Actions on Gogoleの呼び出し方を考える AoGを一発で呼び出すために ~ - Qiita

    最近スマートスピーカーの話が沢山ですね。 実際問題 まだまだ家電が対応していないので、超便利になったとは感じられないのが悲しいところです。 ところでAoGを開発していると、「OK Google、~を使わせて」「〜させて」と2段階の会話が必要になるのが、 ストレスじゃありませんか? 手順が多いことで、コミュニケーションとしてのめんどくささを感じることが多いです。 ただAoGには、もっと効率的に機能を呼び出す方法があります。 今回はこの「呼び出し方法」「Implict/Explict Invoication」について書きたいと思います。 AoGの呼び出し方 Implicit/Explicit Invocationとは? AoGの呼び出し方には大きく分けて2種類の方法があります。 Explicit Invocation (明示的な呼び出し) Implicit Invocation (暗黙的な呼び

    Implicit/Explicit Invocation ~ Actions on Gogoleの呼び出し方を考える AoGを一発で呼び出すために ~ - Qiita