ノータブルコード1 - printfの縦揃え

リーダブルコードの解説の著者の須藤です。リーダブルコードの本編ではプログラマそれぞれがリーダブルなコードを書く方法を紹介しています。リーダブルコードの解説ではチームでリーダブルなコードを書く方法を紹介しています。

もっと読む

ノータブルコード2 - 斬新なコメントでコードの可読性を高める

この新しいコーナー「ノータブルコード」では、私たちが開発の折々に目にした興味深いコードをご紹介しています。世の中の実際のプロジェクトから、興味深い素材を肩の凝らない形でご紹介していきたいと思いますので、楽しみにしていてください。

もっと読む

Prometheus Meetup Tokyo #3でLTをしました

はじめに

Prometheus Meetup Tokyo #3でLTをしてきた畑ケです。 Prometheusは近年注目されるメトリクスモニタリングツールです。特徴としては非常にスケーラビリティが高く、Pull型でメトリクスを収集するため、Prometheusのインスタンス1つで1万インスタンスのサーバー群を監視できます。このPrometheus Meetup Tokyo #3ではPrometheus本体というよりもそれを取り巻くエコシステムを対象としたミートアップでした。

もっと読む

GitHub Actionsを使ったパッケージ作成の自動化

2019年の11月にGitHub Actionsが正式にリリースされました。 GitHub ActionsはGitHubに組み込まれたCI/CD機能でpush等のGitHub上のイベントをトリガーに任意のアクションを実行できるものです。 GitHub ActionsではDockerが使用できるので、様々な環境上でテストの実行やビルドなどができます。

もっと読む

2020-03-12開催のRubyセミナー松江で講演予定:「Rubyと仕事と自由なソフトウェア」

株式会社クリアコード代表取締役の須藤です。

もっと読む

第28回 中国地方DB勉強会 in 岡山:Amazon RDS + Amazon EC2 + ロジカルレプリケーションを使った低コスト高速全文検索 #ChugokuDB

2020年1月25日(土)に第28回 中国地方DB勉強会 in 岡山が開催されました。 私は、昨年の2019年11月に行われた PostgreSQL Conference Japan 2019 の内容(「Amazon RDS + Amazon EC2 + ロジカルレプリケーションを使った低コスト高速全文検索」)を再演させていただきました。

もっと読む

第一回クリアコード・万葉・レトリバ合同ボウリング大会

私の「ボウリング」のイントネーションが他の人と違う気がしている須藤です。青森訛りなのかな。。。

もっと読む

ノータブルコード3 - 危険なバグを仕組みで予防する

第三回目のノータブルコードで取り上げるのは、分散バージョン管理システムGitのヘッダファイル「banned.h」です。

もっと読む

FluentdとそのプラグインのWindowsでの開発環境

はじめに

クリアコードはFluentdの開発に参加しています。

もっと読む

ノータブルフィードバック1 - 導入時のつまずきを減らす報告

結城です。

もっと読む

ノータブルフィードバック2 - 画面表示に関わる問題の報告

結城です。

もっと読む

Firefoxでデフォルト有効化されるかもしれないDNS over HTTPSへの企業での対応について

昨日、Firefoxの米国エリアユーザーに対して段階的に「DNS over HTTPS」の有効化が反映されていくことになった、という話がニュースになっていました。

もっと読む

ノータブルフィードバック3 - リリースマネージメントの見落としの報告

結城です。

もっと読む

ノータブルフィードバック4 - 開発者が知らない言語圏に固有の問題の報告

結城です。

もっと読む

ノータブルフィードバック5 - 開発者が把握していない使い方についての報告と、そこからのプルリクエスト

結城です。

もっと読む

ノータブルコード4 - NULLよりも名前付きの番兵オブジェクト

MroongaというMySQLのストレージエンジンを開発している須藤です。MySQLのAPIはよく変わるのでMroongaの開発をしているとMySQLのソースコードを読む機会がよくあります。今日、MySQLのコードを読んでいて「お!」と思うコードがあったので4回目のノータブルコードとして紹介します。

もっと読む

ノータブルコード5 - Lispとシェルスクリプトのキマイラ

今回紹介するコードは、エディンバラ大学が開発した音声合成ライブラリFestivalからのコードです。このライブラリには、テキストファイルを音声に変換する「text2wave」という実行ファイルが付属しています。このファイルの冒頭部分を引用すると次のようになっています。

もっと読む

ノータブルフィードバック6 - 初回使用時のつまずきを減らす提案

結城です。

もっと読む

ノータブルフィードバック7 - 開発者の環境では必要ない改善の提案

結城です。

もっと読む

ノータブルフィードバック8 - 要望が通らなかったときの振る舞い方

結城です。

もっと読む

Groongaの単語抽出演算子を使ったタグの付与

Groongaにはタグ検索という機能があります。

もっと読む

Gecko Embedded 68ESR対応

はじめに

クリアコードでは Gecko(Firefox)を組み込み機器向けに移植する取り組みを行っています。 ククログ記事を長らく書いていませんでしたが、68ESRに移植する取り組みを行っていましたので、紹介します。

もっと読む

Firefox 74以降でのアドオンのサイドローディングの代替

Mozillaの公式なアナウンスにある通り、Firefox 74以降のバージョンではアドオンの「サイドローディング」ができなくなりました。この変更は次のESR版であるESR78にも影響するので、主に企業ユーザー向けの情報として、対策・代替運用の情報をご紹介します。

もっと読む

GitHub Actionsを使ったGroongaのパッケージのインストール、テストの自動化

Groongaでは、これまでもGitHub Actionsを使ってパッケージの作成を自動化したり、テストの自動化を実施してきました。 いままで自動化してきたテストは、リポジトリーにpushされたソースコードに対してビルド、テストするものでした。 これらの自動化により、リリース前に初めて問題が発覚することが少なくなり、問題が発生した段階で対処を進めることができています。

もっと読む

ノータブルコード6 - ポインターのサイズで32bit環境を見分ける

Groongaという全文検索エンジンの開発に参加している堀本です。 今回は、開発中にGroongaのソースコードから「おぉー」と思ったコードを見つけたので紹介します。

もっと読む

ノータブルコード7 - Rustのif式を賢く使う

組み込みGeckoプロジェクトでRustに本格的に触れ始めた畑ケです。 今回は、組み込みGeckoプロジェクトでフィードバックしたgit2-rsのコミットから「これは!」、と思ったコードを見つけたので紹介します。

もっと読む

設定変更時にのみ起こる問題の、原因となっている設定項目を特定する

FirefoxやThunderbirdは、MCD(別名:AutoConfig)ポリシー設定を使ってある程度の設定を集中管理できます。集中管理可能な設定項目の情報は当社のサポート業務で把握している頻出設定の一覧Mozilla公式のポリシーテンプレートの説明などで調べることができ、実際の運用では、これらの資料で得た情報に基づいて書き上げた設定ファイルをFirefox(Thunderbird)に読み込ませることになります。

もっと読む

Groongaである時間範囲のデータを集計する方法

月単位や日単位などある時間範囲で検索したい場面は多いです。 こんな時は月単位、日単位で日付情報を格納するカラムを作り、それを用いて検索したくなります。

もっと読む

Terraformの導入 - 検証環境をコマンドで立ち上げられるようにする その1

はじめに

クラウドサービスをコマンドラインで操作した方が楽に目的の環境作成ができると言うことに気づいた畑ケです。 Terraformと言うクラウド上のリソースを作成するツールがあります。TerraformでAWS, Azure, GCPなど各種クラウドのリソースの状態を定義し、作成できます。

もっと読む

Terraformの導入 - 検証環境をコマンドで立ち上げられるようにする その2

はじめに

クラウドサービスを扱うのにTerraformが便利ということに気づいたけれど、解説を書くとなると長くなってしまった…と気落ちしている畑ケです。

もっと読む

Terraformの導入 - 検証環境をコマンドで立ち上げられるようにする その3

はじめに

プロビジョニングツールはAnsibleが好きなのだけれど、Windowsに対しては一手間必要なのが大変だなぁと思っている畑ケです。

もっと読む

ノータブルコード8 - Viewをシンプルに保つ

全文検索エンジンGroongaの開発に参加している堀本です。 Groongaは、Redmineのプラグインとして組み込むことができます。名前を redmine_full_text_searchといいます。 このプラグインによって、Redmineの全文検索をGroongaを使って実行できます。

もっと読む

FluentdのInputプラグインでProtocol Buffersを扱う

はじめに

Fluentdの周辺のIssueチケットを見ていたらProtocol BuffersをFluentdのInputプラグインで扱えると面白そう1ということで、対応を考えてみた畑ケです。

  1. https://github.com/fluent/fluentd/issues/3000

もっと読む

Firefox ESR68の法人ユーザーは、Firefox ESR78にどう備えるべきか?

来たる6月30日、Firefox ESR78がいよいよ正式にリリースされます(予定)。ESR版としてや1年ぶりのメジャーアップデートです。現時点で既に(ESR版ではなく一般向けの)ベータ版が利用可能になっているため、そろそろ検証を始められている情シス担当の方も増えてきているのではないでしょうか。

もっと読む

ノータブルコード9 - C言語で文字列を扱うときはNULL終端されているかどうかに注意する

全文検索エンジンGroongaの他にPostgreSQLで高速に全文検索できる拡張PGroongaの開発にも参加している堀本です。 今回は、PGroongaの開発中に「注意しないと危ないな」と思ったコードを紹介します。

もっと読む

Fluentdのベンチマークツールの開発

はじめに

クリアコードはFluentdの開発に参加しています。

もっと読む

ノータブルコード10 - 文芸的設定ファイル

第10回目のノータブルコードで紹介するのは、ドナルド・クヌースの設定ファイルです。

もっと読む

gbpを使ったDebianパッケージでパッチのファイル名を明示的に指定するには

はじめに

Debianパッケージのメンテナンスではgbpコマンドがしばしば使われます。 gbpを使ったワークフローでは、従来やや面倒だったquiltを意識せずにパッチを管理できます。

もっと読む

Fluentd-kubernetes-daemonsetのElasticsearchイメージでILMを使う

はじめに

クリアコードはFluentdの開発に参加しています。

もっと読む

Apache Arrowの最新情報(2020年7月版)

Apache ArrowPMC(Project Management Commitee、プロジェクト管理チームみたいな感じ)のメンバーの須藤です。

もっと読む

Groongaのウインドウ関数を使って特定範囲の値を集計する

データベースなどでまとまったデータを取り扱っていると、ある特定の範囲の値を集計したいことがあります。

もっと読む

ノータブルコード11 - 空になるかもしれないCのマクロの値を正規化

最近、GNU/Linux上のGCCとVisual C++のビルドでは同じ挙動なのにMinGWのビルドでだけ挙動が異なる件を調べていた須藤です。MinGWが提供するヘッダーファイルを見ていたら「お!」と思うコードがあったので11回目のノータブルコードとして紹介します。

もっと読む

Thunderbird 78に未対応のアドオンのThunderbird 78対応の現状と課題について

Mozillaサポート業務に従事している結城です。

もっと読む

D-Feetを使ってDBusインターフェースの変更に追従するには

はじめに

ソフトウェアをメンテナンスしていると、バージョンアップにともないAPI等が変更になることがあります。 今回は、アプリケーションが対応しているDBusのインターフェースの変更に追従するやりかたを紹介します。

もっと読む

Windows用デスクトップアプリケーションをクラウド上の使い捨て検証環境で検証する

Mozillaサポートに従事している結城です。

もっと読む

Debianパッケージ利用調査に参加するとどうなるのか?

はじめに

Debianを対話的にインストールすると、Debianパッケージ利用調査への参加の可否がインストール途中で確認されます。

もっと読む

Windowsの新しいパッケージ管理システムのリポジトリにパッケージを登録するには

はじめに

クリアコードはFluentdの開発に参加しています。

もっと読む

DebConf20でバグトラッキングに関する発表をしました

はじめに

クリアコードの林です。ククログでDebian関係の記事をときおり書いています。 今回は、DebConf20で発表する機会があったのでその内容を紹介します。

もっと読む

RubyKaigi Takeout 2020 - Goodbye fat gem #rubykaigi

RubyKaigi Takeout 2020の1日目にGoodbye fat gemという話をする須藤です。今年もクリアコードはスポンサーとしてRubyKaigiを応援します。

もっと読む

fluent-plugin-mongoでTTLをサポートした話

はじめに

クリアコードはFluentdの開発に参加しています。

もっと読む

リンカーフラグ -E の意味と使い方

プログラムをビルドする際には、色々なオプションをつけて実行することが多いですが、先日 -lluajit-5.1 -Wl,-E というオプションを見ました。 この、-Wl,-E というオプションがなんなのかわからなかったため、調査しました。この記事ではその調査結果を記載しています。

もっと読む

macOSのインストーラーを作成するには

はじめに

クリアコードはFluentdの開発に参加しています。

もっと読む

Apache Arrowコンサルティングサポートを開始

Apache Arrowの開発に参加している須藤です。

もっと読む

Serverspec(Specinfra)でWindows向けに不足している機能を追加するには

はじめに

クリアコードでは、Fluentdの開発に参加しています。Fluentdにはtd-agentと呼ばれるディストリビューションがあり、各種プラグインをまとめてパッケージやインストーラーが提供されています。

もっと読む

SciPy Japan 2020 - Apache Arrow 1.0 - A cross-language development platform for in-memory data #SciPyJapan #ApacheArrow

SciPy Japan 2020の1日目に「Apache Arrow 1.0 - A cross-language development platform for in-memory data」という話をする須藤です。

もっと読む

ノータブルコード12 - データ構造を分かりやすくドキュメントする技

第12回目のノータブルコードでは、データ構造を分かりやすくするドキュメントのテクニックを紹介します。

もっと読む

Debian Developerになるには

はじめに

最近Debian Developerになった林です。 今回は、どうするとDebian Developerになれるのかについて紹介します。

もっと読む

Groongaのダンプから不具合の再現に必要なカラムのデータのみを抽出するには

Groongaのサポートをしていると、Groongaのデータベースのダンプを提供いただいて、不具合を再現させることが多いです。 その際、特定のカラムに問題があることがわかっている場合、問題のカラムだけをダンプから抽出できたほうが効率が良いです。

もっと読む

WiX ToolsetでQuiet Execution Custom Actionを使ってバッチ実行時のコマンドプロンプト表示を抑制するには

はじめに

クリアコードでは、Fluentdの開発に参加しています。Fluentdにはtd-agentと呼ばれるディストリビューションがあり、各種プラグインをまとめてパッケージやインストーラーが提供されています。

もっと読む

libvirtを使ってppc64leの検証環境を立ち上げる話

はじめに

クリアコードはFluentdの開発に参加しています。 Fluentd本体といくつかのプラグインがセットになったtd-agentというパッケージが提供されていますが、 td-agentのversion 4からaarch64(arm64)やppc64le(PowerPC)といった非x86_64環境にもパッケージの提供を開始しました。

もっと読む

fluent-plugin-kinesisのIRSA対応をした話

はじめに

クリアコードはFluentdの開発に参加しています。 Fluentdのプラグインの中で、AWSのkinesisというサービスに対応するプラグイン(fluent-plugin-kinesis)があります。 このプラグインはEKS(AWSのマネージドk8sサービス)でのPod毎に認証トークンを紐づける仕組み(IRSA)に対応していませんでした。 fluent-plugin-kinesisでIRSAによってサービスへのアクセスをEKS上からできるようにした話を書きます。

もっと読む

OSSプロジェクトへのコントリビュートで避けるべき6つのこと:1. プルリクエストで複数のことをしない

結城です。

もっと読む

ノータブルコード13 - 複数の処理系やバージョンを考慮してライブラリーを検出できるようにする

第13回目のノータブルコードでは、collectdをビルドするときに印象に残ったconfigure.acのコードを紹介します。

もっと読む

BrowserSelectorのすすめ - フリーソフトウェアでマルチブラウザをもっと便利にする

企業の運用では複数のブラウザを使い分けることがままあります。例えばこんな具合です。

もっと読む

OSSプロジェクトへのコントリビュートで避けるべき6つのこと:2. 一貫性を壊さない

結城です。

もっと読む

OSSプロジェクトへのコントリビュートで避けるべき6つのこと:3. 了承なしに作業を始めない

結城です。

もっと読む

Flex Confirm MailとRedmine連携のThunderbird 78対応版をリリースしました

結城です。以前に書いたアドオンのThunderbird 78対応状況についての記事の続報です。

もっと読む

LuaのC APIを使ってネストしたテーブル型のデータを作成するには

はじめに

Luaのデータ型の一つにテーブル型があり、ネストさせることができます。 今回は、ネストしたテーブル型のデータをLuaのC APIを使って作成する方法を紹介します。

もっと読む

OSSプロジェクトへのコントリビュートで避けるべき6つのこと:4. 既知の問題や解決策がある事について報告しない

結城です。

もっと読む

PostgreSQL Conference Japan 2020:PGroonga 運用技法 ~PGroonga の WAL を放置していませんか?~ #pgcon20j

2020年11月13日(金)にPostgreSQL Conference Japan 2020が開催されます。 私は、「PGroonga 運用技法 ~PGroonga の WAL を放置していませんか?~」という題名で、PGroongaのWALを使う上での注意点を紹介します。

もっと読む

Software Design12月号のDebian Hot Topicsでインタビュー記事が掲載されます

しばらく前にDebian Developerになった林です。 最近は日本からDebian Developerになった人がいないということで、新Debian Developerへのインタビューを受ける機会がありました。 2020年11月18日発売 Software Design12月号のDebian Hot Topicsのコーナーでちょっととりあげてもらっています。

もっと読む

OSSプロジェクトへのコントリビュートで避けるべき6つのこと:5. squashで1つのコミットにまとめる

結城です。

もっと読む

FluentdでLinuxのcapabilityを処理するには

はじめに

クリアコードはFluentdの開発に参加しています。 Fluentdは主にLinux上やWindows Server上でのユーザーが多いです。 Fluentdの使われ方で特に多いのがLinuxで動いているサーバーのログの取得です。 筆者畑ケがFluentdでLinuxのcapabilityを扱えるようにした話をまとめてみます。 FluentdでLinuxのcapabilityを扱う機能はFluentd v1.12.0に入る予定です。

もっと読む

OSSプロジェクトへのコントリビュートで避けるべき6つのこと:6. 意義のある報告や提案をする

結城です。

もっと読む

db tech showcase ONLINE 2020 - Apache Arrowフォーマットはなぜ速いのか #dbts2020

db tech showcase ONLINE 2020の12月8日(明日!) 15:30-16:10のセッションで「Apache Arrowフォーマットはなぜ速いのか」という話をする須藤です。まだ登録できるのでApache Arrowフォーマットに興味がある人はぜひこのセッションに参加してください!セッション中はチャットで私と質疑応答できます!

もっと読む

Ruby on Railsと素のPostgreSQLで日本語全文検索

PostgreSQLに超高速な日本語全文検索機能を追加するPGroongaを開発している須藤です。今回はPGroongaやpg_bigmなど拡張モジュールを使わずにPostgreSQLの組み込み機能だけで日本語全文検索を実現する方法を紹介します。PGroongaを使う方法はRuby on RailsでPostgreSQLとPGroongaを使って日本語全文検索を実現する方法を参照してください。

もっと読む

tDiaryからJekyllへの移行

このブログシステムを10年以上メンテナンスしている須藤です。

このブログシステムは2008年5月から運用しています。Rubyを使って実現したいと思って運用開始時からtDiaryを使って実現していました。tDiaryはWebアプリケーションとして動かすことを想定していますが、このサイトはできるだけ静的なHTMLとしてコンテンツを提供したかったのでtDiaryで管理しているコンテンツを静的なHTMLに変換するフリーソフトウェアを開発してそれを使っていました。このたび、そのtDiaryベースのブログシステムをJekyllを使ったシステムに移行しました。

この記事を書いているのはJekyllに移行してなにか問題が発生していないか気づいた人がいたら教えて欲しいからです。気づいた人は https://gitlab.com/clear-code/website/-/issues にissueを作るか、直接私に教えてください。

もっと読む

collectd 6.0でのAPI変更に対応する方法の概要

システムやアプリケーションのメトリクス情報をあつめるソフトウェアの1つにcollectdがあります。

この記事を書いている時点のcollectdの最新版は5.12ですが、次期バージョンである6.0も並行して開発が進められています。 今回は、collectd 6.0の動向と、それを踏まえてcollectd 6.0でのAPI変更に対応する方法の概要について紹介します。

もっと読む

ノータブルコード14 - 内部構造は必要以上に見せない

第14回目のノータブルコードでは、collectdのコードで印象に残ったヘッダのコードを紹介します。

もっと読む

WiX Toolsetでフォルダの権限を適切に設定するには

XMLからMSIパッケージを作成するためのフリーソフトウェアとしてWiX Toolsetというものがあります。 簡単に導入できるようにダウンロードページにはVisual Studio向けの拡張へのリンクも提供されています。

今回は、WiX Toolsetでフォルダの権限を<Permissioon>を使って適切に設定する方法を紹介します。 なお、WiX Toolsetの対象バージョンは、この記事を書いている時点の最新版の3.11.2とします。

もっと読む

CVEのレポートにフィードバックを送るには

脆弱性の報告はよくCVE(Common Vulnerabilities and Exposures)として言及されます。 個別の脆弱性について https://cve.mitre.org/ へ報告したことはなくても、閲覧したことはあるのではないでしょうか。

今回は、CVEの内容が古くなっていたりしたときにフィードバックする方法を紹介します。

もっと読む