タグ

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

  • 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
  • 引数の型を何でも List にしちゃう奴にそろそろ一言いっておくか - Qiita

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

    引数の型を何でも List にしちゃう奴にそろそろ一言いっておくか - Qiita
    AmaiSaeta
    AmaiSaeta 2018/12/02
    語弊を招きそうで且つ過激だが、そもそもJavaやC#みたいなオブジェクトが参照渡しなクソ言語を使うなと言うのが、俺の意見。
  • JavaScriptの { } を理解する - Qiita

    結果はどうなったでしょうか。 自分が今使っているGoogle Chromeだとこうなりました。 結果は{a: 10}というオブジェクトです。まあ、これは当然ですね。3 + 5と入力すれば実行されて8が返ってくるのですから、{a: 10}というオブジェクトリテラルを書けば{a: 10}というオブジェクトが作られるのは当然です。 ……。 ここで、一部の人は「おいふざけんなよ」と思っているかもしれません。というのも、この例は環境によっては違う結果になるのです。具体的には、Chrome以外2のブラウザのREPL(FirefoxやEdgeなど)が該当します。あと、ts-nodeのREPLも該当するらしいです。これらの環境では、結果は{a: 10}ではなく次のようになります。 オブジェクトを作ったはずなのに結果が10とか意味不明ですね。そもそも、こんな簡単なプログラムで結果が全然違うとか、JavaSc

    JavaScriptの { } を理解する - Qiita
  • 極小WebアプリをURLに埋め込んで超ポータブルなWebアプリを作りたい! - Qiita

    やりたいこと データを変形・加工するスクリプトをURL上にホストをして、 ポータブルで永続的でブラウザで完結するWebアプリを作れるようにします! Rubyはデータ加工に最適! Rubyは豊富なメソッドが標準で用意されていて、特にArray, Enumerator, Stringなどよくデータを加工したいときに使えるメソッドがとても豊富です。 メソッドチェーンでつなげていけるところが、人の思考にあっていて、どんどんデータを変えていけるところがRubyの良さだと思います。 そのためデフォルトの言語はRubyです。JavaScriptもオプションで選べるようになってます。 そこで、 データ加工に便利なRubyで書いた小さいWebアプリをURL上にホストします! URLにすべてのコードを載せてしまえば究極的にポータブルなWebアプリになるのではないかという発想です。Itty.bittyにインスパ

    極小WebアプリをURLに埋め込んで超ポータブルなWebアプリを作りたい! - Qiita
    AmaiSaeta
    AmaiSaeta 2018/11/08
    必要な情報を全てURLに含めてしまうというアイディアは面白いと思う。
  • Dockerでプログラマが最低限知るべきことが、最速でわかるチュートリアル - Qiita

    はじめに Dockerを理解するには試してみるのが一番です。 でも、あなたはある日突然「あと一時間でDockerを理解する必要がある」 状況に追い込まれた不運なプログラマになってしまうかもしれません。 そんな状況で公式サイトのチュートリアルは長すぎることでしょう。英語ですし。 なので、Dockerでプログラムが最低知るべきことが最速でわかるチュートリアルを書いてみました。 簡単に「Dockerそれっておいしいの?」に答える Dockerは単に仮想環境を提供するアプリケーションです。LinuxのVMを提供します。ただ、コンテナ型ってやつなので軽量です。VMが短時間で構築できて便利です。コンテナ型ではないフルの仮想環境はゲストOSに中間マージンを払っているようなものなので、ゲストOSとホストOSが同じことやってるならリソースのムダです。ならば、ホストOSと直取引し、ゲストOSに支払っていた中間

    Dockerでプログラマが最低限知るべきことが、最速でわかるチュートリアル - Qiita
  • sizeof演算子にまつわるアレコレ - Qiita

    記事は C言語 Advent Calendar 2016 22日目(2週間ぶり3度目) にエントリしています。 当初、12/1で参加した時は4エントリしか参加表明がなかったのに、自転車操業のごとく2度目の参加につながり、気が付いたら25日分全てのエントリが埋まったようです。おめでとうございます。みなさんC言語好きなんですね(?) プログラミング言語Cの sizeof演算子 に関するネタを、基の"キ"から重箱の隅つつきまで揃えました。1 各話題にはマニアック度(=どうでも良い度合い)を独断と偏見で3段階評価してあります。★が少ないほど広くC言語プログラマに知っておいて欲しい事項(=重要)です。...普通のランキングと逆じゃねーか。 なお記事の内容は、特に断りがない限りISO/IEC 9899言語仕様(C90/C99/C11)に準じます。また用語の日語訳はJIS X 3010規格票に合

    sizeof演算子にまつわるアレコレ - Qiita
  • Codomisu - Qrunch

    **「もっと気軽にアウトプットできる」**を コンセプトにした **技術ブログサービス「Qrunch(クランチ)」**のβ版をリリースしました! 6月頃から実装に取り掛かり、隙間時間を使いながらコツコツ開発してきたのですが、4ヵ月経った今、こうして無事リリースに辿り着けてほっとしています。 今回は、そのサービスの紹介と技術周りの話を軽くまとめてみます。 個人でWebサービスだったり、アプリ開発をしている人・したいと思っている人のモチベアップにでも繋がれば幸いです! リリースしたサービス Qrunch(クランチ) - もっと気軽に技術ブログを書こう! Qrunch専用のChrome拡張機能 - Qrunchをもっと身近に! 先日行われた大幅リニューアルにより、QrunchのURLはqrunch.netに変更されました。 サービスTOP TOPページは「自分も参加したい!」と思わせるようなデザ

    Codomisu - Qrunch
    AmaiSaeta
    AmaiSaeta 2018/10/14
    「全てのユーザーにサブドメインを割り当て」項は興味深い。Qiitaとのデザイン上の違いなんだろうが | 方向性が異なる以上、Qiitaにこの記事上げるの悪いとは思わん。OSSのMLにforkのアナウンス流れるし
  • SSHなるものをよくわからずに使っている人のための手引書

    SSHとは SSHとは、セキュアな通信を行うためのプロトコルです。 たとえば、HTTP。HTTPを通してブラウザからWebサイトにアクセスし、 コンテンツを閲覧したりWebアプリを利用したりします。 この「HTTP」というのもプロトコルの一種です。 HTTPもSSHもOSI参照モデルと呼ばれる層の最上位、アプリケーションレイヤーに位置しています。 なお、よく聞く「OpenSSH」とは、このSSHのプロトコルを実現するための 有名なソフトウェア(プログラム)のひとつです。 FTPのプロトコルで言うFileZillaとか、そういったイメージです。 このSSHを使うと、リモートサーバに安全にログインできたり、 ファイルをセキュアに送受信することができたりします。 SSHは「Secure Shell」の訳で、リモートシェルに特化しています。 公開鍵認証という仕組みを用いて、セキュアな通信を実現して

    SSHなるものをよくわからずに使っている人のための手引書
  • Java8の日時APIはとりあえずこれだけ覚えとけ - Qiita

    Javaで日付/時間を扱うには従来はDate/Calendar/DateFormat等のクラスを使っていたが(以下、旧API)、Java8からはjava.timeパッケージに新しくAPIが追加された(以下、新API)。 しかし新APIはパッケージ数が5、クラス数は69もあり最初はどれをどう使うのか戸惑ってしまう。 そこで最低限これだけ覚えておけば旧APIと同じ事ができるという程度の情報をまとめてみた。 新APIの特徴 旧APIとは全く別のAPI。 データを格納するクラスは、日時/日付のみ/時間のみなど保持する要素やタイムゾーンの有無などで、複数のクラスから選べるようになった。 データ保持と日付操作(年/月/日フィールドの取得/変更など)が1クラスで出来るようになった。 (旧APIではデータ保持はDateクラス、日付操作はCalendarクラスと分かれていた) 日時クラスはImmutable

    Java8の日時APIはとりあえずこれだけ覚えとけ - Qiita
  • ちゃんと理解するCode Splitting - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Code Splitting、サボってきたのですが、必要になりそうだったので真面目に調べてみました。 これからCode Splittingやりたい方の入口的な役割になれれば幸いです。 Code Splittingとはなにか Code Splittingはその名の通り「コードを分割すること」を指します。分割されたコードはユーザのアクションに応じて非同期に読み込まれます。 ちなみにWebpackでentry point分けることとかもCode Splittingと言えばそうなのですが、記事では触れません。また、別にSPAでなくともCode

    ちゃんと理解するCode Splitting - Qiita
    AmaiSaeta
    AmaiSaeta 2018/08/16
    そもそもwebpackみたくコードをマージするのが主流になる前は、みんな普通に分割してた筈で、それ考えると微妙な気持ちに……(当時の分割の理由はパフォーマンスじゃないけど)
  • ぼくたちのかんがえたさいきょうのi18n国家

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 記事は下記のtweetから始まるスレッドに触発され、@qnighyや@na4zagin3からアイディアを拝借して書いた。 i18n力が最強の国は国内に複数の言語があり、そのうちいくつかは他国でも使われている言語の方言で、1バイト文字での代替表記が困難で、歴史的にISO-2022ベースの文字コードとUnicodeと独自エンコーディングが混在していて、フリガナなどの特殊な組版規則があり、右書き左書き縦書きを併用し、 — Masaki Hara (@qnighy) 2018年8月6日 皆さんのおかげで最強のi18n国家が建設されつつある。一

    ぼくたちのかんがえたさいきょうのi18n国家