ラベル framework の投稿を表示しています。 すべての投稿を表示
ラベル framework の投稿を表示しています。 すべての投稿を表示

2018年1月8日月曜日

ひさしぶりのPythonで Djangoしてみるための参考サイトとメモ


環境

  • Amazon Linux 2
  • Python 3(現時点で3.6.4)
  • Django(現時点で2.0)


参考サイトとメモ

Pythonの復習とバージョン3のキャッチアップ

Pythonの基礎の基礎の基礎 - Qiita
Python3基礎文法 - Qiita
Python2からPython3.0での変更点 - Qiita
with構文とは何なのか - 年中アイス

Amazon Linuxで環境構築

Amazon LinuxでPython3系を使う - Qiita
  • Apacheは別途(先に)yumで入れた
  • pipもできるようになった
  • 今回は別にpyenv使わなくても、yumでpython3を入れれば良かったかも

Djangoでサンプルアプリを作りながら全体像を把握する

ほぼコピペで進めるが(おそらくDjango2で試した影響で)いくつか読み替えをした。

Djangoを最速でマスターする part1 - Qiita
(参考(github) gragragrao/manager_project: 「Djangoを最速でマスターする」ための参考レポジトリ
from manager.models import *
python manage.py runserver 0:8000
ALLOWED_HOSTS=[‘*’]

Djangoを最速でマスターする part2 - Qiita
  • Debug ToolbarのINTERNAL_IPSはApacheのリバプロとかあるから変えるかと思ったけどそのままでいけた
  • python shellのログインユーザー登録でWarningが出たけど、とりあえず無視...
/usr/bin/.pyenv/versions/3.6.4/lib/python3.6/site-packages/django/db/models/fields/__init__.py:1365: RuntimeWarning: DateTimeField Person.birthday received a naive datetime (2018-01-04 00:00:00) while time zone support is active.
  • view.pyのCustomLoginViewの下記はメソッドじゃなくなったみたい
if self.request.user.is_authenticated(): #'bool' object is not callableと怒られる
if self.request.user.is_authenticated:
  • login.htmlはGithubからコピーした
  • hijackは下記エラーでうまくいかなかったのであきらめた
ModuleNotFoundError: No module named 'hijack'
  • 自動テストはmodelとview(いわゆるMVCの"View"というより、Djangoのviewはどちらかというと"Controller"の方が近い感じか?)を対象にしていくようだ。templateのテストとなると言及されているSelenium(今ならHeadless Chrome?)とかと連携させていく?(参考 はじめての Django アプリ作成、その 5 | Django documentation | Django


Django1と2の違いを抑える

Django 2.0の変更点について - Qiita

そんなに変わらなそう。

Django公式チュートリアルでアプリを作成しながら学ぶ

さぁ始めましょう。 | Django documentation | Django / はじめての Django アプリ作成、その 1~7

普通は先にこっちをやるんだろうけど、公式は丁寧な分だけ全体像が見えてくるまでに時間がかかる。コピペでいけばエラーも出ないから、Python/Djangoに慣れるには、公式じゃないのでエラーにつまずきながら進めた方がいいこともある。
Ruby On Rails と違って、マイグレーションは完全にモデルのファイルから生成されます。マイグレーションは本質的には単なる履歴です。 Django はデータベースのスキーマをアップデートしながら履歴を進んでいき、現在のモデルに合致させることができます。
  • Django adminは便利そう。(参考 はじめての Django アプリ作成、その2 | Django documentation | Django
    settings.pyでLANGUAGE_CODEを'ja'にしたら日本語化された。システムよりの人が使うなら、英語の方が混乱が無いか? エンドユーザーに渡すなら日本語化が手軽なのは便利。
    それにしても、adminっていう名前はもうひとひねりしても良かったのでは...。Pythonの文化なのかな?

アノテーションが気になるので調べた

Python と型アノテーション

現時点では...使わないかなぁ。


Pythonのインストーラについて

Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc)

いくつかかいつまむと、
  • pip: とりあえずこれを使っておけばOK。Python3.4以降ではPython本体に同梱されるようになった。(参考 Pythonで一番最初に入れるべきパッケージ setuptools と pip - Life with Python
  • setuptools: これを入れると付属するeasy_installが使えるようになる。
  • easy_install: 昔使った時はデファクトスタンダードっぽかったが、廃れたのか。
  • PyPI: the Python Package Index。自由にPythonのパッケージを公開できる python.orgのサイトで、easy_install・pipはここからパッケージを探す。

Amazon RDSのAurora(MySQL)につないでみる

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
python manage.py makemigrations <アプリ名>
python manage.py migrate

Django公式ドキュメントで仕様を学ぶ


いつか時間のある時に...

2013年7月28日日曜日

PHPのフレームワークの人気を Googleトレンドで比較

世界で人気のPHPフレームワークでGoogle検索されている上位5つはこれ。

 
CodeIgniterの人気がグングン上がって、2010年頃にトップになってそのまま独走してる。ライセンス問題云々の問題は影響がなかったように見える。

また、それを追うようにYiiの人気が上昇し、PHPフレームワーク旧御三家のCake、Symfony、Zendを抜いてしまった。

それにしても2009年にみんな揃ってガクッと落ちてるのはなんだろう?


で、上位5つをの下はこれ。(比較用にZendも入れている。)

Laravelがグググッと上がってきて、Zendを抜くのは時間の問題か。CodeIgniter、Yii、Laravelが新御三家になるのかな。

有望株だったKohanaは伸び悩んでこのまま消えていくのか。意外にもEthnaは細く長く頑張ってる...?日本で人気のFulePHPは、Ethnaに辛うじて勝つ程度という低空飛行


最後に、日本限定で比べると上位5つはこれ。

みんな大好きCakePHP。安定のぶっちぎり。

後は小さくて見辛いが、Fuelがここ2年で他を抜き去って2位になって、このまま伸びそうか?Rails好きな日本人のはずが、Symfonyは落ちてきてCodeIgniterも伸び悩み。


で、ここまで書いてきてなんだけど、Googleトレンドで調べる場合の問題は、普通の単語だとPHPのフレームワークと関係なく検索数が増えてしまうこと。
例えば「Rails」で調べたら、Ruby on Railsと関係ない検索もたくさん含まれてしまうよね?Yiiなんかもどこかの国の言葉で存在してPHPと関係なく調べられてるかもしれないとも思ったけど、グラフの伸びから見るとPHPフレームワークとして検索されてそう。Yiiの強さは、普通名詞の組み合わせではない、かつ、シンプルであることだろう。

逆に、FuelPHPやZend Frameworkは「Fuel」や「Zend」と略した場合の検索がカウントされていないので、過小評価になってしまう。
「Zend Controller」「Fuel Exception」など他の言葉との組み合わせでたくさん検索されてそうだが、Googleトレンドではそこまで調べられないので。

それでも日本では圧勝のCakePHPは、それだけ凄いんだろうけど...。

2013年5月1日水曜日

CDNから 各種JavaScriptライブラリを読み込むサンプルコード

下記のJavaScript(/CSS)ライブラリをCDNから読み込むためのサンプルコード。
  • jQuery
  • jQuery Mobile
  • jQuery UI
  • Twitter Bootstrap

共通事項として、URLのスキーム(http等)を省略すればhttpでもhttpsでも使える。
が、
CSSでスキームを省略するとIE8以下が2回サーバにアクセスするという問題があるので、下記ではCSSも使う場合はスキームをhttpにした。httpsで使いたい場合はhttpsにするか、上記の問題を無視していいならスキームを省略すればよい。


jQuery

cdnjs (by CloudFlare)
<script src=”//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js”></script>

Microsoft (Ajax Content Delivery Network)
<script src=”//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js”></script>

Google (Hosted Libraries)
<script src=”//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js”></script>
常に1.x系の最新版にする場合(※なぜか”2”や”1.9”という指定だと404 Not Foundになる)
<script src=”//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js”></script>

jQuery (CDN by Media Temple)
(https不可)
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
常に最新版にする場合(現時点の最新版の2.0.0ではなく1.9.1がロードされた)
<script src="http://code.jquery.com/jquery.min.js"></script>


jQuery Mobile

cdnjs (by CloudFlare)
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/jquery-mobile/1.3.1/jquery.mobile.min.css" />
<script src=”http://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js”></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-mobile/1.3.1/jquery.mobile.min.js"></script>

Microsoft (Ajax Content Delivery Network)
(現時点の最新版の1.3.1がまだ無い)
<link rel="stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.3.0/jquery.mobile.structure-1.3.0.min.css" />
<script src=”http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js”></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>

jQuery (CDN by Media Temple)
(https不可)
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css"/>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
常に最新版にする場合
(”1.4.0pre”になる。アルファ版未満のバージョン?)
<link rel="stylesheet" href="http://code.jquery.com/mobile/latest/jquery.mobile.min.css" />
<script src="http://code.jquery.com/jquery.min.js"></script>
<script src="http://code.jquery.com/mobile/latest/jquery.mobile.min.js"></script>


jQuery UI
テーマが”start”の場合(※cdnjsを除く)。

cdnjs (by CloudFlare)
(テーマは”lightness”と”smoothness”しかない?CSSに”custom”が付いているのはなぜ?i18nが無い)
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.2/css/smoothness/jquery-ui-1.10.2.custom.min.css" />
<script src=”http://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js”></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>

Microsoft (Ajax Content Delivery Network)
(Datepikcerの日本語化もする場合)
<link rel="stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.2/themes/start/jquery-ui.min.css" />
<script src=”http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js”></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.2/jquery-ui.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.2/i18n/jquery.ui.datepicker-ja.min.js"></script>

Google (Hosted Libraries)
(Datepikcerの日本語化もする場合)
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/start/jquery-ui.min.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/i18n/jquery.ui.datepicker-ja.min.js"></script>
常に最新版にする場合
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/smoothness/jquery-ui.min.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"></script>

jQuery (CDN by Media Temple)
(https不可。i18nが無い。常に最新版にすることもできないようだ)
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/start/jquery-ui.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.min.js"></script>


Twitter Bootstrap
レスポンシブにして、Font Awesomeも併用した場合。

cdnjs (by CloudFlare)
(Bootswatchは無い)
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.1/css/bootstrap.min.css" />
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.1/css/bootstrap-responsive.min.css" />
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.0.2/css/font-awesome.min.css" />
<!--[if IE 7]>
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.0.2/css/font-awesome-ie7.css" />
<![endif]-->
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script>

BootstrapCDN (by NetDNA)
Bootswatchも併用した場合。Font Awesomeを使わない場合は、no-iconsではなく通常のCSSを読み込むようにする。jQueryはBootstrapCDNからは供給されていないので例としてGoogleからにした)
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.no-icons.min.css" />
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-responsive.min.css" />
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootswatch/2.3.1/united/bootstrap.min.css" />
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/3.0.2/css/font-awesome.min.css" />
<!--[if IE 7]>
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/3.0.2/css/font-awesome-ie7.css" />
<![endif]-->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script>
常に最新版にする場合
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/latest/css/bootstrap-combined.no-icons.min.css" />
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/latest/css/bootstrap-responsive.min.css" />
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootswatch/latest/united/bootstrap.min.css" />
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" />
<!--[if IE 7]>
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/latest/css/font-awesome-ie7.css" />
<![endif]-->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/latest/js/bootstrap.min.js"></script>


余談
URLがのきなみ長いのは、MicrosoftやcdnjsがGoogleに合わせてしまったからか。GoogleのURLが長いのは歴史的経緯の影響が大きいだろう。 (何回か名前が変わったが、URLのパス部分は変えなかった。今なら js.gapi.com/jqeury/1/jquery.min.js とかにできるだろうに。)
また、BootstrapCDNのPopular Files Overviewは興味深い。


参考

2011年11月2日水曜日

Seasar2入門の参考サイトとプロダクト選択のメモ

久しぶりにJava村に帰ってきた浦島さんの玉手箱メモ。


まずは概要を把握。



一口にSeasar2と言ってもたくさんプロダクトがあるので、Webアプリを作る場合にどのプロダクトを使うべきか調査。

  • MVCは、S2Struts or SAStruts or Teedaのどれがいい?
    • S2StrutsかSAStrutsだとどっち?
    • SAStrutsとTeedaでは?
      • Teeda
        • TeedaはJSFの実装
        • Teeda Extensionを使えばHTMLをテンプレートにできる
      • 「Seasarの問題点など」にそろそろ一言いっておくか - ひがやすを blog
        ただ、無責任に何でも自由というのは良くないので、SAStrutsとS2JDBCの組み合わせが、もっとも無難だというメッセージを出しているわけです。
      • SAStrutsとS2JDBCを作ったわけ - ひがやすを blog
        TeedaとS2Daoは、基本的に規約ベースのフレームワークです。規約を知っていれば、本当にさくさく開発できます。でも、規約ベースなので、規約を知らないと、何にもできなくなっちゃう。この辺が、大規模開発には向かないところ。
        SAStrutsとS2JDBCは、大規模案件にも耐えられるように最初から設計されています。
      • 感想:チームでの開発や今後のメンテを考えると、参考情報も経験者も多いStrutsの名前を冠するSAStrutsに比べてTeedaは学習コストがかかりそう
    • 結論:SAStrutsが無難
  • S2JDBC or S2Daoのどっちを使う?
    • HibernateとS2DaoとS2JDBCの考え方 - ひがやすを blogより引用
      • S2Daoについて
        S2DaoはSQLを中心に考えます。とはいえ、すべてのSQLを開発者が書くのは効率が悪いので、挿入、更新、削除は、S2DaoがSQLを自動生成しますが、検索は、開発者にSQLを書いてもらいます。
        デメリットは、SQLを書くのが面倒なことです。また、検索の結果セットごとにDTOを作らなければいけないので、DTOが増える傾向があります。
        Webのフレームワークとの組みあわせでいくと、Teeda Extensionは、S2Dao(DTO)と相性が良いように設計されているので、Teedaを使う場合は、S2Daoが良いと思います。
      • S2JDBCについて
        S2JDBCは、エンティティ(Java)とテーブル(データベース)は、同一のモデルだとみなしています。また、複雑なSQL以外は、すべて自動生成します。
        デメリットは、エンティティの設計が、テーブルに引きずられ、完全にドメインをあらわしたものにならないこと。
    • 感想
      • S2DaoはINSERT/UPDATE/DELETEのSQL自動生成と、手作りしたSQLの実行をしてくれるみたい
      • S2JDBCはDAOではなくApache CommonsのDbUtilsのようなSQLビルダー?
    • 結論:TeedaでないならS2JDBCで



久しぶりにJavaの世界に帰ってきたら、昔使ってたStruts1.3(1.x系は1.3で止まってるとは意外)のラッパーであるSAStrutsと、同じく昔使ってたJakarta Commons(現在は昇格してApache Commons)のDbUtilsに似たS2JDBCが最前線だなんて、奇遇と言うか、あるいは必然なのかな。

2010年3月26日金曜日

Windowsに Google App Engine開発環境 + Django 1.1をセットアップする

WindowsにDjango1.1をインストールする方法



Google App EngineでDjango1.1を使う設定
  • "Google AppEngine で Django 1.1 を使う | METAREAL"の通りにすればOK。
  • templateのimportはuse_library()をセットした後でないとエラーになる。
    • 間違えると、AppEngineを再起動するまでエラーが解消されない(?)

2009年11月6日金曜日

CSSフレームワーク YAMLと Highslide JSは相性が悪い

CSSフレームワークのYAMLとページ内ポップアップライブラリのHighslide JSを併用したら、IEで見た場合のみHighslideの表示がおかしくなった。

参考情報を探したが、ドイツ語しか見つからない...


結局解決していない?


具体的には、2カラムの右側(div#col3)にあるリンクをクリックしたらHighslideがポップアップするようにしたら、IEの場合だけ"Loading"の表示が画面の右の方にずれてしまう
場合によっては画面の外にまでずれてしまい、その時だけ横スクロールバーが出るような状況に。

Firebug Liteなどを使って調べていたら、どうやらLoadingのCSSプロパティleftの値がおかしいらしい。
Highslideは、Loadingの位置を計算で求めている。
その際に、offsetLeftを積み上げてleftを計算する。積み上げるというのはリンクからoffsetParentをたどっていき、そのoffsetLeftの合計を求める。(scrollLeftの考慮もしている。)
で、このoffset系のプロパティは、ブラウザによって挙動が違うらしい。

実際にlinkのleftの計算に使われるoffsetParentとoffsetLeftを表示させてみると、Firefox(3.5)とIE(7)ではかなり内容が違う。
まずFirefoxの方はたどるoffsetParentが少ない。すぐにBodyにたどりつく。offsetに関連しない要素は無視するようだ。
対してIEはoffsetに関連しない要素も全部拾う。何が関連するかの判断もFirefoxとはかなり違う。
さらに、IEではdiv#col3の子要素のoffsetLeftの値がおかしい
具体的には、div#col3の子要素は、正しいoffsetLeftの値に加えて、なぜかdiv#col3のoffsetLeftの値が加算されている。
これにより、LoadingのLeftがdiv#col3のoffsetLeft分だけ右にずれてしまうようだ。

ここで、上記の参考サイトを見て、div#col3のpositionプロパティを変えたらなんとなかるかなあと思い実験。
FirefoxのFirebugで調べたところ、div#col3はpositionを指定していないので、デフォルトのstaticのはず。
が、IEでFirebug Liteで調べたところ、なぜかrelativeになっている。IE用のパッチのCSSの影響?
そこで、div#col3のpositionにstaticを指定したら、Loadingがリンクと同じ位置に表示されるようになった。
(たぶん)position:staticの場合、offsetParentの対象でなくなるようだ。これにより、div#col3のoffsetLeftが重複して加算されることを回避できた。

2009年3月19日木曜日

主要JavaScriptフレームワークのデザインパターン傾向の比較

Prototype、jQuery、MooTools、YUI、Dojoを比較。
痒いところに手が届く、addEvent系とHTMLエレメントのclass操作を中心に見てみる。
大きくは、エレメントをグローバルオブジェクトにパラメータとして渡す"Managerパターン"と、エレメントを包んで機能を拡張する"Wrapperパターン"に分かれる。

  • Prototype.js
    • event追加
      • <element>.observe(eventName, handler)
      • Event.observe(element, eventName, observer, flg)
    • dom ready event追加
      • Event.observe(document, "dom:loaded", func)
    • class追加
      • Element.addClassName(element, className)
    • class削除
      • Element.removeClassName(element, className)
    • class有無
      • Element.hasClassName(element, className)
    • 全子要素に実行
      • <enumObj>.each(iterator)
    • デザインパターン
      • Managerパターン
      • Managerが役割分担でたくさんいる
  • jQuery
    • event追加
      • $(~).bind(type, data, func)
      • jQuery.event.add(elem, types, handler, data)
    • dom ready event追加
      • $(document).ready(func)
    • class追加
      • $(〜).addClass(className)
    • class削除
      • $(〜).removeClass(className)
    • class有無
      • $(〜).hasClass(className)
    • 全子要素に実行
      • $(〜).each(func)
    • デザインパターン
      • Wrapperパターン
  • MooTools
    • event追加
      • $(〜).addEvent(type, func)
    • dom ready event追加
      • window.addEvent("domready", func)
    • class追加
      • $(〜).addClass(className)
    • class削除
      • $(〜).removeClass(className)
    • class有無
      • $(〜).hasClass(className)
    • 全子要素に実行
      • <iterable>.forEach(func, bind)
      • <iterable>.each(func, bind) ※forEachのalias
      • $each(iterable, func, bind)
    • デザインパターン
      • Wrapperパターン
      • 関数名が素直で分かりやすい
  • YUI
    • event追加
      • YAHOO.util.Event.addListener(element, type, func, data, overrideContextFlg)
      • obj.customEvent.Subscribe(func) ※selectEvent等のCustomEventを持っているObjectの場合
    • dom ready event追加
      • YAHOO.util.Event.onDOMReady(func, data, overrideContextFlg)
    • class追加
      • YAHOO.util.Dom.addClass(element, className)
      • YAHOO.util.Dom.replaceClass(element, oldClassName, newClassName) ※classの変換
    • class削除
      • YAHOO.util.Dom.removeClass(element, className)
    • class有無
      • YAHOO.util.Dom.hasClass(element, className)
    • 全子要素に実行
      • 無し?
    • デザインパターン
      • Managerパターン。一部、Wrapperパターン。
      • グローバルオブジェクトが構造的に整理されている
  • Dojo
    • event追加
      • dojo.connect(element, type, context, func, dontFixFlg)
    • dom ready event追加

    • class追加
      • dojo.addClass(element, className)
    • class削除
      • dojo.removeClass(element, className)
    • class有無
      • dojo.hasClass(element, className)
    • 全子要素に実行
      • dojo.forEach(array, func, thisObject)
    • デザインパターン
      • Managerパターン


参考

2009年3月5日木曜日

Googleの CDNを使って Dojoを使う例

google.load()を使った動的ロードだとロードされるまでの画面表示が辛いので、静的ロードにする。



CSS
@importではなく、link要素にしてみた。
@importを使う例が多いけど、違いは何だろう?

<link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/dojo/1.2.3/dijit/themes/soria/soria.css" />
<!-- or
<link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/dojo/1.2.3/dijit/themes/tundra/tundra.css" />
-->
<link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/dojo/1.2.3/dojo/resources/dojo.css" />


JavaScript

これでdjConfig属性が効いているのかは知らない
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.2.3/dojo/dojo.xd.js" djConfig="parseOnLoad: true"></script>
<script type="text/javascript">
dojo.require("dijit.form.Button"); //必要なものを読み込む
</script>


HTML
<body class="soria">
<button dojoType="dijit.form.Button" id="helloButton">
Hello World!
<script type="dojo/method" event="onClick">
alert('You pressed the button');
</script>
</button>
</body>


html要素を拡張していくという発想が面白い。VBライク?


参考:
Hello World - Dojo for the Attention-Impaired | The Dojo Toolkit
Developer's Guide - AJAX Libraries API - Google Code
tnomuraのブログ : Dojo の基本的な使い方
【特集】詳解! Dojo Toolkit 1.0(Dijit編) - ウィジェットプログラミングのツボ (4) イベント処理もマークアップで!(1) (中略)マイコミジャーナル

2008年12月24日水曜日

RailsとMerbが統合するらしい

Railsよりお薦め!Rubyのフレームワーク Merb (Mongrel + Erb) をインストール」の記事がなぜか突然人気だなと思ったら、RailsとMerbが統合!するらしい。

DHHがMerbをコアにしてRails3を作るらしいけど、Merbのファサードを絞ったシンプルさが、DHH的な知らないと分からない隠れ規約に飲み込まれないかちょっと心配。

でもMerbもこのままマイナーなままよりはメジャーになった方が、Railsともどもお互い幸せなのかもね。

ついでにWeb Flavorも関係ないけどブレイクしないかな!

あ、Rails2のアプリはまた置き去りにされるのか...。

2008年10月30日木曜日

Scala調査メモ

Javaから離れて久しいが、最近Scalaが気になる。



感想:
  • 文法が面白い。ループとか。
  • XMLを練り込めるのが面白い。
  • 特にレンタルサーバの場合など、PHPほど気軽に使えなさそう。
  • Apacheのモジュールで動けば気軽に使えるのだが...

2007年8月7日火曜日

Zend_Service_Rakutenってどうなったの?

 2007年2月末までに完成するという話だったZend_Service_Rakutenだが、その後いっこうに話をきかない。いったいどうなってるんだろう?そうこうしているあいだに、Zend Framework本体はもう1.0.1になってるのに。
 「Services_Rakutenがあるからもういいや!」ってわけでもあるまいに。

 それはそうとZend Framework使うのはいつだろう。PHP6になってからかな?実際にはZend Frameworkの上にもう1層自分仕様のFrameworkを被せる形になりそう。


2009/01/22 追記:
RWS開発日記 — 「楽天商品ランキングAPI」リリースと新機能追加のお知らせ - 楽天ウェブサービスの開発・運用チームのブログ -のコメント欄を見ると、まだ(?)実装しているみたい。

ブログ アーカイブ

tags