読者です 読者をやめる 読者になる 読者になる

学生の備忘録なブログ

日々のことを忘れないためのブログです。

機会費用

機会費用とは

機会費用 - Wikipedia

機会費用とはつまり,

もし他になにかやっていたとき生まれたであろう利益を,それをやっていない今の自分から見た時費用として捉えることである.

Remember that time is money (ベンジャミン・フランクリン)

選択した以上,その選択した事柄から最大限の利益を得るよう努力すること.

そうしなければ,潜在的に損失を生んでいるということなのだ.

NP困難問題

NP困難問題とは

よく聞くけど,よくわからないやつ,NPとか,今回理解することができたので,ここにまとめます.

用語について

大雑把に言うと,

Pとは一般的な解法で解けること.

P,NP

例えば, 2次方程式は『解の公式』の解は求められる.

一般的な解法があるものはあらかじめ計算にどれくらいの時間がかかるのか見積もることが出来る。

これを「多項式時間(Ploymonial-time)で解ける」という。

しかし,そうではない問題もありますよね?

 これに対して「素因数分解」や「ナップサック問題」のような問題は決定的な解法が知られておらず,考えられるすべての場合をしらみつぶしに調べなければならない。

 このような問題を「多項式時間で解けない(Nondeterministic Polynomial-time)」といいます。

NP困難

 そこで P 問題(Polynomial つまり多項式時間で解ける問題)と NP 問題(Nondeterministic Polynomial つまり多項式時間で解けない問題)については

P≠NP (世の中には一般的な解法がある問題と,総当たりでしらみつぶしに調べるより他に手がない問題と二通りある)

P=NP (一生懸命考えればどんな問題でも一般的な解法があるはず) という分類のされ方をします.これらは将来,明確な解が見つかるかもしれない,という前提がある.

まとめ

多項式時間(計算量が分かっている問題を解くためにかかる時間) P(多項式時間で解ける) NP(多項式時間で解けない)

参考

ナップサック問題

Atomでmarkdown

Atommarkdownを書いてみる

動機

 qiitaで気になる記事を発見したため.

参考にしたサイト

http://qiita.com/kouichi-c-nakamura/items/5b04fb1a127aac8ba3b0

実行結果

 おもしろい.

考察

面倒はないが,やはり導入コスト,学習コストはある.

私はemacsで,sequential-command.elを導入している.

http://d.hatena.ne.jp/rubikitch/20090219/sequential_command

これは大変大変便利なもので,同じコマンドを連続で入れると,違う挙動をするというものだ. C-a行頭へカーソル移動 C-a文頭へカーソル移動 C-a元々の場所へカーソル移動

これはAtomにも同様のパッケージはあるのかもしれない.(自作するという手段もある) しかしそれは,労力を裂く場所を間違ってない?

導入コストについての考察

本当にしたいことは何か

私が本当にしたい,しなければならないことはなんだろうか.

本当に心地良い環境設定を徹底的に時間を掛けてすることだろうか.

さっさと考えていたことを形にして次に進むことではないのか.

毒矢のたとえ

ここである仏教徒の例え話をしたい.と続けるのもいいが,簡単に要約すると,

矢に射られた時,射手が背格好のどんなやつかを調べる,あるいは矢がどんな速度で射ち込まれたか,なんてどうでもいいから,矢を抜けば?という話.

つまり 今一番やるべきことを見極めろ ということだ

Emacs.appがAlfredから呼び出せない *下書き

問題

Emacs.appがAlfredから呼び出せない

emacs ver 25 にして,直後に気づいてはいたが,,,

解決策

Alfredは拡張性が高いそうだから,無料でできる範囲で適宜パスを作るなり登録するなり何なりして,できるようにしたい.

Clion コマンドライン引数

検索してでないなら類似検索せよ

Clionを使いだした.

しかし,コードの実行にコマンドライン引数を渡すのはどうやるのかわからない.

検索しても出ない.

そうなのだ.検索しても出ない.

類似するよりメジャーなもので検索する

ClionはIntellij IDEAライクなIDEである.よってそちらで検索すれば良い.

解決した.

java - Run programme from IntelliJ with command line file input - Stack Overflow

brew install nmap できなかった.

nmapインストールに際し,失敗した.

% brew install nmap
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 5 taps (caskroom/cask, caskroom/versions, homebrew/core, homebrew/services, homebrew/versions).
==> New Formulae
guile@2.0                                                                nnn
==> Updated Formulae
ace                          exiftool                     jenkins                      mysql-sandbox                servus
ammonite-repl                fabio                        jetty                        nagios-plugins               shadowsocks-libev
ansible ✔                    file-roller                  jetty-runner                 ncmpcpp                      shfmt
antigen                      filebeat                     jmxtrans                     neofetch                     slackcat
aws-sdk-cpp                  fluent-bit                   kafkacat                     nginx                        sleuthkit
awscli                       folly                        kibana                       nss                          solr
bazel@0.2                    fox                          knot-resolver                nvm                          source-highlight
bear                         fping                        kobalt                       oauth2_proxy                 speedtest_cli
bind                         fq                           kotlin                       open-scene-graph             swift
biogeme                      freeling                     lapack                       orientdb                     swiftformat
bmake                        geckodriver                  lcdf-typetools               osh                          syncthing
boost                        git-fresh                    ldc                          osquery                      tee-clc
boost-bcp                    git-lfs                      ledger                       osrm-backend                 terragrunt
boost-mpi                    git-quick-stats              libgeotiff                   packer                       tmux
boost-python                 gitlab-ci-multi-runner       libgosu                      packetbeat                   uhd
buku                         gjs                          libhttpseverywhere           paket                        unicorn
bullet                       glbinding                    libphonenumber               parallel                     unzip
byteman                      globjects                    libsoup                      pdftoedn                     urh
caddy                        grc                          libtorrent-rasterbar         pick                         vagrant-completion
carthage                     grpc                         libvirt                      pmd                          vala
casperjs                     gssh                         libwebsockets                polyml                       valabind
closure-compiler             gtef                         lilv                         ponyc                        vim
conan                        guile                        llnode                       poppler                      watchexec
convox                       h2o                          logstash                     proof-general                weechat
crystal-lang                 harfbuzz                     lumo                         pure-ftpd                    wesnoth
cucumber-cpp                 hg-fast-export               lv2                          pyexiv2                      widelands
docker-machine               hugo                         meson                        q                            wine ✔
docker-machine-completion    imagemagick ✔                metaproxy                    qbs                          wireguard-tools
docker-machine-driver-xhyve  imagemagick@6                metricbeat                   qemu                         youtube-dl ✔
docker-machine-parallels     imageworsener                mkvtoolnix                   scalaenv                     zabbix
elasticsearch                instead                      mongodb                      schismtracker
emacs ✔                      iproute2mac                  mpv                          sdcv
emscripten                   iso-codes                    mycli                        selenium-server-standalone
==> Renamed Formulae
mongodb26 -> mongodb@2.6

==> Downloading https://homebrew.bintray.com/bottles/nmap-7.40.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring nmap-7.40.sierra.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink share/man/de/man1/nmap.1
/usr/local/share/man/de/man1 is not writable.

You can try again using:
  brew link nmap
==> Caveats
Python modules have been installed and Homebrew's site-packages is not
in your Python sys.path, so you will not be able to import the modules
this formula installed. If you plan to develop with these modules,
please run:
  mkdir -p /Users/hoge/.local/lib/python3.5/site-packages
  echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/hoge/.local/lib/python3.5/site-packages/homebrew.pth
==> Summary
🍺  /usr/local/Cellar/nmap/7.40: 761 files, 24.3MB/Users/hoge% brew install nmap
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 5 taps (caskroom/cask, caskroom/versions, homebrew/core, homebrew/services, homebrew/versions).
==> New Formulae
guile@2.0                                                                nnn
==> Updated Formulae
ace                          exiftool                     jenkins                      mysql-sandbox                servus
ammonite-repl                fabio                        jetty                        nagios-plugins               shadowsocks-libev
ansible ✔                    file-roller                  jetty-runner                 ncmpcpp                      shfmt
antigen                      filebeat                     jmxtrans                     neofetch                     slackcat
aws-sdk-cpp                  fluent-bit                   kafkacat                     nginx                        sleuthkit
awscli                       folly                        kibana                       nss                          solr
bazel@0.2                    fox                          knot-resolver                nvm                          source-highlight
bear                         fping                        kobalt                       oauth2_proxy                 speedtest_cli
bind                         fq                           kotlin                       open-scene-graph             swift
biogeme                      freeling                     lapack                       orientdb                     swiftformat
bmake                        geckodriver                  lcdf-typetools               osh                          syncthing
boost                        git-fresh                    ldc                          osquery                      tee-clc
boost-bcp                    git-lfs                      ledger                       osrm-backend                 terragrunt
boost-mpi                    git-quick-stats              libgeotiff                   packer                       tmux
boost-python                 gitlab-ci-multi-runner       libgosu                      packetbeat                   uhd
buku                         gjs                          libhttpseverywhere           paket                        unicorn
bullet                       glbinding                    libphonenumber               parallel                     unzip
byteman                      globjects                    libsoup                      pdftoedn                     urh
caddy                        grc                          libtorrent-rasterbar         pick                         vagrant-completion
carthage                     grpc                         libvirt                      pmd                          vala
casperjs                     gssh                         libwebsockets                polyml                       valabind
closure-compiler             gtef                         lilv                         ponyc                        vim
conan                        guile                        llnode                       poppler                      watchexec
convox                       h2o                          logstash                     proof-general                weechat
crystal-lang                 harfbuzz                     lumo                         pure-ftpd                    wesnoth
cucumber-cpp                 hg-fast-export               lv2                          pyexiv2                      widelands
docker-machine               hugo                         meson                        q                            wine ✔
docker-machine-completion    imagemagick ✔                metaproxy                    qbs                          wireguard-tools
docker-machine-driver-xhyve  imagemagick@6                metricbeat                   qemu                         youtube-dl ✔
docker-machine-parallels     imageworsener                mkvtoolnix                   scalaenv                     zabbix
elasticsearch                instead                      mongodb                      schismtracker
emacs ✔                      iproute2mac                  mpv                          sdcv
emscripten                   iso-codes                    mycli                        selenium-server-standalone
==> Renamed Formulae
mongodb26 -> mongodb@2.6

==> Downloading https://homebrew.bintray.com/bottles/nmap-7.40.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring nmap-7.40.sierra.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink share/man/de/man1/nmap.1
/usr/local/share/man/de/man1 is not writable.

You can try again using:
  brew link nmap
==> Caveats
Python modules have been installed and Homebrew's site-packages is not
in your Python sys.path, so you will not be able to import the modules
this formula installed. If you plan to develop with these modules,
please run:
  mkdir -p /Users/hoge/.local/lib/python3.5/site-packages
  echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/hoge/.local/lib/python3.5/site-packages/homebrew.pth
==> Summary
🍺  /usr/local/Cellar/nmap/7.40: 761 files, 24.3MB

嫌にならずに見ていく.

エラーをよく見ると

 親切なことに,エラー警告の最後の方に,改善提案があったのでやってみたら治った.

 以下の通りにやってみた.

You can try again using:
  brew link nmap
==> Caveats
Python modules have been installed and Homebrew's site-packages is not
in your Python sys.path, so you will not be able to import the modules
this formula installed. If you plan to develop with these modules,
please run:
  mkdir -p /Users/hoge/.local/lib/python3.5/site-packages
  echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/hoge/.local/lib/python3.5/site-packages/homebrew.pth
==> Summary
🍺  /usr/local/Cellar/nmap/7.40: 761 files, 24.3MB

教訓

何事も焦らず迅速に.

エラーを吐き,提案をしてくれるbrewは優秀ですね.

brew doctor

brew doctor

してみた結果,めちゃめちゃエラーはいたので,見なかったことにします.

参考元

http://qiita.com/ren-10/items/1c1764100aa4b1c7b514

python仮想環境

ややこしいんじゃ

 pythonの禅にもあるだろが,単純でいいんだよ.参入障壁がなくてコミュニティを活発なのがpythonの強みだろがい.

 とおもっていたら,同じことを思っている人がいた.

ymotongpoo.hatenablog.com

話を膨らます

 上記の通り,私はpythonの強みは,pythonの禅に由来する単純さであると思っている.

 私はpyconjp2016に参加したことがある,そこに集まる人達は,プログラミング言語のカンファレンスでありながら,中学生がいたり(その前回開催されたときにスピーカーだった)かなりのご老人がいたりしながら,比較的若い(若々しい)参加者が多く,寛容な雰囲気がpythonという言語を象徴しているように思えた.

 

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

 複雑であるよりも単純な方が良い.

 シンプルな一つの方法があれば良い

 実装が説明するのが難しい場合、それは悪い考えである.

 これらのイデオロギーpythonをわかりやすく,単純で,強力な言語にしている.なぜならば,プログラミングは既にそれ自体がライブラリや開発ツールなどの援助を前提としているためである.

 ライブラリが無いpythonなど使うに値するだろうか,numpy,pandas,などの基礎的なものからjupyter notebookでscikit-learndを動かしデータから何事かのモデルを作り出す.これらは環境として完全に他を圧倒している.今日現在2017-04-26ではrubyはライブラリを充実させるのではなく,pythonのライブラリにブリッジしようという動きさえある.

 google機械学習ライブラリ群も,julia langやRのようなもので実装されるのではなく,pythonで実装されたのも,環境が整っているからである.

 いかにして環境は整ったのか,これが先に述べたpythonの禅が内包するイデオロギーによるものであると私は考える.つまり単純でわかりやすいと,みんな手を付けやすいのだ.

 普段ゴリゴリにコードを書き,プロダクトを作るプログラマだけで世界は構成されるわけではない.ツールとしてのプログラミングを選ぶときに,C++を選ぶだろうか.いくら速いとは言え,,,

 ruby,perl,pythonを比べた時,ツールとしての扱いやすさはpythonは出色である.なぜなら,皆同じようなことを記述するとき,似たようなコードを書くからである.  

 ツールとして評価する人は,その扱いやすさの判断基準は情報の多さと,不偏性である.

 pythonの文法はインデントに意味を持たせる.これがpythonのコードの見た目の多様性を制限する.これは大きな利点である.

 同じ機能を持つ全く違うコードは,ツールとしての扱いやすさを著しく損なう.ツールとして扱いたいのであって,文法を学びたいわけではないのだ.

 結果として,道具としての参入障壁が無いため,窓口が大きくなる.これによりコミュニティの裾野が開かれるのだ.

 コミュニティが活発な時,言語におけるインフラである,ライブラリや開発環境が充実してくる.ユーザーがあれば,企業はそれ向けのライブラリやIDEを開発するし,頭の良い人もマスが大きくなれば当然多く含まれてくる.その頭の良い人がpythonで良い成果を上げ,再び言語の評価が上がるのだ

結論

pythonの仮想環境わかりやすくしろや.