意味悲鳴

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

内田真礼になるぞ宣言

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 を使って全角半角を正規化する方法

議論する準備

これはとても当たり前で,当たり前の話なんですけども,議論をするには議論のネタが必要なんですよ.必要不可欠.で,今しがたメンターさんと面談してきたんですけど,その部分が準備不足でなにかすごく無益な時間を過ごしてしまいました.

 

今週に関しては作業の取捨選択が上手くできていなかったので,そのせいで報告できる内容が全くもって薄っぺらになって,結果的に議論のネタができていませんでした.メンターさんも「まぁ進まないのは仕方ないけど,今回の場合はバッサリ切っていい部分だったかもしれないよ」とやんわり注意されて,申し訳ない気持ちでいっぱいに.

 

それと,先週の記事ではタスクを設定する部分が完全に振り出しに戻ったとか言ってたんですけど,どうやら私が先走っていただけのようで,そのあたりも反省.

今日メンターさんにハッとしたんですが,「自分の研究なんだから,もうちょっと自由に好き勝手やって良いんだよ」という一言.なんというか,これまでわりと指示された研究ばかりだったので,今回もそうなるもんだと思っていたんだけど(先週の指摘もあるし),でも結局やるべきはそうじゃなかったみたいで.もっと好きにやったらどうと言われて少し元気が出た.

 

ひとまず来週までに取り組む内容が決まったので,粛々とこなしていくつもり.頑張るぞい.

広告を非表示にする