2016年8月17日水曜日

Linux Mint 18 へのアップグレードは、2つの方法があります。17.xから18へ。

大事なことなので、書いておきます。大雑把にいえば表の通り。オプションは2つです。アップグレードしない(=17.xのまま使う)を含めると3つです。


2大アップグレード評価
A:17.3 OS起動状態から、直接アップグレードする。コマンドを複数叩く。 △ 時間長い。USB/DVD不要。推奨度低い。ISOダウンロード不要。ほぼ全ファイル置換の勢い。17.3のカーネルも残る(不要なら削除)。推奨度低い。
B:DVD/USBでブート。クリーンインストールして、必要な情報、設定を書き戻す。 ○ 結果的に多分だけど時間短い。基本的にクリーンインストールなので美しい。DVD/USBメディア作成が必要。ISOダウンロード必要。どちらかといえば推奨。
※好みは「私の好み」です。アップグレードしないことも含めて、検討されますように。私は前にしか進まない性格なので、迷わず18ですけれど。

このふたつです。前者はあまり推奨されていないようです。先日、A:を実行してみました。

更新作業中に、動画を複数同時再生しながらチェックしていたせいもあるんですが、3時間位かかりました。

B:の ほうが良かったかなと思います。B:はインストールできるのは確認できますので、バックアップと書き戻し作業(ソフトウェアセレクション含め)だけが問題になりますね。そのうち細部を確認してみます。

追記:B:やってみました。よく考えてみればこれは普通の方法ですね。皆さん実施している方法のような気がします。ドットファイルを書き戻したりしながら、元のカスタマイズ環境までもっていくというわけです。

A:をやってみてから、うまくなければ、B:でもいいかも。安定したクリーンな環境を手に入れるには、B:ですよね。どう考えても。 いずれにせよ。A:でもB:でもうまくいっています。


問題点、覚えているもの。


  • AMD fglrx が残ってしまった(Cinnamonがソフトウェアレンダリングでしか起動しなかった)。⇒apt remove fglrx* で削除。この問題は解決。
  • その他幾つか手動で直したのですが、覚えていません。イメージしていたものはパーフェクトな移行だったので、アレ、これならB:の方が時間も短くて済んでよかっただろうな、と考えたのは覚えています。

以下のリンクは必ず読んで実施したほうがいいと思います。めんどくさがらずに。

How to upgrade to Linux Mint 18



https://community.linuxmint.com/tutorial/view/2
https://community.linuxmint.com/tutorial/view/2316

SSDに関していえば、データ、全OS、複数世代のバックアップを常にとっていますので、仮に失敗してもすぐにもどせばいいんです。バックアップはしっかりとりましょう。

2016年7月13日水曜日

自然言語処理、かぼちゃ、めかぶ。楽しい。

日本語形態素解析


日本語形態素解析。いま、とても幸せです。実に楽しいです。子供の頃の自分の前にあったらと思います。笑)、せめて大学の時。16.04にはうまくcabochaが入らなかったので、ほぼ素の14.04にいれてみました。懲りずにリブートしてみたら、すんなりcabochaもmakeが通りましたね。特に何をしたというわけではないんですが。16.04LTSで使います。

導入したのは、以下の3つでそれぞれ2016-07-13時点最新版です。

  • mecab
  • cabocha
  • crf++

かぼちゃ。最高です。



インストール完了後の出発点でこのレベルなので、楽しくって仕方がないです。やりたいことは山ほどあるので。
         桜の-D      
            樹の-D    
            下には-----D
                屍体-D |
          《したい》が-D
          埋まっている!
EOS
                 -----D                                                          
              これは---D                                                          
            信じていい-D                                                          
          ことなんだよ。-----------------D                                        
                      何故---------------D                                        
              《なぜ》って、-------------D                                        
                          桜の-D         |                                        
                            花が-----D   |                                        
                        あんなにも---D   |                                        
                              見事に-D   |                                        
                            咲くなんて-D |                                        
                            信じられない-D                                        
                          ことじゃないか。

めかぶの場合

自分のやりたいことに対してはローレベル向けなので、かぼちゃのほうが使いやすいかも。 「なんだよ」が全部区切られてしまう。

桜      名詞,一般,*,*,*,*,桜,サクラ,サクラ,,
の      助詞,連体化,*,*,*,*,の,ノ,ノ,,
樹      名詞,一般,*,*,*,*,樹,キ,キ,,
の      助詞,連体化,*,*,*,*,の,ノ,ノ,,
下      名詞,一般,*,*,*,*,下,シタ,シタ,,
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ,,
は      助詞,係助詞,*,*,*,*,は,ハ,ワ,,
屍体    名詞,一般,*,*,*,*,屍体,シタイ,シタイ,,
が      助詞,格助詞,一般,*,*,*,が,ガ,ガ,,
埋まっ  動詞,自立,*,*,五段・ラ行,連用タ接続,埋まる,ウマッ,ウマッ,うまっ/埋っ/埋まっ,
て      助詞,接続助詞,*,*,*,*,て,テ,テ,,
いる    動詞,非自立,*,*,一段,基本形,いる,イル,イル,,
!      記号,一般,*,*,*,*,!,!,!,,
EOS
       記号,空白,*,*,*,*, , , ,,
これ    名詞,代名詞,一般,*,*,*,これ,コレ,コレ,,
は      助詞,係助詞,*,*,*,*,は,ハ,ワ,,
信じ    動詞,自立,*,*,一段,連用形,信じる,シンジ,シンジ,しんじ/信/信じ,
て      助詞,接続助詞,*,*,*,*,て,テ,テ,,
いい    動詞,自立,*,*,五段・ワ行促音便,連用形,いう,イイ,イイ,いい/云い/言い/謂い,
こと    名詞,非自立,一般,*,*,*,こと,コト,コト,,
な      助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ,,
ん      名詞,非自立,一般,*,*,*,ん,ン,ン,,
だ      助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ,,
よ      助詞,終助詞,*,*,*,*,よ,ヨ,ヨ,,
。      記号,句点,*,*,*,*,。,。,。,,
何故    副詞,助詞類接続,*,*,*,*,何故,ナゼ,ナゼ,,
って    助詞,格助詞,連語,*,*,*,って,ッテ,ッテ,,
、      記号,読点,*,*,*,*,、,、,、,,
桜      名詞,一般,*,*,*,*,桜,サクラ,サクラ,,
の      助詞,連体化,*,*,*,*,の,ノ,ノ,,
花      名詞,一般,*,*,*,*,花,ハナ,ハナ,,
が      助詞,格助詞,一般,*,*,*,が,ガ,ガ,,
あんなに        副詞,一般,*,*,*,*,あんなに,アンナニ,アンナニ,,

桜の樹の下には/梶井基次郎 青空文庫から貼り付けてみました。 

インストールメモ


UTF-8オプション明示指定で./configure 

http://kumagonjp2.blog.fc2.com/blog-entry-82.html 

makeした順番は、mecab 、crf++ 、cabocha


2016年7月7日木曜日

Grub2をめぐるあれこれ。テーマ、背景、フォントなどを考えてみる

Grubと戯れるという意味のない日常

だらだら、と。Linux運用上、[不必要なこと]を述べていきます。まず、Debian/ubuntuなどのデフォルトブートメニューの「四角の罫を抜きたい」、そう思い立ちました。


こういう風に、素朴にしたかっただけなんですが、シンプルな方法に至るまでが思いの外めんどくさかったという記録です。わかってしまえば簡単でした。現在はこのように表示されます。
たとえば、moebuntuさん、TOYさんの絵を使わせてもらってイメージを作ります。だいたいこんな風になるというのを下に示します。(ピースサインの女の子の壁紙 イラストの作者:TOY さん http://moebuntu.blog48.fc2.com/)

手抜きなので、実際のブートメニューの絵ではありませんが、こんなかんじです。下にヘルプ。自作テーマを利用すれば絵の中心オブジェクト(たとえば人物)の位置に応じて、メニュー位置(文字)を調整したりができるようになります。私は壁紙は原則使わない #000233 な生活25年ですが、ブートメニューの一瞬だけはまぁまぁ印象的にしたい派です。

枠線がはいらないのでシンプルで、地のイラストが引き立つというのがミソです。また可能な限りシステムファイルをいじらないのでカスタマイズに起因するgrubの不調可能性を極力排除します。


本論


昨日失敗して気を取り直して、Grubが生成に使うもとになるフォントを再生成しました。今日は、14.04LTSです。うまく行きました。フォント名を間違えていたのかもしれないですね。ともかく、狙いどおりです。目標は、

  • 基本的に、/etc配下のファイルは可能な限り書き換えない。
  • できれば自作テーマも使いたくない。
  • デフォルト表示から文字だけのシンプルなものに。罫線消したい。
  • 日本語の文字列表示も化けさせたくない。
  • 日本語の文字の表示間隔もずらしたくない。適正なものに。
  • 背景画像は自由に設定するので、置き場所は、/home配下に。


です。これらの条件は、すべてクリアできました。今日は目視しつつ作業。

ただ新たな、問題がひとつ。空グリフになっただけなのでレイアウトは変わらないと思ったのですが何か微妙に、ほんと微妙に変わっている気がする。気のせいかも。


結果、ほぼ、理想的なブートメニュー及びその更新環境が完成しました。 メンテナー提供ファイルが変わっても基本的に常にそれを受け入れてもだいじょうぶ。あまり凝ったことをしても仕方ない。

特に、moebuntuな方々におすすめします。debian系のデフォルトから罫線抜いたほうが、絵が引き立つと思いませんか。

キャプチャイメージは、 これです。

背景画像のフォーマット種類と色数など

3年前は覚えていませんが、現在Grub2はメジャーフォーマットにはフルに対応している気がします。表示できなかった絵はありません。といっても、GIMPで通常オプションで出力したフォーマットのみしか使っていませんが。それで間に合うので自分の中ではフルです。

サイズは、10MBを超えていても特に問題なし。習慣的には256色に減色したりもしますが、現代では意味ないですね。たぶん。 GIMPでPNGってのが最近のお決まりの生成コースです。だいたいFHD全色で2MB程度。10MBというのは、4K用に作成したものでチート(システムリクエストでリブートする手順のメモ行とか、SOS時に思い出したいメモなど)を書き込んだ「絵」です。その絵を表示させることで知らないうちに刷り込むというわけで。わはは。

Grub用フォントを生成する

まず、Grub用フォントをアンダーコントロールに。
新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

サンプル=UbuntuMonoからサイズ24のフォントを作る場合
grub-mkfont --verbose --range=0x0-0x7f --size=24 --output=./ubuntumono-b24.pf2 /usr/share/fonts/truetype/ubuntu-font-family/UbuntuMono-B.ttf

ubuntu/mintなら、フォントの配置、フォント名がこれで合致しますので、
たとえば、デスクトップでこのコマンドを発行すると、

ubuntumono-b24.pf2

という、Grub用フォントができます。指定しているオリジナルはおおざっぱにいえば日本語部分を含んでいないフォントです。いい忘れましたが、GrubのフォントはTTFやOTFではないのです。それが前提になります。

上記コマンドを発行する上でのポイント、方針は、

  • アスキー文字だけにして、それ以外は空にします。結果、罫線が化けないし、既存テーマのままでよい。半分嘘です。この作戦はフォントサイズを選ぶ上、ロケールが日本語だとうまくないです。結局、自分のウォンツから、この段階でThemeそのものをあらたに作成しました。笑)*1
  • フォントはモノ(MONO)を選んだほううがいいと思います。いわゆる等幅アルファベットです。罫がずれようが何しようが気にならないひとは、いろいろ試してみてください。今、最終的に自分が使っているのは、Takaoから一部グリフを抜いたGrub用に特化したフォントです。

余談:注*1)デフォルトのテーマのメニューエリアがボックスになっていまして、そこが文字罫線だったりしますね。 この存在がばけなくても私の美意識上許せないので消したい。デフォルトはあまり弄りたくない。そこで

  • 既存フォントそのものから、グリフを削除して、それから生成。--->フォント存在しない印がでる
  • 既存フォントそのもののグリフを空白に置き換えて、それから生成。--->これも意図通りにならず。※指定フォントを間違えていただけで考えた手順に間違えはなかったです。
よって、めんどくさいので、安直にGrub2テーマそのものを作成しました。罫線/Boxの抑止。文字と背景画像のみ。メニュー配置が右側へ65%ふってある、程度です。いうほどわがままさんじゃありません。
Grubをいじって思うことは、gfxmode 24bitだろうがなんだろうが、フォントのレンダリングが汚いことには代わりはないので、こだわっても仕方ないな、ということですかね。Windowsのブートマネージャでも同じだし、「絵」は十分綺麗に表示されるので、ま、いいか。デフォルトでよいならそれが一番です。

テーマ作り終えてから画像検索でググッて気がついたのですが、ディストリビューションによってはデフォルトのブートメニュでお気に入りになりそうなのがありました。そこから流用すれば速かったかも。Fedra系ですが。

また、Gnome-lookあたりのテーマにしても、けっきょくただ背景画像を変えた「だけ」、フォントを変えた「だけ」が「大半」なのでちょっとおもしろくないです。burgなら設定も含め自由度が少し高いので使っていたのですが、実質ディスコンなのであれ。カスタム支援としての、Grub-Customizerは昔はお世話になったけれど、今は不要。むしろないほうがいいかもです。一時よりエラーが減ったもののまだエラーが多いので信頼に欠ける気が若干します。そんなかんじ。仲のいい友達になら、使うな、と助言します。友達以外なら紹介はする、2枚舌。もっともPPAですしね。そのあたり注意が必要です。

長い割り込みでしたが、話はフォント生成にもどります。
テストする場合は、黄色の3箇所だけ書き換えて試してみてください(冒頭に戻る)。この段階ではGrubに組み込むわけではありません。生成だけですからブートしなくなるなんてことはないです。一旦生成したら、あとはお好きなように。著しく小さなサイズのフォントです。アルファベットプラスアルファ以外は表示できないです。逆にみればそれらは空白なのでいいのです。(困ることもあります。)

サイズは、16、20、24と3種類ぐらいあるといいかも。まとめて作っておけばいいので、数字をかえてみるとよいです。そして、

などといいつつ自分用は、これだけ用意しています。わはは。
ubuntumono-b16.pf2  ubuntumono-b24.pf2 ubuntumono-b30.pf2  ubuntumono-b48.pf2 ubuntumono-b20.pf2  ubuntumono-b26.pf2 ubuntumono-b32.pf2  ubuntumono-b64.pf2
/boot/grub/fonts にでもコピーしておくといいかも。自分はそうしています。パーミッションは644。

#実行例
grub-mkfont --verbose --range=0x0-0x7f --size=24 --output=./ubuntumono-b24.pf2 /usr/share/fonts/truetype/ubuntu-font-family/UbuntuMono-B.ttf 
Unknown gsub font feature 0x61667263 (afrc)
 
Font name: Ubuntu Mono Bold 24
Max width: 12
Max height: 21
Font ascent: 17
Font descent: 4
Number of glyph: 100


2016年7月6日水曜日

ハードウェアアクセラレーションを有効にする。 Linux MINT 18 ubuntu 16.04LTS

Linux MINT 18、ubuntu 16.04LTS でVDPAU(ハードウェア再生支援)を有効にする:3日後削除


当方の今日の環境:AMD RADEON R7 360

末尾参照。VA-APIとの比較


試した範囲でいえば、VDPAU>VA-APIです。後者は厳しい処理で目視でわかる程度にコマ落ちします。したがって、当面、mesa-vdpau ドライバを導入します。HW支援が選べるアプリケーションでは、VDPAUを明示的に指定して用いることにしました。

追記:削除しました。テストしている範囲ではうまくいっていました。
mint 18で試して、メインのubuntu16.04にも導入し、 メインから結局削除。mint18には残しておきます。


当方の環境ではデフォルト状態がベストということなのかなと。悔しくなんかないんだからね。テストしたのはmpvのみです。多少のCPU負荷に目をつぶれば、HWアクセラレーションを効かせない設定にしておけばいいだけともいいますね。


これまで通り、HW支援を効かせたい場合はデフォルトでVA-APIを選択することにしました。実験環境のmint18の方ではVDPAUでしばらく試行錯誤しながら様子をみてみることにしました。よくよく考えてみれば、VDPAUの必要性はとりあえずないので、デフォルトの状態が一番なのかな、と。

ただし、ffmpegでは「Supported hwaccels: vdpau」なのが少々。

ドライバを導入します。

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

sudo apt-get install mesa-vdpau-drivers vdpauinfo


再起動

※ドライバの削除は次のコマンドでよいと思います(私は結局削除しました)

sudo apt remove mesa-vdpau-drivers vdpau-driver-all vdpauinfo
テストします。
mpv --vo=vaapi *OP*
mpv --vo=vdpau *OP*
mpv --vo=opengl *OP*
mpv --vo=opengl-hq *OP*
mpv --vo=xv *OP*

*OP*というのは、x264ファイルです。数秒動画だとCPU負荷がわからないので1分以上のファイルを選んだほうがいいですね。いろいろな種類のファイルも試したほうがいいかもしれません。コンテナ、コーデックなど変えてみたりしながら。
mpvのconfigの設定は済ませていることが前提です。リンク先サンプルはHW支援をオフにしています。hwdec=vdpauなどに書き換えて使ってみてください。


定義ファイル作成がうざったいなら、コマンドラインで指定してテストでもよいです。こんなかんじ。1行です。

mpv --vo=opengl --hwdec=vdpau --hwdec-codecs=h264,vc1,wmv3,mpeg1video,mpeg2video *OP*

H.264のテストなので、以下がシンプルで等価。たぶん。
mpv --vo=opengl --hwdec=vdpau --hwdec-codecs=h264 *OP*



テストします。 (configに設定を書いています)
mpv *OP*
   cplayer: Auto-loading profile 'vo.opengl-hq'
   cplayer: Playing: DOPx264.mp4
   cplayer:  (+) Video --vid=1 (*) (h264)
   cplayer:  (+) Audio --aid=1 --alang=jpn (*) (flac)
   cplayer: AO: [alsa] 48000Hz stereo 2ch s32
        vd: Using hardware decoding (vdpau).
   cplayer: VO: [opengl-hq] 1920x1080 vdpau
  term-msg: FPS: 23.976
statusline: AV: 00:01:31.000 / 00:01:31.009 (99%) A-V:  0.000 Cache:  0s+0KB
[-----------------------------------------------------------------------------------------------+-]
   cplayer:
   cplayer:
   cplayer: Exiting... (End of file)

目視レベルで、支援なしと比較して、CPU稼働率はけっこう少なくなります。効果あり。いまのところ安定しています。

サポートされているコーデックをいまさら確認します。グラフィックカードにも依存します。以前のubuntuであればもう少し設定がめんどうでした。サポートdecodeerが表示されている=vdpauが有効。(有効でない場合は、数行のエラーメッセージで終わりです。昔と違って何も設定はいらないのでしょう。)

vdpauinfo

display: :0   screen: 0
API version: 1
Information string: G3DVL VDPAU Driver Shared Library version 1.0

Video surface:

name   width height types
-------------------------------------------
420    16384 16384  NV12 YV12
422    16384 16384  UYVY YUYV
444    16384 16384  Y8U8V8A8 V8U8Y8A8

Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
MPEG1                          --- not supported ---
MPEG2_SIMPLE                    3  9216  2048  1152
MPEG2_MAIN                      3  9216  2048  1152
H264_BASELINE                  41  9216  2048  1152
H264_MAIN                      41  9216  2048  1152
H264_HIGH                      41  9216  2048  1152
VC1_SIMPLE                      1  9216  2048  1152
VC1_MAIN                        2  9216  2048  1152
VC1_ADVANCED                    4  9216  2048  1152
MPEG4_PART2_SP                  3  9216  2048  1152
MPEG4_PART2_ASP                 5  9216  2048  1152

DIVX4_QMOBILE                  --- not supported ---
DIVX4_MOBILE                   --- not supported ---
DIVX4_HOME_THEATER             --- not supported ---
DIVX4_HD_1080P                 --- not supported ---
DIVX5_QMOBILE                  --- not supported ---
DIVX5_MOBILE                   --- not supported ---
DIVX5_HOME_THEATER             --- not supported ---
DIVX5_HD_1080P                 --- not supported ---
H264_CONSTRAINED_BASELINE      --- not supported ---
H264_EXTENDED                  --- not supported ---
H264_PROGRESSIVE_HIGH          --- not supported ---
H264_CONSTRAINED_HIGH          --- not supported ---
H264_HIGH_444_PREDICTIVE       --- not supported ---
HEVC_MAIN                      --- not supported ---
HEVC_MAIN_10                   --- not supported ---
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   --- not supported ---
HEVC_MAIN_444                  --- not supported ---

Output surface:

name              width height nat types
----------------------------------------------------
B8G8R8A8         16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8
R8G8B8A8         16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8
R10G10B10A2      16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8
B10G10R10A2      16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8

Bitmap surface:

name              width height
------------------------------
B8G8R8A8         16384 16384
R8G8B8A8         16384 16384
R10G10B10A2      16384 16384
B10G10R10A2      16384 16384
A8               16384 16384

Video mixer:

feature name                    sup
------------------------------------
DEINTERLACE_TEMPORAL             y
DEINTERLACE_TEMPORAL_SPATIAL     -
INVERSE_TELECINE                 -
NOISE_REDUCTION                  y
SHARPNESS                        y
LUMA_KEY                         -
HIGH QUALITY SCALING - L1        -
HIGH QUALITY SCALING - L2        -
HIGH QUALITY SCALING - L3        -
HIGH QUALITY SCALING - L4        -
HIGH QUALITY SCALING - L5        -
HIGH QUALITY SCALING - L6        -
HIGH QUALITY SCALING - L7        -
HIGH QUALITY SCALING - L8        -
HIGH QUALITY SCALING - L9        -

parameter name                  sup      min      max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH              y        48     2048
VIDEO_SURFACE_HEIGHT             y        48     1152
CHROMA_TYPE                      y
LAYERS                           y         0        4

attribute name                  sup      min      max
-----------------------------------------------------
BACKGROUND_COLOR                 y
CSC_MATRIX                       y
NOISE_REDUCTION_LEVEL            y      0.00     1.00
SHARPNESS_LEVEL                  y     -1.00     1.00
LUMA_KEY_MIN_LUMA                y
LUMA_KEY_MAX_LUMA                y

AMD RADEON R7 360

(2016-06-01)。今回のドライバ(VDPAU MESA)を組み込まないデフォルト状態では、次のようになっていました。VA-APIです。ubuntu16.04LTSです。 mint18がリリースされる前ですから、厳密な比較ではありません。
libva info: VA-API version 0.39.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
   cplayer: AO: [pulse] 48000Hz 5.1 6ch s32
        vd: Using hardware decoding (vaapi).
   cplayer: VO: [opengl-hq] 1920x1080 vaapi
  term-msg: FPS: 23.976
VDPAU関連を組み込まない状態:VAAPIが有効でHWアクセルが効いているかんじがします。ffmpegでは効かない(ffmpegはvdpau必須)。
-sudo apt install libvdpau-va-gl1

2016年6月30日木曜日

emacs:ターミナルがちゃんと色が使える状態になっているのか。

emacsをターミナルでつかいはじめたので色が気になる……

なんちゃってemacs(emacs互換のあれこれ)から、本物に少しだけ移行をはじめました。
最初の疑問。――256色ちゃんと使えているのだろうか?!

使えています。



新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

8色以上がつかえているかどうかを検査するプログラムをダウンロードします。Perlのスクリプトです。256色のチェックです。

wget ftp://ftp.fau.de/netbsd/NetBSD-release-6/xsrc/external/mit/xterm/dist/vttests/256colors2.pl
 
githubのほうがいいかも。 
wget https://github.com/zhengkai/config/raw/master/script/256colors2.pl
実行します。上の見本キャプチャのようになればOKです。
perl ./256colors2.pl

ターミナル上のemacsでの確認 : スクロールしたら最後が256番。

emacs -nw

M-x list-colors-display


ubuntu/Linux固有ではありません。

2016年6月15日水曜日

Gnomeのキー操作をグローバルにEmacs風にする

キーバインドの研究シリーズ

Gnomeのキー操作をグローバルにEmacs風にする。

https://askubuntu.com/questions/124815/how-do-i-enable-emacs-keybindings-in-apps-such-as-google-chrome/233539

CTRL+ALT+T

gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"

#デフォルトに戻す。
gsettings set org.gnome.desktop.interface gtk-key-theme "Default"


一部のCinnamon(mint本家)ではこれだった?!みたい。
gsettings set org.cinnamon.desktop.interface gtk-key-theme "Emacs"
# use emacs Emacs風にする。

gsettings set org.cinnamon.desktop.interface gtk-key-theme "Default"
# use default デフォルトに戻す

結局戻しました。emacsな好きすぎる人にはいいかもしれません。
スクショのキーまで変わってしまうのはいまさらきついです。 想定外でした。


gedit のキーバインドのカストマイズだけにとどめておきます。

http://d.hatena.ne.jp/msh_trumpet/20061217/1166366465

2016年6月12日日曜日

Perl5からPerl6に移行。たまにマルチバイト文字

Perl5からPerl6に既存資産を移行しようとしてはまったところ。

既存資産といってもへなちょこ、へっぽこスクリプトの類です。

echo あいうえお | perl6 -ne 's/^(.**0..3).*$/$0/, print $0 '
#3文字分行頭から取得 substrのほうが楽ですね。そういう話じゃなくて。
#
これに限らず、これまで{1,9}みたいに指定し量指定子を書くと、「..」にしろとかいろいろ怒られるので、そうしますが、まさか、{}そのものを使わない書き方とは思ってもみなかったです。
長年にわたって、(.{1,5})みたいにしていたので。

まとめると、短いperl5スクリプトでも影響は大きいですね。

1)後方参照の番号が変わった。これまで$1としていたのは、$0になる。ずれます。
2)範囲指定はだいたい[..]みたい。[A-Z]が[A..Z]になる。他でも同様に、「..」になった。たぶん一律。
3)これまでと同じ正規表現では通らないことがあるので、新しい仕様は読むべき。(読まないけど)
4)量指定子を使う時、{}は使えない。使わない。Perl6は別物と考えたほうがいいと実感する。

※perl5で文字数カウントを間違えないようするには(自分の場合UTF-8文字で数えるためには)、入力文字がUTF-8だよと教える必要があった。
Perl6は無自覚に使ってもUTF-8で扱ってくれる。つまりデフォルトで3バイトの1文字を3つに分解しようとして自滅したりはしない。たぶん空気のようにUTF-8の文字列が扱える(自分の使っている範囲。たぶんですよ)。

導入バージョン rakudo
This is perl6 version 2015.11 built on MoarVM version 2015.11

ls | perl6 -ne 's/^(.**0..7).*$/$0/, say $0 '

デスクトップあたりで端末開いて、上の一行を実行してみるといいかも。何もファイルは変更しません。
下記はperl5でマルチバイト(日本語)含めて数える場合

ls | perl -Mutf8::all -ne 's/^(.{0,7}).*$/$1/, print "$1\n" '

perl5でマルチバイト文字を扱う場合の劇的推奨。

このモジュールに全幅の信頼をおいています。なんか日本人でこれに言及しているのは自分だけの気がするんですけどね。笑) 便利ですよ。組み込むのも簡単だし。メリットは構文が簡素になるので、さくっと使い捨
てが書けます。「perl "utf8::all"」で検索しても2000件しかないし、ディストリのパッケージそのもののダウンロードだったりするので、ほとんど知られていないのかもしれません。わたしは、数年前UTF-8というキーワードでひっかるcpanパッケージは全部(ほんとうに全部)チェックしたので見つけました。以来ハッピーです。
現在、ubuntuの標準パッケージに含まれています。

以下ディスっているわけではありません!! 職業プログラマーが集まるサイトなどで、えんこーどして、でこーどして、ばいんもーどにして。。。とかよく見かけるんですが。うーん。ややこしいから仕事で間違えているんじゃないの?!

単純にUTF-8の入出力だけするのなら簡単です。その文字列を、区切る、数える、置換する、抜き出すなどなら、このモジュールひとつで、簡素に書けます。ほんとにびっくりです。大好きです。めんどくさいことは大嫌いです。