ヒトリ歩き

愚痴とかいろいろ書きます

HTTPリクエストの同期/非同期の処理動作

HTTPリクエストの同期/非同期の動きについて確認する。より、多くのリクエストをより早く処理するためには非同期の存在は不可欠だと考える。 なぜ、非同期が必要なのか? リクエストの応答待ちをしている間に他の処理を動かして、効率よく処理をしたいから…

RabbitMQでのメッセージ消失の対策

RabbitMQでのメッセージ消失の対策

2024年3月の振り返り

個人の3月振り返り

ハンズオンで学ぶ:PrometheusとGrafanaの魅力

PrometheusとGrafana、Exporterを使ったことがなかったので、チュートリアルでまずは動かしてみる Prometheusとは Prometheusは、オープンソースのシステム監視およびアラートツールキット。メトリクスを時系列データとして収集して保存する。 Prometheusエ…

RabbitMQとは?チュートリアルで理解を深める

RabbitMQを使って、メッセージキューの理解を深めていく。 RabbitMQとは オープンソースのメッセージ指向ミドルウェアで、メッセージキューを利用してアプリケーション間の非同期通信を実現するためのソフトウェア。 AMQAと呼ばれるプロトコルを使用する。 q…

Streamlitを使用した2軸の複合グラフ作成手順

PB曲線をStreamlitで作成したいので、2軸グラフにチャレンジ。 Streamlitで2軸の複合グラフを作成するためには、altair_chartを使用する。 altair_chartは、Altairライブラリを使用して、グラフを表示するAPI。 そのため、altair_chartを使用する場合は、Al…

Streamlitで簡単なフォームを作成にチャレンジ

前回はstreamlitを使ってみたので、今回はstreamlitで簡単なフォーム画面を作成してみる。 kotapontan.hatenablog.com 作成する画面 簡単な映画の評価アンケートを入力する画面を作成する。 性別と映画の視聴頻度は、ラジオボタンを使って、評価はスライダー…

データ分析の第一歩:Pandasを使ったデータ型と操作

streamlitでも出てきたpandasを使ったことがないので、基本的な部分をやってみる。 これを使いこなして、品質データもサクッと集計したり消化スケジュールもサクッとグラフ化して雑務の工数を減らしたい。 pandasのデータ型 Pandasのデータ型としてはSeries…

リーダーの課題解決アプローチ。カネヴィンフレームワーク

ウクライナ軍に入隊したアジャイルコーチがカネヴィンフレームワークを使って、課題等を解決したとのことで、カネヴィンフレームワークというのを初めて気になり、調べてみた。 www.publickey1.jp トラブルが発生すると、日本企業では原因を探し始める。 欠…

ソート可能な一意な値を生成するULIDが超絶便利

UUIDは一意な値だが、ソートできない問題がある。 その課題を解決したソート可能な一意な値を生成できるULIDは非常に便利!! ULIDとは ULIDは、ソート可能な一意の識別子。 辞書順にソート可能であり、UUIDと128bitの互換性がある。 ULIDの構造は、48bitがタ…

Pythonデコレータの実装方法

ロバストPythonでも出てきたが、自分でデコレータを作成してみた。引数ありなしで少し実装が変わるので注意したい。 デコレータ デコレータは関数の前後に実行したい振る舞いを定義することができる。 コンテキストマネージャとの違いは? コンテキストマネ…

Pythonで簡単なGUI作成: Streamlitの活用

この記事が目に留まり、Streamlitを知ったので、使ってみた。 Pythonで簡単にWebアプリの画面が出来ちゃう it.impress.co.jp Streamlit(ストリームリット) Streamlitは、データ分析型のWebアプリケーションフレームワークとして広く利用されている。 簡単な…

lru_cacheデコレータを使ってみよう

ロバストPythonでも出てきたlru_cacheを試してみる。 キャッシュをデコレータだけで実現でき、標準で備わっているのでいい。 lru_cacheとは 関数をメモ化用の呼び出し可能オブジェクトでラップし、呼び出し最大maxsize回まで保存するデコレータ maxsizeを指…

高速な検索スピードを体感するTimescaleDB

データ集計など時間がかかわるデータの検索に時系列DBは必須。 使い方や関数は早めにキャッチアップが必要だと実感。 時系列DBとは 時間情報を持ったデータを格納し、最適化されたデータベース。 TimescaleDBはその中の1つであり、今回TimescaleDBをお試しし…

TimescaleDBのセットアップ

時系列DBのことを知りたくて、TimescaleDBのコンテナを使ってサクッとセットアップ。 時系列DBとは 時間情報を持ったデータを格納し、最適化したデータベース。 TimescaleDBはその中の1つ。詳細は参考の資料を参照。 https://www.sraoss.co.jp/wp-content/u…

SQLAlchemyのORMを活用したデータの一括操作

大量データを1件ずつ登録、更新、削除をした場合、データベースとのやりとりが必要になる。 そのため、大量データをまとめて投入したい。 その方法として、bulk insertなどがある。 SQLAlchemyのORMを使ってbulk操作を実現するのか確認する。 wa3.i-3-i.info…

2024年2月の振り返り

もう2月も終わりということで、2月の振り返り。 やったこと 朝活または夜活を20分やる なんとか2月も継続してやることができた。順調に草も生えてきている。 ただ、2日ほど草が生えてないけど、気にしない。 投稿をいつもより頑張ってみた 1月が8記事に対し…

リトライ処理をbackoffモジュールで簡単に実装する

リトライ処理を自分で作り込まずに、backoffモジュールを活用することでよりコードがシンプルになる。 これからはbackoffモジュールを活用していきたい。 backoffモジュールとは backoffモジュールは条件が満たされるまでリトライするためのデコレータ。 ネ…

デコレータでタイムアウトを設定しよう!!

時間がかかる処理に対して、タイムアウトを設定したい場合に使用するためのデコレータとして、timeout_decorator.timeoutがあるので、使ってみた。 用途として、サーバに対する検索のリクエストを実行した際に、検索に時間がかかる場合にタイムアウトを設定…

FastAPIのエラーハンドラーを使ってコードをシンプルに!!

エラーハンドラーの設定をすることで、try-except毎にレスポンスの組み立てが不要になり、コードがシンプルになると考える。 自分はこのエラーハンドラーの機能があり、助かってる。 エラーハンドラーの設定 特定のエラーに対する応答結果をカスタマイズした…

Pythonのclick.commandを使えば簡単!コマンドの実装方法

シェルスクリプトで頑張って作っていたパラメータの解析もPythonのclick.commandを使えば簡単に実装できるし、コマンドで必要なことがモジュールとして提供されている。 シェルスクリプトから脱却して、Pythonでコマンドを作ろうぜ。 フォントの色、スタイル…

Pythonのclick.commandを利用して簡単にプログレスバーを作成

click.commandを使えば、コマンドのプログレスバーを簡単に実現できる。 少し感動した自分がいる。 click.commandとは コマンドラインインタフェースを作成するためのPythonのパッケージ。 基本例 イテレータのデータを処理する場合、click.progressbarに処…

SQLAlchemy ORMでのJOINのやり方

SQLAlchemyのORMを使ったSELECT時のJOINのやり方がよくわからなかったので、調べてみた。 やりたいこと studentテーブルのschool_idとschoolテーブルのidを結合して、 student.id,student,name,school.nameを取得したい。 テーブルのデータは以下のとおり。 …

データベース連携に便利なPython ORMツール - SQLAlchemy

SQLAlchemyを使うことが増えてきたので・・・。 SQLAlchemy とは? SQLAlchemyは、Python向けのORM(オブジェクト リレーショナル マッパー)。 効率的かつ高パフォーマンスデータベースアクセスを目的に設計されているとのこと。 www.sqlalchemy.org データ…

2024年1月の振り返り

1年の始まりの月なので、なんとか良い感じにやることをできている。 これから仕事の調子とかいろいろあるけど、なんとか継続してやっていきたい。 朝活または夜活を20分やる 2023年は休みの日に自分の時間を確保できなかった。 休みの日に何かやろうとすると…

psycopg2のインストールでエラーが出た話

sqlalchemyを使ってDBの検索をやろうとして、psycopg2モジュールが不足していたので、pip install をしたところエラーが出た。 ググって最初とかに出た内容を試したけど、エラーが解消しなかったので、メモとして残しておく。 環境とエラー内容 エラーが発生…

コンテキストマネージャの使い方とは?

はじめに ロバストPythonでコンテキストマネージャが出てきたので、使い方を簡単に整理する。 コンテキストマネージャが使えるか使えないかがPython初級者と中級者との差かな・・・。 使い所はどこ? ファイルのオープン/クローズや、データベースの実行成…

pydanticのRootModelの恩恵って何?

pydanticのRootModelは何に使うのか? pydanticのRootModelはListやDictの値に対してpydanticの恩恵を受けたいときに使うらしい。 pydanticを使い出したときに、ListやDictを使う時はRootModelが必要と教えてもらったので、素直にRootModelを使っていたけど…

ロバストPythonがすごい!

ロバストPythonを年末年始の休みで読み終わったので、感想をまとめる。 ロバストPython ―クリーンで保守しやすいコードを書く作者:Patrick Viaforeオーム社Amazon 目次 1章 ロバストPython入門 2章 Pythonデータ型入門 3章 型アノテーション 4章 型制約 5章 …

本日の朝活メモ

今日の朝活 SQLAlchemyのクイックスタートを実施中。 テーブル定義が簡単に書ける ORMなので、SQL書かずにテーブルが作成できる。 このようにテーブルを定義すると。 # モデルベースクラスを作成 #Base = declarative_base() と同等(2.0から) class Base(Dec…