Gitのユーザ管理をgitosisで設定する

Gitリポジトリを複数の人と共有したいが、
サーバにUNIXのユーザアカウントを追加したくない、ということでgitosisを設定した。

gitosis – Git リポジトリ群の管理とアクセス制御 vol.0
gitosis – Git リポジトリ群の管理とアクセス制御 vol.1

このページが大変参考になった。

以下、既存のgitリポジトリをgisosisでアクセス制御するところまで設定できたので記録。

前提

  • gitサーバ……..gitserver.yamakk.com
  • クライアントA (MacBookPro 実作業)……..mcbk.local
  • クライアントB (VMWare上のCentOS5)……..cent5.local
  • 前準備1
    mcbk.localとcent5.localそれぞれ公開鍵(~/.ssh/id_dsa.pub)を作る

    
    % ssh-keygen -t dsa
    
    

    前準備2
    sshのポートを22から変更しているサーバなので、
    mcbk.localとcent5.localの.ssh/configにsshのホスト設定をする

    Host gitserv
    HostName gitserver.yamakk.com
    port 12345
    

    これで
    % ssh gitservとするだけで
    % ssh -p 12345 gitserv.yamakk.com と同じことができる

    以下の表記
    mcbk.local% # mcbk.localからコマンドを実行
    cent5.local% # cent5.localからコマンドを実行
    とする.

    実際の設定
    Read the rest of this entry »

    Posted: August 12th, 2010 | Author: | Filed under: 技術 | Tags: , , | No Comments »

    Import polygon data into PostGIS

    国土数値情報統一フォーマットのダウンロードサービス 行政界・海岸線(面)のデータを
    国土数値情報データ変換ツールをつかってShapeに変換したものをPostGISにinsertする。

    参考 国土交通省にあるGISデータをPostGISへインポート(改訂版)

    流れとしては,
    国土数値情報データ–>(Ksjtool)–>Shapefile–(PostGIS shp2pgsql)–>SQL
    こんな感じ。

    47都道府県のPolygonをバッチでPostGIS DB入れられるようスクリプトを書いた.
    import_polygon.py

    #coding:utf-8
    import os
    import glob
    
    for dir in glob.glob('N03*'):
        basename = os.path.basename(dir)
        _shp = '%s*.shp' % (os.path.join(dir,basename))
        shapefile = shapefile = glob.glob(_shp)[0]
        
        create_sql = '%s_createtable.sql' % os.path.join(dir,basename)
        create_cmd = 'shp2pgsql -p %s japan > %s' % (shapefile, create_sql)
        print create_cmd
        os.system(create_cmd)
    
        insert_sql = '%s_insert.sql' % os.path.join(dir,basename)
        insert_cmd = 'shp2pgsql -W cp932 -a %s japan > %s' % (shapefile, insert_sql)
        print insert_cmd
        os.system(insert_cmd)
        
        load_create_cmd = 'psql -U postgres gistest < %s' % create_sql
        load_insert_cmd = 'psql -U postgres gistest < %s' % insert_sql
    
        print load_create_cmd
        os.system(load_create_cmd)
        print load_insert_cmd
        os.system(load_insert_cmd)
    

    実行

    $ python import_polygon.py
    

    SQLで入っているか確認

    $ psql -U postgres gistest
    psql (8.4.4)
    Type "help" for help.
    
    gistest=# SELECT prn, cn2, SUBSTRING(AsText(the_geom), 0, 100) from japan limit 5;
     兵庫県 | 豊岡市 | MULTIPOLYGON(((134.793994 35.668108,134.793978 35.668144,134.793915 35.668139,134.793854 35.668166,
     兵庫県 | 豊岡市 | MULTIPOLYGON(((134.762469 35.674204,134.762507 35.674247,134.762601 35.67427,134.762675 35.674276,1
     兵庫県 | 豊岡市 | MULTIPOLYGON(((134.762035 35.673419,134.762049 35.673454,134.762098 35.673476,134.762188 35.673457,
     兵庫県 | 豊岡市 | MULTIPOLYGON(((134.761883 35.672992,134.761889 35.673025,134.761921 35.67304,134.761951 35.673035,1
     兵庫県 | 香美町 | MULTIPOLYGON(((134.535152 35.66762,134.535201 35.66763,134.535221 35.667637,134.535186 35.667659,13
    

    吉祥寺駅付近の(x,y)=(35.7031,139.5797)で検索 //PostGISの座標表記はすべてyx順

    $ psql -U postgres gistest
    psql (8.4.4)
    Type "help" for help.
    
    gistest=#SELECT prn, cn2 FROM japan WHERE ST_Contains(the_geom, GeomFromText('POINT(139.5731 35.7031)'));
      prn   |   cn2    
    --------+----------
     東京都 | 武蔵野市
    (1 row)
    

    Spatial Indexを作成する

    $ psql -U postgres gistest
    psql (8.4.4)
    Type "help" for help.
    
    gistest=#CREATE INDEX inx_japan ON japan USING GIST (the_geom GIST_GEOMETRY_OPS);
    CREATE INDEX
    
    gistest=# VACUUM ANALYZE japan;
    VACUUM
    

    MapServerで確認
    japan.map

    MAP
        SIZE 800 800           #画像size
        EXTENT 128 33 150 44   #出力範囲の座標
        STATUS ON              #地図を表示するか
        UNITS DD               #地図の単位(DD は緯度経度)
        IMAGECOLOR 255 255 255 #背景色R G B
        IMAGETYPE PNG          #地図画像を保存する形式
        LAYER
             NAME "japan"
             CONNECTIONTYPE POSTGIS
             CONNECTION "user=postgres password='' dbname=gistest host=localhost"
             DATA "the_geom FROM japan" #select文
             TYPE LINE
             STATUS ON
             CLASS
                 COLOR 0 0 0
             END
        END
    END
    
    $ sudo yum install gd-devel
    $ wget http://download.osgeo.org/mapserver/mapserver-5.6.5.tar.gz
    $ ./configure --with-postgis=/usr/local/pgsql/bin/pg_config --with-proj=/usr/local
    $ make
    $ ./shp2img -m japan.map -o japan.png
    

    japan.png
    japan

    Posted: July 21st, 2010 | Author: | Filed under: 技術 | Tags: , , | No Comments »

    Installing PostGIS CentOS5.4

    Install PostgreSQL

    $ sudo /usr/sbin/adduser postgres
    wget http://www.ring.gr.jp/pub/misc/db/postgresql/source/v8.4.4/postgresql-8.4.4.tar.gz
    $ ./configure 
    $ make 
    $ sudo make install
    $ sudo chown -R postgres:postgres /usr/local/pgsql
    

    .zshrc

    export PGHOME=/usr/local/pgsql
    export PGLIB=$PGHOME/lib
    export PGBIN=$PGHOME/bin
    export PGDATA=$PGHOME/data
    export PATH=$PATH:$PGBIN
    export LD_LIBRARY_PATH=/usr/local/lib:$PGLIB
    

    Start PostgreSQL

    $ su postgres -c "initdb --no-locale --encoding=UTF8"
    $ su postgres -c "pg_ctl -w start"
    ---
    LOG:  database system is ready to accept connections
     done
    server started
    

    PostgreSQL startup script

    $ sudo cp /home/postgres/postgresql-8.4.4/contrib/start-scripts/linux /etc/rc.d/init.d/postgresql
    $ sudo chmod 755 /etc/rc.d/init.d/postgresql
    $ sudo chkconfig --add postgresql
    $ sudo chkconfig postgresql on  
    $ service postgresql start
    

    /etc/ld.so.conf

    include ld.so.conf.d/*.conf
    /usr/local/lib
    /usr/local/pgsql/lib/
    

    then

    /sbin/ldcondig
    

    Install Proj

    wget http://download.osgeo.org/proj/proj-4.7.0.tar.gz
    $ ./configure
    $ make 
    $ sudo make install
    

    Install Geos

    wget http://download.osgeo.org/geos/geos-3.2.2.tar.bz2
    $ ./confiture
    -----
    Swig: false
    Python: false
    Ruby: false
    
    $ make 
    $ sudo make install
    

    Install libxml2

    $sudo yum install libxml2-devel
    

    Install PostGIS

    wget http://postgis.refractions.net/download/postgis-1.5.1.tar.gz
    $ ./configure --with-geosconfig=/usr/local/bin/geos-config --with-projdir=/usr/local/lib
    PostGIS is now configured for i686-pc-linux-gnu
    
     -------------- Compiler Info -------------
      C compiler:           gcc -g -O2
      C++ compiler:         g++ -g -O2
    
     -------------- Dependencies --------------
      GEOS config:          /usr/local/bin/geos-config
      GEOS version:         3.2.2
      PostgreSQL config:    /usr/local/pgsql/bin/pg_config
      PostgreSQL version:   PostgreSQL 8.4.4
      PROJ4 version:        47
      Libxml2 config:       /usr/bin/xml2-config
      Libxml2 version:      2.6.26
      PostGIS debug level:  0
    
     -------- Documentation Generation --------
      xsltproc:             /usr/bin/xsltproc
      xsl style sheets:    
      dblatex:             
      convert:              /usr/bin/convert
    
    $ make 
    $ sudo make install
    

    Test Installation

    $ su postgres
    $ cd /home/postgres/postgis-1.5.1
    $ make test
    --- 
     ok
     regress_buffer_params. ok
     hausdorff. ok
    
    Run tests: 49
    Failed: 0
    

    Create GIS database

    $ createdb gistest
    $ createlang plpgsql gistest
    $ psql -d gistest -f /usr/local/pgsql/share/contrib/postgis-1.5/postgis.sql
    $ psql -d gistest -f /usr/local/pgsql/share/contrib/postgis-1.5/spatial_ref_sys.sql
    

    SQL

    $ psql -U postgres gistest
    gistest=# CREATE TABLE gis(id SERIAL);
    gistest=# SELECT AddGeometryColumn('gis', 'latlng', 4326, 'POINT', 2);
    gistest=# SELECT AddGeometryColumn('gis', 'line', 4326, 'LINESTRING', 2);
    gistest=# SELECT AddGeometryColumn('gis', 'polygon', 4326, 'POLYGON', 2);
    gistest=# INSERT INTO gis (latlng, line, polygon) VALUES (GeomFromText('POINT(50 50)', 4326), GeomFromText('LINESTRING(1 1, 99 99)', 4326), GeomFromText('POLYGON((25 25, 75 25, 75 75, 25 75, 25 25))', 4326));
    gistest=# select AsText(latlng), AsText(line), AsText(polygon) from gis;
        astext    |        astext         |                  astext                 
    --------------+-----------------------+------------------------------------------
     POINT(50 50) | LINESTRING(1 1,99 99) | POLYGON((25 25,75 25,75 75,25 75,25 25))
    (1 row)
    
    Posted: July 21st, 2010 | Author: | Filed under: 技術 | No Comments »

    三浦の小鯖南蛮漬け

    小サバが大量に釣れたので南蛮漬を作った。
    R1050581.JPG

    漬けられる前の揚げたて状態
    R1050590.JPG

    今回の作り方

    サバを三枚に下ろす

    漬汁(適当)=そばつゆ200cc、酒25cc、水100cc、酢50cc しょうが、にんにくをひとかけすりおろす

    漬け汁に通したサバに片栗粉と小麦粉をつけて、油で3分揚げる

    漬け汁につけて冷蔵庫で冷やす

    ポイントはしっかり冷やすこと。と酢を多めに使うことだったような気がする。
    20cmサイズのサバなら2人で50匹は食べられることがわかったので、次回から全部南蛮漬にする。

    釣りしているときに鯖をエサにして泳がせてたら、ウツボらしき巨大魚が掛かったけど捕獲できず。
    これも次回の課題。

    cookpad あじの南蛮漬

    Posted: July 11th, 2010 | Author: | Filed under: outdoor, 食べ物 | Tags: , , , | No Comments »

    Twitterレシピ本をもらった

    R1050546.JPG

    仕事の話をしにいった先でもらった。地図と同じくレシピもよめない人間なので140文字でまとめてくれるのはとても助かる。iPadでも見たいけど、頂いた本なので裁断はしない。

    R1050543

    Posted: July 6th, 2010 | Author: | Filed under: , 食べ物 | Tags: , | No Comments »

    SimpleGeo with Python

    今日 SimpleGeo という位置情報APIを提供するクラウドサービスにふれた。中で使っているDBは

    We call it GiselleDB. Based on Cassandra and other NoSQL

    らしい。

    SimpleGeoにはLayerという位置情報データを貯めておくストレージがあって、1つだけなら無料で作って動かすことができる。この無料プランの場合、APIの呼び出しは月100万回まで。 有料プランは$399〜$9999まであってAmazonS3にバックアップができる。
    SimpleGeo – Plans & Pricing

    面白そうなのが Layer MarketPlace で、いくつか無償のLayerが提供されている。天気や震源地のLayerや米国政府が提供している保養地のLayerとかもある。これらを自分のLayerと組み合わせたりして、マッシュアップアプリが作れる。

    SimpleGeo Layer Marketplace

    以下アカウントをつくってPythonで使うAPIのチュートリアルをやってみた。
    How do I get started using Python?

    Read the rest of this entry »

    Posted: July 6th, 2010 | Author: | Filed under: 技術 | Tags: , , , , , , | No Comments »

    数学で犯罪を解決する

    R1050432.JPG

    図書館で借りておもしろかったので、Amazon中古で購入。すでに裁断されていた。もう一冊本棚用に買う予定。

    米国TVドラマNUMB3RSのなかの数学を詳しく解説した本で、ドラマの中だとあまりちゃんと説明してくれないところとかが理解できるように書かれている。たとえば、煙にまかれたような感じで終わるモンティ・ホール問題(ベイズ確率)も、本を読めばかなり深く理解できる。

    先に本を読んだからといって、ストーリーがネタバレしないのも安心。
    特にドラマの中の事件のモチーフになった事件の詳細と、最後の参考文献の紹介が面白い。

    Posted: July 5th, 2010 | Author: | Filed under: 技術, | Tags: , | No Comments »

    iPadでジャンク本を読む

    R1050447.JPG

    買って1ヶ月、10冊くらいの本を裁断してpdfにして読んで使った感想。

    第一に、読みたいけど所有したくない本を買えるようになった。
    僕はいままで自分が本を買う基準を、値段と内容だと思っていた。けど実際は、質量(もしくは所有感)みたいなものが意識下でかなり重要な基準になっていたことに気づいた。(ここでいう所有感は、装丁とかデザインの話ではなく、「この本を読んでいると思われたい, 思われたくない, 思いたい」etc..というどちらかというと内容に絡む話です。)

    例えば、100円でブックオフで売っている本に、所有欲を満たすものはほとんどない。それどころか金もらっても本棚に置きたくないものもある。けれどそういうジャンク本が、実は意外と読んでみたいというケースは結構あって、iPadを買ってからそういう本をわりと躊躇せず買うようになった。家の本棚に並べずスペースもとらないし人にも見られないので、「所有したくない欲」を傷つけないということなんだと思う。

    あと紙の本を読むとき、ページを手で抑えるのに結構力をいれていたことに気づいたことも、あたりまえだけど新鮮だった。iPadだと手はページをめくる時以外必要ないので、両手をどうしてよいかわからない。ただ楽な一方、ページをばーっとめくってさがすということが出来ないのはかなりストレスがたまる。なので、面白い本は紙媒体のまま所有したいという思いもある。将来解決策が電子化できるのかは謎。

    よって、面白い本は二冊買って一冊は裁断してpdf。もう一冊は本棚へという、楽園に向かっているのか地獄に向かっているのかわからない状況になっている。それと並行して、愛着もない技術書とかジャンク本をスキャンしてどんどん捨てて、空いたスペースに面白い物理的な書籍を揃える方向で、ブックオフとスキャナーを往復している。

    Posted: July 4th, 2010 | Author: | Filed under: 技術, | Tags: , | No Comments »

    NUMB3RS DVD SEASON1

    数学を使って犯罪を解決するアメリカのTVドラマ。シーズン1を全部見た。本当に使える数学を、実際に使われている方法で伝えるというところがすごく面白い。小さい頃これ見てたらかなり影響受けたんじゃないかと思う。


    NUMBERS 天才数学者の事件ファイル – Wikipedia

    NUMBERSと数学
    コンサルタントとして、複数の数学者が各エピソードで協力している[1]。番組内で提示されている数学は現実のものである。黒板上の方程式は正しいもので、各回の番組内の状況に実際に適用できる。このことは、現役の数学者によって認められている。たとえば、次の記事を参照。米国数学協会発行の記事 “Numb3rs gets the math right”[2]。

    個人的におもしろかった回は

  • 脱走犯の追跡 ベイズ統計、モンティ・ホール問題
  • 少女誘拐事件 リーマン予想と暗号理論
  • 盗まれた核廃棄物 ゲーム理論
  • 逆にイマイチだったのは

  • 鉄道破壊計画
  • 危険な高層ビル
  • あたりだった。

    モンティ・ホール問題については、主人公のチャリー教授が初心者向けの公開講座で説明するシーンがYouTubeにあったりもする。

    Posted: July 4th, 2010 | Author: | Filed under: 技術 | No Comments »

    Using R from Python rpy2

    Today I installed R (vesion2.11.1 2010.5.31) from mac installer.
    R is an enviroment for statistical computing and graphics.
    Python has some packages for R like rpy and rpy2.

    Here is my install log.

    install numpy and rpy2 via pip

    pip install numpy
    pip install rpy2
    
    import rpy2.robjects as robjects                                                                                
                                                                                                                    
    ctl = robjects.FloatVector([4.17, 5.58, 5.18, 6.11, 4.50,                                                       
                                4.61, 5.17, 4.53, 5.33, 5.14])                                                      
    trt = robjects.FloatVector([4.81, 4.17, 4.41, 3.59, 5.87,                                                       
                                3.83, 6.03, 4.89, 4.32, 4.69])                                                      
                                                                                                                    
    correlation = robjects.r('function(x, y) cor.test(x, y)')                                                       
    print correlation(ctl, trt)                                                                                     
    
    $ python Desktop/correlation_sample.py
    
    	Pearson's product-moment correlation
    
    data:  x and y 
    t = -1.4559, df = 8, p-value = 0.1835
    alternative hypothesis: true correlation is not equal to 0 
    95 percent confidence interval:
     -0.8440680  0.2415684 
    sample estimates:
           cor 
    -0.4576683 
    
    Posted: July 4th, 2010 | Author: | Filed under: 技術 | Tags: , , , , | No Comments »