PGメモ

非エンジニアの記録

【Ruby on Rails】テーブルとモデルを作る。

Ruby on Railsでテーブルとモデルを作ります。

例えばユーザーテーブル。カラムはidとname

$ rails generate scaffold User id:integer name:string

上記コマンドでデータモデルの属性をオプションとしてパラメータに追加します。

$ bundle exec rake db:migrate

マイグレーションをするとテーブルとモデルができます。

因みに

<APP_ROOT>/db/schema.rb

こちらにスキーマがあります。

おわり。

phpで別ポートへの通信ができない

solrを使いだしてphpからsolrに通信する機会があるのですが
cURL使ってもfile_get_contentsを使ってもどうも結果が返ってこない。

どうしたものかと思ってデバッグをしてみると
cURLのエラーメッセージでaccess deniedと出た。
アクセスできない・・・SELinuxか!と思い
ローカルなので思い切ってSELinuxを無効にしました。

状態確認、Enforcingは有効状態

# getenforce
Enforcing

無効にします

# setenforce 0

もっかい確認

# getenforce
Permissive

ずっと無効

# vim /etc/sysconfig/selinux
SELINUX=disabled

かなりハマった・・

【解決】Rails4.0 mysql2のbundle installでエラー

Ruby on Railsmysqlを使おうと思いGemfileに

gem 'mysql2'

と記述し

$ bundle install

すると・・

mysql.h is missing.  please check your installation of mysql and try again.

エラー出ました。

じゃぁmysql-devel入れますかなと

# yum install mysql-devel
Package perl-DBD-MySQL needs libmysqlclient.so.15, this is not available.
Package perl-DBD-MySQL needs libmysqlclient.so.15(libmysqlclient_15), this is not available.
Package php53-mysql needs libmysqlclient.so.15, this is not available.
Package php53-mysql needs libmysqlclient.so.15(libmysqlclient_15), this is not available.

うおお・・

じゃぁ入れます。

# yum install mysqlclient15
Transaction Check Error:
  file /usr/lib/mysql/libmysqlclient.so.15.0.0 from install of mysqlclient15-5.0.91-1.jason.1 conflicts with file from package mysql-5.0.86-jason.1
  file /usr/lib/mysql/libmysqlclient_r.so.15.0.0 from install of mysqlclient15-5.0.91-1.jason.1 conflicts with file from package mysql-5.0.86-jason.1

入れれない。ファイルがぶつかってるのである。

入ってるバージョンを確認してみる

# rpm -qa | grep mysql
mysql-5.0.86-jason.1
php53-mysql-5.3.3-13.el5_8
mysql-server-5.0.86-jason.1

上記バージョンが入っていました。

古いバージョンを削除

# yum remove mysql
# yum --enablerepo=remi,epel install mysql
# yum install mysql-devel

するとどうだろう

# gem install mysql2
Building native extensions.  This could take a while...
Successfully installed mysql2-0.3.13
Parsing documentation for mysql2-0.3.13
unable to convert "\xA0" from ASCII-8BIT to UTF-8 for lib/mysql2/mysql2.so, skipping
Installing ri documentation for mysql2-0.3.13
1 gem installed

入った!

excelのスケジュールを作る上で色付きのカラムを数えるのが便利すぎる


上記のようにexcelでスケジュールを作る時があると思いますが。
工数が変わる度に何人日か書き直す。なんて時があるはず。
そんな時はマクロで関数を作ると「色付きのカラム数をカウント」できるのです。

参考:
How to count and sum cells based on background color in Excel?

Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean)
  Dim rCell As Range
  Dim lCol As Long
  Dim vResult
  lCol = rColor.Interior.ColorIndex
  If SUM = True Then
    For Each rCell In rRange
      If rCell.Interior.ColorIndex = lCol Then
        vResult = WorksheetFunction.SUM(rCell, vResult)
      End If
    Next rCell
  Else
    For Each rCell In rRange
      If rCell.Interior.ColorIndex = lCol Then
        vResult = 1 + vResult
      End If
    Next rCell
  End If
  ColorFunction = vResult
End Function

あとは

 =colorfunction(カウントしたい色があるカラム,カウント範囲,FALSEでカウントTRUEでSUM)

これで色付きカラムの増減を自動でカウントしてくれます。
便利。

Rails4.0でpublic/index.htmlが見つからないと思ったら仕様が変わっていた。

Railsのドキュメントを読んでいて、静的ページはpublic以下に置きます。
となっていて、そこにはindex.htmlがありデフォルトで呼ばれているようだったのだが
肝心のファイルがどこにもない。

結果、Rails4以降は
PATH2RUBY/gems/2.0.0/gems/railties-4.0.0/lib/rails/templates/rails/welcome/index.html.erb
場所が移動していたのでした。

rails consoleでエラー

require': cannot load such file -- readline (LoadError)

とか

uninitialized constant IRB::ReadlineInputMethod::Readline (NameError)

が出たら

Gemfile内に

gem 'rb-readline', '~> 0.4.2'

と書いて

bundle install

で動くようになります。

solr cloudを使ってみる。

なんか最近のsolrは分散検索が簡単にできるらしいのでやってみた。

参考:
http://wiki.apache.org/solr/SolrCloud

rm -r example/solr/collection1/data/*
cp -r example example2
cd example
java -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -DzkRun -DnumShards=2 -jar start.jar

各オプションの説明

・Dbootstrap_confdir
zookeeperの設定ファイルがない場合、指定するディレクトリ

・DzkRun
zookeeperをsolrとして使うためのオプション

・Dcollection.configName
新しいコレクションの設定ファイル名になる。省略すると"configuration1"となる

・Dnumshards=2
インデックスを分ける際の論理的なパーティション番号を指定


立ち上げに成功すると、左側にsolr croudが!

cd example2
java -Djetty.port=7574 -DzkHost=localhost:9983 -jar start.jar

無事にシャードが2つ立ち上がりました。