トップ «前の日(05-27) 最新 次の日(05-29)» 追記

本 日 の h o g e

hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。

更新情報の取得には rdflirs を使ってもらえると嬉しいです.


05/28/2003 ほげ

tDiary 216日目

[日記][ソフト] む

某後輩 のマシンに色々と入れてはめる.具体的にはninixとかninixとかninixとか(わら

[ニュース][小ネタ] 個室のみの男児用トイレ

ニオイで分かるだろ.アレは絶対なくならんて.

うぉ

あずまんがのサンプル公開してるのか.

リチャード・M・ストールマンへの質疑応答

やっぱ,GPLライセンスは使用者の,BSDライセンスは開発者の自由を重視してる気がする.

それにしても最後の質問

# * 誰かがパスワードを入力しようとしたら、体を背けろ
# * とりあえず10回インストールしろ

重要だ.

[小ネタ] 仏教徒は穏やかで幸せ

それは単純に何かを信奉してる人がそうなんだと思うが.仏だろうが神だろうがイワシだろうが皆一緒だ.

[小ネタ] 2chが世界進出

ここまで来るとさすがにすごいな.コレいつからあったんだろ.

ちなみにこんなのありました.

[Gentoo][Tips] うちのGentooは何才?

$ ls -ld /etc/runlevels
drwxr-xr-x 6 root root 152 2002-04-08 07:03 /etc/runlevels/

コレが一番古いかな? 去年4月8日の朝7時…まぁそんなもんか.


05/28/2004 うひ

tDiary 582日目

[日記] 休講

忘れてた.昨日必死に資料作ってた俺って一体.

[ニュース] もじら組と namazu のサイトがクラックされる

namazu だけかと思ったらもじら組もか.

[日記] 肉

にはの日だが肉分大補給により大復活!

[戯言] リファラ

何で電車男のまとめサイトがリンク元に大量にあるのか…リファラスパム (そんなんしても何の利益があるのかしらんけど) か電車ファンのリファラ偽装か….


05/28/2005

tDiary 947日目

[小ネタ] kittenwar

これはもう,もう…….ひ,卑怯だ!

via: 実験的「実験的日記」

[日記] いかん

また口内炎できた.

[戯言] うっしゃー

  1. に気概.
  2. に気合.
  3. に気迫.
  4. に起爆.
  5. で危篤.

ちーん.

[Gentoo][ソフト] 「無効なフォント Kochi-Mincho が削除されました」

がうっとおしいなあと思って色々試してたら, /usr/bin/ps2pdf の中身を

exec ps2pdf14 "$@"

に変更することで直った模様.12 だとダメなのか.

しかしこれで pdf バージョン 1.3 以前はステということになってしまったが,過去は忘れゆくものなのだよ…….

ついでにメモ

/usr/share/ghostscript/7.07/lib/CIDFnmap*

を色々ごにょることでフォント変更したりできるらしい.さざなみとか IPA フォントとかに変更したいとかそういう場合に.


05/28/2006 ふーむ

tDiary 1312日目

[日記] 飯日記

  • 12時頃:チャーハン
  • 20時頃:親子丼,うどん,サラダ

[Py][戯言] ふーむ

暇だったので MeCabとPythonでマルコフ連鎖を書いてみる(改) を参考に以下のようなコード書いてみた.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import random
import MeCab
import feedparser

def wakati(text):
    t = MeCab.Tagger("-Owakati")
    m = t.parse(text)
    result = m.rstrip(" \n").split(" ")
    return result

def create_markov_table(wordlist, level=2):
    def check_word(words):
        return len([w for w in words if w]) == len(words)

    markov = {}
    tmpword = ["" for i in range(level)]

    for word in wordlist:
        if check_word(tmpword):
            key = tuple(tmpword)
            try:
                markov[key].append(word)
            except KeyError:
                markov[key] = [word]
        tmpword = tmpword[1:] + [word]

    return markov

def gen_sentence(markov, level=2):
    count = 0
    sentence = []

    tmpword = random.choice(markov.keys())
    while count < len(wordlist):
        try:
            tmp = random.choice(markov[tmpword])
            sentence.append(tmp)
            tmpword = tuple(list(tmpword)[1:] + [tmp])
        except KeyError:
            pass
        count += 1

    return ''.join(sentence)

def cnet_news():
    f = feedparser.parse("http://feed.japan.cnet.com/rss/index.rdf")
    text = "\n".join([s["summary"].split("\n")[0] for s in f.entries])
    return text.encode("utf-8")

if __name__ == "__main__":
    level = 4
    src = cnet_news()
    wordlist = wakati(src)
    markov = create_markov_table(wordlist, level)
    sentence = gen_sentence(markov, level)
    print unicode(sentence, "utf-8")

イマイチよくわかってないけど,謎な文章が出力される.

[小ネタ] 出版社占い

via: kinnekoの日記

「あなたはマガジンハウスタイプです!マガジンハウスは、旧名である平凡出版の頃から、ファッションや社会風俗における最先端の流行を作り出してきた出版社です。「an an」「POPEYE」「BRUTUS」などの代表的雑誌が、1960年代以降の若者たちに与えてきた影響は計り知れないものがあります。あなたは誰からもかっこいい、と思われる洗練されたお洒落さん。身だしなみに気を遣いますし、社会的な礼儀もわきまえています。また、新しいものには目がなく、興味を持ったものは何でも試してみる、行動的な一面もあります。加えて、創造的な才能という面でも抜きん出ています。クリエイティブな仕事に非常に向いた資質を持っていると言えるでしょう。しかし、筋が通らないことは納得がいかない頑固者で、また自分のしたいことしかしないという、ややわがままな面があり、「変人」というレッテルを貼られがちですが、むしろそれを嬉々として受け入れている感があります。また、実際の内面より悪ぶったり、軽い人ぶったりしてしまう偽悪的な一面もあります。そんなあなたを理解してくれる人はごく少数であり、心の中は常に孤独です。まず、偽悪ぶるのは止めて、もっとありのままの自分で人と向き合うようにすることが重要です。なお、非常に飽きっぽい一面もありますので、注意してください。代表的な刊行物:an・an、Hanako、 POPEYE、BRUTUS、Kunel」

あー,確かに飽きっぽいね.


05/28/2009 むー

tDiary 2408日目

[日記] SUPER飯日記電鉄

  • 14時頃: 助六寿司
  • 20時頃: サンドイッチ
  • 25時頃: コンビニ弁当
本日のツッコミ(全2件) [ツッコミを入れる]

kou [駅弁が入っているかと思った。 ]

atzm [残念ながら地下鉄に駅弁はないのです ]


05/28/2017 ふむ

tDiary 5330日目

[Py][小ネタ] lesync

exFAT なパーティションにディレクトリツリーを同期したいことがあるのだが,

  • 10 年以上前からデスクトップのファイルシステムが EUC-JP で,convert するのも面倒なので放置している
  • しかし exFAT はファイル名が UTF-8 じゃないと書き込みを拒否するくさい

といったようなことがあって,面倒臭いなあと思っていた.

ファイルの同期といえば rsync(1) 大先生なのだが,単に -a オプションを使うと chown(2) でエラーを吐くとかまあ色々あって,概ね下記のようなオプションを指定することになる.

# rsync -rpt --iconv eucjp,utf8 SRC DST

とはいえ覚えられないし打つのも面倒だし,alias するとか wrapper 書くとかすることになると思うのだが,どうせ rsync(1) ほど高機能/高性能なものを求めているわけでもなし,せっかくなのでフルスクラッチで書いてみた. それが lesync

とはいえどうせなら zero-copy でいっちょやってみるかと,データ本体を user space にメモリコピーすることはないようにした. その結果が下記.

$ sudo bash -c 'echo 1 > /proc/sys/vm/drop_caches'
$ time sudo lesync -S hoge /mnt/card/tmp/.
real    0m3.328s
user    0m0.467s
sys     0m0.347s

$ rm -rf /mnt/card/tmp/hoge
$ sudo bash -c 'echo 1 > /proc/sys/vm/drop_caches'
$ time sudo rsync -rpt --iconv eucjp,utf8 hoge /mnt/card/tmp/.
real    0m3.633s
user    0m1.296s
sys     0m0.304s

rsync(1) はデータを user space に持ってきてから kernel space に送る (read(2) したデータを write(2) する) という動作をするので,zero-copy にすることで user 時間に差が現れる. まあ,real は大差ないので大した意味はないけれど.

lesync はデフォルトでは差分をチェックせず cp -r のような動作をするので,更新されたファイルだけコピーしたい場合は上記のように -S オプションを指定する. 差分のチェックはデフォルトでサイズ,mtime,ファイル名の比較だけど,プラットフォームが Linux Kernel Crypto API をサポートしていれば md5 等のハッシュ値を比較することもできる. 例えば sha1 ハッシュ値を比較したい場合は下記のようにする.

$ sudo lesync -S -D sha1 hoge /mnt/card/tmp/.

hashlib を使わなかったのは,言わずもがな zero-copy を堅持するため. とはいえ如何に zero-copy と言えど,ハッシュ値の比較を使うとめちゃくちゃ遅くなるので,使いどころはあまりないのだけれど.

ちなみにハッシュ値を算出する部分は独立したモジュールに分けておいたので,下記のようにハッシュ値を求めることができる.

$ sudo bash -c 'echo 1 > /proc/sys/vm/drop_caches'
$ time python3 -m lehash -a sha1 data
440a94499f1862fab752280ab7c4470b7d859a69  data
real    0m4.592s
user    0m0.071s
sys     0m2.279s

$ sudo bash -c 'echo 1 > /proc/sys/vm/drop_caches'
$ time sha1sum data
440a94499f1862fab752280ab7c4470b7d859a69  data
real    0m4.393s
user    0m2.332s
sys     0m0.272s

zero-copy のため user 時間と sys 時間に差が生まれているのが見て取れるけど,こちらもまあ real は大差ないので大した意味はない.