2016-02-01から1ヶ月間の記事一覧

自宅サーバを立てるために最小限度すること

以前から遊びで自宅サーバを立ち上げたいと思っていて、とりあえず最小限度何をすればよいか調べました。 とりあえず CentOS などで本格的なサーバを立てるのではなく、まずはふつうの Ubuntu 14.04 でやってみました。 まず、家庭の LAN に割り当てられてい…

Ruby で多重配列を簡単に生成するメソッド

ブロックを使わずに、簡単に Ruby で多重配列を生成します。Array.make(ar, ob) です。ar は配列で多重度を指定します。ob は初期化因子(初期値)ですが(省略可能)、Array.new とちがって ob をコピーしたものが入ります。なので、初期値の一部を object_…

Windows に GitHub から野良Gem をインストール

以前作った野良Gem ですが、bundlerを使ってインストールしていたので、Windows には入れることができませんでした。しかし、specific_install という Gem を使えば Windows でも可能だということがわかりました。specific_install のインストールは $ gem i…

ヒープソート

破壊的メソッドになります。 class Array #要素iから下へ、maxヒープ状態が満たされるようにselfを修復する def max_heapify(i) l = 2 * i + 1 r = l + 1 largest = (l <= @heap_size - 1 and self[l] > self[i]) ? l : i largest = r if r <= @heap_size - …

スタックとキュー(待ち行列)

キュー(待ち行列)の Ruby 実装例です。スタックは Array で実装されているので、キューだけ実装してみました。ただし既に Queue クラスが thread ライブラリに存在するので、クラス名は UserQueue にしました。以下は限られた長さの配列を無駄なく使うため…

野良Gem「utils」をバージョンアップしてみた(※古い記事)

注記。こちらのやり方の方がいいと思います。 obelisk.hatenablog.com 以下は古い記事です。 GitHub に入れておいた野良Gem「utils」ですが、バージョンアップしてみました。 野良 Gem の作り方(Ruby) - Camera Obscura の続きです。bundler が必要です。 …

不等式の一問題

また rscの日記さんのところからです。もとの問題はこちら。 ある塾のA組からC組までの3つの組には、合計105人の生徒が在籍しており、それぞれの組の生徒数に関して、次のア、イのことがわかっている。 ア B組の生徒数の3倍は、A組の生徒数の2倍より5人以上…

野良 Gem の作り方(Ruby)

野良 Gem(RubyGems.org に登録していない Gem を、ここではこう呼びます)が何とか作れるようになったので、自分用にメモしておきます。初心者なので、理解していないところがたくさんあります。あくまでも備忘録なので、そのつもりで。OS は Linux Mint 17…

野良 Gem を公開してみた(Ruby)

自分でも Gem を作ってみたいなあと思い、野良 Gem(RubyGems.org に登録されていないやつ)を作って GitHub で公開してみました。Naver まとめから画像をダウンロードする Gem です。bundler でインストールして下さい。Gemfile に gem "naver", github: "o…

GitHub から野良 Gem を bundle install

Ruby の Gem って、別に RubyGems.org に登録しなくても使えるのですね。ここで Gem の作り方について解説してあるのですが、そこで例に挙げられている Gem も GitHub から bundler でインストールできます。まずいつもどおりの Gemfile ですが、ただ gem 't…

Linux Mint(Ubuntu)で効果音を鳴らす

/usr/share/sounds/ あたりに色いろな音が入っています。Linux Mint 17.2 では $ paplay /usr/share/sounds/freedesktop/stereo/complete.ogaなどで鳴ります。色いろ試してみて下さい。※参考 Ubuntu日本語フォーラム / ビープ音が鳴りません

ファイル(ディレクトリ)を更新日時順にコピーする(Ruby)

変数 snd に送られるファイル(またはディレクトリ)の入ったディレクトリ、rsv に送り先のディレクトリを入れます。確実に時間順にするために 1.2 秒間スリープしています。 require 'fileutils' snd = '/home/***/Pictures'; rsv = '/media/***/99EE-E8C41…

Ruby の Mechanize を使ってみた

Mechanize は超強力です。使ってみてとても愉快でした。パースには少し時間がかかりますが、使いやすくて楽です。JavaScript がエミュレートできないだけ残念ですが、それはないものねだりというものです。誰かが「Mechanize はブラウザだ」と言っていました…

SSH でファイル転送(Linux)

Linux(Ubuntu)同士でファイルを手で移してやるのが面倒なので、SSH を使ってみることにしました。とりあえずローカル(インターネットに出ない)で使う前提です。まずサーバー側に OpenSSH を入れます。 $ sudo apt-get install openssh-serverインストー…

ハッシュで同一の値を持つキーを集める(Ruby)

組み込みメソッドにないような。配列で返します。まあ、本来のハッシュの使い方ではないですよね。 class Hash def collect_keys(value) each_key.select {|k| self[k] == value} end end p({:A=>0, :B=>2, :C=>0}.collect_keys(0)) #=>[:A, :C]

質問投稿サイトの問題を解く

また rscの日記さんのところにあった問題です。おもしろそうなので Ruby で解いてみました。元の問題はこれです。問題をコピペしておきます。 円卓の判断推理 問題 A~E の5人が円卓に等間隔で着席している。5人のうち女性は2人で、この2人の席は隣り合…