メモの日々


2003年03月03日(月) 杉山愛、ステートファーム・クラシックで優勝

生活

  • 今日は会社を休む。三月はほとんど行かない。
  • 新しいメイルアドレスで色々なMLに登録した。現在登録しているMLは、
    • Apache-Users
    • FreeBSD-users-jp
    • announce@jpcert.or.jp
    • Linux Users
    • セキュリティホールmemo
    • オブジェクトの広場
    • OpenOfficeユーザー会
    • pgsql-jp
    • port139
    • Security-Talk
    • Strutsユーザ
    • tDiary-users-talk
    • XP-jp
    • 常時接続の宴
    • マイクロソフト プロダクト セキュリティ 警告サービス 日本語版
    かな。結構たくさんある。JavaHouse-Brewersも申し込んだけれど登録はまだのようだ。
  • おれって何も考えずに生きているな、と思いつつ寝る。

2004年03月03日(水)

orkut

orkut に招待していただいたので orkut管理マニュアル を見ながら登録だけしてみました。なにやら色々プロフィールを入力して友達になったりコミュニティに参加したりするようなのですが、うーん、時間があるときにやります(きっと)。今日はサッカー見ないとな。

ユーザ名とパスワードを忘れないようにしないと。

[ims] 2 電車の温度調節

電車の空調の温度設定には納得いかないことが多いので、車内に温度調節器を設けて客が温度を設定できるようにしたらよい。おかしな客がおかしな温度を設定するかもしれないけど、遠い場所にいる車掌などよりは信頼できるのではないか。

てか、毎日アイデア考えるのなんか不可能だわ。しょうもない思い付きを公開していくの恥ずかしいし。

やること

  • 決算
  • 定期タイマどうするか
  • 定期券を買う

2005年03月03日(木)

  • 雛祭だったのね。
  • いろんなコーディングスタイルの人がいるもんだ。
  • CFでの開発を手伝ってくれないかと誘われた。

[javascript] 「JavaScript Programming」 (eto.com)

JavaScriptのプログラミングというと、いまだにWebページにコードにうめこんで、ブラウザでreloadして動作確認するということをする人が多いだろう。しかし、そのような前近代的なプログラミングをしていると、いつまでたってもまともに動くプログラムは書けない。もう21世紀なので、それらしいプログラミングスタイルを身につけよう。

ここから辿れるページを更にメモ。

www.textfile.orgより。

やること

  • リンク元のスリム化
  • tDiaryバージョンアップ
  • FSWikiバージョンアップ
  • オーブンレンジ用べんり棚
  • ブラウンの安い電動歯ブラシ買う
本日のツッコミ(全2件) [ツッコミを入れる]

くぼ [あ、、、CFの件が日記に・・・ 小川さんの日記久し振りに見に来たら・・・・ すいません、無茶な事聞いて。失礼しました..]

小川 [いえいえ、無茶ではないです。ただCFにはあまり乗り気になれませんでした。 また何かあったら声を掛けてください。]


2009年03月03日(火)

[ruby][dev] Ruby Gnuplotを使った

星形

Ruby Gnuplotを使ったのでメモ。

Ruby GnuplotはgnuplotをRubyから使うためのライブラリ。gnuplot自体を使ったことがない(大昔に使ったかも)ので苦労したが、なんとか動かせた。

星形を描くサンプルプログラムを示す。

#!/usr/bin/ruby
#coding: utf-8

require "rubygems"
require "gnuplot"

# プロットするデータ
triangle1 = [[10,  70,  40], [20, 20,  70],
             [60, -30, -30], [ 0, 50, -50]]
triangle2 = [[10,  70,  40], [60, 60,  10],
             [60, -30, -30], [ 0, -50, 50]]

Gnuplot.open {|gp|
  Gnuplot::Plot.new(gp) {|plot|
    # gnuplotにsetできるオプションは全てPlotクラスのメソッドになっている
    plot.terminal("png")
    plot.output("graph-sample.png")
    plot.xrange("[0:80]")
    plot.yrange("[0:80]")
    plot.size("square 0.5,0.5")
    plot.title("Star")

    triangle1[0].each_index {|i|
      plot.label("\"[#{i}]\" at #{triangle1[0][i]},#{triangle1[1][i]}")
    }

    # プロットするデータをDataSetへ込めてPlot#dataに設定する
    plot.data = [
      Gnuplot::DataSet.new(triangle1) {|ds|
        ds.with = "vectors"
        ds.notitle
      },
      Gnuplot::DataSet.new(triangle2) {|ds|
        ds.with = "vectors"
        ds.notitle
      }
    ]
  }
}

やること

  • 請書

2017年03月03日(金)

[c][c++] exp10()

glibcにexp10という関数があることを知った。pow10もある。

exp10はCやC++の今の標準ライブラリには入っていない。いずれ入るのかな。

手元の環境(CentOS 7, GCC 4.8.5)だと、<cmath>をincludeすればC++でexp10を使えた。Cの場合は_GNU_SOURCEをdefineしてから<math.h>をincludeしないと警告が出る。

[c++] exp10()とstd::pow()とstd::exp()

10のべき乗を計算するプログラムでstd::powを使っていたのだけれど、結構遅い。代わりにexp10を使ったら少し速くなった。exp10を標準化して欲しい。

ところで、10^x は

10^x = (e^log(10))^x = e^(log(10) * x)

と変換できるので、std::expを使っても計算できる。試すと、これが一番速かった。xの範囲によって計算の速度が変わるのかもしれないけれど。以下に、xが0の近辺で10^xを計算するプログラムとその実行結果を示す。

#include <chrono>
#include <cmath>
#include <iomanip>
#include <iostream>

template<typename F>
void call(const std::string& name, F f) {
  using namespace std::chrono;
  constexpr int n = 10000000;
  constexpr double d = 0.0001;

  const auto s = system_clock::now();
  double r = 1;
  for (int i = -n; i <= n; ++i) {
    r *= f(d * i / n);
  }
  const auto e = system_clock::now();

  std::cout
      << std::setprecision(20)
      << r
      << ", " << duration_cast<milliseconds>(e - s).count() << " ms"
      << ", " << name
      << std::endl;
}

int main() {
  call("std::pow", [](double x) {
    return std::pow(10.0, x);
  });
  call("exp10", [](double x) {
    return exp10(x);
  });
  call("std::exp", [](double x) {
    constexpr double log_10 = std::log(10);
    return std::exp(log_10 * x);
  });
}
1.0389215324922376205, 2650 ms, std::pow
1.0389215324948466446, 2371 ms, exp10
1.0389215324923555261, 1832 ms, std::exp