聞こえないJavaエンジニアが適当に書き連ねていく

つらつらとメモしたり日頃の溜まっている想いを吐き出す場所です。

今日学んだことの覚書

TeraTermマクロでウィンドウサイズを変える

dispstr #$1b"[8;42;130t"

42と130は任意の数字にする。

srad.jp

DB2をインストール後、5005エラーが出る時の対処法

db2systray -clean

このコマンドを打てばいいのだけど、OSによってはそれでも5005エラーが出る。 その時は、コマンドプロンプト管理者権限で開いて実行すればよい。

www-01.ibm.com

Linuxコマンドメモ<find+grepの組み合わせ>

コマンド

find ./* -newermt '20170803 08:00' | xargs grep 検索ワード

これで2017/8/3の8時以降に更新されたファイルの中から、検索ワードが存在するファイルのみを抽出できる。

参考

findで具体的な日付、時間で検索するnewerXYオプション - システム開発メモ

d.hatena.ne.jp

rfs.jp

Eclipse Oxygenをダウンロードしたい

eclipse.org トップページのDONLOWADを踏むとインストーラがダウンロードされてしまう。

そんなんじゃなくて、従来の色々なバージョンのeclipseが選択できる画面からダウンロードしたいんだ!
そんな人向け。

eclipse.org

遷移方法は トップページを開く
 ↓
「GETTEING STARTED」 をクリック
 ↓
「DONLOWAD ECLIPSE IDE」 のボタンをクリック
 ↓
薄く出ている、「Download Packages」のリンクをクリック
 ↓
慣れ親しんだページに遷移できる。

"10年の長きに渡り Java の可変長引数を過信していた話"を読んで確認した

etc9.hatenablog.com

恥ずかしながら、自分も過信していたのでこのブログを読んで確認してみた。

public class 可変長引数テスト {
    
    public static void main(String... args) {

        new 可変長引数テスト().method();
        new 可変長引数テスト().method("hello");
        new 可変長引数テスト().method("hello", "world");

        String str = "hello";
        new 可変長引数テスト().method(str);

        str = null;
        new 可変長引数テスト().method(str);

        new 可変長引数テスト().method(null);

        new 可変長引数テスト().method((String) null);

        new 可変長引数テスト().method((String[]) null);

    }

    public void method(String... args) {

        System.out.println("*-*-*-*-*-");

        try {
            for (String string : args) {
                System.out.println(string);
            }
        } catch (NullPointerException e) {
            e.printStackTrace();
        }

    }
}

eclipseだと、

new 可変長引数テスト().method(null);

この行で以下のような警告文が表示される。(java1.7だと以下の文章)

タイプ null の引数は、タイプ 可変長引数テスト からの可変引数メソッド method(String…) の呼び出しに対しては String へ明示的にキャストする必要があります。あるいは、可変引数呼び出しに対しては String へキャストすることもできます

  1. コンパイラがこのような警告を吐く記述はちょっと疑うようにした方がいい。
  2. わかりました、ということでStringに明示的にキャストしても、元の記事にあるようにぬるぽで落ちる。
    nullを明示的に渡したいときはStringにキャストしないといけない。

普段意識したことが無かったので、勉強になった。

数年後の自分がこのブログにたどり着くことが無いといいな。

鹿児島から北海道まで全部の新幹線に乗って移動できるのか

調べてみた。

※参考 新幹線路線図 | nippon.com

鹿児島中央駅
↓ 九州新幹線
博多駅
↓ 山陽新幹線
新大阪駅
↓ 東海道新幹線
名古屋駅
↓ JR特急しらさぎ
金沢駅
↓ 北陸新幹線
高崎駅
↓ 上越新幹線
大宮駅
↓ 東北新幹線
福島駅
↓ 山形新幹線
新庄駅
↓ JR奥羽本線
秋田駅
↓ 秋田新幹線
盛岡駅
↓ 東北新幹線(再)
新青森駅
↓ 北海道新幹線
新函館北斗駅

移動の都合上、名古屋駅から金沢駅と、新庄駅から秋田駅までは新幹線以外のルートになるけど、それ以外は新幹線で頑張れる。

Bic simに乗り換えました

SoftbankVodafoneの時から使っていたのですが、2017年GW中に別れを告げて、Bic simに乗り換えました。

理由はシンプルで、通信費の削減が目的です。

夫婦でiPhoneなので、試算だと一ヶ月につき1万円弱の削減が出来るはず…。しばらく、解約手数料やらなんやらで支払いは増えそうですが、7月以降を楽しみにしたいと思います。

 

我が家は夫が聞こえなくて、妻が聞こえるという家族であることを念頭において、乗り換え時の手順を記録しておきます。

なお、電話番号はそのまま乗り換えたかったのでMNPしました。

契約名義は夫の名義です。

 

Softbankから予約番号を貰う その1

最初は妻に電話して貰い、予約番号を受け取ろうとしましたが、本人確認が出来ない云々で少々揉めてしまいました。

妻が強く言った結果、拙い発音で名乗ることで本人確認が出来た、ということになりましたが、音声だと成りすましが容易ですよね。この辺り、おかしな話だなと思います。

何とか本人確認が出来て、その後のやり取りは妻にやってもらったのですが、契約内容が認識していたのと違ったので電話での予約番号発行はやめて店頭に行くことになりました。

教訓:聞こえない人が名義人の時は素直にお店に足を運んだ方が早い。

 

Softbankから予約番号を貰う その②

というわけで、お店に足を運んで予約番号が欲しい旨伝えます。多少引き止めはありますが、もう決めたんだ!という強い意志を見せればよろしいかと。

店頭だと、契約内容についても詳しく確認出来るので安心です。

店頭では特に聞こえないから困ることもなく、筆談でのやり取りでスムーズに進みました。

 

Bic simに申し込む

ビックカメラ店頭でも、インターネットからでも申し込みが出来るので、どちらのやり方でもよろしいかと。

私は店員さんに質問したい事項も無かったのでインターネットから申し込みしましたが、質問がある時は店頭での方がいいでしょうね。

インターネットで申し込んだら、翌々日にはSIMカートが届きました。

 

④携帯にSIMカードを刺して開通手続き

ここでまた、聞こえないと困る出来事があります。開通させるには指定された電話番号に電話しないといけませんでした。

今回も妻に頼りまして、対応してもらったんですが、自動応答のようなので、トリガーとなる音さえ拾えれば、聞こえない人でも自分で出来るのかも…?

店頭でやる時は別料金らしいのですが、聞こえない人を対象にした、何かサービスがあるといいかもなぁと思いました。

教訓:聞こえない家族だとちょっと厳しいかもしれない。聞こえる知人の助けが必要。

 

⑤その後

メールアドレスの変更は新アドレスから一括で送信しました。アドレス漏洩がないように、送信対象の人は全員BCCで指定しました。

新アドレスは@icloud.comを使っています。

インターネットの速度は現状、不満もありません。YouTubewifi環境でしか見ませんし。

 

⑥まとめ

私自身は慎重に下調べして、メリットとデメリットを確認した上で乗り換えました。

ニュースで格安スマホのトラブルが増えているとも言っていましたので、乗り換える際はじっくり下調べしましょう。

特に、店頭での相談がやりにくくなるので聞こえない人にとってはそこがデメリットになるかと思います。

周りに知識を持つ人がいるから平気平気、という思考を持つ人もいるかと思いますが、その知人は無償で手助けしてくれているだけです。

何かの拍子にトラブルになった時人間関係も含めて困るよ、というのも忘れないようにしたいものです。

 

 

 

"Date and Time API をJDBCで扱ってみる"を読んでDB2を確認した

を読んで、昔DB2で仕事していた身として、DB2の状況が気になったので検証してみた。

環境など

ソース

package example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.time.LocalDate;

public class localDate {

    public static void main(String[] args) {
        String url = "jdbc:db2://localhost:50000/SAMPLE";
        String user = "xxxx";
        String pass = "xxxx";

        try {
            Class.forName("com.ibm.db2.jcc.DB2Driver");

            Connection con = DriverManager.getConnection(url, user, pass);
    
            PreparedStatement ps = null;

            ps = con.prepareStatement("update sample set ts = ? where id = 'hoge'");
            ps.setObject(1, LocalDate.of(2016, 4, 29));
    
            ps.executeUpdate();

            con.close();

            System.out.println("接続成功");
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

}

結果

LocalDateの時点で未対応…?

com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][1091][10824][4.22.29] データ変換が無効です: 要求された変換のパラメーター・インスタンス 2016-04-29 が無効です。 ERRORCODE=-4461, SQLSTATE=42815
    at com.ibm.db2.jcc.am.ld.a(ld.java:810)
    at com.ibm.db2.jcc.am.ld.a(ld.java:66)
    at com.ibm.db2.jcc.am.ld.a(ld.java:116)
    at com.ibm.db2.jcc.am.vp.c(vp.java:2677)
    at com.ibm.db2.jcc.am.vp.setObject(vp.java:2456)
    at example.localDate.main(localDate.java:26)

まとめ

悲しい結論になってしまったのでIBMさんにはぜひとも早めに対応していただきたい。