タグ

ブックマーク / blog.riywo.com (19)

  • EdgeRouter XでNTTのDS-Lite - As a Futurist...

    家の回線は NTT フレッツなんだけど、ふと使っているプロバイダから DS-Lite に対応したプランのお知らせが来た。DS-Lite と聞いてゲーム機の方を思い浮かべるくらいに IPv6 初心者だったけど、いい機会だしやってみようと思って IPv6 始めてみた。家のルータは EdgeRouter X にしていたのだけど、特に変わったことをしていなかったので何かやってみたかった。 結果としては、DS-Lite での IPv4=>IPv6 へのカプセル化はあっさりできてしまったものの、ルータ配下のデバイスに IPv6 のアドレスを持たせて通信することには成功していない(そんな難しくないはずなのに。。。)。なので、デバイスからの見た目は依然 IPv4 しか使えないので何一つ変化していないのだが、よくある話で DS-Lite にするだけで帯域が 10Mbps くらいしかでなかったのが 30Mbp

    EdgeRouter XでNTTのDS-Lite - As a Futurist...
  • ポータブルなwebアプリケーションとそのインフラの未来の一考

    naoya さんのポータブルな Web アプリケーションを受けて最近思ってることをば。140 文字で時々書いてるんだけど、まとまりがないので一回まとめておきます。 12-factor app ステートフルなアプリケーションについては、Heroku の人が提唱してる 12-factor app というのが現在の状況をよく表してます。 The Twelve-Factor App The Twelve-Factor App(日語訳) Heroku や他の PaaS によってもたらされたこうした一種の”制約”によって、アプリケーションの新しいカタチが生まれてきています。引き算によって新しい価値が生まれてきているわけですね。 とはいえ、PaaS は PaaS でそれぞれに独自の仕様を持っているわけですが、Herokubuildpack という仕組みを使って、Heroku とインタフェース仕様

    ポータブルなwebアプリケーションとそのインフラの未来の一考
    n2s
    n2s 2013/12/04
  • 最近のサーバの抽象化について - As a Futurist...

    学者でもなんでもない現場のいちエンジニアの感想です。しかも、どれもちゃんと使ったことないので、聞きかじりをまとめたメモ書きなので嘘が入ってますが、興味ある方がいればどうぞ。 はじめに かつては「OS=物理サーバ」であって、その物理サーバの資源(CPU,RAM,DISK,etc.)をどのように使うかは OS がプロセスに割り振る形で決定されていました。しかし、それでは例えば以下の様な問題があります。 ファイルシステム資源をプロセスが自由にコントロールできない ProcA と ProcB で使いたい libfoo のバージョンが異なる場合面倒 CPU, RAM 資源もコントロールしにくい 同居してるプロセスがメモリい尽くして、みんな死亡、みたいな そもそも異なる OS を同居して使うことができない CentOS ばかり使ってるのに、使いたいライブラリが Debian でしか動かないとか 解決

    最近のサーバの抽象化について - As a Futurist...
    n2s
    n2s 2013/08/06
  • anyenvという**env系の簡易マネージャを作った - As a Futurist...

    ndenv のエントリのおまけで anyenv install plenv 作るかもと書いておいたら、@koba04 さんから欲しい!というコメント頂いたので、とりあえずで実装してみました。ついでに anyenv の説明をば。 riywo/anyenv 何? rbenv をコピーした plenv や ndenv などは、.bashrc とかに 2 行追記して使うわけですが、数が増えるとこんな感じになってなんか悲しいです。 export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" export PATH="$HOME/.plenv/bin:$PATH" eval "$(plenv init -)" export PATH="$HOME/.ndenv/bin:$PATH" eval "$(ndenv init -)" ... そこで

    anyenvという**env系の簡易マネージャを作った - As a Futurist...
  • node.jsのバージョン管理のためにndenv & node-buildを作ったのとanyenvの宣伝 - As a Futurist...

    nvm がどうも好きになれないので、rbenv & ruby-build を見習ってというか丸パクリして ndenv & node-build を作りました。主に自分用なので細かい説明は省略します。rbenv や plenv に慣れている人はそのままの感じで使えます。nenv があるのは知ってましたが、古そうだったので改めてコピーして作りました。 riywo/ndenv riywo/node-build また、これ系を入れる度に profile をいじるのがだるいので anyenv というのも作ってて、~/.anyenv/envs以下に置くだけでいいようにしてたりもします。これも自分用なので使いたい人がいれば適当に使ってみて下さい。そのうち、anyenv install rbenvとか作るかもしれません。 riywo/anyenv tavi 13-06-29 (土) 11:52 便利なツー

    node.jsのバージョン管理のためにndenv & node-buildを作ったのとanyenvの宣伝 - As a Futurist...
  • GrowthForecastをHerokuで動かしてみる - As a Futurist...

    Heroku といえば PaaS では一番有名かなぁと思います。オフィシャルには perl はサポートされてないんですが、buildpack というスクリプト群を準備してあげると perl も使えます。miyagawa さんが公開されているものを少しだけ改造して、それを利用して GrowthForecast を Heroku で動かしてみました。 riywo/heroku-buildpack-perl riywo/GrowthForecast at heroku-dev 当然鬼門は RRDtool GrowthForecast を動かすにあたって、一番の鬼門はご存知 RRDtool になります。依存ライブラリが多く、入っていない場合にはそのインストールが必要になります。gfx さん作のAlien::RRDtoolが Makefile.PL の依存に書かれているので、もし必要なライブラリが一

    GrowthForecastをHerokuで動かしてみる - As a Futurist...
    n2s
    n2s 2012/10/27
    入れれるんか!
  • rsyncで多段ssh使いたいときの簡単な書き方 - As a Futurist...

    多段 ssh した先のサーバに rsync したくなったのでman rsyncしたら、 -e 'ssh -o "ProxyCommand nohup ssh firewall nc -w1 %h %p"' という例が書いてあったんですが、これ段数が増えると -e ’ssh -o "ProxyCommand nohup ssh -o \"ProxyCommand nohup ssh firewall1 nc -w1 %h %p\" firewall2 nc -w1 %h %p"’ みたいにクオートのエスケープが増えてくのがすごいだるいなーと思いました。 んで、多段 ssh といえばssh hoge -t ssh fugaみたいなやり方もあって、これでいんじゃね?と思ったら案の定できました。ただ、-t付けてると警告でるので削除してあげるといいです。こんな感じ。 $ rsync -av -e '

    rsyncで多段ssh使いたいときの簡単な書き方 - As a Futurist...
    n2s
    n2s 2012/08/17
  • Perlでハッシュのキーをdecode_jsonに渡すと壊れる - As a Futurist...

    タイトルの通りで、とりあえずperl-5.14.2/JSON 2.53でセグフォしました。。。 gfx 先生によると、実はハッシュのキーは単純な文字列じゃなくて、それをdecode_jsonに渡すと壊れる模様。 @riywo これは興味深いですね!ハッシュのキーは「FAKE」とよばれる特殊な文字列なのですが、それをJSON::XS::decode_json() に渡すとデータが壊れるようです。たとえば Dumper() ではなく $json に何か代入しようとしてもSEGVします。 — FUJI Goro (@__gfx__) June 15, 2012 perl-5.8.8 だと多分大丈夫そうな予感(use JSON::XSしてます)。あんまり色んなバージョンを手元に入れてないので試しきれてないですが、とりあえず報告ということで。 参考 - XS で共有文字列を活用する – Island

    Perlでハッシュのキーをdecode_jsonに渡すと壊れる - As a Futurist...
    n2s
    n2s 2012/06/16
    どういうことなの…
  • perlbrewとextlibなアプリのcronとかdaemontools - As a Futurist...

    perl は system perl じゃなくて perlbrew で入れて、アプリで必要な CPAN モジュールは全てアプリのディレクトリ下の extlib というディレクトリにインストールする方式は個人的にはいい感じだよなぁと思いつつ、cron とか daemontools がいつもどうやるのが正解なのか分からず困ってた。 またセットアップする機会があったので色々考えた結果、こんな感じなら割とすっきりした感じになった。 env このファイルがキモで、アプリのディレクトリに移動しつつ、いい感じに perl とか PATH とか@INC を設定して、渡されたコマンドを実行してくれる。 # perl -v This is perl, v5.8.8 built for x86_64-linux-thread-multi # ./env perl -v This is perl 5, versi

    perlbrewとextlibなアプリのcronとかdaemontools - As a Futurist...
  • rbenv ruby-buildとunicornでもっとさくっとRedmine入れてみる - As a Futurist...

    前にこういう記事書いたんですけど、Redmine プロジェクトは結構活発でついこの間 1.4.0 がリリースされてました。なんと Ruby1.9 系へ対応!Gemfile も提供されるようになってよりインストールが簡単になってたのでかっとなってやってみました。ついでにこちらもだいぶ枯れてきた rbenv+ruby-build を使い、HTTP サーバとしては unicorn を使ってみました。 rbenv+ruby-build のインストール git は入っている前提ですが、超簡単です。 $ cd $ git clone https://github.com/sstephenson/rbenv.git .rbenv $ mkdir -p ~/.rbenv/plugins $ cd ~/.rbenv/plugins $ git clone https://github.com/sstephe

    rbenv ruby-buildとunicornでもっとさくっとRedmine入れてみる - As a Futurist...
    n2s
    n2s 2012/04/18
  • 若者がパッケージ管理について思うことの今の結論 - As a Futurist...

    先日エントリを書いたら、各方面から「長い」「タイトルが意味不明」「若いっていいよね」とたくさんの dis を頂きありがとうございました。 そういえば、長くなりすぎて今のところの自分の結論書くのも忘れてたので、頂いたアドバイスも交えてもうちょっと書きます。 結論:あるサーバの正しい状態が定義できれば管理方法は問わない というわけで、パッケージ管理と呼んでいるものの外側から、ともかく正しい状態というのを何かしら定義することができれば、別にパッケージ管理の手法は問わないし何種類も組み合わせていいと思ってます。Touryo という自作のツールはそういう思想も受け入れていて、一部そういう管理を試しているところです。 抽象的で分かりにくいのでもうちょっと具体化すると、例えば rpm でのライブラリのパッケージ管理と cpan による perl モジュールのパッケージ管理は、XS などがある場合に完全に

    若者がパッケージ管理について思うことの今の結論 - As a Futurist...
    n2s
    n2s 2012/04/05
  • 若者がパッケージ管理について思うこと - As a Futurist...

    App::llenvというのを書いたり、Touryoというサーバの設定管理ツールを書いたりする中で、広義な「パッケージ管理」というものにすごい興味を持っているので、思うことを書いてみる。 **【追記】**タイトルが意味不明っていっぱい言われたのでえいやと変えてみた **【追記】**結論書き忘れてたので続きを書いた: 若者がパッケージ管理について思うことの今の結論 – As a Futurist… パッケージ管理って怖くてよく分からないとか思ってる人に少しでもパッケージ管理に親しんでもらえればと思って書いてる。かく言う僕も Perl の Catalyst や Plagger のインストールに泣いたり、rpm の依存ぶっ壊して戦々恐々としたりした経験があってここにいるわけなんですが、もうみんながそういう苦労するのあほらしいよなぁと思うので、パッケージ管理ってどういうところが勘所なのか知ってもら

    若者がパッケージ管理について思うこと - As a Futurist...
    n2s
    n2s 2012/04/05
  • 「ソフトウェア開発者採用ガイド」は採用される側も読んだ方がいい - As a Futurist...

    会社でふと教えてもらっただったのですが、読み始めたらすごいおもしろかったのですぐ読みきってしまった。2008 年なので僕はまだこういうことに興味なかったから全然網にかかってなかったけど、ググったりすると結構書評でてきますが、総じておもしろいって感じです。今更感ただよう書評ですいません。。。 高音域 社内外のスーパーエンジニアを見るに、当に「できる人」と「できない人」には絶対に超えられない壁があると僕も感じる。 凡庸な歌唱は最高の歌手がいつでも出している高音域を決して出すことができない。 p. 011 会社が高音域を求めるなら、優秀なエンジニアを獲得するしかないわけですし、優秀なエンジニアとはそういうものですね、実際。高音域を求めないところなら、確かに人月の神話で凡庸なエンジニアを並べればできあがるのでしょう。 才能 とはいえ誰だって最初は「できない人」であって、それが「できる人」になる

    「ソフトウェア開発者採用ガイド」は採用される側も読んだ方がいい - As a Futurist...
    n2s
    n2s 2012/02/25
  • rubiesとbundlerとpassenger使ってさくっとredmine使ってみる - As a Futurist...

    最近 redmine ブームが今更やってきていて、redmine のインストールが楽しくて仕方ない、、、わけないんですが、前は rvm で入れてたんですけど@niw さんに rvm オワコンだよねって言われて、僕も同感なので rubies をやっと使ってみました。ついでに、bundler も使って gem を管理してみて、あと passenger に standalone があることに今更気づいたのでそれも使ってみたら、かなりすっきりしたので簡単にメモ。 rubies で ree を入れる rubies はシンプルな ruby/gem 切替ツールです。 niw/rubies – GitHub blog.niw.at – rvm について一言 これを使って、Ruby Enterprise Edition(ree)を入れてみましょう。ただし、普通に installer を叩くと rails

    rubiesとbundlerとpassenger使ってさくっとredmine使ってみる - As a Futurist...
    n2s
    n2s 2011/11/24
  • mod_rewriteでの最後の砦 - As a Futurist...

    Web サーバ勉強会#3で話してきた内容です。mod_rewrite と mod_proxy_balancer 使って、L7 ロードバランサを作ろうとしたときにハマった話なんですが、すごい特定の限られた条件だし、そもそも大してクリティカルじゃないのですが、まぁまぁ面白い話題だと思うので紹介しておきます。 mod_proxy で最後の砦を作る時 ただのリバースプロキシだったり、L7 ロードバランサだったりの用途で、Apache の mod_proxy(mod_proxy_balancer)を使うことはたまにあると思います。RewriteMap とか、ルールのマッピングを外部ファイルにできたりするので結構柔軟に色々できます。 その際に色々と振り分けのルール付けを設定した後で、最後に「どれにも当てはまらない時はとりあえずここに振り分けさせる」というルールを書くときみなさんどうしてますか?Apac

    mod_rewriteでの最後の砦 - As a Futurist...
  • GNU Parallelがすごすぎて生きるのがつらい

    皆さん今日もたくさんのサーバを相手にされていることかと思いますが、いくつかのサーバにアクセスして 1 秒間の統計情報(例えばvmstat 1 2)を集めてパッと表示したい時ってどうやってますかね?shell script を学びはじめたばっかりの僕はこんな感じで書いてました。 $ for i in host1 host2 host3; do ssh $i "vmstat 1 2 | tail -1"; done 0 0 0 329004 210836 14275360 0 0 0 2424 1410 1828 0 0 100 0 0 0 0 0 3716112 587704 25921684 0 0 0 488 1643 2026 0 0 100 0 0 1 0 0 555440 265560 14015548 0 0 0 4204 1534 2392 1 0 99 0 0 vmstatと

    GNU Parallelがすごすぎて生きるのがつらい
  • ssh経由でリモートホストで実行してるプロセスにSIGINT送りたい時 - As a Futurist...

    perl で色々管理スクリプト書いてるんですが、そのなかでこんなコードを書きました。 system("ssh remote 'rsync ...'"); で、rsyncが走ってる途中でやっぱやめたと思ってCtrl+C=SIGINTを送ったんですが、もちろん perl のプロセスは死ぬんですけど、remoteで動いてるrsyncはそのままゾンビになって残ってしまいました。 はて、いろんなところに原因が考えられるなぁということで調べてみました。 host1> ssh host2 'some-command' host2> strace -p 20279 # some-command's pid Process 20279 attached - interrupt to quit read(0, # then "Ctrl+C" on host1 (host2) "", 4096) = 0 wri

    ssh経由でリモートホストで実行してるプロセスにSIGINT送りたい時 - As a Futurist...
    n2s
    n2s 2011/05/14
    -tを指定
  • 「安全なWebアプリケーションの作り方」を読んでセッションを復習してみた - As a Futurist...

    タイトルが長くて略称があれば知りたい感じの「安全な Web アプリケーションの作り方」を暇を見つけて読んでいます。今まであいまいなままだった部分を順を追って説明してくれるので、当に助かります。Web アプリ作りの初心者は卒業したかなーという人は必ず目を通しておくと良いと思います。 Cookie を用いたセッションについて復習 「HTTP はステートレスで」とかいう話はよく聞きますが、じゃあどうやってセッション管理するのがいいの?って話をよく考えると体系的に聞いたことがなかった!というわけで、こので文字通り体系的に学び直すことができました。 その中でも、「セッション ID の固定化」という話題はちゃんと分かってなかった部分があったので、こちらのサイトを参考に PSGI なアプリケーションを作ってみました(僕の書いたアプリ自体はその他の脆弱性に溢れていますがw)。コードはエントリの最後に。

    「安全なWebアプリケーションの作り方」を読んでセッションを復習してみた - As a Futurist...
  • ifstatって便利そうなの見つけたのでついでに*statを紹介 - As a Futurist...

    今更感もありますがすごい便利そうなツール発見。ネットワークインターフェイスのトラフィックを簡単にモニタリングできるツール。 ifstat CentOS とかだったら rpmforge にあるみたいなので、こんな感じで。(レポジトリ設定してなければ適当に) yum install --disablerepo=* --enablerepo=rpmforge ifstat チーミングしてる環境で出してみるとこんな感じ。-iで並び順も指定できたり、-bで Kbps にできる。vmstatと違って-tで timestamp も出せるのでこれ単体で便利に使えそうですね。ちなみに Linux の場合/proc/net/devを使ってるそうです。 *stat 系のツール 便利ですよね。パッとサーバに入って今起きている問題を分析するのにこれらのツールを使うのは有用です。top しか見ない人は覚えておくといい

    ifstatって便利そうなの見つけたのでついでに*statを紹介 - As a Futurist...
    n2s
    n2s 2011/02/20
  • 1