今日も微速転進

ここではないどこかへ

OCNとDTIのSIMの通信速度比較

ほかのメジャーなMVNOの実測値は結構あるので他所に任せるとして。

基本的に2回測定して良い方のデータ。面倒なので平均はとっていません。追い風参考記録ぐらいに考えてもらえば。

概要

SIM2枚刺し運用なので手軽同一地点の速度比較ができるようになったので情報提供。

OCNについて

メジャーなMVNOなので特に解説は不要かと。

良くも悪くも大手ですね。

速度に関しては利用者が多い点を考えれば健闘しているという印象です。

使用しているのは1日110Mbpsの音声つきプランのSIMです。

DTIについて

マイナーなMVNO。だからと言って利用者が少ないということもない。

申し込みページのデザインがものすごく胡散臭いことで有名。

半年無料などのキャンペーンがある。

基本的に遅い印象が、なぜか上り方向(アップロード)はそこそこ速いです*1

下りが1Mbpsを切ることはよくありますが、それでも上り方向の速度は数Mbps出たりします。

昼休みとか人の多い地点で遅いことに定評あり。

全然ダメってわけでもなく、とはいえ推奨するほどでもないポジション。

比較用に使用したのは月3GプランのSMS対応データ通信SIMです。

京都市西部辺境

休日はガタ落ちします。

DTI

平日の午後。

f:id:atuyosi:20180903145705j:plain:w320

下り16.8Mbps。

過去最高記録。

OCN

同じく平日の午後。

f:id:atuyosi:20180903145941j:plain:w320

下り46.1Mbps。

イオンモール桂川

平日の午後。休日は昼間でも速度がガタ落ちする。DTIの方が速度が出ていた。特に上り方向はDTIの圧勝。

DTI

f:id:atuyosi:20180906082714j:plain:w320

下り14.6Mbps。上りは安定しているが下りはブレが大きい。

OCN

f:id:atuyosi:20180906083350j:plain:w320

下り11.5Mbps。ただし10Mbpsでないこともあった。

天満宮境内

同じく平日の午後。DTIの方が

DTI

f:id:atuyosi:20180906084233j:plain:w320

下り27.3Mbps。DTIはやればできる子。

OCN

f:id:atuyosi:20180906084001j:plain:w320

下り24.0Mbps。安定して10Mbps超え。

四条烏丸交差点付近

金曜日の夕方。両者ともに下り1Mbpsに到達しない……。人が多すぎる。

DTI

f:id:atuyosi:20180916173517j:plain:w320

OCN

f:id:atuyosi:20180916173507j:plain:w320

一応0.6Mbpsぐらいは出ることもあるが、上りがガクッと落ちる。

阪急洛西口駅

金曜日の夕方。

DTI

f:id:atuyosi:20180916171031j:plain:w320

無駄に上り方向は高速。

OCN

f:id:atuyosi:20180916171142j:plain:w320

まさかの1Mbps未満……。

感想

イメージに反してOCNのほうがDTIより遅いケースが多いです……。

MVNOは時間帯でかなり速度が変わるので何を重視するかによると思います。

まあ安かろう悪かろうの一歩手前ぐらいに考えて付き合うのがいいと思います。

速度が欲しいなら自宅かどこかで光回線

*1:帯域制御ミスってんじゃないのか

プログラミングの自習系学習サイト比較

人間が授業スタイルではなく自習系のやつ。

ドットインストール

ドットインストール - 3分動画でマスターする初心者向けプログラミング学習サイト

老舗。

プレーンテキストの文法チェックツール(textlint)の講座とかDocker入門とか意外に幅広い。

初心者向けのWeb系講座ばっかりだろうと思ってたら地味に講座が増えている。

Progate

prog-8.com

転職サイトの会社が運営元:ITエンジニアの転職なら | プロエンジニア

結構評判がいい。

HTMLの教材だけみたけどスライドの説明の図が充実している。演習もその場で回答がチェックできるシステム。

ヒントがあるのは大きいと思う。マイペースで進められるので基礎を固めるにはいいのでは。

paiza learning

paiza.jp

  • オンライン学習環境(paiza cloud)との連携が最大の強み
  • スキルチェックと求人サイトとの親和性が高い
  • オタクよりで時々痛い
  • 炎上マーケティング
  • Progateに比べると粒度がまちまち

Cloud9というクラウド開発環境もあるけどあまり使いやすくない。教材と実行環境がシームレスに統合されている点はすごくいい。

演習問題の問題文がおかしいとか、内容があまりにしょぼいとか詰めが甘い。

音声つきの動画教材とか、かなり手の混んだ教材を用意しているんだけどそこまで評価されている感じではない。 ビギナーが求めているのとはちょとズレている?

PyQ

pyq.jp

Python 専門らしい。実物は見ていない。

運営会社がPythonスペシャリスト揃いなのでクオリティはすごいと思う。

Udemy

www.udemy.com

プログラミングに限らない。

  • 英語の教材が中心(字幕あり)
  • 個人がつくった教材をアップロードしているので玉石混交
  • 基本的に有料
  • 一定期間内なら返金可能

採点とかそういうのはない。

時々セールで大幅割引やっている。

まとめ

数年前に比べるとすごい時代の変化。ちょっとプログラムが書けるレベルならすぐにオンラインスクールにお金を払う必要ないのでは。

とっつきやすさ、はものすごい重要なファクター。

プログラミングを学ぶ障壁の一つである環境構築の問題を回避する手段が増えた(Progate、paiza、cloud9、ほか)のと、懇切丁寧な教材が一気に増えた。

まあエラーに遭遇したときに自力で対処できるか、とか英語の1次資料を読んで対応できるか、ってのは別の能力だろうけど。

そういう訳で、(私の代わりはごろごろいるはずなので)そろそろ労働を免除してベーシックインカム下さい。

MacBook Air (mid 2012)のFaceTimeカメラの明るさ問題

もう少しの間は持ちこたえてほしい。

症状

ビデオチャットで画面に映る自分の顔がちょっと暗い。手動調整はできないらしい。

対策

ロジクール HDウェブカム C525r

ロジクール HDウェブカム C525r

いつの間にかC525rという新しいモデルになっている……買い換えるかな。

画面が真っ黒で映らなとき

再起動してダメならSMCのリセットなどメンテナンス系の手順を試す。

Mac の SMC (システム管理コントローラ) をリセットする方法 - Apple サポート

発売年度で手順が変わっているらしい。

macOS Sierra: コンピュータの NVRAM または PRAM をリセットする

最悪、OSを再インストール。

まとめ

買い換えるのが確実かな。

ロジクール HDウェブカム C525r

ロジクール HDウェブカム C525r

ヘッドセットマイクも新しいの買いたい。

PythonとPmodのマイクモジュールで玄関のチャイムの音を検知する

ラズパイコンテストの応募ネタです。しょぼいけど動いたので。

背景

難聴による聴力低下が進むと玄関のチャイムの音が鳴っても聞こえない、または聞こえづらいという問題が発生する。

補聴器というソリューションも存在するが、一日中補聴器を装用しているわけではない。玄関のチャイムそのものをワイヤレスタイプや光で通知するタイプに交換するということも考えられるが、借家等の事情により必ずしも適切とは言えない。

玄関のチャイムそのものを改造せず、玄関のチャイムの音を検知するプログラムにより難聴者のQoLを改善することを目指す。

なお、健常者に置いてもなにかに没頭していて玄関のチャイムが鳴ったことに気づかないということは充分あるので健常者にとっても有益なはずである。

前提

f:id:atuyosi:20180910220631j:plain:w480

過去記事で紹介しているマイクモジュールを使う。

a244.hateblo.jp

ラズパイはRaspberry Pi 3 model B+。別にGPIOピンヘッダがハンダ付けされていればPi Zero Wでも問題ない。

ただし、マイクは安いUSBマイクでは感度が良くないのでMEMSタイプか、設置位置を考慮する必要がある。

事前調査

USBのマイクで玄関のチャイムの音を録音してAudacityで分析してみる。

arecordコマンドで録音する。さすがにデフォルトの8,000Hzはどうかと思うので、CD音質で録音してみます。音質を下げるのは難しくないので。

$ arecord -D plughw:1,0 -f cd  mic.wav

-f cdで録音フォーマット(サンプリング周波数、ビット数)を指定しています。このオプションを省略すると8,000Hz、8bit。ステレオである必要性はないです……。

f:id:atuyosi:20180910195404j:plain:w480

ローパスとハイパスフィルタでノイズ除去、正規化を施す。

f:id:atuyosi:20180910194231j:plain:w480

ものすごくざっくりだが2,000Hzあたりの周波数の成分を検出すれば良いという仮定でやってみる。

方針

残念ながらマイクモジュールの信号をWAV形式に落とし込む方法がわからないのでマイクからの信号値変動幅で判定する。

一定時間内にしきい値を一定回数超えたら玄関のチャイムがなったとみなす。

2,000Hzということなので0.5ミリ秒以下でサンプリングすればいいはず。

準備

SlackのIncomming Webhockを使えるようにする。

  1. WorkspaceのApp管理ページへ移動する(もしくはhttps://slack.com/appsから遷移する)。
  2. 上段にある検索ボックスに"incoming"と入力して検索
  3. 「設定を追加」をクリックする
  4. 画面の表示に従って必要なパラメータを入力
  5. 投稿用のURLをコピーしておく

api.slack.com

環境変数Pythonスクリプトと同じディレクトリの.envというファイルに書き込む。

SLACK_HOCK_URL=https://(省略)

各種モジュール

プログラム側に環境変数経由で投稿用のURLを渡すのでdotenvをインストール。

$ pip install python-dotenv
$ pip install slackweb
$ pip install designspark.pmod

なお、Pythonのバージョンは3.5.3。

Pythonスクリプト

マイクモジュールからの入力値が一定時間内にしきい値を超えたら通知するスクリプト

こんなので動くのかって感じだけど動きました。

大きな音に反応したり、センサ本体が物理的に揺れたりしたときも電圧値が変化します。

センサの接続部がゆるいのも不安定な要因の一つっぽいです。

実行した様子

Slackのおかげで超お手軽。

$ python3 detect_sound_and_notify.py > /dev/null 2>&1

実際は実行し続ける必要があるのでtmux上で起動してセッションをdetach。

通知

f:id:atuyosi:20180910215159j:plain:w480

メッセージ

f:id:atuyosi:20180910215222j:plain:w480

課題など

  • パラメータの調整が不十分
  • 設置位置とマイク感度に応じた調整
  • Slack以外の通知手段
  • 部品がむき出し……

チャイムの音を人工知能に学習させればよかったのでは……。

ALSA経由で使えるマイクモジュールの方が良かったかも。

感想

少しばかり難しく考えて途方に暮れましたが、センサから値で音がなったかは検知できているので妥協しました。

理想を言えば、チャイムの音の周波数成分を分析して人工知能でいい感じにできると誤検知が減るはずです。 しかしながら、そもそもセンサの入力値をPCM形式のような音として扱える形式にする方法がわかりませんでした。

alsa - How to recording audio file with PMod mic3 on Raspberry PI? - Stack Overflow

動いたので良しとしましょう。

何より提供いただいたPmod HATの返却義務を回避できたはずなので。

Google Cloud Vison API関連メモ(ただし文字認識に関する話のみ)

過去記事でも解説しているけど改めて再整理。自分の興味ないことに無関心というオタク気質のにじみ出た記事はこちらです。

ドキュメント

Google Cloud Vision API ドキュメント  |  Google Cloud Vision API ドキュメント  |  Google Cloud

REST APIとgRPC APIの2系統存在していることに注意する。

プログラミング言語用のライブラリのドキュメントはまた独立している。

公式ドキュメントの翻訳は遅れているようなので原則的に英語のページをチェックする。

ページを下までスクロールすると左下に言語の切り替えメニューがある。

リリースノート(全体)

Release Notes  |  Cloud Vision API  |  Google Cloud

日本語の方は更新されていない。

データの扱いについて

データ使用に関するよくある質問  |  Google Cloud Vision API ドキュメント  |  Google Cloud

文字数制限

「TEXT_DETECTION」には"Character Limit"があるとのこと。日本語ドキュメントは「文字数の制限」という訳になっている。

一方、「"premium" DOCUMENT_TEXT_DETECTION」には制限がないと記載されている。文字数なのか、文字種なのかちょっと疑問。

"premium"とは一体?

ドキュメントのページからフィードバックは送ったけど不明なまま。

認識できる文字・できない文字

情報なし。

日本のセールスチームに問い合わせてみたが、公開されている情報がすべてという回答。

対応画像形式とサイズ

PDFとTIFFは非同期APIを使う必要がある。

  • JPEG
  • PNG8
  • PNG24
  • GIF
  • Animated GIF (最初のフレームのみ)
  • BMP
  • WebP
  • RAW
  • ICO
  • PDF(非同期処理方式のみ)
  • TIFF(非同期処理方式のみ)

APIの使用料金など

プロダクトのページを下にするクロール。

cloud.google.com

そのほか

要望などはGoogle公式のトラッカーへ。

公開バグトラッカー:公開バグトラッカーを用いたバグ報告と機能リクエスト  |  サポート  |  Google Cloud

Stack Overflow

stackoverflow.com

Python関連

stackoverflow.com

権限管理

サービスアカウントの作成時のロール選択。

  • オーナー (roles/owner)
  • 編集者 (roles/editor)
  • 閲覧者 (roles/viewer)
  • 参照者 (roles/browser) ←beta機能

オーナーか編集者の権限があれば動作するはず。

「参照者」というロールは日本語のドキュメントには記載がない。 英語のドキュメントにはbetaという扱いで記載があるがよくわからない。

プロジェクト内部の階層構造やリソースのリストは参照できるが、プロジェクト内のリソースそのものへの読み取りアクセスはない?

Understanding Roles  |  Cloud Identity and Access Management Documentation  |  Google Cloud

まとめ

随時更新します(たぶん)。

広告