ナガシマスパーランド行ってきた

現実逃避気味にナガシマスパーランドに行ってきた。
朝のぞみ5号で名古屋に移動し、そこから近鉄の急行で桑名へ。しかし桑名駅ですでに雨…
気象レーダーを見ると、スパーランド周辺はあまり降ってないのと、時期に止む気配がしていたので突撃続行。結局、ついた頃には殆ど上がってた。
ただ、直前まで降ってたので、ジェットコースター類はことごとく運休。開園直後に試運転してた。
ただそのおかげで 試運転終了直後に行くとほとんど誰もいない->並ばずに人気ジェットコースターに乗るを繰り返したおかげで、昼前には目的のジェットコースター乗り終わるどころか、2度乗りする奴も…
で結局、13時くらいに出て13時半のバスで名古屋にそのまま新幹線で帰って、予定(22時前)より4~5時間早く帰った。
来年行くときは水着持って行こうかな…
あとPixivRSSのキャッシュDBをmemcachedにした。
MySQLの異常負荷もあるが、そもそもキャッシュにMySQLどうなの?ってことで改造。
ニコニコ静画RSSも同じ改造しようかな。

健康診断に結果が来た

6月1日に受けた健康診断に結果が来た。
身長()昨年との差分
 176.4cm(+4mm)
体重
 78.2kg(-1kg)
BMI
 25.1(-0.5)
太り気味ワロタwww
にも関わらず
中性脂肪
 36mg/dL(-9mg/dL)基準範囲 50~149
中性脂肪、基準範囲以下なんだな…
視力は左右メガネアリで1.2ずつ。
医師判断
 生活習慣見なおせ
だった。

MinGW-TDMでcrypto++をビルドした

MinGW TDMcrypto++をビルドするのに、いくつか変更点がいるからパッチにしてみた。
support_mingw_tdm.patch


*** original/GNUmakefile	Mon Aug  9 14:22:42 2010
--- GNUmakefile	Sun Jun 10 15:55:35 2012
***************
*** 32,37 ****
--- 32,38 ----
  GAS217_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])")
  GAS219_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.19|2\.[2-9]|[3-9])")
  ISMINGW = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "mingw")
+ ISTDM = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "tdm")
  ifneq ($(GCC42_OR_LATER),0)
  ifeq ($(UNAME),Darwin)
***************
*** 69,74 ****
--- 70,79 ----
  LDLIBS += -lws2_32
  endif
+ ifeq ($(ISTDM),1)
+ LDLIBS += -lws2_32
+ endif
+
  endif	# ISX86
  ifeq ($(UNAME),)	# for DJGPP, where uname doesn't exist

TDMサポートパッチ。
TDMのgccはバージョン情報に”mingw”ではなく”tdm-1″と出力するため、そっちもMinGWと同じ扱いになるように修正。
ついでに、Ubuntuのパッケージのファイル名と公式GNUmakefileの出力ファイル名が違っているから、Ubutnu側に合わせるパッチ
change_file_name.patch


*** original/GNUmakefile	Mon Aug  9 14:22:42 2010
--- GNUmakefile	Sun Jun 10 15:53:16 2012
***************
*** 137,178 ****
  	./cryptest.exe v
  clean:
! 	$(RM) cryptest.exe libcryptopp.a $(LIBOBJS) $(TESTOBJS) cryptopp.dll libcryptopp.dll.a libcryptopp.import.a cryptest.import.exe dlltest.exe $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS)
  install:
! 	$(MKDIR) -p $(PREFIX)/include/cryptopp $(PREFIX)/lib $(PREFIX)/bin
! 	$(CP) *.h $(PREFIX)/include/cryptopp
  	$(CP) *.a $(PREFIX)/lib
  	$(CP) *.so $(PREFIX)/lib
  	$(CP) *.exe $(PREFIX)/bin
! libcryptopp.a: $(LIBOBJS)
  	$(AR) $(ARFLAGS) $@ $(LIBOBJS)
  	$(RANLIB) $@
! libcryptopp.so: $(LIBOBJS)
  	$(CXX) -shared -o $@ $(LIBOBJS)
! cryptest.exe: libcryptopp.a $(TESTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) -L. -lcryptopp $(LDFLAGS) $(LDLIBS)
  nolib: $(OBJS)		# makes it faster to test changes
  	$(CXX) -o ct $(CXXFLAGS) $(OBJS) $(LDFLAGS) $(LDLIBS)
  dll: cryptest.import.exe dlltest.exe
! cryptopp.dll: $(DLLOBJS)
  	$(CXX) -shared -o $@ $(CXXFLAGS) $(DLLOBJS) $(LDFLAGS) $(LDLIBS) -Wl,--out-implib=libcryptopp.dll.a
! libcryptopp.import.a: $(LIBIMPORTOBJS)
  	$(AR) $(ARFLAGS) $@ $(LIBIMPORTOBJS)
  	$(RANLIB) $@
! cryptest.import.exe: cryptopp.dll libcryptopp.import.a $(TESTIMPORTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(TESTIMPORTOBJS) -L. -lcryptopp.dll -lcryptopp.import $(LDFLAGS) $(LDLIBS)
! dlltest.exe: cryptopp.dll $(DLLTESTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(DLLTESTOBJS) -L. -lcryptopp.dll $(LDFLAGS) $(LDLIBS)
  adhoc.cpp: adhoc.cpp.proto
  ifeq ($(wildcard adhoc.cpp),)
--- 137,178 ----
  	./cryptest.exe v
  clean:
! 	$(RM) cryptest.exe libcrypto++.a $(LIBOBJS) $(TESTOBJS) crypto++.dll libcrypto++.dll.a libcrypto++.import.a cryptest.import.exe dlltest.exe $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS)
  install:
! 	$(MKDIR) -p $(PREFIX)/include/crypto++ $(PREFIX)/lib $(PREFIX)/bin
! 	$(CP) *.h $(PREFIX)/include/crypto++
  	$(CP) *.a $(PREFIX)/lib
  	$(CP) *.so $(PREFIX)/lib
  	$(CP) *.exe $(PREFIX)/bin
! libcrypto++.a: $(LIBOBJS)
  	$(AR) $(ARFLAGS) $@ $(LIBOBJS)
  	$(RANLIB) $@
! libcrypto++.so: $(LIBOBJS)
  	$(CXX) -shared -o $@ $(LIBOBJS)
! cryptest.exe: libcrypto++.a $(TESTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) -L. -lcrypto++ $(LDFLAGS) $(LDLIBS)
  nolib: $(OBJS)		# makes it faster to test changes
  	$(CXX) -o ct $(CXXFLAGS) $(OBJS) $(LDFLAGS) $(LDLIBS)
  dll: cryptest.import.exe dlltest.exe
! crypto++.dll: $(DLLOBJS)
  	$(CXX) -shared -o $@ $(CXXFLAGS) $(DLLOBJS) $(LDFLAGS) $(LDLIBS) -Wl,--out-implib=libcryptopp.dll.a
! libcrypto++.import.a: $(LIBIMPORTOBJS)
  	$(AR) $(ARFLAGS) $@ $(LIBIMPORTOBJS)
  	$(RANLIB) $@
! cryptest.import.exe: crypto++.dll libcrypto++.import.a $(TESTIMPORTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(TESTIMPORTOBJS) -L. -lcrypto++.dll -lcrypto++.import $(LDFLAGS) $(LDLIBS)
! dlltest.exe: crypto++.dll $(DLLTESTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(DLLTESTOBJS) -L. -lcrypto++.dll $(LDFLAGS) $(LDLIBS)
  adhoc.cpp: adhoc.cpp.proto
  ifeq ($(wildcard adhoc.cpp),)

まぁこっちは好みの問題か。

祖母の葬式行ってきた

先週、祖母が亡くなったとのことで、急遽徹夜で長野に行くことに。
0時に親父が帰ってきて、1時半頃出発。途中圏央道のPAで交代して運転することに。
…対向車も後続車もいねぇから怖い怖い。藤岡ジャンクションから上信越自動車道に入ってしばらくしてからキリで速度規制開始。6月なのに?6月だから?
しかも、規制終わってからのほうがキリが濃いとかwww前がいまいちよく見えないから怖いのなんのって…
で、無事に長野について運転交代。病院で祖母の遺体と対面したあと、近所のファミレスで朝飯食った直後に寝落ち。起床後に祖母の家に移動し、片付け。
葬儀屋の人と、打ち合わせだ何だしてるのを聞きつつ、片付け。片付けと言いつつ、その部屋にあったものを別の場所に映してるだけだけど。
月曜日に通夜、火曜日に葬式&初七日法要。この時知ったけど、どうやら家は仏教の日蓮宗系っぽい。
葬式後は、親父が書類書いてるのを横で見てたり、親戚と話ししたりと結構ぼんやり過ごして、今日帰宅。
これ、数十年後には俺が喪主やるのか…
出発日に増設した、旧XP機のHDDが一部機能不全になってた…2つあったパーティションの片方が未フォーマット扱いされてるから、パーティションテーブルが壊れたか?

ニコニコ超会議の臨時列車とりに行ってきた

ニコニコ超会議の臨時列車が2本走るとのことで、撮りに行ってきた。
最初は品川で485系宴のミステリートレインを撮影。出発予定時間ギリギリの入線になったから撮影終了し次第速攻で京浜東北線に乗車し、東十条へ。
東十条で、24系の臨時列車を撮る予定だったが、東十条到着と同時に列車が通過していったから全く準備できなかった…orz
東十条で、とし様と合流。そのまま北千住へ。
北千住でE531系とE657系を撮影し、府中本町に行こうということになったが、途中で中断し西国分寺駅から中央快速線->御茶ノ水->錦糸町と乗り継いで総武快速線へ。この段階でニコニコ生放送とtwitterで実は北千住出発の30分後にミステリートレインが北千住を通過していたことが判明。その後も津田沼で折り返すところまでは分かったが、間に合わず。誉田まで逃げられたので、蘇我から千葉みなとに移動して待機。無事に撮影し、千葉都市モノレールで千葉に移動。昼食ったあと西船橋を経由して中浦和に移動し、埼京線を撮影。
その後は、秋葉原で少し買い物して東京駅で解散。
とし様、お疲れ様でした。

CMakeでtexのビルド

CMakeでtexをビルドする方法が大体わかったからメモ書き。これを応用すれば、texに限らず好きにビルドできるかな。
CMakeLists.txt


SET(Document_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
SET(Document_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
ADD_CUSTOM_TARGET(DOCUMENT ALL echo DEPENDS ${Document_BINARY_DIR}/network.pdf)
ADD_CUSTOM_COMMAND(OUTPUT ${Document_BINARY_DIR}/network.pdf DEPENDS ${Document_SOURCE_DIR}/network.tex
	COMMAND platex ARGS ${Document_SOURCE_DIR}/network.tex
	COMMAND dvipdfmx ARGS ${Document_BINARY_DIR}/network.dvi
)

Document_BINARY_DIRとDocument_SOURCE_DIRは気分で変えてるだけだから割りとどうでもよくて。
ADD_CUSTOM_STAGETでビルドターゲットに「DOCUMENT」を追加し、Document_BINARY_DIR/network.pdfを完成バイナリに指定。
ADD_CUSTOM_COMMANDで出力をDocument_BINARY_DIR/network.pdfに、入力をDocument_SOURCE_DIR/network.texに指定。COMMANDでnetwork.texをビルドし、dviに続いてのCOMMANDでそれをpdfに変換。dviの出力先はDocument_BINARY_DIRになるので、そこだけ注意。
あとは、cmakeでMakefileを作って、make DOCUMENTでビルド。Document_BINARY_DIR/network.pdfができてた。

CMake導入中

Autotoolsのスクリプトを書くのが大変なので、CMakeを導入してみた。
とりあえず、boost::asioの練習ついでにhttpクライアントとTCPサーバーをCMakeでビルド。
単純にビルドするだけなら、
/CMakeLists.txt


CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(AsioTest)
#Boostディレクトリの設定
IF(WIN32 AND NOT UNIX)
	SET(BOOST_INCLUDEDIR C:/MinGW32/msys/1.0/local/include)
	SET(BOOST_LIBRARYDIR C:/MinGW32/msys/1.0/local/lib)
ELSE(WIN32 AND NOT UNIX)
ENDIF(WIN32 AND NOT UNIX)
#boost::systemの捜索
FIND_PACKAGE(Boost COMPONENTS system REQUIRED)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
#サブディレクトリの設定
ADD_SUBDIRECTORY(httpClient)
ADD_SUBDIRECTORY(server)

/httpClient/CMakeLists.txt


ADD_EXECUTABLE(http src/main.cpp)
TARGET_LINK_LIBRARIES(http ${Boost_LIBRARIES})
IF(WIN32 AND NOT UNIX)
#Windowsの場合は、winsock2とmswsockが必要
find_library(WS2_32_LIBRARY ws2_32)
TARGET_LINK_LIBRARIES(http ${WS2_32_LIBRARY})
find_library(MSWSOCK_LIBRARY mswsock)
TARGET_LINK_LIBRARIES(http ${MSWSOCK_LIBRARY})
ELSE(WIN32 AND NOT UNIX)
#Linux系はpthreadが必要
	find_library(PTHREAD_LIBRARY pthread)
	TARGET_LINK_LIBRARIES(http ${PTHREAD_LIBRARY})
endif(WIN32 AND NOT UNIX)

/server/CMakeLists.txt


ADD_EXECUTABLE(server src/main.cpp src/server.cpp src/user.cpp)
TARGET_LINK_LIBRARIES(server ${Boost_LIBRARIES})
IF(WIN32 AND NOT UNIX)
#Windowsの場合は、winsock2とmswsockが必要
	FIND_LIBRARY(WS2_32_LIBRARY ws2_32)
	TARGET_LINK_LIBRARIES(server ${WS2_32_LIBRARY})
	FIND_LIBRARY(MSWSOCK_LIBRARY mswsock)
	TARGET_LINK_LIBRARIES(server ${MSWSOCK_LIBRARY})
ELSE(WIN32 AND NOT UNIX)
#Linux系はpthreadが必要
	FIND_LIBRARY(PTHREAD_LIBRARY pthread)
	TARGET_LINK_LIBRARIES(server ${PTHREAD_LIBRARY})
ENDIF(WIN32 AND NOT UNIX)

これだけ。
boost::asioを要求するため、FIND_PACKAGEでパッケージ探したり、boost::asioが要求するライブラリがOSごとに違っているけど、そこはIFで分岐してFIND_LIBRARYで探してやればOK。
cygwinだけ何かしたい場合は、「IF (CYGWIN)~ENDIF(CYGWIN)」でいいっぽい。
設定次第ではインストーラーも作れるみたい。
こっちはちょっとややこしいけど、WindowsならNSISが、Linux系ならDEBが作れるらしい。
ビルドするときに、/buildを作って、cd。cmake ..ってやると、オブジェクトファイルもリンク済みバイナリも/build以下にできるから、

SET(CPACK_SOURCE_IGNORE_FILES  "/build/" "/.svn/" "/.deps/" "/.settings/" ".cproject" ".project")

でパック指定から外してやれば、make package-sourceでソースパッケージを作っても、余計なものが入らなくて便利。
公式のWin32バイナリは-Gで指定しないとVisual Studioのslnを出力しようとするから、MSYSでビルドしたければ、-G”MSYS Makefiles”がいるのに注意。
CMakeLists.txtを書くのなら、vimかEclipse + CMakeEdが便利。

富士急ハイランド行ってきた

2日前だけど
先週雪でほとんどのアトラクションが運休していたので、今日友人Kを連れてリベンジ。
朝に新宿駅で集合して、ホリデー快速河口湖号で富士急ハイランド駅へ。
富士急行線内富士山駅まで後ろ3両ドアが開かないみたい。指定席は最後尾の1号車なのに…
富士急ハイランド駅に10時頃に到着。この時点では、すべてのアトラクションが運転中。
フリーパス(5000円)買って入場。何故か最初に写真撮影。
ええじゃないかに並ぼうとするも、2時間待ちとのことで中断。FUJIYAMAの列に並ぶ。
…雨降ってきた。2時間弱運休に怯えながらなんとか乗車。この時点で若干氷混じり。最高速度130km/hで走行中に正面から氷がぶつかるから痛い。しかも曇ってて富士山見えない…
FUJIYAMA完走後、さすがに雨がひどくなってたからか、ほとんどの絶叫アトラクションが運休。
ちょっと遠くのマック行って帰ってくる頃には高飛車が運転再開してたから2時間並んで乗車。
こっちは1kmのコースを上へ下へ右へ左へ揺さぶられまくりながら完走。目玉の120°降下は手前で停止してから落下。ただまぁ…停止中に覚悟できちゃうんだよなぁ…おまけに富士山見えないし…
高飛車が終わった頃にドドンパが運転再開に向けて試運転してたけど、時間的にきついんでスルー。エヴァのブースとガンダムのブースを回って普通電車で帰宅。
ガンダムのアトラクションあれムリゲーwww1日やって多い日でクリア10~20人程度って難易度高すぎるだろwww
そのうち乗れなかった乗りに行こう。

河口湖行ってきた

2月29日に富士急行に元205系の6000系が導入されたから、写真取りに大月へ。
ついでに富士急ハイランドであそぼうかと思ったが、生憎の雪でアトラクション運休…orzしかも雪がすごくてあまりまともに撮れなかった…
朝、八王子から普通電車で高尾に移動し、高尾から115系スカ色に乗車。よく見たら先頭3両は河口湖行きだったので、相模湖駅で前に行こうとしたら、スマホ落としたorz
駅員さん呼びに行ってるまに電車は発車。しょうがないから後続の115系長野色で大月へ。大月で切符買ってホームヘ。ちょうど6000系が来てたから雪の中撮影。
その後、三つ峠で下車。撮影地に向かって徒歩で移動開始。浅間神社で雨宿りしつつ、列車待ち。
数本撮ったあと、寿駅に向かって移動しつつ、撮影地点の確認。寿で6000系撮影の後、トーマスランド号で下吉田駅へ。下吉田ではスハネフ14が静態保存されているので、乗車。少ししてからSHIMOYOSHIDA CLUBでさくら茶を飲んで下り電車で富士山駅へ。
富士山駅でマック食いに行こうとしたら、実は隣の富士急ハイランドのほうが近いことに気づかずに移動したため、結局1区間歩き通したうえにちょっと迷った。
なんとか富士急ハイランド駅についたら、ちょうどフジサン特急が来たので、河口湖へ。河口湖でモ1号撮ったら、フジサン特急で帰路についた。
その帰り道、手元の割といい加減なダイヤグラムだと谷村町駅の手前で6000系とすれ違うみたいなことになってたんだけど、谷村町駅周辺は単線。てっきり到着時間入れなかったせいで誤差が出てるんだとおもいきや、特急が停止寸前まで減速して6000系の入線と、ポイントの切替を待ってた…いっそ止まれよ。
大月からかいじに乗り換えて更に乗り換えて帰宅。今度はもっと天気のいい日に来よう…