メメメモモ

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

2010-01-01から1年間の記事一覧

perl向けのemacs設定

今まではemacsの設定を最低限のものにしていたのですが、やはり生産性というものを上げようと考えた時に、エディタの便利な機能は使いこなしておいた方がいいのかな、と思いました. そのとっかかりとして下記のtypester先生の資料で紹介されている拡張と設…

VBScript入門とTips

VBScriptを書く機会があったので、そのときに調べたTipsメモ。 入門 入門として下記のサイトを参考にしました。 WSHを始めよう − @IT VBScript 基礎文法最速マスター - CX's VBScript Diary - VBScript グループ 配列操作 サイズ取得、push、pop、shift、un…

Objective-CのTips

よく必要そうになりそうな機能をまとめました。 覚えるまでのチートシートという感じで・・・。 文字列操作 NSString *str1 = @"あいうえお"; // 文字数 int len = [str1 length]; // 文字列連結 NSString *str2 = [str1 stringByAppendingString:@"かきくけ…

CloudForecastを入れてみた

Yokohama.pm x CasualPerlで紹介されていたCloudForecastを試しに入れてみました。入れ方は、次のエントリで説明されています。 http://blog.nomadscafe.jp/2010/05/cloudforecast.html しかし、環境がおかしかったせいか、なかなか説明通りに進みませんでし…

Yokohama.pm#6 x PerlCasual#3に参加してきました

Yokohama.pm#6 x PerlCasual#3に参加してきました。 会場はとてもおしゃれな場所でした。 今回は、自分が求めていたことがすべて聞けた感じです。ネタもとても面白かったです。 主催者のyusukebeさん、発表者のみなさま、会場提供していただいたネイバージャ…

MySQLのインストール手順メモ

MySQLをインストールしようとするたびに苦戦するので、成功した時の作業順をメモ。 バイナリパッケージをダウンロード http://www-jp.mysql.com/ ここからバイナリパッケージをダウンロードします。 ソースからとかじゃなくてバイナリパッケージを使用します…

SuEXECの設定

Apache2.0でSuExecを使えるように設定しました。 割と引っかかった事があったのでメモ。 コンパイル SuExecはデフォルトでは有効になっていません。 コンパイル時に指定する必要があります。 configureの時点で下記のオプションを設定します。 --enable-suex…

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

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…

ニュートン・ラフソン法

ニュートン・ラフソン法(ニュートン法)は、関数f(x)とx軸が交わる点の近似値を反復計算により得る方法です。 この方法を用いる際の注意点は次のようなものです。 関数f(x)がx軸と交わる 定義域の範囲で微分可能(接線が引ける) 接線がx軸と交わる 適切な初…

個人的勉強用リンク2

Javascript ポップアップメニュー - JavaScript ミスティーネット・JavaScript講座 jQuery: jQuery 実践サンプル JavaScriptの関数オブジェクトを完璧に理解する - builder by ZDNet Japan anything from here jQueryに学ぶ Javascript の基礎(7) 組み込みク…

Web上で作成するWeb素材

自分専用のCGIページを作成するとき、デザインなどは適当に作ってしまいます。 画像もなにもない簡素なページで、必要最低限の機能があるページです。 しかし、やはり見た目も少し綺麗な方が使っていても、作っていても楽しいのではないかと思いました。 か…

循環参照と弱い参照とScalar::Util::weaken

参照カウンタ 次のようなコードを見ると、ちょっと不思議に思います。 use strict; use warnings; sub create_func { my ($name) = @_; my $func = sub { print "Hello, $name\n"; }; return $func; } my $func = create_func('memememomo'); $func->(); 不…

デーモン化する

スクリプトをデーモン化するには、スクリプト内でforkし、 親プロセスを終了して子プロセスを走らせます。 コードは下記のようになります。 「モダンperl入門」のコードをまんま引用させていただいてます。 use strict; use POSIX (); my $pid = fork(); if …

Mojo::IOLoopを使ってEchoサーバ

Mojo::IOLoopを使ってEchoサーバを書いてみました。 use strict; use warnings; use Mojo::IOLoop; my @_listen; my %message; # options my $options = {}; $options->{port} = 3000; # Accept callback $options->{cb} = sub { my ($loop, $id) = @_; $loo…

XPathメモ

ノード ノードとは、HTML(XML)の情報をそのまま持っているオブジェクトです。 ノードには次のような種類があります。 要素 タグを持ったノード テキストノード タグ内のテキスト部分 属性 のclass="hoge"の部分 ドキュメント 一番祖先の要素(htmlタグ) XPath…

Test::ExceptionとTest::MockObjectを使ってテスト

Test::ExceptionとTest::MockObjectを使用したテストを書いてみました。 それぞれのモジュールは下記のような機能を持っています。 Test::Exception 例外のテストを行なうモジュールです。 下記のようなメソッドが定義されています。 lives_ok { test_code()…