prog

JavaScriptで、定期的に呼び出される処理を簡単に作る

(function() { alert((new Date()) + '\nfunction is:\n\n' + arguments.callee); setTimeout(arguments.callee, 3000); })(); キモは匿名関数とarguments.calleeね。 arguments.calleeはその関数自身を表す。こいつをsetTimeout()に登録してやれば、同じ処…

JavaScriptのString.replace()に関数を与えて高度な正規表現処理をする

String.replace(a, b)で、aもb文字列であった場合は単純に置換を行う。 ここでaに正規表現を与える事が可能なのはよく知られているが、実はbに関数を与えることができる。正規表現にマッチした結果を使って置換したい場合、関数を与える事でその処理が可能と…

文字列中のURLを探してリンクにするJavaScript

正規表現を用いてURLっぽい文字列を探し出し、a要素に置換するサンプル。httpsやh抜きにも対応。 function AutoLink(str) { var regexp_url = /((h?)(ttps?:\/\/[a-zA-Z0-9.\-_@:/~?%&;=+#',()*!]+))/g; // ']))/; var regexp_makeLink = function(all, url,…

Operaでscript.aculo.usのドラッグ&ドロップがおかしくなる件

ドロップ後にノードが変なところにぶっとぶ問題。 どうやら既存のstyle属性が要因ぽい。 position: relativeがあって topやleftがない というstyle属性が静的に与えられている 場合に、topとleftにOperaが適当な値を入れてるように思える。それぞれに0pxを与…

script.aculo.usが動かない →解決

なんだろうね。prototype.jsは1.5.1.1、script.aculo.usは1.7.0。サンプルコードを書くと、IEだとスタック オーバーフローなるエラーを吐き、Fxでは一度きりしか動かない。 便利そうなので使いたいんだけど。また今度調べる。 以下追記 22:27 よく見たらダウ…

JavaScriptで、オブジェクトのプロパティのオブジェクト(配列等)のインスタンスが共有される

例1: (オブジェクト同士を"==="で比較すると、インスタンスが同じなら真、異なるなら偽になる。) function Hoge() { this.val; this.arr; } var hoge; hoge = new Hoge(); hoge.val=1; hoge.arr.push(null); var hage; hage = new Hoge(); hage.val=9; ha…

prototype.js、あとscriptaculous.js

prototype.jsすげええええええ、これはいい! 地味ながら$()も使い勝手が良い。 クロスブラウザとかもだいぶ簡単だ。うーん今まで知らずにやってきたのがしょんぼりなくらい。 scriptaculous.jsはprototype.js依存の、視覚効果ライブラリらしい。まだ使って…

PHPでファイルアップロード

フォームでfileをPOSTして、受信側でcopyするだけ。うっは簡単だこれ。 ダウンロードはGETでIDを与えて、IDからファイル名を引いてダイレクトリクエストで飛ぶようにした。ファイル名といっても「固定文字+ID+拡張子」なんだけど。 えーと、これで作りたい…

PHPでオーバーライドすると、関係ないメソッドの動作が変わるかも

サブクラスでメソッドをオーバーライドし、そのメソッドを呼んでいるメソッドがスーパークラスにあると、そのメソッドの動作もが変わってしまう場合があるようだ。

ツリー作成の再帰的アルゴリズム

できた。三つ並んでるのは実装上の都合です。整形をどうするか悩んでいたけれど、やってみたら存外簡単だった。なんだ。

MySQLに日本語が入らない

日本語をinsertするとwarningが出て、文字列の日本語出現場所以降が無視される。 mysql> insert into mytable values('ほげ'); Query OK, 1 row affected, 1 warning (0.02 sec) mysql> show warnings; +---------+------+---------------------------------…

PHP+MySQLで、テーブルのレコード数を得る方法

次のSQL文でレコード数を数える事ができる。 select count(*) from <<tablename>>; 結果: mysql> select count(*) from mytable; +----------+ | count(*) | +----------+ | 123 | +----------+ 1 row in set (0.01 sec) これをPHPで利用する場合は以下のようにする。 /</tablename>…

MySQLのauto_incrementの値を1に戻す方法

試験が終わってさあリリースだ、という時に全てをdeleteしても、auto_incrementのカウンタは戻らない。dropしてcreateし直すのはあまり現実的ではない。 大した実害はないと思うがどうにも気持ちが悪いぞ、という人は下記のようにしてカウントをリセットでき…

自宅でもscaffold

帰宅したので、自宅PCでも同様の作業を試みる。 今度は失敗の記憶が新しいので、すんなり成功。 名前がHoge/hoge/hogesと自動的に決まってしまうのは、たしかに楽でもある。今のところコントローラ、モデル、データベースのテーブルと全部手作業で書いている…

RoRリトライ

研究室で再度挑戦。速度が段違いに速くてこいつはいいや。 今度は研究室にあった『実践Ruby on Rails Webプログラミング入門』(伊尾木将之 他、ソーテック社)を片手に挑戦。 「はじめの1歩」は成功! 最初はサーバがうまく動かなかったけれども、cd scrip…

十手で作る簡単ウェブ アプリケーション with Ruby on Rails

例えば、「CD情報を扱うウェブ アプリケーション」を作る事にする 任意のディレクトリに移動 rails mylib →mylibディレクトリと、必要なファイルが自動的に生成される mylibディレクトリに移動 そこを基点として、下記の内容を/app/models/disk.rbとして作成…

Ruby on Rails実況

RoRへの挑戦をリアルタイムに追記していきたいと思います。 *やたら長いです。

明日一日の目標

Ruby on Railsを利用して、ウェブアプリケーションをひとつ作り上げる。 RoRどころかRubyも全く知らないけど。

変なバグがもう嫌

デバッガ経由だと正常に動き、直接起動するとエラーが起こる。あと変数を宣言したらエラーとか、同じ処理をインライン関数にまとめたら動くようになったりとか。何だよこれもう勘弁してくれぇ〜。 もちろんコンパイラのバグとは考えたくないので、恐らく領域…

定数ポインタと定数参照ポインタ

const int *とint const *は同一。しかしint * constは異なった動作になる。 前者は内容こそ変更できないものの参照先を変更する事ができる。逆に後者はポインタ変数自体が定数として扱われるため、代入操作は禁止される一方、参照先の内容は保護されない。 …

サーバしくった

研究室にサーバを置いて自宅のクライアントでアクセスして実験をしようとしたが、アクセスできない。 ファイア ウォールを越える仕組みはちゃんとやったはずなのにな、と思いよくよく思い出してみると、初期値の127.0.0.1で起動したような気がする……。あーあ…

スレッドのサンプル

一枚のコードで完結する、CUI+ダイアログなスレッドのサンプル。 ダイアログ表示後に文章を一文字ずつ出力し、ダイアログのボタンを押すか文章を全て出力するかで終了。 #include <iostream> #include <windows.h> using std::cout; using std::endl; using std::flush; const cha</windows.h></iostream>…

MSDN2のAPIのページからXMLのリストを生成

前回のMSDN2版。 まず、対象となるテーブルの番号を得るコード。 javascript:o=document;o=o.getElementsByTagName("table");i=0;for(;i=o.length)alert("Target table is not found."); たぶん番号は4で固定。違ったら適宜書き換えるという事で、実際にリス…

VSでデバッグ時にメソッド内へステップインできない場合

ブレークポイントを設定しても止まらないのなら、もしかしたらメソッドがインライン展開されてるのかもしれない。 VSでデバッグ中なら、MessageBox()なんかで適当に強制停止させて「全て中断」の後「次のステートメントの表示」で現在の場所を表示させる。コ…

IE6ではスクリプトレットで利用できるのは最大508bytes?

下記の508bytesのコードをIEのアドレスバーに打ち込んでEnterキーを押すと、実行できる。 javascript:alert("A23456789-B23456789-C23456789-D23456789-E23456789-F23456789-G23456789-H23456789-I23456789-J23456789-K23456789-L23456789-M23456789-N234567…

MSDNのWin32APIのページからXMLのリストを生成

javascript:o=window.frames["fraRightFrame"].document.frames["fraContent"].document;p=(window.open()).document;p.writeln("\n\n");o=o.getElementsByTagName("table")[4].getElementsByTagName("td");for(i=0;i"+o[i].innerText+""+o[i].getElementsBy…

「ヒープが壊れていることが原因として考えられます。」の原因は二重deleteかも

VC++でデバッグ中に HEAP[hoge.exe]: Invalid Address specified to RtlFreeHeap( 00000000, 00000000 )Windows によって hoge.exe でブレークポイントが発生しました。 ヒープが壊れていることが原因として考えられます。hoge.exe または読み込まれた DLL …

WAVE I/O

卒業研究で使おうと思ってるプログラムの、音声入出力のサンプルがひとまず完成。入力時はバッファを動的に増やしてゆくので、メモリの許す限り録音可能。しないけど。あと本当は出力も複数バッファに分けた方が良いような気がしてきた。というか必要かも。 …

「hoge.exeのデバッグ情報が見つからないか、または一致しません。バイナリはデバッグ情報と一緒にデバックされませんでした。」と表示されたら

Visual Studio 2005でデバッグをしようとしたが上記のように表示されデバッグができない場合、下記二箇所の設定を変更する。 ソリューション エクスプローラのプロジェクトを右クリック→プロパティ 構成プロパティ → C/C++ → 全般の「デバッグ情報の形式」を…

役に立たないデバッガ

VC++2005で卒研用プログラムを作成中。うまく動かないのでデバッガで変数を覗いてみようとしたところ、エラーが出て表示されない。どうすりゃいいんだこれ。 いまいち使いこなせないなあ。