- 1. 4週目spring
- 2. 自作するDIコンテナ 0
- 3. 【Android】PlayBillingLibrary を3.0→4.0にバージョンアップ&課金処理実装してみた
- 4. JREが指定されてなくてjava servletの勉強になかなか辿り着けなかった話
- 5. 未経験からエンジニアに転職して1年が経った振り返り
- 6. Java if, for
- 7. Java基礎の基礎
- 8. RoomsのデータテーブルMigrationするのしんどすぎてテーブル消した
- 9. ヨーダ記法で書いたら、「君はプログラムを読めない」といわれた話。
- 10. JAVA 文法勉強2
- 11. 日本語でenum定数を定義してみた
- 12. DJIのサンプルプログラムGSDemoのSDKバージョンを4.16.1にしてエラーが出るときの対処法
- 13. blastengine APIを使ってJavaで添付ファイル付きメールを送信する
- 14. blastengineを使ってJavaでメールを送信する
- 15. blastengineのJava SDKを使ってメール送信を行う
- 16. blastengineのJava SDKを使って添付ファイル付きメールを送信する
- 17. SpringAOPでログ出してみた
- 18. 【 LeetCode : Java 】876. Middle of the Linked List
- 19. 【JavaSilver SE11】ぽんこつエンジニアのJavaシルバー挑戦日記(リアルタイム更新中)
- 20. 自分の解説記事内で使用するテンプレートの紹介
4週目spring
スプリング
@Controller//1.遠隔呼び出し可能なプログラムへの呼び出し
public class Hello {
@RequestMapping(“/hello”)//2.URLとメソッドを接続
public void main() {
System.out.println(“Hello”);
}
}ローカルサーバーから呼び出すと>
トムキャット内部で何かがオブジェクトを生成してくれるのでインスタンスメソッドも呼び出される。(staticがなくてもよい)ちょっと java
int iv=10;//インスタント変数
static int cv=20;//スタティック変数
public void main() {System.out.println(“Hello”);//インスタンス·マーサードiv,cv使用可能
}public static void main(){//スタティックメソッドcvのみ使用可能
System.out.println(cv); ok
System.out.println(iv);エラーReflectionAPI=
自作するDIコンテナ 0
# 動機
最近, Javaのリフレクションについて知り, フレームワークなどの中身に使われているらしいということを知りました. リフレクションは簡単にカプセル化を破壊してしまうので多用は禁物ですが, いろいろ便利な使い方ができるようです. そこで, ひとつのアプリケーションとしてDIコンテナを自作してみることにしました.
# DIとは
DIとはDependency injectionのことで, 依存性の注入です. これだけ聞いてもよくわからないですが, デザインパターンの一種のようです. [Wikipedia](https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AE%E6%B3%A8%E5%85%A5)によると,
>依存性の注入(いぞんせいのちゅうにゅう、英: Dependency injection)とは、コンポーネント間の依存関係をプログラムのソースコードから排除するために、外部の設定ファイルなどでオブジェクトを注入できるようにするソフトウェアパターンである。
ということです.
Java
【Android】PlayBillingLibrary を3.0→4.0にバージョンアップ&課金処理実装してみた
# はじめに
こんにちは。
PlayBillingLibraryのバージョンを上げる機会があったので備忘録として残しておきます。[RevenueCat](https://www.revenuecat.com/)というツールを使ってアプリにサブスクリプションを実装しようとした際にPlayBillingLibraryがVer4.0に上がるみたく今まではVer3.0を使っていたがビルドすら通らなくなったのでもれなくPlayBillingLibraryもVer4.0に上げなきゃいけない事になりました。
## PlayBillingLibraryとは
Androidアプリ内で課金を実装するライブラリです。
簡単に言うと課金処理の際にGoogle Playとアプリを繋げてくれるやつ。このライブラリは毎年バージョンアップが行われサポート期間は2年です。
2年経つと足切りされ課金ができなくなる?のでチェックしてみてください。ちなみに2022年6月現在Ver5.0までリリースされています。
以下参考
https://developer.android.com/google/play/b
JREが指定されてなくてjava servletの勉強になかなか辿り着けなかった話
環境
Eclipse Version: 2022-03 (4.23.0)
Tomcat v10.0
java version: “18.0.1.1” 2022-04-22
Java(TM) SE Runtime Environment (build 18.0.1.1+2-6)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)やろうとしたこと
UdemyでJavaサーブレットの勉強をしようとサーブレットを作成したところ、java.io.IOExceptionがインポートできない状況になった。他にもインポートするライブラリが見つけられず動的webプロジェクトが動作しなかった。解決方法
Eclipseのプロジェクトエクスプローラから、該当する動的webプロジェクトを右クリックしてプロパティを選択する。その後Java ビルドパス内のライブラリタブから、JRE System Libraryを選択して編集をクリックする。Alternate JREでJREのバージョンを選択して適用すること
未経験からエンジニアに転職して1年が経った振り返り
## はじめに
2021年7月からにエンジニアに転職して早1年が経とうとしています。
この1年でどのように自分が変化したのか、何がまだまだ足りていないのかを
自信の振り返りの為にも書き綴りたいと思いました。まず率直な感想としては
「1年では自分がエンジニアだと自信をもって言えない」です。その理由や詳細については順を追ってお話したいと思います。
### 入社前
営業やコールセンターなど、日本語をちゃんと話せれば誰でもできる仕事をふらふらとしていました。友人がエンジニア転職して、辛いながらも充実した生活を送っているのを知って、興味が湧きエン転職に登録しました。当初は開発とかインフラとかそういった基本的なIT知識もありませんでした。(今もだがw)
当たり前のように「未経験からエンジニアへ!」みたいなキャッチフレーズの企業に応募しまくりました。5社くらい受けて3社と面接し2社内定が決まりました。
一つは穏やかな雰囲気の会社、もう一つは割とスパルタな感じの会社。まよわずスパルタを選びました。
20歳くらいのころにフィリピンにスパルタ英語留学をしていたので、その影
Java if, for
ifは条件がTrueならif文、falseならelse if文。
int i = 7;
if (i > 5) {
System.out.println(“true”);
} else if (i < 5) { System.out.println("false"); } else { System.out.println("rest"); } この場合は ifで止まってtrueが表示されるが、intが4の場合falseが、5の場合restが表示。 Forは繰り返し文。 for (int i = 0; i < 10; i++) { //0から9までが出る System.out.println(i); if (i == 6) { break; // iが6まで出て止まる。 continue; iが6の場
Java基礎の基礎
long l = 30L; intより大きな単位
double dd = 30.0; Doubleは小数点を指名
int i = (int) 30L; 小さい単位を大きい単位に表示するには小さい単位を宣言しないといけない
long ll = 30; 大木単位は小さい単位を含むのでそのままの入力でもOKString str = “複数の文字”;
System.out.println(“Hello”);
RoomsのデータテーブルMigrationするのしんどすぎてテーブル消した
# 環境?
Android studioで言語はJavaを使ってるよ# 発端
初めに何も考えずにRoomsでデータベース作った時,適当なサイトを参考にしてこんな感じで`export_schema=false`を設定してしまった“`java:My_table.java
@Database(entities = {My_Entity.class}, version = 1, export_schema=false)
public abstract class My_Table extends RoomDatabase {
public abstract My_Dao My_Dao();
}
“`事の発端はこれ.
# 問題
このあと何やかんやあって,Entityの仕様を大幅変更した.(カラムの削除と追加をやりたい放題した)そのあと,シンタックスエラーだけ直してもう一度ビルドしたところ当然のように様々なエラーにであう.
↓例
## その1
“`c:
Room cannot verify the data integrity. Looks like you’ve
ヨーダ記法で書いたら、「君はプログラムを読めない」といわれた話。
## 前提
Java11
2020年ごろ
コーディング規約はない
## 問題になったところ
“` Java
IF(a.equls(“AAA”)){
“`## NullPointExcepitonで落ちるのめんどくさいなぁ・・・
“` Java
IF(a!=null && a.equls(“AAA”)){
“`
でもこのように書くのもなぁ・・・なんか長いしなぁ・・・## そうだ!!!ヨーダ記法だ!!
“` Java
IF(“AAA”.equls(a)){
“`
これならa=nullでもfalseになるので問題ない。## 君はプログラムが読めない
そもそも、左辺と右辺には意味がある。
そういうところがあるからプログラムを書けないと判断せざる負えない。
変数の意味を考えろとてもありがたい話をいただいたので
## Object.equls を使おう
“` Java
If(Object.equls(a,”AAA”)){
“`これで全て解決だ。
nullも気にしなくてよい。
JAVA 文法勉強2
相続(Incheritance)の定義
相続は、クラス間の上下関係で抽象的なスーパークラス(SuperClass)または親クラスからサブクラス(SubClass)または子クラスを作ることで、相続という関係を通じて階層構造を形成相続特徴
1.スーパークラスで定義されたフィールドとメソッドを引き継ぐ
2.新しいフィールドやメソッドを追加できる
3.スーパークラスから受け継いだメソッドを修正できる = Overriding
4.同一スーパークラスを相続するすべてのサブクラスはタイプ互換性がある
5.2つ以上のクラスを同時に相続する多重相続はサポートされませんオーバーライディング(Overriding)
定義:スーパークラスから相続したメソッドを再定義すること
メソッドの名前とリターンタイプ、印字などがすべて同一でなければならず、異なる場合は新しいメソッドが追加される形式オーバーライディングによりオブジェクト指向の特徴の一つである多形成の実現が可能
例えばフルーツクラスがあっておいしい()というメソッドがあるとしたら、フルーツクラスを引き継ぐイチゴとブドウがクラスを作る場合、お
日本語でenum定数を定義してみた
# はじめに
いままでコーディングした中で、文字列定数の値(リテラル)やコメントに日本語を書くことはあっても、ソースコード本体に日本語を入れることはなかったと思います。
javaって、実はシンボル名に一部記号は使えないけど、日本語は使えます。
(ただ、一部使えない文字はあるようですが、最近、それを調べようという気力が・・・)例えば、”東証”という定数に1を割り当てたいときに、東証って”Tokyo Stock Exchange,Inc”だから定数名をTOKYO_STOCK_EXCHANGEとするとか、”日通し”って何だよ?という疑問が起きるたびに、検索して、諦めたら謎の造語を考えたり、最終手段はローマ字。
こういう無駄な努力は止めて、せめて定数名くらい日本語でコーディングしてしまおうと思ったのです。# 定数定義
REST APIにある「市場コード」をenum化します。
enum名はExchangeCodeにしました。
すっきりした定数名で日本語で2~3文字。コードがメインなので、int idを持たせます。
String toString()は暗黙に実装されていますが、定数
DJIのサンプルプログラムGSDemoのSDKバージョンを4.16.1にしてエラーが出るときの対処法
DJI Mobile SDKを学ぶうちにGSDemoのアプリを動かすことになった.今回タイトルのような事態となったので
公式のサンプルではSDKが4.15となっており,現時点(2022年6月6日)で発表されているSDK4.16.1には対応していない.
今回4.16.1にバージョンをあげたときにエラーが出たので,自分が行った対処法を記録する.
# 実行環境
| OS | AndroidStudio |
|:-:|:-:|
| Windows 10 Home | Bumblebee 2021.1.1 RC1 |
# java.lang.RuntimeException: Manifest merger failed with multiple errors, see logsがでたとき
### ①AndroidManifest.xmlのMerged Manifestをクリックする(画像赤枠)
![ManifestMergerFailed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2671458/1918
blastengine APIを使ってJavaで添付ファイル付きメールを送信する
[blastengine](https://blastengine.jp/)はシンプルに使える開発者向けメールサービスを提供しています。何かと面倒なメール配信をシンプルに、かつ確実に送信先に届くようになります。
今回はblastengineのAPIを使ってJavaで添付ファイル付きのメール送信を行うまでの流れを解説します。
## ユーザ登録する
blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。
![getting-started-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/515541ad-b74e-e1e2-ac34-46d181ee2924.jpeg)
## 送信元ドメインのSPFを設定する
送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。
“`
txt @
blastengineを使ってJavaでメールを送信する
[blastengine](https://blastengine.jp/)はシンプルに使える開発者向けメールサービスを提供しています。何かと面倒なメール配信をシンプルに、かつ確実に送信先に届くようになります。
今回はblastengineを使ってJavaでメール送信を行うまでの流れを解説します。
## ユーザ登録する
blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。
![getting-started-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/515541ad-b74e-e1e2-ac34-46d181ee2924.jpeg)
## 送信元ドメインのSPFを設定する
送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。
“`
txt @ v=spf1 inclu
blastengineのJava SDKを使ってメール送信を行う
blastengine(ブラストエンジン)はシンプルに使える開発者向けメールサービスを提供しています。何かと面倒なメール配信をシンプルに、かつ確実に送信先に届くようになります。
現在、Java向けに、blastengine SDKを開発しています。この記事では、その使い方を解説します。まずはテキストメールの即時送信についてです。
[blastengineMania/blastengine-java: Java SDK for blastengine](https://github.com/blastengineMania/blastengine-java)
## ユーザ登録する
blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。
![getting-started-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/515541ad-b74e-e1e2-ac34-46d181ee2924.
blastengineのJava SDKを使って添付ファイル付きメールを送信する
blastengine(ブラストエンジン)はシンプルに使える開発者向けメールサービスを提供しています。何かと面倒なメール配信をシンプルに、かつ確実に送信先に届くようになります。
現在、Java向けに、blastengine SDKを開発しています。この記事では、その使い方を解説します。0.0.2で対応した添付ファイル付きメールの即時送信について解説します。
[blastengineMania/blastengine-java: Java SDK for blastengine](https://github.com/blastengineMania/blastengine-java)
## ユーザ登録する
blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。
![getting-started-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/515541ad-b74e-e1e2-ac34
SpringAOPでログ出してみた
# Spring AOP
## 本ページについて
「Spring徹底入門」を読んでいるところで、
気になっていたコア機能の1つであるAOPを試してみた。## 前提
AOPを実現するために依存性を追加する。
### pom.xml/dependency
“`xml
org.springframework
spring-context
org.springframework
spring-aop
org.aspectj
aspectjweaver
“`## 実装
DIコンテナに格納されたBeanに対してProxyオブジェクトなるもので、Aopソース
【 LeetCode : Java 】876. Middle of the Linked List
## 前提
エンジニア歴:3年
Java:1年
C#:2年
アルゴリズム、CSの専門知識無し
コーディングテストの為、学習中## 問題
[876. Middle of the Linked List ](https://leetcode.com/problems/middle-of-the-linked-list/)Given the head of a singly linked list, return the middle node of the linked list.
If there are two middle nodes, return the second middle node.Example 1:
Input: head = [1,2,3,4,5]
Output: [3,4,5]
Explanation: The middle node of the list is node 3.
Example 2:Input: head = [1,2,3,4,5,6]
Output: [4,5,6]
Explanation: Since the
【JavaSilver SE11】ぽんこつエンジニアのJavaシルバー挑戦日記(リアルタイム更新中)
# 挑戦者
業界三年目のぽんこつエンジニア。所有資格はIパスのみ(!)
Javaは新人時代に研修込みで一年ほど触って『完全未経験よりはマシ』程度。
最近の仕事はAndroidJava用の要件定義-設計フェーズ。概要レベルでは新技術を噛み砕いてつよつよエンジニアとそれっぽい会話を繰り広げるものの、コーディングレベルになると何もかもあやしい。
いい加減Javaシルバーでも取ってこの状況を脱さねばと一念発起した。# 挑戦日記
**0日目**
– Javaシルバーの申し込み方法を調べる
>参考:[初めてでも大丈夫!JavaSilverの申し込み手順をわかりやすく解説](https://manabiya-sakura.com/information_technology/id=1554/)– 学習計画を立てる
>参考:[【JavaSilver】Java SE8 Silverに合格した勉強法【合格体験記】](https://qiita.com/ebichan_88/items/8409c9b99bf5a2977cc7)– [黒本 (「徹底攻略Java SE 11 Silver問題集
自分の解説記事内で使用するテンプレートの紹介
## はじめに
コンテストに参加しているとわざわざ何回も書いたり長いコードを書いたりするのが面倒だなと感じるので、可能な限り簡略化すべく作ったテンプレートを紹介していきたいと思います。非常に見辛かったりなんでそんなものを・・・?って感じるコードがあったりするかもしれませんが、自分的にこれはこう書きたいなってのを反映した結果だったりするので温かい目で見守っていただけると幸いです(ただ、計算量が大幅に変化するようでしたら指摘していただけると嬉しいです)。
では、見ていきましょう。
## インポート
正直テンプレートで書くならimportしなくても良いとは思いますが、まぁテンプレにないものを実装する必要があるときにimportしておいた方が楽なので必要最低限をimportしてあります。
“`Sample.java
import java.io.*; //入出力用
import java.util.*; //リスト用
import java.math.*; //BigInteger用
“`## フィールド
取得用としてBufferedReader、出力用としてPrintWrit