仕事上でわかったことのうち顧客に関わる情報が無い物、一般公開して差し障りのなさそうな事をたまーに投稿しています。 ちなみに、記事上に載せた私が書いたコードは、用途問わず再利用いただいてかまいませんが、保障は一切いたしませんので、あしからず。 ですます調の記事とである調の記事が混ざりますが..こちらも、あしからず。
Translate
2014年11月27日木曜日
CentOS7上のRedmine2.6.0にXLS Exportプラグインをインストールする
AWSとかの上でRedmine運用する際
SELINUXは有効にしたまま使いたくなるだろうとおもい、
CentOS7最小構成インストールしたサーバ上に
/etc/sysconfig/selinuxの
SELINUX=enforcing
にしたままで
Redmine2.6.0をインストールした。
Redmine以外のパッケージはすべてyum(かgem、bundle install)でインストールした。
Redmineは/opt/redmine以下にインストールした。
Redmineはapache(+passenger+ruby)で動作するWebアプリケーション
なので
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
だけでなく
systemctl stop httpd.service
chown -R apache:apache /opt/redmine
chcon -R -t httpd_sys_content_t /opt/redmine
chcon -R -t httpd_sys_rw_content_t /opt/redmine
systemctl start httpd.service
と、アプリの入っている/opt/redmineに対して/var/www/html同様のルールをはらなくてはならない
chownしているのは、rootで操作しているためだ。
yumで導入したhttpdはapacheアカウントで動作するので
rootで導入操作した後オーナを変更している。
で、プラグインをインストールする際も
この面倒な操作が必要になる。
たとえばXLS Exportをインストールする場合は
/rootにプラグインredmine_plugin_views_revisions_v001.zipとredmine_xls_export-0.2.1.t6.zipをダウンロードしておいた状態で
cd /root/
unzip redmine_plugin_views_revisions_v001.zip
mv ./redmine_plugin_views_revisions /opt/redmine/plugins/
unzip redmine_xls_export-0.2.1.t6.zip
mv ./redmine_xls_export-0.2.1.t6 /opt/redmine/plugins/redmine_xls_export
cd /opt/redmine
bundle install
rake redmine:plugins:migrate RAILS_ENV=production
rake redmine:plugins:process_version_change RAILS_ENV=production
systemctl stop httpd.service
cd /opt
chown -R apache:apache ./redmine
chcon -R -t httpd_sys_content_t /opt/redmine
chcon -R -t httpd_sys_rw_content_t /opt/redmine
systemctl start httpd.service
としないと新規導入した/opt/redmine以下のファイルにアクセスできず
config.ruがどうのこうのという白い画面が出てしまう..
SELINUX=disabledにしないと、超めんどくさい..
2014年10月29日水曜日
Google Book APIを使って本のサムネイル画像を表示するJavaScriptを作る
ISBNコードを元に
本の表示の画像を表示したかったので
いろいろREST APIを公開しているサービスをみてみた。
ほとんどがアカウントを作成しないと取得できないタイプだったので
半分あきらめかけていたのだけど、
Google Book API ならセキュリティキーとか作成せずにできそうだったので
ためしてみた。
Google Book APIはISBNコードをハイフン無しのコード部分だけ
数字部13桁をGETのパラメータとして渡してやれば
JSONで情報がもどってくるしくみだ。
なのでjQuery1.11.1 (IEも対応する必要があったので..) を使って
JavaScript関数をつくり、
bodyタグ内に
でも、たまにISBNコードと同じでないサムネイル画像が出る..
上記関数で1件目のサムネイル画像のみ使用しているのだけど、
候補が複数帰ってくる場合もあって
それでたまに違う画像が出てくる..
そのあたりは、もうすこし jQuery のAjax に慣れてからにしようかな..
本の表示の画像を表示したかったので
いろいろREST APIを公開しているサービスをみてみた。
ほとんどがアカウントを作成しないと取得できないタイプだったので
半分あきらめかけていたのだけど、
Google Book API ならセキュリティキーとか作成せずにできそうだったので
ためしてみた。
Google Book APIはISBNコードをハイフン無しのコード部分だけ
数字部13桁をGETのパラメータとして渡してやれば
JSONで情報がもどってくるしくみだ。
なのでjQuery1.11.1 (IEも対応する必要があったので..) を使って
JavaScript関数をつくり、
<script type="text/javascript">
function loadBookImage(){
var isbnCode = $("#isbn").val();
isbnCode = isbnCode.trim().toUpperCase().replace(/[^\dX]/gi, '');
var googleUrl ="https://www.googleapis.com/books/v1/volumes?q=" + isbnCode;
$.ajax({
type: "GET",
url: googleUrl,
dataType: "json"
}).done(function(json){
var thumb = json.items[0].volumeInfo.imageLinks.thumbnail;
if(thumb){
$("#bookImage").empty();
$("#bookImage").prepend("<img src='" + thumb + "'/>");
};
});
};
</script>
bodyタグ内に
- id値がisbnのinputタグ(onBlurにloadBookImage()を定義)
- id値がbookImageのdivタグ
でも、たまにISBNコードと同じでないサムネイル画像が出る..
上記関数で1件目のサムネイル画像のみ使用しているのだけど、
候補が複数帰ってくる場合もあって
それでたまに違う画像が出てくる..
そのあたりは、もうすこし jQuery のAjax に慣れてからにしようかな..
2014年10月10日金曜日
Javaで書いたWebアプリをBluemixへデプロイする
Struts2+VelocityでMVCを、
Spring Framework でDIとセキュリティを、
MyBatisでDAOを
それぞれ使ってPostgreSQL上のデータベースの入出力させる
ごくごくふつうのアプリをEclipse上で作った。
テスト環境としてローカルにTomcatとPostgreSQLを入れて
Eclipse上からテストしているが、
Bluemixをテスト環境にすればいいんじゃないかとおもい試してみた。
Bluemixサイトにログインして、
「CATALOG」タブから「Liberty for Java」を選択
名前、URL(ホスト名だけ)、選択プランを選ぶ。
でCREATEする。
そうすると作成したサーバ(?)のダッシュボードに遷移するので
「ADD A SERVICE」を選択する。
そして「Data Management」の「ElephantSQL」を選択する。
#PostgreSQLでAWSで動いているらしい
で、App欄は先ほど作成したサーバの名前をいれ、プランを選択する。
Service name欄にはプログラム内で使っているJNDI名の"jdbc/"を
除いた文字列でCREATEする。
リスタート云々言ってくるのでOKボタンを押して再起動する。
作成したデータソースをクリックし、
Launch ElephantSQL Dashboard
を押すと、
URLが表示されるのでメモる。
そしてbluemixプラグインを入れたEclipseでサーバを作成、
同一アカウントでの接続を設定しておく。
で、Webアプリプロジェクトを作成したサーバへドラッグ&ドロップすると
ダイアログがでてくるので、先ほど作成したAppsを選択すれば
デプロイ処理をしてくれる。
当然DB上にテーブルなどを作成しなくてはならないので
ローカルのpgAdmin(PostgreSQLをローカルにインストールすると
入ってくる管理コンソール)をたちあげ
コンセントマークのアイコンを押して
先ほどメモったURLを元にプロパティタブへ入力する。
例えば
postgres://hogehoge:fugafuga@foo.bar.com:5432/tar
である場合、
ホスト欄に「foo.bar.com」
Portに「5432」※もちろんproxy環境ではつながらない
データベースメンテナンス欄に「tar」
ユーザ名欄に「hogehoge」
パスワード欄に「fugafuga」
といれ(名前などは適当に入れて)「OK」ボタンを押すと接続できる。
データベース名は「tar」でこていになっているようなので
「tar」を選択して虫眼鏡アイコンを押してSQLを押し流せば良い。
本当はよくある組合せセット(boiler plate)のなかから選べばいいのだけど、
課金されることになったらをかんがえると一つ一つ必要な物だけ選んでいくのが
いいかな、とおもう。
とうぜん、tomcat-users.xmlでBASIC認証しているような場合は
アプリとしてログインを実装する必要がある。
簡単ではあるけど、SSLトンネリングとかの設定しないと
開発環境としてはめんどくさい。
なによりステップ実行できるわけではないし...
とりあえず、JNDI名で実装しとけばDBにはつながることが分かっただけでも
よしとしよう。
2014年9月9日火曜日
ISBNコードのチェックサム判定するJavaScript関数をつくってみた
ISBNをJavaScriptで扱わないといけなくなり、
チェックサム判定の関数と
ハイフン付き形式にする関数を
ISBN10とISBN13それぞれでつくってみた。
あとISBN10をISBN13にする(978を先頭につけてチェックサムを計算しなおす)関数
もつくってみた。
function isValidISBN (target) {
var targetCode = target.trim().toUpperCase().replace(/[^\dX]/gi, '');
if(targetCode.length == 10){
return isValidISBN10(targetCode);
};
targetCode = target.trim().toUpperCase().replace(/[^\d]/gi, '');
if(targetCode.length == 13){
return isValidISBN13(targetCode);
};
return false;
};
function toISBN13(isbn10){
var modulas = 10;
var weight = 3;
var targetCode = isbn10.trim().toUpperCase().replace(/[^\dX]/gi, '');
targetCode = "978" + targetCode;
var checkSum = 0;
var chars = targetCode.split('');
for (var i = 0; i &t; (chars.length-1); i++) {
if( (i % 2) == 0 ){
checkSum += parseInt(chars[i]);
}else{
checkSum += ( weight * parseInt(chars[i]) );
};
};
checkSum = modulas - (checkSum % modulas);
var isbn13 = "";
for(var i = 0; i &t; (chars.length-1); i++){
isbn13 = isbn13 + chars[i];
};
isbn13 = isbn13 + checkSum;
return isbn13;
};
function isValidISBN13(isbn13){
var modulas = 10;
var weight = 3;
var targetCode = isbn13.trim().toUpperCase().replace(/[^\d]/gi, '');
if(targetCode.length!=13){
return false;
};
var checkSum = 0;
var chars = targetCode.split('');
for (var i = 0; i &t; (chars.length-1); i++) {
if( (i % 2) == 0 ){
checkSum += parseInt(chars[i]);
}else{
checkSum += ( weight * parseInt(chars[i]) );
};
};
checkSum = modulas - (checkSum % modulas);
return (checkSum == (parseInt(chars[chars.length-1])));
}
function isValidISBN10(isbn10){
var modulas = 11;
var weight = 10;
var targetCode = isbn10.trim().toUpperCase().replace(/[^\dX]/gi, '');
if(targetCode.length!=10){
return false;
};
var checkSum = 0;
var chars = targetCode.split('');
for (var i = 0; i &t; (chars.length-1); i++) {
checkSum += ( weight * parseInt(chars[i]) );
weight--;
};
checkSum = modulas - (checkSum % modulas);
var actualCheckSum = 10;
if(chars[chars.length-1] != "X"){
actualCheckSum = parseInt(chars[chars.length-1]);
}
return (checkSum == actualCheckSum);
}
function formatISBN(target){
if(isValidISBN10(target)){
return formatISBN10(target);
};
if(isValidISBN13(target)){
return formatISBN13(target);
};
return target;
};
function formatISBN13 (isbn13) {
var chars = isbn13.toUpperCase().trim().replace(/[^\d]/gi, '').split('');
var reformedIsbn13 = "";
for(var i=0; i&t;chars.length; i++){
if( i == 3 || i == 4 || i == 7|| i == 12){
reformedIsbn13 = reformedIsbn13 + "-";
};
reformedIsbn13 = reformedIsbn13 + chars[i];
};
return reformedIsbn13;
};
function formatISBN10 (isbn10) {
var chars = isbn10.toUpperCase().trim().replace(/[^\dX]/gi, '').split('');
var reformedIsbn10 = "";
for(var i=0; i&t;chars.length; i++){
if( i == 1 || i == 5 || i == 9){
reformedIsbn10 = reformedIsbn10 + "-";
};
reformedIsbn10 = reformedIsbn10 + chars[i];
};
return reformedIsbn10;
};
ISBN10はもうつかわれないので、
入力された場合はやはりISBN13にしてあげたほうがよいとおもい
変換する関数も作った(もとに戻す関数はつくっていない)。
やはりDBとかにはISBN13で統一して入れておいたほうが良さそうだし..
にしても..JavaScript直書きはデバッグしにくいなあ..
みんなどうやってるのかなあ..
使う場合はat your own riskでお願いします。
2014年7月28日月曜日
Vaadinの英語サイトのごく一部(Learn)を翻訳してみる
GWT.create(GWTをテーマにしたイベント、ドイツとアメリカで開催)の
ページを見ていると、Vaadinというフレームワークがよく出てくる。
どうも出自は2010年ころからでているが、日本はGWTがなぜか流行らないので情報が殆ど無い。どこぞの記事に紹介があったが3ページ目辺りで会員登録しないと見せないよっていう意地悪をされたので萎えてそのままだった。
でも、せっかくなのでイントロくらいは読んでおこうと思い、以下のページだけ翻訳してみた。
Introduction to Vaadin Development
https://vaadin.com/learn
以下私の翻訳ですが、直訳しているだけなのでとっても読みにくいです。
Yahoo翻訳よりまし程度で読んでください。
(もちろん、at your own riskで)
------
[YouTube] Vaadin Step-by-Step
https://www.youtube.com/watch?feature=player_embedded&v=KsvvF1zgMQM
この短いビデオは、Vaadin7、Vaadin Eclipse プラグイン、Apache Tomcatを使った開発のチュートリアルです。
Vaadinは リッチインターネットアプリケーション(RIA)のためのWebアプリケーションフレームワークです。ソリューションベースのJavaScriptライブラリやブラウザプラグインとは対照的に、Vaadinは、強力なサーバサイドプログラミングモデル、そしてGWTやHTML5ベースのクライアント再度開発ツールが特徴です。RPCやクロスブラウザ互換性、全てのレイヤをまたがったフルコントロールといった実装時の細々としたことから分離された短期開発モデルを要約します。
VaadinはUIコンポーネントの巨大な集まりです。「ボタン(http://demo.vaadin.com/sampler/#Buttons)」、「テーブル(http://demo.vaadin.com/sampler/#GridsAndTrees)」、「ツリー(http://demo.vaadin.com/sampler/#GridsAndTrees)」や「レイアウト(http://demo.vaadin.com/sampler#ComponentContainers)」といったコンポーネントからアプリケーションユーザ・インタフェイスを構築します。コンポーネントはビジネスロジックや相互にコミュニケーションをとるイベント、リスナ、データバインディングを使用します。
Vaadinは短期アプリケーション開発のための強力なアーキテクチャです。コンポーネントベースのアーキテクチャ、ならびに静的Java言語、そしてデータバインディングは、より簡単にモジュール化され必要に応じて再分解されたアプリケーション構築を支援する特徴を持ちます。「ビジュアルデザインツール(http://vaadin.com/eclipse/#visual-designer)」を含む「IDEやツール化支援(http://vaadin.com/tooling)」により、ユーザインターフェイスを高速に開発することができます。
詳細は「Vaadinの特徴(https://vaadin.com/features)」へ
衝撃的なWebアプリケーション、ルックアンドフィールが違いを生む。Vaadinは素晴らしいコンポーネントや多くのカスタマイズ可能なテーマを提供します。
GWTベースのウィジェットによるブラウザ独立したウェブアプリケーション構築、Vaadinアプリケーションはリッチなユーザエクスペリエンスを提供し、かつプラグインのインストールなしですべてのモダンなブラウザをサポートします。
Vaadinを使った短期開発、数分でWebアプリケーションを作成します。数行のJavaコードだけでVaadinがのこりを世話します。複雑なXML設定なし、JavaScriptなし、RPCなし。
セキュアなWebアプリケーション、Vaadinコンポーネントを使うことで、証明されたサーバサイドアーキテクチャがアプリケーションコードをブラウザに送信しないことを保証します。
保守しやすいアプリケーション、ピュアJavaによるアプリケーション構築ががより簡単な拡張性と長期の保守性をもたらします。
オフラインかつステートレスなアプリケーション、必要に応じてブラウザ上で実行するJavaScriptへコンパイルすることで、Vaadinはクライアント側の機能をJavaで記述することを許可します。
VaadinはApache Software License 2.0に準拠します。これは非商用、商用プロジェクトどちらも無料であることを意味します。
ライセンスの詳細はこちら(http://vaadin.com/license)
XML、JavaScript、ブラウザ、RPCについては忘れなさい、サーバサイドJavaコードが動作します。この分離はVaadinがGWTのようなクライアント中心のJavaフレームワークであることを示しています。
新たなユーザインターフェイスコンポーネントを構築するため、あるいはオフラインのアプリケーションを構築するためのHTML5、JavaScript、GWTを使用している拡張されたクライアントサイドVaadin。
Hello World - 伝統的な例
HelloWorld.java(http://demo.vaadin.com/docs/example-source/com/vaadin/demo/HelloWorld.java.html)
アプリの実行(http://demo.vaadin.com/HelloWorld)
Calculator - 単純なイベントハンドリング&ロジック
Calc.java(http://demo.vaadin.com/docs/example-source/com/vaadin/demo/Calc.java.html)
アプリの実行(http://demo.vaadin.com/Calc)
Addressbook Tutorial – アノテートされたアプリの例
vaadin.com/tutorial(https://vaadin.com/tutorial)
どのようにしてVaadinが動作するか、そして異なるプラットフォームやほかのフレームワークと統合しているかを見てください。
https://vaadin.com/image/image_gallery?uuid=453a301a-798c-4daf-aea7-3fd115c0d88a&groupId=10187&t=1349442259604
詳細なアーキテクチャはBook of Vaadinにかかれています。
・Vaadin Introduction(https://vaadin.com/book/-/page/intro.html#intro.overview)
・Application Architecure(https://vaadin.com/book/-/page/application.html)
・Communication Architecture(https://vaadin.com/book/-/page/architecture.client-side.html)
Vaadinはブラウザ互換性問題を引き離し、アプリケーションの開発に集中させてくれます。すべてのVaadinコンポーネントは以下のブラウザと互換性があります。
・Internet Explorer
・Mozilla Firefox
・Safari
・Opera
・Google Chrome
完全互換性情報はこちら(https://vaadin.com/features)
VaadinはGWT、JavaScriptベースなのでエンドユーザにプラグインのインストールを要求しません。
VaadinとほかのJava Web フレームワークのサイドバイサイドな比較。
「フレームワーク比較(https://vaadin.com/comparison)」へ進んでください。
------
ビデオはまだ見ていないが、わかったことはGWTベースのフレームワークでUIのデザインツールなんかがあって短期開発アプリ向けだということ。
Apache2.0準拠のオープンソースであることはわかった。
数行のJavaコードでWebアプリつくれまっせ..っていうのは眉唾だなあ..やっぱり画面の作り方がどれだけ簡単かみてみないとなあ..
というかGWT関連の記事ってことごとくPVが一回り桁数少ないんだよなあ..
日本のGWTユーザはレッドコード扱いになっているのかもしれないなあ..
ページを見ていると、Vaadinというフレームワークがよく出てくる。
どうも出自は2010年ころからでているが、日本はGWTがなぜか流行らないので情報が殆ど無い。どこぞの記事に紹介があったが3ページ目辺りで会員登録しないと見せないよっていう意地悪をされたので萎えてそのままだった。
でも、せっかくなのでイントロくらいは読んでおこうと思い、以下のページだけ翻訳してみた。
Introduction to Vaadin Development
https://vaadin.com/learn
以下私の翻訳ですが、直訳しているだけなのでとっても読みにくいです。
Yahoo翻訳よりまし程度で読んでください。
(もちろん、at your own riskで)
------
Vaadin開発へのイントロダクション
[YouTube] Vaadin Step-by-Step
https://www.youtube.com/watch?feature=player_embedded&v=KsvvF1zgMQM
この短いビデオは、Vaadin7、Vaadin Eclipse プラグイン、Apache Tomcatを使った開発のチュートリアルです。
Vaadinとは何?
Vaadinは リッチインターネットアプリケーション(RIA)のためのWebアプリケーションフレームワークです。ソリューションベースのJavaScriptライブラリやブラウザプラグインとは対照的に、Vaadinは、強力なサーバサイドプログラミングモデル、そしてGWTやHTML5ベースのクライアント再度開発ツールが特徴です。RPCやクロスブラウザ互換性、全てのレイヤをまたがったフルコントロールといった実装時の細々としたことから分離された短期開発モデルを要約します。
VaadinはUIコンポーネントの巨大な集まりです。「ボタン(http://demo.vaadin.com/sampler/#Buttons)」、「テーブル(http://demo.vaadin.com/sampler/#GridsAndTrees)」、「ツリー(http://demo.vaadin.com/sampler/#GridsAndTrees)」や「レイアウト(http://demo.vaadin.com/sampler#ComponentContainers)」といったコンポーネントからアプリケーションユーザ・インタフェイスを構築します。コンポーネントはビジネスロジックや相互にコミュニケーションをとるイベント、リスナ、データバインディングを使用します。
Vaadinは短期アプリケーション開発のための強力なアーキテクチャです。コンポーネントベースのアーキテクチャ、ならびに静的Java言語、そしてデータバインディングは、より簡単にモジュール化され必要に応じて再分解されたアプリケーション構築を支援する特徴を持ちます。「ビジュアルデザインツール(http://vaadin.com/eclipse/#visual-designer)」を含む「IDEやツール化支援(http://vaadin.com/tooling)」により、ユーザインターフェイスを高速に開発することができます。
詳細は「Vaadinの特徴(https://vaadin.com/features)」へ
Vaadinを使うと...
衝撃的なWebアプリケーション、ルックアンドフィールが違いを生む。Vaadinは素晴らしいコンポーネントや多くのカスタマイズ可能なテーマを提供します。
GWTベースのウィジェットによるブラウザ独立したウェブアプリケーション構築、Vaadinアプリケーションはリッチなユーザエクスペリエンスを提供し、かつプラグインのインストールなしですべてのモダンなブラウザをサポートします。
Vaadinを使った短期開発、数分でWebアプリケーションを作成します。数行のJavaコードだけでVaadinがのこりを世話します。複雑なXML設定なし、JavaScriptなし、RPCなし。
セキュアなWebアプリケーション、Vaadinコンポーネントを使うことで、証明されたサーバサイドアーキテクチャがアプリケーションコードをブラウザに送信しないことを保証します。
保守しやすいアプリケーション、ピュアJavaによるアプリケーション構築ががより簡単な拡張性と長期の保守性をもたらします。
オフラインかつステートレスなアプリケーション、必要に応じてブラウザ上で実行するJavaScriptへコンパイルすることで、Vaadinはクライアント側の機能をJavaで記述することを許可します。
フリーなオープンソース
VaadinはApache Software License 2.0に準拠します。これは非商用、商用プロジェクトどちらも無料であることを意味します。
ライセンスの詳細はこちら(http://vaadin.com/license)
簡単なプログラミングモデル
サーバサイドJava
XML、JavaScript、ブラウザ、RPCについては忘れなさい、サーバサイドJavaコードが動作します。この分離はVaadinがGWTのようなクライアント中心のJavaフレームワークであることを示しています。
クライアントサイドJava
新たなユーザインターフェイスコンポーネントを構築するため、あるいはオフラインのアプリケーションを構築するためのHTML5、JavaScript、GWTを使用している拡張されたクライアントサイドVaadin。
コード例
Hello World - 伝統的な例
HelloWorld.java(http://demo.vaadin.com/docs/example-source/com/vaadin/demo/HelloWorld.java.html)
アプリの実行(http://demo.vaadin.com/HelloWorld)
Calculator - 単純なイベントハンドリング&ロジック
Calc.java(http://demo.vaadin.com/docs/example-source/com/vaadin/demo/Calc.java.html)
アプリの実行(http://demo.vaadin.com/Calc)
Addressbook Tutorial – アノテートされたアプリの例
vaadin.com/tutorial(https://vaadin.com/tutorial)
Vaadin アーキテクチャ
どのようにしてVaadinが動作するか、そして異なるプラットフォームやほかのフレームワークと統合しているかを見てください。
https://vaadin.com/image/image_gallery?uuid=453a301a-798c-4daf-aea7-3fd115c0d88a&groupId=10187&t=1349442259604
詳細なアーキテクチャはBook of Vaadinにかかれています。
・Vaadin Introduction(https://vaadin.com/book/-/page/intro.html#intro.overview)
・Application Architecure(https://vaadin.com/book/-/page/application.html)
・Communication Architecture(https://vaadin.com/book/-/page/architecture.client-side.html)
ブラウザ独立
Vaadinはブラウザ互換性問題を引き離し、アプリケーションの開発に集中させてくれます。すべてのVaadinコンポーネントは以下のブラウザと互換性があります。
・Internet Explorer
・Mozilla Firefox
・Safari
・Opera
・Google Chrome
完全互換性情報はこちら(https://vaadin.com/features)
ブラウザプラグイン不要
VaadinはGWT、JavaScriptベースなのでエンドユーザにプラグインのインストールを要求しません。
フレームワーク比較
VaadinとほかのJava Web フレームワークのサイドバイサイドな比較。
「フレームワーク比較(https://vaadin.com/comparison)」へ進んでください。
------
ビデオはまだ見ていないが、わかったことはGWTベースのフレームワークでUIのデザインツールなんかがあって短期開発アプリ向けだということ。
Apache2.0準拠のオープンソースであることはわかった。
数行のJavaコードでWebアプリつくれまっせ..っていうのは眉唾だなあ..やっぱり画面の作り方がどれだけ簡単かみてみないとなあ..
というかGWT関連の記事ってことごとくPVが一回り桁数少ないんだよなあ..
日本のGWTユーザはレッドコード扱いになっているのかもしれないなあ..
2014年7月10日木曜日
【解決しました】Proxy環境だとIBM BlueMix Tools EclipseプラグインからBlueMixサイトへ繋がらない
IBM BlueMixのハンズオンへ行ってきた人の資料を借りて
とりあえずデプロイするところまでためそうとしたのだけど..
プラグインをマーケットプレイスからインストールした後
サーバにあらかじめBlueMix上に作ったサーバを登録しようと
サーバタブ選択→右クリック「新規」>「サーバ」>「IBM: IBMBlueMix」
を実行、サーバを作ったアカウントのメールアドレスとパスワードを入れて
「Validate Account」ボタンを押したら
Unable to communicate with server - I/O error on GET request for "https://api.ng.bluemix.net/info": api.ng.bluemix.net; nested exception is java.net.UnknownHostException: api.ng.bluemix.net
というエラーが出た。
ブラウザから「https://api.ng.bluemix.net/info」をたたくと
{"name":"BlueMix","build":"169001","support":"http://ibm.com","version":2,"description":"IBM BlueMix","authorization_endpoint":"https://login.ng.bluemix.net/UAALoginServerWAR","token_endpoint":"http://uaa.ng.bluemix.net","allow_debug":true}
上記のJSONデータが帰ってくる..
..ので見れないわけないんだけど..
で例によってプロクシかな..とおもい
プロクシではない環境で実行したら
すんなり次へ行った..
Cloud Foundry(MicroCloudFoundry)やOpenShift(LiveCD)はローカルの仮想環境イメージも提供しているので
BlueMixにもあるかと探したけど..ない..
検索力がないから見つからないのかもしれないけど..
IBMのサービスだから企業向けかと思ったけど..
企業なんかProxy前提の環境ばかりなのに
こんなんじゃ使い物にならないよ...
どのポート使ってるのか調べようかと思ったけど
たぶんPivotalみたいにMCFにかわるイメージをくばるんじゃないかなとおもい
諦めました..
だれか、プロクシ経由でもBlueMix上のサーバへデプロイできる環境作れたら
教えてください..
《2014/10/07追記》
実は、
IBMの担当者に聞いて"proxy経由で接続できる" との回答をもらった人がいて、
あきらめず再度試してみました。
どうも、
ウィンドウ>設定>一般>ネットワーク接続 で、
「ネイティブ」設定でやっていると失敗するようで、
ここを「マニュアル」にしてプロクシサーバやポートなどをEclipse上に直接設定したら
うまくつながりました。
なんかβ版もでているようなので
最新のプラグインでは治っているかもしれませんが..
マーケットプレイスつながるんだから、
「ネイティブ」設定で全然大丈夫だったのに..
ハマった人、ご注意ください。
2013年12月11日水曜日
CloudStack4.2.0用の簡単なUIプラグインを作ってみる
※本投稿は、CloudStack Advent Calendar 12月11日のエントリです。
CloudStack4.2.0から管理サーバのWeb UIに対してプラグインが作れる
ようになった。
リリースノートにはUIプラグインの作り方については
「詳しくはDeveloper Guideを読んでね」と書いてあった。
しかしDeveloper Guideが4.2.0リリースされて1ヶ月以上経つのに
ちっともでてこない..
なので、自分でちょっと管理サーバのWebコンテンツ内を
覗いてみることにした。
管理サーバのWebコンテンツディレクトリ内には
/usr/share/cloudstack-management/webapps
が管理サーバWeb UIのコンテンツが入っている。
更に下の
/usr/share/cloudstack-management/webapps/client/plugins
というディレクトリをみてみると、
plugins.jsとtestPluginディレクトリがおいてあった。
plugins.js上のcloudstack.pluginsへ
プラグイン名を入れれば、
その名前のディレクトリ上のJavaScriptを読んでくれそうだな
と直感的にわかれよ、ということらしい。
むかしCloudStackのAPIを呼び出すURL文字列を作成する
AppEngineアプリ
CloudStack API Creator
https://cloudstacktools.appspot.com/
CloudStack API Creatorサイト作成に関する投稿
http://fight-tsk.blogspot.jp/2013/03/cloudstack-apiurl.html
を作ったのでこれをなんちゃってプラグインにしてみることにした。
まずプラグインIDを決める(apiUrlCreatorにした)。
そして、
/usr/share/cloudstack-management/webapps/client/plugins/plugins.js
を
(function($, cloudStack) {
cloudStack.plugins = [
'testPlugin',
'apiUrlCreator'
];
}(jQuery, cloudStack));
と書き換え、
testPluginディレクトリを丸々
/usr/share/cloudstack-management/webapps/client/plugins/
ディレクトリ下にプラグインIDとおなじディレクトをつくってコピーして
/usr/share/cloudstack-management/webapps/client/plugins/apiUrlCreator
/usr/share/cloudstack-management/webapps/client/plugins/apiUrlCreator/apiUrlCreator.js (testPlugin.jsをリネーム)
/usr/share/cloudstack-management/webapps/client/plugins/apiUrlCreator/apiUrlCreator.css (testPlugin.cssをリネーム)
/usr/share/cloudstack-management/webapps/client/plugins/apiUrlCreator/config.js
/usr/share/cloudstack-management/webapps/client/plugins/apiUrlCreator/icon.png
を作成し(念のためroot.rootで同じパーミッションにしておき)、
cofig.js は以下のソースに書き換え、
apiUrlCreator.jsも以下のソースに書き換え、
最後に
service cloudstack-management restartをかけて
管理サーバWeb UIを使って一般ユーザ(ロールがuser)でログインすると..
左下に「プラグイン」と「API URL Creator」ってのができた。

以下の画面スナップは「プラグイン」を押下したところ。
現時点で有効なプラグイン情報が表示されていて、
今回作成した「API URL String creator plugin」も表示されている。

「API URL String Creator Plugin」を選択すると、
config.jsに書いた詳細情報がでてくる。

次に左側のメニューの一番下の「API URL Creator」の方をクリックすると
以下のスナップのようにGoogle App Engine上のWebサイトが表示される。

高さがあふれたのはご愛嬌..
apiUrlCreator.jsのpreFilterで常にtrueを返すようにすれば
一般ユーザも見えるプラグインになる。
<プラグインID>.js というファイルのshow部分
(divタグにhtmlを埋め込むサンプルコード部分)を、
うまく書き換えてやれば複雑なプログラムも組むことができる。
DOM対象となる実際のHTMLファイルのdivタグにidが振られていないので
jQueryの呼び出しをそのまま使った。
#一つ上にid=shadowというdivタグがあって
#こっちを操作してやろうとしたらうまく行かなかった。
UIプラグイン作成の鍵はCloudStack側が用意している
plugin.ui.addSessionというJavaScript関数。
この使い方のドキュメントがあればもっといろいろできるのに..
今回プラグイン関連ファイルをさわっているうちに
iframeが使えるがわかったので
前に作ったApp Engineサイトを流用したが、
同じコンテンツ内にServlet/JSPなりを書いてアプリを組む
なんてことも可能だろう。
CloudStackはAPIがREST通信なので同じサーバでなくてももちろん可能だが、
どうせならログイン中のユーザIDの権限でAPI操作できるような
JavaScriptを組みたい。
にしても..最近はJavaScriptを直接書く技術が必要なケースが増えてきた。
jQueryとかいちいちGoogleって書いていると生産性が悪いし..
企業内でCloudStackを使用する場合、
足りないのは利用などの申請系のワークフローと
課金機能なんだけど..
..誰か作ってくれんかなあ..
CloudStack4.2.0から管理サーバのWeb UIに対してプラグインが作れる
ようになった。
リリースノートにはUIプラグインの作り方については
「詳しくはDeveloper Guideを読んでね」と書いてあった。
しかしDeveloper Guideが4.2.0リリースされて1ヶ月以上経つのに
ちっともでてこない..
なので、自分でちょっと管理サーバのWebコンテンツ内を
覗いてみることにした。
管理サーバのWebコンテンツディレクトリ内には
/usr/share/cloudstack-management/webapps
が管理サーバWeb UIのコンテンツが入っている。
更に下の
/usr/share/cloudstack-management/webapps/client/plugins
というディレクトリをみてみると、
plugins.jsとtestPluginディレクトリがおいてあった。
plugins.js上のcloudstack.pluginsへ
プラグイン名を入れれば、
その名前のディレクトリ上のJavaScriptを読んでくれそうだな
と直感的にわかれよ、ということらしい。
むかしCloudStackのAPIを呼び出すURL文字列を作成する
AppEngineアプリ
CloudStack API Creator
https://cloudstacktools.appspot.com/
CloudStack API Creatorサイト作成に関する投稿
http://fight-tsk.blogspot.jp/2013/03/cloudstack-apiurl.html
を作ったのでこれをなんちゃってプラグインにしてみることにした。
まずプラグインIDを決める(apiUrlCreatorにした)。
そして、
/usr/share/cloudstack-management/webapps/client/plugins/plugins.js
を
(function($, cloudStack) {
cloudStack.plugins = [
'testPlugin',
'apiUrlCreator'
];
}(jQuery, cloudStack));
と書き換え、
testPluginディレクトリを丸々
/usr/share/cloudstack-management/webapps/client/plugins/
ディレクトリ下にプラグインIDとおなじディレクトをつくってコピーして
/usr/share/cloudstack-management/webapps/client/plugins/apiUrlCreator
/usr/share/cloudstack-management/webapps/client/plugins/apiUrlCreator/apiUrlCreator.js (testPlugin.jsをリネーム)
/usr/share/cloudstack-management/webapps/client/plugins/apiUrlCreator/apiUrlCreator.css (testPlugin.cssをリネーム)
/usr/share/cloudstack-management/webapps/client/plugins/apiUrlCreator/config.js
/usr/share/cloudstack-management/webapps/client/plugins/apiUrlCreator/icon.png
を作成し(念のためroot.rootで同じパーミッションにしておき)、
cofig.js は以下のソースに書き換え、
(function (cloudStack) {
cloudStack.plugins.apiUrlCreator.config = {
title: 'API URL String creator Plugin',
desc: 'To create URL string with CloudStack API',
externalLink: 'http://fight-tsk.blogspot.jp/',
authorName: 'Hara Hara Development',
authorEmail: 'SammoHungGambou@gmail.com'
};
}(cloudStack));
apiUrlCreator.jsも以下のソースに書き換え、
(function (cloudStack) {
cloudStack.plugins.apiUrlCreator = function(plugin) {
plugin.ui.addSection({
id: 'apiUrlCreator',
title: 'API URL Creator',
preFilter: function(args) {
return true;//isAdmin();
}, show: function() {
return $('<div>').css('width', '100%').css('height', '700px').css('overflow', 'auto').html('<iframe height="98%" width="100%" src="https://cloudstacktools.appspot.com/" />');
}
});
};
}(cloudStack));
最後に
service cloudstack-management restartをかけて
管理サーバWeb UIを使って一般ユーザ(ロールがuser)でログインすると..
左下に「プラグイン」と「API URL Creator」ってのができた。

以下の画面スナップは「プラグイン」を押下したところ。
現時点で有効なプラグイン情報が表示されていて、
今回作成した「API URL String creator plugin」も表示されている。

「API URL String Creator Plugin」を選択すると、
config.jsに書いた詳細情報がでてくる。

次に左側のメニューの一番下の「API URL Creator」の方をクリックすると
以下のスナップのようにGoogle App Engine上のWebサイトが表示される。

高さがあふれたのはご愛嬌..
apiUrlCreator.jsのpreFilterで常にtrueを返すようにすれば
一般ユーザも見えるプラグインになる。
<プラグインID>.js というファイルのshow部分
(divタグにhtmlを埋め込むサンプルコード部分)を、
うまく書き換えてやれば複雑なプログラムも組むことができる。
DOM対象となる実際のHTMLファイルのdivタグにidが振られていないので
jQueryの呼び出しをそのまま使った。
#一つ上にid=shadowというdivタグがあって
#こっちを操作してやろうとしたらうまく行かなかった。
UIプラグイン作成の鍵はCloudStack側が用意している
plugin.ui.addSessionというJavaScript関数。
この使い方のドキュメントがあればもっといろいろできるのに..
今回プラグイン関連ファイルをさわっているうちに
iframeが使えるがわかったので
前に作ったApp Engineサイトを流用したが、
同じコンテンツ内にServlet/JSPなりを書いてアプリを組む
なんてことも可能だろう。
CloudStackはAPIがREST通信なので同じサーバでなくてももちろん可能だが、
どうせならログイン中のユーザIDの権限でAPI操作できるような
JavaScriptを組みたい。
にしても..最近はJavaScriptを直接書く技術が必要なケースが増えてきた。
jQueryとかいちいちGoogleって書いていると生産性が悪いし..
企業内でCloudStackを使用する場合、
足りないのは利用などの申請系のワークフローと
課金機能なんだけど..
..誰か作ってくれんかなあ..
2013年11月12日火曜日
ガラポンTVを使ってみる
前から気になっていたガラポンTVを購入した。
ガラポンTVは、
ワンセグ局全局を内蔵もしくは外付けHDDへ記録するサーバで
価格は最近はだいたい約4万円前後で販売されている。
Regzaサーバは地デジを記録するので内蔵4TBでせいぜい1週間が
いいところだが、このガラポンTVはワンセグなので
画像は荒くはなるが記録する時間は内蔵ストレージだけで2週間、
3TB HDDを増設すれば90日間録画することができる。
Regzaサーバは同一セグメント内で他デバイスで再生可能であるのに対し、
ガラポンTVはユニバーサルプラグアンドプレイ対応のルータを使っていれば
外部のインターネット回線経由で再生が可能である。
但し特殊なポートを通信に使用しているため、
プロクシ経由での視聴はポートフォワーディングなどを行わない限りできない。
ルータのWAN側がグローバルIPアドレスであれば、
DHCPでの割り当てであっても屋外からも視聴できる。
どうもガラポンTVがIPアドレス変更を認識すると
ガラポンTVサイトへ変更されたことを伝達するしくみになっているらしい。
なので
屋外から視聴する場合は一旦ガラポンTVサイトへログインしてから
自宅のガラポンTVへ接続するので、
DHCPであっても受信可能なのだとおもう。
Regzaは画像品質重視であるのに対して
ガラポンTVは記録期間重視で
iPhoneやAndroidなどのスマートフォン、
iPadなどのデバイスでも視聴可能だ。
#無料の専用アプリが用意されている
私の自宅はインターネットマンションで
ユニバーサルプラグアンドプレイ対応のルータ経由で
使用しているが、
こんな環境であっても屋外からLTE回線で
iPhoneでTVを見ることができる。
自宅では無線LANで同一セグメントにつないでいたiPad経由で設定を行ったが
ルータの設定変更などややこしいルーティング関連の設定は自動だった。
#ユニバーサルプラグアンドプレイでないルータとか一部のルータは
#個別せってし無くてはならない
時間も30分くらいかな。
#一番長いのがワンセグのチャンネル検索だったがそのほかはほとんど時間がかからなかった。
必要なのは同軸ケーブルとLANケーブル(両方同梱されていない)。
国内の動画サイトは海外からの利用が不可な場合が多いが
このガラポンTVを使えば海外常駐者でもブロードバンド環境さえあれば
いつでも日本のTVを視聴することができる、というのが宣伝文句だ。
でもインドに半年いたけど
国内にあるサーバまでは距離が遠すぎて
回線速度が確保できなかった。
ニコニコ動画は当時国内サーバしかなかったので
ぶつぶつきれてしまいほぼ使い物にならず
もっぱらyoutubeへアップされた番組をちょこちょこみていた。
回線品質の良い国なら使い物になるかな..
くらいで思っていたほうが良いと思う。
本音を言えばストレージをクラウド上においてほしいところなのだけど、
たぶんTV業界の既得権益ホルダーな人たちがやいのやいのいうから
できないのだとおもう。
もしそうなっちゃったら
「TVの電波、いらないんじゃないの?」ってなっちゃうからね。
..生きてる間は難しそうだなあ..
ガラポンTVは、
ワンセグ局全局を内蔵もしくは外付けHDDへ記録するサーバで
価格は最近はだいたい約4万円前後で販売されている。
Regzaサーバは地デジを記録するので内蔵4TBでせいぜい1週間が
いいところだが、このガラポンTVはワンセグなので
画像は荒くはなるが記録する時間は内蔵ストレージだけで2週間、
3TB HDDを増設すれば90日間録画することができる。
Regzaサーバは同一セグメント内で他デバイスで再生可能であるのに対し、
ガラポンTVはユニバーサルプラグアンドプレイ対応のルータを使っていれば
外部のインターネット回線経由で再生が可能である。
但し特殊なポートを通信に使用しているため、
プロクシ経由での視聴はポートフォワーディングなどを行わない限りできない。
ルータのWAN側がグローバルIPアドレスであれば、
DHCPでの割り当てであっても屋外からも視聴できる。
どうもガラポンTVがIPアドレス変更を認識すると
ガラポンTVサイトへ変更されたことを伝達するしくみになっているらしい。
なので
屋外から視聴する場合は一旦ガラポンTVサイトへログインしてから
自宅のガラポンTVへ接続するので、
DHCPであっても受信可能なのだとおもう。
Regzaは画像品質重視であるのに対して
ガラポンTVは記録期間重視で
iPhoneやAndroidなどのスマートフォン、
iPadなどのデバイスでも視聴可能だ。
#無料の専用アプリが用意されている
私の自宅はインターネットマンションで
ユニバーサルプラグアンドプレイ対応のルータ経由で
使用しているが、
こんな環境であっても屋外からLTE回線で
iPhoneでTVを見ることができる。
自宅では無線LANで同一セグメントにつないでいたiPad経由で設定を行ったが
ルータの設定変更などややこしいルーティング関連の設定は自動だった。
#ユニバーサルプラグアンドプレイでないルータとか一部のルータは
#個別せってし無くてはならない
時間も30分くらいかな。
#一番長いのがワンセグのチャンネル検索だったがそのほかはほとんど時間がかからなかった。
必要なのは同軸ケーブルとLANケーブル(両方同梱されていない)。
国内の動画サイトは海外からの利用が不可な場合が多いが
このガラポンTVを使えば海外常駐者でもブロードバンド環境さえあれば
いつでも日本のTVを視聴することができる、というのが宣伝文句だ。
でもインドに半年いたけど
国内にあるサーバまでは距離が遠すぎて
回線速度が確保できなかった。
ニコニコ動画は当時国内サーバしかなかったので
ぶつぶつきれてしまいほぼ使い物にならず
もっぱらyoutubeへアップされた番組をちょこちょこみていた。
回線品質の良い国なら使い物になるかな..
くらいで思っていたほうが良いと思う。
本音を言えばストレージをクラウド上においてほしいところなのだけど、
たぶんTV業界の既得権益ホルダーな人たちがやいのやいのいうから
できないのだとおもう。
もしそうなっちゃったら
「TVの電波、いらないんじゃないの?」ってなっちゃうからね。
..生きてる間は難しそうだなあ..
2013年10月23日水曜日
CloudStack4.2.0をインストールしたら、システムVMがStartingのままになる
CloudStack4.2.0のdebパッケージが配置されていたので、
早速Ubuntu Server12.04LTSにインストールしてみた。
4.0/4.1/4.1.1/4.1.1-1と全く同じ手順でインストールを行い、
管理コンソールからいざ「ゾーンの有効化」をはじめると..
Secondary Storage VM、Console Proxy VM両方共「Starting」のままで
いくら待っても起動しない。
/var/log/cloudstack/management以下のログを見ると
Exceptionが発生していた。
システムVMが上がらない系の問題は
CloudStackインストールを試す人はぼぼかならず引っかかるが
その際の動きは微妙に違う。
多いのは起動→失敗→インスタンス作り直し→起動→失敗..を繰り返し
VMの名前の数字がどんどん上がっていくパターン。
#こっちはNFSのマウントオプションにミスが有ることが多い
今回はこれとは違うので、mountオプションの問題ではなさそうだ。
いろいろためしたがうまくいかない..
..で、ふと管理コンソールに「領域」という概念が増えていることに気づく。
もしかしたらVMのテンプレート自体がかわっとのかもしれない..
でInstall Guideを読んでみると..
4.5.9 Prepare the System VM Templateの記述で
cloud-install-sys-mount-tmpltコマンドの
KVMのテンプレートURLが
http://download.cloudstack.com/templates/acton/acton-systemvm-02062012.qcow2.bz
でなく
http://d21ifhcun6b1t2.cloudfront.net/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2
になっとる..
..気づくのに、1ヶ月かかった..
2013年10月8日火曜日
CloudStack4.2.0がやっとUbuntu Server12.04LTSでapt-getできるようになった
10月はじめに4.2.0がリリースされていたのだが、
何度かトライしたが、
Ubuntuのapt-getコマンドで取得できるような環境はまだできあがっていなかった。
しかたないのでdebファイルを直接入手してdpkg -iでインストールしていたが、
さきほどようやくapt-get/aptitudeできるようになった。
でも、ダウンロード速度が..遅すぎ..
cloudstack-managementなんて137MBしかないのに
1時間どころじゃない..
みんなやっているから?!
ソースから構築するのがスピード的には一番よさそうだ..
CloudStack4.2.0自体はまだしっかり試していないが、
管理コンソールに「アフィニティグループ」と「領域」の2つのメニューが増えていた。
領域はリージョンのことで、
別のDCにあるCloudStackを操作する時にサーバ指定を変えるなどかなと想像できるが..
アフィニティグループねえ..小集団で全員管理者とかかな?
もうちょっと調べてみるか..
p.s.
ちなみにインストールは4.1とほぼかわらないが
プライマリ指定のときゾーン全体にしてNFSサーバを登録するとエラーになるので
クラスタ指定でインストールすれば素直にセットアップがとおる。
ただし、ひっかかるのがSystem VMのテンプレートをダウンロードしてくる所。
URLが変わっているのだ。
それに気づかずに、4.1時代のテンプレートをセカンダリストレージにおいてしまうと、
例の「ゾーン有効化直後System VMが上がらない(ずーっと2つともStarting)」状態
に陥る。
何度かトライしたが、
Ubuntuのapt-getコマンドで取得できるような環境はまだできあがっていなかった。
しかたないのでdebファイルを直接入手してdpkg -iでインストールしていたが、
さきほどようやくapt-get/aptitudeできるようになった。
でも、ダウンロード速度が..遅すぎ..
cloudstack-managementなんて137MBしかないのに
1時間どころじゃない..
みんなやっているから?!
ソースから構築するのがスピード的には一番よさそうだ..
CloudStack4.2.0自体はまだしっかり試していないが、
管理コンソールに「アフィニティグループ」と「領域」の2つのメニューが増えていた。
領域はリージョンのことで、
別のDCにあるCloudStackを操作する時にサーバ指定を変えるなどかなと想像できるが..
アフィニティグループねえ..小集団で全員管理者とかかな?
もうちょっと調べてみるか..
p.s.
ちなみにインストールは4.1とほぼかわらないが
プライマリ指定のときゾーン全体にしてNFSサーバを登録するとエラーになるので
クラスタ指定でインストールすれば素直にセットアップがとおる。
ただし、ひっかかるのがSystem VMのテンプレートをダウンロードしてくる所。
URLが変わっているのだ。
それに気づかずに、4.1時代のテンプレートをセカンダリストレージにおいてしまうと、
例の「ゾーン有効化直後System VMが上がらない(ずーっと2つともStarting)」状態
に陥る。
# /usr/share/cloud-common/scripts/storage/secondary/cloud-
install-sys-tmplt -m /mnt/secondary -u
http://d21ifhcun6b1t2.cloudfront.net/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2
-h kvm-F
ご注意を。
2013年9月10日火曜日
CloudStackにおけるrealhostipの役割についてのwiki文書を翻訳してみる
コンソールProxy VMが使用しているrealhostip.com、
こっちでDNS設定していないのに勝手にDNS正引きして
コンソールを表示(したり、表示できなかったり)することを
疑問に思っていた。
CloudStack wiki をちょこちょこみていると
ふと
Role of realhostip in CloudStack
なるページを見つけた。
ので、ちょっと翻訳してみた。
正直ちょっとくせがあるので、正確に翻訳できたかは不明。
なので参照の際はくれくれもat your own riskでお願いします。
--------
CloudStackにおけるrealhostipの役割
どのようにrealhostip DNS名はCloudStack内で正確に処理されているのか、という質問を定期的にうけます。realhostip.comドメインは、異なるカスタマサイト内のすべてのCloudStackインストレーション間でHTTPS通信を動作させるために存在しますが、管理者無しでどうやってデプロイ環境の変更のためにSSL認証をロードしているのかを心配しているのです。
SSL認証はCloudStackシステムVMでHTTP接続を行う際に使用されています。例えば、コンソール proxy VM やセカンダリストレージVMなど、両方内部のHTTPサーバで使っています。
realhostip.com SSL認証は、すべての*.realhostip.com DNS名が認証を使用するとみなすワイルドカードアドレスでサインされています。各CloudStackカスタマは各々の環境を持つため、各カスタマの環境はそれぞれにシステムVMを保有し、各システムVMはそれぞれにIPアドレスを保有することになります。
異なるカスタマ間のすべてのインスタンスに適用するためある1つの認証を使用する場合、CloudStackによってホストされるダイナミックDNSサービスの提供する解決方法を漏らしてしまいますが、DDNSサービスは基本的に「xxx-xxx-xxx-xxx.realhostip.com to IP address xxx.xxx.xxx.xxx」というDNS名からIPアドレスまでのフォームに変換します。
CloudStackは各環境のIPアドレスをコントロールしているので、SSL認証が必要な時はいつでも、カスタマが環境を実行中であることは重要ではなく、そのようなDDNSサービスが有効なので、いつでも絶えず変更されるIPアドレス上でサフィックスがrealhostip.comであるドメインの割り当てが可能となります、これがすべてのCloudStack実行環境間である1つのSSL認証が一般的に適用可能とする我々のトリックです。
これらのケースの殆どでは、主な目的が(サイト認証の正確性ではなく)セキュアなコミュニケーションチャネルを確立することであるため、DNS名の醜さがエンドユーザに対して見せることはなありません、しかしながら、カスタマが面倒を見るケースもあり、それゆえ、コンソールproxy VMはユーザに対してユーザ自身のSSL証明書を使用するためのカスタマイズ可能な方法を提供します。
ケルビン
--------
そうかセキュアな通信をするためにSSL証明書が必要で、
証明書を作成するには何がしかのFQDNが必要になり、
それで*.realhost.comというワイルドカード証明書を作ったわけか。
で内部でDDNS機能を持たせてそこで名前解決させていた、と。
どうも文章がただしければ、こっちでSSL証明書やドメイン名はかえられるようだけど..
たしかにちょっとトリッキーな使い方してるなあ..
ご参考まで。
登録:
投稿 (Atom)
Google Colab相当の環境をローカルPC上のDocker Composeで実現する
Docker Composeの有料版に、お金を払いたくない ^H^Hが使えない ため古いゲーミングPC(GeForce3080)にDocker Composeを入れてその上のコンテナでGoogle Colab相当のノート操作ができないかためしてみた: コンテナイメージとして a...

