Javaでsynchronizedを再帰的に呼び出した時の挙動

一般的にはやらないだろうけど、気になって調べてみた。 ソース OpenJDK、Hotspot VMをベースに調べてみた。 JDK https://github.com/openjdk-mirror/jdk7u-jdk commit: f4d80957e89a19a29bb9f9807d2a28351ed7f7df Hostspot VM https://github.com/openjdk-m…

設定ファイルを暗号化するSecureConfってライブラリを作った

手軽に設定ファイルをRSAで暗号化するライブラリ。 平文をそのまま保存しないという大義名分をミニマムに果たせる。 IDとかパスワードとかをうっかり平文のままコミットしてしまうのを防ぐ為に。 作るきっかけ、困ってた事 誰かが発行してくれるTokenを使っ…

Play Frameworkを使ってみる

インストールからアプリ作成まで。 前提 Mac。 JDK 1.7が入ってる。 環境構築 まずはインストール。 sudo su - cd /tmp/ curl -O http://downloads.typesafe.com/play/2.2.1/play-2.2.1.zip unzip play-2.2.1.zip mv play-2.2.1/ /usr/local cd /usr/local l…

光の天使スクリーンセーバーから動画部分のみを取り出したい 備忘録その1

その2があるか解らないけど、とりあえず備忘録その1。 Objective-C、SWFファイルフォーマット、ActionScript、Zlib辺りの知識が必要になりそうな。 概要 fla:verを使ってる fla:verを使って、Flashファイルからスクリーンセーバーを生成していた。 仕組みは…

光の天使のスクリーンセーバーを今でも見られるようにする方法

由結ちゃんかわいい! 前提 Mac。 Ruby 2.0以上が入っている。(多分1.8.7とかでも動くけど一応) 80ポートをApacheやnginxが握っていない。 root権限が使える。 実行 問題なければ以下実行。 su - dscacheutil -flushcache echo '127.0.0.1 www.hikarinoten…

さくら学院のデータを管理するライブラリRubyGems::sakura_gakuinを公開した

さくら学院のメンバーやクラブ活動のデータを取得出来るライブラリ、sakura_gakuinをRubyGemsで先日公開した。 いつか作りたいと思っていたAcmeモジュール。(Rubyだけど) sakura_gakuin | RubyGems.org | your community gem host https://rubygems.org/ge…

mruby-oauthをビルドする

探り探りな感じで。 mruby 何はともあれmrubyをビルドしてみる。 $ git clone https://github.com/mruby/mruby.git $ cd mruby $ rake mgem まずはRubyでいう所のgem、mgemを入れる。 $ gem install mgem インストールすると、 ~/.mgem ディレクトリが生成さ…

レシートが邪魔だから効率的に捌く術を考える

数ヶ月前まで支払いは殆どクレジットカードだったのに、ここ最近は現金払いが増えてレシートが凄く邪魔。 これを効率的に捌く術を考え中。 紙の現金出納帳 現在の手法。 面倒な上に不便。 Zaimのレシート読み取り 精度が悪い。 現金出納ツールを自作 ツール…

IPv6アドレスをデータベースに保存する際のフォーマットはどうするべきか

IPv4アドレスをデータベースに格納する場合、32bitのunsigned intにする事が多くある。 ではIPv6アドレスの場合はどうするべきか。 案 4桁の[0-9a-f]を:で繋げた省略なしの文字列 データ例:"2001:0db8:0000:0000:1234:0000:0000:9abc" データ量:39バイト固…

賃貸契約を更新した

賃貸契約に連帯保証人というのは必要なのだろうか。 一般に連帯保証人を頼む相手は親だし、親と仲が良くないと面倒な事になる。 たかだか数万円で済むのであれば連帯保証人の代行業者を使う事も考えたが、どれも怪しい。 一度でも利用したら人としてまともな…

Rails3でPUTメソッドのリクエストを受けるとレスポンスが204に強制されてしまう件

204ステータスは、内容なし。 リクエストを受理したが、返すべきレスポンスエンティティが存在しない場合に返される。 Rails3ではなぜかPUTメソッド(GET / POST以外)だと204ステータスに強制されてしまい、コンテンツを返せない。 本当は200ステータスでコ…

CentOSにMeCabとmecab-rubyを入れる

CentOSにMeCabとmecab-rubyを入れるメモ。 インストール MeCab本体インストール cd /tmp/ wget http://mecab.googlecode.com/files/mecab-0.98.tar.gz tar -xvf mecab-0.98.tar.gz cd mecab-0.98 ./configure --with-charset=utf8 --enable-utf8-only make m…

CentOS上にYumとRVMだけでRuby2.0+Rails3の環境を構築出来た

ちょっと前はsqlite3をソースから入れなきゃいけなかったような気がするけど、今やったらYumとRVMだけで事足りた。 野良ビルドしないで済むのは嬉しい。 そのインストールメモ。 インストール yum install ruby git gcc-c++ readline-devel zlib-devel libya…

SolrをTomcat7で動かす

インストールメモ。 サーバはCentOS6.4。 TomcatはJPackageリポジトリを使ってYumで入れる。 Solrは4.2.0をtarで取って来る。 インストール # jpackage cd /tmp/ wget http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.…

VyattaでPPPoEが繋がらなくなった

今まで元気に通信出来ていたのに、いきなりPPPoEが繋がらなくなった。 Vyattaの/var/log/messageを見ると、「CHAP authentication failed」と30秒間隔で出て再接続を試みていた。 Mar 23 16:26:50 vyatta zebra[2038]: interface ppp0 index 310 <POINTOPOINT,NOARP,MULTICAST> added. Mar</pointopoint,noarp,multicast>…

PHPのカンマ演算子について

PHP

カンマ演算子って何? 使い方によって正しく動く時とPHP Parse errorが出る時とあるんだけどなんで? …って話をFacebookで友人の友人が話題にしていたのだけどコメント権限がなかったようで。 とりあえずここにでも書いておこうかと思った次第。 PHP: 演算子…

Rubyの「class << self; end」について調べた

Rubyでクラスメソッドを定義する時、いつも 「class 「class 「self 「self と解らなくなってしまう。 それで「class この奇妙な仕様について何かご存知の方、すっきり出来るような情報を教えてください! 「class まずは普通にクラスメソッドを定義する。 #…

Complement Naive BayesをPHPで実装した

アルゴリズムの理解を深める為、Rubyで書かれた実装をそのままPHPに移植してみた。 Complement Naive Bayes らしきものをRubyで書いた - 記録用 http://d.hatena.ne.jp/laughing/20101114/1289698415 frequency_of_word_by_class = array(); $this->number_o…

RubyからPHPをネイティブ連携させるRuby extension「php_vm」を作った

RubyからPHPのクラスとかをネイティブに呼び出すRuby extension「php_vm」を作った。 百聞は一見に如かず。 なんということでしょう、PHPで定義したクラスがRubyのクラスのようにインスタンス化したりメソッドを呼んだり出来るではありませんか。 Source #!/…

PHPのジェネレータ(yield)について調べた

PHP

PHP5.5で追加されるyieldについて調べた。 とりあえずインストール。 cd /tmp git clone https://git.php.net/repository/php-src.git cd php-src/ ./buildconf ./configure --prefix=/tmp --disable-all make make install ジェネレータオブジェクトとは ぱ…

PHPでtry-catch-finallyする綺麗な書き方思いついた

PHP

これ結構いい気がする…! finallyで後処理だけして、発生した例外を握り潰さず呼び出し元に投げる時に便利。 何もすごい事はしていないけど、割りと見やすくてなんとなくtry-catch-finallyっぽい。 見様によっては再throwを書く場所が違うだけに見えなくもな…

ZFSの基本的な使い方とZFSとEXT4のベンチマーク比較

ZFSの基本的な使い方と、ZFSとEXT4のベンチマーク比較をまとめた。 ZFSの使い方 初期 一番最初は何もない。 [root@kvm ~]# zpool list no pools available [root@kvm ~]# zfs list no datasets available ストレージプール作成 ストレージプール、tankを作成…

最近はてなでのアウトプットが少なくなった

これは非常にまずい。 その理由を考えた。 その瞬間必要だったTipsやソースは自分用Wikiに書くようになった はてなはソースコードをシンタックスハイライトしてくれるのが魅力だと思ってた。 でも自分用Wikiを作ってから、はてなである必要がなくなった。 ソ…

VyattaにiPhone/iPadでPPTP接続が出来ない時の対処方

VPN

iPhone/iPadだと認証は通過して接続は成功してるけど、いざパケットのやり取りを始めるとVPNが途切れる。 Macからだと途切れないのに…。 という状態。 途切れた時のログは以下の通り。 May 30 18:57:48 vyatta pptpd[3395]: GRE: read(fd=7,buffer=80505a0,l…

MacOSX Lionにアップグレードしてgccとかgitとかいろいろ動かなくなる時の対処法

Mac

Snow Leopardでインストール出来るXcodeが古くて、iPad3向けにビルド出来ない事が判明。 それで遂にLionにアップグレードした。 よく解らないけど、/usr/includeがなくなっちゃったのには驚いた。 開発に必要なものはあらかた/Applications/Xcode.app/Conten…

RVMでRails2環境とRails3環境を共存させる

RVMとかRubiesとかBundlerとか、いろいろあって訳わかんないけど、 とりあえずApache + RVM + Nginxが一番楽かなという印象。 (Rails3アプリを管理するのにBundlerも使うけど) 80番ポートを受け付けるのはApache。 そのApacheがプロキシになって、後ろのNg…

forked-daapdでID3タグが文字化けるのを直したdebパッケージ作った

前回作ったFFMpegのShiftJISパッチを適用してforked-daapdをビルドした。 本当はCentOSでやれればよかったんだけど、依存しているパッケージが古すぎて面倒だったからDebianでやる事にした。 今の所何の問題もなく快適に動いているけど、自己責任で。 ShiftJ…

FFMpegでID3タグが文字化けるのを直すパッチを作った

forked-daapdで文字化けしてるから、それを直したい。 とりあえず文字化けの原因は潰したから今度試す。 パッチの前にちょっと解説。 なぜ文字化けるのか ID3v2が対応している文字コードは、 ID3v2.2〜ID3v2.3の場合、ISO-8859-1とUTF-16だけ。 ID3v2.4の場…

CentOS6にnetatalkをインストールする

Macで使われている一般的なファイル共有プロトコルAFPを使えるようにnetatalkを入れる。 依存関係はYumで入れる。 パスはCentOS標準に合わせる。 デーモンはrc.dで管理。 インストール yum install avahi avahi-devel openssl libgcrypt db4-devel yum insta…

KVMで仮想マシンに物理ハードディスクを直接接続させる

KVM

virsh editでに定義を追加する。 source devは/dev/sdXで指定するとホストマシンの構成が変わった時に変わる可能性があるから、/dev/disk/by-XXXで指定した方がいい。 target devは、ユニークになるように指定。 仮想マシンで直接マウント出来るから管理も楽…