ほるっふー

自宅のベランダに鳩が住み着いた話を5万人の前ですること。

Mission controlから特定のアプリを最前面に持ってこれない

Mac book を Sierraにアップデートしてから Mission control (3本指で上にスワイプ) をしてFinderを選択しても最前面に一瞬来るのだがまた後ろに引っ込んでしまうようになった。

ストレスマッハである。

 

症状としては、Dockから「オプション」「割り当て先」を「すべてのデスクトップ」にしているアプリケーションをMission controlから最前面に持ってこれないようだ。

Finderはどのデスクトップでも使いたいので「すべてのデスクトップ」に割当していたがMission controlから選べないとストレスで胃袋が溶けてしまいそうなので修正されるまでは「なし」に戻そうと思う…

スクリーンショットの周囲を切り落としたい

サーバー上でXウィンドウを飛ばしてプロットを作った時
転送するのが面倒なのでMacの画面をそのまま ⌘+Shift+4 でスクリーンショットを撮って済ませたくなる。

しかし、これをスライドに載せようと思った時には見栄えが悪いし作り直すのも、手動でトリミングするのも面倒だ。

f:id:blacksmithltw:20170810152608p:plain

 

元々のアイディアはこちらから

askubuntu.com

自分の環境で動かなくてpython3 のせいだとおもっていたが ImageMagick のidentifyコマンドを持っていなかったことに気がついた頃にはオリジナルのshellを書いていた。

convertコマンドを使って上下から決められた幅を切り落とす。
canvasのサイズがいくらであっても上下の幅は変わらないからね。

crop_screenshoot

#!/bin/bash

#crop screen shoot

 

#crop dimensions

top=56

bottom=29

right=22

left=22

 

#loop

for image in "$@"

do

    if file -b "$image" | grep "PNG image data"; then

        size=($(file -b "$image" | tr -cd '0123456789 \n'))

        w=$(expr ${size[0]} - $left - $right)

        h=$(expr ${size[1]} - $top - $bottom)

        x=$left

        y=$top

        convert "$image" -crop $w"x"$h"+"$x"+"$y +repage "$image"

    fi

done

を保存し実行権限を与えて

[iMac] smith: Desktop $ ./crop_screenshoot hoge.png

でくり抜ける。ワイルドカードも使える。

f:id:blacksmithltw:20170810152611p:plain

 

一度くり抜いたものは飛ばしたり、スクリーンショットを撮る時に最前面にいたかどうかで影のサイズが変わってしまうのでそのあたりもうまいことできたらいいなと思っている…

XQuartzがsshログイン時に警告文を出す

ある日を境にXQuartzがsshログイン時に次のような警告文を出すようになった。
同じローカルネットワークに接続したことのあるPCは全部この症状に感染していた。 

[MBA] smith: ~ $ ssh -X server.ac.jp

Warning: untrusted X11 forwarding setup failed: xauth key data not generated

Last login: Tue Aug  1 09:42:32 2017 from local

[server] smith: ~ $ ログアウト

Connection to server.ac.jp closed.

 

[MBA] smith: ~ $ ssh -Y server.ac.jp

Warning: No xauth data; using fake authentication data for X11 forwarding.

Last login: Tue Aug  1 09:43:09 2017 from local

[server] smith: ~

認証関係だ。
エラー文で検索すると幾つか同じ症状を抱えている人がいるが、解決策を試しても直らなかったという人が多い。

d.hatena.ne.jp

私もここに載っている手法は全て試したが警告文は出続け、結局XQuartzの再インストールで消え去った。
原因が分からない解決は気持ち悪いけど書き残しておく…

ROOTの仕様に悩まされる

ROOTの案外こういうことはできないのね という備忘録です。

 

ROOT: TChain Class Reference 

TreeA001 TreeB001
TreeA002 TreeB002
TreeA003 TreeB003
TreeA004 TreeB004
  ︙   ︙

と2種類のTTreeがたくさんあってそれらを全てchainかつfriendにしたい場合

  TChain* chain = new TChain("TreeA","TreeA");

  for(Int_t i=0;i<imax;i++)

    {

      chain->AddFile(Form("FileA%03d.root",i));

      chain->AddFriend("TreeB",Form("FileB%03d.root",i));

    }

と書いてしまうとTreeB002以降の変数が全てTreeB001の最後の値で埋め尽くされてしまう。

落ち着いて考えればお作法として良くない、Friendにするのは最後にするべきだ。

  TChain* chainA = new TChain("TreeA","TreeA");

  TChain* chainB = new TChain("TreeB","TreeB");

  for(Int_t i=0;i<imax;i++)

    {

      chainA->AddFile(Form("FileA%03d.root",i));

      chainB->AddFile(Form("FileB%03d.root",i));

    }

  chainA->AddFriend(chainB);

 

ROOT: TChain Class Reference

Double_t TChain::GetMaximum ( const char *  columname )  
virtual

Return maximum of column with name columname.

Reimplemented from TTree.

Definition at line 1112 of file TChain.cxx.

 

columnameなのでDrawのように式を書くことができない。

地味にツラい…