Spring MVC 苦戦中
自分用に Heroku + Spring boot のサンプルをちょこっといじるだけの簡単アプリを作っている。
Herokuへのデプロイは噂通り非常に簡単。問題はSpring!!
Javaが久しぶりなのに加え、最近はFrontは独立させてAPIで対話する形のアプリしか作ってなかったからMVCやりにくい。 あとSpringもまともにやってなかったからアノテーション覚えるの大変。
試した感想として、今プログラミング始めるって人がJavaを選ぶ理由がないよなー特にWebアプリだと。Frontと違いすぎるしFrontの言語はJavaScript/TypeScriptでほぼ確定だからその流れでBackってなるとNode.jsだよね。Expressとか超絶作りにくいけど。Enterprizeはまた事情が違うだろうけどさー。
Java+Springは学習コスト高すぎ。ドキュメントが詳しいけど難しい(最初の一歩の次がない)のも問題だね。
よく忘れる書き方メモ
文字列の連結
リストの値をログに適当に出したいとき用
collection.stream() .map( Object::toString ) // ここで書式を整えて .collect( Collectors.joining( "," ) ); // この書き方忘れがち
FormでリストPostする
Modelは普通に List
th:field="*{books[__${itemStat.index}__].title}"
携帯を換えた
XperiaからXperiaに変えたぞ!!(4年ぶり3回目)
スマホ使い始めてから今までずっとauでXperiaのフラグシップモデル(無駄にw)を使い続けてて、mineoに変えて以降買い換え先のないまま時間が経ってしまい、今のXperiaさんが割と息も絶え絶え(ってほどではないのはすごいけど非対応のゲームとかある)なので困ってたら、なんとXperiaのSIMフリー版が! GlobalモデルじゃなくてちゃんとFelica付き!!! ありがとうSONY!!
というわけで Xperia 1 II を買いました。XZからの乗り換え。
Androidの初期設定は買い換えごとに便利になってると感じる。今回は古いAndroidと通信してアカウント設定などなど丸ごと持ってきてくれた。 必要なのはアプリ入れ直すのと各アプリにログイン&Felicaの移行くらいかな。アプリは前回は勝手にインストールしてくれるてたような気がするけど気のせいだったかセキュリティ的にやめたのか謎。個人的には断捨離のタイミングなので自動インストールじゃなくても特に問題なし。
不満
新しいものは慣れるまで不満だらけになるよね。ってことでメモ。ちなみにまだHomeアプリと設定系しか触ってないw Homeアプリがとにかくものすごく使いにくい。直感的とは正反対。
- Homeアプリにドロワーボタンがなくなった
- 前はスワイプで出すかドロワーボタンか選べたようなんだがそのオプションがなくなってる? スワイプ嫌い。
- アプリの履歴がiPhoneぽくなってて左にスライドが必要になった
- 1つ前のアプリに切り替えるのは元々アプリの切り替えボタンダブルタップでできてたんだから複数表示されないと意味ないだろ…
- しかも全部閉じるが一番古いのまでスワイプしないと出なくなった
- いっぱい開いてるから全部閉じたい訳でして・・・
期待
今までのXperiaになかった機能で使えそうなの。
- サイドセンスは昔似たようなアプリを入れてた。Androidのオーバーレイの制限で使い物にならなくなったからメーカー側でやってくれるのありがたい
- いまいちうまく開けないのは操作慣れたら改善するかな? 私のオペレーションの問題だと思う
- 傾けると起動する
- 個人的には手に持つだけで画面起動するのはウザいけど時間見るためだけに電源押す必要ないのは良いかも
次回のためのメモ
- 表示言語を英語にしてしまうと日本語の表示が中国語っぽくなってしまうので、第二言語として日本語を設定するのを忘れないように。
はてなブログにログインできない
はてなブログ を開いても非ログイン状態のメニューになるからログインをクリック したら「はてなIDまたはパスワードが違います」(※認証済みページからのリンクなのでIDもパスワードも入力していない)と表示されて困った話。
解決策
原因はサードパーティーCookieなので有効にしよう。 ChromeならURLの隣の鍵アイコンから Cookies を開いて許可できるよ! *.hatena.ne.jp を許可しろって書いてあった! 残念ながら直らなかったけど!
Cookie許可したくない人は ダッシュボード https://blog.hatena.ne.jp/から投稿できるよ!
セキュリティ難しい
今更ドメインは変えられないという事情はわかるけどセキュリティ設定を甘くしろというのはなんだかなぁ。 とはいえ認証方式変えるのもまた相当な手間だしなー
エラーメッセージ
せめてエラーメッセージがもうちょいまともだったらね。 Cookieが有効かどうかを検知できない(ブログにはメッセージ出せてるから検知できると思うけど)「IDまたはパスワードが違う」わけじゃないので。
メモ帳ではじめてのC#
諸事情によりIDEを使わずに簡単にC#を試したい。
使ったのはメモ帳じゃないけどテキストエディタなので許してほしい。
使うもの
前提環境
- Windows 7 SP1
- .NET Framework 4.5 Runtime (最初から入ってるのかも)
ソースコード
// Hello1.cs public class Hello1 { public static void Main() { System.Console.WriteLine("Hello, World!"); } }
コンパイル
Windowsにコンパイラが付属している(?)そうなのでそれを利用します!
参考:Visual Studioではなく、Windows付属のcsc.exe だけでC#実行ファイルを作る - Qiita
>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe Hello.cs
Hello.csと同じフォルダにHello.exeが作られました。早速実行。
実行
>Hello.exe
結果
Hello, World!
やったね!
MacにVagrantを使って仮想環境を作る
まだ何も理解してないけどAWSのアカウントを取ったので使おうと話したらまずはローカルでLinux系の動きに慣れてみたらと言われて紹介されたので入れてみます。単語だけ聞いたので何を入れているのかは多分正しく理解してない!
手順
Mac 上で Vagrant を使って CentOS + Apache をセットアップ - Qiita こちらのサイト様に従って頑張ります!
- Vagrantを https://www.vagrantup.com/ からダウンロードしてインストールする。
- Vagrant Version確認
- Virtual Boxを https://www.virtualbox.org/ からダウンロードしてインストールする。
- 作業フォルダを作成する。
$ mkdir CentOS66
- 作成したディレクトリに移動しOSのBoxをダウンロードする(ちょっと重い)。
$ vagrant box add CentOS66 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box
- 初期設定(Vagrant fileの作成)する。
$ vagrant init CentOS66
- 作成されたVagrantfileを編集する(コメントアウトされている部分)。SSHでログインするために必要だそう。
config.vm.network "private_network", ip: "192.168.33.10"
- 仮想環境を起動する。
$ vagrant up
- SSHでログインしてみる。
ログインできた! とりあえず何もせずにexitで出て行きました笑
(追記)
参考サイト様の手順を最後までやろうと奮闘していたところ、以下のエラーが発生。
default: httpd: Could not open configuration file /etc/httpd/conf/httpd.conf: Permission denied
調べてみるとSELinuxが親切にもファイルアクセスを制御しているということで(恥ずかしながら存在すら知らなかった)一時停止にしてみる。
vagrant$ setenforce 0 setenforce: setenforce() failed
ダメなようだ。もう少し調べてみるとこちらのサイトSELinux の動作状況を確認や設定するを発見。
vagrant$ sudo setenforce 0
こっちは通った。
もう一度Provisionして開くとindex.htmlが開きました。やったね!
$ vagrant provision
$ open http://192.168.33.10
Java EE 7 入門のエラーを解消する2
とりあえずMacもNetBeansも使いにくいということを覚えた。
例のJava EE 7 入門 〜 NetBeansで始めるJavaEE7 First Tutorial #javaee7 #jjug #jav…チュートリアルを進めている。
※Createで5件以上登録できない件、>MAXじゃなくて>=MAXにしないとダメだった。メモ。
さてp.154でまたエラー。
こちらのサイトさんで引数なしのコンストラクタがないからだよと書かれていたので修正。
GlassFish: Java EE 7 入門ではまったこと - from The Edge of the (Java) World
元のコードをできるだけ変えないようにするためにこうしてみたら、ちゃんと404が返るようになったけどメッセージが返らなかった。
うーんよく分からない…
とりあえず上記サイトさんのコードの通り@Deprecated外してフィールドのfinal外してsetter作ったらメッセージもちゃんと返るようになりました!
public class ErrorModel { private final List<String> errorMessages; // 非推奨で引数なしコンストラクタを作る @Deprecated public ErrorModel() { this.errorMessages = null; } public ErrorModel(List<String> errorMessages) { this.errorMessages = errorMessages; } public List<String> getErrorMessages() { return errorMessages; } }
それからp.197でjavax.enterprise.event.Eventが見つからなくてしばらく詰まったけど、これは単純にJavaEEのライブラリが入ってなかっただけだった。
Projectのプロパティからライブラリ追加で参照できるようになりました。
そして無事チュートリアルは完了。
まだまだ理解は追いついていないけど少しずつ覚えていこうと思います。
簡単に手を動かすための資料を作成いただいた作者様に感謝を。
JavaEE 7 入門の最初のエラーを解消する
問題
p.70でどうしてもエラーになるので試行錯誤してみた。
無事解消したのでメモ。
エラー内容
Unit testをするとエラーがでてしまうのです。
Invalid resource : jdbc/tutorial__pm
無視しても大丈夫な記事も見つかるけどせっかくなので頑張ってみる。
ヒント
この辺を見ると、JDBC resourceが無いんだよって言われてる気がする。
Java, JPA, Glassfish, Invalid resource : jdbc/__default__pm - Stack Overflow
手順
再テスト
テスト通過!!