<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MovableType on すてきな太陽になりたい</title><link>https://blog.sei-yo.jp/categories/movabletype/</link><description>Recent content in MovableType on すてきな太陽になりたい</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Thu, 18 Jun 2020 01:25:18 +0000</lastBuildDate><atom:link href="https://blog.sei-yo.jp/categories/movabletype/index.xml" rel="self" type="application/rss+xml"/><item><title>cpanm Safeでインストールしようとするとテストでエラーとなって失敗する</title><link>https://blog.sei-yo.jp/engineer/2020/06/posts/cpanm_safe/</link><pubDate>Thu, 18 Jun 2020 01:25:18 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/06/posts/cpanm_safe/</guid><description>&lt;p&gt;cpanm Safeでインストールしようとするとテストでエラーとなって失敗しました。 対処法わからず。。。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Running Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Safe
Writing MYMETA.yml and MYMETA.json
-&amp;gt; OK
Checking dependencies from MYMETA.json ...
Checking if you have ExtUtils::MakeMaker 0 ... Yes (6.68)
Building and testing Safe-2.35
cp Safe.pm blib/lib/Safe.pm
Manifying blib/man3/Safe.3pm
PERL_DL_NONLAZY=1 /usr/bin/perl &amp;quot;-MExtUtils::Command::MM&amp;quot; &amp;quot;-e&amp;quot; &amp;quot;test_harness(0, 'blib/lib', 'blib/arch')&amp;quot; t/*.t
t/safe1.t .......... ok
t/safe2.t .......... ok
t/safe3.t .......... ok
Possible unintended interpolation of @INC in string at /usr/lib64/perl5/DynaLoader.pm line 90.

# Failed test 'Can load version.pm in a Safe compartment'
# at t/safeload.t line 26.
# Unable to create sub named &amp;quot;*Safe::Root0::version::vxs::numify&amp;quot; at /usr/local/lib64/perl5/version.pm line 48.
# Compilation failed in require at (eval 11) line 1.
# BEGIN failed--compilation aborted at (eval 11) line 1.
# Looks like you failed 1 test of 3.
t/safeload.t .......
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/3 subtests
t/safenamedcap.t ... ok
t/safeops.t ........ skipped: PERL_CORE unset
t/saferegexp.t ..... ok
t/safesort.t ....... ok
t/safeuniversal.t .. ok
t/safeutf8.t ....... ok
t/safewrap.t ....... ok

Test Summary Report
-------------------
t/safeload.t (Wstat: 256 Tests: 3 Failed: 1)
 Failed test: 1
 Non-zero exit status: 1
Files=11, Tests=98, 1 wallclock secs ( 0.04 usr 0.02 sys + 0.53 cusr 0.08 csys = 0.67 CPU)
Result: FAIL
Failed 1/11 test programs. 1/98 subtests failed.
make: *** [test_dynamic] Error 255
-&amp;gt; FAIL Installing Safe failed. See /root/.cpanm/work/1592328454.16336/build.log for details. Retry with --force to force install it.
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>mtdataapi.vimの開発状況</title><link>https://blog.sei-yo.jp/engineer/2019/07/posts/mtdataapivim/</link><pubDate>Mon, 29 Jul 2019 21:52:02 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/07/posts/mtdataapivim/</guid><description>&lt;p&gt;以前、この&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/03/vim-mtdataapi.html"&gt;エントリ&lt;/a&gt;で書いたプラグインがとりあえず使える感じになってきたので改めてここに書く。&lt;/p&gt;
&lt;p&gt;このプラグインは、Movable TypeというCMSを利用する際の文字編集を簡単にするために開発しています。 Movable Type（以下、MT）は、エントリを編集するインタフェースとしてWeb UIを提供していますが、豊富なエディタの機能を利用することができないのが個人的な欠点でした。 Web UIのままでも、javascriptを書くことで様々な機能を追加することができますが、使い慣れたエディタを使える方が何かと便利です。 そこで、vimというエディタで編集したものがMTにすぐにアップロードできたり、MTのエントリをvimにダウンロードできたりすることを実現したいと思いました。&lt;/p&gt;
&lt;p&gt;そこでmtdataapi.vimでは、MTのもつAPIであるData APIを使って、エントリ情報をやり取りすることでエントリ情報のアップロードやダウンロードを実現しました。 MtOpenコマンドの引数にエントリIDを与えると、MTから該当のエントリをダウンロードしてきてローカルファイルに保存します。そして、そのローカルファイルを開きます。 そのまま編集して:wで保存すると、MTにアップロードされて、エントリが更新されます。 ダウンロードしたエントリは、本文だけでなく公開、非公開（下書き）の状態やカテゴリ、タグなどの情報も含まれていて、それらも編集可能です。そのため、非公開のエントリを公開に変えて保存するだけで、エントリを公開状態にすることができます。&lt;/p&gt;
&lt;p&gt;本文編集の際のフォーマットは、htmlだけでなくMarkdownも利用できます。 Markdownで表現できない部分（複雑なhtmlなど）は、htmlのままにしておいて、文章だけMarkdownで記載することも可能です。文章だけであればMarkdownで記載できれば十分なのですが、それができない場合はhtmlをMarkdownで扱おうとすると情報が失われてしまうケースがありました。そのため、両方を扱えるようにしています。 htmlの方が情報が多いので、基本的にはhtmlでローカルファイルには保存しておいてMTとやり取りします。文章を編集する際のみ、該当部分をMarkdownに変換する使い方を意図しています。&lt;/p&gt;
&lt;p&gt;上記のhtmlとMarkdownを変換するために、MtHTMLtoMDとMtMDtoHTMLコマンドを用意しています。 ビジュアル選択した状態で上記コマンドを実行すると、選択部分が変換されます。 Markdownでの編集が終わったらhtmlに変換して、:wするという使い方を想定しています。 MtOpenした場合も、:wで保存した場合も、その後自動的にMTの情報でbufferが更新されます。このときはhtmlで更新されます。&lt;/p&gt;
&lt;p&gt;MTでは画像のアップロード操作などもできます。 Web UIではマウスで簡単に画像の挿入ができますが、mtdataapi.vimではできません。そのため、Web UIでエントリを編集する場合もあると思います。 そうした場合、ローカルファイルの情報が古くなってしまいますが、MtOpenで開いた状態でを押すとMTから情報をダウンロードして最新の情報で更新されます。&lt;/p&gt;
&lt;p&gt;自分でこのプラグインを作ってみて実際に使っていますが、文章を書くのが楽になってブログエントリを書くのも楽になりました。 ブログといえばWord Pressが有名でMovable Typeは利用者が少ないような気がしますが、利用者の方は使っていただけると嬉しいです。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/vim-mtdataapi"&gt;mtdataapi.vim&lt;/a&gt;&lt;/p&gt;</description></item><item><title>blogの始め方その１</title><link>https://blog.sei-yo.jp/engineer/2019/06/posts/blog_begin_1/</link><pubDate>Tue, 25 Jun 2019 23:27:00 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/06/posts/blog_begin_1/</guid><description>&lt;h1 id="どこに書くか"&gt;どこに書くか&lt;/h1&gt;
&lt;p&gt;blogを書き始めようとするときに、まずはどこに書くかを決める必要があります。 世界中で人気のWord Pressというソフトウェアを使う手もありますが、ややニッチ（？）な&lt;a href="https://www.sixapart.jp/movabletype/"&gt;Movable Type&lt;/a&gt;というソフトウェアもあります。 Movable TypeはSix Apartという会社が開発しているソフトウェアで、商用ブログサービスとしてType Padというものもあります。 私はMovable Typeに書くことにしているのでMovable Typeを使います。&lt;/p&gt;
&lt;h1 id="何で書くか"&gt;何で書くか&lt;/h1&gt;
&lt;p&gt;Movable TypeはWebインタフェースがあるので、ブラウザで書くのが通常ですがブラウザのテキストフォームに書くような形になるので使いづらいです。使いやすくするにはjavascriptを書いて機能拡張するなどの工夫が必要です。しかし、世の中には文章を書くためのツールとしてエディタがいくつもあり、それらを使う方が文書を書くには都合が良いのです。当たり前ですね。Movable TypeにはWebのGUIインタフェース以外にWeb APIも提供しています。このWeb APIは&lt;a href="https://www.movabletype.jp/developers/data-api/"&gt;Data API&lt;/a&gt;という名前で定義されていて、これを使うと記事の新規作成や編集なども行えます。&lt;/p&gt;
&lt;p&gt;そういうわけで、エディタで書いた文章をData APIを使ってMovable Typeに投稿する仕組みが実現できそうです。 これができればエディタで気持ちよく文章を書いて、そのままMovable Typeのblogエントリとして投稿できるはずです。 欠点があるとすれば、写真などの画像を入れようとすると難しくて、WebのGUIインタフェースの方が直感的に配置できたり、アップロードもできるので操作性は上です。 ですので、画像の取り扱いはWeb GUI、文字はエディタと使い分けることにします。&lt;/p&gt;
&lt;p&gt;さて、エディタで書いた文章をData APIを使ってMovable Typeに投稿しようと思いますが、どのような操作性が良いでしょうか。 気軽に編集できるようにするには、エディタでテキストファイルを保存するような操作でData APIを使って投稿できる、修正できるというのが良いでしょうか。 ローカルに編集したり、Data APIを使って編集を反映したりと使い分けられるようにするのも手です。 とりあえずはローカルにあるファイルを編集し、上書き保存すると、Data APIを使ってMovable Typeの記事も編集（変更）されるという仕組みを目指します。&lt;/p&gt;
&lt;h1 id="足りない機能"&gt;足りない機能&lt;/h1&gt;
&lt;p&gt;エディタでファイルを保存すると自動的にData APIにアクセスする仕組みを実現する必要が出てきました。 自動で行うというのがポイントですが、そのためには以下のような方法が考えられます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ファイルの更新チェックをリアルタイムで行うようにカーネルフックモジュールを用意する&lt;/li&gt;
&lt;li&gt;ファイルの更新チェックを行うデーモンを用意する&lt;/li&gt;
&lt;li&gt;エディタの保存処理をフックする仕組みを用意する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;カーネルフックモジュールで実装すると、色々と無駄で遅くなりそうです。 デーモンを用意するのも大げさな感じですし、無駄な感じです。 そこで今回はエディタの保存処理をフックする仕組みを用意することにします。&lt;/p&gt;
&lt;p&gt;保存処理をフックできるようなエディタはいくつもありますが、筆者はvimが好きなのでvimを採用します。 vimはemacsと同じく拡張が用意で基本的になんでもできます。&lt;/p&gt;
&lt;p&gt;vimの場合は、vim scriptという形で保存処理をフックする仕組みを記述すれば実現できます。 vim の設定ファイルはvimrcに記述しますが、この設定ファイルもvim script形式です。 そのため、vimrcに保存処理のフックすく仕組みを書けば解決できますが、その仕組みが巨大であったり、汎用的にできたり、公開したい場合にはプラグインとして作成することもできます。 今回はMovable Type利用者でかつ、vim利用者のためのプラグインを作成することにします。&lt;/p&gt;
&lt;h1 id="足りない機能を補う"&gt;足りない機能を補う&lt;/h1&gt;
&lt;p&gt;vim プラグインに必要な機能はData APIへのアクセスに関するものと、ローカルファイルの取り扱いに関するものに分けられます。 Data APIはHTTPアクセスなのでHTTPリクエストとレスポンスの取り扱いが必要です。 この部分は&lt;a href="https://github.com/vim-jp/vital.vim"&gt;vital.vim&lt;/a&gt;を使います。 ローカルファイルの取り扱いは自分で用意します。&lt;/p&gt;
&lt;p&gt;Data APIで取得したエントリはJSON形式で取得できますが、それをローカルファイルに保存する前にエディタで編集しやすい形に整形する必要があります。 また、その逆にローカルファイルの内容をData APIで投稿する際には逆の整形を行う必要があります。 こうした処理をちまちま書いていくといずれ出来上がります。 プラグインの処理の詳細は別の記事に書きますので、そちらを参照してください。&lt;/p&gt;</description></item><item><title>vim plugin mtdataapi の更新記録（ダウンロード機能追加）</title><link>https://blog.sei-yo.jp/engineer/2019/06/posts/vim_plugin_mtdataapi/</link><pubDate>Thu, 06 Jun 2019 22:36:55 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/06/posts/vim_plugin_mtdataapi/</guid><description>&lt;p&gt;mtdataapiに記事のダウンロード機能を設けました。&lt;/p&gt;
&lt;p&gt;以下のコマンドでダウンロードできます。 ダウンロード先は、g:mt_basedir です。この配下にサイトIDのディレクトリが作られます。各エントリはエントリIDのファイル名になります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let g:mt_basedir = $HOME/mtblog
:mtdataapi#downloadSiteToFile()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/vim-mtdataapi"&gt;Movable Type 用 Vim Plugin: mtdataapi.vim&lt;/a&gt;&lt;/p&gt;</description></item><item><title>logo 作成サービス hatchful</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/logo_hatchful/</link><pubDate>Mon, 29 Apr 2019 16:20:20 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/logo_hatchful/</guid><description>&lt;p&gt;logo 作成サービスのhatchfulというものを使ってみた。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.shopify.jp/blog/introduce-hatchful"&gt;hatchful&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;faviconとブログのカバー画像をこれに変えてみた。 まだ変えられていないところも多いけれど、そもそもブログがたくさんあるのでそれの整理もした方が良いかなぁ。。。&lt;/p&gt;</description></item><item><title>Tweetボタン設置</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/tweetbutton/</link><pubDate>Tue, 23 Apr 2019 22:36:02 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/tweetbutton/</guid><description>&lt;p&gt;以下に従ってTweetボタンを設置してみた。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.twitter.com/en/docs/twitter-for-websites/tweet-button/overview.html"&gt;Tweet Button&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://publish.twitter.com/"&gt;https://publish.twitter.com/&lt;/a&gt;を使うと簡単にhtmlコードを生成できるので、簡単だった。&lt;/p&gt;</description></item><item><title>pandocでフォーマット変換（vim-mtdataapi）</title><link>https://blog.sei-yo.jp/engineer/2019/03/posts/withpandoc/</link><pubDate>Thu, 28 Mar 2019 01:18:57 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/03/posts/withpandoc/</guid><description>&lt;p&gt;mtdataapiというvimのpluginからMovable Typeへの記事投稿の際、markdown形式で投稿できるようにしました。 変換にはpandocを使っています。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/vim-mtdataapi"&gt;mtdataapi&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Movable Type へのフィードバック方法</title><link>https://blog.sei-yo.jp/engineer/2019/03/posts/movable_type/</link><pubDate>Sat, 23 Mar 2019 09:45:25 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/03/posts/movable_type/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/03/movable-type-data-api-v4-authenticationbad-gateway.html"&gt;先日の記事&lt;/a&gt;でMovable Typeのドキュメントのバグを見つけたのでフィードバックを行ったところ、すぐに対応して修正してもらえました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://movabletype.atlassian.net/browse/FEEDBACK-1309"&gt;https://movabletype.atlassian.net/browse/FEEDBACK-1309&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;フィードバック方法 以下のURLから内容を投稿するだけです。 ユーザ名やメールアドレスは公開情報となるので記入必須ではないようです。 メールアドレスを登録するとその後の対応が通知されます。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sixapart.jp/movabletype/feedback.html"&gt;https://www.sixapart.jp/movabletype/feedback.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Movable Type 用 Vim Plugin を開発中</title><link>https://blog.sei-yo.jp/engineer/2019/03/posts/vim-mtdataapi/</link><pubDate>Thu, 21 Mar 2019 01:53:42 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/03/posts/vim-mtdataapi/</guid><description>&lt;p&gt;Movable Type というCMSを使ってブログを書いていますが、基本的にブラウザで入力するため文章入力が非効率に感じることが多々あったので、vimから投稿できるようにvim pluginを開発しています。&lt;/p&gt;
&lt;p&gt;単純な更新ができるようになってきたので、一旦githubに公開しましたが、とても一般の方が使える状態ではありません。 需要があるようでしたら、issueやSNSなどで連絡もらえると嬉しいです。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/vim-mtdataapi"&gt;Movable Type 用 Vim Plugin: mtdataapi.vim&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Movable Type Data API v4 の authenticationでBad Gateway</title><link>https://blog.sei-yo.jp/engineer/2019/03/posts/movable_type_data_api_v4_authenticationbad_gateway/</link><pubDate>Tue, 19 Mar 2019 01:04:50 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/03/posts/movable_type_data_api_v4_authenticationbad_gateway/</guid><description>&lt;p&gt;以下のマニュアルを参照してMovable Type 7のData API v4 の authentication を試したが、なかなかうまくいかなかった。 原因は clientId の I が小文字になっていたためだった。&lt;/p&gt;
&lt;p&gt;マニュアルの例のところが小文字になっていたのでそれを参考にしていたのが間違い。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.movabletype.jp/developers/data-api/v4-reference.html#authentication-authentication-post"&gt;マニュアル&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>