めも日記
めも日記を移動しました。新しいめも日記は こちら です。

2004年09月07日(火)09:12  もけっけさんの本 Part4
8/29 のもけっけさんの本の話題で、FGC さんにこんなレスを頂きました。

"abc"という4バイトデータがメモリーに配置されるのが、main()よりも先の一回限りだから、
main()が走り出した以降は、再初期化されない。って考えると、理解しやすいかもです。

なお gccの場合、-fwritable-strings というオプションを使用する事で、同一ソースコード上の
同一リテラルであっても、個別のメモリが割り当てられるようになるようです。

GCC のコマンドオプション

http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_2.html#SEC6

(おまけ)62番に執筆者による解説があります。

http://kmaebashi.com/bbs/bbs02.html
「C言語ポインタ徹底制覇」p088文字列リテラルの書き換えについて

> 空白を読み飛ばした次の文字がEOFの場合EOFを返していますが、単語を読み込めた
> funcという関数の中で、char *str="abc";という文を実行したあとで、strを表示し
> 、その後でstr[0]='d';という文を実行すると、もし文字列リテラルが書き換え可能
> な処理系だと、funcの1回目は正しくabcと表示するが、2回目はdbcと出すと書か
> れています。そのような処理系が手元にないので実験できませんが、これはなぜで
> しょうか。"abc"がポインタだということは分かるのですが、2回目もchar *str="a
> bc";を通るので、やはり同じ結果になるような気がするのですが・・・。


strが'a' 'b' 'c'という文字が格納されたメモリ上のどこかを指しているのは
わかりますよね?そこを直接書き換えているんですよ。

ちなみにstr="abc"という初期化はあくまでポインタの初期化ですから。
strポインタが指す位置が最初に通ったときと同じ物を指すように
初期化されるだけで指している先を"abc"で埋めるように
初期化するわけじゃないんですよね。


なるほど。ありがとうございます。
「指している先を初期化するわけじゃない」これがミソですね。
ちなみに、VCだと /GF オプションを「付けないと」 gcc の -fwritable-strings と同じ挙動を示します。
ってことは、デフォルトで書き換え可能なのか? (^^;
他の最適化オプションでも勝手に書き換え不可能領域に持ってかれそうな気もするけど。
コメント
Name   Message  

2004年09月06日(月)22:22  画像保管庫 設定変更・イニシャルD SecondStage
画像保管庫 設定修正

・ 連続投稿規制を外しました。

自分が投稿したり、まとめてレスしたりする時にひっかかるので。 (^^;

土日にイニシャルDの SecondStage をまとめてDVDを借りてきて一気に見ちゃいました。 (^^;
FirstStage に比べて絵が綺麗になってますね。
そして、映画が ThirdStage だということに気づきました。
映画の方を先に見ちゃった…。 _| ̄|○

ランエボとR32ってランエボの方がいいのかなぁ…。
なんでだろう?
インプレッサとランエボでは?
なんかそこら辺の解説がないけど、作者の趣味なのかな? (^^;
コメント
  • Shironeco(2006/09/03 11:53)
    趣味です!!!!!
  • Noppi(2006/09/03 11:54)
    そ、、そか…。 (^^;
Name   Message  

2004年09月05日(日)22:01  サーバ修正事項・画像処理・グレイスケール変換式
いろいろやること書いておこう。
本当のメモ書きです。

[Postfix 2.1] virtual_maps パラメータは古いので virtual_alias_domain と virtual_alias_maps に書き換える。
[Postfix 2.1] 現在の .forward の設定を /etc/postfix/aliases で代用できるか実験。
[Postfix 2.1] MySQL 対応にする。
[Cyrus-SASL] MySQL 対応にする。
[Courier-IMAP] MySQL 対応にする。

当分の目標はDBで処理できるとこは全てDBに置き換えるようにしよう。

Linux kernel 2.4.27 を入れる
PHP 5.0.1 を試してみる。

画像処理に使えそうなページをめも。

http://www.bea.hi-ho.ne.jp/gaku-iwa/

PictBear & 画像処理のアルゴリズムとか

グレースケール = 0.299R + 0.587G + 0.114B

http://pc5.2ch.net/test/read.cgi/tech/1090897159/2
コメント
Name   Message  

2004年09月04日(土)21:49  tDiary:dbi_io tDiary のデータをDBに保存する
tDiary:dbi_io

http://ma2tak.dyndns.org:8888/ma2tak/1609

tDiaryのバックエンドとしてDBを使用するtDiaryIOクラス。
昨日書いた tDiary の DB 保存をあっさりと実現してくれるかも。
感謝! (^_^)/
今度テストしてみよう。うまくいったら完全移行するつもりです。

とりあえず Ruby-DBI が必要ということなので、それのURLをめもっておこう。

http://ruby-dbi.sourceforge.net/

さらに、これを MySQL で使う為には「MySQL Ruby モジュール」が必要ということなので、
この URL もめもめも…。

http://www.tmtm.org/mysql/

これでテスト出来そうかな。
コメント
Name   Message  

2004年09月03日(金)21:34  tDiary 2.0.0・検索モードのバグ修正
tDiary 2.0.0リリース キタ━━━━(゚∀゚)━━━━ッ!!

http://www.tdiary.org/

めも日記、使いにくいから tDiary に移行したいなぁ。
とりあえずテストしてみたところ、ruby のパスを書き換えたら動作しました。
もうすぐ移行するかもです。

tDiary の現状の調査点としては、データを全部 MySQL に保存したいので、
それをどうにか出来ないかということですね。
MySQL に保存出来れば、検索のプログラムも作ることが可能になります。
そうすれば完全に移行できます。
まぁ、現行のテキストファイル形式の保存でも namazu のプラグインがあるので
検索できるのですが、それだと細かいカスタマイズが出来ないので。

一行だけの掲示板 検索モード修正

・ 2番目のチェックボックスにチェックをいれ、下のラジオボタンにチェックを入れた状態で
「<<」「>>」を押すと、チェックボックスの状態が引き継がれないバグを修正しました。

日付のパラメータが渡ってない時(または日付がイリーガルな場合)に無条件にチェックが消えてたのを修正。
下のラジオボタンにチェックが入っている時は消してはダメだって…。
コメント
Name   Message  

2004年09月02日(木)21:20  セッション機能追加・WinXP SP2 適用
一行だけの掲示板 スクリプト修正

meta さんの案を採用して、セッションを使うやり方に変更しました。
php.ini の session.gc_maxlifetime を 86400(1日) から 10,368,000(120日) に変更しました。

とりあえずこれで様子を見てみます。
サーバの負荷が重すぎたら元に戻す予定。

Windows XP SP2 セキュリティ機能なんたら を入れてみました。
動作が軽くなりましたね。嬉しい誤算です。
とりあえずファイアウォールをOFFにしました。 (笑)
コメント
Name   Message  

2004年09月01日(水)21:00  数式処理のプログラミング
数式の処理を、再帰下降型構文解析を使って書いてみました。
とりあえず最初に考えた数式の定義はこんな感じです。
' 'でくくられている記号は終端記号で、漢字でかかれているのは非終端記号です。

数式 ::= ('('数式')'|数字)(('+'|'-'|'*'|'/')('('数式')'|数字))*

数字の定義は次の通りです。今回は整数のみとしています。

数字 ::= ('+'|'-')?[0-9]+

ここで、数式の定義には左再帰性があると思ったので、「'('数式')'|数字」を因子という名前で別にくくり出しました。
再帰下降型構文解析の時は、左再帰性がある構文は使えないので気をつけましょう。

数式 ::= 因子(('+'|'-'|'*'|'/')因子)*
因子 ::= '('数式')'|数字

見やすくなりましたね。
しかし、このままでは演算子の優先順位が考慮されていません。
足し算・引き算よりも掛け算・割り算の方が優先順位が高いので、それを構文の中に組み込みます。

数式 ::= 項(('+'|'-')項)*
項 ::= 因子(('*'|'/')因子)*
因子 ::= '('数式')'|数字

これで数式の定義は完成です。
後はこの通りにプログラムするだけです。
実際は次のようになりました。

http://www.noppi.jp/temp/suugaku/eval_cpp.txt

実行ファイルは下にあります。
http://www.noppi.jp/temp/suugaku/eval.exe
コメント
Name   Message  

2004年08月31日(火)18:30  Sleipnir に変更・英語のチャット略語・セッション機能を搭載するかも
タブブラウザを Sleipnir に変更しました。
今まで DonutP を使ってたけど、ようやく Sleipnir がタブの複数表示になったので変更しました。
DonutP よりも動作が軽いです。

みもたんに英語のチャットでよく使う略語を教えてもらいました。
楽しいかも。 (^^;

http://www.geocities.co.jp/Playtown/2442/chat.html
http://www.mis.ne.jp/~k3kato/zone/chat.html

meta さんより。

http://www.nttdocomo.co.jp/p_s/imode/xhtml/s1.html#1_2_1

こういう感じで個体情報とフォームの情報をサーバーに記憶させといて、
フォームから何もデータが受け取れないときにサーバーに記憶した情報を代わりに使えば
Cookieの代わりになるんじゃないかな?
記憶させるときは getinfo=on とかのスイッチをつけて、


これは、PHP でいうセッションのことですね。
PHP を使う場合、Cookie が使えるなら Cookie を発行して、
そうでない場合はフォームやリンクに自動的にパラメータを付加することが出来ます。
以前のバージョンなら --enable-trans-sid をつけて Configure する必要がありましたが、
最近のバージョンではこれがデフォルトになってます。
php.ini で session.use_trans_sid を 1 にするだけで使えます。
サーバの負荷が大きくなりそうですが、試してみようかな。
コメント
Name   Message  

2004年08月30日(月)01:27  合気道について語ってみる 素人がお手軽に四ヶ条をする方法

pen.jpg 240×320 7K8/25 の四ヶ条ネタの続きです。 (^^;

8/25 の日記で、
「技の威力もさる事ながら、四ヶ条自体が合気道に必要な力の集中力の鍛錬になっています。」
って書いちゃいましたが、前半は嘘が混じってます。 (^^;

技の威力については、あくまでも原理を知っている人がある程度の鍛錬をした場合の話です。
要するに、文の後半に書いてある「合気道に必要な力の集中力の鍛錬」がある程度出来てからということです。

しかし、素人でも手っ取り早く四ヶ条の威力を出す方法があります。
しかも、並大抵の有段者よりも効果的なやり方です。
ここを見てるあなただけに、今回だけ特別にその方法を教えちゃいましょう。
今ならセットで1万円。分割払いもOKです。 (違)

そのやり方とは、ずばり道具を使うことです。
道具といっても、特別なものではありません。
そこらへんに転がってる鉛筆なりボールペンなりを持ってください。
それを、写真のように指に挟んでください。

その状態で、相手の腕を四ヶ条のように握るだけです。
やってみればわかります。
むしろやられてみればわかります。 (爆)
こんなに痛かったとは思いませんでした。 (^^;

クボタンという護身用の武器があります。
沖縄唐手で使われている短い棒をヒントに作られたものみたいです。
その使い方にも、これと全く同じ技があります。
その中には、これの応用として腕を極めるのではなく、
相手の指をクボタンと親指(または人差し指)で挟んで極める技もあります。

また、FBI やアメリカ警察が使っているバトン(特殊警棒)のメーカーである
ASP の教習ビデオにも、クボタンと同じ技があったりします。
通称ASPバトンと呼ばれる3段式特殊警棒は、手に持って振ると長くなるのですが、
そのバトンを短いままの状態で使って、指を極めたり、腕を極めたり、
さらには連行法の時にもこれが使われてたりします。
警察が使ってるだけのことはありますね。
コメント
Name   Message  

2004年08月29日(日)19:18  4けたの数字を10にするプログラム in C++版・もけっけさんの本 Part3
4けたの数字を10にするプログラム
C++で書き直してみました。

http://www.noppi.jp/temp/suugaku/total10_cpp4.txt

Perl には、eval という便利な関数があります。
eval というのは、文字列をそのまま Perl のインタプリタに引き渡して、
いうなれば「Perl の上で Perl を動かす」ということが出来る関数です。
これを利用して、 i=eval("計算式"); とすれば、i にその計算式の答えを
代入することが可能です。

…が、C++ にはそんな都合の良い関数はありません。
そこで、逆ポーランド記法というものを利用します。
詳しくは「逆ポーランド記法」で検索してもらえばわかりますが、
これを使えば比較的簡単に計算式の処理を実装することが出来ます。
それを使ったのが上のプログラムです。

ちなみに、括弧のある普通の計算式を処理するには、
構文解析というアルゴリズムが必要になります。
こういう計算式の処理に使われる構文解析の手法としては、
次の2つが有名です。

・ 演算子順位構文解析
・ 再帰的下向き構文解析

…って、話があさっての方にいきそうだ…。 (^^;
興味がある人は調べてみてください。

もけっけさんの本の2-3-1書き込み禁止領域のとこに書いてあるプログラムの説明の意味がわからにゃい…。
char *str="abc"; って宣言されている文字リテラルの生存期間ってそのスコープ内だけじゃないの?
何で2回目以降の呼び出しで "dbc" と表示されてしまうのかがわからんちん。


char *str="abc";とすると、static記憶領域にabcという文字列リテラルが置かれ、その先頭のポインタがstrになります。
なのでstrを宣言・定義したブロックを抜けてもポインタさえ残ってればアクセス可能です。
ANSI C言語辞典によると、「文字列リテラルは、静的記憶期間の配列として保持される。」という一文がありますので、
やはり仕様がstaticになっているようです。


ポインタさえ残っていればアクセス可能だというのはわかりますが、2回目の時にもその文字列が
なんのチェックもされないで使いまわされるということですね。


そう考えてかまわないと思います。
「プログラムが文字列リテラルを変更したときの動作は未定義である」との一文もあるので、
変更しちゃいけないみたいです。


ほうほう…。なるほど。
コメント
  • FGC(2004/09/08 01:38)
    "abc"という4バイトデータがメモリーに配置されるのが、main()よりも先の一回限りだから」
  • FGC(2004/09/08 01:44)
    (続き)、main()が走り出した以降は、再初期化されない。って考えると、理解しやすいかもです。
  • FGC(2004/09/08 01:51)
    なお gccの場合、-fwritable-strings というオプションを使用する事で、同一ソースコード上の同一リテラルであっても、個別のメモリが割り当てられるようになるようです。
  • FGC(2004/09/08 01:54)
    参考:<br><a href="http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_2.html#SEC6">GCCコマンドオプション</a>
  • FGC(2004/09/08 01:58)
    失礼、ここでタグは使えなかったんですね。
  • FGC(2004/09/08 02:18)
    (おまけ)http://kmaebashi.com/bbs/bbs02.html 、62番に執筆者による解説があります。
  • Noppi(2004/09/08 08:11)
    なるほど。ありがとうございます。
  • Noppi(2004/09/08 08:13)
    「指している先を初期化するわけじゃない」これがミソですね。
  • Noppi(2004/09/08 08:15)
    ちなみに、VCだと /GF オプションを「付けないと」 gcc の -fwritable-strings と同じ挙動を示します。
Name   Message  

2004年08月28日(土)18:27  携帯ブラウザ・4桁の数字を10にする証明
携帯だとクッキーが使えないブラウザもあるらすぃ…。
初めて知った…。
au の EZWeb がクッキー使えるから、ずっとどの携帯でも使えるものだと
思ってました…。 (^^;
それを踏まえて、クッキーに頼らないパラメータ渡しを一行掲示板に取り入れてみたり。
めんどくさい…。 (^^;

4桁の数字を10にする証明

http://pc5.2ch.net/test/read.cgi/tech/1063724453/
1〜9 までの4桁の異なる数字は、各々の数字を
足したり、引いたり、かけたり、割ったりすることによって、
必ず10になる。

ということを証明できるプログラムが出来る?
考え方
4つの数字を a,b,c,d とし、四則演算子を op1,op2,op3 と表したとき、
それらを組み合わせて出来る計算式は次の通りである。

・ ((a op1 b) op2 c) op3 d
・ (a op1 b) op2 (c op3 d)
・ (a op1 (b op2 c)) op3 d
・ a op1 ((b op2 c) op3 d)
・ a op1 (b op2 (c op3 d))

あとは、重複しない1〜9までの4つの数字の順列に
+,-,*,/ の複数使用可能な4つの演算子の中から3つの順列を当てはめて、
それぞれ a〜d,op1〜op3 とし、上の5つの式を計算して 10 になることを
確かめればよい。

で、答え。(Perl 版)
http://www.noppi.jp/temp/suugaku/total10_pl3.txt
コメント
Name   Message  

2004年08月27日(金)18:14  Windows クライアントOS で Apache を使う場合のライセンス解釈
Windows で Apache を使う時のライセンスについて

http://www.microsoft.com/japan/customer/infokb/Search.aspx?si=643279&lp=1306&lc=0

これを見ると、同時接続数が 10 までに制限するように設定した Apache であれば、
Windows XP Professional や Windows 2000 Professional でサーバ立てても問題なさそうですね。
同じように、他の Web サーバや FTP サーバやメールサーバも同じ解釈っぽい。

一行だけの掲示板 スクリプト修正

・ ID検索モードを追加しました。
コメント
Name   Message  

2004年08月26日(木)01:19  拳法について語ってみる 骨の出っ張りを利用する技・もけっけさんの本 Part2
昨日の続きをちょこっと。
四ヵ条のような、「人差し指の根元の骨の出っ張り」を使う技ってなんか独特な気がします。
中国拳法には、そういう骨の出っ張り(突起)を使った技で別のやつがあります。
肩の骨の出っ張り(突起)を使う技ですね。
この部分を使って体当たりをする技を、中国拳法では総称して靠(コウ)と呼んでいます。
靠というと、八極拳の中の「鉄山靠」と呼ばれる技が有名ですが、
接近戦の中国拳法の流派には大抵似たような技があります。
鉄山靠は背中から体当たりするだけの技だと誤解されていることが多いようですが、
本当は肩の骨の突起部分を相手の背中の窪みにあるツボに突き刺す技です。
ということで、アーノルド・シュワルツェネッガーのように肩に余計な筋肉をつけて
ここの骨を筋肉で覆っているような体型の人には無理な技ということになります。 (笑)

LinuxWorld を買いにいったついでにもけっけさんの本を見てみました。
なるほど。おもしろいです。
こんな感じでC++も解説してくれることをきぼ〜ん。 (笑)
コメント
Name   Message  

2004年08月25日(水)00:48  合気道について語ってみる 四ヶ条について
合気道ネタです。 (^^;

養神館には四ヶ条という技があります。
この技、合気会では四教というみたいです。
って、技の名前はどうでもいいです。 (^^;
合気道の技は説明するのが難しい技が多いのですが、四ヶ条はだいたいこんな感じです。
人間の腕には、橈骨と尺骨という2本の骨があります。
自分の小指を相手の腕の手首にひっかけて持ちます。
自分の人差し指の付け根の骨の出っ張り(医学的な正式名称知らないです (^^;) や、
自分の人差し指の第3関節の骨と、親指の第二関節の指を、
それぞれ相手の橈骨と尺骨にあてます。
その状態で、小指や薬指を中心にテコの要領で人差し指の接触点に力をかけ、
相手の橈骨あるいは尺骨を絞める技です。
技の威力もさる事ながら、四ヶ条自体が合気道に必要な力の集中力の鍛錬になっています。

…と思っていました。
いや、合ってるんですけどね。 (^^;
しかし、前に大東流合気柔術の本を見てたら、四教の恐るべき解説が載ってました。
手首と腕の関節部分に3〜4個の小さな骨があるみたいです。
自分の小指と親指を相手の手首の付け根にひっかけて、なるべく手首側に引っ張ります。
そうすると、その小さな骨の間隔がわずかに広まります。
その状態で、自分の人差し指の付け根を特定の位置(腕のある特定の小骨のある場所)にあてます。
その状態で、親指と人差し指を相手の手首側に引っ張りながら同時に人差し指にあたっている骨に圧力を加えます。
そうすると、その小骨の部分を一時的に外すことが出来て、相手に激痛を与えて腕を使えなく出来るらしいです。
ものすごい凶悪な技ですね。こんな裏技があるとは思いもしませんでした。
その本には、「大東流の技は危険過ぎるので、その威力を1/10〜1/30くらいに薄めた技を合気道に伝えてある」と
書いてありましたが、真偽はともかくこの四ヶ条はすごいと思いました。

一行だけの掲示板 スクリプト修正

・ 以前にあった隠しコマンドな検索機能を統合し、検索モードとして正式に公開しました。

一仕事終わった…。
コメント
Name   Message  

2004年08月24日(火)23:25  新携帯 と BREW について一言・もけっけさんの本
W21S。今一番欲しい携帯です。 (^^;
au だし SONY だし、デザインも悪くないし、WIN機だし。
ただ、唯一の弱点はEZアプリがJavaに対応してないことです。
BREW だけの対応になってます。
BREW は、開発自体はVCで可能なのですが、出来たソフトを
自由に配布することが不可能になっています。
法人でないと自作ソフトを無料で配布することすらできません。
配布以前に自分の携帯でテスト転送することすら不可能。
BREW はセキュリティ重視でこういう仕様にしているのはいいけど、
BREW だけに対応しているのは私にとってはとても痛いです。

BREW の自由化推奨委員会。
一般人にもBREWアプリを作らせろー!

C言語ポインタ完全制覇

http://www.gihyo.co.jp/books/syoseki.php/4-7741-1142-2

通称「もけっけさんの本」。 (爆)
もけっけさんお勧めの逸品です。
今度 LinuxWorld の最新刊を買う時に見てみよう。
コメント
Name   Message  

過去ログ
2003年11月 12月 
2004年01月 02月 03月 04月 05月 06月 07月 08月 09月 

一覧 / 検索
ホームページに戻る