shonen.hateblo.jp

やったこと,しらべたことを書く.

配列とEnumerable,どちらが高速?

問題

いくつかのrubyコードに対して実行時間を計測する.

require 'benchmark'

# p `ruby -v`

foo = (1..5050505)
[
    'foo.reduce(:+)',
    'foo.to_a.reduce(:+)',
    'foo.to_a.reverse.reduce(:+)',
    'foo.each.reduce(:+)',
    'foo.each.to_a.reduce(:+)',
    'foo.reverse_each.reduce(:+)',
    'foo.reverse_each.to_a.reduce(:+)'
].each do |e|
    puts e
    p Benchmark.realtime { eval(e) }
end

どのコードが高速で,どのコードが低速だろうか?

続きを読む

jsonのparserを書く

2018/08/05 致命的なミスを修正しました

JSONとは

javascriptをベースに設計された,軽量のデータ交換フォーマット.

詳しくは,https://www.json.org/json-ja.html

目的

構文解析を頑張るC++で書いたら型がだるかったのでRubyで書く.

jsonを読み込みたいだけならrequire 'json'

縛り

  • テスト目的以外での json モジュールの使用禁止.
  • #to_i 禁止.ただし1文字の変換を除く.
  • Regex禁止.ただし文字判定を除く.
  • `置換操作メソッドの禁止.

hexadecimalでズルしました…

続きを読む

手抜きjson構造体をC++11かC++14辺りでざっくり書く.

ざっくり.

JSONとは

気味の悪い拡張子. javascriptをベースに設計された,軽量のデータ交換フォーマット.

詳しくは,https://www.json.org/json-ja.html

仕様の省略

仕様の全てを実装することはそんなに大変では無いものの,ブログに載せられない量になってしまいそうだったので,仕様を省略する.

実装するのはobject*1numberだけ.arrayobjectで代用が効くので実装しない.

仕様ではkeystringだが,numberで代用.

*1:Hash.ソースコードではPairs

続きを読む

rubyからtelnetで接続する

別の記事を書こうとしたところ躓いてしまったので

環境

raspberrypi zero WH

やりたかったこと

rubyプログラムから動作中のdockerコンテナに対してコマンドを実行したい.

やったこと

コンテナ上でtelnetdをインストール,ホストからtelnetでアクセスしてコマンド実行.

ところでdocker要素が全く無いんですが…

続きを読む

多層ニューラルネットワークのフルスクラッチ実装(コードと検証のみ)

概要

非線形分類器も学習可能な多層ニューラルネットワークフルスクラッチで実装した.

役に立たないだとか車輪の再発明だとか言われがちですが,やっぱり面白いですよね.

続きを読む