nDiki : FAQ
Related term
1999年5月18日 (火)
■ プログラミング言語演習I第4回

今回は、scanf による入力と if 文の学習。
@ 本日の課題
「年齢を入力させ、その値から車の免許が取れるかどうかと酒を飲めるかどうかのメッセージを出力するプログラムを作れ。」
@ 学生から受けた質問等
- muleが起動しない: mule-nw とスペースを開けていないのが原因。
- scanfした後どうすればいいの: 課題の内容を再確認し、処理の流れを考えてもらう。(2件)
- gcc でエラーがでた: gcc のエラーメッセージの見方を説明
- getchar() を使ったが期待した値が入力できない: 似たプログラムがテキストにあって、ここでは getchar() を利用しているのでそれを真似た。ところが、getchar() では文字として入力しているので、入力した数値の最初の文字の文字コードが得られており期待通り動いていない。とりあえずここでは scanf を使うように説明。
- コンパイラエラー: ';' 抜け。(3件)
- どうみてもおかしくないのだが、コンパイラエラー: コメント開始と終了が /* ... */ ではなく \* ... *\ となっている。
- よく意味のわからないコンパイルエラー: 変数宣言の前に printf で出力を行ってしまっている ... 変数宣言は関数(ブロック)の先頭でなければならないことを説明。(2件)
- ソースファイルがない: gcc puro1.c -o puro1.c で上書きしまっている。ご愁傷さま。
- gcc で No such file: kadadi4.c というファイル名で編集しているのに、kadai4.c だと思って gcc していただけ。
- ファイルを保存しなかった: *scratch* バッファに入力。残念ながら mule 終了済み。カットアンドペーストもうまくいかず。ご愁傷さま。彼は本日同じことで2度ソースファイルを失い、これで3度目の入力だとか。
- if (a == '18'): 数はシングルクォートする必要なし。複数文字をシングルクォートすると warning もでる。参照しているテキストが、getchar() で文字を入力し if で文字と比較している例なため、勘違い。
- if ('a' == 18): 変数名をクォートしてしまっている。構文的にはエラーではないが、意図しない結果に。
- gcc のやり方は: もう今日は第4回なのに。忘れちゃったかな。演習の進め方をまとめてある Web ページを説明し、参照してもらう。
- warning: return type of 'main' is not 'int': main の返り値の型について。これも FAQ。すでに演習 Web ページに説明あり。上記メッセージを見て、main 関数の関数名を int にしたがうまくいかないという学生。ちょっとメッセージの読み違えですね。
- parse error before character 033: なぜか目にみえない変なコードがソースファイルにまぎれてしまっている。mule であたりをつけて削除。
- mail の見方: mail コマンドを説明
@ コメント
質問の内容が、操作からコンパイルエラーについてに変わってきた。 やっと、学生も操作になれてきたということか。 まだ、プログラム内容についてはついてきているようだ。 そのうち、どうプログラムを組んでいいかわからなくなってくる学生が増えてくるところか。
変数宣言が関数(ブロック)の先頭になければならない事は授業で説明されただろうか。指定のテキストでは明確にその点について記述されていないため、学生が間違えるのもしかたないか。
「MA1(えむえーわん)」と呼ばれている人がいたが彼は一体?
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- PAR で DLL ファイルをロードできなかったら大文字小文字を疑え (2009-02-23)
- 全文検索システム Hyper Estraier をアップデート (2009-07-03)
- Evernote 使用開始 (2009-03-03)
- シェイクスピア ヴェニスの商人 (2004-10-09)
2004年3月2日 (火)
■ [ Perl ] Log::Log4perlのはまりどころ

WiKicker / DiKicker の Log::Log4perl 対応作業。
- www.naney.org は Apache の VirtualHost としてエラーログも個別に吐かれている
- エラーログは自分のホームディレクトリに吐かれるものの、root 所有である
- ディレクトリは自分に所有権があり、エラーログが肥大化したら消す事もできるのだが、Apache をリスタートする権利がないので(週に1度のシステム側のローテーションが起きるまで)二度とエラーログが見れなくなる。
ということで、warn -> Apache のエラーログに流れている警告メッセージも、Log::Log4perl の方に流して、好きに消せるようにしておくことにする。
@ Log::Log4perl->init_once
SpeedyCGI 下で動かす事を想定して初期化は、init_once で行うようにする。 可能な限り早く初期化すべきなので、設定ファイル名/設定文字列はプロパティファイルに記述しておくのではなく、CGI プログラムで最初に生成する Controller オブジェクトの初期化パラメータで指定するように。
@ $SIG{__WARN__} を設定
$SIG{__WARN__}を設定して、warn のメッセージを Log::Log4perl に送る。 最初はほぼ FAQ の例のまま、以下のように記述。
use Log::Log4perl qw(:easy);
BEGIN {
$::SIG{__WARN__} = sub {
local $Log::Log4perl::caller_depth = $Log::Log4perl::caller_depth + 1;
WARN(@_);
};
}
しかし期待していた通りに動かず悩む。原因は前述する init_once との絡み。 use Log::Log4perl qw(:easy) した時点でデフォルトの初期化が行われてしまうため、初期化済みになってしまって init_once での設定処理がスキップされていたのが問題。
use Log::Log4perl;
BEGIN {
$::SIG{__WARN__} = sub {
local $Log::Log4perl::caller_depth = $Log::Log4perl::caller_depth + 1;
if (Log::Log4perl->initialized) {
Log::Log4perl->get_logger->warn(@_);
}
};
}
と修正。 get_logger も暗黙的に初期化を行うので、init_once する前に warn されるとやはりデフォルトの初期化がおこってしまう。 それではまずいので initialized が真(=初期化済み)の時のみロギングするようにする。 ただしこれだと init_once する前の warn メッセージが失なわれる(STDERR あたりに print するようにすればいいかもしれない)。
@ CGI::Carpとの絡み
CGI::Carp も $SIG{__WARN__} を上書きするので同時に使えない。 以前に use していたのが残っていてはまる。
@ Log::Log4perl::Appender::Synchronized で core dump ?
NaneyOrgWiki、nDiki でロギングしはじめたところ、CGI プログラムの処理はきちんと成功しているもののその後(?) speedy_backend が core dump してしまう事があるようだ。 最初は $::SIG{__WARN__} の設定あたりに問題があるのかと思ったが、Log::Log4perl::Appender::Synchronized を使わないようにしたところ core を吐かなくなった。
IPC::Shareable、IPC::Semaphoreなんて使っているしやっぱりこれが怪しい。 とりあえず外しておくことにする。
しかし何らかの方法でシンクロしておかないとログファイルが壊れるはずだから、本当はどうにかしなければならないな。 もっと簡単に flock とかで排他制御する Appender とか無いのかな。 自分で書くしかない?
- www.naney.org サーバ断続的にダウン (2006-04-30)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
- www.naney.org をさくらのレンタルサーバへ移転 (2009-12-23)
- DiKicker の出力する HTML コードを小さく (2006-10-05)
2004年9月13日 (月)
■ Template Toolkit + PAR

今回のプロジェクトに Template Toolkit を本格的に適用しようかと。 問題となるのは PAR にした時に、どのようにテンプレートを取得するか。 (PARでない場合は)テンプレートはモジュールと同じ位置にインストールしておき @INC から探すようにするつもり。
- PARのキャッシュディレクトリから読み込ませる -> PAR にはキャッシュ位置を取得する公開インタフェースが用意されていない。(今後)常にキャッシュディレクトリに展開されるとも限らない。
- Template::Provider をオーバーライドして、PAR から直接テンプレートをロードできるようにする -> http からのテンプレートの取得についてなどの話で FAQ に掲載されている方法。面倒。キャッシュ処理とかももっと面倒。
ということで泥臭いが「起動時に一時ディレクトリに展開してしまう」という方法を選択。 %PAR::LibCache を舐めて拡張子が '.tt2' であるものを、File::Temp で作ったディレクトリに放り込んで、Template の INCLUDE_PATH に指定する (実際には上記の処理を行うオブジェクトを作って INCLUDE_PATH で指定)。 Daemon 系ならこれで充分。
で、順次 Perl モジュールに散財していたHTML出力をテンプレートベースに変更。 コードがかなりすっきりしてきて気持ちいい。
今回の作業で @INC にサブルーチンリファレンスやら、オブジェクトやらを渡せることを初めてしった。実際 PAR で利用している。 CODE の混ざった @INC をそのまま Template の INCLUDE_PATH に渡すとエラーが起きるので除外したものを渡すように。
- PAR で DLL ファイルをロードできなかったら大文字小文字を疑え (2009-02-23)
- ActivePerl をやめて Strawberry Perl へ (2009-08-25)
- 音楽再生にあわせて処理をする amaroK スクリプトを書いてみる (2006-01-31)
- ZumoDrive インストールしたけれど使い道がまだない (2009-02-27)
- [ CLIE ] Plucker (2004-03-27)
2006年5月26日 (金)
■ 面接・会社説明

以前作成した面接メモを使用したのだが、今回のケースには使えないと感じて省略した質問もあって改訂の必要性を感じた。 逆質問に対する FAQ も準備しておく必要があるな。
- 散歩 (2003-10-04)
- バーガーキング大井町店オープン (2007-09-30)
- 今日のさえずり - 紫のハンドタオルを口に当てた人が電車から下りてきた (2010-03-16)
- Template Toolkit + PAR (2004-09-13)
- プログラミング言語演習I第4回 (1999-05-18)
2009年2月23日 (月)
■ PAR で DLL ファイルをロードできなかったら大文字小文字を疑え

PDL を使っている Perl プログラムを、昨日構築した今ごろの環境で PAR を使って実行可能ファイル化したんだけれども、実行してみたら
Can't locate loadable object for module PDL::Core in @INC ...
というエラー。 実行時のキャッシュディレクトリを見ると core.dll が同梱されていない模様。 なんでだー。
いろいろやってみたところ、もしやと思ってインストール済みの core.dll を Core.dll という名前に変えたらエラーが出なくなった(正確には次のモジュールで同様のエラーが出た)。
ファイル名の大文字・小文字が問題だったらしい。 PAR の FAQ には「Win32::Perms の Perms.DLL でこのエラーが出たら、Perms.dll にしてね」と書かれている。 最初これ拡張子の問題だけだと思っていた。 ベース名でも同様のようだ。
以前は問題なかったから、比較的新しい PAR で発生するようになったと思われる。 これ絶対はまる。
- Template Toolkit + PAR (2004-09-13)
- 今日のさえずり - くるみマフィンの賞味期限が2月30日 (2009-02-23)
- ActivePerl をやめて Strawberry Perl へ (2009-08-25)
- Wineを入れてみる (2005-03-31)
- [ Java ] 22:30 Cocoon2 はどうかな? (2001-12-05)
2009年12月29日 (火)
■ 今日のさえずり - 過去の未使用年賀はがきが累積で41枚

@ 2009年12月29日
- 08:41 ん? 会社のサーバにつながらない。
- 08:55 @as_tone つぎの水やりいつですか?
- 11:04 きりたんぽ鍋の残りで朝雑炊。ウマウマ。
- 11:06 @as_tone もしオフィスに行ったら ADSL モデムとルータ RTX1100 リセット(電源オンオフ)お願いしたいです。
- 11:21 過去の未使用年賀はがきが累積で41枚たまっていた。切手に交換するか。
- 11:30 2000年のお年玉くじつき切手11枚でてきた。
- 11:35 以前未使用年賀はがきから交換してもらったと思われる黄ばんだ5桁はがきが23枚、7桁はがきが13枚、それと5桁往復はがき2枚も発見。
- 11:36 41円・62円・72円・500円と使い勝手の悪い切手も出てきた。
- 11:39 @as_tone ADSL モデムは電源抜いて入れてください。ルータ RTX1100 は裏にスイッチがあるので一旦切って数十秒してから再度電源オンにしてください。お願いします。
- 11:41 @as_tone もし時間があれば PC から社内 Wiki など見られるか確認してもらえますか? 駄目なら ADSL モデム/ルータの問題ではなくてサーバ自体が落ちている可能性があります。
- 13:09 近所にフードコート欲しい。
- 13:10 RT @himanainu_kawai: スターバックスに長時間いて勉強して下さってもいいです。それで頭がよくなって下されば社会貢献ですよ。(スタバ岩田社長/日経MJ)
- 13:34 @as_tone よろしくお願いします。
- 16:18 久しぶりにケータイを忘れた外出から帰宅。電話もメール気にならないけど tweet できないと息苦しくてツライ。
- 16:55 マウカメドウズ FAQ 「スタッフの方が着用しているユニフォームは店舗で販売していますか。」 http://bit.ly/5Ikcxi
- 18:51 「年明けうどん」って明らかに業界がうどん売りたいっていう魂胆がみえみえで嫌だな。っていうかそばアレルギーな自分は基本年越しうどんなワケだが。
- 24:15 宛名面に文面を印刷するという失態を乗り越えてまず5枚年賀状を印刷。
- 25:14 さくらのレンタルサーバ SSH つながらないなあ。
- 25:26 @junjun_ Web は問題ないので SSH が Connection timed out するということは sshd が busy なだけなんでしょうか。最近さくらのレンタルサーバ使い始めたばかりで、そのあたりの塩梅がまだよくわからなくて。
- 25:58 2009年12月25日の歩行: 5244歩、4.02km、45分、5.27km/h、消費 203.0kcal、脂肪燃焼 29.0g、2.9エクササイズ。
- 25:59 2009年12月26日の歩行: 0歩、0.00km、0分、0.00km/h、消費 0.0kcal、脂肪燃焼 0.0g、0.0エクササイズ。
- 26:00 2009年12月27日の歩行: 6378歩、4.85km、59分、4.91km/h、消費 244.0kcal、脂肪燃焼 34.9g、3.4エクササイズ。
- 26:01 2009年12月28日の歩行: 8241歩、6.27km、77分、4.86km/h、消費 319.2kcal、脂肪燃焼 45.6g、4.4エクササイズ。
- 26:03 2009年12月29日の歩行: 3118歩、2.35km、30分、4.60km/h、消費 117.5kcal、脂肪燃焼 16.8g、1.6エクササイズ。
- 今日のさえずり - くるぴかポッチャマ廻しにくい (2009-12-27)
- 今日のさえずり - 年賀状作成特設会場とした (2009-12-30)
- 今日のさえずり - 停電って近隣にいる Twitter-ers あぶりだしに最適 (2010-01-21)
- 今日のさえずり - 外国人御一行がパセラのマンモス肉食品サンプルに釘付け (2009-10-25)
- 今日のさえずり - 年間 36500 tweets 相当か (2009-11-13)
2010年3月16日 (火)
■ 今日のさえずり - 紫のハンドタオルを口に当てた人が電車から下りてきた

@ 2010年03月15日
- 09:33 JR 3月13日にダイヤ改正したんだっけ。先週とちょっと電車の時間が違ってあれって思った。
- 09:53 ヨドびの公式サイトができたって。 (@ ヨドバシカメラマルチメディアAkiba) http://4sq.com/77WGwe
- 15:01 CoTweet サインアップしてみた。
- 15:02 ヨドびも Twitter やってるんだ。 RT @yodobi: @Naney わーい!ヨドびちゃんも仲間入りです。よろしくお願いします!
- 17:25 お茶 103円。 (@ ファミリーマート神田佐久間町店) http://4sq.com/biJuCj
- 20:17 あー、今日の夜何食べるかまだきまらない(会社で食べるつもりだったけど予想外にキリがついたので退社済み)。
- 20:20 隣の人が15分以上、中古 CD のシールを剥がして残った糊を猿のようにペタペタやってる。
- 20:25 ちょっと雨。さぼてんにした。 (@ アトレ大井町) http://4sq.com/8jv27N
- 23:10 おサイフケータイ対応ゴールドポイントカード削除。
- 23:20 おサイフケータイ Edy のサービス登録削除。
- 23:34 何もしていないブログマーケットを退会しようと思ったが、退会機能がない。FAQ によると問い合せフォームを使えと。
- 24:36 Gmail の特定のラベルに対応する Mew 上の IMAP ディレクトリを howm-search-path に指定しておけばウハウハじゃんと思ったが検索できなかった。そうか charset が違うんだよな。惜しい。
@ 2010年03月16日
- 09:33 紫のハンドタオルを口に当てた人が電車から下りてきて目を丸くした。
- 09:36 もしかしてクーラーかかってる? この京浜東北線。
- 09:43 @junjun_ あ、やっぱりクーラーかかってますか。上着きていると暑いぐらいなので、クーラー入っていると確かに快適です。
- 09:44 RT @miyawaki: みんなでブログ更新しましょう方式って、だいたいうまくいかないよね。なんでだろう?
- 12:13 オーブントースター見にきた。 (@ ヨドバシカメラマルチメディアAkiba) http://4sq.com/77WGwe
- 12:24 オーブントースター第1候補はサンヨー SK-CW12 かな。3月19日まで3310円。
- 12:34 ビッグマックセット(昼食) 590円。 (@ マクドナルド秋葉原昭和通り店) http://4sq.com/cVnVl2
- 13:29 Evernote のノートブックの共有ってもしかして「閲覧のみ」だとデスクトップには(read only とかで)同期されないの?
- 16:18 C++ ソースコードを Uncrustify したら、1行コメントの次の行のコードまでコメントアウトされていて驚愕した。
- 16:41 やばし。スコッティ切れた。
- 21:03 I'm at 秋葉原駅 (秋葉原駅, 千代田区) w/ 6 others. http://4sq.com/68fhHr
- 21:33 ヤマダ電機 3480円だった。
- 23:59 Evernote への転送/ラベル設定用 Gmail フィルタ・コンタクト設定をした。
- 25:02 Evernote プレミアムにした。
- Evernote 使用開始 (2009-03-03)
- 今日のさえずり - ファミリーマートにクリスマスケーキ4号・5号 (2008-12-24)
- Evernote プレミアムにした (2010-03-17)
- 今日のさえずり - 手をあげて横断歩道を渡る子供らを見て心が洗われた (2009-11-28)
- 今日のさえずり - 入り口に盛り塩? (2010-02-15)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.046173s / load averages: 0.17, 0.17, 0.16
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)




◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。