Archive for the ‘Other’ Category

{ 2010.12.29 }

自然対数の底

    はてなブックマーク - 自然対数の底
    このエントリーをはてなブックマークに追加

    社内全体が「社長も書けよ」的な雰囲気になり、渋々書くことになりました。

    生まれて初めてのブログを書く納富です。初体験です。

    さて、いざ書こうとしたのですが、まず長いこと開発に関わっておらず、本ブログのタイトルである「Developers’」に合致しないわけです。
    社長としての何かを書いても「技術的でない」と怒られるでしょうし。。。

    そこでいろいろと考えた訳ですが、当社では「書籍発表」というものがあり、数ヶ月に一回順番が回ってきます。30分の持ち時間で、何かしらの書籍をみんなの前でプレゼンをする訳ですが、私が少し前に行った確率の話でもしたいと思います。
    当然ながら、プログラマーにとって「確率(Probability)」は非常に重要なスキルです。

    さて、本題

    皆さん、ここで質問です。感覚的に回答してください。

    ある洗濯機を1日に1回使います。この洗濯機、10回に1回の割合で故障します(故障確率:10%)。この洗濯機をあなたが毎日使うとした場合、いつ壊れるだろうと予想しますか?

    なんとなく、10日後くらいに壊れるかな、と考える人は多いのではないでしょうか?
    しかし実際のところを計算してみると、9日後までに故障する確率は、約61%となります。
    計算式は、

    1/10+1/10*9/10+1/10*(9/10)^2+・・・+1/10*(9/10)^8

    それでは、問題を一般化して、

    故障確率1/Nの機械を毎日使い、N日より前に故障する確率は?

    数式は、

    1/N+1/N*(N-1)/N+1/N*{(N-1)/N}^2+・・・+1/N*(N-1/N)^(N-2)

    となります。
    Nを大きくしていくとどうなるかというと、次の値に近づいていきます。
    0.63212 0559 …  (約63.2%)。

    自然対数の底

    この「0.63212 0559 …」ですが、次のように表されます。
    1.71828 18284 59045 23536 …/ 2.71828 18284 59045 23536 …
    この分母の数字、e」で表される自然対数の底です。

    y=e^x において、何度微分してもそのままという、不思議な数字です。

    要は、N日より前に故障する確率は、Nを大きくしていくと、e-1/e に収束します。

    感覚のズレ

    後半の方は、少し脱線しましたが、この確率における感覚的なズレは意外と使えるかもしれません。

    例えば、確率1%で当たるルーレットがあり、ずっと回すと69回目において当選確率が50%を超えます。
    1%というと、まー当たらないだろうと考えがちですが、何度もやっていると思ったよりも早い段階で当たる確率が50%を超えるのです。
    これに似た例でよく言われることとしては、ある組織の人数が23人を超えると、その中に同じ誕生日の人がいる確率は50%を超えます。
    23人というと意外と少ないと感じるのではないでしょうか。

    最後に

    会社で年間購読している雑誌NEWTONから目から鱗な話を。
    100万光年先の星というと、光の速さで100万年かかると思っている方がおられると思います。
    しかし、実際はそうではありません。距離が光速(30万km/秒)の100万年倍というだけであり、もしも光速に近い速度で進むことができるならが、空間の縮みや時間の遅れが発生するので、もっと早く着きます。
    仮に光速の99.999999%の速度で進むことができるなら、100年で約71万光年進むことができます。よって、140年くらいで到着するわけです。
    まー、そんな速度は無理なわけですが。。。
    ~~~~~~~~~~~~~~~~~~~~~~~

    もう2度と書くことはないと思いますが、みなさま、よいお年を。
    年内いっぱい続くようです。

      はてなブックマーク - 意外と使える無料便利ツール
      このエントリーをはてなブックマークに追加

      みなさんこんにちは。マーケティング部の井 (いい)です。
      エンジニアではありませんが、エンジニアブログをなぜか書いちゃってます。
      初投稿なので、まじめにいきます。

      今日は、技術ネタではありません。
      僕が普段業務で使っている、けっこう使える無料「便利ツール」を3つご紹介します。

      ブラウザ上で、PDFファイル の分割・結合ができる『I LOVE PDF』

      「PDFの結合を今すぐしたいんだよね。」 そんな人にオススメなのがこのサービス。
      インストールや、ログインも不要で、今すぐ利用したいときにかなり役立ちます。
      www.ilovepdf.com/

      ●PDFファイルの結合

      結合したいPFDファイルを選んで、「MERGE PDFs!」ボタンを押すだけ。
      画面が切り替わり、今度はダウンロードの画面が開くので、ダウンロードして完了です。

      ●PDFファイルの分割

      同様に、分割したいPFDファイルを選んで、「SPLIT PDF!」ボタンを押すだけ。
      画面が切り替わり、今度はダウンロードの画面が開くので、ダウンロードして完了です。

      急いでいるときなんかは、多機能なものを使うより、目的が絞られてて、
      なおかつログインなしでサクッとできた方が良いですよね。

      PDFにパスワードを付ける『即錠★PDF』

      PDFのくだりをもうひとつ。
      すでにできあがったPDFファイルにパスワードを付けるにはこれ!
      外部宛にPDFの送付を行うことがある方は、重宝するはずです。

      ダウンロードサイトから、圧縮ファイルをダウンロードします。
      解凍すると、フォルダの中には「PDFLock.exe」というファイルがあるので、これを起動します。

      起動すると、↑ のような画面が表示されるので、
      ①PDFフィルを選択
      ②「制限する」と「ユーザ」にチェックを入れる
      ③パスワードを入力
      あとは「作成」ボタンをクリックするだけ。これも簡単ですね。

      デスクトップのアイコンを整理する『Fences(フェンス)』

      デスクトップにアイコンが散らばってごちゃごちゃ…。
      そんな方にオススメなのが無料アプリケーション『Fences(フェンス)』。

      必要なアイコンをデスクトップに、きれいに見やすく配置するツールです。
      好きな場所に枠を作り、その中にアイコンをドラッグ&ドロップすると、
      自動整列してくれます。

      ラベルの表示、フェンスの透明度、輝度、色、彩度の調整、ラベルテキストの色、
      フェンスの枠、スクロールバー表示等の設定が行え、自分好みにカスタマイズできます。

      僕のようにデスクトップにファイルを溜め込みがちな方は、
      一度試してみてはいかがでしょうか。ちなみにMac には対応してないみたいですが…。

      最後に

      エンジニアのみなさん。普段何気なく使っているこのような「便利ツール」。
      知らない方、意外と多いです。
      お客さんに是非紹介してあげてください。けっこう喜ばれますよ。

        はてなブックマーク - Selenium IDEでスクリーンショットをとりながらテストする
        このエントリーをはてなブックマークに追加

        こんにちは、はじめまして。Fusicの働く母ちゃんフクダリナです。弊社ではテストや取説作成などの作業を担当しています。

        Fusic Advent Calendarを何事もなく終わって余裕かましてたらご指名をいただいてしまいました。

        心の準備が出来ておりません・・・

        今回は弊社小山からの要望があり、Selenium IDEでスクリーンショットを取りつつ 連続でテストする方法を書きたいと思います。

        Selenium IDEでテスト

        Selenium IDEを使うと 何度も同じテストが出来ます。また、同じようなテストを大量に行う場合にとても便利です。

        でも、やっぱり目視することで発見する問題もあると思います。

        そんなときにテストしている内容をスクリーンショット撮れたら便利です。

        TestSuiteをポチッとして帰宅すれば 朝テストが出来あがっている。あとはスクリーンショットを眺めておかしいところがないかなーって確認するということも可能になります。(途中でこけてたら泣きますが・・・)

        スクリーンショットを撮る準備

        Selenium IDE」の他にスクリーンショットを撮るツール「Screengrab!」をインストールします。

        テストしてみる

        試しに「ZENPREのサイトで間違ったログイン情報の場合に、正しくエラーメッセージが表示されるか」というテストをしてみます。

        スクリーンショットを撮るには、「captureEntirePageScreenshot」というコマンドを使用します。

        このコマンドの対象にファイル名をフルパスで指定すれば、スクリーンショットが撮れてしまいます。

        コードはコチラ

        <table border="1" cellspacing="1" cellpadding="1">
        <thead>
        <tr>
        <td colspan="3">New Test</td>
        </tr>
        </thead>
        <tbody>
        <!--==ZENPRE使ってテスト==-->
        <!-- Zenpreのページを開きます-->
        <tr>
        <td>open</td>
        <td>http://zenpre.net/</td>
        <td></td>
        </tr>
        <!-- ログインをクリック-->
        <tr>
        <td>clickAndWait</td>
        <td>//div[@id='header_right']/div[1]/a[1]/img</td>
        <td></td>
        </tr>
        <!-- test/testでログイン-->
        <tr>
        <td>type</td>
        <td>login</td>
        <td>test</td>
        </tr>
        <tr>
        <td>type</td>
        <td>password</td>
        <td>test</td>
        </tr>
        <tr>
        <td>clickAndWait</td>
        <td>//input[@type='image']</td>
        <td></td>
        </tr>
        <!-- エラーメッセージが正しく表示されているか確認-->
        <tr>
        <td>verifyTextPresent</td>
        <td>ログインID、または、パスワードが違います</td>
        <td></td>
        </tr>
        <!-- スクリーンショットを撮ります-->
        <tr>
        <td>captureEntirePageScreenshot</td>
        <td>C:\test\test01.jpg</td>
        <td>background=#FFFFFF</td>
        </tr>
        </tbody>
        </table>

        実行したらこんな感じ

        これで、実行結果が正しいかSelenium IDEの結果とスクリーンショットから判断ができますね。

        同様にして、複数のテストを一つのTestSuiteとして実行することも可能です。

        ここで一つ問題が。

        スクリーンショットのファイル名指定が絶対パスって使いづらくね?

        絶対パスにしてしまうと、他のテスターがそのテストケースを使おうと思ったときに、変更作業が発生したりします。

        そこで、storeコマンドを使って、パスの指定を一か所にまとめてしまいます。

        storeコマンドでパスを一か所にまとめる

        Selenium IDEで新しくTestCaseを追加して、以下のように記述します。

        <table border="1" cellspacing="1" cellpadding="1">
        <thead>
        <tr>
        <td colspan="3">CapturePath</td>
        </tr>
        </thead>
        <tbody>
        <tr>
        <td>store</td>
        <td>C:\test\store</td>
        <td>pref_path</td>
        </tr>
        </tbody>
        </table>

        そして、先ほどのTestCaseに以下を追加

        <!-- storeのパスでスクリーンショットを撮ります-->
         
        captureEntirePageScreenshot
        ${pref_path}001.jpg
        background=#FFFFFF

        これで実行すると

        スクリーンショット

        無事、スクリーンショットのファイルが出来ています。これで、TestCaseが幾ら増えてようとも、storeコマンドの対象を変えるだけでよくなりますね。

        おしまいに

        技術ブログというものを初めて書いたので、至らない点が多々あるかと思います。何かありましたら、Fusicフクダまでご指摘ください。

        次回は手抜きおいしいおでんの作り方とかにしてもらえると助かります。