ターミナルで動作する Markdown Viewer terminal_markdown_viewer を試す

これは便利そう.ということで試してみました.

% git clone https://github.com/axiros/terminal_markdown_viewer.git
% terminal_markdown_viewer/mdv.py -h
Usage:
    mdv [-t THEME] [-T C_THEME] [-x] [-l] [-L] [-c COLS] [-f FROM] [-m] [-M DIR] [-H] [-A] [MDFILE]
 
Options:
    MDFILE    : Path to markdown file
    -t THEME  : Key within the color ansi_table.json. 'random' accepted.
    -T C_THEME: Theme for code highlight. If not set: Use THEME.
    -l        : Light background (not yet supported)
    -L        : Display links
    -x        : Do not try guess code lexer (guessing is a bit slow)
    -f FROM   : Display FROM given substring of the file.
    -m        : Monitor file for changes and redisplay FROM given substring
    -M DIR    : Monitor directory for markdown file changes
    -c COLS   : Fix columns to this (default: your terminal width)
    -A        : Strip all ansi (no colors then)
    -H        : Print html version
 
Notes:
 
    We use stty tool to derive terminal size.
 
    To use mdv.py as lib:
        Call the main function with markdown string at hand to get a
        formatted one back.
 
    FROM:
        FROM may contain max lines to display, seperated by colon.
        Example:
        -f 'Some Head:10' -> displays 10 lines after 'Some Head'
        If the substring is not found we set it to the *first* charactor of the
        file - resulting in output from the top (if you terminal height can be
        derived correctly through the stty cmd).
 
    File Monitor:
        If FROM is not found we display the whole file.
 
    Directory Monitor:
        We check only text file changes, monitoring their size.
 
        By default .md, .mdown, .markdown files are checked but you can change
        like -M 'mydir:py,c,md,' where the last empty substrings makes mdv also
        monitor any file w/o extension (like 'README').
 
        Running actions on changes:
        If you append to -M a '::<cmd>' we run the command on any change
        detected (sync, in foreground).
        The command can contain placeholders:
            _fp_    : Will be replaced with filepath
            _raw_   : Will be replaced with the base64 encoded raw content
                      of the file
            _pretty_: Will be replaced with the base64 encoded prettyfied output
 
        Like: mdv -M './mydocs:py,md::open "_fp_"'  which calls the open
        command with argument the path to the changed file.
 
 
    Theme rollers:
        mdv -T all:  All available code styles on the given file.
        mdv -t all:  All available md   styles on the given file.
                    If file is not given we use a short sample file.
 
        So to see all code hilite variations with a given theme:
            Say C_THEME = all and fix THEME
        Setting both to all will probably spin your beach ball, at least on OSX.
 
    Lastly: Using docopt, so this docstring is building the options checker.
    -> That's why this app can't currently use itself for showing the docu.
    Have to find a way to trick docopt to parse md ;-)

簡単に導入実行できていい感じです.
色付きのまま使えるページャーが欲しいのですがなにかいいものはないですかね…….
とりあえずは -A option で色無しで lv コマンドあたりに食わせています.

% terminal_markdown_viewer/mdv.py -A ~/Documents/pelican/content/1st_post.md |lv
 

asciicast

Termlnal で動作する Slack client の terminal-slack を試す

Termlnal で動作する Slack client の terminal-slack というものを見かけたので試してみました.

% git clone https://github.com/evanyeung/terminal-slack.git
% cd terminal-slack

"Slack Web API | Slack" で Token を入手して実行.

% SLACK_TOKEN=xxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx node main.js

https://www.flickr.com/photos/119142834@N05/22901628116/in/datetaken/

さくっと動作しましたが日本語は文字化けしてしまいます.残念.

追記)

Google+ で教えてもらったのですが,次のパッチで日本語が見られるようになりました.書き込みもOK でした :)

Dropbox の新機能のfile requests を試す

Dropbox に対不特定多数向けファイルアップロード機能が付いたということで試してみました。
(<br>タグが……)

ファイル非公開anonymous FTP の変りに使えるのかな?
てことで試しにURL 公開
Screenshot from 2015-06-18 09:30:57
Screenshot from 2015-06-18 09:31:15
Screenshot from 2015-06-18 09:31:26
Screenshot from 2015-06-18 09:40:35

https://www.dropbox.com/request/4mt4eOii9dJb3N5f0LsP

アップロードには氏名とメールアドレスが必要
適当でもよさそうだけど
Screenshot from 2015-06-18 09:43:28Screenshot from 2015-06-18 09:43:42
Screenshot from 2015-06-18 09:44:24
Screenshot from 2015-06-18 09:46:17

まだこなれてないようでWeb画面英語になったり日本語になったり
ファイルUp者へのメールは日本語で、共有元には英語だったりしました。

ファイル非公開anonymous FTP の様にファイル提出を不特定多数から受け取るのに良さそうです。容量制限などが設定出来るといいかもですね。(1ファイル1MB 迄とか.txt のみとか)

ケーブルの抜け防止に良さそうな製品

AVANTEC(アバンテック) | 電源、USB、HDMI等コネクタ、ケーブルの抜け防止製品のご紹介

サーバやスイッチなんかの電源なんかは抜け防止の金具が付いてますが,PCなんかだと付いてません.
電源だとサプライ品で見たことありましたがこちらの製品だとUSBやスマホなんかのmicroUSBなんかも対応するものがあるみたい.場合によっては便利そうです.
オンラインショップはあるようですが,Amazonとかでも売ってると便利そうです.

DuckDuckGo を日本語環境で使う

DuckDuckGo という検索エンジンがあります.検索エンジンといえばGoogle一強という感じですがその分プライバシーがGoogleに筒抜けだったり蓄積されたりするのが嫌かもしれません(その分その人に合う検索結果が帰ってくるはずですが).それに対してDuckDuckGo はユーザプロファイルを作らず誰に対しても同じキーワードから同じ検索結果を返します.
DuckDuckGo使いたいけど日本語の情報が出てこないから使い物にならないって人が居たので日本語の検索結果を表示する設定が知られて無さそうということで最近使っている設定をメモしておきます.

https://duckduckgo.com/?q=keyword&kp=-1&kl=jp-jp&kc=1&kf=-1&kh=1&k1=-1
この例だと以下のように日本語の検索結果を返すようになっています.

q=検索キーワード
kp=-1 セーフサーチ無効
kl=jp-jp 日本向けの検索結果
kc=1 自動先読み有効
kf=-1 サイトアイコン有効
kh=1 https有効
k1=-1 広告無効

ブックマークツールバーなどに以下を登録しておくといい感じです.
https://duckduckgo.com/?q=keyword&kp=-1&kl=jp-jp&kc=1&kf=-1&kh=1&k1=-1

常用するなら以下のように規定の検索エンジンを差し替えてしまうといいでしょう.
Screenshot from 2015-02-06 06:54:45
Screenshot from 2015-02-06 06:55:20
Screenshot from 2015-02-06 06:56:17

JessieでフォントがDejaVuになって困る

ある時からDebianJessieのあちこちのフォントが中華な感じに.

Screenshot from 2014-12-24 14:37:17Screenshot from 2014-12-24 14:36:28

確認すると DejaVu というフォントらしい.

LibO で設定を変えてみても恐らく和文フォントを設定されていないテンプレートを利用した時などに戻ってしまったり.Chromium で設定を変えみても反映されなかったりでした.
Screenshot from 2014-12-24 14:49:03Screenshot from 2014-12-24 15:06:24

とりあえずこのフォントは使わないなってことで消して対処療法….

% sudo apt purge fonts-dejavu fonts-dejavu-core fonts-dejavu-extra ttf-dejavu ttf-dejavu-core ttf-dejavu-extra

RaspberryPi B+ でUSB で1.2A を利用できるようにする(失敗)

“Raspberry Pi Model B+のUSBポートに1.2Aの電力を供給する – あっきぃ日誌” http://akkiesoft.hatenablog.jp/entry/20140727/1406443999

を見て /boot/config.txt 編集しないとB+ でUSB に1.2A の電力を供給できないことを知りました.
で,/boot/config.txt 規定値のまま,safe_mode_gpio=4 登録,max_usb_current=1登録.両方登録のパターンで試したんですがいずれもHDD スピンアップしませんでしたorz

電源はGPIO から河野総統謹製のラズベリーポット(ラズベリーハブの電源部分のみ+αのもの),microUSB からAnker の40W USB 電源の2パターンを試しました.
HDD はSeagate Momentus XT 500GB/4GB SSD付きハイブリッド7200rpm を500円位で秋葉原で売っていた適当なケースに入れたものです.5400rpmとかなら行けるのかなとか?

Y型のUSB cable を使って片方から給電したら動くのでHDD は問題なくRaspberryPi B+ からの電気が足りないせいなはず.ちなみにPC(Lenovo X220)だとUSB x1で動作します.

OS 色々いじってるので一旦初期状態にしてからまた試してみようかと思います.

IMG_20140730_080938

OpenStreetMap を使ったマイマップのような uMap を試してみる

を見てuMap を試してみました.

以下のページにアクセスしてマップを作成とするだけです.

試しに書いてみました.
日本語化もされているし簡単に地図も書けるので人にも勧めやすくていいなと思いました.


フルスクリーン表示

埋め込み時に埋め込みコードをそのまま貼り付けるとイギリスとかの辺りが表示されてしまうのですが,地図編集時のURL http://umap.openstreetmap.fr/ja/map/linux02_11213#17/31.57706/-229.44820 の#以降の #17/31.57706/-229.44820 を埋め込むと任意の座標を表示できました.


周りのデータが少なくて寂しかったのでざっと道路沿いの建物をトレースしてみました.
しかしまだまだ寂しいですね><



gist にコマンドラインから貼り付ける

先日コマンドラインからgist に貼り付けられるんだと驚かれたのでちょっと書いておきます.

その時使ったsctipt はこちら.

Debian jessie 以降,Ubuntu 14.04 以降だとパッケージもあります.このパッケージで導入した場合コマンド名は gist ではなく gist-paste になります.

自分で入れる場合は,gem やHomebrew が使えます.

  • apt $ sudo apt-get install gist
  • gem $ sudo gem install gist
  • Homebrew $ brew install gist

※Homebrew が動く環境を持っていないのでこちらは未検証です.

導入後利用する前に,認証を済ませておきます.2要素認証にも対応しています.

$ gist --login
Obtaining OAuth2 access_token from github.
GitHub username: matoken
GitHub password: 
2-factor auth code: 984736

Success! https://github.com/settings/applications

認証が終わったら試してみます.
一番単純な動かし方は貼り付けたいファイルを指定するだけです.これで公開状態で貼り付けられます.

$ gist lingrbot_web.cgi
https://gist.github.com/ed68bd7182ffddee4801

ファイルタイプを指定する場合は面倒ですがファイル名も指定しないと反映されないようです.

$ gist -f ml2lingr.pl -t perl /tmp/ml2lingr.pl
https://gist.github.com/3021d8d064d8a1d29ba9

標準入力も

$ gist
(type a gist. to cancel, when done)
hoge
fuga
https://gist.github.com/3e993a396a7671403f9e

$ echo “hoge” | sha512sum |gist
https://gist.github.com/970e190f97ae67c8e90d

更新も可能です.

$ gist -u 3021d8d064d8a1d29ba9 -f ml2lingr.pl -t perl /tmp/ml2lingr.pl
https://gist.github.com/3021d8d064d8a1d29ba9

しかし,更新などはURL やID を指定しないといけないのでgitでclone しておいて編集後push したほうがお手軽そうです.

その他のpastbin系サービスを使いたい場合いろんなコマンドがあります.最近は pastebinit を使っています.
このコマンドの対応サービスはこんなかんじです.

$ pastebinit -l
Supported pastebins:
- cxg.de
- fpaste.org
- p.defau.lt
- paste.debian.net
- paste.drizzle.org
- paste.kde.org
- paste.openstack.org
- paste.pocoo.org
- paste.pound-python.org
- paste.ubuntu.com
- paste.ubuntu.org.cn
- paste2.org
- pastebin.com
- pastie.org
- pb.daviey.com
- slexy.org
- sprunge.us
- yourpaste.net

ちなみにこのへんのコマンドを使うまではクリップボード操作アプリを使ってました.
$ cat file | xclip とかするとクリップボードにファイルの内容がコピーされるのでこれをブラウザ上のテキストエリアに貼り付けたりしていました.

nkf でbase64 エンコード,デコードしたら結果が違う?

小さなバイナリを受け渡ししたいけれどファイル共有サービスとか使うのも面倒だしbase64 にしてgist に貼ってしまおうと思ったのですが,nkf コマンドでbase64 にエンコードして,確認のためデコードしてみたら違う結果に.

% cat original | nkf -MB > hoge
% cat hoge | nkf -mB > fuga
% diff original fuga           
バイナリーファイル original とfuga は異なります
% ls -l
-rw-r--r--  1 mk   mk       4080  5月 29 20:38 original
-rw-r--r--  1 mk   mk       5422  5月 29 20:52 hoge
-rw-r--r--  1 mk   mk       3999  5月 29 20:52 fuga

Google+ にこのことを書いたら
https://plus.google.com/u/0/103792214056489833385/posts/bbVzNS7RNTR

Masakazu Takahashiさんにコメントをいただきました.

試したところ、デコードのときに入力文字コードを明示的に指定する必要があるようです。

% nkf -mBW hoge > fuga

そんなこんなで、base64のエンコード/デコードだけなら、base64コマンドのほうが確実かも。

ということで,base64 コマンドならGNU Coreutils に含まれているので大抵の環境で使えるしってことでbase64 コマンドで貼り付けました.

% cat jl-bct.bct | xz | base64 | gist-paste

ついでに復元はこんな感じで

% wget -O – https://gist.github.com/matoken/b2041569865a82895082/raw/53b85e9333e3b837d24714a8e529dde69ec788e9/jl-bct.bct.xz.base64 | base64 -d | xzcat > jl-bct.bct