m_shige1979のささやかな抵抗と欲望の日々

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

なんとなく作ったサイト

http://www.it-check-matome.info/


Github(注意すること)

https://github.com/mshige1979

Java

AWSのSESで送信者名を指定する

メール送信で日本語を使用したい 文字化け起こりましたのでネットを使用して調べました以下の対応でなんとかなりました。m(_ _)m 参考 [AWS][Java] Amazon SESで送信者名を表示させる | Developers.IO 実装 import java.io.UnsupportedEncodingException; i…

Spring Bootで画面からAPIへRest Templateでファイルを送信する

シンプルな使い方 jsonで送信する 難しそうな使い方 fileを送信する やりたいこと 画面からsubmitまたはajaxでファイルを送信する。 問題点 処理の流れが ①画面でファイルを指定する ②画面でsubmitする ③Rest Templateへファイルを送信するこの場合、ファイ…

WatsonのVisualRecognitionに画像をURLで指定

やること WatsonのVisualRecognitionへ画像情報を渡す際、ファイルとして送るのではなく、AWSのS3で作成した期限付きURL情報を渡して結果を取得したい。 実装 Sample1.java import java.io.File; import java.util.Arrays; import java.util.List; import co…

Spring Bootで簡易テストを行う

ぶっちゃけ 簡単じゃない 結構めんどくさい やりたいこと RestControllerをテストする Serviceなどを使用している場合はモック化する 実装 Sample01Controller package com.example.controller; import org.springframework.beans.factory.annotation.Autowi…

JavaのFreeMakerでテンプレート処理を行う2

インクルード処理を使う 1つのテンプレートの中に他のテンプレートファイルを読み込みます。 pom.xml <dependencies> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> </dependencies> ml| テンプレートファイル sample2.…

Spring Bootでログを出力する

デバッグ中の場合とかにデータの動きを少しずつ確認したい場合など ログを出力して確認します。 System.out.printlnではよくわからない場合など… サンプル Sample01Controller package com.example.controller; import org.springframework.http.MediaType; …

JavaのFreeMakerでテンプレート処理を行う

テンプレート処理 HTMLなどでヘッダー部分やフッター部分など ある程度共通の部分は別ファイルで管理して読み込みたいことがありますのでテンプレートとして使用します。 FreeMaker Javaのテンプレートエンジンとのこと 仕事でJava使うのはほとんどなかった…

AWSのSESでメールを送信2

SESでメールを送信するもう1つの方法 を試してみる サンプル Sample02.java import java.util.Properties; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Region; import com.a…

AWSのSESでメール送信

SESはメール送信のサービスだった 忘れてた… 受信できるように設定できる以上、送信できるはず… やること SES用のアクセスキーを生成 メール送信制限を解除 リージョンを指定 実装 Sample01.java import com.amazonaws.auth.BasicAWSCredentials; import com…

Javaで2つの期間より差を検出する。

2つの日時より日数を取得したい ので簡単なやつを調査 年月日、時分秒の差を取得するサンプル Sample02.java package sample02; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; publi…

Javaで暗号化処理

なんか一括でやるのないの? ライブラリとしてはありそうですけどJava共通ではなさそう 参考資料 qiita.com 基本↑見て やりたいこと 指定の文字列にソルト文字列とかを設定して変な文字列にしたい… 実装 Sample01.java import java.security.MessageDigest; …

Spring Bootで設定ファイルのデータを取得する

設定ファイルというと iniファイルとかcsvファイルとか独自に用意したプロパティファイルとかあります。 プログラム内の固定値とかではなく実行環境(開発、本番)で設定値が変化する場合に切り替えたいもの Spring Bootの場合は application.properties が…

Javaで形態素解析ライブラリのkuromojiを使ってみた

形態素解析とかいうので 文字列を単語別に分割できるらしい 全文検索とか名刺だけを取得したい場合とかに使えそう pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelversion></project>

AWSのS3をMavenのパッケージを使用してアップロード、ダウンロードを実施

キーアクセスには ファイルの場合と設定ファイルなどよりキーの値より取得する2パターンがある 別途定数などに入れて扱いたいのでちょっと別の方法をやる BasicAWSCredentials パラメータに直接キーとシークレットキーを指定するのでキーの元がわかりやすい…

AWSのS3へJavaのSDKを使用してアップロード

AWSへプログラムよりアクセスする なんかやることが多くなってきた 準備 AWSのIAMでS3用のユーザーを作成し、アクセスキーとシークレットアクセスキーを取得 eclipseへ機能を追加 新規ソフトウェアのインストールで「https://aws.amazon.com/eclipse」を設定…

Spring Bootで画像を縮小して表示

画像を縮小する そもそも画像制御とかプログラムでほとんど書かないけどね 実装 Image01Controller.java package com.example.controller; import java.awt.Graphics; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.ByteArra…

Spring BootでRestControllerで画像を出力する

簡単にresources配下にあるファイルを画面に表示する Spring Bootの場合は@RestControllerを返す場合は指定のデータを返却するような感じになるので返り値をバイナリ形式で返してみる。 やること 画像を読み込み byte[]へ変換して設定 jpegデータとして返却 …

Spring BootのRestTemplateでバイナリデータを取得する

RestTemplate Spring BootのAPI処理クラスと思われる Rest APIの場合は基本JSONなんだけど APIの結果としてはバイナリデータを受け取る場合もあるので取得したい 動作用API LINE APIのGet ContentAPIを使用 https://devdocs.line.me/ja/?shell#get-content …

Javaで動的にメソッドを呼び出す

動的にメソッドを呼び出す場合 PHPとかでは変数にメソッド名を設定すれば簡単に使用できるけどJavaの場合はリフレクションの機能を駆使する必要がある感じのよう 今回はクラスは全部同じものとして扱う。実際はパッケージは変わる可能性があるかも… 呼び出さ…

Spring BootのRestControllerで簡易テスト

テスト 目視チェックしか基本したことない だって作成するの面倒なんだもん つくったやつのgithub GitHub - mshige1979/sample_spring_rest02: rest apiの簡易テスト版 テストサンプル ItemControllerTest.java package com.example.controller; import stat…

doma2を使用したin句の条件設定

完全一致はあるけど 他の方法ってなかなか見つからないです IN句による条件指定 select * from keiyaku where name in ('tanaka', 'inoue') こんなやつ Dao KeiyakuDao.java package com.example.dao; import java.util.List; import org.seasar.doma.Dao; i…

doma2で部分一致検索を行う

Doma2で部分一致検索する際 %とかを任意で設定するのは止めたい 組み込み関数を使う 名前 関数名 例 前方一致 prefix where name like /* @prefix(name) */'smith' 後方一致 suffix where name like /* @suffix(name) */'smith' 前方後方一致 infix where na…

doma2で複数のテーブルを結合した結果を取得する

Javaのオブジェクト指向はなんか難しく感じる 永続化とかなんかもう少しわかりやすい表現ないかな… 複数のテーブルを連結したい 1つのテーブルの取得はできるけど複数テーブルの場合はどうするか確認 コレクト検索とかストリーム検索とかわからん DDL drop …

doma2で抽出件数を取得

マニュアルみたけど CollectとかStreamの使い方がよく分からない(´・ω・`) コード読んで理解しろってことかな… DDL drop table if exists item; create table if not exists item ( id bigint not null auto_increment, name varchar(255) not null, price …

Spring Bootで複数のフィルターを設定する

フィルタ内で全て1つでまとめるより 複数に分けたほうが管理し易いよね やること Filterをimplementsしたクラスを作成 @Componentsアノテーションは設定しない WebMvcConfigurerAdapterを継承したクラスで使用するフィルタを設定 フィルタ準備 Sample1Filte…

Spring Bootでフィルターを設定する

フィルタ 起動時、リクエスト、終了時などになんらかの処理を仕込みたい場合に設定する処理のこと HTTPリクエスト時などで特定のヘッダが存在しない場合は処理を実施しないなどに使用する感じ? 設定方法 Filterをimplemtsしたクラスを実装 @Componentsアノ…

Spring Bootで独自の認証を組み込む

認証を独自に実装したい DBの認証やアルゴリズムがちょっと特殊な場合など 今回やったこと ・AuthenticationProviderを実装したAuthenticationProviderImplクラスを作成してここで認証を実施 ・WebSecurityConfigurerAdapterにAuthenticationProviderImplを…

Spring Bootでセキュリティに権限を設定する

認可 ユーザーに特定の条件を付与してアクセス権限みたいなものを設定する 今回は1つの権限で1つのURLへのアクセスを制御する。 実際はロールとかいうもので1ユーザーが複数持てるように管理すべきだが面倒なんで… やること ユーザーテーブルに権限のエリ…

Spring Bootで認証を試す

なんか結構難しいけど いろいろな記事見ててモヤモヤしてて他の事が手につかなくなったのでちょっとだけ試す。 認証機能 ログインやログアウトを行う機能 実装サンプル GitHub - mshige1979/sample_spring_secutiry01: spring bootの認証の簡易版 参考 Sprin…

doma2のsql文調査

SQL文の複合条件とか気になるので調べる SELECT、INSERT、UPDATEらへんの挙動 SELECT 基本的にはSQLを作らなければならない 基本形 @Select List<Item> findAll();※@Selectアノテーションを付けたものが対象となります。↓対応するSQL select /*%expand*/* from ite</item>…

doma2によるデータの抽出を試す

この前は自動生成しかしていないので 自動生成なしで準備して見る 環境 Mac eclipse ライブラリ doma2 mysql 準備 Javaプロジェクトを準備し、ライブラリを設定しておく プロジェクトのプロパティより注釈処理を有効にしておく ファクトリーパスにdoma2のjar…

JavaからDLLを呼び出してみる3

タイトルあんまり名前が繋がってない まあ、意味は伝わるはず やりたいこと C++で作成したクラスをJavaで呼び出したい でもできない(やりかたがわからない)ので関数でラップして使用する。 C++のクラス用DLLを作成 MathFuncsDll.h // MathFuncsDll.h #ifde…

Windowsで作成したDLLをJavaで動かす2

関数を1つしか定義していなかったので 複数定義した場合のパターンをやってみる SampleDll.cpp // SampleDll.cpp : DLL アプリケーション用にエクスポートされる関数を定義します。 // #include "stdafx.h" #include "stdio.h" int GetHello(int data) { pr…

Spring Bootでアップロードファイルを受け取る

FormとかBeanとかいうクラスを使用することで受け取ることが可能になりました。 ファイルってどうするのかな? MultipartFileとかいうクラス があれば受け取れます(^^) フォーム系 SendDataForm.java package com.example.form; import java.io.Serializable…

Spring Bootでjson文字列を受信してクラスに割り当てる

BeanとかFormとか呼ばれているもので画面とかの項目が設定されるやつ 前の時代などではパラメータを指定して取り込んでいたけどjsonで送った場合なども対応したクラスに割り当てたい場合等に対応 json形式で送った際きちんとクラスに設定されるか検証する や…

Spring BootでXMLやJSONを返す

忙しいです… (´・ω・`) Spring BootでRest APIを作成する場合には ・コントローラー用のクラスに"@RestController"アノテーションを付ける ・クラスを任意で用意して返却することで基本、json形式で返却できる ・XMLを返したい場合は返却用のクラスに"@XmlRo…

Windowsで作成したDLLをJavaより呼び出して使用する

C言語で作成すると 超速いというのは知っていますが、そもそも他の言語で作成できるのかな? と思ったので簡単なプログラムを作成して試してみる。 環境 Windows64系のVC++でDLLを作成し、それをeclipseで実行する。 DLL作成 プロジェクトの作成でC++のWin32…

JavaでクラスをシリアライズしてDBへ保存

まあ、なんかの役に立つかもしれない クラスをデータ化して保存する 環境 MySQL Java8 テーブル定義 mysql> create table obj_data( -> id integer not null auto_increment, -> data blob, -> create_at datetime, -> update_at datetime, -> primary key(i…

JavaからMySQLに接続

スケジュールって基本できる時間で組むべきで 理想で組むべきじゃないと思う 残業した時点で既に破綻していることになっているから… MySQLで接続 ・Java 1.8 ・MySQL MySQL用のJarを取得する https://dev.mysql.com/downloads/connector/j/へアクセス ※Oracl…

BlumixのCFアプリのJavaサーブレットでLINE APIのボットサンプルを作成

Javaはクラスを基準に制御する のでjson変換するのはjacksonを使用してみた。 LINE API メッセージを送受信できるAPI 大抵のことはPHPでやっていたけどJavaでやっておく・署名 ・json解析 ・LINE送信 Jasksonを使うと簡単に解析できる クラスやクラス内のネ…

Macにtomcatをインストール

外部に配置したいんだけどね… eclipseとかで開発する場合はないと動かない見ないだし(´・ω・`) 環境 mac Java 1.8系 Tomcatインストール http://tomcat.apache.org/よりダウンロード ↓ 解凍、移動 tar zxf apache-tomcat-8.5.8.tar.gz sudo mv apache-tomcat…

Javaによるnio2での簡単なファイル読み書き

NIO2? JavaのSE7から出てきたファイル制御が少し簡単になるライブラリです。 ファイルを閉じるときに意味不明なtry-catch文の対応と一緒に組み込まれたのかな? 昔のやつ Sample02.java package sample02; import java.io.BufferedReader; import java.io.Bu…

Spring Bootでデータベースに接続

そろそろDB Javaって他の言語より導入が面倒な部分が感じられるのでなかなか進まない 環境 Spring Boot 1.4 MySQL 5.x ※MySQLはvagrantに配置して接続してみる DB設定 DDL作成 create table if not exists memo ( id int not null auto_increment, name varc…

Spring Bootでリクエスト時の受け取るパラメータをクラスにする

リクエストパラメータを1つずつ書くのはちょっと手間がかかる もう少し楽したい(^^) こんな感じのクラスを用意 TestForm.java package com.example.beans; public class TestForm { private String name; private String age; public String getName() { re…

Spring Bootで画面へ設定した入力を他の画面へ渡す

一般的画面遷移 入力→確認 入力画面を設定して、確認画面で内容を表示する 画面構成 /の場合のページ <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Spring Sample Demo</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <h1>Spring Sample</h1> <div> Spring Sample Test </div> <p>Now </p></body></html>

JavaのSpring bootでthymeleafを使用する

直接HTMLを記載するわけにはいかない いろいろなフレームワークではテンプレートを使用する 環境 Mac mini Spring Boot 1.4.x Java 8 Maven設定 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin…</artifactid></dependency></dependencies>

Spring BootでHello Worldを行う

Javaのフレームワーク WebだけじゃなさそうだけどJava系のフレームワークで役に立つかもしれないのでちょっとずつ調べる 環境 Mac Java 1.8 手順 Webサイトで開発環境のSTSをダウンロード https://spring.io/tools/sts/all ※400MBくらいあった 起動 「Spring…

ibm bluemixでVisualRecognitionを試す

使うのは無料枠のみ お金かかってもいいけど役に立つかを検証したい 環境 ホスト mac 開発環境 eclipse ※bluemixの設定などは事前に済ませておく VisualRecognitionってなに? 画像認識を行うみたい。とりあえず画像を読み込ませて設定したらできるらしい 今…

watsonのNatural Language Classifierを試した

環境 ホスト mac 開発環境 eclipse 準備 mavenを使えるようにしておく ibm bluemixを登録しておく 分類器作成 Java package com.nlc.sample1; import java.io.File; import com.ibm.watson.developer_cloud.natural_language_classifier.v1.NaturalLanguageC…

java8のLocalDateとLocalTimeを触ってみた

Java8から導入された機能 日付制御ではDateやCalendarなどを使用していたがSE8より導入された サンプルコード Main.java import java.time.*; public class Main { public static void main(String[] args) { System.out.println("Hello World!"); // 現在日…