2007年1月のエントリー 一覧

展開するだけでインストールできるソフトウェアでの注意点

  • 更新日:
  • PC管理

Windowsのソフトウェアでは、圧縮されたファイルを展開するだけでインストールができるソフトウェアが数多く存在します。レジストリを汚さず、軽量なソフトウェアが多いため、とても重宝するのですが、ごくまれにトラブルを引き起こすことがあります。

この、「展開するだけでインストールできる」というのはとても強力な利点なのですが、その反面、展開した後にプログラムフォルダを移動してしまうと設定がくるってしまうことがあります。これは、一度インストールしたらプログラムの場所は移動しないという仮定の下に作成されているからなのですが、この仮定を知らないユーザが移動させてしまうということは実際にありえます。

今回、このトラブルのもとになったのは「CPad for Borland C++Compiler」というソフトウェアなのです。正直バグとは言いづらいものなんで、開発者を責めることはできないですね。もしこんな状態ではまってしまったらもう一度開発元からダウンロードして設定しなおしましょう。ちなみに現象としては、突然ヘッダーファイルが見つからないと言われたり(stdio.hが見つからないとか!)します。もちろん、コンパイラがちゃんと動くことを確認してから対策を取りましょう。

strncpyのおかしな挙動

  • 更新日:
  • C言語

C言語のstring.hにはstrncpy関数が定義されていますが、この関数を用いるときは注意しなければならない点があります。それは、コピー先には終端記号「\0」が自動的につかないこと。第3引数で指定した範囲しかコピーしないので、自分自身で終端記号を付ける必要があります。

たとえば、こんなコードがあったとしましょう。

char* str = (char*)malloc(sizeof(char)*100);
strncpy(str,"abcde",3);

すると、変数strが指す記憶領域には次のように記録されます。

str → | a | b | c | x | …| \0 | …|

上で書かれているxはランダムな文字(値)です。そのため、運よくxに終端記号が入る場合もありますが、別の値が入る場合もあります。そうなった場合はその文字(値)自身も文字列の一部として認識されてしまいます。このような場合を防ぐには、自分自身で終端記号を代入するのが一番確実です。

*(str+3) = '\0';

上のコードではマジックナンバーで指定してありますが、実際は変数か定数で指定したほうがよいでしょう。

虫取り Actionscript編

プログラムにどこからともなく侵入し、挙動をおかしくさせ、さらにはプログラマのストレスの原因にもなる「バグ」。プログラムの誕生とともに発生した「バグ」をできるだけ簡単に駆除するために、バグの一例を挙げておきます。今回はFlashで使われるActionscriptに関するバグです。(あと、2つほど続けて書きます。)

Actionscriptはその名の通りスクリプト言語です。コンパイルする必要はなく、簡単にテストすることができます。ですが、Flashで使われる関係上、バグの再現性を特定することがけっこう難しいのです。構文エラーならすぐに止まってくれますが、そうでない場合はちょっと厄介です。

まず、多くのスクリプト言語がそうであるように、変数の宣言を行わなくても自動的に解釈してくれる点。これは、わざわざ宣言を書かなくてもいい点は利点とも思われますが、逆に言えばスペルミスで別の変数名を記述しても、とりあえず動いてしまいます。これを特定するのが面倒なんです。

たとえば、こんな場合。

aaa = 12345;
trace(aaaa);   // print "Undefined"!!

これが単独で書かれていると分かりやすいですが、長いコードの中ではどうでしょう。見つけるのが大変な気がしませんか?ホントによく起きえるミスなんで、よく気をつけましょう!

あと、actionscriptを勉強したい方は、下記のブログなんかがいいと思いますゝ(^O^)丿

[blog] Flash ActionScript2.0入門ノート

Virtually

  • 更新日:
  • 雑記

英語の文献を訳すときに「Virtually」という単語が出てきたので、「仮想的に」と訳したら全然意味がわからない文になってしまいました。なので、SPACE ALCで真面目に調べてみたら、「事実上」と訳すのが正しいらしい。

ついでなので、「virtual」も調べてみると「実質的な・実体・事実ではないが『本質』を示すもの」という訳が出てきました。なんだか日本語で考える「バーチャル」といえば「仮想的な」という意味で考えることが多かったのですが、「事実上の」というふうに捉えなおしたほうがいいような気がしてきました。

情報の分野でよく研究が行われている「バーチャルリアリティ(Virtual Reality)」は、よく「仮想現実」と訳されるのですが、「仮想的な現実=事実上の現実」ということなのでしょうか。

ちなみに「仮想的な」をSPACE ALCで検索すると、「fictitious」という語が出てきました。さて、「virtual」との違いはなんなんでしょう?

なにやら締め切りが

  • 更新日:
  • 大学生活

月末になるとレポートの締め切りに追われることが多くなって大変です。一応、大学院生になっても講義のレポートがあるのですが、これが今までのスケジューリングの甘さのせいで、かなり危機的状況に。なんとかして間に合わせたいところです。

とりあえず、今週末のレポートと今月末のレポートだけはなんとかして出しておきたいところです。せっかく出席もしたし、それなりに頑張った講義もあるし。でも、それを頑張ると研究の英語の訳が進まないんだよな。将棋で例えるなら、いかにして詰められないように逃げるかという状況。要は、首が回ってないってことですな。

時間がかかるやつから片付けるなら、バイオとシスプロ、そして分散システム。研究の日本語訳は、単純に見積もると5時間程度で完成すると見たので、分散システムの前に押し込むのが優先順位的に良さそう。こんなこと、とても大声では言えないな?。

不正アクセス事件

  • 更新日:
  • 大学生活

今日のお昼に突然研究室から電話がかかってきました。「今すぐ学校に来て!」むむ、何か起きたんですか!?

時間が徐々に経つうちに状況が見えてきました。どうやら、研究室のメンバーが作ったプログラムのバグが原因で、他の大学のWebサーバにアタックしていた模様。アタックの回数を聞いて驚愕。1日に170万回ですよ!1分間に換算すると1200回弱、1秒間で20回程度。アクセスしてたWebページにもよりますが、サーバに多少なりとも負荷をかけてたことには違いないでしょう。

自分のプログラムじゃないとはいえ、ちょっと間違えればやばい事態になりえることを肝に銘じておかないといけません。

ピアノ

  • 更新日:
  • 日記

ここ最近ピアノで曲を弾くのにはまってます。別にのだめの影響を受けたわけじゃなくて、ただ単に社会人になるまであと1年しかないし、それまでに上手くなっとこうかなって思って。でも、これが意外に面白い。

僕は実は5歳の時からピアノを練習してて、高2までずっと習ってました。とはいっても、真面目に練習するようになったのは中学になってからなので、実質5年間だけやってたみたいなものですが。高2でピアノを止めてからかれこれ5年くらい経ちますが、簡単な曲ならちょっと練習すれば弾けるようになります。高校までと比べると、曲想の付け方とかが全然違うので、下手をしたら初見では今のほうがうまいかも!?

とはいっても、今弾いてる曲はブルグミュラーの有名な練習曲集なんで初見でも意外といけるのです。あと、すでに弾いたことある曲なんで、そのあたりが違いますね。チェルニーの30番、40番とかまで行くのはもうちょっと時間がかかりそうです。一応、目標はソナタが弾けるようになる程度。1年ではちょっと高すぎる目標かも。

ピアノの練習をしだすとついつい時間を忘れて、1時間なんてあっという間。もうちょっと時間に余裕があればどっぷりはまれるんですけどね。

ゴミ問題

  • 更新日:
  • 日記

ゴミ問題といえば、埋め立て地などを思い浮かべる人も多いかと思いますがそうではありません。月に1回しか収集されない「燃えないゴミ」をいかにして捨てるかという問題です。…まあ、自分がその日を忘れなければいいんですけどね。

僕の住んでる地域では、「燃えないゴミ」は第4週目の○曜日と決まっています。ですが、去年の月末はいろいろとイベントが多くて、「燃えないゴミ」を出せずにいました。そして、今日になってやっと万事捨てられる態勢が整ったというわけです。どれだけたまっていたかをここに書くのはさすがに恥ずかしいのでしませんが、捨てるごみを入り口付近に集めたら、一瞬「のだめの部屋」状態になってました。さすがにこんな状態は誰にも見せられない!!(⊃д⊂)

燃えないゴミってそれほど出ないんですが、出るとけっこうかさばるので月2回くらいにしてほしいです。やっぱり無理なんですかね?

ミーティング

  • 更新日:
  • 大学生活

今日は企業の方との合同ミーティングがありました。すでに自分の研究は別の分野になり、実は全然研究は進んでないのですが、とりあえず出席してメモ取りなどしようかと思い、2時間ほど奮闘してきました。前日に研究室に泊ったこともあって疲れはたまりまくり。ミーティング中にあくびが止まりませんでした。

さてさて、ミーティングでは後輩がかなり奮闘。前の合同ミーティングで言われていた課題を着々とこなしていました。なんか自分の時とはえらい違い。今年度の初めと比べると進捗はすさまじいです。だいぶ、向こうの方が頑張っているということもあるのですが、先が見えてきてうらやましい限りです。

でも実際のところは、その後輩は研究テーマとしてはとても面白くないのでなんとかしてあげたいところです。どうしたらそれっぽい研究テーマになるんだろうね。

少し話が変わるのですが、今日研究室から帰る時にマイニング班のB4は誰がサポートすることになるのか、ちょっと考えてみました。

某H氏→頑張ってくれそう!だけど、頑張りすぎそう。
某S氏→頼んだらやってくれそう。でも研究班違うしな。
某K氏→前の研究が延長になって、それどころじゃない!?
自分→忙しいとか言って逃げそうかも(⊃д⊂)

という感じで、みんな無理なんじゃないかという結論になりました。っていいのか?それは。後でとんでもないしっぺ返しが来そうでちょっと怖いです。。。

cabファイルがテキストとして表示されてしまう問題

  • 更新日:
  • サーバ管理

apacheなどでWebサーバを立てていて、cabファイルをダウンロードさせようとしたときに何故かテキストファイル(しかも文字化けして!)がブラウザに表示されてしまうことがあります。また、cabファイルに限らずダウンロードさせたいファイルがブラウザ上でむりやり表示されてしまう時って意外と多いものです。

さて、これを解決するには2通りの方法があります。

1.「.htaccess」ファイルに「AddType Content-type application/octet-stream .cab」と書く
この場合は、ダウンロードさせたいファイルが置かれているディレクトリに「.htaccess」ファイルを置きます。ただし、これは「.htaccess」がサーバで利用可能になっている場合のみの方法です。

2.「httpd.conf」ファイルに「AddType application/octet-stream .cab」と書く
この方法は、自分自身でサーバを管理している場合のみに行える方法です。サーバの設定ファイルに上記の文字列を追記することで、サーバが管理するアクセス可能なcabファイルが全てダウンロードできるようになります。もちろん条件を指定することで、あるディレクトリ以下に設定を反映させることも可能です。

このページの上部へ

About

tetsuの日記・雑記です。
日々経験したことを記録していきます。

広告

サイト内検索

最近のピクチャ

  • リアディレーラ

月別アーカイブ

最近のコメント