2011/08 | 2011/09 | 2011/10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2011年9月 2日

Maven2でwarファイルを作る

DotCloudにROOT.warファイルを突っ込まないと、ルートパスでアプリを起動できないということらしいんですが、どうもすでに公開されているアプリとか、オープンソースで公開されてるアプリとかってのは、うまい具合にDotCloudに入れるようには適した形になってるのがなくてどうしよう。と思ってる。Red5のプロジェクトとか、まさにそんな感じで。

そもそもRed5がちゃんと動くかどうかも怪しい。

というわけでなんだか既にあるtomcatベースのウェブアプリがうまくDotCloudで動いてくれないので、試しに自分でwarファイルを作ってみようかと思ったわけで。だがこれしかし、warファイルを作るのにEclipseやらNetBeansではウェブアプリを作るのにいろいろとインストールせんとあかんらしくて困った。EclipseならJ2EEのプラグイン、NetBeansならローカルにサーバーを入れないといけない。

面倒くさい…。

というわけで、これならいけるか? と思いついたのがNetBeansのMavenプロジェクト。J2EE Web Appのプロジェクトの作成で、「構築」から単独でwarファイルの作成に成功しました。web.xmlがなかったけど、なくても構築できるもんなんですね。

で、出来上がったwarファイルをROOT.warに名前変更をしてdotcloud.ymlでウェブアプリルートのディレクトリに入れておいたあとにいざpush!

$ dotcloud push pinmarch
# upload /home/tamaki/dcprojects/aaa-dotcloud ssh://dotcloud@uploader.dotcloud.com:443/pinmarch
# rsync
Pseudo-terminal will not be allocated because stdin is not a terminal.
Warning: Permanently added '[uploader.dotcloud.com]:443,[xx.xx.xx.xx]:443' (RSA) to the list of known hosts.
building file list ... done
./
dotcloud.yml
aaa/
aaa/ROOT.war

sent 2.16K bytes received 56 bytes 340.77 bytes/sec
total size is 2.81K speedup is 1.27
Deployment for "pinmarch" triggered. Will be available in a few seconds.
2011-09-01 06:15:57 [api] Deploy pinmarch scheduled for revision=latest
2011-09-01 06:15:57 [api] Waiting for the build. (It may take a few minutes)
2011-09-01 06:15:58 [aaa.0] Deploying...
2011-09-01 06:16:06 [aaa.0] Service booted
2011-09-01 06:16:06 [api] All the services are ready. Beginning the build.
2011-09-01 06:16:06 [aaa.0] The build started
2011-09-01 06:16:06 [aaa.0] Fetched code revision rsync-1314857756.49
2011-09-01 06:16:08 [aaa.0] * Stopping Jetty servlet engine (was reachable on http://pinmarch-default-aaa-0:8080/). jetty
2011-09-01 06:16:11 [aaa.0] * Jetty servlet engine stopped. jetty
2011-09-01 06:16:11 [aaa.0] ...done.
2011-09-01 06:16:11 [aaa.0] * Starting Jetty servlet engine. jetty
2011-09-01 06:16:11 [aaa.0] * Jetty servlet engine started, reachable on http://pinmarch-default-aaa-0:8080/. jetty
2011-09-01 06:16:16 [aaa.0] ...done.
2011-09-01 06:16:16 [aaa.0] The build finished successfully
2011-09-01 06:16:16 [api] Deploy finished

Deployment finished. Your application is available at the following URLs
aaa: http://xxxxxxxx.dotcloud.com/

なんと、普通に動きました(って当たり前か)。とりあえずこれで、開発はできそうです。

▲top

投稿者 ただ : 22:36 | トラックバック (0) カテゴリー ; プログラミングとか

2011年9月 5日

Rで再現させようとして無駄に嵌った

どうも、最近全然プログラミング的なことを書いてないのでプログラム作ってないんじゃないかと思われそうなんですが、ええ、その通りです。いやしかし、妙に不可思議な現象に嵌ったのでちょっとメモ。

Rでデータフレームを作って集計をしようとしたときに、前に作ったデータだとうまく処理されて、次に作ったデータだとなぜだかうまく処理されない、という、まったくもって原因が分からないことに…。そもそもどうしてわかったかというと、小数であるはずのデータが処理後にとてつもなく大きな整数になってたからでして。実際のデータは使えないので、頑張ってミニマムコードを作ってみた。なんかこれだけでも結構無駄に時間使った気がする。


df<-data.frame(cbind(
    y=rep(letters[1:13],2),
    x=as.character(1:10),
    z=c(as.character(as.integer(runif(n=240,min=0,max=100))/1000),rep(NA,20))
))

これで、1列目にa~m(アルファベット1文字目から13文字目)の2回繰り返し、2列目に1~10の2.6回繰り返し、3列目に0~0.1のランダムな数値(一様分布のランダムな数)240個と20個のNAが詰まった260行のデータが出来上がる。

これを

> tapply(df$z, list(df$x, df$y),
    function(aa) as.numeric(max(as.numeric(as.vector(aa)))))

      a     b     c     d     e     f     g     h     i     j     k     l
1  0.069 0.071 0.042    NA 0.076 0.095    NA 0.054 0.070 0.095 0.060 0.081
10 0.020 0.086    NA 0.095 0.056 0.094 0.061 0.087 0.071 0.064 0.079 0.050
2  0.040 0.096 0.038 0.062    NA 0.086 0.064    NA 0.087 0.046 0.080 0.024
3  0.087 0.090 0.098 0.047 0.076    NA 0.046 0.017    NA 0.082 0.044 0.083
4  0.070 0.066 0.048 0.090 0.088 0.075    NA 0.063 0.084    NA 0.047 0.069
5  0.072 0.071 0.090 0.076 0.049 0.071 0.085    NA 0.087 0.053    NA 0.068
6  0.098 0.046 0.018 0.081 0.057 0.078 0.053 0.087    NA 0.025 0.076    NA
7  0.025 0.033 0.070 0.008 0.086 0.072 0.048 0.015 0.084    NA 0.016 0.099
8     NA 0.081 0.032 0.075 0.042 0.083 0.082 0.057 0.016 0.038    NA 0.071
9  0.082    NA 0.070 0.072 0.020 0.024 0.033 0.061 0.068 0.028 0.063    NA

      m
1  0.076
10    NA
2  0.069
3  0.094
4  0.095
5  0.068
6  0.055
7     NA
8  0.061
9  0.086

とすると、たとえばこういう風にNAが混ざる。これはNAをちゃんと処理してないから当然なわけで。だから、NAを処理しようとして、こうすると、

> tapply(df$z, list(df$x, df$y),
    function(aa) max(as.numeric(as.vector(ifelse(is.na(aa), 0, aa)))))

   a  b  c  d  e  f  g  h  i  j  k  l  m
1  63 65 38 57 69 84  8 49 64 84 54 74 69
10 19 79 70 84 51 83 55 80 65 58 72 46 21
2  36 85 34 56 55 79 58 35 80 42 73 23 63
3  80 82 86 43 69 49 42 17 25 75 40 76 83
4  64 60 44 82 81 68 12 57 77 72 43 63 84
5  66 65 82 69 45 65 78 29 80 48 20 62 62
6  86 42 18 74 52 71 48 80 22 24 69 43 50
7  24 31 64  9 79 66 44 15 77 87 16 87  3
8  29 74 30 68 38 76 75 52 16 34 11 65 55
9  75 44 64 66 19 23 31 55 62 26 57 65 79

不思議なことに、全然さっきと違う数字が!!!! データフレームになっているから、それぞれのデータのインデックス番号っぽいなぁということは気が付いたけど、これ、どうやって小数で出すねん。というのが問題。

> tapply(df$z, list(df$x, df$y),
    function(aa) max(as.numeric(ifelse(is.na(aa), 0, as.vector(aa)))))

      a     b     c     d     e     f     g     h     i     j     k     l
1  0.069 0.071 0.042 0.063 0.076 0.095 0.007 0.054 0.070 0.095 0.060 0.081
10 0.020 0.086 0.077 0.095 0.056 0.094 0.061 0.087 0.071 0.064 0.079 0.050
2  0.040 0.096 0.038 0.062 0.061 0.086 0.064 0.039 0.087 0.046 0.080 0.024
3  0.087 0.090 0.098 0.047 0.076 0.054 0.046 0.017 0.027 0.082 0.044 0.083
4  0.070 0.066 0.048 0.090 0.088 0.075 0.012 0.063 0.084 0.079 0.047 0.069
5  0.072 0.071 0.090 0.076 0.049 0.071 0.085 0.031 0.087 0.053 0.021 0.068
6  0.098 0.046 0.018 0.081 0.057 0.078 0.053 0.087 0.023 0.025 0.076 0.047
7  0.025 0.033 0.070 0.008 0.086 0.072 0.048 0.015 0.084 0.099 0.016 0.099
8  0.031 0.081 0.032 0.075 0.042 0.083 0.082 0.057 0.016 0.038 0.011 0.071
9  0.082 0.048 0.070 0.072 0.020 0.024 0.033 0.061 0.068 0.028 0.063 0.071

      m
1  0.076
10 0.022
2  0.069
3  0.094
4  0.095
5  0.068
6  0.055
7  0.002
8  0.061
9  0.086

ifelse()をas.vector()の内側にするか外側にするかで返ってくるのが違うのがどうも解せない。

▲top

投稿者 ただ : 22:00 | トラックバック (0) カテゴリー ; プログラミングとか

2011年9月14日

シンプルなCSSテンプレート無料サイト(メモ)

メモ。

http://www.dreamtemplate.com/

http://www.freecsstemplates.org/

http://www.spyka.net/web-templates

http://ramblingsoul.com/downloads/

http://www.styleshout.com/free-templates.php

▲top

投稿者 ただ : 20:08 | トラックバック (0) カテゴリー ; リンク , 仕事関係

2011年9月15日

久しぶりのautofsで詰まった

ふとしたことで、世界が変わる。そんなことが起こってしまった。ずっと前に、自動でマウントをするautofsを使ってsshfsでリモートのディレクトリを勝手にマウントするようにしてたんやけど、サーバーを再起動させたらなぜかマウントしない。

remote_server      -fstype=fuse,rw,allow_other,nodev,IdentityFile=/root/.ssh/id_rsa,workaround=all  :sshfs\#usera@xx.xx.xx.xx\:

auto.miscに上のように設定を書いて、公開鍵を相手先の.ssh/authorized_keysに突っ込んでおけば自動ログインで勝手にマウントな状態になってたのに…。

しかも、同じ公開鍵を使って2台(実質1台の別ユーザー)にもマウントするようにしてて、片方はうまくいってもう片方が失敗してるという不思議現象。どういうことやねん。

再起動した方の/var/log/messages を見ても、/var/log/audit/audit.log を見ても、それらしいのがない。普通に弾かれてるっぽい。なんで…と思って、拒否した側の /var/log/secure を見たらなんと見つかった。

Sep 15 12:18:49 localhost sshd[3904]: Accepted publickey for ocnweb from 192.168.xx.xx port 42889 ssh2
Sep 15 12:18:49 localhost sshd[3904]: pam_unix(sshd:session): session opened for user stranger by (uid=0)
Sep 15 12:18:49 localhost sshd[3906]: subsystem request for sftp
Sep 15 12:18:50 localhost sshd[3934]: Authentication refused: bad ownership or modes for directory /home/usera
Sep 15 12:18:50 localhost sshd[3934]: Failed password for wpress from 192.168.xx.xx port 42890 ssh2
Sep 15 12:18:50 localhost sshd[3934]: Failed password for wpress from 192.168.xx.xx port 42890 ssh2
Sep 15 12:18:50 localhost sshd[3935]: Connection closed by 192.168.xx.xx

Authentication refused: bad ownership or modes for directory /home/useraとは!? ~/.ssh も、~/.ssh/authorized_keys も、パーミッションなんか変えてないのに…。と、ふと、/home/usera のパーミッションを変えたことを思い出した。0711やったのを、0771に変えただけやのに…これがあかんかったらしい。

えーこのパーミッション変更、なんであかんのや。

▲top

投稿者 ただ : 22:35 | トラックバック (0) カテゴリー ; プログラミングとか

2011/08 | 2011/09 | 2011/10