2009年12月18日金曜日

[Rails] ActiveRecord で MySQL の auto_increment を設定する

MySQL の auto_increment を設定するには、
 ActiveRecord::Base.connection.execute('ALTER TABLE table_name AUTO_INCREMENT = 1000')
とする。

また、MySQLで確認するには、
 mysql> show table status like 'テーブル名'
 mysql> show table status from DB名 like 'テーブル名'
と入力する。

[Rake] タスクに引数を渡す

コマンド
 rake タスク名 hoge='poge'

Rakefile
 task タスク名 do
  puts ENV['hoge']
 end

2009年12月16日水曜日

[jQuery] htmlをparseする

$("セレクター", 文字列)
文字列の中で、マッチする要素を持つjQueryオブジェクトを抽出する
ただし、文字列の子からマッチするセレクターを抽出する。
例えば、

str = "<img src='hogehoge.jpg' />";
$("img", str) は null になる

str = "<div><img src='hogehoge.jpg' /></div>";
$("img", str) は img が抽出される

2009年12月15日火曜日

[Ruby] 少数の表示(桁数を指定)

num = 1.12345
sprintf('%.3f', num)

2009年12月1日火曜日

[CSS] セレクタ

ユニバーサルセレクタ
 * { margin: 0; }
 すべての要素に対してスタイルを指定

要素セレクタ
 body { margin: 0; }
 記述した要素にスタイルを指定

クラスセレクタ
 .class_name { margin: 0; }
 class_nameというクラスを持つ要素にスタイルを指定

ユニバーサルセレクタ
 #id_name { margin: 0; }
 id_nameというIDを持つ要素にスタイルを指定

子孫セレクタ
 #id_name div span a { color: blue; }
 id_nameというIDを持つ要素の中のdivの中のspanの中のaにスタイルを指定

2009年11月28日土曜日

[CSS] 2つのclassを指定

css で2つのclassを指定する方法

例えば、hoge と poge を指定するには、
<div class="hoge poge"></div>
とする

スタイルの指定は、
.hoge {
}

.poge {
}

また、両方のクラスを持つ要素のスタイル
.hoge.poge {
}

2009年11月18日水曜日

[Linux] Shellで変数と文字列をつなげる

Shellで変数と文字列をつなげたい場合、変数名を{}で囲む。

DIR="/home/hoge/poge/'
cd ${DIR}test

また、変数を連結したい場合は、変数名を続けて記述する。

srt1="abc"
str2="xyz"
result_str=$str1$str2
echo $result_str

abcxyz

[Linux] Shellでコマンドの結果を変数に代入する

Shellでコマンドの実行結果を変数に代入するには、コマンドをバッククォート(`)で囲む。
またバッククォート内で変数を記述すると、その変数は展開される。

opt=-la
out=`ls $opt`
echo $output

出力結果は、ls -laと同じ。

[Linux] cron

設定の編集
$ crontab -e

設定のリスト表示
$ crontab -l

2009年11月16日月曜日

[Ruby] 組み込み変数

組み込み変数

$
 グローバル変数

$:
$LOAD_PATH
 load や require がファイルをロードするときに検索するディレクトリのリストを含む配列

2009年10月17日土曜日

[住宅] 宅内LAN配線

今まで空配管だったところにLANケーブルを這わすことに。
リード線はすでに入っているので、
あとは長いLANケーブルを買ってきて、
這わせるだけかなと思って20mくらいのケーブルを購入してきました。

が、...

ケーブルのコネクタ部分がひっかかってスムーズに入らない...
無理矢理リード線をひっぱって、
ケーブルが外れたら、また、リード線を入れなければならないので、
結局、コネクタ部分を切断してケーブルだけを配管の中に入れることにしました。

で、壁のところはモジュラジャックにしようかなと。

そこで、モジュラジャックを探していたら、
松下電工の「ぐっとす6シリーズ」というのを知りました。
実際に購入して設置してみましたが、すごい簡単。
何より、特別な工具が必要ないのが便利。おすすめです!

2009年10月8日木曜日

[Python] SOAPpyをインストール

python 2.5 で SOAPpy をインストールをしようとするとエラーがでる。
エラーが出ないようにするには、下記のように編集する。

1.編集
 SOAPpy/Client.pyを編集
 SOAPpy/Types.pyを編集
 SOAPpy/Server.pyを編集
 SOAPpy/GSIServer.pyを編集

 from __future__ import nested_scopes
 を最初にimportされるように先頭に持ってくる

2. $ python setup.py build
3. # python setup.py install

参考
http://mytechstop.blogspot.com/2008/04/quick-tip-on-installing-soappy-on.html

[Ruby] インタラクティブなRubyのシェル

# irb

[Linux] ファイル数を調べる

# ls | wc -w

2009年9月28日月曜日

2009年9月19日土曜日

[SVN] subversion のプロキシ設定

subversionでプロキシを設定する方法。

1. ~/.subversion/servers を編集
2. [global]という項目の
   http-proxy-host
   http-proxy-port
  をそれぞれ設定する

2009年9月1日火曜日

[Flash] MOUSE_OVER/MOUSE_OUT と ROLL_OVER/ROLL_OUT

ActionScript3.0 でマウスイベントを扱うとき、
MOUSE_OVER と ROLL_OVER、
MOUSE_OUT と ROLL_OUT
は似ているが異なるもの。

MouseEvent.MOUSE_OVER, MOUSE_OUT
 ・DisplayObject内のどのDisplayObjectであってもイベントが発生する
 ・例えば、あるオブジェクトの内側に別のオブジェクトを配置した場合、
  カーソルを動かしていくと、
  最初に外側のオブジェクトでイベントが発生し、
  次に、内側のオブジェクトにカーソルが重なると、
  内側のオブジェクトにイベントが発生する。
  (外側のオブジェクトにはOUTイベントが発生)

MouseEvent.ROLL_OVER, ROLL_OUT
 ・DisplayObject全体の領域に対するイベントが発生する
 ・例えば、あるオブジェクトの内側に別のオブジェクトを配置した場合、
  カーソルを動かしていくと、
  最初に外側のオブジェクトでイベントが発生し、
  次に、内側のオブジェクトにカーソルが重なっても
  イベントは発生しない

[MySQL] CSVファイルで出力

MySQLで結果をCSVファイルに出力するには、

mysql> select * from テーブル名 into outfile 'ファイル名' fields terminated by ',' optionally enclosed by '"';

2009年8月20日木曜日

[Ruby] Web上のファイルの保存

open-uriを使ったWeb上のファイルの保存

 require 'open-uri'

 url = 'http://hoge/poge'
 filename = File.basement(url)
 open(filename, 'w') do |file|
  open(url) do |data|
   file.write(data.read)
  end
 end

[Tech] IEEE802.11系

802.11系のまとめ

IEEE802.11a 54Mbps 5.2GHz
 混信の少ない周波数帯域なので、最大速度で通信しやすい
 周波数が高いため、伝送距離が短く、障害物の影響を受けやすい

IEEE802.11g 54Mbps 2.4GHz
 5.2GHz帯よりも伝送距離が長く、障害物の影響を受けにくい
 2.4GHz帯は無線LANやBluetoothなどの多くの電子機器で使用されているため、
 混信やノイズの影響を受けやすく、伝送速度が低下する

IEEE802.11b 11Mbps 2.4GH

[Rails] Fixtureファイルを使い分ける

RailsでFixtureファイルを使い分ける方法。

Fixtureファイルのファイル名はmodel名と同じ。
場合によって、読み込むファイルを変更したいときには、
ディレクトリを分けて、下記のように読み込むことができる。

rake db:fixtures:load FIXTURES_DIR=dir FIXTURES=hoge, poge

2009年8月12日水曜日

[住宅] 金消契約のときまでに住民票を新しい住所に移す?

新築住宅を購入したとき、売り主から金消契約までに住民票を新しい住所に移してくださいと言われました。そのときは、「はい、わかりました」と言って、言われた通りに住民票を移そうと思ったのですが、新住所の役所のホームページをみると、住民票は引越し後でなければ移せないとの説明が。。。

  ※金銭消費貸借契約
   金融機関と締結する住宅ローンの借り入れについての契約

そりゃ、そうですよね。実際に住んでないのに住民票を移すのは違法になりそうだし。。。

でも、金消契約前に住民票を移してくださいと言われるのはよくあることみたい。ん?これって何かおかしくありませんか?どういうことなのでしょう?

金融機関としては、住宅ローンなので、その住宅にローンを借りる人が住むという保証が必要のようです。そのため、住民票でそこに住んでいるという確認が必要になります。

一方、役所は、実際に住んでいない場所に住民票を移すことを認める訳にはいきません。

また、住宅の売り主は、ローンの契約がまだ行われない状況で、買い主を新住所に引越しをさせるということはまずしません。

つまり、「ローン契約のためには引越しをする必要がある」「引越しをするにはローンを借りて購入する必要がある」という相反することになり、そのしわ寄せが、買い主にくるわけです。

結果、買い主が引っ越したことにして、住民票を移動し、金消契約を結ぶというのが割と普通に行われています。役所は実際に引越しが行われているかどうかイチイチ調べたりはしないので、住民票を移動させるときに「引越ししましたか?」と聞くだけ。役所も事情はわかっているようです。

でも、この中でリスクがあるのは、買い主だけ。買い主が「引っ越しました」と嘘をつく。本当にこんな仕組みでいいのだろうか?(リスクというより、嘘をつく後ろめたさですね。)

私の場合、売り主が「皆さん、100%住民票を移してから金消契約をしています」と言ってたけど、実際に金融機関に問い合わせると、買い主の自由で別に住民票を移さなくても金消契約を結べると言われました。なんだよ〜。だったら、普通に引越しが終わってから住民票を移せばいいんじゃん!

注意しなければならないのは、登録免許税の軽減が自己居住用の住宅にしか適用されない点。そのため、住民票を移さないのであれば、住宅用家屋証明書が必要となります。これは、市区町村から交付されるもので、場合によっては申立書も必要となります。例えば、親と同居している場合、現在同居していることと、契約が完了したら新住所に引っ越すことを、同居している親に証明してもらう必要があるようです。

また、引越し後、住民票を移したら登記内容も住所を変更しなければなりません(特に急ぐ必要はないようですが)。

住民票を移さないで金消契約を行うのは、この辺りの面倒さとちょっとした費用がかかるのがデメリットですが、その分、後ろめたさはありません。どちらがいいかは個人によりますかね。ただ、こういう選択肢は買い主に与えるべきで、売り主が「皆さんやってますから、住民票を移してください。」っていうのはどうなんだろう?

[JS] escape vs. encodeURI

escape()とunescape()
  • 昔は使われていた
  • 完全なURLエンコード対応ではない
  • 関数の定義が途中で変わっていてオススメできない
  • ブラウザ毎に動作が異なる

このような理由から、今は encodeURI が使われている。

[JS] Javascriptでリンク

Javascriptでリンクを書くには、location.hrefを使う


  <a href="index.html" onclick="location.href='hoge.html';return false;">ホーム</a>

注意点は、return false;でonclick以外の動作を無効化にすること。
これがないと、hrefに指定されたリンク先を表示してしまう。

あるいは、
  <a href="javascript:void(0);" onclick="location.href='hoge.html';">ホーム</a>

とすれば、hrefが無効になるので、return false;は不要となる。

2009年8月10日月曜日

[住宅] 登記の種類

表示登記
  • 建物が完成した後、所在地や床面積、構造等を特定する登記
  • 土地家屋調査士が行う
  • 登録免許税は課税されない
  • 費用は土地家屋調査士の報酬代のみ
    (戸建てであれば、10万程度。マンションならもっとやすくて6〜7万くらいかな?)

所有権保存登記
  • 登記簿の甲区(所有権に関する登記)に初めて行われる所有権の登記
  • 登録免許税 = 法務局の認定価格 x 4 / 1000
  • 平成23年3月31日までは、新築建物は税率が 1.5 / 1000
  • 平成22年3月31日までは、長期優良住宅なら税率が 1 / 1000
  • 新築の条件は、自己居住用、新築または取得後1年以内に登記、床面積50平方メートル以上

所有権移転登記
  • 不動産売買のときに、売り主から買い主へ所有権を移動する登記
  • 土地の登録免許税 = 固定資産税評価額 x 10 / 1000(平成23年3月31日まで)
  • 建物の登録免許税 = 固定資産税評価額 x 20 / 1000
  • 平成23年3月31日までは、新築建物および中古建物の税率は 3 / 1000
  • 平成22年3月31日までは、長期優良住宅なら税率が 1 / 1000

抵当権設定登記
  • 不動産に設定された抵当権の権利を明らかにする登記
  • 登録免許税 = 債権金額 x 4 / 1000
  • 平成23年3月31日までは、新築建物および中古建物の税率は 1 / 1000

[住宅] フレッツ光のプロバイダ

テレビは地デジが映れば十分なので、j:comよりフレッツ光にしようかな。
となると、プロバイダは?

プロバイダ合計キャンペーン
BB excite525円5,985円3ヶ月無料12ヶ月継続利用
ASAHIネット819円6,279円5ヶ月無料
ただし、1ヶ月は加入した月のみ
(日割りはしない)
12ヶ月継続利用

※ASAHIネットはNTT経由で申し込みをした場合

2009年8月8日土曜日

[住宅] フレッツ光 vs. j:com

戸建て向け

フレッツ光j:com
テレビ682.5円/月TV
デジタル
コンパクト
+
160M
10,595円
地デジ
パック
+
160M
7,880円
電話525円/月
ネット
プロバイダ
5,460円/月
525円/月(BB.excite)
合計7,192.5円10,595円7,880円


フレッツ光j:com
工事費無料(フレッツ光)
15,750円(TV)
5,250円
(Web申込)
10,500円
(外から
屋内分配器まで)
キャンペーンネット4ヶ月無料
工事費無料(ネット)
紹介(3,000円ずつ)

2009年8月6日木曜日

[Rails] Rails 2 でmigrationファイルの番号を連番にする

Rails 2 から migration ファイル名が Timestamp になりました。
でも、これって結構使いにくかったりして、前の連番方式に変更する人が割といるそうです。
(Rails 2.2 からは config ファイルで設定できるようになったそうです。)

 config/environment.rbを編集

 下記を追加
 config.active_record.timestamped_migrations = false

これで、連番に戻ります。

2009年8月4日火曜日

[Rails] ActiveRecordでテーブル名とクラス名が異なる場合

ActiveRecordでは、テーブル名とクラス名が下記のルールになっている。
 (ルール)テーブル名 = クラス名の複数形
 (例)テーブル名: users
    クラス名: User

このルールに従えない場合には、set_table_nameを使う
 class User < ActiveRecord::Base
  set_table_name :user
 end

2009年8月1日土曜日

[住宅] 住宅ローン減税

財務省: 住宅ローン減税制度の概要

適用居住年 平成21-25年居住分 10年間
控除額(一般)
年末残高の限度額控除額最高合計最高
平成21年5,000万円1.0%50万円500万円
平成22年5,000万1.0%50万円500万円
平成23年4,000万円1.0%40万円400万円
平成24年3,000万円1.0%30万円300万円
平成25年2,000万円1.0%20万円200万円



控除額(認定長期優良住宅)
年末残高の限度額控除額最高合計最高
平成21年5,000万円1.2%60万円600万円
平成22年5,000万円1.2%60万円600万円
平成23年5,000万円1.2%60万円600万円
平成24年4,000万円1.0%40万円400万円
平成25年3,000万円1.0%30万円300万円

国土交通省: 長期優良住宅法関連情報
長期にわたり良好な状態で使用するための措置が講じられた優良な住宅である「長期優良住宅」について、その建築及び維持保全に関する計画(「長期優良住宅建築等計画」といいます。)を認定する制度の創設を柱とする「長期優良住宅の普及の促進に関する法律」が平成20年12月に公布され、平成21年6月4日に施行されました。

2009年7月23日木曜日

[CSS] width: 100% の解釈

CSSで width: 100% を指定した場合、margin, padding, border を指定すると、 100% + 指定した幅 が全体の横幅となる。

例えば、
<style type="text/css">
.container {
   height: 200px;
   width: 200px;
   overflow: auto;
}
.content {
   width: 100%;
   height: 100%;
   background-color: #ccc;
   border: 1px solid red;
}
</style>

<div class="container">
   <div class="content"></div>
</div>

この場合、content の横幅は 100% + 1px x 2 となる。100%は200pxなので、横幅は202pxとなり、スクロールバーが表示される。margin, paddingでも同様。

100%の解釈は、IE(IE7, IE8で確認)、FF3でも同じ。

IEとFF3で異なるのは、スクロールバーの幅を100%に含むかどうかが異なるみたい。例えば、上の例で、border を border-top にして、縦スクロールバーが出るようにすると、FFでは縦スクロールバーのみ表示されるが、IEでは縦と横のスクロールバーが表示される。IEではcontentの横幅が 200px + スクロールバーの幅 になるのに対し、FFではスクロールバーの幅を含めた横幅が 200px になる模様。

2009年7月16日木曜日

[CSS] スクロールする領域内で position: relative; を指定すると、スクロールが効かなくなる

overflow: auto; を設定したdiv内で、
position: relative; を設定すると、
overflowした部分がそのまま表示され、
かつ、スクロールが効かなくなる現象があった。

Firefox 3 では問題ないが、IE7, IE8 で起きた現象。
IEのバグらしい。


(例)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
.frame {
width: 100px;
height: 100px;
overflow: auto;
}

.item {
width: 80px;
height: 80px;
position: relative;
background-color: red;
margin-bottom: 5px;
}
</style>
</head>

<body>
<div class="frame">
<div class="item">
</div>
<div class="item">
</div>
<div class="item">
</div>
</div>
</body>
</html>


※説明のために簡略化。
 どうしてもrelativeが使いたかったのです。。。

解決方法としては、
1. DOCTYPEを無くすとうまく表示される。
 つまり、互換モードにすればいいのかな。
 でも、これだと全体の表示が崩れてしまいそう。
 (もうすでにいろいろ書いていたので。)

2. .frame に position: relative; を追加する。
 これでIEでもFFでも思ったとおりの表示になる。

FF, IE以外は確認してません。。。

2009年7月15日水曜日

[iPhone] View Orientation

iPhoneは横にすると、自動的に画面を横表示に切り替えられる。
今日は、縦や横の切り替えを試してみた。

1. Xcodeの起動

2. 新規プロジェクトの作成
 ファイル > 新規プロジェクト...
 View-based Applicationを選択

3. UIの作成
 View上にLabelを配置
 配置したLabelを選択し、Tools > Size Inspector を開く
 Placementで中央にLabelを配置し、
 Autosizingで何も選択しないようにすると、
 自動で中央に位置を合わせてくれる

4. ソースコードの編集
 ViewOrientationViewController.mを開く
 (この場合、ViewOrientationがプロジェクト名)
 shoudAutorotateToInterfaceOrientationのコメントを外し、
 YESを返すように編集

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

 // Return YES for supported orientations

 // return (interfaceOrientation == UIInterfaceOrientationPortrait);

   return YES;

 }


5. ビルドと実行
 ビルドと実行するとiPhone Simulatorが立ち上がる

 iPhone Simulatorの向きを変えるには、command + 矢印 (右、左)で切り替え



2009年7月13日月曜日

[Git] 新規ファイルのインポート

Gitをインストールしたので、ソースコードをGitのリビジョン管理化に置いてみました。

0. 設定
 コミットしたときの名前やメールアドレスを設定する

 $ git config --global user.name "xxx xxx"
 $ git config --global user.email "xxx@xxx.com"

1. 管理したいソースのあるディレクトリで、
 $ git init

 下記のように表示される
 Initialized empty Git repository in /Users/...

 また、.gitというディレクトリができているのがわかる

2. ファイルをステージに追加する
 $ git add .

 . で現在のディレクトリのすべてのファイルを追加する
 Gitでは、コミット前の段階をステージに追加すると表現するらしい

3. コミット
 $ git commit

 vi が立ち上がり、コメントを追加する
 viの操作
  i: insert
  esc: モード切り替え
  wq: 保存して終了

個人でやるならここまでで十分?
Gitらしい分散管理はやってないけど。。。
本当は git push や git pull でおおもとのレポジトリに追加やマージをするみたい



2009年7月7日火曜日

[iPhone] Hello World!

初めてiPhoneアプリを作ってみました。
最初に作るアプリは、やっぱり「Hello World」。

1. Xcodeの起動
 /Developer/Applications/Xcode を起動
 もしくはSpotlightでXcodeを検索して起動

2. プロジェクトの作成
 ファイル > 新規プロジェクト...

 iPhone OS/Application のテンプレートから
 Window-based Application を選択

 プロジェクト名を入力して保存する

3. ビルド&実行
 ビルドの構成が 「Simulator - 3.0 | Debug」 になっていることを確認し、
  ビルド > ビルドと実行
 を選択して、実行する

 当然、まだ何も作ってないので、何もない画面ですが、
 ちゃんとiPhone Simulatorが立ち上がります。

4. UI作成
 ファイルリストからMainWindow.xibをダブルクリック
  ・xibはUIの定義されたXMLファイル
  ・Interface Builder で簡単に編集できる

 Interface Builder
  a. ラベルの作成
   ・LibraryからLabelを探し、Windowにドラッグ&ドロップする
   ・Tools > Inspector を選択し、Label Attributes を編集
    Textを空にする

  b. ボタンの作成
   ・LibraryからRound Rect Buttonを選択し、
    Windowにドラッグ&ドロップする
   ・Tools > Inspector を選択し、Button Attributes を編集
    Titleに「Click!」と入力

5. コード編集
 HelloWorldAppDelegate.hを編集する
 

   #import


   @interface HelloWorldAppDelegate : NSObject {

    UIWindow *window;

    IBOutlet UILabel *label; // <-- 追加

   }


   @property (nonatomic, retain) IBOutlet UIWindow *window;


   -(IBAction)putText; // <-- 追加


   @end


 HelloWorldAppDelegate.mを編集する

 

   // 追加

   - (IBAction)putText {

    label.text = @"Hello World!";

   }




6. Outletsとアクションの接続
 MainWindow.xibを選択
 Hello World App Delegate を control を押しながらクリック

 新たに開いたウィンドウのOutlets/labelの右の丸をドラッグして、
 Windowの中のLabelにドロップする

 同様にReceived Actions/putTextの右の丸をドラッグして、
 Windowの中のボタンにドロップする
 開いたウィンドウの中から「Touch Up Inside」を選択

7. ビルド&実行
 「Click!」をクリックすると、「Hello World!」が表示される

2009年7月3日金曜日

[iPhone] iPhone SDK のダウンロード

1. Apple IDの登録(無料 )
2. iPhone SDKのダウンロード
 http://developer.apple.com/iphone/ に行ってログイン
 Downloads > iPhone SDK 3.0 から iPhone SDK 3.0 をダウンロード


2009年7月1日水曜日

[mac] Firefoxのインストール

http://mozilla.jp/firefox/

[mac] パスの設定

パスを表示する
 $ printenv PATH
 パスの一覧を表示する

 $ printenv
 環境変数の一覧を表示する

 $ echo $PATH
 パスの一覧を表示する

パスを設定する
 $ PATH=$PATH:/usr/local/git/bin
 $ export PATH

ログインする度に自動的に設定する
 ~/.bash_profile を編集(もしくは作成)

 export PATH=$PATH:/usr/local/git/bin


[Git] Gitをインストール

Gitが流行っているみたいなのでインストールしてみた。

GitはSubversionのようなソースコード管理を行うためのシステムだが、分散型なのが特徴(個人で使うには関係ないか...)。でもせっかくなので試してみた。

下記からdmgファイルをダウンロードしてきてインストールするだけ。簡単!

あとは ~/.bash_profile を編集してパスを通すだけ。

PATH=$PATH:/usr/local/git/bin

※デフォルトでは /usr/local/git にインストールされる

[mac] ctrlとcapsの入れ替え

新しく MacBook Pro を購入!
まずは、ctrl と caps を入れ替えてみた。

「システム環境設定」→「キーボードとマウス」→「修飾キー...」