@gamellaをフォロー - 過去記事一覧はこちら
2006-04-23
岩盤浴、行ってきたよ
基本的にanan世代の僕ですが、同期のカヨコにも昔すすめられていた岩盤浴に彼女と行ってきました。
- 岩盤浴 Spa KARAKARA
といっても、男女別々の部屋なわけですが。なんでも「天照石」と呼ばれる石を砕いて、プレートにしたものの上に、タオルを敷いて、20分の岩盤浴を3セット60分行います。値段は1800円とかなり高めです。ただ、相場を調べたら、どこのお店もそれくらいなので、特別、ここが高いというわけではなさそうです。岩盤浴を行う部屋の中は薄暗く、湿度は高め(80%くらい)、温度はそこそこ高め(たぶん40度くらい)です。ヒーリング音楽が流れています。
この1セットが、うつぶせ5分、仰向け10分、休憩5分で構成されます。最初の1セットはそこまで汗をかかなかったのですが、2セット目からの汗の量が半端なかったです。もう、人間、ここまで汗をかくのかと思うくらい汗がでて、受付でもらった500ccのペットボトルを飲み干してしまいました。ほえー。
出てくる汗も身体の毒素が抜けていく感じのスポーツで流す汗とは質の違う汗です。受付では、岩盤浴で流す汗はきれいで、保湿効果も高いなんて行っていましたが、俺の場合、かなり毒素を含んでいる感じがします。いうならば、どくどくゾンビです。
そんな岩盤浴ですが、基本的に、暖かい石の上にタオルを敷いて寝てるだけなので、ひまです。かなりひまです。頭の中で、ずっと金曜日にはまったプログラミングのことをかんがえていましたが、ついさっき解消しました。ハッピー。
うーん、値段的に少し高めなので、他の人にはあんまりおすすめしませんが、じっくりゆっくり大量に汗をかくとかなり体調が整えられる感じがするので、最近全然汗かいてないなーっていう人にはおすすめです。僕は、最近スポーツをしていなかったので、かなりリフレッシュできました。ただ、500円でスーパー銭湯にいって、低温ハーブ入りスチームサウナに1時間いるのと効果はあんまり変わらない気はするので、今はやりの岩盤浴を体験してみたいって人におすすめですね。
僕は、Cのポインタを整数に変換したかったんだよね
実は、恥ずかしながらハードウエアに近い部分でのプログラミング経験がほとんどありません。そんなわけで、かなり会社では苦労しているのですが、金曜日にソースコードを見ていてすごい謎に思っていた部分に、「いやなブログ」がぴたっとはまる解説をしてくれていてとても助かりました。
- Cのポインタを整数に変換する
http://0xcc.net/blog/archives/000113.html
Cのポインタを整数に変換したいときがあります。このとき問題になるのは、ポインタのサイズが int と同じとは限らないということです。たとえば、 x86_64 の 64ビットのバイナリでは sizeof(int) = 4, sizeof(void *) = 8 となります。ポインタと同じサイズの整数を使いたい場合は C99 で導入された stdint.h で提供される intptr_t または uintptr_t を使います。
ここに書かれていたことと全くおなじことをやっていて、おもいっきりはまっていました。64bit CPUでびっくりするくらい何も考えず、いつもの感覚でuint32_t型でポインタを整数で受けており、メモリアドレスが合わずにメモリ参照ができなくてはまっていました。
私の場合、C++ のプログラムで void * から直接 uint64_t にキャストしようとしてはまりました。次のプログラムを x86_32 の環境でコンパイルして実行すると 80000000 ではなく、 ffffffff80000000 が表示されます。
まさしく、この状況です。もう、笑ってしまうくらい状況が一致しています。ついでですので、だれか、volatileと__attribute__(aligned(128))の説明もお願いします。
マルチスレッドとか割り込みがある場合は、
最適化の是非が局所的なコンテキストで
決定できないんで、コンパイラが勝手に最適化
しちゃうと動作がおかしくなることがあるっス。
そんなときに使うっス。
aligned属性は変数とかをメモリの区切りの
いいところに配置しろって指示っス。
区切りの悪いところに配置されるとメモリ転送が
1回でできなかったり、エラーで落ちたりで
よくないことが起こるっス。
てかハードウェア寄りプログラミング超やりてぇー!!
ばりばりチューニングしたいですが何か?w
説明ありがとうー。俺もなんかそれを頭ではわかってるんだけど、実感としてどういう風にコンパイラが振る舞うのかがちょっとあやしいんだよね。まぁ、地道に勉強するしかないですな、このあたりの知識は。
alignedは、SIMDを使うときに使ったなぁ。
128-bitのデータを扱うときに、たとえばfloat4つを連続したデータとして保持したいときにalignedでマークするのよね。たしか。