ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Javaのジェネリック(<T>ってやつ)について聴いてきた!

2024-11-07 07:05:55 | JavaとWeb
10/27、JJUG CCCに行ってきて聴いてきた話。
最後はジェネリック。
JavaでArrayList<string>なんていうときの< >の部分のお話↓。



おまけ:いままでのJJUG CCCレポート

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Javaのバージョンアップに伴い、変更された箇所を調べるには?

2024-11-05 07:21:51 | JavaとWeb
Javaのバージョンアップに伴い、
どのようなクラス・メソッドが追加されたか、
非推奨、削除になったかは、
リリースノート、以降ガイドなどで分かるけど、
バージョンアップによって変更された内容などは、
載っていなかったりする。


そういう

   Javaのバージョンアップに伴い、変更された箇所を調べるには?

ということを、10/27、JJUG CCCに行ってきて、
 「失敗しないOpenJDKの非互換調査」
で聴いてきたので、シェア



結論から言うと、変更箇所は
CSRドキュメント
を見ると載っている。
CSRドキュメントは、Java Bug System
のSearch欄に"CSR"と入力すると出てくる

では、以下↓、聴いてきた内容です。

新卒2年目だそうだけど、
わかりやすくてためになる発表でした。

おまけ:いままでのJJUG CCCレポート


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JAVAのWebフレームワークの現状とかMicroProfileについて聞いてきた

2024-10-28 07:10:03 | JavaとWeb
10/27、JJUG CCCに行ってきて、いろいろお話を聴いてきたんだけど、
多分、後ろから話したほうがわかりやすいので、まずは、
最後に聴いてきた、きしださんの
「JAVAのWebフレームワークの現状」
についてシェア↓

JavaでWebアプリを作るとすると、
・HTTP処理
・Webアプリケーション処理(共通部分)
・サーバー管理
・開発部分
の共通部分と、アプリケーション固有の部分があるんだけど、
この共通部分を提供してくれるのがフレームワーク。

このフレームワークは、以下のように発展してきた
・サーブレットコンテナ
・埋め込みサーバー
・Docker利用
・サーバーレス
この発展の流れに沿って、話を進めて言っている。
で、次の話
「サーブレットコンテナ」は、TomcatのようなWebサーバーを立ち上げて、そこに複数のWebを用いた業務アプリをサーブレットとして作成していく形。
Strutsなどはこの形。

この形は、サーバーが1つの場合はいいんだけど、マシン処理の限界などから、複数のマシンを束ねてクラウドとして実行する場合、クラウドのメリットを享受できなかった。というか、クライドには向いていない。

そこで、埋め込みサーバー型のフレームワークが出て来た。
これはサーバーも埋め込んでいるので、1つのアプリケーションとして動いて、それをクラウドで動かすという形。
で、話はさらに進む

一方、クラウドの世界では、Dockerが出て来たので、
そのDocker上にフレームワークを載せるという形になってきた。

さらに、クラウドがマイクロサービスを行うようになると、
そのマイクロサービスに対応したMicroProfileが
注目されるようになってきた
その一方で、JavaEEは、クラウドに対応し遅れたため凋落。
また、Oracleのバージョンアップも遅かったので、
それに反発した人たちがEclipseファンデーションベースに
JavaEEに相当するものを作った
(が、名前はJavaとは商標上つけられないので)
それがJakartaEE

今ではマイクロサービスがさらに進み
サーバーレスとなっている
ここに及んでJakartaEE10では、サーブレット非依存となった。

っていうお話。
コンパクトにまとめられていて、いままでのJavaをめぐるフレームワークとかの話が分かる、いい講演でした。

ってことで、MicroProfileの話。
きしださんの前は、そのMicroProfileの最新状況(7.0)を聴いてきました!

7.0の変更はそんなになかったみたい。
この前は、ちょっとおひるお休みして、
午前中に聴いたセッションになるんだけど、
話が全然違うので、またいつか、それについては書きます。

今日はここまで



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SpringBootとMicroProfileどっちがいいか、聴いてきた。

2024-06-20 07:08:42 | JavaとWeb
JJUG CCCで
講師の結論は「どっちもどっち」っていうことだったんだけど、
普通に聴くとSpringBootの
話の内容は↓

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

今、一番使われているJavaのLTSは

2024-06-19 07:12:52 | JavaとWeb
Java17
とかいう、今Java関連で流行っているものについて
JJUG CCCで話してたのでメモメモ
講師はNew Relic株式会社の人なんだけど、
サイト↓に、このお話の内容があるみたい!

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「Java First Java always」を聴いてきた

2024-06-18 18:30:33 | JavaとWeb
6月16日のJJUG CCCで、基調講演
「Java First Java always」を聴いてきた
英語なので、一部そのまま英語で書いてたり、
間違えていたらゴメン

主な話は、

前半はJavaのリリーススタイルの変化について
・安定したものが欲しいという要望と
・早く新しい機能を入れてほしい
という要望を満たすため
・半年ごとのリリース
・LTS
というリリースになったということ

後半はJavaとAIについてなど


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「Spring for GraphQLの実践」を聴いてきた!

2024-06-17 07:09:55 | JavaとWeb
6月16日(日)、JJUG CCC に行ってきて、
「Spring for GraphQLの実践」
を聴いてきたので、メモを貼っておきます
GraphQL知らないので、基本的なこと聴けるかなと思っていったのですが
甘かったでした。バリバリ実践話。自分はわかってないので、
適当に脳内補完しながら書いているので、
間違ってたらゴメン。

話しとしては、
  リゾルバとして、どんなMappingが必要か
    @QueryMapping
    @MutationMapping 変更(更新)するとき
    @SchemaMapping
    @BatchMapping
    @EntityMappingの利用
  ソースを自動生成・バリデーションしているところとそのツール
    DGS Codegen
    Apollo Codegen
    graphQL-java-extended-validation
  認可処理
  テストについて
    HttpGraphQlTester
    WebSocketGraphQlTester
    ExecutionGraphQlTester
  認可のテスト 
なんていうところのように聞こえました。
勘違いしてたらゴメン

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MMD(初音ミク)がサポートされたオープンソースのJavaScriptライブラリBabylon.jsのありか

2024-04-10 08:58:12 | JavaとWeb
↓の記事
にある、MMDを動かしたり、その他いろいろできるオープンソースのJavascriptライブラリBabylon.jsのありかは、↓


MMD用チュートリアルは↓

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HTMLの各要素に、どのCSSがかかっているのかがわかる、ChromeのF12キー

2024-02-21 12:49:35 | JavaとWeb
■ChromeのF12キーって、便利ですよね!

たとえば、↓の画面で
文字が赤くなっているけど、

「いや、CSSでは、青って書いたんだけどなあ~」
っていうとき、
ブラウザがChromeで開いているのなら、



■F12キーを押してもらうと、

 ↓のようにソースコードが右側に(場合によっては別ウィンドウ)ででてくる。出てこなかったら出て来た右上のウィンドウのタブをElements(赤枠)にすると見えるはず。



 ここで、…と3点リーダーになっているところ(青枠)があるから、そこをクリックしていくと、中のソースが見えてくる(ソースコードの中にまた…が見えたら、そこをクリックしていく)。

 見たい対象のソースコード(今、テキストボックス内の赤字になっているところが見たいので、そのテキストボックス)のところまで開いて、ソースコードが出てきたら、

そのソースコードの行(テキストボックスの行)をクリック
↓の図のようにその行が反転し、いろいろ表示される



■F12キーを押すと見えるもの



表示している画面(左側)のところ(赤枠のところ)に、
今、ソースコードの対象行にあたる要素が
   どういうタグのどんなIDで、どんなクラスか
   その大きさがどのくらいか(ピクセルで)
が出てくる(textarea#A1.aと書いてある赤枠のところ。textareaがタグ、A1がID、aがクラス)

 また、右下に、そのHTMLにかかっているCSSが表示されている(青枠のところ)。上から、かかっているCSS順に表示されている。

 各CSSの右側にそのソースのCSSファイル名(.css)が表示されている(黄色枠)

 一番下のCSSのところはuser agent stylesheetってあるけど、それがデフォルトでブラウザが設定するもの(=CSSの設定がなければそれが出るはず)

 取り消し線が引かれているのは、適用されていないのを示す。
 この例だと、a.css(黄色の枠の下の方)のcolorに線が引かれている。
 この場合は、そのCSSは無効になっている。
 そして、それより上のCSSで有効になっているものがあることを示している。



■上の例だと、

 b.cssのcolorが線が引かれていない。なので、これが生きていることになる。
 実際、左の画面では、colorが赤=文字が赤になっているし、
 b.cssのソースをみると

color:redになっていて、index.htmを確認すると
b.cssがa.cssより下に来ているので、これがきいていることがわかる



■かかっているCSSをきかせないとどうなるかも調べられる

このように、Chromeで表示した後、F12キーを押せば、
HTMLの各要素に、どのCSSがかかっているのかがわかるけど、
それだけじゃなくって、値を修正したら、どうなるかがわかる。
有効なCSSに対して、左側にマウスポインタを置くと

チェックボックスが出てくる(redのところ)
このチェックボックスのレを外すと(クリックすると)、こいつを執行しない場合、何が有効になるかがわかる

color:redに取り消し線が引かれ、color:blueが有効になり、
左側のテキストボックスの文字が青くなった。

※ちなみに、無効になっているところもチェックボックスがあって、
このチェックも外せるけど、外しても(もともと無効だから)何も起こらない。無効なCSSを、実際に有効にするには、CSSの順番を変えるか、!importantをつけることだけど、それにはソース修正が必要なので・・・下を見てくれ)



■ここから、CSSの値を変えることもできる。

!importantとかもつけられる。
 値のところをクリックすると、入力できるようになる
↑の例では、color:blueのblueをクリックしている
(表示はredが生きるように元に戻した)

ここに「green !important」と入力すると、
緑色にテキストボックスの文字が変わっている。

ということは、(上位にあるはずのredがきいていないので)importantも有効になっている(色だけ変えることももちろんできる。ただここでgreenと変えても、取り消し線が引かれるだけ。緑色に変えたい場合は、普通はredのところを直すべき。ここではimportantがきくよ!ということを示したかったので、blueを直した)



■修正は、これだけにとどまらない。CSSの行を追加することもできる。

各CSSの一番最後の行の下のほうをクリックすると、新しい行が追加される
↓の図は、color:redの下(赤枠)をクリックしたところ。クリックすると:が出て(:が出て来たところを撮っている)、1行入力できるようになる。
backgroundを設定してみた↓




■CSSを追加できることもできる
セレクタを変えて、CSSを追加したい場合は、
各CSSの枠の右下の端のところにマウスポインタを置く。すると
↓の図のように十字(+)が出てくる

ここをクリックすると、CSSを書くことができる。
全体(html)の文字色を変えてみました(赤枠)



■カスタムプロパティでもっとすごいんだけど・・・

さらにレスポンシブWebデザインなんかするときに、カスタムプロパティを使った場合、このF12キーを使うと便利便利!なんだけど・・・

 そもそも、「カスタムプロパティって何!」から説明しないといけないですよね・・でも、そこから書いていくには、もうこの記事長くなりすぎているので、それは別の記事に書くこととし、この記事は、この辺で終わりにします。

※今回はChromeで書いたけど、Microsoftのedgeでも、f12キーを押すと似たようなことができるみたいです(Edgeのほうは、ほとんど知らない。開発ではChromeを使うので)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

input searchで入力すると出てくるXの色を変えるには?

2024-02-11 09:10:21 | JavaとWeb
htmlのタグinputには、type ="search"というのがある↓。

このタグを使うと、入力するとき、Xが出てきて、

このXをクリックすると、入力内容がすべて消える

ここで、入力領域を、↓のCSSのようにすると

.answer {
color:white;
background:black;
}

(つまり、入力領域の文字を白、背景を黒にすると)

Xだけ、白くならない。このXの色を白くするには?というのがお題。



■失敗:-webkit-search-cancel-buttonでは、色は変わらない
このXは、-webkit-search-cancel-buttonで、表示したり、削除したりできる。
例えば、表示を消すには、

input[type="search"]::-webkit-search-cancel-button {
   -webkit-appearance: none;
}

で消える。じゃあというので、同じ理屈で、
input[type="search"]::-webkit-search-cancel-button {
   color:white;
}

とやっても、Xボタンは白くならない。



■白く変えればいい場合

で、色を変えるとき、白く変えればいいだけであれば、
「color-scheme」
を使えばできる。color-schemeを

:root {
color-scheme:dark;
}

と記述すると、↓のように、周りが黒くなって、Xが白くなる。
また、フォーカスが当たった時、白くなる

周りも黒くなってしまうのは、困る。
そこで、color-schemeをroot(つまりhtml全体)にではなく、input[type="search"]に適用し、
さらに、フォーカスが当たった時、白くするのをやめさせる(outline:0)
と、思ったような感じになる。

まとめると、CSSは、こんな感じ

.answer {
color:white;
background:black;
}


input[type="search"] {
outline:0;
color-scheme:dark;
}


そうすると、こんなかんじ


■白以外の場合

自分の場合はこれで済んだんだけど、白以外のXにしたい場合は…
Xのアイコン画像を変えるとできるのかなあ~(やってないです)
詳しくは、↓のサイトにあるみたい


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

VMWereって、買収されてたの知ってた?で、Springは今、ブロードコムが扱ってるらしい

2024-02-06 07:18:24 | JavaとWeb
2月2日にあった、JSUG勉強会2024その1 
Spring for GraphQL入門、そしてSpring Boot 3へのマイグレーション
の話をYouTubeLiveで聴いたんだけど
その話を報告していないので、メモ



Spring for GraphQLは、
JavaのフレームワークSpringで、
(DBに依存しないで)データ検索・更新を行うための言語GraphQL
を使うライブラリ。

今回の勉強会では、その概要と書き方(デモ)をやっていたんだけど、
デモ・書き方部分は、メモってない

それと、SpringBootの2系のサポートが終わり、3系になっているので
そのマイグレーションについて。

終わりの方の10分間で、
以前、Springを扱っていたVM Wareをブロードコムが買収し、
その結果、今ブロードコムがSpringの有償サポートをしていて、
NECと協業していることを説明してた



以下、その時のメモ



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JavaのSpringフレームワークのアプリを生成AIで作成する話とかをちょこっと聞いた!

2023-12-14 08:10:13 | JavaとWeb
12月11日、JSUG勉強会の「Spring One報告会」を
YouTubeライブで見たので、そのまとめをシェア

Spring Oneは、JavaのフレームワークSpring
(NTT Dataの開発フレームワークTERASOLUNA(テラソルナ) 
 なんかでも採用されている)
のカンファレンス。

ことしは、JDK21対応として、バーチャルスレッドやCRaCのほかに、

Springから生成AIを呼び出すフレームワーク
Intelligent Beans with Spring AI

や、

Springアプリを生成AIで作成する(Spring CLIの1機能である)
Spring AI Add

なんかのお話もあったみたい。

では、以下シェア

Spring AI Addって、これかなあ?

Intelligent Beans with Spring AIのSpring Oneでのお話は
↓みたい




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JJUG CCCで、Jakarta EEをキャッチアップしてきた!

2023-11-14 07:19:24 | JavaとWeb
11月11日の、JJUG CCCの話つづき。
Java21のあとは、
Jakarta EE 11 キャッチアップ
を聞いてきました。



 Jakarta EE とは、Javaでサーバーサイドのアプリケーションプログラムを作成する際のプラットフォーム標準を決めたもので、この実装としてGlassFishやPayaraがある。
 ちなみに、Jakarta EEのほかに、Javaのサーバーサイドのアプリケーションプラットフォームとしては、Springがある(って、今回の講師の人は説明してました。少なくとも私はそう理解した)。

 日本の開発においては、サーバーサイドのプログラム・運用だけでなく、それらを含めて開発全体を統合環境としてSIerごとに提供している。

 たとえば、NTTDataさんの場合は、TERASOLUNA(てらそるな)という統合開発環境があって、この中では、Springフレームワークを採用している

 一方、富士通は、Interstage(いんたーすてーじ)という統合開発環境があって、この中では、GlassFishを基にしたサーバーが提供されている(自分の記憶が正しければ、たしかGlassFishそのものではない)。
 その実装されているJakartaEEのバージョンは、11ではなく、ネットで見つかったのだと8が最新なのかな・・・そうなのかな?
 あれ、↑の説明だと、JakartaEE8もサポートしているけど、Springもサポートしているとか。最近、データさんの仕事ばかりで、富士通さんの仕事はしていないので、よくわかりません・・・



世間話長くなりすぎました。聞いてきた内容は↓のとおり



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Java8からJava21への移行話をJJUG CCCで聞いてきた!

2023-11-13 07:28:13 | JavaとWeb
11月11日は、JJUG CCC Fallを聞きに、
新宿野村ビルに行ってきた!
いままでと会場が変わり、カンファレンスルームA1で聞いてきたんだけど、
ちょっと狭い部屋。始まりだしたところで満席になり、最終的には立ち見
ちらほらでした。

で、まず1つめ。
Java8から21に移行したときのお話。
時間が短かったので、ポイントを、
・Optional
・Switch式(値を返せるようになった)
・Records
に絞って話してました。
内容は↓の感じ




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

window.openerでwindowオブジェクトが取れないときの対処法

2023-10-27 07:17:23 | JavaとWeb
Javascriptの話。javascriotで、ウィンドウを開いたとき、
開いた元の画面の情報を取りたいときなどに

var w = window.opener;

とか,いう感じでopenerっていうのを使うけど、
(このほかwindow.opener.open()っていうのでも使う)
このopener、ときどき値が入ってこない(nullになってる)
ことがある。

同一ドメイン上にある場合は取得でき、そうでないとブラウザが判断した場合
(実際どうかではなく)、openerはNULLになるみたいで、
セキュリティ上の仕様らしい



・・・といわれてもこまるんですよ!
昔のプログラムでは

 window.opener.open(なんとかかんとか・・・

とか、opener散々使ってて、それをいまさら、使えないとは・・・

・・・といって、途方に暮れていている、あなたに贈る対処法



【対処法1】window.open('',画面名)でwindowオブジェクトを取得する

window.openして、画面を生成するとき、window.openの第二引数に、
(_blankなんかを指定しているかもしれないけど、ここに)
画面名(任意。なんでもいい)を振っておくと、

w = window.open('',画面名)

で,wにその画面名のwindowオブジェクトがはいってくる


つまり、window.openは、
 第一引数にURLが指定されている場合は、そのURLの内容で画面をひらき、
  その画面のwindowオブジェクトを返す
  また、第二引数が_で始まるような一般的なものでない場合、
    画面名として、wiodon.nameに設定される

 第一引数が''(空文字)だったら、
    第二引数を画面名として、既存のwindowオブジェクトを参照して、
    第二引数を画面名と既存のwindowオブジェクトのwindow.nameが
     一致したら、そのwindowオブジェクトを返す
   →結果として、画面名でwindowオブジェクトを検索できる

よって、openerに指定する画面名がわかれば、
window.open('',openerの画面名)で
windowオブジェクトが取得できる

・・・という仕様があったが、使えない場合もある(使える場合もある)



【対処法2】lacalStorageにwindowオブジェクトを保存する

 window.openerに該当するwindowオブジェクトを
  どこかで、localStorage.setItem()で保存しておいて、

 window.openerしたいときに、localStorege.getItem()で
  取得する

という方法。localStorageは普通使えるから、こっちのほうがいいのかもしれない



【使い分け】
・ブラウザのバージョン変更がありそうなときは、localStorageのほうが
 無難だけど、
・localstorageのほうは、開く元画面(親ウィンドウ)側で、
 localStorageに格納するコードを書かないといけない。
 ソース修正の権限で、親ウィンドウ側のソースコードは参照できても
 自分が修正できる立場にないときは、対処法1しかできない


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする