最近のCMS動向調査

最近のCMSの動向を調査した。

調査前は、LAMP環境でWordpressを入れるのがデフォルトで、他の選択肢があまり思いつかなかった。
どうやら最近は下記のような構成の「JAMstack」が流行りっぽい。

Headless CMS(ex. contentful, Flamelink
+ Webアプリケーションフレームワーク(ex. Nuxt, Vue
+ホスティング(ex. Firebase Hosting, Netlify

《参考》 


以下、構成例。

典型的なWordPressブログ(約3500ページ)を、URLや機能・使用感などを一切変えることなくFirestoreに丸ごと移行して静的化運用している(2020/5/9:引用)

Wordpressからの移行。 
Firebase+Flamelink+etcの例。

JAMstackは眠らない(slideshare)
p.60:JAMstackの問題点



ざっと見た感じ、JAMstackのメリット/デメリット。

メリット

  1. 表示速度の向上
    • 利用ユーザ側は静的コンテンツにアクセスするだけなので、爆速になる。利用ユーザにとってはこれが一番のメリットっぽい。 ※参考
  2. すべて無料で構築できる
    • 個人で利用する範囲なら無料で構築+運用可能。レンタルサーバ代がかからないのは良い。
  3. 横展開しやすい
    • ホスティング/フレームワーク/CMS/コンテンツ間を切り分けられるので、コンテンツは同じで別のWEBアプリの新規開発とかはしやすい。※参考
  4. セキュリティ
    • Wordpressセキュリティ問題からの解放。PHPからの離脱。
  5. デザインを自由度高くカスタマイズできる(デメリット3との対比)
    • ページデザインもお好みで。Bootstrapとか使うのも自由。

デメリット

  1. CMS管理画面のユーザビリティが、Wordpress >>>>> Headless CMS ぽい(2020.5.20現在)
    • 機能面やプラグインは圧倒的にWordpressが充実している。 Headless CMSの操作性も、一般の人でも操作できるレベルとは思うが、開発者が触る想定のところも多い。
  2. 仕組みが複雑になりがち
    • LAMP+Wordpressはシステム環境的な相互依存は大きいが、その分シンプル。JAMstackだと、サービスを切り分けている分、管理部分が増える。
  3. デザインは一から作らないといけない(メリット5との対比)
    • WordpressみたいにNo Codeは不可。Bootstrap等、既存テンプレートは使えるが作り込まないといけない。

所感として、試すのはありだと思う。
Google好きなので、今のところFirebase+Flamelink+αが良さげかなと思ってる。
《参考》


[USB温度・湿度測定モジュール][Win7][VS12]USBMeter.dllを使ったプログラムがうまく動かない問題への対処法

USB温度・湿度測定モジュールを使って、温度・湿度を取得することができるキットがある。
http://strawberry-linux.com/catalog/items?code=52001

昔、後輩がそれを使ってプログラム(C#)を書いたが、他の開発環境に移植した際にうまく動かなかった。
どうやら、USBMeter.dllのFindUSB関数で強制終了してしまうようだ。

調べてみると同じような症状の方がいて、下記サイトが参考になった。
http://ssk.tea-nifty.com/blog/cat22992315/index.html
http://gogomini.sakura.ne.jp/cgi/heppokoZ/index.php?e=1980

ただ上の方たちは、OSが違ったりビット数が違っていたが、私の環境は療法とも同じだった。
元の環境 :Windows7(32bit)でVisualStudio10
新しい環境:Windows7(32bit)でVisualStudio12

そのため当初は関係ないと思ったが、
試してみたら正常に認識した。

変更点としては扱う型を「Int → IntPtr」に変えただけ。

しかし、こういう型の問題は、HTMLの文字列でも動画のエンコードでも、未だに多くの人が悩まされているが、解決される日は来ないのだろうか。

[objective-C][Xcode]incompatible type

xViewController.m:37:24: Assigning to 'id<UIPickerViewDelegate>' from incompatible type 'xViewController *const __strong'
という警告があって、どうしたらいいか調べたらこれが見つかった。
//Suppress the warning by changing this:
controller.delegate = self;
//to this:
controller.delegate = (id)self;
こういう風に型を指定すればいいのか

Html5のvideoを表示DIV内で最大化(Fix)する方法

現在Twitter Bootstrapを使ってサイトを構築しており,cssクラス:row-fluidを適応しているため,videoのサイズを可変できるようにしたい.
だが,videoタグの要素に対してcssクラスのspanを適用しようとしたが効かなかった.

そこで何か方法がないか探し,
https://gist.github.com/jgarber/2302238
https://github.com/marclarr/FitVids.js
を見つけたが,うまく動かなかった.

そのとき↓を見つけ,たった2行で動いた(笑)

video{
  max-width: 100%;
  height: auto;
}
Other fixed-width assets | Implementing Responsive Design with Media | Peachpit:
'via Blog this'

感謝.

[ASP.NET MVC4 Web アプリケーション]広範囲のリンクを作成

Razorにはリンクやフォームを生成してくれるHtmlHelperがある.
例えばリンク生成にはActionLinkを用い,下記のように表記する.
@Html.ActionLink("リンクとして表示される文字", "リンク先のView名 or Controller名")
(ココらへんの話はググれば結構出ます)

ただ,文字以外にも写真などでリンクを作りたい時がある.
写真のみの場合はActionLinkの代わりにImageLinkとして拡張された方がいる.(Google:「ImageLink MVC ASP.net」とかで出ると思う)

しかしDiv要素など,複数のコンポーネントが存在したものを同一リンクで生成したかったので,ちょっと困った.
そこでいろいろ探してたら,"a href"と"Url.Action"を組み合わせれば実現できることが分かった.
以下がサンプル.(引数は適宜変更ください)


これで生成されたものが下図.
デザインにはTwitter Bootstrapを使っており,そのThumbnailsの一要素という位置付け.


これで上記サムネイルのどこをクリックしても,リンク先に飛ぶようになった.
ただ,これを多用するとコードが荒れるので,ほどほどがベスト.

[mediaelement.js]Youtube再生時のループを禁止


http://mediaelementjs.com/

MediaElement.js
サーバ上の動画やYoutubeなどにある動画をHTML5のvideoタグで表示できるjsライブラリ.

これを使ってYoutubeを再生してみたが,なぜかループが止まらない.
サイトに記載されていたoptionの
useful for <audio> player loops
loop: false,
でもダメだった.(そもそもこれはaudio用みたい

そこで,audio,videoで作られたmediaelement要素に対し,次のようなEventListenerを付与した.

"ended"状態の時,playerを止める.
なお,3行目の処理はサンプルファイルに書かれているものなのでそちらを参照.

[IIS]redirection.configが読み込めない

WebMatrixで新規サイトを開こうとしたときや、VisualStdioでMVCアプリを作成しようとしたとき、IISでローカルを仮想サーバとしてサイトを開こうとする。
そのとき、
redirection.config 構成ファイルを読み取れません
というエラーが出てしまい、正直けっこう長い間困ってた。

これが、下記サイトで解決した。

windows - Webmatrix error when creating new site from folder "MACHINE/REDIRECTION" - Stack Overflow:
'via Blog this'

原因としては、
redirection.configがデフォルトでは、
C:¥Windows¥System32¥inetsrv¥config
にあるけど、
IISv7とかを入れたりしたら別のディレクトリを参照してしまい、
「ないよ?」って言ってるのが原因だった。

別のディレクトリってのが、自分の場合は
マイドキュメント¥IISExpress¥config

これ、日本語で調べても出てこないってことは、そんなにないことなんかな。