java.util.Collectors vs. System.Linq.Enumerable
# 動機
C# には java の Stream API に相当する Linq があるが、いまひとつ使いこなせなかったため、
java で出来ていたこういう処理を C# で書くとどうなるのか? についてのメモを残そうと思い立った.おそらく初めての言語として C# を選んだ人にとっては役に立たないだろう.
# 具体例
「java でこう書くとこのような結果が出る」というのを書き、その後ろに C# での書き方の一例を示していく.
## 例に使用するコード
“`java:java sample
public class Program {
public static void main(String[] args) {
List list = createDataList();// T resultXX = list.stream().collect(Collectors.XXX());
// System.out.println(“resultXX=” + resultXX);
}private static Li
JavaのSocketでプロキシを使う
# はじめに
今時のプロキシはConnectすると生データがそのまま通せるので、普通のSocketでもプロキシが使える。# プロキシサーバの設定
とりあえず普通に指定する場合、Proxyのコンストラクタでアドレスを指定すれば良い。“`java
Proxy px = null;
try {
InetSocketAddress px_addr = new InetSocketAddress(“プロキシサーバのアドレス”, 3128);
px = new Proxy(Proxy.Type.HTTP, px_addr);
}
catch (Exception e) {
// エラー処理
}
“`# Socket生成
SocketのコンストラクタでProxyが指定できるようになっている。作ったら普通にconnectすれば良い。“`java
Socket sock = null;
try {
sock = new Socket(px);
InetSocketAddress con_addr = new InetSocketAddress
いまさら聞けない「アノテーション」とは?
## はじめに
普段の業務でAndroid Java, C++ のソースコードをいじっているのですが、何となく見ている「アノテーション」。そういやこれってどういう意味?っと思ったので調べてみました。
あと最近同期のエンジニアが、「アノテーション」を業務で作成したり、修正したりすることがあったらしく、めちゃくちゃ苦戦したらしいので調べてみよーっと思った経緯です。
アノテーションって、ただの「目印」「注釈」?くらいの認識です。
注釈つけておけば、他の人がソースを見たときに分かりやすくなるから、Javadocのような認識です。それがどうやら違うらしいので、調べていきますー。
## あなたは誰?
失礼しましたwお前は誰やねん!って思った方もいらっしゃる思うので簡単に自己紹介をさせていただきます。
> 現職:SESエンジニア(歴1年)
前職:営業
年齢:27歳
使用言語:Java, Android Java, C++
工程:テスト、実装(設計もやってみたい…)
好きなこと:サウナ/登山/ダーツ/酒/運動全般## 結論
ただの「注釈」ではない。
Javaではアノテー
その他の投稿
|[../](https://qiita.com/taconana/items/d382d08a83a2a67f3b6a) |
|—|– [WindowsへのPostgreSQLのインストール手順](https://qiita.com/taconana/items/405678ccd1654985de9d)
– [PostgreSQLでのsequenceの使い方](https://qiita.com/taconana/items/cb6d3a49e3b6542b477e)
– [Java検定問題](https://qiita.com/taconana/items/5ae13e9d85135cf78333)|[../](https://qiita.com/taconana/items/d382d08a83a2a67f3b6a) |
|—|
【初心者】プログラムを作る材料5つ その1「コンピュータ」
# はじめに
IT歴2ヶ月の初心者プログラマー鹿太郎です。
初心者なりに感じた疑問や分からないことを発信していきたいと思います!まずはこちら!
「プログラムってどうやって作るの?」です!
今回はその材料の一つである、「コンピュータ」についてまとめました!
早速いきましょう!# コンピュータ
コンピュータとは、電子回路を用いて計算を実行する機械のことです。
・・・
そんなことは分かってるよ!って感じですね。
詳しく見ていきましょう。コンピュータは以下の5つの要素で構成されています。
## ①演算装置
データに対して、四則演算や論理演算などの演算を行う役割を担う装置のことです。
後述する制御装置とともに、CPU(中央処理装置)に実装されています。## ②制御装置
言葉通り、他の装置の制御を行う装置のことです。
他の4つの装置を制御する親分的な役割ですね。
上記の演算装置とともに、CPU(中央処理装置)に実装されています。## ③入力装置
コンピュータに命令やデータを与える役割を担う装置のことです。
これはイメージがつきやすいのではないでしょうか。
マウスやキーボードなど
間接的なメソッド呼び出し
やりたいこと
- Hello2.main(String[] args)から、Hello.hello()を経由してHello3.hello()を呼び出したい。同時に、実引数”5″を渡して、hello3.hello()のループ処理で、”hello!world!”を実引数の回数分、出力させたい。
- 戻り値を50で返してもらい、mainメソッドで出力したい。
コード
呼び出し元
“`java
//呼び出し元
public class Hello2 {
public static void main(String[] args) {
System.out.print(Hello.hello(5));
}
}
“`経由
“`java
//呼び出し先①(経由)
public class Hello {
public static vo
データの変換と検証(WebDataBinder)
WebDataBinder : データのタイプを変換し、検証もしてくれる。
1.データの変換
(1)PropertyEditor : 双方向タイプ変換 (タイプ↔String)。特定のタイプまたは名前のフィールドに
適用可能。プログラム内で提供するDefault PEと、
ユーザーが直接登録可能なCustom PEがある。
種類(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/propertyeditors/package-summary.html)
(2)Converter : 単方向タイプ変換(タイプA→タイプB)。PEの欠点を改善することによって
安全性が良くなった(stateful→stateless)。
(3)ConversionService 複数のConverterを登録しておいたもの。タイプ変換サービスを提供。
(4)Formatter : 双方向タイプ変換
DispatcherServletの役割
DispatcherServlet
Webの処理ロジックの中、リクエスト、処理、レスポンスを1つのGroupにして処理するのをServeletという。複数のServeletで共通に処理できる部分だけを1つにして先に処理するようにしたのがDispatcherServlet。重複作業を1つにすることで処理に効率が高くなる。
関心の分離の1つの例である。関心の分離については以前投稿したので、Linkを貼っておきます。https://qiita.com/KyungJoon960/items/6acdbf857789b22511d3
GUIメニュープラグインを作る(Spigot/Java)
### 開発環境
・Windows11
・IntelliJ IDEA
・Spigot API ver:1.18.2
## GUIメニューとは

こんなかんじ(↑)の直感的に操作できるメニューのことです。
大手から中小鯖まで様々なサーバーで独自のサーバーメニューが開発、運用されています。## GUIメニューを作ってみよう
と言うわけで早速作ってみましょう!
面倒だなあと思ったらSkriptなどを導入することをお勧めします。
ここから先は自己満ですから!それと今回は木の棒をクリックしたらメニューが開くタイプにします
### ステップ1
PlayerInteractEvent、InventoryClickEvent、InventoryCloseEventのクラスを作ってListenerで実装しましょう。
Playe
SpringBootで処理速度改善のために意識したこと
# 概要
プログラムを書いていてものすごく処理が重くなったりすることがある。
この辺りを意識すると改善するかもしれないことをまとめる。
今後もいい感じのものがあれば追加していきたい。# Tips
## 並列実行を採用する
Javaはスレッド処理ができるので並列処理ができるか検討してみる。EX.
“`
final int threadSize = 3;
final ForkJoinPool pool = new ForkJoinPool(threadSize);
final ListstringList = pool
.submit(() -> List.of(1, 2).parallelStream().map(Objects::toString))
.get().collect(
Collectors.toUnmodifiableList());
“`
このような形でsubmit内に並列処理をしたい処理を書くと並列で実行してくれた結果を取得できる。
並列実行数はForkJoinPoolの引数で指定す
Java検定問題
|[../](https://qiita.com/taconana/items/55e4ea3283f2fa82a670) |
|—|Java検定の問題を作ってみました。
問題1:
“`java
System.out.println(“すき家”.length()); // –> 3
System.out.println(“?野家”.length()); // –> ???
“`問題2:
“`java
System.out.println(Integer.MAX_VALUE + 1); // –> -2147483648
System.out.println(65536 * 65536); // –> ???
“`
問題3:
“`java
System.out.println( 1 % 2); // –> 1
System.out.println(-1 % 2); // –> -1
System.out.println( 1 % -2); // –> 1
System.out.println(-1 %
ランダムフォレストアルゴリズムによる購買習慣の予測
ランダムフォレストは分類や回帰の問題を解決するために用いられる教師ありの機械学習アルゴリズムです。このアルゴリズムは、複雑な問題を解決し、モデルの性能を向上させるために、多くの分類器を組み合わせるプロセスである*アンサンブル学習*の概念を使用しています。
ランダムフォレスト分類器は、特定のデータセットの様々なサブセットに対する多数の決定木を含み、その平均値を用いてデータセットの予測精度を向上させます。ランダムフォレストは1つの決定木に依存せず、各決定木からの予測を取り込み、予測の多数決に基づいて最終的な予測を行います。
フォレスト内のフォレストの数が多いほど、アルゴリズムの精度が向上し、オーバーフィッティングの可能性が低くなります。今回はJavaのランダムフォレストアルゴリズムとGridDBを使って、ユーザーの性別、年齢、給与からSUVを購入するかどうかを予測します。
## GridDBにデータを格納する
使用するデータは、性別、年齢、給与、SUVを購入したかどうかです。このデータは、”suv.csv “というCSVファイルに格納されています。このデータをGridDBに格納し、
ABC247A~Dの解答[Java]
## はじめに
解答は提出そのままではなく書き直せる部分を書き直したものです。それでは、見ていきましょう。
## A – Move Right
問題文は[こちら](https://atcoder.jp/contests/abc247/tasks/abc247_a)問題文は「先頭三文字の先頭に0を付けて出力せよ」と同義なのでまんま実装してやりましょう。
“`A.java
import java.util.*;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//文字の受け取り
String str = sc.nextLine();
//文字を切り出して出力
System.out.println(“0″+str.substring(0,3));
}
}
“`特に説明はいらないですかね。ちなみにこのコードで135msです。多分BufferedReaderクラスとか有志のFastScannerクラスを
for文の応用【谷型グラフ(累乗)】
実行結果

コード
メソッドの呼び出し元
“`java
public class Graph2 {
public static void main(String[] args) {
for(int i = -8;i <= 8;i++) { Graph1.printGraph(i*i); } } } ```Graph2クラスのmainメソッドで、Graph1クラスのprintGraphメソッドを呼び出し、16回ループさせます。実引数は、累乗分「◯」を出力させるため、「i * i」と指定。
ここが嫌だよPDFBox!!(複数行出力とか)
みなさん!無償で使えるPDF作成ライブラリとして有名なんですが [PDFBox](https://pdfbox.apache.org/ “PDFBox”) ってご存知でしょうか?
ただいざ使ってみるともやっとするポイントがちらほら…
まぁニッチなニーズなので仕方ない側面もあるんですけどね…ッ!!私がPDFBoxを使ってみて困った事や嫌だった事とかを以下にまとめたので参考にしてくださいな!
##### 複数行対応はしたが・・・・?
参考リンク:[PDFBox 2.0.21は複数行テキストフィールドの自動フォントサイズに対応](https://qiita.com/oohira/items/13de6968d5240ac16ae2 “参考記事”)
上記の通りPDFBoxは複数行の出力にも自動フォントサイズにも対応をしています。
がしかし!!!
以下のコードの通り、**デフォルトフォントサイズ12ptという所を変更する事は出来ません。**
https://github.com/apache/pdfbox/blob/2.0.26/pdfbox/src/main/java/
二重for文②【九九表】
実行結果

コード
“`java
public class Rensyu0609 {
public static void main(String[] args) {
for(int i=1; i<=9; i++) { for(int j=1; j<=9; j++) { System.out.printf("%d*%d=%-4d",i,j,i*j); //Sysyem.out.printf(書式, 引数1, 引数2, ....) }
二重for文①【山型グラフ(累乗)】
実行結果

コード①:二重for文を2つ使う場合
“`java
public class Rensyu0610a {
public static void main(String[] args) {
for(int i = 0;i < 10;i++) {// System.out.print(i + ":"); for(int j = 0;j < i*i;j++) { System.out.print("◯"); } System .out .println("(" + i*i + ")");
JavaからKotlinに変えてみる
## はじめに
?♂️「どうも運動通信社で働くAndroidエンジニアの明田です!
弊社では2021年11月頃からJavaで書かれたのAndroidプロジェクトをKotlinにゴリゴリ書き換えていっています!
Koltin化一緒に進めたいそこのあなた、この世界をKotlinにする運動にこぞってご参加してください!」※ Kotlin化に伴い得た知見や感想などを書いている記事になります。是非参考にしてください
## Kotlinとは
2017年のGoogleがKotlinを正式にAndroidの開発言語として発表されました。
KotlinはJVM(Java仮装マシン)をサポートしているため、Javaが動くところではどこでもKotlinが動きます。さらに、Javaが抱えている課題を解消しているのもKotlin化するメリットになります。
その導入の簡単さと、Javaとの親和性、既存プロジェクトへの導入リスクの低さが多くの企業のAndroid開発に採用されている要因ともなっています。↓Android以外にサーバーサイドとしてKoltinを導入している企業
https://q
OCI DevOps を使った Java アプリケーションのビルドを高速化する
# はじめに
OCI DevOps を使った Java アプリケーションのビルド(コンテナイメージのビルド)を高速化する方法を紹介します。
# ポイント
ポイントは、
– BuildKit(Docker Buildx) を使う
– 生成されたキャッシュを Object Storage に保存し、2 回目以降のビルド時にそれを活用するです。それを実現するための build_spec.yaml と Dockerfile を見てみましょう。
“`build_spec.yaml
version: 0.1
component: build
timeoutInSeconds: 10000
shell: bash
env:
variables:
BUILD_CACHE_OS_BUCKET_NAME: build-cache
BUILD_CACHE_OS_FILE_NAME: k8s-helidon-app-cache.zip
exportedVariables:
– TAGsteps:
– type: Command
name: “Ex
【Java】StreamAPIでzip関数を自作する
# zip関数とは
2つ以上の反復可能なオブジェクト(リスト等)を引数に受け取り、各オブジェクトの要素を前から順にまとめたリストを作成する関数です。
例えば`[1, 2, 3]`と`[‘a’, ‘b’, ‘c’]`の2つのリストをzip関数に渡すと`[(1, ‘a’), (2, ‘b’), (3, ‘c’)]`というリストが返されます。
ここで、`()`はタプル(不変リストのようなもの)を表します。Python等ではzip関数が標準機能として提供されていますが、Javaにはzip関数が存在しません。
よってJavaでzip関数を使用したい場合は外部ライブラリを使用するか、自分で実装する必要があります。# 本記事の目的
Javaの標準ライブラリのみを用いた簡易的なzip関数の実装方法をご紹介します。# 結論
Javaにはタプルがないため、`List.of`で取得できる不変リストで代用します。
## zip関数
“`java:DoZip.java
package sample;import java.util.Collections;
import java.util.