20220111のJavaに関する記事は4件です。

Spring BindingResultインスタンス作成方法

いきなり本題 いっつも、忘れたころに、BindingResultを手動で作りたくなる。 Form form = new form(); BindingResult result = new DataBinder(form).getBindingResult(); References https://arkgame.com/2020/01/18/post-43133/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

WSL2でファイルシステムのアクセス速度がどの程度変わったか

なんか速度比べばかりしているような気がしますが・・・ 今回はWSL2のファイルアクセス速度についてです。 WSL1から比べるとWSL2ではLinuxファイルシステムのアクセスは高速になったが、Windowsファイルシステム(/mnt/ドライブ名)のアクセスは遅くなったと言われます。 実際例えばJavaのソースリポジトリを /mnt/c/ 以下のディレクトリにcloneしてきてビルドしたりすると極端に遅いので体感的にもわかります。 それでも意外とWSL2のほうが最新だしWSL2使おうというような感じで使われてて、かつ /mnt/ドライブ名 以下にワークディレクトリがあってビルドが遅くても比較対象がないので気にしていないなんてことが散見されるので、今更ながら記事にしてみました。 検証環境 OS Windows 10 Pro バージョン 21H1 CPU Core i7-10700 ディスク Crucial P2 SSD 1TB 速度計測方法 WSL1,WSL2でそれぞれ以下のように計測しました。 Ubuntu20.04の環境を作成。 /dev/urandomを使い1kBの中身がランダムなファイルを10000個、Linux,Windows両ファイルシステムに作成。 上記10000個のファイルをcpコマンドでそれぞれ同一ファイルシステムにコピーする時間をtimeコマンドで計測。 コピー元のディスクキャッシュの影響があるため何度か計測して安定してきた値を計測値とする。 ディスクキャッシュの関係から読込側というよりは書き込み側の速度テストになっています。 また、本来のディスクベンチマークであれば大きいサイズのファイルコピーなども行うのでしょうが、簡易計測ということで割愛しています。 計測結果 以下にファイルコピーの時間をそれぞれ記載しますが、時間の絶対値は環境によって変わるので、あくまで相対的に見るようにしてください。 WSL1 Linuxファイルシステム real 0m4.789s user 0m0.094s sys 0m4.625s Windowsファイルシステム real 0m6.413s user 0m0.109s sys 0m6.297s WSL2 Linuxファイルシステム real 0m0.197s user 0m0.044s sys 0m0.154s Windowsファイルシステム real 0m56.177s user 0m0.625s sys 0m8.962s 結論 WSL1の場合はWindowsファイルシステムのほうが多少遅いものの、大差ない。(どちらもそこそこ遅い?) WSL2は言われている通りLinuxファイルシステムは高速。だが、Windowsファイルシステムは致命的に遅い。 例えばWSL2でJavaサーバーの開発をする場合を想定すると、ワークディレクトリをWindowsファイルシステム側に置くのは非常に効率が悪いので避けるべきでしょう。逆にLinuxファイルシステム側に置くことでビルド等は速くなりそうです。(ビルドはファイルの読み書きが大量に発生するため) IntelliJもWSLに対応して、WSL側でプロジェクトを開けるようになりましたし(かつJDKもWSL側のを使える)、VSCodeもWSL側から開けるので今後はそういったツールを活用していくのがよさそうです。 どうしても利用ツールの問題でWindowsファイルシステム側にワークディレクトリを置く必要がある場合はWSL1を利用しましょう。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Eclipseでプロジェクトの外部の依存ライブラリのjarを抽出する

gradleでパッケージ依存関係を管理しているのですが、すべてのjarをクラスパスに読み込ませる昔ながらのバッチのためにそれらのjarを取得したいのです。 F/Wのバージョンアップに伴い、一新したい。 実行可能jar使えとかSpring使っているならBootにすればいいのにとかあーあー聞こえない。 雑な手順 Eclipseのプロジェクトエクスプローラー(いっぱいプロジェクト並んでいるやつ)から対象のプロジェクトを右クリックする。 出てきたコンテキストメニューからエクスポートを選択する。 エクスポート対象として実行可能JARを選ぶ。 ダイアログが出てくるので適当にぽちぽちする。 依存JARをサブフォルダーに出力、みたいなラジオボタンがあるので設定して完了する。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

JavaでPowerPointにアニメーション効果を追加する方法(プリセットアニメーション/カスタムアニメーション)

背景 PowerPointスライドは形状にアニメーション効果を設定することができます。よく見られるアニメーション効果は組み込まれた固定タイプで、つまり、アニメーション効果とパスは事前設定された固定テンプレートですが、アニメーション効果を設計する場合、ユーザーは自分の好みに応じてアニメーションモーションパスを定義してアニメーション効果をカスタマイズすることもできます。以下では、Javaバックエンドプログラムコードを使用して、PowerPointにアニメーション効果を追加する方法を示します。もちろんプリセットアニメーションとアニメーション効果をカスタマイズする方法が含まれています。 テスト環境には次のものが含まれます。 ターゲットテストドキュメント:Power Point 2013 コンパイル環境:IntelliJ IDEA 2018 JDKバージョン:1.8.0 PowerPointライブラリのバージョン:Spire.Presentation.jar 5.1.0 注:このPowerPointライブラリを介してアニメーションタイプ(AnimationEffectType)を追加する場合、約150の異なるタイプを追加できます。 Javaコード一覧 1. プリセットアニメーション効果を追加する a. 新しいPowerPointドキュメントを作成し、図形を追加し、アニメーション効果を設定する import com.spire.presentation.*; import com.spire.presentation.drawing.FillFormatType; import com.spire.presentation.drawing.animation.AnimationEffectType; import java.awt.*; import java.awt.geom.Rectangle2D; public class AddAnimationToShape { public static void main(String[]args) throws Exception{ //PowerPointドキュメントを作成する Presentation ppt = new Presentation(); //スライドを取得する ISlide slide = ppt.getSlides().get(0); //スライドに図形を追加する IAutoShape shape = slide.getShapes().appendShape(ShapeType.CUBE, new Rectangle2D.Double(50, 150, 150, 150)); shape.getFill().setFillType(FillFormatType.SOLID); shape.getFill().getSolidColor().setColor(Color.orange); shape.getShapeStyle().getLineColor().setColor(Color.white); //形状をアニメーション化する slide.getTimeline().getMainSequence().addEffect(shape, AnimationEffectType.CHANGE_LINE_COLOR); //ドキュメントを保存する ppt.saveToFile("AddAnimationToShape.pptx", FileFormat.PPTX_2013); } } b. 既存のPowerPointドキュメントをロードし、形状アニメーション効果を取得し、アニメーション効果を設定します。ここでは、アニメーションの繰り返しの種類、回数、継続時間、遅延時間など、より詳細なアニメーション設定を行うことができます。 import com.spire.presentation.*; import com.spire.presentation.drawing.animation.AnimationEffect; public class RepeatAnimation { public static void main(String[] args) throws Exception{ //テストドキュメントをロードする Presentation ppt = new Presentation(); ppt.loadFromFile("C:\\Users\\Administrator\\Desktop\\test.pptx"); //一番目のスライドを取得する ISlide slide = ppt.getSlides().get(0); //スライドの一番目のアニメーション効果を取得する AnimationEffect animation = slide.getTimeline().getMainSequence().get(0); //アニメーション効果ループの再生タイプ、時間、継続時間、遅延時間を設定する animation.getTiming().setAnimationRepeatType(AnimationRepeatType.Number); animation.getTiming().setRepeatCount(2);//繰り返し回数を設定する animation.getTiming().setDuration(2);//継続時間を設定する animation.getTiming().setTriggerDelayTime(2);//遅延時間を設定する //animation.getTiming().setAnimationRepeatType(AnimationRepeatType.UtilEndOfSlide);//スライドショーの最後までループするようにアニメーションを設定する //animation.getTiming().setAnimationRepeatType(AnimationRepeatType.UtilNextClick);//次のクリックまでループするようにアニメーションを設定する //結果ドキュメントを保存する ppt.saveToFile("RepeatAnimation.pptx", FileFormat.PPTX_2013); ppt.dispose(); } } 2. カスタムアニメーション効果を追加する import com.spire.presentation.*; import com.spire.presentation.collections.CommonBehaviorCollection; import com.spire.presentation.drawing.FillFormatType; import com.spire.presentation.drawing.animation.*; import java.awt.*; import java.awt.geom.Point2D; public class CustomAnimationPath { public static void main(String[] args) throws Exception { //空白のPowerPointドキュメントを作成する Presentation ppt = new Presentation(); //最初のスライドを取得する(新しいスライドドキュメントには、デフォルトですでに1つのスライドが含まれている) ISlide slide = ppt.getSlides().get(0); //スライドに図形を追加する IAutoShape shape = slide.getShapes().appendShape(ShapeType.FIVE_POINTED_STAR,new Rectangle(180, 100, 170, 170)); shape.getFill().setFillType(FillFormatType.GRADIENT); shape.getFill().getGradient().getGradientStops().append(0, KnownColors.LIGHT_PINK); shape.getFill().getGradient().getGradientStops().append(1, KnownColors.PURPLE); shape.getShapeStyle().getLineColor().setColor(Color.white); //アニメーション効果を追加し、アニメーション効果の種類をPATH_USER(カスタムタイプ)に設定する AnimationEffect effect = slide.getTimeline().getMainSequence().addEffect(shape, AnimationEffectType.PATH_USER); //カスタムアニメーションのCommonBehaviorコレクションを入手する CommonBehaviorCollection commonBehaviorCollection = effect.getCommonBehaviorCollection(); //アニメーションアクションのモーション開始点とパスモードを設定する AnimationMotion motion = (AnimationMotion)commonBehaviorCollection.get(0); motion.setOrigin(AnimationMotionOrigin.LAYOUT); motion.setPathEditMode(AnimationMotionPathEditMode.RELATIVE); //モーションパスを設定する MotionPath motionPath = new MotionPath(); motionPath.addPathPoints(MotionCommandPathType.MOVE_TO,new Point2D.Float[]{new Point2D.Float(0,0)},MotionPathPointsType.CURVE_AUTO,true); motionPath.addPathPoints(MotionCommandPathType.LINE_TO,new Point2D.Float[]{new Point2D.Float(0.1f,0.1f)},MotionPathPointsType.CURVE_AUTO,true); motionPath.addPathPoints(MotionCommandPathType.LINE_TO,new Point2D.Float[]{new Point2D.Float(-0.1f,0.2f)},MotionPathPointsType.CURVE_AUTO,true); motionPath.addPathPoints(MotionCommandPathType.END,new Point2D.Float[]{},MotionPathPointsType.CURVE_AUTO,true); //モーションパスをアニメーションに設定する motion.setPath(motionPath); //ドキュメントを保存する ppt.saveToFile("result.pptx", FileFormat.PPTX_2013); ppt.dispose(); } } 以上は今回のPowerPointにアニメーション効果を追加する方法でした、最後まで読んでいただきありがとうございます、ではまた!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む