MongoDB のレプリカセット運用時の 2.2 から 2.4 へのアップグレード

Webサービス自体はを止めずにバックエンドの MongoDB のバージョンアップをしたのでメモ。 具体的なバージョンは、2.2.2 から 2.4.1 へのアップグレード。 サービスの構成 フロントエンドに Nginx + Node の Web サーバ 1 台 バックエンドに MongoDB のデー…

24bit/96kHz のハイレゾ WAVE ファイルを 48kHz の AAC ファイルに変換する

e-onkyo などで提供されてるハイレゾ音源の WAVE ファイルを iTunes でAAC変換すると 44.1kHz になってしまう。 個人的に 96kHz なのだから 48kHz にしたく調べたところ、MAC OS X で afconvert コマンドを用いて変換することで可能なことがわかった。wav(WA…

Windows 8 でストアアプリが開かなくなったときの対処

いつの間にか、Windows 8 のタイルからアプリを開かなくなってしまった(クリックしてもタイルのエフェクトはあるものの何も反応なし)。 困り果てていたのだが、なんとか Windows 修復機能を試したところ復活した。 管理者権限でコマンドプロンプトを起動し…

シンプルなデーモンプログラムの制御スクリプト

Linuxなどで動かすデーモンプログラムを起動(start)・停止(stop)・再起動(restart)・状態確認(status)するための制御スクリプトを書いたのでメモしておく。 実装のポイント 一般的なプロセスIDファイルによるプロセス確認をしている。 停止時に3秒おきにシ…

Chrome Extension の createHTMLNotification メソッドでデータを渡してフレキシブルに内容を構成するには

Chrome拡張でデスクトップ通知の実装時に、HTMLを使うときデータを簡単に渡す方法について。 Desktop Notifications chrome.notifications - Google Chrome を見ると、通常のタイトル、イメージ、テキストの三つを渡して表示する通知と、HTMLで自由に組める…

HTTPサーバのログ解析からアタックを検出する簡易ツールを作ってみた

Webサイトを運用しているとアタックや如何わしいアクセスを調べたいときがあります。簡単にHTTPサーバのアクセスログから短い間隔で大量にアクセスしているホストを、諸々のコマンドで操作するのは面倒なので、簡単に検出できるツールがあると便利です。 探…

Mongoose でセカンダリにアクセス可能な接続を設定をするには

MongoDB でレプリケーションセットを構成する。MongoDBでは Secondary サーバへのアクセスを読み取りであってもデフォルトで拒否するようになっている。 このためには接続ごとに slaveOk フラグを立てる必要があるが、そのときの Mongoose の設定に手間取っ…

Windows 8 で Google Apps メールの新着通知をデスクトップに表示させるには

Google Apps(独自ドメイン向け)用のメール機能 (Gmail) を使っている。 せっかく Windows 8 にしたので OS 自体のデスクトップ通知機能を使ってみたい。 メールをセットアップすれば良いのだが、ちょっとポイントがあるのでメモ。 iOSでメールを使ってる人…

node の Array で forEach したときに break するには

jQuery.each メソッドだと、return true で continue, return false で break できます。 しかし、node で普通に array.forEach で同じようにやろうとしたらできない。 node の実装つまり ECMAScript 5 においては、array.forEach に break 処理はない。代わ…

iOS 6 の新しいアクションシート機能を UIActivityViewController で実装する (2)

iOS 6 の新しいアクションシート機能を UIActivityViewController で実装する - Tosshi Noteで iPhone アプリへのアクティビティ連携の実装方法を書きました。 その iPad 版です。例によって、UIPopoverController を使います。UIActivityViewController を…

iOS 6 の新しいアクションシート機能を UIActivityViewController で実装する

iOS 6 から Safari やカメラロールなどのアクションボタンをタップすると、タイル状に並んだアイコンから Twitter や Facebook への共有機能などが呼び出せるようになりました。 下記のように、OS標準以外のアプリにもこの機能を簡単に追加できます。 このア…

iOS バージョンとデバイス対応のまとめ

iOS

未明に iPhone 5, iPod touch (5th generation) の発表がありました。開発用に今後の端末のバージョンバリエーションをどうするか考えるため、まとめておく。 最新 iOS 6.0 まで対応するデバイス iPhone 5 *, iPhone 4S, iPhone 4, iPhone 3GS iPod touch (…

Ruby で Google Analytics から直近1時間のページビューランキングを取得する方法

サイトのアクセスランキングを作る方法はいろいろありますが、自前で HTTPサーバのログから計算するのは大変です。Google Analytics の API を使うとアクセス数が Ruby には Google Analytics API を操作できる Garb という便利なラッパーライブラリがありま…

リバースプロキシの Nginx でバックエンドの X-Powered-By ヘッダを消すには

バックエンドサービスが何で動いてるのかどうしてわかるのか不思議に思っていたら、X-Powered-By という拡張 HTTP ヘッダにフレームワークの情報が入ってることに気付いた。 ということでセキュリティホールがあったときによろしくないので、消すことにした…

Ubuntu 12.04 に Redmine 2.0.3 を構築した時の Apache + Passenger の設定

Ruby 1.9 で Passenger を動かすために試行錯誤したのでメモしておく。基本的には、アップグレード — Redmine Guide 日本語訳 などを参考にする。 Passenger のインストール $ sudo apt-get install libcurl4-openssl-dev $ sudo apt-get install apache2-pr…

Node + Express + EJS で実行環境に応じて出力を変えるには

クライアントの JavaScript をRAWコードと圧縮版の指定を切り替えたいのが目的です。 単純に min.js だったら .js に置換するように、Nginx などの Rewrite を使うこともできると思ったんですが、複数のファイルを一つに圧縮しているため、それだけでは満た…

WordPress をフロント Nginx のリバースプロキシ下で運用する場合に 管理画面を SSL に強制する設定

Nginx をフロントにおいて高速化するのは常套手段ですが、そのときに WordPress の wp-admin(管理画面)は SSL を有効にしたいときの設定方法です。 Nginx の設定 # HTTP server # server { listen 80; location / { proxy_redirect off; proxy_set_header …

Ubuntu のユーザ管理を LDAP Account Manager でするようにした

Ubuntu 12.04 LTS も出たのでさくらVPSで色々とセットアップ中です。Unix のユーザ管理は、LDAPで行うようにし、かつLDIFを一から書くのは面倒なので LDAP Account Managerを使うようにしました。その時のメモです。 諸々のパッケージをインストール # apt-g…

さくら VPS で Ubuntu 10.04 (LTS) から 11.10 にアップグレードするには

さくらのVPSがリニューアルしたので移行するべく新しい VPS を同環境にセットアップしようとしたら意外に嵌まったのでメモ。まずはカスタムOSインストールで Ubuntu 10.04 を入れておく。続いて /etc/update-manager/release-upgrades を編集してアップグレ…

Ajax Web ぺージを検索ボットがクロールできるコンテンツを返すようにする

最近は様々な Web サイトで Ajax が当たり前のように使われています。 ページ内のコンテンツをほぼ全てAjaxで別途ロードするようなサイトの場合、検索エンジンのロボットにはすっからかんのページがクロールされてしまいます。そのために、サーバ側で予めブ…

Postfix でバーチャルドメインで受けたメールを指定アドレスに転送するには

そのホストのメインドメインとは別のドメインのメールアドレスにメールが来たら、別のメールアドレスに転送する方法について。 まずメインドメインとは別のドメインを受けるには、virtual_aliases_domains に設定します。さらにそのドメインのメールをどう処…

US SIMフリー版 iPhone 4S を輸入してドコモの Xi 契約でテザリングするまで

まず前提として私は iPhone これまで持ったことがありません(iPhone アプリを出していますが http://itunes.apple.com/jp/artist/tilfin-ltd/id371277701)でした。これまで iPod touch + Pocket WiFiで乗り切っていましたが、ドコモならテザリングできると…

Apache SSL だったものを Nginx をフロントにおいてリバースプロキシ化したときの設定

さくらの VPS (Ubuntu) で Apache に 80 (http), 443 (https) で Listen させていました。バーチャルホストでいくつかのドメインをこれで処理していましたが、フロントに Nginx を置いて必要な処理だけ Apache にすることにしました。 そこで SSL を Nginx …

Ubuntu の Redmine を 1.3.0 にアップグレードした

Redmine 1.2.0 から 1.3.0 アップデートするのに色々とハマったのでメモしておく。Redmine 1.3.x で必要となる Rails などの依存バージョンは以下の通りです。 Ruby 1.8.7 Rails 2.3.14 Rack 1.1.1 参照)Redmineのインストール — Redmine Guide 日本語訳 Ru…

AKB48 の Google+ アクティビティデータを MongoDB で MapReduce してみた

MapReduce について実際やってみたことがなかったので、MongoDB で試しそうと思っていました。 そんななか、AKB48 の(18歳以上?の)メンバーが Google+ を開始しました。これで「バルス」以上に定時でかつてない負荷が Google+ にかかり始めたと思われます…

Ruby で Windows Azure Storage テーブルを操作するには

Github にある johnnyhalife/waz-storage · GitHub ライブラリを使うと簡単に操作できます。Windows Azure Storage REST API のラッパーになってます。 Rubygems でインストール $ sudo gem install waz-storage Fetching: mime-types-1.17.2.gem (100%) Fet…

Kindle Fireを取り寄せたのでRoot奪取しないでどこまでできるかレポート

Amazon.com 米国国内でしか買えないらしい Amazon の Kindle Fire ですが、Hop・Shop・Go 使って購入しました。 途中で関税かかってしまいましたが、まあ iPod touch 程度のお値段なんで安いです。 ダンボの中身は非常に簡素サイズは Galaxy Tab と同じ7イ…

Express などで Redis でセッション管理した場合のDBナンバーの指定方法

Node.js + Express な環境でセッション情報を Redis に置くようにしていた。デフォルトのdbに入れていたので別のにしようと思い調べたところ、Redis はナンバリングで DB を指定することがわかった。 Express の Guide には設定方法が載っていなかったが、使…

Mongoose で MongoDB の Embedded Documents の扱いで嵌まったこと

node(.js)と相性が良いということで、MongoDB とそのJavaScript O/R マッパーライクなモデリングライブラリの Mongoose を使い始めました。 MongoDBと言えばドキュメント指向モデルでそれを特徴づける Embedded Documents が有名ですが、この機能を Mongoose…

iOS デバイスで現在 iPod で再生中の曲情報を取得するには

iPhone, iPad, iPod touch で音楽などを再生したりするには、MediaPlayer.framework を使います。MPMusicPlayerController が音楽を再生を制御するコントローラクラスでこのクラスメソッドの iPodMusicPlayer を使うと iPod のコントローラが取得できます。 …