【小ネタ】大文字と小文字を無視した文字列比較

2013年7月8日

更新するようなネタがないので、コネタでものっけときます。
枯れ木も山の賑わいな如く、糞な記事もブログの賑わいです。

strcmpならこんな感じ

template<typename _TYPE>
long strcmp_nocase( const _TYPE * _param1, const _TYPE * _param2 )
{
    std::basic_string<_TYPE>    param1(_param1);
    std::basic_string<_TYPE>    param2(_param2);
    std::transform( param1.begin(), param1.end(), param1.begin(), toupper );
    std::transform( param2.begin(), param2.end(), param2.begin(), toupper );
    return param1.compare( param2 );
};

strncmpならこんな感じ

template<typename _TYPE>
long strncmp_nocase( const _TYPE * _param1, const _TYPE * _param2, const size_t length )
{
    std::basic_string<_TYPE>    param1(_param1);
    std::basic_string<_TYPE>    param2(_param2);
    std::transform( param1.begin(), param1.end(), param1.begin(), toupper );
    std::transform( param2.begin(), param2.end(), param2.begin(), toupper );

    return param1.compare(0, length, param2.c_str(),length );
};

別にこだわりのポイントはなく、wchar_tかcharかわからんので、templateにしてるというだけですね。

C++ | majin | 19:20 | Comments (0)

インデックスが効いてなかったのです。

2013年7月3日

とあるローカルで動くアプリでこんな記述がありました。

$sql = "SELECT * FROM hoge WHERE id=123456";

ここで、hoge.idはvarchar型でインデックスが作成されているものとします。
実行するSQLを定義しているだけなのですが、このSQLを実行すると

どうなるかというと、

インデックスが効きません。

$sql = "SELECT * FROM hoge WHERE id='123456'";

と、囲ってやらないとすべてのカラムに対してキャストしながら検索を行い、せっかくのindexにも意味ありません。

しかしまあぶっちゃけ、使えるならprepared使ったほうがいいと思うよ。

PHP | majin | 14:30 | Comments (0)

Railsメモ

rakeのバージョンが違うと怒られたとき

rakeのバージョンあげちゃって怒られるの巻。

$> rake db:migrate
You have already activated rake 10.0.3, but your Gemfile requires rake 0.9.2.2. Using bundle exec may solve this.

バージョンを指定してあげましょう

$> rake _0.9.2.2_ db:migrate
You have already activated rake 10.0.3, but your Gemfile requires rake 0.9.2.2. Using bundle exec may solve this.

deviseのログアウトでrouting error

config/initializers/devise.rbのconfig.sign_out_viaを:deleteから:getに変更してみましょう。
他への影響は知らん。

  # The default HTTP method used to sign out a resource. Default is :delete.
  config.sign_out_via = :get
RubyOnRails | majin | 12:22 | Comments (0)
Copyright © MAJIN_T
Powered by WordPress