Yura YuLife

ITエンジニアの覚え書き。

Misskey Play (AiScript) で文字列をシャッフルする

シャッフルする関数みたいなのは見当たらなかったので、ナイーブに実装しました。 let string = "あいうえお" let length = string.len let chars = [] for (let i, length) { chars.push(string.pick(i)) } for (let i, length) { let a = (length - i - 1)…

Python の attrs で validation をかける

以前 Qrunch に投稿してた記事を持ってきました。 Python の attrs が便利すぎて、データ保持用のクラスを作る時なんかは専らコレばっかり使っています。 そんな attrs で入力されるデータに validation をかける方法です。 attrs で入力データをチェック 例…

周波数からC3やF4などのノート名に変換する

以前 Qrunch に投稿してた記事を持ってきました。 Python 3 で周波数からノート名に変換 A4 は 440Hz、 C3 は 130.8Hz のようにノート毎に周波数が決まっていますが、周波数からノートに変換するコードを Python 3 で書いてみました。 import math SCALE_LIS…

TRIX - ゴクロウサンの歌詞

ずっと聞き取れないところがあるなーと思っていたんだけど、イヤホンを変えてみたらだいぶ聞き取りやすくなったのでメモメモ。 毎朝満員電車に揺られてゴクロウサン あぁ大変だ会社で家庭で小言を言われてゴクロウサン もうたくさんです 毎朝満員電車に揺ら…

Pythonでファイルに書き出さずにzip圧縮

この記事では、Python でファイルを生成せずに zip 圧縮したデータを生成する方法を紹介します。 zip 圧縮したデータを Python 内からアップロードしたい場合なんかに、ファイルに書き出して後から削除する手間を避けたかったり、FaaS などそもそも ReadOnly…

AWS Lambda で Python3 + Chainer を使う方法

概要 Python3 + Chainer を使った API を AWS の API Gateway + Lambda で動かす方法を紹介します。 ちなみに Deep Chord というウェブアプリのバックエンドで使っています。 以下の2点がポイントです。 Chalice を使う EC2 の Amazon Linux 上で一旦 Chaine…

Django を AWS ECS(FARGATE) + ELB で動かすときの ALLOWED_HOSTS の設定

めちゃくちゃ苦戦したのでメモ。 困ったこと Django のアプリを ECS(FARGATE) 上で動かすと Invalid HTTP_HOST header: '10.0.X.Y'. You may need to add '10.0.X.Y' to ALLOWED_HOSTS. みたいなエラーが出て、 ELB のヘルスチェックで落ちる。 だからといっ…

Debian Stretch で Bluetooth イヤホンを A2DP で利用する

本記事では、Debian Stretch の PC で Bluetooth イヤホンを A2DP プロファイルで利用する方法を説明します。 動作環境 Debian Stretch (Debian 9) の PC Bluetooth 4.2 (PC・イヤホン) Debian Stretch で Bluetooth で音楽再生 Debian Stretch をインストー…

Gorm で PostgreSQL の JSONB 型の key, value で絞り込む

この記事では、Golang の ORM である Gorm を使って、 PostgreSQL の JSONB 型の中身の key や value による絞り込みをかける方法を紹介しています。 動作環境 Go 1.10 PostgreSQL 9.6 Gorm で PostgreSQL の JSONB を絞り込む モデル 例えば、以下のような…

Debian Stretch に protobuf 3.6 をインストール

本記事では Debian 9 Stretch に protobuf 3.6 をインストールする方法を紹介しています。 C++ で gRPC/protobuf を利用するためには、ソースからコンパイルする必要があります。 deb パッケージ提供してほしい。。。 環境 Debian 9 Stretch protobuf v3.6.0…

Debian Stretch に OpenCV 3.4 をインストール

この記事では Debian Stretch に OpenCV 3系をインストールする手順を紹介しています。 環境 Debian 9 Stretch OpenCV 3.4.0 インストール手順 Releases - OpenCV library からインストールしたいバージョンの zip ファイルをダウンロードします。 もしくは…

Debian Stretch で Planex GW-450S を使う

この記事では、Debian Stretch の PC で Planex GW-450S という USB 無線LAN 子機を使えるようにする方法を紹介します。 動作環境 Debian Stretch (kernel: 4.9.0-6-amd64) Planex GW-450S ドライバのインストール手順 以下の手順は対象の PC が有線 LAN 等…

matplotlib でプロット上の点をドラッグする例

Python の matplotlib 上で、マーカーをドラッグ可能にするプログラムの参考例です。 動作環境 python 2.7 matplotlib 1.5.3 実装例 github.com 使い方 プロット上で左クリックで点を追加 プロット上の点をドラッグで移動 プロット上の点を右クリックで削除 …

rosbag から連番の画像ファイルを生成する

ROS

カメラ画像を録画した rosbag データから、連番の画像ファイルを生成する方法です。 画像ファイルを生成する 基本的には ja/rosbag/Tutorials/Exporting image and video data - ROS Wiki に載っている手順の通りに行うだけです。 launch ファイルの作成 以…

BitBucket で Git LFS の転送に失敗する場合の対処法

動作環境 Ubuntu 16.04 Git LFS でサイズの大きいファイルの転送に失敗する場合 Git LFS を用いて BitBucket にサイズの大きいファイルを push する場合、 timeout エラーが発生して失敗することがあります。 特に HTTPS ではなく SSH で接続している場合に…

python の multiprocecssing.Pool.map で複数の引数を持つ関数を扱う

python の multiprocessing を用いてマルチスレッド処理を行う際に、複数の引数を持つ関数を扱うときの Tips です。 動作環境 Python 2.7 方法 やり方は簡単で、目的となる関数をラップするだけです。 # -*- coding: utf-8 -*- from multiprocessing import …

ansible でネストされた item に対してループを回す

動作環境 ansible 2.1 with_subelements でネストされたループを回す with_items のかわりに with_subelements を利用することで、ネストされた item に対してループを回すことが出来ます。 例 vars/main.yml users: - sam: email: - sam@example.com - sam@…

Mac で ROS の環境構築

Mac OSX で ROS を動かすまでの環境構築手順です。 環境 Mac OSX El Capitan ROS Kinetic ROS の環境構築 GUI 系のツールを動かそうとすると Qt5 周りの依存関係でハマったので、とりあえず ROS の基本パッケージのみ(ROS-Comm)の環境構築を行いました。 基…

ROS開発にPyCharmやCLionを使う際のTips

この記事では ROS の開発に Jetbrains 製の IDE である PyCharm や CLion を使う際に、便利に開発を進めるための設定を紹介しています。 環境 Ubuntu 16.04 (14.04) ROS Kinetic (Indigo) PyCharm 2016.X CLion 2016.X 環境変数を設定 Ubuntu にインストール…

FTDI FT2232C用のudevルール

FTDIのFT2232C (Dual RS-232)というUSBシリアルを接続した際に、他のデバイスと識別できるよう、/dev/以下にシンボリックリンクを作成するudevのルールです。 通常のUSBデバイスならば、Vendor IdとProduct Idを指定すれば良いのですが、FT2232Cは2つのシリ…

ROS Pythonでオイラー角とクォータニオンの相互変換

ROSでオイラー角とクォータニオンを変換するには、tfパッケージの関数を利用すれば良いのですが、 単体の関数として使うには少々使いづらいので、簡単なラッパー関数を作りました。 オイラー角からクォータニオンへの変換 import tf from geometry_msgs.msg …

ROS Pythonにおけるuint8[]の扱い方

ROSでuint8[]型を利用しているトピックをPythonで使う場合にハマった点です。 環境 Ubuntu 14.04 ROS Indigo rospyにおけるuint8[]型の扱い ROSのメッセージ型に関するリファレンスを参照すると、uint8[]型について以下のような記述があります。 uint8 has s…

BitBucketとWerckerでウェブサイトを自動デプロイ

タイトルの通り。BitBucketとWerckerとFTP(lftp)で静的なウェブサイトを自動デプロイする方法です。 ちなみにBitBucketとWerckerを使っているのは、プライベートリポジトリを無料で使えるから。 BitBucketの設定 Gitのリポジトリを作って、ウェブサイトのフ…

ニューラルネットで声から体調を推定するシステムを作りました

IDCフロンティア主催のIoTと健康をテーマにしたハッカソン、サバフェス 2016で Healthy Voice Netというシステムを作ったので紹介します。大雑把に言うと、ニューラルネットワークを用いて声色を分類することで、声から体調が分かるシステムです。 プレゼン…

ROSのbagファイルから特定トピックをcsv形式で出力する

ROS

めちゃくちゃ簡単。 環境 Ubuntu 14.04 ROS Indigo bagファイルをcsv形式で出力 以下のコマンド1行でいける。 $ rostopic echo -b bagファイル.bag -p /トピック名 > csvファイル.csv 例えば、Twist形式だと以下のようになる。 $ rostopic echo -b bagファイ…

aitendoの脈波センモジュールをArduinoで使ってみる

aitendoの脈波センモジュールをArduinoに接続して脈波を取ってみます。 必要なもの 脈波センモジュール - aitendo Arduino Uno ジャンパーワイヤ3本(センサモジュールに付属) 接続方法 基板にマイナスマークのついている端子をArduinoのGNDに、プラスマーク…

iframeを含んだページでBootstrapのメニューが開閉しない

Bootstrapで、iframeが含まれているページを作った時に、navbarが開閉できないという問題に遭遇しました。 問題のiframeは以下の通り。 <iframe src="hoge.html" class="hoge" name="hoge" width="340" height="200"> 原因は単純で、</iframe>で閉じるのを忘れていただけで、以下のように修正したら無事動くようになりました。 <iframe src="hoge.html" class="hoge" name="hoge" width="340" height="200"></iframe> 参考URL j…

ArduinoでSRF02のI2Cアドレスを書き換え

Arduinoで超音波距離センサ SRF02のI2Cアドレスを書き換える方法です。 元のアドレスを確認 デフォルトではSRF02のアドレスは0xE0(224)なので、I2CScanerのスケッチを利用すると、0xE0の上位7bitである0x70(112)にデバイスが見つかります。 シリアルモニタの…

RealSense R200の新しいROSパッケージ(realsense_camera)のインストール手順

2016年3月1日にIntelからRealSense R200の新しいROSパッケージがリリースされましたので、早速インストールして使ってみました。 GitHub - intel-ros/realsense: Intel(R) RealSense(TM) ROS packages 動作環境 Ubuntu 14.04 ROS Indigo RealSense R200 Came…

Milkcocoaを使ってセンサー情報をウェブサイトで表示

Milkcocoaを利用すると、センサー情報をクラウドに上げてウェブサイト等で利用するといった、IoTチックなことが超簡単にできてしまいます。 僕も、自宅にあるRaspberry Piに接続した温湿度センサとPIRセンサの値をMilkcocoaにアップロードして、僕のウェブサ…