タスク管理アプリ Trello

大学教員生活も2年半ほど経ちまして,様々な研究プロジェクトや雑用も増えてきました。元々同時並行してタスクをこなすことがあまり得意ではない方なので,どれから手をつけるか考えること自体もストレスになっていました。

 

これまでもタスク管理としてWindowsのSticky Note(要するに付箋)でTODOリストを作ってやることと締切を記載しておいてタスク管理をしていたのですが,デスクトップ常駐アプリなのもあってちょっと鬱陶しい面もありました。

 

そこで見つけたのがこのTrelloです。

 

trello.com

 

基本的なTODOリスト管理の使い方は以下の記事を参考にしました。

 

ocoshite.me

 

こちらで紹介されているタスク管理方法を使えば,その日に行わなきゃいけないこと,急に降ってきたタスクなんかも一目瞭然になりますし,優先順位も付けることができます。

特に終わったタスクも可視化されるとなんとなく「今日はなんもやってなかったな」と感じてしまうこともなくなります。

chrome拡張機能であるPlanywayを入れればカレンダー表示と併せてタスク管理できますし,ありがたいです。

VSCodeで(WinSCP越しに)SSHでサーバ上のファイルを編集する

サーバ上のコードをいちいちローカルに持ってきて編集してまたアップロードして…という作業が面倒なことって多いですよね。

最近何かと便利になってきているVSCodeを使ってサーバ上のファイルを編集してしまおう、というのがこの記事の趣旨です。

すでに試みている人もいまして、例えば以下の記事で拡張機能SSH接続して編集する術が紹介されています。

qiita.com


この記事では、すでにほかの方法(WinSCP)で環境構築していて秘密鍵の設定等が面倒な人向けの簡易な方法を紹介しようと思います。

やることはたったひとつです。

WinSCPで使うデフォルトのテキストエディタVSCodeに変更する!」

以降、テキストエディタの変更手順を説明します。

1:環境設定の変更

「オプション>環境設定」から「エディタ」を選択します。

するとエディタの設定一覧を確認することができます。

デフォルトでは内臓エディタとノートパッドがあるかと思います。

「追加」ボタンをクリックします。

「外部エディタ」のラジオボタンを選択し、以下のアドレスを入力してください。

"%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" !.!

「OK」すると、WinSCPで使うテキストエディタとしてVSCodeが追加されます。

2:デフォルトで使えるように変更

このままの設定では、編集したいファイルを開いてもWinSCPの内臓エディタが立ち上がってしまいます。

他のエディタの優先度を下げるため、「内臓エディタ」「ノートパッド」それぞれの設定を変更し、少し小細工をします。

「内臓エディタ」(もしくは「ノートパッド」)を選択し、「編集」ボタンをクリックします。

「エディタの起動条件」としてデフォルトでは "." が設定されていますので、適当に ".txt" にでも変更します。

「OK」すると、基本的にVSCodeが優先的に立ち上がるようになります。

サーバ上の適当なファイルをクリックして確認してみてください。

3:まとめ

以上のように、非常に簡便な方法でサーバ上のファイルをVSCodeで編集できるようになりました。

各々の状況によって使いやすい方法が異なると思いますので、ほかの方が紹介している方法もぜひ試してみてください!

Overleafで電気学会論文誌のテンプレを使う方法

1. Overleafとは

Overleaf(https://ja.overleaf.com/)とはオンライン上のLaTeX原稿執筆環境です。ローカルにTeXの編集環境を構築せずに済む上,どんな端末からでもブラウザのみでLaTeX原稿を執筆できる優れものです。
ただ,Overleafのデフォルトの設定では,すぐに日本語の文章を扱うことができません。コンパイルしてもエラーを返されてしまいます。ここでは,以下の偉大なる先人の記事を参考に電気学会論文誌のテンプレを使うための設定方法を説明します。

doratex.hatenablog.jp


2. テンプレートファイルの作成

手順1:論文テンプレートのダウンロード

電気学会のWebサイトから論文誌のテンプレートをダウンロードしてください。以下のページの末尾にテンプレートが入ったzipファイルへのリンクがあります。
https://www.iee.jp/pub/post/

手順2:Overleaf上でテンプレートファイルの作成

テンプレートのtexファイル,clsファイルをOverleaf上に作成しましょう。ファイルをアップロードすることも可能なのですが,エンコーダの関係で文字化けしてしまうので新規作成してコピペするのが早いかと思います。

まずは,Overleaf上で新規プロジェクトを作成します。空のオブジェクトを作成し,適当な名前を付けます。

左上のタブにある「新規ファイル」を選択し,作成するtex・clsファイルの名前を入力します。

Sourceにテンプレートファイルのコードをコピー・アンド・ペーストしていきます。

手順3:日本語が使用できる設定に変更

まず,左上のメニューボタンからコンパイラをデフォルトの「pdfLaTeX」から「LaTeX」に変更します。

次に,主要文書を「template.tex」に変更してください

最後にlatexmkrcを作成します。「新規ファイル」を作成し,latexmkrcを作成してください(拡張子は不要!)。作成したら,以下のコードを入力してください。

$latex = 'platex';
$bibtex = 'pbibtex';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex %O -o %D %S';
$pdf_mode = 3;

手順4:試しにアウトプットしてみる

設定変更した結果を確認してみましょう。電気学会の論文テンプレートファイル一式の中に「readme.tex」というテンプレートのコードの仕様について説明しているファイルがあります。ちょうどいいのでこれをコンパイルして出力します。

コンパイルは中央上部にある「再編集」をクリックすればできます。画面左のコードの内容を実行した結果が,画面右に出力されます。無事に日本語表示された原稿が出力されたら設定完了です。

「再編集」の右にあるボタンの中から「PDFをダウンロード」を選択すると,出力結果をPDFファイルとして保存することができます。

3. さいごに

Overleaf便利なのでみなさん使ってみてください。
IEEEさんや情報処理学会さんはOverleaf用の論文テンプレートをOverleaf上で公開しているので,電気学会さんも追随してもらえると捗るなーと思ったり思わなかったりします。

pandasで電力需給実績を可視化する

pandasで電力需給実績データを可視化しようと思ったら、変なところで詰まったのでメモがてら紹介します。

恥ずかしながら最近知ったのですが、2016年4月以降、旧一般電気事業者のWebページにて電源種別ごとの需給実績がcsv形式で公開されています。(東京電力の場合は以下のページ)

エリアの需給実績公表について|でんき予報の解説|東京電力ホールディングス株式会社

そのcsvファイルとpandasを使って各電源の出力と電力需要を可視化してみようと思います。

※エンコーダのエラー回避のため、事前にデータのheaderを英語表記に変えています。

まずはデータの読み込み。電力需給データのdataframeを作成します。今回は東京電力管内の2018年の電力需給データを使っています。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('area-2018.csv', sep=',', header=2)


次に、可視化したいデータだけのdataframeを全データが格納されているdataframeから作成します。
ここでは、4月1日の5時から23時までのデータを抜き出すことにします。また、電力需要だけ別のプロットをするので、電力需要データだけのdataframeも作成します。

T_str = 5
T_stp = 24
oneday = df[T_str:T_stp]
demand = df[T_str:T_stp]['Demand']

では、pandasのplotを使って、このdataframeを可視化してみましょう。
電力需要データは線グラフ、各電源の実績データは積み上げ棒グラフで重ねて表示させます。

ax = demand.plot(kind='line', legend=True, linewidth=3)
oneday.plot(kind='bar', 
            y=['Nuclear','Heat','Hydro','Geothermal','Biomass','PV','WG','Pump','Interconnection_Line'], 
            ax=ax, alpha=0.8, stacked=True, fontsize=13)
plt.legend(bbox_to_anchor=(1.05,1), loc='upper left', borderaxespad=0, fontsize=13)
plt.ylim(-500, 3500)
plt.xlabel('Time', fontsize=13)
plt.ylabel('Power [10^4 kW]', fontsize=13)

すると、電力需要データと各電源の実績データが一目瞭z…ってあれ?

f:id:ShiroNoir0000:20181024162212p:plain
ずれて表示される電力需要データ

線グラフの電力需要データだけがずれて表示されてしまいます。これは困った!

いろいろ試してみた結果、どうやら線グラフはプロットエリアの一番左を0として認識した上で、indexの番号を参照してプロットしているようです。
この問題を回避するため、ちょっと回りくどいですが、電力需要データのdataframeのindexを振りなおすことにしました。

demand = demand.reset_index(drop=True)

この処理を一枚かませてから表示させると、次の図のように、電力需要と電源出力の時系列データを対比させて表示させることができるようになりました。

f:id:ShiroNoir0000:20181024162231p:plain
電力需要と電源出力を重ねて表示できた。

すごく細かいことでしたが、思わぬところで時間を取られてしまったので備忘録としてまとめてみました。
(もっとスマートな方法があるかもしれませんが…^^;)

CentOS上でAnacondaのインストールと仮想環境を構築する方法

最近,転職しました(早い)。

そんなこんなで再びCentOSのサーバ上にPythonの開発環境を整えることになったので、参考にしたエントリーをメモしておく。

www.task-notes.com

 

qiita.com

 

今回はプロキシの設定とかが必要じゃない環境だったので楽でした。

 

 

Jupyter Notebookのホームディレクトリ変更

Jupyter Notebookのホームディレクトリを変更する手順について備忘録。

デフォルトだと、ユーザに割り当てられている一番上のディレクトリが指定されてしまう。

整理する上では少し不便なので、適当なディレクトリを指定したいところ。

以下、Jupyter Notebookのホームディレクトリを変更する手順
 

1.Jupyter Notebookの設定ファイルを作成

以下のコマンドを実行してJupyter Notebookの設定ファイルを作成

$ jupyter notebook --generate-config

コマンドを実行すると、~/.jupyter/jupyter_notebook_config.py が作成される

2.ホームディレクトリのパスを指定

jupyter_notebook_config.py の以下の変数を編集

## The directory to use for notebooks and kernels.
c.NotebookApp.notebook_dir = 'ディレクトリのパス'

デフォルトでは変数が「#」でコメントアウトしているので削除

ディレクトリのパスは" \ "は使わずに" / "で記述すること。

設定変更後Jupyter Notebookを起動し、無事指定したディレクトリが表示されたらOK

 

Linuxサーバ上でJupyter Notebookを使えるようにする

Anacondaを使ってJupyter Notebookそのものは入っていたのですが,使い方がいまいちわからず。

他の人に聞いてみたところ,Linux上でJupyter Notebookを起動後,ローカルのブラウザを使ってサーバのIPアドレスとポート番号で使えるとのこと。

設定に当たっては,以下の2つの記事が参考になりました。

 

qiita.com

www.task-notes.com

 

コアな計算処理を行うコードは関数化して作ってINPUTとRETURNを分かりやすくしておき,計算結果の可視化コードなどはJupyter Notebookで作るのが効率的でよいとのこと。

 

MATLABでいうと,メインの実行ファイルと関数ファイルを分けておくイメージですかね。

可視化の部分は表示を見ながら微調整することがおおいので,確かに対話的に結果を返してくれるJupyter Notebookと相性がいいのかもしれません。

 

 (2018/10/16 追記)

リモート先のサーバの設定によってはjupyter_notebook_config.pyのリモート許可を以下のようにしとかないといけないようです。

 

c.NotebookApp.allow_remote_access = True