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

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
3日前

実践!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 $_
7日前

実装者向けの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フォーマットデータ+-----------
8日前

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

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. メタデータで検索標準の検索でもできる「チケ
1ヶ月前

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まずはドキュメントに
1ヶ月前

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カスタマイズ項目はいろいろありますが、最低限必
1ヶ月前

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.
1ヶ月前

公開のOSS開発プロジェクトの業務での開発事例:Waterfoxのツリー型タブと垂直タブの統合
ククログ
結城です。昨年、Firefoxのフォーク版の一つとして知られるWaterfoxプロジェクト主催のAlex氏からのご依頼に基づき、Firefox用アドオン「ツリー型タブ(Tree Style Tab、以下TST)」を組み込む作業を行いました。本年8月にリリースされたWaterfox 6.6.0ではその発展として、Watarfox本体の垂直タブとの統合作業を行いました。本記事では、今回の契約の経緯と開発の成果の技術的側面のそれぞれをご紹介します。初期の交渉今回の案件は、Waterfoxの新バージョンで「タブのツリー表示」機能をより自然な形で統合したい、というご相談を頂いた所から始まりました。前回の開発で残された課題過去記事で詳しく述べていますが、ブラウザーのタブをツリー表示させる方法には以下の3通りがあります。ブラウザー本体のタブの表示の仕方を制御して、ツリー風に表示する(以下、ネイティブ実装)ブラウザー本体のタブとは別に、ツリー表示形式のタブ管理UIをアドオンで提供する(以下、アドオン実装)ブラウザー本体のタブとは別に、ツリー表示形式のタブ管理UIをネイティブのサイドバーで提供する(以下、ネイティブサイドバー実装)前回の開発では、Firefoxの次期ESRへの追従を容易にする必要性1と開発コストの削減という2つの理由から、既存のFirefox用アドオンであるTSTを使ったアドオン実装を採用しました。その際には、アドオン実装であるが故の様々な制約を乗り越えるためにExperiments2 APIを使用し、UIを通常とは別の専用サイドバーで表示するようにしました。しかし、実際に機能が搭載されたバージョンのWaterfoxを使用したユーザーからは、消費メモリー量の多さの問題3の指摘が上がるなど、アドオン実装方式であるが故のデメリットが予想以上に大きかった様子が窺えました。このことで、さらなるユーザー体験向上のためにはネイティブ実装またはネイティブサイドバー実装に切り替える必要がある、という課題が浮き彫りとなっていました。実装方式の変更の提案今回の開発対象となるWaterfoxはFirefox ESR140ベースです。ブラウザー本体に含まれている垂直タブ機能を基点にすれば、現実的な工数の範囲でネイティブ実装でのツリー表示対応も実現が可能そうです。また、前述した通りネイティブ実
1ヶ月前

Thunderbirdで「マスターパスワードを使用する」設定が強制適用されない事象と、修正までの回避策
ククログ
屋代です。Mozilla Thunderbirdをお使いのお客様から、次のような問い合わせがありました。Thunderbirdにマスターパスワード1を強制的に適用する設定を導入したいインストールディレクトリC:\Program Files\Mozilla Thunderbird配下にdistributionディレクトリを作成しpolicies.jsonを配置したpolicies.jsonに"PrimaryPassword":trueと記載したが、マスターパスワードが無効化できてしまう調査したところ、Thunderbirdの不具合と判明しました。お問い合わせをいただいた時点でお客様がお使いだったThunderbirdのバージョンは、128.8.0esr(64ビット)でした。実は記事執筆時点での最新バージョン(140.3.0esr)でも、Thunderbirdのリリースチャンネル、esrチャンネルとも、本記事の事象は未修正のままとなっています。そこでこの記事では、マスターパスワード適用に関するThunderbirdの不具合が解消され、policies.jsonに記載する方法が有効となるまでの代替手段として、お客様にご案内した回避策を紹介します。Thunderbirdのマスターパスワードを強制的に適用する方法具体的には、次の2ファイルを配置します。インストールフォルダが異なる場合は適宜読み替えてください。(1)C:\Program Files\Mozilla Thunderbird\defaults\pref\autoconfig.jspref("general.config.filename", "autoconfig.cfg");pref("general.config.vendor", "autoconfig");pref("general.config.obscure_value", 0);// You also need below if you use scripts for reading globalChrome.csspref("general.config.sandbox_enabled", false);(2)C:\Program Files\Mozilla Thunderbird\autoconfig.cfg// You must leave th
1ヶ月前

Thunderbird 128.11以降でファイル共有サーバー上のemlファイルを開けない問題の回避方法とその背景
ククログ
当社の法人向けThunderbirdサポートサービスにおいて、「ファイル共有サーバー上に置かれたemlファイル1をThunderbirdで閲覧しようとした場合に本文が表示されない」というトラブルのお問い合わせを頂きました。お客様によると、この問題はThunderbird 128.10.1で発生し、128.10.2で一度は解消されたものの、128.11.1に更新したら再発し始めたとのことでした。本記事では、この問題の回避方法と、問題が発生するようになった経緯および今後の見通しを詳しくご紹介します。回避方法本現象は、Thunderbirdの隠し設定を用いて、ファイル共有サーバーのIPアドレスおよびホスト名を明示的に列挙することで回避可能です。具体的な手順は以下の通りです。アプリケーションメニューの「設定」、もしくはメニューバーの「ツール」→「設定」でThunderbirdの設定を開きます。mail.allowed_unc_hosts を検索します。見付かった項目の右端の「編集」ボタン(鉛筆のアイコンのボタン)をクリックして値の編集を開始します。emlファイルが置かれる可能性があるすべてのファイル共有サーバーについて、IPアドレスおよびホスト名を半角カンマ(,)区切りで記述します。例えば、ファイル共有サーバーのIPアドレスが192.168.0.100と192.160.0.101、ホスト名がfileserver1とfileserver2であった場合は、指定値は192.168.0.100,192.168.0.101,fileserver1,fileserver2となります。同一のサーバーであっても、ホスト名からIPアドレスへの名前解決は自動的には行われないため、IPアドレスとホスト名の両方を指定する必要があります。Enterキーを押して変更を保存します。法人で全端末を対象に設定を自動展開したい場合、この設定はグループポリシーでは制御できないため、AutoConfig(MCD)を使う必要があります。例えば以下の要領です。// autoconfig.cfglockPref("mail.allowed_unc_hosts", "192.168.0.100,192.168.0.101,fileserver1,fileserver2");また、別解として、ファイル共有フォルダーにWin
2ヶ月前

Firefoxの「安全でないダウンロードの遮断」機能の回避手順と実装の背景、および調査対応のポストモーテム
ククログ
WebブラウザーのFirefoxには、ユーザー保護の一環として「安全でないダウンロードを積極的に遮断する」機能があります。「安全でないダウンロード」とは具体的には、HTTPSで接続しているWebページからHTTPのURLで参照してファイルをダウンロードしようとした場合を指します1。通常の利用では安全性が高まって望ましい動作なのですが、法人運用で業務が依存しているWebサイト2がHTTPSではなくHTTPでの接続になっている場合、この機能の影響によってファイルのダウンロードができなくなり業務に支障をきたす場合があります。この動作について、約1年前のFirefox 125(125.0.1)のリリースからしばらくの間、機能が強化されたり、緩和されたり、再度強化し直されたり、という不安定な状況が発生していました。また、「特定のドメインでのみ安全でないダウンロードを許可する」ということもできず、機能を恒久的に無効化する以外の選択肢がないために、前述のような状況が発生した企業での運用には注意が必要でした。その後、関係するポリシー設定がいくつか追加もされました。こういった諸々の事があった結果、結局この機能は何だったのか、どうすれば制限を回避できるのか、ということが分かりにくくなってしまっています。本記事では、お問い合わせに基づき当社で行った調査の範囲で、業務利用でこの機能の影響を受けないようにするための正しい解決あるいは回避の方法と、この機能が辿った変遷、および、それらを明らかにするまでに行った調査の過程とそこに見られた課題をご紹介します。解決策と回避手段最も望ましい解決:HTTPSで接続するようにするこの「安全でないダウンロードの遮断機能」が問題になるのは、運用コストなどの都合で自社ホストがHTTP接続のままとなっている場合がほとんどだと考えられます。身も蓋もないのですが、本件の解決策としてまず取り組むべきなのは、それらのホストをHTTPS接続可能にするということです。インターネット越しに利用するホストの場合は、Let's Encryptを使って商用・非商用を問わず無料でTLS用証明書を発行できるので、コストが理由でHTTPS非対応となっている場合は検討してみてください。社内のローカルネットワーク内からのみ利用するホストや、関係者以外が利用する可能性がないホストの場合は、以下の
2ヶ月前

Thunderbirdの障害発生時の調査資料採取手順(Windows篇)
ククログ
はじめにクリアコードはThunderbirdのサポートサービスを提供していますが、その一環でThunderbirdの障害の調査を実施することがあります。調査のために収集が必要な情報は、発生した障害の内容によって様々ですが、当社のサポートサービスのお客様からのお問い合わせでは、SMTP・POP3・IMAPでのメール送受信時と、フォルダーの最適化実行時、およびGUIのカスタマイズに関するトラブルのお問い合わせが多い傾向があります。この記事では、これらに類するトラブルの発生時に原因究明のためによく採取を依頼する情報について、一通り採取する手順をご紹介します。Thunderbirdでの調査資料採取手順Thunderbirdが起動中の場合、一度終了します。Windowsのコマンドプロンプトを開きます(cmd.exeを起動します)。コマンドプロンプト上で、以下の3つのコマンド列を順に実行します。(Thunderbirdのパスは実際のインストール先パスに読み替えます。)set MOZ_LOG=timestamp,sync,SMTP:5,POP3:5,IMAP:5,compact:5,MsgCopyService:5これは、SMTP・POP3・IMAP・最適化処理・メッセージコピー処理のデバッグレベル5(最詳細)でのログ出力を指定しています。set MOZ_LOG_FILE=C:\Users\Public\log.txt"C:\Program Files\Mozilla Thunderbird\thunderbird.exe"この設定の詳細については、問題の原因調査のためのログ収集のセオリーの記事を参照してください。Thunderbirdが起動したら、キーボードショートカット「Ctrl-Shift-J」でエラーコンソールを開きます。Thunderbirdを操作し、現象を再現させます。この段階でエラーコンソールのメッセージを右クリックし、「すべてのメッセージをファイルに保存」で出力されたログ全体をファイルに保存します。Thunderbirdのパネルメニューから「ヘルプ」→「トラブルシューティング情報」を選択します。トラブルシューティング情報のタブが開かれるので、「テキストをクリップボードにコピー」をクリックします。クリップボードの内容をテキストファイルに貼り付けて採取します。Thun
2ヶ月前