tomabouの日記

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

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をガンガン使っていきましょう。

セルオートマトンで遊ぶ

はじめに

皆さんパソコンの背景は何にしていますか?なんか背景を変えたいなと思い、色彩センスはゼロですがいい感じの規則的な模様を勝手に生成させて背景にすることができたので紹介します。

続きを読む

AIの「語彙力」を制御する

「よくある単語」判定

りんなというMicrosoftの作ったチャットAIがあります。りんなにしりとりを挑むと「そんな単語知るかよ」という単語を連発してきて人間はとてもではないですが勝てません。しりとりのような言葉を用いた遊びをするAIを作成するには適切にAIの語彙力を制限する必要があります。今回は日本語コーパスを利用することで「簡単な単語」かどうかを簡単に判定できる、ということを紹介したいと思います。

続きを読む