/etc/hosts に設定を書いたときの確認と反映
/etc/hosts は書いて保存したら自動的に反映にされるようですね。
例えばhostsに
127.0.0.1 hogehoge.com
と書いたとき、その確認をnslookupでやったらダメだった。
nslookup hogehoge.com > ;; connection timed out; no servers could be reached
pingでやったら大丈夫でした。
ping hogehoge.com > 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.054 ms > 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.136 ms
当たり前のネタでごめんなさい。
コマンドラインで画像のサイズ変換をする
ImageMagicを使ってみます。
OSはCentOS6.2です。
インストール
cd /usr/local/src wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz tar zxvf ImageMagick.tar.gz cd ImageMagick-6.8.0-4 #ここのバージョンはそのときの最新に変更してください ./configure make make install ldconfig #これをやらなきゃ読み込まなかった。 convert -version >Version: ImageMagick 6.8.0-4 2012-11-04 Q16 http://www.imagemagick.org >Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC >Features: OpenMP
使い方
convert -geometry 50% orange.jpg 50p.jpg
基本的に縦横比は自動的に維持するらしい
例: test.gif を 320x240 にリサイズして test2.gif という名前で保存
convert test.gif -resize 320x240 test2.gif
The NERD Commenterで独自のコメントアウトを定義する
とあるファイルタイプで対応していないコメントアウトをしたいなと、
思い、拡張できるのかなとNERD Commenterのソース(Github)を読んでいたら、
下記記述があった
if exists("g:NERDCustomDelimiters") call extend(s:delimiterMap, g:NERDCustomDelimiters) endif
どうやら、 g:NERDCustomDelimiters を定義してやれば、
独自のファイルタイプなどでもコメントアウトできそう。
ファイルタイプ hoge のときのコメントアウトを
##- 文字列 -##
というように定義したいときなどは、 .vimrc などに、
let g:NERDCustomDelimiters = {{'hoge': 'left': '##-', 'right': '-##'}}
と書けばできるようになります。
あとで、NERDCommenterのHelp確認してみたら、
ちゃんと「NERDCustomDelimiters」の項があって、そこにしっかり書いてありましたね。
Helpはしっかり見るようにします・・・
git clone 時に origin の名前を指定して clone する
最近使ったので、メモ。ヘルプにも書いてるけど。
$ git clone git@example.com:hogehoge.git -o hoge
そうすれば、originの名前を指定しつつcloneできます
gitconfigはこんな感じ
$ cat hogehoge/.git/config
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "hoge"] fetch = +refs/heads/*:refs/remotes/xxxx/* url = git@example.com:hogehoge.git
Helpには
--origin -o -- use given remote name instead of "origin"
とある
CentOS-6.3にNginx-1.3.6をインストールする
サーバーを構築する機会があったので、
せっかくだからNginxの現時点での最新バージョンを入れてみた。
Nginxは一旦ビルドすると、モジュールの追加は再コンパイルが必要なので、
使うかもってのは一旦入れてみた。
まあ、開発機だから、いいかなと・・・
・入れたモジュールは下記
モジュール名 | 説明 | 参考リンク |
---|---|---|
Cache Purge | Nginxのキャッシュをページ単位で削除したりできる | http://labs.frickle.com/nginx_ngx_cache_purge/ |
Http Headers Morte | HTTP レスポンスにヘッダーを付け足せる | http://wiki.nginx.org/HttpHeadersMoreModule |
Http Redis | NginxからRedisを利用できる | http://wiki.nginx.org/HttpRedis |
Drizzle | NginxからDrizzleを利用できる | http://wiki.nginx.org/HttpDrizzleModule |
Lua | NginxからLuaを利用できる | http://wiki.nginx.org/HttpLuaModule |
インストール手順
rootで行うとします。
※ここは許してください・・・
■Nginxモジュールダウンロード用のディレクトリ作成
mkdir /usr/local/src/nginx_modules && cd /usr/local/src/nginx_modules
■モジュールのダウンロード
●CachePurge
wget http://labs.frickle.com/files/ngx_cache_purge-1.6.tar.gz
tar zxvf ngx_cache_purge-1.6.tar.gz
●HttpHeadersMore
wget -O headers-more-nginx-0.18.tar.gz https://github.com/agentzh/headers-more-nginx-module/tarball/v0.18
tar xzvf headers-more-nginx-0.18.tar.gz
●HTTP Redis
wget http://people.freebsd.org/~osa/ngx_http_redis-0.3.6.tar.gz
tar zxvf ngx_http_redis-0.3.6.tar.gz
●Drizzle
#必要なモジュールインストール
yum install protobuf-devel.x86_64 uuid-devel.x86_64 e2fsprogs-devel.x86_64 libuuid-devel.x86_64 readline-devel.x86_64 boost.x86_64 boost-devel.x86_64 libxml2.x86_64 libxslt.x86_64 libxml2-devel.x86_64 libxslt-devel.x86_64 openssl-devel.x86_64
・gprefインストール(http://www.gnu.org/software/gperf/)
wget http://ftp.gnu.org/pub/gnu/gperf/gperf-3.0.4.tar.gz
tar zxvf gperf-3.0.4.tar.gz && cd gperf-3.0.4 && ./configure && make && make install
・boostインストール(http://www.boost.org/)
wget http://sourceforge.net/projects/boost/files/boost/1.51.0/boost_1_51_0.tar.gz/download
tar zxvf boost_1_51_0.tar.gz && cd boost_1_51_0
・drizzleインストール(https://launchpad.net/drizzle)
wget https://launchpad.net/drizzle/7.2/7.2.4/+download/drizzle-7.2.4-alpha.tar.gz
tar zxvf drizzle-7.2.4-alpha.tar.gz && cd drizzle-7.2.4-alpha
・drizzle-nginx-module
wget -O drizzle-nginx-module.zip https://github.com/chaoslawful/drizzle-nginx-module/zipball/master
unzip drizzle-nginx-module.zip
●Lua(モジュール)
wget -O lua-nginx-module.tar.gz https://github.com/chaoslawful/lua-nginx-module/tarball/master
tar zxvf lua-nginx-module.tar.gz
・Luaインストール
# Lua5.1xにしか対応していないみたい。
# nginx_lua_moduleのreadmeに書いてあった
#
# もし、皆さんが他の方法でNginxをビルドしてて
# "error: 'LUA_GLOBALSINDEX' undeclared (first use in this function) "
# などとメッセージが出たらLuaのバージョンによる問題の可能性があります。
#
wget http://www.lua.org/ftp/lua-5.1.5.tar.gz
tar xzvf lua-5.1.5.tar.gz && cd lua-5.1.5
make linux && make install
・LuaJIT
# 念のため、2.0
wget http://luajit.org/download/LuaJIT-2.0.0-beta10.tar.gz
tar zxvf LuaJIT-2.0.0-beta10.tar.gz && cd LuaJIT-2.0.0-beta10
make
■Nginxのダウンロード・インストール
wget http://nginx.org/download/nginx-1.3.6.tar.gz
tar zxvf nginx-1.3.6.tar.gz
cd nginx-1.3.6
# Configure
# 念のため --debugつけました。
#
./configure \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module \
--with-http_image_filter_module \
--with-http_geoip_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_stub_status_module \
--with-http_perl_module \
--with-debug \
--add-module=/usr/local/src/nginx_modules/ngx_cache_purge-1.6 \
--add-module=/usr/local/src/nginx_modules/agentzh-headers-more-nginx-module-6586984 \
--add-module=/usr/local/src/nginx_modules/chaoslawful-drizzle-nginx-module-0f975c6 \
--add-module=/usr/local/src/nginx_modules/chaoslawful-lua-nginx-module-b771a2e \
--add-module=/usr/local/src/nginx_modules/ngx_http_redis-0.3.6
# Make
make && make install
起動
/usr/local/nginx/sbin/nginx
でok
番外編(エラー解決編)
■ "Can't locate ExtUtils/Embed.pm" のエラー
yum -y install perl-devel perl-ExtUtils-Embed
http://www.netingcn.com/nginx-perl.html
■nginx起動エラー
error while loading shared libraries: libdrizzle.so.4: cannot open shared object file: No such file or directory
ライブラリがロードできていないので
1). LD_LIBRARY_PATH に追加するか,
2). /etc/ld.conf.d/ にロードパスを追加する。
ここでは(2)を選択
下記コマンドを実行する
echo "/usr/local/lib" > /etc/ld.so.conf.d/libdrizzle.conf
ldconfig
以上です。
ご指摘などございましたらどんどんくださるとうれしいです。
クラスインスタンス変数にアクセサを利用しアクセスする
クラスインスタンス変数、モジュール変数に対して、
attr_reader, attr_accessor などのアクセサでアクセスする方法
※利用頻度が低い!って話はおいておいて・・・
class TestClass @var = 0 class << self attr_accessor :var end end p TestClass.var #=> 0 p TestClass.var += 1 #=> 1 p TestClass.var += 1 #=> 2 module TestModule @var = 0 class << self attr_accessor :var end end p TestModule.var #=> 0 p TestModule.var += 1 #=> 1 p TestModule.var += 1 #=> 2
Rubyでベンチマークの平均などとれるモジュールをかいてみた
練習がてらに作ってみました。
下記がコードです。
require 'benchmark' class BBenchmark def self.measure(n=1, &b) res = [] Benchmark.benchmark( ' ' * 7 +Benchmark::CAPTION, 7, Benchmark::FORMAT, #1.8.x では Benchmark::FMTSTR 'total:', 'avg:' ) { |bm| n.times do |i| res << bm.report((i+1).to_s+':', &b) end puts '----------------------------------------------------' total = res.inject(Benchmark::Tms.new) { |sum, v| sum + v } [total, total/n] } puts '----------------------------------------------------' puts end end
利用方法
Ruby標準のベンチマークモジュールとほぼ同じで、
Benchmark.measure の所を少し変更して下記のように書くだけです。
#()内は実施したい回数 BBenchmark.measure(20) { a = {hoge: 'moge', foo: 'bar'}.to_json }
とすれば、以下の結果が出力されます。
user system total real 1: 0.000000 0.000000 0.000000 ( 0.000653) 2: 0.000000 0.000000 0.000000 ( 0.000351) 3: 0.000000 0.000000 0.000000 ( 0.000311) 4: 0.000000 0.000000 0.000000 ( 0.000310) 5: 0.000000 0.000000 0.000000 ( 0.000312) 6: 0.000000 0.000000 0.000000 ( 0.000325) 7: 0.000000 0.000000 0.000000 ( 0.000317) 8: 0.000000 0.000000 0.000000 ( 0.000321) 9: 0.010000 0.000000 0.010000 ( 0.003624) 10: 0.000000 0.000000 0.000000 ( 0.000200) 11: 0.000000 0.000000 0.000000 ( 0.000389) 12: 0.000000 0.000000 0.000000 ( 0.000206) 13: 0.000000 0.000000 0.000000 ( 0.000254) 14: 0.000000 0.000000 0.000000 ( 0.000123) 15: 0.000000 0.000000 0.000000 ( 0.000152) 16: 0.000000 0.000000 0.000000 ( 0.000123) 17: 0.000000 0.000000 0.000000 ( 0.000123) 18: 0.000000 0.000000 0.000000 ( 0.000117) 19: 0.000000 0.000000 0.000000 ( 0.000118) 20: 0.000000 0.000000 0.000000 ( 0.000131)続きを読む