個人的神殿

プログラミング

boostrapのポップオーバーを、クリックではなくホバーで表示する

triggerを「hober」にしても、ポップオーバーにカーソルを当てようとすると消えてしまうため、例えばそのポップオーバーにボタンを入れたいというときは使えない。
そこでtriggerは「manual」にして、地道にやるしかなかった。

function enableThumbPopover() {
    var counter;

    $('.thumbcontainer').popover({
        trigger: 'manual',
        animation: false,
        html: true,
        title: function () {
            return $(this).parent().find('.thumbPopover > .title').html();
        },
        content: function () {
            return $(this).parent().find('.thumbPopover > .body').html();
        },
        container: 'body',
        placement: 'auto'
    }).on("mouseenter",function () {
        var _this = this; // thumbcontainer

        console.log('thumbcontainer mouseenter')
        // clear the counter
        clearTimeout(counter);
        // Close all other Popovers
        $('.thumbcontainer').not(_this).popover('hide');

        // start new timeout to show popover
        counter = setTimeout(function(){
            if($(_this).is(':hover'))
            {
                $(_this).popover("show");
            }
            $(".popover").on("mouseleave", function () {
                $('.thumbcontainer').popover('hide');
            });
        }, 400);

    }).on("mouseleave", function () {
        var _this = this;

        setTimeout(function () {
            if (!$(".popover:hover").length) {
                if(!$(_this).is(':hover')) // change $(this) to $(_this) 
                {
                    $(_this).popover('hide');
                }
            }
        }, 200);
    });
}

アルファベットの変換

こちらのサイトのページを自分用に書き写したものです。
http://www7a.biglobe.ne.jp/~java-master/samples/string/index.html



全角アルファベットを半角アルファベットに変換する

public class ZenkakuAlphabetToHankaku {
    public static String zenkakuAlphabetToHankaku(String str) {
        StringBuffer sb = new StringBuffer(str);
	    for (int i = 0; i < sb.length(); i++) {
	        char c = sb.charAt(i);

		if (c >= 'a' && c <= 'z') {
	            sb.setCharAt(i, (char)(c - 'a' + 'a'));
		} else if (c >= 'A' && c <= 'Z') {
		    sb.setCharAt(i,  (char)(c - 'A' + 'A'));
		}
	    }

        return sb.toString();
    }

    public static void main(String[] args) {
        System.out.println(zenkakuAlphabetToHankaku("☆Javaプログラミング"));
    }
}

①引数にとったString型の変数strにより、StringBufferクラスのインスタンスを生成する。

②左から1文字ずつchar型の変数cに代入していく。

③char型には文字コードが格納されているので大小の比較が可能。変数cの文字コードが全角の'a'から'z'の間にあるか、もしくは全角の'A'から'Z'の間にある場合はそれを半角の文字コードに直したい。そこでcの文字コードからまず全角の’a’または'A'の文字コードを引いたあとに、半角の'a'または'A'の文字コードを足せば、cの文字コードを半角に直したものを得られる。それをint型からchar型に直し、setCharAtメソッドで書き換える。

④最後にtoStringメソッドでString型に直して返す。

pythonの標準ライブラリを知る ~statistics~

以下のデータを使う

data = [1.5, 300, 50, 50.2, 32, 34, 92, 34, 77, 22.23]

1.平均

statistics.mean(data)
69.293

2.中央値

statistics.median(data)
42.0

3.median_low()
これは、データ数が奇数の場合は普通の中央値を返して、偶数の場合には中央の2つの値のうち小さい方を返す。

statistics.median_low(data)
34

4.median_high()
median_lowで大きい方を返すバージョンにしたもの。

statistics.median_high(data)
50

5.分散

statistics.pvariance(data)
6523.026441

5.標準偏差

statistics.pstdev(data)
80.76525515962913

6.不偏分散

statistics.variance(data)
7247.807156666667

7.不偏標準偏差

statistics.stdev(data)
85.13405403636472

pythonの標準ライブラリを知る ~csv~

1.csv.writer()
ファイルオブジェクトを渡すと、それに基づいたcsv.writerオブジェクトを返してくれる。dialectは表現形式の指定なので省略可。**fmtparamsは各種オプションで、lineterminator="\n"とするとWindowsでの余計な空行が入ることを防止できる。

2.csv.writer.writerow(row)
1次元配列を渡してwriterオブジェクトに書き込む。

3.csv.writer.writerows(rows)
2次元配列を渡してwriterオブジェクトに書き込む。

import csv

header = ["a", "b", "c"]
data = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

with open("normal.csv", mode="w", encoding="utf-8") as f:
    writer = csv.writer(f, lineterminator="\n")
    writer.writerow(header)
    writer.writerows(data)

以下のようなcsvファイルが作成された。

a,b,c
1,2,3
4,5,6
7,8,9

4.csv.reader(csvfile, dialect="excel", **fmtparams)
fileオブジェクトを渡すと、それに基づいたcsv.readerオブジェクトが返される。

読み込みは、open関数でcsvfileオブジェクトを取得し、csv.reader()にfileオブジェクトを渡し、readerオブジェクトを取得する。その後はreaderオブジェクトをループにかけて、行ごとのデータを取得する。

import csv

with open("normal.csv", mode="r", encoding="utf-8") as f:
    reader = csv.reader(f)
    [print(row) for row in reader]
['a', 'b', 'c']
['1', '2', '3']
['4', '5', '6']
['7', '8', '9']