2011/02/14

Rails 3 で OpenSSL::SSL::SSLError

Rails 3 でプロジェクト作成後、まずは jquery を使うようにしようと思い

$ rails g jquery:install

すると、早速エラー発生。

    fetching  jQuery UJS adapter (github HEAD)
c:/ruby/lib/ruby/1.8/net/http.rb:586:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

ソースを github から取得する際に、SSL 接続でエラーということか。

Rails3 で jQuery を使う を参考に、environment.rb に下記を追記。

require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

無理やり SSL 非接続にしてなんとか回避。とりあえずは、よしとします。

2011/02/09

Google Maps API v3 でカスタムマップを作成

暫く前に、「googlemapでドラクエ」ということで、ドラゴンクエストの世界地図を Google Maps で表示するサイトが話題になりました。
当時、コレを見て感動したのを覚えています。

今では Google Maps API も v3 となり、v2 は正式に廃止され、アップデートすることが推奨されています。

ということなので、カスタムマップの作成を v3 でやってみます。

大きい画像の用意

まずは、拡大時に耐えるような大きな画像を用意します。

1900年に作成された日本の世界地図 から拝借しました。

タイル(tile)を作成

Google Maps は、それぞれのズームレベルに合わせて 縦横 256px の画像(タイル)を地球全面に覆う仕組みになっています。
例えば、ズームレベル 1 では、256x256 px の画像を縦横 2枚、計 4枚のタイルにより構成されます。
ズームレベル 2 では、縦横それぞれ 2 倍の、計 16枚のタイルで構成されます。

GMIC - The GMap Image Cutter

というわけで、多数のタイルが必要になるのですが、自力でカットしていくのははっきり言って無理があります。

そこで GMIC というとても便利なツールの登場です。

このツールを使えば、用意した画像を Google Maps に合わせたタイルにカットしてくれます。しかも、解像度から最大ズームレベルまで判断してくれます。

使用方法も簡単で、ダウンロードした zip を解凍し、GMapImageCutter.batを実行(Windows の場合。その他は .sh)して起動させます。

起動したら、File を Open して、 Create するだけ!簡単です。動作も高速であっという間に作業が完了します。

出力ファイルには、タイル画像だけではなく、作成したタイルを表示するためのサンプル HTML も出力されます。
大きな画像を Google Maps 的に見たい!というなら、これだけで OK ですね。

V3

GMIC より出力された HTML は、残念ながら今現在は v2 の Google Maps API を使用しています。

そこでやっと本題の、カスタムマップを v3 で書き換えてみます。

ポイントは、ImageMapType というクラスを使うことで、一から MapType インターフェースを実装する手間を省いています。

サンプルは下記リンクから!

Google Maps API v3 カスタムマップサンプル

 

参考:

2011/02/02

さくら VPS で Wordpress のチューニング

さくら VPS はメモリが 512M とちょっと少なめです。Swap が有るためメモリオーバーで即ダウンするとこはありませんが、すぐに Swap メモリに手を出し極端なパフォーマンス低下を招いたりします。

Wordpress でサイト構築した際は、チューニングを事前に実施しておくことで、Swap を食いつぶして Apache がアクセス不能になって焦る、ということがないようにしたいものですね。

APC - PHP アクセラレータ

Wordpress は PHP, MySQL を使用しています。
まずは PHP のチューニングということで、定評のある APC をインストールします。

APC(Alternative PHP Cache) は、PHPの中間コードのキャッシュや最適化を行う拡張モジュールです。

インストールは、 yum で。Remiリポジトリからインストールするので、予め有効にしておきます。

$ sudo yum search php-pecl-apc
php-pecl-apc.x86_64 : APC caches and optimizes PHP intermediate code

$ sudo yum install php-pecl-apc

設定(/etc/php.d/apc.ini)はデフォルトを使用し、インストール後は httpd を再起動します。

$ sudo /etc/rc.d/init.d/httpd restart

APC の動作確認用ファイルをコピーして、ブラウザから動作チェックできるようにします。
なお、管理者情報はデフォルトから変更しておきます。

$ cp /usr/share/doc/php-pecl-apc-3.0.19/apc.php /var/www/html/www.domain.com/
$ sudo vi /var/www/html/www.domain.com/apc.php
defaults('ADMIN_USERNAME','apc');
defaults('ADMIN_PASSWORD','password');

MySQL のチューニング

次は、MySQL の設定を変更し、キャッシュとバッファの設定をします。

$ sudo vi /etc/my.cnf
[mysqld]
query_cache_limit=1M
query_cache_min_res_unit=4k
query_cache_size=24M
query_cache_type=1
key_buffer = 16M
sort_buffer_size = 1M
read_buffer_size = 256K

$ sudo /etc/rc.d/init.d/mysqld restart

Apache のチューニング

次は、Apache の設定の見直し。

$ sudo vi /etc/httpd/conf/httpd.conf

Timeout 45                  #接続を切るまでの時間
KeepAlive On                #接続の継続を許可
KeepAliveTimeout 3          #継続時間

StartServers       5        #起動時のプロセス数
MinSpareServers    5        #待機プロセス数の最小個数
MaxSpareServers   10        #待機プロセス数の最大個数
ServerLimit       64        #プロセス数の上限
MaxClients        64        #稼動プロセスの最大個数
MaxRequestsPerChild  4000   #一つのプロセスが実行するリクエスト数


$ sudo /etc/rc.d/init.d/httpd restart

ついでに、PHP の設定で、 zlib を有効にし、転送速度を向上させておきます。

$ sudo vi /etc/php.ini

zlib.output_compression = On

WP Super Cache - Wordpress プラグイン

最後に、Wordpress 自身のチューニングで、WP Super Cache というプラグインをインストールします。

プラグインのインストールは、Wordpress のダッシュボードからインストール出来ます。

インストール後は、設定ページから Caching On にすると有効になります。

まとめ

  • APC で PHP のチューニング
  • キャッシュとバッファの設定で、MySQL をチューニング
  • メモリに合わせて、Apache をチューニング
  • WP Super Cache で、Wordpress をチューニング

これで、かなり高速・軽量になったかと思います。
あとは、状況に合わせて細かな設定変更をしていくといいと思います。

 

参考
AKIBE - さくらのVPS CentOSでサーバ構築 13 – パフォーマンス

2011/01/24

[WordPress]ウィジェットのメタ情報デフォルト値を編集する方法

ウィジェットのメタ情報

WordPress のウィジェットで「メタ情報」というのがありますが、これをどうにか編集できないか?というわけで、その方法の Tips です。

デフォルトのメタ情報

  • サイト管理
  • ログイン/ログアウト
  • 投稿の RSS
  • コメントの RSS
  • WordPress.org

default-widgets.php

デフォルトのメタ情報の内、コメントの RSS と、WordPress.org へのリンクは不要だったのでコレを削除。

wp-includes の default-widgets.php がウィジェットのデフォルト値を管理しているので、こちらを修正すれば OK です。

wp-includes/default-widgets.php 300行目あたり
      <ul>
      <?php wp_register(); ?>
      <li><?php wp_loginout(); ?></li>
      <li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php echo esc_attr(__('Syndicate this site using RSS 2.0')); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
      <li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php echo esc_attr(__('The latest comments to all posts in RSS')); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
      <li><a href="http://wordpress.org/" title="<?php echo esc_attr(__('Powered by WordPress, state-of-the-art semantic personal publishing platform.')); ?>">WordPress.org</a></li>
      <?php wp_meta(); ?>
      </ul>

ちなみに、デフォルト値を変更せずに、各サイトごとに修正するにはどうするんだろうか…?知ってる方がいましたら教えてください!

WordPress レッスンブック 3.x対応
エビスコム
ソシム
売り上げランキング: 874

2010/12/31

End Of 2010

ついに 2010 年も最後の日になりました。
お世話になった皆様方、本当にありがとうございました。

今年は、Android の本格的な普及や、iPad や Android タブレットなどモバイル環境が劇的に変化してきました。
また、Twitter や Facebook など、日本でも海外標準のものがどんどん普及していきました。

来年はどんなことが起こるのかと、わくわくする反面、流れについて行けるのかと不安な面もありますね。

新しいことにどんどんチャレンジし、常にエッジでいたいものです。
そしてそれを仕事にフィードバックできると最高ですね。

それでは、皆様、良いお年を!