memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

ruby

ログファイルを監視して何かするRubyコード(メモ)

研究でRailsのdevelopment.logを監視して,特定のキーワードが出現したら何かするツールを欲しくなりました.これまではtail -fを使っていたのですが,Windowsなどでも動作することを考えて,Rubyだけで実装したくなったわけです.Rubyでtail -fを実行する方…

重複件数をカウントするRubyスクリプト

お題AとBの科目の履修者リスト(学籍番号)があります。AとBを両方とも履修している人数をカウントしたいです。Rubyで書いてみた(a.rb)d = {} open ARGV[0] do |f| f.each_line do |l| l.chomp! d[l] ||= 0 d[l] += 1 end end d.select! {|k, v| v>1}準備…

WEBrickでcheckboxなどの複数値を受け取るには?

昨日、学生さんから授業課題について質問があって調べたのですが簡単には見つからなかったので書いておきます。WEBrickとはなんぞや?という話は以下のような記事がありましたのでご参照ください。 WEBrickの使い方メモ - Qiita 前提 前提: Ruby 2.6 実行方…

コーンフレーク。。。じゃない。テキストファイルから会話音声ファイルを生成するスクリプトを書いたったん

背景 偉い先生と一緒に担当している科目がありまして、前半は偉い先生、そして後半は僕なんですが。4、5週間後くらい始まるので少しずつ準備を進めています。で、とある回のスライドで以下のようなものを作りました。たまにありますよね?理系の本で、先生…

WEBrickでHTTPリクエストにマルチバイト文字列が入っていた場合の挙動について

(注意)本エントリーは受講生向けの説明です。RubyでのWebアプリ開発の演習で以下のコードがありました。簡単にしています。HTMLフォームに入力された文字列をRubyで受け取って表示するという基本的なプログラムです。 <html> <head> <meta charset="utf-8"/> </head> <body> <form action="/aaa"> <input type="submit" name="btn" value="決定"/> </form> </body> </html> require 'webrick' config…

bcrypt-rubyについて調べたメモ

Railsでログイン機能を実装するときに、パスワードを暗号化するのに表記のライブラリを利用するのが普通らしいです。授業のネタ本にしている以下の書籍の361ページに以下の図で説明がありました。改訂3版基礎 Ruby on Rails (KS IMPRESS KISO SERIES)作者…

台風の影響により終日休講になりました

本日の講義はすべて7月14日(土)に振り返られます。。。orz ちょうど予定がなくてよかった。。。ということで朝から自宅待機で。とはいえ積んでる仕事があるのでボチボチ片付けながら。ちなみにうちの休講条件は以下のようになっています。検索回避のた…

rubyのコード中に全角空白が入った場合の挙動について

rubyの演習課題がわからないと、とある学生から質問があり対応。エラーがなかなかわからない。。。私自身、rubyでの指導経験がないため(自分で起こしたことがないような)エラーメッセージへの対応はまだまだ不足しています。エラーの原因は全角空白でした…

スキャンした画像ファイルのファイル名を固定する方法

タイトルだけではよくわからないですね。。。明日から開催のイベントに向けて、ゲームを少しだけ改造していました。改造のポイントはステージ?を自分で描いて作れるようにする、ということです。来場者に紙を配り、そこにペンで以下のような感じで書き込ん…

exiftoolではmpgファイルのExif情報は変更できません

もういいって感じかと思いますが、作業ログなので。。。昨日、以下を書きました。ファイル名から日付情報を取り出してExif情報を書き換えるrubyスクリプト - memorandumsこれまではmp4が対象ファイルだったのですが、変換対象にmpgファイルがあることがわか…

ファイル名から日付情報を取り出してExif情報を書き換えるrubyスクリプト

少し前に以下のエントリーを書きました。ファイル名から日付情報を取り出してファイル更新日付にセットするrubyスクリプト - memorandumsGoogle Photoに動画(mp4)をアップするときに、意図した日付にならず(撮影した動画ファイルのサイズを小さくするため…

学生・教員はRubyMineを無料で利用させていただけるんです!ありがたやありがたや。

今年度から新カリがスタートし、導入言語をJavaからRubyに変えたため、初心者でも使いやすいIDEを探していました。vimやemacsやatomなどを使われる方が多いようですが、やはりエディタ内でエラーを見たり実行できるようにしたいはずで。以前、Rubyでとある研…

gosuチュートリアルを試してみた(作業ログ)

■背景(お急ぎの方は本題へどうぞ)1年生向けの共通科目に基礎ゼミという科目があります。大学によって呼び名は違うと思いますが、要はこれから大学生として勉強するにあたり、必要なことがらを勉強してもらいましょうという科目です。学科の専門に応じて、…

Rubyで大文字・小文字を区別してファイルを扱う

今日のお話はとても細かいです。作業メモとして記録します。 以前、以下のようなRubyスクリプトを作りました。memorandums.hatenablog.comInstaだのLINEだのという時代に古めかしいと思いますが個人的には重宝していています。で、このスクリプトには重大な…

RVM(gemset)のdefault設定方法

railsでアプリを作ったのは数年前。きれいさっぱり忘れています。少し時間ができたので再勉強。rvmのgemsetでrailsをインストールしたものの、以前もうまくdefault設定ができず困ったことを思い出しました。で、できたのでメモです。rubyとrailsの導入はこち…

サムネイル画像(html)を生成するrubyプログラム

撮影した写真をサムネイル化してhtml表示するのにIrfanViewを利用してきました。特に理由はないのですが、Windowsをメインで使っていた頃からの習慣で。ただMacでは利用するたびに仮想化ソフトを起動しなければならず面倒でした。それでも使用頻度が少ないの…

文字列中にある文字列が含まれる個数をカウントする

プログラムを作っていて表記なようなルーチンが必要になりました。gistを探せばすぐ出てきそうですが作ってみました。Rubyらしいプログラムはなかなかできないもので。。。1文字ずつベタで検索するプログラムを作ったのですが、サーチならinclude?やindexが…

makepath

Windowsとmac(Linux)ではファイルパスの区切り記号が異なりますね。rubyプログラムからファイルにアクセスするときに実行環境を参照してこの区切り記号を切り替えるプログラムを作りました。恐らく、こんなプログラムはどこかの便利ライブラリに入っていると…

欠席者管理用Webシステム(未完)

現在、学科教員間でメーリングリストを介して欠席者の連絡とフォローをしています。科目担当者が講義毎に記録する出席簿から欠席者を抜き出し全員(主は担任)に報告します。特に注目しているのは連続欠席者です。休みが少し続くということは何か問題がある…

csvファイルからfixturesを作成するrubyプログラム

とりあえず自分用に作ったので公開。この手のプログラムは世の中に掃いて捨てるほど公開されていると思いますが、簡単なプログラムなので自分で作ってみました。エラー処理は全くしていませんが。。。もし良ければ使ってください。 #Usage: fixtures_generat…

PStoreのtransactionメソッドのようなもの

メモです。今、rubyのおさらいを兼ねて「作りながら学ぶRuby入門」をざーっとフォローしているのですが、そこで出てきたPstoreの使い方のページ(176P)に以下のコードがあります。 require 'pstore' db = PStore.new('dbfile') db.transaction do db["drink"…

Vim within IRB を試してみた

Rubyでちょっとしたコードを試したいときにirbを使いますが、ブロックなど複数行にわたるプログラムをirbで書くと見にくい書きにくい。その問題を解消してくれるのがinteractive_editorのようです。Link: Running Vim within IRB設定方法は上記のリンクにあ…

Benchmarkの合計を求める

Rubyにコードの範囲を指定して処理時間を計測する便利クラス「Benchmark」があります(今日知りました)。使い方は以下のような感じです。 require 'benchmark' puts Benchmark.measure { for i in 1..1000 puts 'hello' end } puts Benchmark::CAPTION 実行…

Ruby1.9.1のcsv.rbではまる→強制的に解決

企業との共同研究で開発してきた物流シミュレータ「流」。物流規則をDSLっぽくしたかったのでRubyのお力を借りています。Rubyは1.8.7で開発してきました。といってもRubyでまじめにプログラムを書いたのは今回が初めてなので大したことはやっていません。不…

ランダムソート

以下のような問題と選択肢のペアがあったとします(SPI言語問題)。正解をランダムソートして問題を作るプログラムを作ってみました。問題 正解 1 起源 1 発祥 2 揶揄 2 愚弄 3 我慢 3 忍耐↓(ランダムソート;例)問題 選択肢 1 起源 1 愚弄 2 揶揄 2 忍耐 …

Googleカレンダーの過去の予定を一気に削除する簡易スクリプト

仕事が一段落したので、部屋やPCなどの整理をしていました。GmailやGoogle Calendarもいらないものは削除。と思いきや、Google Calendarは予定を全部削除することはできても一部(例えば1年前より過去の予定とか)をまとめて削除する機能がありません。なぜ…

クラスメソッド+演算子式(メモ)

昨年末にクラスメソッドについて少し書きました。ついでなので、演算子式も使えると便利だよなということで試したメモ。Rubyリファレンスの演算子式とクラスメソッドの説明を参考に。 class A @@a = [] def self.[] x @@a[x] end def self.[]= x, v @@a[x] =…

日時文字列からTimeへの変換(メモ)

ごくごく初心者的なメモです。VBで出力した日時文字列をTimeオブジェクトに変換する記述がわからずはまっていました。いろいろとやってみて最終的にわかったのはtimeライブラリを用いる方法です。これは本当に簡単。たった1行です。こんなところに書くまで…

コンプガードコントロールセンターの管理マシンリストを作成するRubyスクリプト

コンプガードコントロールセンターというPC管理ソフトウェアを利用しています(積極的に利用しているというより利用せざるを得ない環境という意味)。管理するPCをGUIで登録してリモートでPCの起動・停止などができます。 ある用事でこのソフトウェ…

mac(SnowLeopard)+netbeans6.8+ruby1.8.7でデバッガが動作しない

実は先日、解決済みだったのですが、なぜ解決できたかわからなかったのでメモしませんでした。。。もう1台のmacで同じ現象が。。。とりあえず試してみたのは以下の通りです。■ruby-debug関係の状況調査 gem list ruby-debug LOCAL GEMS *** ruby-debug-base…