NodeJS

node.js + npm のインストール(nvmを利用)

nvmとは

node.jsのバージョン管理ツール。 node.jsは更新が速いので、nvmを利用して、バージョン管理を行うと便利。

node.jsインストール

  • nvmのインストール
  • curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
    #bash

  • Node.jsとnpmのインストール
  • 最新のNode.jsをインストール

    $ nvm install --lts
    Installing latest LTS version.
    Downloading and installing node v12.13.1...
    Downloading https://nodejs.org/dist/v12.13.1/node-v12.13.1-linux-x64.tar.xz...
    ######################################################################## 100.0%
    Computing checksum with sha256sum
    Checksums matched!
    Now using node v12.13.1 (npm v6.12.1)
    Creating default alias: default -> lts/* (-> v12.13.1)

    最新版のnodejsを利用。

    $ nvm use --lts
    Now using node v12.13.1 (npm v6.12.1)

    Node.jsのインストール確認

    node -v
    v12.13.1

    v12.13.1がインストールされていることが確認できた。

  • node.jsのバージョン切り替え
  • 新規に v10.15.3のnode.jsをインストール

     #nvm install 10.15.3
     
     #nvm use 10.15.3
    Now using node v10.15.3 (npm v6.4.1)
    ubuntu@ip-172-31-26-215:~/nec-edge-ui$ nvm ls
    ->     v10.15.3
           v12.13.1
    default -> lts/* (-> v12.13.1)
    node -> stable (-> v12.13.1) (default)
    stable -> 12.13 (-> v12.13.1) (default)
    iojs -> N/A (default)
    lts/* -> lts/erbium (-> v12.13.1)
    lts/argon -> v4.9.1 (-> N/A)
    lts/boron -> v6.17.1 (-> N/A)
    lts/carbon -> v8.16.2 (-> N/A)
    lts/dubnium -> v10.17.0 (-> N/A)
    lts/erbium -> v12.13.1

    MongoDB

    MongoDB ログイン

    ローカルホストへのMongoDBへのログイン

    # mongo [DB名]  -u 「UserのDB名」 -p

    I.E

    # mongo mango_db_name  -u username -p
    
    MongoDB shell version v3.6.10
    Enter password:
    connecting to: mongodb://127.0.0.1:27017/mango_db_nameb?gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("a384d33f-ec64-4c87-b6f6-77503e6ad3df") }
    MongoDB server version: 3.6.10

    リモートホストのMongoDBへのログイン

    $ mongo  --host「ホスト名」 -u 「ユーザー名」   -p [password]    [DB名]
    I.E
    
    $ mongo --host 192.167.8.29:27000 -u mongo -p password_name  database_name
    MongoDB shell version v3.6.18
    connecting to: mongodb://xxxxxxxxx
    Implicit session: session { "id" : UUID("3b058d16-2e6a-4fab-bbac-35abb5a785c9") }
    MongoDB server version: 4.4.3
    WARNING: shell and server versions do not match
    > show dbs
    database_name  0.024GB

    もしくは、

    $ mongo  mongodb://「ユーザー名」:「パスワード」@「IP」:「ポート」/「DB名」

    I.E

    $ mongo mongodb://Username:MongoPassword@192.168.1.5:27017/database_mongo_name
    MongoDB shell version v4.4.

    *ただし、デフォルトでは、リモートからのアクセスは、禁止されているため許可する必要がある。
    /etc/monod.conf`のbindIpに、接続元のIPを入力する。

    # network interfaces
    net:
      port: 27017
      bindIp: 127.0.0.1,10.192.168.1.1,10.165.8.100

    その後、サービスを再起動する。

    systemctl restart mongod.service

    *認証をDisabledにする方法もある。 /etc/monod.conf のsecurity configをコメントアウトして、再起動すると、認証が不要になる。 どうしても、アクセスできないようであれば、一時的にこちらの方法を利用してもよいだろう。

    認証を有効にしている場合、データベースごとにユーザー・passが必要になる。 そのため、ログイン時に以下のように、データベースを指定したうえで、ログインする必要がある。 指定しないと、ログインできたように見えるが、show dbsの結果が出ないなどの問題にあたるかも

    $ mongo --host 192.167.8.29:27000 -u mongo -p passwork_name  database_name
    # security config
    # BEGIN ANSIBLE MANAGED BLOCK
    security:
      keyFile: /etc/mongo_key
      authorization: enabled

    また、データベースごとに、アクセス可能なユーザーが定義されています。 特定のデータベースにアクセスするためには、アクセス権を持っているアカウントでのアクセスが必要となります。 ユーザの作成には、”ユーザー作成”を参照ください。

    MongoDB操作

    DB作成 or DBの切り替え

    use 「DB名」;

    I.E mongo_db_nameという名称のmongoDBを作成する or DBを切り替える場合

    > use mongo_db_name
    switched to db mongo_db_name

    DB一覧参照

    show dbs;

    I.E DBの一覧参照

    > show dbs;
    admin                                      0.000GB
    config                                     0.000GB
    local                                      0.000GB
    alert_db          37.617GB
    compabt_db            0.075GB

    Collection 操作

    Collectoin一覧参照

    > show collections
    collection1
    collecton2

    ドキュメント操作

    ドキュメント一覧参照

    db.<ドキュメント名>.find()
    I.E
    db.collection1.find()

    ドキュメント検索 find()を利用

    ドキュメントのKey,Valueで検索
    db.<コレクション名>.find( { key: value} )

    例えば、コレクション名がcollection1, 検索したいkeyがType, valueがcatの場合

    db.collecton1.find( { Type:  "cat"} )

    なお、And検索は、以下の通り。

    db.<コレクション名>.find( { key: value, key2: value2 } )
     ワイルドカードで検索。

    ワイルドカードの検索は、$regexを利用する。 KeyがType、Valueにcatが含まれているドキュメントを検索する。

    db.collection1.find({Type : {$regex : "cat" } })
    最新のドキュメントから5件を出力(idが最新のドキュメントを検索)
    db.<コレクション名>.find().sort({_id: -1}).limit(5)

    ドキュメント名がcollection1から最新の5件を検索。

    db.collection1.find().sort({_id: -1}).limit(5)
    ドキュメントの検索結果を見やすくする(成形された結果を出力)

    検索コマンドの最後に.pretty()を追加することで、成形された結果が出てくる。

    db.<コレクション名>.find().sort({_id: -1}).limit(5).pretty()

    *注意点として、外部からmongoにアクセスする場合、以下のように、find内の検索クエリの”をエスケープする必要がある。 mongo --host 192.168.10.25:27010 --eval "db.collection1.find({Type : \"cat\"})" database_name -u mongo_user -p mongo_pass

    特定のフィールドのみを出力する

    例えば、出力結果がJson形式でいかのようになっていたとします。

    {
       "id" :{
          "date": {
              "name": "A-san
           }   
       }
    }

    nameフィールドのみを取り出したい場合は、以下のようにします。

    db.alerts.find({} , {'id.date.name':1})
    日付で検索(特定の日時より新しい日付で検索)

    TimeStampが、2021-01-05T10:50:19より新しい場合。

    db.<コレクション名>.find({ timestamp : { "$gt":  ISODate('2021-01-05T10:50:19')}})

    xx以上の場合は$gte xxより大きい場合は、$gt xx以下の場合は、$lte xx寄居小さい場合は、$lt

    ドキュメントのデータを集計(加算する) aggregate()を利用

    aggregateの基本的な使い方
    db.コレクション名.aggregate([{$match: {検索条件}, {$group: {集計条件}}}] 
    $matchは検索条件、$groupは集計の条件
    $matchに関しては省略が可能

    例えば、以下のようにtype、 timestamp , countからなるデータが保存されていたとします。

    { "type" : "Atype",  "timestamp" : ISODate("2022-01-01T07:02:29Z"),  "count" : 4},
    { "type" : "Btype",  "timestamp" : ISODate("2022-01-14T02:42:33Z"),  "count" : 13),
    { "type" : "Btype",  "timestamp" : ISODate("2022-01-12T12:32:29Z"),  "count" : 34}、
    { "type" : "Ctype",  "timestamp" : ISODate("2022-01-12T12:32:29Z"),  "count" : 34}

    ここから、typeがBtypeのもので、かつ、timestampが2022-01-12T00:00:00+09:00以降のものだけ検索し、そのcountを加算するような操作は、以下のようなqueryになります。

    db.alerts.aggregate(   {$match: {Type: "Btype", timestamp: {$gt: ISODate("2022-01-12T00:00:00+09:00")  } }  } ,  { $group:  { _id: "$Type", total:  { $sum: "$count" } } }      )

    まず、$matchで検索条件を指定します。 次に、Typeのフィールドでグルーピングします。$groupの_id で指定されてる値がグルーピングする対象です。 そして、$sumで、countフィールドの値を加算します。 結果は以下のようになるはずです。

    { "_id" : "Btype", "total" : 47 }

    ドキュメントの任意のデータを出力する $projectを利用

    projectの基本的な使い方

    aggregate()内で利用して、任意のデータフィールドを表示させます。SQLのselect col1, col2, col3 from DB; のようなイメージです。

    例えば、以下のようなデータがあったとします。

    { "Type": "ABCDtype", "timestamp" : ISODate("2022-01-24T01:46:01Z"), "total" : 1 , "count" : 12 }
    { "Type": "ABCDtype", "timestamp" : ISODate("2022-05-22T11:36:02Z"), "total" : 1 , "count" : 12 }
    { "Type": "CDtype", "timestamp" : ISODate("2022-09-12T09:49:02Z"), "total" : 1 , "count" : 12 }
    { "Type": "Dtype", "timestamp" : ISODate("2022-12-24T03:41:141Z"), "total" : 1 , "count" : 12 }

    以下のQueryは次のように動きます。

    db.data.aggregate(   {$match: {Type: "ABCDtype" }  {$project: { "timestamp": 1,  total: "$total" ,  count: "$count" ,  result : {"$divide" : ["$total", "$count"]} } } )
    1. $matchでTypeがABCDtypeのデータを選択します。
    2. そのなかから、$projectで出力したい、データを選択します。この場合は、timestamp, total, count, resultが出力されます。  timestamp:1とすることで、データが出力され、表示したくないときは、timestamp:0とします。  また、resultのフィールドは、新規に追加しています。resultの中身は、各データの$totalを$countで割った(divide)値を表示します。

    このように任意の結果を$projectで加工して、表示できます。

    mongodb外部からの操作

    以下のように、 --evalコマンドを利用して、Mongo外から操作ができる。 ただし、外部から、コマンドを実行できるように設定を事前に実施する必要がある。 ”リモートホストのMongoDBへのログイン”を参照のこと。

    mongo --host 192.168.10.2:27012 --eval "db.collection1.find().sort({_id: 1}).limit(1)"  mongo_db_name-u mongo_user -p mongo_password

    *注意点として、Queryで(とくにfind()で)ダブルクウォテーション”やシングルクウォテーションが利用されるが、escapeしないと、うまく検索できない場合がある。

    コレクションデータの全件削除

    db.コレクション名.remove({});

    表示するコレクションの上限の設定を変更する

    find()などで検索した結果の出力上限は20に設定されています。 これを変更するには、以下のようにします。出力上限が40になります。

    DBQuery.shellBatchSize = 40

    Mongo DBの障害調査

    Mongoの設定ファイル

    Mongの設定ファイルは通常以下に保存される。

     /etc/mongod.conf

    また、Mongのデータ保存バスは設定ファイル(mongod.conf)の”Strage:”で設定される。

    #cat /etc/mongod.conf
    
    # Where and how to store data.
    storage:
      dbPath: /var/lib/mongodb
      journal:
        enabled: true

    mongodが起動しない場合、上記のdbPath先がなく、デーモンが起動しない場合があるので、パスの確認が必要。

    データ容量を調べる db.status()

    db.status()でデータサイズを調べることができます。。 dataサイズあたりを見ればよいです。

    > db.stats()
    {
            "db" : "pulse_database_alerts_alert",
            "collections" : 2,
            "views" : 0,
            "objects" : 477256,
            "avgObjSize" : 363.51303074241076,
            "dataSize" : 173488775,
            "storageSize" : 164175302656,
            "indexes" : 5,
            "indexSize" : 41529344,
            "totalSize" : 164216832000,
            "scaleFactor" : 1,
            "fsUsedSize" : 380248883200,
            "fsTotalSize" : 386358312960,
            "ok" : 1
    }

    ユーザー関連

    ユーザー一覧表示

    db.system.users.find()

    ユーザ作成

    ユーザは基本的に、データベースごとに作成します。データベースごとに作成されたユーザがそのデータベースへのアクセス権が付与されます。 ただし、adminデータベースで作成したユーザは、管理者となれます。

    //データベースへの切り替え
    # use ”データベース名”
    
    
    // 特定のデータベースのみ管理者権限をもつユーザの作成
    
    > db.createUser(
      {
        user: "ユーザ名",
        pwd: "パスワード",
        roles:
        [
          {
            role: "userAdmin",
            db: "データベース名"
          }
        ]
      }
    )

    PostgreSQL

    PostreDB コマンド備忘録

    PostgreDBへのログイン方法

    psql -d [database name] -U [User name] -h [host] -p [port] IE. hostが10.165.8.60、portが5432, User名がpostgres, DB名がposgre_dbにアクセスする。

    psql  -d posgre_db -U postgres -h 10.165.8.61 -p 5432

    インストール直後のPostgreDBへ、ログインする際の注意

    PostgreDBをインストールした直後のログインはPeer認証となっている。

    Peer Authentication(以下Peer認証) とは postgresql に ローカルから接続する際に, 接続を試みるプロセスの実効ユーザ(OS側のユーザ)とデータベースへのログインユーザ(データベース側のユーザ)が一致している場合のみ接続を許可する認証方法である.

    PostgresDBをインストール時に通常は、postgresユーザが作成されるはず。ただし、パスワードは設定されていない。

    したがって、 1)postgres ユーザのパスワードを設定

    $ sudo passwd postgres

    2)postgresユーザになり、ログインする必要がある。

    $su - postgres

    3)ログイン

     psql  -U postgres
    psql: FATAL:  Peer authentication failed for user "postgres"
    ubuntu@ip-172-31-26-117:~/EVA/EVA_v3.3_beta2/execution-framework$ su postgres
    Password:
    postgres@ip-172-31-26-117:/home/ubuntu/EVA/EVA_v3.3_beta2/execution-framework$ psql
    psql (9.5.19)
    Type "help" for help.
    

    データベース操作

    データベースサービスStatus確認

    ・サービスに登録されているか確認

    $ systemctl list-unit-files -t service | grep postgres
    postgresql-9.6.service                        enabled 

    ・起動

    systemctl status postgresql-9.6

    データベース一覧参照

    # \l
                                                   List of databases
                     Name                 |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
    --------------------------------------+----------+----------+-------------+-------------+-----------------------
     postgres                             | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
     database__manager_db | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
     database_system                | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
     template0                            | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
                                          |          |          |             |             | postgres=CTc/postgres
     template1                            | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
                                          |          |          |             |             | postgres=CTc/postgres
    (5 rows)

    データベース選択

    # \c <DB_NAME>

    I.E postgresという名称のDBが選択される。

    \c postgres
    
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
    You are now connected to database "postgres" as user "postgres".

    テーブル操作

    テーブル一覧表示

    # \d
                            List of relations
     Schema |               Name               |   Type   |  Owner
    --------+----------------------------------+----------+----------
     public | memberships                      | table    | postgres
     public | memberships_memberid_seq         | sequence | postgres
     public | notifications                     | table    | postgres
     public | notifications_notificationid_seq | sequence | postgres
     public | persons                           | table    | postgres
     public | persons_personid_seq     | sequence | postgres
     public | pictures                          | table    | postgres
     public | pictures_                    | sequence | postgres
    
    (8 rows)

    補足: \dコマンドを利用すると、Sequenceも表示される。 \dtコマンドでは、Tableのみの表示となる。

    Sequenceとは連番となる一意な整数を生成するデータベースのオブジェクトです。 一般的にシーケンスは、ユーザIDや登録番号等の主キーを生成する際によく利用されます。

    テーブルのスキーマの詳細を表示する。

    # \d <テーブル名>

    I.E personsという名称のテーブルのスキーマを表示する。

     #\d persons
    
                                               Table "public.persons"
           Column       |           Type           |                         Modifiers
    --------------------+--------------------------+------------------------------------------------------------
     personid           | integer                  | not null default nextval('persons_personid_seq'::regclass)
     firstname          | character varying(80)    | not null
     middlename         | character varying(80)    | not null
     lastname           | character varying(80)    | not null
     gender             | character varying(15)    | not null
     age                | integer                  | not null
     address            | character varying(500)   | not null
     companyname        | character varying(100)   | not null
     type               | character varying(50)    | not null
     phone              | character varying(20)    | not null
     email              | character varying(50)    | not null
     documenttype       | character varying(25)    | not null
     documentnumber     | character varying(25)    | not null
     documentexpirydate | date                     | not null
     notes              | text                     |
     comments           | character varying(500)   |
     matchingthreshold  | real                     | not null
     additiontime       | timestamp with time zone | not null default now()
    Indexes:
        "persons_pkey" PRIMARY KEY, btree (personid)
        "person_index" btree (firstname, middlename, lastname, gender, age, address, companyname, type, phone, email, documenttype, documentnumber, documentexpirydate, matchingthreshold, additiontime)
    Referenced by:
        TABLE "memberships" CONSTRAINT "memberships_personid_fkey" FOREIGN KEY (personid) REFERENCES persons(personid) ON DELETE CASCADE
        TABLE "pictures" CONSTRAINT "pictures_personid_fkey" FOREIGN KEY (personid) REFERENCES persons(personid) ON DELETE CASCADE
    

    テーブル内のデータをすべて確認

    select * from <テーブル名>

    I.E personsというテーブルのデータをすべて表示する。

    # select * from persons;
     personid |          firstname          | middlename | lastname | gender  | age | address | companyname | type |    phone     | email | documenttype | documentnumber | documentexpirydate | notes | comments | |         additiontime
    ----------+-----------------------------+------------+----------+---------+-----+---------+-------------+------+--------------+-------+--------------+----------------+--------------------+-------+----------+-------------------+-------------------------------
            1 | testname_00000001           |            |          | unknown |   0 |         |             |      | 000-000-0000 |       |              |                | 5000-01-01         | { }   |          |                 0 | 2019-03-12 08:17:06.376982+09
            2 | testname_00000002           |            |          | unknown |   0 |         |             |      | 000-000-0000 |       |              |                | 5000-01-01         | { }   |          |                 0 | 2019-03-12 08:17:07.065884+09

    レコードを削減する

    DELETE FROM テーブル名 WHERE 条件式;

    I.E schoolテーブルから、studentnamがSato-san のレコードを消す場合。

    delete  from school where studentname='Sato-san';

    DBからログアウト

    #\q

    Postgres 管理

    Posgresのデータ保存先、confファイル保存先ディレクトリの確認方法

    # sudo -u postgres psql
    psql (9.5.21)
    Type "help" for help.
    
    postgres=# show data_directory;
            data_directory
    ------------------------------
     /var/lib/postgresql/9.5/main      ★ここが保存Direcotry
    (1 row)
    
    postgres=# show config_file ;  ★こちらは、confファイルの設定先
                   config_file
    ------------------------------------------
     /etc/postgresql/9.5/main/postgresql.conf
    (1 row)
    

    テーブル作成、データの挿入

    createコマンドでテーブルを作成する。 userテーブルを作成し、name,email、idのスキーマーを作成する。

    # create table user(name varchar(20) , email varchar(20) , id integer) ;

    データの挿入

    insertコマンドでデータをInsertする。

    # insert into table values ('Yamada', 'yamada@test.com', 1);
    INSERT 0 1

    データの削除

    test=# delete FROM usertable where id=1;
    DELETE 2

    Postgre 構築

    Postgresを簡単に構築したいとき。Dockerでの起動方法

    DBNAME=postgres
    PGUSER=postgres
    PGPASS=postgres
    PORT=35432
    
    docker run --rm --name postgres -p $PORT:5432 \
      -e POSTGRES_USER=$PGUSER \
      -e POSTGRES_PASSWORD=$PGPASS \
      -e POSTGRES_DB=$DBNAME \
      -d postgres:9.6 postgres -N 200   postgres:12-alpine

    Postgre データダンプ

    以下のコマンドで、データのdumpを行うことができる。

    pg_dumpコマンドによるDump

     pg_dump    -h [IP] -p [port] -U [ユーザー名] > [dump ファイル名]
    I.E.
     pg_dump    -h 192.168.10.3 -p 5432 -U postgres > pgdump

    pg_dumpall によるダンプとリストア

    pg_dumpallによりデータベースクラスタ全体のバックアップを取ることができます。

    pg_dumpall -U [user名] -p [ポート番号] -h [PostgreのIP] 

    I.E

    pg_dumpall  -U postgres -h 10.165.8.57 -p 5432 > pg_dumpall

    以下のコマンドで、pg_dumpによって出力されたファイルのリストアができる。

    psql -U [user名] -p [ポート番号] -h [PostgreのIP] -f [pg_dumpallのダンプファイル]

    I.E

    psql -U postgres -p 5432  -h 127.0.0.1 -f pg_dumpall

    PostgreDB Schema スキーマ

    PostgreDBのSchemaは、テーブルをまとめたものになります。 *DBによって、Schemaの考え方は、異なるので注意。

    schemaの確認方法

    デフォルトでは、publicが定義されています。

    =# \dn
       List of schemas
      Name  |   Owner
    --------+------------
     test    | postgresql
     public | postgres
    (2 rows)
    

    schemaの作成

    # create schema test1;
    CREATE SCHEMA
    

    schemaの切り替え

    デフォルトでは、すべてpublic schemaとなるので、public以外のスキーマを利用するときは、切り替える必要があります。 以下のコマンドで、schemaを切り替えられます。以後、切り替えたschema内での操作となります。

    # set search_path TO test1;
    SET
    

    postgresql のセッション

     セッション(session)の確認

    以下のコマンドでpostgresqlのセッションを確認できます。

    select * from pg_stat_activity where datname = 'データベース名';
    

    以下のような結果が返ってきます。

     datid |  datname  |  pid  | usesysid | usename  | application_name | client_addr | client_hostname | client_port |         backend_start         | xact_start |          query_start          |         state_change          | wait_event_type | wait_event | state | backend_xid | backend_xmin |           query           |  backend_type  
    -------+-----------+-------+----------+----------+------------------+-------------+-----------------+-------------+-------------------------------+------------+-------------------------------+-------------------------------+-----------------+------------+-------+-------------+--------------+---------------------------+----------------
     41675 | DATABSEName1| 37424 |       10 | postgres | psql             | ::1         |                 |       41220 | 2024-01-24 10:03:43.558152+00 |            | 2024-01-24 10:04:13.385401+00 | 2024-01-24 10:04:13.386181+00 | Client          | ClientRead | idle  |             |              | select * from setting   ; | client backend
    (1 row)
    

     セッションの切断

    接続中のセッションを切断するSQLです。
    DBを削除する際にセッションが残っていると削除できません。このような場合に、sesshonを削除することで、DBも削除できます。

    SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHEREdatname = 'データベース名'; 
    

    vimの設定例(molokai)

    vim の設定例

    1)~/.vimrcに記載する。

    set tabstop=3
    set autoindent
    set number
    map <C-h> :Gtags -f %<CR>
    map <C-j> :GtagsCursor<CR>
    map <C-n> :cn<CR>
    map <C-p> :cp<CR>
    map <C-g> :Gtags
    colorscheme  molokai
    hi Comment ctermfg=gray

    2) 以下のコマンドを実行

    $ mkdir ~/.vim
    $ cd ~/.vim
    $ mkdir colors
    
    $ git clone https://github.com/tomasr/molokai
    
    $ mv molokai/colors/molokai.vim ~/.vim/colors/

    tmux設定例

    tmuxの設定例

    ~/.tmux.confに記載する。

    # C-bのキーバインドを解除する
    unbind C-b
    
    # prefixキーをC-aに変更する
    set -g prefix C-q
    
    set-option -g status-left '#[fg=cyan,bg=#303030]#{?client_prefix,#[reverse],} #H[#S] #[default]'
    
    # tmuxを256色表示できるようにする
    set-option -g default-terminal screen-256color
    set -g terminal-overrides 'xterm:colors=256'
    
    set -g default-terminal "xterm"

    numpy の基礎 覚書

    numpy 配列の基礎

    1次元の表記

    import numpy as np
    A = np.array([1,2,3,4])
    print(A)  # [1 2 3 4]
    np.ndim(1)  #dimension 1次元
    

    2次元の表記

    import numpy as np                                                                                           
     
    A = np.array([[1,2],[3,4],[4,5]])
    print(A)  
    #[[1 2]
    #[3 4]
    #[4 5]]
    
    print(np.ndim(A))  #2次元
    print(A.shape)  #(3,2)  //3行2列
    

    連続した行列の作成, 行列の再作成(Reshape)

    import numpy as np
    
    array = np.arrange(10) // 0~9までのベクトルを作成
    print(ar)       // [0 1 2 3 4 5 6 7 8 9]
    
    print(ar.reshape([2, 5]))
    //[[0 1 2 3 4]
    // [5 6 7 8 9]]
    
    print(ar.reshape([2, 5]).shape)    //np.shapeで行列の方が分かる 
    

    行列の積

    import numpy as np                                                                                           
     
    A = np.array([[1,2],[3,4],[4,5]])
    B = np.array([[1,2,3],[3,4,5]])
     
    C = np.dot(A,B) 
    print(C)
    #[[ 7 10 13]
    # [15 22 29]
    # [19 28 37]]
    

    Proxy配下でdockerflie がbuildできない

    問題

    OS側の環境変数でProxyの設定は行っているが、Dockerfileを利用してdocker buidを行うと、Proxyの問題で、Buildできなかったです。 具体的には、以下のapt-keyでkeyが追加できない。。

    apt-key adv  --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub

     

    解決方法1

    dockerfile自体に、Proxyの設定を追加して解決した、具体的には以下の変数をdockerfileに追加して解決しました。

    ENV http_proxy 'http://proxyURL:port'
    ENV https_proxy 'http://proxyURL:port'

    解決方法2

    dockerファイル作成コマンドのオプションに、Proxyを設定することも可能です。

     docker build . --build-arg http_proxy=proxy.com:8080 --build-arg https_proxy=proxy.com.8080