スポンサーサイト

0

    一定期間更新がないため広告を表示しています


    • 2014.12.23 Tuesday
    • -
    • -
    • -
    • -
    • -
    • by スポンサードリンク

    django製CMSからPing送信(メモ)

    0
      これまた海外製フレームワークの仕様というべきか、djangoにはping_googleという関数が用意されていますが、グーグル以外へのPing方法は用意されていません(というか、ドキュメントを読んだだけだと、一見用意されていないように見えます)
      GoogleだけじゃなくせめてYahooぐらいには更新Ping送りたいですよね。できれば、テクノラティとかドリコムとかもっともっと色々なところに送りたい^^; ←欲張り

      そこで、まず「django ping」等で片っ端から検索してみました。
      ありがたいことに、Pythonのxmlrpclibを使った実装例?がいくつか引っかかりました。
      しかし、私はxmlrpcがとっても苦手なわけで…(−−;;;


      とりあえず、お気楽にdjangoのping_google関数の中身を解剖するところからはじめることにしました。

      djangoのping_googleメソッドは、django.contrib.sitemapsからインポートした覚えがあったので
      … site-packages → django → contrib → sitemapsとたどっていきました。
      __init__.py
      views.py
      templates/
        sitemap.xml
      sitemap_index.xml
      とたった4つのファイル。
      テンプレートのxmlは除くとして、views.pyにはindexとsitemapの2つのビューの定義だけが入っていたので、消去法で__init__.pyに行きました。

      早速解剖してみると…
      続きを読む >>


      djangoがsymfonyより優れているところ(1サイトをMovableType→django製簡易ブログへ移行完了!)

      0
        タイトルのとおり、趣味で運営しているサイトを一つ、MovableTypeからdjango製自作簡易ブログ(CMS)に移行しました。

        総制作期間:1日半(DB設計からテンプレート書き、データ移行全て含めて)
        驚異的な速さです^^ djangoばんざーい。
        ・情報交換(WEB2.0)型じゃなくて、一方的な情報発信(WEB1.0)型のサイトなので、コメント・トラバ送受信は無しにしました。
        もともとMTでもつかってなかった機能ですし。
        sitemapフレームワークを利用して、サイトマップを付けてみました。MT時代は手動でサイトマップ用MTテンプレートを書き、再構築していました。

        サイトの構成としては、
        └カテゴリ別のQ&A形式の記事…メインコンテンツ
        └用語集…メインコンテンツの補助(参考)として
        という感じなので、それぞれを
        myproject
        └cms
        └wordcard
        という感じで独立したアプリを組み、list_detail型汎用ビューにお世話になって作りました。

        さて、最近のブログ記事でsymfonyとdjangoを比較しているわけですが、ずっとsymfonyをほめてばっかりでf^^;
        たまにはdjangoを褒めようと思います(違


        djangoがsymfonyよりイイ!点。


        django対symfony 日本語メール送信(その2 django編)

        0
          symfony編からの続きです。

          で、djangoで日本語メールを送信するためにはどうすればいいの?というお話。

          djangoやpythonでのエンコードの扱いは、スクリプトの冒頭にエンコーディングを指定してしまえば、ほとんど意識することはないと思います。少なくとも私は、コードもHTMLも全てUTF8で書くことにしており、それ以外ではあまり意識していません。
          日本語メール送信の必要がなければ。ーー;

          pythonでの日本語事情を考慮に入れた上で、djangoのメール送信について調べてみると…
          django日本語ドキュメント:e-mailの送信に書いてありました。


          django.core.mail で送信される電子メールの文字セットは DEFAULT_CHARSET 設定 の値に設定されます

          ガーーーン!
          デフォルト文字セットを当然UTF8にしてる私が日本語メールを送るにはどうすればいいんじゃー!

          ということで、私が考えた方法をメモ。
          まだ実験してみてないので、後日実験してからマズイようなら修正します。

          ■方法1:setting上のデフォルト文字セットをiso-2022-jpにして、通常のページ出力の際はその度ごとにUTF-8を指定する。
          理論上可能だと思うけど、ビュー書くのが面倒になる予感。

          ■方法2:djangoでメール送信するのを諦める。
          「DB接続して、指定したあて先(例えばuserテーブルのidいくつとか)に指定したメール内容を送る」という単体スクリプトを書く。

          ・一つの処理の流れの中でメール送信をする場合(ユーザ登録など)
          流れ:メール送信前の処理→メール送信用単体スクリプトにリダイレクト→メール送信→メール送信スクリプトからdjango製次のページへ更にリダイレクトで戻る
          難点:ユーザーが読み込みを中止したりブラウザを閉じたりすると中断してしまうかも

          ・バックオフィスから突発的にメール送信(メルマガ配信など)
          流れ:adminサイトからメール送信専用アプリにリンクを貼り、adminがメール送信専用アプリにログインしてからメールを送る
          難点:ログインが2重になるので面倒(特に私以外のadminユーザが配信するとき)

          やるとしたら、私はPHPで書いちゃうと思いますが、他の言語のほうが得意な人はそっちでもいいのでは。一つのWEBアプリを最初から最後までdjangoとpython使ってつくらなくちゃいけないってきまりは無いんだし♪
          現実的にはすぐ実装したければこの手段を使っちゃうかも。


          まだ本家のTicket漁ってないので、どなたか既に提案を出してるかどうかわかりませんが、文字セットを何でもかんでもデフォルト限定じゃなくて、何らかの形でセットできるメソッドなりオプションなりを付けられる形になればdjangoのメール送信機構を使う気になるかなぁ。

          誰か、要望出してます?
          それとも、独自のmailクラスを付加する等で、djangoで日本語メール送信を達成した方、いらっしゃいますか?><

          #海外製フレームワークと日本語メールといえば、もうひとつ問題があって、QuotedPrintableとBase64の問題もあるな…。djangoはその辺どうなってるのか未確認です。引き続き調査が必要?


          なんにせよ、選択肢がたくさんあるのはいいことですね^^
          私が高校〜大学入りたての頃(2000年前後)は、WEBアプリ開発言語といえばPerlCGI全盛の感がありました(文系の大学生が趣味でやってみるレベルの話です)が、今はPerl(cgiだけでなくmod_perl)・PHP(ネイティブ・PEAR・symfony・Ethna・Zend・Cake etc.)/Ruby(Rails)/Python(django/TurboGear etc.)…色々選べます。
          だからこそ、より使い勝手のいいもの、よりパフォーマンスのいいものを追求したりする「手間」「悩み」もあるわけですが^^;;;


          django対symfony 日本語メール送信(その1 symfony編)

          0
            クライアントさんのための作業(私の手書きPHP製WEBアプリをsymfonyへ移行)が一段落したので、勉強を兼ねてdjangoでいくつかアプリを作ってみています。
            で、我々日本語話者にとって、海外製フレームワークを使うにあたっての重要な問題が…やはり発生fーー;


            WEBサイトそのものの表示・DB接続周りは、UNICODEさんのお陰で改善されてきた今日この頃ですが、問題はメールですよ、メール!日本語メール、文字化けせずに送れるか?が実用ベースに乗るかどうかの分かれ目と言っても過言じゃないかも…


            まず、symfonyの場合。
            symfony code snippetに「さこだ こうた」さんが投稿してくれたコードがあります。
            sfMailを拡張するmyMailというカスタムクラスを作り、自前でmb_convert_encodingした
            本文をつっこむというもの。
            これだと、WEBサイトの表示用言語(かつ、DBやコード自体の文字コード)としてあまり一般的ではないiso-2022-jpに、メール送信直前にエンコード変換をすることができて、日本の一般人がちゃんと読める形式のメールを送ることができます。

            ※ちなみに、厳密に言うと上記snippetのコードだけでは日本語メールは送れません。
            私が自作して使っているmbMailクラスを公開しますと…


            XREAでpython cgiを使ってdjango♪ 追加TIPS

            0
              先ほどの全ページ404エラーの件、解決しました。

              結論から言うと、XREAでCGI版pythonを経由してdjangoを使うにTIPS(必須!)を追加です。

              urls.pyの各設定の頭にdjango呼び出しCGIのファイル名を書く


              × r'^hoge/hoge/$'
              ○ r'^index.cgi/hoge/hoge/$'


              「なぜ1回目(設置直後)は何事もなく動いていたのか?」という疑問は残りますが、とりあえずこの方法で使えるようになりました。


              で、なんで原因がわかったのかと言うと…
              私、既に公開している鯖に設置するということでsettings.pyのDEBUGをFalseにしておりました(汗
              今回どうしても他の方法で原因がわからなかったので、昼下がり、もっとも巡回される可能性が低い時間を狙って、DEBUG=Trueにしてみたら^^;
              django様は「urls.pyにマッチするURLが無いYO」とお怒りだったのでした。
              お粗末な結末〜〜orz


              全ページで404エラー???原因探索中

              0
                土日、Win機の故障でえらい目にあい、djangoのテストサイト@XREAをいじってませんでした。

                今日、見に行ってみたら…
                え???全ページで404エラーページが出力されてました。

                .cgiにCGI-DEBUGをセット(.htaccess)してdjango.cgiを見ると、ビューが404になってるわけではなくて、ちゃんと鯖からのレスポンスが404エラーになってます。

                getobject or 404してるビューだけではなく、indexビューも404ですorz

                同じXREAアカウント内の他サイトは無事(symfony使ってるサイトも無事)ですし、負荷率を見ても軽いです(というか私が動作確認で表示してみただけ)。
                CGIの使用が禁止されたわけではないと思うのですが。

                また、ちゃんと私の設定した404ビュー(404.htmlからbase.htmlを呼んでますが、それも)が表示されているので、CGI又はPython自体が止められたわけでも無い様子。
                ますます原因がワケワカメです。

                パーミッションを755→705→700と変更してみたり
                /virtual/myaccount/bin/pythonのパーミッションも確認してみたり(ちゃんと実行可能でした)
                DBを変えてみたり(Postgresにしてみました)

                思いつくことは全部やりましたが、現時点では全くだめっぽいです。
                一度完全にちゃんと動いたものが、何も変更していないのに突然動かなくなる(または、動いても動作がおかしくなる)。
                これほどストレス溜まるものはありません…

                誰かdjangoで同様の事態になった方はいませんか?(いるわけないよね。泣)

                15:00追記 解決しましたm(_ _)m


                解決!XREAでCGI版Pythonを使ってdjangoを動かす(人柱?)

                0
                  えーと、3エントリ目^^;;

                  無事解決しましたので、解決法をメモ。

                  まず私は、djangoの開発版(svnでcoしてくるもの)とMySQLdbをインストールしたつもりでした。
                  が、結局原因はMySQLdbがきちんと入っていなかったことかも??

                  まだ見ぬXREA愛用者のために♪

                  解決した手順:
                  1.XREAでSSHに入ります。鯖:myaccount.sXXX.xrea.com ユーザ:myaccount パスワード:FTPパスワードと同じ
                  ちなみに、私はputty愛用者。

                  2.ログインすると/virtual/myaccountに居る状態になります。
                  ****************
                  私はまずここで、MySQLDBをsourceforgeからwgetしてきました。
                  ※Linux初心者の方へ
                  「wget http://〜」と入力してエンターキーを押すとhttp://〜で指定したファイルをダウンロードします♪

                  tar -zxvf MySQL-python-1.2.2.tar.gz
                  cd MySQL-python-1.2.2
                  python setup.py install --prefix=/virtual/myaccount/python/lib

                  とやってみたんですが、インストールできませんでした(汗

                  --helpしてみたり、prefixのディレクトリを変更してみたり色々したんですが、だめでした。

                  ふと、エラーメッセージを見ると、親切にも「pythonのライブラリディレクトリへの権限がありません!権限が無くてインストールで困ってるね!http://peak.telecommunity.com/EasyInstall.htmlというリンクを見てね♪」(大意)と英語で書いてありましたf^^;

                  まぁ週末で時間はあるんで行ってみました。

                  すると、Virtual Pythonという便利なシロモノが紹介されています。
                  曰く、「root権限を持たないユーザがPythonのライブラリを自前でインスコしたい場合に使えるツールだよ♪使い方かんたーん♪」(超意訳)ということなので、とりあえず物は試し。

                  wget http://peak.telecommunity.com/dist/virtual-python.py
                  python virtual-python.py

                  でバーチャルPythonのできあがり。
                  よくよく動作中のメッセージを見ていると、/usr/local/bin/python(XREAのPythonはココにあります)から、pythonのバイナリを/virtual/myaccount/bin/pythonにコピーしてきて、かつ、/virtual/myaccount/lib/python2.4を、コピって来たPython専用のライブラリDIRに設定している様子。

                  バーチャルPython配布元サイトの説明によると、更にeazy_setup.pyをインストールすると、MySQLdbが自前でインストールできるみたい。


                  wget http://peak.telecommunity.com/dist/ez_setup.py
                  /virtual/myaccount/bin/python ez_setup.py
                  #↑さっきグローバルなPythonからパクってコピーしてきたpythonバイナリを使います

                  完了メッセージが出て正常に完了。

                  #sh1.2 pyblosxomさんも書いておられる通り、日本の借鯖事情としてPython環境が劣悪です。CGI版で使えるだけでもありがたく思え!な世界です。
                  #これはひょっとして日本のdjangoユーザの救いの神になるかも?
                  #諸先輩方、とっくにご存知でしたらすみません。
                  *****************
                  で、ようやくMySQLdbをインスコできる状態になったのでインスコ。

                  /virtual/myaccount/bin/python setup.py install
                  #↑しつこいですがバーチャルのほうのpythonを使います

                  今度は無事MySQLdbのインストールが完了!

                  で、mysite.cgiをちょい修正。
                  1行目
                  #!/virtual/myaccount/bin/python
                  #自前のバーチャルなpythonを使うように指示
                  32行目
                  #sys.path.append('/virtual/myaccount/〜')
                  #コメントアウト又は削除(mysite.cgiのデフォルトに戻す)

                  他はさっきの通りです。

                  3.とりあえず現状でテスト。
                  http://myaccount.sXXX.xrea.com/index.html (urls.pyで設定したトップページのURLconf)
                  …CGIスクリプトエラー

                  4.仕方ないので.htaccess1行目に↓を追加してデバッグ

                  AddHandler cgi-script-debug .cgi

                  見てみると、PATH_INFOがない!と怒られてました^^;
                  さっき解決策を求めて本家のdjango.cgiのticketにあるコメントを漁っていたとき、「PATH_INFOを追加しないと動かなかったYO!」とjedieさんが書いてたのを思い出したので、jedieさんのコメント後半より

                  environ['PATH_INFO'] = environ.get('PATH_INFO',"/")

                  をコピーしてきて、mysite.cgiに貼り付け。再度アップロード。

                  5.キターーーーーーーーーー
                  動きました!ちゃんとindexビューが見えました。感動。
                  心配していた速度も、それほど遅くないです。
                  XREAはもともと鯖設定がイイので♪そのせいかもしれません。

                  私の長ーーーーい一日がようやく終わりました♪ちゃんちゃん。
                  #これを機会にXREAユーザにもdjangoが広まるといいなぁ。
                  #そのうちXREAにdjango+FastCGIが標準装備になることを願って(-ι-З)


                  CGIでdjangoを動かす(ドツボ中…誰かヘルプ〜〜)

                  0
                    えー、1日の間に盛り上がったり、どん底まで沈んだり忙しい奴ですんません。

                    いよいよ動かしてみよう!ということで無謀にもXREAにCGI版で設置を試みました。
                    参考にしたのは
                    さくらインターネット CGIでdjangoを動かす
                    CGIでdjangoを動かす
                    django.cgi(本家のticket)
                    辺り。
                    django.cgiをコピペしてきて、.htaccessを書いて、鯖に設置してみました。

                    /virtual/myacount/
                    -----public_html/django.cgi
                    -----public_html/.htaccess
                    -----python/site-packages/django/…ここにsubversionでcheck outしたdjangoのファイル群をコピー
                    -----python/site-packages/MySQLdb/…ここにローカルで展開したMySQLdb.tgzから出てきたMySQLdbフォルダの中身をコピー
                    -----python/projects/myproject/…ここにプロジェクトのファイル群をコピー(テンプレート類もここ)

                    django.cgiの編集箇所はココ。
                    1行目
                    #!/usr/local/bin/python
                    XREA公式アナウンスに従って。
                    32行目
                    sys.path.append("/virtual/myacount/python")
                    95行目
                    sys.path.append("/virtual/myacount/python/projects")
                    97行目
                    os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'

                    django.cgiのパーミッションは一般的なCGI実行ファイルと同じでいいよね?
                    755にしました。


                    …動きません(汗

                    仕方ないので、django.cgiそのもののエラーなのかhtaccessのエラーなのか、まず切り分け。
                    アップロードした.htaccessを削除。
                    直接http://myacount.sXXX.xrea.com/django.cgiを叩いてみる。
                    またしても500エラー。
                    ひょっとすると.htaccessにも問題があるのかもしれないけど、どっちにしてもdjango.cgi自体がエラーになってるのは確かと思われる。
                    XREAではエラーログが見れないのでこれ以上の原因探求は無理。

                    しょうがないので、自分用鯖(つってもVPSですが)に移動。
                    ここにはローカルからコピーではなく直接setup.pyでちゃんとインストールしたdjangoとMySQLdbが入っており、しかも鯖のエラーログが見れるので、ちゃんと「500エラー」の詳細がわかります。
                    早速、微妙にdjango.cgiを変更し、自鯖に一時的にAliasを設定してdjango.cgiと.htaccessをアップロード。django.cgiのパーミッションも変更。
                    念のため、DBの構造もローカルで開発してたWin機内のMySQLからエクスポート→インポートで用意。

                    さて、今度は動くか?…動かねぇ
                    疑ってごめんね、XREA。
                    django.cgi自体がエラー出してるみたいよ。

                    というわけで、apacheのエラーログ探索。

                    /home/myacount/python/site-packages/django/dispatch/dispatcher.py:265: Warning: 'yield' will become a reserved keyword in the future
                    Traceback (most recent call last):
                    File "/home/myacount/public_html/django.cgi", line 6, in ?
                    import django.core.handlers.wsgi
                    File "/home/myacount/python/site-packages/django/core/handlers/wsgi.py", line 1, in ?
                    from django.core.handlers.base import BaseHandler
                    "/home/myacount/python/site-packages/django/core/handlers/base.py", line 2, in ?
                    from django.dispatch import dispatcher
                    "/home/myacount/python/site-packages/django/dispatch/dispatcher.py", line 265
                    yield receiver
                          ^
                    SyntaxError: invalid syntax
                    Premature end of script headers: django.cgi

                    どうやらdjangoの読み込みまでは成功、その後django内にsyntax errorなメッセージ??

                    さくらでdjango.cgiを使って動いた人がいるのにー。
                    動いた人が使ったのは0.9.5、私が使ったのが0.9.6だからかなー?

                    来週、仕事始める前に0.9.5にして再度テストしてみよう…
                    助けてくれる人コメントお願いします><


                    urls.pyの設定でハマる(解決済)

                    0
                      チュートリアルの通りに進めて、urls.pyの設定。
                      ここで勝手に突っ走ってハマったので次回はやらかさないようにメモ。

                      前提:
                      私はチュートリアルそのままではなく、勝手にアレンジしてプロジェクトを始めていました(1つ目のバカ行動)
                      「投票サイト」ではなく「本の検索サイト」です。

                      で、urls.py。
                      チュートリアルに従うと
                       …前略…
                      (r'^(?P¥d+)/$', 'detail'),
                       …後略…
                      となるべきところを、
                       …前略…
                      (r'^(?B¥d+)¥.html$', 'detail'),
                       …後略…

                      djangoの先輩にはどこが間違っているかおわかりと思います^^;;;;(滝汗

                      私は勝手に
                      ?PのPはPollのP
                      と思いこんだのです(2つ目のバカ行動)。
                      で、そのまま、自分のModelはPollではなくBookだから、?Pは?Bに直すべきだと勘違いして、その通りにurls.pyを書きました。

                      当然のことながら、runserverすると何度やっても「正規表現がおかしいよ!」というエラー(re.pyって正規表現のライブラリですよね?)が出て、ビューが表示できません。

                      私がどうしたかと言うと…


                      djangoチュートリアルで激ハマリ

                      0
                        引き続きdjangoのチュートリアルで遊んでます。
                        #本当はバリバリデータ投入しなきゃいけないんだけど、クライアントが遠方に出張中なのをイイことにサボり〜♪( ゚∀゚)

                        で、一昨日は自動生成のadminサイトを表示しただけで喜んで終わったんですが←バカ
                        今日、adminサイトからデータを保存してみようと思ったら、エラー(;´・ω・)
                        Warning at admin/polls/poll/add
                        Incorrect string value: '¥xE3¥x82¥x92¥xE8¥xBF¥xBD...' for column 'message' at row 1
                        だそうです。

                        このエラーメッセージ単体でググると、MySQLが吐いてるエラーみたい。
                        ただ、phpmyadminから見ると、DBにはちゃんとデータは入ってる(日本語は文字化けしてるがナー ーー;)

                        pythonのシェル(python関連は現在Win機でやってるので、コマンドプロンプト)にはステータス「500」の文字が…

                        日本語がだめなのか?と思って試しに英文文字だけにしてリトライするも、同じWarning。
                        だめだこりゃ。


                        原因探求開始。
                        そもそも、pollテーブルに「message」なんてカラムは無いわけで。
                        pollテーブルには正常にデータ入ってるし。

                        ということは、ログ系が怪しい!(#もっと早く気付けアフォ)

                        ログ系のテーブルの中を片っぱしから見に行ったら、確かにauth_messageテーブルにmessageというカラムがある。
                        フィールドタイプはlongtext。文字コードがlatin1_general_ci。
                        ここに何をつっこもうとしてエラーってるの???

                        現在入ってるデータが全部「???」されてることからして、auth_massageの保存言語が自動で日本語(adminの表示もチュートリアルと違って全部日本語化されてる)になっており、ラテン1に突っ込めないのが問題っぽい。
                        ちょっと前にsymfonyでも言語・エンコード問題で苦しんだのに、djangoよ!お前もか⊂(_ _⊂⌒⊃

                        DBへの照合順序とかSET NAMESとかいろいろ調べてからじゃないと先に進めなさげ。
                        settings.pyをja-jpに直さないで始めればいいのかにゃ?

                        面倒になったので今日はdjango辞めてsymfonyで遊ぼうっと。
                        続きを読む >>



                        PR

                        calendar

                        S M T W T F S
                        1234567
                        891011121314
                        15161718192021
                        22232425262728
                        2930     
                        << April 2007 >>

                        twitter

                        selected entries

                        categories

                        archives

                        recent comment

                        • djangoテンプレート上でmodelのメソッドに引数を渡す方法(djangoで出勤簿アプリ試作中♪)
                          GavannITサービス-なりとみ
                        • 私がそれでも名古屋市に住み続ける理由を6つにまとめてみた!
                          bose wireless speaker
                        • FastCGIでdjango…400エラー???
                          levi's
                        • さくらインターネットdjangoが突然500エラー!?(Pythonバージョンアップされてた
                          salomon running shoes
                        • 私がそれでも名古屋市に住み続ける理由を6つにまとめてみた!
                          louboutin shoes
                        • FastCGIでdjango…400エラー???
                          yeezy boost 350
                        • さくらインターネットdjangoが突然500エラー!?(Pythonバージョンアップされてた
                          jordan 11
                        • Silexでエラーページをカスタマイズする方法 : Symfony Advent Calendar 2011 - day 12
                          pandora jewelry
                        • django対symfony 日本語メール送信(その1 symfony編)
                          nike air vapormax
                        • 解決!XREAでCGI版Pythonを使ってdjangoを動かす(人柱?)
                          kate spade

                        recent trackback

                        • HTMLの表(TABLE)のセル(TD)に斜線を引くjavascriptライブラリ slash.js 作っちゃいました
                          常山日記
                        • django対symfony 日本語メール送信(その1 symfony編)
                          CPA-LABテクニカル
                        • CodeIgniterでユーザー認証
                          されどLAMPな日々
                        • 久々にdjangoを最新版にしたらHTMLがエスケープされちゃった!!(解決済み)
                          常山日記
                        • FastCGIを諦めてmod_pythonを使う。Apacheのアップグレード
                          サーバー用語集
                        • さくらインターネット、sqlite3でdjango@CGI版を使う際の設定メモ
                          常山日記
                        • さくらインターネット スタンダードプランでdjango使ってる方、DBは?
                          mitszoの日記
                        • python多次元リストをsort(並べ替え)する方法?
                          mitszoの日記
                        • フォームから送信した値とrequest.POSTの挙動($_POST@PHPとの比較)
                          Humming Via Kitchen
                        • 日本語テキストをtruncate@django(Python全般にも??)
                          常山日記

                        recommend

                        links

                        profile

                        search this site.

                        others

                        mobile

                        qrcode

                        powered

                        無料ブログ作成サービス JUGEM