[ カテゴリー » PC関連 ]

ラプターモデリング終了

blog20110706-3DCG_Raptor

ラプターLink 、ひとまずモデリング完了。後々微調整は必要になってくるでしょう。

主翼より下は平面が多いから楽かなと思ってましたが、こちらも甘かった。特に吸気口と排気口辺りがそれ自体複雑な曲面な上、隣接する胴体・主翼・尾翼が平面主体なためつなぎの部分に手間取りました。

吸気口周りとその横の胴体(操縦席部分)の間の隙間に至っては資料が手に入らなかったため、実物がどうなっているか不明。結局何もメッシュを貼ってないため正面からみると胴体内部まで吹き抜ける穴となっております。正面からの構図には使わないようにしようw

またあまり目立たない細部にこだわってしまい、メッシュが多くなってしまったのも時間がかかった理由。手の抜き方も覚えないといけないだろうなぁ。

次は着色(マテリアル設定)ですが、しばらくプラモデルを愛でるが如く、いろいろな方向から眺めて楽しもうかな。

[2011/8/1 追記] 続きLink

— posted by mu at 10:35 pm   commentComment [0]  pingTrackBack [0]

らぷたぁ描き描き

blog20110703-3DCG_Raptor

久々に3DCGを描く気になりました。前回描いたのは3年前Link 。ほぼ完全に忘れてしまったため、一からBlender操作を覚えなおしです。

前回よりも複雑なモデルに挑戦ということで、戦闘機F-22ラプターを選択。ステルス機はステルス性能を高める目的で機体を平面で構成する傾向があるため、比較的楽に描けるかなと思ったのですが甘かった。いざ描いてみると平面が多いのは胴体下部くらいで、多くの部分は他のジェット戦闘機にも見られるような流線型。これが飛行機かというほど平面で構成されたF-117Link にしておけば良かったなw

最初の一週間は下絵の用意、それから一ヶ月かかってようやく機体上面が出来上がり(と思ったら、垂直尾翼の根元に要修正箇所発見)。残る機体下面は比較的平面で構成されているので楽そうな感じがするのですが、ネットを探しても下絵に出来るような真下正面からという画像が入手しづらく、上面よりも勘でモデリングしなければならない箇所が多そう。その後色付け・照明設定と、まだまだ時間がかかりそうです。

[2011/7/16 追記] 続きLink

— posted by mu at 11:51 pm   commentComment [0]  pingTrackBack [0]

C#の[Oneway]

以前書いた.NET Remotingでの双方向通信Link 、サーバ側からクライアントにイベントを飛ばすという形で逆方向通信を行うものでした。

そこではクライアント側にあるイベントハンドラには[Oneway]修飾子を付けるように書いたのですが、実は意味が分かっていませんでした。文字通り一方通行であるということを指示するものでして、呼び出し側には返値・例外が返ってきません。まぁイベントですから返り値を求めることも少ないでしょうし、多くの場合では付けて問題ないかと。

余談。返り値のあるイベントハンドラを作ると最後に実行された(最後に追加された?)イベントハンドラの返り値がイベント発信側に渡るようです。 [参考] C# - 複数のイベントハンドラをセットしたメソッドを呼び出したときの戻り値 (おのでら氏)Link

ただ副作用あり。イベントハンドラが呼び出される前にサーバ側は次の処理にかかるようです。イベントが受け取られなくてもエラーを出しても知らん振りなのですから、次の処理にすぐさまかかった方がサーバ側のパフォーマンスは上がる。実際のイベントを.NET Remoting越しに処理するのは別のスレッド、おそらくスレッドプールに任されるのでしょう。

ここで短時間にたくさんのイベントを発信すると、イベントハンドラが呼び出される順番が変わることがありえると分かったのが昨日。スレッドプールのキューには順番通りに入っているのでしょうが、実行中に追い越しが発生すると思ってます。

[Oneway]と外すと全てのイベントハンドラが処理を終えるまで次の処理に進まないため、イベント発信を単一スレッドにやらせている限りは順番が入れ替わるということは防げます(受信終わるまで次のイベントが発信できない)。

ただしサーバ側パフォーマンスは落ちるでしょうし、クライアント側が死んでしまった場合サーバは延々と返り値を待つことになりますので、

  • クライアント側は受信したらすぐに処理を返して、実際の処理はバックグラウンドで行う
  • サーバ側はイベント発信処理をタイムアウト付き非同期処理する

などの対策が要るでしょう。[Oneway]付けとけばやってくれる非同期処理を自分でやることになる…

— posted by mu at 05:06 pm   commentComment [0]  pingTrackBack [0]

OpenVPN設定備忘録

blog20110507-VPNMap

OpenVPNを使って出先から自宅へアクセスするときの設定。

  • 基本的にはOpenVPN 2 HOWTO 日本語訳Link 通りに進める
  • IPアドレス
    • 出先からアクセスしたい自宅マシンたちには固定IPアドレスを割り当てる。必須ではないがDHCPだとかなり面倒になる。
    • 自宅と出先で異なるアドレス空間にする。でないと出先で192.168.0.cにアクセスしようとしても、出先ルータ直下の192.168.0.cへアクセスを試み、VPNが使用されない。
    • 自宅ルータが出先と同じアドレス空間を張っていてもよい。自宅マシンたちが出先とはかぶらないアドレス空間に属するIPアドレスを持っていればよい。図のように各マシンに複数のIPアドレスを割り当てるのがひとつの方法。
  • 自宅ルータの設定
    • 外部からのOpenVPN接続に対してOpenVPNサーバの適切なポート(通常1194)へフォワードする。
    • インターネット側のIPアドレス(my.global.ip.address)が固定で無い場合は、DDNSサービスなどを使用する。
  • 自宅OpenVPNサーバの設定
    • ファイアーウォールがOpenVPNの受信を妨げないように設定する。
    • Server系以外のWindows (XP, Vista, 7など)はIPルーティングを有効にするLink 。具体的にはレジストリHKEY_LOCAL_MACHINE のSYSTEM¥CurrentControlSet¥Services¥Tcpip¥Parameters¥IPEnableRouterの値を1にしてWindows再起動。これをやらないとOpenVPNサーバ(10.8.0.1)にしかアクセスできなくなる。
  • OpenVPNサーバ設定ファイル
    • push "route 192.168.1.0 255.255.255.0"を設定することで、自宅の192.168.1.0/24のマシンたちにアクセス可能。
    • port 1194
      proto tcp
      dev tun
      dev-node Tap1
      ca ca.crt
      cert myhome.crt
      key myhome.key
      dh dh1024.pem
      server 10.8.0.0 255.255.255.0
      ifconfig-pool-persist ipp.txt
      push "route 192.168.1.0 255.255.255.0"
      keepalive 10 120
      comp-lzo
      persist-key
      persist-tun
      status openvpn-status.log
      verb 3
      
  • OpenVPNクライアント設定ファイル
    • client
      dev tun
      proto tcp
      remote myhome.global.ip.address 1194
      resolv-retry infinite
      nobind
      persist-key
      persist-tun
      ca ca.crt
      cert mycert.crt
      key myhome.key
      comp-lzo
      verb 3
      

— posted by mu at 11:11 pm   commentComment [0]  pingTrackBack [0]

Linux /sbin/initが失敗する

ありがたいことに3/11の地震では自宅・会社共に目立った損傷はなかったのですが、災難はその後の計画停電と共に。シャットダウンを忘れたり、頻繁な電源On/Offのためか、2台のLinuxサーバーが立て続けに壊れましたorz

一台は完全にHDDがお亡くなり。幸いにも重要なデータ部分がRAID1運用されていた(というか/bootだけRAIDに入ってなかった)ので、OS入れなおして生き残ったパーティションをコピーして復帰。

もう一台が厄介。まずLinuxのソフトウェアRAID1(md)がホットスペアまで用意してあったにもかかわらず、一方及びスペアがRAID構成から抜け落ち片肺運転に。ドライブを追加しなおして起動しようとするとブートの初期で
Decompressing Linux...done
Booting the kernel
Red Hat nash version 4.2.1.13 starting
exec of init (/sbin/init) failed!!! : 2
Kernel panic-not syncing: Attempted to kill init ! 
なんてメッセージを出して起動しない。

ドライブ構成はこんな感じに全てソフトウェアRAID1で、LVMはなし。HDDはSCSI。

  • md0 100MB /boot
  • md1 1GB /
  • md2 4GB /var
  • md3 1GB /tmp
  • md4 20GB /usr

exec of init failedのエラーコード2は、/sbin/initが見つからないということらしいLink

さらにネットで調べたところ、(エラー番号2以外の場合も含め)/sbin/initが失敗するのは以下の理由がありそう。

  • /sbin/initそのもの、もしくはそれを格納するファイルシステムが破損している
    • fsckしてみる
    • 他の動くシステムから/sbin/initをコピーする
  • /sbin/initを格納するファイルシステムがマウントできない
    • /bootにあるinitrdファイル(一般的に拡張子img)が破損している
    • 同ファイルがソフトウェアRAID(md)・LVM・SCSI(aic7xxx)などのカーネルモジュールを含まない形で構成されている
    • タイミングの問題でデバイスの認識が失敗した

CentOSなどRHEL系ではカーネルオプション'quiet'を外して起動するとより詳細な情報が。

掲示板でよく見かけた回答は「mkinitrdを使ってinitrdを作り直せ」。やり方は

  1. LinuxのインストールCDをrescueで立ち上げるなど、ソフトウェアRAIDがマウントできる状態まで持っていく
  2. ドライブをマウント
  3. mount /dev/md1 /mnt
    mount /dev/md0 /mnt/boot
    mount /dev /mnt/dev
    chroot /mnt
    mount /proc
    mount /sys
    
  4. タイミング問題の場合はmkinitrd (実態はスクリプトファイル)にsleepコマンドを入れるなどする
  5. initrdを再構築
  6. mkinitrd /boot/(imgファイル名) カーネルバージョン
    

が、chrootを打ち込んだときに/bin/shが無いだとかPermission deniedだとかで失敗するorz さてどうしたものか・・・

[参考]

[2011/3/30 追記] SATA I/Fカード故障&ファイルシステム破損の複合だった模様。

  • SATA I/Fを交換しない限りOS再インストールでも/のマウント失敗
  • 交換してOS再インストールすると起動するが、/を以前(故障時に取ったバックアップ・fsck済み)のものに書き戻すとやはり起動せず
  • /bootと/以外を以前のものに書き戻すと起動するが、/usr/lib64以下に壊れたライブラリがいくつかある模様

OS新規インストールして、必要なファイルを個別にバックアップから書き戻すことになりそうです。/etcのバックアップファイルがダメージなしなら楽なのだけど。ちなみにOSを入れてあったのは今回故障したSATA I/Fとは別のSCSI I/F(Adaptec 29160)に繋いであったものです。

[2011/3/31 追記] 中盤加筆・修正、参考リンク追加

[2011/6/7 追記] なんてことはない、SCSIケーブルの接続不良だった模様。抜いて挿したら直ったという、教科書どおりの修復なり。でもSATA I/F挿さなかったらそれはそれで動いたんだよなぁ。どちらにしろ/以下OS関連のファイルはダメージを負っていたので、再インストールでした。

— posted by mu at 07:35 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0259 sec.
prev
2024.5
next
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31