卒論環境周り

f:id:mizukisonoko:20170309115720p:plain

無事提出!ありがとうございました。

論文

背景 & 環境

卒論はLatexが必須だった気がするのでLatexで書く。
ただ、学内のTemplateを使ってCompileしないといけなかったりして
しんどいのでMarkdownで自動生成&Deployする環境を作った。

使ったもの

学内環境でCompileしないといけなかったのとたまたまFabricを別のやつで使っていたので使った。

code

# -*- coding: utf-8 -*-
from fabric.api import *
from fabric.colors import *
from fabric.operations import *
 
from config import passwd, user
import os
 
env.hosts = ["***.ac.jp"]
env.port =  22
env.user =  user
env.password = passwd
env.tmp_filename_prefix = "temporary"
env.thesis_filename = "thesis.tex"
env.template = "thesis_template.tex"
 
@task
def compile():
  print(magenta("+++++++++++++++++++"))
  print(magenta("+ *    *       *  +"))
  print(magenta("+     Start!      +"))
  print(magenta("+  *            * +"))
  print(magenta("+++++++++++++++++++"))
 
  print(yellow("++++++++++++++++++++++++++"))
  print(yellow("+  Remove previous files +"))
  print(yellow("++++++++++++++++++++++++++"))
  if os.path.exists(env.tmp_filename_prefix + ".tex"):
    os.remove(env.tmp_filename_prefix + ".tex")
  if os.path.exists(env.thesis_filename):
    os.remove(env.thesis_filename)
 
  print(blue("++++++++++++++++++++++++++++++"))
  print(blue("+  Convert markdown -> latex +"))
  print(blue("++++++++++++++++++++++++++++++"))
  local("pandoc thesis.md -o " + env.thesis_filename)
 
  print(magenta("+++++++++++++++++++"))
  print(magenta("+ Open template ! +"))
  print(magenta("+++++++++++++++++++"))
  template = open(env.template, "r").read()
 
  print(cyan("+++++++++++++++++++"))
  print(cyan("+ Open thesis !!  +"))
  print(cyan("+++++++++++++++++++"))
  thesis = open(env.thesis_filename, "r").read()
  tex = open(env.tmp_filename_prefix + ".tex","w")
 
  print(blue("+++++++++++++++++++"))
  print(blue("+ Write thesis !! +"))
  print(blue("+++++++++++++++++++"))
  tex.write(template
    .replace("@THESIS",
        thesis
            .replace(r"\tightlist","")
            .replace(r"\begin{verbatim}", r"\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single]")
            .replace(r"\end{verbatim}", r"\end{lstlisting}")
            .replace(r".png}", r".eps}")
            .replace(r"\includegraphics",r"\includegraphics[clip,keepaspectratio, width = 8.5cm]")
            .replace(r"\begin{figure}",r"\begin{figure}[h]")
    )
  )
 
  tex.close()
  run("rm ~/thesis/"+ env.tmp_filename_prefix + ".*", warn_only=True)
  run("rm ~/thesis/images/*", warn_only=True)
  put("images/*.png", "~/thesis/images/")
  put(env.tmp_filename_prefix + ".tex", "~/thesis/")
  with cd("~/thesis"):
    with cd("images"):
      run("convert pic1{.png,.eps}")
      run("convert arch{.png,.eps}")
    run("/usr/local/texlive/bin/latex "+ env.tmp_filename_prefix + ".tex")
    run("dvipdfmx "+ env.tmp_filename_prefix +".dvi")
    get(env.tmp_filename_prefix + ".pdf",".")

やってること

thesis.mdをPandocでTexにする
templateに埋め込む
一部の構文を置き換える
できたLatexFileを学内環境に送りCompile、手元に持ってくる
( git add & commit & push)

やってみて 

大体うまく行った。
URL、Table、Code類はReplaceを組み合わせる事でうまくいく

東山奈央さんに大学院生活を応援された

応援された。

2月某日、ラゾーナ川崎プラザでの「虹のはじまり」に行ってきた。

True Destiny/Chain the world(初回限定盤)(DVD付)

True Destiny/Chain the world(初回限定盤)(DVD付)

Chain the world良い……、良いよ……

f:id:mizukisonoko:20170221002723j:plain

以下内容(敬称略)

東山奈央「ありがとうございます!」
一般人(僕)「応援しています!’」
一般人(僕)「東山奈央さんのお陰で大学院合格しました!」
東山奈央「えぇ〜すごい!!大学院頑張ってください!!」
一般人(僕)「ありがとうございます!応援しています、よろしくお願いします!」

職業病ではないが
“よろしくお願いします”
と言ってしまったが良かった。
論文発表も終わり、大学院やっていきが高まってる。がんばろう

寒かったので沖縄行ってきた

暖かかった

飛行機

LCCなので片道5千円 f:id:mizukisonoko:20170220154411p:plain

機内モードなので積み論文を読む。落ち着いて読めるので良い f:id:mizukisonoko:20170220153750p:plain

ダイジェスト

食事、あぐー豚が美味しい。 さーたーあんだぎーも食べた。 f:id:mizukisonoko:20170220154727j:plain

美ら海水族館にもいった。おもったより短い f:id:mizukisonoko:20170220154743j:plain

植物園、三森すずこが居た。
f:id:mizukisonoko:20170220154746j:plain

古宇利島。時間を忘れる。
f:id:mizukisonoko:20170220154750j:plain

万座毛。ごつごつしてた。ぞうみたい f:id:mizukisonoko:20170220154753j:plain

斎場御嶽。神聖な場所だった。 f:id:mizukisonoko:20170220154756j:plain

会津はなんか30cm以上積もってたそうで…… 逃げるは恥だが役に立つと感じた。

沖縄いっちゃお!w

dream_theater録画するやつ

ネットにいろいろ落ちてたがめんどくさかったのでこんな感じにした

準備

mizuki@AandGrecord:~$  sudo apt -y install rtmpdump ffmpeg

crontab

mizuki@AandGrecord:~$ crontab  -l
29   21  *   *   1   /usr/bin/rtmpdump -r rtmp://fms-base1.mitene.ad.jp/agqr/aandg22 --live -B 1870 -o "/home/mizuki/dream_theater/nao_$(date +'\%y\%m\%d_\%H_\%w').fly"

ハマったこと

  • crontabは%が意味を持つのでエスケープしないといけない
  • Timezoneをしっかり確認しないといけない

東大の院に行くのやめた

この記事はAizu Advent Calendar 2016

www.adventar.org

の21日目の記事となります。遅くなってしまい申し訳ないです。21日61時 なお14日の記事もあげますので

taroooyanさん <= ぼく => a_r_g_vさん taroooyan.hatenablog.com

です。よろしくお願いします

続きを読む

英語を勉強したくなった

初めに

今ニューヨークに居る。内容については後でまとめる。 こっちに来て現状の英語学習の限界とモチベーションが上がったことについて書く。

現状の英語学習

DMM英会話

eikaiwa.dmm.com

これで一日30分英語で会話している。 1ヶ月5000円ぐらいなのでふつうに良い、基本的にフリートークにして英語で会話を作ることに専念してる。
大体1ヶ月たったぐらい

NYに来て

DMM英会話のお陰で少しは聞き取る事ができると実感した(本当に)
英語は慣れというのは本当っぽい

気がついた点

体力、大事

酒を飲んでいたり作業をしてたりしていても体力があると聞き取れるが . 疲れてくると本当に聞き取れない、やばい
訂正機能が機能しなくなり何言ってるのか全くわからなくなる。しんどい
そもそもこっち来てデフォルトで英語を聞き取る事に体力を使っているので1日持たない。
 技術的な話は割となんとかなる。「ここの設定教えて」とか「どういうアルゴリズム使っているの?」は元が英語なのでそのまま意思疎通ができる。良い

英語やりたくなった点

今回は自分達が作ったライブラリの紹介、宣伝として来ているのもあるが日本発のOSSということでみんな日本のことについてとても聞いてくるし、適当に話しかけると割と盛り上がる。日本に関してみんなある程度興味持ってる。

  • 「日本て○○が○○なんでしょ!???」「そうだよ」「Oh!!!My!!Goooood!!!」
  • 「日本は前2年間行った事があるわ」
  • 「あの料理、○○がすき」
  • 「アニメ、見てるよ」

等々結構盛り上がる。が、盛り上がり過ぎて聞き取れなくなる問題が発生する
せっかく日本について盛り上がってるのに意思疎通できないのホンマにしんどい
そういう意味では英語を学習しよう、と言うモチベが湧いてきた。
あと今回は上司と二人できているが理由はともあれ上司はめちゃくちゃ英語ができる。
上司が流暢に日本の事について話してるのをみるとやはり日本の事を英語で伝えられる程度の英語力は必要だと感じた

とりあえずDMM英会話の4倍の速度で会話できるようになりたい

eikaiwa.dmm.com

カプチーノと言うライブラリを使いたかった

初めに

この記事はごちうさ Advent Calendar 20167日目の記事です。 www.adventar.org 遅れてしまって申し訳ないです .
(と思いつつ,今の時刻は2016/12/7 14:00(EST東部時間)なので許していただけると……、と言う気持ちです。)

モチベーション

このようなライブラリを見つけました。
GitHub - cappuccino/cappuccino: Web Application Framework in JavaScript and Objective-J
しかし JavaScriptもObjective-Jも触ったことがないのとより身近なライブラリを作って
出来る限りチノちゃんと一緒にコントリビュートしたということでカプチーノと言うライブラリを作りました。
今回はこれを紹介したいと思います

  • 「この部分はチノちゃんに働いてもらう?」
  • 「ココはチノちゃんが働いているから問題ないと思うよ」 等が聞こえるチームにしたいです。

作ったもの

github.com

C言語のSocket周りの練習がてら上の夢をかなえるために動きだしました。

環境

READMEにも書いてあるのですが基本的にc++14がビルドできる環境なら動きます。 シンプルにしたかったのでboostは使ってないです。

簡単な例

#include "../cappuccino.hpp"
#include <json.hpp>

using json = nlohmann::json;
using Response = Cappuccino::Response;
using Request = Cappuccino::Request;

int main(int argc, char *argv[]){
    Cappuccino::Cappuccino(argc, argv);

    Cappuccino::templates("html");
    Cappuccino::publics("public");

    Cappuccino::route<Method::GET>("/",[](std::shared_ptr<Request> request) -> Response{
        auto res =  Response(request);
        res.file("index.html");
        return res;
    });

    Cappuccino::run();

    return 0;
}

こんな形でかけます。

実行

$ ./chino
$ curl -X POST   http://localhost:1204/

改善点

  • スレッドプールとか作りたい
  • 一応RFCは見ているが本当に準拠してるのか修正
  • C++の書き方わからない

作ってみて

  • チノちゃんと何かモノを作ると言う経験が可能になったのは大きい。
  • port番号の意味でチノちゃんの誕生日を共有しやすくなった。

最後に

チノちゃん誕生日おめでとう!いつも癒やしありがたき🙏