タグ

ブックマーク / nowokay.hatenablog.com (274)

  • データ構造の処理のパターンとStream - きしだのHatena

    データ構造の処理のパターンとして「プロになるJava」の「10章データ構造の処理」「値の集合の処理のパターン」では新しいListを作るものと個数を数えるもののふたつを紹介していますが、追加でもうふたつ。 データ構造の処理の例 条件に合う要素全てが別の条件にあうか判定 5文字以上の文字列がすべてyを含むか判定するコードは次のようになります。 package projava; import java.util.List; public class StreamSample3 { public static void main(String[] args) { var data = List.of("yamamoto", "kis", "sugiyama"); var result = true; for (var s : data) { if (s.length() >= 5) { resul

    データ構造の処理のパターンとStream - きしだのHatena
  • ブラウザがあれば使える開発環境GitHub CodespacesでJava、Spring Boot、データベースを試す三部作 - きしだのHatena

    ブラウザが動けば貧弱なパソコンやタブレットでも開発ができるGitHub Codespacesで、Javaを試してSpring Bootを試してデータベースを試すという三部作、まとめておきます。 「プロになるJava」の補足という感じで書いてますが、GitHub Codespacesがどんな感じか試すのにもいいのではないかと。 GitHub CodespacesでJava開発を始める - きしだのHatena GitHub CodespacesでSpring Bootの開発を始める - きしだのHatena SQLJOINとGROUP BYを試す - きしだのHatena プロになるJava仕事で必要なプログラミングの知識がゼロから身につく最高の指南書 作者:きしだ なおき,山 裕介,杉山 貴章技術評論社Amazon

    ブラウザがあれば使える開発環境GitHub CodespacesでJava、Spring Boot、データベースを試す三部作 - きしだのHatena
  • SQLのJOINとGROUP BYを試す - きしだのHatena

    リレーショナルデータベースではテーブルを結び付けるJOINが大事なのですが、「プロになるJava」ではページの都合で取り上げていなかったので補足。 追記 2023/8/11: H2コンソールでは自動でデータベースは作成されないので、とりあえずコードを追加しています。 データベースの準備 ここではSpring BootにH2データベースを導入してH2コンソールのWebインタフェースを使って進めていきます。 「プロになるJava」に従ってすでにH2コンソールでSQLを試している場合は、テーブルの作成から進めてください。 CodespacesやVS Codeである必要はないですが、Spring Bootの環境はこちらを参照。 GitHub CodespacesでSpring Bootの開発を始める - きしだのHatena H2を導入 まずH2データベースを使える状態にします。 pom.xmlの

    SQLのJOINとGROUP BYを試す - きしだのHatena
  • GitHub CodespacesでSpring Bootの開発を始める - きしだのHatena

    手元に弱々なPCしかなくてもブラウザ上でいい感じに開発できるGitHub CodespacesでSpring Bootの開発を行う手順。 「プロになるJava」をCodespecesでやるなら、という想定で書いてます。 ここからの続き GitHub CodespacesでJava開発を始める - きしだのHatena Spring Bootの準備 Spring Bootのプロジェクトを作りましょう。 拡張機能から、springで検索して「Spring Boot Extension Pack」をインストールします。 インストールが始まります。 Spring Bootプロジェクトの作成 左下の歯車をクリックして「コマンドパレット」をクリックします。 コマンドパレットが開きます。 「spring i」まで入力するとSpring Initializrのメニューが出るので「Create a Mave

    GitHub CodespacesでSpring Bootの開発を始める - きしだのHatena
  • GitHub CodespacesでJava開発を始める - きしだのHatena

    手元に弱々なPCしかなくてもブラウザ上でいい感じに開発できるGitHub CodespacesでJavaを使いたい場合の手順。 「プロになるJava」をCodespecesでやるなら、という想定で書いてます。 Cpdespaceの用意 https://github.com/codespaces にアクセスして「Blank」で「Use this tempalte」を選びます。 そうすると、 Codespacesのページには、作られた環境が表示されています。適当な名前が自動で付けられますが、「bug-free capybara」になっています。バグのないカピバラ、いい名前。 Java環境の導入 左の「拡張機能」をクリックします。 検索に「java」と入力すると「Extension Pack for Java」が現れるので、これをインストールします。 インストールが始まります。 「ようこそ」のタ

    GitHub CodespacesでJava開発を始める - きしだのHatena
  • JacksonとRetrofitで郵便番号APIを呼び出す - きしだのHatena

    「プロになるJava」の補足的記事。 JSONはデータ交換で広く使われる形式で、機械にも人間にも読み書きしやすいということでよく使われています。 ということでJSONを扱うライブラリを使ってみましょう。 jp-postal-code-api 今回、扱うJSONとしては郵便番号から住所を得るWeb APIであるjp-postal-code-apiのデータを使います。 https://github.com/ttskch/jp-postal-code-api Web APIはHTTPを介して呼び出すAPIで、JSONでやりとりすることが多いです。 ここでの住所データの形式はこのようになっています。 { "postalCode": "1000014", "addresses": [ { "prefectureCode": "13", "ja": { "prefecture": "東京都", "ad

    JacksonとRetrofitで郵便番号APIを呼び出す - きしだのHatena
  • Javaオブジェクトを永続化させるEclipse Storeがよさそう - きしだのHatena

    Eclipse Storeというのをみつけて、これはJavaオブジェクトを永続化するものなのだけど、トランザクションもあったりPostgreSQLなどのDBをバックエンドにできたり結構よさそう。 https://eclipsestore.io/ MicroStreamがEclipseに寄贈されてオープンソース化したものみたいですね。Eclipse Selializerとセットです。 https://github.com/microstream-one ということでGetting Startedをみてみます。 https://docs.eclipsestore.io/manual/storage/getting-started.html 組み込み版を使うのでこんな感じのdependencyを追加 <dependencies> <dependency> <groupId>org.eclipse

    Javaオブジェクトを永続化させるEclipse Storeがよさそう - きしだのHatena
  • 有名人の訃報が続くのは、いまの85歳世代からテレビの時代がはじまったからでは - きしだのHatena

    「のび太」の声優を長くつとめた小原乃梨子さんが7/12に亡くなったことが23日に発表され、今日29日には「花沢さん」や ちびまる子「山田くん」の山圭子さんが4/18に死去してたことが発表された。 毎日のように有名人の訃報が続くので、これは何かあるのではないかと陰謀めいたことを考えたくなりますが、85歳世代くらいから有名人が増えたからではないかと思います。 特に今年は、「峰不二子」の増山江威子さん、「パーマン」「あさりちゃん」の三輪勝恵さんなど、定番アニメのキャラクタをつくってきた声優の訃報が目立ちます。 これは、格的なテレビアニメ「鉄腕アトム」が1963年で、1965年に「鉄人28号」や「オバケのQ太郎」といったカラーアニメが始まり、こういったテレビアニメの時代が始まった時期に、例えば1965年であれば小原さんが30歳、山さんが25歳で、ラジオドラマや海外ドラマの吹き替えをやっていた

    有名人の訃報が続くのは、いまの85歳世代からテレビの時代がはじまったからでは - きしだのHatena
  • 2024年上半期気に入ったマンガまとめ -島耕作とか- - きしだのHatena

    雑誌やらで読んでるマンガは気に入ってても忘れてしまいがちなのでメモ 島耕作 これは現代産業史という感じでいいですね。 あと、取締役とか何してるんだろーというのがわかっていい。 ただ、会長になると業でのドラマがなくなって、取材した話のまとめのようになっててちょっと勢いが落ちたりしますね。 責任ふえてできることが大きくなって仕事をすすめてる部長時代が一番おもしろいと思います。会長島耕作をみたあと部長をみると若いし、この時期が一番かっこいい気もする。 あと、なんだかんだ大町さんと仲良くやってるのいいですね。 部長 島耕作(1) (モーニングコミックス) 作者:弘兼憲史講談社Amazon 平和の国の島崎へ テロ組織に育てられて脱走して帰国して平和に生きるなか、所属してたテロ組織から狙われてしまうという、日常の中の戦闘という話。 と書くとファブルに近いかもしれないけど、ファブルは戦闘にあいまに日常

    2024年上半期気に入ったマンガまとめ -島耕作とか- - きしだのHatena
  • プログラマ業界の二分化 - きしだのHatena

    プログラマの業界は、同じソフトウェアを作るという作業でありながら、大きく2つの形態にわかれています。 小売業界が、コンビニやデパートなど、同じモノを売るという作業でありながら全く違う形態があるのに近いです。 この分化は、2010年ごろのGREE/DeNAの人材獲得合戦で明確に形ができたように思います。 なので、もう5年たって、定着しつつある感じでしょうか。 その2つの形態というのは、労働集約型の業界と、知識集約型の業界です。 労働集約型はSIで多い多人数開発の業界で、知識集約型がサービスで多い少数精鋭型の開発です。 知識集約型の業界は、最初こそちょっとお花畑すぎる感じもありましたが、最近は落ち着いてきており、徐々に経済的に均衡するところに収束していくと思います。それでも比較的めぐまれた労働環境ではあり続けると思います。ただし、常に勉強が求められる業界ではあります。 問題は労働集約型の業界で

    プログラマ業界の二分化 - きしだのHatena
  • 建築では多重下請けでやれてるのに業務システムでだめなのはなぜ? - きしだのHatena

    建築では多重下請けでやれてるのに業務システムでだめなのはなぜ?という質問がブコメであって、似たような話もいくつか見かけたのですが、建築などの施工図面に相当するのはソースコードで、建築現場で多重下請けでやってる作業は、ソフトウェアだと(でも?)ビルドです。なのでソフトウェアでは自動化されています。 もしも業務システムの納品物が、バベッジの階差機関のような歯車を組み合わせた機械式の計算機で、ビル一棟分に歯車をつめこんで組み立てて納品するというようなことになれば、多重下請けで分業してビルドするのが最もよい方法ということになると思います。 追記 「継続的デリバリーのソフトウェア工学」では、「ソフトウェア開発を選んだ私たちがバカでない限り、私たちにとっての製造とは、ビルドボタンのクリックです」とあります。橋梁建設を例に、物理的な製造・生産との違いが説明されています。 継続的デリバリーのソフトウェア工

    建築では多重下請けでやれてるのに業務システムでだめなのはなぜ? - きしだのHatena
  • 多重下請けでは構造的にいいソフトウェアが作れない - きしだのHatena

    多重下請けではエンジニアが育たないという話を前回のブログで引用していたのですが、そもそも多重下請けではまともなソフトウェアは開発できないんではないかという気持ちになりました。 多重下請けでは、上位受け会社の「SE」が「設計」を行い、下位受け会社の「PG」が実装を行うという役割分担があります。というか、今回の話はそういう役割分担がある多重下請けを前提とします。 そうすると、設計というのは会社間をまたがった契約文書であり、発注のための作業指示書であるということになります。ソフトウェア開発で質的に必要な文書というよりは、ビジネス構造によって必要になったビジネス文書です。ちなみに派遣ではなく業務委託のはずなので詳細な作業指示になってはいけないのもポイントです。 ※余談ですが「設計は必要である」という人の話をきいてみると、必要なのは実装のための設計ではなく保守のためのドキュメントということがほとん

    多重下請けでは構造的にいいソフトウェアが作れない - きしだのHatena
  • 日本のSIerの技術力の低さの要因から考えるアメリカソフトウェアの強さ - きしだのHatena

    この連休はなんだかSIerについて考えることが多かったのですが、そういうことを考えると、なぜアメリカのソフトウェアが強いのかがわかってきた気がします。 まず、もちろんSIer技術力が低いといっても技術力が高いSIerもいるわけで、とくにこのブログを見てる人だと技術力の高い側にいる人が多いと思います。 けれども、DX白書2023によればSIerIT人材というのは75万人いて、技術力の高い人はその一部で、多くは技術力の低い側にいるんじゃないでしょうか。 https://www.ipa.go.jp/publish/wp-dx/gmcbt8000000botk-att/000108046.pdf 2014年、ちょうど10年前に、プログラマはSIerと自社サービスで2分化するんではないかというブログを書いていますが、そのまま現実になった形です。 プログラマ業界の二分化 - きしだのHatena

    日本のSIerの技術力の低さの要因から考えるアメリカソフトウェアの強さ - きしだのHatena
  • Open SoraをGoogle Colabで動かして高速動画生成 - きしだのHatena

    さて、おうちで動画生成は難しいという結論になりました。 Open Soraを使っておうちのWindowsで動画生成する - きしだのHatena ということで、GPUサーバー借りてやるのがいいのではと、Google Colabで試してみました。それなりに動画が生成できたので、末尾にいろいろ載せてます。 無償で使えるT4は16GBのGPUでOpen Soraは動かないので、課金が必要です。というか、24GBのL4でもout of memoryだったので、40GBのA100が必要です。 ガチャがんばろう。 最初にネタバレですが、セットアップだけで5コンピューティングユニットくらい消費します。まずはT4などを使って、起動してout of memoryが出るところまで手順を確認したあとで、A100を使うほうがいいです。 インストール CUDAが12.2なので、12.1にダウングレードする必要があり

    Open SoraをGoogle Colabで動かして高速動画生成 - きしだのHatena
  • Open Soraを使っておうちのWindowsで動画生成する - きしだのHatena

    Open-Soraという、オープンな動画生成モデルのバージョン1.2が6/17に出ていたのでWindowsで試してみました。 GPUメモリほしい。 GitHub - hpcaitech/Open-Sora: Open-Sora: Democratizing Efficient Video Production for All Open-Soraのアーキテクチャとかはこちらが詳しい 【次世代動画生成】Open-Sora徹底解説【OSS版Sora?】 Windowsの場合、SpacesというモジュールがForkProcessesというモジュールを使っていて、これがUNIX系OSじゃないと動かないのでWSLを使う必要があります。 ということでWSLへのCUDAのインストール。11.8を使うことにします。ここの手順どおり。 https://developer.nvidia.com/cuda-11-

    Open Soraを使っておうちのWindowsで動画生成する - きしだのHatena
  • 「いいね」による名誉毀損「いいね罪」はなりたたなくなった? - きしだのHatena

    X(Twitter)で他人の「いいね」が見えなくなりましたね。 ということは、以前話題になった「いいね罪」は成り立たなくなったってことですね。 「いいね罪」というのは、誹謗中傷している第三者ツイートに多数「いいね」したことが名誉毀損の不法行為とみなされたときに話題になりました。 杉田水脈議員が敗訴 中傷投稿「いいね」で賠償、初の確定 - 日経済新聞 この「いいね」がされた時期は2018年5月くらいということで、2017年3月から「いいね」がタイムラインに表示されるようになっていたことから、RTに近かったのですよね。 そのことも併せて、「いいね」による拡散効果が認められたことからの不法認定だったと思います。 Twitterはなぜ他人の「いいね」をタイムラインに流す仕様を続けるのか 運営に直接聞いてみた - ねとらぼ これはユーザーから不評だったのだけど、「実際の数字を見ると、日も含め、「

    「いいね」による名誉毀損「いいね罪」はなりたたなくなった? - きしだのHatena
  • 日本語CLIPを使って画像検索を作ったら素晴らしすぎた - きしだのHatena

    LINEヤフーから日語CLIPが出ていたので、どうやって使うんだろうと試してたら、なんかめちゃくちゃ便利な画像検索ができてしまいました。 clip-japanese-basic LINEヤフーの日語CLIP、clip-japanese-baseはこちらで紹介されています。 高性能な日語マルチモーダル基盤モデル「clip-japanese-base」を公開しました HuggingFaceのモデルはこちら。 https://huggingface.co/line-corporation/clip-japanese-base CLIPとは? ところでCLIPとは、となりますけど、OpenAIが公開してる、言語と画像を扱える機械学習モデルです。Contrastive Language-Image Pre-Trainingの略らしい。 https://openai.com/index/clip

    日本語CLIPを使って画像検索を作ったら素晴らしすぎた - きしだのHatena
  • PythonのFastAPIにJavaのHttpClientから接続しようとするとupgradeできないというエラーになるのでHTTP 1.1を指定する - きしだのHatena

    PythonでWeb APIを実装するFastAPIというのがあって、次のようにやればなんかサーバーがたつ。 import uvicorn from fastapi import FastAPI app = FastAPI() @app.get("/hello") def hello(): return "hello" uvicorn.run(app, host="0.0.0.0", port=8000) そして、Java 11で導入されたHttpClientで接続しようとするとエラーになる。 var client = new HttpClient().newHttpClient(); var req = HttpRequest.newBuilder(URI.create("http://localhost:8000/hello") .get().build(); var res = cl

    PythonのFastAPIにJavaのHttpClientから接続しようとするとupgradeできないというエラーになるのでHTTP 1.1を指定する - きしだのHatena
  • コンポーネント型Java WebフレームワークVaadinをSpring Bootで試すメモ - きしだのHatena

    ZK、JSFとコンポーネント型フレームワークをやってきたので、Vaadinもやっておきます。 https://vaadin.com/ 典型的な画面パターンが用意されたアプリケーションビルダーも用意されているので、ベースにできます。 このアプリケーションビルダーもVaadinで作られているようです。 https://start.vaadin.com/app/p プロジェクト作成 Spring Bootでの始め方はここ。 https://vaadin.com/docs/latest/integrations/spring/spring-boot まずSprig Bootのプロジェクトを作る。 https://start.spring.io/ Dependencyは何もいらないと思うので、そのまま。 設定 pom.xmlに依存などを追加。 プロパティとしてvaadin.versionでバージョン

    コンポーネント型Java WebフレームワークVaadinをSpring Bootで試すメモ - きしだのHatena
  • 2024年JSF(Jakarta Faces)をTomcatで試すメモ - きしだのHatena

    JSF(Jakarta Faces)をTomcatで試すメモ 「Jakarta Faces」って長いので、ここではJSFって書きます。 Tomcat用のプロジェクトがあるとして追加する、って感じで書くので、基的な構成は省略。 Tomcat 10.1.24で試してます。 https://tomcat.apache.org/download-10.cgi 最初から構成を作るのであれば、Quarkusが無難かなぁという気はする。 その場合はstarterでPrimeFacesを選ぼう。 https://code.quarkus.io/ Jakarta EEがよければ、Eclipse Starter for Jakarta EEで。そうするとPlatform ProfileかWeb ProfileであればJSFは含まれるので設定不要のはず https://start.jakarta.ee/ Sp

    2024年JSF(Jakarta Faces)をTomcatで試すメモ - きしだのHatena