- 1. アクティビティにあらかじめ書かれたソースコード
- 2. Javaはなんでファイルの事をクラスって言うの?
- 3. Arthas Java 診断ツール
- 4. Selenium InvalidSelectorExceptionエラーの対処法
- 5. Spring BootでFeatureToggleを実現するライブラリff4jの紹介
- 6. 【新年】すべてのプログラマの皆様へ新年のご挨拶【ちょっとした小ネタ】
- 7. Javaでファイルをコピーするプログラムをbatファイルから動かして毎日やる作業を少しだけ効率化する話
- 8. 画面部品の配置
- 9. Project作成ウィザード
- 10. Androidビュー
- 11. Java Excel挿入と画像抽出
- 12. 【初心者】Java 変数/論理演算子/拡張for文【備忘録22】
- 13. R3 Corda : Token SDKを利用したトークン発行
- 14. JavaのsubstringとC#のSubstringの違い、移植方法を整理してみる
- 15. Spring BatchでBeanを入れ子にすると正常に処理されない問題の解決方法
- 16. 【要約】オブジェクト指向でなぜつくるのか
- 17. Javaのログ出力について
- 18. Selenium で要素のテキストが取得できないときの対処法
- 19. 各種 Web Application Framework メモリ使用量比較調査 (Go, Ruby, Python, Node.js, Java)
- 20. アルゴリズム体操11
アクティビティにあらかじめ書かれたソースコード
初学者です。個人的な勉強のために書きました。
##アプリ起動時に実行されるメソッド
“`HelloSampleActivity.java
package com.websarva.wings.android.hellosample;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;public class HelloSampleActivity extends AppCompatActivity {
@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//————–1
setcontentView(R.layout.activity_hello_sample);//–2
}
}
“`・上記のコードは、あらかじめ記述されているもの
・onCreateメソッドは、Androidアプリが実行さ
Javaはなんでファイルの事をクラスって言うの?
Javaを勉強し始めたばかりの者です。
Eclipseを使っています。Javaはファイル(.java)の事を「クラス」って言うんだなと勘違いしてました。
ターミナルとVScodeを使っていた時の事です。
“`ターミナル
$ javac ○○.java“`
実行したところ
新しく「○○.class」と言う
ファイルが出来てました。javacは「Javaのコンパイル」と言う意味です。
“`ターミナル
$ java ○○“`
次に上記のように実行したところ、ターミナルに思い通り出力がされました。
#まとめ
コンパイルをする事で、できるのが.classファイルだと言うことが分かった。
Eclipseを使うとまとめて処理してくれるので、裏の動きがどうなっているのか知る事が出来た。
Arthas Java 診断ツール
# Arthasとは何でしょう?
Arthas(読み方:アーサス)はAlibabaがオープンソースとして公開したJava診断ツールです。
開発環境、試験環境、本番環境で、JVMの状態をモニターしたり、障害が発生した時に、JVMを落とさず簡単に診断ができる。jconsole jmap jstackなどJDKツールより強力で、使いやすくできている。#どういう問題を解決できるのか?
・このクラスはどのJarからロードされているか確認したい!なぜ例外が発生したか?
・私がコミットしたコードが実行されてなかった気がするけど。。。コミットし忘れ?もしかしてブランチを間違った?
・オンラインでデバッグできないので、ログを仕込んで再配備するしかない?
・本番のあるユーザのデータ処理に問題あったが、本番ではデバッグできないし、ローカルでは再現しない!どうしよう?
・今JVMってどういう状況なの?
・リアルタイムでJVMの状況を把握したい!
・FlameGraphを描画してボトルネックを見つけたい!
など様々なシーンで活用できると思います。#ライセンス
Apache-2.0#環境
JDK 6
Selenium InvalidSelectorExceptionエラーの対処法
# Seleniumを使っていて、InvalidSelectorException エラーが出た場合の対処法
エラーの原因の1つにクラス名にスペースが入っている状態で要素取得しようとする場合に出ます。
例えば、クラス名が”class name”となっている要素の取得をしようと下記のように記述したとします。“`Java:
driver.findElements(By.className(“class name”));
“`
Seleniumでは、クラスやidなどの属性値にスペースが入っているため
このままだとエラーになるので、
少し記述方法を変えることで要素が取得できるようになります。“`Java:
driver.findElement(By.cssSelector(“div[class=’class name’]”));
“`
というように、cssSelectorを使ってタグ名と属性名、属性値を記述すれば要素を取得できます。以上です。
Spring BootでFeatureToggleを実現するライブラリff4jの紹介
# Feature Toggleとは
※ 基本的な話なのでご存知の方はすっ飛ばしてください
FeatureToggleとは、簡単に言えばある機能をオンにしたりオフにしたりする条件分岐のことです。FeatureFlagと呼ばれたりもします。例えば下記のように、ある新しいアルゴリズムを使うために`useNewAlgorithm`というboolean変数を用意し、`useNewAlgorithm`のtrue/falseに応じて新アルゴリズムと旧アルゴリズムを使い分けるような場面で使います。
“`javascript
function reticulateSplines(){
var useNewAlgorithm = false;
// useNewAlgorithm = true; // UNCOMMENT IF YOU ARE WORKING ON THE NEW SR ALGORITHMif( useNewAlgorithm ){
return enhancedSplineReticulation();
}else{
【新年】すべてのプログラマの皆様へ新年のご挨拶【ちょっとした小ネタ】
ただの小ネタです。今年はまだ簡単です。
手元で、さくっと動作確認できた言語だけになっています。
ちなみに、BOMは入っていません。## C#とか
“` csharp
byte[] utf8Bytes = { 0xe4, 0xbb, 0x8a, 0xe5, 0xb9, 0xb4, 0xe3, 0x82, 0x82, 0x31, 0xe5, 0xb9, 0xb4, 0xe3, 0x81, 0x8a, 0xe4, 0xba, 0x92, 0xe3, 0x81, 0x84, 0xe3, 0x81, 0xab, 0xe3, 0x80, 0x81, 0xe6, 0x99, 0x82, 0xe3, 0x81, 0xab, 0xe3, 0x81, 0xaf, 0xe8, 0x8b, 0xa6, 0xe3, 0x81, 0x97, 0xe3, 0x81, 0xbf, 0xe3, 0x81, 0xaa, 0xe3, 0x81, 0x8c, 0xe3, 0x82, 0x89, 0xe3, 0x82, 0x82, 0xe3, 0x80, 0x81, 0xe6, 0xa5, 0xbd, 0xe3, 0x
Javaでファイルをコピーするプログラムをbatファイルから動かして毎日やる作業を少しだけ効率化する話
#まえがき
社内日誌を毎日提出することになりました。
毎日ファイルをコピーして、今日の日付を入れて、とするのは正直大変。クリック下手だし。というわけでできるだけ自動化しました。
具体的にはダブルクリック1回でファイル名に日付が入ったコピーが生成されるように。
xlsファイルの中身は弄ってません。それができるライブラリもあるらしいけど、今回は見送り。使ったのはJavaとbatchファイル。
やりたかったことは一通りできて勉強になったのでよし。
以下説明。
#Java
とりあえずプログラム本体から。
##プログラム“`java:copyReport.java
package copyReport;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.time.LocalDate;
impor
画面部品の配置
初学者ですが、個人的な勉強の為まとめました
##画面部品の配置
Androidアプリの画面は、Android SDKで用意された画面部品を配置することで作成する。これが、.xmlファイルに画面部品タグを記述することである
画面部品については、大きく**ビューグループ**と**ビュー**の2つがある###ビューグループ
・**ビューグループ**は、各画面の配置を決めるもので、レイアウト部品とも呼ばれる。以下は、主なレイアウト部品である
①**<LinearLayout>**・・・一番扱いやすいレイアウトで、画面部品を縦/横方向に並べて配置
②**<TableLayout>**・・・表形式で画面部品配置
③**<GridLayout>**・・・グリッド形式で画面部品を配置
④**<FrameLayout>**・・・画面部品を重ねて配置
⑤**<RelativeLayout>**・・・画面部品を相対的に配置
⑥**<ConstraintLauout>**・・・RelativeLayout同様に、画面部品を相対的に配置※RelativeLayoutは、Androi
Project作成ウィザード
初学者ですが、個人的な勉強の為まとめました
##Project作成ウィザードAndoridStudioプロジェクトの作成には、プロジェクト作成ウィザードを使う
以下が、このウィザードを構成する4つの画面###①Create Android Project画面
・以下の、3つの入力欄がある
#### 1.Application name
・アプリ名の入力欄だが、アプリ名というより、**プロジェクト名**と理解したほうが良い
#### 2.Project location
・プロジェクトファイルを格納するフォルダ
・デフォルトでは、<ユーザーのホームフォルダ>¥AndroidStudioProjects配下にプロジェクト名と同名のフォルダが作られる#### 3.Company domain
・入力内容に応じて自動で**Packag name**が記述される
・ドメインを逆順にしたものを起点とし、そこにプロジェクト名を加えたものがルートパッケージになる
例えば、ドメインが「hogehoge.com」,プロジェクト名が「HelloAndroid」の場合は、
Androidビュー
初学者ですが、個人的な勉強の為まとめました
##Androidビュー
**Projectツールウィンドウ**の見え方は変更でき、デフォルトでは**Androidビュー**である
Androidビューでは、開発に必要なファイルのみ表示するようになっており、必要に応じては**Projectビュー**など他のビューに切り替える
※Projectビューは、より実際のファイルなどに近い構成になっている###Androidビューのファイル構成
・大きく、**manifests**、**java**、**res**の3フォルダに分かれる
####①manifests
・**AndroidManifest.xml**ファイルが格納されている
・AndroidManifest.xmlファイルは、**アプリの実行に必要な設定**が記述されている####②java
・名前の通り、javaファイルが格納されている
・パッケージ右側に(androidTest),(test)と記述されているのは、Androidアプリをテストするための.Javaファイルの格納先####③res
・.xm
Java Excel挿入と画像抽出
Spire.XLSは豊富な画像処理機能をサポートしています。添加、回転、抽出、削除などです。本論文では、Spire.XLS for Javaを使って、Excelドキュメントに画像を挿入して抽出する方法を紹介します。
使用ツール:Free Spire.XLS for Java (無料版)
https://www.e-iceblue.com/Introduce/free-xls-for-java.htmlJarファイルの取得と導入:
Method 1:ホームページを通じてjarファイルのカバンをダウンロードします。ダウンロード後、ファイルを解凍して、libフォルダの下のSpire.xls.jarファイルをJavaプログラムに導入します。
https://www.e-iceblue.com/Download/xls-for-java-free.htmlMethod 2:maven倉庫設置による導入。
https://www.e-iceblue.com/Tutorials/Licensing/How-to-install-Spire.PDF-for-Java-from-Maven
【初心者】Java 変数/論理演算子/拡張for文【備忘録22】
##12月中盤でしていたこと
###Webページ初作成
html/css,java script,jQueryの学習が一段落したので
一度自身のプロフィールや、今までの仕事の事、周りの事をまとめた
Webページを作成しました。簡単なページになるのですが
初めてということで3週間ほどゆっくり時間を使いました。hoverやアコーディオンを使いながら、作成したが
アコーディオンに少し苦戦したので、また作成する際は必ず
使うようにし、慣れるよう心掛ける。次はアプリを作れるよう、Javaの学習を進めていく。
##Java
###メソッド/出力基本の書き方が決まっており、クラス部分の中にメソッド部分があり、その中で
出力を行う形となっている。“`java
System.out.println(“出力したい数値”);
“`
上記が出力部分の書き方。
数値は数式には””は不要!!(付けてしまうと文字列として判断してしまう。)###変数
基本的にデータ型+変数名で構成される。
変数=値(データ)を入れる箱のようなもの。
データ型というのは変数に入れる値によって変わるの
R3 Corda : Token SDKを利用したトークン発行
【本文】
—コンソーシアム型DLT(Distributed Ledger Techonology)
DLT(Distributed Ledger Techonology)の基盤を提供するR3 Cordaでは、Token SDKを通じてトークン発行が可能となっている。
Cordaでのトークンとは、端的にデジタルアセットとしての証券(など、コモディティ含めた金融商品、及び法定通貨にペッグしたステーブルコイン)を指す。Token SDKでは、Ethreumでよく聞くfungible token(ERC20)とnon-fungible token(ERC721)の両タイプが発行可能であり、またEvolvable type(デジタルアセットのライフサイクルの中で、例えば株式分割や要綱変更によって発行時より何らかの変更が発生する。)、もしくはfixed type(法定通貨のように原則として変更が加わらない。)の2種類のタイプが存在する。
詳細は、以下参照。
**Corda State Hierarchy Design : Corda Token SDK**
https://githu
JavaのsubstringとC#のSubstringの違い、移植方法を整理してみる
#はじめに
既存資産をJavaからC#へ移植をしているが、文字列の一部を切り出すメソッドの仕様の違いによりバグがでているため今後のためにメモ。# 文字列の一部を切り出すメソッド
Java, C#ともに2種類ずつある。説明は参考文献の引用である。#JavaのString#substringメソッド
| メソッド | 説明 |
|:——————————|:————————————|
| public String substring(int beginIndex) | この文字列の部分文字列である文字列を返します。部分文字列は指定されたインデックスで始まり、この文字列の最後までになります。 |
| public String substring(int beginIndex, int endIndex) | この文字列の部分文字列である文字列を返します。部分文字列は、指定されたbeginIndexから始まり、インデッ
Spring BatchでBeanを入れ子にすると正常に処理されない問題の解決方法
# 概要
たとえば、Chunk指向Taskletを表すクラスを作成しようと `FlatFileItemReaderBuilder`, `ItemProcessor`, `JdbcBatchItemWriterBuilder` を保持するクラスを定義したくなるかもしれない。
しかしながら、このクラスを `Bean` として登録しても `JdbcBatchItemWriterBuilder` は下記のようなエラーが出て正常に動作しない。
“`:出力されるエラー
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)]; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: SQLステートメントに文法エラーがあります “INSERT INTO
【要約】オブジェクト指向でなぜつくるのか
## 0. はじめに
名作の多い「なぜシリーズ」の書籍のひとつである、[**オブジェクト指向でなぜつくるのか**](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A7%E3%81%AA%E3%81%9C%E3%81%A4%E3%81%8F%E3%82%8B%E3%81%AE%E3%81%8B-%E7%AC%AC2%E7%89%88-%E5%B9%B3%E6%BE%A4-%E7%AB%A0/dp/4822284654/)を読みましたので、参考になった点や教育に使いたい点をまとめてみました。
## 1. オブジェクト指向でなぜつくる?
書籍のタイトルにもなっている疑問。– プログラムの再利用性を高めるため。
– 変更に対して柔軟に対応するため。
– 理解しやすいプログラムにするため。…etc色々ありますが、少し嚙み砕くと**ソフトウェアを楽に作るため**と言えます。
## 2. オブジェクト指向が難しい
Javaのログ出力について
# ログファサードライブラリ
log4jの後に標準のjava.util.loggingが作られたが、log4jが使いやすかったため、完全には普及しなかった。
そのためログライブラリに依存しないようなインタフェースが必要とされた。
ライブラリ毎にログライブラリが異なると、1つのファイルにログをまとめるのが大変になるので、基本的にはSLF4Jを使用するのが良い。## SLF4J(Simple Logging Facade For Java)
SLF4J + logbackまたは、SLF4J + Log4j2の構成が多いようだ。
Commons Loggingが使いにくいために作成されたみたいで、SLF4Jを使えない
理由が無ければ、これを使うのが良さそう。### 必要なJAR
API(必須):slf4j-api-\*.jar
ログ実装へのハインディング(どれか1つ)
Log4j:slf4j-log4j12-\*.jar
Log4j2:log4j-slf4j-impl-\*.jar
Logback:logback-classic-\*.jar
java.util.logging:s
Selenium で要素のテキストが取得できないときの対処法
# スクレイピングによくつかうSeleniumで、うまく要素のテキストが取得できないときの対策方法
ハマりやすいポイント
– クラス名にスペースが含まれている
– クラス名はあっているのにテキストが取得できない今回は、この2つのポイントについて対処法をまとめます。
## クラス名にスペースが含まれている場合
JavaScriptであれば、スペースが含まれていても“`javascript
document.getElementByClassName(“class name”).innerText;
“`
のように、そのままクラス名を記述するだけで、
指定したクラス名のテキスト要素は簡単に取得できます。
それをSeleniumで代替する場合は、“`Java
WebDriver.findElement(By.cssSelector(“div[class=’class name’]”)).getText().toString();
“`
のようにBy.cssSelectorを使って、
`WebDriver.findElement(By.cssSelector(“{タグ名}
各種 Web Application Framework メモリ使用量比較調査 (Go, Ruby, Python, Node.js, Java)
## 概要
– 「Hello World な HTML を返す程度の Web アプリケーション」または「それぞれの公式ドキュメントに載っているチュートリアルの初期状態に近いもの」を作成してメモリ使用量を比較する
– Web アプリケーションサーバは現時点でよく使われていると思われるものを使用する
– テンプレートエンジンはフレームワークのデフォルト設定またはフレームワークが推奨しているものを使用する
– macOS Catalina 上でメモリ使用量を計測
– メモリ使用量の計測には ps コマンドの RSS 値を使う (複数のプロセスを使うものはRSS値を単純に足したものをメモリ使用量とした。メモリ共有部分については考慮していないため、もう少しメモリ使用量が少ないかもしれない)## 調査結果
メモリ使用量が少ない順に並べる。
– 7MB: Go 1.13 + Gin 1.5
– 10MB: Go 1.13 + Revel 0.21
– 24MB: Ruby 2.7 + Sinatra 2.0 + Puma 4.3
– 40MB: Python 3.8 + Flask 1.1
アルゴリズム体操11
#Remove Duplicates from a Linked List
LinkedListのhead からスキャンしていき、重複するノードがあれば削除して重複がないLinkedListのheadを返します。##説明
以下のLinkedListが与えられとします。
![Screen Shot 2020-01-04 at 12.00.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/07ae8790-5ace-e8dd-4bd2-ffc5f142032a.png)
データが重複する28 と 14 を削除すると、以下のLinkedListになります。
![Screen Shot 2020-01-04 at 12.00.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/00305d42-6540-f4fa-55fd-0237d5ab3d8a.png)
##Solution
###Runt