Translate

2012年7月31日火曜日

ちょっと複雑なDIを定義したGoogle Guiceサンプルを読む




複雑な構造をGoogle Guiceで
実現すると
どうもソースコードの可読性が下がるみたいだ。

Google GuiceのFAQのリンクに
サンプルコードのリンクがある。

http://pastie.org/368348


Carクラスにengine、transmission、drivelineというフィールドがあり
Google GuiceでDIする際に
transmissionがAutomaticTransmissionの(blue)Carインスタンスと
transmissionがManualTransmissionの(red)Carインスタンスを
出し分けるというものだ。


..これは
アノテーション定義しているけど
アノテーションとしては使用しないで
Guice#getInstance()でのblue/redの使い分けだけのために定義して
いるんだ。

で、各Car固有のインジェクトになるtransmissionは
2つのPrivateModuleをつくって
それぞれ中でアノテーションクラスでexpose()させて
Guice#getInstance()で指定できるようにしているのか..


でもこれだと
Springのほうが簡単でないのかな..

Spring beans configurationファイルは
以下の様な感じで書いて..

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="blue" class="sample.Car">
<property name="engine" ref="dieselEngine"></property>
<property name="transmission" ref="automaticTransmission"></property>
<property name="driveline" ref="frontWheelDrive"></property>
</bean>

<bean id="red" class="sample.Car">
<property name="engine" ref="dieselEngine"></property>
<property name="transmission" ref="manualTransmission"></property>
<property name="driveline" ref="frontWheelDrive"></property>
</bean>

<bean id="dieselEngine" class="sample.DieselEngine"></bean>

<bean id="automaticTransmission"
class="sample.AutomaticTransmission">
</bean>
<bean id="manualTransmission"
class="sample.ManualTransmission"></bean>

<bean id="frontWheelDrive" class="sample.FrontWheelDrive"></bean>

</beans>



呼び出す側は

package sample;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SampleMain {

public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("car.xml");

Car blueCar = (Car) context.getBean("blue");
System.out.println("Blue car transmission: " + blueCar.getTransmission());

Car redCar = (Car) context.getBean("red");
System.out.println("Red car transmission: " + redCar.getTransmission());
}

}

って感じで書けばいいだけだよなあ..

まあ確かにXMLが複雑になるっていう問題はあるけど。


それなりの規模の開発だったら
複雑なDI設定は
人的ミス減らすため
マクロとかEclipseプラグインとかツールをつくって
ツール経由で生成するとかになるけど
GuiceのModuleクラス生成よりは
XMLのほうが生成しやすいしなあ..



なるほど
Guice、あんまりはやってないわけだ..



そういえば..
マトリョーシカのような
自分と同じインスタンスを子供に持つ場合とか
商品によっては2段、3段と替えて売りたい場合とか
Guiceだったらどうするんだろう..

2012年7月30日月曜日

Spring DIのXML設定ファイルをそのままGoogle Guiceで使う

Spring はDIが有名で
広く利用されているのだが、

[Guice] Google Guice(その5) パフォーマンス比較

とか読んでると
Google Guiceは
なんかSpring DIより速いらしいことが書かれている。


とすると使ってみたくなるのだけど、
既にSpring DIで動作させているアプリについて
設定ファイルを全部クラス化するのは面倒くさい。

なにか楽な方法はないものかと探してみたら
Google Guiceのjarに
guice-spring-3.0.jar
なるファイルが存在しているのをみつけた。

どうもSpring DIの設定ファイルを使って
Google GuiceでDIできるらしい。

ちょっとしらべてみると
その方法が意外に簡単だった。

ので、簡単なサンプルを紹介する。

ちなみに使用したライブラリは
以下のとおり。
springはもう少し整理できるかもしれない。

・apache-common-1.1
-commons-logging.jar
・guice-3.0
-aopalliance.jar
-guice-3.0.jar
-guice-spring-3.0.jar
-javax.inject.jar
・spring-3.2.0M1
-spring-aop-3.2.0M1.jar
-spring-asm-3.2.0M1.jar
-spring-beans-3.2.0M1.jar
-spring-context-3.2.0M1.jar
-spring-core-3.2.0M1.jar
-spring-expression-3.2.0M1.jar

きちんと確認していないが、
おそらくぜんぶ
Apache License 2.0だとおもう。



まずDI対象のサンプルクラス。

Product(商品)インターフェイスの
実装クラスAppleを用意する。

/**
 * sample/Product.java
 * 商品インターフェイス
 */
package sample;

public interface Product {
 public String getName();
 public int getPrice();
}


/**
 * sample/Apple.java
 * 商品実装クラスApple
 */
package sample;

public class Apple implements Product {
 private String name;
 private int price;

 @Override
 public String getName() {
  return name;
 }

 @Override
 public int getPrice() {
  return price;
 }

 public void setName(String name) {
  this.name = name;
 }

 public void setPrice(int price) {
  this.price = price;
 }

 @Override
 public String toString(){
  return "[Product]name=[" + name + "], price=[" + price + "]";
 }
}

Spring DIの設定ファイルは以下のとおり。

<!-- sample.xls -->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="product_apple" name="製品名:りんご" class="sample.Apple">
<property name="name" value="りんご"></property>
<property name="price" value="120"></property>
</bean>
</beans>

設定ファイル上のid値product_appleを呼び出せば
nameに"りんご"、priceに120が設定された
Appleインスタンスを得られるというだけの簡単なもの。

DIする実装は以下の様に記述する。

/**
 * sample/SampleMain.java
 * Spring設定ファイルでGuice DIを動かすサンプル
 */
package sample;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.spring.SpringIntegration;

public class SampleMain {

public static void main(String[] args) {
final ApplicationContext context =
new ClassPathXmlApplicationContext("sample.xml");
Injector injector =
Guice.createInjector(new AbstractModule(){
@Override
protected void configure() {
bind(BeanFactory.class).toInstance(context);
bind(Product.class).toProvider(
SpringIntegration.fromSpring(Apple.class,"product_apple"));
    }
                   
});

Product product = injector.getInstance(Product.class);
System.out.println(product);
}
}




#設定ファイルsample.xmlの指定している箇所は
#実行する環境でパスを調整すること

SpringのApplicationContextを
GuiceのAbstractModule実装に渡して
SpringIntegrationをつかってバインドする。



そうか、BeanFactoryとしてApplicationContextをDI対象にして
よびだされたらApplicationContext#getBean()してるだけなんじゃあ...


うーん、もしそうだとしたらGuiceがかぶさってる分だけ
おそくなるんじゃないだろうか..


で、
上記サンプルのInjector#getInstance()部分をApplicationContext#getbean()にして
System.currentTimeMills()つかって計測してみたら..


種類経過時間
Springのみ466ミリ秒
Spring-Guice連携778ミリ秒


あれ?おそくなってるじゃん..



サンプルでは1回だけしかインスタンス取得してないけど
Singletonだったらたぶん2回目以降は同じくらいの速度になりそう..



とすると..
速度向上のためだけに
SpringからGuideへスイッチする場合
guice-spring-3.0.jarつかった方法ではなく
きちんとAbstractModule実装をつくって
Guice単独にしないと駄目かもしれない。



うーん、数珠つなぎ状のXMLファイルとか
configure()化するのはちょっときつそうだなあ..


だれかコンバータつくってくれないものかなあ...

とここでつぶやいてみる。


2012年7月18日水曜日

Google Compute Engineのデータシートを読む

Google Compute EngineのAPIを知りたくて、
Google Compute EngineサイトのDownload the Data Sheetリンクの先のデータシートPDFを翻訳してみました。



オープンなRESTful APIを提供と有り、
RightScale云々の記述があるのでAPIがあるのは
わかったのですが、
Eucalyptus系なのか
OpenStack系か
CloudStack系かは書かれていませんでした。

Developer's Guide、読まなきゃ駄目かなあ..


一応、以下翻訳した内容です。
#At your own riskで参照して下さい。





Google Compute Engine

より詳しい情報はこちら



 『これまで、我々はGoogle Compute Engineのような大規模データセットを
   効果的に処理する手段を持っていませんでした。
   研究者たちがより早く結果を得るためのツールを持つことは、
   我々の活動に大きなインパクトを与えるでしょう』Ilya Shmulevich
  Institute for Systems Biology准教授、癌ゲノムアトラスプロジェクト研究者



 『そして、我々はGoogle Compute Engineの処理方法に大変満足しています。
   我々が経験から得たGoogle Compute Engineの利点の一つに
   パフォーマンスに対する信頼性があります。
   我々の使用した限りでは、パフォーマンスが不安定であったことは
   ほとんどありません。』Joe Masters Emison
  BuildFax社ファウンダーおよびVP

Google Compute Engine - クラウド上での大量計算処理

Google Compute Engineは、Google SearchやGmail、Adsが動作するインフラと同じ環境上での大規模計算処理を提供します。仮想マシンをオンデマンドで用意し、シンプルだが柔軟なネットワークソリューションを使ったネットワーク接続を管理し、仮想マシンから様々なデータストレージへのアクセスを行うことができます。Google Compute Engineは制限付きプレビュー中です;サインアップ法法については、cloud.google.comへアクセスしてください。

  • Google Compute Engineは以下の様な機能を提供します:
  • 十分な仮想マシン:UbuntuもしくはCentOSのいずれかのカーネルがホストされた仮想マシン。1、2、4、もしくは8個の仮想コアインスタンス、メモリ3.75GB/仮想コア。柔軟なストレージ:Google Compute Engineは需要に対応する3つの異なるストレージオプションを提供します:
  • Ephemeral disk:仮想マシン(VM)のライフサイクルに割り当てられた単純なブロックデバイス。VMが停止するとデータも失います。強力なデータプライバシー管理のため、すべてのデータはこのデバイス上では暗号化されます。
  • Persistent disk:複製された、ネットワーク接続されたローカルディスクに匹敵するレイテンシのストレージサービス。書き込まれたデータはGoogleデータセンタの複数の物理ディスクへ保存されます。バックアップリストア目的のためのディスクのスナップショットも作成可能で、単一のディスクから複数の仮想マシンが読み取りを許可するモードではこれらのデバイスをマウントすることができます。
  • Google Cloud Storage:仮想マシンからGoogle Cloud Storageデータバケットへ簡単にアクセスできます。シームレスな認証が仮想マシンの鍵管理をせずにデータへの厳重なアクセスを実現します。
  • 柔軟なネットワーキング:お互いの仮想マシンやインターネットへの簡単な接続を実現するネットワークソリューションを提供します。
  • 分離性(Isolation):Google社のネットワークスタック上の強力なコントロールにより、認証なしのアクセスから顧客のネットワークトラヒックを守ります。
  • 外部IPアドレス:静的IPアドレス、もしくはマシンへ割り当てられた一時的なアドレスを使ったインターネットへの接続
  • 柔軟な設定が可能なファイアウォール:シンプルなファイアウォールシステムにより誰がどの仮想マシン(群)と対話できるかをコントロール
  • オープンなツール:仮想マシンの設定・用意を行うためのシンプルなUIおよびコマンドラインツールを提供します。
  • オープンAPI:すべてのツールはオープンなRESTful APIが実装されています、そして必要に応じてカスタマイズされたツールの構築が許されるオープンソースとしてリリースが計画されています。 
  • オープンエコシステム:RightScale、Puppet LabsやOpsCodeのようなプロバイダが提供する高品質でおなじみのツールがGoogle社の環境でも動作します。

何が得られるのか/企業にどんな利益があるのか
 
スケール
スケールやプロセス集中に対してサービスは最適化されます。仮想マシンの大規模配置の発生や減少に対応することができます。

価値
Google基盤は効率的なスケールに対して長年に渡り洗練し続けています。Google Compute Engineを使えば、他のクラウドプロバイダよりも計算コスト50%以上向上します。

パフォーマンス
実際のソリューションを設計する場合、予測可能なパフォーマンスは重要です。基盤のパフォーマンスに依存出来る場合、アプリケーションデザインはより簡単になります。Google社ではユーザの負荷分散にフォーカスしてきたので、他のユーザが何をしているかにかかわらず同じパフォーマンスレベルを体験することができます。ブロックデバイスの永続性のような、Google社のコアテクノロジーは、首尾一貫した速さと信頼性が得られるためにデザインされています。

柔軟かつオープンな環境
好きなようにLinux仮想マシンのフルカスタマイズ。Google社はパートナとともにお客様大規模処理をたすけるソリューション提供のための強力なエコシステムを構築することもできます。

環境への影響
既存のデータセンタより最大50%効率的な、世界で最も効率的なデータセンタ上でお客様の処理を実行します。Google社は外部組織の環境基準を満たした、一番のメジャーインターネット企業です。



Citrix iForum 2012(初日のみ)に行って気づいたことわかったこと



初日(7/17)だけですが、
Citrix iForum 2012へ行ってきました。

セッションやClitrix社の質疑でCloudStackに関する質問を
私の記憶、憶測やメモ書きしてきた内容を書き下してみました。

記述に誤りがある場合は、
すみませんがコメントで訂正していただけると
ありがたいです。



価格情報も載せましたが、
スライド資料を速攻手書きしたものなので
あくまで参考として見て下さい。



Citrix社の野望関連
  • 2日間100セッションと、Citrix社が日本市場にお金をかけている
  • Cloud Stack(Citrix社製品名はCitrix Cloud Platform)のApacheライセンス化でコミュニティ倍増以上、Citrix社としては成功した
  • Citrixの青写真としてはハード+ハイパバイザとクライアントの間に1層Cloud Platformをかませて、ほとんどすべてのクライアントデバイスでCitrix Recieverを動かし、どこでも同じ仕事環境にアクセスさせる環境を売り込む戦術
  • なので、iOS、Android、Windows、ChromeOS(HTML5)すべてをつなげようとしている(このロゴマークを混ぜた写真を見ればよくわかる)
  • ということは、仮想デスクトップとCloud PlatformをつなぐProject Avalon(今秋でるらしい)は重要な要素か
  • 仮想デスクトップ最大の弱点であるストリーミングデータに弱い部分をコーデックであるHDXをチップ化により克服させようとしている

CloudStack関連

  • 現段階(3.0.3)ではCloudStackとCloud Platform(製品版)はロゴくらいでほぼ同じとのこと
  • CloudStack管理下に置くハイパバイザはなにも導入されていない状態でないと構築できない
  • 基本ネットワーク構成も本番に使える
  • 基本ネットワーク構成はAWS風IaaSを提供する場合、拡張ネットワークはより複雑なIaaS向き
  • 基本ネットワークはセキュリティグループ管理(iptables)、拡張にするとiptables管理は使用できない
  • クラスタを構築する場合は、ハイパバイザだけでなくハードレベルでも同一仕様にすること
  • クラスタ条件:同一ハード、同一ハイパバイザ、同一サブネット、同一共有プライマリストレージ使用
  • NetScalerは基本、拡張両方で利用可能だが、拡張のほうがいろいろできる(詳細説明なし)
  • XenServerとvShpereはホスト8台以上クラスタ化しない、KVMは16ホストまで
  • XenServerとvSphereはエージェントを入れない、KVMとOVMはエージェントを入れる
  • 管理サーバも冗長構成可能だが、MySQLが手動TakeOverになる(MySQLに機能がないため)
  • 最小構成はやはり2台、1台にインストールするには、研修環境のようなXenServerの2段重ねなどトリッキーな構成になる
  • vShpereを使用する場合はvCenter必須、管理サーバはvCenterに問い合わせるのでポート443接続を許可すること
  • 管理サーバはNTP管理させ時刻同期推奨
  • 管理トラヒックはVLAN使用できない
  • リソースオーバプロビジョニング:CPU=OK、メモリ=NG(将来対応)、ディスク=OK(NFSのみ)
  • 10G Ether推奨というか必須
  • Cloud Portalは、顧客向けIaaSをする場合の便利な機能を保有(有償のみ、フリー版なし)
  • IDCのIaaSはCloud Portalも使っている
  • OpenStackにはあるがCloudStackにはないS3系ストレージはCloudiant(サードパーティ)+CloudStackで構築できるらしい
  • Cloud Bridge機能だったAWS API→CloudStack APIはCloudStack上に搭載
  • 日本CloudStackユーザ会のWordPressサイトができたらしい→http://cloudstack.jp/

CloudStackライセンス情報
  • ソケット(CPU)単位
  • 永久(通常)/年間の2種類
  • Xen Server Advanced Editionを含む
  • Software Maintenance(24時間保守、バージョンアップ権利)購入必須
  • スライド資料をメモ書きしたのであくまで参考として使用のこと

CloudStackライセンス
名称 価格
通常ライセンス 252,000円
通常ライセンス スタータパック(30ソケット) 675,000円
年間ライセンス 83,700円
年間メンテナンス 45,000円
年間ライセンス スタータパック(30ソケット) 2,250,000円
年間スタータパックメンテナンス(30ソケットメンテナンス) 1,350,000円


Cloud Portalライセンス情報
  • アカウント管理
  • セルフサービスポータル
  • 課金及びメータリング
  • CRMおよびサポートチケットの発行
  • Salesforceなどとの連携機能

Cloud Portalライセンス
名称 価格
年間ライセンス Standard 630,000円
年間ライセンス Advance 22,500,000円
年間メンテナンス Standard 1,155,000円
年間メンテナンス Advance 4,125,000円


以上





2012年7月11日水曜日

ローカル環境でMicro Cloud Foundryを使って開発する環境構築手順



開発者がCloud Foundryを試すために
わざわざオープンソースで環境を構築して..
とやるよりMicro Cloud Foundry(MCF) VMをローカルで動かして
EclipseなりSpringSource Tool Suite(STS)なりから
デプロイさせる手順をまず明確にしておこうと思い、

開発者がMCFを使った開発環境を作るまでの手順

を作ってみた。


前提としてWindows 7 PC上にJavaJDKとVMware Playerが
すでにインストールされている状態から説明する。

あとCloud Foundry設定トークンを入手するために
電子メールアドレスのサイト登録がいるので
必要であればフリーメール等を用意しておく。







Cloud Foundryサイトにてユーザ登録

  • 「http://www.cloudfoundry.com」 をブラウザで開く

  • 「Sign Up for Cloud Foundry」ボタンを押す



  • 利用条件に同意する場合は、電子メール、同意チェック、表示文字列入力して、「Request Invite」ボタンを押す


  • 登録した電子メールアドレスに招待メールが到着するので、本文中のパスワードを確認する



  • ブラウザに戻り、画面上部の「Sign In」リンクを押す



  • 電子メールアドレス、招待メール上のパスワードを入力し、「SIGNIN」ボタンを押す


  • 「GetMicroCloudFoundry」ボタンを押す(同意文書をよみAcceptする)


  • 使用する設定トークン文字列を入力し、「Create」ボタンを押す


トークンは、一意な文字列で無くてはならない。
  • 「Download Cloud Foundry VM」ボタンを押す


  • 「OK」ボタンを押す


  • ダウンロード完了後、エクスプローラでダウンロードしたフォルダを開き、右クリック後「すべて展開」を選択



  • 保存先パスを入力し、「展開」ボタンを押す



Micro Cloud Foundry VMの設定
  • VMware Playerを起動する
  • 「仮想マシンを開く」を押す

  • 先ほど展開したパス上に存在するファイル「micro.vmx」を選択し、「開く」ボタンを押す


  •  「Micro Cloud Foundry v1.2.0」を選択し、「仮想マシンの再生」を押す

「VMware Authorization Serviceが起動していません」というエラーが発生した場合は、該当名サービスが停止している可能性があるため、コントロールパネルからサービスを選択して手動で起動する。

起動後、再度「仮想マシンの再生」を押す。

正常に起動すると、以下の様なコンソール画面となる。


  • 以下の図のように入力する

Micro Cloud Foundry設定トークンは、Cloud Foundryサイトにて作成したトークン文字列を含むドメイン名で入力する(~.cloudfoundry.me)。
電子メールも登録したメールアドレスを使用する。

  • ライセンスや制限に関する文章を読む
エンターキーで次のページへ進む。最後のページヘ進むには「last」と入力する。

  • 合意する場合、最後のページで「y」と入力する
再起動するまで5分以上かかる

  • エンターキーを入力する

  • しばらくすると管理コンソール画面を表示するので、画面上部のIPアドレスを確認する。


ネットワーク設定の変更
  • コントロールパネルから「ネットワークと共有センター」を開く
  • 「VMware Network Adapter VMnet8」を押す


  • 「プロパティ」ボタンを押す

  • 「インターネットプロトコルバージョン4(TCP/IP)」を選択し、「プロパティ」ボタンを押す

  • 「次のDNSサーバのアドレスを使う」欄に管理コンソールに表示されたIPアドレスを入力し、OKボタンを押す

  • Micro Cloud Foundry管理コンソールに戻り、「13」「y」を入力し、再起動する

Micro Cloud Foundry再起動には毎回5分以上かかる。

  • DOSプロンプトを開き、「ping api.~.cloudfoundry.me」を実行する

ping応答があることを確認する。
応答がない場合、IPアドレスに対してpingを実行する(返答がある場合はDNS設定に誤りがあるので確認する)。

SpringSource Tool Suiteのインストール
SpringSource Tool SuiteはSpring Frameworkを使った開発のためのEclipseベースのIDEである。STSの代わりにEclipseへプラグインを追加することでも開発可能であるが、本ドキュメントではSTSを使用する前提で手順を紹介する。
  • ブラウザから「http://www.springsource.org/downloads/sts」を開く
  • 自分の環境にあったバイナリを選択する

  • ダウンロード後、ファイルを実行する
  • 「Next」ボタンを押す

  • ライセンス条件を読み、同意する場合は「I accept~」をチェックし、「Next」ボタンを押す

  • 「Next」ボタンを押す

インストール先パスは変更しても良い。

  • (指定ディレクトリが存在しない場合)「了解」ボタンを押す

  • 「Next」ボタンを押す

  • JDKをインストールしたパス(JAVA_HOME相当)を入力し、「Next」ボタンを押す

  • 「Next」ボタンを押す

  • 「Next」ボタンを押す

  • 「Finish」ボタンを押す

  • Windows7の場合以下の様なダイアログが表示されることがあるので、インストール中エラー表示がなければ「このプログラムは正しくインストールされました」ボタンを押す

  • proxy設定を行なっている場合、コントロールパネルから「インターネットオプション」を開き、「*.cloudfoundry.me」を除外設定に加える

  • SpringSource Tool Suiteを起動する

  • ワークスペースを入力し、「OK」ボタンを押す

  • 「Help」メニューから「Download」を選択する

  • Dashboardビューの「Extensions」タブを選択する

エクステンションリストが表示されるまで待つ。
  • スクロールして「Cloud Foundry Integration for Eclipse」を探す

  • 「Cloud Foundry Integration for Eclipse」をチェックし、「Install」ボタンを押す

  • 「Next」ボタンを押す

  • 「Next」ボタンを押す

  • ライセンス情報を読み、同意する場合は「I accept~」をチェックし、「Finish」ボタンを押す


  • 「Yes」を押す

STSが再起動される
  • 「Servers」ビューを選択し(表示されていない場合は開く)、「new server wizard」を押す

  • 「Cloud Foundry」を選択し、「Next」を押す

  • 電子メール、パスワードを入力し、URL欄から「Microcloud – http://api.{mycloud}.cloudfoundry.me」を選択する

  • Cloud Foundryサイトにて作成した設定トークン文字列を入力し、「OK」ボタンを押す

  • 「Register Account…」ボタンを押す

  • 確認用パスワードを入力し、「Finish」ボタンを押す

正常に登録されると何も表示されず、直前の画面に戻る。

  • 「Validate Account」を押す

正常であることが確認された場合は、「Account information is valid.」と表示される。
  • 「Finish」ボタンを押す

  • Serversビュー上にCloud Foundry ターゲットが追加されていることを確認する













※基本、Eclipseでもプラグイン適用後の設定操作は同様であるが、日本語化プラグインを適用している場合は名称が異なる可能性がある。


以上






STSを使えばSpirng開発などは楽そうなので
Eclipseからつくってもいが
おそらくPaaSの思想的にはSTSを配布したほうが
開発基盤をコントロールするのは楽そうだ。



デプロイの参考になるかもしれないので
一応紹介しときます。



p.s.
Cloud Foundry記事を幾つか書いたけど、
PV数がほとんど伸びない..

みんなIaaSは好きだけど
PaaSは嫌いなのだろうか..

ガートナーとかの資料では
これからはPaaS分野だとか書いてるんだけどなあ..

RedHatだってOpenShifっていうPaaS環境提供してるんだけどなあ..


ひょっとしたら、
基盤屋が開発屋の領分に入ると厄介だから
あえて見て見ぬふりをみんなしてるのかも..

ClaudeをOpenAI O1のように思考させるDifyサンプルを試す

 Difyの「探索」タブにはさまざまなサンプルが載っており、その1つに「Thinking Claude (OpenAI O1 Alternative)」というものがある。   このサンプルがどういうものか、未だに自分でも解けない以下の問題をためしに聞いてみることにした。 『人類の...