はてだBlog(仮称)

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

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の…

spaCyのPhraseMatcherを変わり種のあいまい検索やgrepとして使ってみる(ための試し打ちをした)

はじめに 以前の記事でspaCyで手探りで遊んでみました。 itdepends.hateblo.jp 記事の中で、spaCyのPhraseMatcherの名前にふれていましたが、今回、実際にPhraseMatcherを試してみたというメモです。 spaCyのPhraseMatcher さて、そのspaCyのPhraseMatcherで…

spaCyでの係り受けなど可視化(注:タイトル負けしています)

前の記事でspaCyをカジりました。 itdepends.hateblo.jp spaCyなどのNLTKでは語の依存関係などを解析できますが、その関係を可視化して文とは文章とはなんたるかを俯瞰したいということが頻出します。 spaCyについては標準で、係り受けなどの関係を可視化す…

spaCy2.3の日本語標準対応にのっかってホットワード抽出の真似事(ただし候補ワード・フレーズ抜き出しまで)

spaCyがver 2.3になって、デフォルトで日本語に対応したようです。 spacy.io ということで、何日か前に、GiNZAスゲーとなった感謝の気持ちは忘れないながらも、フリーライダーな私としては、裸のspaCy2.3に乗り換えて、まずは雰囲気を掴んでみようということ…

pandas.read_htmlでぶち抜きtableタグに関する今更の気づき

pandas.read_htmlについて、rowspanやcolspanで実現されているぶち抜き表についても、よろしく整然データとしてのDataFrameに変換できるということを知ったので、その感想です。 pandas.read_htmlについて pandas.read_htmlはhtml中のtableに特化したスクレ…

Elasticsearch のMore Like This Queryを使ってみた(グルメ的に似たエリアを検索)

Elasticsearch のMore Like This Query(以下MLT)を使ってみました。 More Like This Query(MLT)について MLTの類似度の考え方(の雑な説明) Elasticsearch MLT での実際の検索方法 [補足] MLTはElasticsearch 検索DSLの一種 ★実際にやってみる 前説 手順 (1)…

livedoor グルメの DataSet を横目で見ながら東京都のグルメ分布のイメージをひとりごとする

この記事では、下記の過去記事の手順、および本記事の末尾に引用のスクリプトで、livedoorグルメDataSetをElasticsearchに取り込み、significant_termsで、東京都の各エリアごとの特徴的なグルメカテゴリのランキングを取得してみました。 itdepends.hateblo…

Elasticsearchで検索〜pandasのDataFrameに格納(私的なスニペット)

Elasticsearchとpandasという組み合わせでいうと、Elasticsearchの公式サイトでも紹介があるeland | Elasticなのかなと思います。 しかしながら、ElandでElasticsearchの検索クエリをかませて、それをDataFrameに入れる方法が(おそらくそのような機能を具備…

Webサイトのアクセスログのよくあるかもしれない集計パターンの自分用覚書(Python/Pandas関連)

Webサイトのアクセスログの集計のワンライナーのようなものについては、かつてはいろいろ思うところがありました。 思うというか苦しめられておりました。 しかし、いまや 自分が語るには、この世界が発展・複雑化しすぎており、世界の片隅でのひとりごとと…

Python: wordcoludでタグクラウド画像生成

↓ Pythonのタグクラウド生成ライブラリで有名なword cloudを使って、まさにこんな感じの画像ファイルを出力します。 amueller.github.io github.com 日本語の場合、本来は、タグクラウドの元になるテキストについて統計的な処理や分かち書きをするところをふ…

Python: Pillowで画像にテキスト埋め込み(元画像なし版)

↓ Pythonのプログラムを実行して、まさにこんな感じの画像ファイルを出力します。 2020年の現在においては、Pillowというライブラリがデファクトのようです。 hoge$ pip3 list ... Pillow 7.1.2 ... pillow.readthedocs.io お作法のハンズオンとしては、次が…

openpyxl のさわりのサンプルコード(PythonでEXCELファイルを扱う一例)

はじめに 感染症の例を見ていると、可視化やそもそも現場でのデータ収集というのはなかなか難しいなと感じる次第です。 大半の混乱は一元化や入力の標準化などの情報化の定石で解決する部分もあるでしょうが、今回のような走りながら速記するというような状…

sumy で要約(spaCy、GiNZA) を試してみた: Pythonで自然言語処理にフリーライド

要約・キーフレーズ抽出について sumy は、Pythonで実装された、抽出型のドキュメント要約ライブラリです。 3行でまとめて! ってやつですね。 ドキュメント中の最重要と思われるセンテンスを抜き出すことで、元の内容のエッセンスを抽出することをめざしま…

Elasticsearchにlivedoorレストランデータセットを取り込んでみる(Pandasで全文検索向けにプレデータ加工あり)

Elasitcsearchで「全文検索」寄りでいろいろ遊んでみようと思うと、程よい公開データが欲しくなります。 そんなデータの一例として、livedoorレストラン DataSetというのがありますので、こちらを利用させてもらって勉強するというのも一つの手かと思います…

Elasticsearch AggregationsとPost filter(post_filter)

一つ前のこちら↓の記事で、ElasticsearchのAggregationsのシンタックス例を挙げてみました。ElasticsearchのAggregationsでしばしば話題になるトピックを忘れていましたので、補足します。 itdepends.hateblo.jp 具体的には、Post filterの話です。 www.elas…