意味悲鳴

PythonとかUnityとか.技術ブログでしたが,研究ブログにシフトしました.

面と向かってできなくても進捗報告はするべき

学会参加→学会明け体調不良→クリスマス3連休の流れでメンターさんとの進捗報告ができなくてすごくモヤモヤしていたので,今しがたメンターさんにメールで連絡.とりあえず現状どこに詰んでいてるか,どこが進んだか,どこが次回までに進みそうかの話を箇条書きで送った.

こういう形で進捗報告をしたのははじめてだったので不安だったのだが,すぐに返信がきて簡単な指示を頂いた.申し訳ない限り.

 

どんな作業でも抱えすぎるとだいたい悲惨なことになるのはこれまでの経験でわかっていたけど,そういう意味で進捗報告はやはり大切で.

溜まっている悩みを一部分でも誰かと共有できるのは精神的にも楽になるし,もちろん新しい技術を教えてもらえたり,次にやるべき道が見えてきたりと,研究自体の効率も上がるはずだし.基本的に詰んでいれば詰んでいるほど進捗報告はやるべきなんじゃないかと最近は思っているぐらい.

 そういう意味で,今回の進捗報告できない時間は大変苦しいものだったけど,こうやってメールでやり取りするだけでもだいぶ楽になった.ので,直接会えなくても進捗は報告すべきだと思う.

とは言え,会って話す方が効率的だし(伝えられる・もらえる情報量が違う),研究室のメンバーがふらっと乱入していろいろ教えてくれるし,やっぱり研究室で会ってやるほうがよいのだろうな,とは思う.

 

というブログを,休暇取ってる人が大勢いる研究室で書いているのもなにか寂しい気もする.

内田真礼になるぞ宣言

yatteiki.fm

 

www.uchidamaaya.jp

 

twitter.com

 

この記事は私が大学院で研究成果を出しながら内田真礼になるぞ宣言している記事です.特に他意はありません.詳細気になる人は一番上のポッドキャスト聞いてください.

 

上段はさておき,最近真面目に体調(特に顔面のニキビ)が悪いので,本格的に健康に気を使おうと思います.このブログは最近更新してなかったんですけど,その原因は研究と就活に忙殺されていたせいでして.そんななかでも健康に生きたい.そして進捗を稼ぎたい.そんな今日このごろ.

 

 

 

AvastにファイルのDLをブロックされたお話

なんかもうわけわからんけど出来たから書くだけ書いておきます.けどこれ,Avastやめたほうがいいんじゃ説が出てくる気が…….

 

問題:某サイト(大学のなのでちゃんとしていると思われる)からPDFをダウンロードしたらDLできない.Chromeのヘルプを見る限り,怪しいのはウィルススキャン(Avast)だった.

 

対処法:雑すぎるだろこれ.でもまぁうまく言ったしな.

 

1,まずPDFをブラウザ上で閲覧する.

2,ブラウザ上で開いているPDF(既にローカルのどこかにDLされてるよなこれ)をページごと保存.

3,保存したページを開く.

4,そこからPDFを保存.

 

以上でした.悲惨すぎるだろ.何だよこれ.Avast使うの真面目にやめようかな…….別の使ったほうが良さそうな気が.

Pythonでフルパスからディレクトリを一括で作る

なんかアレがアレでPythonでフルパスから中間ディレクトリごと一気にディレクトリ作りたいなぁってときあると思います.というかありました.

イメージとしては,何らかの親ディレクトリの下にディレクトリとファイルがたくさん存在していて,それぞれのファイルを処理した後,別の親ディレクトリの下に,ディレクトリ構造を保持したままファイルを保存したいみたいな,なんかそういうときに使えると思います.

私が取った方法はこんな感じ,でもこれイケてない.

# ディレクトリのリストをファイルにする
# find [ここに/full/path/] -type d  > dir_list.txt

# このファイルを読み込んで,読み込んで作成する.

import os

dir_list = open("/dict_dir_list.txt", mode="r")

with dir_list:
    for dir_path in dir_list:
        os.mkdir(dir_path.strip())

このあとfindでつくったファイルのリストを読み込んでこねこねすればエラーはいたりしないはず.なんだけど,もっとイケてる方法が.

イケてる方法としては,os.mkdir()ではなく,os.mkdirsをつかう.具体的な使い方としては多分こんな感じ.

import os

file_path = /full/path/hoge/hoga/filename.txt
dir_path = os.path.dirname(file_path)
os.mkdirs(dir_path)

行数自体は増えているけど,こっちだとファイルパスのリストから一発で作れるので,こっちの方が良いと思われる.

資料作成駆動研究

特に何も考えずにやっていたんですけど,それなりに良い気がしたので今週の週報で書いておきたい.

私は締切がないとどうにも体が動かない人間なので,メンターさんには週に1回程度ミーティングをしてもらって,毎週あーだこーだ言ってもらうようにしているのですが,その際に毎回発表資料を作成するようにしています.

 

発表資料といってもOneNoteに適当に書いた文章を見せながら話をするだけなので,別に大したことをしているわけでもないのですが,毎度毎度研究した話を資料に作り直すのは時間もかかるし面倒くさいしなにより辛いので,最近は発表資料を作りながら研究をするようにしています.

 

この時の手順というのがそれなりに大切で.だいたい以下のように作っています.

 

1,今週の議題として,見出しを作成する.この見出しがそのまま作業内容になる.

2,実際に作業を行いつつ,見出し以下に有益なURLや実験結果などを書き込んでいく.本当にメモなので,多少雑でもいいから書きこんでいく.

3,実際の作業が終わったら(だいたい発表の前日ぐらい),来週に向けての話や,気になる話題,相談したい内容(学会出たいです,この論文わけわからんかったなど)を書き込んでいく.

4,資料を見せながら発表(といっても今週やった話をするだけ).雑ではあるものの言いたいことは全部資料に書いてあることが分かっているので,話すときも楽ちん.

 

雑ですがだいたいこんな感じ.2番だけやっている人はおそらくたくさんいると思うけど,1番と3番はものすごく効くのでやったほうがいいと思っています.1番は実質的にはスケジュールをたてるのと同じなので,私のようにカレンダーやToDoリストに今週やるべきことを突っ込むのが面倒な人におすすめ.3番は,メンターさんが具体的な指示が出しやすくなったり,無駄な時間を使わなくなったりするのでぜひやるべき.

 

あと,これ書いているので日報を書かなくなりました.作業内容が書いてある見出しに日付を加えればそれで実質日報になるので.しかも研究に関する情報は全部一週間単位で一つのドキュメントになっているので管理も楽ちん.

 

というわけで,みんな資料作りながら研究しまししょう.資料作成駆動研究しましょう.

WindowsでUNIXのsortを使うメモ

www.k-tanaka.net

cmdのsortは列指定ができないということで驚愕しました.マジかよ.というわけでLinuxのsortコマンドをWindowsで使えるようにします.といっても一瞬で終わるお話で.

github.com

これインストールして,gsort --helpって打つと,

$ gsort --help
Usage: gsort [OPTION]... [FILE]...
Write sorted concatenation of all FILE(s) to standard output.

Ordering options:

Mandatory arguments to long options are mandatory for short options too.
  -b, --ignore-leading-blanks ignore leading blanks
  -d, --dictionary-order      consider only blanks and alphanumeric characters
  -f, --ignore-case           fold lower case to upper case characters
  -g, --general-numeric-sort  compare according to general numerical value
  -i, --ignore-nonprinting    consider only printable characters
  -M, --month-sort            compare (unknown) < `JAN' < ... < `DEC'
  -n, --numeric-sort          compare according to string numerical value
  -r, --reverse               reverse the result of comparisons

(以下省略)

ちなみに他にもいろいろ一緒にインストールされていて,gow -lって打つと出てくる.

$ gow -l
Available executables:

  awk, basename, bash, bc, bison, bunzip2, bzip2, bzip2recover, cat,
  chgrp, chmod, chown, chroot, cksum, clear, cp, csplit, curl, cut, dc,
  dd, df, diff, diff3, dirname, dos2unix, du, egrep, env, expand, expr,
  factor, fgrep, flex, fmt, fold, gawk, gfind, gow, grep, gsar, gsort,
  gzip, head, hostid, hostname, id, indent, install, join, jwhois, less,
  lesskey, ln, ls, m4, make, md5sum, mkdir, mkfifo, mknod, mv, nano,
  ncftp, nl, od, pageant, paste, patch, pathchk, plink, pr, printenv,
  printf, pscp, psftp, putty, puttygen, pwd, rm, rmdir, scp, sdiff, sed,
  seq, sftp, sha1sum, shar, sleep, split, ssh, su, sum, sync, tac, tail,
  tar, tee, test, touch, tr, uname, unexpand, uniq, unix2dos, unlink,
  unrar, unshar, uudecode, uuencode, vim, wc, wget, whereis, which,
  whoami, xargs, yes, zip

素晴らしい.

Pythonで全角・半角記号をまとめて消し去る

これ,早いのか分かりませんけど,とりあえず手元の環境ではそれなりにうまく行っているので,書いておきます. このコードはPython3で書いています.Python2でも似たようなことをすれば動くみたいですが,若干違うので,後半の参考URLを見てください.

import unicodedata
import string

def format_text(text):
    text = unicodedata.normalize("NFKC", text)  # 全角記号をざっくり半角へ置換(でも不完全)

    # 記号を消し去るための魔法のテーブル作成
    table = str.maketrans("", "", string.punctuation  + "「」、。・")
    text = text.translate(table)

    return text

ざっくりとコードの説明を.unicodedata.normalize()は,Unicode文字列の互換等価性なるものに基いて文字列の置き換えをしてくれます.全角記号の文字には互換等価性があるらしく,ようはその等価性がある文字が半角記号らしいので,結果的にこの関数をかませると大体の記号が全角から半角になってくれます.

その後,str.maketrans()で実際に置き換える規則を指定します.この関数,第一引数と第二引数に文字列を指定すると,それぞれ特定の文字単位で置き換えられます.イメージとしては("abc","ABC")を指定した時,aがAに,bがBになります.が,今回はそこの引数は使わなくて,第三引数のみを使います.第三引数に指定した文字は削除してくれるので,ここに消し去ってほしい記号をぶっ込みます.

更にその後,作成したテーブルを元にtranslate()で実際に置き換えをして処理終了.お疲れ様でした.これで確実に全ての記号を消せたかというとちょっと微妙なのですが,大体の記号は消せるみたいです.

参考にしたURLは以下の通り.

Pythonでの文字列置換をマスターする - orangain flavor

Best way to strip punctuation from a string in Python - Stack Overflow

string - translate() takes exactly one argument (2 given) in python error - Stack Overflow

4. 組み込み型 — Python 3.5.2 ドキュメント

6.5. unicodedata — Unicode データベース — Python 3.5.2 ドキュメント

kh.log: Pythonで unicodedata.normalize を使って全角半角を正規化する方法