タイトルのまんまなんですけど。
jQuery(“#myid”).addClass(“class1”);
jQuery(“#myid”).removeClass(“class1”);
クラスを追加したり削除したり。どういうときに使うかというと、例えば、ボタンの上にマウスオーバーしたときに、別の要素を赤くして、マウスが外れたら元の色に戻すとか。そんな感じで使います。(これだけじゃないけどね)
詳しくはこちら ⇒ 第4回 classの制御 – jQueryによるJavaScript入門
inputを disableにしてるとき、わかりやすいように opacityで透明化しようとしてはまったこと。
なんと IE7互換表示だと大丈夫なのに、IE8だとダメなやつがあるのですよ。
input:disabled {} の CSSがそれで、これが複数指定の中に入っていたがために、そのCSS指定がみんな無効になってしまい、わからんちんな結果に。(CSSでエラーになるようなことを書くと、そのブロック全部適用されない罠!)
IE8 | Firefox | Chrome | Opera | Safari | |
---|---|---|---|---|---|
input[type=text] | O | O | O | O | O |
input:read-write input:read-only |
X | △ | X | O | O |
input:enabled input:disabled |
X | O | O | O | O |
input:active input:focus input:hover |
O | O | O | O | O |
input:checked | X | O | O | O | O |
input:default | X | O | X | O | X |
この表の出典はこちら ⇒ 各ブラウザのCSSセレクタの対応状況
あと、position:absolute してて、IE7で表示されないなと思ったら、z-indexを付けてみること。下になっちゃってるだけかもしれませんよ。
wp_postmetaに attach系のデータを保存しなきゃいけなくて(画像データだけ別に作っておいて、それのアタッチデータを作るわけですね)、例のPHPの配列を insertで書き込もうと思ったんだけど、パパっと作業するのは Rubyの方が楽ちんなので、調べただけで使わず仕舞い。
でもなんかの拍子に必要になるかもしれないので。
INSERT INTO wp_options(blog_id, option_name, option_value) VALUES(0, ‘my_messages’, maybe_serialize( $messages )) $messages = maybe_unserialize($result->messages);
maybe_serialize()と maybe_unserialize()がセットになっているわけですね。
詳しくは、こちら ⇒ DBに連想配列を保存するには
久々に psqlを触ったらびっくりするくらい忘れていたので、これはこれで新鮮だった。
人ってこのくらいキレイさっぱり忘れられるんだなぁ、道理で失恋で死ぬやつがたくさんいないわけだ。
以下、なにを忘れていたかの記録。文字通り備忘録。
- 起動にはDB名とユーザ名が必要 ・・・ psql -U user mydb
- 操作ヘルプ ・・・ ¥?
- 終わるとき ・・・ ¥q
- コマンド起動でSQL実行 ・・・ psql mydb -c ‘select * from tbl;’
- 外部ファイルをSQLとして実行 ・・・ psql mydb -f sql.txt
- 全部成功したときだけコミット ・・・ psql mydb -f sql.txt -1
- 対話:DB一覧 ・・・ ¥l
- 対話:テーブル一覧 ・・・ ¥d
- 対話:テーブル詳細 ・・・ ¥d mytable
- 対話:外部ファイル実行 ・・・ ¥i sql.txt
- WARNING: nonstandard use of \\ in a string literal at character N ・・・ エスケープ文字を含むときは、文字列はE”で包むこと(E’ほげほげ’)
- SQLでの文字列連結 ・・・ select “123” || “ABC” from
久々にRubyを触ったらびっくりするくらい忘れていたので、これはこれで新鮮だった。
人ってこのくらいキレイさっぱり忘れられるんだなぁ、道理で失恋で死ぬやつがたくさんいないわけだ。
以下、なにを忘れていたかの記録。文字通り備忘録。
- 行末セパレータ ・・・ ;とか普通のときはいらない
- if end ・・・ endifじゃなかった(jsに毒されてるな>自分)
- 文字列を結合する ・・・ 普通の+でOK
- 文字列を1行ずつ処理する ・・・ s.each_line { |line| hogehoge }
- trimじゃなくて strip
- 文字列を数字に ・・・ to_i
- 文字列の replace ・・・ gsub(/正規表現/, “置換文字列”)
- 漢字コード変換 ・・・ require ‘kconv’; s.tojis; s.toeuc; s.tosjis
- 文字列をセパレートする ・・・ s.split(/\s*,\s*/)
- 文字列から正規表現にマッチしたものを配列で ・・・ s.scan(/(\S+):([\d\-]+)/)
- 文字列の末端の改行を削除 ・・・ s.chomp
- 文字列の1文字をASCIIコードに変換 ・・・ s=”ABC”; s[0] # 65を返す
- TOUPPER ・・・ s.upcase
- シングルクォートをエスケープするとき ・・・ s.gsub(/’/, “\\\\'”)
- SUBSTR ・・・ s.slice(3,20)
- replaceの強力なやつ ・・・ require ‘jcode’; s.tr(“A-Z”, “a-z”) #全角を扱うときのみ jcode
- 空行とのマッチ ・・・ s == “\n”
- premature end of regular expression ・・・ 正規表現がバックスラッシュで壊れてる。$KCODE=’u’
- URIのエンコード ・・・ require ‘uri’; $KCODE = ‘u’; URI.escape(‘ほげほげ’)
- ファイル名(拡張子なし) ・・・ p File.basename(“ruby/ruby.c”, “.*”) #=> “ruby”
とりあえず、このくらい。主として文字列まわり。
たぶんこれに興味のある人は日本全国に10人くらいしかいないと思いますが、WordPressを PostgreSQLで使うドライバ、pg4wpのその後です。
プラグインを入れるたびに新たなエラーが発生して、その都度、いろいろと手を入れています。
今回は、Contact Form 7を入れたらエラーになりました。Contact Form 7が auto_increment付きのテーブルをクリエイトしようとしてエラーになりました。WordPressの標準って主キーにオートインクリメントを使ってないのですかね。それはそれでびっくりです。
if(stripos($sql, 'CREATE TABLE') === 0) { $sql = str_ireplace('CREATE TABLE IF NOT EXISTS', 'CREATE TABLE', $sql); $a = preg_split("/(CREATE TABLE | \()/", $sql); $tbl = $a[1]; $sql = preg_replace("/DEFAULT CHARACTER SET .+;/", ";", $sql); $sql = preg_replace("/,\s*PRIMARY KEY\s\(.+?\)/i", "", $sql); $sql = preg_replace("/text\s+NOT\s+NULL/i", "text default ''", $sql); if (stripos($sql, 'auto_increment')) { $s = ""; $a = explode("\n", $sql); foreach($a as $v) { if (stripos($v, 'auto_increment')) { $b = explode(" ", trim($v)); $key = $b[0]; $v = $key." integer DEFAULT nextval('".$tbl."_seq'),\r\n"; } $s .= $v; } $sql = $s; $sql = "CREATE SEQUENCE ".$tbl."_seq; ".$sql."; CREATE UNIQUE INDEX ".$tbl."_".$key."_key on ".$tbl." (".$key.");"; } }
相変わらず力技です。(ここは笑うところか?)
まず、PostgreSQLには “IF NOT EXISTS”がないのでこれを取っ払って(テーブルがすでにあったらエラーになるので、なかったら実行はなくても可)、”PRIMARY KEY(key)”という指定もないみたいなので、これも取っちゃって、あと、これがクリビツテンギョウなんですけど、MySQLは text NOT NULL属性で値を指定しない(INSERT文に含めない)と、空文字を勝手に入れてくれるのに対して、PostgreSQLはエラーになっちゃうんですね。
これは NOT NULL属性をつけてる主旨からいって、PostgreSQLを支持したいです。でも、INSERT文でエラーになるのは仕方ないので、text NOT NULLは、text default “”にして、NOT NULLを外しちゃいました。
あと、面倒なところが、auto_incrementの取扱い。そのまま、SERIALにしちゃえばいいようなものなんですけど、そうすると、シーケンシャル・テーブルの名前が、table名_カラム名_seqという名前になって、wp_optionsなんかで使っている table名_seqルールと合わなくなってしまうこと。
で、SERIALが使えなくて、いちいち、CREATE SEQUENCE、CREATE UNIQUE INDEXみたいなことをやってるわけです。(きっとどっかにもっといい方法があるはずだ)
参考:PostgreSQL 日本語ドキュメントはよくできています。