カテゴリー: tech

  • numpyで平均を求める

    numpyで平均を求める

    はじめに

    機械学習を勉強しているとPythonが避けて通れない。
    中でもnumpyはとても重要だったりする。

    基本的な使い方から調べた。

    使い方

    何はともあれinstall

    pipで一発。

    pip3 install numpy 

    import

    import numpy as np

    以降、npとして利用する

    変数に入れる

    x = np.array([1,2,3])
    

    1,2,3を配列として入れる

    結果は

    [1 2 3]

    変数の中の平均を取る

    この配列の中の平均を計算する
    一つ一つ足して、カラム数で割る・・・というような処理は不要で、

    .mean()メソッドを利用することで自動で計算することが可能。

    xaverage =x.mean()
    print (xaverage)
    

    結果は以下のとおり

    2.0

    中心化を行う

    単回帰分析の場合、求めるのは

    • 傾き
    • 切片

    の2つ。
    この中心化を行うことで切片を計算する事が不要になる。

    やることは、全てのカラムから、平均分を引くだけ。

    xc = x - x.mean()
    print (xc)

    詳細はこちら  http://www.bokupy.com/detail/93#single-regression3

    結果は以下のとおり

    [-1.  0.  1.]
    [1 2 3]から全てのカラムが平均2が引かれている事がわかる。
  • pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

    はじめに Introduction

    macでpip installを行った際、以下のようなエラーが出てinstallができなかった。

    When pip install was performed on mac, the following error occurred and installation failed.

     

    $ pip3 install numpy
    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    Collecting numpy
      Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
      Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
      Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
      Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
      Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/numpy/
      Could not fetch URL https://pypi.org/simple/numpy/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/numpy/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
      Could not find a version that satisfies the requirement numpy (from versions: )
    No matching distribution found for numpy
    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

    原因 Cause of the problem

    SSL通信ができない?

    Can’t SSL communication?

    対処 countermeasure

    admin権限を持つアカウントで同様のコマンドを実行したところ、無事インストールができた。 おそらく権限周りの問題が根幹にあるようだ。

    When I executed the same command with an account with admin privileges, the installation was successful. Perhaps there is a problem around authority.

  • VMware ESXiにmacからsshする

    VMware ESXiにmacからsshする

    はじめに

    VMware ESXiのホストにログインすることは可能だが、そのログイン方法は少し特殊だ

    ESXiでSSHを有効にする

    デフォルトでESXiはsshが無効になっている。 ESXiシェルとSSHがデフォルトで停止されている。まずはこれを有効にする

    macからESXiへSSHする

    ssh -l user名、 IPで接続する

    ssh -l root 192.168.0.x

    ちなみにシャットダウンは

    poweroff

    コマンドで行う。

  • VPC の作成中にエラーが発生しました: Performing this operation would exceed the limit of 5 NAT gateways

    VPC の作成中にエラーが発生しました: Performing this operation would exceed the limit of 5 NAT gateways

    概要

    VPCを作成する際に出力されたエラー

    原因

    NAT Gatewayの上限に抵触している。

    対処

    上限に達してしまっているので上限を増やす必要がある。

    AWSコンソール上のサポートから問い合わせることで対処が可能

    東京リージョンの「アベイラビリティーゾーン当たりの NAT ゲートウェイ上限数」を10へと変更することによって対応可能。

     

  • AWS ECRにimageをpushする

    AWS ECRにimageをpushする

    はじめに

    ECRのリポジトリへimageをpushする手順を記載する

    準備

    手元の環境にimageがあること(docker imageコマンドでimageが出てくること)

    $ docker images
    REPOSITORY                        TAG                  IMAGE ID            CREATED             SIZE
    sumito_http                          latest               54f5e642e4ae        5 weeks ago         1.1GB

    手順

    ECRにリポジトリを作成する

    ECRへpush用のタグをつける

    $ docker tag sumito_http 123456789.dkr.ecr.ap-northeast-1.amazonaws.com/dmp/sumito:latest 

    pushする

    docker push 123456789.dkr.ecr.ap-northeast-1.amazonaws.com/dmp/sumito:latest

    この際

    “` no basic auth credentials “`

    と表示される場合はログイン処理が必要になる

    $ aws ecr get-login --no-include-email --region ap-northeast-1

    表示されたコマンドを実施して

    “` Login Succeeded “`

    と表示されればOKだ。

    再度pushするとContainer imageがECRに格納される

  • コマンドでwordpressのuserを確認する

    コマンドでwordpressのuserを確認する

    はじめに

    wordpressのユーザー一覧をgit管理したいことがある。
    wpコマンドを使うことで実現可能だ。

    手順

    $ /usr/local/bin/wp  user list --path='/home/kusanagi/cms/DocumentRoot'
    +----+-------------------+-------------------+-------------------+--------------------+---------------+
    | ID | user_login        | display_name      | user_email        | user_registered    | roles         |
    +----+-------------------+-------------------+-------------------+--------------------+---------------+
    | 1  | admin             | admin             | aaa@sumito.jp     | 2013-09-04 01:30:4 | administrator |
    | 12 | design            | design            | bbb@sumito.jp     | 2018-08-21 07:46:4 | editor        |
    | 15 | ccc               | ccc               | ccc@sumito.jp     | 2018-10-01 05:22:5 | ccc           |
    +----+-------------------+-------------------+-------------------+--------------------+---------------+
    $ 
    

    まとめ

    あとは定期的にこの処理をcronのようにjobとして動かし、
    gitへ通知すればスタッフの離職時の棚卸しなどが容易になる。

  • 手動でログローテートを行う

    手動でログローテートを行う

    はじめに

    手動でログローテートを行いたい時があるので、その対応。

    手順

    logrotate -d /etc/logrotate.d/syslog

    -vオプションを追加すると詳細が表示される 手動実行する際は-fで実行する

    logrotate -f /etc/logrotate.d/syslog

     

  • Linuxでユーザーを複数のグループに追加する方法

    Linuxでユーザーを複数のグループに追加する方法

    Datadogを使用していると、ログにアクセスできないパーミッションエラーが発生することがあります。このエラーは、Linuxで一般的なものです。解決するには、/var/log/syslogを参照できるようにする必要があります。

    以下のコマンドを使用して、/var/log/syslogにアクセスできることを確認します。

    # ls -l /var/log/syslog
    -rw-r----- 1 syslog admin 79639 Jan  2 9:09 /var/log/syslog

    DatadogのエージェントのUID/GIDを確認し、セカンダリーグループ(admin)に追加します。グループを上書きしないように注意してください。

    datadogの agentの UID/GIDを確認

    # id dd-agent
    uid=113(dd-agent) gid=118(dd-agent) groups=118(dd-agent)

    セカンダリーグループ(admin)に追加

    仮に-aを忘れてしまうと、所属しているグループを上書きしてしまいます。

    usermod -aG admin dd-agent

    確認

    # id dd-agent
    uid=113(dd-agent) gid=118(dd-agent) groups=118(dd-agent),4(admin)

    これで、Datadogからログを取得できるようになります。

     

  • dockerを長期的に使いDISKを圧迫した時の対処

    dockerを長期的に使いDISKを圧迫した時の対処

    はじめに

    dockerを長期的に運用していると、気がついたらdiskがなくなってることがある。

    # df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda3        16G   14G  1.2G  93% /

    気がつけば93%もう後がない状態。

    対処

    dockerの不要なボリュームを削除することで対処可能

    まずは使われていないdiskを確認する。

    # docker volume ls -f dangling=true
    DRIVER              VOLUME NAME
    local               0d0c5c35a033c3fbf35bc8eb3b1f9a9612ece1c622cf0ad357b6e20084350760
    local               9aea772f64985c7a271f5d20c519b4a59ccd2219030f961c37a1cfb0130f2d35
    local               55ccc89f56ebe15c4091cb4b196877ea08e9dd93ecb26fd17b941baf03458b58
    local               93ef3cb97887f0d357332afbcebb5c096f7e8eaae4bcfd2285042e51d53771c7
    local               529d774ed12a837ceb118b56ef16bd2ad9420973cd76f1a76575c21e9b0719ff
    local               543b74740c96e9925d66546fd56b2e8eb3e2254706c0ae10e37dfd54c3719033
    local               635117bef58efbcaff9d0b8aab47702d2ad271bb5fffd4e0ab8f700e3d5aa2f5
    local               069661160a320af109bccf5099d1f4b7f5a2003911ba8d029075c45b145873d1
    local               af62d09de828c78ed362278a8bda4120649dadb5e3d824e65c6309c0293d7d37
    local               c8e396a769f4c4e8a0829f9b230fec92b282b9b36575218d25b89bf9891349d5
    local               d190aecd81bc16520210af668c3ea0fec32a1b1a3d8554a058c5cef65f87de09
    local               dcd49f633c6c0fbb7307788cc1521b6cc9c851fdd52aab9f0af7687ed3a1ab3e
    local               e0b22e274022a38e0aedbd6db1b950c3084d1f463e5f1a47b79d5e38d61e5bcb
    local               e051a42bc994b73f704863559f818289a4c38ec6f314b99be365e9a6484ac604
    local               ebad853173f65bd381eb52f43493825a8e3e9c19bbaaa7dcfd6b03f39611cf4f
    #

    不要なdiskがぞろぞろ出てくる。

    パイプで繋いでxargsで削除。

    # docker volume ls -qf dangling=true | xargs docker volume rm
    0d0c5c35a033c3fbf35bc8eb3b1f9a9612ece1c622cf0ad357b6e20084350760
    9aea772f64985c7a271f5d20c519b4a59ccd2219030f961c37a1cfb0130f2d35
    55ccc89f56ebe15c4091cb4b196877ea08e9dd93ecb26fd17b941baf03458b58
    93ef3cb97887f0d357332afbcebb5c096f7e8eaae4bcfd2285042e51d53771c7
    529d774ed12a837ceb118b56ef16bd2ad9420973cd76f1a76575c21e9b0719ff
    543b74740c96e9925d66546fd56b2e8eb3e2254706c0ae10e37dfd54c3719033
    635117bef58efbcaff9d0b8aab47702d2ad271bb5fffd4e0ab8f700e3d5aa2f5
    069661160a320af109bccf5099d1f4b7f5a2003911ba8d029075c45b145873d1
    af62d09de828c78ed362278a8bda4120649dadb5e3d824e65c6309c0293d7d37
    c8e396a769f4c4e8a0829f9b230fec92b282b9b36575218d25b89bf9891349d5
    d190aecd81bc16520210af668c3ea0fec32a1b1a3d8554a058c5cef65f87de09
    dcd49f633c6c0fbb7307788cc1521b6cc9c851fdd52aab9f0af7687ed3a1ab3e
    e0b22e274022a38e0aedbd6db1b950c3084d1f463e5f1a47b79d5e38d61e5bcb
    e051a42bc994b73f704863559f818289a4c38ec6f314b99be365e9a6484ac604
    ebad853173f65bd381eb52f43493825a8e3e9c19bbaaa7dcfd6b03f39611cf4f
    #

    93% -> 72%に削減できた

    # df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda3        16G   11G  4.3G  72% /

    コマンドの詳細

    dockerの -f “dangling=true” はフィルタオプション。

    “dangling=true” はどのコンテナにも紐付いていないボリュームを抽出する事が可能。

     

  • Cloud Storageをコマンドで操作する

    Cloud Storageをコマンドで操作する

    はじめに

    awsであればファイル置き場にS3を使うことも多いだろう。
    s3への転送したい場合はaws s3 cpコマンドを使うことが多い。 似たようなことをGCPでCloud Storageに対して行いたいことがある。

    コマンド

    ローカルからファイルをコピーする場合 gsutilコマンドを利用する

    gsutil cp /tmp/hogehoge gs://bucket/dir/

    削除する場合は

    gsutil rm gs://bucket/dir/hogehoge

    オフィシャル情報はこちら https://cloud.google.com/storage/docs/gsutil?hl=ja

    おまけ

    ちなみにプログラム(Python)に組み込む際はこちら https://tsukada.sumito.jp/2018/11/20/gcp-python-cloud-strage-upload/