Python sqlite3和单元测试 不指定

zeus , 2010/02/26 10:12 , Python , Comments(0) , Reads(563) , Via Original
import os
import unittest            # 包含单元测试模块
import sqlite3 as sqlite   # 包含sqlite3模块

def get_db_path():
   return "sqlite_testdb"

class TransactionTests(unittest.TestCase):  # 单元测试第一步: 由TestCase派生类
   def setUp(self): # 单元测试环境配置
       try:
           os.remove(get_db_path())
       except:
           pass

       self.con1 = sqlite.connect(get_db_path(), timeout=0.1) # 连接数据库
       self.cur1 = self.con1.cursor() # 获取游标

       self.con2 = sqlite.connect(get_db_path(), timeout=0.1)
       self.cur2 = self.con2.cursor()

   def tearDown(self): # 单元测试环境清除
       self.cur1.close() # 关闭游标
       self.con1.close() # 关闭连接

       self.cur2.close()
       self.con2.close()

       os.unlink(get_db_path())

   def CheckDMLdoesAutoCommitBefore(self):
       self.cur1.execute("create table test(i)") # 执行SQL查询
       self.cur1.execute("insert into test(i) values (5)")
       self.cur1.execute("create table test2(j)")
       self.cur2.execute("select i from test")
       res = self.cur2.fetchall()
       self.failUnlessEqual(len(res), 1) # 测试

   def CheckInsertStartsTransaction(self):
       self.cur1.execute("create table test(i)")
       self.cur1.execute("insert into test(i) values (5)")
       self.cur2.execute("select i from test")
       res = self.cur2.fetchall()
       self.failUnlessEqual(len(res), 0)

   def CheckUpdateStartsTransaction(self):
       self.cur1.execute("create table test(i)")
       self.cur1.execute("insert into test(i) values (5)")
       self.con1.commit()
       self.cur1.execute("update test set i=6")
       self.cur2.execute("select i from test")
       res = self.cur2.fetchone()[0]
       self.failUnlessEqual(res, 5)

   def CheckDeleteStartsTransaction(self):
       self.cur1.execute("create table test(i)")
       self.cur1.execute("insert into test(i) values (5)")
       self.con1.commit()
       self.cur1.execute("delete from test")
       self.cur2.execute("select i from test")
       res = self.cur2.fetchall()
       self.failUnlessEqual(len(res), 1)

   def CheckReplaceStartsTransaction(self):
       self.cur1.execute("create table test(i)")
       self.cur1.execute("insert into test(i) values (5)")
       self.con1.commit()
       self.cur1.execute("replace into test(i) values (6)")
       self.cur2.execute("select i from test")
       res = self.cur2.fetchall()
       self.failUnlessEqual(len(res), 1)
       self.failUnlessEqual(res[0][0], 5)

   def CheckToggleAutoCommit(self):
       self.cur1.execute("create table test(i)")
       self.cur1.execute("insert into test(i) values (5)")
       self.con1.isolation_level = None
       self.failUnlessEqual(self.con1.isolation_level, None)
       self.cur2.execute("select i from test")
       res = self.cur2.fetchall()
       self.failUnlessEqual(len(res), 1)

       self.con1.isolation_level = "DEFERRED"
       self.failUnlessEqual(self.con1.isolation_level , "DEFERRED")
       self.cur1.execute("insert into test(i) values (5)")
       self.cur2.execute("select i from test")
       res = self.cur2.fetchall()
       self.failUnlessEqual(len(res), 1)

   def CheckRaiseTimeout(self):
       self.cur1.execute("create table test(i)")
       self.cur1.execute("insert into test(i) values (5)")
       try:
           self.cur2.execute("insert into test(i) values (5)")
           self.fail("should have raised an OperationalError")
       except sqlite.OperationalError:
           pass
       except:
           self.fail("should have raised an OperationalError")

class SpecialCommandTests(unittest.TestCase):
   def setUp(self):
       self.con = sqlite.connect(":memory:")
       self.cur = self.con.cursor()

   def CheckVacuum(self):
       self.cur.execute("create table test(i)")
       self.cur.execute("insert into test(i) values (5)")
       self.cur.execute("vacuum")

   def CheckDropTable(self):
       self.cur.execute("create table test(i)")
       self.cur.execute("insert into test(i) values (5)")
       self.cur.execute("drop table test")

   def CheckPragma(self):
       self.cur.execute("create table test(i)")
       self.cur.execute("insert into test(i) values (5)")
       self.cur.execute("pragma count_changes=1")

   def tearDown(self):
       self.cur.close()
       self.con.close()

def suite(): # 单元测试第二步
   default_suite = unittest.makeSuite(TransactionTests, "Check")
   special_command_suite = unittest.makeSuite(SpecialCommandTests, "Check")
   return unittest.TestSuite((default_suite, special_command_suite)) # 用例

def test(): # 单元测试第三步
   runner = unittest.TextTestRunner()
   runner.run(suite()) # 运行单元测试

if __name__ == "__main__":
   test()

用python访问sqlite 不指定

zeus , 2010/02/26 10:11 , Python , Comments(0) , Reads(587) , Via Original
1.首先去www.sqlite.org下载一个sqlite,它是一个嵌入式数据库,没有服务器的概念,windows版的就是一个exe,自己把它放到一个合适的目录里,然后把这个目录加入系统的path变量.
2.然后去找个pysqlite,这是python访问sqlite的接口,地址在这里 : http://initd.org/tracker/pysqlite
目前针对不同的python版本,pysqlite有两个版本:2.3和2.4,请根据自己的python版本选用.
3.然后就可以打开自己喜欢的编辑器,写一段测试代码了.
4.中文处理要注意的是sqlite默认以utf-8编码存储.
5.另外要注意sqlite仅支持文件锁,换句话说,它对并发的处理并不好,不推荐在网络环境使用,适合单机环境.
import pysqlite2.dbapi2 as sqlite
   
def runTest():
   cx = sqlite.connect('test.db')
   cu = cx.cursor()
   
   #create
   cu.execute('''create table catalog(
       id integer primary key,
       pid integer,
       name varchar(10) unique
       )''')

   #insert
   cu.execute('insert into catalog values(0,0,"张小山")')
   cu.execute('insert into catalog values(1,0,"hello")')
   cx.commit()
   
   #select
   cu.execute('select * from catalog')
   print '1:',
   print cu.rowcount
   rs = cu.fetchmany(1)
   print '2:',
   print rs
   rs = cu.fetchall()
   print '3:',
   print rs
   
   #delete
   cu.execute('delete from catalog where id = 1 ')
   cx.commit()
   
   
   cu.execute('select * from catalog')
   rs = cu.fetchall()
   print '4:',
   print rs
   
   #select count
   cu.execute("select count(*) from catalog")
   rs = cu.fetchone()
   print '5:',
   print rs
   
   
   cu.execute("select * from catalog")
   cu.execute('drop table catalog')

if __name__ == '__main__':
   runTest()

python类型转换、数值操作 不指定

zeus , 2010/02/26 09:40 , Python , Comments(0) , Reads(762) , Via Original
类型转换、数值操作
关键字: python类型转换、数值操作
python类型转换
Java代码

  1. 函数                      描述  
  2. int(x [,base ])         将x转换为一个整数  
  3. long(x [,base ])        将x转换为一个长整数  
  4. float(x )               将x转换到一个浮点数  
  5. complex(real [,imag ])  创建一个复数  
  6. str(x )                 将对象 x 转换为字符串  
  7. repr(x )                将对象 x 转换为表达式字符串  
  8. eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象  
  9. tuple(s )               将序列 s 转换为一个元组  
 10. list(s )                将序列 s 转换为一个列表  
 11. chr(x )                 将一个整数转换为一个字符  
 12. unichr(x )              将一个整数转换为Unicode字符  
 13. ord(x )                 将一个字符转换为它的整数值  
 14. hex(x )                 将一个整数转换为一个十六进制字符串  
 15. oct(x )                 将一个整数转换为一个八进制字符串  

函数                      描述
int(x [,base ])         将x转换为一个整数
long(x [,base ])        将x转换为一个长整数
float(x )               将x转换到一个浮点数
complex(real [,imag ])  创建一个复数
str(x )                 将对象 x 转换为字符串
repr(x )                将对象 x 转换为表达式字符串
eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s )               将序列 s 转换为一个元组
list(s )                将序列 s 转换为一个列表
chr(x )                 将一个整数转换为一个字符
unichr(x )              将一个整数转换为Unicode字符
ord(x )                 将一个字符转换为它的整数值
hex(x )                 将一个整数转换为一个十六进制字符串
oct(x )                 将一个整数转换为一个八进制字符串



序列支持一下操作:
Python代码

  1. 操作                      描述  
  2. s + r                   序列连接  
  3. s * n , n * s           s的 n 次拷贝,n为整数  
  4. s % d                   字符串格式化(仅字符串)  
  5. s[i]                    索引  
  6. s[i :j ]                切片  
  7. x in s , x not in s     从属关系  
  8. for x in s :            迭代  
  9. len(s)                  长度  
 10. min(s)                  最小元素  
 11. max(s)                  最大元素  
 12. s[i ] = x               为s[i]重新赋值  
 13. s[i :j ] = r            将列表片段重新赋值  
 14. del s[i ]               删除列表中一个元素  
 15. del s[i :j ]            删除列表中一个片段  

操作                      描述
s + r                   序列连接
s * n , n * s           s的 n 次拷贝,n为整数
s % d                   字符串格式化(仅字符串)
s[i]                    索引
s[i :j ]                切片
x in s , x not in s     从属关系
for x in s :            迭代
len(s)                  长度
min(s)                  最小元素
max(s)                  最大元素
s[i ] = x               为s[i]重新赋值
s[i :j ] = r            将列表片段重新赋值
del s[i ]               删除列表中一个元素
del s[i :j ]            删除列表中一个片段


数值操作:
Python代码

  1. x << y                  左移  
  2. x >> y                  右移  
  3. x & y                   按位与  
  4. x | y                   按位或  
  5. x ^ y                   按位异或 (exclusive or)  
  6. ~x                      按位翻转  
  7. x + y                   加  
  8. x - y                   减  
  9. x * y                   乘  
 10. x / y                   常规除  
 11. x // y                  地板除  
 12. x ** y                  乘方 (xy )  
 13. x % y                   取模 (x mod y )  
 14. -x                      改变操作数的符号位  
 15. +x                      什么也不做  
 16. ~x                      ~x=-(x+1)  
 17. abs(x )                 绝对值  
 18. divmod(x ,y )           返回 (int(x / y ), x % y )  
 19. pow(x ,y [,modulo ])    返回 (x ** y ) x % modulo  
 20. round(x ,[n])           四舍五入,n为小数点位数  
 21. x < y                   小于  
 22. x > y                   大于  
 23. x == y                  等于  
 24. x != y                  不等于(与<>相同)  
 25. x >= y                  大于等于  
 26. x <= y                  小于等于  

之四十五:打官司 不指定

zeus , 2009/10/08 16:14 , About Japan , Comments(0) , Reads(1066) , Via Original
  之四十五:打官司
  
  这几天,又有几场中国战争受害者起诉日本国家责任的诉讼正在或将要进行。自九十年代后期以来,中国民间人士就日本侵华战争中的暴行,向日本国家或企业索赔的案件为数颇多,涉及慰安妇、强制劳工、无差别轰炸及屠杀等多个方面。因法律程序所限,这些案件的审理过程大多拖沓冗长,就结果论,个别以企业为被告的案件达成了和解,多数是以日方承认受害人陈述的事实但没有责任给与赔偿告终。比较典型的,如东京高等法院最近就七名中国劳工起诉起诉日本政府和四家建筑公司并索赔1.4亿日元一案的二审判决。判决承认“强制掳走平民并强迫劳动是政府和企业双方的不法行为”,也“可以理解”原告认为这种行为违法国际法的主张,但援引日本最高法院之前作出的“在1972年《日中联合声明》中,个人索赔权已被放弃”最终司法裁决为由,驳回原告的请求。
  我去旁听过几次庭审,听到那些风烛残年的老人讲述当年的惨痛经历,是一段非常伤感的过程。可是,诚实地讲,我的心里也逐渐质疑起不断涌现的此类诉讼的意义。
  在一次浙江细菌战受害者诉讼的现场,我见到了表情严肃的王选女士。对于她的事迹,我早有耳闻,常年投身于对日民间索赔的支持工作,值得敬佩。然而,我看过国内舆论的很多评价,有点像李白“白发三千尺”的修辞手法,说句不敬的话,窃以为过于夸大了。王选女士是能够“让日本沉没”的人?日本就这么轻易的沉没了?她和那些诉讼真的令日本“十分头痛”了吗?或者,一连串的驳回诉讼请求是最明确的答案。
  我理解受害者及家属想要个说法或得到赔偿的心情,这是他们不容剥夺的个人权利,也是对人道尊严的捍卫。但在现实境况下,若以诉讼的方式来说,结果基本是注定是失望的,过程也未必会如他们所想“揭露了日本军国主义的罪恶”。日本在二战期间的罪恶行径是广为人知的。战后审判中因此而被处死的B/C级战犯约920人,荷兰(236人)、英国(223人)、澳大利亚(153人)都多于受害最巨的中国(149人)。事实上,从某种程度来说,这些迟到的诉讼可能起到了相反的作用,无意中加强了今天的日本人对中国的轻视。日本社会的价值观是强者主导,弱者与其抗争,不如显示出足够可怜以换得强者施舍的同情。几无胜算的诉讼这种做法,恰恰强化了中国、中国人的弱者形象。与相识的一些日本人提到这一话题,他们的回答通常是受害者“本当に可哀相です(真可怜啊)”,但这仅仅意味着表面上的、甚至是礼节性的同情。
  和客观上“示弱”的索赔诉讼相比,另一类诉讼更有必要,却鲜有实例可寻。
  特别是这两三年里,日本的媒体存在一股热衷中国负面报道的“ブーム”。此一浪潮的根源是日本对变动中的中国越发强烈的戒惧与茫然,但表现为民众对华恶感比重的增高和媒体推波助澜的混杂互动。在主流大报的中国报道中,右翼色彩的《产经新闻》说出“中国媒体都归解放军总参谋部掌管”不足为奇,自由主义色彩浓重的《朝日新闻》也杜撰“去长野欢迎奥运火炬的中国人每人得到了大使馆发的两千日元”。一家发行量较大的周刊则说,姚明的父母“是中共强制撮合结婚”,为了进行“人种试验”,姚明是“试验产下的怪物”。最近的北京国庆演练当晚日本共同社记者“被打”事件,中国外交部发言人在新闻发布会上作了发生原因的细节说明,但以《朝日新闻》为例,其报道仅说中方“表示遗憾”,原因“中国警方没有解释”。所以,日本媒体涉及中国报道的水准往往极其低下,缺乏良知的擅改、隐瞒与偏见和钳制新闻自由其实是一丘之貉。
  对付这种几乎是信口开河的“报道”,法律诉讼倒不失有效的手段。一个可以参考的例子,是新加坡的李光耀、吴作栋、李显龙等政要,多次起诉《经济学人》、《国际先驱论坛报》等外国媒体涉嫌诽谤,并且每每以胜诉令对方道歉赔偿告终。
  姚明的那个例子,如果起诉恶意诽谤应当极有胜算,而多少会警醒一下越来越口无遮拦的日本媒体。这样的官司也许更有现实意义吧。

之四十四:間違い 不指定

zeus , 2009/10/08 16:14 , About Japan , Comments(0) , Reads(1069) , Via Original
 之四十四:間違い
  
  已故的披头士乐队灵魂人物约翰•列农曾与日本女子大野洋子结为夫妇,另一位艺术大师、阿根廷作家博尔赫斯的最后一任妻子也是日本裔女子玛丽亚•儿玉。博尔赫斯曾在晚年来日本小住过一个月,多少弥补了一点毕生未能履及中国的遗憾。他在接受访问时说:“在日本,你始终能感受到守护神一般的中国的阴影。这与政治无关,这与日本文化是它自己的文化这一事实无关。在日本,人们感受中国就像感受希腊。”
  这段论述出自既非中国人又非日本人的第三方之口,博尔赫斯肯定了中国文化对日本的深刻影响,但也提到“日本文化是它自己的文化”。就像西方人有时会分不清中国人和日本人的相貌分别,对于中华文化和日本文化的异同,很多人也稀里糊涂。比较有代表性的,莫过于两种:一种是汤因比,他把日本文明与朝鲜文明、越南文明视为中华文明的卫星文明;一种是亨廷顿,他把日本文明和中国文明并列,共存的还有西方、非洲、东正教、伊斯兰、拉美、印度等六种文明。两种看法都对也都不对,汤因比看到的是古代文化的延续性,亨廷顿看到的是当代国际格局的现实性。比西方人怎么看更加重要的,是中国人和日本人自己怎么看。在这一点上的误会,中国人尤其有过沉痛的教训。
  在日本诸多接纳外国留学生的学校里,中国学生相对其它国家学生而经常感到骄傲的,是汉字。那些非中国留学生(甚至包括废除了汉字的韩国留学生)提起汉字无不切齿,可中国留学生却能在语言不通的情况下,利用书写汉字进行基本交流。初来乍到的中国人也比其他国家游客更不易迷路,因为汉字随处可见。近年来,随着海外游客和居留外国人的增多,东京等都市的很多指示标志都变成了日语、汉语、韩国语、英语四种说明,前两者的相近乃至相同尤为醒目。凡事皆有利弊,使用相同的汉字固然令中国人觉得方便易懂,可无形中也阻碍了对日语、日本文化加深了解的意愿。昔年梁启超著有一本名闻遐迩的《和文汉读法》,号称是任公与友人罗某的心得结晶,却充分表现出当时国人对日本的无知。事实上,和他相过往的日本人士普遍具备汉学修养,双方的粗浅交流确实没多大困难,但这个错觉称得上贻害深远。中国人看到汉字,就认定意思差不多,进而觉得日本不过尔尔,这样的人今天怕还有不少吧?
  梁任公倘若今日来到日本,面对那与汉字平分秋色的外来语片假名,想必会大呼头痛。别说外国人,就连年纪稍长的日本人也常常搞不清楚什么意思。我不知道这对于中国人而言是好事坏事,没了汉字的庇佑,或者大家会更加认真一些?
  来日后不久,见到“間違い”这个词,一下子想到《论语》:“君子无终食之间违仁,造次必于是,颠沛必于是。”中文原意是说君子哪怕是在吃饭的一段时间里也不能违背仁的操守,但日语把“间违”两个字拿出来发展出“間違い”这个词,似乎是错误的断句导致。“間違い”的主要意思是完全不对,倒很符合这个词的来由:完全不对。中国人看待日本,以这种“完全不对”的眼光望去,要比人云亦云或自以为是好得多。
  前北大校长蒋梦麟回忆,他小时候写作文给日文教师中川,提到“中日同文同种”,中川笔下毫不留情地嘲讽道:“不对,部队,中日两国并非同种,你的国将被列强瓜分,可怜!”把蒋校长气得哭了一场。中日两国的“同种”问题,留待日后再说,“同文”也谈不上。日语和朝鲜语都属于粘着语,语法上与阿尔泰语系的通古斯语相近,而汉语则属于汉藏语系。日文中的汉字,成了一个亲缘的障眼法。
  不过,片假名虽多,毕竟也是咱们汉字的偏旁部首演化,非要弄一个“新和文汉读”也不是不可能地。某年女排日本巡回赛赛场,听几位中国记者对话:“去哪儿啊?”答曰:“木街儿。”又问:“怎么回去啊?”又答:“毛撇勾一儿。”我听得满头雾水,虚心求教,才知道“木街儿”就是“ホテル”(Hotel),“毛撇勾一儿”是“モノレール”(Monorail,单轨铁道),大笑不已。

之四十三:搭訕 不指定

zeus , 2009/10/08 16:13 , About Japan , Comments(0) , Reads(1332) , Via Original
  之四十三:搭訕
  聽說搭訕培訓班是國內最近的一個朝陽產業,同時也有衛道士站出來批判,斥之為“臭名昭著的泡妞學”。老實講,搭訕確實是一門學問。相信很多青少年都曾有驚鴻一瞥之下極想與之攀談的經歷,可惜因自己的怯懦未能付諸行動,眼睜睜地目送斯人背影消失。能不能搭訕,敢不敢搭訕,搭訕應該說些什麼,搭不上怎麼收場,搭上了又能怎樣……這學問太大了,想一想都覺得心驚膽戰。那些開班收徒的搭訕“達人”,簡直讓人心生妒意啦。
  中文的搭讪,对应为日语的ナンパ,乃是日本各大都市繁华地段常见的风景。到网络上查一下,除了大量的“ナンパ术传授”、“ナンパ成功率比较”之外,还有“ナンパ研究会”的组织(官网http://www.nanpa.ne.jp)。ナンパ的定义,一般认为是在公众性场合以主动交谈的方式,针对陌生的异性(也可以是同性)提出约会或性行为的试探。從這個意義上說,“搭訕學”當然包括所謂“泡妞學”,後者說法的“政治不正確”在於忽略了女性的主動搭訕權和同性之間的搭訕行為。假如是女性要和男性搭讪,日语称之为“逆ナンパ”。我想,ナンパ爱好者们不仅追求着成功的ナンパ,更渴望着被热烈的逆ナンパ吧。走笔至此,不禁想到明末清初歌伎卞玉京对诗人吴伟业说的那句“亦有意乎?”,这就是标准的逆ナンパ,可我们的吴伟业先生竟然“若不解”!数百年之下,ナンパ爱好者们恐怕犹想愤而捶之。
  需要指出的是,无论ナンパ还是逆ナンパ,都不应该涉及金钱交易。雖然這未免有些理想化,因為金錢可能是勸誘異性的有效手段之一,但不論男女張口就開價無疑有變成“yz交際”之嫌。一位曾在中國留學的日本友人給我講過他的成功經驗:大學時代和同窗在居酒屋聚飲,正好旁邊有兩位姑娘,就邀請她們過來合為一桌。酒闌人散,他和同窗各與一位姑娘去了情人旅館,翌日清晨道別。这大抵等同于中国人所说的“ons”。
  自午后起,若是在年轻女孩喜欢游逛的涉谷、新宿等地,车站周边看上去等待ナンパ的男子比比皆是。其中一些身穿黑色西装的家伙搭讪动机通常并不单纯,可能是劝诱女孩去拍摄色情电影或图片,介绍色情行业的工作等,这算不上真正的ナンパ。幾位朋友在獨行時遇到過類似搭訕,只要默不作聲逕自前行,那些傢伙跟隨數米之後就會識相走開。開口拒絕或接話,都是不明智的做法,或將帶來更多的糾纏。不過,大庭廣眾之下動手動腳的現象比較少見,那是觸犯《迷惑防止條例》的違法行為。
  有时我在车站附近等人,便可旁观ナンパ的过程,总体而言似乎败多成少,尤其是单独的男女之间,绝对需要愈挫愈勇锲而不舍的脸皮。但假如是幾個男生看准幾個女生上前搭訕,一方面人多壯了膽,另一方面女孩的戒心也有所減輕,熱熱鬧鬧同赴酒館的場景倒是見過幾回。
  搭訕的至難,在於那開口的勇氣。据说,有的公司为了培养新进员工的社交和推销能力,还命令他们来ナンパ一下。電視上也曾有過從未談過戀愛的大齡男青年,在別人的鼓勵和開導下,嘗試著對路過的年輕女性搭訕。我覺得搭訕培訓不論在日本,還是在中國的走俏,都和這個個人電腦時代大有關聯。那些沉浸於虛擬世界中的“宅”人,與活人打交道的能力肯定在退化。別看今天被人批評“臭名昭著”,或許,未來的搭訕教員們會博得心理醫師般的地位也說不定呢。至于对ナンパ的道德评价,恕我直言,我还真的很难判断,在对陌生异性的大胆搭讪和正式相识后盘问对方收入多少是否有房有车父母身份如何之間,究竟哪一個更不道德。
  既然中國的搭訕事業也如火如荼,總不好說它是獨特的日本文化,儘管日本人的性意識、社會氛圍等都對此有所影響。能体现日本人特点的是各大学的ナンパ成功率排行榜、哪个地方最利于ナンパ之類的資料統計。據說,東京的上野是男孩ナンパ女生的最佳地點,因為那裏多博物館、美術館和公園,是藝術專業和文科女生較多的“名所”。而ナンパ的沙漠则是大企业密集的丸之内,那些女白领多半精明得很,不解風情。

之四十二:哪怕附庸风雅 不指定

zeus , 2009/10/08 16:13 , About Japan , Comments(0) , Reads(812) , Via Original
  之四十二:哪怕附庸风雅
  
  某年亚冠去J联赛鹿岛鹿角队的主场,在体育场内墙壁上看到俱乐部的赞助商名单,有当地的十几家企业。和中国联赛俱乐部不同的是,日本各俱乐部以地域为依托,一般是由现地的多家企业共同出资协办,只不过彼此金额略有差异。日本男足虽然这些年来火热过几次,但J联赛俱乐部极少有赚钱的,大多是赤字,依靠企业赞助维持。那么,企业们又拿不到中国式的“冠名权”,为什么要掏钱呢?理由是企业的社会责任。
  J联赛的三项基本原则,第一是提高日本足球运动水平,第二是以体育文化促进国民身心健康,第三是推动国际交流发展。这第二条的责任,就落在了提供财力物力支持职业俱乐部的企业身上。他们出钱建设球队,丰富所在地民众的娱乐文化生活,是为了履行企业对社会应尽的义务。
  曾和几位在日本活跃的前中国运动员有过交流,对日本企业在这方面的角色略有了解。日本的竞技体育除了职业化的棒球、足球等项目之外,大部分是企业在担任培养、训练运动员的角色。很多企业内部设有体育部或社会活动部,一方面以运动员担任企业形象宣传,凝聚企业向心力;一方面把这笔开销当作回馈社会的支出,因为观看体育比赛是大众性的娱乐。有的企业对运动员们的管理比较宽松,可以为他们的专业训练创造较多方便;有的企业还真的把运动员们当普通职工,一半的时间要花在工作上。当然,后者的做法对运动员退役之后的生活保障无疑大有裨益,无论如何也不至于沦落到去搓澡。
  企业办体育,是日本体育事业的最鲜明特色。以前看到的数据统计,雅典奥运的日本代表团中,居然有一半以上的身份是企业员工。但是,企业办体育并非没有波折,最大的不利影响莫过于经济状况的恶化,就只好削减预算与规模。近年来,日本竞技体育在奥运等场合的表现平平,多少触动了各级政府机关对加大体育事业投资的念头。不过,总体来讲,体育作为企业必须承担的“社会责任”,一段时期内仍将是主流模式。
  企业表现其负责任的态度,不仅体育,更广泛的包括各类文化事业。温家宝总理访日那年,在国立剧场和时任首相安倍共同观看演出。我在剧场内看到该剧场的所有者艺术文化振兴基金的介绍,虽然是国立,但其背后是123家遍布各个领域的大企业以及无数个人的解囊捐赠。事实上,日本的诸多文化设施其创立、运营都依靠无关企业对社会文化活动的支持,如汽车巨头丰田也会出资办一座音乐厅。日本政府和民间对于此类在文娱事业上有“负责”表现的企业,官方会在税务方面给与优待,普罗大众则增加了好感与信任。
  企业在商言商,却肯花费不小的金钱于社会文娱活动,尤其是一些阳春白雪的项目,看上去有附庸风雅之嫌。同时,日本民众对文艺体育之类事物的热情固然很高,但由于跟风性格等缘故,其中附庸型颇为不少。可是,我倒觉得即便是附庸风雅也没什么不好,因为它至少还表明“风雅”在价值观上的优越地位,好歹没让“风雅”成为被讥笑挖苦的贬义词。
  某个夏夜,东京热闹的池袋车站前聚集了百余人,我走近一看,是在围观一位青年的音乐演奏,左手弹键盘右手举小号,一心两用。不论春夏秋冬,繁华的车站附近总有很多这一类自弹自唱的青年,也有或多或少的路人驻足旁观。他们有的摆了筹款或贩卖自制专辑的架式,有的似乎只是单纯为了表现自我。这位双手互搏的青年技艺花哨,观者甚多。突然,人群中挤出一个黑社会分子打扮的中年人,以骄横的步子走向那青年。我心头刚刚闪过砸场子之类的概念,却见中年大哥从钱包中掏出两张万元纸币,放在了青年募款的盒子里。青年没停下来演奏,略一颔首表示谢意。周围的人们一起鼓掌,向那位大哥致敬。这是令人感动的一幕,它展现出了 “风雅”的力量。
  前些日子去横滨中华街,听说原来仅有的一家音像店也早歇业了。某友人曾感慨,中华街殷商巨贾不少,饭店雕梁画栋鳞次栉比,但没有一家书店,“好像中国文化就是吃”。我想,或许是诸公们都不愿被视为“附庸风雅”吧。

之四十一:跃进与沉沦 不指定

zeus , 2009/10/08 16:12 , About Japan , Comments(0) , Reads(720) , Via Original
  之四十一:跃进与沉沦
  
  1998年的东亚四强赛,世界杯首次出线的日本队在主场0:2完败于未能出线的中国队,日本媒体把身体素质出众的中国队比作日本未来的小组对手阿根廷队,一片悲鸣。那是中日男足对抗中方的最后辉煌,此后十余年内,中国队即便面对日本二队也只能期待勉强混个平局。之前的东亚男足格局中,中国水平在日本之上,所以才有迟尚斌、沈祥福那一代国脚都曾旅日的经验。 1993-94年间,两国差不多同时开始职业化进程,结局却是对比极其鲜明的跃进与沉沦。这当中的蕴意,已经超越了足球这个体育运动的范畴,具有更重大的象征意义。我把它和19世纪后期的两国国运对比,得出惊人相似的结论。一个是蒸蒸日上的明治维新,一个是徒有其表的洋务运动,最后,后者成了前者刀俎上的鱼肉,而原因很简单:自作孽。
  我来日的1996年,J联赛仍处于初始阶段,当时就发现了一个与中国甲A迥异之处。一直到1999年为止,J联赛都没有平局的概念!两队交手,如果90分钟内战平,则延长30分钟,依旧战平的话点球决胜负,一定要分出输赢。需要提及的是,该段时间内也没有升降级制度。这个罕见的制度对日本足球的根基打造,可能有非常重要的意义。首先,球员的体能和攻击意识得到了极大的锻造。96年的J联赛已有16支球队,则每支球队每年理论上可能要打30场120分钟的比赛。要想不拖到加时赛或偶然因素很大的点球战,就要不断进攻,力求在90分钟内解决对手。于是,2002年世界杯开幕前,特鲁西埃在国立竞技场山呼海啸的球迷呐喊声中承诺要进攻,“因为进攻是日本的文化”。其次,这种赛制对球员的心理素质锤炼有不容轻忽的巨大作用,并形成了一个90分钟内精神高度集中的传统。随便举几个例子,2003年,日本队在客场第90分钟进球击败宿敌韩国队;2004年亚洲杯,日本队在第 85分钟被巴林队反超,随后在第90分、第93分进球逆转;2005年四强赛,日本队在第87分钟进球,战平中国;同年联合会杯,第88分钟进球战平巴西;同年世界杯预选,在离终场还有20秒的情况下进球,击败朝鲜;2006年,在第94分钟进球,逼平波黑……我曾粗略统计过,近四五年来,日本队的扳平和胜局中,最后一分钟进球的有多次,最后五分钟就更不必说。这说明了什么?决不仅仅是运气,运气不会一而再再而三的眷顾一支队伍。
  因为一项工作的缘故,旁观过不下数十场日本队的比赛,也接触过一些日本足球界人士。以中田英寿、小野伸二等为代表的特鲁西埃那一批球员,成长过程和我的旅日生活正相对应,颇有亲切感。中田一代完成了日本男足的亚洲霸业,但真正的功臣是前足协主席川渊三郎等领导者,他们制定了完备的发展战略并有效地付诸实践。他们是日本足球界的伊藤博文、福泽谕吉,而中国足协连李鸿章、左宗棠也不可见。尽管中国舆论经常把矛头指向球员,但稍了解内情的人会强烈感受到,球员不过是恶劣环境下的可悲牺牲者。日本雅典国奥主帅山本昌邦曾私下说,他若是能拥有曲波那一届的中国国奥球员,“有信心在奥运会上拿奖牌。”一言以蔽之:橘生淮南则为橘,橘生淮北而为枳。
  朱广沪还是深圳队主帅时,曾来日本想找几个外援,有六七十名日本青年球员报名,以分组对抗的形式进行了一天的选秀。我一直在他身边。他对两件事很感慨。第一是这些大多并不熟悉的球员被临时捏合组队,配合却非常默契,每个人在跑动中抬头保持观察,不认识就叫队友身上的号码来交流。朱广沪说这体现了日本青少年足球训练的基础极为扎实,我告诉他日本全国高中生足球锦标赛冠军决赛在国立竞技场举行,NHK电视台现场直播,现场观众六万余人,他不禁摇头叹息。傍晚结束后,朱广沪和我站在体育场门口等车,落选的日本青年们一一经过,向朱广沪鞠躬致意:“您辛苦了。”他问明这句话的意思后,又一次摇头叹息。
  中国足球的问题出在哪里?有没有希望?以某位日本足球界人士的话做结:“什么时候中国的足球彩票能像日本这样立足本国联赛,中国足球就会好起来了。”
  之四十:寿司为什么这样红
  
  我不喜欢吃“生もの”(未经加热、盐渍的食品,主要指鱼、肉类),所以对其看法难免有个人好恶在内,爱好生食的朋友或有不同观点,我只是略抒己见而已。萝卜青菜各有所爱,食不同不相为仇。
  有人初来日本,就对生鱼虾牛马肉样样垂涎,而我在日本生活十几年,仍无法适应刺身(生鱼片)、寿司等食物,有时作陪国内来客勉强吃一点,肠胃总要造反。或许是情绪上的抵触暗示了身体的反应,我总以为人类在进化中从茹毛饮血到用火加热,是一个自然而然的过程,没必要非得逆流而上。其实,生鱼生肉咱们古人也曾吃过,叫“脍”,后来因防疫等缘故而放弃。当然,基因中来自远祖的积淀,可能导致一些人对生食(本文用意皆不包括水果蔬菜)的偏爱,但要为之建构优越性理论就难免牵强了。
  来日本那年夏天,关西地区爆出一个名叫O157的细菌食物中毒的大案,在学校食堂就餐的近万名学生中招,数人死亡。一时间,日本举国的“生もの”生意遭受重创,我打工的店铺临时撤下了菜单上所有的生食。O157的病因就是未经充分加热,但近年来虽然时不时仍有病例,大规模的集团感染少见了,舆论的关注程度也不热心。毕竟,为了满足口腹之欲,人类的记性是很健忘的。
  生鱼片和寿司是日本人生食的代表,最大的危险应该是寄生虫,所以进食时配以芥末和姜,据说为了消毒。但据我观察,日本人当中皮肤病比例颇高,怀疑和生食有关,后来读德国著名学者海因里希•施里曼一百多年前的《清国、日本游记》,发现他对日本人皮肤病和食用生鱼的关系有同样看法。一位日本朋友体毛比较丰盛,自嘲说刺身和寿司吃得太多,可见他们自己也有感受。
  不过,一个有趣的现象是以寿司为首的日本料理在海外的流行。Sushi是英语中的专有名词,N多的好莱坞明星都说寿司是他们的最爱。寿司为什么这么红?
  任何一种人类的“民族料理”,都不仅仅意味着食用价值和味道、原材料、烹饪方式的差别,更蕴含着丰富的意识形态内容,特别是进入民族国家时代以来。波兰学者J.Cwiertka曾留学日本,专门研究日本和韩国饮食,他指出,所谓日本料理的概念,是和日本的民族国家概念一同打造出来的。给菜肴安上国籍的同时,也不可避免地附加了这个国家的印记。比如说纳米比亚料理,很容易有蛮荒色彩;而说日本料理,就产生了精致的印象。
  十九世纪中叶日本开国之后,到过日本的西方人对Japanese Food予以普遍恶评,简直到了“除非真的没东西吃,不会去碰那些难以忍受的食物”(英国军官亨利•诺里)的地步。然而,今天的日本料理,尤其是寿司,成功地打入了“第一世界国家的美食界”,成为中产阶级以上民众喜爱的异国风味。在第三世界国家,日本料理也常常具有高档食肆的身份。事实上,这个变化本身只能说明人类的非理性本质。
  日本人的饮食结构中确实有比较健康的一面,但把生食和日本人的人均寿命延长扯到一起,更多的成分恐怕是商业噱头。很显然,生食和地球上其他长寿地域的居民并无必然联系。J.Cwiertka认为,寿司在日本以外最初的滥觞,是美国的加州。当地有为数不少的日本裔居民,但更重要的是,寿司被赋予的自然、健康、反传统意义迎合了此间声势浩大的“雅皮士”运动。“雅皮士”代表食物寿司因而登堂入室,成了高收入、高学历而又特立独行、热爱自然的“精英”们的宠爱。他们将这股时尚带到了欧洲,又进而影响了欧美的普通大众,以至于回转寿司的店铺如今遍布西方主要城市,有的华人餐馆也像模像样地搞起了日本料理。
  在华人世界,日本料理的身价也比较高,连吉野家都跟着沾光,仿佛应了南宋哲人陆九渊那句话:东海西海,心同理同。尽管那些生鱼虾牛马肉若出自纳米比亚人之手,很可能要被斥为“教化未开”。

之三十九:一瞬 不指定

zeus , 2009/10/08 16:11 , About Japan , Comments(0) , Reads(716) , Via Original
之三十九:一瞬
  
  今天的日本各大报仍然保有属于诗歌的版面,刊登着读者投稿的俳句与川柳。两者都只有短短的十七音,所以一登就是几十首,充分展示了民众极高的创作热情。我国大跃进时期曾有一场全民写诗热潮,据说有一人日书千篇的纪录。相比之下,日本人每年创作的俳句恐怕也要有几百亿首。全国人民热心作诗,哪怕泰半是梨花体,也比“九亿麻”要风雅一点。
  王安石在诗中批评韩愈的平淮西碑,“欲编诗书播后嗣,笔墨虽巧终类俳”,“俳”显然是贬抑之辞。汉语中俳谐的意思是诙谐戏谑,难登大雅之堂,不过,日本人把俳句发展成了日本诗歌的代表体裁,“俳”的本意已无足轻重了。
  对俳句的最初印象,自然是松尾芭蕉的名作:“闲寂古池旁,青蛙跳进水中央,扑通一声响。”此后,就是美国诗人庞德那首据说深受俳句影响的《地铁车站》。芭蕉的意境颇富禅机,庞德的意象韵味深远,但对于中国古典诗词的爱好者而言,为俳句所倾倒似乎有点困难。中国文人费心创制的“汉俳”,我总觉得是那个崇日年代的背景使然。要说短歌,我们的五绝不过二十字,词中《十六字令》更仅有十六字。俳句在西方的影响较大,窃以为有一个要素:语言里动词的时态。汉语动词本身没有时态变化,因此,对俳句的接纳程度反而不如西方。
  不过,理解日本文化,俳句确实是一个不错的途径。罗兰-巴特在薄薄的小册子里不惜篇幅地论述俳句,不是仅仅因为文学批评是他的本行,更因为对俳句的看法“也可以用来谈论人们在我称之为日本的那个国度旅行时碰到的每一件事。”事实上,看日本民众们的作品,的确涉及广泛,生活中的一切皆可入“俳”。
  提到俳句,好像就一定要说起禅宗,这个话题稍后再议。若从字面来看,俳句,尤其是很多古典俳句,是对一个转瞬即逝的时刻的迅速捕捉。借助于时态,这个瞬间仿佛被定格成了一幅小画,用罗兰-巴特的话说是一个“偶发事件”,用三岛由纪夫的话说则是“时间结晶体的美丽的断面”。它表现出的,是日本式的时间和美学观念。
  我们中国人传统的时间观念,如果从计时刻度上讲,似乎有点粗放,不知是不是大陆民族的生活环境所致。中国人眼中的美,大约也有一种绵延感,像张若虚《春江花月夜》的“江畔何人初见月?江月何年初照人?人生代代无穷已,江月年年只相似。”对照来看,日本人可能一方面囿于狭仄的空间,一方面身处多突发灾害的自然,对时间有着更细致的感受。当你用愈细微的时间刻度去寻求美的时候,就愈发容易感受到美的难以久驻,而愈是难以久驻,就更显示出美在须臾之间的魅力。春之樱花,夏之花火,秋之红叶,冬之初雪,日本人喜爱的四季风物,皆有此一近似的特征。俳句本来应该是打油诗,却成了主旋律,最主要的原因,在于它的精短体裁最适合体现那不能过多定义或描述的一瞬。
  即便在篇幅较长的叙事文学里,俳句式的特点还是屡屡出现。且看三岛在《春雪》中刻画的一个场景:聪子走过后院时,女侍在喂鸡。“有几根鸡毛白晃晃地飘落,快接近地面了”。这是日本文学式的一瞬。着眼点并非散落在地上的鸡毛,甚至也不是正在飘落的过程,而是 “快接近地面”的刹那。
  人类的进化史,是时间观念的进化史,其度量单位越来越细,如百米赛跑的计时要算到0.00秒。日本文化的瞬息之美的一闪,颇能打动很多现代人的心灵。但是,刻度变细微了,长度的延续性毕竟还在。这就教人觉出日本人的一大不足,即局限于一瞬,忽略了长久。俳句纤巧,长诗却是短板;资料详密,论断却显局促……李宗仁所以称日本人是优秀的战术家,但战略观有短视之嫌(或许是意识到了这个问题,新登场的民主党政权创设了一个叫做“国家战略局”的机构)。
  最后开个玩笑。突然看到女诗人赵丽华的《一个人来到田纳西》。诗云:毫无疑问/我做的馅饼/是全天下/最好吃的。正好十七个字。
Pages: 9/67 First page Previous page 4 5 6 7 8 9 10 11 12 13 Next page Final page [ View by Articles | List ]