ククログ
https://www.clear-code.com/blog/
ククログはクリアコードのブログです。開発に関わる技術情報や、会社での出来事を記録しています。
フィード

Thunderbird版FlexConfirmMailユーザーの皆さまへのご案内:「自動更新あり」の状態を維持するための移行ガイド
ククログ
結城です。当社のメール誤送信対策製品「FlexConfirmMail」のThunderbirdアドオン版を従来から使用している方は、自動更新によって提供された最新バージョンとして4.2.5をお使いかと思います。現在、このFlexConfirmMailの不具合を修正し新機能を追加した新バージョンとして4.2.8が公開されていますが、従来からFlexConfirmMailをお使いの方の環境では、このバージョンは自動更新では反映されません。今後もFlexConfirmMailをThunderbirdでお使い頂く場合は、FlexConfirmMailの再インストールと設定の引き継ぎが必要となります。本記事では、FlexConfirmMailの再インストールおよび設定の引き継ぎが必要となっている背景事情を説明し、実際の引き継ぎ手順を説明します。背景実は現在、Thunderbird Add-onsのWebサイト上にはFlexConfirmMailという名前のアドオンが以下の2つ登録されています。FlexConfirmMail バージョン4.2.8識別子は flex-confirm-mail-progressive@clear-code.com通称「通常版」FlexConfirmMail Stable バージョン4.2.5識別子は flex-confirm-mail@clear-code.com通称「安定版」FlexConfirmMailは元々、識別子が flex-confirm-mail@clear-code.com である物のみが存在していました。2025年5月1日以前からFlexConfirmMailを使われていた方の環境にはこちらがインストールされており、自動更新も行われていました。ここで、ある時期に当社サポートサービスのお客様の環境で、FlexConfirmMailについて「不具合修正などは引き続き自動更新で適用したい」「新機能は自動更新で反映されて欲しくない」という、保守的な運用が必要な状況が発生しました。このような場合、通常リリースとは更新チャンネルを分けた「安定版」を新たに設けて1、保守的な運用が必要な利用者のみにそちらへの切り替えを案内するのがセオリーです。しかしながら、こちらのお客様の環境では端末数が非常に多く、集中管理も徹底されていない場合があるなどの事情か
1日前

RubyWorld Conference 2025 - Ruby Prize 2025最終ノミネート者
ククログ
Ruby Prize 2025で最終ノミネート者に選んでもらった須藤です。RubyWorld Conference 2025内で表彰式があったので参加しました。Ruby Prize 2025最終ノミネート者はStanさんと田篭さんと私の3人で、受賞者はStanさんでした。おめでとうございます!みんなで写真を撮りました。#rubyfriends#rubyworld@tagomoris @ktou pic.twitter.com/9IiQaFytBo— Stan Lo (@_st0012) November 6, 2025 #rubyfriends on stage! for #rubyprize pic.twitter.com/ZmW1dkUOLo— tagomoris (@tagomoris) November 6, 2025 トロフィーと賞状と賞金10万円をもらいました。#rubyworld Ruby Prize 2025の最終ノミネート者になったよー pic.twitter.com/UNbBm2ohxM— す (@ktou) November 6, 2025 最終ノミネート者の1人としてまつもとさんにインタビューしてもらいました。後日、Ruby Prize 2025のサイトにYouTubeにアップロードされた動画が埋め込まれるのではないかと思います。これはインタビュー後の写真です。RubyWorld Conference2025お疲れ様でした‼️Rubyコミュニティの暖かさと力強さを感じた2日間でした🎉Ruby Prize最終ノミネートの皆様も松江にお越しいただきありがとうございます!また来年の12月にお会いしましょう🍻 #RubyWorld pic.twitter.com/vI5Ae3Bo6D— Ruby City MATSUE (@rubycitymatsue) November 7, 2025 まつもとさんからの受賞理由のコメントにはRabbitのメンテナンスが挙がっていました。まつもとさんがなかなかMagicPointからRabbitに乗り換えてくれなくて、まつもとさんのプレゼンのあとに「いつRabbitに乗り換えますか?」と質問していたのが懐かしいです。まつもとさんのプレゼンを支えられて誇らしいです。そうそう、RubyWorld Conferenc...
1日前

Fluent Package v6 LTSで利用可能になった OpenTelemetry プラグインを紹介
ククログ
2025年8月29日に、Fluentd の安定版パッケージ Fluent Package v6 LTS をリリースしました。この v6 LTS ではいくつかのプラグインを新たに同梱しており、そのひとつが OpenTelemetry プラグイン です。このプラグインを利用すると、Fluentd から直接 OpenTelemetry Collector や OTLP 対応サービス(Grafana Tempo、Datadog、New Relic など)へログを転送できます。本記事では、この OpenTelemetry プラグインの概要と基本的な使い方を紹介します。OpenTelemetry とはOpenTelemetry は、アプリケーションやインフラの ログ・メトリクス・トレースを統一的に収集・転送するためのオープンソースプロジェクトです。CNCF(Cloud Native Computing Foundation)が中心となり開発が進められており、主要なクラウドサービスや監視基盤が広く対応しています。OpenTelemetry を利用すると、異なる言語やサービス間でも共通の OpenTelemetry Protocol (OTLP) でデータをやり取りできます。たとえば、アプリケーションのトレース情報や Fluentd が収集したログを同じ Collector に送信し、一元的に可視化・分析することが可能になります。Fluentd がこの仕組みに対応することで、既存のログ収集パイプラインを保ちながら OpenTelemetry ベースの観測基盤へスムーズに統合できるようになります。OpenTelemetry プラグインの概要fluent-plugin-opentelemetry は、現在、以下の 3 つのプラグインで構成されています。プラグイン名役割説明in_opentelemetry受信アプリケーションが OpenTelemetry SDK を使って送信したトレース・メトリクス・ログデータを受信します。Collector の代替入力として利用可能です。out_opentelemetry送信Fluentd 内で処理したイベントを OTLP 形式で Collector や対応サービスに転送します。in_opentelemetry_metricsメトリクスFluentd
4日前

頑なに再代入しない!
ククログ
頑なに再代入しない阿部です。YAPC::Fukuoka 2025で頑なに再代入しない!というタイトルでトークします。スライドも公開しますが、発表用のスライドのため十分な説明が記載されていないので、解説テキストを追加したブログ記事も残します。はじめにトークの説明からコードを読んでいると、この変数はどこで定義され、どこで値が設定されたのか?を確認することがしばしばあります。再代入が多いとどのタイミングで値が変更されるのか?を確認するコストが発生するので、私はめんどうだと思ってしまいます。また、再代入がないほうがメンテナンス性が高いと信じています。なぜならば、すべてが再代入なし(= すべてが定数)の方がバグが生まれにくいはずだからです。(いわゆる関数型プログラミング、というやつです。)と、いうことで私は基本的に再代入をしないコードを書くように心がけています。(もちろん、それによるデメリットがあるのも承知でそのようにしています。)私が始めたOSSではありませんが、現在は9割方私が書いたコードになっているnode-lambda ( https://github.com/motdotla/node-lambda ) (JavaScriptです)を例に、頑なに再代入をしない(関数型プログラミング)を実践した例を紹介します。(これまではデメリットについて、厳密に検証したことがなかったのですが、改めて検証してまとめてデメリットについても発表します。)大規模開発の参考になること間違いなし!という文面で応募しました。私の「頑なに再代入しない!」思いをぶつけるための発表です。イメージしやすいように「関数型プログラミング」という単語を出しましたが、「関数型プログラミング」についての話ではないことをご理解の上お読みください。内容頑なに再代入しない!ワケ再代入しない!コード例再代入しない!デメリット検証再代入しない!実践してみて頑なに再代入しない!ワケ再代入のコード例頑なに再代入しない!ワケの説明の前に再代入しているコードがどういうものか例で示します。let price = 100if (キャンペーンA期間中) { price = price * 0.8}// ...if (キャンペーンF期間中) { // キャンペーンF期間中のみ税込価格から2割引 price = (price * 1.1)
9日前

LTS版 Fluent Package v6.0.1をリリース
ククログ
2025年11月11日にLTS版 Fluent Package v6.0.1をリリースしました。本記事では、Fluent Package v6.0.1の変更内容を紹介します。Fluent Package v6.0.1Fluent Package v6.0.1では、以下の改善を行いました。Rubyのバージョンを3.4.7にアップデート同梱のFluentdをv1.19.0からv1.19.1に更新tmpfiles.dによってFluentdの一時ディレクトリーが消去されてしまう問題を修正Windows版インストーラーで、空白を含むパスへのインストールがエラーとなる不具合を修正この記事では、Fluent Package v6.0.1の主な変更点を詳しく解説します。変更内容の詳細Rubyのバージョンを3.4.7にアップデートRuby 3.4.7には複数のバグと脆弱性の修正が含まれています。詳細はRuby 3.4.7 リリースノート をご覧ください。同梱のFluentdをv1.19.0からv1.19.1に更新Fluentd v1.19.1では以下の修正が含まれています。YAML形式の設定: 配列表記をサポートこれまで複数の値を設定する場合には、retryable_response_codes: 503, 504 のようにカンマ区切りで値を記述する必要がありました。この修正により、retryable_response_codes: [503, 504]やretryable_response_codes: - 503 - 504と、よりYAML形式らしく記述できるようになりました。※ $arg という特殊な要素のみ、以前から配列表記をサポートしてました。※ 配列で設定するオプションに、単一の整数値を指定すると設定エラーが発生する問題がまだあります。詳細については #5149 を参照ください。tmpfiles.dによってFluentdの一時ディレクトリーが消去されてしまう問題を修正Fluent Package v5.0.8 で先行して修正されていた不具合を、Fluent Package v6.0.1 に取り込みました。一部のLinuxディストリビューションでは、以下のようにtmpfiles.dが設定されており、一時ディレクトリー/tmp内のファイルやディレクトリが10日以上使用されない
10日前

2025年度Rubyアソシエーション開発助成金:pure Ruby Apache Arrowの実装
ククログ
Apache Arrowの開発に参加している須藤です。この数年度はRubyアソシエーション開発助成金をメンターとしてお手伝いしていたのですが、今年度は開発する側として参加します。拡張ライブラリーとかを使わずにRubyのみでApache Arrowフォーマットのシリアライザー・デシリアライザーを開発します。応募背景2025-08-28に開催されたRuby Association Activity Reportは2024年度の開発助成事業の成果発表もありました。私は2つのプロジェクトのメンターをしていたので参加しました。そのときの懇親会で開発助成事業をもっとよくするにはどうしたらよいと思う?というような話があったので、私の思う課題を考えてみたのでした。それの解決案の1つが自分が応募するだったので応募しました。でも、それだとスケールしないので、よい解決案ではないんですよね。。。今年度のプロジェクトをやりながら別の案を考えます。。。応募内容Rubyのみで実装されたApache Arrowのシリアライザー・デシリアライザーが欲しいなぁとはActive Record ADBC adapterを作っているときに思っていました。そして、少しずつ作り始めていました。私は仕事の時間も趣味の時間もフリーソフトウェアの開発をしていますが、キャパオーバーで追加でなにか新しいことをやっている余裕はありません。開発助成事業用に新しいことをやる余裕はありません。そのため、開発助成事業に関係なくやるつもりのやつを題材にする必要があり、少しずつやり始めていたApache ArrowのRuby実装で応募しました。応募内容は次のとおりです。これからRubyアソシエーション開発助成金に応募したい人の参考になるといいなぁと思うので共有します。応募者名:株式会社クリアコード担当者名:須藤功平連絡先電子メールアドレス:kou@clear-code.com略歴:応募者:2006年7月設立。Rubyを組み込んだ製品やRubyバインディングを持つ製品、Rubyで開発された製品の開発・メンテナンスをしている。RubyKaigi(旧日本Ruby会議)には2009年よりスポンサーしてRubyを応援している。担当者:2004年よりRubyコミッターとして標準添付ライブラリーを開発・メンテナンスしている。2017年よりApach
17日前

実践!Perlのワンライナー ~Perlがあれば何でもできる~
ククログ
Perl大好き阿部です。YAPC::Fukuoka 2025でトークできることになりました。内容の概要はこちらをご覧ください!その内容がPerlにまったく関係ないので、Perl好きの断片を語るための記事です。はじめにタイトルからもわかる通りPerlのワンライナーを紹介します。私はPerlのワンライナーを普段からよく使っています。(Perlでだいたい達成できるため、いまだにsedとawkの文法を覚えていません ;-()ということで、本記事ではPerlがあれば何でもできると題しまして、grep、sed、awkと同様のことをPerlのワンライナーで実現する方法を紹介します。注意:ワンライナーはいろいろ省略した状態なので、それだけを見ても何が起きているのかわかりにくいです。そこで「省略しないPerlのコードだとこういうイメージ」というのを合わせて紹介していきます。わかりやすさを優先するので、正確ではないところもあると思いますがご容赦ください。前提Perlの文法をわかっていたほうが理解しやすいので、このあとの説明に必要なところだけを簡単に紹介します。(細かい話はしません。)$_">標準入力の読み込みと$_Perlでは次のように書くと、標準入力を1行ずつ処理できます。foreach my $line (<STDIN>) { print "$line";}$line に標準入力が1行ずつ入ります。example.pl という名前で保存して実行したイメージは次の通りです。$ ls / | perl ./example.plbin@boot/cdrom/dev/etc/home/lib@lib32@lib64@libx32@lost+found/media/mnt/opt/proc/root/run/sbin@snap/srv/swapfilesys/tmp/usr/var/そしてここからが本番です。Perlといえばの$_です!先ほどのコードは次のようにも書けます。foreach (<STDIN>) { print;}これも保存して実行すると先ほどと同じ結果が得られます。いろいろ省略されていて何が起きているのかわからないですね!Perlは変数を省略すると、自動的に$_に値が設定され、またそれを参照するという便利?機能があります。$_ を明示的に書くと次の通りです。foreach $_
21日前

実装者向けのApache Arrowフォーマットの説明
ククログ
Apache Arrowの開発に参加している須藤です。Apache Arrowフォーマットの説明をするときはどうして速いのかやどうして効率がよいのかに注目して説明していました。今回は、Apache Arrowフォーマットのシリアライザー・デシリアライザーを実装する人向けに説明します。Apache Arrowフォーマットの仕様Apache Arrowフォーマットの仕様は https://arrow.apache.org/docs/format/Columnar.html と https://github.com/apache/arrow/tree/main/format で提供されています。前者がテキストでの説明で、後者がそこから参照されているFlatBuffersの定義ファイルです。ここで説明することはこれらを実装者向けに解説したものになります。ここで説明する内容によってこれらの理解を助けるはずですが、最終的にはこれらを参照しながら実装することになります。Apache Arrowフォーマットデータの概観ここではApache Arrowフォーマットで表現されたデータをApache Arrowフォーマットデータと呼ぶことにします。Apache Arrowフォーマットデータは型付きの列指向のテーブルデータを表現しています。Apache Arrowフォーマットデータ+----------------+| 型付き || 列指向 || テーブルデータ |+----------------+テーブルデータは0個以上の「レコードバッチ」に分割されて表現されます。Apache Arrowフォーマットデータ+---------------------------------------------+| 型付き || 列指向 || テーブルデータ || +=================+ +=================+ || | レコードバッチ1 | | レコードバッチ2 | ... || +=================+ +=================+ |+---------------------------------------------+レコードバッチの中に各カラムのデータがあります。Apache Arrowフォーマットデータ+-----------
22日前

Groongaでのセマンティックサーチの実装
ククログ
Groongaの開発をしている須藤です。Groongaはもともとキーワードベースの全文検索機能を提供する全文検索エンジンとして開発されましたが、このご時世なので、セマンティックサーチサポートも拡充しています。この記事では現状のGroongaのセマンティックサーチのサポート度合いを紹介します。セマンティックサーチサポートに必要な機能セマンティックサーチとはテキストを埋め込み表現(エンべディング、embedding、数値ベクトル)に変換し、埋め込み表現がどのくらい似ているかどうかで検索する機能です。埋め込み表現は、うまく作ることができれば字面ではなくその字面のテキストが持っている意味を表現することができます。そのため、埋め込み表現の類似度を使うことで違う字面だけど似ている意味のテキストを見つけられます。たとえば、「ラーメン」でも「中華そば」を探せるというようなものです。セマンティックサーチに必要なものは次の2つです。テキストから埋め込み表現を作る機能高次元の数値ベクトル(埋め込み表現)間の類似度を高速に計算して、類似度順に並び替える機能多くのセマンティックサーチのシステムは後者のみを提供しています。前者は別のシステムと組み合わせて実現することが多いです。類似度関連の処理は、対象の埋め込み表現の数が数万とか数十万とかであれば全データを対象にしても高速に処理できます。しかし、数百万以上になってくると厳しくなってきます。データ量が増えてきたら高速に検索するための補助データ・アルゴリズムを使います。HNSWやNGTやIVFなどです。これらは正確な結果ではなく近似した結果を返す代わりに高速に検索できます。Groongaが提供する機能Groongaは埋め込み表現を作る機能も類似度関連の処理も両方提供する設計にしました。外部の埋め込み表現作成機能を使う場合は、次のメリットがあります。埋め込み表現を作成するサービスはたくさんあるので、用途に合わせて好きなサービスと組み合わせることができる埋め込み表現作成用リソースとセマンティックサーチ用リソースを分離できるたとえば、埋め込み表現作成時と検索時で必要なGPUリソースが違うことが多い一方、次のデメリットがあります。埋め込み表現をシステム間でやりとりしないといけない最近の埋め込み表現は高次元のためデータがおおきくなりがち。たとえば、512次元
25日前

LTS版 Fluent Package v5.0.8をリリース
ククログ
2025年10月8日にLTS版 Fluent Package v5.0.8をリリースしました。本記事では、Fluent Package v5.0.8の変更内容を紹介します。Fluent Package v5.0.8Fluent Package v5.0.8では、以下の改善を行いました。Rubyのバージョンを3.2.9にアップデート同梱のFluentdをv1.16.9からv1.16.10に更新tmpfiles.dによってFluentdの一時ディレクトリーが消去されてしまう問題を修正脆弱性対応のため同梱の Nokogiri (Windows版のみ) と rexml を更新この記事では、Fluent Package v5.0.8の主な変更点を詳しく解説します。変更内容の詳細Rubyのバージョンを3.2.9にアップデートRuby 3.2.9には複数の脆弱性とバグの修正が含まれています。詳細はRuby 3.2.9 リリースノート をご覧ください。同梱のFluentdをv1.16.9からv1.16.10に更新Fluentd v1.16.10では以下の修正が含まれています。serverプラグインヘルパー: Fluentd終了時にすべてのコネクションを適切にクローズするように修正flush_at_shutdownを有効に設定すると、出力に失敗しない限りはバッファーをすべて出力してから停止するべきですが、バッファーファイルが残ったまま停止することがありました。残ったバッファーファイルは次回起動時に読み込まれます。tmpfiles.dによってFluentdの一時ディレクトリーが消去されてしまう問題を修正一部のLinuxディストリビューションでは、以下のようにtmpfiles.dが設定されており、一時ディレクトリー/tmp内のファイルやディレクトリが10日以上使用されない状態が続くと削除されるようになっています。q /tmp 1777 root root 10dout_fileとout_secondary_fileで出力するときに一時ディレクトリー/tmp/fluentd-lock-{...}/を利用していますが、out_fileまたはout_secondary_fileでの出力が行われない状態が続くと/tmp/fluentd-lock-{...}/がtmpfiles.dによって削除され
1ヶ月前

共有ライブラリーをDebianパッケージ化する方法を紹介
ククログ
こんにちは。OpenArmの開発に少しずつ参加している福田です。最近、OpenArm CAN LibraryのDebianパッケージを作成しました。本記事では、現時点の最新のdebian/のお作法をまとめました。概要今回例にするのはOpenArm CAN Libraryで、CMakeでビルドするC++による共有ライブラリーがメインです。本記事では、パッケージをビルドするのに必要な最低限のファイルを用意して、手動でビルドできるようにするところまでを紹介します。debian/ ディレクトリーの作成Debianパッケージの作成には、debian/ディレクトリーを作り、その配下に必要なファイルを作成する必要があります。$ mkdir debianこのdebian/配下に、次のファイルを作成していきます。debian/controldebian/rulesdebian/copyrightdebian/changelogdebian/source/formatdebian/upstream/metadatadebian/install今回は、これらのファイルを手動で作る形を想定して説明しますが、dh_makeを使ってテンプレートを生成する方法もあります。それについては後述する「補足: dh_makeを使ってテンプレートを生成する例」をご覧ください。debian/controlパッケージ全体の情報と、個々のパッケージの情報を書きます。以前のククログでも説明しているので、そちらも参照ください。Debianパッケージの作り方と公開方法: groongaを例にして今回は次のようになりました。https://github.com/enactic/openarm_can/blob/f5794597afb6acc96db7bb019224963221753351/packages/debian/control主なポイントを紹介します。パッケージ全体の情報Source: openarm-canSection: libsPriority: optionalMaintainer: "Enactic, Inc." <openarm@enactic.ai>Rules-Requires-Root: noBuild-Depends: cmake, debhelper-compat (= 13), ninj
1ヶ月前

Redmine全文検索プラグインの全機能紹介!(2025年版)
ククログ
Redmine全文検索プラグインに「クエリー展開」なる機能があることを先ほど知った阿部です。ということで、全文検索プラグインにどのような機能があるのか知りたい方向けに網羅的な機能説明から構成までを紹介するのが本記事です。(弊社のブログでも何度か紹介されている全文検索プラグインですが、機能の網羅的説明や構成の全体像を説明している記事はないので改めて説明します。)いちおしポイント(≒ 機能の一覧)全文検索プラグインをインストールするとRedmineがより便利になるポイント(≒ 追加される機能)を挙げます。検索が速くなるスコアでソート可能高度な検索メタデータで検索類似チケット表示添付ファイル内検索表記のゆらぎ対応Wiki Extensionsのタグで検索Redmineの標準検索を使っているとできて当然と思われるかもしれませんが、構成によっては難しい次の要件も満たしています。権限管理即検索対象にいちおしポイント: 詳細画面キャプチャも提示しながら詳細に説明していきます。1. 検索が速くなるタイトルそのままです。すばやく必要な情報を見つけられることは非常に重要なことです。少し前の記事ですがベンチマークの結果もあるので合わせてご覧ください。2. スコアでソート可能デフォルトでは検索クエリに適合している(情報として価値が高い)データ(チケットやWikiなど)からリスト表示します。これにより欲しているデータにたどり着きやすくなります。スコア以外にも「更新日時」と「作成日時」でもソート可能です。昇順・降順どちらでもソートできます。(標準の検索は更新日時の降順で固定です。)検索結果にスコアの表示この機能はプラグイン設定で「スコアを表示」にチェックを入れることで有効になります。画面キャプチャの赤線の上にある数字がスコアです。スコアは数値そのものの大きさよりも、相対的な順序に意味があります。多くの人は上位から順に確認し、特に最初のN件しか見ないことが多いため、並び順が結果の利用に大きく影響します。スコア値自体は目安や参考材料としてご利用ください。3. 高度な検索error か unable が含まれているが、recipeは含まいないデータを検索したいとき、(error OR unable) -recipe のような複雑なクエリで検索できます。4. メタデータで検索標準の検索でもできる「チケ
2ヶ月前

Groongaサポートサービスの事例紹介 - Groongaのバージョンアップ
ククログ
Groongaのサポートサービスを担当している阿部です。Groongaのバージョンアップをサポートした事例を紹介します。はじめに: Groongaの後方互換性についてGroongaは後方互換性を大事にしています。そのため、既存の環境を崩さずに安心してアップデートできます。さらに、様々なOS向けに公式パッケージを提供しているので、常に最新機能を利用しながら、スムーズで負担の少ないバージョンアップを実現しています。バージョンアップサポートの概要上述の「Groongaの後方互換性について」を読むと簡単にバージョンアップができそうな気持ちになりますが、環境によってはひと手間かかる場合があります。今回サポートしたケースでは「外部と通信不可の環境」でした。取り扱うデータによってはそのような環境で構築されているシステムも多いと思います。「外部と通信不可の環境」の場合、パッケージのバージョンアップやインストールに手間がかかる場合があります。具体的にどのようにパッケージのバージョンアップやインストールに手間がかかるのでしょうか。擬似的に外部との通信ができない状態をつくり、Groongaをインストールしてどのような手間か確認し、どのようなサポートをしたのか説明します。「外部と通信不可の環境」にGroongaをインストールする「外部と通信不可の環境」はDockerを使って再現します。--network=noneオプションを付けて実行すると外部と通信できない状況になるので、そこでインストールを試みます。ドキュメント通りにGroongaをインストールするドキュメントにある次のコマンドでインストールします。(Dockerコンテナ内ではrootで実行するのでsudoは省略しています。)dnf install -y https://packages.apache.org/artifactory/arrow/almalinux/9/apache-arrow-release-latest.rpmdnf install -y https://packages.groonga.org/almalinux/9/groonga-release-latest.noarch.rpmdnf install -y --enablerepo=epel --enablerepo=crb groongaまずはドキュメントに
2ヶ月前

EOLにともないイメージサーバーから削除されてしまったコンテナの代替手段
ククログ
Linuxディストリビューションにおいて、標準のサポート終了にともない、関連するリソースがこれまでと同様には利用できなくなってしまうことがあります。例えばUbuntu 20.04 (Focal)は、5年間のLTSサポートを終了し、Expanded Security Maintenanceとよばれる、延長サポートに移行しています。これにともない、GitHub ActionsではUbuntu 20.04のランナーは利用できなくなりましたし、LXC/Incusから利用できるイメージサーバーからも削除されました。本記事では、EOLにともないイメージサーバーから削除されてしまったコンテナの代替手段を確保する方法について説明します。代替手段については、次の前提条件をもとに検討しました。従来Ubuntu 20.04のIncusコンテナを利用してGitHub Actionsでテストしていたので、そのしくみを使い続けたい新規にIncus専用のイメージサーバーを構築したくはない上記の条件を満たす方法としては、コンテナイメージを静的ファイルとしてWebサーバー経由で配信するという方法があります。具体的には次のような手順でそれを実現します。コンテナイメージをビルドするコンテナイメージを配信できる形式にするコンテナイメージを配信するリモートサーバーとしてイメージを参照するコンテナイメージをビルドするUbuntu 20.04のコンテナイメージをビルドするには、distrobuilderを利用しました。distrobuilderでどんなことができるかは「Ubuntu Weekly Recipe 第678回distrobuilderでLXD/LXC用のカスタムイメージを作成する」という記事があるので、そちらを参照されるとよいでしょう。Debianでも、trixie以降であれば、apt経由でdistrobuilderをインストールできます。distrobuilderにはテンプレートが付属しているので、ubuntu.yamlをコピーして編集するとよいでしょう。$ sudo apt install -y distrobuilder$ cp /usr/share/doc/distrobuilder/examples/ubuntu.yaml focal.yamlカスタマイズ項目はいろいろありますが、最低限必
2ヶ月前

Firefox ESR140での差分更新の適用手順
ククログ
結城です。通常、Firefoxは動作中にバックグラウンドで更新用の差分ファイルを自動的にダウンロードし、再起動のタイミングで更新を適用します。しかし企業などでの運用においては、一般ユーザーには管理者権限を与えない場合があり、そのような場面では、Firefoxの更新は管理者やシステム権限でのインストーラーの再実行、もしくは更新用の差分ファイルをローカルで適用して行うことになります。配布ファイルのサイズが小さく済む差分ファイルのみを各端末に配布し、ログオンスクリプトなどを用いて端末上でローカルで適用するやり方は、組織内ネットワークの帯域の逼迫を防ぎたいといった事情がある場合には有用と言えます。この差分ファイルの適用手順は長らく変化がありませんでしたが、Firefox ESR140時点(より正確に言えばFirefox 138時点)で一部の仕様が変わっており、従来の手順では差分更新を行えなくなっています。本記事では、Windows端末上でFirefox ESR140に差分更新をローカルで適用する手順を改めて紹介します1。差分ファイルの入手Firefoxの差分更新を行うには、差分ファイルをMozilla公式のダウンロードサイトから入手する必要があります。URLの凡例は以下の通りです。Windows用 64bit版:https://releases.mozilla.org/pub/mozilla.org/[製品名]/releases/[更新先バージョン]/update/win64/ja/[製品名]-[更新元バージョン]-[更新先バージョン].partial.marWindows用 32bit版:https://releases.mozilla.org/pub/mozilla.org/[製品名]/releases/[更新先バージョン]/update/win32/ja/[製品名]-[更新元バージョン]-[更新先バージョン].partial.mar例えばFirefox ESR140.2.0(64bit版)からESR140.3.0(64bit版)へ更新する場合に必要な差分ファイルは、以下のURLで入手できます。https://releases.mozilla.org/pub/firefox/releases/140.3.0esr/update/win64/ja/firefox-140.
2ヶ月前