メモの日々


2001年06月21日(木) クロスサイトスクリプティング

Kもクロスサイトスクリプティングの問題を抱えていた。登録者名を表示するところだ。どうしようかなあ。

Kは敷居が高すぎるよな。単独で簡単にウェブサイト上に載せられるものを作るよよいのではないか。図面Fなんかはそのようにできるのかも。


2002年06月21日(金) 部会の日

会社

  • 13:50 午前中は平野さん高本さん兒玉くんで打合せ。その後中華で昼食。そのあとKのプロジェクト登録。ビューワを試そうとしたが回線が遅すぎて断念。でも回線じゃなくてプロキシをオフにし忘れていたためかも。
  • 14:40 ステータス確認をしたところ。特に変化なし。
  • 14:45 redhatはApacheのバージョンアップ版がでているようだったのでup2date -u実行。が、Free service limited due to high loadというエラーでアップデートできない。kondaraでmph-get upgrade実行したらmod_ssl apache authconfig nss_ldapがアップグレードされた。のでApachを/etc/init.d/httpd restartで再起動。ログをみたらkondaraも週に1回Apache再起動していた。これはトラブルじゃなくてわざとやっているということかな。
  • 14:55 「全社一括で使用ソフトを管理できればメリットもでると思いますが...」 って。「...」の部分を聞きたいぞ。管理すればいいじゃん。
  • 18:25 部会終わり帰る。

テレビ/本

  • ダウンタウンDXを少し。ダウンタウンを久しぶりに見れた。宇津井けんがカラスに説教とか。
  • JavaWorld7月号。アスペクト指向やXMLのスキーマコンパイラの話が楽しい。

2003年06月21日(土)

[サッカー] 日本vsフランス

3:30からサッカーフランス戦をTV観戦。日本の先発は一昨日と同じ。フランス手を抜いているのか、日本ボールをキープできとても楽しい試合。中村素晴らしかった。悲しい気分が吹っ飛んでしまった。

生活

  • 悲しい気分。

仕事のTODO

  • 画面名の変更

やること

  • ハガキに記入し投函
  • 電気カミソリを買う

2004年06月21日(月)

  • 仕事を休んでしまった。台風到来で風が強い。
  • Mozillaを1.7へバージョンアップ。違いは感じない。

[tdiary] レイアウトが崩れる (3)

書影があるセクションで本文の量が少ないと、IEではレイアウトが崩れてしまうようだ。theme/base.css にあった

div.section, div.comment {
    clear: both;
}

の部分をコメントアウトしたら崩れなくなった。これもIEのバグっぽいな。

ついでにスタイルシートを少し変更。更に右下に広告を表示するようにしてみた。バナーの表示切替がうざいかも。アフィリエイトでの収入は今年に入ってまだゼロ円。

[tdiary] カテゴリ別一覧を新しい順にした

カテゴリ別一覧は新しいものが上にある方が使いやすいと思ったので category.rb を修正してみた。

*** category.rb.org  2004-04-10 23:33:36.000000000 +0900
--- category.rb   2004-06-21 22:12:10.000000000 +0900
***************
*** 115,121 ****
   <div class="body">
      <p>
  HTML
!     @categorized[c].keys.sort.each do |ymd|
         text = Time.local(ymd[0,4], ymd[4,2], ymd[6,2]).strftime(@conf.date_format)
         @categorized[c][ymd].sort.each do |idx, title, excerpt|
            r << %Q|\t\t\t<a href="#{@conf.index}#{anchor "#{ymd}#p#{'%02d' % idx}"}" title="#{excerpt}">#{text}#p#{'%02d' % idx}</a> #{apply_plugin(title)}<br>\n|
--- 115,121 ----
   <div class="body">
      <p>
  HTML
!     @categorized[c].keys.sort.reverse.each do |ymd|
         text = Time.local(ymd[0,4], ymd[4,2], ymd[6,2]).strftime(@conf.date_format)
         @categorized[c][ymd].sort.each do |idx, title, excerpt|
            r << %Q|\t\t\t<a href="#{@conf.index}#{anchor "#{ymd}#p#{'%02d' % idx}"}" title="#{excerpt}">#{text}#p#{'%02d' % idx}</a> #{apply_plugin(title)}<br>\n|

はじめてのRubyプログラミング。.reverseを追加しただけ。

やること

  • プリンタ処分
  • Kくんから800円回収
  • 住民税

2006年06月21日(水)

[vim] Vimで行頭から前行行末へカーソル移動可能にする

行頭<->行末移動は whichwrap オプションで設定できる。.vimrcに

set whichwrap=b,s,h,l,<,>,[,]

と書いた。以前も調べたのにすっかり忘れてまた調べる羽目になったのでメモ。

[vim] classの整形方法を変更

VimでC++のクラスの宣言を書くと

class Kurasu {
    public:
        void method();
}

のようにインデントされてしまっていた。これを

class Kurasu {
public:
    void method();
}

のようにインデントするようにするには、.vimrcに

set cinoptions=g0

と書けばよいみたい。cinoptionsというオプションでインデントの細かい設定が色々できるようだ。

参考:indent.txt (C-indentingのヘルプの日本語訳)

[vim] 「keisen.vim」 (Vector)

Vimで罫線を引くためのスクリプトみたい。まだ使ってないけどメモ。vimrc diaryより。

[tdiary] spamフィルタの説明が謎

最近でも何度かこのtDiaryに対するツッコミspamに見舞われている(6月に入ってから4回)。見つける度に手動で非表示にしている。

今朝もspamが来ていたのでtDiaryのspamフィルタで対策したつもりだったが、夕方同じパターンのspamに来襲されてしまった。spamフィルタの使い方を間違えていたようだ。

特定のURLを含むツッコミをフィルタしたかったので、spamフィルタの「以下に列挙されたパターンを使って構成されるパターンにマッチするURIを含むツッコミはspamとみなす。実際に使用されるパターンについてはupdate_configメソッドを参照。」 と書いてある欄にURLのパターンを書いておいたのだが、この欄に設定しておいてもツッコミのフィルタリングには使われないようだ。URLをフィルタする場合でも、「ツッコミ本文が以下に列挙されたパターンにマッチする場合はspamとみなす。」と書いてある欄に書けばよかったみたい。

フィルタを設定したら自分でツッコミを書き込んでみて思惑通り動作しているかを確かめておくべきだ。今日はそれを怠っていたのが失敗。

ただ、「以下に列挙されたパターンを使って構成されるパターンにマッチするURIを含むツッコミはspamとみなす。実際に使用されるパターンについてはupdate_configメソッドを参照。」という説明は意味不明だ。この欄は何に使うのか未だに分からない。

(追記)

tDiary-users-talk MLに質問してみたら色々教えてもらえた。感謝。

「以下に列挙されたパターンを使って構成されるパターンにマッチするURIを含むツッコミはspamとみなす。実際に使用されるパターンについてはupdate_configメソッドを参照。」欄には、URIのスキーム部を省いた文字列を書き込めばいいらしい。

spamフィルタは今後もう少し分かりやすく改良される模様。

(追記2)

公式サイトにspamフィルタの説明記事が載ったのでメモ。

やること

  • テーブル生成
  • デザイン変更
  • プリンタインク
  • 保険
  • PC接続用ケーブル
  • ツールのDVDを観る
  • 郵便局
  • 住民税
  • 住民税の自動払込申込
  • 税務署
  • クリーニング
  • 請求書
  • 家賃

2009年06月21日(日)

[c++][c][dev] C++用Makefileのサンプル (2)

ちょっと前にMakefileをメモしたけど、文字コードを変換してからビルドしたいケースもあるので、それに対応したMakefileも作ってみた。

  • 文字コードをCP932からUTF-8へ、改行コードをCRLFからLFへ変換している。変換にはNKFを使用。
  • 何もしないとコンパイルエラー時に変換後のソースファイルパスが表示されるが、それだとVimからmakeを実行したときに変換後のソースにジャンプしてしまい不便。なので、sedを使ってソースファイルパスを変換前のものに置換している。更に念のため変換後のソースから書込権限を除いておく。
  • sedで上の置換をする際にパイプを使っているが、そうするとコンパイルエラーになっても終了コードがエラーにならなくなり困る。そこでBASHのpipefailオプションを使って終了コードがエラーになるようにした。
# GNU make用です
build_base_dir = build
program = $(build_base_dir)/sample

# ここにビルド対象とするディレクトリを全て書く
src_dirs = src
src_dirs += src/aaa
src_dirs += src/aaa/ccc
src_dirs += src/bbb

SHELL=/bin/bash
CPPFLAGS = -I $(build_base_dir)/src
CXXFLAGS = -Wall -g

headers = $(wildcard $(addsuffix /*.h, $(src_dirs)))
sources = $(wildcard $(addsuffix /*.cpp, $(src_dirs)))
headers_utf8 = $(headers:%.h=$(build_base_dir)/%.h)
sources_utf8 = $(sources:%.cpp=$(build_base_dir)/%.cpp)
objects = $(sources_utf8:%.cpp=%.o)
depends = $(addsuffix .d, $(objects))
build_dirs = $(addprefix $(build_base_dir)/, $(src_dirs))

.PHONY: all
all: $(build_dirs) $(headers_utf8) $(sources_utf8) $(program)

.PHONY: clean
clean:
	rm -rf $(build_base_dir)

$(program): $(objects)
	$(CXX) $(LDFLAGS) -o $@ $^

%.o: %.cpp
	set -o pipefail; $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $< 2>&1 \
	    | sed --unbuffered 's|$(build_base_dir)/||'
	set -o pipefail; $(CXX) $(CPPFLAGS) -MM $< \
	    | sed 's|^\([^\.]*\)\.o|$(@D)/\1\.o|' > $@.d

$(build_base_dir)/%.cpp: %.cpp
	rm -f $@
	nkf --ic=CP932 --oc=UTF-8 -Lu -d $< > $@
	chmod a-w $@

$(build_base_dir)/%.h: %.h
	rm -f $@
	nkf --ic=CP932 --oc=UTF-8 -Lu -d $< > $@
	chmod a-w $@

$(build_dirs):
	mkdir -p $@

-include $(depends)

先日の例と同じ構成のソースファイルをビルドすると、

.
|-- Makefile
|-- build
|   |-- sample
|   `-- src
|       |-- aaa
|       |   |-- a.cpp
|       |   |-- a.h
|       |   |-- a.o
|       |   |-- a.o.d
|       |   `-- ccc
|       |       |-- c.cpp
|       |       |-- c.h
|       |       |-- c.o
|       |       `-- c.o.d
|       |-- bbb
|       |   |-- b.cpp
|       |   |-- b.h
|       |   |-- b.o
|       |   `-- b.o.d
|       |-- main.cpp
|       |-- main.o
|       `-- main.o.d
`-- src
    |-- aaa
    |   |-- a.cpp
    |   |-- a.h
    |   `-- ccc
    |       |-- c.cpp
    |       `-- c.h
    |-- bbb
    |   |-- b.cpp
    |   `-- b.h
    `-- main.cpp

のようになる。buildの下にあるのが変換後のソースファイル。

手元の環境で実行すると次のように出力された。

mkdir -p build/src
mkdir -p build/src/aaa
mkdir -p build/src/aaa/ccc
mkdir -p build/src/bbb
rm -f build/src/aaa/a.h
nkf --ic=CP932 --oc=UTF-8 -Lu -d src/aaa/a.h > build/src/aaa/a.h
chmod a-w build/src/aaa/a.h
rm -f build/src/aaa/ccc/c.h
nkf --ic=CP932 --oc=UTF-8 -Lu -d src/aaa/ccc/c.h > build/src/aaa/ccc/c.h
chmod a-w build/src/aaa/ccc/c.h
rm -f build/src/bbb/b.h
nkf --ic=CP932 --oc=UTF-8 -Lu -d src/bbb/b.h > build/src/bbb/b.h
chmod a-w build/src/bbb/b.h
rm -f build/src/main.cpp
nkf --ic=CP932 --oc=UTF-8 -Lu -d src/main.cpp > build/src/main.cpp
chmod a-w build/src/main.cpp
rm -f build/src/aaa/a.cpp
nkf --ic=CP932 --oc=UTF-8 -Lu -d src/aaa/a.cpp > build/src/aaa/a.cpp
chmod a-w build/src/aaa/a.cpp
rm -f build/src/aaa/ccc/c.cpp
nkf --ic=CP932 --oc=UTF-8 -Lu -d src/aaa/ccc/c.cpp > build/src/aaa/ccc/c.cpp
chmod a-w build/src/aaa/ccc/c.cpp
rm -f build/src/bbb/b.cpp
nkf --ic=CP932 --oc=UTF-8 -Lu -d src/bbb/b.cpp > build/src/bbb/b.cpp
chmod a-w build/src/bbb/b.cpp
set -o pipefail; g++ -I build/src -Wall -g -c -o build/src/main.o build/src/main.cpp 2>&1 \
            | sed --unbuffered 's|build/||'
set -o pipefail; g++ -I build/src -MM build/src/main.cpp \
            | sed 's|^\([^\.]*\)\.o|build/src/\1\.o|' > build/src/main.o.d
set -o pipefail; g++ -I build/src -Wall -g -c -o build/src/aaa/a.o build/src/aaa/a.cpp 2>&1 \
            | sed --unbuffered 's|build/||'
set -o pipefail; g++ -I build/src -MM build/src/aaa/a.cpp \
            | sed 's|^\([^\.]*\)\.o|build/src/aaa/\1\.o|' > build/src/aaa/a.o.d
set -o pipefail; g++ -I build/src -Wall -g -c -o build/src/aaa/ccc/c.o build/src/aaa/ccc/c.cpp 2>&1 \
            | sed --unbuffered 's|build/||'
set -o pipefail; g++ -I build/src -MM build/src/aaa/ccc/c.cpp \
            | sed 's|^\([^\.]*\)\.o|build/src/aaa/ccc/\1\.o|' > build/src/aaa/ccc/c.o.d
set -o pipefail; g++ -I build/src -Wall -g -c -o build/src/bbb/b.o build/src/bbb/b.cpp 2>&1 \
            | sed --unbuffered 's|build/||'
set -o pipefail; g++ -I build/src -MM build/src/bbb/b.cpp \
            | sed 's|^\([^\.]*\)\.o|build/src/bbb/\1\.o|' > build/src/bbb/b.o.d
g++  -o build/sample build/src/main.o build/src/aaa/a.o build/src/aaa/ccc/c.o build/src/bbb/b.o

やること

  • アイスを食べる
  • 請求書

2019年06月21日(金)

[howto][unix] CentOS 7でホスト名を変更する

CentOS 7でホスト名を変更するにはhostnamectlコマンドを使用する。

# hostnamectl set-hostname HOSTNAME