‘未分類’ カテゴリーのアーカイブ

観光に仕事で五島(GOTO)にいってきた話

1.全然上手く行かない1日目

    1日目はとにかくトラブルの連続であまり上手くいきませんでした。

    カーナビの仕事だったので、五島の炎天下の中、
    駐車場で「ならない、ならない、ならない」の連続。

    なんでならないのかその糸口もつかめない状態でしたが、
    uraさんから鶴の二声が・・。(問題点を2つも発見)

    助言があり、何が問題なのかがわかり、
    yoshidaさんと私で夜のうちに問題点を修正し明日、再挑戦することになった。

2.飲み会

    今回作っているシステムの詳しい話を聞いて、
    初めてどんな規模のプロジェクトに関わっているかを知る(遅・・。)。

    あと、五島では海のものがかなり新鮮な状態で食べられるらしく
    色々美味しいものを食べさせてもらいました。

    題「きびなを七輪で焼いて食べる」
題「きびなを七輪で焼いて食べる」

3.夜のプログラミング

    とにかく、明日上手く行かなかったら大変なことになるため、
    問題点が解決するまでコーディング、コーディング!

    私のほうもyoshidaさんのほうも結構あっさり問題が解決し、
    万全の準備ができて就寝。

4.上手くいった2日目

    次の日は、解決策が見事に効いて、
    1日目のトラブルがうそのように、全てがすんなりいき、とても嬉しかったです。

5.ギリギリだった五島観光システムが上手くいっているかをテストするためのドライビング

    テストしながら、色々なポイントを回っているうちに
    時間がなくなりフェリーに間に合うかどうかギリギリに・・。
    
    そうこうしているうちに、EV車の電気がなくなりさらにギリギリに・・。

    電欠ギリギリ時間ギリギリでも、
    最後にはきちんと間に合って長崎まで帰れました。

    題「すごく奇麗だった高浜海岸」
題「すごく奇麗だった高浜海岸」

Facebooktwitterlinkedintumblrmail

OSC2012 Tokyo/Fall はじまります

ブースの準備できました。

本日14時からは弊社、峰松が

『県庁並行稼働中!OpenCOBOL汎用機ダウンサイジングでのハマりどころ』

と題しましてセミナーを行います。よろしくお願いします。

飛び入り参加大歓迎です。

Facebooktwitterlinkedintumblrmail

DNSサーバへのANY? . な連続リクエスト対応

管理してるサーバのネットワークトラフィックが妙に高まっていてなんだコレ?と調査しておりましたら…

16:00:11.143581 IP (tos 0x0, ttl 233, id 62542, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143674 IP (tos 0x0, ttl 233, id 62543, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143738 IP (tos 0x0, ttl 233, id 62544, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143823 IP (tos 0x0, ttl 233, id 62545, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.143898 IP (tos 0x0, ttl 233, id 62546, offset 0, flags [none], proto: UDP (17), length: 61) 184.154.183.56.5325 > 60.32.189.190.domain: [no cksum]  32583+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:00:11.144194 IP (tos 0x0, ttl  64, id 26513, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)
16:00:11.144323 IP (tos 0x0, ttl  64, id 26514, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)
16:00:11.144432 IP (tos 0x0, ttl  64, id 26515, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)
16:00:11.144539 IP (tos 0x0, ttl  64, id 26516, offset 0, flags [none], proto: UDP (17), length: 56) 60.32.189.190.domain > 184.154.183.56.44493: [bad udp cksum 5296!]  22153 ServFail- q: ANY? . 0/0/1 ar: . OPT UDPsize=4096 (28)

おお、DNSサーバへの激しい連続request。測ったところ50回/秒以上のペースで複数箇所から投げてきてるようでした。request内容も ANY? . ということで、弊社のDNSコンテンツサーバが応答する必要がない(ので ServFailを返している)内容のようです(DNS ampなDDoSのシカケにしては、偽装された?rewuest元IPが色々と分散していて謎です)。

複数箇所から飛んでくるのはDNSサーバの運命ですからしかたないとしてServFailを返すだけでも負荷が高まりますし、帯域も多少埋まって勿体ないのでiptablesでフィルタすることにしました。

tcpdump -n -vvv -X -s1500 -i eth1

にてもう少し詳しくパケットの内容を拾ってみると。

16:22:35.827460 IP (tos 0x0, ttl 238, id 36986, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.hexarc > 60.32.189.190.domain: [no cksum]  61037+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
   0x0000:  4500 003d 907a 0000 ee11 cd03 615d 13f6  E..=.z......a]..
   0x0010:  3c20 bdbe 1ce5 0035 0029 0000 ee6d 0100  <......5.)...m..
   0x0020:  0001 0000 0000 0001 0000 ff00 0100 0029  ...............)
   0x0030:  2328 0000 0000 0000 0000 0000 00         #(...........
16:22:35.944826 IP (tos 0x0, ttl 233, id 48921, offset 0, flags [none], proto: UDP (17), length: 61) 77.99.52.123.25697 > 60.32.189.190.domain: [no cksum]  6521+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
   0x0000:  4500 003d bf19 0000 e911 96d9 4d63 347b  E..=........Mc4{
   0x0010:  3c20 bdbe 6461 0035 0029 0000 1979 0100  <...da.5.)...y..
   0x0020:  0001 0000 0000 0001 0000 ff00 0100 0029  ...............)
   0x0030:  2328 0000 0000 0000 0000 0000 00         #(...........

な内容でしたので、iptablesにて

iptables -t raw -I PREROUTING -p udp --destination-port 53 \
 -m string --algo kmp --from 30 \
 --hex-string "|010000010000000000010000ff0001000029232800000000000000000000|" \
 -j DROP

とIPパケットの30byte目からのパターンに注目してhex-string形式で指定してみます。
結果:

16:40:37.686016 IP (tos 0x0, ttl 238, id 51404, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.32175 > 60.32.189.190.domain: [no cksum]  15020+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:40:37.686094 IP (tos 0x0, ttl 238, id 51405, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.32175 > 60.32.189.190.domain: [no cksum]  15020+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:40:37.686176 IP (tos 0x0, ttl 238, id 51406, offset 0, flags [none], proto: UDP (17), length: 61) 97.93.19.246.32175 > 60.32.189.190.domain: [no cksum]  15020+ [1au] ANY? . ar: . OPT UDPsize=9000 (33)
16:40:37.853317 IP (tos 0x0, ttl 234, id 23094, offset 0, flags [DF], proto: UDP (17), length: 69) 201.6.2.85.14604 > 60.32.189.190.domain: [udp sum ok]  11303% [1au] AAAA? ns.server.st. ar: . OPT UDPsize=4096 (41)
16:40:37.854079 IP (tos 0x0, ttl  64, id 44172, offset 0, flags [none], proto: UDP (17), length: 110) 60.32.189.190.domain > 201.6.2.85.14604:  11303*- q: AAAA? ns.server.st. 0/1/1 ns: server.st. SOA[|domain]
16:40:37.855922 IP (tos 0x0, ttl 234, id 23093, offset 0, flags [DF], proto: UDP (17), length: 69) 201.6.2.85.62860 > 60.32.189.190.domain: [udp sum ok]  15132% [1au] A? ns.server.st. ar: . OPT UDPsize=4096 (41)
16:40:37.856467 IP (tos 0x0, ttl  64, id 44173, offset 0, flags [none], proto: UDP (17), length: 143) 60.32.189.190.domain > 201.6.2.85.62860:  15132*- q: A? ns.server.st. 1/2/2 ns.server.st. A 60.32.189.190 ns: server.st.[|domain]

ServFailも返すことなく、返すべきrequestについては正しく応答を返してますね。
何事も平和が一番です(´ー`)

Facebooktwitterlinkedintumblrmail

LT『baserCMSでホームページをリニューアルしたときのアレコレ』のスライド

オープンソースカンファレンス2012 Kansai@Kyoto の「ライトニングトークfor Business」で話した『baserCMSでホームページをリニューアルしたときのアレコレ』のスライドです。

baserCMSでホームページをリニューアルしたときのアレコレ

書きすぎたとは思っていましたが、実際に話すと思ってた以上にボリュームありすぎでした。

5分なんだってば。失敗。

Facebooktwitterlinkedintumblrmail

明日(OSC2012 Kansai@Kyoto)のブース準備完了

前日に準備おわっちまったぜー。ワイルドじゃないだろ〜?

Facebooktwitterlinkedintumblrmail

Mac で複数ファイルの一括置換ってどうしてます?パート2

<前置き>
 とある休日の午後、grepして置換したい場面が訪れた。
 (そういえば、macでgrepで置換ってどうするんだろう?)と思った。

 早速、googleで『mac grep 置換』で検索してみる。
 すると、なんということでしょう。我が社のブログが一番にヒットするではないですか。

Mac で複数ファイルの一括置換ってどうしてます?パート1

 読んでみて1秒後
 (なんだか難しい・・。)

 そして他の検索候補を見てみると「TextWrangler」を使うといいらしい。
 ということで、「TextWrangler」でgrepで置換する方法を試してみます。

<grepで置換する>
1.「TextWrangler」をインストールする。
 App Storeで検索してインストールします。

2.起動して対象のディレクトリを開く。

3.対象のディレクトリを選択後次のような画面になります。

4.メニューの「Search」→サブメニューの「Search in (選択したディレクトリ名)」を選択します。

5.次の内容でセッティングする。
①紫枠内に対象とする文字列を入力
②緑枠内に置換後の文字列を入力
③黄色枠内で対象のディレクトリが選択されているか確認
④赤枠内の「Replace All」ボタンを押下する。

6.次の内容で実行
①青枠内をチェックすると保存するたびに、ダイアログが出て保存するか聞いてくるので、はずしています。
②赤枠内のProceedで実行します。

7.最後に結果が表示されて完了

Facebooktwitterlinkedintumblrmail

このコマンドどのRPMに入ってたっけと言う時

rpm -q –whatprovides /bin/ls
等と打てばRPMを表示してくれます。
前の環境だとこのコマンドが使えたのにどのRPMを入れたら分からないと言った場合に便利です。

digがbind-utilsに入っているとは思わなかったのです。

Facebooktwitterlinkedintumblrmail

ここでのニックネームをかえました

自社ページリニューアルの準備をしてまして管理者権限を貰いました。
そんで管理ページみたら変更できたので発作的に変えてしまいました。

murabeからmurave、twitterなんかで使ってるやつです。
なるべく統一したほうがいいよなーと思ってたんですよ。

発音は「ムラヴェ」でなく「ムラベ」で結構です。
ぼくも発音できませんし。

Facebooktwitterlinkedintumblrmail

31歳でPHPUnitを使った僕

31歳でPHPUnitを使った僕

プロローグ
これまでPHPUnitを使ってこなかったけど、少し心配になる部分があったので
PHPUnitを使ってみることにした。
——————————————————————
第一章『インストール』
インストールは
ここ
を読んでやりました。

——————————————————————
第二章『テスト対象のファイル』
Calc.php


------------------------------------------------------------------
第三章『コマンドの実行』
このコマンドを実行する。
「phpunit --skeleton-test Calc」

------------------------------------------------------------------
第四章『テストファイル』
このファイルは第三章のコマンドを実行すると自動的に作られます。
(よく出来てるな~。)
CalcTest.php

class CalcTest extends PHPUnit_Framework_TestCase
{
    /**
     * @var Calc
     */
    protected $object;

    /**
     * Sets up the fixture, for example, opens a network connection.
     * This method is called before a test is executed.
     */
    protected function setUp()
    {
        $this->object = new Calc;
    }

    /**
     * Tears down the fixture, for example, closes a network connection.
     * This method is called after a test is executed.
     */
    protected function tearDown()
    {
    }

    /**
     * @covers Calc::add
     * @todo Implement testAdd().
     */
    public function testAdd()
    {
        // Remove the following lines when you implement this test.
        $this->markTestIncomplete(
          'This test has not been implemented yet.'
        );
    }
}

------------------------------------------------------------------
第五章『書き換える』
testAddメソッドを次のように書き換える。

/**
 * @covers Calc::add
 * @todo Implement testAdd().
 */
public function testAdd()
{
    $this->assertEquals(3, $this->object->add(1, 2));
}

------------------------------------------------------------------
第六章『実行する』
このコマンドを実行する。
「phpunit CalcTest」
PHPUnit 3.6.10 by Sebastian Bergmann.

.

Time: 1 second, Memory: 4.00Mb

OK (1 test, 1 assertion)

------------------------------------------------------------------
第七章『Eclipseから実行したい。』
MakeGoodというのを使えばいいらしいです。

------------------------------------------------------------------
第八章『MakeGoodのインストール』
①ヘルプ→新規ソフトウェアのインストール

②追加ボタンを押します。

③次のように入力します。
名前:「MakeGood」
ロケーション:「http://eclipse.piece-framework.com/」

④以下のようにMakeGoodにチェックをいれます。

⑤あとは使用条件に同意出来ればOKを押してインストール完了です。

------------------------------------------------------------------
第九章『MakeGoodの設定』
①Eclipseの環境設定を開く。

②PHPの実行可能ファイルの設定を開き、追加ボタンをクリックします。

③赤枠部分を環境に応じて入力します。

④PHPのデバッグの設定をします。
以下の赤枠部分を環境に応じて選択します。

------------------------------------------------------------------
第十章『MakeGoodのプロジェクトの設定』
①プロジェクトを右クリックしてプロパティをクリックします。
②インクルードパスを設定します。
 ライブラリーの追加をクリックします。

③次へをクリック

④新規ボタンからダイアログをだして「PHPUnit」と入力

⑤PHPUnitが選択されている状態で外部フォルダーの追加をクリックし、
PHPUnitがインストールされているフォルダを選択

このような状態になります。

⑦PHPUnitにチェックをつけて完了をクリック

⑧「ソース」の項目をクリックして「システムインクルードパスの追加ボタン」をクリックします。

⑨プロパティの「MakeGood」の項目を開き、下にある「追加ボタン」をクリックし、テスト対象のフォルダを追加します。

このようにチェックします。

------------------------------------------------------------------
最終章『実際に使ってみる』
①テストプログラムを右クリックしてメニューを出し、「テストの実行」メニューをクリックします。

②ビューにこのように結果が表示されます。

------------------------------------------------------------------
エピローグ
物語風なのにまったく物語がなかったけど。
やっぱりテストを書く気になれる環境があるのはいいことかな~と思う。

Facebooktwitterlinkedintumblrmail

OSC2012 Nagoya. LT for Business『Roundcubeがいい感じな件』

終わりましたー。スライドアップします(ちょい自粛版)。

『Roundcubeがいい感じな件』のスライド(PDF 4.2MB)

Facebooktwitterlinkedintumblrmail