2017年2月27日月曜日

ATOMのカーソル移動をbash/emacs風にする。

ATOM Editor はめんどくさい?!

端末のbash/zshとエディターのATOMでおおざっぱな動作を統一しています。カーソル移動とyank程度ではシームレスに使いたいためです。最初から多様なキーや機能があらかじめ用意されているVS CODEとは差がありますね。同じエレクトロンという出自ながら最近VS CODEの完成度の高さに感服しています。

ATOM editor をインストールしていない人。ubuntu/mint用

次の2行でインストールできます。
sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update && sudo apt-get install atom


keymap.cson部分
'body':
  'alt-s': 'core:save'  #ctrl-s 廃止という暴挙にでてもいいかな?!
  'ctrl-f': 'core:move-right'   #bash:右
  'ctrl-b': 'core:move-left'    #bash:左
  'ctrl-d': 'core:delete'       #bash:削除 1文字削除
  'ctrl-h': 'core:backspace'    #bash:削除前

  'ctrl-e': 'editor:move-to-end-of-screen-line' #bash:行末

  'ctrl-m': 'editor:newline'        #改行

  'alt-a': 'core:select-all' #'atom-workspace atom-text-editor':が本来所属するチーム★ここなら、一番下に書いたほうがいいのかもしれない。

'atom-text-editor':
  'ctrl-a': 'editor:move-to-first-character-of-line'    #bash行:先頭

'atom-workspace atom-text-editor':
  'ctrl-w': 'editor:delete-to-beginning-of-word'  #直前単語削除

単純代替できないコマンドのケース


#bash ctrl-u の実現 
パッケージを作るか、コマンドを書きます。後者例
キーアサインを登録します。

'atom-workspace atom-text-editor':

  'ctrl-k': 'atomic-emacs:kill-line' #以下のselectToFirstCharacterOfLine()の 逆を書いてもよい。
#'editor:delete-line' 行削除

  'ctrl-u': 'custom:bash-ctrl-u'#  ctrl-u ができればbash互換。これで完成。

※ctrl-kの逆。カーソル以前を消す。keymap.cson

  'ctrl-w': 'editor:delete-to-beginning-of-word'  #直前単語削除

ctrl-kについてはemacsでも2つの流派みたいなのがありますね。行削除とカーソル以降削除。自分でどうするか決めます。

ctrl-kは、ツーストロークコマンドでもあるので、全体キーバインディングを無効にするか、 少し違うキーで妥協したほうがいいのかもしれません。シェル側を変更するなど。

VS CODEのカスタマイズでもほぼ同じことがいえます。atomic-emacs ではカット動作をオプションで選べますが、全機能キーをいきなり有効にするとemacs風味すぎるので、私は数個のみ使っています。emacs好きな方ならそれでいいのだと思います。

#同時に以下ユーザー定義コマンド(CoffeeScript)を書き足す。
起動スクリプト init.cofee 4行で実現できます。

カーソル前文字列をカットしてそれをクリップボードに入れる
#bash ctrl-u 互換 カーソル前文字列をカットしてバッファに。
atom.commands.add 'atom-text-editor', 'custom:bash-ctrl-u', ->
  editor = atom.workspace.getActiveTextEditor()
  editor.selectToFirstCharacterOfLine()
  editor.cutSelectedText()


これでひととおりのbashシェル風味な機能アサインは完成するかと思います。少なくとも私が多用するbash/zshキーはこれでカバーされています。
ctrl-u位標準で用意されていればいいのにと思ったりもしますが、ATOMめんどくさい。

2017年2月18日土曜日

ATOM editor in 4K/Hi-DPI

ATOM設定画面が小さくて読めないという無理ゲー


WindowsではどうでもないのですがLinuxの当方の環境では、ATOMは絶望的なまでに、フォントが小さいテーマがあります。原因は、px指定しているテーマ設計者が意外に多いからですが、4KでHi-DPIにしないで使っていますので、そりゃ小さいはず。


以下の例はあえて極端に大きいフォントサイズですが次のようなスタイルシートを貼り付けてみてください。それから適宜調整を開始してみると良いです。オンタイムでできますから。
日本人の平均年齢以上対象(知ると我が国の将来が絶望的になる数字)にしています。

'ABC hare' は小生作成のエディター用フォントです。theme-uiで12px指定などになっていると4kにしたら恐ろしく小さくなりますね。themeファイルをいじるのは後回しのほうが効率がいいかと思います。

スタイルシートが空なら、そのままぺったん。何かあれば末尾にペイストしてください。


EDIT ~/.atom/styles.less


.status-bar { font-size: 250%;
    font-family: 'ABC hare' ;
}

.command-palette {
   font-size: 160%;
}

atom-pane {
     font-size: 200%;
}

.settings-title .settings-view .setting-description {
  font-size: 150%;
  font-family: 'ABC hare' ;
}


.tree-view,
.tab-bar .title {
    font-size: 180%;
    font-family: 'ABC hare' ;
}


//atom-panel-container,
atom-panel-container.bottom atom-panel {
    background-color: darkorange ;
    font-family: 'ABC hare' ;
    font-size: 240%;
    padding:0.9em;
    atom-text-editor {
        div.line, div.placeholder-text {
            font-size: 240%;
            font-family: 'ABC hare' ;
        //padding:0.0em;
        }
    }
}
#

2017年2月11日土曜日

Perl6 のインストールとOneLiner ワンライナーメモ よくある自分

ターミナル(端末)。ubuntu系は以下を同時押し。CTRL+ALT+T

#Perl6 rakudo::  How to install 
(2017/01 最新版をいれてみる)
#以下がないとコンパイルできません。 
sudo apt install build-essential git libssl-dev
 
#ここからソースゲットとコンパイル  
wget http://rakudo.org/downloads/star/rakudo-star-2017.01.tar.gz
tar xfz rakudo-star-2017.01.tar.gz 
cd rakudo-star-2017.01
sudo perl Configure.pl --gen-moar --prefix /opt/rakudo-star-2017.01     
sudo make install

たぶんこれでOK。上記サイトをよくご覧の上実行してください。PATHはマニュアルで設定しました。

PATH="/opt/rakudo-star-201701/share/perl6/site/bin:/opt/rakudo-star-201701/bin:$PATH"

当方は、日付部分をドットなしでインストールしています。


perl6 -v
This is Rakudo version 2017.01 built on MoarVM version 2017.01
implementing Perl 6.c.

#Perl6の場合
cd ; pwd #homeで。
(どこでもいいが4つぐらいファイルがあると便利)

echo >zshzsh.delete.txt #という名前のファイルを作成。
touch zshZSH.delete2.txt #という名前のファイルを作成。 
touch fshFSH.delete.txt #という名前のファイルを作成。
touch fshFSH.delete2.txt #という名前のファイルを作成。

文例)lsでリストをとり、そのなかのzshという小文字名があるファイルのみの置換結果を表示する。その他のファイルはリストしない。だから、安易に -peは使えない。

 ls | perl6 -ne 'print $_ if $_ ~~ s:i|zsh|BBB(ZSH)| '   #改行なし

 ls | perl6 -ne    'say $_ if $_ ~~ s:i|zsh|BBB(ZSH)| '   #sayで改行付き。
 ls | perl6 -ne    'say $_ if s:i|zsh|BBB(ZSH)| '   #sayで改行付き。さらに省略。

(置換条件を追加)
ls | perl6 -ne    'say $_ if ( s:i|zsh|BBB(ZSH)| and s|delete|削除するファイル| ) '  BBB(ZSH)ZSH.削除するファイル2.txt
BBB(ZSH)zsh.削除するファイル.txt
#Perl5の場合
ls | perl -ne 'print $_ if $_ =~ s|zsh|BBB(ZSH)|i'
#Perl5はさらに省略できる。Perl6はprintは裸ではだめ。
ls | perl -ne 'print if $_ =~ s|zsh|BBB(ZSH)|i '
#Perl5はさらに省略できる。通常ワンライナーではこの書き方の人が多いと思う。
 ls | perl -ne 'print if s|zsh|BBB(ZSH)|i '

現実的にはperl5では自分はこう書きます。

ls *zsh* | perl -pe 's|zsh|BBB(ZSH)|i '

ls *zsh* | perl6 -pe 's:i|zsh|BBB(ZSH)| '  #(perl6では)



  • Perl5でも最近のものは宣言すれば、sayが使える。文字数が増えるのでワンライナー向きではない。aliasなどに指定しておく手はある。
  • Perl5とPerl6では正規表現や文法が異なる。この例では、iの位置。前にもってくることで実行速度が速くなるらしい。と英語であった。このような短文字列なら大差はないが長文になった場合は、最後まで読まないとiだったのかぁとPerlが気がつくのが遅れると理解すればいい。つまり、最後に「あー、それからいい忘れていたけど、大文字小文字区別しないからね」といわれるより、最初からいってくれよ。聞いてないよーというネタみたいな話として解釈することにした。
  • 演算子というのかな。~~、=~ みたいなの。Perl5とPerl6で意味が違う。こういう違いがあるので、単純にPerl5で書いたスクリプトに6という文字をつけても怒られるだけである。
  •  Perl5はなくてならならない道具だけれども、見本で示したようなケースはよいのですが行数が増えてくるとPerl6には簡単には移行できそうにないです。というか、今のままでよいです。汗)
  •  極めて個人的には、「あれ、この正規表現、通らないや!!」というとき、ワンライナーレベルならPerl6で実行するとすんなり思ったようになったりしますね。 その微妙さがわからない。
  • ?after ?before みたいな指定方法はPerl5に比べてわかりやすいな!!とか、少ないメタ文字の中でPerl開発者の皆さんが苦労されているのが忍ばれます。追加で9から16個ぐらいメタ文字が増えると世界が変わるのでしょうけれど。$シリーズなんて大活躍しすぎです(覚えにくかった)。

試しているrakudo(古いことに気がついたので、冒頭の2017/01版を導入しました)
perl6 -v
This is perl6 version 2015.11 built on MoarVM version 2015.11

2017年2月10日金曜日

GPUドライバ関連の刷新でハッピー

祝、HW支援安定


2017/02/10早朝、GPU関連のドライバが一気にアップグレードされました。
気がついた範囲でいば、VDPAUを有効にしたほうが遅いとか、VDPAU有効の方が重いとか、そういう面白い現象がなくなったかもしれません。 ありがとうございます。

hwdec=no で使っていましたが、hwdec=vdpauに戻したmpv。mpvの動作が著しく軽くなりました。まだまだですが、少しづつよくなっていってほしいです。(耐性がついた)

当方は、amdですが、nvidiaの方も変化があるのかもしれません。



libdrm-amdgpu1/xenial-updates 2.4.70-1~ubuntu16.04.1 amd64 [2.4.68-1~ppa からアップグレード可]
libdrm-intel1/xenial-updates 2.4.70-1~ubuntu16.04.1 amd64 [2.4.68-1~ppa からアップグレード可]
libdrm-nouveau2/xenial-updates 2.4.70-1~ubuntu16.04.1 amd64 [2.4.68-1~ppa からアップグレード可]
libdrm-radeon1/xenial-updates 2.4.70-1~ubuntu16.04.1 amd64 [2.4.68-1~ppa からアップグレード可]
libdrm2/xenial-updates 2.4.70-1~ubuntu16.04.1 amd64 [2.4.68-1~ppa からアップグレード可]
libegl1-mesa/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
libegl1-mesa-drivers/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
libgbm1/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
libgl1-mesa-dri/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
libgl1-mesa-glx/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
libglapi-mesa/xenial-updates 12.0.6-0ubuntu0.16.04.1 i386 [11.2.0-1ubuntu2.2 からアップグレード可]
libgles1-mesa/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
libgles2-mesa/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
libklibc/xenial-updates 2.0.4-8ubuntu1.16.04.3 amd64 [2.0.4-8ubuntu1.16.04.2 からアップグレード可]
libosmesa6/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
libwayland-egl1-mesa/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
libwxbase3.0-0v5/xenial-updates 3.0.2+dfsg-1.3ubuntu0.1 amd64 [3.0.2+dfsg-1.3 からアップグレード可]
libwxgtk3.0-0v5/xenial-updates 3.0.2+dfsg-1.3ubuntu0.1 amd64 [3.0.2+dfsg-1.3 からアップグレード可]
libxatracker2/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
linux-firmware/xenial-updates,xenial-updates,xenial-security,xenial-security 1.157.8 all [1.157.6 からアップグレード可]
mesa-va-drivers/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]
mesa-vdpau-drivers/xenial-updates 12.0.6-0ubuntu0.16.04.1 amd64 [11.2.0-1ubuntu2.2 からアップグレード可]

2017年2月7日火曜日

mpv で外部の音声ファイルを個別指定する。audio-file

たとえばオーサリング過程のBGM効果の検証など


めんどくさいアプリで確認したりする前に、次のように指定すると、音声だけが別トラック指定できるので、なんとなく雰囲気をつかむ場合ははやくていいかもってお話です。

オプションで、BGMにする音を指定します。オリジナルの動画ファイルの音声は再生されませんので、これはこれで便利かと思います。車載動画なんかの編集をする前に雰囲気つかむにはいいかも。

Smplayerなどでは、メニューから外部音声ファイルを選べば同じことができます。



#
mpv --audio-file=./audio.mp3 movie.mp4


2017年2月1日水曜日

リビングのこたつから書斎PCを覚醒させる。Wake On LAN (ubuntu16.04/Mint18.1)

こたつから書斎PCを覚醒(大改定)

あらたにためした方法(こっちが冴えている?!)

追記;;systemd が今週(2017-10-2x)アップデートされて、いろいろ動かないのがでてきました。

sudo gedit /etc/default/tlp

# Disable wake on LAN: Y/N
WOL_DISABLE=YN にする。

rc.localは触りません。これだけです。
これで再起動してOKならそのまま。当方ではこれでOKでした。もしかしたらもっとも適切な設定がこれなのかもしれません。

だめなら一応
sudo atom /etc/default/halt
NETDOWN=no

ってかんじでしょうか。下記参照。

https://unix.stackexchange.com/questions/318137/wake-on-lan-not-working-on-ubuntu-16-04

これまでの方法

(1)ツール導入 Wake on Lan 必須
sudo apt install ethtool

(2)ファイル追記。
sudo vi /etc/rc.local
interface=enp4s0
logger -t 'wakeonlan init script' enabling wake on lan for $interface
ethtool -s $interface wol g

これだけです。うちの環境は、ルーターやモデムの電源そのものを完全に切断するタイマーを設置しているので、このほうが都合がいいみたいです。というか、これが一番いいんじゃないか?!です。2ヶ月以上この設定ですがノートラブル(16.04LTS)。





以下、過去稿

あまり参考にしないでください。
読むなら、https://help.ubuntu.com/community/WakeOnLan
をどうぞ。

記録のために以下に試行錯誤メモを残しております。


家、しかもこたつからやったらダメ人間養成器じゃないのかという議論はごく一部にありますが、新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

#有効にするには、ほとんどのケースでは何も考えずに次を実行して(さらに何も考えずに)リブート。その際にBIOSの設定が正しいかも確認しておきましょう。
#Wake on Lan 必須
sudo apt install ethtool

#削除しました。
sudo apt-get install powernap
たぶんこれだけでリビングのこたつからスマホを使って書斎PCを覚醒させるには十分だと思います。

#次いで確認:昔(4年前かな)と違うところ。現在のネットワークマネージャー経由
enp4s0かどうか(インターフェイス名)は、
ifconfig とターミナルで実行。通常①行目の左端に表示されます。


sudo ethtool enp4s0 | grep Wake-on
    Supports Wake-on: pumbg
    Wake-on: g <<ここ大事!

これでもいいです。
sudo ethtool enp4s0 | grep -oP 'Wake-on: (.)$'
sudo ethtool enp4s0 | grep 'Wake-on' | grep -v 'Supports'
※インターフェイス名注意 昨今は伝統的な eth0 ではないです。
「g」となってないとだめです。
上記のpowernap いれて再起動するだけで何も考えなくていい(はず)。ではなかった。

よって以下を追記します。
==========

起動時にethtoolを有効にする。ための作業。


①ファイルを作る(注意してください。起動時に実行されるファイルです)
sudo gedit /etc/init/wakeonlan.conf
---以下6行をペイスト
start on started network
script
    interface=enp4s0
    logger -t 'wakeonlan init script' enabling wake on lan for $interface
    ethtool -s $interface wol g
end script

---保存

②実行属性をつける。不要だと思うけど。
sudo chmod +x /etc/init/wakeonlan.conf

このふたつで基本的に終わり。再起動して確認して見てください。

③念の為再起動する前に動かしてみる。
 
sudo service wakeonlan start

sudo ethtool enp4s0 | grep Wake-on

gになっているか?! Wake-on: g

④ほんとうの確認
再起動してほんとうに自動的に設定されているか確認する。 冒頭に戻る。

sudo ethtool enp4s0 | grep Wake-on


gになっているか。Wake-on: g

追記:何もしないでいけたのは以前かも。長らくアップグレードし続けた環境ではなく新規インストール環境ではうまくいきませんでしたので。


マザーボードのBIOS設定が完了しているという前提です。http://poor-user.blogspot.jp/2012/12/wol.html が5年前に書いた記事。5年前はアイフォンを使っていたみたいです。

いまどきのandroidアプリであれば、どれでもいいんじゃないか、と思います。インターフェイスのボタンの大きさが好みだとか押しやすいとかそんな基準で★★★★4.以上ならOKかと。

参考、参照サイト
https://play.google.com/store/search?q=wake%20on%20lan&c=apps&price=1&rating=1&hl=ja

kodi http://kodi.wiki/view/HOW-TO:Set_up_Wake-on-LAN_for_Ubuntu