2012/06/30

[Python][django]model作成時のラベルについて

はじめての Django アプリ作成、その 1で下記のような記述がありました。

from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()
DateTimeFieldメソッドの引数になっている「date published」ってなんぞや?

リファレンスを調べてもわからなかったのですが、いろいろさわっているうちに、これは、adminページで表示されるラベル文言であることがわかりました。

デフォルトでは、変数名になるのですが、独自にカスタマイズしたい場合に、この引数に設定すればおkです。

なんだかわかってすっきりしました。

2012/06/28

[Python][django]sqlite3の設定時の注意

setting.pyファイルでDATABASESの設定ができるのだが、sqlite3を設定する場合は、ENGINEキーの設定もそうだが、NAMEキーの設定も注意したい。

例えば、windowsで設定する場合は、下のようになる。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'C:/Django-1.4/testsite/database/test.sqlite',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}
要注なのだが、windowsの場合でも、NAMEキーのディレクトリ設定は、「\」(エンマーク)ではなく「/」であるところ。

「\」にしてしまうと、正常終了しないので、気をつけたい

2012/06/27

[Python][django]タイムゾーンと言語設定

djangoのタイムゾーンと言語設定はどうすればいいのだろうか?
settings.pyを見ると、TIME_ZONEには、
http://en.wikipedia.org/wiki/List_of_tz_zones_by_nameを見ろと書かれていたし、同様に、LANGUAGE_CODEに関してはhttp://www.i18nguy.com/unicode/language-identifiers.htmlを参照してほしいとあったが、列挙されているデータを見るのがめんどくさくなってしまったので、あえてぐぐることに。

タイムゾーンと言語を日本に設定
settings.TIME_ZONE = 'Asia/Tokyo'
settings.UAGE_CODE = 'ja'

via:Djangoアプリ作成手順
なるほど、上のように設定すればいいわけですね。

2012/06/26

[Blogger]I/O Liveを貼り付けてみる

「I/O Live」と呼ばれるこの新ツールは、テキスト入力を「Google+」に依存している。Google+アカウント上で投稿したものが、同ウィジェット上に表示される。ほかのテキスト入力方法はない。

via:グーグル、「Google I/O」カンファレンス用のライブブログツールを提供
というわけでさっそく下に貼り付けてみた。

現状、これだけだと、何が便利なのかがわからない。

そもそも、ブログ上で、このようなバーツを貼り付けたところで、有効活用されるのだろうか?

YouStreamでも、実際に、そのページに訪問して、コメントを残すことが多いだろうし。

結果がどうなるのか非常に気になる。

2012/06/25

[Objective-C][iOS]unknown type name

確実に、import文でクラス定義をインポートしているのに、なぜかエラー??

どうしてかなーっと思ってぐぐったら答えがありました。

This problem happen to me once.

I was importing the "APPDelegate.h" in my h file and in my APPDelegate.h I was importing the file too (it shouldn't be a problem but...)

What I did: I changed the Import from my own .h to .m and it worked :)

via:unknown type name in objective c
どうやら、AppDelgateファイルをインポートしていたのが原因のようです。

確かに削除したら、うまくいった。

以降から気をつけたいですね。

2012/06/24

[Python]PATHを通す

windows環境下で、pythonを立ち上げる場合に、毎回、毎回、python.exeがあるところまで、ディレクトリを移動させて、pythonとコマンドを打つのはめんどい。

そこで、pythonと打っただけで、起動するように、pathの設定をしました。

設定方法は、環境変数PATHの設定を読みながら、「環境変数」ボタンを押して、PATH変数に、python.exeまでのディレクトリを入ればおk

これで、次回以降困ることはありませんね。

2012/06/23

[ゲーム]ガーディアンクルスを始めました

スクエニの最新ソーシャルゲームのガーディアンクルスをはじめました。




理由は、わかりませんが、とにかくはまっています。

新規登録時に招待ID SF53563 を入力するとお互いにレアカードが貰えますので、もしご興味がある方は、app storeより無料でダウンロードできますよ。

2012/06/22

[GoogleAppEngine][Python]DATETIMEについて

GoogleAppEngineを使って、gqlを発行する際に、WHERE句にDATETIMEという関数を使って指定することができる。

で、どうやら、マニュアルを読んでみると、こんな感じでいけちゃうようだ。

WHERE hoge < DATETIME(2012,6,2,2,4,6)
と同時に、文字列のような形で、
WHERE hoge < DATETIME(2012,06,02,2,4,6)
と0を付与しても、正常動作するようだ。

これ、すっげー便利。

2012/06/21

[iOS][Objective-C]NSNotificationCenterのpostNotificationNameでパラメータ送信

今まで、NSNotificationCenterクラスのpostNotificationNameメソッドで登録されているメソッドをコールすることができたのですが、その際に、今回、パラメータも送りたい場合、どうすればいいのだろうか?

iPhoneSDKというかObjective-Cでコールバック [iphone]
によると、単純にobjectキーにパラメータを付与すればいけそうだ。

ただ、その際に、受け取る側はどうすればいいのだろうか?

答えは、単純、同エントリーにはこのように書かれていた。

// ViewA.m
- (void) transitView:(NSNotification*)note {
// argを取り出す
id obj = [note object];
}

via:iPhoneSDKというかObjective-Cでコールバック [iphone]
確かに同じやり方でできた!!

これで、パラメータの扱い方にも困らないぞと。

2012/06/20

[iOS][Objective-C]UIImageViewでtouchesBeganがコールされない件

昨日の記事につづいて、実は、UIImageViewでも、同様にtouchesBeganがコールされず。。。

原因を調査したところ、userInteractionEnabledをYESに設定すればタッチを感知してくれました。

というか、デフォルトでYESでもいいと思うんだけど。

なぜ、この仕様になっちゃっているのだろうか?

2012/06/19

[iOS][Objective-C]UIScrollViewでtouchesBeganがコールされない件

なるほど、そういうことだったの、単純だな。

UIViewControllerのviewプロパティーにUIScrollViewのインスタンス変数を設定しても、なぜか、UIViewController上ではtouchesBeganがコールされず。。。

原因を調査したところ、下記を見つけた

ただし、UIScrollviewの上では効かないんですよね。

UIScrollviewの上をタッチすると呼ばれないんです。

・・・省略・・・
こんな感じでUIScrollViewを継承した独自のクラスを作って、

・・・省略・・・

via:UIScrollViewでタッチを感知する為には。。
つまり、UIScrollViewを継承させたクラスを作れば解消するとのこと。

実際に試したら、うまくいきました。

ってか、なぜ、そうなっちゃっているの?www

2012/06/18

[iOS][Objective-C]NSStringのformatについて

NSStringのstringWithFormatメソッドやNSLogなどを使ってフォーマットした文字列を出力するときがありますが、そもそも、NSStringを設定したい場合は、どうすればいいのだろうか?

String Format Specifiersを読むと、どうやら、「%@」でいけるようだ。

結果的にこうなる。

NSLog("this is %@",@"hoge");
実行した結果、「this is hoge」と出力されました。

NSStringはしょっちゅうデバッグを行なう必要があるので、これは便利ですね。

2012/06/17

[GoogleAppEngine][Python]gqlのBoolean値について

Google App Engine上でqueryを発行するときに、gqlというものを使います。

その際に、他のsqlと同じようにクエリーでブーリアンを使うことができるのですが、その方法を調べました。

GQL リファレンスを見ると、「TRUE または FALSE」と書かれていたので、単純に、

WHERE hoge = FALSE
または、
WHERE hoge = TRUE
で発行することができました。

2012/06/16

[本]Google Analyticsではじめるテストマーケティング

読了
Google Analyticsではじめるテストマーケティング
Google Analyticsではじめるテストマーケティング
高橋 直樹

第1章 Webサイトを使いこなして売上げを伸ばそう!
1-1 あなたのWebサイトは本当に役立っていますか?
1-2 Webマーケティングを成功させるポイント

第2章 Google Analyticsでできること
2-1 Google Analyticsは無料で高機能!
2-2 Google Analyticsを導入する
2-3 本格的に使う前の準備
2-4 Google Analyticsの主な機能

第3章 Google Analyticsの基本的な使い方
3-1 「マイレポート」で人気ページを知る
3-2 コンバージョンを設定する
3-3 情報を解析する「期間」を設定する
3-4 基本情報を確認する
3-5 複数項目の掛け合わせでお客様のニーズを知る
3-6 同業他社サイトと比較する
3-7 モバイルサイトを計測する
3-8 解析した情報を見やすくする
3-9 テストマーケティングの流れ

第4章 訪問者数を増やす方法
4-1 どんなお客様が訪問しているかを知る
4-2 リアル広告の効果が高い顧客を探り出す
4-3 AdWordsを使って訪問者数を増やす

第5章 直帰率・離脱率を下げる方法
5-1 直帰されてしまっているページを見つける
5-2 直帰率の高いページを改善する
5-3 離脱を少なくする

第6章 コンバージョンをアップする方法
6-1 コンバージョンが上がらない原因
6-2 ニーズをつかんでいるかを確認する
6-3 ページ構成や入力フォームを確認する
6-4 コンバージョンに至るまでにボトルネックがあるか確認する

第7章 訪問頻度をアップする方法
7-1 メールマガジンを発信して集客する
7-2 リピーターに再訪してもらう方法

第8章 Twitterやリアル販促と連動した集客方法
8-1 Twitterを使ってWebサイトへ集客する
8-2 リアル営業とのクロスメディア施策

via:目次
最近、本ブログの解析を始めるようになり、だいぶ前からGoogle Analyticsを導入しているものの実際に使いこなすところまではいっていなかったので、amazonで単純に検索結果の上位にヒットした本書を手に取りました。

結論からいうと非常にわかりやすい。

最初の導入の手続きから使い方まで初心者向けにわかりやすく解説していると思いました。

ただやはり読む前から想像していた通り注意してほしいのは、PVやセッションの具体的な改善方法については書かれていない。あくまでも指針であるが、それだけでも十分だと感じた。

何点か気になることがあったのだが、twitterからのアクセス分析のところで、これって他の短縮URLサービスからきた場合も、同じように計測できるのだろうか?

本書ではURLの掲載がないし、twitterのツイートされている画像もなかったので、怪しいところがあると感じた。

コラムで「mixiは若者向けの会社に強い」とあったが、果たして本当だろうか?
greeじゃーないのだろうか?
ってか、mixi??
ミクシィに迫る、フェイスブックの日本アクティブユーザー数が1千万人超える
なんていうエントリーもあるぐらいだから、実際には、facebookに注力した方がいいのかなと思ったり。
まー出版されたのが、2011年の3月なので、しょうがないと言えば、しょうがないのかも。

メルマガやtwitterからのアクセス解析を紹介しているのだから、facebookのlikeボタンからのアクセス解析方法も紹介してほしかったなと。

最後に、「3-1 「マイレポート」で人気ページを知る」で「利用状況の数値を確認する」のぐだりで、新規セッションの割合計算で10173人のお客様のうち57%にあたる約5800人までは理解できたが、その次の、直帰率の47%を使って4770人のお客様と2770人の新規お客様と結論づけていたが、この数字は、直帰率ベースでみた場合の、来店お客様とそのうちのお客様という認識でよかったのだろうか?

数式が書かれていなかったので、理解できなかった。

以上をトータルとして考えてもやはり、やはり入門書として本書はおしである。

2012/06/15

[iOS][Objective-C]国際化対応1 国名を取得する

iOSアプリを作る上で一つのキーワードになるのは、アプリを使っていただいている方の言語環境や国。

国名を取得することによって基準点からどのぐらい離れているのか計測することが可能になるので(もちろん別の方法もあるのですが)、取得方法について調べてみました。

Cocoaを使わずにFoundation.Frameworkを使って取得したかったので、iOSのNSLocaleを見ながら調査。

で、結論として、以下の内容で落ち着きました。

NSLocale *locale = [NSLocale currentLocale];
id countryCode = [locale objectForKey:NSLocaleCountryCode];
if([countryCode isKindOfClass:[NSString class]]){
NSLog(@"This is NSString so country is %@",(NSString*)countryCode);
}
実行結果は、
This is NSString so country is JP
と表示されました。

これで国別に処理を行うときに困らなさそうです。

2012/06/14

[iOS][Obective-C]UIApplicationのdelegateを取得する

UIApplicationDelegateのプロパティー取得したい場合は、どうすればいいだろか?

答えはここにありました。

DoTodoAppDelegate *appDelegate = (DoTodoAppDelegate *)[[UIApplication sharedApplication] delegate];
self.managedObjectContext = appDelegate.managedObjectContext;

via:AppDelegateの参照を得る方法
この方法は、超便利。

メモ、メモ

2012/06/13

[Google App Engine]kindに複数のindexを設定

index.yamlでkindに対するindexを設定することができたが、同じkindに対して複数のindexを登録をすることは可能なのだろうか?

答えはYesのようである。

indexes:

- kind: Cat
ancestor: no
properties:
- name: name
- name: age
direction: desc

- kind: Cat
properties:
- name: name
direction: asc
- name: whiskers
direction: desc

- kind: Store
ancestor: yes
properties:
- name: business
direction: asc
- name: owner
direction: asc

via:インデックスの設定方法を調べたよ - Google App Engine
kind Catに対して複数のindexが登録されている。

実際に試してみたところ、正常動作しました。

これで一安心、一安心。

2012/06/12

[iOS]iOS6について

先日、WWDCの基調講演があったのですが、その中で、iOS6の発表がありました。

で、そのページを見ていたら、どうやら、iPadについては、初代は対象外となるようです。

すでに2と新iPadがリリースされているから、こうすることで買い替えを狙っているのかなと深読みしてみたり。

2012/06/11

[facebook][iOS][Objective-C]写真データの取得

facebookのiOS sdkを使ってObjective-Cから自分がアップした写真のデータを取得したい場合にどうれすばいいのか?

めっちゃ簡単

- (FBRequest*)requestWithGraphPath:(NSString *)graphPath andDelegate:(id )delegate;
のgraphPathの部分に写真IDを設定すれば、おk

返却は、JSONで返ってきます。

[Photoshop]Photoshop shortcut

Web制作の作業効率があがるPhotoshopショートカットキーまとめました【第一回基本編】
のページに便利なショートカットがslideshareに共有されていたので、貼り付けておこうかなと。

最近、photoshopを触る機会が増えてきたので。

2012/06/10

[本]統計数字を疑う なぜ実感とズレるのか?

これ、いい。
統計数字を疑う なぜ実感とズレるのか? (光文社新書)
統計数字を疑う なぜ実感とズレるのか? (光文社新書)
門倉 貴史

まえがき――死んでも死者にならない、交通事故死者数の怪
第一章 「平均」に秘められた謎
第二章 通説を疑う
第三章 経済効果を疑う
第四章 もう統計にだまされない――統計のクセ、バイアスを理解する
第五章 公式統計には表れない地下経済

via:目次
実に素晴らしい。

2006年度に出版された本書であるが、全然、今でも使える。
いや、今だからこそ使える本であると感じた。

テレビや新聞でよく登場する統計数字。
本書では、
「平均貯蓄残高」
「平均寿命」
「少子化」
などしょっちゅう耳にする統計データに対して果たして本当にそうなのだろうか?と
難しい数式を使わずに検証を行っている。

また前から気になっていた
「冬ソナの経済効果」
「愛知万博の経済効果」
「クールビズの経済効果」
イベントや季節的な要因に伴う統計データの有用性についても検証を行っていた。
読んでみてやはりなという気がした。

記載されていなかったが、他に気になっている経済効果は、
「ウォームビズの経済効果」
「羽田空港国際便対応に伴う経済効果」
益若つばさの経済効果
などがあるが、おりをみて検証できたならーっと。
益若つばさ Les Ailes (小学館SJムック) (小学館SJ・MOOK)

ニューヨーク市の犯罪件数の現象については、ヤバい経済学にも書かれていたので、驚きは特になかった。
参考文献にもあがっていたので、やはりとは思ったが。

平均というと、我々は算術平均ばかり注目するが、他にも幾何平均、調和平均と平均にもいろいろある。

via:書評 - 統計数字を疑う
そうなんです。今まで平均は一種類だけしか知らなかったのですが、実はたくさんあるんですね。
これだけでも収穫ありです。

アンダーグラウンド系以外の著書もすごいなと改めて感じた。

2012/06/09

[GoogleAppEngine]Entitiesの名前を取得する方法

db.GqlQueryメソッドを使ってクエリーを発行した場合、各Entityの名前をどうやって取得すればいいだろうか?

単純に下のような形で取得することができる。

results = hoge.fetch()
for query in results:
 query.key().name()
一度、keyクラスを取得してその後にインスタンスメソッドであるname()を実行すればいいということになります。

覚えておけば便利ですね。

2012/06/08

[GoogleAppEngine]no matching index found.

GoogleAppEngineの管理画面上で、GQLのqueryを実行すると、なぜか、下のようなエラーが発生する。

no matching index found.
The suggested index for this query is:
- kind: HogeMaster
  properties:
  - name: hoge1
  - name: hoge2
  - name: hoge3
どうしてか、ずーっと悩んでいたのですが、どうやら原因としては、「index.yaml」に宣言していないからのようです。

index.yamlに宣言したら、エラーがなくなりました。

これは結構、重要な問題なので、覚えておきたいですねー。

2012/06/07

[iOS][Objective-C]セルにチェックマークを付けるタイミングはcellForRowAtIndexPath:で

この書き方はちょっと危険

//セルが選択された際に呼び出される
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//選択されたセルを取得
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
//セルにチェックが付いている場合はチェックを外し、付いていない場合はチェックを付ける
if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
else
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}

via:セルにチェックマークを付ける
この書き方は、実際、黄色信号と思われる。

なぜか?

cellForRowAtIndexPath:メソッドがコールされたときに、UITableViewCellが再利用されているときに、上の設定を引っ張ってしまうため、一箇所だけに、チェックしたつもりが、複数箇所同時にチェックされてしまうという現象が発生してしまうのである。

なので、このやり方を実現したい場合は、
セルの表示内容が更新されない?!
に書かれているように、[tableView reloadRowsAtIndexPaths: withRowAnimation:]を使ってチェックマークを更新する必要があります。

これは気をつけたいところです。

2012/06/06

[google app engine][python]2.7からの変更点 webapp2

Python2.7からgoogle.appengine.ext.webappがwebapp2のエイリアスになったので、前までのバージョンと比較して、非常に簡略化された形でアプリを作ることが可能となる。

version2.5の時は↓のようになる

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, webapp World!')

application = webapp.WSGIApplication(
[('/', MainPage)],
debug=True)

def main():
run_wsgi_app(application)

if __name__ == "__main__":
main()

via:Using the webapp Framework
今回のバージョン2.7ではこのようになっている

import webapp2

class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, webapp World!')

app = webapp2.WSGIApplication([('/', MainPage)],
debug=True)

via:Explaining the webapp2 Framework
import文も一つになり、だいぶあっさりした感じがします。

少ないコードで実装できるならそれに越したことはないっすね。