Category Archives: 未分類

2018-10-12

水浸けスパゲティ

なんで今までやらなかったんだろう。後悔。

あらかじめ水につけておくというアイデアは以前から聞いたことはありましたが、スパゲティを作る上での問題をこれほど見事に解決出来る方法だとは思っていませんでした。

  • 食べたいときにすぐ食べられる(3分で調理可能)
  • フライパン一つでOK(洗い物少ない)
  • 自然に一手間かけた食べ方ができる(美味しい!)

事前に水につけておきさえすれば食べたいときにすぐに食べられます。 スパゲティってお湯を沸かしてゆであがるまで結構な時間がかかりますからね。 最近は早ゆでタイプもありますが少し高いですし、どのみちお湯が沸くまでの時間はどうしてもかかりますし。 それがこの方法なら食べたいと思ってからフライパン一つですぐに完成します。 長時間浸けっぱなしにしていてもそれほど問題ないみたいです。

洗い物が少ないのも嬉しいですね。水に浸けるための容器はそれほど汚れませんし、あとはフライパンだけ。フライパン一つで火を通してソースも温めて、何ならそのまま食べれば良いので皿も不要。

それでいて美味しい。どんなに手軽でも美味しくなければ続きませんからね。フライパンで調理したパスタは美味しいです。市販ソースの裏によく書いてある「一手間かけた食べ方」はたいてい茹でた後にフライパンを使う方法です。鍋で長時間茹でた上にフライパンまで使うのは面倒ですが、この方法なら最初から使うのはフライパンだけなのでついで感覚で色々出来ます。

このくらいの手軽さなら山(アウトドア)でもできそう。ガスもそれほど使わないはずですし。持ち運び(水入りのジップロック?)はちょっと注意が必要ですが。

2018-10-12 ,

Org2blogでアイキャッチ画像を設定する

アイキャッチ画像(投稿サムネイル, featured image, post thumbnail)を指定するオプションを追加しました。次のように書けます。

#+TITLE: Org2blogでアイキャッチ画像を設定する
#+POST_THUMBNAIL: ./some-featured-image.jpg

https://github.com/misohena/org2blog/commit/ffbb7146f3a571db7841aac89f41bb3e93c578ca

ファイル名が変わっていたらアップロードして再設定します。オプションを消せば(空文字列にすれば)アイキャッチ画像は投稿から取り外されます。ただし、APIからメディアを削除する方法が分からなかったので変わる前の画像はメディアライブラリに残り続けますのでご注意を。

2018-10-11 ,

Org2blogでサムネイル画像のサイズをリンク毎に個別に設定する

このBlogは Org2blog + WordPress で書かれているわけなんですが、画像を張るときにちょっと気になることがあります。

それは画像のサイズを個別に指定する標準的な方法が無いこと。 org2blog/wp-image-thumbnailsorg2blog/wp-image-thumbnail-size という設定があってそれを使えば全体でサイズを指定出来るのですが、一つの文書の中でこの画像はどうでもいいので小さくしたい、この画像は重要なので大きくしたい、といった個別に指定する方法が用意されていません。

最終的にHTMLでエクスポートされるので、画像(img要素)に対してstyleやwidth属性を設定すれば無理矢理大きさを変えられます。

#+ATTR_HTML: :width 240px
[[file:./a.png]]

しかしこの場合、あくまで表示時に縮小することになるため不必要に大きな画像をダウンロードすることになります。WordPress側ではアップロード時にいくつかの解像度差分を自動的に生成してくれているのに勿体ない話です。

というわけで、作ったのが次のパッチ。

https://github.com/misohena/org2blog/commit/244fdc04ec0d470ce4434c21b4c6476840d25632

imgのwidth=を見て適切なサイズの画像を選ぶようにしてみました。

ただ、実はこれだけでは不十分で、同じ画像をサイズを変えて何度も使いたい場合にうまくいきません。org2blogは内部で一つのファイル名に対して一つのサムネイルサイズを前提にしているため、最初に指定した画像リンクのサイズが以降使われてしまいます。

それを解決してみたのが次のパッチ(一つ目のパッチを前提にしています)。

https://github.com/misohena/org2blog/commit/fb74f87429883ed04aa00781e4e21c8e4a873ded

これによって同じ文書の中であっても次のような指定が可能になります。

# mediumサイズが使われる
#+ATTR_HTML: :width 200px
[[file:./a.png]]

# largeサイズが使われる
#+ATTR_HTML: :width 640px
[[file:./a.png]]

# org2blog/wp-image-thumbnail-sizeで指定したサイズが使われる
[[file:./a.png]]
2018-07-21

2018夏の新番組

暑すぎる夏、皆様はいかがお過ごしでしょうか。

とりあえず1~3話くらい見ましたが、今のところ気になるのは次の作品あたりでしょうか。これ! というほどのものは今のところありません。

07/01(日) 07:30~ テレビ東京系 ミッキーマウスとロードレーサーズ
07/01(日) 22:00~ TOKYO MX ISLAND
○+ 07/01(日) 24:00~ TOKYO MX はねバド!
07/01(日) 24:30~ TOKYO MX バキ 死刑囚編
07/01(日) 25:00~ TOKYO MX じょしおちっ! ~2階から女の子が…降ってきた!?~
07/02(月) 25:35~ TOKYO MX One Room 2ndシーズン
○+ 07/02(月) 25:40~ TOKYO MX ヤマノススメ サードシーズン
07/03(火) 21:54~ TOKYO MX アイドルマスター シンデレラガールズ劇場 3rd SEASON
× 07/03(火) 23:00~ TOKYO MX 千銃士
07/03(火) 25:00~ TOKYO MX 焼肉店センゴク
07/03(火) 25:40~ TOKYO MX Back Street Girls
× 07/03(火) 25:59~ 日本テレビ 中間管理録 トネガワ
07/04(水) ~ デジタル配信 あるゾンビ少女の災難
07/05(木) 22:00~ TOKYO MX 異世界魔王と召喚少女の奴隷魔術
07/05(木) 22:30~ TOKYO MX すのはら荘の管理人さん
07/05(木) 23:00~ TOKYO MX BanG Dream! ガルパ☆ピコ
07/05(木) 24:00~ TOKYO MX 夢王国と眠れる100人の王子様 TVアニメシリーズ
07/05(木) 24:55~ フジテレビ BANANA FISH
07/05(木) 25:58~ TBS 七星のスバル
07/06(金) 21:54~ TOKYO MX 働くお兄さん!の2!
○+ 07/06(金) 22:00~ TOKYO MX ちおちゃんの通学路
× 07/06(金) 22:30~ TOKYO MX 殺戮の天使
07/06(金) 25:40~ TOKYO MX はるかなレシーブ
07/06(金) 28:00~ テレビ東京 闇芝居 第6期
07/07(土) 06:30~ TBS系 ゾイドワイルド
07/07(土) 24:00~ TOKYO MX はたらく細胞
× 07/07(土) 25:00~ TOKYO MX 音楽少女
07/07(土) 25:30~ TOKYO MX 百錬の覇王と聖約の戦乙女
07/08(日) 10:30~ TOKYO MX スペースバグ
○+ 07/08(日) 22:30~ TOKYO MX プラネット・ウィズ
△+ 07/08(日) 23:30~ TOKYO MX あそびあそばせ
07/09(月) 21:54~ TOKYO MX 兄に付ける薬はない!2-快把我哥帯走2-
07/09(月) 24:00~ TOKYO MX 悪偶 -天才人形-
07/09(月) 24:30~ TOKYO MX Phantom in the Twilight
× 07/09(月) 25:05~ TOKYO MX 邪神ちゃんドロップキック
07/09(月) 26:10~ テレビ東京 京都寺町三条のホームズ
× 07/10(火) 25:40~ テレビ東京 深夜!天才バカボン
07/11(水) 24:00~ TOKYO MX Free!-Dive to the Future-
07/11(水) 25:05~ TOKYO MX アンゴルモア~元寇合戦記~
07/12(木) 23:30~ TOKYO MX 天狼 -Sirius the Jaeger-
× 07/12(木) 25:28~ TBS 少女☆歌劇 レヴュー・スタァライト
○+ 07/13(金) 24:30~ TOKYO MX ハイスコアガール
× 07/13(金) 25:05~ TOKYO MX ロード オブ ヴァーミリオン -紅蓮の王-
07/13(金) 25:55~ TBS ハッピーシュガーライフ
07/13(金) 26:25~ TBS ぐらんぶる
07/14(土) 09:00~ NHK Eテレ おしりたんてい 新作
× 07/14(土) 23:30~ TOKYO MX ゆらぎ荘の幽奈さん
07/15(日) 07:00~ TOKYO MX おしえて魔法のペンデュラム ~リルリルフェアリル~
  07/22(日) 24:10~ NHK総合 つくもがみ貸します
07/22(日) 24:35~ NHK総合 進撃の巨人 Season3
2018-04-17

2018年春の新番組

うーん、今期は不作ですかね。数はあれどコレは!というものはなし。

  開始日時 チャネル タイトル
03/02(金) Netflix B:the Beginning
03/09(金) Netflix A.I.C.O. -Incarnation-
03/23(金) Netflix ソードガイ 装刀凱 The Animation
04/??(?) 中京テレビ 黒猫モンロヲ
04/01(日) 08:30 テレビ東京系 デュエル・マスターズ!
04/01(日) 09:00 フジテレビ系 ゲゲゲの鬼太郎 第6期
04/01(日) 24:00 TOKYO MX ウマ娘 プリティーダービー
04/01(日) 25:00 TOKYO MX 甘い懲罰~私は看守専用ペット~
04/01(日) 深夜 テレビ東京 フォーカード
04/02(月) 10:15 NHK Eテレ キャラとおたまじゃくし島
04/02(月) 17:55 テレビ東京系 ベイブレードバースト 超(ゼツ)
× 04/02(月) 18:25 テレビ東京系 パズドラ (新作)
04/02(月) 22:30 TOKYO MX かくりよの宿飯(やどめし)
04/02(月) 25:00 TOKYO MX 宇宙戦艦ティラミス
04/02(月) 25:35 テレビ東京 キャプテン翼 新作
04/02(月) 25:40 TOKYO MX 魔法少女 俺
× 04/03(火) 17:55 テレビ東京系 ガンダムビルドダイバーズ
04/03(火) 18:45 NHK Eテレ 少年アシベ GO!GO!ゴマちゃん 第3シリーズ
04/03(火) 23:00 TOKYO MX 東京喰種 トーキョーグール:re
04/03(火) 25:00 TOKYO MX 立花館To Lieあんぐる
04/03(火) 25:29 日本テレビ ルパン三世 PART5
04/03(火) 25:59 日本テレビ 3D彼女 リアルガール
04/04(水) 18:45 NHK Eテレ ねこねこ日本史 第3シリーズ
04/04(水) 19:25 NHK Eテレ カードキャプターさくら クリアカード編
04/04(水) 22:25 TOKYO MX ありすorありす
04/04(水) 23:30 TOKYO MX 重神機パンドーラ
04/04(水) 26:05 TOKYO MX 妖怪人間ベム-HUMANOID MONSTER BEM- & 俺たちゃ妖怪人間G
04/05(木) 18:25 テレビ東京系 アイカツフレンズ! (第3期)
04/05(木) 21:54 TOKYO MX ケッケロケー
04/05(木) 22:00 TOKYO MX 多田くんは恋をしない
04/05(木) 22:30 TOKYO MX 銀河英雄伝説 Die Neue These 邂逅
04/05(木) 23:30 TOKYO MX こみっくがーるず
04/05(木) 25:28 TBS メガロボクス
04/05(木) 25:58 TBS されど罪人は竜と踊る
04/06(金) 17:55 テレビ東京系 イナズマイレブン アレスの天秤
04/06(金) 18:20 NHK Eテレ あはれ!名作くん
04/06(金) 22:30 BSスカパー グラゼニ
04/06(金) 22:48 テレビ東京 テレビ野郎 ナナーナ
04/06(金) 24:30 TOKYO MX Lostorage conflated WIXOSS
04/06(金) 25:35 TOKYO MX 信長の忍び~姉川・石山篇~ (第3期)
04/06(金) 25:40 TOKYO MX ヒナまつり
04/06(金) 25:55 TBS 魔法少女サイト
04/07(土) 17:30 日本テレビ系 僕のヒーローアカデミア 第3期
04/07(土) 17:35 NHK Eテレ MAJOR(メジャー) 2nd
04/07(土) 23:25 Animax お前はまだグンマを知らない
04/07(土) 24:00 TOKYO MX ソードアート・オンライン オルタナティブ -ガンゲイル・オンライン-
04/07(土) 24:30 TOKYO MX PERSONA5(ペルソナ) the Animation
04/07(土) 25:00 TOKYO MX 鬼灯の冷徹 第弐期 その弐
04/07(土) 25:30 TOKYO MX LOST SONG
04/08(日) 07:00 テレビ東京系 こねこのチー ポンポンらー大旅行
04/08(日) 07:14 テレビ東京系 若おかみは小学生!
04/08(日) 08:30 フジテレビ レイトン ミステリー探偵社 ~カトリーのナゾトキファイル~
× 04/08(日) 10:00 テレビ東京系 キラッとプリ☆チャン
× 04/08(日) 11:30 TOKYO MX SNSポリス
04/08(日) 22:00 TOKYO MX ニル・アドミラリの天秤
04/08(日) 23:00 TOKYO MX あまんちゅ!~あどばんす~ (第2期)
× 04/08(日) 23:30 TOKYO MX Caligula -カリギュラ-
04/08(日) 24:10 NHK 総合 ピアノの森
04/08(日) 24:30 TOKYO MX 食戟のソーマ 餐ノ皿 -遠月列車篇-
04/08(日) 25:35 TOKYO MX デビルズライン
04/08(日) 25:35 テレビ東京 美男高校地球防衛部HAPPY KISS!
× 04/09(月) 19:00 TOKYO MX Cutie Honey Universe(キューティーハニー)
× 04/09(月) 19:30 TOKYO MX 実験品家族 -クリーチャーズ・ファミリー・デイズ-
04/09(月) 23:00 TOKYO MX ゴールデンカムイ
04/09(月) 24:30 TOKYO MX 蒼天の拳 REGENESIS
04/09(月) 25:10 TOKYO MX あっくんとカノジョ
04/09(月) 25:15 TOKYO MX 踏切時間
× 04/09(月) 25:20 TOKYO MX レディスポ
× 04/10(火) 24:30 TOKYO MX ハイスクールDxD HERO (第4期)
04/11(水) 22:00 TOKYO MX 鹿楓堂よついろ日和
× 04/11(水) 24:00 TOKYO MX ラストピリオド-終わりなき螺旋の物語-
04/11(水) 25:05 TOKYO MX Butlers~千年百年物語~
04/11(水) 25:35 TOKYO MX STEINS;GATE 0 -シュタインズ・ゲート ゼロ-
04/12(木) 24:00 TOKYO MX ひそねとまそたん
04/12(木) 24:55 フジテレビ ヲタクに恋は難しい
× 04/12(木) 25:05 TOKYO MX 奴隷区 The Animation
04/13(金) 12:00 Amazon PV 異世界居酒屋~古都アイテーリアの居酒屋のぶ~
04/13(金) 18:25 テレビ東京系 妖怪ウォッチ シャドウサイド
× 04/13(金) 22:30 TOKYO MX フルメタル・パニック!IV Invisible Victory
04/20(金) Netflix アグレッシブ烈子
2018-03-09

最近の自宅Bluetooth環境と2.4GHz帯

BluetoothのドングルというかUSBアダプタってどれを買ったら良いんでしょうね。サッパリ分かりません。とりあえずサンワサプライの2014年の品を買ってみました。

ELECOMので良いのかなと思ったけどAAC、apt-xに対応していないとかレビューにあったので回避。

  • Bluetooth4以降(マウスが4以降じゃないとダメなので)
  • apt-x対応
  • そんなに飛ばす必要は無いのでClass2

というわけで↓これになりました。

サンワサプライ Bluetooth 4.0 USBアダプタ(class2) MM-BTUD44

ついでにおすすめされるままにSoundPEATS Q30 Bluetooth イヤホンも買ってみました。問題なく再生されますね。音質も悪くない。遅延も少ない。Bluetoothのオーディオなんて遅延が酷すぎて使い物にならないと思っていたのだけど、このくらいであれば十分実用に耐えられます。これがapt-xの力なのだろうか。

とはいえ、デスクトップPCではaudio-technica デジタルワイヤレスヘッドホンシステム ATH-DWL3300+耳掛けヘッドホンを使っていてこちらの方が好きな音なのでQ30はタブレットで使うことにしました。XperiaZ2 Tabletはapt-x対応でした!

ちなみのこのオーテクのATH-DWL3300は2.4GHz帯を使っているのですが、Wi-Fiとすこぶる相性が悪い。2.4GHz帯のWi-Fiを使うとブツブツ音が途切れます。Wi-Fiの方もスピードが落ちるような。
両方のチャネルを手動で調整してATH-DWL3300は一番低い方の周波数に、無線LANルータは一番高い方の周波数に変更したら干渉しなくなりました。

他にも2.4GHz帯を使うものといえば:

  • Bluetooth
  • LogicoolのUnifyingレシーバ
  • LogicoolのUnifyingじゃないレシーバ

があってPCのUSBポートが三つも同じような物で塞がっていました。

Unifyingレシーバは今回Bluetooth4で置き換えられたのでお役御免。

先日寝そべり打ち用に買ったワイヤレスキーボードがLogicool製だったのですがUnifyingでもBluetoothでもないという。これはどうしようも無いかな……。打鍵感とコンパクトさと軽さで選んだので代わりはなかなか見つからなそう。

2018-03-08

さくらのレンタルサーバにGitWebを入れてスマホ対応とハイライト

さくらインターネットのレンタルサーバにGitWebを入れた。GitWebはいろいろパッとしないけれどレンタルサーバに入れるにはちょうど良いだろうと思ったので。

いや、実は大分前に入れていたのだけど使いづらいのであまり使っていなかった。

使いづらい点:

  • 見た目がパッとしない上にスマホ縦持ちだとかなり見づらい(画面が切り替わるたびにいちいちズーム調整したりスクロールしたりしながら見なければならない)
  • ソースコードのハイライトを有効にしていない

というわけで、入れ直してそのあたりを改善してみた。

gitのインストール

gitのインストール。基本的に最新のソースコードをダウンロードして展開、 gmakegmake install する。その際 gmake prefix=/gitインストール先 install とインストール先を指定する。(参考:さくらインターネットのレンタルサーバーへGitをソースコードからインストールする手順 | WPlogs)

gitwebの配置

gitwebは gitインストール先share/gitweb 以下にある。とりあえずコピーしてhttpサーバが見えるところに配置した。

  • /gitweb置き場/gitweb.cgi
  • /gitweb置き場/static/*

gitへのパスはビルドした時に gitweb.cgi に埋め込まれている。

gitwebの設定

/gitweb置き場/gitweb_config.perl を作る。

# 全gitリポジトリの置き場所
our $projectroot = "/gitリポジトリ置き場";
# プロジェクト一覧のデフォルトの表示順。最近変更した物優先
our $default_projects_order = "age";
# プロジェクトの所有者を非表示
our $omit_owner=1;
# UTF-8ではない場合のエンコーディング
our $fallback_encoding = 'cp932';
# サーバに /etc/mime.types が無いので作って指定(必要なら)
#our $mimetypes_file = "/gitweb置き場/mime.types";

# 見た目のカスタマイズ。モバイルデバイス(スマホ)対応
push @stylesheets, "gitweb-site.css";
our $site_html_head_string = '<meta name="viewport" content="width=device-width,initial-scale=1.0" />';

# ソースコードハイライト
$highlight_bin = "/highlightインストール先/bin/highlight";
$feature{'highlight'}{'default'} = [1];
push @stylesheets, "highlight.css"; #highlight --print-style -s <stylename>

gitwebのテーマ?……失敗

モバイルデバイス対応

スマホ(縦)でもそこそこ見られるようにcssを調整する。

/gitweb置き場/gitweb_config.perl に次の文を追加。

our $site_html_head_string = '<meta name="viewport" content="width=device-width,initial-scale=1.0" />';
push @stylesheets, "gitweb-site.css";

/gitweb置き場/gitweb-site.css を次のように作成。

/* page header,body,footer height */
/* (レイアウトが崩れるので) */
div.page_header {
    height: auto;
}
div.page_body {
    overflow: scroll;
}
div.page_footer {
    height: auto;
    overflow: auto;
}

/* search box width */
/* サーチボックスの幅が広すぎ */
input {
    max-width: 30%;
}

/* table vertical align */
/* (狭い画面幅だと文字の折り返しでセルの高さが高くなりがち。
   ファイル名やプロジェクト名部分など、中央に合わせた方が見た目が良い) */
td {
    vertical-align: middle;
}
table.object_header > tr > td {
    vertical-align: top;
}

/* narrow screen device */
/* (幅か狭いデバイス用の設定) */
@media screen and (max-width:480px){
    body { margin: 0; }
    td { word-wrap: break-word; }
    table { padding-left: 1px; padding-right: 1px;}
    /* source code */
    /* (ソースの文字を小さくする) */
    td.pre, div.pre, div.diff {
        font-size: 8px;
    }
    /* file list */
    /* (ファイル一覧のモード列とサイズ列を消す) */
    td.mode { display: none; font-size: 0; width: 0; padding: 0;}
    td.size { display: none; font-size: 0; width: 0; padding: 0;}
    /* project list */
    /* (プロジェクトリストの幅を画面に合わせ、description列を消し、
        その他の列の幅を指定する) */
    table.project_list {
        display: fixed;
        width: 100%;
    }
    table.project_list > tr {
        width: 100%;
    }
    table.project_list > tr > td:nth-child(1) {
        max-width: 150px;
    }
    table.project_list > tr > th:nth-child(2){display:none; width:0; padding:0;}
    table.project_list > tr > td:nth-child(2){display:none; width:0; padding:0;}
    table.project_list > tr > td:nth-child(3) { width: 4em;}
    table.project_list > tr > td:nth-child(4) { width: 6.5em;}
    /* shortlog */
    /* (shortlogのレイアウトを横に幅を取らないように) */
    div.title_text {
        padding: 4px;
    }
    div.log_link {
        float: none;
    }
    div.log_body {
        padding: 4px;
    }
    /* (shortlogテーブルの幅を画面に合わせて列の幅を調整) */
    table.shortlog {
        table-layout: fixed;
        width: 100%;
    }
    table.shortlog > tr{
        width: 100%;
    }
    table.shortlog > tr > td:nth-child(1) {width: 4em;}
    table.shortlog > tr > td:nth-child(2) {width: 20%;}
    table.shortlog > tr > td:nth-child(4) {width: 6.5em;}
    /* log */
    /* (logのコミット経過時間とコミットログとの間に改行を挟む。
        横に長くならないように) */
    div.header > a.title > span.age {
        width: 100%;
    }
    /* tags */
    /* (タグ一覧のテーブル幅を画面に合わせ、列の幅を調整) */
    table.tags {
        table-layout: fixed;
        width: 100%;
    }
    table.tags > tr{
        width: 100%;
    }
    table.tags > tr > td:nth-child(1) {width: 4em;}
    table.tags > tr > td:nth-child(4) {width: 2.5em;}
    table.tags > tr > td:nth-child(5) {width: 5em;}
    /* object header */
    /* (gitオブジェクトヘッダーテーブルの幅を画面に合わせ、列の幅を調整)*/
    table.object_header {
        table-layout: fixed;
        width: 100%;
    }
    table.object_header > tr {
        width: 100%;
    }
    table.object_header > tr > td:nth-child(1) {width: 4em;}
    table.object_header > tr > td:nth-child(3) {width: 5em;}
    /* history */
    /* (履歴一覧テーブルの幅を画面に合わせ、列の幅を調整)*/
    table.history {
        table-layout: fixed;
        width: 100%;
    }
    table.history > tr {
        width: 100%;
    }
    table.history > tr > td:nth-child(1) {width: 4em;}
    table.history > tr > td:nth-child(2) {width: 4em;}
    table.history > tr > td:nth-child(4) {width: 6.5em;}
}

/* link buttons */
/* (リンクの見た目をボタンにする) */
td.link > a,
div.page_nav > a,
div.log_link > a,
td.selflink > a {
    display: inline-block;
    background: #ffffff;
    padding: 2px;
    margin: 1px 1px;
    font-weight: bold;
    font-size: 11px;
    color: black;
    text-decoration: none;
    border-radius: 3px;
    border: 1px solid #e0e0e0;
}
td.link > a:visited,
div.page_nav > a:visited,
div.log_link > a:visited,
td.selflink > a:visited {
    color: black;
}

/* small buttons */
div.log_link > a {
    font-size: 70%;
}

/* log */
/* (ログのボタンの位置を調整) */
div.log_link {
    margin-top: -6px;
    padding: 0 0 4px 0;
    width: 150px;
}

/* expand anchor clickable area */
/* (ファイル名やプロジェクト名のリンクを押しやすくする) */
table.tree > tr > td.list
{
    padding: 0;
}
table.tree > tr > td.list > a,
table.project_list > tr > td > a.list
{
    display: block;
    padding: 0.4em 1em;
}

ボタンの間の区切り線(|)が邪魔なので取り除くために gitweb.cgi を修正する。CSSやJavaScriptでやるのは大変なのでCGIを直接書き換える。 gitweb.cgi 内の " | "' | ' の部分を $linksep に置き換え、変数 our $linksep = ""; を頭の方で定義しておく。 ただし、run_highlighterのところの " | " は置き換えてはダメだと思う。

一部のソースがダウンロードされてしまう問題(mime typeの調整)

一部のソースコードで blob を押しても表示されずダウンロードしてしまうので、見知らぬファイルは基本 text/plain として扱うものとする。

gitweb.cgisub blob_mimetype { 内を次のように変更。

        } else {
-               return 'application/octet-stream';
+               #return 'application/octet-stream';
+               return 'text/plain';
        }
 }

困る場合もあるかもしれないが、いちいち mime.types を追加していられないし Makefile のように拡張子が無い場合もある。

ソースコードのハイライト

ハイライトには André Simonhighlight を使用する。

ただし、さくらのレンタルサーバではg++のバージョンにより最新版はビルド出来なかった。試行錯誤の末、最終的に少し古いバージョンをビルドして済ませた。

Luaのインストール

highlightはLuaをライブラリとして使用するので、先にビルドする。

wget https://www.lua.org/ftp/lua-5.3.4.tar.gz
tar xf lua-5.3.4.tar.gz
cd lua-5.3.4
gmake freebsd
gmake install INSTALL_TOP=/luaインストール先

続いてhighlightのインストール……失敗

wget http://www.andre-simon.de/zip/highlight-3.42.tar.bz2
tar xf highlight-3.42.tar.bz2
cd highlight-3.42
gmake PREFIX=/highlightインストール先

エラー。 g++のオプションに -std=c++11 がついている。一部のソースコードでC++11の機能を使用しているので、対応コンパイラでないとビルド出来ない。 さくらのサーバに入ってるのはg++ 4.2.1(20070831)なのでc++11はおろか c++0xオプションすら使えない。 unique_ptrを使っている部分はauto_ptrで済むけれど、union内にstd::string入れているのはよく調査しないと無理。 最新のg++をインストールするのはさすがに無茶。

パッケージを利用出来ないか……失敗

ユーザーローカルなパッケージシステムを使う試みもあったようだ。

さくらのレンタルサーバ(スタンダード)でportsとpkgngを使って超簡単インストールツールを作ってみた – Qiita

sh -c 'bash -c "$(curl -fsSL https://raw.githubusercontent.com/bellflower2015/pspkg/master/setup.bash)"'

.cshrcに環境変数を設定するコードをセットして少し試してみる。

pspkg --search vim
Unknown modifier 't'

"/home/***/.pspkg/ports/Mk/bsd.port.mk", line 1043: Unknown directive
Unknown modifier 't'

Variable .CURDIR is recursive.
"/home/***/.pspkg/ports/Mk/bsd.port.subdir.mk", line 117: warning: "make -V _JAVA_VERSION_LIST_REGEXP USE_JAVA=1 -f /home/***/.pspkg/ports/Mk/bsd.port.mk" returned non-zero status
"/home/***/.pspkg/ports/Mk/bsd.port.mk", line 1043: Unknown directive
Unknown modifier 't'
...

うーん、エラー。makeがらみで動かなくなってるみたい。.pspkgのサイズも1GB以上ある。諦める。

highlightの古いバージョンを試す

いつからC++11前提になっているのか。

次のコミットからgcc4.7に移行し、C++11オプションが入った。

その直前のコミットでauto_ptrがunique_ptrへ置き換わっている。

となるとその直前のコミットか?

このバージョンならc++11オプションもunique_ptrもunion内std::stringも使っていない。

というわけで、 1fd00c2 のコミットでビルド。

git clone https://github.com/andre-simon/highlight.git
cd highlight
git checkout --forced 1fd00c2
cd highlight
gmake PREFIX=/highlightインストール先 conf_dir=/highlightインストール先/etc/highlight/ LUA_CFLAGS="-I/luaインストール先/include -I/boost展開先"  LUA_LIBS=/luaインストール先/lib/liblua.a LDFLAGS=
gmake PREFIX=/highlightインストール先 conf_dir=/highlightインストール先/etc/highlight/ LUA_CFLAGS="-I/luaインストール先/include -I/boost展開先"  LUA_LIBS=/luaインストール先/lib/liblua.a LDFLAGS= install

※boostは昔サーバに入れておいたboost_1_39_0を使った。xpressiveを使っているっぽい。インクルードファイルだけ必要なので展開して適当なところに置くだけで良い。

オプション 説明
PREFIX= highlightのインストール先
conf_dir= デフォルトは/etc/highlight固定なので明示的に指定
LUA_CFLAGS= luaの(ついでにboostの)インクルードパスを入れる
LUA_LIBS= luaのライブラリ(.a)ファイル
LDFLAGS= -ldl の指定がエラーになるので

※一部のパス(データ等へのパス)はプログラム内に埋め込まれるので注意。

テーマを選ぶ。

  • /highlightインストール先/bin/highlight -w でテーマ名一覧が出る。
  • 一部のテーマは highlight Theme-Samples にサンプルがある。

Fine-Blueにする。

gitwebのディレクトリに行き、次のコマンドを実行すると highlight.css が生成される。

/highlightインストール先/bin/highlight --print-style -s fine_blue

設定ファイルに次を追加。

$highlight_bin = "/highlightインストール先/bin/highlight";
$feature{'highlight'}{'default'} = [1];
push @stylesheets, "highlight.css";
2018-03-04

分割式泥よけの修理 Honjo H27-700N.Smooth(ジョイントタイプ)

先日後輪に木の枝を巻き込んで派手にひしゃげてしまって以来後ろの泥よけを取り外していたのですが、雨上がりなど路面が濡れていると背中やお尻に水で線が……。

というわけで泥よけを何とかしようと思ったのですが、私の自転車(スポルティーフ)についている泥よけはツーリング車にマッチするHonjoの泥よけ(フェンダー、マッドガード)。700C、細身のタイヤ用、亀甲加工ではないタイプ。これがなかなか売っているところが限られる代物なのですが、インターネットで検索して売っていそうな実店舗へ電話。在庫ありとのことでお店へ出向いて買ってきました。

この Honjo の H27 は通常タイプとジョイントタイプ(分割式泥よけ用)があります。分割式泥よけというのは輪行のために後輪側の泥よけが二つに分割出来るようになるものです。 私の自転車は元々買ったときはH27のジョイントタイプがついていて、数年乗った後にジョイント部分が壊れてお店に持って行ったところ、ジョイントタイプがないので通常タイプを切断して自分で加工して作ってくれと言われたという経緯があります。悪戦苦闘の末、最終的にステンレス製のジョイントを自作するに至るのですが、それはまた別の話。 なので通常タイプがあればいいやと思っていたのですが、ダメ元で聞いてみたところ分割式もありました。

購入したジョイントタイプの後ろ側をすでに車体についている前側へ接続してみるとピッタリ! 自作のなんちゃってジョイントとは比べものになりません。さすが本物です。

2018-03-04-honjo-h27-700n-joint-01.jpg 2018-03-04-honjo-h27-700n-joint-02.jpg 2018-03-04-honjo-h27-700n-joint-03.jpg 2018-03-04-honjo-h27-700n-joint-04.jpg 2018-03-04-honjo-h27-700n-joint-05.jpg 2018-03-04-honjo-h27-700n-joint-06.jpg 2018-03-04-honjo-h27-700n-joint-07.jpg 2018-03-04-honjo-h27-700n-joint-08.jpg 2018-03-04-honjo-h27-700n-joint-09.jpg 2018-03-04-honjo-h27-700n-joint-10.jpg 2018-03-04-honjo-h27-700n-joint-11.jpg 2018-03-04-honjo-h27-700n-joint-12.jpg 2018-03-04-honjo-h27-700n-joint-13.jpg 2018-03-04-honjo-h27-700n-joint-14.jpg 2018-03-04-honjo-h27-700n-joint-15.jpg

2018-01-22

2018冬の新番組

今期は今のところゆるキャン△ラーメン大好き小泉さんあたりがお気に入りです。宇宙よりも遠い場所も目を引きましたが今後の展開次第でしょうか。

1話印象 開始日時 チャネル タイトル
01/01(月) 20:00~ TOKYO MX アイドリッシュセブン
○+ 01/02(火) 23:00~ TOKYO MX 宇宙よりも遠い場所
01/04(木) 17:59~ TOKYO MX みっちりねこ(※月~金の帯放送)
○+ 01/04(木) 22:00~ TOKYO MX ラーメン大好き小泉さん
01/04(木) 23:30~ TOKYO MX ゆるキャン△
01/05(金) 21:54~ TOKYO MX 働くお兄さん!
01/05(金) 24:00~ TOKYO MX グランクレスト戦記
× 01/05(金) 25:05~ TOKYO MX 刀使ノ巫女
01/05(金) ~ Netflix DEVILMAN crybaby
01/06(土) 06:30~ TBS系 七つの大罪 戒めの復活
01/06(土) 07:00~ TBS系 新幹線変形ロボ シンカリオン THE ANIMATION
01/06(土) 09:30~ テレビ東京系 ポチっと発明 ピカちんキット
× 01/06(土) 22:00~ TOKYO MX サンリオ男子
× 01/06(土) 24:30~ TOKYO MX スロウスタート
× 01/06(土) 25:00~ TOKYO MX ポプテピピック
01/07(日) 07:30~ BSプレミアム カードキャプターさくら クリアカード編
01/07(日) 22:00~ TOKYO MX 伊藤潤二『コレクション』
× 01/07(日) 23:00~ TOKYO MX 学園ベビーシッターズ
01/07(日) 23:30~ TOKYO MX citrus(シトラス)
01/07(日) 24:00~ TOKYO MX 続 刀剣乱舞-花丸- (第2期)
01/07(日) 24:30~ TOKYO MX 刻刻
× 01/07(日) 25:00~ TOKYO MX 25歳の女子高生
01/07(日) 25:35~ TOKYO MX 三ツ星カラーズ
01/07(日) 25:35~ テレビ東京 銀魂 銀ノ魂篇
× 01/08(月) 23:00~ TOKYO MX からかい上手の高木さん
× 01/08(月) 24:00~ TOKYO MX バジリスク ~桜花忍法帖~
01/08(月) 24:30~ TOKYO MX りゅうおうのおしごと!
× 01/08(月) 25:05~ TOKYO MX まめねこ
× 01/08(月) 25:10~ TOKYO MX gdメン
01/08(月) 26:05~ テレビ東京 弱虫ペダル -GLORY LINE- (第4期)
01/09(火) 12:00~ dTV d松さん(仮)※おそ松さん オリジナルショートアニメ
01/09(火) 17:20~ NHK Eテレ うちのウッチョパス
01/09(火) 21:54~ TOKYO MX 怪獣娘~ウルトラ怪獣擬人化計画~ 第2期
01/09(火) 24:30~ TOKYO MX オーバーロードⅡ
01/09(火) 25:40~ TOKYO MX 一人之下2 the outcast 羅天大ショウ篇
01/09(火) 25:59~ 日本テレビ ちはやふる 秀歌撰
01/10(水) 22:30~ TOKYO MX ダメプリ ANIME CARAVAN
01/10(水) 23:30~ とちぎテレビ サクラノチカイ ~まろに☆え~る 東の飛鳥下野市をえーる!~
01/10(水) 24:00~ TOKYO MX ヴァイオレット・エヴァーガーデン
× 01/11(木) 22:30~ TOKYO MX メルヘン・メドヘン
× 01/11(木) 24:00~ TOKYO MX デスマーチからはじまる異世界狂想曲
01/11(木) 24:55~ フジテレビ 恋は雨上がりのように
01/11(木) 25:58~ TBS ミイラの飼い方
01/11(木) 26:28~ TBS だがしかし2
01/11(木) 26:43~ TBS たくのみ。
× 01/12(金) 22:00~ TOKYO MX 覇穹 封神演義
01/12(金) 22:30~ TOKYO MX ハクメイとミコチ
01/12(金) 24:30~ TOKYO MX 博多豚骨ラーメンズ
01/12(金) 25:55~ TBS BEATLESS
01/12(金) 26:40~ TBS キリングバイツ
01/13(土) 21:00~ TOKYO MX 銀の墓守り(ガーディアン) 第2期
× 01/13(土) 23:30~ TOKYO MX ダーリン・イン・ザ・フランキス
01/16(火) 25:35~ テレビ東京 斉木楠雄のΨ難 第2期
01/20(土) 他配信サイト多数 トミカハイパーレスキュー ドライブヘッド~機動救急警察~ 新シリーズ
01/27(土) 24:00~ TOKYO MX Fate EXTRA Last Encore
01/29(月) ~ YouTube 七つの美徳

ゆるキャン△良いですね。山に行きたくなっちゃいます。まぁ、冬のキャンプ場で本を読みたいとは思いませんけど。 中学生の頃にテントと寝袋を自転車に積んで友だちと出かけたことがあります。そのうち一回は目的地のキャンプ場で私が怪我をして救急車で麓の病院へ送られてあえなく中断したわけですが、まぁ、それは良いとして……。 大人になってからは一緒に行ってくれる人も居ませんし何より体力も気力もありません。 最近は公共交通機関で気軽に行ける山に登ったり、せいぜい山小屋に泊まるくらいです。 そういう所に行くとキャンプしている人も見かけるので自分もやってみたいなーと思います。 でもテント泊の登山なんてやったことありませんし、重い荷物を持って長時間歩けるものなのでしょうか。 場所によってはテントの貸し出しをやっているらしいですが。 涸沢カールなんて一度行ってみたいです。

2017-12-26

新しいtableのスタイル

なんとなく表(table)のCSSを変えてみた。

ポイントはセルの角、つまり縦線と横線が交差する点の色をどう制御するか。

表はHTML要素的には table > tbody > tr > td の順に重なっているわけだけど、基本的に手前である子孫要素(tdに近い側)が優先される。なので、セル(td)の区切り線の色を指定すると、それは表全体(table)の境界線よりも優先されてしまう。その結果表全体の境界線にセルの区切り線が食い込む形になってしまう。

そこで重要なのが境界線の指定が重なったときに何が優先されるかというルール。親要素であっても線の幅が太い方が優先される。同じ太さならスタイル(破線とか二重線とか)によって優先度が決められている。特に二重線(border-style: double)は使える。solidよりもdoubleのほうが優先されるからだ。その上二重線といっても1pxの太さならsolidと見た目は変わらない。

外側(親、祖先)の要素の太さやスタイルをより優先度が高い物に変えることによって、セル区切りの色が外にはみ出さないように出来る。

/* table style */
table{ border: 1px double #4472c4;}
  /* striped background color */
thead{ border: none; background-color: #4472c4; color: #ffffff;}
tbody>tr:nth-child(odd){background-color: #d9e1f2;}
  /* vertical line between colgroups */
colgroup{ border: none;}
colgroup+colgroup{ border: none; border-left: 2px double #81a0d7;}
  /* horizontal line between tbodys */
tbody{border: none;}
tbody+tbody { border-top: 2px double #81a0d7;}
  /* vertical line between columns  */
tr:nth-child(even) >td+td {border-left: 1px solid #d9e1f2;}
tr:nth-child(odd)>td+td, th+th {border-left: 1px solid #fff;}

テスト

0 1 2 3 4
a b c d e
f g h i j
k l m n o

ヘッダー無し

項目1 項目2
項目3 項目4

ヘッダー無し

項目1 項目2

ヘッダー無し

項目1 項目2
項目3 項目4
項目3 項目4

良くある奴

品名 価格
りんご 100
みかん 80
みかん 80
  180

列グループ

場所 最低 最高
東京 晴れ 晴れ 曇り -1 9
大阪 晴れ 晴れ 0 12
大阪 晴れ 晴れ 0 12
大阪 晴れ 晴れ 0 12
大阪 晴れ 晴れ 0 12
大阪 晴れ 晴れ 0 12
大阪 晴れ 晴れ 0 12