2012/04/24

Eclipseをクリーン起動

プラグインがうまく入らなかったり、プラグインは入ったけどうまく動かないとか原因がよくわからないときは、クリーン起動を試してみる

↓コマンド
(Mac)
$ /Applications/eclipse/eclipse -clean

(Win)はこんなかんじ?
eclipse.exe -clean

2012/04/15

Railsの予約語の多さときたら・・・

テーブルの中に 「type」って名前のカラム作って 詰んで、
今度は 「Process」プロセスって名前のModel作ろうとしたら怒られて・・・

予約語なのかなー と思いつつ
エラーもわかりづらいし
ネットで調べても 日本語で予約後一覧がまとまっているページがない・・・

本家Wiki内に 「Reserved Words You Can’t Use」ってページをやっと見つけた
がしかし、このページもまた 参照の仕方がわからなくて、数分費やしたよ・・・なんでRubyとか Rails関連のドキュメントって、見やすくまとまってないの???
Rubyの本家のリファレンスも、索引つけるか、検索ぐらいできるようにしてよ
はぁ・・・

http://wiki.rubyonrails.org/rails/pages/reservedwords
(下の方の show pageボタンみたいのを押すとみられる)





rails g コマンドで 間違って作ったモデルを関連ファイルごと削除する

  • 環境:Rails3
$ rails destroy model [モデル名]

参考)
Railsコマンドでgenerateしたのを取り消したい場合(メモ) | shinodogg.com - http://shinodogg.com/?p=3341


2012/04/12

DBから取ってきた ARオブジェクトを 必要な数だけ切り出す

  • 環境:Rails3
いわゆる、あれです
PHPで言うarray_sliceですよ

    users= User.find(:all, :conditions=>[" ~省略
    
    #全体の件数
    puts('count [' + users.size.to_s + ']')
    #先頭から 3つ切り出す
    puts(users.slice(0..2).to_yaml)




2012/04/10

I18nで国際化対応 − 翻訳メッセージに 変数を使う

  • 環境:Rails3
I18n.backend.store_translations :en, :thanks => 'Thanks %{name}!'
I18n.translate :thanks, :name => 'Jeremy'
# => 'Thanks Jeremy!'

変数を入れたい部分に %{変数名}を入れる

公式ガイド:


国際化 参考ページ↓
※変数を使用する部分が{{変数名}}で間違っているけど、その他の部分は概ね参考になる 公式ガイド(英語)と見比べるのがよろしい


こちらは基本的なところがわかりやすくまとまっております↓


コードの中に日本語を書くとエラーになるときの おまじない


  • 環境:Rails3

コードの中に日本語・・・
まあたとえば、

a = 'こんにちは'

↑的な?(試してないけど)

とにかく エラーが出ないためのおまじない



# encoding: utf-8

もしくは

# -*- coding: utf-8 -*-




を、ファイル頭に書く


参考)
Rails3 事始め: [Rails3] コードに日本語を書くとエラーになる件 - http://rails3try.blogspot.jp/2011/12/rails3_26.html


2012/04/07

削除されたものも検索したい時 「unscoped」を使う

論理削除とか使ってたりするときね

class Diary < ActiveRecord::Base
  # 論理削除
  default_scope where(:deleted_at => nil)


削除されたものも検索したい時 「unscoped」を使う
  # いつもの検索 deleted_at is null がSQLに付く
  Diary.find(:all, :conditions=>["id=?", id], :order=>"updated_at DESC")
  # 削除あり検索
  Diary.unscoped.find(:all, :conditions=>["id=?", id], :order=>"updated_at DESC")

ActiveRecordオブジェクトを そのままハッシュに入れたい時

 ActiveRecord(AR)オブジェクトは
各オブジェクトごとの値を attributes っていうHashで保持しているらしい

  user = User.find_by_user_id(params[:user_id])
  logger.debug(user.to_yaml)#←中身デバッグ

・DEBUGは↓こんな感じ
[DEBUG] --- !ruby/object:User
attributes:
  id: '1'
  name: username
  deleted_at: !!null 
  created_at: '2012-04-07 03:32:09'
  updated_at: '2012-04-07 13:41:55'
changed_attributes: {}
previously_changed: {}
attributes_cache: {}
marked_for_destruction: false
destroyed: false
readonly: false
new_record: false


attributesは
1件しかないARオブジェクトだったら
→ user.attributes

複数取れるARオブジェクトだったら
(プライマリキーで取得できる件数が必ず1件だったとしても find(:all 〜 とかで取得するとこっちになると思われ)
→ user[0..N].attributes

MacOSで アプリケーションごとに入力言語を保つ

MBA使い始めて 何がうざいって
ターミナル使ってて テキスト編集で日本語入力して、
また、ターミナルへ戻ったら
なぜかターミナルも日本語入力状態になってること

というか、Macでは入力言語の切り替えが なぜか全てのアプリで共通になるんだよね
これがデフォルトだなんて なんなんですかいったい
使いにくくてしょうがなくて やっと対処法を見つけた

システム環境設定 → 言語とテキスト → 入力ソース
 ・入力ソースのオプション
  → 書類ごとに異なるものを使用 に、チェック

やっとすっきりしたー!




参考)
http://blog.stack-style.org/2009-09-26-03/Mac%20OS%20Xメモ:アプリケーションごとに入力ソースの状態を切り替える

2012/04/06

PHP 5.2.5 json_encode()・json_decode() マルチバイト文字列誤変換


PHP 5.2.5のjson関数で、一部の文字列中国語UnicodeのU+2000Bを含む文字列)をエンコードして、デコード処理しようとすると、元の文字に正常に変換されないバグがあるらしい
バグ報告
PHP 5.2.x
 - PHP 5.2.10 json別件修正
PHP 5.3.xでは問題解消されてる(PHP 5.2.10リリース以後にPHP 5.3.0リリースされた)



2012/04/04

grepコマンド


◎指定のディレクトリ配下を 再帰的に検索する
→ DIR_PATH配下で「hogehoge」と書かれているファイルを探す
grep -r -n "hogehoge" DIR_PATH --color=auto
◎ファイル内の文字検索
grep -r [string] [path]
ex)grep -r "HOGEHOGE" .
◎検索文字列ハイライト(--color=auto)
ex) tail -f /var/log/hoge.log | grep --color=auto "HOGE HOGE"





2012/04/03

正規表現 パターン の話?


いつも忘れるので。。。
まづ、正規表現でいくつかのパターンがあるときに括弧()を使う
$string = "red sox";
$pattern = '/((s|b)ox)/';
$result = preg_match($pattern, $string, $matches);
var_dump($result);
var_dump($matches);
これをパターン内で参照したい時は \nで表す
$pattern = '/(((s|b)ox)(black|white)\2)/';
-「n」は括弧の順番番号 外側から&左から数える ()=1 ()=2 ()=3 ()=4
<?php
$string = "red sox, blacksox";
$pattern = '/(((s|b)ox), (black|white)\2)/';
$result = preg_match($pattern, $string, $matches);
var_dump($result);
var_dump($matches);
?>
==========結果
int(1)
array(5) {
[0]=> string(13) "sox, blacksox"
[1]=> string(13) "sox, blacksox"
[2]=> string(3) "sox"
[3]=> string(1) "s"
[4]=> string(5) "black"
}
(?imsx-imsx:pattern) (?imsx-imsx)で正規表現オプション変更が出来る
<?php
$string = "red Sox, blackSox";//大文字を混ぜてみる
$pattern = '/(((s|b)ox), (black|white)\2)/';
$result = preg_match($pattern, $string, $matches);
var_dump($result);
var_dump($matches);
?>
==========結果
int(0)
array(0) {
}
<?php
$string = "Red Sox, blackSox";
$pattern = '/(((?i)(s|b)ox), (black|white)\2)/';//オプション変更 i=大小文字無視
$result = preg_match($pattern, $string, $matches);
var_dump($result);
var_dump($matches);
?>
==========結果
int(1)
array(5) {
[0]=> string(13) "Sox, blackSox"
[1]=> string(13) "Sox, blackSox"
[2]=> string(3) "Sox"
[3]=> string(1) "S"
[4]=> string(5) "black"
}
<?php
$string = "red Sox, blackSox";
$pattern = '/(((?i:s|b)ox), (black|white)\2)/';//オプション変更
$result = preg_match($pattern, $string, $matches);
var_dump($result);
var_dump($matches);
?>
==========結果
int(1)
array(4) {
[0]=> string(13) "Sox, blackSox"
[1]=> string(13) "Sox, blackSox"
[2]=> string(3) "Sox"
[3]=> string(5) "black"
}
※(?imsx-imsx:pattern)で記述すると 後方参照のキャプチャにカウントされなくなる!
※値をキャプチャする必要はないが、グループ分けのために サブパターンを複数用いたい時に便利
★おまけ★バックスラッシュの後に 数字が続くものはすべて後方参照番号の可能性があるものとして解釈されるので、後に数字が続く場合、後方参照を終了するためになんらかの区切り文字を 置く必要があるる
<?php
$string = "Red Sox, blackSox999";
$pattern = '/(((?i)(s|b)ox), (black|white)\2(?#)999)/';//コメントを区切りにする
$result = preg_match($pattern, $string, $matches);
var_dump($result);
var_dump($matches);
?>
参照)




2012/04/01

skypeのムードメッセージに iTuneで聴いてる曲名を表示させる

2010/07月のめも


macskypeは、詳細設定でiTuneで聴いている曲を表示させることがさくっとできるんだが
windowsskypeにはその設定がない(何で?)
ので、いろいろ表示させる方法を探したけど、以下のやり方が一番楽かも
Last.fmとは~サイト概要より
Last.fm はあなたの scrobble が支える世界最大オンライン・ミュージックカタログ。無料インターネットラジオ、動画、写真、統計データ、チャート、アーティスト・バイオ、コンサート情報など、音楽を存分にお楽しみいただけます。
ここのScrobblerってtoolをDLしてインストール
toolの設定でskypeの設定をすればOK
ツール(T)→オプション(O)
ワシの環境(win7 64bit)でも問題なく機能してます
無事 skypeに曲名が表示されました♪
↓こちらの記事を参考にしました