タグ

ブックマーク / tagomoris.hatenablog.com (45)

  • ご意見募集: Rubyに名前空間サポート的なものが欲しいという話 - たごもりすメモ

    LFAを書いたときの話にあるKernel#loadの第2引数で名前空間的なものを作れるんだけど、loadした先のファイルでrequireされてたらダメなんだよね、という話の続き。ダメなんだよねー、で終わってたんだけどRubyKaigi2023で@shioyamaさんのMultiverse Rubyを聞いて、ここに仲間がいた!!! ってなって、さらにそのあとバーで飲みながらやろうやろうって盛り上がったので、なんか色々考えている。 RubyKaigiの話は別途書くとして、いまはとりあえずこっち。 後半に、こんなものが欲しい、という話、および読んだ人の意見が欲しいということが書いてあるので、このあたりに何か思うところがある人はぜひ読んでみてください。どっちかというと、自分以外のRubyユーザがどう考えているのかを、bugsに出す前にまず知りたいなと思っています。 動機 Rubyにはみなさんご存知

    ご意見募集: Rubyに名前空間サポート的なものが欲しいという話 - たごもりすメモ
    aki77
    aki77 2023/05/16
  • 実行中のRubyプログラム中で自分自身を動かしているrubyのパスを取得する - たごもりすメモ

    何が嬉しいんだそれって言われると、うーん、rbenv/rvmなんかの影響を無理矢理外すために環境変数とかをいじった上で自分自身を起動しなおしたかったからんだけど、あっやめて石を投げないで、そんなマイナーケース知るかって、あっ、 RbConfig モジュール 要するに RbConfig.ruby を呼べばすべて解決! http://docs.ruby-lang.org/ja/2.0.0/class/RbConfig.html#S_RUBY require 'rbconfig' RbConfig.ruby #=> "/Users/tagomoris/.rbenv/versions/jruby-1.7.8/bin/jruby" # とか @KitaitiMakoto さんに教えてもらいました。ありがとうございます! ボツ案 psして結果をパースする したくない。あとjrubyだとプロセス名自体は

    実行中のRubyプログラム中で自分自身を動かしているrubyのパスを取得する - たごもりすメモ
    aki77
    aki77 2023/04/18
  • 象印の加湿器が最高で当面これしか使いたくないという話 - たごもりすメモ

    ちょっとTwitterに書いたらい付いてくる人が多かったので、ではアピールしとこうと思った。 象印の加湿器、とにかく手入れが簡単でこれ以外の加湿器はもう二度と買う気がないというくらい最高— tagomoris (@tagomoris) 2023年1月7日 TL;DR 衛生面などを考えると加熱式加湿器*1を使いたい 加熱式加湿器は加熱部に残留物が結晶化して固まるので手入れがめちゃ面倒 象印のやつは電熱ポットと同じなので、たまにクエン酸ぶちこむだけで超ラク、最高です 加湿器運用の手間を減らしたい人にとにかくお勧めです 自分が使ってるのはこれ。今年大きいのを買い足した。旧モデルの小さい方とあわせて2台とも使ってます。 EE-DC35・50 | 加湿器 | 生活家電 | 商品情報 | 象印マホービン 加湿器を加熱式のに替えるとき、某社従来型*2と象印の(2020年モデル)と2台買ったんだけど、手

    象印の加湿器が最高で当面これしか使いたくないという話 - たごもりすメモ
    aki77
    aki77 2023/01/11
  • Fluentd v0.14.0 をリリースした & Fluentd meetup 2016 Summer をやってしゃべってきた - たごもりすメモ

    最近めっきり対外的なアウトプットが減っていたのは、ぜんぶこいつのコードを書きまくってたからです。すごい書いた。 Fluentd v0.14.0 has been released | Fluentd ということで出ました、Fluentd v0.14.0。だいぶいろいろ良くなってるはずだけど、そのあたりはこれからv0.14対応プラグインが増えてきたりすると分かってくるかなと思う。ユーザにとっても嬉しい変更が山盛りです。 で、まずそのことをアピールしなければならんということで、Fluentd meetupではがっつりとしゃべってきた。 Fluentd meetup 2016 Summer - dots. [ドッツ] Fluentd v0.14 Plugin API Details from SATOSHI TAGOMORI 元々45分の予定だったのに90分弱くらいしゃべってしまったらしい。すま

    Fluentd v0.14.0 をリリースした & Fluentd meetup 2016 Summer をやってしゃべってきた - たごもりすメモ
  • 続: OSSプロダクトとコミュニティの話 - たごもりすメモ

    先日書いた通りYAPC::Asia Tokyo 2015でOSSの開発とメンテナンスについての私見を話したところ、会場で id:t-wada さんから強烈な質問と、その後にまとまった量のエントリがきた。 t-wada.hatenablog.jp t-wadaさんの問題意識については上記エントリを読んでいただくとして、これに関連してYAPC::Asia期間中にいろいろな人と話したこと、およびその後に考えたことなどをまとめて書き下しておこうと思う。 明快な結論は無い。無いが、自分にとってのなんとなくの指針のようなものには多分なっており、こういうことを考えて自分はこれからコードを書くんだろうな、という気がする。 なお前提として自分がYAPC::Asia Tokyo 2015で話した内容がベースにあるので、できればそちらを把握しておいてほしい。t-wadaさんのエントリにあるメモは話した内容をよく

    続: OSSプロダクトとコミュニティの話 - たごもりすメモ
    aki77
    aki77 2015/08/31
  • Reverse Proxyがなぜ必要か、勝手に補遺 - たごもりすメモ

    「全体のリソース効率を上げましょう」というためのものである。 Reverse Proxy がなぜ必要か - naoyaのはてなダイアリー これは完璧に正しくて、ただ「リソース効率」という概念はあまり具体的な想像が追い付かない人がいそうだなと思ったので、ちょっとだけ補足しようと思った。 Reverse Proxyを入れることでリソース効率の向上を狙うんだけど、それは以下のような複数の場面におけるそれぞれのリソース効率向上を複合的に狙うものだ。 通常時のトラフィック配信におけるCPU・メモリ使用率を最適化する バースト時(過負荷時)のトラフィックをより細かく制御可能とする 障害時におけるダウンタイムおよび総合的な計算・配信能力の低下を極小化する 多数のサーバによる構成全体を増強・入れ替え・移動あるいは削減する際の自由度の向上を狙う 簡単にコンピュータの性能だけで言うと最初の項目だけをリソース効

    Reverse Proxyがなぜ必要か、勝手に補遺 - たごもりすメモ
    aki77
    aki77 2014/08/26
  • NATやファイアウォールの向こうへデータをお届けする fluent-plugin-pull_forward を書いた - たごもりすメモ

    Fluentdにおけるネットワークごしデータ転送プラグインといえば forward が組み込みであるし、通信路を暗号化したければ secure-forward がある。 しかしこれらFluentdのネットワーク転送プラグインは基的に全て送信元から送信先に対してプッシュする形になっており、ネットワーク接続も送信元から送信先に対して行うことになっている。このため送信先のFluentdがNAT下にある場合やファイアウォールで保護された場所にある場合、もしくはダイヤルアップ接続……は、まあ今は無いだろうけど、例えば移動するデバイス上にある場合など、こういったときにはうまくデータの転送を行う構成がとれない。 なぜこういう状況、つまりプッシュ型で転送を行うプラグインばかりなのかというと、FluentdのBuffer pluginの仕組みによる。細かく設計上の話をあれこれしてもアレだし面倒くさいので省

    NATやファイアウォールの向こうへデータをお届けする fluent-plugin-pull_forward を書いた - たごもりすメモ
  • DISられないUIを作るために最低限守るべき5つの鉄則 - たごもりすメモ

    ぼくらが迂闊にUIを作ると、そこにはユーザの正直な目線があり、非常に様々な、そして真っ当な反応がある。 曰く「わからん」「まさかそこをクリックするとは」「不思議な動作」「独自宇宙」「モリスUI」。 反応がもらえるのは非常に良いことだが、何度も何度も繰り返しているとつらくなってくるので、できれば避けたい。分かっている(いた)ことは最初から対応しておきたいものだ。*1 ということで、ここではブラウザで操作する管理画面等のWebUIを作るとき、真っ先に心得ておくべき5つの鉄則を紹介したい。これを守っていてもDISられなくなるというわけではないが、これを守らないと間違いなくDISられるので注意しよう。 なおこの記事ではオリジナリティというものについては考慮しない。オリジナリティとか犬にわせろ。 クリックできる場所はcursor:pointerを指定しろ これを忘れるとこの世のものとは思えないくら

    DISられないUIを作るために最低限守るべき5つの鉄則 - たごもりすメモ
    aki77
    aki77 2014/07/18
  • Norikra v1.0.0 - たごもりすメモ

    English article 以前からスキーマレスなストリーム処理をSQLで!というソフトウェアとして作っていたNorikra、このたびあちこち機能改善したりしたので、既にお仕事で絶賛稼働中ということもあるし、区切りとして v1.0.0 としてリリースした。 ついでにロゴとかも作ったので、なんとなくいい感じになりつつある。 https://rubygems.org/gems/norikra/versions/1.0.0-java http://norikra.github.io/ 修正点は リポジトリ のChangesに書いてあるが、curlだけで操作できるようHTTP JSON APIが加わってたり、GCまわりでハマらないようなデフォルトオプションが入ってたり、分析系クエリを書きたい人のために Group-by with Rollup や Grouping sets, Cube などの

    Norikra v1.0.0 - たごもりすメモ
  • fluentdとシステム設計の小ネタ - たごもりすメモ

    あるいは http://yugui.jp/articles/879 へのreply。 システム監視をfluentdに統合してしまうべきか否か システム監視は分けておいた方がいいと思う。分けるべき、とまでは言わないけれど。 それらの仕組みには相応の必要な機能セットがあり、それらは長い歴史の中で比較的決まった機能セットに収斂してきており、その収集・モニタリング・可視化・アラート通知など決まりきったパターンを様々な項目について停止なく行う必要がある。 Fluentdの各種プラグインを用いることで同じような機能は実現できる。そのプラグインのうち数割は自分が書いものだったりする。とはいえ各ホストのシステム監視までそこで行うことを想定して書いたかというと、もうちょっと高いレイヤでの監視・集計、つまりサービス単位などを目的としたものが多い。サーバ単位で行おうとしたときに設定が雑多なものになるのはおそらく

    fluentdとシステム設計の小ネタ - たごもりすメモ
  • isucon3本戦いってきた&勝ってきた! #isucon - たごもりすメモ

    isucon3の戦にLINE選抜チームとして出た。ガッカリな感じだった予選時の状況はこちら。 isucon3予選参戦の記録 - tagomorisのメモ置き場 引き続き @kazeburo @sugyan @tagomoris の3人チーム。 ざっくりまとめ みんなこれまでこんな楽しいイベントに参加してたのか! ずるい!!!!!! 普段やってることを普段通りやる、と思っていたが焦って普段やらないようなミスを次々連発、社会は厳しい 思いきった構成変更とかできるのがisuconでしょwwww とかドヤ顔していたが、やりきれた。ドヤッ。 これからisuconという名前を口にするときに堂々とドヤ顔しようと思います。嘘です。元出題者のくせに成績出ないとかwwwみたいにならなくて当に安心しました。終わったあとのビールおいしかったです。 ということで、勝ちました。優勝と、あと僅差で特別賞もいただきま

    isucon3本戦いってきた&勝ってきた! #isucon - たごもりすメモ
    aki77
    aki77 2013/11/11
  • GrowthForecastの値をNagiosから監視できるようにすると #fluentd がより活用できる - たごもりすメモ

    Fluentd からGrowthForecastへデータを投入するためのプラグイン fluent-plugin-growthforecast を作って使っている。 fluent-plugin-flowcounter および fluent-plugin-growthforecast released! #fluentd - tagomorisのメモ置き場 で、このGrowthForecastには最近、データをJSONで出力する機能がついた。 GrowthForecastに1分更新グラフ作成とサマリーなどのJSONフォーマットでの出力機能追加 - blog.nomadscafe.jp つまりFluentdからストリーム状に入力したデータを可視化しつつ、更に時系列データとしての(変則の)ストレージとしても使えるようになった、ということだ。つまりつまり、最近の3数値平均をとってそれを相手になんかチ

    GrowthForecastの値をNagiosから監視できるようにすると #fluentd がより活用できる - たごもりすメモ
  • fluent-plugin-secure-forward v0.1系のお話 - たごもりすメモ

    前に作ってえいやでリリースしてから「メンテナ募集!」で放置されていた fluent-plugin-secure-forward ですが。 #fluentd Casual Talks #2 やってきた&fluent-plugin-secure-forwardの話 - tagomorisのメモ置き場 手元で用途無いからもうこれ以上やらないよ宣言してたんだけど、その後放置の数ヶ月を経てうっかり用途のほうが出てきてしまった。なんということだ。 v0.1.3 リリース内容 ということであれこれ直して手元で番環境に投入したので、個人的なポリシーに従って v0.1.0 としてリリースした。その後バグが見付かったりで直してたのでもう既に v0.1.3 だけど。 fluent-plugin-secure-forward | RubyGems.org | your community gem host ta

    fluent-plugin-secure-forward v0.1系のお話 - たごもりすメモ
  • Fluentd Config DSLについての話 - たごもりすメモ

    Fluentd に Config DSL を導入しろや! つまり設定をRubyのコードで書かせろや! という声は前から多かった。が、なんかいろいろ面倒な思惑が交錯し、あと「設定ファイルにrubyのコードでcallbackとか書いてプラグインの挙動を制御したい!」とか更に面倒なことを言いだした人がいたせいでDSL以外の設定書式でそれどうすんの……とコミッタの精神状態がどん底まで落ち込み長らく放置されていた。 みんなもOSSプロジェクトにfeature requestするときはあんまりステキすぎる機能のリクエストをする前に少し考えてみよう。まじで。 https://github.com/fluent/fluentd/pull/97 で、そんな数ヶ月ののち、ちょうど Fluentd v11 ハッカソンなるものがあったので、生ハムべつつワイン飲んでたらConfig DSLのことを思い出した。まー

    Fluentd Config DSLについての話 - たごもりすメモ
  • iPhone4が便座にダイブしたがゲル漬け25時間で生還した件 - たごもりすメモ

    去る8月20日金曜日の正午過ぎ、突如自分のiPhone4が大便器にダイブしました。 あまり綺麗な話ではないので詳細は省きますが洗浄ボタンを押したあとで便器内に物件は残っておらず*1、あまり汚れはしなかったもののドバドバ流れる水に数秒間さらされるという酷い状況にiPhone4はあえなく沈黙。電源を落とす画面がちらちら明滅したあとのことでした。あまりのショックに記憶が定かではないのですが、かなりデカい声で「ああああああああああああ」とか叫んでいたような気がします。隣のブースの人はどう思ったでしょうね。 応急処置 (12時31分) で、数秒で救出はしたものの洗面台でいちおう洗ったこともあり画面は完全に沈黙。物理スイッチがないしバッテリも外せないしで、画面が暗いだけなのか電源が落ちてるのかもよくわからん。 ここでどうすべきかTwitterから群集の英知が得られたところによると「米びつに入れるんだ!

    iPhone4が便座にダイブしたがゲル漬け25時間で生還した件 - たごもりすメモ
    aki77
    aki77 2013/08/29
  • Linuxサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか - たごもりすメモ

    完全に このエントリ のネタパクりです。すいません。 何に使われてるかわかったもんじゃないマシンとか開発用サーバとかだと超巨大なバイナリとか置いてあるかもしれませんが、プロダクション用のサーバでそういうことは無いとしましょう。 その場合、原因はだいたい以下のどれかです。www/appとdbが別マシンに分かれてる場合は更に絞り込めますね。 wwwサーバやappサーバ ログ 圧縮してあるが保存世代数が多くて厳しいケース 圧縮し忘れてるケース 圧縮どころかローテーションすら忘れてて1ファイルどかんと存在するケース ローテーションがうまくいかなくて deleted ファイルなケース tmpデータなど(app) キャッシュサーバのディスクキャッシュ dbサーバ データ実体 (ib_data) バイナリログ ログの場合でも、ディスク上のどこにログが書かれてるかは色々なパターンがある可能性がありますね。

    Linuxサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか - たごもりすメモ
    aki77
    aki77 2013/07/30
  • ruby 2.0.0-p195 + fluentd v0.10.35 + msgpack v0.5.5 の組合せが素敵という話 - たごもりすメモ

    fluentd v0.10.35 が出ましたね! https://rubygems.org/gems/fluentd で、端的に申し上げまして fluentd をお使いの皆様は以下の組合せで使うのがおススメです。 Ruby 2.0.0-p195 Fluentd v0.10.35 MessagePack v0.5.5 なぜかというと以下のようなすばらしい利点があるからですね。 Ruby 2.0.0 でfluentdを走らせると大変高速 2.0.0 は each とかを回すときに非常に高速になるような改良が入っている 1.9.3 向けには funny-falcon patch として知られていたもの rvm を使ってビルドしていたrubyだと知らずに当たってるかも これが大量のメッセージに対してループが回りつづけるFluentdに超ハマる 手元計測で生の 1.9.3 の倍ちょっと高速 Ruby

    ruby 2.0.0-p195 + fluentd v0.10.35 + msgpack v0.5.5 の組合せが素敵という話 - たごもりすメモ
  • dmmのエンジニアと話をしてみたいという話(追記あり) - たごもりすメモ

    dmmは世の中のオトコノコにとっていろいろと言及するのに躊躇いつつ誰でも知っているアレなわけです。で、それなりの規模のWebサービスの裏側を見たことがある人なら誰でも、dmmの裏側はきっと物凄いことになっているに違いない、ということが想像がつくわけですね。 簡単に思い付く範囲でも以下のようなものがあります。 膨大な画像(サムネイル)および実コンテンツ(画像、動画、ソフトウェア圧縮ファイル)を配信するトラフィック しかもトップ数パーセントだけではなく、おそらくかなり裾野が広いトラフィック 膨大な商品の高速な列挙・表示 膨大な商品に関するタグつけ 膨大な商品に関する自然言語による全文検索 全トラフィックにおける膨大な量の課金・決済トランザクション 実物の通信販売に決済結果を載せる流通関連の問題 大勢のユーザに対して膨大な商品から適切に行うためのレコメンデーション これだけのことをやっているから

    dmmのエンジニアと話をしてみたいという話(追記あり) - たごもりすメモ
    aki77
    aki77 2013/05/20
  • #fluentd fluent-plugin-file-alternative released! - たごもりすメモ

    fluentd 標準のファイル出力プラグイン out_file はメッセージをJSONにシリアライズして出力するというもので、これはこれでまあいいんだけど、JSONだと逆に扱いづらいケースなんかもUNIXの文化ではあれこれある。また完全にJSONというわけでもなく、行頭にタブ区切りで日時とタグが入ってたりもするため、いきなり JSON parser にかけるわけにもいかなかったりして面倒だだだ。 ということで、出力フォーマットをさまざまにいじれるようにしたプラグイン out_file_alternative を作り fluent-plugin-file-alternative としてリリースしました。 fluent-plugin-file-alternative | RubyGems.org | your community gem host tagomoris/fluent-plugin

    #fluentd fluent-plugin-file-alternative released! - たごもりすメモ
  • 本番環境でのperl/ruby/nodeのセットアップ - たごもりすメモ

    番環境にperlとかrubyとかnodeを入れるんだけど、もちろん system perl じゃやってられないので指定したバージョンのものを一般ユーザの管理下に突っ込みたい。 で、そういうのをこれまで perlbrew とか rvm とか rbenv とか nvm とか nodebrew とかでやってたんだけど、さすがに色々疑問が湧いてきた。バッチで単発実行するために eval "$(rbenv init -)" とかさすがにおかしくね? みたいな。 ということで tokuhirom method 的にインストール用の簡単コマンドを使って実行、あとはパスを通せばいいじゃん、ということにしようかと思う。 参考: サーバーのセットアップは perlbrew とかじゃなくてよくね? という時のライフハック - blog.64p.org これ、今朝までは Perl::Build をどうにかしてC

    本番環境でのperl/ruby/nodeのセットアップ - たごもりすメモ