メモの日々


2001年04月17日(火) 今週でおさらばやねん

WinCVS動いたがな。ログインしてチェックアウトするだけやん。簡単やん。でも画面の意味がまだよくわからんねん。

金曜日の午後に2階に行くことになったんやで。

時間があるのでチャットのプログラミングしてみたんやで。ちっとも進まへんがな。

発表はしないがな。星の王子様なんやね。nikki4946てのは意味不明やがな。この行が意味不明やん。


2002年04月17日(水) お見舞いに行く日

会社

  • 11:40 色々とやることがある。GのやつとノートPCの設定かな。ん、それだけか。会社のニュースサーバが応答しないみたい。

テレビ/本

  • 新宿鮫。やくざやくざ。

2003年04月17日(木) 神奈川の通り魔は逮捕

生活

  • 重い本を抱えて図書館へ行ったら休館日だった・・・。もー。
  • 今日から取り消し線には<s>ではなく<del>を使うことにしよう。MozillaとIE6ではきちんと表示されるようだ。
  • いかん、もう22時回っているやんけ。飯食わねば。

[life] 会社へ行く(2)

雇用保険の待機期間が明けたので、晴れて会社へアルバイトの契約をしにGo!。行ったらなんと担当者が不在。昨日の深夜にメイルで連絡が来ていたようだ。昨日はこの日に備えて早く(って言ったって24:30だが)に寝たのでメイル見ていなかった。帰ってからメイル確認したら24:31に来ていましたよ。うーむ。

でも契約の書類を作ることはできて、今日から時給生活者。

[life][退職] 雇用保険説明会へ行く

午後は雇用保険の説明会。受付で「雇用保険受給資格者証」を貰う。市民館の大ホールで行われ、大ホールが満席。世の中失業者だらけなのだ。おばちゃんグループが大量に居たけどあの人たちは何から失業したのだろう。

最初はハローワークの利用方法の説明。求人検索マシーンの利用時間は1回30分まで、全国どこのハローワークでも検索相談応募ができると。

次は雇用保険についての説明ビデオを30分鑑賞。ピンクの服を着たお姉さんが説明をし途中寸劇もある。不正受給の説明をしたお兄さんの口調に威厳があった。就職により引越しが発生する場合は手当てがでることもあるようだ。

最後に雇用保険についての補足説明。おれの行くハローワークは県で2番目に利用者が多いそうだ。だから混んでいる。次の認定日までに1回以上の求職活動をする必要があるが、この説明会への出席もカウントしてくれるそうだ。優しい。

おれの給付日数は120日で日当は8815円だった。フルに貰うと100万円くらいか、ふむふむ。隣の人の受給資格者証を盗み見したらその人もおれと同じくらいの給料貰ってたみたい。35歳でね。そんな人も多いのかな、ふむふむ。帰りに改めて回りを見回すと皆失業者なのでだらしない格好。おれだけ会社に行った関係でスーツを着ており浮いていた。

[c] プログラミングの禁じ手Web版 C言語編 (C MAGAZINE)

某日記より。鵜呑みにしてはいけないと。Javaのこういうやつってどこかにあったかな?

[java] Essential Java Styleのエッセンス(^^; (Maneuver Record)

おっと、早速あったぞ。ちょっと違うけど。TECHMemoより。今からざっと読んでみます。

ひー、目は通したけれど読むだけでは全く身に付かないよ。この中にもコメントの話題がありました。

やること

  • 風呂場の掃除
  • 再び銀行へ行きお金を降ろす

2004年04月17日(土)

[link] 翻訳の泉 (サン・フレア)

30回分の翻訳教室がある。ぼくは翻訳はしませんが。Radium Software Developmentより。

[web] RSS 1.0形式のデータをHTTPで送るときのContent-typeは? (結城浩の日記)

これを見て、今までサボっていたけど .htaccess に

AddType application/xml rdf

と追加した。

Wikiの方も何とかしたいが、AddTypeでは無理そうでどのように設定すればいいのかわからない。

[link] Jリーグ選手名鑑 (Jリーグをややイヤな目で見る方法。)

各選手に対するコメントがある。面白い素晴らしい。それでも明日はやってくるより。

[book] 数学をつくった人びと II (E・T・ベル)

4150502846 1937年の本。数学の天才達が苦悩しながらも成果を残していった様が生き生きと描かれている。本書は3分冊の2巻目で、ポンスレ、ガウス、コーシー、ロバチェフスキー、アーベル、ヤコービ、ハミルトン、ガロア、ケイリー、シルベスタが登場。中でも天才中の天才ガウスの章がページ数も多く楽しい。数式も出てくるが、そこは斜め読みでも問題ない。

数学のことなど考えなくなって久しいが、大いに刺激を受けた。4.5点。

やること

  • プリンタ処分
  • 靴磨き
  • 契約

2006年04月17日(月)

  • 今日はスーツを着ている。
  • 昨日は夕方眠ってしまったことにより夜中に眠れなくなってしまった。職場への出勤中立ちながらうとうとしてしまい大変危なかった。職場に着きコーヒーを飲んで少し復活。

[net] traceroute

tracerouteコマンドの挙動を勉強した。たいした話じゃないけど、せっかくだからメモ。

流れ

  1. IPヘッダのTTLフィールド(IPv6の場合はHop Limitフィールド)に1を設定したパケット(プローブパケット)を送信する。
  2. 1ホップ目のルータが時間超過ICMPメッセージを返してくる。
  3. 1〜2を3回繰り返す。
  4. IPヘッダのTTLフィールドに2を設定したプローブパケットを送信する。
  5. 2ホップ目のルータが時間超過ICMPメッセージを返してくる。
  6. 4〜5を3回繰り返す。

のようにしてTTLを増やしながらプローブパケットを送信していく。デフォルトではプローブパケットにはUDPが使われ(WindowsのtracertはICMPエコーリクエストを使うみたい)、パケットを送信する度に宛先ポート番号を1ずつ増加していく(ポート番号の初期値のデフォルトは32768+666)。

プローブパケットが宛先IPアドレスに指定したノードへめでたく到着すると、そのノードがポート到達不能ICMPメッセージを返してくる(はず)。もし終点ノードが宛先ポート番号をリッスンしているとこのメッセージは返ってこず、tracerouteはうまくいかない(それを回避するために毎回プローブパケットのポート番号を変化させ、1ホップにつき3回パケットを送信していると思われる)。

ホップ毎に送信するパケット数

Linuxのtracerouteコマンドはデフォルトで1ホップ毎に3パケット送信するが、このパケット数は -q オプションで変更できる。-q オプションはマニュアルのSYNOPSISには書かれているのにDESCRIPTIONに説明が見当たらない。でも皆このオプションの存在は知っているみたい。

実装例

UNIXネットワークプログラミングの25.6節にtracerouteの実装例が載っている。

やること

  • テーブル生成
  • 歯ブラシ
  • 小型テープ
  • クリーニング

2015年04月17日(金)

[c++] CentOS 7でboost::filesystemをC++11モードで使うとリンクエラーになる

CentOS 7でboost::filesystemを使ったコードを --std=c++11 オプションを付けてコンパイルするとリンクエラーになってしまう。

% cat filesystem_test.cpp
#include <boost/filesystem.hpp>

int main() {
  boost::filesystem::path p;
  boost::filesystem::path pp;
  boost::filesystem::copy_file(p, pp);
}

% LANG=C g++ -Wall --std=c++11 filesystem_test.cpp -lboost_filesystem -lboost_system
/tmp/ccacbvHH.o: In function `boost::filesystem::copy_file(boost::filesystem::path const&, boost::filesystem::path const&)':
filesystem_test.cpp:(.text._ZN5boost10filesystem9copy_fileERKNS0_4pathES3_[_ZN5boost10filesystem9copy_fileERKNS0_4pathES3_]+0x26): undefined reference to `boost::filesystem::detail::copy_file(boost::filesystem::path const&, boost::filesystem::path const&, boost::filesystem::copy_option, boost::system::error_code*)'
collect2: error: ld returned 1 exit status

--std=c++11 ではなく --std=c++03 とすればエラーにならないけど、C++11を使いたい。Boostのバグが原因のようで、

にあるように

#define BOOST_NO_CXX11_SCOPED_ENUMS
#include <boost/filesystem.hpp>
#undef BOOST_NO_CXX11_SCOPED_ENUMS

とincludeの前にマクロを定義すればコンパイルできた。


2019年04月17日(水)

[web] テーブルにスクロールバーを付ける (2)

HTMLのtable要素で作るテーブルが縦に長い場合に、テーブルにスクロールバーを表示しかつスクロールしても行ヘッダが見えたままになるようにしたい。できればJavaScriptは使わずに。

14年前に同様のことをメモしたのだけれど、そのときの結果を今試しても想定通りには動かない。

CSSの「position: sticky」を使うと実現できるようなのでメモしておく。動作はFirefox 66とChrome 73で確認。

テーブルの高さが固定の例

テーブルの高さを固定にする場合はわりと簡単に実現できた。

スクロールバーはtable要素ではなくそれを囲むdiv要素が表示することに注意。HTMLとCSSを抜粋すると次のような感じ。

    <div class="table-wrapper">
        <table>
        ...
        </table>
    </div>
    .table-wrapper {
        display: inline-block;
        height: 300px;
        overflow: auto;
    }
    th {
        background-color: orange;
        position: sticky;
        top: 0;
    }
  • テーブルの高さを決める要素(上の例ではclassがtable-wrapperのdiv要素)にCSSでheightを設定し、table要素はこの要素の中に配置する。
  • th要素にCSSでstickyを設定する。
  • そのままだとスクロールした時にテーブルのヘッダとボディの文字が重なって表示されてしまうので、th要素には背景色を設定する。
  • table-wrapperクラスをinline-blockにしているのは、幅を内容(table要素)の幅に合わせるため。ただ、こうするとFirefox 66ではテーブルの幅が狭くなりすぎてしまう模様。

なお、Firefox 66ではヘッダのセル間に線を描画するためにtable要素のborder-collapseをseparateにする必要があった(上の抜粋には含めていない)。

テーブルの高さをブラウザのウィンドウの高さと連動させる例

テーブルの高さは、固定ではなくブラウザのウィンドウの高さと連動するようにしたいことが多いのでそのケースもメモ。

HTMLとCSSを抜粋する。HTMLは前の例と同じなのだけれど、table-wrapperを囲むdivにもスタイルを設定するのでその部分を含めて抜粋し直す。

    <div class="container">
        <h1>テーブルにスクロールバーを付ける</h1>
        <h2>テーブルの高さがウィンドウの高さに連動する例</h2>
        <div class="table-wrapper">
            <table>
            ...
            </table>
        </div>
    </div>
    .container {
        position: absolute;
        bottom: 10px;
        top: 10px;

        display: flex;
        align-items: start;
        flex-flow: column nowrap;
    }
    .table-wrapper {
        overflow: auto;
    }
    th {
        background-color: orange;
        position: sticky;
        top: 0;
    }
  • table-wrapperの親要素(上の例ではclassがcontainerのdiv要素)に「position: absolute」と「display: flex」を指定する。これにより、table-wrapperの高さがウィンドウの高さと連動するようになる。
  • table-wrapperにはinline-block指定やheightの指定は不要になる。