タグ

ブックマーク / www.clear-code.com (31)

  • シェルスクリプトとMakefileの使い分け - ククログ(2012-10-24)

    先日紹介したシェルスクリプトで「ビルドスクリプト」を作る時に便利なテクニックへのコメントとして「なぜMakefileでやらないのか」「Makefileの方がいいのではないか」といったものがありました。確かにmakeはメジャーなビルドツールなので、そのような疑問が出てくるのも当然でしょう。 なぜシェルスクリプトなのかということの理由はいくつかあります。 1つは、先のエントリの題材としたスクリプトが元々はWindows用のバッチファイルをLinuxのシェルスクリプトに移植したものだったからという理由です。Windowsのバッチファイルのベタ移植として作成したシェルスクリプトを継続的にメンテナンスしてきた間の改良の結果として、いくつかのテクニックが盛り込まれるようになったため、そのテクニックにスポットを当てて紹介しようというのが、先のエントリの発端でした。 もう1つは、シェルスクリプトは「シェル

    シェルスクリプトとMakefileの使い分け - ククログ(2012-10-24)
  • td-agent3でGemfileベースのプラグイン管理 - 2018-04-06 - ククログ

    Fluentdのプラグイン管理はGemfileベースでやると、きちんとバージョンを管理できるのでよいです。 ドキュメントでもGemfileベースのプラグイン管理について書かれています。 しかし、記事執筆時点ではtd-agentでどのようにするのかは、書かれていませんでした。 td-agent3からsystemdに対応しているので、特に断りがない場合はsystemdについて書いています。 また、パッケージはいくつか種類がありますが主にdebパッージについて書きます。rpmの場合でも、serviceファイルなどの内容は同じなので、そのまま使える知識です。 使用するソフトウェアで特にバージョンを気にするものは以下の通りです。 td-agent 3.1.1 bundler 1.16.0 bundle install中にsudoを実行される Fluentdは--gemfileオプションを指定すると、

    td-agent3でGemfileベースのプラグイン管理 - 2018-04-06 - ククログ
  • Fluent-plugin-geoipのメンテナになりました - 2017-12-28 - ククログ

    @y-kenさんからコミット権をもらって gem owner に加えてもらったのでfluent-plugin-geoip v1.0.0などをリリースしました。 v1.1.0までの主な変更点は以下の通りです。 Fluentd v1のプラグインAPIに移行した Fluentd v0.12.x については fluent-plugin-geoip 0.8.x でサポートする geoip2_cがデフォルトのバックエンドとなった ドキュメントを更新した 主にfilter_geoipを使ってもらうために、filter_geoipの説明を前に移した 設定の説明を追加した latitude, longitude にはデフォルト値を設定するようにした filter_geoipでtagやtimeなどをレコードに挿入できるようにした out_geoipではサポートしていた機能 どんなキーを指定すればよいのか簡単に

    Fluent-plugin-geoipのメンテナになりました - 2017-12-28 - ククログ
  • fluent-plugin-elasticsearch の開発を引き取りました - 2017-12-27 - ククログ

    fluent-plugin-elasticsearchはよく使われているプラグインではありましたが、長らく開発が滞っていました。 @pitrさんと@dterrorさんからコミット権をもらって gem owner に加えてもらったので プラグインの開発を引き取りました。 開発を引き取ってからの主な変更点は以下の通りです。 elasticsearch-rubyのネットワーク周りのログ出力を有効化するオプションを追加 組み込みのプレースホルダーサポート Elasticsearchのテンプレートの上書きに対応 レコード重複を軽減する仕組みの作成 特定のエラー時の再試行 非ASCII文字のURLエンコード用のプレースホルダーの追加 SSL/TLSのバージョンを指定するパラメーターの追加 ナノ秒対応 fluent-plugin-elasticsearchの使い方はREADME.mdを参照してください

    fluent-plugin-elasticsearch の開発を引き取りました - 2017-12-27 - ククログ
  • Fluentd v0.14.xが安定版になりました - 2017-11-20 - ククログ

    Fluentd v0.14.22 has been released | Fluentd 少し前の話ですが、2017年11月01日にFluentd v0.14.22 がリリースされました。 このリリースでは以下のようにstableなリリースだと宣言されました。 v0.14.22 is a stable release of v0.14 series 安定版になったので安定版を待っていたプラグイン開発者の人は、諸々対応していただけると大変ありがたいです :pray: このリリースが出てからは、主にドキュメントを充実させるべくdocs.fluentd.orgのリポジトリにPull requestを送っています。 11月20日時点で約40件PullRequestを送ってplugin helperとsections (buffer sectionは既に書かれていた)のドキュメントを充実させました。

    Fluentd v0.14.xが安定版になりました - 2017-11-20 - ククログ
  • PostgreSQL Conference Japan 2017 - PGroonga 2 - PostgreSQLでの全文検索の決定版 #pgcon17j - 2017-11-07 - ククログ

    PostgreSQL Conference Japan 2017の前にPGroonga 2のリリースアナウンスを出せた須藤です。間に合ってよかった。 PostgreSQL Conference Japan 2017でPGroonga 2を紹介しました。PGroongaを使ったことがない人向けの内容です。実際、聞いてくれた人たちはほとんど使ったことがない人ばかりでした。 関連リンク: スライド(Rabbit Slide Show) スライド(SlideShare) リポジトリー 内容 PostgreSQLをバックエンドに「今っぽい」全文検索システムを作るためのPGroongaの使い方を紹介するという内容になっています。具体的には次の機能を実現する方法を紹介しています。 高速全文検索 それっぽい順でのソート 検索結果表示画面で検索キーワードをハイライト 検索結果表示画面で検索キーワード周辺テキ

    PostgreSQL Conference Japan 2017 - PGroonga 2 - PostgreSQLでの全文検索の決定版 #pgcon17j - 2017-11-07 - ククログ
  • Fluentd v0.14で導入されたstorageプラグインとは - 2017-04-19 - ククログ

    はじめに Fluentd v0.14では新たにstorageプラグインという新しいタイプのプラグインが導入されました。 FluentdをインストールしただけではJSON形式により保存される storage_local プラグインしかありませんが、このstorageプラグインはFluentdのプラグインのインスタンスが保持する値をKVSに集約することにも使用することができます。 storageプラグインとstorageプラグインヘルパー Fluentd v0.14ではさらにプラグインヘルパーという概念も追加されました。storageプラグインにおいてもstorageプラグインを直接使うのではなく、storageプラグインヘルパーを通じて使うことが推奨されます。 storageプラグインのAPI storageプラグインは以下のAPIを持ちます。これはKVSから値を取り出したり、保存したり、ま

    Fluentd v0.14で導入されたstorageプラグインとは - 2017-04-19 - ククログ
    masutaka26
    masutaka26 2017/05/05
    Fluentd v0.14 からは storage プラグイン使って、どこまで読んだかなど、各プラグインの状態を持つことができるそう
  • Fluent Loggerの信頼性を高めるには - 2017-04-28 - ククログ

    はじめに Fluentdにログを送る方法として、Fluent Loggerを使う方法があります。 RubyJavaにはそれぞれfluent-logger-rubyやfluent-logger-javaなどのFluent Loggerがあり、よくメンテナンスされています。 この記事ではFluent Loggerを使ってFluentd v0.12またはv0.14にログを送信する時にどのようにするとより確実にログ転送ができるようになるかを解説します。 最小構成のFluent_Loggerを作成するには では最小構成のFluent Loggerはどのような仕様に基づき実装されるべきかを解説しました。この記事はその続編です。 確実にログを送るには 確実にログを送るにはエラーが起きた時にそのエラーを回復する手段を提供されていることが必要です。 ログが送れたことをFluent Logger側で検出する

    Fluent Loggerの信頼性を高めるには - 2017-04-28 - ククログ
    masutaka26
    masutaka26 2017/05/05
    以前 Ruby 版を調べましたが( https://masutaka.net/chalow/2016-06-13-2.html )、再試行が良くできてましたね
  • v0.14 Outputプラグインの仕様解説 - 2016-10-20 - ククログ

    はじめに クリアコードはFluentdというソフトウェアの開発に参加しています。Fluentdはログ収集や収集したデータの分配・集約などを行うソフトウェアです。 v0.14での新機能を使ったプラグインを作成する際にはこれまでの Fluent 以下のクラスではなく、Fluent::Plugin 以下のクラスを継承し、実装する必要が出てきました。 また、v0.14のOutputプラグインはv0.12とは異なり、Fluent::Plugin::Output クラスに様々な機能が入っています。これらの機能をプラグイン開発者向けに解説することを目指します。 この記事はv0.14.8以降が対象です。 まずは、Outputプラグインが必ず実装するべきメソッドについてのおさらいです。 non-buffered

    v0.14 Outputプラグインの仕様解説 - 2016-10-20 - ククログ
  • Fluentdのプラグインのv0.14への移行の仕方 - 2016-08-26 - ククログ

    はじめに クリアコードではFluentdというソフトウェアの開発に参加しています。Fluentdはログ収集や収集したデータの分配・集約などを行うソフトウェアです。 Fluentdのv0.14はv0.12とある程度の後方互換性が保たれているメジャーバージョンアップです。 v0.14での新機能を使ったプラグインを作成する際にはこれまでの Fluent 以下のクラスではなく、Fluent::Plugin 以下のクラスを継承し、実装する必要が出てきました。 また、v0.14からはプラグインでよく書かれるコードをカプセル化し共通に使えるヘルパーを提供することで、よりプラグイン開発者が簡潔で良くテストされたコードを使ってプラグインが開発出来るようになる、とアナウンスされています。1 Inputプラグインの場合 Inputプラグインをv0.14のプラグインに移行する際には Fluent::Input の

    Fluentdのプラグインのv0.14への移行の仕方 - 2016-08-26 - ククログ
  • Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ

    2014年12月にRuby 2.2がリリースされる予定です1。 Ruby 2.2にはRuby 1.9.1のときに外されたtest-unitというテスティングフレームワークが再びバンドルされる予定です。Rubyのテスティングフレームワーク周りに詳しくない人にはよくわからない状況でしょう。そこで、Rubyのテスティングフレームワークの歴史を説明することで状況を整理します。 名称の整理 この説明の中ではたくさんのテスティングフレームワークが登場します。似たようなものもあるため、最初にテスティングフレームワークの名称を整理します。この説明の中で登場する名称は次の通りです。 RubyUnit Lapidary rubyunit Test::Unit test/unit test-unit miniunit minitest RSpec 違いがわかりますか?ざっくり説明すると次の通りです。 RubyU

    Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ
  • Autotools事始め - 2013-09-12 - ククログ

    はじめに クリアコードが関わるプロジェクトの多くでは、ビルドシステムとしてAutotoolsを使用しています。そのため、新しくプロジェクトに参加した開発者にもAutotoolsに関わる修正を担当してもらうことがあります。しかし、個々の開発者のバックグラウンドは様々であり、必ずしもすべての開発者がAutotoolsに関する知識を持っているわけではありません。その上、プログラミング言語などの基礎的な知識とは異なり、学校の授業や企業の研修などでAutotoolsについて学ぶことができる機会は稀であり、まとまった解説書も少ないなどといった事情があるため、その使い方を伝授するのには毎度手間を要しているというのが実状です。 そこで、これから数回に分けてAutotoolsの使い方を解説していくことを予定しています。 Autotoolsとは Autotoolsとは、autoconf、automake、li

    Autotools事始め - 2013-09-12 - ククログ
    masutaka26
    masutaka26 2013/09/18
    結局わからずじまいだったなあ。。
  • GDBでデバッグするなら-g3オプション - 2013-05-08 - ククログ

    RubyPythonなどのスクリプト言語では実行中に例外が発生するとバックトレースを出力してくれます。バックトレースがあるとどこで問題が発生したかがわかるためデバッグに便利です。一方、CやC++では不正なメモリアクセスをすると、バックトレースではなくcoreを残して1終了します2。デバッガーでcoreを解析するとバックトレースを確認できます。 このように、CやC++でデバッグするときにデバッガーはなくてはならない存在です。スクリプト言語にもデバッガーはありますが、デバッガーを使わなくてもデバッグできる範囲が広いため、CやC++をデバッグするときのほうがデバッガーのありがたさがわかります。 この記事では、広く使われているデバッガーであるGDBをもっと便利に使うためのGCCのコンパイルオプション-g3を紹介します。 サンプルプログラム まず、この記事で使うサンプルプログラムを示します。マクロ

    GDBでデバッグするなら-g3オプション - 2013-05-08 - ククログ
    masutaka26
    masutaka26 2013/05/09
    おおすげー。できた。『-g3オプションを指定するとGDB内でマクロを使えるようになります。』
  • DevLOVE 2012: 「リーダブルコードを読んだ後」 #devlove2012 - 2012-12-18 - ククログ

    2012年12月15日16日の2日間にわたりDevLOVE 2012が開催されました。 DevLOVE 2012はDevLOVEの100回目の開催だそうです。すごいですね。継続していることもすごいですが、掲げているテーマも「世界を変えるのは他の誰かではない、世界を変えるのは自分自身だ。」と、挑戦的ですごいですね。 さて、そんなDevLOVE 2012で「リーダブルコードを読んだ後」というタイトルのセッションをしてきました1。今年の7月に「リーダブルコード − 忘れてもいいコードを書こう。」というDevLOVEのイベントに講師として参加したのですが、その縁で声をかけてもらいました。 7月にやったイベントは「リーダブルコードというのはどういうものか考えてみよう」という内容だったので、今回は「リーダブルコードがよいか悪いかを考える時期はもう終わった。リーダブルコードはよいものだとわかった。では、

    DevLOVE 2012: 「リーダブルコードを読んだ後」 #devlove2012 - 2012-12-18 - ククログ
  • いいアドバイスをもらうための相談の仕方 - 2012-12-05 - ククログ

    物事の進め方や問題の解決の仕方などを決めるとき、他の人に相談します。しかし、いざ相談してみると、うまく相談できずに、もどかしい思いをしたり、相談の時間がいたずらに長くなって相談相手に迷惑をかけてしまったりすることがあります。うまく相談できていないときは、自分の状態をうまく伝えられず、相談相手を困らせたり、役に立たないアドバイスをもらったりします。 相談する目的はいいアドバイスをもらうことです。「いいアドバイス」とは、「自分の状態を良くするのに役立つアドバイス」です。いいアドバイスをもらうと、相談した自分の状態をいい方向にもっていくことができるからです。いいアドバイスをもらうためには、相談の仕方に気をつける必要があります。今回は、他の人に相談していいアドバイスをもらうための相談の仕方について説明します。 いいアドバイスをもらうためには伝える情報に気をつける いいアドバイスをもらうためには、相

    いいアドバイスをもらうための相談の仕方 - 2012-12-05 - ククログ
    masutaka26
    masutaka26 2012/12/09
    この辺を意識して相談していけば、無意識に意識出来るようになりますな。
  • 退職金共済制度を活用した退職金制度 - 2012-11-14 - ククログ

    はじめに 退職金共済とは、会社が社員のために毎月お金を積み立てて退職金を準備する制度で、単独で退職金制度をもつことが困難な企業が加入する共済です。 クリアコードでは、設立2年目にこの退職金共済制度を利用した退職金制度を設けました。当時はまだ会社が安定しているとはいえない状況で将来に対する不安もありました。もし会社に万が一のことがあっても社員が路頭に迷うことがないよう、多少なりとも退職金を用意することができればという思いから、退職金共済制度の活用を決めました。 クリアコードでは、国が運営する中小企業退職金共済制度(以下、「中退共」という)と東京商工会議所が運営する特定退職金共済(以下、「東商退職金共済」という)の2つに加入しています。退職金共済は社員にとっても会社にとってもメリットの多い制度です。 今回は、中退共を中心にその特徴をみていきながら、退職金共済制度活用のメリットとデメリットを紹介

    退職金共済制度を活用した退職金制度 - 2012-11-14 - ククログ
  • クリアなコードの作り方: 同じことは同じように書く - 2012-07-18 - ククログ

    「同じことは同じように書く」ことがどうして大事かを説明します。 具体例: returnの有無 先日、DevLOVE運営チーム主催のリーダブルコードイベントが開催されました。イベントの前半はリーダブルコードの訳者である角さんによるリーダブルコードの紹介で、後半は参加者が「リーダブルコードとはどういうコードか」をディスカッションしました。ディスカッションでは実際に参加者が書いたコードを読みながら「ここはリーダブルだね」「ここはこうした方がもっとリーダブルじゃないか」といったことを考えました。 さて、その中で使ったコードを見ながら「同じことは同じように書く」ことがどうして大事かを説明します。ここで使うコードはdproject21/yaruo_tdd_triangleのtriangle.rbです1。 class Triangle attr_accessor :a, :b, :c def is_eq

    クリアなコードの作り方: 同じことは同じように書く - 2012-07-18 - ククログ
  • 思い出せるチケットの書き方: 「動機」、「ゴール」、「実現案」 - 2012-07-12 - ククログ

    ソフトウェア開発を支援するために、やりたいことや問題を管理するシステムがあります。例えば、Bugzilla1やRedmine2、GitHubなどがそのような機能を持っています。システムごとにやりたいことや問題の呼び方が違います。例えば、Bugzillaでは「バグ」、Redmineでは「チケット」、GitHubでは「Issue」と呼んでいます。ここではRedmineと同じ「チケット」と呼び方を使うことにします。 今回紹介するのは、後からチケットを見たときに、チケットを書いた時に知っていた情報を思い出せるようなチケットの書き方です。 このような書き方は、プロトタイプのような「作って終わり」とか「短期間の開発」というようなソフトウェアでは必要がないでしょう。また、後述の通り、「チケット駆動開発」にも使えないでしょう。継続的に開発を続けていくソフトウェアの開発のように、やりたいことや問題はあるけど

    思い出せるチケットの書き方: 「動機」、「ゴール」、「実現案」 - 2012-07-12 - ククログ
    masutaka26
    masutaka26 2012/07/13
    ケースバイケースでこのような書き方をしますね。チケットを書くのに慣れてない人は、何も考えずにこの記事のとおりに書いて欲しい。書けるようになったら、簡略化すれば良いので。
  • 名前のつけ方 - 2012-06-28 - ククログ

    はじめに わかりやすいコードを書くことはソフトウェア開発において大切なことです。では、具体的にわかりやすいコードとはどんなものでしょうか?その観点はいろいろなものがあります。その中で今回は名前のつけ方に着目します。 コードに名前をつけるということ ソフトウェア開発において、名前をつける作業というのは絶えず発生します。メソッド名、変数名、クラス名、ファイル名などなど。名前をつける機会を挙げたらキリがありません。では、そもそもなぜ名前は必要なのでしょうか? それはソフトウェアに限らず言えることですが、複数のモノを区別したいためです。例えば、まったく違う処理をする別々のメソッドに同じ名前をつけたらソフトウェアは正しく動きません。それを防ぐためにそれぞれのメソッドにちゃんと名前をつける必要があります。それぞれのモノにそれぞれ違う名前をつけて区別できなければソフトウェアはそもそも動きません。 名前を

    名前のつけ方 - 2012-06-28 - ククログ
    masutaka26
    masutaka26 2012/06/29
    その通りですね。名前を略すことを普通にしてはいけません。特殊であると認識すべき。
  • リーダブルコードの解説 - 2012-06-11 - ククログ

    注: 記事中の「解説」の部分のライセンスは「Creative Commons 表示 - 非営利 - 継承」です。「解説」は「クリアコード」(「ClearCode Inc.」)によって変更されています。変更前の原著作者は「オライリー・ジャパン」です。「Creative Commons 表示 - 非営利 - 継承」なので再配布や変更や翻訳などはライセンスに従って自由に行えますが、営利目的で利用することはできません。 https://amazon.co.jp/dp/B0064CZ1XEの翻訳である「リーダブルコード」が今月(2012年6月23日)発売されます。すでに予約できるようです。 https://amazon.co.jp/dp/4873115655 書の内容は原書の紹介記事を参照してください。 日語版の訳者は角さんです。これまでの訳書と同様にとても読みやすく訳されています。翻訳なので読

    リーダブルコードの解説 - 2012-06-11 - ククログ