2019/12/17

【Python】foliumで数字のマーカーを表示する

Pythonで地図可視化をするにはFoliumというライブラリが、Jupyter Notebook上で動かしながら使えるので便利です。
しかし、Google Maps APIのような数字のアイコンは公式機能ではまだ用意されていないようなので、どうにかして表示する方法はないか調べました。


アイコンにCSSを設定できる機能は既に実装済みのようなので、参考を元に以下の様にCSSの部分を編集しました。

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.


実行例:

マーカーの囲いを円から角にしたければ、
  1. border-radius: 50%;
を削除すれば、良いです。

実行例:


関連記事:

2019/11/22

NVMeのSSDとケースを購入したので、Macでディスクベンチマーク



MacBookProのバックアップのために、CFD販売のM.2 NVMe SSD(CSSD-M2B5GPG3VNF(500GB))と外付け化するためのUSB接続のケースを購入しました。
今回購入したSSDは、PCIe Gen4対応でスペック値で Read シーケンシャル: 5,000MB/s ランダム: 400k IOPS Write シーケンシャル: 2,500MB/s ランダム: 550k IOPS
と高速なものですが、外付け用のケースは特に考えずに安いもの(記事作成時点で、2900円)を選びました。
とりあえず速度が知りたかったので、MacBookProに接続して計測してみました。
ストレージベンチマークツールは、Windowsだと「CrystalDiskMark」を使う例が多いかと思いますが、Mac版はないようなので、CrystalDiskMarkとほぼ同じ外観の「AmorphousDiskMark」を使いました。

購入したSSDケース付属のケーブルの場合 Anker Thunderbolt 3 ケーブルの場合

ケーブルでの速度差はあまりありませんでした。そもそもこのSSDケースがUSB3.1 Gen2 (10Gbps≒1,250MB/s)までしか対応していないのでThunderbolt3ケーブルは必要なさそうです。
Thunderbolt3(40Gbps≒5,000MB/s)対応の外付け用SSDケースもあるようなので、お金に余裕がある方は、外付けでもこのSSDの最高性能により近い高速度で利用できると思います。

今回購入したSSDケースは、一応使えそうですが、Macのバックアップのため継続して利用していると、ヒートシンクがかなり熱くなっていました。このケースのヒートシンクではCSSD-M2B5GPG3VNFを使うためには冷却性能が足りていないかも知れません。大型のヒートシンク搭載のSSDケースの方がサーマルスロットリングを防げるので良いかと思います。

速度とヒートシンク性能を考えるともう少しお金を出して、以下のようなケースを買えば良かった気がしています。

2019/10/01

【Python】EPUBからデータを抽出する

漫画などの固定レイアウトEpubを目次付きPDFに変換するプログラムを作りたい、ということで
手始めに、ePubからメタデータや目次データ、画像データのパスなどを表示するプログラムをサンプルコードなどを参考に書いてみました。
EbookLibというPythonのライブラリを使っています。https://github.com/aerkalov/ebooklib
EbookLibの使い方の参考になれば幸いです。

import ebooklib
from ebooklib import epub, utils
book = epub.read_epub('.<.epubファイルのパス>')
# メタデータの読み込み
# タイトル
title = book.get_metadata('DC', 'title')
print('タイトル:', title)
# 執筆者
creator = book.get_metadata('DC', 'creator')
print('執筆者:', creator)
# 発行者
publisher = book.get_metadata('DC', 'publisher')
print('発行者:', publisher)
# 言語
language = book.get_metadata('DC', 'language')
print('言語:', language)
# 発行日
date = book.get_metadata('DC', 'date')
print('発行日:', date)
print('==================================')
# 目次(Table of contents)
for item in book.toc:
print(item.title, item.href)
print('==================================')
# カバー画像
cover_image = list(book.get_items_of_type(ebooklib.ITEM_COVER))[0]
print('カバー画像 : ', cover_image.get_name())
print('==================================')
# ページ画像
for item in book.get_items_of_type(ebooklib.ITEM_DOCUMENT):
body = utils.parse_html_string(item.get_body_content())
for elem in body.iter():
if 'xlink:href' in elem.attrib:
print(item.get_name(), ':', elem.attrib.get('xlink:href'))
view raw epub_read.py hosted with ❤ by GitHub

出力例:

2019/03/10

ディスプレイなしでのRaspberry Pi 3 Model B+初期セットアップ

Raspberry Pi 3 Model B+を、Raspberry Pi用のディスプレイやキーボード、マウスなしでssh接続でセットアップする方法です。手元にMacBookしか無い状態でセットアップを行いました。
同様の記事はたくさんありますが、コマンド操作を多用していて手順を覚えにくいものもあったので自分用の備忘録として残しておきます。当方も素人ですので、ある程度の知識があれば出来る程度の内容かと思います。

注意事項

・記事作成時点での情報に基づきますので、古い情報を含むかも知れません。ご留意ください。
・コメント等でご指摘頂ければ修正したいと考えております。
本記事に書かれていることを行ったことによる如何なる事象についても責任を負いかねます。自己責任で行ってください。


使用した環境
  • Raspberry Pi 3 Model B+
  • MacBook Pro(macOS Mojave)
今回、購入したもの
  • 本体:Raspberry Pi 3 Model B+
  • microSDカード(32GB)
  • スイッチ付きmicroUSBケーブル
そのほかに使ったもの
  • USB充電器
  • microSDカードリーダー
  • Ethernetアダプタ
  • LANケーブル

microSDカードリーダーやEthernetアダプタ付きのUSB Cハブがあると便利です。
Mac用の設定手順としてまとめていますが、SSH接続する手順までは、基本的にWindowsも同様に行える筈です。

以下、設定手順。

1. Raspberry Pi用のOS(Raspbian)イメージをダウンロードする



Raspberry Pi公式サイトから、ダウンロード出来ます。今回は、「Raspbian Stretch with desktop」のZipファイルをダウンロードしました。

2. microSDカードをフォーマットする


microSDカードにデータを書き込む前にフォーマットします。
SD Memory Card Formatterをダウンロード&インストールします。Windows版はこちらです。
microSDをリーダーにさして、Macに繋いでmicroSDを認識したら、SD Memory Card Formatterを起動します。


「カードの選択」が間違っていないことを確認して、「フォーマット」を実行します。

macOS搭載の「ディスクユーティリティ」でフォーマットしても良いかと思います。

3. microSDカードにOSイメージを書き込む



公式サイトのインストール手順によると、Etcherというソフトをインストールして使うことが推奨されています。マルチOS対応のソフトなので、Macの場合だけでなく、Windowsの場合でも使えます。

Etcherをダウンロード&インストールします。
引き続きmicroSDがマウントされた状態で、Etcherを起動します。


「Select image」を選択し、ダウンロードしたRaspbianのZipファイルを選択します。Zipファイルを解凍していた場合はimgファイルを選択します。


「Select drive」を選択し、先ほどフォーマットしたmicroSDを選択します。


「Flash!」を選択すると、書き込みが始まります。


自動で、「Validating」に移行します。


書き込みが完了するとmicroSDカードが自動的にアンマウントされます。
(※「Flash!」する前に、歯車ボタンを押してオプションから「Auto-unmount on success」のチェックを外しておくと、アンマウントされません。)


4. SSHを有効化する


上記のオプションをいじっていない場合は、もう一度microSDカードを抜き差しして、マウントします。
microSDカードのルートにsshという空ファイルを作成する為に下記のコマンドをターミナルから実行します。
$ touch /Volumes/boot/ssh
microSDカードをアンマウントします。

5. Raspberry Piを起動する


microSDカードをリーダーから取り外して、Raspberry Piに挿します。
Raspberry PiをLANケーブルでMacのEthernetアダプタかMacが接続しているルーターに接続して、Raspberry Piの電源を入れます。Raspberry Piの電源ケーブルにOn/Offスイッチの無いのUSBケーブルを使っている場合は、繋ぐと起動します。
OSが起動するのを1-2分ほど待ちます。

6. Raspberry PiにSSH接続する


Rapsbianのデフォルトでは、IDが 「pi」、ホスト名が「raspberrypi」、パスワードが「raspberry」となっているようです。
Macのターミナルを開いて、下記のコマンドを実行します。
$ ssh pi@raspberrypi.local
次に
Are you sure you want to continue connecting (yes/no)?
と表示された場合は、ターミナル上で「yes」と入力します。
pi@raspberrypi.local's password:
とパスワードを聞いてくるので、ターミナル上で「raspberry」と入力します。

接続できると以下のような表示となります。
pi@raspberrypi:~ $ 

エラーが出て繋がらない場合


以前に、同様の設定を行ったことがある場合などに以下のようなエラーがでる場合があります。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
過去に接続した際の設定が残っている為です。
ターミナルで下記のコマンドを実行します。
$ ssh-keygen -R raspberrypi.local

参考:SSH接続エラー回避方法:.ssh/known_hostsから特定のホストを削除する/削除しないで対処する3つの方法

7. Raspbianの環境設定を行う


Raspberry PiにSSH接続した状態で、下記のコマンドを実行すると以下のような設定画面が開きます。
$ sudo raspi-config


パスワードの変更やタイムゾーンの変更、地域設定などを行う。

8. 電源を切る


Raspberry PiにSSH接続した状態で、下記のコマンドを実行します。
$ sudo shutdown -h now

以上です。