my学備忘録

忘れっぽいエンジニア(一応)が勉強のために残す備忘録ブログ。技術系を中心にや読んだ本とか勉強になったことなど。

【読んだ本】大事なことに集中する

 読みました。

私は本を読んでもあっという間に忘れてしまうので、読んだことについて記録をしておこうと思います。

 

※注意※

私が読んで感じた事、理解したと思っていることが書かれていますが、

本のすべてを読み解いたわけではありませんし、理解が間違っていることがありますので、

どの様な本かをなんとなく感じる程度にしてください。

あくまでも個人的備忘録です。

 

大事なことに集中する―――気が散るものだらけの世界で生産性を最大化する科学的方法

大事なことに集中する―――気が散るものだらけの世界で生産性を最大化する科学的方法

 

 

・一つのことに集中にして質の高い作業を行う→ディープワーク

・あまり集中できない作業を行う→シャローワーク

 (メールチェックとか返信とか)

・現代はシャローワークが多すぎるので意識的に減らす必要がある。

個人事業主などのともかく一つのことに集中しなければならない人は、外部と遮断してそのことだけをするのが良い

・従業員などの、外部との遮断をして作業することができない人は、まず自分が実施する作業の時間を見積もって、実践し、いかに「自分の見積もり通りにいかないか」を把握する。

・次にあらかじめ行う作業の予定を入れておき、その時間の間はその作業しかしないこと。

 もちろん突発的な作業が発生した場合は、まずその予定の調整対応を行う事

 

質の高い作業をいかに行うかを記載した本でした。心構えというよりかは、具体的にどうすれば良いかというのが書かれていました。

実例もかなり出ており、実際にそれをして成功した話がいくつも出てきました。

結局、一つのことに集中するためには、それしかしない環境を構築するか、その作業をする「予定をあらかじめ作って明確にしておく」ことが非常に有効なようです。

SNSはこのようなものに対して害悪とみなされますが、それ以外にも、「非常に有益でかつ、害が少ない」と判定できないものについても、ダメなようです。

 

すごくどうでも良いですが、海外出版で翻訳された本って個人的にすごく読みにくいんですが、これは慣れなんでしょうかね。

【仮想通貨】仮想通貨とは、を勉強したい

すごく今更ながら仮想通貨について調べています。

とりあえずここら辺の本を買って読書中。

一冊目は仮想通貨の概要と、今出回ってる仮想通貨の種類を、特徴と併せて解説しています。

ビットコインだけじゃなくて、色々あるんだ、というのがよく分かります(っていうかこんなにあるのか…これでもごく一部…)

MONACOINとか面白いですね。日本製ってところがまた。

二冊目はまだ読み途中ですが、ビットコインの仕組みについて書かれているようです。

私は数学は大の苦手なので、

言葉を変えて説明してくれる本はありがたいです…。

ビザンチン将軍問題の説明のところは大変わかりやすかったです。

仮想通貨系は、投資本が多くて実際の中身を詳しく説明している本がどれなのかわかりにくくて探すのが大変ですね…。

あまりにもたくさん仮想通貨が出来ているそうなので、

主要な用途に合わせて代表的な通貨が残っていくんでしょうか?

色々な企業が、様々な仮想通貨に対してアプローチをかけているみたいですから、

今後がどうなっていくか気になります。

引き続き勉強していきたいところですね。

【Excel】複数条件のデータが存在するか確認したい【COUNTIFS編】

少し前に、複数条件のデータが存在するか確認したい、という記事を書きました。

↓これ

mame-bibouroku.hatenablog.com

で、その時はSUMPRODUCT関数の紹介をしましたが、今回はCOUNTIFS関数です。

前回と同じくこのデータを使用します。

f:id:mamemamemaame:20171007222127p:plain
用意したデータ

COUNTIFS関数を記述してみます。

f:id:mamemamemaame:20171023234758p:plain

こんな感じです。

一行目の関数式を抜粋するとこんな感じ。

=COUNTIFS($A$1:$A$10,D1,$B$1:$B$10,E1)

(以降下のセルはオートフィルで埋める)

前回と同じ結果になりましたね。

今回の要件「複数条件のデータが存在するか確認したい」場合は、記載した関数式を用いると、

SUMPRODUCT関数とCOUNTIFS関数どちらも同じ結果を得られました。

…と、言いたいところですが、気を付けなければならない場合があります。

「空データ」があった場合の処理です。

f:id:mamemamemaame:20171023235757p:plain
SUMPRODUCTとCOUNTIFSの比較

上がCOUNTIFS関数、SUMPRODUCT関数の結果です。

先ほどの前提データの真ん中のデータをどちらもからデータにしてみました。

COUNTIFS関数は、最初と変わらずの結果となりましたが、

SUMPRODUCT関数はからデータの箇所が1となっています。

SUMPRODUCT関数の場合は空データもデータとして計算するようです。

逆にCOUNTIFS関数は空データの場合は数えないという事のようです。

もしどちらかの関数を使用する場合は「空データがあるかどうか」をチェックすることをおすすめします。

この間知らずに使っててアレッ?ってなったので備忘録。。。

【python】【ini】Pythonでiniファイル読み込み

前回のiniファイルの続き。

mame-bibouroku.hatenablog.com

pythonでiniファイルを読み込みます。

使用するiniファイルは、適当に作ったこちらを使用。

[network_config]
ipaddress=127.0.0.1
port=5963

[graphics]
height=100
width=200
fps=60

[sound]
bgm=100

適当さがにじみ出ているiniファイルですが、 セクションとパラメータがいくつか並んでいます。 とりあえずそれぞれが取得できるようにプログラムを組んでみます。

test_ini_read.py

# -*- coding: UTF-8 -*-

import ConfigParser

conf_parser = ConfigParser.ConfigParser()

# ConfigParserによりiniファイルを読み込み
conf_parser.read('test_conf.ini')

#sectionリストを取得
section_list = conf_parser.sections()

print "sections", conf_parser.sections(),"\n"

for section  in section_list:
    #sectionデータからオプションリストを取得
    print section, "options ",conf_parser.options(section)
    # 辞書型でセクションごとのパラメータ取得
    get_data = conf_parser.items(section)
    print get_data, "\n"

出力結果

[vagrant@localhost python]$ python test_ini_read.py
sections ['network_config', 'graphics', 'sound']

network_config options  ['ipaddress', 'port']
[('ipaddress', '127.0.0.1'), ('port', '5963')]

graphics options  ['height', 'width', 'fps']
[('height', '100'), ('width', '200'), ('fps', '60')]

sound options  ['bgm']
[('bgm', '100')]

基本的には、iniファイルを読み込んでsectionのリストを取得し、

辞書型に入れていくのが良いんでしょうか?

テストという事で、セクションごとに辞書型に入れていますが、

あらかじめ宣言しておいて、セクション名→(パラメータ名,データ)みたいな形で登録出来れば、

使い勝手は良さそうかも?

設定値を変えて色々試したいプログラム等には役に立ちそうです。

【ini】iniファイルの記法

先日、iniファイルをいじることがあったので、今回はiniファイルについてかきます。

PCでフリーゲームとかをするとたまに入っていたりするiniファイル、ありませんか?(あるあるという人が少なそうな質問をしてしまいました…)

昔見ていたときは、「これは設定ファイルか、きっと複雑な構造を持っているに違いない」と勝手に思っていましたが、

INIファイル - Wikipedia

単純なTXTファイルかよッ!

覚えておくのはこの2点で十分でしょう。

セクション

[section]

パラメータ

config_name=config_value

セクションはパラメータをグループとしてまとめる機能を持つ。

ゲームのオプションも、映像、音、操作、のように分野でまとまっているように、

iniファイルもそれぞれの分野(セクション)でまとめられる、という事ですね。

とはいえ、上記リンクをよく読むと、

Windows上でもあまり推奨されてない形式みたいですね…。

WINAPIは、XMLファイルかレジストリで管理するようで…。

あまり定義も明確化してないみたいですし、

iniファイルがあるときは、ちゃんと読ませる対象のプログラムがiniファイルの解析に対応しているか確認した方が良いですね。

中に何が書かれているかわかりやすいですし、単純なプログラムの設定ファイルとして作るのにはよいと思います。

Win32API完璧マスタ―Visual C++プログラミング

Win32API完璧マスタ―Visual C++プログラミング

【Excel】複数条件のデータが存在するか確認したい【SUMPRODUCT編】

仕事でVBAを使う事になり、Excelについて勉強中…。

検索とかで、FindとかVLOOKUPとかMATCHとか見ててふと、

「複数の組み合わせを持つデータが存在するかどうかはどうやって確認するんだろう?」

と思ったので、少し調査。

ものすごく雑な例を出すとこんな感じ。

f:id:mamemamemaame:20171007222127p:plain

こんな感じで似たような組のデータがあります。

左側と右側で比較すると、同じ組み合わせはありますが、違う組み合わせもあります。

この時、「左右どちらも含まれる組み合わせはどれか?」という確認がしたい、

というのが今回の条件です。

で、色々調べましたが、SUMPRODUCT関数に行き着きました。

参考にしたページ

Excel(エクセル)基本講座:SUMPRODUCT関数の使い方

SUMPRODUCT関数は、

・配列に対応する要素間の席を計算し、その和を返す

・複数条件の件数をカウントしたり、合計数を出せる ←ここがポイント

上記を参考に記述してみました。

f:id:mamemamemaame:20171007223020p:plain

一行目の関数式を書くとこんな感じ

=SUMPRODUCT(($A$1:$A$10=D1)*($B$1:$B$10=E1))

(以降下のセルはオートフィルで埋める)

一つ目は左組のアルファベット列の中で、D1(右組一番上のアルファベット)と同一である。

二つ目は左組の数値列の中で、E1(右組一番上の数値)と同一である。

この2つの式の論理積を取るわけですから、

右側を支点にして、「左側のアルファベットと左側の数値の組み合わせが同じ数を表示する

ということになります。

出力結果としても、左側の組の中で、右側の組と同じ組み合わせなのは、

A-1(2つ)

B-1(1つ)

C-4(1つ)

E-5(2つ)

ということですね。

列が分かれた複数の組み合わせの中から、同じ組み合わせを抽出するときはSUMPRODUCT関数を使えば良さそうですね。

VBAも書いてるんですが、

VBAは性能を気にしながらコーディングしなきゃいけないらしいので、

コーディングするときは非効率なアルゴリズムは避けたほうがよさそうですね。

本買うならここら辺あたり買いたいなぁ。

【2017/10/24 追記】

同条件をCOUNTIFS関数を用いた場合どうなるか書きました。

mame-bibouroku.hatenablog.com

【python】pythonでsyslog出力

python勉強中…。

syslogを出力したくなったので調査。

https://docs.python.jp/2.7/library/syslog.html

えぇ…出力するだけなら

syslog.syslog('test syslog')

syslogをimportして上記メソッド書くだけ…。

これだけで良いらしい…。ほんとに?

実際にやってみる。

import syslog

syslog.syslog('syslog test')

出力結果

………
Oct  7 12:54:54 localhost test_syslog.py: syslog test

ほんとに出てる…。すごいな…こんなもんなのか?

Cで作った時はめんどくさかったような気がするけど…。

後はファシリティとかログとかもろもろをちゃんと指定する処理入れれば、普通にsyslog記述処理実装できるのか…。

時代は進んでいる…。

↓買いました。