リンク集 - いつかちゃんと見る(bat, python vbscript, excel, electron)

# Linux
## ps
[運用で使えるpsコマンドの便利な使い方 _ 株式会社ビヨンド](http://beyondjapan.com/blog/2017/08/pscmd)

> psコマンドにて指定した項目のみ表示する

> ```shell-session
$ ps -eo pid,user,rss,pcpu,pmem,args
  PID USER       RSS %CPU %MEM COMMAND
    1 root      2456  0.3  0.2 /sbin/init
    2 root         0  0.0  0.0 [kthreadd]
    3 root         0  0.0  0.0 [ksoftirqd/0]
    4 root         0  0.0  0.0 [kworker/0:0]
    5 root         0  0.0  0.0 [kworker/0:0H]
```

> 例ではプロセスID,ユーザ,物理メモリ使用量,CPU使用率,メモリ使用率,プロセス名を表示させています。このように指定した項目のみ表示し、必要な情報のみ出力することができます。指定できる項目はかなり多いのでいくつかを紹介します。

> ```
    pcpu（%cpu） – プロセスのcpu 使用率
    pmem（%mem） – メモリ使用率
    args（cmd,command）- 文字列の引き数がついたコマンド
    pid – プロセスID
    ppid – 親プロセスのID
    uid（euid） – 実行ユーザのID
    gid（egid） – 実行グループのID
    user（euser,uname） – 実行ユーザ
    group（egroup） – 実行グループ
    rss（rssize,rsz） – 物理メモリ使用量
    lstart – プロセスの起動時刻 
```

## awk
[psコマンドの結果からプロセスIDを取得するときはcutではなくawkを使う - myhd](http://d.hatena.ne.jp/myokoym/20111116/1321457109)

> 以下の出力結果からpsコマンドのプロセスID（1234）を取得したい。

> ```shell-session
$ ps -ef | head -n 3
UID        PID  PPID  C STIME TTY          TIME CMD
myokoym   1234     0  0 12:34 pts/0    00:00:00 ps -ef
myokoym 999999     0  0 12:34 pts/0    00:00:00 head
```
> ### cutの場合
> 最初はcutを使ってみます。
・・・略・・・
> こちらは取れました。どうも、cutだとスペースが連続する場合に上手く取れない様子。スペースの数だけフィールド数が増えてしまっています。

> それに対して、awk（オーク）ではデフォルトで「1個以上の連続スペース」または「タブ」が区切り文字として扱われるため、以下の通り、きちんと取得できます。

> ```shell-session
$ ps -ef | head -n 3 | grep "ps -ef" | awk '{ print $2 }'
1234
```
> （特殊変数の`$1`、`$2`・・・に、1番目のフィールド、2番目のフィールド・・・が入っている）


以下のような使い方を見た。

```shell-session
$ ps -o pid,rss,command -x | awk '{A=substr($3,0,1);if(A!="[") print $0}'
```

awkをしらないのでいつか見る(sedももはや忘れてしまったけど。)

## メモリ
mallocはチューンできるらしい。たとえば、MALLOC_PERTURB_があるかないかで

[myblog  MALLOC_PERTURB_](http://kamae-norihiro.blogspot.jp/2013/10/mallocperturb.html)
> あるソフトを使っていたら, 私だけエラーが起こる. 
・・・略・・・
. 私とその人との違いは, ログインシェル. 私は bash, その人は tcsh を使っていた. ログインシェルを tcsh に変更してみると, このエラーは起こらなくなった. しかし, ログインシェルを tcsh にした後, bash を起動し, その中でそのソフトを起動するとエラー. こんな時には環境変数が原因だろうと考え, diff をとってみた.

> ```
env | sort > tcsh-env.out
bash
$ env | sort > bash-env.out
$ diff tcsh-env.out bash-env.out
```
ここで分かったのは, bash 環境では MALLOC_PERTURB_ が設定されているということ. この環境変数を消すと, エラーは起こらなくなった.

[The GNU C Library  Memory Allocation Tunables](https://www.gnu.org/software/libc/manual/html_node/Memory-Allocation-Tunables.html)
> ### Tunable: glibc.malloc.perturb

> This tunable supersedes the MALLOC_PERTURB_ environment variable and is identical in features.
If set to a non-zero value, memory blocks are initialized with values depending on some low order bits of this tunable when they are allocated (except when allocated by calloc) and freed. This can be used to debug the use of uninitialized or freed heap memory. Note that this option does not guarantee that the freed block will have any specific values. It only guarantees that the content the block had before it was freed will be overwritten.
The default value of this tunable is ‘0

# 言語
[プログラミング言語処理系論 (2016年度)](http://www-sato.cc.u-tokyo.ac.jp/SATO.Hiroyuki/PLDI2016/)
[プログラミング言語処理系論 (2014年度)](http://www-sato.cc.u-tokyo.ac.jp/SATO.Hiroyuki/PLDI2014/)
[プログラミング言語処理系論 (2012年度)](http://www-sato.cc.u-tokyo.ac.jp/SATO.Hiroyuki/PLDI2012/)

## 関数型言語
[なぜ関数プログラミングは重要か](http://www.sampou.org/haskell/article/whyfp.html)


# PDF
[詳細PDF入門 ー 実装して学ぼう！PDFファイルの構造とその書き方読み方 - プログラムモグモグ](http://itchyny.hatenablog.com/entry/2015/09/16/100000)

> このエントリーでは、PDFのファイル構造を理解するための基礎的な内容を丁寧にお伝えしたいと思います。 PDFファイルに興味があるが、どこから手を付ければいいかわからない人や、PDFファイルをエディタで直に書けるようになりたい人、あまり興味はないけどPDFのファイル構造がどうなっているか雰囲気でも掴みたい人など、どんな人でも歓迎です。 PDFは数限られたソフトが出力することを許された闇に満ちたバイナリフォーマット？いいえ、全く違います。 ある程度単純なPDFなら、ほんの100行程度のコードで生成できるのです。

[PDF Reference sixth edition Adobe Portable Document Format](http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf)

[PyPDF2の使い方 _ SrLTテクノアーカイブ](http://srlt-tech.com/python/pypdf2)
> PDFの結合
PDF1の後にPDF2を結合する場合のサンプルコードです。

> ページの抽出
複数のページを持つPDFから任意のページのみを抽出するサンプルコードです。先頭ページは「0」として数えます。

> ページの回転
すべてのページを時計回りに回転させます。角度は、90°、180°、270°を選択できます。

[Pythonで超簡単にPDFを連結 _ tm23forest.com](https://tm23forest.com/contents/python-pdf-concat)

# UML
[UTI_UML教育研究所-使えるUML](http://www.umlcert.org/reading/column/uml3_04.html)

# 設計
## テンプレ
[テンプレ](http://pocket9.net/pocketdoc_01.html)

# powershell

[Windows PowerShell でのスクリプティング](https://technet.microsoft.com/ja-jp/scriptcenter/powershell.aspx)

- [Windows PowerShell 入門](https://technet.microsoft.com/ja-jp/scriptcenter/powershell_owner01.aspx)
    - PowerShell のヘルプの活用
    - スクリプトもお忘れなく
    - 今後の学習

- [Windows PowerShell コマンドレットのタスク別ガイド](https://technet.microsoft.com/ja-jp/scriptcenter/dd772285.aspx)
    - 日付と時刻
    - ファイルとフォルダー
    - データの保存とインポート
    - スクリプトのテクニック
    - システム管理タスク
    - スクリプトとアプリケーション
    - VBScript と Windows PowerShell の変換

[バッチファイルにPowerShellスクリプトを埋め込む - Programming Field](https://pf-j.sakura.ne.jp/program/tips/ps1bat.htm)


# バッチファイル
[開発に役立つ，BATファイルの書き方・パターン集　（コマンドプロンプトの定石を体系的に学び，バッチ中級者になろう） - 主に言語とシステム開発に関して][1]
>（０） BATプログラミングの特徴
（１） BATファイルの雛型
（２） バッチの構造化
（３） ファイル操作
（４） 変数と演算
（５） その他の処理

[バッチファイル - shinoshino_google][2]
>1 ページ概要
2 どこからバッチを起動させても大丈夫なようにする
3 バッチパラメータ・修飾子
4 ファイル名の連なった環境変数を設定する
5 外部呼び出しのバッチエラー終了を捕まえる
6 .svnを削除する
7 日付つきのディレクトリを作成する
8 64bitマシンと32bitマシンを区別する

[if文の中で変数の値が反映されない](http://dalmore.blog7.fc2.com/blog-entry-79.html)
[CMD.EXEの遅延環境変数の展開 - ふなWiki](http://blue-red.ddo.jp/%7Eao/wiki/wiki.cgi?page=CMD.EXE%A4%CE%C3%D9%B1%E4%B4%C4%B6%AD%CA%D1%BF%F4%A4%CE%C5%B8%B3%AB)
>各コマンドが実行されるときに環境変数が展開されるのではなく、バッチファイルのテキスト行が読み取られるときに展開が行われてしまうから

[cmdのforやif内値代入！setできない原因は遅延環境変数！ _ 自作PCテクニカルセンター](http://jisakupc-technical.info/programing/491/)
> **ECHO は ```<OFF>``` です。**
> このメッセージってechoさせた変数が初期化されて時に出るやつだ・・・。

[コマンド別_echo - CMD.EXE TIPs](http://otnx.jp/CMD/?%A5%B3%A5%DE%A5%F3%A5%C9%CA%CC/echo)
>#空かもしれない環境変数の出力
> そのまま書くと、まずい。echo の直後に何か記号を書く必要がある。

>```bat
setlocal enabledelayedexpansion
set X=
echo %X%            → ECHO は <ONorOFF> です。を出力
echo !X!            → ECHO は <ONorOFF> です。を出力
echo.%X%            → 空行を出力
echo.!X!            → 空行を出力
```

>ただし、echo. 等とすると遅延展開を使う場合、 ! ! の間に , ; = の文字が入ると駄目である。

>```bat
setlocal enabledelayedexpansion
set X=1234567
echo.!X:~0,3!            → X:~0,3 を出力
echo.!X:1=9!             → X:1=9 を出力
set X;Y=123
echo !X;Y!               → 123 を出力
echo.!X;Y!               → X;Y を出力
```

>ここで、echoの直後に書く記号を , ; = のいずれかを使うと大丈夫。

>```bat
setlocal enabledelayedexpansion
set X=1234567
echo,!X:~0,3!            → 123 を出力
echo;!X:1=9!             → 9234567 を出力
set X;Y=123
echo !X;Y!               → 123 を出力
echo=!X;Y!               → 123 を出力
```

[DOS コマンド一覧 - Programming Field](https://pf-j.sakura.ne.jp/program/dos/doscmd/)

- 目的別コマンド一覧
    - [Xcopy](https://pf-j.sakura.ne.jp/program/dos/doscmd/xcopy.htm)
        - ファイル/ディレクトリをコピーします。ファイルの複数コピーやディレクトリの一括コピーに対応しています。
- DOSプロンプト・コマンドプロンプトとは
- 環境変数の使い方
- カレントディレクトリについて
- バッチファイルについて
- 組み込みコマンド

- Unix系シェルコマンドと類似のコマンド一覧

#VBScript/VBA
[ADSI プログラミング デバッグ やっぱり　VBScript がいい !! という方へ – 1 – 管理者は見た！～AD と ILM 一家の秘密～][6]
> 1.プログラム実行位置、変数値などの確認情報を Echo 出力する。

>```vbnet
' エラー発生時、エラー行と、エラー番号を出力する
Sub ErrSub()
    WScript.Echo("Line – "& ErrLine & " : Error Code – "& Err.Number)
End Sub
```
>2.プログラム実行位置、変数値などの確認情報を FileSystemObject 等でログファイル出力する。


[VBAシステム開発‎ > ‎1. VBAの世界‎ > ‎第４章‎ > ‎4.1 COMとは](
https://sites.google.com/site/compositiosystemae/home/vbaworld/upper/whatiscom/delete)

> 4.1.5 オブジェクト消滅の管理
前提として、オブジェクトの本体は、メモリのヒープ領域に確保され、変数に格納されるのは、そのヒープ領域へのポインタのみとなっています。変数はスタック領域に確保され、スコープが外れると変数もクリアされてしまいます。つまり、変数の消滅とオブジェクトの消滅は必ずしも一致しないというのが前提にあります。

> 1. エイリアス(オブジェクト参照)が作成されるとIUnknown : Addrefメソッドが呼ばれ、参照数カウントアップ。NewやCreateObjectによるオブジェクトの生成、オブジェクト変数への代入処理などが該当。

> 2. エイリアスが消滅する、つまり「Set x = Nothing」のコードを実行すると、 IUnknown : Releaseメソッドが呼ばれ、カウントダウン。

> 3. カウント＝０になったとき、オブジェクトはメモリからアンロードされる(自己消滅)。

# Python

## IBM developerWorks
[Pythonでのメタクラス・プログラミング](https://www.ibm.com/developerworks/jp/linux/library/l-pymeta/index.html)

Pythonでのメタクラス・プログラミングの第2回が見つからない

[Python でのメタクラス・プログラミング、第 3 回](https://www.ibm.com/developerworks/jp/linux/library/l-pymeta3.html)

[魅力的な Python_ デコレーターで魔法を身近に - IBM developerWorks](https://www.ibm.com/developerworks/jp/linux/library/l-cpdecor.html)

[魅力的なPython: cursesプログラミング](https://www.ibm.com/developerworks/jp/linux/library/l-python6/index.html)

[魅力的なPython_ Pythonでの関数プログラミング_ 第1回](https://www.ibm.com/developerworks/jp/linux/library/l-prog/index.html)

[Pythonでの関数プログラミング_ 第2回](https://www.ibm.com/developerworks/jp/linux/library/l-prog2/index.htm)

[魅力的なPython_ Pythonでの関数プログラミング_ 第3回](https://www.ibm.com/developerworks/jp/linux/library/l-prog3/index.html)



## unit test

http://adtech-blog.united.jp/archives/173

http://adtech-blog.united.jp/archives/139

http://qiita.com/aomidro/items/3e3449fde924893f18ca

http://qiita.com/phimcall/items/7378ec86fbabdca83257

http://dev.classmethod.jp/testing/python_unittest_mock/

http://c4se.hatenablog.com/entry/2016/07/29/203134


## コードサンプル

[wmi Cookbook — WMI v1.4.9 documentation](http://timgolden.me.uk/python/wmi/cookbook.html)

[windows - How to access wmi in python  - Stack Overflow](https://stackoverflow.com/questions/21075471/how-to-access-wmi-in-python)

[テキストプロセッサとしての Python][3]
> 例題
cat
cmp
cut
head
sort
tail
tee
tr
uniq
・・・

[Python Tips：オブジェクトのメソッドを調べたい - Life with Python](http://www.lifewithpython.com/2014/10/python-get-methods-in-object.html)
> 1.組み込みの関数で調べる

```pycon
In [8]: for attr in dir(obj):
   ...:     if callable(getattr(obj, str(attr))):
   ...:         print(attr)
   ...:         
__add__
__class__
__contains__
__delattr__
__dir__
__eq__
__format__
__ge__
__getattribute__
__getitem__
__getnewargs__
__gt__
__hash__
__init__
__init_subclass__
__iter__
__le__
__len__
__lt__
__mod__
__mul__
__ne__
__new__
__reduce__
__reduce_ex__
__repr__
__rmod__
__rmul__
__setattr__
__sizeof__
__str__
__subclasshook__
capitalize
casefold
center
count
encode
endswith
expandtabs
find
format
format_map
index
isalnum
isalpha
isdecimal
isdigit
isidentifier
islower
isnumeric
isprintable
isspace
istitle
isupper
join
ljust
lower
lstrip
maketrans
partition
replace
rfind
rindex
rjust
rpartition
rsplit
rstrip
split
splitlines
startswith
strip
swapcase
title
translate
upper
zfill

In [9]: 
```



> 2.inspect ライブラリの関数で調べる
> 

```pycon
In [1]: import inspect

In [2]: obj=""

In [3]: inspect.getmembers(obj, inspect.ismethod)
Out[3]: []
inspect.getmembers(obj, inspect.ismethod)
Out[3]: []
inspect.getmembers(obj, inspect.isbuiltin)
Out[5]: 
[('__dir__', <function str.__dir__>),
 ('__format__', <function str.__format__>),
 ('__getnewargs__', <function str.__getnewargs__>),
 ('__init_subclass__', <function str.__init_subclass__>),
 ('__new__', <function str.__new__>),
 ('__reduce__', <function str.__reduce__>),
 ('__reduce_ex__', <function str.__reduce_ex__>),
 ('__sizeof__', <function str.__sizeof__>),
 ('__subclasshook__', <function str.__subclasshook__>),
 ('capitalize', <function str.capitalize>),
 ('casefold', <function str.casefold>),
 ('center', <function str.center>),
 ('count', <function str.count>),
 ('encode', <function str.encode>),
 ('endswith', <function str.endswith>),
 ('expandtabs', <function str.expandtabs>),
 ('find', <function str.find>),
 ('format', <function str.format>),
 ('format_map', <function str.format_map>),
 ('index', <function str.index>),
 ('isalnum', <function str.isalnum>),
 ('isalpha', <function str.isalpha>),
 ('isdecimal', <function str.isdecimal>),
 ('isdigit', <function str.isdigit>),
 ('isidentifier', <function str.isidentifier>),
 ('islower', <function str.islower>),
 ('isnumeric', <function str.isnumeric>),
 ('isprintable', <function str.isprintable>),
 ('isspace', <function str.isspace>),
 ('istitle', <function str.istitle>),
 ('isupper', <function str.isupper>),
 ('join', <function str.join>),
 ('ljust', <function str.ljust>),
 ('lower', <function str.lower>),
 ('lstrip', <function str.lstrip>),
 ('maketrans', <function str.maketrans>),
 ('partition', <function str.partition>),
 ('replace', <function str.replace>),
 ('rfind', <function str.rfind>),
 ('rindex', <function str.rindex>),
 ('rjust', <function str.rjust>),
 ('rpartition', <function str.rpartition>),
 ('rsplit', <function str.rsplit>),
 ('rstrip', <function str.rstrip>),
 ('split', <function str.split>),
 ('splitlines', <function str.splitlines>),
 ('startswith', <function str.startswith>),
 ('strip', <function str.strip>),
 ('swapcase', <function str.swapcase>),
 ('title', <function str.title>),
 ('translate', <function str.translate>),
 ('upper', <function str.upper>),
 ('zfill', <function str.zfill>)]
```

[Basic python file-io variables with enumerate - Stack Overflow](https://stackoverflow.com/questions/6473283/basic-python-file-io-variables-with-enumerate?rq=1)

[Orange – Data Mining Fruitful & Fun ][4]
> Open source machine learning and data visualization for novice and expert. Interactive data analysis workflows with a large toolbox.

[Orange (ソフトウェア) - Wikipedia][5]
> Orangeはオープンソースのデータ視覚化、機械学習、データマイニング用ツールキットである。ビジュアルプログラミング言語として、事前に定義されたウィジェットまたは利用者自身が設計したウィジェットをリンクしてワークフローを作成するインターフェースを介して実装される。またPythonライブラリとして使用できる[2]。オレンジ色のコンポーネントはウィジェットと呼ばれ、単純なデータの視覚化、サブセットの選択と前処理、学習アルゴリズムや予測モデリングの経験的評価まで幅広く活用できる。

##Cython
[深入りしないCython入門 - Qiita](http://qiita.com/pashango2/items/fed0a1c06c7077639edc)
> # Cythonとは？
Pythonは処理速度は決して早くない、むしろ遅い部類である。
そこで、C/C++に変換することにより高速化しようというのがCythonである。

[Cythonでデバッグする - Qiita](http://qiita.com/konnyakmannan/items/8f0c3590c6bcaab49517)
> # はじめに
Cythonのコードをデバッグしたい．
しかし，デバッガが思ったとおりにうごいてくれない．
そもそも，デバッガが起動しない．
いろいろ試してみたところ，デバッガ上でスクリプトを実行することはできた．(ブレークポイントは張れてるみたいだけど，実行をとめてくれなかった．)

[Cython on Raspberry Pi - Qiita](http://qiita.com/nonbiri15/items/d4db55b0b56e226ffcf3)

#データ分析
[やってみよう分析！〜データサイエンティストもコーディング始めました〜 By Fringe81をやってみた](http://qiita.com/f81@github/items/78c0855408317e83aa66)
> ### 第2部  エクセルで学ぶ分析入門
- [第3章：ExcelとMySQLの連携](http://qiita.com/msano/items/fdcc0cbb8e41b988ce2d)
- [第4章：ExcelとMySQLの連携2 csvデータのimport](http://qiita.com/msano/items/7dff8bc241799875b7e9)
- [第5章：Excelの分析ツールとソルバーの活用(回帰、最小2乗法)](http://qiita.com/msano/items/dc96da37ce8ddd4a7c1d)
- [第6章：Excelソルバーの応用(ポートフォリオ最適化)](http://qiita.com/msano/items/46d92aadbfcb1423e1ec)
- [おまけ2-1:Excel VBAで強化学習(Q-learning, ε-greedy / softmax 行動選択)](http://qiita.com/msano/items/e2df51f514b3ccb375ea)
- [おまけ2-2:Excel VBAでモンテカルロ・シミュレーション(メトロポリス法：2次元イジングモデルの例)](http://qiita.com/msano/items/e6d0f941ba038cc1a62c)

> ### 第3部  データ可視化（ビッグデータに限らない）
- [第7章：Google Charts Sankey Diagramを使ってデータ可視化](http://qiita.com/msano/items/6c3d9d10148a683c0d7b)

[Excelだけでワードクラウドをつくってみた！ – コラバド（Colaboad）｜行政との上手なおつきあいを提案する情報メディア！](http://colaboad.jp/article/384/)

- ワードクラウドを作ってみよう！
- オープンデータで試してみよう！


# Electron
[【2017年1月版】今からでも遅くない！Electron入門 - Qiita][7]
[30分で出来る、JavaScript (Electron) でデスクトップアプリを作って配布するまで - Qiita][10]



[10]:http://qiita.com/nyanchu/items/15d514d9b9f87e5c0a29
[7]:http://qiita.com/umamichi/items/6ce4f46c1458e89c4cfc
[6]:https://blogs.technet.microsoft.com/jpilmblg/2009/02/14/adsi-vbscript/
[5]:https://ja.wikipedia.org/wiki/Orange_(ソフトウェア)
[4]:https://orange.biolab.si
[3]:http://www.aihara.co.jp/~taiji/unix-tips/a2asterisk/python-howto-0.html
[2]:https://sites.google.com/site/shinoshino0904/home/programming_tips/kai-fa-huan-jing/batchi-fairu
[1]:http://language-and-engineering.hatenablog.jp/entry/20130502/PatternsOfMSDOSorBAT