ワテのブログ

The fundamental things apply As time goes by.

2017年6月27日火曜日

2017/06/27

スポンサーリンク

ウィニーはちっさくて食べやすい。二袋でお得感がある。シャウエッセンは美味しいけど胃に持たれる感が。
リンガーハットのカップ麺があったので購入。卵を落として食べた。

今日は一日くもりであった。
リーマンショックのことを調べている。
1998年からアメリカの住宅価格は上がり始めたらしい。
サブプライムローンというローンがあって、これはサブライム層を対象としたローンで、一定期間は固定の低金利であるがその期間がすぎると急激に金利があがるというローンである。しかし、住宅価格があがり続けている状況であれば金利があがるまえに家をうってしまえばよい。そしてここがよくわからないところであるがサブプライムローンを証券化してその証券を銀行は売りさばいていたらしい。
もちろん住宅価格が永遠にあがりつづけるわけもなく2006年頃から価格はさがりはじめた。その上金利が上昇し、債務不履行が急速に増加した。その結果貸し付けた銀行はお金がもどってこない、差し押さえても住宅価格は下がってるので損害が発生する。もちろんサブプライムローン証券も値下がりを起こし、所有者に大損害が発生した。
おおよそこんなストーリである。

ケレケレ

スポンサーリンク

2017年6月11日日曜日

Raspberry PiにJupyterをインストールする

スポンサーリンク

Raspberry PiにJupyterをインストールする

概要

apt-get でpipをインストールしてpipを最新版に更新するとややこしいことに/usr/local/binに更新されたpipがインストールされる。

方法


$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python3 python3-dev build-essential python-pip
$ sudo pip3 install --upgrade pip
$ sudo /usr/local/bin/pip3 install jupyter

これでjupyterをインストールできる。

スポンサーリンク

2017年4月19日水曜日

boostでjson : property_treeの使い方

スポンサーリンク

boostでjson : property_treeの使い方

jsonの読み込み

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

int main()
{
    using namespace boost::property_tree;

    ptree pt;
    read_json("/hoge/data.json", pt);

    return 0;
}

配列へのアクセス

{
    "array":[
        1,
        2,
        3,
        4
    ]
}

配列の要素はget_childにパスを指定して取得。
各要素はptreeとして取得される。
ptreeのsecondに要素が格納されている。

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

int main()
{
    using namespace boost::property_tree;

    ptree pt;
    read_json("/hoge/data.json", pt);

    for (auto elem : pt.get_child("array")) {
        std::cout << elem.second.data() << std::endl;
    }

/*
出力
1
2
3
4
*/

    return 0;
}
スポンサーリンク

2017年4月14日金曜日

boost splitで連続する区切り文字を1文字として扱う方法

スポンサーリンク

boost splitで連続する区切り文字を1文字として扱う方法

boost::token_compress_on
を第四引数に指定してあげればよい。

#include <vector>
#include <string>
#include <boost/algorithm/string.hpp>

int main()
{
    std::vector<std::string> v;
    boost::algorithm::split(v, "hoge,,,,gero", boost::is_any_of(","), boost::token_compress_on);
    // v[0]: hoge
    // v[1]: gero
    return 0;
}
スポンサーリンク

2017年4月9日日曜日

GoでPdfを生成する方法 その2

スポンサーリンク

GoでPdfを生成する方法 その2

gofpdfはunicodeに対応していないらしい。
gopdfはunicode対応しており日本語もあつかえる。

gopdfをインストール

インストール方法

$ go get -u github.com/signintech/gopdf

使用方法

package main

import (
    "github.com/signintech/gopdf"
    "log"
)

func main() {
    pdf := gopdf.GoPdf{}
    pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}})
    pdf.AddPage()
    err := pdf.AddTTFFont("Osaka", "Osaka.ttf")
    if err != nil {
        log.Print(err.Error())
        return
    }

    err = pdf.SetFont("Osaka", "", 14)
    if err != nil {
        log.Print(err.Error())
        return
    }
    pdf.Cell(nil, "おはよう")
    pdf.WritePdf("hello.pdf")
}

実行方法

$ go build pdf.go
$ ./pdf
スポンサーリンク

GoでPdfを生成する方法

スポンサーリンク

GoでPdfを生成する方法

gofpdfをインストール

gofpdf: https://github.com/jung-kurt/gofpdf

インストール方法

$ go get github.com/jung-kurt/gofpdf

使用方法

package main

import (
    "github.com/jung-kurt/gofpdf"
)

func main() {
    pdf := gofpdf.New("P", "mm", "A4", "")
    pdf.AddPage()
    pdf.MoveTo(20, 20)
    pdf.LineTo(170, 20)
    pdf.ClosePath()
    pdf.SetLineWidth(1)
    pdf.DrawPath("D")
    pdf.SetFont("Arial", "B", 16)
    pdf.Text(40, 50, "Hello, world")
    pdf.OutputFileAndClose("hello.pdf")
}

実行方法

$ go build pdf.go
$ ./pdf


hello.pdf
が生成される。

具体的なコードのサンプルは
https://github.com/jung-kurt/gofpdf/blob/master/fpdf_test.go
にある。

スポンサーリンク