TL;DR 一行追加するだけで関数をメモ化するマクロを作った。 成果物はこちら https://docs.rs/memoise/ 背景 同じ引数に対して同じ値を返す関数(いわゆる参照透明だったり数学的だったりな関数)では、 関数の計算結果を保存しておくことによって計算を高速化したりすることができます。 このようなテクニックを関数のメモ化(memoise, memoize, memoization)などと呼びます。 特に再帰的に定義される関数についてメモ化を行うことによって、 動的計画法の実装をシンプルで直感的なものにできたりします。 しかし、関数のメモ化はやりたいことが自明なのにもかかわらず、 毎回手で書いていると微妙に面倒だったり、うっかりメモ化忘れで計算量が爆発してしまったり、 ちょっと辛いところがありました。 特にRustを使っていると、グローバル変数を雑に使うことを許して貰えないの
PythonのPipelineパッケージ比較:Airflow, Luigi, Gokart, Metaflow, Kedro, PipelineXPythonワークフローデータサイエンスPipelineETL この記事では、Open-sourceのPipeline/Workflow開発用PythonパッケージのAirflow, Luigi, Gokart, Metaflow, Kedro, PipelineXを比較します。 この記事では、"Pipeline"、"Workflow"、"DAG"の単語はほぼ同じ意味で使用しています。 要約 👍: 良い 👍👍: より良い 2015年にAirbnb社からリリースされました。 Airflowは、Pythonコード(独立したPythonモジュール)でDAGを定義します。 (オプションとして、非公式の dag-factory 等を使用して、YAML
疎通できる構築したルータ一覧を作成する必要があり、 Pythonでルータにpingして、その結果を一覧にしてみました。 はじめに ある日、Prometheusの監視対象ルータ一覧を作成することにしましたが、 管理台帳上ではルータは120台ぐらいあるように見えます。 しかしながら、よくよく確認すると、構築が延期になったり、そもそも欠番になったりして、 実際に構築したルータが、どれかよくわからない状態になっていました。 構築されていないルータを監視対象に入れるのはもったいないので、 疎通できるルータの一覧を作成することにしました。 疎通確認はpingでしますが、 1回目のpingでは応答しないルータもあるため、必ず2回pingを実行して、 ルータ一覧を作成することにします。 今回は雑に宛先リストを作成して、Pingの結果(OK or NG)を、宛先リストに追記します。 後々、YAML形式に変換
同じTypeScriptという言語を利用する場合においても、トランスパイラによってTypeScript自体の機能制限がかかったり、思わぬトラブルを招く場合があります。それぞれのトランスパイラの特徴を踏まえた上で、それにより生じる問題も見ていきましょう。 1-1. tsc TypeScriptの開発元であるMicrosoft純正のTypeScriptトランスパイラです。TypeScriptを利用する際に typescript パッケージをインストールする必要がありますが、それに同梱されています。 公式ツールなだけあって最も早く最新バージョンのTypeScriptに対応したり、言語すべての機能を利用することができる一方で、バンドラではないためminifyやchunkの設定はできません。また、Path Aliasesの未解決や旧ESへの互換性が不完全であることが欠点として挙げられます。 tsco
WEBシステム、WEBプログラム開発において昨今ではjQueryではなくVue.js、React、AngularなどのJSフレームワークが主流となってきています。ただ、これらの活用は学習コストが高いといわれています。その原因はフロントエンドありきで話が進みすぎていたからだと考えています。したがって、自分の投稿記事は、jQueryを多用するWEBシステムエンジニアに向けた、フォーム操作をメインに置いた半備忘録兼自分なりに解釈した解説です。 ちなみに自分はサーバ構築からバックエンドまでこなしているワンオペエンジニア(フリーランス、非正規雇用に非ず)です。 コンポーネント、ルーティング、スタイル周りの続編を作成しました(編集が困難になるほど容量圧迫してたので、それぞれで独立させています)。また、Vueは3.2から採用されたscript setup、Angularは14から採用されたスタンドアロン
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く