OSとアプリケーションソフトウェアの中間的な位置づけを持つソフトウェアの総称。 RDBMSなどはその位置づけであったが、現在ではRDBMSあるいはDBとして一つのジャンルとして確立されているため、ミドルウェアと呼ぶ事は殆どない。 いわゆるソフトウェア界の中間管理職と言える。 上からはユーザのためと無理難題を押しつけられ、下からはそんな面倒な事はそっちでやれと板挟み。
インフラストリーミングチームの近藤 (@udzura) です。今回は、ミラティブで内製しているオブジェクトストレージサーバ「b3」の紹介記事を書きたいと思います。 今回の記事は、6月にGopher Talkというイベントで発表した「Go製ミドルウェアを実践投入するにあたりやったこと」をベースに、内容を詳細にしたり直近の開発状況に合わせて更新したものです。一部内容はこの発表と重複していますがご了承ください。 オブジェクトストレージサーバを内製した背景 1. 大量オブジェクトの操作や増え続ける転送量に対応したい 2. 一定期間しかファイルの保持をしない 3. オンメモリ/SSD/HDDを組み合わせ…
Software. ソフトウェア
簡単なものですが、自作のミドルウェアを作成してみましょう。 expressjs.com Expressのガイドにも記載がありますが、 「 req , res 」のオブジェクト以外にも第三引数に「 next 」を渡すことができます。 この「 next 」が次のミドルウェアを指す関数となっています。 文字だけではわかりづらいので実際に記述してみます。(_の部分) const express = require('express'); const app = express(); const morgan = require('morgan'); app.use(morgan('tiny')); /…
ミドルウェアとは、リクエスト/レスポンスのライフサイクルの中で実行される関数のこ とを指します。 これまでは下記のものを使用してきました。 //フォームからデータを受け取れるようにする ・app.use(express.urlencoded({ extended: true })); //リクエストはpostかgetのみなのでPUT, DELETEを使えるようにオーバーライドしておく ・app.use(methodOverride('_method')) ・ミドルウェアはただの関数 ・各ミドルウェアはリクエストオブジェクトとレスポンスオブジェクトにアクセス可能 ・ミドルウェアは「res.sen…
こんにちは、リンクアンドモチベーション SREグループの久原です。今回は、SREチーム内の生産性・信頼性向上のために取り組んだミドルウェアアップデートの自動化施策について紹介いたします。 背景 自動化の成果 手順の簡略化 before after 対応時間の削減 やったこと ミドルウェアアップデートの手順 自動化の方針 ①各項目ごとに手動の部分はCodeBuildを使って自動化する before after ②項目間の移行はCodePipelineを使って一気に実施できるようにする 今後の展望 背景 なぜミドルウェアアップデートの自動化に取り組んだのか?それは現在SREチームで注力している 「…
Expressのミドルウェアの挙動、特に非同期処理をおこなうにエラーが発生した場合の挙動が気になったので試してみた。 ミドルウェアで非同期処理をするのは前処理でデータベースに登録するケース等を想定している。 挙動を確認した実装はGitHubにおいた:nodejs-module-labo/express-middleware at main · s1r-J/nodejs-module-labo 実装で気をつけるポイント 先にポイントをまとめておく。 next()は複数回呼び出しても問題ない ミドルウェアでエラーを発生されるときはnext(err);のように呼び出す 呼び出さずにthrowするだけ…
プログラミングの仕事をしていると、外来語由来のカタカナ専門用語が非常に出くわします。 ライブラリとかミドルウェアとかフレームワークといった感じですね。 今回は改めて、その意味について調べてみました。 間違ってたらコメントくださいな~。 ライブラリ API ミドルウェア wikiの記述 IBMの記述 RedHatの記述 Microsoftのdefinition 英語圏でも定義は別れていそう フレームワーク IDE SDK Platform ライブラリ 単体では動作することができず、意図的に組み込んで使うプログラムです。 簡単にいえば、import とか、include とかして呼び出すプログラム…
こんにちは。クルーズ株式会社CTOの鈴木です。 今回はこの一連のOS/ミドルウェアバージョンアップの中の残タスクとなっているWebおよびバッチ用のインスタンスの対応の話をしたいと思います。 以前の投稿「脱レガシーシステム⑥(DBインスタンスのOS/MariaDBバージョンを最新安定版にあげた話)」で記載のとおり、2020年の10月にDBまではOS/ミドルウェアバージョンアップが完了して残るはPHP7.4周りのみとなっています。
readouble.comによるとミドルウェアは アプリケーションへ送信されたHTTPリクエストをフィルタリングするものである。 このミドルウェアはapp/Http/Middlewareディレクトリに設置される。 基本的にアプリの流れは以下の通り クライアント(ブラウザ)がリクエスト ルーティングからコントローラを呼び出し ビューをレンダリングして、レスポンスとしてクライアントへ返される ここにミドルウェアが加わることにより以下のようになる クライアント(ブラウザ)がリクエスト ミドルウェアの処理(Before) ルーティングからコントローラを呼び出し、 ビューをレンダリングして、レスポンスを…
以前、 Tye が設定した環境変数の値を確認する記事を書いた。 tsubalog.hatenablog.com そのときに実装したコードが他にも使い道ありそうだったから、ミドルウェアとして NuGet パッケージにした。 www.nuget.org 使い方は README にまとめてあるが、 ASP.NET Core での利用を想定している。 パッケージをインストールする Startup.cs の Configure メソッドで app.UseEnviewer(); を実行する 実行したアプリの /enviewer にアクセスすると、下図のように構成値が列挙される とりあえず作っただけなので …
Object-Oriented Conferece 2024に参加してみました。 なかなかこういうカンファレンスに参加する時間が取れず久々の参加でした。 設計とは、とか、オブジェクト指向とはというそもそも論から、やってみた系の事例紹介まで幅広く取り上げられており、非常に刺激的でした。 本記事は身内で公開用にまとめていたのですが、その機会も無くなったのでここに投下します。 まとめは自分が参加した講演のみです。 一応自分なりにまとめてみたつもりですが、メモとかは結構スライドそのままになってしまっています。 詳細については公開資料の場所がわかったものはURLを載せていますので公開資料を確認してみてく…
MackerelでのOpenTelemetry対応パブリックベータの提供が開始したので、Mackerel CREの私も習熟すべくいろいろと実験をしています。 mackerel.io ホストやミドルウェアのメトリックを取得しようというときにはOpenTelemetry CollectorのReceiverでメトリックを収集し、ExporterにMackerelのOTLPエンドポイントを示して投稿、というのが王道なのですが、今回はあえて「Mackerelの既存のメトリックプラグインの出力をOpenTelemetryのメトリックとして送ってみる」ということを試してみました。 結論から言えば、(加工は…
【2024.03.29更新】C言語、C++言語、Pascal言語のカテゴリを追加 【2024.03.20更新】MSX-C(MSX公式のC言語コンパイラ) 追加 【2024.03.16更新】zasm(オンライン Z80用 クロスアセンブラ) 追加 【2023.12.05更新】マシン語・C言語による開発・プログラミング系アプリ、MSX BASIC向け開発アプリ 追加 【2022.07.30更新】画像作成・画像変換系アプリを別ページへ移動しました。 【2022.07.30更新】開発・プログラミング系アプリ 追加 ネットで見つけたMSX向け開発関連ツールをまとめました。嬉しいことに最近どんどん増えてき…
こんにちは、虎の穴ラボの浜田です。 ChatGPTとGitHub Copilot Chatを利用して単体テストコードをなるべく楽に作成できないか検証を行いましたので、その内容をお伝えしたいと思います。 はじめに システムの品質を担保するためにテストコードの作成は非常に重要です。 実際、私も過去にミドルウェアのバージョンアップや、プログラム改修時の予期していなかった箇所へ影響の発見など、何度もテストコードに助けられました。 ただテストコードを作成する際、テストパターンの洗い出しやモック、テストデータの準備など意外と工数がかかってしまいます。 今回はChatGPT(またはGitHub Copilo…
I. はじめに こんにちは。 ブリスウェルのSonです。 Lambdaを使ってNode.jsアプリを開発する際、いくつかの困っていることに直面しています。 ・複雑なエラー処理の実装 ・認証や権限の実装 ・安全な環境変数の管理 ・パフォーマンス最適化 その改善策としてフレームワークを探していたところ、Middyが良さそうだと感じて、実際に使ってみた。 II. Middyとは ① 概要 AWS LambdaのためのスタイリッシュなNode.jsミドルウェアエンジンです。 Lambdaコードを整理し、重複を外し、ビジネスロジックに集中する。 ② メリット すぐに使用できる豊富な公式のミドルウェアとユ…
From: infomail@japan.cnet.com infomail@japan.cnet.com] Sent: Monday, March 25, 2024 7:57 AMSubject: 比類のないUXを提供、アプリケーションのパフォーマンスを高める次世代SD-WANのチカラ [CNET Japan/ZDNET Japan Info Mail] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ CNET Japan/ZDNET Japan Information Mail 2024年03月25日 ━━━━━━━━━━━━━━━━━━━━━━━━朝日インタ…
Motivation ChatGPT3.5くんのまとめ 要点を箇条書きでまとめると以下の通りです: 最初は、Cloudflare Workers上でウェブアプリケーションを作成したかった。 Cloudflare Workersで動作する良いフレームワークがなかったため、Honoの開発を開始し、Trie木を使用したルーターの構築方法を学ぶ良い機会と考えた。 友人が超高速なルーター「RegExpRouter」を持ち込んできた。また、Basic認証ミドルウェアを作成した友人もいた。 Web標準APIのみを使用することで、DenoやBunで動作可能になった。ExpressがBunで動作するようになった…
news.yahoo.co.jp 今回、対応を進めるにあたり、サービス内で一部語句が伏せ字になる点、特定語句を新規表現へと置き換える点を報告。後者の具体例としては「ロリ→ひよこ」「催眠→トランス/暗示」「調教→しつけ」などがある。 同人販売サイト「DLsite」アダルト表現を「ひよこ」「秘密さわさわ」などに変更 クレジットカード会社から要請(KAI-YOU.net) - Yahoo!ニュース ⇧ この対応は、悪手に過ぎる気が... アダルトコンテンツということで、影響範囲が局所的になると思われるとは言え、「ダブル・ミーニング」が汚染されてしまう気がするんだが... 今回、「ゾーニング」という概…
こんにちは、コバヤシです。 ついにLaravel11が3月15日にリリースされました。 約1ヶ月遅れのリリースですね。 前回のブログでLaravel11の変更点をまとめましたが、今回のリリースに伴い、再び変更点を見ていきたいと思います。 前回のブログはこちら tech.arms-soft.co.jp スケルトンのスリム化 アプリケーションの基本構造がとてもスリムになり、 フォルダ構造が以前のバージョンと比べてシンプルになりました。 app/Console、app/Exceptions、app/Http/Middlewareのフォルダが削除され、ルート、ミドルウェア、例外はbootstrap/a…
RabbitMQを使って、メッセージキューの理解を深めていく。 RabbitMQとは オープンソースのメッセージ指向ミドルウェアで、メッセージキューを利用してアプリケーション間の非同期通信を実現するためのソフトウェア。 AMQAと呼ばれるプロトコルを使用する。 qiita.com Kafkaとの違い aws.amazon.com やりたいこと RabbitMQを介して、クライアントAからメッセージを送信して、クライアントBにメッセージを渡す。 RabbitMQのセットアップ RabbitMQはコンテナで起動する。 RabbitMQのコンテナは、管理プラグインが有効となっているものとなっていない…
ログ*1、油断すると絶妙に情報量が足りなかったり、欲しいものがdebugレベルでしか出ていなくて本番環境で見れなかったりしがち。ここでこういうログが欲しくなるだろう、という感覚を鍛えるには、実際にログが足りなくて困る経験をするしかないのか、もうちょっと高速道路が整備されているものなのか。 外部APIにリクエストを送る部分はとりあえずリクエスト・レスポンスの内容を (ユーザー個人情報などには気をつけながら) ログ出力しておくと調査に役に立つ、というのはありそう。GoのgRPCクライアントのミドルウェアにはまさにそういうのがあるし、HTTPクライアントにログ出力の仕組みを差し込むのもすぐできる。自…
1ヶ月ほど読み進めていた「データ指向アプリケーションデザイン」を読了しました。 オライリーから出版されている本の中でも、かなり分厚い部類の書籍だったのと、章ごとの情報量が凄かったので結構、時間がかかってしまいました。 データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理作者:Martin KleppmannオライリージャパンAmazon 個人的には難易度の高い書籍だと思うのですが、それでも多くの方からオススメされてきた書籍でもあります。 今まで読んでは飽き...読んでは飽き...を繰り返していましたが、ようやく一貫して読了したので簡単に書評を書いてみたいと思…
自民・二階俊博氏、次期衆院選不出馬の意向 きょう表明へ パーティー収入不記載事件 「会議で話されている内容と、ソースコードが全然違う」〜イオン発の“新ネットスーパー”リリース直前の1年間を語る|イオンネクストCTOインタビュー |AEON TECH HUB タクシー会社と間違えて電話してきたお婆ちゃんが3回連続でかけてきたので話を聞いたら…かなり切羽詰まったので出来る限り助けた話 能登半島地震、途上国からSNSに大量偽情報…X利用が1日4000万人の日本向け「インプ狙い」 「MacBook Airを使うと口の中に奇妙な味がする」という謎現象が報告される オリーブオイル値上げ「過去に例見ないほど…
コードの全量のリンクをこちらの記事に書いているので、先読みで全量を見たい方はこちらを参照してください。 vermeer.hatenablog.jp 今回はInterfaceのdefaultを使った「数値編」を拡張した「単位編」です。 Interfaceのdefaultではなくて、Interfaceを使った実装編になります。 何が嬉しいの? 期間とか比較とか時間に関する操作をインスタンスメソッドで扱えるとUtilsの内容を知らなくても利用側は使えるのでちょっと嬉しいかな?というくらいの嬉しさです。 とくに期間についてはChronoUnitを使った方が良いケースとPeriodを使った方が良いケース…
OpenTelemetryブームなので、実際今Collectorでどこまですぐに(何かを自作せずに)監視したいもの、特にミドルウェアまわりが見られるのか、というのを把握しておこうと思う。 opentelemetry-collector-contribリポジトリのまずはreceiverを一覧してざっとREADMEを見て回るところから始めた。 github.com 箇条書きのalpha、betaといったものは安定度(stability)で、development→alpha→beta→stableというステージになっているとのこと。実際のところcontribにあるものでstableなものはなく、d…