スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
公開鍵暗号方式
koukai.jpg
スポンサーサイト
JavaScriptのすごくつまづきやすいところ
setTimeoutにthisを渡せない

ダメな例:
var c = {
         name : 'bingo',
         func : function(){ alert(this.name) }
        };

setTimeout(c.func, 100);


いける例:
var c = {
         name : 'bingo',
         func : function(){ alert(this.name) }
        };

setTimeout(function(){c.func()}, 100);

ダメな理由:
function(){ alert(this.name) }だけが、setTimeoutに切り離されて渡されるため。
setTimeout(function(){ alert(this.name) }, 100);
と書いたのと同じことになってしまう。


setTimeoutに引数がわたせない

ダメな例:
var c = {
         name : 'bingo',
         func : function(age){ alert(this.name + ':' + age) }
        };

setTimeout(c.func(14), 100);


いける例:
var c = {
         name : 'bingo',
         func : function(age){ alert(this.name + ':' + age) }
        };

setTimeout(function(){c.func(14)}, 100);

ダメな理由:
setTimeoutには無名関数というか関数オブジェクトを渡さないといけないため

参考:
http://d.hatena.ne.jp/bingo_nakanishi_perl/20090207/1233969698
http://d.hatena.ne.jp/cloned/20070301
http://labs.cybozu.co.jp/blog/kazuho/archives/2006/12/oo-settimeout.php
まるごとJavaScript&Ajax!
こういうのって邪道かなぁ
use strict;
use Data::Dumper;

my $c;
$c = {
      'age'       => 14,
      'next_year' => sub {
                           print '1年たちました', "\n";
                           $c->{'age'}++;
                         }
     };


print Dumper \$c;
$c->{'next_year'}->();
$c->{'next_year'}->();
print Dumper \$c;


結果:
$VAR1 = \{
            'next_year' => sub { "DUMMY" },
            'age' => 14
          };
1年たちました
1年たちました
$VAR1 = \{
            'next_year' => sub { "DUMMY" },
            'age' => 16
          };


blessを使え?
じゃんけんの問題がやっとわかった
http://bingobingobingo.blog49.fc2.com/blog-entry-354.html

やっと、理屈がわかった。


必要な知識:

知識その1
3x + 0, 3x + 1, 3x + 2
という3つのパターンを考えた場合。
x が邪魔である。
xを消すには mod を使う。
正確にいうと mod 3を使う。
さすれば、それぞれ、
0, 1, 2
に集約できる(ループがなくなった)。



知識その2
じゃんけんの「勝ち」、「負け」、「ひきわけ」というのは、
3x + 0, 3x + 1, 3x + 2
という関係のどれかに、ぴったりあてはまる(というかそういう風にルールがなっている)。


知識その3
modの概念とは、
X = 3x + 2なら、 X mod 3 = 2
であるということ。

このmod、どういう風に使うかというと、
9という数字が、
3x + 0, 3x + 1, 3x + 2
のどのパターンにあてはまるか知りたいとして、それを求められる。

9 mod 3 = 0 なので、
9 は、 3x + 0のパターンにあてはまる。

10 mod 3 = 1 なので、
10は、 3x + 1のパターンにあてはまる。

こういう風に使う。



知識その4
じゃんけんの勝敗を1次元の線分とみなして、
COMと人との差をもとめる。この差は距離とも考えられる。
距離は -1 というようにもなりうる。

sample.jpg





まとめ(どうやって、じゃんけんプログラムを作るか)


勝敗およびひきわけは、
3x + 0, 3x + 1, 3x + 2
のどれかにあてはまる。

どれにあてはまるかは、
COM と 人 との距離でわかる。

0 1 2 0 1 2 0 1 2
と書けばわかる。

でもって、その距離が、
3x + 0, 3x + 1, 3x + 2
のどれにあてはまるかは、
mod 3に聞けば教えてくれる。
距離 mod 3 = 2 なら、 3x + 2 のパターンであるということだ。
エラーというものは このようになっていると考えるとわかりやすいと思う
しかし、どう実装するかが悩ましい。

※ 継承図ではなく、単なる分類わけです。 erro.jpg

$err_msgで持ち回すと ifが増える。
throwにするとファイルが増える。
どちらもメンテが大変だ。
J2EEパターンは4つの階層からなる。 ただし必ずしも全部使うとは限らない。
J2EEパターン
apache2
leopardでapache立ち上げたのだが、
localhostからだと見れるのに
外部からだと、cssやらgifやらがみれない。

AddHandler text/css css
とかやってもダメ。

/private/var/log/apache2/error_log
には、なにもでない。

/private/var/log/apache2/access_logでは、
"GET /~bingo_nakanishi/hoge.css HTTP/1.1" 200 3880
でちゃんと取れてる気配がする。


http://d.hatena.ne.jp/n314/20070307/1173277371

小さい画像は表示されるもようだが、上の処理でもだめだった...
やっとわかった
For every kiss you give me I'll give you three.
3回くちづけしてあなたに返します。


あとこれもしった http://oshiete1.goo.ne.jp/qa636283.html
とりあえず MySQLとの連携
main.pl
use strict;
use warnings;
use Data::Dumper;
use Util_DB;

main();

sub main {
  my $db   = Util_DB->new({
                           'dsn'      => 'myapp',
                           'user'     => 'root',
                           'password' => ''
                         });

  $db->main::select_class_a();
  print "----", "\n";
  $db->main::select_class_a('bb');
}
 
sub select_class_a {
  my $dbh  = shift->{'dbh'};
  my $name = shift;
 
  my $sql;
  my $sth;
  if( !defined $name ){
    $sql = q{ 
              SELECT
                *
              FROM
                class_a
            };
    $sth   = $dbh->prepare($sql); 
    $sth->execute();
  }else{
    $sql = q{ 
              SELECT
                *
              FROM
                class_a
              WHERE
                name = ?
            };
    $sth   = $dbh->prepare($sql); 
    $sth->execute($name);
  }


  while(my $row = $sth->fetchrow_hashref()){
    print Dumper $row;
  }
}


Util_DB.pm
use strict;
use warnings;
use DBI;

package Util_DB;

sub new {
  my $self  = shift;
  my $class = ref($self) || $self;

  my $c      = shift;

  my $dbh = DBI->connect(
                         'DBI:mysql:database=' . $c->{'dsn'},
                         $c->{'user'},
                         $c->{'password'},
                         {'PrintError'=>1, 'RaiseError'=>1}
                        );

  return bless {'dbh' => $dbh}, $class;
}

1;

結果:
$VAR1 = {
          'name' => 'aa',
          'id' => '1'
        };
$VAR1 = {
          'name' => 'bb',
          'id' => '2'
        };
$VAR1 = {
          'name' => 'yy',
          'id' => '3'
        };
----
$VAR1 = {
          'name' => 'bb',
          'id' => '2'
        };
※ 参考にしないでください。
誘導
http://d.hatena.ne.jp/test_bingo_nakanishi/
覚え書きになるので、あまり気にしないでください。

こうすると便利ってのはどんどんしりたい。
ブログ検索

プロフィール

ビンゴ中西
Perlが好きである。
プログラミング言語のほとんどは独学。独学の過程で多くのプログラム仲間にも色々教わりました。

FC2カウンター

カレンダー

01 | 2009/02 | 03
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

ブロとも申請フォーム

この人とブロともになる

| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。