home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

871 - 880 / 1320    [|<]  [|<]  [<]  81  82  83  84  85  86  87  88  89  90   [>]  [>|][>|]
タイトル/名前 更新者 更新日
C言語系/NetBSD1.6における setjmp(), longjmp() の実装 msakamoto-sf 2010-01-04 01:52:31
日記/2010/01/03/ldオプションの--start-group,--end-group msakamoto-sf 2010-01-03 21:39:41
C言語系/ポインタ・配列の定義と宣言メモ1 msakamoto-sf 2010-01-03 18:55:26
日記/2010/01/02/C言語のJIS規格書 msakamoto-sf 2010-01-02 18:08:53
日記/2010/01/02/NetBSD(1.6)までインストールする羽目に。 msakamoto-sf 2010-01-02 15:04:35
技術/BSD/FreeBSD4.4自分用メモ msakamoto-sf 2010-01-02 14:29:03
日記/2009/12/31/2009年のまとめ msakamoto-sf 2009-12-31 23:59:44
日記/2009/12/31/FreeBSDでローカルのCVSupサーバを構築 msakamoto-sf 2009-12-31 20:49:48
TODO/YakiBiki/1.0.0 msakamoto-sf 2009-12-31 16:44:26
日記/2009/12/24/Twitterに続いてAmazonもDNS攻撃受けたか・・・ msakamoto-sf 2009-12-24 22:04:12
ソート項目 / ソート順     1ページ 件ずつ表示

C言語系/NetBSD1.6における setjmp(), longjmp() の実装  

所有者: msakamoto-sf    作成日: 2010-01-04 01:50:02
カテゴリ: Assembler BSD C言語 

引き続き「エキスパートCプログラミング」ネタ。setjmp()とlongjmp()が出てきたので、早速実験。
ちょうど「デーモン君のソース探検」ようにCVSからソースを落としてきたNetBSD1.6があったので、setjmp()/longjmp()の中身を調べ、動作原理をgdbで追いつめていきたい。

まずは「エキスパートCプログラミング」に載っていたサンプルプログラム。
test7.c:

#include <stdio.h>
#include <setjmp.h>
 
jmp_buf buf;
 
void banana() {
        printf("in banana()\n"); /* (2) */
        longjmp(buf, 1);
        /* NOTREACHED */
        printf("you'll never see this, because I longjmp'd.\n");
}
 
int main() {
        if (setjmp(buf)) {
                printf("back in main\n"); /* (3) */
        } else {
                printf("first time through...\n"); /* (1) */
                banana();
        }
        return 0;
}

そのまま動かすと、上の"(1)","(2)","(3)"の順で処理が進むことが確認出来る。

$ ./test7
first time through...
in banana()
back in main

では早速gdbで追っていきたい。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-01-04 01:52:31
md5:64235245fbc8d9875eb9e5e567821e03
sha1:0989991a300400d0d650d42ae5dfbe5b03797589

日記/2010/01/03/ldオプションの--start-group,--end-group  

所有者: msakamoto-sf    作成日: 2010-01-03 21:31:36
カテゴリ: C言語 

が何なのか不思議だったのですが、ちょっと調べたらinfoにも載ってるしmanにも出てた。

http://www.jp.freebsd.org/cgi/mroff.cgi?sect=1&cmd=&lc=1&subdir=man&dir=jpman-6.0.0/man&man=ld
上はFreeBSD 6.0のmanページなんですが、CentOS5.2のldのmanページには出てなかったんですよね・・・。
NetBSD1.6/CentOS5.2では共にldのinfoページに出てました。

仕組みとしては上記manページの次の一文が端的に表していると思います。

アーカイブをグループ化すると、すべての可能な参照が解決されるま で、
それらのすべてのアーカイブは繰返し検索されます。

とりあえずこれで、staticリンクしようとした時のldのオプションは分かりました。

$ gcc -Wall -static -v -o hello_static hello.c
...
/usr/libexec/gcc/i386-redhat-linux/4.1.2/collect2
 -m elf_i386
 --hash-style=gnu
 -static
 -o hello_static
 /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o
 /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crti.o
 /usr/lib/gcc/i386-redhat-linux/4.1.2/crtbeginT.o
 -L/usr/lib/gcc/i386-redhat-linux/4.1.2
 -L/usr/lib/gcc/i386-redhat-linux/4.1.2
 -L/usr/lib/gcc/i386-redhat-linux/4.1.2/../../..
 /tmp/ccMRvVHp.o
 --start-group
  -lgcc
  -lgcc_eh
  -lc
 --end-group
 /usr/lib/gcc/i386-redhat-linux/4.1.2/crtend.o
 /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crtn.o

あとは普通にダイナミックリンクでコンパイルした時の"--as-needed", "--no-as-needed"をまた後日調べてみたいですね・・・。".dynamic"セクションのDT_NEEDEDと関連するところまでは分かったのですが、具体的な部分がまだ理解し切れてない。

$ gcc -Wall -v -o hello hello.c
...
/usr/libexec/gcc/i386-redhat-linux/4.1.2/collect2 
 --eh-frame-hdr
 -m elf_i386
 --hash-style=gnu
 -dynamic-linker /lib/ld-linux.so.2
 -o hello
 /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crt1.o
 /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crti.o
 /usr/lib/gcc/i386-redhat-linux/4.1.2/crtbegin.o
 -L/usr/lib/gcc/i386-redhat-linux/4.1.2
 -L/usr/lib/gcc/i386-redhat-linux/4.1.2
 -L/usr/lib/gcc/i386-redhat-linux/4.1.2/../../..
 /tmp/ccPygftP.o
 -lgcc
 --as-needed -lgcc_s --no-as-needed
 -lc
 -lgcc
 --as-needed -lgcc_s --no-as-needed
 /usr/lib/gcc/i386-redhat-linux/4.1.2/crtend.o
 /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../crtn.o

プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-01-03 21:39:41
md5:1c12c29e0ab2e7b06ce433eca2df2253
sha1:3ada6fe209bb0db9682811c5b1666c1f5b16746c

C言語系/ポインタ・配列の定義と宣言メモ1  

所有者: msakamoto-sf    作成日: 2010-01-03 18:51:35
カテゴリ: C言語 

「エキスパートCプログラミング」を読んでいたら、ポインタ/配列として定義したオブジェクトを別のファイルで配列/ポインタとして宣言すると動作がおかしくなるよ、誤解してるよ、という部分があったので、ちょっと面白そうなので試してみた。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-01-03 18:55:26
md5:817bfd9dbc699ddf8f9d48ed828f3512
sha1:a00f21c9780394ad55acc1d65e1bfe6585b702b5

日記/2010/01/02/C言語のJIS規格書  

所有者: msakamoto-sf    作成日: 2010-01-02 18:03:06
カテゴリ:

を入手しようと思ったけど、画像ファイルのPDFになってて"しおり"は設定されてないしで、あんまり電子ファイルで持っていても意味無い感じだったのでやめた。規格書片手に読もうと思ってたC言語本があるのだけれど、そちらも元々は英語の本なので、JIS規格書ではなくISOワーキンググループの出してる規格書ベース。で、ISOの方のISO/IEC 9899 規格書のPDFはちゃんとテキストデータとして選択コピーや検索できるようになってるし、"しおり"も設定されてるので、いいよもうこっちで。

というかJIS規格書、Adobe ReaderでJavaScriptONになってないと真っ白い画面が表示されるようになってるし、ダウンロード出来ないようになってたし。(プログラム使って無理矢理ダウンロードしてみたら、勝手にどっかと通信して「ダウンロードしての閲覧は出来ません」とか怒られた)


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-01-02 18:08:53
md5:0b8d55cf7fbd0b9e47a9fc99269c6009
sha1:559aad803f8d555498c12f07af1bbf6faf8ff6d8

日記/2010/01/02/NetBSD(1.6)までインストールする羽目に。  

所有者: msakamoto-sf    作成日: 2010-01-02 14:51:04
カテゴリ: BSD 

FreeBSDのCVSupローカルミラーサーバも構築し、4.4→4.5へのCVSup使ったアップグレードにも成功。
ようやく デーモン君のソース探検―BSDのソースコードを探る冒険者たちのための手引き書 (BSD magazine Books) にとりかかれる、と、2004年に購入以来ずーっと本棚の肥やしになっていた本書を取り出してみたら。

対象BSDのソースがNetBSD 1.6だったよ・・・。

ということで、BSD Magazineのバックナンバーを掘り起こしてNetBSD 1.6を取り出してインストールする羽目になった。まぁホストOSはあんまり関係ないとは思うけど(要はCVSで取得したソースが手元にあればよいのだから)、折角なのでインストールに挑戦。これでFreeBSD/NetBSD/OpenBSDの3種類全てインストールを経験することになる。

以下、インストール後に最低限度環境整えたメモ。"The NetBSD Guide"見れば大体載ってた。
http://www.netbsd.org/docs/guide/en/index.html

・vigr、wheelに"root, foobar"としたらNG。空白いれたらアカンかったわ・・・。

・キーボードがデフォルト英語101キーボードになってて、インストール時も選択の余地が無い。
→"The NetBSD Guide" の "5.8. Changing the keyboard layout" 参照。

wsconsctl -k -w encoding=jp

で一時的に修正。起動時に設定したければ、/etc/wscons.conf で

encoding jp

を記述。

・ntpdateをシステム起動時に実行する:"The NetBSD Guide"の "29.2. The Network Time Protocol (NTP)" 参照。

「ソース探検」読むのであれば、この位で問題ない筈。あとpkgsrc展開してbashとかtcsh辺りを入れてお仕舞い。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-01-02 15:04:35
md5:0532810243c5daf40b0ad0cdd796746b
sha1:fa63f330063b5197f14c1accc72900d0e00d9b72

技術/BSD/FreeBSD4.4自分用メモ  

所有者: msakamoto-sf    作成日: 2010-01-02 14:25:51
カテゴリ: BSD 

自分用 FreeBSD 4.4 メモ

4.4BSDを基本としているので注意。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-01-02 14:29:03
md5:62acd12b9c5945ef62452c06ca875458
sha1:47da17f928e6c93d69e06ec9118b66f3613100a8

日記/2009/12/31/2009年のまとめ  

所有者: msakamoto-sf    作成日: 2009-12-31 23:32:54
カテゴリ:

個人的に一際変化が激しい一年でした。転職して、人間関係でメンタルを壊して、たった3ヶ月で退職したりしてます。

"日記/2009/"で始まるページの一覧から、今の状態に至る伏線と思えるエントリが幾つか見つかりました。

総じて、「Webシステム開発の世界にこのまま居ても、自分なりの幸せ状態にたどり着けるのか」という疑いに支配された一年でしたし、この疑い自体は未だに消えません。

技術面で振り返ってみると・・・

  • YakiBikiを自分で使うようになったのと、2002年からの過去記事を整理完了。
  • JavaScriptを結構勉強した。
  • Trac, Redmineなどを使ったりインストールしたり。
  • Python勉強して、Webページの画像収集ツール作ってメシウマ状態(結構便利)。
  • 実行時にクラスを差し替える"clas3hift"を作ったり。
  • アセンブラやLinuxカーネルなど、前から気になってた/本棚の肥やしになってた本を消化したり。
  • OpenBSD, FreeBSDに手を出したり。

あっちゃこっちゃしてます。が、アセンブラ・Linuxカーネル・BSD系はある程度自分なりの道筋があって、その上で着手しやすそうな本だったり、気分的に面白そうな本を順繰りに消化してます。来年にはその辺の知識を全てつなげられ、何か面白そうなネタ記事にまとめられればなと思います。

今年の11月などは精神的に相当落ち込んでました。

そんな精神状態で、やぶれかぶれでセキュリティ会社に面接に行ったりして撃沈したりしました。
今年は色々と人と関わったな・・・ということで、公私ともに色々と沢山の人に迷惑かけたり、助けて貰ったりしました。ありがとうございます。
ひろさちやの仏教本にも随分助けられました。というか、ひろさちやの仏教本に出てくる「中道」「空」「布施」のお話と出会ってなかったら相当ヤバイ状態になっていたと思います。
仏教の考え方は、意識の話では最新の脳科学に通じ、ライフスタイルではコーチングや「うつ」「適応障害」への対処法に通じるという具合に、今でも充分通用します。

と言う辺りでhappy new year.


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-12-31 23:59:44
md5:7a18a20a9615ddeefcebe3607e481e90
sha1:00fef4bf363e3d72f08437b4a06a7b1696592bbf

日記/2009/12/31/FreeBSDでローカルのCVSupサーバを構築  

所有者: msakamoto-sf    作成日: 2009-12-31 19:48:10
カテゴリ: BSD 

昨晩にかけてやってみました。VMwareで専用の仮想マシンを1台作成し、8GBほどのHDDにして手元に取りあえず転がっていた4.4BSD(古っ)を入れ、"/home"を6GBほど確保しました。

本当にCVSup「だけ」動いていれば良いので、インストール直後のほやほやマシンに、とりあえず cvsup パッケージを入れます。
続いて、ports/net/cvsup-mirror を入れます。(インストール時にportsも展開するよう指定済)
ちなみにMakefileを見ると、なんでパッケージになっていないのか(NO_PACKAGE)について "too interactive" とのこと。

# cd /usr/ports/net/cvsup-mirror
# make

...

Master site for your updates [cvsup-master.freebsd.org]? cvsup.jp.FreeBSD.org
How many hours between updates of your files [1]? 168
Please answer 1, 2, 3, 4, 6, 8, 12, or 24
# 一週間で済まそうとしたら、24時間以内じゃないと駄目と怒られた。
How many hours between updates of your files [1]? 24

...

Do you wish to mirror the main source repository [y]?(そのままRETURN)
Where would you like to put it [/home/ncvs]?(そのままRETURN)
Do you wish to mirror the installed World Wide Web data [y]? n
Do you wish to mirror the GNATS bug tracking database [y]? n
Do you wish to mirror the mailing list archive [y]? n
# WWWやbugtrack, mlなどは要らないので"n"にしときました。

...

# 以下は全てデフォルト、つまりそのままRETURN入力。
Unique unprivileged user ID for running the client [cvsupin]?
Unique unprivileged group ID for running the client [cvsupin]?
Unique unprivileged user ID for running the server [cvsup]?
Unique unprivileged group ID for running the server [cvsup]?
...
Syslog facility for the server log [daemon]?
Maximum simultaneous client connections [8]?

で、うっかりただの"make"にしちゃってたので、この後 "make install" へ。

# make install

...
(上で指定したユーザーとグループを作るか訊いてくるので、"y"にしとく。)

...
Would you like me to set up the syslog logging [y]?(そのままRETURNにしとく。)
Setting up server logging in "/etc/syslog.conf".
Creating "/var/log/cvsupd.log".
Giving syslogd a kick in the pants.
Adding cvsupd log entry to "/etc/newsyslog.conf".
Done.

Would you like me to set up your crontab for updates every 24 hours [y]?
Scheduling updates every 24 hours in "/etc/crontab".
Done.  The first update will be 5 minutes from now, at 21:32.
The cvsupd server will be started automatically after the first update,
and whenever you reboot.

You are now a FreeBSD mirror site.
===>   Registering installation for cvsup-mirror-1.2
===>  SECURITY NOTE:
      This port has installed the following startup scripts which may cause
      network services to be started at boot time.
/usr/local/etc/rc.d/cvsupd.sh
...

cvsup-mirrorのinstall終了の5分後、21:32に最初の更新が始まることになります。
この段階で、"/etc/crontab" に次のようなエントリが設定されていました。

32 21 * * * root /usr/local/etc/cvsup/update.sh

そのまんまです。最初の更新が終われば、このエントリはコメントアウトしてしまいます。というのも、以降は「同期したい時だけ」手動で "/usr/local/etc/cvsup/update.sh" を実行することにしとくからです。VMware内での実験用ですし。

で、昨晩は21:32から最初の更新が始まり・・・終わったのが、日が変わって02:30前後。ADSLで速くもなく遅くもない程度の速度だと思っていますが、それで大体5時間強かかる感じです。

ディスク容量ですが、"/home"が "/home/ncvs" でCVSupミラー専用という状態で以下の使用量になりました。

# df -h
Filesystem    Size   Used  Avail Capacity  Mounted on
...
/dev/ad0s1e   6.3G   3.9G   1.9G    67%    /home

6G用意しておいて正解でした。もう8-RELEASEまで到達しているソースコードのCVSup用データなので、それなりに巨大です。

では続いて、ちゃんとサーバとして動くか確認してみます。とりあえず同一マシン内の適当なディレクトリに、CVSupサーバを自分自身にして適当なコレクションを取ってこれるか確認してみました。

実験用と言うことで、"/root"の下にcvsupのDB用ディレクトリ(cvsup_test_db)と、ソース展開用のディレクトリ(cvsup_test_root)を作ります。

# cd
# mkdir cvsup_test_db
# mkdir cvsup_test_root

"/usr/share/examples/cvsup/standard-supfile" をコピペし、編集します。

# cp /usr/share/examples/cvsup/standard-supfile test-supfile
# vi test-supfile
...

"test-supfile"の中身は、こんな感じにしてみました。

# 接続先は自分自身
*default host=localhost

# cvsupのDBディレクトリ。
# この下に"sup"ディレクトリが作成され、その中にDB(ファイルリスト)が作成される。
*default base=/root/cvsup_test_db

# ソースコード展開先ディレクトリ。
# この下に"src"ディレクトリが作成され、その下に展開される。
*default prefix=/root/cvsup_test_root

# 4.xの開発ツリーから取得。(FreeBSD 4-STABLE)
*default tag=RELENG_4

# この辺はもともとあったのをそのまま。
*default release=cvs
*default delete use-rel-suffix
*default compress

# 軽めのソースツリーで試したいので、
# とりあえず"/etc"ディレクトリのコレクションを指定。
src-etc

cvsupを実行してみます。

# cvsup test-supfile
Connected to localhost
Updating collection src-etc/cvs
 Checkout src/etc/MAKEDEV
 Checkout src/etc/MAKEDEV.local
 Checkout src/etc/Makefile
 ...
 Checkout src/etc/termcap.small
 Checkout src/etc/usbd.conf
Finished successfully

無事、"cvsup_test_root/src/etc" の下に、etcディレクトリやファイル群が展開されました。
"cvsup_test_db/sup"の下にも、"src-etc"コレクション用のデータファイルが作成されていました。

# cd cvsup_test_db/
# ls
sup/
# find .
.
./sup
./sup/src-etc
./sup/src-etc/checkouts.cvs:RELENG_4

この後、test-supfileの"tag"を、"RELENG_4_11"とか"RELENG_4_10"とかにしてcvsupしてみると、ちゃんとそのCVSタグの時点でのソースツリーに切り替わってくれます。

最後に、VMware仮想マシンで用意していた別のFreeBSDマシンで、同様のsupfileを用意してsrc-etcを展開出来ることを確認できました(詳細省略)。

このローカルCVSupサーバを使って、年明けはFreeBSDの"make world"の練習でもしてみようかと考えてます・・・。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-12-31 20:49:48
md5:892a1a3acb09dd0a6bb695831fa18969
sha1:4c3f999f850bffa48a43a1214798aff004b063e0

TODO/YakiBiki/1.0.0  

所有者: msakamoto-sf    作成日: 2009-01-12 20:24:14
カテゴリ: TODO YakiBiki 

YakiBiki 1.0.0 目安TODOリスト

Windows上でのtar.gz圧縮は避ける事。ツールによってファイル名がおかしくなったり空ディレクトリが無視されたりして、トラブルの遠因になりうる。

libs/config.php の _YB('yb.version') を忘れずに更新する。→config.phpよりは、init.phpへ移した方が良い?

SVN Repository Browser : http://yakibiki.svn.sourceforge.net/viewvc/yakibiki/

メイン目標

  • WebUIに関する、出来る範囲でのHttpUnit等によるsetupからの正常形テストルートの自動化
  • メールによる報知の内容の充実。
    • 文面や新旧の添付ファイルなど。
  • 外部認証機能対応(TypePadなどOpenID系)

細かい機能追加・調整

  • backupモジュールで、umask()を一時的に好みの値に変更してバックアップファイルを作れるようにする。
    • 現在使用中のレンタルサーバの都合で、config.php中でumask('0077')にしてしまっているので、そのままだとapacheユーザ以外読めなくなってしまう。
      • backup/dispatcher.php中に直接一時的にumask('0070')とかにするようハードコードしてしまってる。
  • 見出し書式で表示する時、outlineプラグインが同時使用されていたら、各見出しにoutlineプラグインによる見出し一覧へ戻れる矢印リンクとかがあれば、長めの文章であっちの見出し/こっちの見出しと行き来する時弁かも。
  • yb_Session::hasRole(), isAuthenticated()を利用するよう修正。
    • 怖くて消せない・・・。
  • changelog、直前のchangeログを編集ボックスに予め表示させておく。
    • これ、バージョン番号を変えずに上書きする時に、クリアされてると前のchangelogまで消えてしまうので。
    • どうしても欲しい機能であれば追加。

BUG FIX

  • datainfoモジュールで、非オーナー条件での作成日が内部作成日時になっていて、表に出す作成日になってなかった。

プレーンテキスト形式でダウンロード
現在のバージョン : 11
更新者: msakamoto-sf
更新日: 2009-12-31 16:44:26
md5:48a2a98aa4c7761df0a264e1c4800bb0
sha1:6aa2b566bd4e934396b7b04b5af22459b8016064

日記/2009/12/24/Twitterに続いてAmazonもDNS攻撃受けたか・・・  

所有者: msakamoto-sf    作成日: 2009-12-24 21:59:34
カテゴリ: セキュリティ 

利用者が多いだけに、被害も大きいのだけど・・・SaaSとか大規模にAPI公開を展開しているTwitterとか、道連れ率、パねぇwww


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-12-24 22:04:12
md5:52aadd5a629613e4dd57678b53d0dfa2
sha1:026acbdabc22f23463683e67a113b2d4b3376863