Memo

211 : 指矩(埼玉県) :2010/03/05(金) 16:54:07.76 ID:k55FjGkZ
不動産屋に勤めてる俺がアドバイス
とにかく何を差し置いても防音
これ以外に無いと言っても過言じゃない
隣人トラブルで呼び出される9割以上がこれ
セックスの喘ぎ声は論外として、歩く音、昼間の掃除機の音ですら俺の担当物件で傷害事件になった事がある
スーパーとかコンビニとか駅から遠いと言っても気になるのは最初だけ
こういった一定距離一定時間の問題ってのは確実に慣れる
だけど不定期不定音量である音の問題は慣れない
昔はコンクリ打ちっ放し壁の上から壁紙を貼ってる物件が多かったから一発で防音かどうか分かったが、今は法改正でそれが判別できなくなった
「壁紙・コンクリ・壁紙」って構造だった物が、「ボード・除湿剤・コンクリ・除湿剤・ボード」に変わった
だから実際は奥にコンクリが入っているのに、壁を叩くとボード独特の軽い音がする、見かけ上は壁の薄い物件だらけになった
これはどういう構造になってるのか不動産屋に聞くしかない
建築図面引っ張り出さなきゃならんから大抵の業者は調べるのをイヤがるか、適当に「コンクリ入ってると思いますよ」と返答してくる
でもここできっちり答えないような業者だと、トラブルが起きた時もこの調子
家を探すのより何より、まずは時間掛けてまともな業者を探すべき
不動産屋の大半は、カネさえ入ってくれば住人がどうなろうと構わないヤクザがらみってのを忘れちゃいけない
217 : 画鋲(香川県) :2010/03/05(金) 16:56:46.92 ID:A8MD4DYf
»211
まともな業者を探す基準は?
219 : そろばん(東京都) :2010/03/05(金) 16:57:56.22 ID:SRHgLck4
»211
ていうか、良い部屋ってどう見つけるの。
ネットで良いの?大手(アパマンとか)で良いの?
235 : 指矩(埼玉県) :2010/03/05(金) 17:06:02.51 ID:k55FjGkZ
»217
トラブルが起きた場合の対処を前もって聞く
専門の解決部署を設けてる大手ならそれを伝えてくる
町場の小さな業者だと、客をつなぎとめるのに必死でちゃんとやる業者と、そういった事をしないから小さいままの業者に分かれる
だから、具体的にどう対処するのかを聞く
「騒音トラブルの時はどうするか?」と聞かれて、
「それはこっちで注意する。トラブルになるので客同士では話し合わないで欲しい。必ずこっちに連絡して」って業者なら信頼して間違いない
「みんな多少の音は我慢して住んでますからねぇ」なんて所は100%駄目
普段からちゃんと対応してる業者は具体例をスラスラ挙げるが、クソ業者は何もしないから解決の具体例を挙げられない
»219
いい部屋って言ってもデザイン重視か施設までの距離重視か防音重視かで変わるから一概には言えん
でも絶対に一度は現地に行かなきゃ駄目
汚いところとかヤバイ所の画像は広告打たないからw

カジ速Full Auto:1人暮らしの部屋選びで重視するのって何?洗濯機置き場は必須だよな (via exclusive9) (via uessai-text) (via fixika) (via futashika) (via takaakik) (via petapeta) (via ipodstyle) (via shrineroof) (via sunao) (via jinon) (via otsune) Via otsune tumblr まとめサイト 画像保管庫Q

金玉はとっても凄い設計なんだぞ。無駄に。
カウンター熱交換システムを搭載している。


具体的には、金玉へいく血管と、金玉から帰ってくる血管が螺旋で絡みついている。
これにより、金玉へいく血は、金玉から帰ってくる血と熱交換をし、体温より下がる。
逆に体内に入っていく血は、金玉へ行く血より熱を奪い、体内温度に近い温度になる。

      37℃           35℃ 金玉へ→
======================================
          ↓熱↓熱↓
======================================
←体内へ 36℃          34℃

さらに凄いのが玉袋。この玉袋は寒冷時には体の方に収縮して冷えすぎないようにし
暑い時には伸びて体から遠ざけ、表面積を増やし熱を発散する。

2ちゃんねる実況中継 : 金玉はとっても凄い設計なんだぞ (via fyfyfy) (via petapeta) (via otsune) Via otsune tumblr まとめサイト 画像保管庫Q


2010年2月28日

一昨日、Erlangのことを書いたので、そのErlangのこと。Erlangを初めて知ったのは当方が学部か修士学生だった頃でした。普通のコンピュータサイエンスの学生であればErlangを知ることはなかったと思いますが、所属した研究室で某通信機器メーカとの産学共同研究に関わることになりそのテーマが交換機(それもC-TRON)の制御のためのオブジェクト指向言語だったのです。当時の交換機はChillなどの専用言語を使っていたわけですが、それをオブジェクト指向風に書きたいというものでした。そのため欧州の大手の通信機器メーカEricssonが作った通信用記述言語としてErlangをたまたま知ったというのが実状。

ちなみに昨日、ErlangにはCSP的なガード記述があると書きましたが、これはErlangの歴史を考えれば当然。詳しくは設計者の一人がErlangの歴史に関する論文を書いているので、そちらをご覧いただければいいのですが、せっかくなので当時の状況などを少々。

通信プロトコルの開発では、OSI的な世界では、まず仕様をきっちり決める。きっちり決めると言っても自然言語で仕様を書くと解釈にブレが出るので、数学的に裏付けられた方法で定義をする。そうした定義方法のひとつが形式仕様記述言語。簡単に言えば数学的に定義されている言語を使ってプロトコルを定義するという方法。その形式仕様記述言語にはいろいろあったのですが(過去形)、そのなかにCSPにデータ構造を導入したような形式仕様記述言語Estelleがあって、そのEstelleにより記述したプロトコル仕様を実装するためにEricssonはConcurrent Pascalを作っていた。ErlangはそのEricsson版のConcurrent Pascalの影響を受けたというか、それを拡張して実装したはず。なんでこんな事情を知っているかというとEstelleを含む通信仕様記述言語のISO委員だから(Estelleの拡張版の規格化では多少の貢献があったりします、ちょっと自慢してみたり)。

まぁ、当方の話はどうでもいいのですが、ErlangがCSP的な記述ができるのは当然というか、Erlangの前身の言語がCSP的な記述の実装言語ということ。あとElrangは交換機用言語として設計されたこともあり、実行単位の粒度の違いは気をつけた方がいいかもね。交換機の実行モデル(そんなものがあったとはもえないが)は実行単位が小さい、つまりスレッド粒度が小さいので、通常ではスレッドに割り当てなかったような小さい処理もスレッドに割り当てた方が実装しやすいし、スループットもあがるのですが、これをサーバ環境で動かした場合に実用になるかは別問題。そうそう元交換機技術者の方がErlangはうまく使いこなせるかもしれませんね。ただ、Erlangという意味ではないですが、一般論として交換機用の言語は弱いところもあります。交換機の世界というのはエラーハンドリングを含めてハードウェア的に多くのことが解決される世界、TCP/IPのようになんでもソフトウェア的に解決しないと世界には向かないのです。Erlang好きの人に反論されるそうなので、ちょっと補足しておきますが、いまのErlangは交換機だけではないのでしょうが、癖がある言語である以上は記述対象がErlang向きか不向きかを見抜く眼力に必要だと思います。

まぁ、こんなわけでErlangというと20年前の古い言語という印象でしたから、最近になってErlangという名前を見聞きしても、当時のErlangとは違う言語としばらく思い込んでいたぐらい。なお、Erlangがこの時代になって流行る理由はいろいろあるのでしょうが、Erlangは交換機プログラムの記述として開発されたことを考えると、いまはTCP/IPなどの通信プリミティブが隠蔽されて、ある意味でいまのシステムは往年のチャネルベース通信プログラミングに近い世界になっているからかもしれません。実はErlangそのものよりも、Erlangがいま脚光を浴びる背景の方が断然興味深いです。

2010年2月27日

昨日の続きです。当時の並行オブジェクト指向で議論されていた話題に並行処理の定義方法があります。ちょっと歴史を説明しないといけないのですが、ひとつのプログラム内に並行処理をいれると効率的な処理ができる一方で、前述のように排他制御や同期処理をしないといけないのでプログラミングがたいへんになります。初期のUnixはそれを嫌って、各プロセスに割り当てるスレッドは高々一つと制限しました。そのうえ並行処理を行うときはプロセス自身を複製(fork)するという方法をとって、並行実行単位間の共有変数を排除。この結果としてはUnix向けプログラミングは簡単化させて、Unixの普及の要因の一つになったと思います。ここで興味深いのはUnixの前身のMulticsではプログラムの並行実行、つまりマルチスレッド実行を許していたので、Unixはプログラミングのシンプルさ・容易さのために、あえて低機能化させたといえます。

並行処理もif文やwhile文と同じ制御フローですから、これらの制御フローと同様に構文として記述すべきという考え方がありました。プログラムのブロック文に対して明示的に並行実行を制限する方法です。例えば二つのブロックは並行実行されるとかね。この場合はプログラマーがスレッドの起動を含めて定義することになり、きめ細かい制御はできますが、(モニターなどを導入するにしても)共有変数などのを管理するのは容易ではありません。

また、構文的な記述ですが、非明示的に並行処理を記述する方法もいくつか導入されました。例えばAdaなどはCSP的なガード付きコマンドという概念を導入して、スレッド実行可能な関数やサブルーチンに実行に必要な前提条件を定義しておいて、その前提条件が成立すると実行されるという方法をとりました。例えば通信データが届くと、所定のサブルーチンが呼び出されて実行するやり方。この方法ではスレッド起動そのものはシステム側に任せることになりますが、通信や制御のプログラムの場合はイベント駆動になることが多いのですが、この方法はイベント駆動的な処理では便利なので他の並行処理記述言語でも導入されました。最近でいうとGoもこれに近いプリミティブを導入しています。

ちょっと話題から外れますが、1990年前後に盛んに研究された並列Lispを含む並列関数型プログラミング言語では、関数単位にスレッドを割り当てました。これは関数の実行には副作用がすくないことを利用したわけですが、関数自体はどう呼び出されるかわからないので、並列度が上がりすぎるという問題を抱えていました。マルチコア時代は関数型言語の時代とかおっしゃる方は多いのですが、並列度を上げればいいというものでもなく、実際、スレッド数が多くなるとコンテキストスイッチのコストが大きくなります。それと歴史的に言えばプログラマーが並行実行を制御できない言語はベンチマークではよくても実システムでは向かないのですよね。だから最近話題になっている関数型言語による並列処理も同じ問題を抱えることになるでしょう。また、関数型言語だけではなく、手続き型の言語でも関数やサブルーチン呼び出し時に並行実行させるタイプもありました。もちろん、これら以外に並行処理の記述はいろんな方法がありますが、だんだんマニアックになっていくので、話を元に戻しましょう。

さて昨日は並行オブジェクト指向の話題だったので、話を並行オブジェクト指向に絞りますと、昨日書いたように当時の研究では複数オブジェクトは並行実行させるが、各オブジェクト内部は高々シングルスレッドとすることで、オブジェクト内部は逐次処理、オブジェクト間の相互作用として並行処理をさせる方法と、構文として並行処理を導入する方法が議論されていました。しかし、1995年頃に登場したJavaはスレッドそのものをオブジェクトとして扱う、つまりスレッド実行をオブジェクトとして導入して、そのオブジェクトに処理を渡すと並行処理されるという方法を導入しており、そのJavaの普及とともに並行処理の記述方法の議論は下火になってしまいました。昨日の話題にあげたScalaやErlangは結局、時計の針を戻すというか、Java登場以前にもどった感じなのですよね。

脱線しますが、Javaの並行記述は中途半端でしたね。スレッドそのものをオブジェクトとしたので、Java言語自体には並行記述と独立させることに成功したのに(ここまではよかった)、同期制御(synchronized)を言語側に導入してしまったので、並行実行はオブジェクトとして定義して、一方で並行実行の同期制御は言語として定義するということになっています。インターフェースに類似した方法で、クラス定義そのものとは別に同期制御を宣言できるようにしておくべきだったかもしれません。というのはクラス定義ではあくまでも機能要件を書くべきであり、同期などの非機能要件はクラス定義に埋め込まない方がいいので。

いずれにしても並行処理はプログラミングにおいては鬼門であり、多くのプログラミング言語は並行処理は避けていました。というのは並行処理というのはプログラミング言語では扱いにくいのです。つまり並行処理は実行に依存するのでプログラミング言語だけで定義できる世界ではなく、並行実行を表す計算モデルも考えないといけないのです。この並行計算モデルもたくさんあります(実は博士論文は並行計算モデルだったりします)。ScalaやErlangが流行るところをみると、CSPやActorモデルなどが再び脚光を浴びるのかもしれませんが、並行計算モデルとプログラミング言語の実装・実行とはギャップがあるので、並行計算モデルがあれば相互排除や同期の問題が解決するというものでもないのですよね。

2010年2月26日

コンピュータサイエンスの技術はある方向に振れると、しばらくすると逆の方向に振られることがあり、それを繰り返します。例えばいまはクラウドコンピューティングが流行っていますが、10年前はPeer-to-peerシステムが流行っていました。クラウドコンピューティングは多数のサーバで処理をさせるので分散システムの一種にもみえますが、サーバを一カ所に集めるという点では集中システムとしていいでしょう。すくなくてもPeer-to-peerシステムとくらべたら十分に集中システムですから。

最近、興味深いのはオブジェクト指向言語のScalaやErlangが話題を集めていることでしょうか。どちらもActor Modelをベースにしているそうですが、オブジェクト指向言語の歴史でいうと、Actor Modelなどの並行処理用オブジェクト指向言語の研究が盛んになったのは1985年からの6,7年ぐらいだと思います(Actor Model自身はもっと古いですが)。そして1990年後ぐらいから議論されてきた話題のひとつは、各オブジェクトは高々のひとつの実行スレッドとするシングルスレッド実行モデルと、一つのオブジェクトでも複数同時処理を許すマルチスレッド実行モデルのどちらがいいかというもの。

さてシングルスレッド実行モデルとマルチスレッド実行モデルは何が違うかというと、前者は各オブジェクトは能動的に処理してもよい、つまり各オブジェクトに高々一つのスレッドを割り当てるが、オブジェクト内部的には逐次プログラムですから、オブジェクト内部で排他実行や同期をしなくてもいいので、オブジェクトのプログラミングは楽になります。一方、マルチスレッド実行モデルでは各オブジェクトは能動的に処理されますし、各オブジェクトにも複数のスレッドが割り当てられます。このため処理効率はあがりますが、オブジェクト内部で排他実行や同期する必要が出てきます。どちらもメリットとデメリットがあるのですが、シングルスレッド実行モデルの代表格というのが前述のActor Modelでした。

ScalaやErlangなどの並行処理の記述性を重視した言語が、シングルスレッドモデルというか、Actor Modelを採用したのは当然の帰結なのですが、正直言って、1990年後の議論がリバイバルを見るような感じですね。(Erlangは試しで使った程度ですが)Scalaは実装につかったりします。ただ、新しいプログラミング言語というよりも、昔のプログラミング言語で書いているという感覚はぬぐえないのですよね。ScalaやErlangに関しては、しばらくして実装事例が増えるとともに、記述の容易さよりも性能を重視して、マルチスレッド実行モデルがもてはやされるのでしょうね。歴史は繰り返されますから。もちろん当方の予測を裏切るような展開を期待しておりますが。

むかしの話ですが、4年生になって研究室に配属されて初めて研究室にいったときに、最初にあった人が、たまたま通っていた大学に転がり込んでいたCarl Hewitt(Actor Modelの創始者)さんでした。まぁ、このあたりから人生が狂ったような気もしますが、いま考えるとすごい環境でしたね。ちなみに4年生の時に初めて電話で話した外人研究者はL.Lamportさんでした。大学で講演する予定があり、その日程をきくために電話をかけてきたようでした。英語がさっぱりわからず別の人にかわってもらいましたが。

佐藤一郎: Web日記 (2010年) (via kuenishi) Via amnesiac

—cp932 Windows 互換の文字コード変換、つまり CP932 や eucJP-ms 互換の変換を行います。具体的には、「∥~-¢£¬|」のような文字を Unicode へと変換した時に化ける問題や、 Windows の機種依存文字が変換できない問題は、このオプションを指定する事によって回避することができます。

Rubyist Magazine - 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv

このスクリプトではもう1つ新しい要素があります。 始め処理終わり処理のイディオムを yield を使った メソッドとして抜き出しているという点です。 このスクリプトでは今までそのまま書き下ろしていた、 ワークブックを開き、終了する動作を別のメソッドで定義しています。 def openExcelWorkbook filename filename = getAbsolutePath(filename) xl = WIN32OLE.new(‘Excel.Application’) book = xl.Workbooks.Open(filename) begin yield book ensure xl.Workbooks.Close xl.Quit end end
このようにすることで、始め処理と終わり処理を 近い位置に書くことができます。 始め処理と終わり処理は互いに関連しています。 その2つが近い位置にあると見通しが良い 分かりやすくスクリプトになります。 始め処理を行ったのちに必ずある終わり処理を行わなければ いけない状況というのは、多いものです。 このテクニックは応用範囲が広く覚える価値があります。

Rubyist Magazine - Win32OLE 活用法 【第 2 回】 Excel

module Worksheet def [] y,x self.Cells.Item(y,x).Value end
end
Worksheet オブジェクトの sheet.Cells.Item(y,x).Value という一連の 呼び出しで、y 番目の行で x 番目の列に対応するセルの値を 取得できます。最初の行は、1番目で、1から順に数え上げます。 なお、あまり知られていないかもしれませんが Ruby では [] メソッドに 対して、複数の引数を指定できます。

Rubyist Magazine - Win32OLE 活用法 【第 2 回】 Excel

ParseTree と同様にRuby のクラスやメソッドをパーズして Ruby の配列、文字列、シンボル、整数を使ったS式を返すライブラリ。 ParseTree と違い Pure Ruby で書かれている。

[Ruby] ruby_parser: 遠回りするかな

これは「価値観」そのものの問題なんだよ
つまり、今まで絶対的に正しく高尚だと信じていた価値観
「三次元の(現実の)女を愛し、結婚して、子を産み、生を育む」

に対して、

「それって何の価値もないんじゃね?」
「意味があるのか?」

と言われて、何も反論できないのが今の日本の現実なんじゃないかな。

結婚・恋愛ニュースぷらす:おい二次元専門男子 語りかけてくれて、遊んでくれるのは、生身の女性だけということを理解しろ (via shibata616) (via katoyuu) (via otsune) Via otsune tumblr まとめサイト 画像保管庫Q

カーソルの下の単語が最初
に現れる場所を、カレントファイルの中だけ検索し、その場所にジャンプするには、次
のコマンドを使います: gD ヒント: Goto Definition (定義に移動)。このコマンドはローカル(C 用語で”static”)
に定義された変数や関数を検索するのに便利です。例 (カーソルは”counter” の上): +-> static int counter = 0; | | int get_counter(void) gD | { | ++counter; +— return counter; } さらに検索範囲を狭めて、現在の関数の中だけ検索したい場合は次のコマンドを使いま
す: gd 現在の関数の開始位置から最初に単語が使われている場所が検索されます。実際に、行
頭が “{” で始まる行を後方検索して、その上の空行まで戻り、そこから識別子を前方
検索しています。例 (カーソルは “idx” の上): int find_entry(char *name) { +-> int idx; | gd | for (idx = 0; idx

Vim documentation: usr_29
135
To Tumblr, Love PixelUnion