Excelで偶数行(奇数行)の合計を求める

意外とわからなかったので備忘録として記述。

探してみたところ以下のサイトが参考になった。

enterprisezine.jp

まず、SUMPRODUCT()なる関数がよくわからないのだが、"*"は論理積らしい。 で、上記サイトだとROW()で行数を求めて、その値をMOD()使って2で割った余りが0であれば偶数、1であれば奇数としてその論理値がTRUEのもののみを採用して加算する。

別の方法としてはMOD()じゃなくダイレクトにISEVEN(), ISODD()でもいける。

f:id:kazuokohchi:20171208205750p:plain

この画像内の計算式は以下。

=SUMPRODUCT((MOD(ROW(B2:B9),2)=0)*B2:B9)
=SUMPRODUCT((MOD(ROW(B2:B9),2)=1)*B2:B9)
=SUMPRODUCT(ISEVEN(ROW(B2:B9))*B2:B9)
=SUMPRODUCT(ISODD(ROW(B2:B9))*B2:B9)

java.lang.Class.getMethod()とリフレクション

Javaのリフレクションとは変数に格納した「文字列」を使ってクラスを生成したりメソッドを呼び出したりできる機能。

リフレクション使ってメソッドをコールした場合、そのメソッドの例外はinvoke()でInvocationTargetExceptionでラッピングされて例外発生する。 以下は本家のサイトだけれども、正直なに言ってるかわからない。

クラス InvocationTargetException

なので、以下がよいかな。

http://www.ne.jp/asahi/hishidama/home/tech/java/reflection.html http://www.ne.jp/asahi/hishidama/home/tech/java/exception.html#InvocationTargetException

VMware Fusion上のWindows10をCreatorsUpdateしたらプリンタが見えなくなった件

以前、Windows7からWindows10にアップデートしたときもそうなったのだが、 VMware Fusion上のWindows10をCreatorsUpdateしたらプリンタがなくっていた。 以前にも、

(Windows8からWindows10にアップグレードしたらWSDプリンタが見えなくなって困った件)http://kohchi.hatenablog.com/entry/20160312/1457757349

で書いていた通りで、インストールしてみても同じように同じセグメントまたはUSB接続でないとだめ。 そこで再起動してみたが残念ながらダメ。

その日は諦めて色々考えてみたところ、VMWareではプリンタのパススルー(ThinPrint)というのがあるので それを試してみた。

(VMware Fusion仮想マシン内から印刷する (2079841))https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2079841

  • 設定を選ぶ

f:id:kazuokohchi:20171001092440p:plain

ここでプリンタをクリック。

  • 共有する

f:id:kazuokohchi:20171001092453p:plain

でプリンタ(WSDでないのが)見えるようになった。

その時、ふと、プリンタの電源をつけてvmのWindows10を起動すると?と思い、 パススルーの設定をやめて再度起動し直したところ、WSD設定のプリンタが復活。

大きなアップデートのあとはプリンタの電源を入れておいて起動するか プリンタの設定を変えてみる

ってことで見えるようになる???

毎度こんなんじゃ困るんだけどな。

Javaのオートボクシング

プリミティブ型とラッパークラスの変換を自動で行ってくれる仕組み

Java 5からの機能で便利なのかもしれないけどコードレビューしていると結構嫌よね。

public void foo() {
    Integer iObject = new Integer(10);
    int i = 0, j;

    iObject = i;    // オートボクシング
    // iObject = Integer.valueOf(i);

    j = iObject;    // アンボクシング、iObjectがnullだとNullPointerException
    // j = iObject.intValue();
}

ただし、Eclipseだと設定によって警告を出せるらしい

[ウィンドウ]->[設定]->[Java]->[コンパイラー]->[エラー/警告]->[潜在的なプログラミングの問題] を展開して[ボクシングおよびアンボクシング変換]を「エラー、警告、無視」から選択可能。デフォルトは「無視」。

f:id:kazuokohchi:20170903152144p:plain

javaのHashMap初期化

Java.util.HashMapの初期化方法。すぐ忘れるので備忘録。

package com.foobar.console;

import java.util.HashMap;
import java.util.Map;

public class Test01 {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>() {
            {put("fooKey", "fooVal");}
            {put("barKey", "barVal");}
        };
        if (!map.containsKey("noKey")) {
            System.out.println("There is no key.");
        }
        System.out.println(map.get("fooKey"));
        System.out.println(map.get("barKey"));
    }
}

参考は以下(作成から一年以上経過しているから試してみたけど問題なし)。

Map 初期化

Windows10の時刻設定がソウル(KST)になっている件

知らない間にWindows 10 Professionalの時刻設定がソウルになっていた。

Eclipseのサーバログを見ていて時刻がKSTになっていたのでEclipseの設定なのかなと思っていたら Windows側の設定でした。

f:id:kazuokohchi:20170903151617p:plain

時差もソウルと変わらないみたいなのでいままで気がつかなかった。そんな設定していないのになんで?

環境は以下

eclipseにspringプロジェクトを構築

以下のqiitaの記事を参考にして自分も構築してみた。

Eclipse4.6 + Spring MVC

うちでは4.5なので一応ログっておく。

ソフトウェア バージョン
eclipse eclipse pleiades 4.5 MARS
Java 1.6 or 1.7 or 1.8
Tomcat 1.8

まずはプラグインのSpring Tool Suite (STS)をEclipseに追加

  1. [ヘルプ]の[Eclipseマーケットプレース]を選択。
  2. [検索]窓にSTSを入力して検索実行(虫眼鏡をクリック)。
  3. 現時点での最新[Spring Tool Suite (STS) for Eclipse 3.8.4 RELEASE]を[インストール]。 f:id:kazuokohchi:20170603152128p:plain
  4. [選択されたフィーチャーの確認]で[確認]をクリック。 f:id:kazuokohchi:20170603152132p:plain
  5. [ライセンスのレビュー]で[使用条件の条項に同意します]をクリックし[完了]をクリック。 f:id:kazuokohchi:20170603152137p:plain
  6. Eclipseを再起動するかどうかを聞いてくるので再起動する。
  7. ようこそ画面になるけど×ボタンで閉じる。 f:id:kazuokohchi:20170603152142p:plain

プロジェクト作成

  1. [ウィンドウ]->[パースペクティブ]->[パースペクティブを開く]->[その他]から[spring]を選択。 f:id:kazuokohchi:20170603152147p:plain
  2. [パッケージエクスプローラー]で右クリックして[新規]->[Spring Legacy Project]を選択。 f:id:kazuokohchi:20170603152154p:plain
  3. [プロジェクト名]にプロジェクト名を入力し、[テンプレート]では[Spring MVC Project]を選択して[次へ]を選択。 f:id:kazuokohchi:20170603152200p:plain
  4. 必要なものをダウンロードするかを聞いてくるインポートダイアログを表示するので[はい]を選択。 f:id:kazuokohchi:20170603152206p:plain
  5. パッケージ名を入力し[完了]を選択。 f:id:kazuokohchi:20170603152213p:plain
  6. 非力なマシンだと意外にビルドに時間がかかるがこんなふうになっているはず。 f:id:kazuokohchi:20170603152218p:plain

サーバ設定と動作確認

  1. [サーバー]ビューを表示し[使用可能なサーバーがありません。このリンクをクリックして新規サーバーを作成してください…]をクリック。 f:id:kazuokohchi:20170603152222p:plain
  2. [サーバーのタイプを選択]では[Tomcat v8.0 サーバー]を選択、サーバー名は変更したい場合は変更する。 f:id:kazuokohchi:20170603152226p:plain
  3. [サーバー]ビューから今作ったサーバー名をダブルクリックする。 f:id:kazuokohchi:20170603152231p:plain
  4. [概要]が表示されているので[モジュール]タブを選択。 f:id:kazuokohchi:20170603152234p:plain
  5. [Webモジュールの追加]をクリック。 f:id:kazuokohchi:20170603152238p:plain
  6. SpringTestが表示されているのでクリックして[OK]をクリック。 f:id:kazuokohchi:20170603152241p:plain
  7. “*"が表示されているので、設定を保存(CTRL+S)。 f:id:kazuokohchi:20170603152245p:plain
  8. サーバー名を右クリックして[開始]で起動する。
  9. [サーバー名]の右側が[始動済み, 同期済み]になっている。 f:id:kazuokohchi:20170603154123p:plain
  10. ブラウザでアクセスしてみる。 f:id:kazuokohchi:20170603152254p:plain