空気ねこにもたぶん分かる RSpec
空気ねこは猫、エレメンタルの青パーマネントで飛行を持ってると思われる。
消費マナは多分 (2)(B)
でパワー/タフネスは 2/3 か 3/2 だと思われる。
この記事は RSpec のドキュメントを読んで学んだことを自分用にまとめたものなので、他の人にはあんまり役には立たないかもしれないかもしれないかもしれない。
ということで、RSpec のインストールの仕方を最初に書いておくと思ったが、参考にしたかもしれないリンクを最初に置いておく。
参考にしたかもしれないリンク
RSpec のインストールの仕方
私は開発用というか、書き捨てプロジェクトを ~/workspace
に置いているんだけれども、そこに RSpec 使うようのフォルダ rb-hello-rspec
を作成することにする。
% cd ~/workspace
% mkdir ./rb-hello-rspec
% cd ./rb-hello-rspec
すごくどうでもいいと思うんだけれども、rb
は ruby、hello-rspec
は RSpec こんにちはの意味を込めてなんか学ぶ用のフォルダにはそんな風につけている。
% emacsclient ./Gemfile
そんで Gemfile
になんか書く:
source 'https://rubygems.org' gem 'rspec'
Gemfile
のことはここでは端折るけども、次は bundle install
する。
% bundle install
うまくいくと、Gemfile.lock
ができる。
% ls
Gemfile Gemfile.lock
うまくいっていると、rspec
できるので、 rspec --init
する。
% rspec --init
そーすると、こげん感じになる:
% ls -AR
.:
.rspec Gemfile Gemfile.lock spec/
./spec:
spec_helper.rb
スペックファイル((RSpec におけるテストケースとかテストスクリプト的なファイル))は ./spec/
の中に書くことになる(多分)。
スペックファイルを書く
ということでスペックファイルを書いてみる。
% emacs-client ./spec/be_spec.rb
be matchers の例を見ながら書いてみた:
describe 'be_truthy matcher' do it 'be_truthy matcher' do expect( true ).to be_truthy expect( 7 ).to be_truthy expect( 'foo' ).to be_truthy expect( nil ).not_to be_truthy expect( false ).not_to be_truthy end end
テストるには rspec
って打つとよさげ。
% rspec
.
Finished in 0.05764 seconds (files took 3.99 seconds to load)
1 example, 0 failures
続く!
Node.js 3 分デベロップ
うにょーん(ワイルドカード的挨拶)。りひにーです。
今日は Node.js 3 分デベロップと題して、Matrix protocol 的なやつのバージョンを返すやつを Node.js で作ってみようと思います。
yarn で必要なモジュールをいんすとろーるする
yarn で必要なモジュールないしはパッケージをいんすとろーる*1します。
% yarn add express body-parser
簡単ですね!
必要なやつを require
する
今度はいんすとろーるしたやつを require
します。
const express = require( 'express' ); const bodyParser = require( 'body-parser' );
express()
る
express()
してなんらかのオブジェクトをとってきます。
なんらかのオブジェクトは app
という const
な変数にとっておきましょう。
後で使います。
なんで const
かというと、活きがいいので危険だからです。(とっても安全です)
const app = express();
body-parser
の設定をしちゃう
body-parser
の設定をしちゃいます。
先程とっておいた活きのいい app
を使います。
気になる人は水中メガネかなんかをしておいた方が良いですよ!
水が跳ねますからね!(跳ねない)
// body-parser の設定をするよ!するよ! app.use( bodyParser.urlencoded( { extended: true } ) ); app.use( bodyParser.json() );
ここら辺でポート番号を考えておく
ここら辺で一休みしてポート番号を考えておきます。
とりあえず、3000 にしておきましょう。
キリがいいし、なんだか新しい感じがするからです。(バイアス)
// ここら辺でポート番号を宣言しておく。 const port = process.env.PORT || 3000;
バージョンを返すやつを定義する
お待ちかね今日のメインディッシュ、バージョンを返すやつを定義します。
よくこことにらめっこしましょう。
// GET /${domain}:${port}/_matrix/client/versions app.get( '/_matrix/client/versions', (request, response) => { response.json( { versions: 'r0.0.1' } ); } );
鯖を起動する
バージョンを返すやつを定義したので、鯖を起動します。
// ルートを定義したので、鯖を起動するよ!! app.listen( port ); console.log( 'listen on port: %d', port );
ここまでを app.js
という名前で保存しておきましょう。
テストってみる
それでは、テストってみましょう。
今まで書いたコードが上手く書かれていれば、うまい具合にバージョンが返ってくるはずです。
それにはこんな風に打ちます:
% node ./app.js
そして、別のターミナルエミュレーターを起動し、以下のように打ちます:
% curl -XGET http://localhost:3000/_matrix/client/versions
どうですか?
バージョンが返ってきましたか?
(๑´ڡ`๑) おしまい
*1:インストール
すべてのピアノが破壊不能なわけではありません
apel 無し elscreen に変えた
おしまい (๑´ڡ`๑)
おやすみ
ʕ•͡ω•ʔ あれだ。今日はアドベントカレンダーはお休みなんだ。
ʕ•͡ω•ʔ うん、「また」なんだ。すまない。
ʕ•͡ω•ʔ 仏の顔もっていうしね、謝って許してもらおうとも思っていない。
ʕ•͡ω•ʔ でも、一連の流れを見た時、君は、きっと言葉では言い表せない「懐かしさ」みたいなものを感じてくれたと思う。
ʕ•͡ω•ʔ 殺伐とした世の中でそーいう気持ちを忘れないでほしい。そう思ってこの記事を書いたんだ。
ʕ•͡ω•ʔ じゃあ、おしまいだ。
╰( ´◔ ω ◔ `)╯ またな!
(*゚∀゚) これ、前もやんなかった?
╰( ´◔ ω ◔ `)╯ 知らんな!
pipenv すごいなってなった話
みなさん、アバラチア!!!(挨拶)
この記事は Syrup Lang Advent Calender 第 3 日目の記事である可能性が微量に存在すると思う。
pip
でインストールしたパッケージが一括で更新できなくてつらいなってなってたところに pipenv
っていうのがあるっていうのを知ったのでやってみようかと思った。
pipenv
をインストールする
まずは pipenv
をインストール。
% pip install pipenv
pipenv
の使い方 (すごく簡単なやつ)
Python のプロジェクトっぽい py-hogepiyo
に cd
する。
% cd ~/workspace/py-hogepiyo
これは名前ではわからないけど、flask
を使うプロジェクトなので flask
を pipenv
でインストールする:
% pipenv install flask
すると Pipfile
と Pipfile.lock
というファイルができるので、pipenv shell
を使ってなんかそれっぽい環境で実行する。(雑な説明)
% ls
Pipfile Pipfile.lock __pycache__ index.py run run.bat templates
% pipenv shell
(py-hogepiyo-XXXXXXX) %
なんかそうすると、グローバルで flask
がインストールされてなくても動かせるとか。 (まだやってない)
なんか pipenv update
とかもできるそうで、良いの見つけたなと言う感じですね。
ということで、おしまい。
参考
Google Colab をやってみた
みなさん、おはこんばんにちございます。
Syrup Lang Advent Calender 第 2 日目の記事だと思います。
はじめに
Google Colab を使って Kaggle のタイタニックのコンペ用の Python スクリプトを書きたいなと思ったんですが、Google Colab の使い方を書いていく記事になってしまっていると思います。
まずは ゲームで使う train.csv
と test.csv
をアップロードします。
以下のコードを書いて、実行してみましょう。
わかりやすくするために、ここでは同じコードを 2 つのコードセルに別々に書いてtrain.csv
と test.csv
をアップロードします。
アップロードするには、コードセルに下記のようなコードを書いて、「コードを実行」ボタンを押します。
すると、アップロード用のウィジェットが表示されるのでアップロードしたいファイルをアップロードします。
from google.colab import files uploaded = files.upload()
わかりやすくするために、ここでは同じコードを 2 つのコードセルに別々に書いてtrain.csv と test.csv をアップロードします。
iPython Notebook で書いたものを Markdown にしているので、単体で実行可能なスクリプトにするために、import
を書いていてウザさがあるかもしれませんが、我慢してください。
*1
データの確認
これで train.csv
と test.csv
の 2 つのファイルがアップロードされました。
この 2 つのファイルを pandas
で読み込んで、確認してみましょう。
import pandas train = pandas.read_csv( 'train.csv' ) train.head()
import pandas test = pandas.read_csv( 'test.csv' ) test.head()
データの穴埋め
Age に穴があるので、それを埋めます。 (何故わかったのかは省略する) 穴は NaN で表されますが、その部分に Age の中央値を入れることにします。
とりあえず、Age の中央値を確認してみましょう:
import pandas train = pandas.read_csv( 'train.csv' ) train['Age'].median()
28.0 と出ました。
Age の NaN の部分には 28.0 が入るようです。
import pandas train = pandas.read_csv( 'train.csv' ) train['Age'] = train['Age'].fillna( train['Age'].median() ) train[[ 'Name', 'Age']].query( 'Age == 28.0' )
そーいうわけで、Embarked
にも NaN があるので、一番多いと思われる(多分) S (サウサンプトン)を入れることにしました。
import pandas train = pandas.read_csv( 'train.csv' ) train['Embarked'] = train['Embarked'].fillna( 'S' ) train[[ 'Name', 'Embarked']].query( 'Embarked == "S"' )
Sex は文字列を数値に変換します。
male
は 0 に、female
は 1 に変換します。
import pandas train = pandas.read_csv( 'train.csv' ) train['Sex'] = train['Sex'].replace( 'male' , 0 ) train['Sex'] = train['Sex'].replace( 'female', 1 ) train.head()
まとめ
- Anaconda を入れなくても、Google Colab がある。
- Google Colab 上でもファイルをアップロードできる。
- Google Drive から Google Colab というアプリを追加するとノートが消えないかもしれない?
- こまめに保存しておくと吉。
*1:後で別にそんなことをする必要は無かったことがわかったが、とりあえずそのままにしておく
face のフォントを変更する方法
list-faces-display
で face の名前を知る
私の場合は markdown-mode
の face だったので、なんかそれっぽい:
markdown-code-face
markdown-inline-code-face
markdown-pre-face
を変更すればいいと見当を付けた。
変更する
set-face-attribute
を .emacs とか init.el に書く。
(set-face-attribute 'markdown-code-face nil ;; フォントファミリー名 :family "Ricty" ;; フォントの高さ(px の 10 倍) :height 100)
おしまい。
ゔぇは Vue.js のゔぇ
へろーわーるど
var app = new Vue( { el: '#app', data: { message: 'V is for Vue.js' } } );
<div id="app"> {{ message }} </div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="./index.js"></script>
これを書いてるときに、markdown-mode
のコードのフォントがおかしかったので修正していた。
コメントを承認制にした
昨日からスパムが来ていてウザいので、コメントを承認制にしました。
あと、https にしてみました。