- 1. なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか
- 2. Javaの名前を変更するExcelシートとセットTabの色
- 3. JavaからGoogleスプレッドシートを操作する
- 4. 【Swing】JFrameクラスについて
- 5. 【Java】正規表現でズンドコキヨシ
- 6. オブジェクト指向を「英文」とみなそうとするともやもやが残る理由
- 7. Studyplusで時短管理学習してみました。
- 8. Javaで同一階層のファイルをimportする
- 9. java error handlingの基礎 - catch は一番手前でしか拾われないという話
- 10. Java 入れ子のBeanをaaa.bbb[0].cccの形式に変換する
- 11. VsCode & AntでJavaをコンパイルするやり方
- 12. 【未解決】Java6アプリからJSchを使用してSSH接続を実行すると例外が発生する件
- 13. Spring Boot で DI を必要とする Validator のテストを高速化する
- 14. 年収1000万円を超えるエンジニアが知っておくべき最低限の各言語の特徴
- 15. Play framework の scheduled jobs と crontab
- 16. [Java] n次多項式の効率的な計算
- 17. 本日の曜日を取得する方法
- 18. Javaのシステムプロパティの記載順について
- 19. React NativeのビルドにAndroid Studioに同梱されているJavaを使う
- 20. Mac + IntelliJ IDEAでJUnit5が動くようになるまでの手順メモ
なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか
この記事は個人ブログのうち技術に関する箇所のみを抜粋した転載です。
[なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか -Junks, GC cannot sweep-](https://munchkins-diary.hatenablog.com/entry/2020/02/05/002748)またブログには書いたのですが、諸事情により先に英語版が存在します。
こちらも書いたのは僕なので、剽窃などではないことはご了承ください。\[元記事\]: [Why we replaced Java with Typescript for Serverless](https://dev.to/csohei/why-we-used-typescript-instead-of-java-on-serverless-39e2) in [dev.to](https://dev.to)
## はじめに
**サーバレス(serverless)**は昨今もっとも注目を集める設計手法の一つで、おそらく多くの開発者が大なり小なり自分のプロダクトに応用し始めているのではないでしょうか
Javaの名前を変更するExcelシートとセットTabの色
この記事では、Spire.XLS for javaを使用して、ワークシートの名前を変更し、Javaアプリケーションのシートのタブカラーを設定する方法を紹介します。
使用ツール:[Free Spire.XLS for Java (無料版)](https://www.e-iceblue.com/Introduce/free-xls-for-java.html)
Jarファイルの取得と導入:Method 1:ホームページを通じてjarファイルのカバンをダウンロードします。ダウンロード後、ファイルを解凍して、libフォルダの下の[Spire.xls.jar](https://www.e-iceblue.com/Download/xls-for-java-free.html)ファイルをJavaプログラムに導入します。
Method 2:[maven倉庫](https://www.e-iceblue.com/Tutorials/Licensing/How-to-install-Spire.PDF-for-Java-from-Maven-Repository.html)設置による導入。
`
JavaからGoogleスプレッドシートを操作する
## 新しいシートの追加
“`java
final String spreadsheetId = “my spreadsheetId”;
List
requests = new ArrayList<>();
SheetProperties sheetProperties = new SheetProperties().setTitle(“New Sheet”);
requests.add(new Request().setAddSheet(new AddSheetRequest().setProperties(sheetProperties)));BatchUpdateSpreadsheetRequest requestBody = new BatchUpdateSpreadsheetRequest();
requestBody.setRequests(requests);Sheets.Spreadsheets.BatchUpdate request = service.spreadsheets().batchUpdate(spreadsheetId,
【Swing】JFrameクラスについて
###(JFrameのクラス階層)
java.lang.Object
→java.awt.Component
→→java.awt.Container
→→→java.awt.Window
→→→→java.awt.Frame
→→→→→javax.swing.JFrame###(JFrameクラスのコンストラクタ)
“`java
JFrame()
//初期状態が不可視な新しいフレームを構築する
“`“`java
JFrame(GraphicsConfiguration gc)
//画面デバイスで指定されたGraphicsConfigurationと空のタイトルでFrameを作成
“`“`java
JFrame(String title)
//指定されたタイトルを使用して、初期状態で不可視な新しいFrameを作成
“`“`java
JFrame(String title, GraphicsConfiguration gc)
//指定されたタイトルと画面デバイスの指定されたGraphicsConfigurationで、JFrameを作成します。
“`→
【Java】正規表現でズンドコキヨシ
# 流行ったよね、ズンドコ
完全に時期を逃しているのですが、流行ったときに書いて放置してたソースが出てきたので、投稿します。
Javaでは余りこのパターンは見かけなかった感ある。元ネタはこれ。
Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた— てくも (@kumiromilk) March 9, 2016
オブジェクト指向を「英文」とみなそうとするともやもやが残る理由
#0. 結論
他動詞と自動詞を区別しよう。ただそれだけ。#1. 導入
オブジェクト指向による適度に可読化されたコードが、英文とみなせるということを聞いたことのある方は多いだろう。具体的にコードを英文として読むためには、次のように読む。
```:oop↔eng
主語.述語();//第1文型
主語.述語(補語);//第2文型
主語.述語(目的語);//第3文型
主語.述語(目的語, 目的語);//第4文型
主語.述語(目的語, 補語);//第5文型
```#2. 問題
##2-1. 分かりやすい問題
しかし、述語(動詞)の種類によっては、「主語」が本当に「主語」なのか疑わしくなってしまう時がある。
例えば、javaの`List`(知らない方向けに説明すると、配列のようなもの)では
`list.add(obj);`
のような書き方ができる。
このコードでは`List`のインスタンス`list`に`obj`を追加するということである。
**決して`list`「が」(どこかへ)`obj`を追加するわけではない**のだ。
そのため英文では「JVM adds list obj.
Studyplusで時短管理学習してみました。
# 目的、背景
> 仕事や家庭などでなかなか学習できない、そのような人向けとして、このStudyplusを社会人こそ使うと便利だと気づきました。また、今年は応用情報などの資格を取りたいという人向けにも良いです。# 実践
## 0.社会人カテゴリーがあるので社会人でも気軽に参加できる。## 1.教材登録できます!
![Screenshot_20200204_080843_jp.studyplus.android.app.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/9db04dfb-e0bf-2d0f-644c-47e1e0dd6e48.jpeg)## 2.学習成果をグラフで視覚化
![Screenshot_20200204_080546_jp.studyplus.android.app.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/96e3c7a3-d1a0-bcfd-3519-2
Javaで同一階層のファイルをimportする
packageって考え方が必要らしい。
package = directory と思うと楽そうだ。
mainの .java ファイルをとあるフォルダに入れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24737/18347cc6-4b90-a7fa-7843-c1bea6dc6fec.png)
main()がある `Test1.java` の先頭にこれを入れる
```java
package test1;
```そうすると、何もimportせずに同一階層の **MyTest1Exception.java** が読み込める。
```java
void runSample() throws MyTest1Exception {
...
throw new MyTest1Exception("独自の例外です");
```ふむ
reference
https://itsakura.com/java-dokuji-re
java error handlingの基礎 - catch は一番手前でしか拾われないという話
エラーをどこで拾うかはほんとに迷う。
subroutineの中でうかつにtry-catchしてしまうと、拾いたいところまで届かなかったりする。
javaも同じだった
# 届かない例
同じExceptionを多段なsubroutineでかけると、内側のsubroutineでしか拾えない。
```java
public class MyException {
final private static int[] M = {1,2,3};
public static void main(String[] args) {
try {
subroutine(M);
}
catch ( ArrayIndexOutOfBoundsException e ) {
System.out.println("[SECOND] catch : " + e.getMessage());
}
}public static void subroutine(int[] M) throws ArrayIndexOutOfBoundsException {
tr
Java 入れ子のBeanをaaa.bbb[0].cccの形式に変換する
# はじめに
- 入れ子のBeanをaaa.bbb[0].cccの形式に変換する必要があるためとりあえず試作したもののためバグがあるかもしれません
- 想定している型は下記になります
- 親Beanのメンバ変数にString or Listor 子Bean or List<子Bean> ```java:Bean0.java
@Data
public class Bean0 {
private ListlistBean1;
}
``````java:Bean1.java
@Data
public class Bean1 {
private String id;
private String name;
private Listlist;
private Bean2 bean2;
private ListlistBean2;
}
``````java:Bean1.java
@Data
public class Bean2 {
private String count;
private List<
VsCode & AntでJavaをコンパイルするやり方
#目的
Javaのビルドの仕組みについて深く学習し、ビルドツールを習得し、Eclipseなしでの軽量・簡素な学習環境を構築する。
対象者:Javaはわかるけど環境構築やデプロイが苦手な人、勤務先がAntを使っているので触れておきたい人。ちなみに私がこれ。
筆者の環境:macOS
前提:JavaVMへのパスは通っていてjavacコマンドが動く。#Antをインストールする
[Ant公式](http://ant.apache.org)でダウンロードできる。
![スクリーンショット 2020-02-03 22.43.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201982/b1d7a576-3c96-2e75-3b1a-11dc21218dc2.png)
ここから、zip形式の最新のものをダウンロードする。そのままでもいいけど後で環境変数に記述するので短い名前に変えてもいい。
どこに配置してもいいけど、私はホームディレクトリに配置しました。
ここではapache-antにしました。```
【未解決】Java6アプリからJSchを使用してSSH接続を実行すると例外が発生する件
## やりたいこと
Java6でコンパイルした自作アプリから別マシンにSSH接続することです。## 環境
### 接続先
- Ubuntu 16.04 LTS
- OpenSSH 7.2p2### クライアント
- Windows 8.1
- 自作アプリ
- [JSch](http://www.jcraft.com/jsch/)## 問題概要
[JSch](http://www.jcraft.com/jsch/)のAPIを呼び出して別マシンへのSSH接続を実行すると、[JSch](http://www.jcraft.com/jsch/)内で例外が発生します。## 問題詳細
今さらJava6?
と思われるかもしれませんが、使わなければいけない事情がありましたので。JavaでSSH接続となると、[JCraft](http://www.jcraft.com/)の[JSch](http://www.jcraft.com/jsch/)ライブラリが使用されることが多いようです。
[Mevanリポジトリ](https://mvnrepository.com/artifact/co
Spring Boot で DI を必要とする Validator のテストを高速化する
Spring Bootのプロジェクトでユニットテスト実行時間の高速化を模索している中で、DIが必要なカスタムバリデーターのテスト実行を高速化する方法が分かったので紹介します。
### 確認環境
* Spring Boot 2.2.2
* JUnit 5.5.2
* AdoptOpenJDK 11.0.3
* macOS Mojave 10.14.6 (3.1GHz Intel Core i5, 16 GB RAM)### 背景
入力値の一意性をチェックする場合など、Bean Validation で DB 接続をしたい場合があり、次のような DI を使ったカスタムバリデーターをいくつも作っていました。
```java
@Documented
@Constraint(validatedBy = { EmployeeCodeUniqueValidator.class })
@Target({ TYPE })
@Retention(RUNTIME)
public @interface EmployeeCodeUniqueConstraint {
...
}
`````
年収1000万円を超えるエンジニアが知っておくべき最低限の各言語の特徴
# 初めに、そして結論
本当は冒頭にこういう言い訳がましいことを書くのは好きではないのだが、例によってディスり成分が多めなので、筆者はそういうキャラということでそこは目を瞑って欲しい。実体験に基づいて書くので業務上あまり触ってこなかった言語については記載が少ないが、読者のみなさんが詳しいことや私の記述で事実と異なる部分については謝罪して訂正したいのでプルリク、コメント等熱望している。あと筆者はサーバーサイドエンジニアであってフロントの事が全然わからんのでその辺はさっぴいて読んでほしい。結論から言うとRustを使え。
## 古生代
アセンブラ以外の高水準プログラム言語の歴史は1950年代から[^1]であるが、筆者の実体験に基づいて話をするので'80年代まですっ飛ばす。
[^1]: 1954年にFORTRANが考案された。高校の「計算機数学」の時間に習ったが授業中はテトリスばっかりしていてなにも覚えていない。https://ja.wikipedia.org/wiki/FORTRAN
### N88-BASIC
N88といえばN88-BASIC(86)を思い浮かべる読者が多いと思
Play framework の scheduled jobs と crontab
play framework では、ある処理を定期実行できる Jobクラスがありその間隔は以下のように `@On()` のカッコ内に書く
```java
import play.jobs.Job;
import play.jobs.On;@On("*/2****")
public class xxxxx extends Job```
時間間隔の設定にはcrontabの表記が使えて、以下のサイトがめちゃわかりやすい。
[https://crontab.guru/#*/15_*_*_*_*](https://crontab.guru/#*/15_*_*_*_*)
※後ろのアスタリスク(*)は間にスペースが必要なことに注意。
crontab コアンド初めて知ったが、めちゃクチャ便利では
[Java] n次多項式の効率的な計算
多分何番煎じかわからんくらいありふれた内容だと思うけど、そんなこと知るか
## ``Math.pow()``からの離脱
なんか適当に「Java 累乗」とかで検索すると``for``文回して解けとか``Math.pow()``を使うと一発で求まるとか言ってるのが割とすぐ見つかる
$n$次多項式を解こうと思うとまず``Math.pow()``が思い浮かぶので、
$$ Ax^3 + Bx^2 + Cx + D $$
みたいな多項式をメソッドで用意しようとすると```Java
static double f(double x) {
return A * Math.pow(x, 3) + B * Math.pow(x, 2) + C * x + D;
}
```のようにしがちになっちゃうと思う
ただ、``Math.pow()``って引数が``double``型であることから分かるように$x^{0.3}$だったり、$x^{log4}$だったり、指数部が整数でない場合に用いると真価を発揮するもんなんだと思ってて、逆に指数部が整数である演算なんかで使うとかえって無駄に時間かかっちゃうこ
本日の曜日を取得する方法
#曜日を取得する方法
###曜日
String[] weekName = {"日曜日", "月曜日", "火曜日", "水曜日",
"木曜日", "金曜日", "土曜日"};@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);Calendar calendar = Calendar.getInstance();
int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
Log.v("checkCalendor"," + " + weekName[week]);}
###その他の情報の取得方法
int year = calendar.get(Calendar.Y
Javaのシステムプロパティの記載順について
定期的に毎回悩んで、思い出しているのでメモしておきます。
Javaのコマンドに付けてメモリの確保量などを定義する「システムプロパティ」
ですが記載順によってクラスから参照できる/できないが明確になっています。**環境**
```
$java -version
java version "1.8.0_131"
```**サンプルクラス**
「kusatest」というシステムプロパティをクラスから参照して出力します```java:Test.java
import java.util.*;public class Test {
public static void main(String[] args) {
System.out.println("start");
System.out.println(System.getProperty("kusatest"));
System.out.println("end");
}
}
```**参照できる例**
```sh
$ java -Dkusatest=a
React NativeのビルドにAndroid Studioに同梱されているJavaを使う
React NativeでAndroid向けにビルドする場合、環境にJavaがインストールされている必要がある。
メジャーなのはOracleの配布しているJava。しかしAndroid StudioにはそれでなくOpen JDKが同梱されている。
Android Studioのと合わせた方がトラブルが生じにくいだろうし、またOracle Javaのライセンス変更[^1]を気にする必要もなくなるため、Android Studioに同梱されているJavaをReact Nativeのビルドに使う。
[^1]: [「Oracle Java」のライセンスが変更 ~無償利用は個人での開発・テスト・デモ目的のみに](https://forest.watch.impress.co.jp/docs/news/1180607.html)
## 環境
- macOS Mohave 10.14.6
- react-native: 0.61.5## 手順
`.bash_profile`に下記のように記述する。
```sh
export PATH=$PATH:/Applications/"Andr
Mac + IntelliJ IDEAでJUnit5が動くようになるまでの手順メモ
# はじめに
タイトルの通りの雑多なメモです。個人的な備忘録なので、画面キャプチャもない手抜き記事です。
また、「こうやったらできたよ」という内容なので、もっといい方法があるかもしれません。## 環境
* macOS Catalina# 内容
## JDKのインストール
もともと入っていたので今回作業をしてないですが、以下のような手順でやった覚えがあります。
まずHomebrewをアップデートします。```
$ brew update
```次に下記コマンドでインストール(現時点で最新版のJava13がインストールされる)。
```
$ brew cask install java
```## IntelliJ IDEAのインストール
もともと入っていたので(ry
公式サイトからインストーラをダウンロードして、ポチポチやるだけだと思うので省略してもいいですよね?いいってことにしよう。## Gradleのインストール
下記コマンドでインストールします。```
$ brew install gradle
```が、既に入っていると怒られたので下記で再インス