2009-03


戻る

2009-03-03T00:40:38 (Tue)

引越の荷物出し完了

家具・家電の類は新しく買い,それを新居に配送手続き済みなので,荷物はとても少ないです.そんなときオススメなのが日通の単身パック.S と L の二種類のサイズがあるのでそこは個人のお好みでチョイス.

何と言っても魅力はその安さ.私は S サイズを徳島から神奈川までで,なんと 27,300 円でした.インターネットによる予約割引適用済みの料金です.

ちなみに運んだのは PC 2 台 (ATX ケース),液晶モニタ 2 台,プリンタ 1 台,その他周辺機器と掃除機と本と CD と台所用品と衣類を詰めた段ボール箱 12, 3 箱程度です.最初は「これは乗らないかも…」と思ってましたが,プロの技によりカートに全て収まりましたw

5 日の午前にその荷物やら家具・家電が到着する予定なので,4 日の夜に夜行高速バスで東京へ向かって出発です.それまでデスクトップ PC が使えないので EeePC オンリーのわびしい生活… (´・ω・`)

2009-03-04T04:17:14 (Wed)

いよいよ今晩出発なわけですが

毎度おなじみの夜行バスで行くので,グッスリ寝られるようにと思ってなるべく睡眠時間を減らしています.正直今ちょっとキツい… (寝落ちしそう…

うみねこのなく頃にWiki

こんなの読んで暇つぶししてますw (^^;

Ep4 まで踏まえて色々と考えると楽しいですね.正直今の時点が一番楽しい時期だと思います.

引越して暇が出来たら,また Ep1 から読み直そうかなぁ…とか考えてたり.

2009-03-06T17:28:29 (Fri)

引越は昨日終わりました

先日新居に入居しました.引越の荷物受け取り (家電・ふとん・その他の荷物) を全て完了し,電気や水道の使用開始手続きも終了しました.ひとまず生きていくための問題点は特にありません.

しかし困ったことが 3 点発生.

1 つ目は,インターネットの開通が最低でも 3 週間後になるということ.昨日すぐに連絡したのですが,3 月のこの時期でもお客は沢山いるようでそのくらいの期間掛かると言われました.EMOBILE があるのでインターネットが出来ないわけではないのですが,「同時に 1 台まで」や「速さが出ない」という問題点はどうしようもありません orz 3 週間の辛抱です.

2 つ目は,メイン PC のマザーボードが恐らく壊れてしまったこと.BIOS すら起動しないので,きっとマザボでしょう.これにより Windows XP が起動しません.ゲームの開発はおろか,東方地霊殿や東方幻想麻雀すら遊べません.とは言え,マイクロ ATX で小さい上に SATA ポートが 2 つしか無いため大容量の HDD を持て余していたので,いつか買い換えようとは思っていました.いい機会です.これは明日アキバに買いに行こうと思います.定額給付金がこれで消えたw

3 つ目は,昨日入居後間もなく撮影した部屋の様子が PC に取り込めないと判明したこと.古いデジカメだったので,記憶媒体が SD カードじゃなかった (xD Picture Card とかいうやつだった) ためです.SD カードだと信じてやまなかった自分は,変換アダプタしか持って来てませんでしたw PC と直接繋げられる USB ケーブルも持って来ておけばよかったんだ… orz これも明日アキバで調達しようと思います.

2 つ目と 3 つ目は例大祭終わって落ち着くまでには解決しようと思いますし,出来ると思います.頑張ろうー.

2009-03-08T00:41:43 (Sun)

本日の購入物

秋葉原で飲み会のついでにお買い物してきました.後々のために完全なるメモを残しておきます.

マザーボード (ASUS P5Q-E)
クレバリー 1 号店 \14,983

セラミックグリス (Ainex AS-04)
クレバリー 1 号店 \733

DS テレビ
ヨドバシカメラ \6,800

iPod shuffle のコンセントでの充電用機器 (サンワサプライ ACA-IP6)
ヨドバシカメラ \1,250

2009-03-08T22:34:17 (Sun)

例大祭

本日は例大祭でしたね.参加された皆様,スタッフの皆様,お疲れ様でした.

ちなみに私は本日,8:30 に起きて開場時間に間に合うくらいに到着出来ればいいや~…とか考えていたのですが目が覚めてみると目覚ましが止まっていて時既に 10:30 という間抜けっぷりwwww

一応会場には行きましたが,戦利品はカタログのみという悲惨さ (^ω^) 東方幻想麻雀は明日から委託開始とのことで,必ずショップで手に入れることにします.

2009-03-09T23:50:02 (Mon)

本日の購入物

メモリ (A-DATA DDR2 800)
ドスパラ \4,280

これで夢の RAM 4GB です.まぁ 32bit OS なので 3 GB ちょいしか認識しませんが,余った分は OS がスワップ領域に使ってくれるとか何とか聞いたので,別に良し.

後で PC の構成をメモしておこう.

2009-03-10T03:16:49 (Tue)

Twitter は「楽しいもの」じゃなくて「楽しむもの」

twitterが楽しめる人と楽しめない人の違いについて (Cheshire Life)

自分もかつて似たようなこと書いてましたが,やっぱり皆同じような考えに至るのですね.

Twitter は自分から楽しんでやろうと思わなければまず楽しめないでしょう.というより世の中の大抵の娯楽ってのはそういうものですよね.

一度も話したことのない相手に Reply を飛ばすのは最初は気が引けるかもしれませんが,それは現実でも同じようなものですよ.勇気を出して一言声を掛けて見ることから全ては始まるのですよね,ほんと.

2009-03-11T00:41:11 (Wed)

Ruby 1.9.1 をインストール

Windows XP を新しく入れ直したので Ruby も入れ直さなければなりません.てことでインストールのメモ.

ActiveScriptRuby には 1.8.5 が最新版として置かれてあったので,せっかくなので 1.9 をインストールしようと思って Ruby-mswin32 から ruby-1.9.1-p0-i386-mswin32.zip をダウンロード.

展開して C:\bin\ruby\ に設置.ユーザの環境変数 PATH (※デフォルトでは無いので注意) に C:\bin\ruby\bin を追加してインストール完了.コマンドプロンプトで ruby -v と打って 1.9.1p0 何とかかんとか~ …と表示されれば OK.

ディレクトリ名などはインストールする人の好みで変更してくれて OK.個人的に Program Files が嫌い (スペースが入るので…) なので,こうしてあります.

単純に多数のファイルに対する文字列処理なんぞに使うだけが目的なので,ココで紹介されているものはダウンロードしない.後で必要になったときに入れる.

ちなみに超便利な irb は readline が必要とのエラーが出ますが,何故か使えることは使えます.

あと RubyGems を用いて Twitter ライブラリを使うために必要なものとそのインストール方法は手前味噌ですがコチラ (Twitter bot with Ruby 作成奮闘記 2, Twitter bot with Ruby 作成奮闘記 3) を.

2009-03-13T00:39:58 (Fri)

家計簿ソフト

OpenOffice の Calc で家計簿を付けようと思って色々考えていたら,フリーで家計簿のソフトあるんだからそれを使えば良いではないかと Twitter でシューター部の部長さんから言われました.なので早速ググって出てきた,なおかつ AP さんも使用しているうきうき家計簿というソフトをインストール.

最初,細かすぎる出費の項目に「あうあう (^ω^;)」となりましたが,実は項目を自分で追加したり削除したり出来ることに気付いて今では「家計簿おいしいです ^q^」状態に.

これから 2 年間の大学院生活では節約しようとはあまり思いませんが (学生の身分でお金なんぞ貯めてもしょうがない & 大した額にはならないという考え),使い過ぎないよう気を付けたいものです.

comments

紀行 (2009-03-13T13:53:11)

家計簿はCalc→うきうき→Calcな俺が通りますよ

うきうきは結局入力が面倒で続かなかった

か (2009-03-15T03:57:12)

確かに入力は面倒だ~ww 特に金額がw

でも表をいちいち作らなくてもいいので,こっちをしばらく使ってみます (^^;

2009-03-15T03:43:13 (Sun)

Squirrel 動作実験 0

13 日から Squirrel の動作に関して本格的に実験を開始しています.

環境は Visual Studio 2008 の Visual C++ 9.0 と Squirrel 2.2.2 stable です.

本日ようやく Hello World プログラムの動作まで漕ぎ着けました.

そこまでのプロセスを公開したいところですが,何分理解出来ていないところ (サンプルそのまま + 動かないところを訳も分からず改造した箇所) が多いので,まとまってから情報を出して行こうと思います.変に間違っていたら後から修正するのも面倒ですし (ぉ

2009-03-15T03:51:04 (Sun)

ANSI 規約 (命名規約)

今日 Twitter で初めて知ったのでメモ.何故今まで知らなかったんだという自戒の意味も込めて.

・_ (アンダースコア 1 つ) で始まり英大文字に続く名前
・__ (アンダースコア 2 つ) で始まる名前

以上 2 点は,処理系 (コンパイラ + 標準ライブラリ) 作者のために予約されている (ANSI 規約).よって可能ならば使用しない方が望ましい.

使用は出来るが,使用して名前が衝突しても文句言うなよ?ということだそうで.

2009-03-19T06:55:05 (Thu)

Squirrel 動作実験 1

いきなりドン詰まりました orz

sq_compile した後,sq_get でフェッチしようとしても成功しません.

ソースは以下のような感じ.

//main.cpp
#include <cstdio>
#include <iostream>
using namespace std;

#include <squirrel.h>

SQInteger getCharForSquirrel(SQUserPointer fp)
{
 int c = getc(static_cast<FILE*>(fp));
 if (c == EOF) {
  c = 0;
 }
 return static_cast<SQInteger>(c);
}

int main()
{
 //初期化
 HSQUIRRELVM v = ::sq_open(1024);

 //コンパイル
 char* filename = _SC("test.nut");
 FILE* fp;
 fopen_s(&fp, filename, "r");
 //FILE* fp = fopen(filename, "r"); //こう書いても良い (警告が出るだけ
 if (fp == NULL) {
  cout << "error 1" << endl;
  getchar();
  return 1;
 }
 if (SQ_FAILED(::sq_compile(v, getCharForSquirrel, fp, filename, SQFalse))) {
  fclose(fp);
  cout << "error 2" << endl;
  getchar();
  return 2;
 }
 fclose(fp);

 //C++ から Squirrel の関数を呼ぶ
 int x = 10, y = 20, z = 0;
 int top = ::sq_gettop(v);
 ::sq_pushroottable(v);
 ::sq_pushstring(v, _SC("foo"), -1);
 if (SQ_FAILED(::sq_get(v, -2))) {
  cout << "error 3" << endl;
  getchar();
  return 3;
 }
 ::sq_pushroottable(v);
 ::sq_pushinteger(v, x);
 ::sq_pushinteger(v, y);
 if (SQ_FAILED(::sq_call(v, 3, SQTrue, SQFalse))) {
  cout << "error 4" << endl;
  getchar();
  return 4;
 }
 ::sq_getinteger(v, -1, &z);
 ::sq_settop(v, top);
 cout << "x = " << x << endl;
 cout << "y = " << y << endl;
 cout << "x + y = " << z << endl;
 getchar();

 //終了処理
 ::sq_pop(v, 1);
 ::sq_close(v);
 return 0;
}

//test.nut
function foo(x, y) {
 return (x + y);
}

error 3 で必ず止まってしまわれます.

何が悪いんだろうね? (・ω・) これが解決しないことには先に進めない気がします.

[追記]

解決しました.次の次のエントリに原因と解決策があります.

2009-03-19T11:01:02 (Thu)

やる夫で学ぶシリーズ

やる夫がマスコミに疑問を持ったようです 【前編】 / 【中編】 / 【後編】

一口にマスゴミだ何だと言って片付けられる問題でもないんだよ,ということの本質を教えてくれます.

やる夫が儲けるようです 第一部 古代編「お金の誕生」 / 第ニ部 近代編「金銭の概念化」 / 第三部 最終話

お金,貨幣がどのようにして誕生したのか,それが歴史を経てどのように様変わりしているのか,またそれに伴ってどのような利点・欠点が生まれたのか,などの話が分かりやすく説明されています.

(以上 2 件 : 働くモノニュース : 人生VIP職人ブログwww)

ちなみに当ブログで過去に経済関連ネタのやる夫シリーズを紹介したエントリは以下 2 件
2008-06-19 : やる夫で学ぶシリーズ(経済関係)
2008-10-29 : やる夫で学ぶ世界恐慌・1929

やる夫で学ぶフェルマーの最終定理 その1 / その2 / その3 / その4 / その5 (やる夫ブログ)

数学の歴史好きとしてはヨダレ物でしたww 果たして私は死ぬまでにフェルマーの最終定理の証明を理解出来るじゃろうか… (´ω`)

comments

(2009-03-20T10:09:29)

数学関係としては「やる夫で学ぶイプシロンデルタ論法」が有名なように思いますが、管理者様にとっては初歩的過ぎますかね。

か (2009-03-21T10:52:47)

やる夫で学ぶイプシロンデルタ論法とな!

全然初歩的じゃありませんよw 極限を理解するための大学数学の醍醐味ではありませんか (^ω^)

今から読んで紹介させてもらいますw

2009-03-24T17:06:29 (Tue)

やる夫で学ぶイプシロンデルタ論法

やる夫で学ぶイプシロンデルタ論法 (やる夫ブログ)

先日やる夫で学ぶシリーズを紹介したエントリについたコメントで教わったものです.

限定後出しジャンケン,実にうまい例えですね.

要するに「限りなく~~」というのは「~~に限りがある?ううん,ないよ.」という問答と同じなのですね.結局 ε-δ 論法ってのは,その問い (限度) にあたる部分が ε で,否定にあたる部分が δ というただそれだけのことと言えばそれだけのことなのですが… まぁそりゃそんなの言われて理解出来れば苦労はしません orz

2009-03-25T08:47:39 (Wed)

Dimensions

数学ビデオ「Dimensions」をニコニコ動画にアップしました (MediaLab Love)

4 次元をどう知覚すればいいのかを地図を描くことを引き合いに出した解説から始まり,複素数の利用,ファイブレーション,証明へと続く動画集.

ファイブレーションの項はサッパリ理解不能でしたが,おおむね面白かったです.

2009-03-29T20:37:29 (Sun)

先日の買い物メモ

カッターを買ったー (死

OLFA 166BY (オートロック A 型) という品.いずれ替刃を買うときに型番をメモっておかないと困るので.

というか,実際に既に持ってたカッターの切れ味が悪くなってきたので替刃を買おうと思ったら型番分からなくて \(^o^)/ となったので…

2009-03-31T01:09:42 (Tue)

Squirrel 動作実験 2

sqstd_dofile だと動くのに sq_compile だと動かない…

それが顕著に分かる例を一応メモ.

#include "stdafx.h"

#include <iostream>
#include <cstdio>
#include <cstdarg>
using namespace std;

#undef _UNICODE

#include <squirrel.h>
#include <sqstdio.h>

namespace forSquirrel {

void print(HSQUIRRELVM v, const SQChar* s, ...)
{
 va_list arglist;
 va_start(arglist, s);
 vprintf(s, arglist);
 va_end(arglist);
}

SQInteger getChar(SQUserPointer fp)
{
 int c = getc(static_cast<FILE*>(fp));
 if (c == EOF) {
  c = 0;
 }
 return static_cast<SQInteger>(c);
}

} //end of namespace forSquirrel

void call_func1(HSQUIRRELVM v, int n, float f, const SQChar* s)
{
 int top = ::sq_gettop(v);
 ::sq_pushroottable(v);
 ::sq_pushstring(v, _SC("func1"), -1);
 if (SQ_SUCCEEDED(::sq_get(v, -2))) {
  ::sq_pushroottable(v);
  ::sq_pushinteger(v, n);
  ::sq_pushfloat(v, f);
  ::sq_pushstring(v, s, -1);
  ::sq_call(v, 4, SQFalse, true);
 }
 ::sq_settop(v, top);
}

int call_func2(HSQUIRRELVM v, int x, int y)
{
 int top = ::sq_gettop(v);
 ::sq_pushroottable(v);
 ::sq_pushstring(v, _SC("func2"), -1);
 int ret = 0;
 if (SQ_SUCCEEDED(::sq_get(v, -2))) {
  ::sq_pushroottable(v);
  ::sq_pushinteger(v, x);
  ::sq_pushinteger(v, y);
  ::sq_call(v, 3, SQTrue, true);
  ::sq_getinteger(v, -1, &ret);
 }
 ::sq_settop(v, top);
 return ret;
}

int main()
{
 //初期化
 HSQUIRRELVM v = ::sq_open(1024);
 ::sq_seterrorhandler(v);
 ::sq_setprintfunc(v, forSquirrel::print);
 ::sq_pushroottable(v);

 //コンパイル相当の作業
 const char* filename = "../test.nut";//"C:\\home\\vc\\project\\sq_test1\\test.nut";
 /*
 //pattern 1
 if (SQ_FAILED(::sqstd_dofile(v, filename, 0, true))) {
  cout << "error" << endl;
  getchar();
  return 1;
 }
 */
 //pattern 2
 /*
 FILE* fp;
 fopen_s(&fp, filename, "r");
 if (fp == NULL) {
  cout << "error 1" << endl;
  getchar();
  return 1;
 }
 if (SQ_FAILED(::sq_compile(v, forSquirrel::getChar, fp, filename, SQFalse))) {
  fclose(fp);
  cout << "error 2" << endl;
  getchar();
  return 2;
 }
 fclose(fp);
 */

 //実行
 call_func1(v, 1, 2.5, _SC("teststring"));
 cout << call_func2(v, 10, 20) << endl;

 //終了処理
 ::sq_pop(v, 1);
 ::sq_close(v);

 //プログラムが一時停止するように書いておく
 cout << "-- end --" << endl;
 getchar();
 return 0;
}

print("Welcome to Squirrel World!\n");

function func1(i, f, s) {
 print("Call foo(), i = " + i + ", f = " + f + ", s = '" + s + "'\n");
}

function func2(x, y) {
 return (x + y);
}

pattern 1 と 2 の部分のコメントアウトを片方だけ外して違いをチェック出来ます.

目標は Welcom to Squirrel World! の文字列を出さないこと (コンパイルのみに留めること) です.

[追記]

解決しました.詳細は次のエントリで.

2009-03-31T23:16:22 (Tue)

Squirrel 動作実験 3

今日は色々と分かりました.

まず,今まで Squirrel のソースで

function func(x) {
 return x * 2;
}

などと書いていましたが,実はこれはシンタクスシュガーです.(参考 : Squirrel_Lang/ch2 - Lua/組み込み系言語 Wiki (関数宣言))

正確には

this.func <- function(x) {
 return x * 2;
}

と書かれるべきのようです.ここでの this が,いわゆるルートテーブルです.

そこに func というスロットを新規作成して,オブジェクトとして関数を代入すると.

Lua や Squirrel は関数が第一級のオブジェクトである言語なので,関数ポインタでも何でもない普通の変数に代入するというこの操作が可能です.それ自体は特に不自然でも何でもないですが,これを忘れて先ほどのシンタクスシュガーを C/C++ あるいは Java の脳のままで読んでいると困るのですね.

つまり,見れば分かる通り,一度はソースファイルを一通り実行しなければ func という名前やスロットもなければ,そこに関数の内容もありはしません (代入されてないので).

これが sqstd_dofile だと動くのに sq_compile では動かない理由でした.コンパイルしただけではどうにもならないのですね.

助言を与えて下さった青猫さんには感謝してもし切れません.一番の助けになったのは恐らくこの POST です.

(他にも分かったことは色々あります.またまとめなければ…)

2009-03-31T23:43:18 (Tue)

Squirrel 動作実験 補講 0

以前自分が書いたソースで

_SC(filename)

としてあった箇所があったのですが,このマクロは UNICODE に対応している場合先頭に L を付けるだけなので,このまま UNICODE 対応したのでは当然コンパイルエラー (※Lfilename なんてシンボルはねーよバカ,という内容の) が出ます (^^;

squirrel.h での実装は以下の通り.

#ifdef _UNICODE
#define _SC(a) L##a
#else
#define _SC(a) a
#endif

よって修正して来ました orz 文字列リテラルだけを _SC マクロで囲みましょう.

(※実は正確には上の書き方は違う.SQUNICODE というマクロで条件分岐をしているのだが,SQUNICODE というマクロを定義するかどうかの判定に _UNICODE を使用しているので,上の書き方でも等価である.詳しくは squirrel.h 87 行目以降を参照のこと.)

ちなみに Visual Studio 2008 で UNICODE 対応を行うかどうかの設定は,

プロジェクト > (プロジェクト名) のプロパティ > ※ここでプロパティのダイアログが開かれる (Alt + F7 のショートカットでも OK) > 構成プロパティ > 全般 > プロジェクトの規定値 > 文字セット

ここの値を「設定なし」にすると UNICODE 対応なし (_UNICODE マクロが定義されない状態) に,「Unicode 文字セットを使用する」にすると UNICODE 対応あり (_UNICODE マクロが定義される状態) になります.

戻る