サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
www.clear-code.com
はじめに クリアコードはFluentdの開発に参加しています。 Fluentdは主にLinux上やWindows Server上でのユーザーが多いです。 Fluentdの使われ方で特に多いのがLinuxで動いているサーバーのログの取得です。 筆者畑ケがFluentdでLinuxのcapabilityを扱えるようにした話をまとめてみます。 FluentdでLinuxのcapabilityを扱う機能はFluentd v1.12.0に入る予定です。 capabilityとは Linuxにはcapabilityという権限チェックを部分的にバイパスする機能があります。 この機能は、rootまでの権限は欲しくないけれど、システムの特定のパーミッションがあるように振る舞うユーザーやプロセスが欲しい時に有用です。 例えば、Linuxのsyslogのログファイルが/var/log/syslogにあるとすると
はじめに 最近Debian Developerになった林です。 今回は、どうするとDebian Developerになれるのかについて紹介します。 Debian Maintainerになろう まずはDebian Maintainerである必要があります。いきなりDebian Developerになることはできません。1 Debian Developerには任意のパッケージをアップロードできる権限が与えられているからです。 Debian Maintainerとは、特定のパッケージについて、アップロードすることを許可されている人のことです。 もしまだDebian Maintainerでないなら段階を踏んでDebian Maintainerになりましょう。 以前Debian Maintainerになるにはという記事を書いたのでそれが参考になるかもしれません。 Debian Developerにな
第12回目のノータブルコードでは、データ構造を分かりやすくするドキュメントのテクニックを紹介します。 C言語とシリアライズ処理 C言語でよくあるパターンとして、データをバイト列にシリアライズするという作業があります。多くの場合、この作業はデータフォーマットの仕様と密接に絡み合っています。フォーマット仕様書にある「最初の1バイトは8ビット識別用の固定値。次はフォーマットを表す3バイトの符号で埋める。その次が...」という指示に基づいて配列を埋めていくのが典型です。 この処理は、もちろん正確に実装する必要があるのですが、一方でヒューマンエラーの入り込みやすい部分でもあります。例えば、二つの隣り合うフィールドを入れ違いで埋めてしまった、データが実は1バイトずれていたというのは、実にありがちなミスです。最初は慎重に実装しても、フォーマットの拡張に対応するために、何度か手を加えるうちにいつのまにか壊
関連リンク: スライド(Rabbit Slide Show) スライド(SlideShare) リポジトリー 内容 RubyKaigiではRuby関連の自分の活動を自慢しているのですが、今年はfat gemまわりの活動を自慢します。 fat gemまわりの状況は2019年、fat gemをやめるとしてすでにまとめていて、今回の内容もこの記事の内容をベースにしています。ちなみに、私はRubyKaigiに応募する前に応募する内容を記事にして興味がある人はいそうかということを確認しています。fat gemの内容は少しは興味がある人はいそうで、去年のRubyKaigi 2019のcsvの話はRuby 2.6.0とより高速なcsvの反響をみる感じではそれなりにいそうで、RubyKaigi 2015のテスティングフレームワークの話はRubyのテスティングフレームワークの歴史(2014年版)の反響をみる
はじめに Debianを対話的にインストールすると、Debianパッケージ利用調査への参加の可否がインストール途中で確認されます。 今回は、このDebianパッケージ利用調査とはどういう仕組みになっているのか、また、どのようなデータが送られることになっているのかについて説明します。 popularity-contestの仕組み Debianパッケージ利用調査では、どんなパッケージがよく使われているのかを定期的にサーバーに送信するようになっています。 この役割を担っているのが、popularity-contestパッケージに含まれるプログラムです。 popularity-contestを有効にすると、cronで一定期間ごとにデータを収集して、popconサーバー へgzip圧縮したデータを送信するようになっています。 このときHTTP経由でデータを送信 1 しますが、あらかじめこのデータは専
Mozillaサポートに従事している結城です。 当社のFirefox/Thunderbirdサポートは多数のお客さまにお使い頂いていますが、インストーラの設定やWindowsのバージョンなどはお客さまによってまちまちです。検証環境をどうやって整えるかは、受託業務では無視できないポイントです。 最近、当社のFirefox/Thunderbirdサポートの検証環境をクラウドに移行しました。この移行でやりたかったのは以下のことでした。 Windows 10のVMをクラウド上に置く。 検証環境は常時すぐ動かせる状態で置いておくのではなく、必要に応じてオンデマンドで用意し、検証の度に使い捨てにする。 検証環境は、起動した時点で必要な条件の整備やテストケースなどの準備が一通り完了している。 この記事では、これらをどのように実現したのかをご紹介します。非常に長い記事になってしまいましたので、休み休み読ん
Apache ArrowのPMC(Project Management Commitee、プロジェクト管理チームみたいな感じ)のメンバーの須藤です。 みなさんはApache Arrowを知っていますか?最近、ついに1.0.0がリリースされたんですよ。私がApache Arrowの最新情報をまとめた2018年9月から毎年「今年中に1.0.0がでるぞ!」と言っていた1.0.0がついにリリースされたんです! 1.0.0を機に安心して使えるようになります。(どう安心なのかは後で説明します。) Apache Arrowはすでにデータ処理界隈で重要なコンポーネントになりつつありますが、数年後にはもっと重要になっているだろうプロジェクトです。データ処理界隈に興味がある人は知っておくと役に立つはずなので毎年Apache Arrowの最新情報をまとめています。1.0.0がリリースされたので2020年7月現在
第10回目のノータブルコードで紹介するのは、ドナルド・クヌースの設定ファイルです。 文芸的プログラミングとは何か ドナルド・クヌースは『The Art of Computer Programming』の作者、そして組版ソフトウェアTeXの開発者として世界的に名を知られた伝説的な人物ですが、彼はまた「文芸的プログラミング」の概念を提唱したことでも知られています。今日の記事のテーマは、彼の業績のうちの文芸的プログラミングに関する部分です。 文芸的プログラミングの哲学を、一言で説明するのは難しいのですが、その基本的な発想は、プログラムを、単に機械が解釈できるフォーマルな命令の羅列ではなく、人間が読むことができる自然な文章としても提示しようというアイデアにありました(クヌース自身はこれを「自然言語である英語と、CやLispのような形式言語の間で切り替えをし、まとめ上げられる自然なフレームワーク」1
MroongaというMySQLのストレージエンジンを開発している須藤です。MySQLのAPIはよく変わるのでMroongaの開発をしているとMySQLのソースコードを読む機会がよくあります。今日、MySQLのコードを読んでいて「お!」と思うコードがあったので4回目のノータブルコードとして紹介します。 MySQLは基本的なデータ構造も独自に実装していることが多いです。今日紹介するListも独自に実装しています。 多くの場合、リストは次のように「要素データへのポインタ」と「次の要素へのポインタ」を持つ構造をつなげて実装します。
第三回目のノータブルコードで取り上げるのは、分散バージョン管理システムGitのヘッダファイル「banned.h」です。 banned.h とは何か? これは何かと言うと、その名前の通り「危ない関数の利用を禁止する」ためのヘッダです。実際にコードを見てみましょう。 #ifndef BANNED_H #define BANNED_H /* * This header lists functions that have been banned from our code base, * because they're too easy to misuse (and even if used correctly, * complicate audits). Including this header turns them into compile-time * errors. */ #define
私の「ボウリング」のイントネーションが他の人と違う気がしている須藤です。青森訛りなのかな。。。 1年半ほど前から「クリアコードをいい感じにする人」の採用を開始していましたが、これまでに何人かの方に手伝ってもらえています。今はたなべさんに手伝ってもらっています。手伝ってもらっているという表現にしているのは、たなべさんには副業として「クリアコードをいい感じにする人」をやってもらっているからです。 クリアコードをいい感じにする中で「チーム間でもっと情報交換できるともっといい感じになるのではないか」という仮説がでてきました。それを実現するための1つの手段としてボウリングをして親睦を深めようという案がでました。なぜボウリング案がでたかというとたまたま第7回ITSボウリング大会実施要領 | [ITS]関東ITソフトウェア健康保険組合があったからです。クリアコードをいい感じにする活動はなにをするのが正解
この新しいコーナー「ノータブルコード」では、私たちが開発の折々に目にした興味深いコードをご紹介しています。世の中の実際のプロジェクトから、興味深い素材を肩の凝らない形でご紹介していきたいと思いますので、楽しみにしていてください。 Brubeck - 創造的なコメントで見通しを良くする 第2回目に紹介するのは、GitHubが開発したStatsD互換サーバー Brubeck からの一コマです。 int brubeck_statsd_msg_parse(struct brubeck_statsd_msg *msg, char *buffer, char *end) { *end = '\0'; /** * Message key: all the string until the first ':' * * gaugor:333|g * ^^^^^^ */ { msg->key = buffer
リーダブルコードの解説の著者の須藤です。リーダブルコードの本編ではプログラマそれぞれがリーダブルなコードを書く方法を紹介しています。リーダブルコードの解説ではチームでリーダブルなコードを書く方法を紹介しています。 では、その次のステップはなんでしょう。それは「チーム外とリーダブルコードの知見を共有する」です。情報を提供するところに情報は集まります。自分たちがリーダブルコードの知見を発信することで知見が集まります。集まるのを待つだけではなく自分から知見を探しにいけばさらに知見を集められます。チーム内だけで知見を共有していると、限られたコンテキストでの知見しか得られなくなってしまいます。チーム外の知見も活用することでチームに新しい知見を導入できます。 たとえば、Ruby on Railsを使ってWebアプリケーションだけを書いている場合はそのコンテキストの知見ばかり集まります。しかし、その知見
fat gemを簡単に作れるようにするgemであるrake-compilerをメンテナンスしている須藤です。過去にfat gemの作り方をまとめたこともあります。 Ruby 1.8.7/1.9.1どちらでも使えるWindows用バイナリ入りgemをDebian GNU/Linux上で作る方法 Windowsの32bit/64bit版Ruby用バイナリ入りgemをDebian GNU/Linux上で作る方法 fat gemが有用な時代もあったのですが、今はメリットよりもデメリットの方が大きいのでfat gemをやめたらどうか、という話をします。 fat gemについて fat gemとはビルド済みバイナリーが入ったgemのことです。Pythonで言えばwheelのようなものです。 RubyはC言語でRuby用のライブラリーを実装することができます。これを拡張ライブラリーと呼びます。拡張ライブ
はじめに 弊社では複数のチームがあり、それぞれのチームで日々案件をこなしています。 今回、あるチームで課題を解決した方法を別のチームでも使える可能性があるのでは?ということで、チーム間の情報共有を行う取り組みを始めました。 チーム間の情報共有がなされにくいという課題 弊社は、それぞれのチームで案件が独立しているため、チーム間で情報を交換する必要性をあまり感じません。各案件についての背景知識がないと課題解決できないと考えがちなためです。そのため、現状では、チーム間の情報共有はとても少ないです。 しかしながら、案件によらず、どのチームにも共通する課題は存在します。あるチームで解決した課題と同じような課題で、別のチームが悩んでいるということがありえるのです。 他のチームから知見を得る機会を作ってみた これは、非常にもったいないので他のチームの知見を取り入れられないかと考えました。 チームミーティ
Apache ArrowのPMC(Project Management Commitee、プロジェクト管理チームみたいな感じ)のメンバーの須藤です。 みなさんはApache Arrowを知っていますか?Apache Arrowは数年後にはデータ処理界隈で重要なコンポーネントになっているだろうプロジェクトです。データ処理界隈に興味がある人は知っておくと役に立つはずなので1年ほど前にApache Arrowの最新情報(2018年9月版)をまとめました。この1年ですごくよくなったので2019年9月現在の最新情報を紹介します。 私は、PMCの中では唯一の日本人1で、コミット数は2番目に多い2ので、日本ではApache Arrowのことをだいぶ知っている方なはずです。Apache Arrowの情報は日本語ではあまりないので日本語で紹介します。 ちなみに、英語ではいろいろ情報があります。有用な情報源は
先日の Web Crypto API の基本的な使い方の解説(改訂済み)においては、説明を簡単にするために AES-GCM の初期ベクトルを乱数に基づいて生成しましたが、これはセキュリティの観点からはあまり好ましくありません。本記事では、Web Crypto API で AES-CBC や AES-GCM を用いて暗号化する場合の、より安全な初期ベクトルの生成方法について解説します。 望ましい初期ベクトルとは? 前の記事でも述べていますが、初期ベクトルについて簡単におさらいします。 共通鍵暗号のアルゴリズムである AES にはいくつかの「暗号モード」があり、中でも CBC や GCM といったモードでは、暗号化に際して初期ベクトルというパラメータが必要となっています。これは、データを暗号化する際に添加する無関係のデータのことで、それによって暗号文から元のデータを予測しにくくするという意味が
結城です。 ここまで、OSSへのフィードバックをやってみようとした時に躓きがちなポイントについて、フィードバックするトピックの見つけ方、報告に盛り込むとよい内容、その情報の送り届け先の選び方の知見をそれぞれ述べてきました。 ところで、それらの技術的な内容以前のハードルとして、言語の壁という物もあります。実際にOSS Gateワークショップでも、フィードバック内容をまとめた後、英語でそれを書き直すという段階で手こずっておられる方がかなり多い印象があります。 ITエンジニア向けに「こういう英語表現を覚えよう」という情報を紹介する記事は時々見かけます。ですが、ワークショップでビギナー参加者の方が英語を書くのに苦労している様子を実際に見ている印象では、必要なのはそういった記事で紹介される「実際の現場でよく使われる単語や熟語の情報」ではなく、「実際の現場で英文を書く時に行われる考え方の解説」の方であ
結城です。 これまで、「OSSを使用していてトラブルに遭遇しているか、改善の提案があり、その情報を開発元のイシュートラッカーに伝えようとしている」という人向けの情報として、「どういう場所に報告するのが適切か」「どんな内容を書くのが適切か」という話をしてきました。 しかしOSS Gateワークショップにビギナーとして参加された方の中には、そういった「どうやるか」の前の段階の話として、「フィードバックしたい情報」をまだ持っていないという人もいます。というか、「別に今の段階で何か具体的にOSSの使用上で困っているわけではないが、とにかくOSS開発に関わりたい、OSS開発に関われる人になりたい」という人の方がまだ数としては多く、OSS Gateワークショップはまさにそのような人を想定した内容になっています。 なので、OSS Gateワークショップでは「フィードバックするネタ1の見つけ方」からやるよ
Firefox 67の新機能の1つに、インストール先ごとにプロファイルが分けられるようになったという物があります。 この記事では、Firefoxのユーザープロファイルの仕組みの歴史的な経緯や、プロファイル切り替えの仕組み自体がどのように使われてきたかという点を踏まえながら、Firefox 67での新機能の性質を解説します。 Firefoxの「ユーザープロファイル」 Firefoxのユーザープロファイルの仕組みは、元を辿ると、その前身となったNetscape Communicatorのユーザープロファイルの仕組みに行き着きます。 Netscape Communicatorが現役だった頃に広く使われていたWindows 95やWindows 98は、原則としてユーザーは1人だけであるという前提で設計されていたため、複数人で同じPCを共用する場合にユーザーを使い分けるという事ができませんでした。
※注:この記事の対象読者は、「OSSを使用していてトラブルに遭遇しているか、改善の提案があり、その情報を開発元のイシュートラッカーに伝えようとしているが、どんな内容を書けばよいかわからない」という人です。そもそも「どこに報告すればよいかわからない」「イシュートラッカーに書き込んでいいかどうか不安がある」という方は、1つ前の記事をご参照下さい。 結城です。 1つ前の記事では、フォーラムとイシュートラッカーのどちらに書き込めばよいかわからない場合の考え方について詳しく語りました。その際、両者の目的の違いを以下のようにまとめました。 フォーラム:個人の問題の解決を図る場所。 イシュートラッカー:ソフトウェアの問題の解決、品質の向上を図る場所。 この記事ではその続編として、イシュートラッカーの目的から導かれる「適切な、書くべき報告の内容」を語ってみます。 書くべき内容、避けるべき内容 フォーラムと
※注:この記事の対象読者は、「OSSを使用していてトラブルに遭遇しているか、改善の提案があり、その情報を開発元に伝えたいが、どこで伝えればよいかわからない」という人です。「どういう体裁で報告すればよいか分からない」「何を報告すればよいか分からない」という人向けの話はまた日を改めて書くつもりです。 結城です。 OSS Gateワークショップで、初めてフィードバックをしようとしているビギナー参加者のサポートをしていると、ビギナー参加者から以下のような質問を受ける事があります。 こんな簡単な・くだらないレベルの事を報告してもいいんでしょうか? ユーザーフォーラムとイシュートラッカー(バグトラッキングシステム)1のどちらに報告すればいいんでしょうか? どのプロジェクト(開発元)に報告すればいいんでしょうか? これらの点に対する筆者の回答は、端的には以下のようになります。 簡単でも些細でも何でも、あ
株式会社クリアコード > ククログ > 代表取締役の須藤がApache Arrowの開発でGoogle Open Source Peer Bonusを受賞 Apache Arrowの開発に参加している代表取締役の須藤です。 もう2ヶ月前の話なのですが、2019年のGoogle Open Source Peer Bonusの1人に選ばれました。選ばれるまでこんな取り組みがあることを知らなかったのですが、2011年からやっているそうです。オープンソースの開発に関わっている人を支援する取り組みだそうです。賞金(?)として250ドルもらいました。ありがとうございます。 Apache Arrowの開発をがんばっているということで選んでもらいました。現時点で私は2番目にコミット数が多いのでそのあたりを評価してくれたのかもしれません。ちなみに、1番コミット数が多いWesさんはpandasの開発で選ばれて
結城です。 当社のOSS開発支援サービスではこれまで、SpeeeさんでのOSS開発支援やご相談窓口の設置、Supershipさまでの研修の実施などに携わって参りました。この記事ではその新たな事例として、株式会社アカツキさまで昨年および本年の新人研修の一環として開催した OSS Gate のワークショップを社内にて複数回開催させていただいた件をご紹介します。 アカツキさまへのクリアコードの関わり方 株式会社アカツキさまの事業の柱の1つはゲームの開発・運営です。お話を伺ったところ、ゲーム業界では(少なくとも、ファミコンに端を発するコンソールゲームの業界では)伝統的に、会社ごとに自社開発のライブラリやノウハウを抱え込む事が多かった事から、開発の成果を公開したり社外に開発の中心があるOSSの開発に参加したりという事はそれほど積極的には行われない傾向があるとのことでした。 しかし、現代のゲーム開発で
「Firefox」でインストール済みアドオンが利用不能になる問題が発生中 - 窓の杜やFirefox 66.0.4 リリース、拡張機能全滅問題を修正 | スラド ITなどで既報の通り、2019年5月4日前後から一般向けのリリース版Firefoxでアドオンを一切使用できない状態が発生していました。緊急の修正版としてリリースされたFirefox 66.0.4およびFirefox ESR60.6.2で現象は既に解消されており、また、既にインストール済みのFirefoxに対してもホットフィックスが順次展開されていますが、本記事では今回の問題の技術的な詳細を解説します。 ユーザー側で取れる対応 まず最初に、ユーザー側で取れる対応をまとめておきます。 Firefox 66.0.4以降またはFirefox ESR60.6.2以降に更新する。 「Firefox調査」を通じて hotfix-update-x
関連リンク: スライド(Rabbit Slide Show) スライド(SlideShare) リポジトリー 内容 この1年、 @284km と一緒にcsvを改良していたのでその成果を自慢しました。せっかく2人で話をするので、時間を分割してそれぞれ話をするのではなく、ずっと掛け合いをしながら2人で話をしました。楽しんでもらえたでしょうか? Ruby 2.6.3に入っているcsvはどんなケースでもRuby 2.5のcsvより高速になっています。この成果を使うためにぜひ最新のRubyにアップグレードしてください。 最後にも少し触れましたが、まだまだcsvやその周辺に改良すべきことがあります。今回の話でcsvの開発に興味がでてきた人は一緒に改良してきましょう。その気になった人はRed Data ToolsのGitterに書き込んでください。どうやって進めるか相談しましょう。 RubyKaigi
はじめに Mesonはソフトウェアをビルドする、ビルドシステムの1つです。 GNOME関連だと、すでに多くのモジュールがMesonに対応しています。 今回は、アップストリームがビルドシステムをMesonに移行した場合にどのように対応すればいいかを紹介します。 libhinawaの場合 libhinawaの場合、これまではビルドシステムとしてAutotoolsを採用していました。 1.0のリリースにともない、Mesonに移行する話があったため、実際にどうやればよいかを調べてみました。 アップストリーム側のMeson対応自体はトピックブランチも用意されていたので、それをもとに試してみました。 % git clone https://github.com/takaswie/libhinawa.git libhinawa.meson % cd libhinawa.meson % git check
当社ではIE View WEというアドオンを開発・公開しています。これはFirefox上で閲覧中のページやマッチングパターンに当てはまるURLのページをIEもしくは任意の外部アプリケーションで開くという物で、Firefox法人サポートでの需要を想定して、既存のアドオン「IE View」の仕様を参考にFirefox 57以降で使用できる形(WebExtensionsベース)でスクラッチで開発したという物です。 WebExtensionsではアドオンが直接任意の外部アプリケーションを起動する事はできず、Native Messaging Hostと呼ばれるヘルパープログラムを介する必要があります。Native Messaging Hostは任意の言語で実装することができますが、IE View WEのNative Messaging Hostの場合はGoで開発しており、一般のユーザのためにコンパイ
株式会社クリアコード > ククログ > Webアプリや拡張機能(アドオン)で、Web Crypto APIを使ってローカルに保存されるデータを暗号化する ※注記:本文末尾の「公開鍵暗号ではなく共通鍵暗号を使う理由」の説明について、2019年1月30日午前0時から21時までの間の初出時に内容の誤りがありました。また、2019年1月30日午前0時から2月5日20時頃までの間において、本文中での AES-CTR による暗号化処理が、 nonce を適切に指定していないために脆弱な状態となっていました。お詫びして訂正致します。初出時の内容のみをご覧になっていた方は、お手数ですが訂正後の説明を改めてご参照下さい。 クリアコードで主にMozilla製品のサポート業務に従事している、結城です。 FirefoxやThunderbirdがSSL/TLSで通信する際は、通信内容は自動的に暗号化されます。その一
次のページ
このページを最初にブックマークしてみませんか?
『クリアコード - ソフトウェアの開発・技術支援(Groonga/Fluentd/Apache Arrow)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く