2017年4月23日日曜日

非常事態、パッケージ管理システムのDBが壊れた場合

ハッシュサム不適合な事態に陥った場合などです。

次のコマンドで復旧していましたし、できますが。

年に数回でるようならメモリー不良を疑ったほうがいいかと。
必ず memtest で検査しましょう。
Windowsのメモリーテストはなぜか甘い。
通過したからといってだいじょうぶではありません。

        sudo rm -r /var/lib/apt/lists
        sudo mkdir /var/lib/apt/lists /var/lib/apt/lists/partial
        sleep 2
        sudo apt update


2017年4月20日木曜日

AMD RADEONドライバのできに我慢しきれず。

16.04LTS でのAMD RADEONドライバのできに我慢しきれず。――( [AMD/ATI] Tobago PRO [Radeon R7 360 / R9 360 OEM] )です。――PPAの開発版/Dailyにしました。遅延、コマ落ち、ブロックノイズなどの再生不良に耐えきれなかったからです。


当方では著しい改善が見られています。だけれども非推奨ですね。朝と夕方でぜんぜん質が異なったりしますので、追いかけるのも大変なのです。日に2度は降ってきます。



なぜ入れてみたのか?! ですが、17.04ではとても円滑な動画再生と気がついたからです。
これまでPPA、それもドライバ関係は更新しないように、かなり我慢したのですが、改善がなくそれが16.04LTSの方針だと思う?!と仕方ありません。

LTSの意味が自分の中で消失した瞬間でした。

とはいえ、カーネルでも大差がでたりします。4.8、4.10、4.11などもテストで使っていますが以下が最も安定して速い組み合わせみたいです。CinnamonよりもMATEのほうが不具合が少ないですね。このように独自に調べることが多くて大変。


たぶん次の手順でいれたかと思います。


新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
#
sudo add-apt-repository ppa:oibaf/graphics-drivers
#
sudo apt update
sudo apt upgrade
#当方で安定しているカーネルとDesktop Environment
System:    Host: phantom Kernel: 4.4.0-78-generic x86_64 (64 bit)
Desktop: Cinnamon 3.4.1
Distro: Linux Mint 18.2 Sonya

安定している方はいれないほうがよいと思います。FHDレベルで使っていたら気がつかなかったと思いますが、4Kにしちゃうと遅延だのが目立つわけで、「RADEON最低だな(半分いいがかり、半分は正しい)」。

ppa:oibaf/graphics-drivers ですが、特にmesaで処理が違うようです。FHDにして描画するとまったく気がつかない遅延でも、4K(+Resample 60FPS + vdpau/vaapi)にするとはっきりわかります。そして、ときどき完璧になるのです。ひどい出来の場合は12時間前のドライバをローカルに保存していますので、ざくっと書き戻しています。


現在は改善されていますがW10のプロプライエタリドライバでも春になるまでは遅延していましたので、オープンソースのLinuxドライバの場合はじっくり待つって姿勢が大事なのかもしれません。


自分としてはとてもハッピーです。この水準でLTSなのか?? パーソナル利用については、LTSにこだわる必要がそんなにないのかなとも考えてしまいました。


※追記 2017年5月15日


5/11のupdate以降、動画再生が非常に円滑になりました。4KでのVDPAU遅延コマ落ちが激減しました。グラフィックボードの買い替えも視野においていたのですがそのまま行こうかと思います。


全角数字を半角数字に変換 perl/perl6

全角数字を半角数字にPerlで変換する。3例


たぶんこういうことかな、と。以下フォントによっては判別不能かもしれません。置換前は全角、置換後は半角の数字が指定してあります。

CTRL+ALT+T

#perl5 tr で単純に
perl5 -pe 'tr|[0-9]|[0-9]|'
#perl5 y オプション::sed互換なので歴史的というべきか。
perl5 -pe 'y|[0-9]|[0-9]|'
#perl6では、yオプションは廃止、trのみになる。
perl6 -pe 'tr|[0..9]|[0..9]|'

なれば、trを利用した書き方だけ覚えればいいのではないか。perl6では各種範囲指定も「..」と現代風に切り替わっていくみたいですね。


おまけ:全角数字とメタキャラクター


perl6はデフォルトでは、\dに日本語の全角数字がマッチする。このデフォルトが便利なのか便利でないのかはまだわからない。 「壱」「捌」といったものには流石にマッチしない。さて、うまい利用法はないものか。

ワンライナーであれば6と5を気分と用途に合わせて使い分ければいいのでよい利用方法がそのうち浮かぶかもしれない。 闇雲に置き換えても言葉の意味が正式名から俗称にかわる可能性もあるので行政文書などでは考えた上で使うべきですね。

行政に限らず、第二次を第2次と表記替えしたら、リジェクトされるケースもありますね。

例)perl6で全角数字を食わせてみる。

全角であっても数字はアンダースコアに置き換えるというワンライナー。
echo 5壱7 | perl6 -pe 's:g|\d|_|'

というデフォルト挙動は覚えておかないととんでもないことが起きるかもしれませんね。
抑止などは公式サイトをご覧ください。

2017年4月9日日曜日

指定範囲を抜き出すコマンド|シェル変数を受け取る perl

日本語ドキュメントの取り扱いが主ですが、用語と用語、行番号と用語などPerlに備わっている機能を使ってテキストファイルから行を抜き出すのに、こんな風に使っています。
sオプションでシェル変数を受け取ります。関数やスクリプトにする場合に覚えておくと便利です。Zsh/Bash共通でいけると思います。






新規にターミナル(端末)。ubuntu系は以下を同時押し。CTRL+ALT+T
#
使い方
perlrange 範囲始まりに含まれる行の単語  同じく終わりの行の単語



.bashrc などにぺったんする。

function perlrange () {
        # s オプションでシェル変数受け取れる。qw注意。
        # if [ $# -ge 1 ]; then
        if [ $# -eq 2 ]; then
                perl -nse "print if /$1/ .. /$2/"
           

        else
            echo 説明....

            echo 範囲A-Bを入力。Bが存在しなければ最後まで。
        fi
     }



余談

perl -ne 'print if 10 .. 12'
10行目から12行めから抜き出す。正規表現にしなければ$_行番号になります。

perl -ne 'print if 10 .. /マンゴージュース/'
10行目からマンゴージュースまで抜き出す。正規表現と行番号も組み合わせできます。
 
cd ~ 
ls | sort -r | perlrange Pic Desktop
なんて2行タイプするとイメージがつかめていいかもしれません。