9月, 2010
内の記事一覧JavaScriptで、onclickを複数設定する
JavaScriptをいじっていると、onclickの設定で複数の動作をさせたいときってあるんですけど、やりかたがわからないので調べたところ
onClick=”Aの動作;Bの動作;”
というように、ただ;でつなげてあげるだけでよかった。
ページ内を移動させると同時にAの動作をさせたい場合なら
onClick=”Aの動作;window.location.href=\’#top\’;”
というようにすればいい。
あんまりごちゃごちゃする場合は、関数内にまとめてから、その関数をonClickで作動させるとかわりやすくなる。
ロリポップでサイトマップのエラーが出た場合の対策
最近、自分が使っているレンタルサーバーのロリポップ!
にて、登録しているサイトマップ(sitemap)がグーグルのウェブマスターツールに認識されないというエラーが出ていた。
サイトマップを作り直したり、登録をやり直してもダメで、いろいろ試してみて、結局ロボットテキストを設定してあげると解決した。
robots.txtという名前のテキストファイルを作り、
中に
User-Agent: *
Disallow:
Sitemap: http://アドレス/sitemap.xml
と書いた。(サイトマップがsitemap.xmlというファイル名の場合)
自分の場合は他に何も設定してないから上のように書けばOKだった。
1行目はユーザーエージェント(例えばサイトマップを見に来るグーグルとか)に対する設定で、すべてを許可するので「*」にする。User-Agentとは英語を直訳すると利用者の代理という意味で、グーグルならグーグルが利用しているとわかる名前みたいなものがあるのでそのこと(想像)
2行目のDisallowはグーグルなどがサイトを見に来たときに、見られたくないものがある場合に設定する。Disallowは英語で「拒否する」という意味。すべて公開する場合は何も書かなくていい。
普通は、上の二つはこの設定が基本らしい。
3行目がサイトマップの位置を教えてあげる設定。これを一番上に書いた方がいいという情報もあるけど、取りあえずこれで上手くいったのでこのままにしておいた。
このrobots.txtファイルをサイトのトップページを置いているフォルダにアップロードして、再度サイトマップの再送信をしてあげると次の日にはエラーが消えて正常に認識されていた。
今回の件がロリポップに問題があったのかはわかりませんが、他に使っているさくらインターネットの方は問題が出ていなかった。前から、ちょくちょくトラブルがあるなと思っていたので、今度の更新の時期が来たら、さくらインターネットのレンタルサーバーの方に移してしまうかも。
ロリポップ!![]()
さくらインターネット![]()
preg_replaceによる置換で気をつけること
preg_replaceを使い、日本語の置換をするとき、マッチするパターンを持っているのに、スルーしてしまう箇所があるので調べてみた。
例えば、パターンにマッチする箇所を持つデータが100個あったとすると、20個ぐらいが置換できない。
完全に処理されないなら分かりやすいんだけど、半端な割合で処理がされないので、何が悪いのか迷ってしまった。
調べてみると、日本語とpreg_replaceの組み合わせだから起こる問題だとわかった。
パターン部分をUTF-8でエンコードして処理するとあっさり解決。
以下のように/の後にuを付けてあげる。
$x=preg_replace(‘/パターン/u’,'置換後’,$str);
プログラムのメモ
プログラムが長くなってきて、いろいろトラブってきたので、気づいたことを箇条書きしておく。
エラーが出たとき、修正するのにすごく時間がかかってしまう。頭を使わない作業に時間を使うのは無駄なことなので、できるだけこれを減らしたい。
手っ取り早くifとかを使いまくっていると、後で何が何だかわからなくなる。楽をするつもりが結局余計な時間がかかるので、最初からこまめに関数化したりしよう。
頭の中だけで、設計して、作っていると、プログラムが長くなったときに手に負えなくなる。面倒でも、紙にわかりやすくまとめて、さらに、作業フォルダにテキストファイルを作り、作業順序と、どのファイルがなんの働きをするのか簡単でいいのでメモしておこう。
時間を測ってみたんだけど、最後のエラーの修正が一番時間がかかってる。打ち間違いだったり、点が抜けてたり。後で修正するんじゃなくて、最初からミスができるだけないようにしたほうが時間短縮になるはず。
PHPのエラー表示のメモ
プログラムが長くなってくると、ときどき出くわすのが
syntax error, unexpected $end in ファイル名 on ライン番号
unexpected $endというくらいだから、カッコの数がおかしいとか、そういう類のエラーというのは予想がつくんだけど
詳しく調べてみると、閉じカッコが足りない場合と、最初のカッコが足りない場合でエラー表示が違うとわかった。
閉じカッコが足りない場合だと
syntax error, unexpected $end in ファイル名 on ライン番号
逆に、最初のカッコが足りない、つまり閉じカッコの多すぎると
syntax error, unexpected ‘}’ in ファイル名 on ライン番号
これ知らなかったので、へぇ~と感心した。
このエラー表示で閉じカッコが多いのか少ないのか判断できるので、取り敢えず、カッコと足したり引いたりして、エラーを解決するのが早くなる。
エラー表示なんて、適当にしか見てなかったので、これからはちゃんと調べるようにしよう。