MoriKen's Journal

MoriKen's Journal

アラサー社会人博士による徒然日記。技術についてつらつら。だけだとコンテンツが貧弱なので、会社公認で大学院博士課程に進学した経緯や、独学でTOEICを475→910にしたノウハウを共有します。

Robotics Convenience Store を Release

私がロボットシステム開発のリードエンジニアを務めたプロジェクトでリリースした製品が、正式に公表されました。

一般消費者の方が実際にオーダできるようになっております。様々なメディアでも大々的に取り上げられました。

企業プレスリリース

ROMS ホームページ

プレスリリース

roms.inc

KDDI ホームページ

プレスリリース

news.kddi.com

ニュース記事(動画あり)

テレビ朝日

記事

news.tv-asahi.co.jp

動画

www.youtube.com

時事.com

記事

www.jiji.com

動画

www.youtube.com

ケータイウォッチ

記事

k-tai.watch.impress.co.jp

動画

www.youtube.com

excite ニュース

記事

www.excite.co.jp

動画

www.youtube.com

ニュース記事(動画なし)

ロボットスタート

記事

robotstart.info

Yahoo! ニュース

記事

news.yahoo.co.jp

PR TIMES

記事

prtimes.jp

TECH+

記事

news.mynavi.jp

robot digest

記事

www.robot-digest.com

The bridge

記事

thebridge.jp

Biz Zine

記事

bizzine.jp

Impress watch

記事

www.watch.impress.co.jp

BUSINESS NETWORK

記事

businessnetwork.jp

payment navi

記事

paymentnavi.com

DIAMOND Chain Store

記事

diamond-rm.net

起動中の Docker コンテナに VSCode から接続して Python コードを「ローカル側から」デバッグする

下記事では、Docker コンテナ内から直接デバッグ対象のプログラムをデバッグ実行する方法を記載しました。

www.moriken254.com

ところが、ユースケースというのは増えるものです。コンテナで実行しているプログラムを、リモートからデバッグしたいという場面もあったりします。

その方法も忘れないうちに。

前提

すでに対象の Docker コンテナは起動済みであるとします。また、「ローカル側から」アタッチしてコードをデバッグすることを想定します。

リモートマシンとローカルマシンでの環境構築は、下記を参考に行いました。

qiita.com

リモート側で大事なこと

コード内に直接下記を挿入します。好きなところに入れられるので、割と便利です。

        import ptvsd
        print("waiting...")
        ptvsd.enable_attach()
        ptvsd.wait_for_attach()

launch.json にリモートアタッチ用の設定を追加

リモートアタッチ用のコンフィグレーションを追加します。

例によって、VSCode 左側のメニューから、下図の項目を選択します。

Select Debug Configuration が表示されたら、Remote Attach を選択します。

Remote Debugging (1/2) にて、リモートの IP アドレスを入力します。同一 PC なら、まずlocalhostで大丈夫です。

Remote Debugging (2/2) にて、ポート番号を入力します。空いていればなんでも良いので、デフォルトの 5678 で大丈夫です。

これで、デフォルトのコンフィグレーションが追加されます。

        {
            "name": "Python: Attach",
            "type": "python",
            "request": "attach",
            "connect": {
                "host": "localhost",
                "port": 5678,
            }
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}", 
                    "remoteRoot": "."
                }
            ],
            "justMyCode": false,
        },

launch.json を調整

実際に動作させる環境に合わせて、微調整が必要です。

"localRoot" がターゲットのコードのパスと異なると、break point をセットしてもキャッチされません。

よくあるのが、VSCode はリポジトリのルートディレクトリで開いているけど、デバッグしたいコードは結構下層のプロジェクトフォルダの中だったりする、というケース。

このような場合、ターゲットのコードがエントリポイントなら、"localRoot" を ${workspaceFolder} に書き換えることで、コードがあるフォルダを動的に指定することができます。

基本的な変数は下記に記載されていました。

qiita.com

用意されている変数でうまくいかないときは、任意の絶対パスに書き換えることで対応も可能です。

デバッグ実行

まずは、リモートで対象コードを実行します。

waiting... と表示されたら、準備完了です。

ローカル側で対象コードの任意の行に break point をつけて、デバッグ実行してみましょう。catch に成功するはずです。

あとは、ライブラリ内のデバッグもしたいなら、"justMyCode" の設定を false にすることも忘れずに。

www.moriken254.com

ROS2 でライブラリ化された Python コードも VSCode でデバッグしたい

下記事にて、とりあえず Docker コンテナ内のコードにアクセスできるようになったのは良しとしましょう。

www.moriken254.com

ところが、デフォルトの設定では、ライブラリ化されたコードは追えません。 例えば、ROS2 で python コードを colcon build してパッケージ名で import すると、それはライブラリ化されてしまっているので、デフォルトでは入れません。

できるだけ追加の設定ファイルを変えたくなかったのですが、一か所だけ変更が必要みたいなので、おとなしく従うことにします。

デバッグと実行から launch.json を作成する

VSCode 左側のメニューから、下図の項目を選択します。

Select Debug Configuration が表示されたら、Python File を選択します。

生成される launch.json を確認します。 justMyCode のフィールドがデフォルトだと true なので、false にします。

        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": false,
        },

これで、縦横無尽にライブラリにステップインできます。

参考

qiita.com

起動中の Docker コンテナに VSCode から接続して Python コードを「リモート側で」デバッグする

コンテナへの接続

すでに対象の Docker コンテナは起動済みであるとします。また、「リモート側」で直接コードを実行することを想定します。

以下のページの、「起動しているコンテナに接続する」を参考に接続します。

kazu-oji.com

フォルダを開く

画面左上のエクスプローラマークをクリックすると、開きたいフォルダを選択できるので、そこから対象のフォルダを開きます。

拡張機能をインストール

画面左の拡張機能アイコンをクリックし、「Python」機能をインストールします。

codeaid.jp

必要な環境変数の設定

VSCode からターミナルを開いて、必要な環境変数等を source しておきます。

デバッグ実行

実行したいファイルを開いた状態で F5 を押すと、デバッグ実行が走ります。

ワーキングディレクトリが動作に影響するプログラムの場合、os.chdir() で適切なディレクトリを設定しておきます。

あとは任意の行にブレイクポイントなどをつけておけば、よしなにやってくれます。

Ubuntu 20.04 で PostgresSQL をインストール+他PCからつなぐまでのセットアップ

背景

PosrgresSQL 入れたあと、他のPCからアクセスするときのセットアップで何回も同じことを調べている気がしたので、メモ。

インストール

moriken@hoge:~$ sudo apt update
moriken@hoge:~$ sudo apt install postgresql postgresql-contrib

セットアップ

ログイン

とりあえずデフォルトユーザの postgres にパスワードを付与する。 まずはOS側で posgres ユーザとしてログイン。

moriken@hoge:~$ sudo -i -u postgres
postgres@hoge:~$

postgres のメタコマンド実行モード

postgres@hoge:~$ psql
posgres=#

確認コマンド

データベース確認。postgres がいる。

posgres=# \l

   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | 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

ユーザ確認。postgres がいる。

posgres=# \du

                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

パスワード付与

posgres=# ALTER ROLE postgres WITH PASSWORD 'ここにパスワードを入れる';
ALTER ROLE

これで、アドレス、ポート、ユーザ名、パスワードを指定することでアクセス可能となる。

「出世する人は人事評価を気にしない」という記事が本質的

何やら面白い記事を見つけた。8回に渡る、長めの連載記事。

書かれたのは2014年だが、書かれている内容は大方今日でも通用する。

備忘録がてら、ペタペタリンクを残しておこうと思う。

第1回:評価の低いあの人が、なぜ出世するのか?(上)

style.nikkei.com

第2回:評価の低いあの人が、なぜ出世するのか?(下)

style.nikkei.com

第3回:上位ポストになるほど、評価と昇進判断はリンクしない

style.nikkei.com

第4回:昇進判断基準とは具体的にどのようなものなのか

style.nikkei.com

第5回:昇進面接で面接官は何をチェックしているか

style.nikkei.com

第6回:第二のスタートは人的資本の棚卸しから

style.nikkei.com

第7回:飲みに行く相手にあなたの価値は表れる

style.nikkei.com

第8回:弱いつながりはビジネス上の「素敵な偶然」をもたらす

style.nikkei.com

こういう本質を見えるようになるのは、本当に素晴らしいことと思う。

如何に自分が何も見えずに生きてきたものかと、痛感させられる。

未熟な人間として、できることからやっていこうと思う。