マスターテーブル更新の弊害

RDB(リレーショナルデータベース)は,正規化が基本ですが,正規化することによって,検索や結合が複雑になってしまう場合があります.

次図のような承認書をデータベース化することを考えてみます.

00.承認書

まずは,1つの承認書を1レコードとして考えます.正規化前の状態は次図のとおり.

01.正規化前

これを正規化すると,次の3つのテーブルに分解できます.

Continue reading “マスターテーブル更新の弊害”

Rubyのオブジェクト配列

まずは,このRubyのプログラムをみてください.

class Abc
  attr_accessor :value
end

a = Array.new(5, Abc.new)

for i in 0..4
  a[i].value = i * 10
  puts a[i].value
end

puts "---"

for i in 0..4
  puts a[i].value
end

実行結果はこうなります.

$ ruby test.rb
0
10
20
30
40
---
40
40
40
40
40

期待していた結果,つまり後半のputsも,「0, 10, 20, 30, 40」という出力になると思っていましたが違うようです.

さて,なぜでしょう.

Continue reading “Rubyのオブジェクト配列”

Rubyで簡単な画像処理プログラム

はじめに

これまで学生の卒論等で画像処理プログラムを作成するとき,C言語で指導をしていたのだけど,画像ファイルを読み込む際にmalloc関数でメモリを確保したり,ポインタを多用したりして,画像データを一次元配列で処理する部分等がなかなか学生に理解してもらえないので,これまでCで書いていたものをRubyに書き換えようと考えたのです.

Rubyで画像処理といっても,単純に画像ファイルを読み込み,画像データを配列に格納し,コンボリューションなど加工するだけのことで,別に高機能なライブラリ(OpenCVなど)は必要ないのです.

Rubyで画像処理についてググると,ImageMagickのAPIを利用する「RMagick」を利用する例が多く見受けられます.

しかし,RMagickは,最新のImageMagick 7に非対応.従って,RMagickを利用するためにはImageMagic 6.xが必要(brew install imagemagick@6)らしい.

rmagickのインストールにハマった – Qiita
http://qiita.com/gakkie/items/1ec4c0362047154f1690

しかし,Ver.6.xではbrewでのインストールの際「–with-x11」オプションが使用できないため,displayコマンドが利用できないなど,Macでしようするのはどうも...

とりあえず,brewでは最新版のImageMagick 7を入れておくことにし,RMagickはインストールせず,ImageMagickのconvertコマンドを利用して,PGM形式に変換してから画像処理を行うことにします.

Continue reading “Rubyで簡単な画像処理プログラム”

Mac(macOS Sierra)でMongoDBを使ってみる

遅ればせながら,MongoDBを使ってみました.

これまで,PostgreSQLやMySQLなど,RDBしか触っていないので(あっ,Cassandraはちょっと触ったか),ドキュメント型DBであるMongoDBがどんなものかと触ったり調べたりしましたが,必ずしもRDBである必要のないシステムについては,MongoDBで作るのもアリかなと思った次第です.

とりあえず,brew一発で入れられるようです.

$ brew install mongodb

OpenSSLなども一緒に入れられるみたいです.

configは「/usr/local/etc」に,「mongod.conf」という名前でありますが,今回は特にいじりません.

サービスを起動してみます.

$ brew service start mongodb

それでは,早速MongoDBのクライアントを使ってみます.

Continue reading “Mac(macOS Sierra)でMongoDBを使ってみる”

RubyによるTwitter全ツイート削除

はじめに

過去のツイートを削除することは抵抗はないのですが,前の職場に居た頃(2009年)から約8年間,細々と他愛のないツイートをしてきたこのTwitterのアカウントには愛着があります.

特に何か理由があるわけではありませんでしたが,過去のツイートを全部削除して,まっさらな気持ちでTwitterを利用したくなりました.

削除前は,全ツイート数は7,370ありました.
以前も3,200件ほど削除しているので,実際は1万ツイートを超えていました.
以前,なぜ3,200件しか削除できなかったのかは,後に記載しています

過去のツイートをまとめて削除する方法として,黒歴史ナントカとかありますが,自分以外の誰かに自分の過去の情報にアクセスされたり,変更を加えられたりするのはどうも嫌なのです.やたらめったら認証アプリ連携登録などしたくないですから...

となれば,自分でAPIを叩けば良いやということで,今回Rubyでスクリプトを書いてやってみたいと思います.

Continue reading “RubyによるTwitter全ツイート削除”