はちゅにっき

こっちのブログはまったり更新

gcsfuse を利用して CoreOS に Google Cloud Storage を mount する

CoreOS なんだから Container でやりなさいって言われそうですが、手っ取り早く Google Cloud Storage を Data Volume として提供したいなぁと思ったのでやってみました。 ただしパフォーマンスはお察しくださいレベルなので、Data Volume として使う場合も…

Angular2 で Angular2 Material 使ってみる

せっかく Angular2 を触ってみたので、Angular2 Material の方も使ってみることに。 よくありがちな NoPaste 的なアプリを目標にしたものの未完成でいったん休憩。 (未) 完成品はこちら。 https://hatyuki.github.io/nopaste-front/recent-posts リポジトリ…

Grape on Rack with ActiveRecord

「Ruby で API サーバを書くなら Grape がいいよ。」 ってよく見聞きするんだけれど、ほぼ + Rails の構成。 食わず嫌い的な感じで Rails を避けている (訳じゃないんだけど) ので、Rails 臭がする程度に Grape を Rack 上にマウントしたらどうなるのかなー…

気づいたら Angular2 RC4 になっていた

ので前回作ったチュートリアルの Tour of Heroes も RC4 にアップデートしてみることに。 hatyuki.hatenablog.jp って、package.json 書き換えて npm update したらそのまま動きました。 CHANGELOG を流し読みしたけど、まぁ動いて当然というか、その程度に…

Angular CLI を使って Angular2 RC3 で Tour of Heroes

Angular2 が RC 版ということで、さわってみることに。 とりあえず公式のチュートリアル Tour of Heroes をやります。 完成品 github.com チャプターごとにコミットを分け、さらにタグを打っています。 Angular CLI を使うと簡単に Github Pages に Deploy …

docker-machine create 時に proxy を指定する

なんかよく忘れるのでメモしておこう。 Proxy を通さなければいけない環境下で docker-machine を使う場合は、machine にログインして /var/lib/boot2docker/profile に export HTTPS_PROXY=http://example.com:8080/ # or HTTP_PROXY と書いてもいいけれど…

Ruby で is_numeric

PHP の is_numeric( ) みたいなのを Ruby でやる場合はこんな感じでいいのかなー? def numeric? (value) return true if value.kind_of?(Numeric) !!(Integer(value) rescue Float(value)) rescue false end これで、以下のようにテストしてみたら、だいた…

Enumerable#each_with_object でハマった

[1, 2, 3].each_with_object(Array.new) do |i, memo| memo += [i, i * 2] end # => [ ] あれ!? [[1, 2], [2, 4], [3, 6]] になると思ったのに!? Ruby - Enumerable.each_with_object の使い道 - Qiitaqiita.com Ruby - injectとeach_with_objectって何…

ブロック内でのみ有効な Redis のインスタンスを起動したい

最近は Ruby をちょくちょく使っています。 Ruby で Redis を使ったテストを書く場合は fakeredis や mock_redis を使うのが一般的かと思いますが、ちょっとだけ Fake や Mock ではなく本物の Redis を使いたい時ってありませんか? 例えば Redis やその周辺…

本当に PHP の DoS 脆弱性 (CVE-2015-4024) キツくない?

PHP

PHPのDoS脆弱性(CVE-2015-4024)キツくない? - 出張おはき゛ろくhakaikosen.hateblo.jp 上記記事を「あら大変(棒読み)」とか思いながら読んでいたけれど、PHP の BTS の方を読んでみたら確かに原理から再現手順まで細かく記載されていて 「なんかこれまずそ…

mp3 の ID3 Tag をファイルパスに基づいて更新する

アーティスト名/アルバム名/01-曲名.mp3というファイルパスのルールで保存してある mp3 に対して、ファイルパスに基づいて適切な ID3 タグを一括で設定する Script を Ruby の taglib-ruby を使って書いてみました。taglib-rubytaglib-ruby は C++ で書かれ…

String#to_s と 文字列リテラル内の式展開と - その3

もうここまでくるとただの興味本位。 文字数・桁数によってどんな感じに処理時間が増加するのかを調べてみました。 今回は桁数を 1桁から100桁まで増加させたときの処理時間の変化。 グラフにしたらこんな感じ。 ノイズっぽいデータが一部あるけれど、String…

String#to_s と 文字列リテラル内の式展開と - その2

Float と Symbol についても気になったので追加してみました。 どれも予想通り Object#to_s の方が "#{Object}" の書き方よりも早いですね。 Float#to_s のコストは他と比べると比較的高いんですね。 といっても 100万回やってこの値なので、本当に気にする…

String#to_s と 文字列リテラル内の式展開と

やっぱ、こういうものですよね。 String#to_s (文字列を文字列にする) か Fixnum#to_s (数値を文字列にする) かでも、当然だけれど違いは出るんですね。

自分用に Debian の Docker Image を構築する

Docker Hub に Debian のイメージがあるので、それを使えばいいんだけれど、タイムゾーンを JST にしたかったり、やっぱりなんか自分で作ってみたかったので試してみることに。 あくまでもスタートとなる Base Image だけを作りたいので、Packer とか Ansibl…

AWS 上に Vagrant を使って CoreOS のマシンを起動する

今更な感じだし、ありきたりの話しですが、手順のメモメモ。 vagrant のインストール 普通にダウンロードしてインストールすれば OK。 rbenv を使っていますが、特にはまるポイントはありませんでした。 Vagrant http://www.vagrantup.com/ vagrant-aws plug…

AngularJS で Semaphore したい

とある API を AngularJS から呼び出す時、1秒間にコールできる回数が制限されているため、同時に大量のリクエストが飛ばないよう制御したかったんだけど、AngularJS の $resource ではその辺がうまく制御できないような感じがするので*1、とりあえず Semaph…

Lua を一般ユーザでソースコードからインストールする

ただし、readline も ncurses も一般ユーザでソースコードからインストールしている場合の方法。 そんな奇特な人はそんなにいないと思うけれど、自分のためにメモ。各ソフトウェアのバージョン等は以下の通りです。 Lua (5.2.3) ${HOME}/local/lua にインス…

GrowthForecast のバックエンドに PostgreSQL を使う

デフォルトで SQLite が利用できるし、たぶん得する人はいないと思うけれど、いろいろな理由で PostgreSQL しか選択肢がなかったので、PostgreSQL でも動くようにちょっと手を加えてみました。 といっても、CREATE TABLE しているところを PostgreSQL に対応…

2段階認証を実装したい

ちょっとした理由から Google などで使われている 2段階認証を実装してみることに。 Google の 2段階認証の場合はワンタイムパスワードを生成に、以下のスマホアプリを利用することができますので、今回はこのアプリに相乗りする形での実装を目指しました。 …

Perl の定数畳み込み

当然だけれど、定数の畳み込みが発生するのは constant モジュールを利用して宣言した場合のみですね。

64bit unsigned int を pack したい

ただし 32bit 環境で。

GitHub の Markdown Rendering API を Perl で手軽に利用したい

と思ったので、昔つくった Text::Markdown::GFM::Lite というのをちょっと手直ししてみると同時に Minilla を使ってみました。 Text-Markdown-GFM-Lite https://github.com/hatyuki/p5-Text-Markdown-GFM-Lite

Perl でプロセスの待ち合わせをする

たとえば以下のようなプログラムを書いて #!/usr/bin/env perl use strict; use warnings; use feature qw/ say /; use Parallel::ForkManager; use Time::HiRes ( ); my $process = 10; my $pm = Parallel::ForkManager->new($process); for (1..$process) …

placehold.it みたいなやつを作った

Web サイトのレイアウトを考えるときに、placehold.it や placehold.jp とかを使うと こうやって HTML を書くだけで、手軽に指定したサイズの画像が手に入ってすごく便利。 だけど、頻繁にアクセスが必要な場合や、社内のネットワークから出れない、出たくな…

Plack で PHP アプリの開発をしたら何故か捗った話し

普段のお仕事では相変わらず PHP な hatyuki です。普段お仕事では Windows PC に VirtualBox をインストールし、その中の Debian 上で開発しています。 Perl / PSGI で開発するときは plackup がありますが、PHP (Apache などをインストールしていましたが…

Perl と JavaScript 間で RSA 暗号を使いたい

サンプルが見つからないってことは、普通はやらないことをやろうとしているんだと思う。 ということで、以下のようなことをしてみたかったので、試してみました。 Client (JavaScript) 側で RSA 鍵 (秘密鍵・公開鍵) を生成 公開鍵を Server (Perl) に POST …

Chef-Solo できる Debian AMI をつくる

作業ログだけぺたり。たいしたことはやらず。 元の Debian の AMI は MarketPlace からもってきました。 AMI は Stable のものしかないんだけれど、事前に apt の設定を変えて Testing に dist-upgrade 済の AMI を作成して利用しました。 TimeZone や Local…

環境変数で config を切替えるためのクラス

PHP

id:cho45 さんが作成された Config::ENV という Perl モジュールがとても便利で、最近設定ファイルが必要な場合には、ほとんどのケースでこのモジュールを利用しています。 使い方については Advent Calendar に掲載された、以下の記事を読んでください。 環…

unstable からパッケージを借りて nginx 1.4.1 をインストール

Debian/weedy がリリースされたため、普段利用している環境も Debian/jessie へとアップグレードされました。 ということで(?)、前回の記事で CentOS に nginx 1.4.0 をインストールしましたが Debian/jessie にも SPDY 対応版の nginx をインストールする…

nginx 1.4.0 の SPDY を試してみる

nginx 1.3 の頃より patch をあてて SPDY を有効する方法を、色々な方が試されていますので、今更という感じはしますが nginx 1.4 がリリースされ SPDY と WebSocket が正式にサポートされたということで、改めて導入してみました。 ということでインストー…

HTML5 の canvas をさわってみた

仕事をしている時、ちょっと QR コードが欲しくなったけれど、手軽に生成できるサイトが見つけられなかったので、HTML5 の練習も含めて作ってみることにしました。 作ったのはこんな感じ。 Zebra http://qr.magicalhat.jp/ github https://github.com/hatyuk…

jperl と jcode.pl から卒業する

何をいまさらな話題ですが、文字コードが EUC-JP が主流だった時代に作られた jperl と jcode.pl に依存しているレガシーなシステムをモダンな Perl に書き換える場合には、Encode に加えて Encode::EUCJPMS を使うと簡単でした。 というメモ。 Encode-EUCJP…

Debian/Wheezy を TimeMachine のディスクとして使う

TimeCapsule はちょっとオーバースペックなんだもの。 ということで、Debian/Wheezy に netatalk をインストールして TimeMachine のディスクとして利用してみました。 調べてみると netatalk のバージョンが 2.1 未満の場合はソースからコンパイルして〜。…

WebSocket を使って Amon2 でチャットプログラムを書いてみる

ずいぶん前ですが Amon2 が WebSocket に対応したということで、今更感のあるチャットプログラムを書いてみることに。 今更とは言いつつも社内では IRC を使うことができないので、ちょっとしたメッセージがやりとりできるものを作ってみようかなと思い、そ…

新年早々 nginx_tcp_proxy_module を組み込んだ deb パッケージを作ってみる

昨年は本当に細々と更新してきましたが、今年も細々と更新していきたいと思います。本年もよろしくお願いいたします。 ということで、さっそく本題。新年早々 WebSocket で遊んでみたいなぁと思ったので、nginx で WebSocket を Proxy する場合に有名という…

Net::SSLeay がインストールできないときは

OS って 1回セットアップすると、あまり触らなくなるから、すぐ忘れちゃうんだよね。。。 cpanm などで Net::SSLeay をインストールしようとして "openssl/err.h" がないよ!と怒られたとき*1は # aptitude install libssl-dev *1:SSLeay.xs:153:25: fatal e…

GrowthForecast つかってみた

なんかすごくグラフを作成したい要件があったので、id:kazeburo さんが開発している GrowthForecast をつかってみました。 GrowthForecast https://github.com/kazeburo/GrowthForecast いつも通りメモだよん。 GrowthForecast を Clone する App::gh *1 を…

gcc をソースからインストールする

「RedHat Linux 4 を使っているんだけど、個人で gcc 4.6 をインストールしたい場合、どうすればいいの?*1」 とかいう意味不明なことを聞かれたので、ためしに手元の環境 (Debian/wheezy) の $HOME 以下に gcc をインストールしてみることに。インストール…

CentOS で Static Route を設定したい

これまた完全にメモ

git svn で特定の commit を merge するなど

完全に個人的なメモ。 うーん。git むずかしい。 リモートのリリースブランチを更新する $ git svn fetch リモートのリリースブランチをローカルに Checkout する $ git svn checkout -b local/RB-1.0.0 RB-1.0.0 trunk に入っているコミットをローカルのブ…

Apache Killer をかいてみる

すっごい久しぶりに日記を書こうかと。 Apache Killer が騒がれてから、ずいぶん時間も経ったのでちょっと前のネタを投稿。 「うちのサーバも Apache Killer に対処しなきゃね。」 と騒いでいた頃に、検証用のために Apache Killer をダウンロードしてみたん…

LVM の物理ボリュームを調べるには

% pvdisplay する。めもめも。

MacBookAir に Lion をクリーンインストールした

USB の起動ディスクを作る方法はいろいろ紹介されているので割愛。 Lion のインストール後に入れたソフトなどを、忘れないようにメモ。 homebrew を使いたいので、とにもかくにもまずは XCode を AppStore からダウンロード。 無料でダウンロードできるのは…

FurlX::Coro を使ってみたかった

節電対応で休日が日・月になった hatyuki です。ということで、明日がおやすみ!「DB から引っ張ってきた 5,000 件くらいの URL が、全部 HTTP Status Code 200 を返してくるか調べたいんだけど。」 という、なさそうでやっぱない依頼をうけたのでささっと書…

perlbrew 環境下で Alien::SVN をインストールする

どうしても Perl *1 から Subversion を操作する必要があったので、どうやら一般的なモジュールのようなので、以下のモジュールを使ってみることに。 Alien-SVN http://search.cpan.org/~mschwern/Alien-SVN/ と思ったら perlbrew 環境下ではすんなり cpanm …

感謝をこめて

ある意味、某氏へ。見てくれてありがとうございます。 しばらくお休みしていたけれど、これからまた日々の些細なことも、ちょくちょくと更新していこうかなぁと思うのです。がんばろー。

nvm + zsh なときは

setopt no_nomatch しておかないと $ nvm ls nvm_version:23: no matches found: v* N/A stable: nvm_version:27: no matches found: v*.*[02468].* N/A latest: nvm_version:27: no matches found: v*.*.* N/A current: nvm_version:27: no matches found: …

Debian/wheezy に Kyoto{Cabinet, Tycoon} をいれたい

と思ったら、予想以上にはまったのでメモ。 下準備 まずはコンパイルに必要なものをそろえます。 Debian なので、いつものように $ sudo aptitude install build-essential zlib1g-dev 自分の環境下ではこれだけ入れれば OK でした。 KyotoCabinet をインス…

[Perl] DBIx::Skinny::SQL で "JOIN table USING (column)"

なんか、いつもイレギュラーなことやってない?ばかなのしぬの? とか思いつつ、データベースの激しい都合上 my $rs = $my_skinny->resultset; # とある $rs さんの旅 ... $rs->add_join('table t' => [ { type => 'inner', table => 'join j', condition =>…