niszetの日記

細かい情報を載せていくブログ

Airio-Base(量産モデル)を使ってみる 2回目

サンプルを動かしているだけなんだけど…。

↓の続きです。

niszet.hatenablog.com

さて、続いでSDカードの電源供給のプログラムを試してみる。

os.mbed.com

手元にAirio-Baseの先行試作型があり、FlashAirが刺さっていたのでこれを流用した。これはDeveloppers Summitのときの…1年近く放置していたのか…💦

niszet.hatenablog.com

FlashAir側も設定をしておかないといけないのだが、すでに設定されていたので電源ON/OFFでアクセスできる/できないが確認できた。

そろそろFlashAir側の理解が必要になってきたね。

しかし、この一連の、初心者向けのFlashAirの使い方をまとめた本が欲しいですね。自分で書けばいいんですけど。

FlashAir同人誌(下記でオンラインで読める)は内容が高度になってきたので初心者が新しく始めようと思ったときには躓くことが多いのではという気がしています。

flashair-developers.com

初心者セミナーがあるといいんですけどね。

先日、秋葉原でFlashAir同人誌が色々なお店に置かれ始めたのですが、Airio-Baseも一緒に置いてくれればいいのになぁと思いました。 秋月電子さんではSeeduino Storage for FlashAirやその他SDカードからピン出すための基板が売られていましたね。

共立エレショップさんで取り扱ってるようなので、是非…!

eleshop.jp

Airio-Base(量産モデル)を使ってみる

巷で話題の婚活ボード

mbed祭でも頂いた、この婚活ボードのサンプルプログラムが公開されているので、これを使ってAirio-Base+FlashAirで何かするための準備をしていきます。何事も基本から。HWはLチカから。

Airio-Baseの情報はここから追えます。

crane-elec.co.jp

mbedを使用するので、その基本的な使い方はわかっていないといけませんが、それがわかっていれば、下記の動画からAirio-Base固有の操作だけ理解していれば使えます(見て理解して、できました。

www.youtube.com

といっても、押さえる必要があるのはPCから認識させる方法とデータの置き方だけかな。

ひとまず、下記のコードをインポートしてコンパイルして、Airio-Baseに置いて実行してボタン押下でLチカ出来ることを確認しました。

os.mbed.com

簡単~~ですね。

引き続きサンプルコード動かして理解していきます。FlashAirを使うところまでは今月中に行きたいですね。

R MarkdownでPandocからdocxを作成をする際にsvgを取り込むのは現状難しそう。

調べたことのまとめ

Pandocユーザー会の方でWordにsvgを入れたいといった話があったのでR Markdownなら出来ないだろうかと思って調べた結果。現時点では難しい(Pandoc側の問題で)ので、対策を考える必要がある。

R Markdown側でsvgを作成する方法

これは下記のSOにあるように、チャンクオプションでdev='svg'とすればよい。

stackoverflow.com

{r pressure, dev='svg}

作成されたsvgファイルを確認したければ、YAMLフロントマターに下記のように書いて、中間生成物である(Pandocに渡す)Markdownファイルを残すようにすればよい。この時に画像ファイルも一式残ることになる。

output:
  word_document:
    keep_md: TRUE

docx側で調べたこと

self--containedを指定するとsvgファイルそのものが作成されていない気がする。あとで再調査。それ以外はsvgファイル自体は自身に取り込まれていると思うのだが、docx側でうまく参照できてないような出力になる(画像のある場所に[x]読み込めませんのような表示)

    pandoc_args: 
      ['--self-contained']

Word側で図を差し替えようとすると、svgを選択した場合は1回目は画像が表示されず([x]は消える)同じ操作を2回やると画像が表示された。pngの場合は1回で出来る。1回目の状態で正しく反映されるかは未調査。

なお、Pandocで生成したdocxは互換モードになっているので一旦変更を行う必要があるが、この時に<?xml version="1.0" encoding="UTF-8" standalone="yes"?>になるわけではないと思うので、standaloneがどこでついているのか謎…。

svgを手で別途追加したときもちょっと挙動が違う。この辺りはもう一度まとめないと何が何やらである。

svg用のタグは別にありそう。

手でsvgを入れたWordファイルの場合、タグが下記のようになっている。

<asvg:svgBlip xmlns:asvg="http://schemas.microsoft.com/office/drawing/2016/SVG/main" r:embed="rId9"/>

pngなどの場合は下記のようになる。

<a:blip r:embed="rId9"/> 

このrId9の指すリンク先はdocument.xml.relsに書かれている。しかし、このpngで使われているタグのリンク先をsvgに変えても表示されない(というよりも開くとエラーとなる)

このsvg用と思われるタグで検索すると下記の掲示板があった。このやり取りが一番参考になりそう。まだ読み途中。

apache-poi.1045710.n5.nabble.com

このリンク先の仕様書を読んでもよくわからない。このタグを使う方法はわかったけど読まなくてもわかったし・・・

[http://interoperability.blob.core.windows.net/files/MS-ODRAWXML/[MS-ODRAWXML].pdf:embed:cite]

Pandocのdocx writerの方を見てみても、上記のタグがないような(まだ探し途中だが)ので、svg対応が出来ていないかも。 http://hackage.haskell.org/package/pandoc-2.3.1/docs/src/Text.Pandoc.Writers.Docx.html#local-6989586621680791699

処理分けられれば良さそうだなという気がするので、上記のa:blipに置き換えるところでsvg用のタグに置き換えてビルドすれば出来るかな。いずれやってみる(Haskell環境がない

wmfについて

R Markdownで先のチャンクオプションのdevの部分を下記のように書き換えることでwmfファイルに置き換えることが出来る。

{r pressure, dev='win.metafile'}

ただし、この場合は余白が無駄に生成されているようで、pngの図と等価(形状的に)ならない。そのため、こちらも現状ではおすすめできないことになる。

ほか

こういうのもSO.jpにあった。apache POIの方が情報が集まりやすいだろうか?そんなことはないか…。

ja.stackoverflow.com

とりあえず、現状ではPandocでsvgを取り扱うのは難しそうかなぁ…。生成したdocxを書き換えるか、filter作るか…と思ったけどwriterが対応していなければfilter作っても意味ないか…。

追記

よくよく見てみると、a:blip の中にasvg:svgBlip があった。先のpdfの「1.3.3 Pictures」を見ると、後方互換性のためにpng表示をするといったことが書かれていたので、その処理だろう。つまり、svgを差し込むときはコンパチなpngを準備して、下記の構造を持たせたタグにする必要があるということになる。これはちょっと面倒くさそうですね。

いずれにしてもsvgの場合はタグをわけなくてはいけないことには変わりないのですが…。

<pic:blipFill>
<a:blip r:embed="rId8">
<a:extLst>
<a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
<a14:useLocalDpi xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" val="0"/>
</a:ext>
<a:ext uri="{96DAC541-7B7A-43D3-8B79-37D633B846F1}">
<asvg:svgBlip xmlns:asvg="http://schemas.microsoft.com/office/drawing/2016/SVG/main" r:embed="rId9"/>
</a:ext>
</a:extLst>
</a:blip>
<a:stretch>
<a:fillRect/>
</a:stretch>
</pic:blipFill>

追記の追記

本家でもPR出ているので、うーむ対応されなさそう。

github.com

とりあえずpng刺しておいて、あとからsvgに置き換えるってのが出来るのかを手で確認してRで実装かな…。

css3をやっていく気持ち。

つい先日更新があったようだ…。

さて、css組版に向けてcssについて調べています。で、10/18に更新があったようなこのページを少しずつ読んでいます。

CSS Paged Media Module Level 3

CSS Paged Media Module Level 3 (日本語訳)

Paged.jsの情報もまだまだ少ないし、しばらくは下地の知識を付けていく感じかな。とりあえずpagedownパッケージのリポジトリWatchはじめましたが。

Pandocのhtml出力についても調べないといけないので、まだまだ先は長いですねぇ…。

mbed祭り 2018@秋の虎ノ門 に行ってきました。

HW寄りのこともやっていくですよ。

そんなわけで、「mbed祭り 2018@秋の虎ノ門」に行ってきました。mbed祭りにいくのは実は初めてです。

mbed.doorkeeper.jp

初心者枠(ミニハンズオン参加)で参加しました。

mbed自体を触るのは実は初ではないのです。Flash AirのときにAirio-Base(プロトタイプ)を使用したハンズオンのときに設定したので、僕は覚えていなくてもPCはちゃんと(アカウントなど)覚えていました。

ハンズオンは恒例の?Lチカで、一通りのことはやれたと思います。

ハンズオンはやはり環境の構築がどこも課題なんだなぁ…と思いましたが、今回は開始前にWifiの接続確認があって、事前に接続が出来ていたのでスムーズだったようですが、ブラウザがIEだと使えない罠があったりで、そういうトラブルは回避するの難しそうですねぇ。

そこで、始めるならどのボードがおすすめか?という話があり、「FRDM-K64Fが良いよ」とのことでしたので購入しました。いずれ届くはず。

全体のお話

mbedまわりの最新状況やセキュリティ、知財的な話まで幅広く面白い発表ばかりでした。いずれ何か発表してみたいですね。

プレゼント

mbed祭といえば、基板などのお土産が有名?っぽいですね。必ず何かしらもらえるみたい(ノベルティかもしれないけど)

そしてなんと…例の婚活ボードが僕の手に…

なんか運命じみたものを感じますねぇ…(遠い目

そんなわけで何かやりますね。

打ち上げ

公式にはなかったのですが、有志?でHUBへ。Twitter上でこっちが勝手に知っている方と直接お話が出来ました。色々聞けたです。面白いですねぇ。

備考

なんか手が勝手にオシロ買ってました。来週末が楽しみですねぇ…。

やっていこう👍

Pandoc本体を理解する前に出力されたASTを見ていく。

そういえば先日の技術書典でお話聞いたな…。

そんなわけで、PandocからASTのPandoc Nativeの形式のものを吐き出してどのように変換されているのかを見ています。

Pandoc - Pandoc filters

はじめからこうすればよかった感があるものの、これはHaskellについて基礎的な文法知識が出来たから読めるので有って、技術書典のタイミングではできませんでしたね。後知恵、後知恵。

藤原さんのこの資料もあわせて調べ中です。

Pandocチュートリアル 第2回 HaskellでPandocフィルタを実装しよう

これで一通りASTの対応表を作ったらReaderで確認、Writerの確認、そしてフィルタ実装かな。

まぁ、ゆっくりやっていきましょ。

Haskellの勉強を始めた

すべてはPandocの理解のために…

実際に書けるようになる必要はあまりなくて、Haskellで書かれたPandocの挙動をそのソースから理解できるようにしようというのがモチベーションです。なので、Pandoc中で使われていない記述などは特に学ばなくていいかなと思っている次第。

7shiさんのこの一連の記事がわかりやすくまとまっていて助かります。順を追って読んでいて、4のHaskell ラムダ 超入門まで読んでいます。

qiita.com

とりあえず一通り読みつつ、Pandoc読めそうになったら読んでいく、そんな感じです。

そういえば、先月末のPandoc 2.3.1のリリースでMarkdown Readerの挙動が変わっているかもしれないのでちょっと見てみないといけない。

Pandoc - Releases

Pandocのコードはこのあたりから追って行くとよさそう

Text.Pandoc.Class