ノータブルコード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が使用できるので、様々な環境上でテストの実行やビルドなどができます。
第28回 中国地方DB勉強会 in 岡山:Amazon RDS + Amazon EC2 + ロジカルレプリケーションを使った低コスト高速全文検索 #ChugokuDB
2020年1月25日(土)に第28回 中国地方DB勉強会 in 岡山が開催されました。 私は、昨年の2019年11月に行われた PostgreSQL Conference Japan 2019 の内容(「Amazon RDS + Amazon EC2 + ロジカルレプリケーションを使った低コスト高速全文検索」)を再演させていただきました。
Firefoxでデフォルト有効化されるかもしれないDNS over HTTPSへの企業での対応について
昨日、Firefoxの米国エリアユーザーに対して段階的に「DNS over HTTPS」の有効化が反映されていくことになった、という話がニュースになっていました。
ノータブルコード4 - NULLよりも名前付きの番兵オブジェクト
ノータブルコード5 - Lispとシェルスクリプトのキマイラ
今回紹介するコードは、エディンバラ大学が開発した音声合成ライブラリFestivalからのコードです。このライブラリには、テキストファイルを音声に変換する「text2wave」という実行ファイルが付属しています。このファイルの冒頭部分を引用すると次のようになっています。
Gecko Embedded 68ESR対応
はじめに
クリアコードでは Gecko(Firefox)を組み込み機器向けに移植する取り組みを行っています。 ククログ記事を長らく書いていませんでしたが、68ESRに移植する取り組みを行っていましたので、紹介します。
Firefox 74以降でのアドオンのサイドローディングの代替
Mozillaの公式なアナウンスにある通り、Firefox 74以降のバージョンではアドオンの「サイドローディング」ができなくなりました。この変更は次のESR版であるESR78にも影響するので、主に企業ユーザー向けの情報として、対策・代替運用の情報をご紹介します。
GitHub Actionsを使ったGroongaのパッケージのインストール、テストの自動化
Groongaでは、これまでもGitHub Actionsを使ってパッケージの作成を自動化したり、テストの自動化を実施してきました。 いままで自動化してきたテストは、リポジトリーにpushされたソースコードに対してビルド、テストするものでした。 これらの自動化により、リリース前に初めて問題が発覚することが少なくなり、問題が発生した段階で対処を進めることができています。
ノータブルコード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を扱う
Firefox ESR68の法人ユーザーは、Firefox ESR78にどう備えるべきか?
来たる6月30日、Firefox ESR78がいよいよ正式にリリースされます(予定)。ESR版としてや1年ぶりのメジャーアップデートです。現時点で既に(ESR版ではなく一般向けの)ベータ版が利用可能になっているため、そろそろ検証を始められている情シス担当の方も増えてきているのではないでしょうか。
ノータブルコード9 - C言語で文字列を扱うときはNULL終端されているかどうかに注意する
全文検索エンジンGroongaの他にPostgreSQLで高速に全文検索できる拡張PGroongaの開発にも参加している堀本です。 今回は、PGroongaの開発中に「注意しないと危ないな」と思ったコードを紹介します。
gbpを使ったDebianパッケージでパッチのファイル名を明示的に指定するには
はじめに
Debianパッケージのメンテナンスではgbpコマンドがしばしば使われます。
gbpを使ったワークフローでは、従来やや面倒だったquiltを意識せずにパッチを管理できます。
Apache Arrowの最新情報(2020年7月版)
Apache ArrowのPMC(Project Management Commitee、プロジェクト管理チームみたいな感じ)のメンバーの須藤です。
ノータブルコード11 - 空になるかもしれないCのマクロの値を正規化
最近、GNU/Linux上のGCCとVisual C++のビルドでは同じ挙動なのにMinGWのビルドでだけ挙動が異なる件を調べていた須藤です。MinGWが提供するヘッダーファイルを見ていたら「お!」と思うコードがあったので11回目のノータブルコードとして紹介します。
D-Feetを使ってDBusインターフェースの変更に追従するには
はじめに
ソフトウェアをメンテナンスしていると、バージョンアップにともないAPI等が変更になることがあります。 今回は、アプリケーションが対応しているDBusのインターフェースの変更に追従するやりかたを紹介します。
Debianパッケージ利用調査に参加するとどうなるのか?
はじめに
Debianを対話的にインストールすると、Debianパッケージ利用調査への参加の可否がインストール途中で確認されます。
DebConf20でバグトラッキングに関する発表をしました
はじめに
クリアコードの林です。ククログでDebian関係の記事をときおり書いています。 今回は、DebConf20で発表する機会があったのでその内容を紹介します。
RubyKaigi Takeout 2020 - Goodbye fat gem #rubykaigi
RubyKaigi Takeout 2020の1日目にGoodbye fat gemという話をする須藤です。今年もクリアコードはスポンサーとしてRubyKaigiを応援します。
リンカーフラグ -E の意味と使い方
プログラムをビルドする際には、色々なオプションをつけて実行することが多いですが、先日 -lluajit-5.1 -Wl,-E というオプションを見ました。
この、-Wl,-E というオプションがなんなのかわからなかったため、調査しました。この記事ではその調査結果を記載しています。
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」という話をする須藤です。
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上からできるようにした話を書きます。
ノータブルコード13 - 複数の処理系やバージョンを考慮してライブラリーを検出できるようにする
第13回目のノータブルコードでは、collectdをビルドするときに印象に残ったconfigure.acのコードを紹介します。
Flex Confirm MailとRedmine連携のThunderbird 78対応版をリリースしました
結城です。以前に書いたアドオンのThunderbird 78対応状況についての記事の続報です。
LuaのC APIを使ってネストしたテーブル型のデータを作成するには
はじめに
Luaのデータ型の一つにテーブル型があり、ネストさせることができます。 今回は、ネストしたテーブル型のデータをLuaのC APIを使って作成する方法を紹介します。
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のコーナーでちょっととりあげてもらっています。
FluentdでLinuxのcapabilityを処理するには
はじめに
クリアコードはFluentdの開発に参加しています。 Fluentdは主にLinux上やWindows Server上でのユーザーが多いです。 Fluentdの使われ方で特に多いのがLinuxで動いているサーバーのログの取得です。 筆者畑ケがFluentdでLinuxのcapabilityを扱えるようにした話をまとめてみます。 FluentdでLinuxのcapabilityを扱う機能はFluentd v1.12.0に入る予定です。
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変更に対応する方法の概要について紹介します。
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の内容が古くなっていたりしたときにフィードバックする方法を紹介します。