仙台の山奥で自転車に乗ったり転んだり

愛車の GIOS でサイクリングしたりポタリングしたり、それをブログに記録してみたり。ロードバイクや自転車や坂のことを書いてみたり。ときたまプログラムのことを忘れないようにメモってみたり。

Arrayの空要素の列挙

ちょっと試してみて気になったのでメモ。 ↓の実行結果が、手元のNode.jsだと期待通りなのにChromeのコンソールだと(3)のArray#mapだけ「6」になる。 JavaScriptの動的配列では、forEachなりmapなりは空要素を無視する仕様だと理解していたんだけど……。何か間…

Windowsコマンドでゴミファイルの掃除

下書きから発掘した何時かのメモ.svnディレクトリがある? C:\work>dir .svn /b/ad/s.svnディレクトリを全て削除 for /R /D %I in (*.svn) do RMDIR "%I" /S /QThumbs.dbファイルある? C:\work>dir Thumbs.db /b/a-d/sThumbs.dbファイル全て削除 C:\work>ER…

Memcacheで失敗したときのコールバック

PHP

Memcache#addServerは第8引数のコールバック関数で、エラーが発生した際のい処理を登録しておくことができる。ちなみにMemcachedの方がメジャーだと思うが、そっちにはエラーに対するコールバックの機能はないみたい。同メソッドはコネクションプールにmemca…

サーバに git の bare リポジトリを用意して共有する

プロジェクトのリポジトリを作って $ mkdir tmprepos $ cd tmprepos $ git init $ touch empty $ git add . $ git commit -m "initialization" 作業リポジトリからbareリポジトリを作る $ sudo mkdir -p /var/git-repos $ cd /var/git-repos $ git clone --b…

今日入れ直したHomeBrewのメモ

最近、Macの入れ替えの機会が多くて、そのたびにHomeBrewの入れ直しではまっている気がします。 とりあえず、新しいAir11で入れ直したHomeBrewと、とりあえずのパッケージを記録しておきます。 $ ruby <(curl -fsSk https://raw.github.com/mxcl/homebrew/go…

バッチ処理のログから処理時間だけを抜粋して平均を計算

あるサーバで5分毎に実行しているバッチ処理があって、毎回の処理でどの程度の処理時間がかかっているのか、サーバの負荷と比較したときに処理時間は比例するのか……など調べていた。 細かな解析についてはスクリプトを用意してゴリゴリと解析していたんだけ…

kSarでsarコマンドの出力をグラフ化、と日本語の文字化け

先日仙台のインフラ勉強会に参加して、藤田さんが発表でちょっと見せてくれたkSarが良さげだったので試してみました。前に試したときは、良さを堪能できなかった、というか英語で使いこなせなかったのですが、コンソール上でsarが出力する数字と睨めっこする…

VPSのCentOSマシンにmoshをインストール

出先からちょっとしたサーバのメンテナンスをする機会があるので、Moshおもしろそうだなーと思っていたんですが、導入の手順をみていてコンパイルなり必要になりそう……と躊躇していまいた。 ちょっとした機会でMoshを実際に使っている実例をみたので、この機…

JPEG画像の上下左右に余白を設ける

表題のとおり、(目的のサイズよりも縦横ともに小さいが)縦横のサイズが不定な不特定多数のJPEG画像を、全て同じ大きさの画像サイズに変換したい。元の画像は目的のサイズよりも必ず縦横どちらも小さいので、変換によって発生する余白は全て白にしたい。「I…

コンソールで設定ファイルを編集して、作業メモなどとして転載するとき、ヒアドキュメントを使うとスマートだよね、というメモ

表題でメモは完了している、という話しですが。 # cat > /etc/syslog/hoge <

コンソールで設定ファイルを編集して、作業メモなどとして転載するとき、ヒアドキュメントを使うとスマートだよね、というメモ

表題でメモは完了している、という話しですが。 # cat > /etc/syslog/hoge <

バックアップのチェックサム

サーバをiDC「A」からiDC「B」に移転して、一段落もついてiDC「A」のクローズ準備をしていました。サービスはiDC「A」に移転して正常に稼働をしてからしばらく経つので、基本的にiDC「B」にはクリティカルな残り物はないはず。という前提はあるものの、この…

コンテンツのバックアップ

コンテンツをバックアップするスクリプトを書き上げてから、こんな単純な要求に対して複雑すぎる……感が半端ない。無駄かー (テストで)「/etc/」以下と、「/var/log/」以下をバックアップ バックアップは25日間保存 「/srv/contents-backup-datastore」以下…

PostgreSQLのメンテナンススクリプト

VACUUMを実行するバッチのスクリプト 常態的に日次で実行したいので、「FULL」のオプションはつけていません。 「FULL」のオプションがないので、テーブルのロックなどは発生しないと考えています。 不定期的なサーバメンテナンスのタイミングで、手動で「FU…

CakePHPで複合主キーと仲良くやる

CkaePHPのO/Rマッパー(?)は複合主キーに非対応なので、自前でCRUDを実装する前提の方がうまくいくと思います。 DataSourceクラスが便利なので、上手く使えば意外とスムーズに実装できたりできなかったり……。でも、せっかくだから自動化できる部分は活用し…

データベースの設定が混在している環境のテストケース

デフォルトのデータベースとして「MySQLのデータベースその1」を利用して、「MySQLのデータベースその2」や「Oracleのデータベース」なども混在して利用するという開発環境での話し。 この環境でデフォルトではない「Oracleのデータベース」を利用するモデル…

CakePHPからPostgreSQLの正規表現を利用する、きっと冴えたやり方

実際のとこ、かなり泥臭いやり方なので全然冴えてはいないところですが……。あるマスタのテーブルドには、番号体系の正規表現を保存した列がある。 ユーザは、入力したコードを番号体系の正規表現でパターンマッチングして、マスタから特定のレコードを検索す…

CakePHP のモデルで任意の SQL を実行するノウハウ

業務系のバックエンドをWebアプリケーションと連携するときなど、複合主キーで CakePHP が上手く操作できなくて、効率良く操作できないものかと悩んだ際のメモです。こんなやり方がいいのかは微妙ですが、復号主キーのテーブルを一つのモデルとして利用した…

誕生日から年齢を計算?

php

テストもしてないどころか動かしてもいないけど、勢いで殴りがいてみた。 /** * 誕生日から年齢を算出 * * @param string $birthdayDay 誕生日(UNIX タイムスタンプに変換する日付の書式) * @param string $today 今日(UNIX タイムスタンプに変換する日付…

ソーシャルゲームとかの話題で出てくる「IP」って?

知的財産権(Intellectual Property Right)のこと? いや、話しの趣旨とかからしてそうなんだろうけど……。 誰に質問していいのやら、素朴な疑問。

Apacheの起動失敗

不安定なWebサーバを再起動でしのごうとしたら、問題なく終了したサービスが起動してこない……。 あせってネットワークを再起動したり迷走したけど、よく確認したら終了しないで生き残ったプロセスがいるから、80番ポートが解放されていないのが原因でした。 …

最近の履歴からメモ

(UTF-8)でデータベースクラスタを初期化したPostgreSQLで、EUC-JPのデータベースを作成する。 $ createdb -U postgres -h localhost --encoding EUC_JP --locale=ja_JP.EUC_JP --template=template0 {dbname} 特権なしのユーザを作成 $ createuser -U post…

bash の read でバックスラッシュをエスケープ文字として扱わない

プログラムの検証で、何千パターンかの引数をリストアップしたファイルをもとに、プログラムを逐次実行して検証していたら、バックスラッシュを含むパターンだけ失敗していた。イメージ $ cat pattern.txt | while read TEST; do ~/test_method "${TEST}"; d…

bash の for文でループ

毎回、忘れて調べなおしている気がする……メモ「$(seq 1 100)」 $ for i in $(seq 1 100); do USER=`printf User%04d $i`;sh hoge.sh $USER >> ~/users.txt; done; とか

新しいサーバで shared_memory_size.pl を実行しようとするたびに、Linux::Smaps モジュールがなくてつまづくのでメモ ついでに、自分のユーザで一回やってから、rootユーザじゃなきゃ権限ないじゃん……、てのも何度も繰り返した。cpanm をインストールする前…

デフォルトゲートウェイが別々の(パブリックな)ネットワークでサブネットを越せないネットワークで、デフォルトゲートウェイを追加して(?)やってルーティングを通す。 # route add -net 192.168.0.0 gw 192.168.42.1 metric 1 netmask 255.255.0.0 eth0

むりやりPostgreSQL版も

↑で作成したバックアップのスクリプトを、無理やりPostgreSQL版にも移植してみた。 PostgreSQLサーバの接続可能なデータベース一覧からバックアップ対象のリストを取得する処理など、かなり強引で無理やりな感じになっちゃいました。 #!/bin/sh set -e set -…

バックアップのスクリプト

汎用的なMySQLサーバのデータベースをバックアップスクリプトです。システムの仕様でバックアップはNASに保管するので、バックアップデータをマウントしたNFSに保存しています。 ついでにバックアップが必要になった時のケースや障害の内容などにあわせて、…

サーバ間のデータベース移行

すごく単純に、PostgreSQLサーバの一部のデータベースを移行する必要があって、かなりの数だから pg_dumpall 使ったり、psql コマンドの -l オプションでリストアップしたり……とか一括で処理しようと思った。 でも、該当のサーバでは多数のデータベースが稼…

古いサーバで稼働していたWebアプリケーションの移植

古いサーバで稼働していたシステムを、新たらしい仮想環境に移植したときの、大雑把なメモです。 データベース(PostgreSQL)の移行 デーベースサーバも新しい環境に移行したものの、サーバ間はVPNがあったのではまることなく楽でした。新しいサーバにユーザ…