tomabouの日記

勉強したことなどを書いていきます

マイブーム

最近アコースティック・ギターにハマっている

今年の正月、神田神宮での初詣に並んでいるときに友人にそそのかされてamazonで購入したわけだ

よく見るコードは大体抑えられるようになったので、(augとか分数コードとかはすぐには抑えられないが)コード譜を見ながら右手をガチャガチャ16ビートもどきとかカッティングもどきとかしてるとそれっぽくなって楽しいわけである

ピアノで適当にコード抑えても全然それっぽく感じないが、ギターは経験が少ないので自分が簡単にそれっぽくなったと錯覚してくれるのでより楽しいわけである

そもそも一般的に新しく物事を初めて最初にぐっとできることが増えるフェーズは楽しい。この楽しさdrivenで物事をやるとすぐに飽きてしまう訳であるが、まあ想定内である

能力の特異性から飽きたら何も残らないゲームと違って、ギターができるというのはそこそこの一般性があると思うので飽きてもそんなに虚しくならないかなと思って始めたわけだ

大学のレポート

はじめに

大学のレポートを頑張って書くのに提出してそれで終わりではもったいないなぁと思います 昔書いて個人的に気に入ってるレポートを発掘したのでブログぐらいには貼っておこうかなという気分になりました 学部2年の数値解析学のレポートです。

num_ana_report.pdf - Google ドライブ

非常に懐かしい気持ちになりますね

ubuntu 18.04をインストールした直後に行うこと

忘れないようにしよう


python入れる

今のubuntuはsystem pythonでpipをaptで入れて、pipのバージョンをpipで上げると死ぬのでpyenv使っちゃいます

Building Python 3.6 from source on Ubuntu and Debian Linux | Solarian Programmer

sudo apt install build-essential
sudo apt install libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev 
sudo apt install libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev tk-dev

GitHub - pyenv/pyenv: Simple Python version management

vscode

Visual Studio Code - Code Editing. Redefined

alias code='code --disable-gpu $@'

プログラム言語 Rust

はじめに

最近「プログラム言語 Rust」という本を買いました。 Rustはオンラインに The Book と呼ばれる良いドキュメントがあり、それを読めば十分なのでは?という意見もあると思いますがカッコイイので買いました

感想

オライリーの方が自分には理解がしやすかったです(The Book眺めてよくわからんと思っていたことが本を読んだらかなり整理されました) 

オライリーのほうが話が整理されているんじゃないでしょうか

例えばオライリーでは「Rustは配列を指す長さ付きのFatPointerがありますよ」という話(これは一瞬で理解できる)を所有権の概念より先に出して、そのあと所有権の話をします。これがThe BookではWhat is ownership?という話から始まります。そしてその為にスライスを持ち出して、その後スライスの解説をするわけです。僕は前者の方が良いと思いますね

あとHaskellで見覚えのある機能が色々入っているので(Option型 パターンマッチ trait)Haskellは勉強してみるに限りますね

数独を焼きなましてみた

はじめに

数独という9*9のマスに数字を入れていく有名なパズルがあります。
飛行機に乗っている間、機内ゲームの数独で遊んでいたのですが、一番レベルが高いものがなかなか解けませんでした。
足元を見るとカバンにパソコンが入っていたのでパソコンで答えを見つけることにしました。

アルゴリズムの選択

dfs

選択肢が少ないマスを選択して、深さ優先探索するというアルゴリズムがすぐ思いつきます。それを実装するとほぼ問題ないのですが、ワクワク感が無いのが難点です。

焼きなまし

アニーリングとも呼びます。このアルゴリズムは厳密解を求めるには向いていませんが、数独ぐらいなら解けそうな気もします。ワクワク感があるので実装してみることにします。

続きを読む

Atcoder補助ツールを作った話

Atcoder

久しぶり競技プログラミングをしようと思い、atcoderを開き、コードを書いて提出する前にテストしようとしたところ、「この単純作業を自動化しないでなーにが競技プログラミングじゃ」という思いが芽生えました。自動化しました(車輪の再発明ですが気分転換なので無問題です)。

機能

  • 問題サイトのhtmlから入力例と出力例を自動取得
  • ログイン
  • コードをコンパイルしてテスト
  • テストを通ったら自動提出

beta atcoderを利用しています

ログイン

ログインするときに送られるpostリクエストをブラウザの開発者モードで眺めると、クロスサイトリクエストフォージェリ(2012年ごろに話題になったパソコン遠隔操作事件でも使われていたものです)対策の為に、csrf_tokenがpostされていることが分かります。

csrf_tokenはcookieの中に含まれていますが、(当人以外は知らないデータをpostのデータの中に含めることで、URLを踏ませることで不正なリクエストを送ることをを防いでいます。)ログインページのhtmlのなかに含まれているのでそこから取りました。

sessionの情報はpickleして保持しておきます。

感想

割とすぐできて便利なのでいい練習になりました。 自動テストされて提出されると気分がいいですね

GitHub - tomabou/sports: sports programing utility

Word文章にソースコードを貼る法

はじめに

皆さんはレポートを書くとき何を使うでしょうか。何だかんだでMicrosoft Wordという人も多いと思います。僕はMicrosoft Word を推しているのですが、Wordの欠点としてソースコードをうまく貼ることが出来ないことを上げる人もいます。
最近圧倒的解決法を知ったので紹介したいと思います。

方法

Visual Studio Code(以下VS code)はそこそこ良いエディタです。VS code でソースコードを開けばいい感じに色付けをしてくれます。
f:id:tomabou:20171227232817p:plain

Wordを開き、1×1の表を挿入してVS codeで開いたソースコードを張り付けます。
f:id:tomabou:20171227233225p:plain

こんなに綺麗に貼り付けることが出来ました。これからソースコードを貼り付けなければならないレポートにも積極的にWordを使っていきましょう。
なおこの方法はVS codeで無くても書式情報付きでテキストをコピーできるエディタなら適用できると思います。

まとめ

Wordは数式入力がゴミとよく言われますが、最近ではLaTex形式の数式入力にも対応しており複雑な数式も簡単に入力できます。Wordをガンガン使っていきましょう。