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

初めてのPerl 第12章

練習問題の回答をメモ。 ex12-1 #!/usr/bin/perl use strict; print "Enter a directory name: "; chomp(my $dir = <STDIN>); if ($dir =~ /^\s*$/) { chdir or die "Cannot chdir to home directory: $!"; } else { chdir "$dir" or die "Cannot chdir to '$dir': </stdin>…

初めてのPerl 第11章

練習問題の回答をメモ。今回は、答えを見て自分の書いたプログラムが恥ずかしくなった。この章はいろいろと勉強になったし、また読み返そう。 ex11-1 #!/usr/bin/perl use strict; print "Enter input file name: "; chomp(my $input_file = <STDIN>); print "Enter</stdin>…

初めてのPerl 第10章

練習問題の回答をメモ。 ex10-1 #!/usr/bin/perl use strict; my $answer = int(1 + rand 100); #print "The answer is <<$answer>>.\n"; while (1) { print "Choose a number between 1 to 100: "; chomp(my $try = <STDIN>); if ($try =~ /quit|exit|^\s*$/i) { l</stdin>…

Emacs で Perl のコードを補完したい

Perl や JavaScript で書くときに ruby-electric-mode が恋しくなる - gan2 の Ruby 勉強日記 perlplusでシンボルを補完 - gan2 の Ruby 勉強日記 を見て便利そうだったので試してみた。 perlplus.el をロードパスの通ったディレクトリに入れて、以下を .ema…

初めてのPerl 第9章

練習問題の回答をメモ。 ex09-1 #!/usr/bin/perl use strict; my $what = 'fred|barney'; while (<>) { chomp; if (/($what){3}/) { print "Matched: $`<$&>$'\n"; } else { print "No match.\n"; } } ex09-2 #!/usr/bin/perl use strict; my %sum; while (<…

初めてのPerl 第8章

練習問題の回答をメモ。正規表現って奥が深そう。 ex08-1 #!/usr/bin/perl use strict; while (<>) { chomp; # 正しくは:/\b(fred|wilma)\s+flintstone\b/ if (/(fred|wilma)\s+flintstone/) { print "Matched: $`<$&>$'\n"; } else { print "No match.\n";…

初めてのPerl 第7章

練習問題をメモ。 ex07-1 #!/usr/bin/perl use strict; while (<>) { chomp; if (/fred/) { print "Matched: $`<$&>$'\n"; } else { print "No match.\n"; } } ex07-2 #!/usr/bin/perl use strict; while (<>) { chomp; if (/a+b*/) { print "Matched: $`<$&…

初めてのPerl 第6章

練習問題をメモ。 ex06-1 #!/usr/bin/perl use strict; print reverse <>; ex06-2 #!/usr/bin/perl use strict; ## 1行づつ読むバージョン #print ((0..9) x 2, "\n"); # while (<>) { # chomp; # printf "%20s\n", $_; # } ## 一気読みバージョン chomp(my…

初めてのPerl 第5章

練習問題をメモ。 ex05-1 #!/usr/bin/perl -w use strict; my %last_name = ( "fred" => "flintstone", "barney" => "rubble", "wilma" => "flintstone", ); print "Enter a first name: "; chomp(my $first_name = <STDIN>); if (exists $last_name{$first_name}) </stdin>…

初めてのPerl 第4章

この本の説明だと少しやっかいもの扱いされてる感じだったけど、local演算子でダイナミックスコープが実現できる部分は JavaScript に似てて面白いなと思った。 ex04-1.pl #!/usr/bin/perl -w use strict; sub total { my $sum_of_all = 0; foreach (@_) { $…

プログラマとSE

自分が所属している大学の研究室の同期が言った言葉にゾッとした。 「そんな(細かい実装の)ことなんて、プログラマにやらせればいいじゃん。SEはシステム全体を作るんだから。」 その後も、明らかにプログラマを馬鹿にして、SEの方が価値のある仕事をして…

初めてのPerl 第3章

練習問題の回答だけメモしておく。 ex03-1 #!/usr/bin/perl -w chomp(@lines = <STDIN>); @lines = reverse @lines; foreach (@lines) { print "$_\n"; } ex03-2 #!/usr/bin/perl -w @people = qw/fred betty barney dino wilma pebbles bamm-bamm/; chomp(@lines = <STDIN></stdin></stdin>…

Caller の束縛(bind)

Javascript で関数の呼び出し元オブジェクト(Caller)をあらかじめ指定したいときは、fn.call(obj) を使う。 例えば、こんな感じ。Firebug が入ってなければ、console.log() を 換わりに alert() とすればOK。 Caller の束縛 function fn() { console.log(t…

Perl の対話型環境

Ruby だと対話型環境として irb があるけど、Perl ではシェル上で「perl -de 1」などとすれば Perlデバッガ が起動して対話型環境として使えるみたい。 ただ、Tab で補完ができなかったり、Emacs のキーバインド(C-h、C-n など)が使えないようなのでそこが…

初めてのPerl 第2章

内定先の企業が「Perl やっとけ」と暗に仄めかしてるので Perl のお勉強を始めた(Ruby はしばらく放置かな…)。とりあえず、リャマ本を読み進めてみることにした。練習問題の回答だけ備忘録としてメモしておく。 第2章 ex02-3 print "Input number: "; chom…

可変長の引数リスト Argumentsオブジェクト

「Web/JavaScript 講習会 part.10 (第一部 完) — ディノオープンラボラトリ」を見て参考になったところをメモ。今回で基礎編である第一部が終了らしい。第二部に移る前に今まで習ったところで消化しきれてない部分をまた復習しなくちゃ。 関数の本体では、a…

高階関数バージョンのクマー

「Web/JavaScript 講習会 part.9 (ぐりもんでXHR、Prototype) — ディノオープンラボラトリ」を見て参考になったところをメモ。 今回は、確か、prototypeスコープチェーンを理解してから、その応用例として高階関数があるよっていう流れで話が進んだと思う。…

クロージャの活用

「Web/JavaScript 講習会 part.7 (this, スコープと環境、クロージャ) — ディノオープンラボラトリ」を見て参考になったところをメモ。 今回は、「スコープチェーンと実行時の環境を理解すればクロージャの理解も簡単だよね」っていうようなお話だったと思…

ECMAScript はホスト環境内に存在する言語

以下は、「Web/JavaScript 講習会 part.6 (ホスト環境、オブジェクト、this、環境) — ディノオープンラボラトリ」で自分が気になった部分を抜き出したもの。上のエントリの続きみたいなもの。 Ecma-262 chap.4 の引用らしい(未確認) host facilities are …

関数の宣言されたコンテキストが環境になる

Web/JavaScript 講習会 part.6 (ホスト環境、オブジェクト、this、環境) — ディノオープンラボラトリで参考になったところをメモ。今回は、関数が宣言された位置で環境が決まるというお話だったと思う。 以下のような HTML があって、「クマー」の部分を何…

window.onload に関数をスタックする

addEventListener を使わないで、window.onload に直接関数を登録すると、既に登録されている関数がある場合上書きされてしまって困る場合がある。そんなときは以下のように書けばOK。 /** * window.onload に関数 func をスタックする */ function addOnLoa…

Node Object の Type を調べる

Web/JavaScript 講習会 part.5 (DOM を使おう) — ディノオープンラボラトリ を見て、参考になった部分をメモ。 DOM Object Tree の存在を常に意識しておくことが重要。(サイ本第5版の p323 図 15-2 が参考になる) DOM Object Tree は Node インタフェース…

JavaScript のお勉強

追記(2008年4月9日(水)) 随時更新することにした。本ブログの右側に「ディノの動画まとめ」というタイトルでリンクもしておいた。 昨日から「株式会社ディノ社員による技術メモ — ディノオープンラボラトリ」の「Web/JavaScript 講習会」の動画+pdf 資…

環境問題を考えるきっかけ

いや、なんとなく、ブログの記事環境に関わると言うこと:手抜き編を見てほんのちょっと昔を思い出したから。 地元の図書館で借りたあなたが世界を変える日―12歳の少女が環境サミットで語った伝説のスピーチを読んで衝撃を受けたのは丁度4年前だったと思う。…

Shift-jis から UTF-8 への変換 シェルスクリプトメモ(4)

Cygwin 環境で書いたデータを coLinux に移したら、案の定文字化けしたので、任意のディレクトリの全ファイルの文字コードを UTF-8 にする簡単なシェルスクリプトを書いた。 入力ファイルの文字コードは指定してないので、ISO-2022-JP, SHIFT-JIS, EUC のい…

emacs-w3m から ChangeLog を開く際に url タグを自動挿入する

タイトルのまんま。 次のコードを .emacs に入れておくと、 emacs-w3m でブラウジング中に clmemo を呼び出すと、そのウェブページのタイトルと URL を自動挿入してくれる。 (setq clmemo-buffer-function-list '(clmemo-tag-insert-url-from-w3m)) 自動挿入…

ChangeLog の URL を Emacs-w3m で読み込みたい

最近 ChangeLog と Emacs-w3m をほぼ同時に使い始めたので、ChangeLog にメモした url タグから Emacs-w3m が起動できたら便利じゃないかなと思っていた。 参考:emacs-w3m をインストールした - 英語とプログラミング気まぐれ日記 そこで、調べてみると url…

Rails を触らなくても入れて置いたほうがいい rails.el

これもパクリ。Rails 触らなくても、{} の補完とかしてくれるので便利。以下をダウンロードしてロードパスが通っているディレクトリに置く。 RubyForge: emacs-rails: Project Info find-recursive.el snippet.el そして以下を.emacsに追加する。 ;;; rails.…

clmemo + blgrepで ChangeLog を快適に書く

昨日の日記で、ChangeLog の保存場所をまとめる方法を書いたのだけど、そんなことしなくても clmemo を使えば良かったみたい。gan2 さんにコメントで教えてもらった。 以下は gan2 さんのところの完全にパクリ(劣化版)なので、詳しくは ChangeLogメモのは…

「クラス自身のインスタンス変数」と「インスタンスのインスタンス変数」の違いが分からん

インスタンス変数を外部から参照できない - gan2 の Ruby 勉強日記を読んで、 class A attr_reader :var @var = "A" end a = A.new puts a.var #=> nil では nil が出力されて、 class A attr_reader :var def initialize @var = "A" end end a = A.new puts…