タグ

ブックマーク / dsas.blog.klab.org (27)

  • Consulのおもしろそうな仕組みについて調べてみました : DSAS開発者の部屋

    はじめに KLabさんの協力会社として一緒にお仕事をさせて頂いておりますクラスターコンピューティングと申します。今回はSerfの同様にHashiCorpより提供されているConsulを試してみました。 コンテナによるクラスタなど随時サービスが追加削除されるような環境ではそのアドレスはDHCPなどにより動的に決定されます。コンテナ名などでそのサービスにアクセスできれば便利ですが、動的なアドレスとコンテナ名の関係をどのように解決するかという点が問題になります。クラスタ内でロードバランサやリバースプロキシ等を利用している場合、サービスの追加に応じてその設定ファイルも動的に更新しなくてはなりません。また、構成が随時変化するなかで、現在どのサービスがどのホストで実行されているかということを把握する必要もでてきます。 Consulを利用することによりこれらの問題を解決することができます。今回はそのため

    Consulのおもしろそうな仕組みについて調べてみました : DSAS開発者の部屋
    bongkura
    bongkura 2017/02/14
  • ラズパイで作るネットワークエミュレータ(前編) : DSAS開発者の部屋

    ネットワークが絡んだ通信プログラムを開発していると、テストのために遅延やパケロスを意図的に発生させたくなることがあります。いまどきは IDE にネットワークエミュレーション機能が組み込まれていたり、仮想環境で容易に再現できたりもしますが、箱物のネットワークエミュレータがあるとネットワークの構成を気にせずカンタンに設置できるのですごく便利だったりします。世の中にはそういった製品が沢山あるので安価なものを買ってもいいのですが、新たにラズパイが届いたばかりだったので、これを使って超小型のネットワークエミュレータを自作してみました。前編と後編の二回に分けて紹介します。 最近、社内で「ラズパイおじさん」と呼ばれるようになりました。@pandax381 です。 ラズパイ + Linux = ネットワークエミュレータ 「ネットワークエミュレータを自作」と言うとなんだか凄そうな感じがしますが、実はものすご

    ラズパイで作るネットワークエミュレータ(前編) : DSAS開発者の部屋
  • Goのdatabase/sql.Stmtのスケーラビリティを改善しました : DSAS開発者の部屋

    先日、 Goに初めて私のパッチが取り込まれ 、コントリビュータに仲間入りしました。 このパッチは、 database/sql.Stmt をヘビーに使った時に性能がだいたい16コア以上のコア数にスケールしないという問題を解決するものです。 こういった問題をどうやって調査するのかと、Goにパッチが取り込まれるまでの手順を紹介します。 背景 私は TechEmpower の FrameworkBenchmarks という、いろんな言語/フレームワークで同一のアプリを作ってベンチマークするというプロジェクトで、主にPython関連のメンテナをしています。 Goにも興味があるので、Ginというフレームワークを追加したりコードレビューに参加したりしています。 2014-05-01 に行われた前回のベンチマーク Round 9 では、 PEAK Hosting が実行環境に加わりました。この環境は、デュ

    Goのdatabase/sql.Stmtのスケーラビリティを改善しました : DSAS開発者の部屋
    bongkura
    bongkura 2015/01/27
  • チャットで学ぶ Go ネットワークプログラミング : DSAS開発者の部屋

    簡単なチャットプログラムは、ネットワークプログラミング用のフレームワークでは定番のサンプルプログラムです。 echo サーバーが Hello World とするなら、チャットは FizzBuzz といったところでしょう。 とりあえず動くだけのチャットならだれでもすぐに作れるようになりますが、まじめにチャットを作ることで、 ネットワークプログラミングで考えないといけない点やエラー処理の重要な基礎を学ぶことができます。 ということで、 Go でシンプルなチャットを実装してみました。 (ソースコード) 以降、何を考えてどういう設計を採用したのかを解説していきます。 考慮すべきポイント 特定のクライアントへの送信に長時間待たされた場合に、他のクライアントへの送信が遅れないようにする。 クライアントを切断するのは、 (1)ルーム側から kick する場合, (2)受信エラー, (3)送信エラー の3

    チャットで学ぶ Go ネットワークプログラミング : DSAS開発者の部屋
    bongkura
    bongkura 2014/09/04
  • パケットリピータ「stone」を Android へポーティング : DSAS開発者の部屋

    オープンソースの多機能パケットリピータソフトウェア「stone」を Android 用にビルドしてみました。 当初は個人的に使用することが目的でしたが、原作者の仙石 浩明 (Hiroaki Sengoku) さんの了承のもと、ビルドずみバイナリを含むリソース一式を非正式版として公開します。他のプラットフォームで stone の便宜に馴染んでいる方はお試し下さい。なお、stone 体の使用方法等についてはこの記事では触れません。公式サイトの解説記事を参照して下さい。 ■ Download (2015年5月 記事を更新) プロジェクト一式を GitHub へ移動しました。以下のリポジトリを参照して下さい。ビルドずみの実行形式も収めています。 ・ https://github.com/mkttanabe/stone-Android-NDK 以下の説明ではこのソフトウェアを「ソフトウェア」と呼

    パケットリピータ「stone」を Android へポーティング : DSAS開発者の部屋
  • Android NDK でネイティブ CUI プログラムを書く! : DSAS開発者の部屋

    (2015年6月追記) 2014年10月に公開された Android 5.0 (Lollipop) 以降では PIE (Position Independent Executable) 以外のネイティブ実行形式がサポート外となったため注意が必要です。詳細はブログの次の記事を参照して下さい。 「Android で今後ネイティブ実行形式を扱う際に注意すべきこと」(2015年6月17日掲載) 今ならとても有利な条件で au の Android 端末を入手できることをネットで知り、先週の休みに地元の家電量販店へ足を運んでみました。 Android 1.6 搭載のこの「IS01」に今後 OS のバージョンアップサポートが適用されない旨の発表を聞いた時はお気の毒に・・と思っていましたが、極端に低いコストで実機を持てるのなら話は別です。とりあえずの実験用としていろいろ使えることでしょう。 そんなわけで

    Android NDK でネイティブ CUI プログラムを書く! : DSAS開発者の部屋
  • Pythonの内包表記はなぜ速い? : DSAS開発者の部屋

    「エキスパートPythonプログラミング」の発売が、Amazonや一部の書店で始まりました。 エキスパートPythonプログラミング 著者:Tarek Ziade 販売元:アスキー・メディアワークス 発売日:2010-05-28 クチコミを見る 今回は、「エキスパートPythonプログラミング」の2章から、リスト内包表記について補足します。 書で、リスト内方表記が速い理由について、次のような訳注を書きました。 訳注:リストに要素を append() する場合、インタプリタは「リストから append 属性を取り出してそれを関数として呼び出す」という処理をしなければなりません。 それに対して、リスト内包表記を使うと、インタプリタに直接「リストに要素を追加する」という処理をさせることができます。インタプリタが解釈する命令数が減る、属性の取り出しが不要になる、関数呼び出しが不要になる、という3

    Pythonの内包表記はなぜ速い? : DSAS開発者の部屋
  • Apacheのアクセスログをsyslog経由で出力するためのモジュールを作りました : DSAS開発者の部屋

    皆さんは、負荷分散環境でのApacheのアクセスログをどのように取り扱ってますか? 通常、Apacheのログは動作サーバ上のローカルファイルとして出力されるので、 Webサーバを同時に何台も稼働させて負荷分散を行うような環境では、それらすべ てのWebサーバのログファイルを集めなければなりません。ローカルファイルとし て出力されるということは、Webサーバの台数分だけログファイルがばらけること を意味します。考えるだけでめんどくさいですね。 KLabでは、このApacheログを2パターンを使い分けて集めています。ひとつは syslogによるリモート出力を使い、全Webサーバからのログ出力を一か所に集中さ せる方法です。これは、CustomLogディレクティブにloggerコマンドを使用するこ とで可能です。 CustomLog "|/usr/bin/logger -p local6.inf

    Apacheのアクセスログをsyslog経由で出力するためのモジュールを作りました : DSAS開発者の部屋
  • ApacheのアクセスログをMessagePack形式で出力するためのモジュールを作りました : DSAS開発者の部屋

    Apacheモジュールのログ出力、こんどはMessagePack版を作成しました。続いてはこちらをご紹介します。 Apacheのアクセスログを使い、ユーザアクセスの集計やパターン解析などというのは一般にどこでもやられていることだと思います。通常のアクセスログはテキストファイルなので、集計を行うためにスクリプト上で扱える変数・オブジェクト化が必要になりますね。1行ごとの各ログ項目を取り出すのに正規表現を使ったり、cutやawkなどを使い空白で分割するなど、色々工夫されていることと思います。 今回、MessagePack版のアクセスログ出力をやってみようと思い立ったのは、アクセスログをあらかじめ構造化済みの状態で保存しておければ、読み込みの際の解析する手間を省くことで解析処理の高速化が期待できるのではないか、そう考えたためです。MessagePackであれば、PythonRubyはじめ様々な

    ApacheのアクセスログをMessagePack形式で出力するためのモジュールを作りました : DSAS開発者の部屋
  • swfmillでFlash Lite 1のswfを扱えるようにしてみた : DSAS開発者の部屋

    Flashに関連するオープンソースなツールのひとつに、swfmillがあります。swfmillは、swfファイルを解析してxmlファイルに変換したり、逆にxmlからswfファイルを生成することができるツールです。swfmillの使い方についてはいろいろなところで紹介されているので、ここではFlash Lite 1.xのswfファイルをswfmillで扱うときの問題点について紹介したいと思います。 swf内の文字コード FlashはVersion 6からUnicodeに対応しました。Unicode対応前と対応後でswfファイル内の文字エンコードが異なり、対応前はcp932(日語の場合)、対応後はUTF-8になります。 そして、Flash LiteとFlashのバージョン間対応ですが、Flash Lite 1.xはFlash 4がベースになっており、Flash Lite 2.xはFlash

    swfmillでFlash Lite 1のswfを扱えるようにしてみた : DSAS開発者の部屋
  • repcached-2.0リリースのお知らせと、超簡単なサンプルコード : DSAS開発者の部屋

    repcached-2.0(memcached-1.2.5ベース) をリリースしましたのでお知らせします。 http://lab.klab.org/modules/mediawiki/index.php/Repcached (日語) http://repcached.lab.klab.org/ (英語) 今回の目玉はマルチマスタ構成のサポートです。 以前のバージョンはマスタ/スレーブ構成だったので、必ずマスタへ書き込まなければいけませんでした。そのため、接続先のサーバがマスタなのかどうかをクライアントが判別しなければいけなかったり、keepalivedなどと併用するなどの工夫が必要でしたが、今回のバージョンではその必要がなくなります。両方のサーバに対してデータを書き込むことができるようになったので、かなり使いやすくなったと感じています。 repcachedはパフォーマンスを最重視している

    repcached-2.0リリースのお知らせと、超簡単なサンプルコード : DSAS開発者の部屋
  • SWFファイルフォーマットとライセンス(その2) : DSAS開発者の部屋

    少し前の話になりますが、とうとうFlex 3 SDKとAIR SDKが公開されました。既にお使いの方も多いかと思います。 さて、以前「SWFファイルフォーマットとライセンス」という記事を書いたのですが、Flex 3 SDKが公開されてどうなったかの続報をお伝えします。 まず、大きな変更として、オープンソースな部分が増えました。Flex 2 SDKのときはFlex FrameworkのみがMPL(Mozilla Public License)だったのですが、Flex 3 SDKになって、コンパイラ、デバッガ、SWFライブラリ等もMPLになりました。Adobe Open Source に Flex SDK プロジェクト があるので、詳しくはそちらをご覧下さい。「プロジェクトページなんてどうでも良い、早くソースを見せろ」という方は、Flex SDK のsvnリポジトリが <http://open

    SWFファイルフォーマットとライセンス(その2) : DSAS開発者の部屋
  • Erlang で付箋Webアプリケーションを作ってみました。 : DSAS開発者の部屋

    インターネットを見ていて、そのときの感想とかページの内容に対して思っ たことなんかを簡単に書き留めておけると便利かなと思い、適当なWebのペー ジ上にブラウザで表示したまま付箋をつけられる WEB アプリケーションを、最近流 行の Erlang 作成してみました。 付箋 Web の実験デモサイトはこちらです。 http://husen.lab.klab.org/ 付箋Webの概要は 付箋のデータは専用の付箋Webサーバ上に保存される。 ブラウザー上ではAjaxで付箋Webサーバと通信する。 ブックマークレットを使って、任意のページで付箋を使えるようにする。 実際に作成しようとすると、他人のページに、ほかのサーバのデータを使って 重ね書きするので工夫が必要になります。最初に考えたのは、IFRAMEを使って 他人のページを表示する方法でしたが、これだけだと使いづらいので、ブック マークレットを

    Erlang で付箋Webアプリケーションを作ってみました。 : DSAS開発者の部屋
  • DSAS開発者の部屋:パソコン1台ではじめるロードバランサ体験

    昨日書いたの通り,記事を寄稿したWEB+DB PRESS Vol.37が,今日発売になりました.それを記念して(?),記事の内容が簡単に実験できるパッケージを公開します. これは,VMWareを使って,だれでも直ぐにロードバランサの実験を始められるパッケージになっています.何台もマシンを集めたり,Linux をインストールする必要は一切ありません.無償配布されているVMWare Playerがあれば,いつでもどこでも実験ができます. もちろん,このブログで去年の夏に公開した4つのエントリ こんなに簡単! Linuxでロードバランサ (1) こんなに簡単! Linuxでロードバランサ (2) こんなに簡単! Linuxでロードバランサ (3) 高トラフィックに対応できるLinuxロードバランサを目指して〜LVSをNATからDSRへ の実験もできます. ダウンロードはこちらからどうぞ(75MB

    DSAS開発者の部屋:パソコン1台ではじめるロードバランサ体験
  • キャリアのゲートウェイアドレス管理 -- apache module hacking! : DSAS開発者の部屋

    KLab は,元々が携帯向けのサービスを主とした会社で,現在も多くの携帯サイトを運用しています.それらのサイトでは,諸般の事情により携帯以外からのアクセスを制限しています.これは,アクセス元アドレスをキャリアのゲートウェイアドレスに限定することで実現しています.この制限は,Firewall でも行っているのですが,同時に Apache の mod_access を使って,Web サーバのレベルでも制限しています. KLab が運用しているサイトは複数あって,それぞれ対応するキャリアが異なります.ですので,それぞれのサイト毎にどのキャリアのアドレスを許可するか設定する必要があります.ところが,このキャリアのゲートウェイアドレスは,時々増減します.もちろん,その都度そのキャリア向けにサービスを行っている全サイトの設定を変更する必要があります. 当初は,サイト毎に Allow from の設定を

    キャリアのゲートウェイアドレス管理 -- apache module hacking! : DSAS開発者の部屋
  • ディスクレスシステムの応用 〜 Linuxのインストール : DSAS開発者の部屋

    ディスク障害を避けるために作り始めたディスクレスシステムですが、他にもいろいろな使い道があります。特にサーバ増設時の初期インストール作業において、絶大な威力を発揮しています。 「サーバ増設時の初期インストール」というと、ディストリビューションのCDからインストーラを起動し、必要なパッケージを組み込み、設定ファイルを書き換える・・・・という流れを思い浮かべる方が多いのではないでしょうか。 DSASのようなクラスタシステムでは、10台20台の単位でサーバが一気に追加されます。それらに対してまじめにインストーラを使っていると、時間と手間ばかりかかって仕方がありません。また、インストール後の設定作業も繁雑になりがちで、動作チェックと設定確認に神経をすり減らしながらストレスをため込む日々が待ちかまえています。やはり、面倒な作業はできるだけ手を抜きたいものです。 「OSのインストール」というと、世間一

    ディスクレスシステムの応用 〜 Linuxのインストール : DSAS開発者の部屋
  • Apache のログのアクセス権の分離 : DSAS開発者の部屋

    DSAS の特徴の一つに,複数のサービスを同じサーバ群で運用する,というのがあります.DSAS は Web サーバだけでも数台〜数十台で構成されますが,これらのサーバは同時に複数のコンテンツのサービスを受け持っています.つまり,A のサーバでは a と b のサービスを動かし,B のサーバでは b と c のサービスを動かす,といった具合です.こうすることで,コンテンツ毎に異なる負荷傾向をならすことができ,突発的な負荷の増大に対しても,速やかな処理能力の増強が可能になります.ただし,問題が一つあります. ログには,時として個人情報につながる情報が記録されます.ですので,コンテンツのログは担当者以外が読めてはいけません.一方,通常はコンテンツ a と b ではその担当者が,そして時には担当部署もが異なります.つまり,コンテンツ a の担当者が,b のログを読めるのは読めてはいけない,というこ

    Apache のログのアクセス権の分離 : DSAS開発者の部屋
  • 止まらない仕組みを目指して(3) 〜 ディスクレスシステムの導入 : DSAS開発者の部屋

    (前回の続きですが・・・) initrd/linuxrc で mount -t tmpfs tmpfs /lib などとやってるうちに、「面倒だからいっそのこと全部メモリ上に置いてしまえばいいのでは?」と思い立ちました。ただし、さすがにWebサーバをオンメモリで動かすのは容量的に厳しそうなので、とりあえず手始めに「FW兼負荷分散器兼ルータマシン」をディスクレス化してみることにしました。 KLabのシステムでは、FWやルータをLinuxで構成する風習(?)があり、負荷分散もLVSで実装しています。DSASでは「どのマシンが壊れても他のマシンで代替えが可能」という特徴を維持しているので、故障したからといって特に慌てる必要はないのですが、とはいっても「ディスクをほとんど使わなくても運用できるはずのマシンのディスク障害に手間をかけなければならない状況」というのは精神衛生上あまりよろしくありません。

    止まらない仕組みを目指して(3) 〜 ディスクレスシステムの導入 : DSAS開発者の部屋
  • DSAS開発者の部屋:携帯電話のふりをしたPCからのメールを拒否する方法

    SPF (Sender Policy Framework) という、送信元アドレスの偽装を検出する仕組みがあります。 実は主要な携帯キャリアはSPFに対応しています。ドコモ、auは去年の12月に、WILLCOM、Vodafoneがつい先日の2006年3月に対応しました。 報道発表資料 : 「なりすましメール」防止に向けた取り組みを推進 | お知らせ | NTTドコモ KDDI 会社情報: ニュースリリース > 送信ドメイン認証技術の導入開始について WILLCOM|送信ドメイン認証サービスの開始について 迷惑メール対策を強化|ボーダフォン 携帯電話のメールアドレスはドメインパートが決まっているので、 送信元メールアドレスのドメインパートが携帯電話のものかどうか。 SPFチェック失敗していないかどうか。 という判別をすれば、携帯電話からのメールのみを受け付けることができ、envelope f

    DSAS開発者の部屋:携帯電話のふりをしたPCからのメールを拒否する方法
  • apache module 開発事始め : DSAS開発者の部屋

    先日は,必要に迫られて Apache 1.3 の mod_access を改造したという話を書きました.その時は単にあるものを改造しただけでしたが,ふと思い立って,一から Apache 2.0 用のモジュールを書いてみました.書く上で色々 Web サイトを探してみたのですが,あまり日語の入門向けの文章が見あたらなかったので,開発する上で分かったこと(と言うほど大したものじゃないですが)をまとめておこうと思います. フェーズには,例えばそのリクエストを受け付けるか拒否するかを決めるフェーズや,リクエストされた URI と実際のディスク上のファイルとの間の対応付けを解決するフェーズ,そしてもちろん実際のレスポンスを生成するフェーズ等があります.hook 関数を挿入するポイントはこれらのフェーズになりますが,もちろんその全てのフェーズのための関数を用意する必要はありません.また個別の設定を施す

    apache module 開発事始め : DSAS開発者の部屋