Qstairs

現役AIベンチャーCTOの知見、画像認識(人工知能、Deep Learning)を中心とした技術ノウハウをアップしていきます

広告

【Chrome Remote Desktop】Macのcommandを接続先のControlに割り当てる

困りごと

MacでChromeRemoteDesktopを使用し、WindowsLinuxにアクセスした際、 commandキーがControlの役割をしないので作業し辛いです。

解決方法

以下の画像のように、 マッピング元をMetaLeft(これがcommandキー)に設定し、 マッピング先にControlLeftを設定します。 さらに、 マッピング元をMetaRight(これがcommandキー)に設定し、 マッピング先にControlRightを設定します。

f:id:qstairs:20210715184535p:plain
キーマップングの設定

上記で解決!!

他のキーについて知りたい人は以下から

UI Events KeyboardEvent code Values

【AI】知らないの?データバージョン管理ツール「DVC」とS3を連携する方法

概要

DeepLearningを含む機械学習では学習済みモデルを使用します。 学習済みモデルはデータ量が大きく、github等のコード管理ツールでは管理が難しいです。 そこで便利なのがデータバージョン管理ツール「DVC」になります。 今回はその「DVC」をAWSのS3と連携して使用する方法について簡単に紹介します。

前提

  • Pythonセットアップ済み
  • AWSのconfigureを設定済み

設定

pip install dvc["s3"]
dvc init
dvc remote add -d {name} s3://{bucket}/{prefix}

ファイルやフォルダの追加

dvc add {file path}
dvc push

ファイルやフォルダの取得

dvc pull

最後に

いかがでしょうか?こんなに簡単にデータを管理できるとは良い時代ですね! どんどんモデルを作って管理していきましょう!

【Kotlin】Windowsセットアップ手順 2021/7時点

WindowsでKotlinをセットアップする手順を紹介します

環境:Windows10 pro

ステップ

  1. JDKインストール
  2. Kotlinインストール
  3. 環境変数設定
  4. 動作確認

1. JDKインストール

まずはJDKをダウンロードします。
Java SE - Downloads | Oracle Technology Network | Oracle 日本
投稿時点ではJava SE 11 (LTS)を選びました。基本的に(LTS)がついているものを選べばOK!!

※久々にJDKをダウンロードしましたが、いつの間にかアカウント登録が必要になっていました。。。

f:id:qstairs:20210705120029p:plain
JDKインストール

ダウンロード後、ZIPファイルを解凍。

2. Kotlinインストール

続いてKotlinをダウンロードします。

以下ページの下部に移動し、「kotlin-compiler-1.5.20.zip」をダウンロードします。

Release Kotlin 1.5.20 · JetBrains/kotlin · GitHub

投稿時点では1.5.20を選びました。基本的にKotlin releases | Kotlinのトップのバージョンを選べばOK!!

f:id:qstairs:20210705120442p:plain
kotlinダウンロード

ダウンロード後、ZIPファイルを解凍。

3. 環境変数設定

回答したJDK、Kotlinのフォルダの「bin」フォルダまでのパスを環境変数の「Path」に設定します。

私の場合は以下を追加しました。

C:\Program Files\Java\jdk-11.0.11\bin
C:\Program Files\Kotlin\bin

4. 動作確認

環境変数を設定後、コマンドプロンプトを起動し、「kotlin -version」を実行して以下のような表示がされればセットアップ完了です。

>kotlin -version
Kotlin version 1.5.20-release-287 (JRE 11.0.11+9-LTS-194)

【Python】決定版!dict(辞書型)を値でsortするワンライナー

dictの値でソート(sort)してdictを返すワンライナーです。
(dictをソートしてlist型に変換して終了している記事が多いと感じました。)

昇順:

dict_data = {k:v for k,v in sorted(dict_data.items(), key=lambda x : x[1])}

降順:

dict_data = {k:v for k,v in sorted(dict_data.items(), key=lambda x : x[1], reverse=True)}

動かす

dict_data = {
    "A":10,
    "B":5,
    "C":20
}

dict_data = {k:v for k,v in sorted(dict_data.items(), key=lambda x : x[1])}

dict_data = {
    "B":5,
    "A":10,
    "C":20
}

以上。お役に立てれば幸いです。

【Docker】コンテナ間の通信はdocker-composeのnetworksを上手く使おう

概要

コンテナ間で通信するために、docker-composeのnetworksを使うことができます。

コードはこちら

テスト準備

docker-compose build
docker-compose up -d

テスト用docker-compose

version: '3.2'
services:
  test_service_one:
    image: ubuntu:latest
    container_name: test_service1
    build: ./
    networks:
      - test_network
    tty: true
    stdin_open: true
    privileged: true
  test_service_two:
    image: ubuntu:latest
    container_name: test_service2
    build: ./
    networks:
      - test_network
    tty: true
    stdin_open: true
    privileged: true
networks:
  test_network:

テスト実行結果

pingを実行すると双方のコンテナ内から通知できていることが分かります。

user@wsl:~/develop/dockers/docker_network_sample$ docker exec -it test_service1 ping test_service2 -c 5
PING test_service2 (172.18.0.3) 56(84) bytes of data.
64 bytes from test_service2.docker_network_sample_test_network (172.18.0.3): icmp_seq=1 ttl=64 time=0.157 ms
64 bytes from test_service2.docker_network_sample_test_network (172.18.0.3): icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from test_service2.docker_network_sample_test_network (172.18.0.3): icmp_seq=3 ttl=64 time=0.060 ms
64 bytes from test_service2.docker_network_sample_test_network (172.18.0.3): icmp_seq=4 ttl=64 time=0.097 ms
64 bytes from test_service2.docker_network_sample_test_network (172.18.0.3): icmp_seq=5 ttl=64 time=0.041 ms

--- test_service2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4130ms
rtt min/avg/max/mdev = 0.041/0.080/0.157/0.043 ms
user@wsl:~/develop/dockers/docker_network_sample$ docker exec -it test_service2 ping test_service1 -c
5
PING test_service1 (172.18.0.2) 56(84) bytes of data.
64 bytes from test_service1.docker_network_sample_test_network (172.18.0.2): icmp_seq=1 ttl=64 time=0.286 ms
64 bytes from test_service1.docker_network_sample_test_network (172.18.0.2): icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from test_service1.docker_network_sample_test_network (172.18.0.2): icmp_seq=3 ttl=64 time=0.042 ms
64 bytes from test_service1.docker_network_sample_test_network (172.18.0.2): icmp_seq=4 ttl=64 time=0.044 ms
64 bytes from test_service1.docker_network_sample_test_network (172.18.0.2): icmp_seq=5 ttl=64 time=0.082 ms

--- test_service1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4152ms
rtt min/avg/max/mdev = 0.040/0.098/0.286/0.094 ms

最後に

docker-composeのnetworksを使うことでコンテナ間の通信ができることが分かりますね。

【Docker】UbuntuのDockerを最新バージョンにアップデートする

環境

アップデート前のDockerバージョン

Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:02:36 2020
 OS/Arch:           linux/amd64
 Experimental:      false

アップデート方法

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

アップデート後のDockerバージョン

Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:46:01 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

pipを実行すると「Did not provide a command」になる場合

WindowsPython環境を構築し、
ちゃんとPATHも通しているが
コマンドプロンプトでpipを実行すると

「Did not provide a command」

になる場合があります。

原因

恐らく、環境変数Pythonより上位に以下のパスがあるため、
PythonのpipよりもPerlのpipが優先されていることが原因です。

C:\strawberry\perl\bin\pip
C:\strawberry\perl\bin\pip.bat

対処

perlを削除するか、Pythonのpipをperlよりも上位に設定すると解消されます。
ただ、perlのpipが使えなくなるため、注意が必要です。

広告