メメメモモ

プログラミング、筋トレ、ゲーム、etc

2010-06-01から1ヶ月間の記事一覧

ログイン時のスクリプト起動

mac

起動時に実行する方法のメモ。 アプリケーション起動 普通のアプリケーションの起動は [システム環境設定] -> [アカウント] -> [ログイン項目] で設定。 スクリプト起動 スクリプトの起動は、下記のように設定。 1. 「.command」という拡張子がついた名前で…

Bresenham

perlでBresenhamアルゴリズムを書いてみました。 考え方は下記のような感じ。 xが増えたら、だけyが増える 整数単位の話なので、が1以上になったら、yが1増える じゃなくて、で比較すれば、割り算が無くなって便利 use strict; use warnings; bresenham_line…

変換系の確認

use strict; use warnings; use Devel::Peek qw/Dump/; # 74 print Dump hex("4A"); print Dump 0x4A; # "AB\0" print Dump pack("H*", "4142"); print Dump "\x41\x42"; # 65 print Dump unpack("C*", "A"); # "A\0" print Dump pack("C*", 65); # "48656c6…

タイ変数に付いて

perlには、変数の代入/参照が行なわれた際に実行する関数を結びつける機能があります。 この機能を実現するためにtie関数を使用します。 例えば、MyScalarモジュールと$scalar変数を結びつけるには次のように記述します。 tie $scalar, MyScalar; MyScalar…

関数ポインタ

C言語の関数ポインタについて復習しました。 関数ポインタの宣言 関数ポインタの宣言は下記のような形になります。 戻り値の型 (*ポインタ名) (引数のリスト) 例えば、次のようになります。 // 関数ポインタに入れる関数 int sum(int a, int b) { return a +…

XS入門でやった事メモ

h2xsコマンド h2xsコマンドでひな形を作成します。 $ h2xs -A -n MyTest コンパイル 出来上がったディレクトリに移動して次のコマンドを実行します。 $ perl Makefile.PL $ make Hello World!を表示する関数 XSでHello World!を表示するプログラムを書きます…

前進差分と中心差分で微分

次の関数を微分するプログラムをperlで書いてみました。 use strict; use warnings; difference(); sub f1 { my ($x) = @_; my $a = 2; my $b = 4; return $a*($x ** 2)+$b; } sub f2 { my ($u) = @_; return sqrt(1/(1+exp(-2*$u))); } sub difference { my…

試しにGoogleChartを使ってみる

計算した数値で、図を描画したいと思いました。 EXCELに貼付けたり、gnuplotを準備したりするのが面倒くさかったので、試しにGoogleChartを使ってみました。 perlから扱いたいので「Google::Chart」モジュールを使用しました。 use strict; use warnings; us…

シンプソン公式

シンプソン公式のプログラムを書きました。 シンプソン公式の特徴は下記の様な感じです。 台形公式より精度が高い 小区間[ , ]で、2次曲線を近似して積分する シンプソン公式のプログラムは下記のようにしました。 sub simpson { my ($f, $N, $a, $b) = @_;…

台形公式

台形公式で積分の値を求めるプログラムを書きました。 use strict; use warnings; main(sub { my $x = shift; return $x * $x; }, 100000); sub main { my ($f, $N) = @_; my (@x, @y); my $a = 0.0; my $b = 3.0; my $h = ($b-$a)/$N; for my $i (0..$N) { …

XML,JSON,YAMLを読み込んでperlのデータ構造に変換

XML,JSON,YAMLを読み込む処理のメモ。 一般的にどのモジュールを使えばいいのかよく分かりませんでした。 XML::Simpleを用いてXMLを読み込む use strict; use warnings; use XML::Simple; use Data::Dumper; my $xml = ''; my $parser = XML::Simple->new; m…

ダウンロードスクリプトにプログレスバーを付ける

ダウンロード中に、残りいくつかを表示するプログレスバー。 use strict; use warnings; use Term::ProgressBar; use LWP::UserAgent; $| = 1; my @urls = @ARGV; my $data; my $total_size; my $progress; my $next_update = 0; for my $url (@urls) { $dat…

オブジェクト指向周辺のメモ

概要 javascriptは、配列も関数もオブジェクトです。 javascriptでいうオブジェクトは、nameとvalueペアのリストとして表されます。 nameは「文字列」で、 valueは「文字列」「数字」「boolean」「オブジェクト」になります。 valueが関数だった場合、その関…

厳密等価演算子(===)

普通の演算子(==)と厳密等価演算子(===)の違いは、 評価する時に型変換するかどうかです。 <html> <head> <title>test</title> <script type="text/javascript"> (function(){ alert(1 == true); // true alert(1 === true); // false alert(0 == false); // true alert(0 === false); // false alert(10 == "10"); // t</head></html>…

標準正規分布に従う乱数

標準正規分布に従う乱数を発生させるプログラムを書いてみました。 正規分布は次のような式になります。 標準正規分布は、「」の正規分布になります。 この分布に従う乱数を生成するプログラムを書いて、生成結果を確かめてみました。 #!/usr/bin/env perl u…