PCが重くしている戦犯 TiWorker.exeを殺す

Windowsを起動してしばらくすると、すごく重くなっていることがある。 タスクマネージャーとかで観察していると、どうも原因はTiWorker.exeにあった

TiWorker.exeとは

どうやらWindowsUpdateに関係あるっぽい。

これらはWindows OSに新しいプログラムやモジュール、更新プログラムなどをインストールするために利用されるプログラムやその補助プロセスである。ユーザーによる明示的なインストールの場合だけでなく、例えばWindows Updateによる自動的なバックグラウンドでのインストール時などにも実行されている。

Tech TIPS:Windows OSでよく見かける重いプロセス、ベスト10 - @ITより引用

解決策

Windows10だと自分でWindows Updateを切れないクソ仕様なのでどうしようもない、、、

pythonで配列操作

1〜10までの配列をつくりたい

array = list(range(1,10))
>> [1, 2, 3, 4, 5, 6, 7, 8, 9]

rubyでいうeachをしたい

for num in array:
    print(num)

rubyでいうeach_with_Indexがしたい

array = list(range(1,10))
for i,num in enumerate(array):
    print(i, num)

以下のように表示される

0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9

rubyでいうmapがしたい

例えば配列の全要素に1を足したい場合

非常に汚いやり方だと以下

array = list(range(1,10))
for i,num in enumerate(array):
    print(i,num)
    array[i] = num + 1

pythonにもmap関数はあってそれを使うと以下 phpと一緒でメソッドを先に用意しなくてはいけない

array = list(range(1,10))

def plus(num):
    return num + 1

array = list(map(plus, range(1, 10)))

今回のタスクでは内包記法?ってやつが一番スマートに見えた

array = list(range(1,10))
a = [num+1 for num in array]

Python3環境でMecabを動かす

環境

そもそもMecabが入ってなかったら以下でインストールする

thr3a.hatenablog.com

echo おはよう|mecabで表示されればOK

pythonMecabを使えるように

pip install mecab-python3

サンプル

# coding: utf-8
import MeCab
 
text = '庭には二羽鶏がいる。'
mecab = MeCab.Tagger('mecabrc')
mecab.parse('')

node = mecab.parseToNode(text)
while node:
    print(node.surface, node.feature)
    node = node.next

結果

 BOS/EOS,*,*,*,*,*,*,*,*
庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
二 名詞,数,*,*,*,*,二,ニ,ニ
羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ
鶏 名詞,一般,*,*,*,*,鶏,ニワトリ,ニワトリ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
いる 動詞,自立,*,*,一段,基本形,いる,イル,イル
。 記号,句点,*,*,*,*,。,。,。
 BOS/EOS,*,*,*,*,*,*,*,*

mecab.parse(‘’)の謎

先程のコードで mecab.parse('')の空パースをせずにいきなり文章を投げるとエラーになる事がある。

 BOS/EOS,*,*,*,*,*,*,*,*
.7 名詞,一般,*,*,*,*,庭,ニワ,ニワ
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-47-6ae1b4dc3c53> in <module>()
      8 node = mecab.parseToNode(text)
      9 while node:
---> 10     print(node.surface, node.feature)
     11     node = node.next

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 1: invalid start byte

バグ?っぽいので現状読み込み時の最初に空パースするのが安全だと思う

python3でNo module named sklearnエラー

環境

  • Python3

こんな感じ

~/python/Random-Forest-Example $python estimation.py 
Traceback (most recent call last):
  File "estimation.py", line 2, in <module>
    from sklearn.ensemble import RandomForestClassifier
ImportError: No module named 'sklearn'

解決

apt経由でインストールしろとか言う記事もあるけどpip経由のほうが無難

pip install scikit-learn

Ubuntu 16.04の自動アップデートを無効に設定する

サーバー運用だと自動でアップデートされると都合がわるいときもある。ってことで無効化設定するメモ

ファイルで設定変更する

自動アップデートをするかどうかは/etc/apt/apt.conf.d/20auto-upgradesを書き換える。デフォルトは1なので

root@myubuntu:~# cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

0に書き換える

root@myubuntu:~# cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";

これでおk

コマンドで設定変更する

さすがUbuntu、それ用のコマンドも用意してあった

apt install -y unattended-upgrades

でインストールして

dpkg-reconfigure --priority=low unattended-upgrades

を実行すると有効にする?って聞かれるので、自動アップデートしたければ「Yes」、じゃなければ「No」を選択

実際に書き換えてるファイルは/etc/apt/apt.conf.d/20auto-upgradesっぽい まぁそりゃそうか

動作確認のログは?

/var/log/unattended-upgrades に吐かれる。1日1回とのこと。

参考リンク