2017/04/29

Spring Bootで日本語パラメータが文字化けする

日本語が文字化け

とても便利なSpring Boot。改修予算がなくてオワコンのstrutsを使い続けなければならないプロジェクトが続いていたので、ようやくまともな世界に移れた!と思ったら、まさかの文字化け問題 orz

デフォルトは化けない

Spring Bootの名誉のために言っておくと、普通の使い方であれば、まず化けないだろう。GETパラメータやPOSTデータに含まれる日本語の文字コードは、多くの場合、UTF-8であると言い切っていい時代だ。Spring Bootのdefaultも、UTF-8のデータをうまくdecodeするようになっている。

UTF-8じゃないパラメータを扱う

UTF-8ではないパラメータをUTF-8としてdecodeすると、当然おかしなことになって、文字化けしたデータになってしまう。

  • データを一旦バイナリに戻し
  • 改めて文字コードを指定してdecodeする
という手順を踏めば、正しいデータが得られる。
new String(brokenData.getBytes("iso-8859-1"), 正しい文字コード);
でOK。のはずだが、これ、最初のdecodeがiso-8859-1で行われることを想定している。だから、最初にUTF-8でdecodeされてしまった場合、これではうまくいかないのだ。

Spring BootでISO-8859-1でdecodeさせる

TomcatとJettyを選べるのだが、defaultのTomcatの場合。NetBeansでいうところのその他のソース/src/main/rexources/<デフォルト・パッケージ>/application.properties

server.tomcat.uri-encoding=ISO-8859-1
と書く。書かなかった場合のdefaultの文字コードは、最近はUTF-8。昔は違ったようなので、これを書かなくてもうまくいくかもしれないが、バージョンアップしたときのことを考えると、書いておくべきだろう。





2017/03/26

sql_modeは悪魔の設定

なぜそのSQL文がエラーにならないのか?

久しぶりにMySQLを使ったシステムのお仕事。INSERT文でnot null制約の付いたカラムが書かれていないのに、エラーにならずに実行されていて???となったが、これ、sql_modeに STRICT_ALL_TABLES も STRICT_TRANS_TABLES もセットされていないからだった。

STRICT_ALL_TABLES と STRICT_TRANS_TABLES

MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.7 サーバー SQL モードの「厳密な SQL モード」にSTRICT_ALL_TABLES と STRICT_TRANS_TABLES の説明がある。厳密モードが有効でない場合、MySQL は無効または欠落した値に対して調整された値を挿入し、警告を生成します とあり、not null制約のカラムに値がセットされない場合は「調整された値を挿入」して辻褄を合わせてくれる。まさに、「小さな親切大きなお世話」な仕様だ。

デフォルト設定はどうなっているのか?

5.6, 5.7ではSTRICT_TRANS_TABLESがセットされる。
5.5以前にはSTRICT_TRANS_TABLESはない

5.6になってまともになったようだ。

AWS RDS MySQL 5.6にはSTRICT_TRANS_TABLESはない

ちゃんと設定しましょう。

今の設定はどうなっている?

my.cnfを確認。なのだが、

  • MySQLのサーバはインフラチームが管理していて、ログインできない
  • RDS MySQLなのでmy.cnfを見れない
といったケースもある。何のことはない。mysqlなどクライアントプログラムから繋いで
SELECT @@GLOBAL.sql_mode;
とすればOK。

sql_modeを変更するときの影響範囲は?

sql_modeはmy.cnfで設定する。ので、Server全体に影響する。だが、session単位(接続単位)で変更することができる。

SET SESSION sql_mode='設定したいmode';
複数のmodeを設定する場合も
SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
とすればよい。
いちいち書くのが面倒?当然Connectionを管理するライブラリ使っているでしょうから、そのライブラリをよーく調べてみましょう。SpringFrameworkなら、AOPでさっくりと。



2017/02/25

リクルートカードの繰上返済をWebで申し込む

楽Payの上限は10万円

1.2%のポイントがたまるリクルートカード。いいのだが、支払いが楽Payというリボ払いになり、毎月の支払いが10万円までになってしまう。リボで翌月以降に支払いがまわってしまうと、せっかくの1.2%が台無しになってしまうので、繰上返済を絶対にしなければならない。

コールセンターに電話してオペレーターに繋いでもらって繰上返済の手続きを依頼…。面倒だし時間はかかるし、1.2%の価値が全部吹き飛んでしまう。もっとスマートに申し込めないものかと、ググってみた。

繰上返済の手続きはWebからもできる

あっさりヘルプが引っかかった。
ショッピングリボルビング払いの繰上返済(一部・全額)をしたいときはどうすればいいですか?
リクルートカードもこの(3)の手順でOK。端数が揃わないだろうけど、残高を上回るように増やす分の金額を設定すれば、調整してくれる。

ヘルプにはATMで払う方法も書かれているけど、限度額まで使ったのではなければ、繰上返済だけで十分かな。

ポイントはPontaに交換

リクルートカードでたまるのはリクルートポイント。これはPontaに等価交換できるので、Pontaがたまるカードと考えて問題ないだろう。ローソンで買い物をすることはあまりないのだが、色々な商品の取り扱いがあるポンパレモールで使えるので、無駄になることはない。

還元率で得したいならおすすめカードはこれ


2017/01/20

情報処理安全確保支援士の申請書類

情報処理安全確保支援士の申請

情報処理安全確保支援士の最初の登録の申請期限が迫っている。1/31までに申請したものは4/1に登録、7/31までに申請したものは10/1に登録されるのだ。
試験は今年からなので、今は経過処置対象者(情報セキュリティスペシャリスト試験orテクニカルエンジニア(情報セキュリティ)試験合格者)からの申請だ。

「登記されていないことの証明書」を入手する

申請の書類の中で一番手間取りそうなものが、これ。東京の場合、東京法務局 取扱事務一覧表(供託、成年後見登記、国籍、人権):東京法務局をみても取り扱っている場所が少ない。
先日、後見登録課に行ったのだが、結構混んでいたので、申請書類は事前に記入して収入印紙も貼っておくのがよさそう。法務省:登記されていないことの証明申請(後見登記等ファイル用)から、申請書類と記入例を入手できる。記入例には住所と国籍の両方が記入されているが、証明書の提出先から指示がない場合、どちらかでよい。

登録申請書の勤務先欄

登録申請書に勤務先欄がある。現在無職なのでどうすればよいか問い合わせたところ、任意入力欄なので空欄のままでよいとのこと。 必須項目か任意項目か、どこかに記載されているのかな?

メリットはあるのか?

手間と費用がかかるのだが、申請するメリットはあるのだろうか?会社であれば技術力のアピールとして使うのだろうが、申請者個人のメリットは何?ニーズがあれば転職時のアピールポイントになるかもしれないけど。



2017/01/18

ガラケーのnanacoモバイルはnanacoカードとして利用する

nanacoカードで代用する?

古いお財布ケータイのnanacoモバイルは使えないので、nanacoカードを入手する必要があるかと思ったのだが、アプリを使わなくとも、カードとしては使えるようだ。iアプリが起動しない状態でも、nanacoでの支払いはできていた。

iアプリで使っていた機能は

残高確認、クレジットカードからのチャージの機能を使っていた。が、nanacoカードではこれらの機能はない。電子マネー nanaco 【公式サイト】 で行うか、店舗、ATMで残高確認、現金からチャージを行う。

これらの操作はガラケーのnanacoモバイルでもできる。ということは、アプリが動かなくなったnanacoモバイルであっても、nanacoカードと同じ程度には使えるということだ。

公式サイトとATMでチャージする

アプリが使えないので直接チャージすることはできないが、公式サイトとATM・店舗を使ってチャージできる。nanacoモバイルで10万円まで簡単にチャージする方法 | nanaco*nanacoにもあるが

  • 公式サイトで「クレジットカードからチャージ」を行い、センターお預かり分として入金する。
  • ATMや店舗で残高確認を行い、センターお預かり分からチャージを行う。
とすればよい。足りなくなったらその場でチャージするという、モバイルの手軽さが失われてしまう。10万円分をnanacoで払おうと、直接5万円チャージして、センターお預かり分としても5万円入金する、という場合も、一度ATM・店舗で残高確認する手間が生じる。が、後者はnanacoカードの場合の手順であり、つまり、nanacoカードと同等ということである。

nanacoモバイル払いはできない

nanacoカードでできないことはできない。ガラケーのアプリがあれば、カードリーダーがなくてもnanacoモバイル払いを行えるのだが、アプリが動かないので払えない。ここは、無理せず素直にクレカ払いとする。

こういう状況であれば、nanacoカードを入手しなくてもなんとかなりそうだ。



2017/01/09

キーボードを掃除する

かなり汚れるキーボード

汚れたキーボード

使っているとかなり汚れるキーボード。思い切って掃除することにした。

分解せずに掃除する

ウェットティッシュで拭く、エアーダスターで吹き飛ばすといった、比較的手軽な方法がある。表面についたホコリや汚れは取れるのだが、キー(キートップ)とキー(キートップ)の間に溜まったものは難しい。キーボードの掃除方法|分解や水洗いしなくても綺麗にする方法いろいろによると、サイバークリーン PCP-135 ブルーがいいらしい。スライムみたいにぐにゃぐにゃなので、キーの間の隙間まで入り込んでホコリを取るようだ。

分解して掃除する

キーのすきまからコーヒーやカップ麺の汁が入ってしまった場合、あるいは、サボっていて汚れがこびりついてしまった場合、分解掃除を検討しても良い。ただ、キーボードの構造は何種類かあるので、事前に検索して同じように分解掃除した例を探しておくべきだろう。人柱となることは止めないが、いずれにしろ、分解するので自己責任で。始める前に予備のキーボードを用意しておいた方がよいかと。

HHK Liteを掃除する

今回分解掃除したのは、HHK Lite。Happy Hacking Keyboard Lite2 ではない。幸いなことに、キーボードを清潔に。HHKを分解掃除してみた。というページや動画も見つかった。

というわけで、さっそくキートップを外す。外す器具はないので、精密ドライバーで代用。外したキーはバケツに入れて、中性洗剤を少し入れたお湯に浸けておく。左のShiftキー、スペースキー、returnキーには金具がついていたので、バケツに入れずにウェットティッシュで綺麗に拭いておく。 

キートップを外すと、こんな感じ。
ウェットティッシュで拭いて、細かいところは水で薄めた中性洗剤を染み込ませた綿棒で汚れをこすりとる。

キートップは、30分くらいしたら一通りかき混ぜて汚れを落としたのち、お湯を交換してゆすぐ。その後、取り出すのだが、まだ汚れているようであれば、ウェットティッシュでふき取る。その後はじっくり乾かす。細長い部分があって乾きにくいので、ドライヤーで乾かしたり、一晩おいたりして、とにかく確実に乾かす。乾いた綿棒で1つずつ水分を拭き取っていくのは、数が多いからよっぽどのことがない限りはやめておいた方がよいだろう。

乾いたら、キートップを1つずつはめて、元の状態に戻す。記号の位置とか、覚えているようで結構覚えていないので、配置のわかる画像を見ながら戻す。必ず、キートップが乾いていることを確かめてからはめること。水分が残っていると、故障する可能性があるので慎重に。



2017/01/03

2017年年賀状

今年もよろしくお願いします。



白い封筒を探す

転職することにした

いろいろあって、転職することにした。働きながら情報収集するのは難しいため、転職エージェントの力を借りることにし、準備を進める。

白い封筒がない

採用面接では、履歴書や職務経歴書を持っていくことがほとんどだ。クリアファイルに入れ、白い無地の封筒にしまうのだが、問題はこの白い封筒。コンビニではなかなか売っていないのだ。文房具専門店に行ってもなかなかない。新宿西口のヨドバシカメラの文具コーナーでなんとか見つけたのだが、入手が難しい一品のようだ。

早めに通販で入手を

こういったものは応募先の企業に関係なく必要になるので、早めに通販で手配しておくのがよい。面接直前に、こういった形式的なものの入手で気をもむのは得策ではない。




2016/12/23

SourceTreeをアンインストールする

高機能Gitクライアント

SourceTree - Windows と Mac 対応 Git & Mercurial 無料クライアントGitのクライアントソフトはいろいろあるけど、これとコマンドラインで十分だろうと思っている。だから、アンインストールすることはないだろうと思っていたのだが、消す日が突然訪れた。

普通に消せない?

Windows7 64bitな環境でアンインストールしようと、コントロールパネルの「プログラムと機能」を開いてみた。あれ?SourceTreeがいくつもある。適当に選んで「アンインストール」してみたけど、エラーが表示される。インストール先のフォルダを見ると、ファイルが丸々残っていて、アンインストールできなかった模様。
プログラムと機能の画面に「SourceTree」がいくつもリストされるという時点で、怪しさ満点。

アンインストールする方法

ググってSourceTree version 1.6.12 by Atlassian - How to uninstall itというページを発見。若干バージョンが違うが C:\ProgramData\Caphyon\Advanced Installer\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} にある SourceTreeSetup_xxxx.exe をコマンドプロンプトから実行する とうまくいくらしい。

一度「プログラムと機能」の画面からアンインストールしようとすると、失敗した状態のままになってしまうので、最初にWindowsを再起動しておく。
次に、Windows Explorerで上記フォルダを開き、Shiftキーを押しながら何もないところを右クリック→コマンドウィンドウをここで開く を選択して、コマンドプロンプトを開く。
コマンドプロンプトに

SourceTreeSetup_1.9.10.0.exe /uninstall {xxxxxxxx-xxxx-xx}
と入力する。{xxxxxxx-xxxx-xx}の部分は、フォルダ名と同じ。{や}も入力する必要がある。

これでファイルが削除される。上記ページにあるように、いくつかのファイルは残ってしまうので、気になるようであれば手動で消す。レジストリは、まぁ、消しておいたほうが再インストール時のトラブルを防げそうな気がするけど、無理してやる必要はないかな?
「プログラムと機能」のリストには残っているけど、選んで「アンインストール」すると、「リストから消す?」と確認ダイアログが表示されるので、OKを選んで消せばOK。



2016/11/23

パソコンの大掃除

パソコンも大掃除が必要

大掃除の季節。パソコンも大掃除が必要だ。大掃除(クリーニング)と言っても、不要なファイルを消して回るのではなく、ほこりをはらう掃除。最近のパソコンは、埃が溜まって通気が悪くなり温度が上がってくると、スピードを落として発熱を抑えるような動きをする。あるいは、どんどん排熱しようとファンの回転数を上げて、うるさくなることもある。だから、キーボードの掃除だけではなく、本体の蓋を開けてほこりをはらうという大掃除が必要なのだ。

メーカーによっては、蓋を開けることによって保証が効かなくなることもあるので、以下、自己責任で。

エアダスターでほこりを払う

パソコンは精密機械だ。静電気に弱い。だから、直接手でつかんでほこりを取るのではなく、エアダスターというスプレー缶で空気を吹き付けて払う。埃が舞うので、場合によってはマスクが必要かもしれない。

掃除する

事前に再起動の確認をする

掃除の前に動作確認。パソコンをシャットダウンして、1,2分たってからスイッチを入れる。掃除の前に確認しておかないと、動かなくなったとき、掃除が原因かどうか判断できなくなる。ここで動かないようであれば、掃除するだけ無駄。新しいパソコンを買ってこよう。

ケースを開ける

まずはケースを開ける。縦型のパソコンの場合、前面から見て左側のパネルが開けられるようになっている。開け方はケースによって異なるので、説明書を確認してほしい。開けると、右側が前面となる。左の上側に電源がある。

空気を吹き付けてほこりを払う

パソコンは精密機械である。だから直接内部に触れることは避ける。エアダスターという空気が出てくるスプレーを使って、溜まっているほこりを吹き飛ばす。電源ファンやCPUファンにも埃が溜まっているので、綺麗に吹き飛ばす。

掃除機で吸い取る

ケースの外側に面している部分は、エアダスターの他に、掃除機で吸い取るという手も使える。

タバコを吸う人は副流煙を吸い込んでヤニでベトベト、スライムみたいになっているかもしれないので、ウェットティッシュでふき取る必要があるかもしれない。

とにかく、せっかくケースを開けたのだから、目に付いたほこりは吹き飛ばしてしまう。ケースの外側の汚れは、ふき取ってしまう。

ケースを閉めて元通りにする

一通り掃除が終わったら、ケースを閉めてキーボードやディスプレイなど、元通りに繋げてからスイッチを入れる。パソコンが動かないようであれば、ケーブル類が緩んでいないか確認する。ケースを開けたとき、ケーブルをひっかけたり手で触ったり水滴を落としたりといったことがなければ、壊れることはまずないだろう。

ノートPCやMacはメーカーに持ち込む

ノートPCやMac、MacBookなどは、パズルのように組み立てられているので、素人には手を出せない。そういったものの場合は、蓋は開けず、外側から掃除機で吸ってみたり隙間からエアダスターで風を送ったりする程度にとどめておく。Apple製品であれば、ジーニアスバーに持ち込んで掃除してもらうというのも手。



2016/11/21

ガラケーではモバイルEdyの決済サイトを開けない

Amazonの支払いがガラケーでできない

Amazonの支払いをモバイルEdyで行おうとした。
ガラケーに支払いのメールが来たので、リンクをクリックして決済サイトを開こうとしたところ、SSLが切断されたというメッセージが表示されてサイトに遷移しない。

そういえば、 nanacoモバイルが使えなくなった時、SSLの証明書が関係していたことを思い出し、ググってみたところ、 電子マネー「楽天Edy(エディ)」 | 重要なお知らせ | 一部の携帯電話での、モバイルEdy支払いサービスの提供終了についてというページがヒット。支払いサービスが終了になっていた。

Edyにチャージはできるからnanacoよりマシ

使えなくなるのはモバイルEdyでの支払い。チャージや店舗での支払いは可能なので、モバイルnanacoよりは遥かにまし。まだ使える。ただ、携帯電話が古くて本体更新がもう行われないので、代わりの手段を考えておいた方がよさそうだ。



2016/11/12

Electronの開発環境をDocker上に作ってエラーに対処する

JavaScriptが人気

JavaScriptが人気だ。人気なのか、他に選択肢がないから使われているのか、よくわからないけど。
ブラウザの中だけかと思っていたら、デスクトップアプリケーションもガンガン作られている。Electron - Build cross platform desktop apps with JavaScript, HTML, and CSS.なんてものがあり、 Visual Studio Codeはこのプラットフォーム上で作られているとのこと。

Docker上でElectronを試してみる

そこまで流行っているのであれば、チュートリアルくらいやってみて雰囲気をつかんでおこう。ということで、今更ながらやってみた。題材はこれ、Electronでアプリケーションを作ってみよう - Qiita

こういうお試しに便利なDocker環境。Dockerfileはこんな感じ。 起動スクリプトはこれ。 コンテナを起動したら、sshでリモートログインして、X Windowの転送機能を使って画面を表示させる。エディタはVisual Studio Code。

libudevのエラーに対処する

この環境で写経してみたところ、Electronアプリを作って実行させる際に

libudev: udev_has_devtmpfs: name_to_handle_at on /dev: Operation not permitted
のエラーが出る。調べてみてたどり着いたページがこれ、athenapdf/quick-start.md at master · arachnys/athenapdf。Docker v1.10.0から、docker runする時に --security-opt seccomp:unconfined を付ける必要があるとのこと。このオプションをつけて起動するようにして、解決。



2016/10/22

無料ドメインのサービスで新たにドメインを取得した

無料ドメインを取得

ネットを見ていたら、無料のドメインを取得する(2016年10月) - Qiitaという記事を見つけた。Freenom - 誰でも利用できる名前というサービスがあるのだそうだ。

そういうわけで、なんとなくyoyogi.gaというドメインを取って、借りているサーバにWordPressを入れて、ブログサイトを作った。無料ドメインを使ったし、すでに借りていたサーバを使ったし、DNSやメールの設定もすでに使っているサーバに自分で設定したから、追加費用は0、無料。

実際に取ってみてわかったのだが、すべてのドメインが無料というわけではない。みんなが知っていそうな単語のドメインだと、有料の場合が多いようだ。

無料ドメインでよいのか?

個人のブログサイトなので無料ドメインのサービスを使ったが、会社のサイトとかブランドのサイトとかに使うのであれば、お金を払ってjpやcomのドメインを使った方が良いだろう。.gaとか.tkとか、見慣れない(と言ってしまうと語弊がありそうだが)ドメインのサイトが、どの程度信用されるのか?.comや.netでも怪しいサイトはいくらでもあるが、これは、サイトにアクセスしに来る人がどう感じるかという問題だ。変なところでケチって信用を落とすことはないだろう。

それは無料ドメインではなくサブドメインという

そもそも、「無料ドメインとは」という問題になってしまうのだが。ブログサービスをやっているところが無料で「サブドメイン」を提供しているので、それを使うことを「無料ドメインを使う」と言っているサイトが多い。ま、アクセスするときの完全修飾ドメイン名(FQDN)を無料で手に入れられるので、嘘ではないのだろうけど、紛らわしい。



2016/10/15

IIJmioのSIMカード変更にかかった日数

iPhoneにするならnanoSIMにしないと

ZenFone Selfieがとろく、ポケモンGOで認証している途中でエラーになってしまう。バッテリーがへばっているNexus5でやってみるとログインできるので、性能不足だろう。あるいは、プレインストールされているソフトが悪さをしているのかもしれない。
いずれにせよ、使えない子決定でiPhoneに乗り換えることにした。高いけど、ストレス発散のためのゲームをやろうとしてイライラするくらいなら、とても早い自分へのクリスマスプレゼントということでいいだろう。

Nexus5はmicroSIM、ZenFone SelfieはmicroSIMかnanoSIM、iPhoneはnanoSIM。ということで、サイズ変更をしなければならない状況になった。

変更申し込み(0日目)

SIMのサイズ変更をすることを決心して、IIJmioのサイトで変更手続きを21時前に行う。手続き受付のメールが21時前に届いた。

今まで使っていたSIMで通信できなくなる(1日目)

会社に到着する寸前に通信できなくなった。だいたい9時50分頃だろう。社外での打ち合わせや作業の予定はない日だったので、大した問題にはならず。so-netの0SIMをいれたMADOSMAが帰り道のお供を務めた。

SIM到着(2日目)

申し込み完了と発送の案内メールが8時半過ぎに到着。クロネコさんが10時過ぎに持ってきたようだが、運悪く受け取れず再配達依頼。結局受け取れたのは16時頃で、半日無駄にした。

パッケージが小洒落たものに変わっている。SIM自身は相変わらずあの名刺みたいなカードにくっついているのだが。


最初に申し込んだパッケージと、ZenFone Selfieに同梱されていたものがあったので、並べてみた。特に意味はない。

キャンペーン実施中

サイズ変更のキャンペーンはやっていなかったので割引はなかったのだが、SIMを追加しても手数料は変わらなかったのかな?ただ、月々の料金が少し上がってしまうので、迷うところかも。

2017/3/31までは紹介キャンペーンをやっているので、ここから申し込むと2ヶ月間データ量が10%分多く使えるようになる。ずば抜けて安いというわけではないけど、安いから繋がらない/遅いっていう格安SIMは使い物にならないので、ちょうどいいところではないかと。他の格安SIM業者にも卸しているくらいだし。