2014年1月アーカイブ

ファイル選択をしたら自動的にajaxでアップロードする機能をつくっていたのだけど、やっぱりIE対応でつまづいた。いちおうIE8対応を目指した。

ajax送信は、このライブラリを使用。

jQuery Form Plugin
http://malsup.com/jquery/form/

そのままだとIEで動かない。
596行目のfinallyがIEではエラーになるので、コメントアウト。

次、ファイル選択で自動アップロードしたかったので、jQueryのchangeイベントで処理を書いたが発火してくれない。

jQueryのchangeイベントで気をつけること
http://d.hatena.ne.jp/sho-yamasaki/20120319/1332168988

onchangeならうまくいくらしい。

あと、ファイル選択部分を以下をつかって整えた。

JavaScript · Jasny Bootstrap
http://jasny.github.io/bootstrap/javascript/#fileinput

がIE9以下だとうまく動作しないので、条件付きコメントで切り分けることにした。IE10は条件付きコメントが廃止されたので、他のモダンブラウザと同様に動作する。

ということで、最終的なコードはこんなかんじ。

毎回、IEには苦労させられる。テンプレ通りIE爆発しろ!と言っておこう。

Djangoアプリを開発しているのだが、テンプレートエンジンをJinja2を使っている。

[Python]djangoのテンプレートエンジンをjinja2にする方法 | Forodin
http://blog.forodin.com/2012/12/django%E3%81%AE%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3%E3%82%92jinja2%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-4/

で、フォームの作成を楽にしたくて、Jinja2のマクロ機能を使って、フォーム用のマクロを書いた。

Bootstrap3の使用前提で、修飾してある。
ファイルアップロードは、

JavaScript · Jasny Bootstrap
http://jasny.github.io/bootstrap/javascript/#fileinput

これを使っている。

あまり需要なさそうですが、どうぞご利用下さい!

表題の通りのプラグイン。JSONPはGETはできるけどPOSTができない。
クロスドメインでPOSTがしたかった。

セサミン・ラボ - jQuery でなんちゃってクロスドメイン POST
http://www-al.nii.ac.jp/~kameda/blosxom/entries/img/cmlog/1002010614/

↑にパラメーターをつけて送信できるように改良しました。感謝。

若干、パラメーターの埋め込みをハードコーディングしてしまってますが、だいたいの用途に使えると思います。
ご自由にお使い下さい。

友人がそこそこ小遣い稼ぎできるよ、と教えてくれたので、2ヶ月ほどNaverまとめをやってみた。

やってみた感想としては、だれでもいつでも参加できる週刊誌の記者をやっているようなものだなぁと。
既存のコンテンツからの切り貼りだけど。
いくつかやってみて気がついた点をまとめてみた。

瞬発力と持続力

まとめには瞬発力と持続力があり、どちらもあるまとめが理想。

ゴシップ、火事、殺人事件などは、テレビや新聞のニュースになるので瞬発力がある。
大手新聞サイトは過去記事は消されていくので、まとめておくと、まとめしか残らないのであとから検索され続け、持続力もある。
ただし、早い者勝ちな世界で競争が激しい。

やっぱり、テレビで流れるものは検索されるので流入も大きい。瞬発力がある。

テレビドラマなど、毎日、毎週放送されるものの感想をまとめたりすると持続力も瞬発力も得ることができるようだ。これもたいてい他の人がやっている。

Naverまとめ連携サイトからの流入

マピオンとの連携で地域ごとにまとめが表示されていたので、地域性のあるまとめは有利だった。
現在は表示されなくなっている。終了?

Yahoo!の検索結果
ひとつの単語のキーワード検索の結果にNaverまとめ記事が3本出ることがある。
ここに載ると相当流入が期待できる。ここに乗り続けられれば、持続力を維持できる。

▼トピック

トピックのRSSから自動的につぶやいてくれるボットがいるので、そのトピックを適用すれば、かなり拡散が期待できた。
トピックをつける、お気に入りに入れる、更新するのいずれかで、トップに載ることができたので、とても効果があった。が

トピックボードの仕様変更について - NAVERまとめ
http://matome.naver.jp/notifications/info/2138741974791989500

↑の変更で、ほぼこのルートでの拡散は望めなくなった。残念。

▼プロフィール欄のSEO効果

どれくらい効果があるのかわからないが、多くのまとめを公開しているユーザーはたいてい「自分のまとめのまとめ」へのリンクをプロフィール欄につけている。
文字数制限のためURL短縮サービスのbit.lyを使ってリンクしているケースが多い。


▼自分の場合

最初は、自分の好きなものや知っている知識ををまとめていたが、それだけどだとなかなかPVが上がらなかったので、いろいろ他のひとのまとめを参考にした。

瞬発力のあるネタは、毎日、いち早くやらないといけないので、割ける時間が昼休みくらいなのでなかなかできない。なので、なるべく持続的にPVが出る方法がないか試行錯誤した。

たまたま、作ったまとめが、しばらくしてあるキーワードでGoogleの検索結果1番目に来た。これは持続性がかなりあり1万PVを越えた。同じようなまとめを作って、Googleの検索結果上位に載せることもできた。

たまたまだったが、大手サイトがニュースにしにくく、検索されやすいキーワードを見つけてまとめられたのがよかった。

その他、1万PVを越えたのは、ふなっしーネタで一本、毎週1回更新すればよいものが1本。

週一回更新で、他の日はなにもしなくても1日2000PVくらいは出るようになったので、月2〜3000円くらいでそこそこ小遣い稼ぎできるようになってきた。

今後も自分の好きなジャンルをまとめつつ、なるべく持続性のあるまとめを作ることを目指していこうと思う。

Djangoアプリを開発していて、公開サーバーにデプロイしても、JSファイルなど静的ファイルが、ブラウザキャッシュが効いてしまっていて変更が反映されない。

ファイル名のあとに?timestampを入れられる方法がないか探していたら、こんなmiddlewareがあった。

http://people.iola.dk/olau/python/modtimeurls.py

STATIC_ROOTが重要。
htmlの出力時に、静的ファイルの最終保存時間を見に行く感じなのでパフォーマンスは若干犠牲になりそう。

 Google AppEngineで、Python2.5から2.7にアプリをコンバートする時に、テンプレートエンジンがDjangoからJinja2に変更になった。

Migrating to Python 2.7
https://developers.google.com/appengine/docs/python/python25/migrate27?hl=ja

 その時に、従来のdjango用テンプレートを、Jinja2用に書き直すのにわかりやすいドキュメントがなくて、いろいろ苦労したので、JangoフィルタのJinjaへの変換対照表をメモっておく。
 誰かの役に立てば幸い。

テンプレートの継承

{{ block.super }}
↓
{{ super() }}


日付

{{ recipe.date|date:"Y/m/d" }}
↓
{{ recipe.date|datetimeformat('%Y-%m-%d') }}

def datetimeformat(value, format='%H:%M / %d-%m-%Y'):
    return value.strftime(format)

繰り返し

{{forloop.counter}}
↓
{{loop.index}}

エスケープ

{% autoescape off %}
↓
{% autoescape false %}
{% endautoescape %}
or
{% value|safe %}

コメント

{% comment %}
{% endcomment %}
↓
{#
#}


ifchanged

{% ifchanged lib.city %}
{% endifchanged %}
↓
{% for lib in libraries %}
{% if before_libcity != lib.city %}
{% set before_libcity = lib.city %}
{% endfor %}

floatformat

{{city_okper_population|floatformat}}%
↓
{{city_okper_population|round(1, 'floor')}}%

cycle

{% cycle 'recipe_left' 'recipe_right' %}
↓
{{ loop.cycle('recipe_left', 'recipe_right') }}

Kindのキー

.key.id
↓
.key.id()

linebreaksbr

カスタムフィルターを作成

Django snippets: A few jinja2 filters like django ones
http://djangosnippets.org/snippets/1371/

from jinja2 import Markup, escape 

↑をインポートしておく必要がある。

Jinja2はDjangoテンプレートに比べて、自由度が高く、軽くなっている印象がある。
Djangoも最近はだいぶ柔軟になっているようだけれど。

あと、Jinja2でフォームを書く際に便利なマクロがあったので、メモしておく。

Jinja2 WTForms macros for twitter bootstrap
https://gist.github.com/ligthyear/1284631

WTFormsというライブラリを使っていて、Bootstrap2用だけど、適宜書き直せばわりと便利に使えると思う。

iPhone5sに機種変更すると想定すると、データ通信がLTEになってさらに月額1000円ほど利用料があがるので、なかなか高くなる。データ通信をWiFiルーターで、通話、携帯メール(MMS)は使える方法がないかと思っていたらこんなやり方があった。

iphone5のパケット遮断に成功(未脱獄) 
http://iphoner.sblo.jp/article/60569157.html

でも、バッテリーの問題とか、2つ持ち歩かないといけないとか面倒で、浮くのは3000円程度なので、WiFiルーターの利用料金も考えると、結局、通常の契約をしてしまいそうになるなぁ。
低速でいいので月額利用料が安くて、iPhoneにくっつけられるくらい小さいサイズで、充電もいっしょにできて、ある程度バッテリーが持つWiFiルーターとかでないものか。

このアーカイブについて

このページには、2014年1月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2013年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ