<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/memo2008/">
    <title>memo2008 @ ウィキ</title>
    <link>http://w.atwiki.jp/memo2008/</link>
    <atom:link href="https://w.atwiki.jp/memo2008/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>memo2008 @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2008-06-30T01:13:39+09:00</dc:date>
    <utime>1214756019</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/memo2008/pages/22.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/memo2008/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/memo2008/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/memo2008/pages/20.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/memo2008/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/memo2008/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/memo2008/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/memo2008/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/memo2008/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/memo2008/pages/16.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/memo2008/pages/22.html">
    <title>Python 基本</title>
    <link>https://w.atwiki.jp/memo2008/pages/22.html</link>
    <description>
      * 値の代入

 &gt;&gt;&gt; null = None
 &gt;&gt;&gt; print null
 None
 &gt;&gt;&gt; type(null)
 &lt;type &#039;NoneType&#039;&gt;

 &gt;&gt;&gt; bool = True
 &gt;&gt;&gt; print bool
 True
 &gt;&gt;&gt; type(bool)
 &lt;type &#039;bool&#039;&gt;

 &gt;&gt;&gt; int = 123
 &gt;&gt;&gt; print int
 123
 &gt;&gt;&gt; type(int)
 &lt;type &#039;int&#039;&gt;

 &gt;&gt;&gt; int = 077 # 8進数
 &gt;&gt;&gt; int = 0xff # 16進数
 &gt;&gt;&gt; lng = 123L # 長整数
 &gt;&gt;&gt; print lng
 123
 &gt;&gt;&gt; type(lng)
 &lt;type &#039;long&#039;&gt;

 &gt;&gt;&gt; str = &#039;this is string&#039;
 &gt;&gt;&gt; type(str)
 &lt;type &#039;str&#039;&gt;

 &gt;&gt;&gt; uni = u&#039;this is unicode string&#039;
 &gt;&gt;&gt; type(uni)
 &lt;type &#039;unicode&#039;&gt;

 &gt;&gt;&gt; hdoc = &quot;&quot;&quot;this
 is
 here
 document
 &quot;&quot;&quot;
 &gt;&gt;&gt; type(hdoc)
 &lt;type &#039;str&#039;&gt;

 &gt;&gt;&gt; arr = [1, 2, 3] # 変更可能な配列
 &gt;&gt;&gt; print arr[0]
 &gt;&gt;&gt; type(arr)
 &lt;type &#039;list&#039;&gt;

 &gt;&gt;&gt; tpl = (4, 5, 6) # 変更不可な配列（タプル）
 &gt;&gt;&gt; print tpl[0]
 &gt;&gt;&gt; type(tpl)
 &lt;type &#039;tuple&#039;&gt;

 &gt;&gt;&gt; map = {&#039;a&#039;:1, &#039;b&#039;:2, &#039;c&#039;:3}
 &gt;&gt;&gt; print map[&#039;a&#039;]
 &gt;&gt;&gt; type(map)
 &lt;type &#039;dict&#039;&gt;    </description>
    <dc:date>2008-06-30T01:13:39+09:00</dc:date>
    <utime>1214756019</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/memo2008/pages/18.html">
    <title>Python</title>
    <link>https://w.atwiki.jp/memo2008/pages/18.html</link>
    <description>
      - [[Python で日本語]]
- [[Python 基本]]
- [[wxPython]]    </description>
    <dc:date>2008-06-30T00:34:49+09:00</dc:date>
    <utime>1214753689</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/memo2008/pages/21.html">
    <title>wxPython/Hello world!</title>
    <link>https://w.atwiki.jp/memo2008/pages/21.html</link>
    <description>
      #contents()

* source
 #!/usr/bin/env pythonw
 # vim: fileencoding=utf-8
 
 import wx;
 app = wx.PySimpleApp(0);
 frame = wx.Frame(None, -1, u&quot;ハロー wxPython ワールド&quot;);
 app.SetTopWindow(frame);
 frame.Show(True);
 app.MainLoop();

* screen shot
#ref(WS000000.JPG)

* 拡張
 #!/usr/bin/env pythonw
 # vim: fileencoding=utf-8
 
 import wx;
 
 class MyApp:
     def __init__(self):
         self.app = wx.PySimpleApp(0);
         frame = wx.Frame(None, -1, u&quot;ハロー wxPython ワールド&quot;);
         self.app.SetTopWindow(frame);
         frame.Show(True);
         self.app.MainLoop();
 
 if __name__ == &#039;__main__&#039;:
     app = MyApp();    </description>
    <dc:date>2008-06-29T21:25:20+09:00</dc:date>
    <utime>1214742320</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/memo2008/pages/20.html">
    <title>wxPython</title>
    <link>https://w.atwiki.jp/memo2008/pages/20.html</link>
    <description>
      - [[wxPython/Hello world!]]    </description>
    <dc:date>2008-06-29T21:04:35+09:00</dc:date>
    <utime>1214741075</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/memo2008/pages/19.html">
    <title>Python で日本語</title>
    <link>https://w.atwiki.jp/memo2008/pages/19.html</link>
    <description>
      [[Python]]

#contents()

python 2.3以降？でのお話し。
それ以前のバージョンでははコーディングのやり方が違うので注意。

** ソースファイルのエンコーディングの指定
 # -*- coding: utf-8 -*-
coding(:|=) utf-8 の前後は自由に記述できるので、
下のようにVIMの設定なんかと混合できる
 # vim: fileencoding=utf-8

** 出力エンコーディングの指定
 #!/usr/bin/env python
 # vim: fileencoding=utf-8
 
 import sys;
 import codecs;
 
 sys.stdout = codecs.getwriter(&#039;cp932&#039;)(sys.stdout);
 print u&quot;テスト\n&quot;;

** 文字コードの変換
 #!/usr/bin/env python
 # vim: fileencoding=utf-8
 
 import sys;
 import codecs;
 
 print u&quot;テスト\n&quot;.encode(&#039;cp932&#039;);    </description>
    <dc:date>2008-06-29T21:04:02+09:00</dc:date>
    <utime>1214741042</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/memo2008/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/memo2008/pages/1.html</link>
    <description>
      よいしょー！

- [[symfony]]
- [[Python]]
- [[vim]]    </description>
    <dc:date>2008-06-29T20:57:01+09:00</dc:date>
    <utime>1214740621</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/memo2008/pages/15.html">
    <title>symfony/初期設定</title>
    <link>https://w.atwiki.jp/memo2008/pages/15.html</link>
    <description>
      * PEARのアップグレード
$ pear upgrade PEAR
* チャンネルの追加
$ pear channel-discover pear.symfony-project.com
* チャンネル内で利用可能なライブラリ一覧
$ pear remote-list -c [[symfony]]
* インスコール
$ pear install symfony/symfony
* コマンドラインツールのインストール
$ pear install http:*phing.info/pear/phing-current.tgz
* チャンネルのアップデート
$ pear channel-update pear.symfony-project.com
* パッケージのアップデート
$ pear upgrade symfony/symfony
* プロジェクトディレクトリの作成
$ mkdir /home/myproject
* プロジェクトの作成
$ symfony init-project myproject
* アプリケーションの作成
$ symfony init-app frontend
* config/prople.ini の設定
 略
 propel.database.createUrl  = mysql:*user:pass@localhost/
 propel.database.url        = mysql:*user:pass@localhost/myproject
 略
 propel.mysql.tableType = InnoDB
* config/database.yml の設定
 prod:
     propel:
         param:
             database:           myproject
 
 test:
     propel:
         param:
             database:           myproject_dev
 
 dev:
     propel:
         param:
             database:           myproject_dev
 
 all:
     propel:
         class:                  sfPropelDatabase
         param:
             phptype:            mysql
             host:               localhost
             database:           myproject
             username:           user
             password:           pass
             compat_assoc_lower: true
             encoding:           utf8
* 日本語の設定
※クッキーにdefault_cultureの設定が残るので、default_cultureを変更したら必ずクッキーを削除しよう
myproject/apps/myapp/config/settings.yml
 all:
  .settings:      
    i18n: on
    standard_helpers: [Partial, Cache, Form, I18N]
    charset: UTF-8
    rich_text_js_dir:  js/tiny_mce/
  .settings:
    validation_error_prefix:    &#039;&#039;
    validation_error_suffix:    &#039;&#039;
myproject/apps/myapp/config/i18n.yml
 all:
     default_culture:     ja_JP    </description>
    <dc:date>2008-05-24T09:59:30+09:00</dc:date>
    <utime>1211590770</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/memo2008/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/memo2008/pages/2.html</link>
    <description>
      **メニュー
-[[トップページ]]
-[[symfony]]
-[[symfony/フォルダ構成]]
-[[symfony/初期設定]]
-[[symfony/デバッグ]]
-[[symfony/test-unit]]
-[[プラグイン紹介&gt;プラグイン]]
-[[メニュー]]
-[[メニュー2]]

----

**リンク
-[[@wiki&gt;&gt;http://atwiki.jp]]
-[[@wikiご利用ガイド&gt;&gt;http://atwiki.jp/guide/]]

**他のサービス
-[[無料ホームページ作成&gt;&gt;http://atpages.jp]]
-[[無料ブログ作成&gt;&gt;http://atword.jp]]
-[[無料掲示板レンタル&gt;&gt;http://atbbs.jp]]
-[[2ch型掲示板レンタル&gt;&gt;http://atchs.jp]]
-[[お絵かきレンタル&gt;&gt;http://atpaint.jp/]]

// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります


//**更新履歴
//#recent(20)

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2008-04-07T22:26:23+09:00</dc:date>
    <utime>1207574783</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/memo2008/pages/17.html">
    <title>symfony/test-unit</title>
    <link>https://w.atwiki.jp/memo2008/pages/17.html</link>
    <description>
      * propel を使うためのテンプレート
askeet/test/unit/askeet に *Test.php を書く場合
※APP毎にユニットテストを別けるためにunitディレクトリの下にAPP毎のディレクトリを作った場合
※unitディレクトリ以下に作る場合は相対指定(/..)を一つ切り詰めよう
 &lt;?php
 // askUser.php
 mb_internal_encoding(&#039;utf-8&#039;);
 mb_http_output(&#039;cp932&#039;);
 ob_start(&#039;mb_output_handler&#039;);
 
 defined(&#039;SF_APP&#039;)         || define(&#039;SF_APP&#039;,         &#039;askeet&#039;);
 defined(&#039;SF_ENVIRONMENT&#039;) || define(&#039;SF_ENVIRONMENT&#039;, &#039;test&#039;);
 defined(&#039;SF_DEBUG&#039;)       || define(&#039;SF_DEBUG&#039;,       true);
 
 //begin initialise database code
 include(dirname(__FILE__).&#039;/../../bootstrap/unit.php&#039;);
 include(dirname(__FILE__).&#039;/../../../config/config.php&#039;);
 
 require_once($sf_[[symfony]]_lib_dir.&#039;/util/sfCore.class.php&#039;);
 sfCore::initSimpleAutoload(
     array(
         dirname(__FILE__).&#039;/../../../lib/model&#039;
         , dirname(__FILE__).&#039;/../../../apps/&#039;.SF_APP.&#039;/lib&#039;
         , $sf_symfony_lib_dir
     )
 );
 set_include_path($sf_symfony_lib_dir.&#039;/vendor&#039;.PATH_SEPARATOR.SF_ROOT_DIR.PATH_SEPARATOR.get_include_path());
 
 sfCore::bootstrap($sf_symfony_lib_dir, $sf_symfony_data_dir);
 sfContext::getInstance();
 Propel::setConfiguration(sfPropelDatabase::getConfiguration());
 Propel::initialize();
 //end initialise database code

* validator をテストするためのテンプレート

 &lt;?php
 $app=&#039;frontend&#039;; // Necessary for fonctional boostrap
 include(dirname(__FILE__).&#039;/../test/bootstrap/unit.php&#039;);
 include(dirname(__FILE__).&#039;/../test/bootstrap/functional.php&#039;);
 require_once(dirname(__FILE__).&#039;/../../lib/validator/myFooBarValidator.class.php&#039;);
  
 $context = sfContext::getInstance();
 $request = $context-&gt;getRequest();
  
 $manager = new sfValidatorManager();
 $manager-&gt;initialize($context);
 $validator = new myFooBarValidator();
 $validator-&gt;initialize($context);
  
 // The values to validate.
 // You can make a second array with values
 // that are supposed to fail and do another
 // loop below.
 $values = Array(&#039;foo&#039;, &#039;bar&#039;);
  
 $t = new lime_test(count($values) * 2, new lime_output_color());
  
 $t-&gt;diag(&#039;myFooBarValidator()&#039;);
  
 foreach ( $values as $value ) {
   // Re-initialize the validation entry
   // Without this, the first failure would
   // cause any additional validation to
   // be skipped
   $manager-&gt;registerName(&#039;myname&#039;, false);
   $manager-&gt;registerValidator(&#039;myname&#039;, $validator);
  
   $request-&gt;setParameter(&#039;myname&#039;, $value);
   $retval = $manager-&gt;execute();
   $t-&gt;is($retval, true);
   $t-&gt;is($request-&gt;getErrors(), Array());
  
   // We remove the error so that the next loop
   // does not carry the error.
   $request-&gt;removeError(&#039;myname&#039;);
 }    </description>
    <dc:date>2008-04-07T22:26:03+09:00</dc:date>
    <utime>1207574763</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/memo2008/pages/16.html">
    <title>symfony/デバッグ</title>
    <link>https://w.atwiki.jp/memo2008/pages/16.html</link>
    <description>
      * エラーレベル
 emerg, alert, crit, err, warning, notice, info, debug

* ログを使用する方法

** アクション内からロギングする方法
 $this-&gt;logMessage($message, $level);

** テンプレート内からロギングする方法
 &lt;?php use_helper(&#039;Debug&#039;) ?&gt;
 &lt;?php echo log_message($message, $level) ?&gt;

* デバッグツールバーを使用する方法
デバッグツールバーの場合エラーレベルの設定はない

** アクション内からデバッグする方法
 public function executeIndex()
 {
     // デバッグツールバーの**logs&amp;msgs**の上部に表示します
     $this-&gt;debugMessage(&#039;データ&#039;);
     sfView::SUCCESS;
 }

** テンプレート内からデバッグする方法
 &lt;?php use_helper(&#039;Debug&#039;) ?&gt;
 &lt;?php debug_message(&#039;確認&#039;); ?&gt;

** デバッグコンソールを動的に非表示
 sfConfig::set(&#039;sf_web_debug&#039;, false);    </description>
    <dc:date>2008-03-26T23:41:56+09:00</dc:date>
    <utime>1206542516</utime>
  </item>
  </rdf:RDF>
