- 投稿日:2020-01-22T23:54:34+09:00
Macのlocalhost上で動作しているサービスへDocker内部から接続する方法
Docker Container内部で動作している環境からMac上で動作しているサービスへ接続することが出来ずハマったので、その解決方法をメモしておきます。
よくあるMacからDocker上のサービスへ接続するのとは接続方向が逆になりますのでご注意ください。背景
VirtualBox上にNAT network interface1つを接続した状態で仮想Ubuntuサーバを立ち上げ、
そこへPostgreSQL(ポート番号:5432)を立ち上げました。
その後、VirtualBoxのPort Forwarding機能でHost:5432 Guest:5432 でForwardする設定をしました。
この状態であれば、MacへPostgreSQLクライアントをインストールして、localhost:5432
へ接続することで仮想マシンで動作しているPostgreSQLへ接続可能です。
ところが、Mac環境をなるべく汚したくない私はpsqlコマンドをローカルにインストールすることを嫌い、PostgreSQLのDockerイメージを使って確認することにしました。
その際に接続できなくてハマりました。解決方法
docker run -it --rm postgres psql -U root -h host.docker.internal
はい、結論から書くとこれが答えになります。
ポイントは、接続先をlocalhost:5432にするのではなく、host.docker.internal:5432
にすることです。
どうやら、Docker Container上から見てローカル環境(Mac)のIPアドレスは、localhostと指定するのでは接続できず(おそらくDocker Containerそのものを指定してしまう?)、host.docker.internal
を指定する必要があるようです。
DockerはMac上の1プロセスとして動作するという理解をしているので、psqlコマンドを単体で実行するのと同じようなイメージでlocalhostを指定していたのでハマってしまいました。参考情報など
公式: https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds
I WANT TO CONNECT FROM A CONTAINER TO A SERVICE ON THE HOST
StackOverFlow: https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach
Edit: If you are using Docker-for-mac or Docker-for-Windows 18.03+, just connect to your mysql service using the host host.docker.internal.
- 投稿日:2020-01-22T23:29:44+09:00
docker-compose で Cloud Datastore Emulatorを立ち上げpythonアプリと連携する
背景
サービスでdatastoreを使う事になり、開発環境やCIでのテストをどうするか試行錯誤した。
AWSと比較して情報が少ないので、まとめた。要点
- flaskアプリとCloud Datastore Emulatorをコンテナを作る
- docker-composeでサービス連携を行う
- datastoreの初期データ投入
- flaskアプリから、Cloud Datastore Emulatorを操作する
ディレクトリ構成
. ├── app │ ├── Dockerfile │ └── src │ ├── main.py │ └── requirements.txt ├── datastore │ ├── Dockerfile │ ├── entrypoint │ └── import │ ├── 2020-01-21.overall_export_metadata │ ├── default_namespace │ │ └── kind_test_data │ │ ├── default_namespace_kind_test_data.export_metadata │ │ └── output-0 │ └── run.sh └── docker-compose.yamlCloud Datastore Emulator コンテナ構築
datastore/Dockerfile
公式のSDKイメージから最小限で作成。
エミュレータ起動用shell、データ投入用shellに実行権限付与。FROM google/cloud-sdk:alpine RUN apk add --update --no-cache openjdk8-jre \ && gcloud components install cloud-datastore-emulator beta --quiet COPY . /datastore/ WORKDIR /datastore RUN chmod +x ./entrypoint RUN chmod +x ./import/run.sh ENTRYPOINT ["./entrypoint"]datastore/entrypoint
docker-compose down
した際にも、データを維持するために、/datastore/.data/
ディレクトリにデータをためる。オプションなしで起動すると、コンテナ内でしかアクセスできないので、
--host-port=0.0.0.0:8081
として起動する。
環境変数から、プロジェクト名と一緒に流し込む。#!/usr/bin/env bash gcloud config set project ${DATASTORE_PROJECT_ID} gcloud beta emulators datastore start \ --data-dir=/datastore/.data \ --host-port=${DATASTORE_LISTEN_ADDRESS}データ投入のdatastore/import/run.sh
サーバー起動後、下記のエンドポイントにdump済みのデータの保存パスを投げるとデータがインポートできる。
export DATASTORE_PROJECT_ID curl -X POST localhost:8081/v1/projects/${DATASTORE_PROJECT_ID}:import \ -H 'Content-Type: application/json' \ -d '{"input_url":"/datastore/import/2020-01-21.overall_export_metadata"}'datastore/importのメタデータ
今回は、gcp のコンソールから、gcsにダンプしたデータをディレクトリ丸ごと
datastore/import
配下に持ってきた。
sdkデータを直接生成してもよい。python アプリ コンテナ構築
サンプル用にペラペラのアプリ構築する。
app/Dockerfile
FROM python:3.7-slim-buster ENV HOME /api/ ADD ./ ${HOME} WORKDIR ${HOME} RUN pip install --upgrade pip \ && pip install --no-cache-dir -r ${HOME}src/requirements.txt ENTRYPOINT ["python", "src/main.py"]app/main.py
ちょっと適当すぎる気がするが、データを保存して取り出すだけのエンドポイントを作成。
認証情報は、ダミーの認証をかませる。
from flask import Flask, jsonify from google.auth.credentials import AnonymousCredentials from google.cloud import datastore from os import getenv client = datastore.Client( credentials=AnonymousCredentials(), project=getenv('PROJECT_ID') ) app = Flask(__name__) app.config['JSON_AS_ASCII'] = False @app.route('/') def index(): key = client.key('EntityKind', 1234) entity = datastore.Entity(key=key) entity.update({ 'foo': u'bar' }) client.put(entity) result = client.get(key) return jsonify(result) if __name__ == '__main__': app.run(host='0.0.0.0')app/requirements.txt
Flask==1.1.1 google-auth==1.6.2 google-cloud-datastore==1.8.0docker-compose.yaml
datastoreのポートは、ホスト側にも開けておくと、GUIツールで見ることができて便利
https://github.com/GabiAxel/google-cloud-gui
version: '3.7' x-custom: gcp: - &gcp_project_id "dummy" services: app: build: "./app/" volumes: - "./app/:/app/" environment: FLASK_APP: dev DATASTORE_HOST: "http://datastore:8081" DATASTORE_EMULATOR_HOST: "datastore:8081" PROJECT_ID: *gcp_project_id TZ: Asia/Tokyo ports: - "5000:5000" depends_on: - datastore datastore: build: "./datastore" volumes: - "./datastore/.data:/datastore/.data" environment: DATASTORE_PROJECT_ID: *gcp_project_id DATASTORE_LISTEN_ADDRESS: 0.0.0.0:8081 ports: - "18081:8081"起動
docker-compose upブラウザやcurlで、http://localhost:5000にアクセスすると{"foo": "bar"}と表示されるはず。
ログ
下記にデータが貯められてるのがわかる
/datastore/.data/WEB-INF/appengine-generated/local_db.bin
datastore_1 | Updated property [core/project]. datastore_1 | WARNING: Reusing existing data in [/datastore/.data]. datastore_1 | Executing: /google-cloud-sdk/platform/cloud-datastore-emulator/cloud_datastore_emulator start --host=0.0.0.0 --port=8081 --store_on_disk=True --consistency=0.9 --allow_remote_shutdown /datastore/.data app_1 | * Serving Flask app "main" (lazy loading) app_1 | * Environment: production app_1 | WARNING: This is a development server. Do not use it in a production deployment. app_1 | Use a production WSGI server instead. app_1 | * Debug mode: off app_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) datastore_1 | [datastore] Jan 22, 2020 6:22:00 AM com.google.cloud.datastore.emulator.CloudDatastore$FakeDatastoreAction$9 apply datastore_1 | [datastore] INFO: Provided --allow_remote_shutdown to start command which is no longer necessary. datastore_1 | [datastore] Jan 22, 2020 6:22:01 AM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub <init> datastore_1 | [datastore] INFO: Local Datastore initialized: datastore_1 | [datastore] Type: High Replication datastore_1 | [datastore] Storage: /datastore/.data/WEB-INF/appengine-generated/local_db.bin datastore_1 | [datastore] Jan 22, 2020 6:22:02 AM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub load datastore_1 | [datastore] INFO: Time to load datastore: 218 ms datastore_1 | [datastore] API endpoint: http://0.0.0.0:8081 datastore_1 | [datastore] If you are using a library that supports the DATASTORE_EMULATOR_HOST environment variable, run: datastore_1 | [datastore] datastore_1 | [datastore] export DATASTORE_EMULATOR_HOST=0.0.0.0:8081 datastore_1 | [datastore] datastore_1 | [datastore] Dev App Server is now running. datastore_1 | [datastore] datastore_1 | [datastore] The previous line was printed for backwards compatibility only. datastore_1 | [datastore] If your tests rely on it to confirm emulator startup, datastore_1 | [datastore] please migrate to the emulator health check endpoint (/). Thank you! datastore_1 | [datastore] The health check endpoint for this emulator instance is http://0.0.0.0:8081/Jan 22, 2020 6:22:11 AM io.gapi.emulators.grpc.GrpcServer$3 operationComplete datastore_1 | [datastore] INFO: Adding handler(s) to newly registered Channel. datastore_1 | [datastore] Jan 22, 2020 6:22:11 AM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead datastore_1 | [datastore] INFO: Detected HTTP/2 connection.データ投入
エミュレータのエンドポイントに、リクエストを投げてあげれば、ダンプデータも取り込める
docker-compose exec datastore bash ./import/run.sh参考
下記のサイトを参考にさせていただきました。
- 投稿日:2020-01-22T17:41:38+09:00
外部からGCE上のDockerコンテナ内のMySQLへ接続
やりたいこと
GCE上にDockerを使ってWebとDBのサーバーを動作させている。
アプリケーションは、お馴染みのWordPressとする。
手元のPCから、直接MySQLにログインしたい。
現状
手元のPCからMySQLにログインするには、以下の3ステップが必要。
- GCEへSSHログイン
- DB Serverとして起動しているDockerコンテナへログイン
- MySQLへログイン
この1~3を一発で行いたい。
1. SSHログイン
SSH鍵が未作成なら、以下コマンドで作成
(外部PC)$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"cf. お前らのSSH Keysの作り方は間違っている - Qiita
公開鍵を登録
手元のSSH鍵でサーバーへログインできるように登録する必要がある。
以下の操作を、権限のある人に依頼する。Compute Engine > Metadata > SSH Keys
で上の公開鍵を追加する。
(メールアドレスの@
より前がユーザー名。)SSH接続確認
(外部PC)$ ssh -i ~/.ssh/id_rsa [username]@[IP]ログインできたらOK。
2. Dockerコンテナへログイン
まずはDockerでWordPressが起動していることを確認する。
以下はWordPress公式のdocker-compose.yml。docker-compose.ymlversion: '3.1' services: wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRESS_DB_NAME: exampledb volumes: - wordpress:/var/www/html db: image: mysql:5.7 restart: always environment: MYSQL_DATABASE: exampledb MYSQL_USER: exampleuser MYSQL_PASSWORD: examplepass MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - db:/var/lib/mysql volumes: wordpress: db:コンテナへのログインはこのコマンド。
(GCE)$ docker exec -it [コンテナID] bash root@[コンテナID]:/var/www/html#ログインできた。(プロンプトが切り替わってる)
(
Ctrl + C
でログアウトしておく。)3. MySQLへログイン
(GCE)$ docker exec -it [コンテナID] mysql -u exampleuser -pexamplepass mysql>cf. Docker上でMySQLにログインする - Qiita
ログインできた。
実行してみる
DB接続は、Sequel Proというツールを使っている。
接続失敗!
ログを見てみると、SSHログインできているけど、
127.0.0.1 port 3306
への接続で失敗しているみたい。... debug1: Connection established. ... debug1: Authentication succeeded (publickey). ... debug1: Connection to port 53983 forwarding to 127.0.0.1 port 3306 requested. ... open failed: connect failed: Connection refused原因はPort
MySQLが動作しているのは、Dockerコンテナ内の3306番ポート。
アクセスしようとしていたのは、GCEの3306番ポート。
この2つを繋ぐ必要があった。
cf. Dockerでポートフォワーディング解説 - Qiita以下のように修正。
docker-compose.ymlversion: '3.1' services: wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRESS_DB_NAME: exampledb volumes: - wordpress:/var/www/html db: image: mysql:5.7 restart: always ports: - 3306:3306 # 追加した environment: MYSQL_DATABASE: exampledb MYSQL_USER: exampleuser MYSQL_PASSWORD: examplepass MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - db:/var/lib/mysql volumes: wordpress: db:再起動させる。
(GCE)$ docker-compose down (GCE)$ docker-compose upプロセスを表示すると、Portsの表示が変わった。
0.0.0.0:3306->3306/tcp
になってる。変更前(GCE)$ docker-compose ps Name Command State Ports -------------------------------------------------------------------------------- test_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp test_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp変更後(GCE)$ docker-compose ps Name Command State Ports --------------------------------------------------------------------------------------------- test_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp test_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp再実行
接続できた!?
- 投稿日:2020-01-22T17:41:38+09:00
外部からGCE上のDockerコンポーネント内のMySQLへ接続
やりたいこと
GCE上にDockerを使ってWebとDBのサーバーを動作させている。
アプリケーションは、お馴染みのWordPressとする。
手元のPCから、直接MySQLにログインしたい。
現状
手元のPCからMySQLにログインするには、以下の3ステップが必要。
- GCEへSSHログイン
- DB Serverとして起動しているDockerコンポーネントへログイン
- MySQLへログイン
この1~3を一発で行いたい。
1. SSHログイン
SSH鍵が未作成なら、以下コマンドで作成
(外部PC)$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"cf. https://qiita.com/suthio/items/2760e4cff0e185fe2db9
公開鍵を登録
手元のSSH鍵でサーバーへログインできるように登録する必要がある。
以下の操作を、権限のある人に依頼する。Compute Engine > Metadata > SSH Keys
で上の公開鍵を追加する。
(メールアドレスの@
より前がユーザー名。)SSH接続確認
(外部PC)$ ssh -i ~/.ssh/id_rsa [username]@[IP]ログインできたらOK。
2. Dockerコンポーネントへログイン
まずはDockerでWordPressが起動していることを確認する。
以下はWordPress公式のdocker-compose.yml。docker-compose.ymlversion: '3.1' services: wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRESS_DB_NAME: exampledb volumes: - wordpress:/var/www/html db: image: mysql:5.7 restart: always environment: MYSQL_DATABASE: exampledb MYSQL_USER: exampleuser MYSQL_PASSWORD: examplepass MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - db:/var/lib/mysql volumes: wordpress: db:コンテナへのログインはこのコマンド。
(GCE)$ docker exec -it [コンテナID] bash root@[コンテナID]:/var/www/html#ログインできた。(プロンプトが切り替わってる)
(
Ctrl + C
でログアウトしておく。)3. MySQLへログイン
(GCE)$ docker exec -it [コンテナID] mysql -u exampleuser -pexamplepass mysql>cf. https://qiita.com/ymstshinichiro/items/01f6a4c299fdb4b832a2
ログインできた。
実行
DB接続は、Sequel Proというツールを使っています。
接続失敗!
ログを見てみると、SSHログインできているけど、
127.0.0.1 port 3306
への接続で失敗しているみたい。... debug1: Connection established. ... debug1: Authentication succeeded (publickey). ... debug1: Connection to port 53983 forwarding to 127.0.0.1 port 3306 requested. ... open failed: connect failed: Connection refused原因はPort
MySQLが動作しているのは、Dockerコンポーネント内の3306番ポート。
アクセスしようとしていたのは、GCEの3306番ポート。
この2つを繋ぐ必要があった。以下のように修正。
docker-compose.ymlversion: '3.1' services: wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRESS_DB_NAME: exampledb volumes: - wordpress:/var/www/html db: image: mysql:5.7 restart: always ports: - 3306:3306 # 追加した environment: MYSQL_DATABASE: exampledb MYSQL_USER: exampleuser MYSQL_PASSWORD: examplepass MYSQL_RANDOM_ROOT_PASSWORD: '1' volumes: - db:/var/lib/mysql volumes: wordpress: db:再起動させる。
(GCE)$ docker-compose down (GCE)$ docker-compose upプロセスを表示すると、Portsの表示が変わった。
0.0.0.0:3306->3306/tcp
になってる。変更前(GCE)$ docker-compose ps Name Command State Ports -------------------------------------------------------------------------------- test_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp test_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp変更後(GCE)$ docker-compose ps Name Command State Ports --------------------------------------------------------------------------------------------- test_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp test_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp再実行
接続できた!?
- 投稿日:2020-01-22T16:53:14+09:00
LaravelのDockerでX-debugを有効にする
Enable X-debug on Docker for Laravel
始める前に
dockerを使用してx-debugを設定するさまざまな方法に関するチュートリアルがたくさんあります。一部は時代遅れで、一部は他のテクニックを使用します。
Before starting
There are a lot of tutorials on different ways to configure x-debug using docker, some are outdated, some use other techniques, this tutorial is on the configuration that works for me, but I don´t guarantee that it will work for you.
APIの作成方法の前のチュートリアルに従ってください
Follow previous tutorial on how to make an API
nginx.confを編集します
nginx.confファイルにはserver_nameが必要です
the nginx.conf file needs a server_name
server { listen 80; server_name localhost;Dockerfileを編集
Dockerfileを編集して、x-debugプラグインのインストールを追加し、docker-pluginを有効にします
Edit the Dockerfile to add x-debug plugin install and enable the docker-plugin
RUN pecl install xdebug && docker-php-ext-enable xdebug #COPY xdebug.ini /etc/php/7.3/mods-available/xdebug.ini RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.remote_connect_back = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.profiler_enable = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \ && echo "xdebug.remote_port=9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.inidocker-compose.yml編集
app-serverコンテナ内のdocker-composeファイルでx-debugを有効にします
Enable x-debug on docker-compose file, in the app-server container
services: app-server: build: .cloud/docker image: laravel-api #name of the image environment: PHP_XDEBUG_ENABLED: 1 depends_on:PHP Stormを構成する
PHP設定内で、プロパティを次のように設定します。
Inside the PHP settings, set the properties as follow
サーバーをセットアップする
右上のメニューから新しい構成をセットアップします
Setup a new configuration, from the upper right menu
次のウィンドウで、セットアップ新しいPHPのウェブサイト、左上隅からの+記号をクリックして、
In the next window, setup a new PHP web site, by clickin the + sign from the upper left corner
サーバーリストから[...]ボタンをクリックして、新しいサーバーを作成します。
create a new server, by clicking the [...] button from the server list.
localhostアドレスを追加し、プロジェクトをdockerサーバー(この場合は/ applicationディレクトリ)にマップします。
Add the localhost address, and map the project to the docker server, in our case, the /application directory.
これにより、PHPStormで受信したリクエストをデバッグできます。
With this, you will be able to debug incoming request on PHPStorm.
- 投稿日:2020-01-22T15:57:23+09:00
DockerイメージをECRにpushする
- 投稿日:2020-01-22T15:57:23+09:00
AWS CLIを使ってDockerイメージをECRにpushする
Docker イメージを Amazon ECR リポジトリにプッシュするには
イメージのプッシュするになるAmazon ECRレジストリにDockerクライアント認証をする。
認証トークンは使用するレジストリごとに取得する必要があり、有効期限は12時間です。レジストリ認証
以下のコマンドを実行して出力されたコマンドをコピペしてそのまま実行
aws ecr get-login --no-include-email --region ap-northeast-1タグ付け
使用する ECR レジストリ、リポジトリ、オプションのイメージタグ名の組み合わせによってイメージをタグ付けします。レジストリ形式は aws_account_id.dkr.ecr.region.amazonaws.com です。
リポジトリ名は、イメージ用に作成したリポジトリ名と一致する必要があります。docker tag イメージID aws_account_id.dkr.ecr.region.amazonaws.com/my-web-appECRにpushする
docker push コマンドを使用してイメージをプッシュします。
docker push aws_account_id.dkr.ecr.region.amazonaws.com/my-web-appこれでおしまい
- 投稿日:2020-01-22T12:55:48+09:00
今日のpython error: killed
『フカシギの数え方』 おねえさんといっしょ:組み合わせ爆発の凄さ
https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3gra10.py# https://qiita.com/cabernet_rock/items/50f955afc16287244154 # https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3 # https://qiita.com/kaizen_nagoya/items/3a8d89f095489b6e1f56 # https://qiita.com/kaizen_nagoya/items/819f10124ec453b7ef27 # 必要なモジュールのインポート from graphillion import GraphSet import graphillion.tutorial as tl import time # 計算時間を調べる。 # グリッドのサイズを指定 universe = tl.grid(2, 2) GraphSet.set_universe(universe) tl.draw(universe) start = 1 # スタート位置 goal = 9 # ゴールの位置 paths = GraphSet.paths(start, goal) print (len(paths)) # key = 4 # 1箇所目 treasure = 2 # 2箇所目 paths_to_key = GraphSet.paths(start, key).excluding(treasure) treasure_paths = paths.including(paths_to_key).including(treasure) print (len(treasure_paths)) # universe = tl.grid(9, 9) # 9×9のグリッド GraphSet.set_universe(universe) start = 1 goal = 100 s = time.time() # 計算開始時刻 paths = GraphSet.paths(start, goal) print (time.time() - s )# 計算時間9X9が12時間たっても答えが出なかった。
graat.sh#!/bin/bash # https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3 date python3 gra10.py date仕事ができないので、別の機材をdocker 12G Bにして、上記script実行。
Wed Jan 22 02:44:58 UTC 2020 12 2 ./graat.sh: line 4: 22 Killed python3 gra10.py Wed Jan 22 02:47:29 UTC 202014G Bにして
Wed Jan 22 03:03:49 UTC 2020 12 2 ./graat.sh: line 4: 14 Killed python3 gra10.py Wed Jan 22 03:08:19 UTC 2020dockerの版が違うからかと思い、元の機材でやり直したら、昨日は12時間以上動いて停止してないのに、
今日は数分でkilled。理由不明。文書履歴(document history)
ver. 0.01 初稿 20200122午前
ver. 0.02 script 追記 20200122 昼
ver. 0.03 python 追記 20200122 午後
- 投稿日:2020-01-22T12:13:39+09:00
Docker DesktopのGUIにダッシュボード機能が搭載されてコンテナやボリュームがわかりやすくなったぞ
本日Docker Desktopの新バージョン2.2.0.0がリリースされましたが、今まで設定画面しかなかったGUIに新しくダッシュボード画面が追加されて作成しているコンテナやボリュームがわかりやすくなっています。(個人的にはCLI使うのでいらんのですが)
詳細は丸投げ → https://docs.docker.com/docker-for-windows/dashboard/
設定画面の「Settings」のタイトルの右にある「×」(ウインドウを閉じるではない方)をクリックするとダッシュボード画面に移動します。まあタスクトレイのメニューに「Dashbord」ってあるんですけどね。新しくなった設定画面に注目してる思ってると気づきにくいかなーと思ったので。
あと、Windows側のドライブのマウントにCIFSではなくgRPC FUSE(なにそれ?)というのを使うようになったみたいです。Linux inotifyに対応したようだから、Auto Reloadとか動くようになってるのかな?(参考 https://www.docker.com/blog/new-filesharing-implementation-in-docker-desktop-windows/)
それだけです。
- 投稿日:2020-01-22T12:13:39+09:00
Docker DesktopのGUIにダッシュボードが搭載されてコンテナやボリュームがわかりやすくなったぞ
本日Docker Desktopの新バージョン2.2.0.0がリリースされましたが、今まで設定画面しかなかったGUIに新しくダッシュボード画面が追加されて作成しているコンテナやボリュームがわかりやすくなっています。(個人的にはCLI使うのでいらんのですが・・・ん?イメージの情報がないぞ!こっちのほうが使いたい)
詳細は丸投げ → https://docs.docker.com/docker-for-windows/dashboard/
設定画面の「Settings」のタイトルの右にある「×」(ウインドウを閉じるではない方)をクリックするとダッシュボード画面に移動します。まあタスクトレイのメニューに「Dashbord」ってあるんですけどね。新しくなった設定画面に注目してると気づきにくいかなーと思ったので。
あと、Windows側のドライブのマウントにCIFSではなくgRPC FUSE(なにそれ?)というのを使うようになったみたいです。Linux inotifyに対応したようだから、Auto Reloadとか動くようになってるのかな?
参考
・New Filesharing Implementation in Docker Desktop Windows Improves Developer Inner Loop UX
・Deep Dive Into the New Docker Desktop filesharing Implementation Using FUSEそれだけです。
- 投稿日:2020-01-22T11:41:29+09:00
docker-compose up出でるエラー
概要
いつものようにDocker-compose upするとサーバーが立ち上がらない。
具体的には、↓こんな感じでエラーが出ている。
〈注意すべきポイント〉
bundler: failed to load command: rails (/usr/local/bundle/bin/rails)
Bundler::GemNotFound: Could not find ast-2.4.0 in any of the sources解決策
docker-compose build
で解決!!原因(ここ重要!)
原因によっては対処法が変わってくる。
今回の場合は、前回このアプリを利用した時にgemを追加して
bundle install
したあとに、サーバーの立ち上げしていなかった。参考サイト
- 投稿日:2020-01-22T11:33:29+09:00
2020年の開発者が知っておくべき11の必須技能(回答編)
2020年の開発者が知っておくべき11の必須スキル
https://qiita.com/rana_kualu/items/c79a16ff503c86b2748311 Essential Skills Software Developers should Learn in 2020
https://dev.to/javinpaul/11-essential-skills-software-developers-should-learn-in-2020-1bioTop 11 Essentials Skills for Software Developers in 2020
1) Containers (Docker and Kubernetes)
2) Cloud Platform (AWS, GCP, or Azure)
3) Data Structure and Algorithm
4) A Version Control Tool (Git)
5) One Text Editors (VIM)
6) IDEs (VSCode or IntelliJIDEA)
7) Database and SQL
8) UNIX (Linux)
9) An OOP Programming language (C++, Java or Python)
10) Networking basics
11) One Scripting language11の技能を自己評価してみる。
0:知らない、触ったことがない
1:知ってる。使ったことがあるかもしれない。
2:誰かに相談できれば仕事で使える。
3:仕事に使っている。
4:改良に取り組んでいる。点数を書いたら、その数だけURLを示す。
category と examplesに分けてみると、見出しにやや整合性がない。
下記表では、適当に補足・補正してみる。
category examples value Containers Docker and Kubernetes 3 Cloud Platform AWS, GCP, or Azure 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 A Version Control Tool git 3 One Text Editors vim or Eclipse 4 IDEs VSCode or IntelliJIDEA 3 Database and SQL Oracle, SQL Server or MySQL 2 Unix or Linux Ubuntu, Raspbian or Debian 4 An OOP Programming language C++, Java or JavaScript 3 Networking basics TCP/IP and Wi-Fi 4 One Scripting language Python or Ruby 3 大事なのはでこぼこ。他よりよいのが1つ以上、他より悪いのを1つ以上書くこと。
私の場合は、Networkが専門で、BSDを対抗試験にDebian(linux)でコンパイルしてきた。エディタは作業の要。
苦手なのはDB、リレーショナルDBの概念と実装の隙間の大きさに戸惑う。下記の一部の記事は、失敗だったり、未完だったり、これから該当する技術を書く予定のものがあります。
暖かいご指導のほどお願いいたします。1) Containers (Docker and Kubernetes):3
docker(18) なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2docker(1)利用を勧める17の理由
https://qiita.com/kaizen_nagoya/items/c4e5075142bf5e11ddbedocker(0) 資料集
https://qiita.com/kaizen_nagoya/items/45699eefd62677f69c1d2) Cloud Platform (AWS, GCP, or Azure):3
「Qiitaのいろいろランキング2019」への感謝と提案
https://qiita.com/kaizen_nagoya/items/40b8557a20e8d75d62b5日鉄ソリューションズのプライベートクラウドは、顧客満足度1位になっているほか、データサイエンティストの行事でDataRobotより上位の2位になっていることを記載。
転職(2) 転職者による、転職者のための、転職者の履歴、業績、面接
https://qiita.com/kaizen_nagoya/items/162fbb954deb886464bfクラウドを利用するにあたってdockerを利用しているとよい点を記載。
製造業における機械学習
https://qiita.com/kaizen_nagoya/items/fbe846de16f74bea1d6f製造業における機械学習でクラウド利用について記載。
3) Data Structure and Algorithm:3
機械学習をここに入れてもいいかもしれない。機械学習は、データ構造化
『フカシギの数え方』 おねえさんといっしょ:組み合わせ爆発の凄さ
https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3仮説・検証(153)成功体験は語っても、成功体験に頼らないために。清水吉男・田中伸明
https://qiita.com/kaizen_nagoya/items/d32adfaf7b2568bfd9d2データ中心設計で田中伸明さんと連名で安全工学シンポジウム等で発表させていただいているのは光栄。
仮説・検証(122)分析と設計
https://qiita.com/kaizen_nagoya/items/d7341c407026af61f2164) A Version Control Tool (Git):3
仮説・検証(51)公開算譜は機敏だ(open source is agile)GitHub and docker
https://qiita.com/kaizen_nagoya/items/5dd49a046b5991af3a5e卒業論文、修士論文、博士論文は github/gitlab/bitbacketのprivate利用をお勧め
https://qiita.com/kaizen_nagoya/items/eb9945a2649f6f3eabd0現在努力中
https://github.com/kaizen-nagoya5) One Text Editors (VIM):4
VZエディタ移植(porting)に当たって実施したことと成果
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949「アセンブラへの道」組立語(assembler)・機械語(machine language)・CPU
https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2令和で成果を出す予定のソフトウェア・プログラミング・IT(一部、平成のコピー)
https://qiita.com/kaizen_nagoya/items/d7eae2ca3229eda72f88仮説・検証(139)新人(学生)を指導するよりも新人(学生)に指導してもらった方が効率的
https://qiita.com/kaizen_nagoya/items/db993b1536055029f7c86) IDEs (VSCode or IntelliJIDEA):3
docker(39) Cコンパイラ3種をdockerで
https://qiita.com/kaizen_nagoya/items/77184cf005490d7579e6g++, clang++ and vscode++ をdockerで(まだエラー中)
https://qiita.com/kaizen_nagoya/items/825e9bcb017925e0fc5adocker and vscode not visual studio code
https://qiita.com/kaizen_nagoya/items/165a281570a8c62ca50a7) Database and SQL:2
仮説・検証(163)生産縮小、規模縮小、人員縮小時には自動化道具を増強
https://qiita.com/kaizen_nagoya/items/8df1dc7d3a5c7869d3c2Python で SQL
https://qiita.com/kaizen_nagoya/items/1a210fd10efaead88f688) UNIX (Linux):4
Posix Test Suite docker downloads, tar, install
https://qiita.com/kaizen_nagoya/items/f1e24be04a2405ede00fxtUMLを導入する(linux編)
https://qiita.com/kaizen_nagoya/items/297097cc47a6487d9f20仮説・検証(165)40年でソフトウェア開発の景色はどのぐらい変わったのか?
https://qiita.com/kaizen_nagoya/items/54c17cf751894eef56f8Raspberry Pi(SDカード付き)開封から起動までの時間測定
https://qiita.com/kaizen_nagoya/items/8cde74c07848ec413f7b9) An OOP Programming language (C++, Java or Python):3
Object Oriented Programmingは、物をよく分析してプログラムすればいいだけだと思えば良い。
抽象データ型に対応している言語ならどれでもよい。
Classによる体系化は一手法で、C++によるTemplateの方がいいかもしれない。見出しはわすれば、例の言語を操れればいいと思うとよい。
Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76#_reference-6bf86e567f8b9d0a1028仮説・検証(89)インド、インドネシアとJava、Javascript:接尾辞がついて別物と言うが共通点は多い。
https://qiita.com/kaizen_nagoya/items/2c331ff6654d41d5e157dockerで機械学習(87) with JAVA(1)「Machine Learning: End-to-End guide for Java developers」 By Richard Reese, Jennifer Reese, Bostjan Kaluza, Uday Kamath, Krishna Choppella
10) Networking basics:4
無線網(Wi-Fi)空中線(antenna)(0) 記事一覧(122/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001情報処理技術者試験 ネットワークスペシャリストに合格
https://qiita.com/kaizen_nagoya/items/407857392ca5c5677ee4「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e通信エミュレータの移植
https://qiita.com/kaizen_nagoya/items/ce505bbea4229b83e93b11) One Scripting language:3
shellでもいいかも。自動実行できればいい。
Windows(M.S.)にPython3(Anaconda3)を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679docker(19) 言語処理100本ノックをdockerで。python覚えるのに最適。
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4転職(16) 65歳からのプログラミング入門
https://qiita.com/kaizen_nagoya/items/1561f910c275b22d7c9f並べ替え
11の項目を、自分が大事だと思う順番に並び替えるのも良い。
4) A Version Control Tool (Git)
1) Containers (Docker and Kubernetes)
2) Cloud Platform (AWS, GCP, or Azure)
3) Data Structure and Algorithm5) One Text Editors (VIM)
6) IDEs (VSCode or IntelliJIDEA)
7) Database and SQL
8) UNIX (Linux)
9) An OOP Programming language (C++, Java or Python)
10) Networking basics
11) One Scripting language参考資料(reference)
一覧の一覧 a directory of directories of mine.
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39docker(59) Githubとdocker
https://qiita.com/kaizen_nagoya/items/f7e142cd283a1c314234プログラマが知っているとよい色使い(JIS安全色)
https://qiita.com/kaizen_nagoya/items/cb7eb3199b0b98904a35参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1
- 投稿日:2020-01-22T11:33:29+09:00
2020年の開発者が知っておくべき11の必須技能→回答編 → 並べ替え→項目合併
2020年の開発者が知っておくべき11の必須スキル
https://qiita.com/rana_kualu/items/c79a16ff503c86b2748311 Essential Skills Software Developers should Learn in 2020
https://dev.to/javinpaul/11-essential-skills-software-developers-should-learn-in-2020-1bioTop 11 Essentials Skills for Software Developers in 2020
1) Containers (Docker and Kubernetes)
2) Cloud Platform (AWS, GCP, or Azure)
3) Data Structure and Algorithm
4) A Version Control Tool (Git)
5) One Text Editors (VIM)
6) IDEs (VSCode or IntelliJIDEA)
7) Database and SQL
8) UNIX (Linux)
9) An OOP Programming language (C++, Java or Python)
10) Networking basics
11) One Scripting language11の技能を自己評価してみる。
0:知らない、触ったことがない
1:知ってる。使ったことがあるかもしれない。
2:誰かに相談できれば仕事で使える。
3:仕事に使っている。
4:改良に取り組んでいる。点数を書いたら、その数だけURLを示す。
各みだしを category と examplesに分けてみる。見出しにやや整合性がない気がした。
下記表では、適当に補足・補正してみた。一番右の列が自己評価。
category examples value Containers Docker and Kubernetes 3 Cloud Platform AWS, GCP, or Azure 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 A Version Control Tool git 3 One Text Editors vim or Eclipse 4 IDEs VSCode or IntelliJIDEA 3 Database and SQL Oracle, SQL Server or MySQL 2 Unix or Linux Ubuntu, Raspbian or Debian 4 An OOP Programming language C++, Java or JavaScript 3 Networking basics TCP/IP and Wi-Fi 4 One Scripting language Python or Ruby 3 大事なのはでこぼこ。他よりよいのが1つ以上、他より悪いのを1つ以上書くこと。
全部同じ値は役に立たない。私の場合は、Networkが専門で、BSDを対抗試験にDebian(linux)でコンパイルしてきた。エディタは作業の要。
苦手なのはDB、リレーショナルDBの概念と実装の隙間の大きさに戸惑う。下記の一部の記事は、失敗だったり、未完だったり、これから該当する技術を書く予定のものがあります。
うまく行っていないもので解決する方法、誤字、誤解などにお気づきになられましたら、暖かいご指導のほどお願いいたします。1) Containers (Docker and Kubernetes):3
これまで、色々な版での試験をするのに、全部別々のdockerを作ってhubに登録しとけば、いつでも必要な版をすぐに取り出せて便利。pythonでも、各版ごとにdocker作っておくとか。
docker(18) なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2docker(1)利用を勧める17の理由
https://qiita.com/kaizen_nagoya/items/c4e5075142bf5e11ddbedocker(0) 資料集
https://qiita.com/kaizen_nagoya/items/45699eefd62677f69c1d2) Cloud Platform (AWS, GCP, or Azure):3
いろいろなcloudの違いに依存されないためには、dockerで作ったものがそのままうごくサービスに限定して基本的な構造を設計するとよいかもというのが経験則。
「Qiitaのいろいろランキング2019」への感謝と提案
https://qiita.com/kaizen_nagoya/items/40b8557a20e8d75d62b5日鉄ソリューションズのプライベートクラウドは、顧客満足度1位になっているほか、データサイエンティストの行事でDataRobotより上位の2位になっていることを記載。
転職(2) 転職者による、転職者のための、転職者の履歴、業績、面接
https://qiita.com/kaizen_nagoya/items/162fbb954deb886464bfクラウドを利用するにあたってdockerを利用しているとよい点を記載。
製造業における機械学習
https://qiita.com/kaizen_nagoya/items/fbe846de16f74bea1d6f製造業における機械学習でクラウド利用について記載。
3) Data Structure and Algorithm:3
機械学習をここに入れてもいいかもしれない。機械学習は、データ構造化と算法が鍵かも。
『フカシギの数え方』 おねえさんといっしょ:組み合わせ爆発の凄さ
https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3仮説・検証(153)成功体験は語っても、成功体験に頼らないために。清水吉男・田中伸明
https://qiita.com/kaizen_nagoya/items/d32adfaf7b2568bfd9d2データ中心設計で田中伸明さんと連名で安全工学シンポジウム等で発表させていただいているのは光栄。
仮説・検証(122)分析と設計
https://qiita.com/kaizen_nagoya/items/d7341c407026af61f2164) A Version Control Tool (Git):3
版管理がこんなに楽になるなんて。
仮説・検証(51)公開算譜は機敏だ(open source is agile)GitHub and docker
https://qiita.com/kaizen_nagoya/items/5dd49a046b5991af3a5e卒業論文、修士論文、博士論文は github/gitlab/bitbacketのprivate利用をお勧め
https://qiita.com/kaizen_nagoya/items/eb9945a2649f6f3eabd0現在努力中
https://github.com/kaizen-nagoya5) One Text Editors (VIM):4
VZエディタ移植(porting)に当たって実施したことと成果
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949「アセンブラへの道」組立語(assembler)・機械語(machine language)・CPU
https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2令和で成果を出す予定のソフトウェア・プログラミング・IT(一部、平成のコピー)
https://qiita.com/kaizen_nagoya/items/d7eae2ca3229eda72f88仮説・検証(139)新人(学生)を指導するよりも新人(学生)に指導してもらった方が効率的
https://qiita.com/kaizen_nagoya/items/db993b1536055029f7c86) IDEs (VSCode or IntelliJIDEA):3
docker(39) Cコンパイラ3種をdockerで
https://qiita.com/kaizen_nagoya/items/77184cf005490d7579e6g++, clang++ and vscode++ をdockerで(まだエラー中)
https://qiita.com/kaizen_nagoya/items/825e9bcb017925e0fc5adocker and vscode not visual studio code
https://qiita.com/kaizen_nagoya/items/165a281570a8c62ca50a7) Database and SQL:2
仮説・検証(163)生産縮小、規模縮小、人員縮小時には自動化道具を増強
https://qiita.com/kaizen_nagoya/items/8df1dc7d3a5c7869d3c2Python で SQL
https://qiita.com/kaizen_nagoya/items/1a210fd10efaead88f688) UNIX (Linux):4
Posix Test Suite docker downloads, tar, install
https://qiita.com/kaizen_nagoya/items/f1e24be04a2405ede00fxtUMLを導入する(linux編)
https://qiita.com/kaizen_nagoya/items/297097cc47a6487d9f20仮説・検証(165)40年でソフトウェア開発の景色はどのぐらい変わったのか?
https://qiita.com/kaizen_nagoya/items/54c17cf751894eef56f8Raspberry Pi(SDカード付き)開封から起動までの時間測定
https://qiita.com/kaizen_nagoya/items/8cde74c07848ec413f7b9) An OOP Programming language (C++, Java or Python):3
Object Oriented Programmingは、物をよく分析してプログラムすればいいだけだと思えば良い。
プログラミング言語をよく知らないうちなら理解可能な概念。
特定の言語を知ってしまうと、その言語での解決策の案に囚われて、すごく狭い理解しかしない人たちがいるかもしれない。抽象データ型に対応している言語ならどれでもよい。
Classによる体系化は一手法でお勧めできない。C++ならTemplateを駆使したり、拡張するといいかもしれない。見出しは忘れて、一つの言語を操れればいいと思うとよい。
Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76#_reference-6bf86e567f8b9d0a1028仮説・検証(89)インド、インドネシアとJava、Javascript:接尾辞がついて別物と言うが共通点は多い。
https://qiita.com/kaizen_nagoya/items/2c331ff6654d41d5e157dockerで機械学習(87) with JAVA(1)「Machine Learning: End-to-End guide for Java developers」 By Richard Reese, Jennifer Reese, Bostjan Kaluza, Uday Kamath, Krishna Choppella
10) Networking basics:4
無線網(Wi-Fi)空中線(antenna)(0) 記事一覧(122/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001情報処理技術者試験 ネットワークスペシャリストに合格
https://qiita.com/kaizen_nagoya/items/407857392ca5c5677ee4「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e通信エミュレータの移植
https://qiita.com/kaizen_nagoya/items/ce505bbea4229b83e93b11) One Scripting language:3
shellでもいいかも。自動実行できればいい。
Windows(M.S.)にPython3(Anaconda3)を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679docker(19) 言語処理100本ノックをdockerで。python覚えるのに最適。
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4転職(16) 65歳からのプログラミング入門
https://qiita.com/kaizen_nagoya/items/1561f910c275b22d7c9f並べ替え(re sort)
11の項目を、自分が大事だと思う順番に並び替えるのも良い。
K J category examples value 1 4 A Version Control Tool git 3 2 1 Containers Docker and Kubernetes 3 3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 4 5 One Text Editors vim or Eclipse 4 5 6 IDEs VSCode or IntelliJIDEA 3 6 10 Networking basics TCP/IP and Wi-Fi 4 7 8 Unix or Linux Ubuntu, Raspbian or Debian 4 8 11 One Scripting language Python or Ruby 3 9 9 An OOP Programming language C++, Java or JavaScript 3 10 7 Database and SQL Oracle, SQL Server or MySQL 2 11 2 Cloud Platform AWS, GCP, or Azure 3 自分が得意な分野が真ん中にある。この並べ替えは、一つの意見。他の分野が得意な人は、他の並び方になるだろう。Jは原著者のJavinpaul, kは@kaizen_nagoya。
cloud platformが低いのは、もっと便利になる物が生き残るだろうという想定から。
cloud platformを作るプログラマがもっと頑張ると良い。
Database が低いのも同じ理由。
Unix/Linuxがどんどん便利になって、Raspbianやubuntuのように普及して使いやすくなるともっと上にするかも。項目合併(merge)
IDEにエディタは含むこともあり、One Text Editors とIDEは一つの項目でも良いかもしれない。
UNIXがTCP/IPとともに普及してきたことを考えると、Networking basics と Unix or Linuxも一つの項目でも良いかもしれない。
言語はOOPかどうかはどっちゃでも良くて、One Scripting language と An OOP Programming language もpythonかJavascriptで良いので一つの項目で良いかもしれない。私版「開発者が知っておくべき8の必須技能」に縮退。ただし、Web Serverがないので、Databeseと合体して1項目にした。Data Structure and Algorithmと合体するかどうかは悩んだ。
A version control toolにはissuとwikiも合わせたdocument toolに拡張した。
K J category examples value 1 4 A Version Control and document Tool GitHub, gitlab or bitbucket 3 2 1 Containers Docker and Kubernetes 3 3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 4 5+6 One Text Editors and IDEs vim, Eclipse, VSCode or IntelliJIDEA 4 5 10+8 Networking and Unix(Linux) TCP/IP, Wi-Fi and Ubuntu, Raspbian or Debian 4 6 11+9 One Scripting or Programming llanguage Python, Ruby, C++, Java or JavaScript 3 7 7 Web and Database Apache or Nginx and Oracle, SQL Server or MySQL 2 8 2 Cloud Platform AWS, GCP, or Azure 3 おお、重複感が減りすっきりした。
どんな資料も、プログラマは再計画(re programming)すると良いかも。
参考資料(reference)
一覧の一覧 a directory of directories of mine.
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39docker(59) Githubとdocker
https://qiita.com/kaizen_nagoya/items/f7e142cd283a1c314234プログラマが知っているとよい色使い(JIS安全色)
https://qiita.com/kaizen_nagoya/items/cb7eb3199b0b98904a35参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1「平成のうちにやめたかった『ITの7つの無意味な習慣』」に付け加えたかったこと。
https://qiita.com/kaizen_nagoya/items/e6f9c2e0afbf8ab4181c仮説・検証(54)プログラムは音楽だ (A program is a music.)
https://qiita.com/kaizen_nagoya/items/33c9f33581e6886f8ad8文書履歴(document history)
ver. 0.01 初稿 20200122 午前
ver. 0.02 順番並べ替え 20200122 昼
ver. 0.03 項目縮退 20200122 午後1時
ver. 0.04 Web追記 20200122 午後2時
ver. 0.05 参考資料追記 20200122 午後3時
ver. 0.06 表記補正、誤記訂正 20200122 午後4時
- 投稿日:2020-01-22T11:33:29+09:00
2020年の開発者が知っておくべき11の必須技能→回答編 → 並べ替え→項目合併(8項目)
2020年の開発者が知っておくべき11の必須スキル
https://qiita.com/rana_kualu/items/c79a16ff503c86b2748311 Essential Skills Software Developers should Learn in 2020
https://dev.to/javinpaul/11-essential-skills-software-developers-should-learn-in-2020-1bioTop 11 Essentials Skills for Software Developers in 2020
1) Containers (Docker and Kubernetes)
2) Cloud Platform (AWS, GCP, or Azure)
3) Data Structure and Algorithm
4) A Version Control Tool (Git)
5) One Text Editors (VIM)
6) IDEs (VSCode or IntelliJIDEA)
7) Database and SQL
8) UNIX (Linux)
9) An OOP Programming language (C++, Java or Python)
10) Networking basics
11) One Scripting language回答編
11の技能を自己評価してみる。
0:知らない、触ったことがない
1:知ってる。使ったことがあるかもしれない。
2:誰かに相談できれば仕事で使える。
3:仕事に使っている。
4:改良に取り組んでいる。点数を書いたら、その数だけURLを示す。
みだし補正
各みだしを category と examplesに分けてみる。見出しにやや整合性がない気がした。
下記表では、適当に補足・補正してみた。一番右の列が自己評価。
category examples value Containers Docker and Kubernetes 3 Cloud Platform AWS, GCP, or Azure 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 A Version Control Tool git 3 One Text Editors vim, Emacs or Eclipse 4 IDEs VSCode or IntelliJIDEA 3 Database and SQL Oracle, SQL Server or MySQL 2 Unix or Linux Ubuntu, Raspbian or Debian 4 An OOP Programming language C++, Java or JavaScript 3 Networking basics TCP/IP and Wi-Fi 4 One Scripting language Python or Ruby 3 大事なのはでこぼこ。他よりよいのが1つ以上、他より悪いのを1つ以上書くこと。
全部同じ値は役に立たない。私の場合は、Networkが専門で、BSDを対抗試験にDebian(linux)でコンパイルしてきた。エディタは作業の要。
苦手なのはDB、リレーショナルDBの概念と実装の隙間の大きさに戸惑う。下記の一部の記事は、失敗だったり、未完だったり、これから該当する技術を書く予定のものがあります。
うまく行っていないもので解決する方法、誤字、誤解などにお気づきになられましたら、暖かいご指導のほどお願いいたします。回答一覧
1) Containers (Docker and Kubernetes):3
これまで、色々な版での試験をするのに、全部別々のdockerを作ってhubに登録しとけば、いつでも必要な版をすぐに取り出せて便利。pythonでも、各版ごとにdocker作っておくとか。
docker(18) なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2docker(1)利用を勧める17の理由
https://qiita.com/kaizen_nagoya/items/c4e5075142bf5e11ddbedocker(0) 資料集
https://qiita.com/kaizen_nagoya/items/45699eefd62677f69c1d2) Cloud Platform (AWS, GCP, or Azure):3
いろいろなcloudの違いに依存されないためには、dockerで作ったものがそのままうごくサービスに限定して基本的な構造を設計するとよいかもというのが経験則。
「Qiitaのいろいろランキング2019」への感謝と提案
https://qiita.com/kaizen_nagoya/items/40b8557a20e8d75d62b5日鉄ソリューションズのプライベートクラウドは、顧客満足度1位になっているほか、データサイエンティストの行事でDataRobotより上位の2位になっていることを記載。
転職(2) 転職者による、転職者のための、転職者の履歴、業績、面接
https://qiita.com/kaizen_nagoya/items/162fbb954deb886464bfクラウドを利用するにあたってdockerを利用しているとよい点を記載。
製造業における機械学習
https://qiita.com/kaizen_nagoya/items/fbe846de16f74bea1d6f製造業における機械学習でクラウド利用について記載。
3) Data Structure and Algorithm:3
機械学習をここに入れてもいいかもしれない。機械学習は、データ構造化と算法が鍵かも。
『フカシギの数え方』 おねえさんといっしょ:組み合わせ爆発の凄さ
https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3仮説・検証(153)成功体験は語っても、成功体験に頼らないために。清水吉男・田中伸明
https://qiita.com/kaizen_nagoya/items/d32adfaf7b2568bfd9d2データ中心設計で田中伸明さんと連名で安全工学シンポジウム等で発表させていただいているのは光栄。
仮説・検証(122)分析と設計
https://qiita.com/kaizen_nagoya/items/d7341c407026af61f2164) A Version Control Tool (Git):3
版管理がこんなに楽になるなんて。
仮説・検証(51)公開算譜は機敏だ(open source is agile)GitHub and docker
https://qiita.com/kaizen_nagoya/items/5dd49a046b5991af3a5e卒業論文、修士論文、博士論文は github/gitlab/bitbacketのprivate利用をお勧め
https://qiita.com/kaizen_nagoya/items/eb9945a2649f6f3eabd0現在努力中
https://github.com/kaizen-nagoya5) One Text Editors (VIM):4
VZエディタ移植(porting)に当たって実施したことと成果
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949「アセンブラへの道」組立語(assembler)・機械語(machine language)・CPU
https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2令和で成果を出す予定のソフトウェア・プログラミング・IT(一部、平成のコピー)
https://qiita.com/kaizen_nagoya/items/d7eae2ca3229eda72f88仮説・検証(139)新人(学生)を指導するよりも新人(学生)に指導してもらった方が効率的
https://qiita.com/kaizen_nagoya/items/db993b1536055029f7c86) IDEs (VSCode or IntelliJIDEA):3
docker(39) Cコンパイラ3種をdockerで
https://qiita.com/kaizen_nagoya/items/77184cf005490d7579e6g++, clang++ and vscode++ をdockerで(まだエラー中)
https://qiita.com/kaizen_nagoya/items/825e9bcb017925e0fc5adocker and vscode not visual studio code
https://qiita.com/kaizen_nagoya/items/165a281570a8c62ca50a7) Database and SQL:2
仮説・検証(163)生産縮小、規模縮小、人員縮小時には自動化道具を増強
https://qiita.com/kaizen_nagoya/items/8df1dc7d3a5c7869d3c2Python で SQL
https://qiita.com/kaizen_nagoya/items/1a210fd10efaead88f688) UNIX (Linux):4
Posix Test Suite docker downloads, tar, install
https://qiita.com/kaizen_nagoya/items/f1e24be04a2405ede00fxtUMLを導入する(linux編)
https://qiita.com/kaizen_nagoya/items/297097cc47a6487d9f20仮説・検証(165)40年でソフトウェア開発の景色はどのぐらい変わったのか?
https://qiita.com/kaizen_nagoya/items/54c17cf751894eef56f8Raspberry Pi(SDカード付き)開封から起動までの時間測定
https://qiita.com/kaizen_nagoya/items/8cde74c07848ec413f7b9) An OOP Programming language (C++, Java or Python):3
Object Oriented Programmingは、物をよく分析してプログラムすればいいだけだと思えば良い。
プログラミング言語をよく知らないうちなら理解可能な概念。
特定の言語を知ってしまうと、その言語での解決策の案に囚われて、すごく狭い理解しかしない人たちがいるかもしれない。抽象データ型に対応している言語ならどれでもよい。
COBOLは、元々Object Orientedな言語で、OOCOBOLでなくてもよいかも。機械語がいちばんのObject Oriented Languageだとずっと主張しつづけてきた。
Classによる体系化はOOPの一手法かもしれないがお勧めできない。C++ならTemplateを駆使したり、拡張するといいかもしれない。見出しは忘れて、一つの言語を操れればいいと思うとよいかも。
Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76#_reference-6bf86e567f8b9d0a1028仮説・検証(89)インド、インドネシアとJava、Javascript:接尾辞がついて別物と言うが共通点は多い。
https://qiita.com/kaizen_nagoya/items/2c331ff6654d41d5e157dockerで機械学習(87) with JAVA(1)「Machine Learning: End-to-End guide for Java developers」 By Richard Reese, Jennifer Reese, Bostjan Kaluza, Uday Kamath, Krishna Choppella
https://qiita.com/kaizen_nagoya/items/2d3a4f168b4c9a28b32e10) Networking basics:4
TCP/IPを基本としてWi-Fiまで幅広く網羅してもらえると嬉しい。
無線網(Wi-Fi)空中線(antenna)(0) 記事一覧(122/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001情報処理技術者試験 ネットワークスペシャリストに合格
https://qiita.com/kaizen_nagoya/items/407857392ca5c5677ee4「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e通信エミュレータの移植
https://qiita.com/kaizen_nagoya/items/ce505bbea4229b83e93b11) One Scripting language:3
shellでもいいかも。自動実行できればいい。
Windows(M.S.)にPython3(Anaconda3)を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679docker(19) 言語処理100本ノックをdockerで。python覚えるのに最適。
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4転職(16) 65歳からのプログラミング入門
https://qiita.com/kaizen_nagoya/items/1561f910c275b22d7c9f並べ替え(re sort)
11の項目を、自分が大事だと思う順番に並び替えるのも良い。
K J category examples value 1 4 A Version Control Tool git 3 2 1 Containers Docker and Kubernetes 3 3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 4 5 One Text Editors vim, Emacs or Eclipse 4 5 6 IDEs VSCode or IntelliJIDEA 3 6 10 Networking basics TCP/IP and Wi-Fi 4 7 8 Unix or Linux Ubuntu, Raspbian or Debian 4 8 11 One Scripting language Python or Ruby 3 9 9 An OOP Programming language C++, Java or JavaScript 3 10 7 Database and SQL Oracle, SQL Server or MySQL 2 11 2 Cloud Platform AWS, GCP, or Azure 3 自分が得意な分野が真ん中にある。この並べ替えは、一つの意見。他の分野が得意な人は、他の並び方になるだろう。Jは原著者のJavinpaul, kは@kaizen_nagoya。
cloud platformが低いのは、もっと便利になる物が生き残るだろうという想定から。
cloud platformを作るプログラマがもっと頑張ると良い。
Database が低いのも同じ理由。
Unix/Linuxがどんどん便利になって、Raspbianやubuntuのように普及して使いやすくなるともっと上にするかも。項目合併(merge)
IDEにエディタは含むこともあり、One Text Editors とIDEは一つの項目でも良いかもしれない。
UNIXがTCP/IPとともに普及してきたことを考えると、Networking basics と Unix or Linuxも一つの項目でも良いかもしれない。
言語はOOPかどうかはどっちゃでも良くて、One Scripting language と An OOP Programming language もpythonかJavascriptで良いので一つの項目で良いかもしれない。私版「開発者が知っておくべき8の必須技能」に縮退。
K J category examples value 1 4 A Version Control git 3 2 1 Containers Docker and Kubernetes 3 3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 4 5+6 One Text Editors and IDEs vim, Emacs, Eclipse, VSCode or IntelliJIDEA 4 5 10+8 Networking and Unix(Linux) TCP/IP, Wi-Fi and Ubuntu, Raspbian or Debian 4 6 11+9 One Scripting or Programming llanguage Python, Ruby, C++, Java or JavaScript 3 7 7 Database Oracle, SQL Server or MySQL 2 8 2 Cloud Platform AWS, GCP, or Azure 3 おお、重複感が減りすっきりした。もちろん、他の統合方法もいっぱいあると思う。
自分なりに整理すると仕事で役立つかも。どんな資料も、再利用可能な方法で再計画(re programming)するのがprogrammer流かも。
内容追加(addition)
A version control toolにはissuとwikiも合わせたdocument toolに拡張した。
Web Serverがないので、Databeseと合体して1項目にした。Data Structure and Algorithmと合体するかどうかは悩んだ。
K J category examples value 1 4 A Version Control and document Tool GitHub, gitlab or bitbucket 3 2 1 Containers Docker and Kubernetes 3 3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 4 5+6 One Text Editors and IDEs vim, Emacs, Eclipse, VSCode or IntelliJIDEA 4 5 10+8 Networking and Unix(Linux) TCP/IP, Wi-Fi and Ubuntu, Raspbian or Debian 4 6 11+9 One Scripting or Programming llanguage Python, Ruby, C++, Java or JavaScript 3 7 7 Web and Database Apache or Nginx and Oracle, SQL Server or MySQL 2 8 2 Cloud Platform AWS, GCP, or Azure 3 参考資料(reference)
一覧の一覧 a directory of directories of mine.
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39docker(59) Githubとdocker
https://qiita.com/kaizen_nagoya/items/f7e142cd283a1c314234プログラマが知っているとよい色使い(JIS安全色)
https://qiita.com/kaizen_nagoya/items/cb7eb3199b0b98904a35参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1「平成のうちにやめたかった『ITの7つの無意味な習慣』」に付け加えたかったこと。
https://qiita.com/kaizen_nagoya/items/e6f9c2e0afbf8ab4181c仮説・検証(54)プログラムは音楽だ (A program is a music.)
https://qiita.com/kaizen_nagoya/items/33c9f33581e6886f8ad8文書履歴(document history)
ver. 0.01 初稿 20200122 午前
ver. 0.02 順番並べ替え 20200122 昼
ver. 0.03 項目縮退 20200122 午後1時
ver. 0.04 Web追記 20200122 午後2時
ver. 0.05 参考資料追記 20200122 午後3時
ver. 0.06 表記補正、誤記訂正、Emacs追記 20200122 午後4時
ver. 0.07 構造見直し 20200122 午後5時
ver. 0.08 抜け漏れ補正 20200122 夜
ver. 0.09 内容追加(addition)追記 20200123
- 投稿日:2020-01-22T11:33:29+09:00
2020年の開発者が知っておくべき11の必須技能→回答編 → 並べ替え→項目合併(8項目)→内容追記
2020年の開発者が知っておくべき11の必須スキル
https://qiita.com/rana_kualu/items/c79a16ff503c86b2748311 Essential Skills Software Developers should Learn in 2020
https://dev.to/javinpaul/11-essential-skills-software-developers-should-learn-in-2020-1bioTop 11 Essentials Skills for Software Developers in 2020
1) Containers (Docker and Kubernetes)
2) Cloud Platform (AWS, GCP, or Azure)
3) Data Structure and Algorithm
4) A Version Control Tool (Git)
5) One Text Editors (VIM)
6) IDEs (VSCode or IntelliJIDEA)
7) Database and SQL
8) UNIX (Linux)
9) An OOP Programming language (C++, Java or Python)
10) Networking basics
11) One Scripting language回答編
11の技能を自己評価してみる。
0:知らない、触ったことがない
1:知ってる。使ったことがあるかもしれない。
2:誰かに相談できれば仕事で使える。
3:仕事に使っている。
4:改良に取り組んでいる。点数を書いたら、その数だけURLを示す。
みだし補正
各みだしを category と examplesに分けてみる。見出しにやや整合性がない気がした。
下記表では、適当に補足・補正してみた。一番右の列が自己評価。
category examples value Containers Docker and Kubernetes 3 Cloud Platform AWS, GCP, or Azure 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 A Version Control Tool git 3 One Text Editors vim, Emacs or Eclipse 4 IDEs VSCode or IntelliJIDEA 3 Database and SQL Oracle, SQL Server or MySQL 2 Unix or Linux Ubuntu, Raspbian or Debian 4 An OOP Programming language C++, Java or JavaScript 3 Networking basics TCP/IP and Wi-Fi 4 One Scripting language Python or Ruby 3 大事なのはでこぼこ。他よりよいのが1つ以上、他より悪いのを1つ以上書くこと。
全部同じ値は役に立たない。私の場合は、Networkが専門で、BSDを対抗試験にDebian(linux)でコンパイルしてきた。エディタは作業の要。
苦手なのはDB、リレーショナルDBの概念と実装の隙間の大きさに戸惑う。下記の一部の記事は、失敗だったり、未完だったり、これから該当する技術を書く予定のものがあります。
うまく行っていないもので解決する方法、誤字、誤解などにお気づきになられましたら、暖かいご指導のほどお願いいたします。回答一覧
1) Containers (Docker and Kubernetes):3
これまで、色々な版での試験をするのに、全部別々のdockerを作ってhubに登録しとけば、いつでも必要な版をすぐに取り出せて便利。pythonでも、各版ごとにdocker作っておくとか。
docker(18) なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2docker(1)利用を勧める17の理由
https://qiita.com/kaizen_nagoya/items/c4e5075142bf5e11ddbedocker(0) 資料集
https://qiita.com/kaizen_nagoya/items/45699eefd62677f69c1d2) Cloud Platform (AWS, GCP, or Azure):3
いろいろなcloudの違いに依存されないためには、dockerで作ったものがそのままうごくサービスに限定して基本的な構造を設計するとよいかもというのが経験則。
「Qiitaのいろいろランキング2019」への感謝と提案
https://qiita.com/kaizen_nagoya/items/40b8557a20e8d75d62b5日鉄ソリューションズのプライベートクラウドは、顧客満足度1位になっているほか、データサイエンティストの行事でDataRobotより上位の2位になっていることを記載。
転職(2) 転職者による、転職者のための、転職者の履歴、業績、面接
https://qiita.com/kaizen_nagoya/items/162fbb954deb886464bfクラウドを利用するにあたってdockerを利用しているとよい点を記載。
製造業における機械学習
https://qiita.com/kaizen_nagoya/items/fbe846de16f74bea1d6f製造業における機械学習でクラウド利用について記載。
3) Data Structure and Algorithm:3
機械学習をここに入れてもいいかもしれない。機械学習は、データ構造化と算法が鍵かも。
『フカシギの数え方』 おねえさんといっしょ:組み合わせ爆発の凄さ
https://qiita.com/kaizen_nagoya/items/f309b0c2bb015bbc71c3仮説・検証(153)成功体験は語っても、成功体験に頼らないために。清水吉男・田中伸明
https://qiita.com/kaizen_nagoya/items/d32adfaf7b2568bfd9d2データ中心設計で田中伸明さんと連名で安全工学シンポジウム等で発表させていただいているのは光栄。
仮説・検証(122)分析と設計
https://qiita.com/kaizen_nagoya/items/d7341c407026af61f2164) A Version Control Tool (Git):3
版管理がこんなに楽になるなんて。
仮説・検証(51)公開算譜は機敏だ(open source is agile)GitHub and docker
https://qiita.com/kaizen_nagoya/items/5dd49a046b5991af3a5e卒業論文、修士論文、博士論文は github/gitlab/bitbacketのprivate利用をお勧め
https://qiita.com/kaizen_nagoya/items/eb9945a2649f6f3eabd0現在努力中
https://github.com/kaizen-nagoya5) One Text Editors (VIM):4
VZエディタ移植(porting)に当たって実施したことと成果
https://qiita.com/kaizen_nagoya/items/5551be98dcbed8f41949「アセンブラへの道」組立語(assembler)・機械語(machine language)・CPU
https://qiita.com/kaizen_nagoya/items/46f2333c2647b0e692b2令和で成果を出す予定のソフトウェア・プログラミング・IT(一部、平成のコピー)
https://qiita.com/kaizen_nagoya/items/d7eae2ca3229eda72f88仮説・検証(139)新人(学生)を指導するよりも新人(学生)に指導してもらった方が効率的
https://qiita.com/kaizen_nagoya/items/db993b1536055029f7c86) IDEs (VSCode or IntelliJIDEA):3
docker(39) Cコンパイラ3種をdockerで
https://qiita.com/kaizen_nagoya/items/77184cf005490d7579e6g++, clang++ and vscode++ をdockerで(まだエラー中)
https://qiita.com/kaizen_nagoya/items/825e9bcb017925e0fc5adocker and vscode not visual studio code
https://qiita.com/kaizen_nagoya/items/165a281570a8c62ca50a7) Database and SQL:2
仮説・検証(163)生産縮小、規模縮小、人員縮小時には自動化道具を増強
https://qiita.com/kaizen_nagoya/items/8df1dc7d3a5c7869d3c2Python で SQL
https://qiita.com/kaizen_nagoya/items/1a210fd10efaead88f688) UNIX (Linux):4
Posix Test Suite docker downloads, tar, install
https://qiita.com/kaizen_nagoya/items/f1e24be04a2405ede00fxtUMLを導入する(linux編)
https://qiita.com/kaizen_nagoya/items/297097cc47a6487d9f20仮説・検証(165)40年でソフトウェア開発の景色はどのぐらい変わったのか?
https://qiita.com/kaizen_nagoya/items/54c17cf751894eef56f8Raspberry Pi(SDカード付き)開封から起動までの時間測定
https://qiita.com/kaizen_nagoya/items/8cde74c07848ec413f7b9) An OOP Programming language (C++, Java or Python):3
Object Oriented Programmingは、物をよく分析してプログラムすればいいだけだと思えば良い。
プログラミング言語をよく知らないうちなら理解可能な概念。
特定の言語を知ってしまうと、その言語での解決策の案に囚われて、すごく狭い理解しかしない人たちがいるかもしれない。抽象データ型に対応している言語ならどれでもよい。
COBOLは、元々Object Orientedな言語で、OOCOBOLでなくてもよいかも。機械語がいちばんのObject Oriented Languageだとずっと主張しつづけてきた。
Classによる体系化はOOPの一手法かもしれないがお勧めできない。C++ならTemplateを駆使したり、拡張するといいかもしれない。見出しは忘れて、一つの言語を操れればいいと思うとよいかも。
Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76#_reference-6bf86e567f8b9d0a1028仮説・検証(89)インド、インドネシアとJava、Javascript:接尾辞がついて別物と言うが共通点は多い。
https://qiita.com/kaizen_nagoya/items/2c331ff6654d41d5e157dockerで機械学習(87) with JAVA(1)「Machine Learning: End-to-End guide for Java developers」 By Richard Reese, Jennifer Reese, Bostjan Kaluza, Uday Kamath, Krishna Choppella
https://qiita.com/kaizen_nagoya/items/2d3a4f168b4c9a28b32e10) Networking basics:4
TCP/IPを基本としてWi-Fiまで幅広く網羅してもらえると嬉しい。
無線網(Wi-Fi)空中線(antenna)(0) 記事一覧(122/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001情報処理技術者試験 ネットワークスペシャリストに合格
https://qiita.com/kaizen_nagoya/items/407857392ca5c5677ee4「基礎からわかるTCP/IP JAVAネットワークプログラミング」Eclipseでコンパイル。Wiresharkでデバッグ。
https://qiita.com/kaizen_nagoya/items/14519536b827fdadb32e通信エミュレータの移植
https://qiita.com/kaizen_nagoya/items/ce505bbea4229b83e93b11) One Scripting language:3
shellでもいいかも。自動実行できればいい。
Windows(M.S.)にPython3(Anaconda3)を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679docker(19) 言語処理100本ノックをdockerで。python覚えるのに最適。
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4転職(16) 65歳からのプログラミング入門
https://qiita.com/kaizen_nagoya/items/1561f910c275b22d7c9f並べ替え(re sort)
11の項目を、自分が大事だと思う順番に並び替えるのも良い。
K J category examples value 1 4 A Version Control Tool git 3 2 1 Containers Docker and Kubernetes 3 3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 4 5 One Text Editors vim, Emacs or Eclipse 4 5 6 IDEs VSCode or IntelliJIDEA 3 6 10 Networking basics TCP/IP and Wi-Fi 4 7 8 Unix or Linux Ubuntu, Raspbian or Debian 4 8 11 One Scripting language Python or Ruby 3 9 9 An OOP Programming language C++, Java or JavaScript 3 10 7 Database and SQL Oracle, SQL Server or MySQL 2 11 2 Cloud Platform AWS, GCP, or Azure 3 自分が得意な分野が真ん中にある。この並べ替えは、一つの意見。他の分野が得意な人は、他の並び方になるだろう。Jは原著者のJavinpaul, kは@kaizen_nagoya。
cloud platformが低いのは、もっと便利になる物が生き残るだろうという想定から。
cloud platformを作るプログラマがもっと頑張ると良い。
Database が低いのも同じ理由。
Unix/Linuxがどんどん便利になって、Raspbianやubuntuのように普及して使いやすくなるともっと上にするかも。項目合併(merge)
IDEにエディタは含むこともあり、One Text Editors とIDEは一つの項目でも良いかもしれない。
UNIXがTCP/IPとともに普及してきたことを考えると、Networking basics と Unix or Linuxも一つの項目でも良いかもしれない。
言語はOOPかどうかはどっちゃでも良くて、One Scripting language と An OOP Programming language もpythonかJavascriptで良いので一つの項目で良いかもしれない。私版「開発者が知っておくべき8の必須技能」に縮退。
K J category examples value 1 4 A Version Control git 3 2 1 Containers Docker and Kubernetes 3 3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 4 5+6 One Text Editors and IDEs vim, Emacs, Eclipse, VSCode or IntelliJIDEA 4 5 10+8 Networking and Unix(Linux) TCP/IP, Wi-Fi and Ubuntu, Raspbian or Debian 4 6 11+9 One Scripting or Programming llanguage Python, Ruby, C++, Java or JavaScript 3 7 7 Database Oracle, SQL Server or MySQL 2 8 2 Cloud Platform AWS, GCP, or Azure 3 おお、重複感が減りすっきりした。もちろん、他の統合方法もいっぱいあると思う。
自分なりに整理すると仕事で役立つかも。どんな資料も、再利用可能な方法で再計画(re programming)するのがprogrammer流かも。
内容追加(addition)
A version control toolにはissuとwikiも合わせたdocument toolに拡張した。
Web Serverがないので、Databeseと合体して1項目にした。Data Structure and Algorithmと合体するかどうかは悩んだ。
K J category examples value 1 4 A Version Control and document Tool GitHub, gitlab or bitbucket 3 2 1 Containers Docker and Kubernetes 3 3 3 Data Structure and Algorithm Machine Learning or Quantum Computing 3 4 5+6 One Text Editors and IDEs vim, Emacs, Eclipse, VSCode or IntelliJIDEA 4 5 10+8 Networking and Unix(Linux) TCP/IP, Wi-Fi and Ubuntu, Raspbian or Debian 4 6 11+9 One Scripting or Programming llanguage Python, Ruby, C++, Java or JavaScript 3 7 7 Web and Database Apache or Nginx and Oracle, SQL Server or MySQL 2 8 2 Cloud Platform AWS, GCP, or Azure 3 参考資料(reference)
一覧の一覧 a directory of directories of mine.
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39docker(59) Githubとdocker
https://qiita.com/kaizen_nagoya/items/f7e142cd283a1c314234プログラマが知っているとよい色使い(JIS安全色)
https://qiita.com/kaizen_nagoya/items/cb7eb3199b0b98904a35参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1「平成のうちにやめたかった『ITの7つの無意味な習慣』」に付け加えたかったこと。
https://qiita.com/kaizen_nagoya/items/e6f9c2e0afbf8ab4181c仮説・検証(54)プログラムは音楽だ (A program is a music.)
https://qiita.com/kaizen_nagoya/items/33c9f33581e6886f8ad8文書履歴(document history)
ver. 0.01 初稿 20200122 午前
ver. 0.02 順番並べ替え 20200122 昼
ver. 0.03 項目縮退 20200122 午後1時
ver. 0.04 Web追記 20200122 午後2時
ver. 0.05 参考資料追記 20200122 午後3時
ver. 0.06 表記補正、誤記訂正、Emacs追記 20200122 午後4時
ver. 0.07 構造見直し 20200122 午後5時
ver. 0.08 抜け漏れ補正 20200122 夜
ver. 0.09 内容追加(addition)追記 20200123
- 投稿日:2020-01-22T10:06:02+09:00
Dockerを使って簡単にローカルtomcat環境を作る
はじめに
対象者
- eclipseを使ったJavaの開発はしたことはある
- あまりサーバーサイド知らない
- Docker使ったことない or なんとなく手順で使い方は見た。
やること
あまり手間をかけずにローカルにtomcatのサーバー環境を構築する。
tomcatをそのままローカルにインストールしてもいいのですが、
サーバーはLinux環境であることが多く、環境差異による問題も多いです。全く同じとは言えませんが、なるべく本番に近い環境を構築したいと思います。
Dockerとは
この記事を参考にしてください。
https://qiita.com/hikaruright/items/0908df7d1101498e4a58前提条件
Windows10 ProまたはMacを使っている
How To Setup
今回は、Dockerを使って環境を構築してみましょう。
Dockerのインストール
以下のサイトにアクセスし、Dockerをインストールします。
既にインストール済みの場合にはスキップしてください。https://hub.docker.com/?overlay=onboarding
なお、Windowsをお使いの場合にはHyper-Vの有効化が必要ですのでご注意ください。
以下の公式ドキュメントを参考に有効化を行います。Docker Composeによる起動
Dockerを使っていると、コンテナの管理が若干面倒です。
特に、一つのアプリケーションを作成するために複数のコンテナを起動する必要がある場合には
Docker Composeという機能を利用します。簡単に説明すると、dockerのコンテナを起動させるための設定をひとまとめにした設定ファイルを作成します。
その設定ファイルがdocker-compose.ymlです。
今回はtomcatが起動する単一のコンテナを実行するための設定ファイルを作成します。
ファイルの作成
任意のフォルダを作成し、以下のファイルを作成します。
docker-compose.ymlversion: '3' services: app: container_name: tomcat image: tomcat:8.5-jdk8-adoptopenjdk-openj9 ports: - 8080:8080 volumes: - ./webapps:/usr/local/tomcat/webapps
これで、containerという名前のコンテナが起動されます。
それぞれの設定内容を解説していきましょう。container_name
起動するコンテナ名です。
docker上で一意となるように指定します。image
イメージ名を指定します。
ports
ポートフォワーディングを指定します。
この例では8080のアクセスをコンテナの8080ポートに転送しています。例えば、ホストOSの8080が既に使用されている場合には、
- 8090:8080とすることで、ホストOSの8090をコンテナの8080ポートに転送することができます。
volumes
ホストOSのフォルダまたはファイルをdockerコンテナのOSにマウントします。
この例の場合には、webappsフォルダをコンテナの/usr/local/tomcat/webappsにマウントしています。Webappsフォルダの作成
作成したdocker-compose.ymlと同じフォルダに、「webapps」というフォルダを作成し、
作成したフォルダに配備したいwarファイルを置きます。最終的に、以下のようなフォルダ構成になります。
/tomcat ┣ docker-compose.yml ┗ /webapps ┗ warファイル実行
ターミナル、またはコマンドプロンプトを開き、
docker-compose.ymlのあるフォルダに移動します。移動したら、以下のコマンドを実行します。
$ docker-compose up -dこれで、ローカルでtomcatが実行されました。
ログの確認
tomcatの起動ログをみたい場合には、以下のコマンドを実行します。
$ docker logs tomcat
以下のコマンドを実行することで、追従したログを表示できます。
$ docker logs -f tomcat動作確認
ブラウザを開き
http://localhost:8080/xxx (xxxはwarのファイル)
にアクセスします。
特に問題なくデプロイされていればページが表示されます。
- 投稿日:2020-01-22T01:41:06+09:00
DockerのVOLUMEを理解してdocker,docker-compose on WSLのパス問題をエレガントに解決しよう
TL;DR
Q. docker、docker-composeのボリューム指定がWSLで上手く動かないんだけど?
A. シンボリックリンクを作ればいいよ。ほれっ↓(→ え?どこに作ってるの?)(試す場合は自己責任で)
# WSL上で実行する または .bashrc などに書く docker run -i --rm -v /:/WSL alpine ln -snf /c /WSL/mnt/c # 参考 WSL上の /home/$USER/directory から /mnt/c/Users/ユーザー名/directory に # シンボリックリンクを貼るという使い方をしてる人 docker run -i --rm -v /:/WSL alpine ln -snf /c/Users/ユーザー名 /WSL/home/$USERこの記事の方法を使うとdockerでもdocker-composeでもLinuxとまったく同じようにボリュームのパス指定ができて、シンボリックリンクが絡んだディレクトリでも問題なく動きます(さすがにWindowsから見えないWSL上のディレクトリは無理ですが)。さらにWSLの設定は変えません。他では見かけない新しいやり方・・・かどうかは知りませんが、少なくとも私が考えた方法です。
おまけでDockerのボリュームの雑な解説記事になってます。(おまけなので正確性は求めないでください。)
長い解説
VOLUMEの仕組み
Dockerのボリュームってわかりづらくないでしょうか?データを永続化する仕組み?指定したディレクトリをコンテナ内にマウントしている?これは間違ってはおらずボリュームで一番多い使い方だと思いますが、ここを出発点とすると逆に理解するのが難しくなると思います。
思いっきり適当ですが、次の順番で理解していきましょう。(前提としてDockerはクライアントサーバーモデルというのは知っていますよね?)
- ボリュームとはDockerサーバーがコンテナに割り当てるストレージ領域である。
- (DockerfileでVOLUMEが定義されてる)コンテナを作成するとそのコンテナ専用にストレージが割り当てられる。
- このストレージの保存ディレクトリの場所はDockerサーバーが勝手に決める。 (当然サーバー上のディレクトリ)
- コンテナを削除してもボリュームは残り続けるので後からでもデータを回収できる。(少しめんどくさいですが)
- コンテナを作らずにボリュームだけを作成することもできる。そのときに任意の名前をつけることもできる。
- コンテナを起動するときに既存のボリュームを割り当てることができる。(docker runの-vオプション)
- Dockerサーバーが作ったどこかのディレクトリのボリュームの代わりに、ユーザーが指定した(サーバー上の)ディレクトリをボリュームとして利用(代用?)できる。
普段よく使われてる(?)使い方は最後の7.のパターンというわけです。
VOLUMEはサーバー上のディレクトリをマウントしている
(この記事で散々、ボリューム=ディレクトリのような書き方をしていますがファイルも指定できます。)
さて本題の前に、VOLUMEで勘違いされそうな点を明確にしておきます。それはクライアントのディレクトリの中身をサーバーに送り込んでいるのではないということです。ボリュームはクライアントにはありません。サーバー上にあります。
docker build
コマンドがクライアントにあるファイルをサーバーに送り込んでビルドしているのとは異なり、ボリュームではパスだけを渡してます。Linuxではどう見えるか
Linuxでは一般的にDockerクライアントもDockerサーバーも同一のマシン上にあって(仮想マシンも使いません)クライアントのディレクトリのパスも、サーバーのディレクトリのパスも同じパスで同じ場所を指しています。サーバー上のディレクトリを指定すると言っても結局はクライアントのディレクトリを指定しているのと変わりません。
Windowsではどう見えるか
さてWindowsではどうなっているのでしょうか?WindowsではDockerを使う場合、一般的にDocker Desktop for Windowsを使います。実態はHyperV上のLinux仮想マシンです。このLinux仮想マシンにはホストOSであるWindows上のドライブが
CIFS(Docker Desktop Community 2.2.0.0 から)gRPC FUSE (grpcfuse)でマウントされています。マウント場所は/host_mnt/c
ですが/host_mnt/c
を指す/c
というシンボリックリンクも作成されています。つまりLinux仮想マシンは/c
で始まるパスでWindous上のファイルにアクセスできる仕組みになっています。興味がある人のために、このLinux仮想マシン(DockerDesktopVM)の中身の調べ方を紹介します。
$ docker run -it --rm -v /:/vm alpine chroot /vmDockerDesktopVM上の
/
ディレクトリをalpineコンテナの/vm
に一旦マウントしてから、/vm
を/
にchroot
しているだけです。ボリュームはサーバー上のディレクトリをマウントしているということがわかれば、なぜこれで中身が見れるのかもわかると思います。さてそれではWindowsではどのようしてパスを処理しているのでしょうか?少し想像が入っていますが、DockerDesktopVMはWindows形式のパスを検出すると以下のようにLinuxのパスへの変換を行っているのだと思います。(WSL所のLinux版DockerクライアントでもWindows形式のパスが使えたのでクライアント側で変換してるのではないようです。)
WSL上で使うのはLinux形式のパスなのでそのような変換は行われません。例えば
/mnt/c/Users/my-name/project
というパスはそのままサーバー上のパスとして扱われます。こんなパスはサーバー上にはないので、当然DockerサーバーはWindows上のファイルにはアクセス出来ません。解決方法
よく見かける解決方法
DockerサーバーがWindows上のファイルにはアクセスできないのは要するにパスの不一致が原因なので合わせてやれば良いのです。その解決法の一つがWSLのWindows上のディレクトリの場所をデフォルトの
/mnt
ではなく/
に変更する方法です。/etc/wsl.conf[automount] root = / options = "metadata"こうすることでWSL上に
/c
以下にCドライブがマウントされ、クライアント側とサーバー側のパスが一致するので同じパスでDockerサーバーはWindows上のファイルを参照できるようになります。冒頭の解決方法
ところで
/mnt/c/Users/my-name/project
って長いですよね?私はよく使うディレクトリに素早くアクセスできるようにWSL上のホームディレクトリにシンボリックリンクを作成しています。例えば/home/koichi/workspace
というシンボリックリンクのリンク先は/mnt/c/Users/koichi/workspace
です。さて、では
/home/koichi/workspace/project
にいるときにdocker run -it -v $PWD/data:/data debian
と実行したらどうなるでしょうか?カレントディレクトリ意味する$PWD
の中身を展開すると/home/koichi/workspace/project/data
となります。こんなディレクトリはDockerDesktopVM上にはありません。そのためWindows上のディレクトリにはアクセスできません。docker-composeの場合は相対パスで指定できてシンボリックリンクは
/mnt/c/
以下のパスに解決されて渡されるようですが、dockerコマンドは絶対パスでしか指定ができずシンボリックリンクも解決されません。そこで冒頭の解決方法です。(DockerDesktopVM上に)パスがないなら作ればいいじゃない?
もう分かったと思いますが、WSL側のパスを変えるのではなく、WSL上で使われているのと同じパスでアクセスできるようにDockerDesktopVMの中にシンボリックリンクを作っています。具体的にはWSL上で
/mnt/c
以下を参照するのでDockerDesktopVM上にも同じ/mnt/c
という名前のシンボリックリンクを作成しています。このリンク先は/c
です。(/c
もシンボリックリンクなので最終的には/host_mnt/c
につながります。)同様に私は必要なので/home/koichi
というシンボリックリンクを作成して、/c/Users/koichi
につなげています。どのような使い方をしているかで作成すべきシンボリックリンクは変わりますが仕組みを理解すれば何を作成すれば良いかもわかると思います。
この方法のデメリット
まずDockerDesktopVMに作成したシンボリックリンクはDockerDesktopVMを再起動すると消えます。DockerDesktopVMに乗り込んでファイルシステムを見ればわかりますが
/var/lib
以外永続化されていません。そのためどこかの時点で再作成する必要があります。(例えば.bashrc
で作成するなど。DockerDesktopVM再起動などのタイミングに仕込めれば良いのですが)もう一つはDockerDesktopVMに変更を加えているところです。利用実績もないので何か気づいていない問題が発生するかもしれません。(例えばDocker Desktopのアップデート時など)なのでこの方法を使う場合は自己責任でお願いします。なにか問題があればコメントいただけると助かります。(実はWindows上でボリュームの扱いが面倒だったので、ボリュームを避けた使い方をしているので気づかない可能性が高いのです。)
あとこの方法によるデメリットというわけでは無いのですが、ボリュームのパスを間違えるとDockerDesktopVM上にディレクトリが作成されてしまいます。そしてそのディレクトリに後からシンボリックリンクを作成しようとするとエラーになりますので気をつけてください。普通はDockerDesktopVMを再起動すれば消えるはずですが。
以上、VOLUMEの解説とパス問題の解決法でした。
- 投稿日:2020-01-22T00:31:10+09:00
Giteaでhttps接続
Gitea v1.10(コンテナ)をHTTPS接続で使う - Qiita
の通りでした。(圧倒的感謝)docker-compose.ymlversion: '3' services: gitea-server: image: gitea/gitea:1.10.3 volumes: - ./gitea-data:/data - ./ssl-data:/ssl ports: - 3000:3000 - 10022:10022 environment: - SSH_DOMAIN=${MY_DOMAIN} - SSH_PORT=10022 - USER_UID=1000 - USER_GID=1000 - ROOT_URL=http://${MY_DOMAIN}:3000 restart: alwaysサーバーのIP or ドメインを.envに入れる。
$ echo MY_DOMAIN=www.example.com > .envletsencryptで作成されたファイルをコピーしておく。
# mkdir ssl-data # cp /etc/letsencrypt/live/www.example.com/fullchain.pem ssl-data/ # cp /etc/letsencrypt/live/www.example.com/privkey.pem ssl-data/一度起動して落とす
# docker-compose up # docker-compose down
ROOT_URL
をhttpsから始まるよう変更してPROTOCOL
、CERT_FILE
、KEY_FILE
の行を追加する。$ vi gitea-data/gitea/conf/app.ini # ROOT_URL = http://www.example.com:3000 ROOT_URL = https://www.example.com:3000 PROTOCOL = https CERT_FILE = /ssl/fullchain.pem KEY_FILE = /ssl/privkey.pem起動して
https://www.example.com
から登録
ボタンから設定を行う。
Gitea環境をdocker-composeで作ってみる - Qiita参照# docker-compose up # docker-compose downGitea v1.10(コンテナ)をHTTPS接続で使う - Qiita
なお、わざわざapp.iniをここで編集せずとも環境変数で最初から反映できるんじゃないの?
ということは当然いわれそうであるが、やってみて反映できなかったのでこのようにvolumeにあるiniを
編集するような手順としている。niiku-y氏も書かれているがdocker-compose.ymlの環境変数から入れてくれそうなものだが、giteaの現在の動きでは手動編集が必要なようだ。