StoryEdit 開発日誌

ウェブアプリ StoryEditを作ってましたが延期。普通のブログ。

2012-01-01から1年間の記事一覧

JSのプロトタイプについて実装から考える(雑記)

プロトタイプベース,クラスベースの話がいろいろ溢れているので,つれづれなるままに書いてみる。随筆なので、結論はかいているうちにでてくることを祈る。まず、「JSにはクラスがない。かわりにプロトタイプベースのクラスを作る。」ってのが、一般的な解…

jQueryでDOMとjQueryオブジェクトの変換

StoryEditとは関係ないけど、並行で走らせている開発でGoogle mapsを使っているため、最近はJavascriptネタが多いかも。ながいこと、jQueryよりはMootools派なのだが、仕様によってjQuery。GoogleMapsのたとえばイベントハンドラなんかには、DOMオブジェクト…

Pythonでスクレイピング

BeautifulSoupというライブラリを使ってみました。 BeaultifulSoup: http://www.crummy.com/software/BeautifulSoup/ なんと便利。 str = "<a href='#'>test</a>"; なんて文字列があったとすると,中身のtestだけ取り出したいときは以下のように書きます。 from bs4 import B…

global文

なんと!びっくり。global文をつかわないと,問答無用にローカル変数の代入となるらしい。そうか。完全に変数宣言なるものがないとこうなるのか。普通名前空間はカスケーディングするもんだけど...いや、global文なくてもカスケードして問題なさそうだけ…

Google Maps APIを弄る

た、、たのしい.笑全然関係ないですが.基本はこんな感じ. function googlemap_initialize() { var latlng = new google.maps.LatLng(xx.xxxx,yy.yyyy); var myOptions = { zoom:17, center: latlng, mapTypeControl: false, zoomControlOptions: { style:…

風邪引いた。。。

風邪をこじらせ、開発ストップ。12月でいっきにしあげたいところ。。。はやくなおんないかな。 orz

sql injectionに備える

さて.SQL文ですが,書き込まれたデータをいれるため,以下のように書いてました. sql = "insert into storytable values('%s', '%s');" % (name, story); まぁこれだと,story,つまり,ユーザが書いた文章の中にsqlを埋め込めば,簡単にinjectionできてし…

Pypyを使ってみる

サーバには入っていないんだけど,興味本位で.あるPythonで書いたプログラムの時間がかかりすぎているので,高速化したいと思い,とりあえずCythonをいれる.しかし,CythonはC言語変換を行うため,どうもWrapperの作成に用いられているらしいと知る.そこ…

Pythonでのis演算子と'=='演算子の違い

is演算子と'=='演算子の違いですが,いろいろ書かれてはいるものの,端的にいえば,「isは同じインスタンスをさしているかどうか,==は__eq__がTrueを返すかどうか」の比較になります.数値の例がわかり易かったのですが, a = 2 b = 1+1; print a is b prin…

Pythonでデバッグprint関数を作る

C言語なんかではマクロでデバッグ関数を定義して,printfデバッグに,ファイル名と行数を出力させたりしますね.Pythonでも同じように,デバッグprintfの関数を作ってみました. #debug.py __all__ = ["D"]; import inspect; DEBUG=True; def _debug(msg) : …

Python __all__について

なんか,役に立つのか立たないのか微妙なところになってきた.__all__は,モジュールの外に公開するかしないかを決める,C言語でもがんばって関数の公開,非公開を無理矢理記述するように,結局シンボルテーブルを変更する,,,らしい.その動作を知るため…

Mercurialを読む(Pythonの慣例を知る)

どうやらMercurialで用いるclass名は小文字みたいだ. ジャバジャバしてきた私には,大文字で始まってないと気持ち悪い. そして_で始まる関数名とそうでないのがある.internal useというところか. Rubyではあるまいし. if feature and exceptions: retur…

base85について

Pythonの勉強に,とMercurialのコードをよんでたら,base85なるものを発見.base64は,以下の64文字ですべてを表現しちゃいましょってアルゴリズム. // base64 chars static const char base64chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv…

Pythonで__slots__を使う

Pythonも遊び程度で使ってきたので詳しくしらなかったのですが,便利な機能があるのですね.てわけで,とりあえず気に入った__slots__について.スクリプト言語は,クラスを作ったとして,フィールドをいつでもどこでも加えられるように辞書型のフィールドを…

PNGファイルをBASE64で埋め込む

こんな方法あるんですね.しばらくWebからはなれていると発見が多いです. body { background-image: url(data:image/png;base64, XXXXXXXX... ); } で,XXXXXXXの部分は,base64エンコードしたpngファイルデータです.これでサーバからとってくるファイルの…

Facebook Javascript SDK 認証画面を作る(getLoginStatusとLogin, Logoutボタン)

メモ下記として. Facebook Javascript SDK (jssdk)のロードについては前回書いた.では,実際にログインさせてみる.まず,そのページにきた人が,Facebookへの接続状態を知るための, FB.getLoginStatus関数。 FB.getLoginStatus(function(response) { co…

Facebook Javascript SDKでOAuth認証

StoryEditにFacebookによるOAuth認証を導入しました. ユーザの管理はFacebookからもってきます.そっちのが楽w 時間があまればtwitterも. それにしてもめちゃくちゃ簡単にOAuth認証が実装できてびっくり。 PythonでOAuthとかめんどいな,,,そもそもこの…

サイト公開&サーバの設定確認

とりあえずドメインとサーバを取得. http://www.storyedit.info/ です! そして,pythonがあることは確認した上でレンタルしたんだけど, python version 2.4.2のようだ. そして,テスト実装に使ってるsqlite3パッケージがなさげ. うーむ.Mysqlか.

RDBに木構造入れる その2

どうやら,RDBに木構造をいれるには,以下の4つがあるようだ. 隣接モデル ネストセットモデル 経路列挙モデル ネストセットモデル改 1は,オーソドックすぎるので却下.おもしろくない.性能も悪い. 2は,更新の手間が多い. 3は一番よさそうなんだけ…

ツリー構造をRDBに格納する

Outlinerは,基本的にはツリー構造を保ち,それをストアリングしていきます. で,RDBに保存しようと思っているのですが,ツリー構造をスキーマに落とすのが難しい.というか,単純に思いつかない.どうスキーマ作っても遅くなりそうだ. と言う訳で,「RDB …

はじめました.

こんにちは.welovyです. 自分が,これなら使いたい!と思う,役に立つようなウェブアプリを作っていく予定です. 現在作成中のサービスは,storyedit.物語のプロットを書くための,フリーのいいエディタがMacにないので,作ってしまいましょう,というお…