はてだBlog(仮称)

私的なブログど真ん中のつもりでしたが、気づけばWebサイト系のアプリケーション開発周りで感じたこと寄りの自分メモなどをつれづれ述べています。2020年6月現在、Elasticsearch、pandas、CMSなどに関する話題が多めです。...ですが、だんだんとより私的なプログラムのスニペット置き場になりつつあります。ブログで述べている内容は所属組織で販売している製品などに関するものではなく、また所属する組織の見解を代表するものではありません。

出身大学か出身県が同じ学生のグループ化ってどうやるんだっけの考察メモ(ひとまずPython)

はじめに グループ化の演算の要件で、出身大学と出身県が同じ学生どうしをグループ化というのは良くある話だと思います。 しかし、 同じようなグループ化の例でも、出身大学か出身県が同じ学生のグループ化となると一気にハードルが上がりそうな気がします。…

ElasticsearchのAggregations(nested,reverse_nested,parent,children)の例

はじめに ElasticsearchのAggregationsのnested,reverse_nested,parent,childrenについては次の過去記事ではごまかして説明をスキップしたので、あらためてまとめてみました。 itdepends.hateblo.jp まとめてみた... と言っても、公式の例を筆者なりに噛み砕…

ElasticsearchのAggsで「グループ内で最大値をとるレコードを抽出する」風の実現例(邪道流)

はじめに Elasticsearchでは、SQLでいうところのGROUP BYに近い挙動となるAggregationsというクエリがあります。 ここ何回かの過去記事でもAggregationsをちょいと雑に俯瞰する記事を投稿しました。 itdepends.hateblo.jp なおこのAggregationsですが、GROUP…

Elasticsearch のPipeline aggregationsのさわり

ElasticsearchのPipeline aggregationsは、ElasticsearchでSQLのHavingっぽいことが可能になるしかけです*1。 www.elastic.co これまた品揃えが豊富で、今確認したら、20種類近くあるようですが、次のBucket aggregationsや Metrics aggregationsの記事と同…

ElasticsearchのBucket aggregationsのさわり

ElasticsearchのAggregationsは種類が豊富ゆえに、嬉しい悲鳴なのですが、私のようなメモリが小さい人間はどれがどれというところの理解が大変です。 実際は、似た演算は、クエリの形とパラメータ、得られるバケット(演算結果)の形式が似ているので、同じ…

ElasticsearchのMetrics aggregationsのさわり

ElasticsearchのMetrics aggregationsは、その名の通り?統計的なAggregationsです。 www.elastic.co 機能充実はありたがたいもののその分だけ数も多いですね。 それぞれの名称、SQLや他の言語などでの関数名と類似性から、得られる値や使い方は同じような用…

自作の照合型ソートのスニペット例(JavaScriptでもmapやreduce、filter(手習いメモ) その4)

JavaScriptのmapやreduceは実用言語っぽい挙動で自分のようなぬる者にはありがたいよね〜のシリーズの第4弾です。 といいつつ、ある素材について、いざやってみるとfilterやreduceはおろか、メインロジック部分あたりではmapさえも使わなかったので、実際は…

Elasticsearchアナライズ時に派生型のプラグインを使う場合の雑図解(関連:edge_ngramやmultiplexer)

はじめに 私なぞは、検索時とインデックス時のアナライザーは同じものにしとく(つまりデフォルト)方が検索エンジンが賢いのでよしなにやってくれる派(という名のモグリ)なのですが、 edge_ngramやmultiplexerのような「トークン複数派生」的なアナライザー…

Elasticsearch のmatch_phraseで多少のあいまい度を許容する姑息なアイディア例

はじめに Elasticsearchのmatch_phraseで語順を意識して検索したいけど、多少は外れてたやつも下位で良いのでヒットさせたいよねという例をサカナにanalyzeの頭の体操をしてみましたの例です。 確認はver6.8で実施しましたが、基本は7系でも動作すると思いま…

N-Gramは部分一致っぽく当たるがそうでもないこともあるのは使い方次第(Elasticsearchを例にしてなんとなく説明)

Elasticsearchに限らずですが、検索エンジン案件ぽい話の際に、SQL/RDB界隈の部分一致検索のメタファーでN-Gramでの検索を語ることになりつつも、 結果、「部分一致」の先入観からかえってわかりにくくなる面もあって悩ましいということもなくはない...ので…

Elasticsearchで辞書で頑張らずにN-Gramでやりくりするちょっとした例(それがうまくいく利用シーンを選んだだけとも言う)

そろそろきりの良いエディション、バージョンでのElasticsearchに関する俺々ポエムを吐き出し切っておきたいと思う今日この頃です。 itdepends.hateblo.jp さて、上記の過去記事あたりで「マイフェイバリット」としてAnalyze設定について講釈を述べましたが…

ElasticsearchでBM25でなくPainless Scriptによるカスタム評価式で類似度スコアリング

はじめに Elasticsearchでは、検索語に対してあるドキュメントのあるフィールドの類似度を評価してリストの並び順を制御します。 この評価関数はBM25がデフォルトだそうですが、BM25やその由来のTF/IDFではどうも高級すぎて少し使いづらい時があります(ある…

ゆるJOIN(JavaScriptでもmapやreduce、filter(手習いメモ) その3)

データのJOINと言えば、複数のデータセットをあるキーで完全一致するものですが、まれに、完全一致するようなレコードがあればそれと結合したいが、そのようなものがない場合でも、キーのフィールドの値のN文字以上の前方一致で最長の一致となるものがあれば…

JavaScriptでもmapやreduce、filter(手習いメモ) その2

次の記事のつづきです。 (このブログは全体的にそうですが、誰得でいうと私自身用って感じのスニペットですネ...) itdepends.hateblo.jp find 配列を前方一致でグループ化できるか 配列のintersect(順番維持) オブジェクト配列(順序はそれほど意味がない)を…

JavaScriptでもmapやreduce、filter(手習いメモ)

今更ですが、JavaScript(私がいるのはTypeScriptでもなくて、やっとES6ぐらいに合流した世界線です)にもmapやreduceがあることを知りまして、世間からの何周遅れを追いつきたく、手習いしてみた...という自分メモです。 個人的なmapやreduceあるいはこれら…

HTTPとTCPの関係を状況証拠的に調べてみた(実際は、node.jsのメジャーなHTTPクライアントライブラリの挙動確認ぽいことをしてみた)話

TCPのKeepAliveと、HTTPの「Connection:Keep-Alive」、HTTP1.1のパイプライン、HTTP/2の「マルチストリーム?」、あとメジャーなブラウザは「コネクションを6本張るものが多い」っていう話がやっぱり分かってなかったので少し調べ始めたのですが、結果的には…

Pythonのconcurrent.futuresのシンタックスに入門してみた(並列タスク実行)

はじめに 以前、PythonのIO関連の非同期処理をうまくコントロールして全体スループットをあげるということで、次の記事を投稿しました。 itdepends.hateblo.jp 今回はもっとストレートに、concurrent.futuresという並列タスク実行の標準パッケージがあるよう…

Elasticsearchのネストしたaggsの検索結果をflat形式で戻してくれるComposite aggregationのさわり

拙ブログに、「Elasticsearch aggs/aggregations flat」で検索して迷いこむ方がいらっしゃるようです。 「flat」というところから、もしかして?、と思いまして、あらためて Elasticsearch のAggregationのひとつのCompositeに入門してみましたので、せっかく…

Pythonのopen関数での改行の扱い備忘録(newlineオプション、readlines、readline...)

Pythonのopen組み込み関数では、「改行」に関して「優しい」仕様になっています。 しかし、私のような日曜プログラマは半年に1回ぐらいやっちまうのですが、稀にこの気遣い仕様を忘れて、ハマってしまうこともあるので、ここに備忘録として記しておきます。 …

Pandasである一覧データから別のキー一覧指定のレコードのみ抽出(の処理時間傾向の雑な計測)

ある一覧データから別の一覧データのキーに存在するものを抽出するという要件があります。 Pandasで言うと、上図のように、2つのDataFrameをmerge(つまり表データのJOINの論法ですね)することで、このようなデータを取得するというのが私の手グセなのですが…

Pythonのhttp.serverを使ってWebサーバの擬似不具合を再現するテスト用モックのようなドライバのような何か

Webクライアント側の例外処理のテストやそもそも挙動確認等で、サーバ側に多少奇妙な挙動、例えばHTTPヘッダーのある1項目を規定外のものにする、といったことをさせたいことはありませんか。 ただし、残りの99%部分は普通に動いて(いるようにみせかけて)…

Pandasのapply関連の書きっぷりバリエーションと処理時間の雑な傾向確認

PandasでDataFrameのカラムAの値とBの値を結合して、新たにC列を作りたい...てなことがよくあると思います。 普段は自分の中で可読性が高いと思っているapply系の手グセで記述しているのですが、まれに、他の言語やフレームワークに置き換えるまではいかない…

JavaScriptの非同期処理に入門するためのPromise、async、awaitのつまみ食い

自分のために状況証拠的に学ぶJavaScriptのPromise、async、awaitメモです。 同じような境遇の方にはなんらかジャンプ台としてお役に立てるかもネと思って、まとめております。 もっと雑に分量少なめでまとめたものはこちら↓です。 itdepends.hateblo.jp 明…

時間がない人のための JavaScriptのPromise、await/asyncのシンタックスのつかみ重視の入門メモ

はじめに JavaScriptのPromiseとawait(とasync)による非同期処理と待ち合わせのシンタックス入門メモです。 次の記事の姉妹記事です。 itdepends.hateblo.jp 非同期処理を使いたい背景など JavaScriptを用いた要件で、非同期処理を織り交ぜて時間のかかる処…

最近のPythonでのコンカレント(並列)の非同期処理 async/await ・asyncioについて(ver 3.8で確認)

Pythonの非同期処理については、いろいろ歴史・経緯があるようです。 しかしながら、皆さんのおかげで、部外者が安易に言うのもはばかられますが、Python3.7あたりから、私のような日曜エンジニアでもおいしいところにありつけるようになってきた様子だった…

文字列の配列に対して、各文字列の前方の共通部分を抜き出すスニペット(Python、JavaScript)

文字列の配列に対して、各文字列の前方の共通部分(のみ)を抜き出すという例です。 Python等であれば、標準ライブラリなどにそのものズバリのものがありそうなという気もしましたが、ぱっと見見つけられませんでしたので、自作しました。 (この程度のもの…

Pythonで実装したJSONのdiffトイスクリプト(自分コピペ用)

下記の記事と似た主旨のオレオレメモです。 itdepends.hateblo.jp JSONファイルのdiffって有名ライブラリなどでは少しリッチすぎるかなという時に、機能が劣っていたり割り切りがあっても、自分で取り回しやすい自作のイディオムが欲しくなったのでコピペ用…

Pythonのネストされたdictに「a.b.c.d」のようなJavaScript風のアクセスを行う小品のスニペット例 2nd

下記の記事の続きです。自分でも続きがあったのかと思っておりますが、今回は、前回と同じ要領で、あるdictについて、特定のプロパティ(複数可能)を抜き出したdictを得るというミニDSL風の関数を作成しました(以下 hoge2.py)。 itdepends.hateblo.jp なお…

Pythonのネストされたdictに「a.b.c.d」のようなJavaScript風のアクセスを行う小品のスニペット例

Pythonのdict型のようなデータの配下の特定のプロパティに、「a.b.c.d」のような表記でアクセスできると、試験ツールやチェックツールで確認したいパターンを外部から入力として与えやすくなにかと便利だと感じています。 こういった使い捨てツールなどのた…

spaCyのMatcherについて(spaCyで日本語ホットワード抽出の真似事再び)

はじめに 以前の記事でspaCyで手探りで遊んでみました。 itdepends.hateblo.jp また、これを受けて、PhraseMatcherを少し試してみましたというのが次の記事です。 itdepends.hateblo.jp 上記2つの上の方の記事では、PhraseMatcherとともに、spaCyのMatcherの…