AlternoteでEvernoteに保存したMarkdownを,Markedでプレビューするやつを作った話.
概要
軽量EvernoteクライアントであるAlternoteを使ってMarkdownでメモをとり,
それをMarkdownビューワであるMarkedでプレビューするものを作った.
これは,設定さえしておけば,いつものメモ動作にHotkeyを一発加えるだけで実行できる.
また,最終的にEvernoteにデータが保持されるのであれば,エディタはなんでも良い.
以下の図のような感じでプレビューできる.右の黒いアプリがAlternoteで,左側のMarkdownビューワがMarkedである.
Markdownが好きだ
Markdownはいい感じだ.
メモをMarkdownで取ると,構造化されたメモがわりと簡単に取りやすい.
だからみんなMarkdownのこと結構好きだと思う.
そんなこともあってオンラインストレージを使ったMarkdownメモツールというのがいくつかあって,ぼくもこれまで色々試してきた.
例えば,Vim用にはEverVimがあったり,
ブラウザから利用可能なwri.peがあったり,
Mac,iPhone用のアプリではDayOneがあったりする.
と,色々試してきたし,どれも好きだったんだけどメモがとりにくかったり,シンタックスハイライトが微妙だったり,見返しづらかったりして結局定着しなかった(個人の感想です.)
で,最近はAlternoteというMac用の軽量Evernoteクライアントを使っていた.
Evernote,クライアントは重いしメモとるのめんどくさかったりと個人的にはだいぶ好きじゃないんだけど,Alternoteはそのへんがけっこうよかった.
ただ,EvernoteはなぜかMarkdownに対応してないので,そこをどうにかする必要があった.
Evernoteに書いたMarkdownをプレビューしてきた先人たち
まあこれは色々いらっしゃる.
個人的には,MacでMarkdown書くときは,Vimで書いてvim-quickrunでMarkedを呼び出してプレビューしていたので, 同じようにMarkedを使っている人を探した.
以下の方はEvernoteで最も最近更新されたメモをMarkedで表示するシェルスクリプトを書かれている.
ただEvernoteがバージョンアップしてディレクトリ構造が変わったのでこのスクリプトはもう動かなかった.
今回作ったものを利用する流れ
というわけで,先人のプログラムをForkして,以下のような流れで動くようにした.
今回新たに作成したプログラムは以下の2つ.
これらを利用する流れは以下のようになる.
- Evernote更新検知アプリを起動しておく.
- Alternoteでメモを書いて保存・同期する.
- Hotkeyを叩いて,Evernote更新取得アプリを起動.
- Evernote更新検知アプリが更新を検知して,Markedでプレビュー.
つまり,人が行う動作としては,
- Evernoteの更新を検知するアプリの起動(初回のみ)
- Alternoteでメモを書く
- 保存
- Hotkey押下
のみであり,これまでのメモ動作にHotkeyを加える形になる.
すると,以下の図のような感じでMarkedでプレビューが実行される.
プログラムの作成
Evernote更新検知アプリ
シェルスクリプトをAutomatorを使ってアプリに固めたものを利用する.
turuさんのシェルスクリプトを基に最新版のEvernoteに対応させたプログラムを保存しておく.ID(ユーザ名ではなく数字7桁のID)は自分の環境に合わせたものをシェルスクリプトに記述する.
保存したら,Automatorを開き,アプリケーションの作成を選択.
以下の図のようにシェルスクリプトを登録しておく.ディレクトリは各自の環境に合わせて変更して欲しい.
あとは保存の際に保存形式をアプリケーション(.app)にして,/Applicationディレクトリとかに入れておく.デフォルトだと裏で動き続けるプログラムなので,ログイン時に起動させたり,Alternote起動させるときにいっしょに起動するなどして欲しい.
Evernote更新取得アプリ
Hotkeyで呼び出すプログラムを,サービスとしてAutomatorで作る.
EvernoteクライアントはAppleScirptをサポートしているので,以下のAppleScriptでEvernoteの同期を実行することができる.
on run {input, parameters} tell application "Evernote" synchronize repeat until isSynchronizing is false end repeat end tell return input end run
このスクリプトを組み込んだ以下の図のようなAutomatorサービスを作成し保存する.これは,Evernoteを起動し,同期を実行したらAlternoteを起動する,というプログラム.
サービスを保存したら,Macのシステム環境設定から,ショートカットキーで作成したサービスを呼び出すように,以下のように設定する.
(名前は自由に設定すれば良い.ここではAlternote_viewerという名前をつけていた.)
Hotkeyは好みなので自由に変えて良い.
補足
今回,AlternoteをEvernoteエディタとして利用しているが,ここはVimでもEmacsでも,公式Evernoteクライアントでもなんでもいい.
(でもVimとかだったらquickrunからMarked呼び出したほうがラク)
公式クライアントを使う場合は Evernote更新検知アプリのみが必要になり,Evernote更新取得アプリは必要ない.
iPhoneについて
個人的にはiPhoneみたいなスマホでmarkdownをプレビューする必要はあんまりないと思ってる.
それよりも,markdownを使って出先でサクッとメモをとって,家のMacで読み返すっていう使い方をしてる.
ただ,iPhone向けのEvernoteクライアントはなんかしっくりくるのが見つかってないので,このへんもなんか考えたい.
Docker + gitBucket + Dropboxでプライベートgithubな話@さくらVPS
概要
Docker上でgitBucketコンテナを動かして,gitBucketのデータ置き場をDropboxにする話.
環境は,CentOS6.5なさくらVPS.
プライベートgithub的なやつをつくろう!
経緯
さくらVPSを借りているんだけど,最近はいろいろと便利なサービスがあって,正直全然使う機会がなくなってる.
一方で,githubのプライベートリポジトリが使いたくて月額課金しているんだけど,これが地味に痛い.bitBucketとか,gitlabとか微妙に使いづらいからしょうがないかと思ってたんだけど,最近gitBucketというgithubクローンが結構いい感じなことを知った.
そんで,gitBucketのDockerイメージがDockerHubにあったので,さくらVPSにDocker導入しようと思った.
環境移行するときのラクさも考えて,データはDropboxに置くことにした.
環境
事前準備:dropboxとの連携
dropboxをサーバで使えるようにしておく.例えばこの方のブログなどが参考になりそうだと思う.
Dockerをいれる
このへんは公式の手順どおりにいく.
yumを使うと1.5.0が入るので,最新版が欲しければyumを使わない方法が公式に載ってるのでそれを参考にする.
# docker のインストール $ sudo yum install device-mapper-event-libs $ sudo yum -y remove docker $ sudo yum install docker-io # docker初期設定 $ sudo service docker start $ sudo chkconfig docker on # sudoしなくていいようにdockerグループに追加 $ sudo usermod -aG docker user $ exit # 動作確認 $ docker info
gitBucketをDropboxにデータ置くように設定して起動する
以下のコマンドで行う.このコマンドだと8080にアクセスするとgitbucketにアクセスできる.
デフォルトユーザは,IDパスともにroot.あとはふつーのgithubみたいに使える.
# gitbucket用のディレクトリをDropboxに作る. $ cd Dropbox $ mkdir gitbucket # Dropboxと紐付けてgitbucketコンテナを起動する $ docker run -d -p 8080:8080 -v /home/user/Dropbox/gitbucket:/gitbucket sken/gitbucket
おまけ:githubからリポジトリを移行する
この方のブログを参考にした. githubからリポジトリをまるっと取ってくる.タグとかブランチもそのままもってこれる.
# githubから該当リポジトリを手元にミラーオプションでクローン $ git clone --mirror <SOURCE_REPOSITORY_URL> $ cd <REPOSITORY> # gitBucketで移行先リポジトリを作っておく.ミラーオプションつけてプッシュ. $ git push --mirror <DESTINATION_REPOSITORY_URL>
SonyのMeshをハックしている話
概要
Sony のMeshがやってきたのでハックしてる.
ひとまずタグの白色LEDをiPhoneアプリから制御できるようにした.
公式のアプリは使っていない.
Meshがどんなもんかっていうと,Makeクラスタの人にとって一番わかりやすいのは,未踏で開発されたTangramだろう. 単機能な電子ブロックをネットワークでつないで,アプリケーションを実現する. www.trangram.cc
もうちょっとどういうものか知りたければ,公式ページはもちろん,以下の様なページがある.
公式 meshprj.com
Meshユーザグループ(Facebook) https://www.facebook.com/groups/meshtomo/
GPIOタグをルータ代わりに使って,ArduinoやらRasPiやらLittleBitsと連携させる方法
#SONY_MESH と #RaspberryPi と #Scratch GPIOがあっさりつながりました。相互に制御できます。 pic.twitter.com/b7nyYEJ1OT
— Kazuhiro Abe (@abee2) 2015, 5月 13もろもろまとめとGPIOタグを使ってNode.js連携. tips.hecomi.com
現状の不満
で,現在目立った不満としては,大きく,タグと開発環境(アプリ)の2点が挙げられると思う.
- タグの種類が少ない.
- 個人的にGPIOタグはチートすぎるし思想とズレてる感じもするし死ぬほどダサいと思ってる.
- 開発環境がiPadだけ.
- ソフトがめっちゃ重い.
- バックグラウンドで動作しない.
となればすることはひとつで,Meshの通信プロトコルの解析です.
これができれば,タグを自前で量産することも,AndroidアプリやiPhoneアプリを作ることもできていい感じだと思う.
というわけで,ひとまずMeshタグの白色LEDを制御するiPhoneアプリを作った.
ただこれが正しくハックできているかというと結構微妙なところで,各タグの機能(ボタンとかLEDとか)はちょっとまだバグがあって公開にはもう少し時間がかかる感じです.
お楽しみに〜👋
Android wearをiPhoneで使えるようにした.その2:アルファ版リリースの話.
前回のエントリで書いた,iPhoneでAndroid Wear が使えるようになるアプリのアルファ版を公開した.こんな感じ
alpha release: android wear works with iphone - YouTube
インストール
マーケットに公開したわけではなくて,APKリリースなので,ADBコマンドが使える環境が必要.
apkはGoogleドライブにある.
apkダウンロードリンク
Wear側でADBをオンにした状態でPCに接続して,下記コマンドを実行する.
wear_iosというアプリがインストールされる.
$ adb install Wearable-release.apk
使い方
動画をみるとだいたいわかる.
ペアリングするために,LightBlue というアプリをStoreからインストールする必要がある.
動画にあるように,"Blank"という仮想のBLEデバイスみたいなものを追加して,オンにしてください.
教えてほしいこと
動作機種
どの機種で動いたか教えて欲しい.バグとかも.
通知アイコン
通知がきたときにアプリのアイコンが出るのと出ないのがある.出してほしいアプリとかあったら教えて欲しい.今は,以下のアプリのアイコンが出るように設定してる.
- 電話
- SMS(メッセージ)
- LINE
- Gmail
これから
ソースを公開する.
Playストアで配信する.
Android wearをiPhoneで使えるようにした.その1: デモ(速報)編
こんな感じにiPhoneの通知をAndroid Wearで受けられるようになるものを作った.
AndroidWearとiOSを連携させる方法は Google公式のAPIでは提供されていない ためか,これまで 実現されていなかった.
そのため本エントリでは速報的にデモ動画を掲載し,技術的な話は次回以降のエントリで説明していく.
経緯
先週,@MohammadAGさんの,Android wear をiPoneで使えるようにしたっていう動画がバズってるのを見つけた.
Android Wear and iOS (direct connection) - YouTube
ぼくはAndroid端末も持っているんだけど,基本的にはiPhoneユーザなので手元のAndroid Wearを持て余していたもんだから,この動画にはすごく興味をもった.
ただ,これはデモ動画だけで,APKやソースの公開についてはまだ未定 ということだったので,自分で考えて実装する必要がある.
で,つくってみた
iPhoneにメッセージを受信した際の通知をAndroid Wear側でユーザに通知します.
Android Wear work with iPhone - YouTube
これから
まだざっくりとしたプロトタイプなので,もう少し仕様を見ながら修正をして,来週末くらいには公開できるといいなと思ってます.
Intel Edison, ubilinuxへカーネルモジュールを追加する.
Intel Edison Advent Calender 2014の6日目です.
本日の担当は@shiitakeoですこんにちは.
宣言どおり,ubilinuxにカーネルモジュールを追加するお話をします.
ubilinuxにカーネルモジュールを追加することができると,Webカメラを使ったり,オーディオを使ったりと,Edisonの可能性が広がりますね!
経緯
Yoctoはopkgのリポジトリが貧弱なので,ubilinux最高!みたいになってきてるのが実際のところだと思う. たしかにubilinuxのaptのリポジトリはいい感じなんだけど,ソースが提供されていないのでカーネルモジュールの追加どうすんのって感じだった.
解決策
Yoctoでカーネルをビルドして,ubilinuxへコピーするような形をとると,ubilinuxへカーネルモジュールを追加することができる.
具体的には,/boot/にあるカーネルと,/lib/modules以下にあるカーネルモジュールを,Yoctoからubilinuxへ転送する.
ここで注目したいのは,ubilinuxのカーネルはYoctoのカーネルをベースにしているということで,試しに再ビルドしたYoctoのカーネルをubilinuxにコピーしてみたら,カーネルモジュールを追加することができた.
まあでもOSビルドして基板に転送,くらいのノリなので,今までのスタイルとあまり変わらないみたいな感じ.
1. 準備@Ubuntu:必要なカーネルモジュールを追加したYoctoイメージの作成.
必要なモジュールを追加したYoctoをビルドする.
カーネルビルドについては,Edisonアドベントカレンダー3日目の@k_yoneさんのエントリを参考にしてください.
発売当初は結構うまく行かなくて,ひさやんさんのエントリにお世話になった記憶がある.これとか,これとか.今はそうでもないのかなあ?
2. 準備@Edison
カーネルとモジュールを書き換えるので,現在入っいるものを削除しておきます.どっかにコピーしておいてバックアップしてもいいです.
$ rm /boot/* $ rm -r /lib/modules/*
3. Edisonへ必要なファイルを転送する@Ubuntu
イメージファイルをマウントして,カーネルとカーネルモジュールをscpを使って転送します.
カーネルビルドの際の設定(menuconfig)で,"*"にしたものはカーネルに組み込まれているので,edison-image-edison.hddimgの中に,"M"にしたものはカーネルモジュールになるので,edison-image-edison.ext4の/lib/modules以下に存在しています.
# postBuild.shを実行して作成される,ビルドしたイメージが存在するディレクトリで作業しています. $ cd toFlash $ sudo mkdir -p /mnt/edison/kernel $ sudo mkdir -p /mnt/edison/modules $ sudo mount -o loop edison-image-edison.hddimg /mnt/edison/kernel $ sudo mount -o loop edison-image-edison.ext4 /mnt/edison/modules # user名とIPは適宜変更してください. $ scp /mnt/edison/kernel/* root@192.168.xxx.xxx:/boot/ $ scp -r /mnt/edison/modules/lib/modules/* root@192.168.xxx.xxx:/lib/modules/
4. 再起動してカーネルとモジュールを読み込む@Edison
転送ができたら,再起動してあげれば,カーネルとモジュールが読み込まれて,ubilinuxで利用できるようになります.
$ reboot
5. 確認
今回はuvcをカーネルへ追加してみました.
root@ubilinux:~# find / -name uvc* /sys/bus/usb/drivers/uvcvideo /sys/kernel/debug/usb/uvcvideo /sys/module/uvcvideo /usr/include/linux/uvcvideo.h```
最後に
ubilinux最高!
おまけ
なんかこう固い話でつまんないので,HexBugとコラボして走ったりかっとんだりするEdisonくんを作りました.
ご確認ください.
水に反応して光るバッジをAgICで作った(Maker Fair Tokyo 2014落選作品のご紹介)
何を作ったか
MFT2014に落選したモノを,AgICを使って作った.雪だるま型の雪合戦用のバッジで,雪(水)がバッジにあたると雪だるまの目が光る.
↓バッジが濡れると…
↓雪だるまの目が光る.
かわいい
MFT2014に落ちた
先週の日曜日にMaker Fair Tokyo 2014に行きました.
出展落ちたけど行きました.
出展落ちたけど行きました.
出展落ちたけど行きました.
何を出そうとしていたかというと,これまで作ってきたものと新作で,
新作は,水に反応して光るバッジと,そのバッジをたくさん並べた壁を出す予定だった.
出展申込が夏だったのもあって,うおおおお!水鉄砲でバッジ狙ったり,壁にバンバン水打ってビガビガ光ってたら最高じゃん!ちっちゃい子も楽しめるじゃん!受かる要素しかない!みたいなテンションだったんだけど,冷静に考えるとMFTは秋の終わりなんだよなあ,みたいな感じだった.
AgICとの出会い
で,出展落ちてから基板発注する元気もなくなって放置してたんだけど,先日AgICという,光沢用紙上にマーカーで書いた線で回路を作れるペンを手に入れた. こういう写真用の光沢用紙を使う.
以前にもこういうのはあって,例えば絵の具みたいになってて,それを紙に塗って回路作るやつとかがあった.
けどこの手のやつは水にめっちゃ弱くて,今回のような水に濡れることを前提とした用途には向いてなかった.
一方で,AgICはある程度水に耐えられるので,じゃあこれで作れたらいい感じじゃんみたいな感じで,水に反応して光るバッジをAgICで作ってみた.
季節外れという弱点を克服するために,ユースケースは雪合戦にして,バッジの形も雪だるまっぽい感じを目指した.
仕組み
LEDを光らせるにはふつう,電池と抵抗とLEDをを使う.
で,今回はLEDを点灯回路の抵抗の部分を水に置き換えてる.
こうすると,LEDと電池をつなぐオープンな箇所が,水で閉回路になってLEDが光るようになる.
ただ,伝導率がだいぶ低いのでトランジスタを使ってる.電源がそれなりにゴツイやつなら別にトランジスタいらないんだけど,ボタン電池でやりたかったのでトランジスタを使った.
雪だるまのおなかの部分にある2つの電極をまたぐように水がかかると,トランジスタのベース部分に電流が流れてLEDがが光る.このあたりはデザイン的にもうちょっと雪だるまにマッチするようなものにできるといいなあ.と思う.
AgICにはんだづけができなかったので,雪だるまのおなかの電極と電池をAgICを塗った紙でつないでたりとかしてる.この部分は雪だるまの手をイメージしてみたんだけど,なんか心臓から毛が生えたみたいな感じになってキモくなったと思う.
で,気になるところとしては,今回"水"って言っているのは純水ではなく水道水なのですが,雪って電気伝導率低いっていうし,実際どうなんでしょうね.雪玉作るときに手でにぎにぎするしいけるのかなあ.どうなんだろう.
今後
基板起こすのもいいけど,こういう紙とかテープとか使うのも楽しいなあと思った.
ちっちゃい子向けのワークショップにして,好きな形とかにしたら楽しいと思うし,来年のMFTとか出したい.なんか別の機会がないかなあとも思ってる.家族で来て楽しめたり,別にひとりで来ても楽しいみたいなやついいと思う.