2011/05/06

WSJS を sourceforge.jp で公開してみた。

ほったらかしになっているWSJSですがsourceforge.jp で公開してみました。

Eclipse対応になっているのでSVNで落してビルド、Uploadできる様になりました。

ここから落してください。
- https://svn.sourceforge.jp/svnroot/wsjs4gae/tags/wsjs4gae_SNAP_20110506



2010/07/11

WSJS for GAE のスナップを公開します。

ずっとほったらかしになっていた WSJS ですが GAE 版を公開します。
ただしドキュメントや設定ファイルは中途半端です。

プラットフォームは今後 GAE に絞って行こうかと思ってます。
読み込みのモッサリ感はいかんともしがたいのですが最近のトレンド
だし WSJS と相性の良い部分が結構あるので..


基本的には zip を展開して war/ をデプロイすれば使えるはずです。
詳しくはreadme.txtを見て下さい。
動かねー とか有ったらこの記事にコメントしてください。


ダウンロードは
http://wsjs.dip.jp:8008/release/index.html
から
wsjs-gae-SNAP-20100711.zip
をクリックして下さい

こちらに実際デプロイ済みの環境があります。
http://wsjs-gae.appspot.com/
「開発ページへ」をクリックして下さい。
書き込めませんがモッサリ感は味わえるかと思います。



2010/04/10

QR code ビューア

ちょっと必要だったので QR code ビューアを作ってみました。

http://wsjs.dip.jp:8008/samples/qrcode/qrcode.ssjs

qrviewer.png

通常は画像で表示しますがこれは table でやってます。

ライブラリはこちらの物をお借りしました。
http://www.swetake.com/qr/java/qr_java.html
このライブラリは結果をboolean配列で返してくれるので画像が使えない環境でも使えます。

これで携帯でURLを入れるが楽になりました。

ソースは http://wsjs.dip.jp:8008/develop/index.html から rqcode/ を開いてけば見れます。





2010/01/19

自宅サーバ 公開しました。

光回線が開通したので自宅サーバを公開します。

http://wsjs.dip.jp:8008/

Web上からWSJSアプリの開発が可能です。
- 当然ですが JavaScript 必須です。
- 「このサイトの使い方」のタグにしたがってユーザ登録して下さい。
- 不明な点や不具合はここか自宅サーバの掲示版に書き込んで下さい。

では、みなさん遊びに来て下さい。


Subject: WSJSサンプル ブロック崩し
Content-type: lovelog/text
Tags: WSJS
Date: 2010/01/19
Public: yes

自宅サーバを公開したのでちょっと目を引くサンプル「ブロック崩し」を作ってみました。

これはクライアントの JavaScript のみで動作するブロック崩しで1つの玉をEXJSの疑似スレッドで動かしています。
複数の玉を同時に出現させても並列に動作するデモになっています。

実行URL:http://wsjs-gae.appspot.com/samples/game_block_kuzusi/block.html
ソース:http://wsjs-gae.appspot.com/_wsjs_/develop/index.html から game_block_kuzusi/ のディレクトリを開いて下さい。







2009/12/23

サーバ上でのXMLHttpRequest

eval()に続いてもう一つ厄介なのが XMLHttpRequest だ。
サーバ側で使えるとめちゃめちゃ便利なのだがスクリプトと組み合わせると物の10分でスパムボットが作れてしまう。
悪意が無くても使い方をちょっと間違えるとドメインロンダリングになって XSS や CRSF を引き起こす。

しかし禁止するには余りにもったい無いので2つ制限を儲ける事にした。
1. 正規登録ユーザのみ使える。
2. 1日100回まで。個別に増減はできる。

で、何とか使える様にしたいな。

しかし、公開サーバでスクリプトを書けるようにするとセキュリティ上の問題が次々出て来る。
穴を完全に無くす事はできないだろうし予想よりだいぶきつい。
スケージュールが有るわけじゃ無いが完全に工数オーバーだ。



2009/12/22

OpenIDで困るユーザ名

OpenIDをユーザ認証に使うようになると困ることが1つ有る、ユーザ名だ。
OpenIDはURLがそのまま一意のIDになる訳だけどそのままユーザ名に使うと長い。
「xxxxxx.openid.ne.jp」ぐらいならメールアドレス相当なので許せるがYahooとかだと「me.yahoo.co.jp/a/8asdgfjqmnKasilisdijklsf」とかになって訳が分からない。
OpenIDとユーザ名の対応表を持つようになると結局、ユーザ登録してもらって自前でユーザ管理が必要になる。
OpenIDは一応 nickname を持っているが、そのIdPの中でしか一意にならない。

方針としては

- OpenID -> ユーザ名の対応表は必要。
- OpenIDのnicknameで自動登録
- nicknameが衝突した場合はダイアログを出して別名を入力してもらう。

くらいかな。

他のOpenID対応サイトはどうしてるんだろ。認証をOpenIDのみでする所の方が珍しいのかな。



2009/12/15

掲示版のデザイン

公開サーバには掲示版の一つも欲しいのだがいざ作ろうとすると以外にデザインで悩む。

だらだら喋るなら 2ch タイプのフラットな構成が良いし、
Q&Aが多いようだとツリータイプが良い。
特定のテーマで議論するならスレッドが必要だし検索も欲しいなんて考え出したらまとまらない。

まぁ書き込む人がどのくらいいるのか分からないのに頑張ってもしょうがないので取り合えずシンプルなフラットタイプで行くことにした。

DBのテーブルには基本項目とアンカーとテーマの項目だけ確保しておく。

こんな感じ。

db.createTable(ARTICLE, {
pkey: "serial PRIMARY KEY",
status: "integer",
deleted: "boolean",
datetime:"timestamp",
anchor: "integer",
theme: "varchar(32)",
username:"varchar(100)",
subject: "varchar(100)",
comment: "varchar(2000)"
});




2009/12/03

Jetty+PostgreSQLの設定

公開サーバのスクリプトからはDBも使える様にしたい。
1ユーザ=1スキーマでやるとするとDerbyでは心許ないので postgre を使う事に。

とりあえず ports に有った最新版は 8.4 たっだのでこれを使う。

# cd /usr/ports/databases/postgresql84-server
# make install


インストールできたらDBの初期化と開始。

> export PGDATA=$HOME/pgdata
> initdb
> pg_ctl start


テストユーザとテストスキーマの作成。

> createuser -P test
Password: ****
agein: ****
> createdb --owner test test


postgre用のJDBCドライバをダウンロードしておく。
- http://jdbc.postgresql.org/download.html
- 今回は JDBC3 Postgresql Driver, Version 8.4-701 を選択。
- postgresql-8.4-701.jdbc3.jar を lib に入れて置く。

jetty への DataSource の登録。
- WEB-INF/web-jetty.xml に設定を追加する。
- パラメータは DataSource の実装毎に違うので用注意。
-- http://siisise.net/pgsql/jdbc.html

<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE Configure PUBLIC '-//Mort Bay Consulting//DTD Configure//EN' 'http://jetty.mortbay.org/configure.dtd'>
<Configure class='org.mortbay.jetty.webapp.WebAppContext'>
<Set name='war'><SystemProperty name='jetty.home' default='.'/>/webapps/wsjs</Set>
<Set name='contextPath'>/wsjs</Set>

<New id='jdbc/test' class='org.mortbay.jetty.plus.naming.Resource'>
<Arg>jdbc/test</Arg>
<Arg>
<New class='org.postgresql.jdbc3.Jdbc3PoolingDataSource'>
<Set name='serverName'>localhost</Set>
<Set name='databaseName'>test</Set>
<Set name='user'>test</Set>
<Set name='password'>****</Set>
</New>
</Arg>
</New>
</Configure>





動作確認。

function doGet(req, res) {
var conn = __ENV__.getDBConnection("jdbc/test");
res.writer.write(conn.toString());
conn.close();
}


実行すると正しく取れている。

Pooled connection wrapping physical connection org.postgresql.jdbc3.Jdbc3Connection@1c41e49


WSJSにJNDIアクセス制限の機能追加。
- これで /home/${user}/** のファイル以外からは jdbc/${user} にはアクセスできない。

config.permitJNDI = [
["jdbc/${user}", "${user}"],
];


と、ここまでは良かったのだが Derby 用に作ったデモが全然動かない。
SQLが結構違うみたいだ.. orz
いい加減 SQL は互換性を取ってくれ..



プロフィール
20年勤めた会社がリーマンショックで消滅、紆余曲折を経て現在はフリーランスのSE。 失業をきっかけにこのブログを始める。

サイト内検索

登録
RSS/2.0

カテゴリ

最近の投稿【WSJS】

リンク

アーカイブ