- 1. 過去1世紀の間に日本で出回ったすべての本のデータベースを作ろう
- 2. Yellowfinのカスタムフォーマッターを作って数値のマイナスを△(三角)で表示する
- 3. [MySQL][java]日時を受け取る
- 4. Java合併 & マージを解除Excelセル
- 5. Java 11 (OpenJDK: AdoptOpenJDK) を Homebrew で macOS にインストールする
- 6. SpringSecurityで認証機能を実装③
- 7. SpringSecurityで認証機能を実装②
- 8. JDBCを利用する場合、NLSパラメータはJavaのロケールに影響される。
- 9. 兵庫県全域数値地形図DSMから三次元モデル(PLY形式)を作成してみる
- 10. NLP4J [006-034c] NLP4J で言語処理100本ノック #34 「AのB」をさらにスマートに解いてみる(完結編)
- 11. SpringSecurityで認証機能を実装①
- 12. 【初心者】Java クラスフィールド・メソッド/カプセル化(ゲッター・セッター)【備忘録25】
- 13. Java 順列の生成
- 14. JavaSilver試験予約完全攻略ガイド
- 15. LinkedListとArrayList
- 16. Spring Boot(Spring Web MVC + Tomcat)におけるSameSite Cookie
- 17. RやRStudioでJava (jdk)のバージョンが高すぎてh2oライブラリが使えなかったのを解決した話
- 18. アルゴリズム 体操16
- 19. 【備忘録】統合開発環境Eclipseでjavaプログラムを実行~gitを使ってみた
- 20. Javaプログラマ(4年目)が今まで買った技術書の棚卸しとオススメ度
過去1世紀の間に日本で出回ったすべての本のデータベースを作ろう
# 0. 初めに(対象読者など)
釣りタイトルです。すみません。
本当は、過去1世紀の間に日本で出回ったすべての **「699 テレビ・ラジオ」に分類される**本のデータベースを作ります。
また、 **国会国立図書館のサーバへの自動アクセスを大量に行うこととなるので、くれぐれも自己責任でお願いします**。対象読者
– 国会国立図書館サーチを(API使わずに)自動で行いたい人
– javaがある程度できる人
– privateメソッドで怒らない人
– 自己責任を理解できる、精神的に大人の方(極稀に、これに残念ながら該当しない社会ガク者の方がいます)# 1. 実験
国会国立図書館サーチで詳細検索し、分類記号「699」だけを条件に検索すると、
1925年~2020年の、テレビやラジオに関する本をすべて検索することができる。
しかし、誠に残念ながら、一回の検索で見ることができるのは、上位500件の結果のみである。(501件目以降は、そもそも検索結果に表示されない)
また、出版年
Yellowfinのカスタムフォーマッターを作って数値のマイナスを△(三角)で表示する
経理関係の資料などでマイナスの数値を「△100,000」のように表記するケースがあります。
Yellowfinでは **カスタムフォーマッター** を使えばこのような表示を実現することができます。カスタムフォーマッター等の **Yellowfinのプラグイン** はJavaで開発します。
今回はEclipse(を日本語化した [Pleiades](https://mergedoc.osdn.jp/))を用いています。なお、開発方法はYellowfinのオンラインマニュアルに記載があります。
[プラグイン開発の基礎](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=10945559)
[カスタムフォーマッターの作成](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=10945478)
本記事では端折りながら進めていきますので、適宜マニュアルを参照してください。# Javaプロジェクトの作成
新規Javaプロジェクトを作成します。Javaのバ
[MySQL][java]日時を受け取る
##概要
MySQLに登録された日時をjavaで取得する方法、javaからMySQLへ日時を登録する方法を紹介する。
MySQLへ接続する方法はこちらを見て頂きたい。https://qiita.com/QiitaD/items/d605b07e849e3bec0722##MySQLに定義する列
日時をtimestamp方で定義する。列名は”date_time”、フォーマットは”yyyy-MM-dd HH:mm:ss”である。##MySQLからjavaでの取得
~~~java
String mySql = “select * from table_name”;//日時のあるデータを取得するSQL文
ResultSet rs = stmt.executeQuery(mySql); //SQL実行、データを取得
while (rs.next()) {
rs.getTimestamp(“date_time”); //取得データから日時情報を取得
}
~~~##javaからMySQLへ日時を登録する
Java合併 & マージを解除Excelセル
本論文では、どのように使うかを紹介しますSpire.XLS for Java Excel Java合併 & マージを解除Excelセル
使用ツール: [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)設置による導入。
合併Excelセル
Spi
Java 11 (OpenJDK: AdoptOpenJDK) を Homebrew で macOS にインストールする
## 今回の環境
– macOS Catalina 10.15.2
## インストール
公式資料通りにインストールする。
[GitHub \- AdoptOpenJDK/homebrew\-openjdk: AdoptOpenJDK HomeBrew Tap](https://github.com/AdoptOpenJDK/homebrew-openjdk)“`
$ brew tap AdoptOpenJDK/openjdk
$ brew cask install adoptopenjdk11
“`## java_home コマンドでインストールされたディレクトリの場所を確認
“`
$ /usr/libexec/java_home -v 11
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
“`## 環境変数 JAVA_HOME と PATH を設定
必要に応じて .bash_profile や .bashrc などに記述する。
“`
export JAVA_HOM
SpringSecurityで認証機能を実装③
**[前回](https://qiita.com/YJ2222/items/11ff28972da21da421d5)の続きです。**
**※ここからたくさんのファイルを作成していきます。失敗した際に、途中で後戻りが出来なくなる可能性が高いので、ここまでプロジェクト情報をコピーまたはGithubなどに挙げておくといいでしょう。**
私はこれをせず何度もプロジェクト作成してかなりの時間を要しました。## 5、SpringSecurityの認証機能の実装。
・ここからがメインディッシュになります。
前回までの実装がうまく行ってないとエラー対応が面倒なので、ここまでを完璧に実装しておきましょう。
SpringSecurityで認証機能を実装②
**[前回](https://qiita.com/YJ2222/items/73642c3a0af776927db5)の続きです。**
## 4、ログイン画面の実装。
・今回はログイン画面と実装します。ただ認証機能は実装しないので、**ログイン画面からボタンを押せばフォームの内容に限らず画面を遷移させます**。
・ファイルの構成イメージは以下になります。コメントをズラーと書いてしまったので不要な場合は消して下さい。
・コードは以下になります。
“`java:SpringLogin.app.controller/LoginController.java
package SpringLogin.app.controller;
imp
JDBCを利用する場合、NLSパラメータはJavaのロケールに影響される。
# 実行環境
本記事を書くにあたって、利用した主なソフトウェアのバージョンは次の通りです。なおOracle Databaseの構築にあたってはDockerおよび[Oracle公式のDocker Image](https://github.com/oracle/docker-images)を利用しています。
|software|version, edition|
|—|—|
| Oracle Database 12c | Oracle Database 12c Standard Edition Release 12.2.0.1.0 – 64bit Production |
| ojdbc8.jar (12c JDBC Driver) | Oracle 12.2.0.1.0 JDBC 4.2 compiled with javac 1.8.0_91 on Tue_Dec_13_06:08:31_PST_2016 |
| javac | javac 11.0.4 |
| java | openjdk version “11.0.4” 2019-07-16 |# 概要
Ora
兵庫県全域数値地形図DSMから三次元モデル(PLY形式)を作成してみる
## 1.概要
先週末、兵庫県が1mメッシュの全県域3次元データセットを公開をしました。
公開データはDSM、DEM、CS立体図で、ライセンスはC.C.4.0、「目的を問わず二次利用可能なデータですので、様々な用途でご利用ください。」とのことです。– [兵庫県HP:全国初「全県土分の高精度3次元データ」の公開](https://web.pref.hyogo.lg.jp/press/20200110_4566.html)
– [G空間情報センター:兵庫県全域数値地形図ポータル(2010年度~2018年度](https://www.geospatial.jp/ckan/dataset/2010-2018-hyogo-geo-potal)これまで公開されていた三次元データセットとしては、[国土地理院:基盤地図情報サイト](https://www.gsi.go.jp/kiban/)の数値標高モデル(5mメッシュDEM)がありましたが、兵庫県全域数値地形図はその25倍のデータ密度であり、DEMに加え、建物や森林を含めたDSMが公開されています。
さっそくこれを利用して、都市や山林部の三次
NLP4J [006-034c] NLP4J で言語処理100本ノック #34 「AのB」をさらにスマートに解いてみる(完結編)
# 課題
[NLP4J [006-034b] NLP4J で言語処理100本ノック #34 「AのB」の Annotator を作ってみる](https://qiita.com/oyahiroki/items/0f1d7863e92747343634) では以下のようなロジックを切り出して定義することでロジックの再利用を可能にしていました。
ところがこれでもまだ足りないのです。
キーワードの抽出ルールをロジックで書いているため、柔軟性が足りないのです。
「AのB」であればこのロジックで問題ありませんが、では「AがB」のようなものを抽出したいときはまた別のロジックを用意しなければなりません。“`java
/**
* 「名詞の名詞」を「word_nn_no_nn」キーワードとして抽出します。
* @author Hiroki Oya
*/
public class Nokku34Annotator extends AbstractDocumentAnnotator implements DocumentAnnotator {
@Override
public void
SpringSecurityで認証機能を実装①
現在、フレームワークの勉強中でSpringBootを扱っております。
その中でログイン機能を実装する際に、SpringSecurityの認証機能を使うのが定石らしく、これを使って実装いたしました。
その際にだいぶ難儀しまして、実装までにだいぶ時間を要したので自分なりにまとめてみました。## 1、SpringSecurityのイメージ
すごく簡素なイメージ申し訳ないのですが、イメージ的にはこんな感じになります。
SpringBootのDI(依存性の注入)という機能を使って**SpringSecurityを外部から読み込んでDBとやり取りを行います**。
DIに関しては詳しく説明しませんが、外部のオブジェクトをDIコンテナという箱に入れておくことで、い
【初心者】Java クラスフィールド・メソッド/カプセル化(ゲッター・セッター)【備忘録25】
##クラスフィールド・クラスメソッド
###クラスフィールド
インスタンスフィールドがありましたが、クラスに属するクラスフィールド
というものもある。具体例としては、インスタンスがいくつ生成されたのか数える
countというものがある。
【例】“`java
class Person{
public static int count = 0;
//…略Person(String firstName,…);{
Person.count++;
… //↑こうすることで、インスタンスが生成されるたびに1ずつ足されていく。
“`###クラスメソッド
“`java
class Person{
public static int count = 0;
//…略
public static void printCount(){
System.out.println(“合計” + Person.count + “人です”);
}
}
“`
クラスメソッドは、インスタンスの生成がない場合でも呼び出すことが可能。“`java
//
Java 順列の生成
“`java
public Listpermutation(List list, String target, String ans){
if(target.length() <= 1) { list.add(ans + target); } else { for (int i = 0; i < target.length(); i++) { permutation( list, target.substring(0, i) + target.substring(i + 1), ans + target.charAt(i)); } } return list; } ``` [全組み合わせの列挙 Java](https://qiita.com/masakinpo/items/b6ae147d9a61b592240a)
JavaSilver試験予約完全攻略ガイド
この記事では、Java Silver試験を受けるのに一番の難関(ほんとか?)とされる、**受験までの手順**を紹介します。
今回は「試験会場に行って受ける試験を予約する」までの説明をします。試験内容や勉強方法の解説は世に溢れているので自分でどうにかしてください。
#必要なもの
試験を受けるのに必要なものがあります。###予約するまでに必要なもの
– メールアドレス
– 試験結果を見るサービスに登録するために必要です。
– 試験サービスに登録するために必要です。– 職業
– 試験結果を見るサービスに登録するために必要です。
– 電話番号か自宅がない場合、試験サービスに登録するために必要です。– クレジットカード
– 試験の予約に必要です。仮想クレジットカードやプリペイド式のものでもおそらく可能。
– 受験料は26600円(2020年1月現在)。###試験を受けるために必要なもの
– 顔写真付き身分証明書
– 職業の次に用意しづらいものです。原動機付自転車免許であれば即日、パスポートであれば1
LinkedListとArrayList
##リストって
脳死でArrayList使っていたけれど、実はいろいろあるらしい“`LinkedArrayListTest.java
package listTest;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;public class LinkedArrayListTest {
public static void main(String[] args) {
measure(1000000);
}private static void linked(int num) {
Listlist = new LinkedList<>();
for (int i = 0; i < num; i++) { list.add("asd"); } } private static void array(int num) { Listlist = new ArrayList<>();
f
Spring Boot(Spring Web MVC + Tomcat)におけるSameSite Cookie
Spring Boot(Spring Web MVC + Tomcat)でSameSite Cookieを使うにはどのようにすればいいか、調べてみました。
## SameSite Cookieとはなにか
MDNのドキュメントを参照してください。
– https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies#SameSite_cookies_experimental_inline
## TomcatのSameSite Cookie対応
TomcatではCookieをHTTPレスポンスへ書き出すため`javax.servlet.http.Cookie`から文字列へのシリアライズを行います。
シリアライズは`org.apache.tomcat.util.http.CookieProcessor`インターフェースを通じて行われます。
実装クラスとして`org.apache.tomcat.util.http.Rfc6265CookieProcessor`が用意されていますが、この`Rfc6265CookieProcessor`クラスの
RやRStudioでJava (jdk)のバージョンが高すぎてh2oライブラリが使えなかったのを解決した話
#動機
久しぶりに書いたと思ったらまたPATHの話です。
Mac向け。Winの人はごめんね。
学校でR環境下でh2oという深層学習ライブラリを使えという課題が出た際に私だけjdkのバージョンが引っかかって課題が進まなかったのを解決した怒りの手記。#解決方法
#####R環境下で使うjdkのバージョンを下げる。以下、具体的手法。####今Javaは何がいくつ入ってんの?
Rコンソールではなくターミナルを起動し、
“`
/usr/libexec/java_home -V
“`
と打ち込んで調べよう。入っているJavaのバージョンが全て出てきます。こういう感じです。
####h2oライブラリが使えるjdkを持ってる?
h2oライブラリ
アルゴリズム 体操16
#Merge Sort
マージソートはソートアルゴリズムの中でもdivide&conquerを使った有名な一つですね。
再帰的に分割していき、再び併合(マージ)していくことで、並び替えを実現しようとする、ソートアルゴリズムです。
今回はそのマージソートを使って配列ではなく、Linked Listをソートしてみたいと思います。##例
![Screen Shot 2020-01-15 at 7.18.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/fd8ce790-da1f-52aa-e3f6-75b1649d4dae.png)##Solution
###Runtime Complexity O(n(log(n))
n 個のリストとをマージするには n に比例した時間がかかります。(merge)
また、n 個のデータを1個ずつになるまで2分割していくには log(n) 時間がかかります。(divide)
したがって、実行時間は O(n log(n)) となります。
###Memo
【備忘録】統合開発環境Eclipseでjavaプログラムを実行~gitを使ってみた
#【備忘録】統合開発環境Eclipseでjavaプログラムを実行~gitを使ってみた
初めて統合開発環境Eclipseをインストールし、「Hello world!」の出力までできたので、
そのコードをgithubにpushしてみた。今後Eclipseを使用していくにあたり、備忘録として残しておく。
1. github上にリモートリポジトリを作成
1. githubの画面右上部の「+(プラス)」ボタンを押下し、**New Repository**を選択
2. **Repository name**にリポジトリの名前を入力し、**Create repository**を押下2. 「新規Javaプロジェクト」の作成
1. メニューより[ファイル]→[新規]→[その他]を選択。ウィザードが出てきたら[Javaプロジェクト]を選択して次へをクリック。
2. 「関連付けられたパースペクティブを開きますか?」のウィンドウがでてきたら「はい」を選択。
3. 「新規Javaプロジェクト」ウィンドウが表示されるので、[プロジェクト名]欄に、任意のプロジェクト名をつけて「完了」ボタンを
Javaプログラマ(4年目)が今まで買った技術書の棚卸しとオススメ度
#初投稿です
前々から投稿したかったけど、怖くてできませんでした。慣らすためにとりあえず書こうと思いました。
#買った本の棚卸し
買った本の個人の棚卸し的目的も含むため、特定の用途でまとめての紹介ではございません。
ほぼ全て紙の本です。自分は技術書って電子書籍だと読みにくい
また完全に個人の感想です。あとなんか画像勝手に持ってくるのはいやだし、Amazonのリンク貼るのもいやだし、自分の撮った写真は汚いしで面倒になったので本の画像はなしでお送りします。
★=1点
☆=0.5点#1.リーダブルコード
**オススメ度:★★★**言わずと知れた超有名な本。
新人の頃に初めて先輩に勧められて、とりあえず買ってワケ分からなくて途方にくれた思い出深い逸品。もはや御守り的にカバンに入れて持ち歩くような存在。中身に関しては新人にはハードルが少し高く感じた。「このように書くと良いよ」を紹介してくれるのはすごく良いのだが、「もっとJavaとして書くときの書き方を教えてくれよ!」と当時は思っていた。
ただなんだかんだ書いてある内容は今も実践しているつもりだし、かなり良い本。
#2.ベター