2019年7月26日金曜日

PARCOに宇宙がやってきた

今日、浦和PARCOに行ったら、宇宙関連物の展示があった。
本物の宇宙服も展示されていた。
日本の宇宙開発の歴史や、月探査衛星かぐややISSのきぼうモジュールの模型も展示されていた。
実は先日、JAXAの施設の見学に行っていた。
ブログに書こうと思っていたのに、忘れていた。
PARCOに行って思い出した。今度、その記事を書こう。

Street view

今年の4月頃、某所を歩いているときに、Google Street View の車とすれ違った。
過去にもすれ違ったことがあるが、その時は高速道路上の車内だったので、すれ違った場所もわかりにくいし、仮に場所が解ったとしても自分を識別できるかどうかは疑問だったので、チェックすらしなかった。

今回は、狭い市街地の道路だったので、写っているかもしれないと思って、時々StreetViewをチェックしていた。
そして先日、その写真に更新されているのを発見した。
ズームすると、こんな感じ。
マスクをしているときだったので、顔はわからないが、えんじ色のNewBalance、普段着ている服、肩に掛けたウエストポーチは、間違いない。

2019年7月6日土曜日

水害から街を守れ!

温暖化の影響で、大気が持つエネルギーがどんどん増えている。そのため気象は凶暴化し、毎年のように大規模な豪雨と山火事が世界のどこかで発生している。

日本も例外ではない。海抜0m地帯に広がる首都圏の人口過密地帯は、洪水にも注意しないといけない。梅雨時期は特に。
洪水の防災施設として、埼玉には通称「春日部地下神殿(正式名称:首都圏外郭放水路の庄和排水機場)」と呼ばれる巨大な施設がある。
申し込めば見学することもできる。
見学コースは「立坑体験コース」「ポンプ堪能コース」「地下神殿コース」の3種類がある。機械好きの私としては、ポンプ堪能コースを選んだ。

ただし、これは人気がありなかなか取れない。
さらに、大雨が降れば見学は中止になり、しかも、中止になるとお金は戻ってこない。
逆に言えば、梅雨時期の今はリスクを恐れて、誰も予約しないので、自分は「晴れ男」であると自信のある者は、今こそ予約の時期だ。

先日、予約をして見学してきた。もちろん中止にはならなかった。

東武アーバンパークライン(旧:野田線)の南桜井駅から2kmちょいなので、Google Mapを見ながら歩いていった。
見学前の集合場所の隣には「操作室」と呼ばれる部屋がある。様々なTV番組や映画で、基地や司令室として使われているそうだ。未来的でカッチョいい。

色々説明を受けて、地下のポンプ室へ。
4機の巨大な排水ポンプが並んでいる。

1号ポンプのアップ。
「1号機」と書いてある部分に水車の回転軸がある。
水車はタービンエンジンで駆動する。水平方向に設置されたタービンエンジン(ターボシャフトエンジン)の出力軸から、傘歯車経由で垂直方向の回転にして、ギアで減速して水車を回す。
水車や水路は床の下なので、見えていない。
燃料は重油で、ある程度備蓄しているそうだ。

タービンエンジンは小型で出力が大きいが、大量の空気を吸い込み排出する。そのため、巨大な給排気ダクトがついている(奥に斜めに見えている銀色の部分)。
実はタービンエンジンは、このダクトの向こう側にあり、手前のクリーム色の構造物は、ギアや水車の軸が収まっている。
写真をよく見ればわかるが、斜めのダクトの奥に、もう一つ太いダクトがある。この2つで吸気と排気だろう。
そのため、最初の「1号機」と書かれているブロックは、ポンプシステムの一部でしかない。全体はその何倍も大きいのだ。

これは、4号機。
すべての排水ポンプの上に、採光用と思われる窓がある。
ちなみに、周りの赤いのは消火設備。

これを地上から見ると、こんな感じ。

地上には、水門を動かす装置もある。
ずらりと並んで、壮観だ。
機械なので色はどうでもいいと思うが、風化した大理石のようなクリーム色になっており、これらも神殿感を出している。

いよいよ地下神殿へ。
その入り口は、遺跡感がない。写真には写っていないが、その横ではスケボー少年達が遊んでいる。なんだか興ざめ。

地下に入って、まず目につくのは、この巨大な縦穴。
神殿というよりも、SF映画に出てくる巨大設備のようだ。
この季節でもひんやりとしていて、異世界感満点。
しかも、音がすごくカッチョいい。「ゴーン、ゴーン、ゴトーーン」という感じの、機械が低く唸るような、重厚な音が鳴り響いている。この巨大な構造物を見ながらその音を聞いていると、火星のテラフォーミング施設にでも来たような気分になる。
説明員にこの音について聞いてみた。地上のスケボーの音が巨大施設に響いてこのようなSF的な音になると話していた。
スケボー少年、素晴らしい演出じゃないか!ありがとう。

奥を見ると、こんな感じ。
個人情報保護の観点から、なるべく人が映らないように撮影したのだが、スケール感がまったくない。
そのため、そこにいた人に撮影してもらったのがこの写真。
柱の手前に立っているのが、身長189.5cmの私だ。

神殿感もあったが、巨大な施設はSF感もある。とても興味深い見学だった。

2019年7月5日金曜日

動画圧縮し直しスクリプトをまた直した

Ubuntuのインストールし直しで色々な作業をしているが、今年直したばかりの動画圧縮し直しスクリプトもまた直した。

ffmpegのaacのエンコーダが変わったようで、エンコーダの指定を変更する必要があった。
また、サイズの取得に失敗するときがあったので、サイズの取得方法を強化した。
ついでに、出力ファイルがすでに存在している場合、ファイル名の末尾に"-<数字>"を付けるようにした。
$ source-highlight --out-format=html -i ~/bin/toH264.sh
#!/bin/bash
SRCFILE=$1
DSTFILE=$2

if [ -z "$DSTFILE" ]; then
    BASENAME=$(basename $SRCFILE)
    DSTFILE=${BASENAME%.*}.mp4
fi

DIRNAME=$(dirname $DSTFILE)
BASENAME=$(basename $DSTFILE)
i=0
while [ -e "$DSTFILE" ]; do
    i=$(( i +1 ))
    DSTFILE=$DIRNAME/${BASENAME%.*}-${i}.mp4
done

#---------------------------------------------------------------#
#  Extract informations from source video.                      #
#---------------------------------------------------------------#
CREATION_TIME=""
ENCODER=""
videoFormat=""

while read s; do
    s=$(echo $s | sed -e "s/^ *//g");

    if [[ "$s" == creation_time\ :* ]]; then
        if [ -n "$CREATION_TIME" ]; then
            echo "creation_time duplicated. Discard candidate $CREATION_TIME"
        fi
        CREATION_TIME=$( echo $s | sed -e "s/^[ \t]*creation_time[ \t]\+:[ \t]\+//g" )
    fi

    if [[ "$s" == encoder\ :* ]]; then
        ENCODER=$( echo $s | sed -e "s/^[ \t]*encoder[ \t]\+:[ \t]\+//g" )
    fi

    if [[ "$s" == Stream\ *:\ Video:* ]]; then
        videoFormat=$( echo $s | sed -e "s/^[ \t]*Stream \+#.*: \+Video: \+//g" )
    fi
done < <( ffprobe ${SRCFILE} 2>&1 )


echo creation_time=$CREATION_TIME, ENCODER=$ENCODER, videoFormat=$videoFormat

#exit 0
#CREATION_TIME=$(ffprobe $SRCFILE 2>&1 | grep "creation_time" | head -n 1 | sed -e "s/[ \t]*creation_time[ \t]*:[ \t]*//g")

echo SRC: $SRCFILE
echo DST: $DSTFILE
if [ -z "$CREATION_TIME" ]; then
    echo "No \"creation_time\" metadata. use ctime."
    CREATION_TIME=$(stat "$SRCFILE" | grep "^Change:" | head -n 1 | sed -e "s/^Change:[ \t]*//g" | sed -e "s/\.[0-9]* +.*$//g")
fi
echo CERATION_TIME: \""$CREATION_TIME"\"

#---------------------------------------------------------------#
# Auto bitrate                                                  #
#   H.264には、エンコード品質を表すBPP(Bit Per Pixel)という     #
#   指標がある。                                                #
#   BPPを用いて、ビットレートは以下のように計算される。         #
#                                                               #
#                       BPP x fps x width x height              #
#     bitrate[kbps] = ------------------------------            #
#                                  1000                         #
#                                                               #
#   H.264のBPPは、動画の動きの速さと、品質で以下のように        #
#   決まっている。                                              #
#                |               品  質                         #
#                |---------+---------+---------+--------        #
#                |   最高  |   高    |   中    |   低           #
#     -----------+---------+---------+---------+--------        #
#       高  速   |  0.225  |  0.175  |  0.125  |  0.100         #
#       中  速   |  0.200  |  0.150  |  0.100  |  0.075         #
#       低  速   |  0.175  |  0.125  |  0.075  |  0.050         #
#                                                               #
#           高速: スポーツまたはミュージックビデオ              #
#           中速: 映画                                          #
#           低速: ナレータ(ニュースや演説など)                  #
#                                                               #
#---------------------------------------------------------------#
#videoFormat=$( ffprobe ${SRCFILE} 2>&1 | \
#               grep "Stream \+#[0-9]:[0-9]: \+Video: \+" | \
#              sed -e "s/^ \+Stream \+#[0-9]:[0-9]: \+Video: \+//g" );

#bpp="0.225"
bpp="0.125"
width_height=$(echo ${videoFormat} | sed -e 's/^.*, \([0-9]\+x[0-9]\+\), .*$/\1/g')
if [[ ! "$width_height" =~ ^[0-9]+x[0-9]+$ ]]; then
    width_height=$(echo ${videoFormat} | sed -e 's/^.*, \([0-9]\+x[0-9]\+\) \+\[.\+\], .*$/\1/g')
fi
if [[ ! "$width_height" =~ ^[0-9]+x[0-9]+$ ]]; then
    echo "Unknown video size." 1>&2
    exit 1
fi

width=$(echo ${width_height}  | sed -e 's/ *\([0-9]\+\)x[0-9]\+ *$/\1/g')
height=$(echo ${width_height} | sed -e 's/ *\+[0-9]\+x\([0-9]\+\) *$/\1/g')
fps=$(echo ${videoFormat}    | sed -e 's/^.*, \+\([0-9.]\+\) \+fps,.*$/\1/g')

if [ -z "$width" -o -z "$height" -o -z "$fps" ]; then
    echo "cann't get information for bitrate. Use 8192kbps"
    vBitrate=8192k
else 
    echo "bpp=$bpp, width=$width, height=$height, fps=$fps"
    vBitrate=$(echo "scale=0; $bpp * $width * $height * $fps / 1000" | bc)"k"
fi

echo "bitrate=${vBitrate}"
#exit 0

#---------------------------------------------------------------#
# Convert video format                                          #
#---------------------------------------------------------------#
ffmpeg -i $SRCFILE -nostdin -y -acodec aac -profile:a aac_low -b:a 128k -ar 44100 -ac 2 -vcodec libx264 -profile:v main -b:v ${vBitrate} -pix_fmt yuv420p -f mp4 -metadata "creation_time"="$CREATION_TIME" -metadata "encoder"="$ENCODER" $DSTFILE

# No audio
#ffmpeg -i $SRCFILE -nostdin -vcodec libx264 -profile:v main -b:v ${vBitrate} -pix_fmt yuv420p -f mp4 -metadata "creation_time"="$CREATION_TIME" -metadata "encoder"="$ENCODER" -map 0:0 $DSTFILE

touch -r ${SRCFILE} ${DSTFILE}
Ubuntu 18.04のffmpegのaacエンコーダ指定にしてしまったので、16.04で使うなら以前のスクリプトを参考に、最後の方をかきかえろ。

なんか最近、linux関連記事ばかり書いているな…

2019年6月30日日曜日

肉を食べて元気に

雨が多く、うんざりする。
気分を盛り上げるために、またHERO'S武蔵浦和でビフテキをべてきた。
リブロースがおすすめのようなので、今回はリブロースにした。ソースは「にんにくレモン醤油」にした。

ソースをかけた直後のジュージュー。

音だけでも気分が高揚する。
ビフテキは、やっぱ、ごちそうの王様だね。

2019年6月21日金曜日

Ubuntu 18.04 で無理やりNemo RabbitVCS

2019/10/25 新しい方法をまとめました。Ubuntu 18.04 で無理やりNemo RabbitVCS#2を参照。

今月に入って、母艦もノートPCもUbuntu18.04に入れ替えたので、Touchpad indicatorの設定し直しやNAS経由のプリンタサーバ設定をやり直している。

それ以前はノートPCではLubuntuを使っていたのだが、母艦はUbuntu16.04を使っていた。
Nautilusでは、CompactView(lsの表示に似たフォルダ表示)が使えないので、WebUpd8 team の Nemoと、そのRabbitVCS(言うならば、LinuxのTortoiseSVN)拡張を使っていた。

ノートPCも母艦もUbuntu18.04にしたので、またNemoを入れようとした。
しかし、Webupd8teamでは、18.04用のNemoを提供していないらしい。改めて調べ直すとUbuntuオフィシャルのやつを入れるそうだ。
やってみると、libcinamon-desktop4とかinstallされるが、Cinamonデスクトップ全部が入るわけではない。これならいいだろう。

ところが、nemo-rabbitvcsが入らない。っていうかオフィシャルには存在していないようだ。
なんてこったい。

NautilusではRabbitVCSが動くが、CompactViewがない。
NemoではCompactViewが動くが、RabbitVCSが動かない。

Nemoをデフォルトファイルマネージャにしようと思っていたのに、中途半端ならデフォルトとしては使えない。
なんとかならないかと、調べ始めた。

webUpd8teamのリポジトリから、無理やりnemo-rabbitvcsパッケージを得て、中を調べた。
以下のようにして、artful用のnemo-rabbitvcsのパッケージを取得する。
wget http://ppa.launchpad.net/webupd8team/nemo3/ubuntu/pool/main/n/nemo-rabbitvcs/nemo-rabbitvcs_3.6.0-1~webupd8~artful_all.deb

以下のようにして、パッケージのコントロール情報とファイルを展開する。
dpkg-deb -R nemo-rabbitvcs_3.6.0-1~webupd8~artful_all.deb artful
こんな感じに展開される。
$ tree artful/
artful/
├── DEBIAN
│   ├── control
│   └── md5sums
└── usr
    └── share
        ├── doc
        │   └── nemo-rabbitvcs
        │       ├── changelog.Debian.gz
        │       └── copyright
        └── nemo-python
            └── extensions
                └── RabbitVCS.py

中を見てみると、/usr/share/nemo-python/extensions/RabbitVCS.py を入れるだけだ。
これを然るべき場所にコピーするだけなら、手動でやってしまえばいい。難しいことではない。

必要な依存物が揃っているのなら、という条件がつくが...。

パッケージの依存物について見てみる。
$ dpkg-deb --info nemo-rabbitvcs_3.6.0-1~webupd8~artful_all.deb
 new Debian package, version 2.0.
 size 8582 bytes: control archive=665 bytes.
     592 バイト、   13 行      control              
     236 バイト、    3 行      md5sums              
 Package: nemo-rabbitvcs
 Version: 3.6.0-1~webupd8~artful
 Architecture: all
 Maintainer: Clement Lefebvre 
 Installed-Size: 35
 Depends: nemo (>= 1.1.2~), python-nemo (>= 1.0~), python-gi (>= 3.2.2~), rabbitvcs-core (>= 0.15)
 Section: devel
 Priority: optional
 Homepage: https://github.com/linuxmint/nemo-extensions
 Description: Nemo extension for RabbitVCS
  RabbitVCS is a set of graphical tools written to provide simple and
  straightforward access to the version control systems SVN (Subversion) and Git.
  This is the extension for the Nemo file manager (v1.1.2 or greater).
依存パッケージは、nemo, python-nemo, python-gi, rabbitvcs-core。

これらについて、install されているか見てみる。
$ dpkg -l nemo python-nemo python-gi rabbitvcs-core
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
||/ 名前           バージョン   アーキテクチ 説明
+++-==============-============-============-=================================
ii  nemo           3.6.5-1      amd64        File manager and graphical shell 
ii  python-gi      3.26.1-2ubun amd64        Python 2.x bindings for gobject-i
ii  rabbitvcs-core 0.16-1.1     all          Easy version control
dpkg-query: python-nemo に一致するパッケージが見つかりません
nemo, python-gi, rabbitvcs-coreは入っている(バージョンも問題ない)けど、python-nemoが入ってない。

このpython-nemoもwebUpd8teamのリポジトリにはある。それを取り出して同じように調べると、NemoをPythonで機能拡張するときに使うものだった。
これは、オフィシャルではnemo-pythonという名前でパッケージとして提供されている。
というわけで、オフィシャルのものをインストールする。
$ sudo apt install nemo-python
[sudo] xxxxxx のパスワード: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  gir1.2-nemo-3.0
以下のパッケージが新たにインストールされます:
  gir1.2-nemo-3.0 nemo-python
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
33.6 kB のアーカイブを取得する必要があります。
この操作後に追加で 259 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 gir1.2-nemo-3.0 amd64 3.6.5-1 [7,728 B]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 nemo-python amd64 3.6.0-1 [25.8 kB]
33.6 kB を 0秒 で取得しました (358 kB/s)
以前に未選択のパッケージ gir1.2-nemo-3.0 を選択しています。
(データベースを読み込んでいます ... 現在 951722 個のファイルとディレクトリがインストールされています。)
.../gir1.2-nemo-3.0_3.6.5-1_amd64.deb を展開する準備をしています ...
gir1.2-nemo-3.0 (3.6.5-1) を展開しています...
以前に未選択のパッケージ nemo-python を選択しています。
.../nemo-python_3.6.0-1_amd64.deb を展開する準備をしています ...
nemo-python (3.6.0-1) を展開しています...
gir1.2-nemo-3.0 (3.6.5-1) を設定しています ...
nemo-python (3.6.0-1) を設定しています ...
gir1.2-nemo-3.0も一緒に入った。
本来python-nemoというパッケージに依存しているのに、nemo-pythonをinstallしたので、dpkgの管理情報的には依存関係は満たされていない。
しかし、/usr/share/nemo-python/extensions/RabbitVCS.py を動作させるのに必要なものは、全部入ったはずだ。

この状態で、さっきartful/に展開した usr/share/nemo-python/extensions/RabbitVCS.py を、/からのパスにコピーする。
$ sudo cp -a artful/usr /

これで、Nemoを起動すると、RabbitVCSが使えるようになっている。
エンブレムが見えるかな?

無理やりnemo-rabbitvcsを動かしたけど、問題があるかもしれない。
大切なソースコードだ。やるなら、自己責任で。
なんかあっても私は責任をとらない。

2019/06/21午後 わかりにくい表現を直した。
2019/06/23 厳密にはmainとrestrictedで配布されるものだけがオフィシャルである。
nemoやnemo-pythonはuniverseなので、厳密にはオフィシャルではない。
add-apt-repositoryで後から追加したリポジトリではないという意味で、ここでは「オフィシャル」と言う言葉を使っている。
2019/06/29 "artful"とすべきところを"artiful"と書いていた。直した。
正しい英語にはartifulという単語はない。しかし現代語的なもので、art + beautiful 的な意味で使われる。私は、"Artful Aardvark"(技巧に富んだツチブタ) を何故か"Artiful Aardvark"(芸術的に美しいツチブタ)という意味でとらえていた。つまりtypoではなく、勘違いだった。
2019/10/25 この方法では、RabbitVCSのいくつかの機能が動かない。
新しい方法を「Ubuntu 18.04 で無理やりNemo RabbitVCS#2」に書いた。
そちらを参照せよ。

2019年6月13日木曜日

NASのプリンタサーバのSMB

先週、少し書いたけど、最近ノートPCのOSを、Ubuntu18.04に換えた。
OSを変えたので、あれこれ設定をし直さないといけない。

プリンタの設定は、いつも面倒だ。
こんなこともあろうかと、ブログに書いておいた記事がある。 それを見ながら作業をした。
gnome-session-flashbackだからか、プリンタ設定用のU/Iが見つからないので、CupsのWeb I/F(ブラウザから"localhost:631")を使った。

プリンタの接続プロトコルを指定するとき、どういうわけか"smb"がない。
なんで?無くなったの? …いやさすがに、それはないだろう。
何かのパッケージが足りないのか?
SMBプロトコル関連で、入れてないものを考えると… smbclient かな?

以前はcifsでマウントする前に、smbclientで接続できることを常に確認していたが、今回は/etc/fstabをbackupしていたので、Copybackして戻していた。
そのため、smbclientパッケージをインストールしていなかった。
試しに端末エミュレータから、
sudo apt install smbclient
で、インストールして、ブラウザでCupsに接続し直してみると、
ビンゴ。SMBが現れた。

2017年は、偶然に避けていた。いや、偶然ではなく、慎重だったのだろう。
プリンタの設定は、2012年にもやっているし、母艦での設定もやっているので、慣れてきていて、だんだんたるんできていたのかもしれない。
Linuxも便利になったものだ。

2019年6月7日金曜日

HERO'S武蔵浦和がいきなりオープン

武蔵浦和駅のマーレのレストラン街に、ステーキハウス「ヒーローズ武蔵浦和」が、6/6(木)オープンした。
つい先日までピザ屋だった場所だ。

オープン当日、夕方にお店の前を通ったとき、行列になっていて入るのを諦めた。
今日は雨なので、客足も遠のくと期待して、お昼に行ってみた。

1ポンド(≒453g)が有名のようだが、年齢のせいかすっかり食が細くなった。その量は食べられないだろう。
量よりも美味しいものを食べたい。
300gのサーロインステーキ(2,180円)を注文した。
ご飯とサラダの大盛りが無料で、オニオンスープはおかわり自由。
ソースは、5種類から選べる。さっぱり感の「和風ソース」にした。

大盛りサラダとスープが先に来た。
サラダを先に食べていると、ジュージュー音をたててサーロインステーキが来た。
写真は和風ソースをかけた状態。

1ポンドが有名だけど、1ポンドばかりじゃなく、ふつうの大きさのステーキもある。
小さいやつなら値段も手頃。駅からふらっと行って、軽く食べるのもありだ。

2019年6月2日日曜日

Ubuntu 18.04で、タッチパッドを自動禁止

キーボードを使っているとき、うっかりタッチパッドに触れて、イライラするときがある。
特にFolio13-2000は、タッチパッドが中央にあり、ホームポジションでは右手とタッチパッドが干渉しやすい。
マウスを接続しているときは、タッチパッドは不要だ。
とはいえ、マウスがないときは、タッチパッドが使えないと困る。
ということで、マウスの有無でタッチパッドを自動的にOFF/ONできるといい。
(恒久的にOFFにするなら、synclientを使えばいいだろう)

Touchpad-indicatorを使えば、これを簡単に行える。
その方法について書く。

Install方法
まずは、PPAの追加。
sudo apt-add-repository ppa:atareao/atareao
実行後、確認メッセージが表示される。Enterキーを押して、PPAの追加作業を続行する。

PPAが追加できれば、あとはupdateとinstallだ。
sudo apt update
sudo apt install touchpad-indicator
これで、Touchpad-indicatorが使えるようになる。

起動方法
ウチでは、Ubuntu18.04のデフォルトのDesktopではなく、"gnome-session-flashback"を使っている。
そのため、"gnome-session-flashback"での起動方法を書く。
install後に、メニューの「アクセサリー」の中に、"Touchpad Indicator"が作られている。

これをクリックすれば、Touchpad-indicatorが起動する。
パネル内のIndicator appletに、Touchpad-indicatorが加わる。
左クリックしてポップアップを表示させ、「設定」をクリックする。
そうすると、ダイアログが表示される。
(上記は、ついさっき取ったスクリーンショット。インストール直後&再起動前は、全部英語表示だったように記憶している)

一番上の「マウス接続時はタッチパッドを無効にする」のスイッチを「オン」にする。

つづいて、「一般的なオプション」タブを開いて、「自動起動」をオンにする。
この状態で、一旦ログアウトして、ログインし直すと、自動的にTouchpad-indicatorが起動し、マウスを接続するとタッチパッドが禁止(OFF)になる。


つい最近、LubuntuからUbuntuに変えた。
そうしたら、Touchpad-indicatorが自動で入ってなかった。
Lubuntuの頃には使っていたが、その時もinstall直後にうまく行かず、いつの間にか動くようになっているのを再発見して使うようになったので、やり方をまとめていなかった。
そのため、今回もう一度最初から調べ直した。またLubuntuだけでなくUbuntuでも使える方法だったので、メモ代わりにブログに書いた。
ここで使用しているPPAは、本家Launchpadで管理しているので、信用できると思う。

2019年5月29日水曜日

w3mでgoogle検索が使えない#2

w3mで、www.google.comに行って、"w3m"を検索した時のページをALT+Sで保存して、その内容を見てみた。

内容は、なぜかバイナリ。
$ hexdump -C search.txt | head
00000000  1f 8b 08 00 00 00 00 00  02 ff d4 58 e9 56 db 48  |...........X.V.H|
00000010  16 7e 15 b5 98 a1 ad c1  96 e5 1d 24 44 8e 59 12  |.~.........$D.Y.|
00000020  08 10 b6 40 e8 a4 d3 39  25 a9 24 15 d6 86 54 c2  |...@...9%.$...T.|
00000030  36 46 6f d0 f3 0c f3 94  f3 7f 6e 55 49 5e 20 30  |6Fo.......nUI^ 0|
00000040  7d e6 df c4 b1 29 dd aa  ba 75 97 ef 2e a5 ed 5f  |}....)...u....._|
00000050  9c d8 a6 d3 04 4b 3e 0d  83 9d 6d f6 2b 05 28 f2  |.....K>...m.+.(.|
00000060  4c f9 0e c9 f0 8c 91 b3  b3 1d 62 8a 24 db 47 69  |L.........b.$.Gi|
00000070  86 a9 29 5f 7f 7e df d8  94 2b 6a 1c 51 1c 01 b5  |..)_.~...+j.Q...|
00000080  49 42 e4 e1 ac 69 a5 28  72 48 e4 35 bd 38 f6 02  |IB...i.(rH.5.8..|
00000090  ec 35 5b 93 6a f8 23 a3  30 87 52 e7 87 1d 07 71  |.5[.j.#.0.R....q|
これは、圧縮データ?と思って、fileコマンドで確認すると、
$ file search.txt
search.txt: gzip compressed data, max compression
やっぱり、gzip圧縮データだ。

zcat してみると、HTML文が見えた。
$ zcat search.txt | head
<!doctype html><html lang="ja"><head><meta charset="UTF-8"><meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png"...(省略)
ただし、1行で書いてあって、非常に読みにくい。
sedを使って、'</a>'の後に改行を挿入して、<a>タグが1つの行になるようにした。
そうしておいて、'<a 'を含む行をgrepで取り出して、行頭から'<a 'の直前までを削除して、いくつかの行を見てみた。
(日本語がバケバケだったので、nkfも通した)

これは、ハイパーリンクとして使えるやつ。
<a href="/search?inlang=ja&amp;hl=ja&amp;gbv=1&amp;ie=UTF-8&amp;sa=G&amp;q=%E6%97%A5%E6%9C%AC%E8%AA%9E&stick=H4sIAAAAAAAAAOPgE-LQz9U3sDCrMlMCs4zjLYu0VDLKrfST83NyUpNLMvPz9Ivz00rKE4tSrRLLEjNzEpNyUhUy8xaxcj6bvvTZnDUvVs0DAFwBCY9IAAAA&amp;ved=2ahUKEwiUkrSZz8DiAhXEyosBHbkMDdEQmxMwBnoECAsQDA">
 <span class="XLloXe AP7Wnd">日本語</span>
</a>
(インデントを入れたり改行したり、少し整理している)
リンク先は、'/search'になっている。そこからリダイレクトする感じで目的のページに飛んでいくのだろう。
中は、<span>タグだけが入っている。

そして、これはハイパーリンクにならないやつ。
<a href="/url?q=http://w3m.sourceforge.net/index.ja.html&amp;sa=U&amp;ved=2ahUKEwiUkrSZz8DiAhXEyosBHbkMDdEQFjAIegQIBhAB&amp;usg=AOvVaw3hY1zSIhxgTLjnhFncoCW8">
 <div class="BNeawe vvjwJb AP7Wnd">W3m - SourceForge</div>
 <div class="BNeawe UPmit AP7Wnd">w3m.sourceforge.net</div>
</a>
リンク先は、'/url'で始まっていて異なるが、その後はよく似ている。同じようにリダイレクトするのだろう。
そう考えれば、この<a>には問題は無いのだろう。
他の違うところとしては、その中身が、<div>になっていて、しかも2つあることだ。

この辺が、ハイパーリンクにならない原因か?
とりあえず、今日はここまで。