BlogTop > myown Archive

myown Archive

4 of 10

< Previous PageNext Page >

すべてのページ

今月のいらんことしい(2015年7月)

今月(2015年7月)、サイトでカスタマイズした箇所をまとめたエントリです。

  • RSD (Really Simple Discovery)テンプレートへのリンクをHTMLヘッダから削除した
  • labs.markdiary.com の管理をMTOSから、個人無償版のほうへ移動した
  • スマートフォン向けページでページ上部のサイト内検索などをClose するボタンをつけた
  • 記事ページのTrackback表示に overflow : hidden をつけた

rsd.xml は、外部ツールへAPIの場所を伝えるものなのですが、実質使用していないこと、Data APIを使用したツールを使うと必要がないという理由から、link要素によるオートディスカバリーを削除することにしました。

MTOS の 製品ライフサイクルが 2015年9月30日をもって終了となることから、 MTOSで運用していた maRk labをこっちのほうに移動するとしました。

リポジトリのほうは存在するようですが、今後セキュリティパッチが提供されなくなることから、移行を検討せざるを得なくなりました。

ライセンス上から、ブログのバックアップ復元のためのアップグレードインストールができないので、記事をエクスポートして取り込むという方法で移動させました。

幸いなことに、記事数が少なかったので確認にそれ程手間はかかりませんでした。

テーマは、これを期にレスポンシブにも対応している、mt.Vicuna の HTML5 版を使ってみました。

おおまかな移行手順を書きます。

  • あらかじめ、 labs.markdiary.com/ 以下のバックアップをとる ( cp コマンドだとプロセスkillになるんで、サーバー提供のコピーツールを使いました )
  • 記事のエクスポートからブログの記事のエクスポートファイルをダウンロード
  • 先述のmt.Vicuna の HTML5 版のテーマを /themes/ にいれておく (ウェブサイトとして作成するときに、mt-static/以下に入れると選択ができないため)
  • 「ウェブサイトの作成」で新規ウェブサイトを作る
  • ウェブサイトURL(サブドメイン使用) http://labs.markdiary.com/
  • ウェブサイトパス /var/www/html/labs.markdiary.com
  • アーカイブをウェブサイトパスとは別のパスで公開する (以下上記のように任意のURLとパスを指定)
  • 記事のインポートで先ほどのエクスポートファイルを取り込む
  • 再構築前に、テンプレートをプレビューを使いながら編集
  • 状態の良いテンプレートから随時再構築していく

といった感じです。/blog/ ディレクトリを持たないサブドメイン型ブログ(サイト)ですので、そのままウェブサイトにブログを作らないで、そのまま記事を取り込んでいます(ウェブサイト下でブログ作成したものを、ブログURLをサイトトップにあげて作ると ブログID(blog_id)の1つが余計になってしまうので)。

Close ボタンは、mt.js 内に mtHide() があるので、これを onclick 属性に仕込んでおけば、jQuery を使わなくても簡単に特定要素の非表示ができます。

<div id="hideElem">text</div>
<div class="btn" onclick="mtHide('hideElem');">×</div>

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2015年6月)

今月(2015年6月)、サイトのカスタマイズした点をまとめたエントリです。

  • AccessRankingGA プラグインを、Google OAuth 2.0に対応できるように修正した
  • AccessRankingGA テンプレートタグの出力するページ(.json ファイル)の再構築方法を変更した
  • カテゴリー mt4 をサイドバーで表示しない
  • カテゴリー mt6 を新設
  • Trackback のCGI へポストに関する.htaccessの設定みなおし
  • 利用していないプラグインを plaginsディレクトリから削除

OAuth 対応は、以下に詳細ページを用意しました

特定カテゴリーのリストからの除外は、運用のしやすさから、カテゴリラベルでフィルターをかけるのが一般ですが、カテゴリーIDで指定すれば、あとからのラベル変更でも一意なものとして機能します。

mt4カテゴリーは、バージョン4は製品ライフサイクル終了からだいぶたっているので、カテゴリーリストから除外するとしました。

以下はカテゴリーID 1をリストから除外する例

<MTTopLevelCategories>
<mt:Unless tag="CategoryID" eq="1">
...
</mt:Unless>
</MTTopLevelCategories>

mt6のカテゴリーを追加しました。今のところ、タグにmt6を付けてあるものにカテゴリーを与えましたが、徐々に設定していく予定。

先日、以下の記事にて再構築ツールを紹介しましたが、

これにより、対象のファイルを MovableTypeのrun-periodic-task スクリプトから切り離してcron 実行できるようになりました。

AccessRankingGA(のテンプレートタグが生成するファイル) は www-rebuilder経由の再構築にするので、テンプレートの再構築オプションでは「手動」にしておきました。

具体的にプラグイン名は挙げませんが、不要となったプラグイン(長い間使ってなくかつ無効としていたもの・コア機能として統合されているものなど)を削除しました。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

Feedly 購読者数の取得 2015年6月版

  • Posted by: maRk
  • myown | net
  • はてなブックマークに追加

Yahoo Pipes およびYQL経由でAjax による、Feedly の購読者数の取得が出来なくなったため、改修をおこないました。そのメモです。

これまで、以下のページにあるような方法で取得していたのですが、いつからか不明ですが、取得できないようになっていました。

先般、 Yahoo Pipes のほうで、Pipesの終了に向けてのアナウンスがありました。

とりあえず、このまま使っていても進展しないようなので、別の方法で取得するようにしました。

PHPによる取得

PHPの file_get_contents ファイルシステム関数を利用すれば、APIの返すソースを得ることができます。

基本的なものは以下のようなかんじに。

<?php
    $url = "http://example.com/feed/";     // 対象URL
    $json = @file_get_contents("http://cloud.feedly.com/v3/feeds/feed%2F".rawurlencode($url));    // データ取得
    $feedId = json_decode($json, true);    // JSONをデコードし配列へ
    $count = isset($feedId['subscribers']) ? $feedId['subscribers'] : 0;    // isset()で内容を調べ $count へ代入。登録されてないときは 0
    print  $count;

参考:

ウチのとこみたいに増減がほとんどないようなら、キャッシュいれたほうが、あちらのサーバーにはやさしいとおもいます(使ってるページ自体がアスセス少ないとか言わない)。

PEAR の Cache_Lite パッケージを用いた例です。

都合で、コメントに説明をいれています。

<?php
    header("Content-Type: text/html; charset=UTF-8");   // text/plain でもいいような気もするけどとりあえず

    // チェックURL
    $url = "http://example.com/feed/";    // フィードURL

    require_once "Cache/Lite.php";    // Cache_Lite 呼び出し

    // キャッシュオプション

    $cacheOptions = array(
        'cacheDir' => '/var/www/tmp/cache/',  // キャッシュディレクトリを指定。適切なパーミッションをセットしておく
        'lifeTime' => '3600', //  キャッシュ期限  (1時間) 
    );

    // キャッシュID と キャッシュオブジェクト生成
    $id = "feedlysubscribers";
    $Cache_Lite = new Cache_Lite($cacheOptions);

    // データ取得
    if($count = $Cache_Lite->get($id)){  // 
        echo $count;
    } else {

        // キャッシュがないときに、フィード購読者数の取得にいく

        $json = @file_get_contents("http://cloud.feedly.com/v3/feeds/feed%2F". rawurlencode($url));
        $feedId = json_decode($json, true);
        $count = isset($feedId['subscribers']) ? $feedId['subscribers']: 0;

        echo $count;
    //  キャッシュ登録でこの条件が真になるようにする
        $Cache_Lite->save($count, $id);
    }

参考:

これを、 subs_count.php とでもして、サイトのどこかに置きます。

で、取り出す側は jQuery でテキストファイル読み込みなんかを使っていきます。

jQuery本体の呼び出しは済ませてあるものとします。

ファイル呼び出し

表示ページが PHP なときは、include するとかでいいかと。 以下は、jQueryで先ほどのPHPファイルを取り込みます。

テンプレート上の購読者数表示する場所に以下の要素をいれておきます。

<div id="feedly_subscribers"></div>

複数あるようなときは、class属性にしておき、以下の読み込むときのセレクターもそれにあうようにしておきます。

単に読むだけなので、.load() にしてますが、各種処理が必要な場合は .ajax() のほうにします。

<script>
$(document).ready(function (){
  $("#feedly_subscribers").load("//path/to/subs_count.php");
});
</script>

今月のいらんことしい(2015年5月)

今月(2015年5月)、ブログでカスタマイズした箇所をまとめたエントリです。

  • LDR Pocket をスマートフォン表示時に表示されるようにした
  • ウェブマスターツールの名称変更があったので、過去記事にその旨を追記した

以下のページを参照しました。

※ご注意:LDR Pocketはスマートフォン向けサービスのため、「LDR Pocket に登録するボタン」もスマートフォン向けページに掲載いただくようお願いいたします。

Google ウェブマスターツールのGoogle Search Console への名称変更は、2015/5/20 付け記事により告知されています。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

Perl Istack sp ptr 関係のエラー

  • Posted by: maRk
  • mt6 | myown
  • はてなブックマークに追加

ローカル環境の Perl にエラーが出て困っていたのでメモしておきます。

perl のエラーで Movable Type 管理画面が表示されないため、ログをみたところ、以下のようなものが記録されていた。

dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr, referer: http://localhost/MT6X/
Referenced from: $HOME/perl5/lib/perl5/darwin-thread-multi-2level/auto/Imager/Imager.bundle, referer: http://localhost/MT606/
[Fri Apr 17 23:52:21 2015] [error] [client ::1] Expected in: flat namespace, referer: http://localhost/MT6X/

(ユーザーのフォルダは $HOMEで置き換えてます。MTのフォルダ実際ははバージョンごとの任意の名称。どのバージョンの管理画面でもエラーで止まります)

macports を selfupdate した後、perl5 を upgrade このときに $ which perl でパスがなくなったので、インストールしなおし。 というところまでが、現象前での作業。

この Imager は、ユーザーのフォルダのほうに入れているものです。

いろいろ試したのですが効果のあったものだけ記しておきます。検索すると、環境変数を設定してあげる、というものなどあるのですが、環境変数の設定では改善されませんでした。

.bundle のつくバンドルがこの問題に該当するようで、これらを@INCの外に退避させると、管理画面が表示されるようになりました。

根本的な原因と正確な対処法は今のところ不明です。

なお Imager は、cpanm で入れた Imager を一旦削除 (App-pmuninstall 使用) してから、cpan のほうでインストールしなおしで使えるようになりました。

今月のいらんことしい(2015年4月)

今月(2015年4月)、サイトでカスタマイズした点をまとめたエントリです。

  • サイトルートのみ、Analytics トラッキングコードを外した
  • FCブログ閉鎖にともない、過去記事からリンクを外すなど
  • Movable Type を 6.1.1 へアップデート

昨年より一部話題になっていた、Google Analytics でのリファラスパムの件ですが、スパムが後を絶たないため、トップページだけ外すということにしました。

これに至る理由は

  • 対策に時間をとられるのはばかばかしい
  • ランディングページでトップページは極端に少ない

ということからです。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2015年3月)

今月(2015年3月)、ブログのカスタマイズした点をまとめたエントリです。

  • シングルカラムのページに Media Queries と viewport を指定した
  • MTInclude タグのモジュールテンプレート階層化の見直し
  • 「ブローク」サービスはとっくに終了していたので、サイドバーから削除。ShortNoteプロフィールリンクを追加
  • PHPのバージョンを、ここと tsuredurebox.geo.jp とでサーバー管理画面の設定よりバージョンアップ
  • Vicuna CMS のサイトへのリンクを解除
  • Actionstreams テンプレートに noindex, nofollow METAタグを付与

Movable Type 6.0.4 より、PHP 5.5 への対応が済んでいるのがわかったので使用するPHPのバージョンをあげました。CoreServer では管理画面のPHP設定の項目からドメインごとで切り替えることができました。

Vicuna CMS および、 mt.Vicuna へのリンクは、リンク先が存在しなくなり、別の第三者がドメイン取得されているようなので、この時点でリンクウェア(造語)としての意味を持たなくなったということで、リンクを解除ということで対応しました。

ちなみに、Movable Type向けテンプレートは、 HashiM氏により、mt.Vicuna HTML5 theme として管理されているようです。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2015年2月)

今月(2015年2月)、ブログでカスタマイズした箇所をまとめたエントリです。

  • カスタマイズ記録(今月のいらんことしい、バックナンバー)ページでテンプレートタグでやっていたのを、DATA APIで読み込むように変更
  • Fancybox の JS、CSS 等更新
  • ブログの一部記事、oEmbed 配信に対応
  • HTTP ヘッダ X-UA-Compatible: chrome=1 削除してなかったページを更新
  • Movable Type用DataAPI Disablerプラグイン 導入でDATA API 使用ブログを制限(6.1導入後削除)
  • Movable Type のバージョンを6.1に、MTOSバージョンを5.2.12へ
  • Action Streams 更新フィードで、title要素 に二重引用符(エンコードしたもの含む)があると、パースできないケースがあったので削除するように置換した

Movable Type DATA API を使ってみることにしました。

使用箇所は、カスタマイズ記録ページのリスト表示と、oEmbed プロバイダ用のAPI

oEmbed については、以下が詳しいです。

以下に実際の動作をまとめておきました。対応するエディタで記事URLをペーストすると読み込みにいってrich形式でかえします。

Movable Type|MTOS のバージョンアップをおこないました。

<mt:ActionStreams replace="&quot","" replace="&#34;","">

(なぜか、regex_replaceで複数指定するとうまくいかなかった)

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

今月のいらんことしい(2015年1月)

今月(2015年1月)、今年最初のブログのカスタマイズした箇所をまとめたエントリです。

  • コード掲載ページに SyntaxHighlighter を導入
  • XML-RPC cgiの実行権限を解除
  • サイトのルートへの Analytics スニペットを出力しないようにした
  • 個別記事ページにもアクセスランキングを表示するようにした
  • サイトトップのトラッキングスニペットのカスタマイズ

記事内にコードのある場合に SyntaxHighlighter による表示になるようにしました。

カスタムフィールドに以下のように設定

システムオブジェクト
  記事
名前
  SyntaxHighlighter
説明
  SyntaxHighlighterを使用する
種類
  チェックボックス
オプション
  なし
必須
  チェックを外す
規定値
  SyntaxHighlighterを使用する
ベースネーム
  cfsyntaxhighlighter
テンプレートタグ
  cfSyntaxHighlighter

作成された、mt:cfSyntaxHighlighter タグを使って、テンプレートに SyntaxHighlighter (ver.3系)を読み込むように組みます。

<mt:If tag="cfSyntaxHighlighter">
SyntaxHighlighter を呼び出すコードを入れる。
</mt:If>

スクリプト部分は、フッター側に、スタイルシートは、head要素内に設置しています。

カスタマイズしたサイトトップのGoogle Analytics コードは、ShortNote に記載したとおりです。

今月のカスタマイズは以上です。以下に過去のカスタマイズ記録リストがあります

Index of all entries

BlogTop > myown Archive

Feeds
Elsewhere

Action Streams

logo

Comment powered by DISQUS

Return to page top