こばりょ・ぶろぐ

実験物理専攻のゆるーい技術ブログ

タイピングのすゝめ

タイピング初心者の軌跡

研究室に入って1番最初に練習したのがタイピングです。 PCを立ち上げてパスワードを入力する時などにもたもたしていると、 スタッフにブラインドタッチできないとこの先しんどいよって言われたのが、きっかけです。

学部生の頃は、レポートの半分以上が手書きだったので、 僕はPCの扱いにそこまで慣れていませんでした。 なので、修士1年の時は拙いタイピングでした。(ホームポジション知ってる程度)

e-typingっていうのを勧められて タオルで手を隠しながら、ホームポジションを徹底して、 Sが出せるまでは、毎日30分やっていました。 (少し早く打てると熱中して1時間以上やってた時もあります)

初めはCとかDのスコアだったのですが、半年程度でAは安定しました。 (もう初めの頃の記憶は怪しいのですが、確かそのくらいのペースだったはず。)

成長曲線

f:id:koba_ryo:20211126233231p:plain

博士課程に入ってからも、毎日作業を始める前の10分間e-typingを続けていると 現在では、かなり不自由なくタイピングできるようになりました。 今では、タイピングが作業前のルーチンみたいになってます。笑 (Sを安定して超えた頃から、10分間のタイピング時間を日記の殴り書きや、 寿司打など、少し飽きた時は、違う刺激を与えてます。)

タイピングのメリット

  • メールやネットの登録等の入力が苦でなくなる。
  • プログラミングのコーディングで変数の長さや環境による編集のしづらさに寛容になる
  • チャットでスムーズに連絡を取れる。

TEXTデータを ROOTのTreeにつめる

koba-ryo.hatenablog.com

スペースで区切られた数字等をそれぞれ名前をつけてTreeに詰めるということをしたい。

make_tree.Cを作成した。

root make_tree.Cで同じディレクトリにあるデータファイルを読んで、 各列の数字の値を名前をつけてtreeにつめることができる。 value_name_listの数より、データの数列の数の方が多い場合は、value_name_listに対応する値以外は無視される。

{
  std::string input_name = "./run0028.dat";
  std::string output_name = "output.root";
  TString ifn = input_name;
  TString ofn = output_name;
  auto fout = new TFile(ofn, "recreate");
  auto tree = new TTree("tree","tree using ReadFile()");
  std::vector<std::string> value_name_list;
  value_name_list.push_back("adc1/I:");
  value_name_list.push_back("adc2/I:");
  value_name_list.push_back("adc3/I:");
  value_name_list.push_back("adc4/I");
  
  TString branch_names;
  for(const auto& name :value_name_list ){
    branch_names +=  name;
  }
  
  tree->ReadFile(ifn,branch_names);
  tree->Write();

}

YoinkとClipyについて

今回の記事は僕が普段 Macで作業をするときによく使っている便利アプリの紹介です。 この2つは便利アプリでググって出てきた中で、使い続けているアプリです。

Yoink

払いきり1000円くらいのアプリですが、1000円の価値はあると僕は思います。
昔は、無料のアプリやサービスしか使わないっていう心意気で、有料のアプリは使っていませんでしたが、
最近は、日頃の作業の効率化等に役立つものなら少々の出費はどんどんしています。

日頃の作業でイラッとしたことはこまめにメモして、時間があるときに解消するものがあるか調べます。
サブスクリプションのサービスは多くなりすぎないようには注意しています。苦笑

Yoink - ドラッグ & ドロップを快適なものに

Yoink - ドラッグ & ドロップを快適なものに

  • Matthias Gansrigler
  • ユーティリティ
  • ¥980
apps.apple.com

僕の場合デスクトップが6個くらい開かれていて、いろんなアプリを同時に開いています。
アプリ移動は⌘tabのショートカットキーで切り替えています。

Macでは、ある画面の画像を別の画面のkeynote等に貼り付けたいなどの作業が多発します。
よくある場面としてはスクショでとって別の画面にあるnotionに貼り付けたいとかもあります。
(スクショの場合、一定時間は画面下に出てくれるので、ささっと移動して貼り付けはできるのですが、
notionのノートを開いたりしている間に右下のスクショがなくなって、
デスクトップに保存されてしまうといらっとしてしまいます。)

そんなときにYoinkがあると画面の遷移に関係ない小窓を用意できるので、貼り付けたい画像や動画、テキストをその小窓に置いておくだけで、好きな画面に行って貼り付けられます。

オススメの設定

環境設定から設定できます

f:id:koba_ryo:20210207165204p:plain f:id:koba_ryo:20210207165207p:plain

  • アイテムをドラッグするとすぐ下に小窓が出る。

f:id:koba_ryo:20210207164952g:plain

元々は画面の端に表示していたのですが、僕の場合、ゴミ箱やデスクトップ上のフォルダやアプリにかぶることが多く すぐ下に出てくれる方が、使い勝手が良いように感じています。ただ、小窓を消したい時もあるので、以下のように ショートカットキーで出したり消したりできるようにもしています。

また、ショートカットキーを長押しすることで、小窓から消えた画像を復元することもできるので、
間違ったところに貼り付けてしまって、小窓の画像が消えても安心です。

  • ⌘y(普段使わないキーを割り当てましょう。)で出したり消したりのショートカットを設定

Clipy

clipy.softonic.jp

普段、Vimでコーディングしている際に、vimの場合、コピーしたテキストを遡って、 貼り付けるということをしているのですが、 普段のMacのコピー&ペーストでも同じようにコピーの履歴を遡って貼り付けられたらいいのにと思って 調べて出てきたアプリがClipyです。

オススメの設定

  • option + sでスニペットの表示
  • option + mでコピー履歴の表示

オススメの使い方

コピーを遡るのはもちろんのこと、スニペット機能もかなり活用しています。

例えば、

住所、メールアドレスなどはユーザー辞書に登録しているのですが、 (これもオススメです。いちいちメアドや住所を打つのが面倒なので全て登録しています。ただ、PCがないときに、メアド、住所が言えない等の弊害はあります...) 出張メールの雛形や、レポート採点の文章の雛形などの長い文章や、コードのサンプルなどは変換予測で出てこられるのも困るので、Clipyのスニペットとして登録しています。

Vimのコピーアンドペーストについて

今回の記事はVimの少し細かい話をします。

Vimって何?って人は以下の記事を見てください。

 

koba-ryo.hatenablog.com

ざっくりいうと操作の特殊な便利テキストエディタです!

 

Vimのカット/コピー/ペーストはどのレジスタ(a~z)を使うか指定できます。

指定の仕方は以下のように”をレジスタの前に付けることで指定します。

“{レジスタ}

(例:"a , "A:大文字で指定すると追記される。)

指定しないと無名レジスタが使用されます。

(ヤンクは無名レジスタ("")とヤンクレジスタ("0)にコピーされる)

貼り付けは”{レジスタ}p もしくは挿入モードで<Ctr-r>{レジスタ}で行います。

レジスタは1-9など、他にもあるみたいですが、僕が普段の作業で使うのは

無名レジスタと0とq(アルファベットで押し易いため)だけです。

 

ヤンクした文字をddなどで

無名レジスタを上書きしてしまったときの対処法

 

方法1:

“0pとするとヤンクレジスタからペースト出来る。

この方法が個人的には一番楽な気がします。)

 

方法2:

最初から”ayiwなどで無名レジスタではないところにコピーして、”apで貼り付ける

 

方法3:

ブラックホールレジスタを使って削除する(”_dd)

ブラックホールレジスタはカットではなく削除のために

dコマンドを使いたいときに便利

 

 

実際の活用場面:

下のsomethingInTheWayをcollection に変更 

collection = getCollection();

process(somethingInTheWay, target);

 

キーストローク

yiw(1単語コピー

 jww(カーソル移動)

diw(1単語カット後に挿入モード)

"0P(ヤンクレジスタをカーソルの前にペースト)

f:id:koba_ryo:20210204003152g:plain



treeでevent numberとの相関を簡単にみたい。

いつもrootをつかってtreeに詰めた変数とイベント数との相関をみたい場合、

event_numみたいにイベント番号を詰めていたのですが、

以下のように自分で詰めた値以外も使えるようです。

ADCの値をtreeに詰めていた場合は、

tree->Draw("ADC:Entry$")

で ADCとエントリー数との相関が見えます。

他にも$シリーズがあるみたいです。

ROOT: TTree Class Reference

のページでSpecial functions and variablesで検索すると 他の変数ものっています。

TEXTデータを抽出してCERN ROOT でヒストグラムを描写する

学部生と一緒にデータを取得して中身を確認するときに、
テキストデータとしてスペースで区切られた数値データを
パッと1列目のみヒストグラムに詰めて表示
したい時があったので、
ここにサンプルコードを置いておこうと思います。

読み込むデータのイメージはこんな感じです。 横方向がチャンネル番号、一行が1イベントに対応しているというデータです。

192 284 1391 31985 1933 ...
415 135  1531 15131 51531 ...
.
.
.

修士の頃から、テキストファイル読み込んでヒストグラム表示とか数え切れないほどやってきましたが、
簡単なマクロのソースコードを一からコードを書くのは煩わしく、時間かかるってことで、
今回を機にスニペットとして保存しました。
普段スニペットとかはClipyに保存しています。メールのテンプレとか一括で置いておけるので、
よく使うマクロのソースコードのテンプレも一緒に置いてます。

qiita.com

koba-ryo.hatenablog.com

ROOTでのマクロの実行は以下のファイルのような物用意して

root Show_data.C

で実行されます。

rootの使い方等は、以下のサイトを参考にしてもらうのが間違えないかなと思います。 僕も今回のような具体例のある問題やTipsなどを小出しに記事にする予定です。

ROOT Manual - ROOT

cern root 入門 - meuのblog

https://www-he.scphys.kyoto-u.ac.jp/member/n.kamo/wiki/doku.php?id=study:software:root

Show_data.C

 {
//read data value
  std::string filename = "./run0028.dat";
  const int ChannelOfInterest = 0;
  
  std::ifstream file(filename);
  std::string line;
  std::vector<std::vector<int>> h;
  while (std::getline(file, line)) {
    int value;
    std::stringstream ss(line);
    h.push_back(std::vector<int>());
    while (ss >> value) {
      h[h.size()-1].push_back(value);
    }
  }

 //fill histgram 

  int max_x = 1000;
  int min_x = 0;
  int nBin = (max_x - min_x) / 10;

  auto hist = new TH1F("test",Form("%s ch = %d",filename.c_str(),ChannelOfInterest),nBin,min_x,max_x); 

  for (int i = 0; i < h.size(); i++) {

    hist->Fill(h[i].at(ChannelOfInterest));
  
}

  hist->Draw();

}

変数名とかは適当なので、適宜自分の対応する物に変更してつかってください。

f:id:koba_ryo:20210202132126g:plain

Google Chromeの検索欄に二重で入力される問題

普段、google chromeをブラウザとして使用しているのですが、 検索欄に日本語で文字を入れると予測が勝手に入って、文字が二重になってしまう現象がよく起きています。。。

f:id:koba_ryo:20210201225251g:plain

この問題の解決策として僕が行った対処方法を示しておこうと思います。 と言っても、以下のサイトに詳しく色々な方法が書いてあるので、僕が最終的に落ち着いた手段を手短に説明します。 kanmegu.com

対処方法:拡張機能を追加して、新規タブで開かれる画面をカスタム chrome.google.com

上のリンクから拡張機能をオンにすると勝手に新規タブで開かれる画面が変わります。
カスタムするのは左下のボタンで設定画面を開き、背景や検索エンジンの選択などを行いました。
f:id:koba_ryo:20210201234342p:plain

シンプルな見た目にできて、満足♡笑
f:id:koba_ryo:20210201234241p:plain f:id:koba_ryo:20210201234848g:plain

ただ、検索ボックスの検索は履歴や予測が出てこないですが、
僕はいつも邪魔としか思っていなかったので、そんなに気にせず使えています。
検索予測を出したい場合は上のアドレスバーから検索できるのでそちらを使うのがベストかと思います。

google chromeはカーソル移動をVimライクにjkで上下に動かせる拡張機能(vimium)があるので 基本的にはgoogle chromeをデフォルトで使用しています。 カーソル移動やリンクのクリックなどをキーボードのみで操作できるので快適です。

ただGmailのページなど、いくつかのサイトではうまく機能しないので、基本的には検索と検索項目のクリックに使用しています。 f:id:koba_ryo:20210201235537g:plain