MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

SpaceXの社員だけどなにか質問ある?


Spacex Tシャツ 半袖 メンズ ワンポイント カットソー 日常 マルネック 薄手 シンプル 防汗 伸縮性 通気

目次

  • 目次
  • はじめに
  • Twitterメモ
  • 参考資料
  • MyEnigma Supporters

はじめに

SpaceXのソフトウェアエンジニアの人たちがredditに降臨して、

すごく細かい内容について、色々答えていたので、

Twitterでメモしながら、呼んでみました。

そのメモ用記事です。

続きを読む

初心者のためのコンテナオーケストレーションツールKubernetes入門


しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識

目次

  • 目次
  • はじめに
  • Kubernetesとは?
  • Kubernetesによる専門用語
    • Pod
    • Node
    • Cluster
  • Kubernetesの基本機能
    • 複数の物理サーバやVMでのコンテナ管理
    • コンテナのデプロイ
    • コンテナ間のネットワーク管理
    • コンテナの負荷分散
    • コンテナの監視と自動復旧
    • コンテナのアップデート
  • 参考資料
  • MyEnigma Supporters

はじめに

Dockerなどのコンテナシステムを管理するシステムとして、

myenigma.hatenablog.com

コンテナオーケストレーションシステムがあります。

 

このコンテナオーケストレーションツールの中で、

ほぼデファクトスタンダードなのが、Kubernetesです。

kubernetes.io

ja.wikipedia.org

  

今回の記事では、こちらの書籍を元に

自分が、k8sについて学んだ内容をまとめておきたいと思います。


しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識

 

続きを読む

ロボティクスにおける幾何学処理のためのscipy.spatial.transform.Rotation入門


3次元回転: パラメータ計算とリー代数による最適化

目次

  • 目次
  • はじめに
  • scipy.spatial.transform.Rotationにおける三次元回転の表現方法
  • 三次元点の回転
  • 回転の掛け合わせ
  • 逆回転
  • 参考資料
  • MyEnigma Supporters

はじめに

ロボティクスにおいて、幾何学処理、

特に三次元の回転は基本的な処理です。

myenigma.hatenablog.com

 

上記の記事で、ROSのtfを使った場合の三次元回転処理や、

C++のEigenを使った場合の三次元回転処理を紹介しましたが、

Pythonで三次元回転を扱う場合には、

scipy.spatial.transform.Rotationを使うのが便利です。

docs.scipy.org

 

今回の記事では、

このscipy.spatial.transform.Rotationの使い方について

簡単に紹介したいと思います。

 

続きを読む

各プログラミング言語における変数名と変数の値を簡単に出力する方法まとめ


情熱プログラマー ソフトウェア開発者の幸せな生き方

目次

  • 目次
  • はじめに
  • Python
  • Julia
  • Shell script
  • C++
  • Java
  • IDEの機能を使う
  • 参考資料
  • MyEnigma Supporters

はじめに

先日の記事で、

Pythonにおけるロギングの方法を紹介しましたが、

myenigma.hatenablog.com

ロギングで一番よく実施するのが、

ある変数名と変数値を出力することです。

 

例えばPythonで、

あるxという変数があり、その変数の値が100である場合、

通常のprint関数を使うと、

100

と表示されます。

しかし、そのときにはその表示された値がxのものであることを覚えているため、

問題ありませんが、後日アプリケーションのデバックをするときには、

その出力がどの変数であるかはおそらく覚えていないので、

最低では、ログや標準出力には

x = 100

と表示させておきたくなります。

 

上記のような処理は、プログラミング中には大量にコーディングすることになるので、

できるだけ、簡単にコーディングしたいものです。

 

そこで、今回は自分がよく使用しているプログラミング言語において、

上記の内容を簡単に実施する方法をまとめておきたいと思います。

 

続きを読む

初心者のためのPythonにおけるlogging入門


The Python 3 Standard Library by Example: Pyth 3 Stan Libr Exam _2 (Developer's Library) (English Edition)

目次

  • 目次
  • はじめに
  • loggingモジュールの基本的な使い方
  • コマンドラインからログのレベル変更
  • モジュール毎のロガー設定とロギングレベルの変更
  • loggingのhandler
    • loggingで使えるhandler
  • loggingのfilter
  • 設定ファイルによるロガーの設定
  • 参考資料
  • MyEnigma Supporters

はじめに

自分以外の人に使用されるソフトウェアを開発している場合、

自分の手元では発生しない問題や、

たまにしか発生しない問題に悩まされることが多いと思います。

 

そんな場合は、手元で再現することができないので、

ソフトウェアにロガーを埋め込み、

その問題が発生した時のログファイルを元に

問題解決することになります。

 

そんな時に重要なのが、

元のソフトウェアを変更することなく、

必要な情報を得るためのロギング機能を実装することです。

 

今回の記事では、Pythonの標準ライブラリの一つである

ロギング機能用モジュールloggingの基本的な使い方や、

ユースケースに基づく、逆引きメモを紹介したいと思います。

docs.python.org

 

続きを読む

Pythonにおける型ヒント入門


Advanced Python Development: Using Powerful Language Features in Real-World Applications

目次

  • 目次
  • はじめに
  • Pythonの型ヒント
  • 型アノテーションの書き方
  • 静的型チェッカー mypy
    • インストール方法
    • ターミナル上での使い方
    • mypy.iniの作り方
  • PyCharm
    • PyCharmでの型入力
    • PyCharmでの型チェック
  • CI上でチェックする
  • 参考資料
  • MyEnigma Supporters

はじめに

Pythonは動的言語で、

型を指定する必要は無いのですが、

それが原因で、意図しない入力が関数が入力されたりして、

バグの温床になりがちです。

 

そこで、Python3.5あたりから、

型ヒント(型アノテーション)という機能が追加されました。

docs.python.org

これにより、変数や、関数の入出力に型情報を追加することができ、

意図しないコードの使用や状態を事前に検知することができます。

 

今回の記事では、

このPythonの型ヒントの概要について説明したいと思います。

 

続きを読む

Python3.7で導入されたdataclass入門


Python実践入門 ── 言語の力を引き出し、開発効率を高める (WEB+DB PRESS plusシリーズ)

目次

  • 目次
  • はじめに
  • 通常のclassとdataclassの比較
    • dataclassの良いところ
      • データを格納する箱であることを明確にできる。
      • クラス定義を短くかける
      • 型情報を書くことでデータ構造が見やすくなる。
      • Printしたときに、そのままオブジェクトの中身を表示できる。
      • asdict関数でdictに変換できる。(Dictから簡単にJSONにも変換できる)
      • Dict(JSON)からdataclassを作ることもできる
      • Frozen引数を使うことで、簡単にイミュータブルにもできる。
      • データが作られたときに、自動後処理機能を追加することができる。
    • dataclassの残念なところ
      • コレクションの初期化
  • 参考資料
  • MyEnigma Supporters

はじめに

C++ユーザやJuliaユーザがPythonを使っている時の不満の一つとして、

データを格納する目的のstructが無いことが上げられます。

 

もちろんPythonのclassを使って、データのみを格納することもできますが、

記述が冗長になりますし、コールドリーディングしているときに、

データを格納するためのclassなのか、

それともより汎用的なクラスなのかが、一見してわかりにくいことがあります。

 

そこでPython3.7から導入されたのが、dataclassです。

docs.python.org

これを使えば、Pythonでも明示的にデータ格納用のクラスを簡単に実装できます。

また、下記のツイートの通り、アプリケーションの設定データ管理として、

このdataclassを使うと非常に便利です。

 

今回の記事では、このdataclassの概要について説明したいと思います。

続きを読む

一歳以下の子育てに便利だったもの


はじめてママ&パパの育児―0~3才赤ちゃんとの暮らし 気がかりがスッキリ! (実用No.1シリーズ)

目次

  • 目次
  • はじめに
  • Google Home mini
  • Nature Remo mini
  • ベビーモニター
  • スマート体重計
  • デロンギ(DeLonghi) オイルヒーター
  • フィッシャープライス レインフォレスト ジャンパルー2
  • 参考資料
  • MyEnigma Supporters

はじめに

Next major version was released😆

今年、初めての子供が生まれて、

一年間、試行錯誤で子育てをしてきました。

 

最近、知り合いに子供が生まれて、

どんなものが便利だった?と聞かれたので

今後同じことを聞かれた時のために、

まとめておきます。

 

続きを読む

Juliaの関数のtype annotationとJIT compile


Julia High Performance: Optimizations, distributed computing, multithreading, and GPU programming with Julia 1.0 and beyond, 2nd Edition (English Edition)

目次

  • 目次
  • はじめに
  • Juliaの関数のtype annotationとJIT compile
  • 参考資料
  • MyEnigma Supporters

はじめに

今回の記事は、

Julia Advent Calendar 2019の7日目の記事です。

qiita.com

(空いていたので埋めました。)

続きを読む

Java初心者のためのMaven入門


Apache Maven 3クックブック Javaソフトウェア開発のための特選レシピ集

目次

  • 目次
  • はじめに
  • Mavenとは
  • インストール
    • Mac
  • Mavenで使えるコマンドライン
  • InteliJでMavenを使う
  • MavenのCentralリポジトリから利用可能なライブラリを検索する
  • 参考資料
  • MyEnigma Supporters

はじめに

Pythonなどの動的言語に慣れた人が、

C++やJavaのようなコンパイル言語を使う時に、

一番初めに戸惑うのが、

ビルドツールだと思います。

 

今回は、Javaのビルドツールとして、

広く使用されているMavenの概要について説明します。

続きを読む