2010年4月20日

过去一年中文推特圈的几件大事

1. #cn4iran
在09年,关于伊朗大选的标签#iranelection一直是TWITTER上的热门标签。
09年12月27日,在伊朗发生了大规模的流血冲突,越来越多的中国人开始在推特上关注伊朗的命运。现场的照片和视频越来越多,鲜血也使得更多人变得亢奋。
这时,著名网友安替@mranti建议推友统一使用#cn4iran标签跟进此话题,cn4iran的意思是China For Iran。
有网友说,中国政府和伊朗政府站在一边,而中国人民和伊朗人民站在一边。
越来越多的中国推友的关注,使得#cn4iran标签在当夜上了TWITTER热门榜的TOP10,和#iranelection标签比翼齐飞。
中国推友的关注,是因为这个事件太容易使人联想到89事件了。而中国政府向伊朗政府输出网络封锁技术,使得两国网民对网络封锁的体会感同身受。
后来,cn4iran.org网站及时地出现了,这个网站能够抓取TWITTER上#cn4iran的搜索结果,及时输出到网页,从而让墙内的网民也可以迅速得到相关的信息。并且此网站还在首页上放了TWITTER的墙内注册地址,帮助更多人的人能够使用TWITTER。
参考文章:FT中文网《Twitter上的国际主义》: http://www.ftchinese.com/story/001030513
RT @PKUbuzheteng 什么是国际主义?就是全世界的草泥马联合起来,就是推特上众人跑到人家伊朗的标签里面打酱油声援。
RT @bao3 重大消息:中国政府支持伊朗现政府,伊朗推友说:这不代表中国人民。
还有一句被广泛传播的伊朗诗歌:你可以摧毁花朵,但你不能阻止春天的到来。每一棵你揉碎的鲜花,我们将重新播种。

2. #GoogleCN
2010年1月12日,GOOGLE在官方博客发布声明,将停止谷歌中国的审查机制,并与中国政府重新进行谈判,参见:http://googleblog.blogspot.com/2010/01/new-approach-to-china.html
此声明说作此决定是因为谷歌中国的GMAIL服务受到有蓄谋的、针对人权活动家的恶意攻击。
消息一出,一片哗然。
众推友纷纷就此话题发言,以#GoogleCN作为标签,很快在全世界范围内受到广泛关注。
同时,有不少网友约定到北京谷歌中国的总部献花,却被清华科技园保安以“非法献花”为由受到干扰。
1月13日,百度首席产品设计师孙云丰发表博客《谷歌市侩,我感到恶心》。
2010年3月23日,在经过二个月的谈判后,谷歌声明将在大陆的服务器全部转移到香港,将GOOGLE.CN域名中转到GOOGLE.COM.HK:
http://www.google.com/press/new-approach-to-china/update.html
当天,#GoogleCN标签又受到广泛关注,网友自发组织给谷歌告别。
同一天,百度老总李彦宏在贴吧发贴《大家说,百度应该进军香港吗?》。
网友送给GOOGLE的雅号“骨哥纯爷们”。
参考可能吧文章:https://www.kenengba.com/post/2812.html
参考译者谷歌文集:http://docs.google.com/leaf?id=0B3C6I8b9sUt9ZDQ2ZGQ2OTUtN2E5My00NzVkLTg4ZTQtNDA4MmEzOGViNmFk&sort=name&layout=list&num=50

3. #netfreedom
2010年1月21日,在谷歌声明9天之后,美国国务卿希拉里发表题为“网络自由”的演讲,爱到中国推友的广泛关注,希拉里还特别邀请@mranti, @isaac等知名网友到现场聆听演讲,并在演讲之后与相关专家互动。
在国内的网友则通过CNN的在线直播观看。
同时,一个著名的翻译团队开始浮出水面。@xiaomi2020组织几个志愿者,对希拉里的演讲在推特上实时翻译。
这是美国国务院提供的官方译文:http://www.america.gov/st/democracyhr-chinese/2010/January/20100121212440eaifas0.9105341.html
这是译者团队整理的现场译文:http://docs.google.com/View?id=dgmrnk3b_13f7qzfxcc
外媒对译者团队的报导:http://www.technologyreview.com/web/25032/

4. #2015
#2015  年,我到和菜头家里做客,看到地板上的网线和正在闪烁的路由器,我大喜过望。“想不到你家里还能…!”此时菜头夫人在一旁说:“这是一毛不拔送的新款灯具,完全模拟有互联网的日子。”   via @wangpei
#2015 年,我到王佩家里做客,看到他正打开twiiter,我大喜过望。“想不到你家里还能…”此时王夫人在一旁说:“这是我们家的局域网,我们互Follow,完全模拟有twitter的日子”。 via @lianyue
#2015 年,我到连岳家做客,看到他正在写专栏,我大喜过望:“想不到你还在写啊……”此时连夫人在一旁说:“3年来他没收到过一封信,这是我写给他的,我当读者,他解答,完全模拟我爱问连岳的日子。”  via @beichen
以上3条推出现于2010年3月26日,之后,以#2015作为标签的黑色推开始汹涌地出现了。
可参考@songshinan的这篇博客:http://ssnly100.blog.163.com/blog/static/1156339201022623230296
据推测,@wangpei写此推,是受到两个因素的影响,一是王小波的小说《2015》(https://docs.google.com/Doc?docid=0AehxuQ1jJs7IZGczYmpuc2RfMjg0ZzZkazZ6Y3M&hl=zh_CN),二是前段时间风行的陈冠中小说《2013盛世中国》(https://docs.google.com/fileview?id=0B-hxuQ1jJs7IMjk3ZTU0NDktNTkzMi00MjkyLWJmYWMtYjZkYTBiNWNhMDVl&hl=zh_CN)。

5. @aoi_sola苍井空之夜
2010年4月11日晚,推友@StarKnight发布消息:“苍井空上推了。目前关注者2000多人,她说:‘目标是1万人’。我觉得这目标很容易达到”。
此推迅速在中文推特圈激起波澜,经过@hecaitou,@lianyun等中转后,立刻成为当天的热门话题,令众多男推友热血沸腾,令众多女推友内牛满面。
在短短数小时后,关注苍井空@aoi_sola的网友已突破1万大关。这一夜被@hecaitou称为苍井空之夜。
这位在中国拥有极大知名度的“童颜巨乳”AV女优被中国推友的热情吃惊了,她这样发推:谢谢。在中国我的球迷。 I use a translator in chinese. Thank you for my fans in China.
可以看出,为了方便与中国推友互动,她专门使用了机器翻译软件将日文推翻译成中文推。
此后,她还专门建了一个面向中国用户的简体中文的博客,如以下两篇文章在推特中文圈受到广泛传播:
http://aoisola.cocolog-nifty.com/si_ch/2010/04/post-2368.html
http://aoisola.cocolog-nifty.com/si_ch/2010/04/post-c9bf.html
另外,可参考东莞时报的报导:http://dgtime.timedg.com/html/2010-04/13/content_427081.htm
@hutianyi的博客:http://hutianyi.net/?p=1799
@songshinan的博客:http://ssnly100.blog.163.com/blog/static/115633920103168461287

补充资料:
知心大叔@xiaolai老师写的《Twitter非官方指南》:http://ow.ly/1AyYG
@rtmeme,中文推特机器人,专门转推热门推。
@lianyue,专栏作家。
@mranti,媒体圈达人。
@fenng,IT圈达人。
@wangshuo,老婆推创始人。
最后,请读者FOLLOW我@tallrain,谢谢!


2010年4月19日

房市随笔(九)


此为补遗之三。
前面几篇只讲经济行为,此篇补充政治分析,简单地写几条,不展开了。
一、房地产开发将土地货币化,开发环节相当于土地这一财富的重新分配过程。
二、政府官员、金融机构、开发商的合作,促进了权贵阶层的形成。
三、城市化和城市开发的推动,促进了资源进一步流向大城市,让城乡的差距进一步扩大,这是民粹主义的基础之一。
四、房价上涨远高于工资上涨,造成了大量房奴的存在,并削弱了中产阶级的力量,这是民粹主义的另一基础。
五、地方官员如果将开发城市作为自己家族获利的机会,那么会尽量维护高位房价。反之,如果地方官员更多从政治方面考量,打压房市可以获得民粹的支持。
六、由于社会日益断裂,权贵阶层和民粹主义者的矛盾将更加明显,在2012年的十八大中将得到体现。


使用GOOGLE BUZZ进行小圈子社交


使用TWITTER和BUZZ都有一段时间了,发现TWITTER比较适合消息的大范围传播,而BUZZ更适合小圈子的深入交流。
下面介绍一下如何使用GOOGLE BUZZ进行小圈子社交。
1. 邀请相关人员注册GMAIL。
2. 将相关人员加为好友,并且在GOOGLE CONTACTS里设置在同一个分组里。
3. 在BUZZ里相互FOLLOW。
4. 发布新讨论:在GMAIL里进入BUZZ标签,在消息框里输入内容,可包括文章链接和图片,选择消息不公开,并只显示给特定的小圈子。
5. 其它人在GMAIL的收件人和BUZZ中可以看到此消息,可以跟贴讨论。
要注意的是,BUZZ默认将所有消息都放到收件箱里,对正常的邮件接收造成干扰,以下说明将BUZZ与邮件分离的方法:
在GMAIL中点击"设置">"过滤器",选择搜索条件:包含字词:"label:buzz",下一步,跳过"收件箱",标记为已读,应用标签:(自己定义一个标签,如"buzz2")。设置完成之后,所有自己发布和关注的BUZZ将自动放到此标签中。


2010年4月15日

ORACLE PL/SQL随记



想到哪写到哪。
1. 典型的SQL结构
SELECT
 t1.f1,
 t1.f,
 t2.f3
FROM
 table1 t1,
 table2 t2
WHERE t1.f = t2.f -- 此为两表关联条件
AND t1.f4 > sysdate - 1 --此为数据筛选条件
ORDER BY
 t1.f1,
 t2.f3
-- 建议关键字大写,其它小写,每个表都定义别名,同时通过换行、空白等格式让代码易读。

2. 分组查询
以下分组查询关键字必须在SQL中包含GROUP BY,WHERE作为非分组字段的筛选条件写在GROUP BY之前,HAVING作为分组字段的筛选条件写在GROUP BY之后:
- COUNT()
- MIN()
- MAX()
- AVG()
- SUM()

3. 关联表的方式
- WHERE关联,这种写法方便理解完整的代码。
- JOIN关联,表之间用ON描述关系。
- INNER JOIN,强约束关联,返回值是两个表的交集。
- LEFT OUTER JOIN,左侧表所有的记录都返回,右侧匹配的记录返回,没有匹配的返回NULL,等同于WHERE t1.f = t2.f(+)。
- RIGHT OUTER JOIN, 右侧表的记录返回,左侧返回匹配的记录,没有匹配返回NULL,等同于WHERE t1.f(+) = t2.f。
- FULL OUTER JOIN,返回值是两个表的合集。

4. 合并查询结果
- 用UNION ALL合并多个查询结果集。

5. 限制查询结果集
- 用DISTINCT过滤重复记录。
- 用ROWNUM < N设定记录数。

6. 日期转换
- TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'),将日期转换成字符串,注意HH24表示24小时格式,MI表示分钟格式。
- TO_DATE('2010-04-14 10:14:23', 'YYYY-MM-DD HH24:MI:SS'),将字符串转换成日期。

7. DUAL
DUAL是系统内置的一个特殊表,此表有N多字段,但是只有一行记录,可以理解成一个特殊函数构造,如:
SELECT SYSDATE FROM DUAL; -- 查询系统日期
SELECT 1/3 FROM DUAL; -- 数值运算
SELECT USER FROM DUAL; -- 查询当前线程登录帐号

8. DECODE
使用此函数可以将字段直接进行处理,用法:DECODE(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)。
如DECODE(LISTSUBASSEMBLY, NULL, OPTIONPARTQUANTITY,  LISTSUBASSEMBLY),表示对于LISTSUBASSEMBLY字段,如果其值为NULL,则取OPTIONPARTQUANTITY值,否则取LISTSUBASSEMBLY值。

9. 代码注释
- 用--单行注释
- 用/* ...*/进行多行注释

10. 在查询SQL中可调用用户创造的函数

11. 在查询SQL中可调用的数据集:
- 表
- 视图
- 临时表
- 物化视图
- 远程数据库对象,用@连接远程数据库。

12. 物化视图
- 建议先创建表,包含所有的查询SQL,然而用物化视图引用此表。
- 建议用数据库JOB定期刷新表,对于重要数据,也可以用TRIGGER更新到物化视图。
- 物化视图是一个物理对象,有存储空间,可创建索引。

13. 表数据的备份
CREATE TABLE T2
AS
SELECT * FROM T1
注意创建的新表只包括结构和数据,但是索引和约束会丢失。

14. 用旧表创建新的空表结构
CREATE TABLE T2
AS
SELECT * FROM T1 WHERE 1 = 0 -- 此条件将返回0条记录

15. 用DBMS调试存储过程
- 在存储过程中包含dbms_output.put_line('P1='||P1); 其中P1是存储过程参数。
- 打开客户端的COMMAND WINDOW,SET SERVEROUTPUT ON;
- EXECUTE IMMEDIATE存储过程,DBMS的消息将显示到窗口中。

16. 最后,围观一坨300多行的单句查询SQL:
/*----------------------------------------------------------------------------------

Modified  by   : Tripti Mandal
Date               : 31st Mar 09
Organisation  : TCS
Purpose         : To get validation information for workorders on a particular the production line no
e.g
Option Part Mismatch( Item assembly configuration checks)
BOM Not Download

Modified  by   : Tripti Mandal
Date               : 23-Apr-09
Organisation  : TCS
Purpose         : To Fix PRDB_G00138326(Unable to download 
                           workorders from multiple lines at the same time)


Modified  by   : Rahul Sapar
Date           : 15-June-09
Organisation   : TCS
Purpose        : SubAssembly changes


Modified By : Amitava ( TCS )
Modified On : 9Jul07
PR : DB_G00142020

Modified By : Rahul Sapar ( TCS )
Modified On : 10Jul09
Purpose : Used Materialized View (COB_MV_DAILY_SCH_BOM) rather then mormal view (COB_V_DAILY_SCH_BOM_28001) to improve performance of SQL - PR : DB_G00142563



Modified By : Amitava ( TCS )
Modified On : 14Jul07
PR :  DB_G00142563

Modified By : Rahul Sapar ( TCS )
Modified On : 26Jul09
PR :  Changed MV from WO specific to WO and Date Specific

Modified By : Rahul Sapar ( TCS )
Modified On : 23Aug09
PR :  To Catch Multiple SubAssemblies

Modified By : Rahul Sapar ( TCS )
Modified On : 23Sept09
PR :  DB_G00146371

Modified By : Rahul Sapar ( TCS )
Modified On : 27Sept09
PR :  DB_G00146418 

Modified By : Rahul Sapar ( TCS )
Modified On : 12Oct09
PR :  DB_G00146418 

Modified By : Taoyun Zhang (BFCEC)
Modified On : 06 Oct 09
Purpose:       Check items discontinued in BOM but effective in IAC, 
Change BOM LEFT OUTER JOIN IAC, INTO FULL OUTER JOIN
DECODE PART FROM BOM OR IAC

--------------------------------------------------------------------------------------*/

SELECT   DSSG.WIPJOBNO AS LISTWORKORDERNO,
           DSSG.SONUMBER AS LISTSHOPORDER,
           TO_DATE (DSSG.BUILDSCHEDULEDATE, 'YYMMDD')
              AS LISTWORKORDERBUILDSCHDATE,
           TO_DATE (DSSG.CUSTOMERREQUESTDATE, 'YYMMDD')
              AS LISTWORKORDERCUSTOMERREQDATE,
           DSSG.CUSTOMERSPECIFICATION AS LISTWORKORDERCUSTOMERSPEC,
           DSSG.CUSTOMERNAME AS LISTWORKORDERCUSTOMERNAME,
           DSSG.STATUS AS LISTWORKORDERSTATUS,
           TO_DATE (DP.DP_BUILD_DATE, 'YYDDD') AS LISTDATAPLATEBUILDSCHDATE,
           OPTIONPARTQUANTITY AS LISTPARTMISSINGINFO,
           DSSG.HOTBUILDINDICATOR AS LISTHOTBUILDINDICATOR
    FROM         (

    SELECT   *
                    FROM   COB_T_DAILY_SO_SCHEDULE
                   WHERE   WIPJOBNO IN (@ListWorkOrderNo)) DSSG
              LEFT OUTER JOIN
                 COB_T_DATAPLATE DP
              ON DP.DP_SO_NO = DSSG.SONUMBER
                 AND TO_DATE (DP.DP_BUILD_DATE, 'YYDDD') =
                       TO_DATE (DSSG.BUILDSCHEDULEDATE, 'YYMMDD') --DSSG.BUILDSCHEDULEDATE
           LEFT OUTER JOIN
              (
           
              SELECT   NVL (WORKORDER, '') AS WORKORDER, -- ADDED BY RAHUL SAPAR
                        DECODE (
                           LISTSUBASSEMBLY,
                           NULL,
                           OPTIONPARTQUANTITY,
                           DECODE (OPTIONPARTQUANTITY,
                                   '0', LISTSUBASSEMBLY,
                                   NULL, LISTSUBASSEMBLY,
                                   OPTIONPARTQUANTITY)
                        )
                           AS OPTIONPARTQUANTITY
                 FROM      


-- A3 begin
(
--SELECT * FROM                 
-- A3 begin
--(
SELECT 

  A2.WORKORDER WORKORDER, --A2.P1, A2.P2, A2.ND,

                                       COB_F_TAB_TO_STRING (
                                          CAST (
                                             COLLECT(DECODE (
                                                        TO_CHAR (A2.P1),
                                                        NULL,
                                                        'BOM Not downloaded',
                                                        TO_CHAR (A2.P1) || '-->'
                                                        || TO_CHAR(A2.P2 || '-->'
                                                                   || TO_CHAR (
                                                                         A2.ND
                                                                      ))
                                                     )) AS COB_T_VARCHAR2_TAB
                                          ),
                                          ','
                                       )
                                          AS OPTIONPARTQUANTITY,
                                          a2.listsubassembly

FROM
-- A2 begin
(
SELECT
  *                                                                           
FROM  
(
SELECT * FROM
-- A begin                 
                 (  
                 SELECT *   
                 --WORKORDER,

                                FROM   

-- X begin                                         
                                (
                                
                                SELECT   BOMIAC.WORKORDER,
                                                 PARENTPART.PRODUCTNO P1,
                                                 CHILDPART.PRODUCTNO P2,
                                                 BOMIAC.quantity ND
                                          FROM   
                                          --(    
                                           
                                 
                                          --(
                                          
                                          
--SELECT * FROM
-- BOMIAC begin
(                                          

SELECT
  DECODE(workorder, null, workorder2, workorder) workorder,
  DECODE(parentproductid, null, parentproductid2, parentproductid) parentproductid,
  DECODE(parentproductno, null, parentproductno2, parentproductno) parentproductno,
  DECODE(productid, null, productid2, productid) productid,
  --DECODE(quantity, null, quantity2, quantity) quantity
  (NVL(quantity,0) - NVL(quantity2,0)) quantity
FROM
(
SELECT   
  --WORKORDER,
  --PARENTPRODUCTID,
  --PARENTPRODUCTNO,
  --PRODUCTID,
  --QUANTITY
  bom.WORKORDER,
  bom.PARENTPRODUCTID,
  bom.PARENTPRODUCTNO,
  bom.PRODUCTID,
  bom.QUANTITY,
  
  ctis.WORKORDER workorder2,
  ctis.PARENTPRODUCTID parentproductid2,
  ctis.PARENTPRODUCTNO parentproductno2,
  ctis.PRODUCTID productid2,
  ctis.QUANTITY quantity2   
  
FROM   
-- BOM begin
(
SELECT   
  DSS.WIPJOBNO AS WORKORDER,
  VBOM.PARENTPRODUCTID AS PARENTPRODUCTID,
  VBOM.PARENTPRODUCTNO -- Added by Rahul Sapar 23 Sept 2009
    AS PARENTPRODUCTNO,
  VBOM.PRODUCTID AS PRODUCTID,
  VBOM.QUANTITY AS QUANTITY
FROM      
  COB_MV_DAILY_SCH_BOM VBOM -- Modified by Rahul Sapar 10 July 2009
RIGHT OUTER JOIN
-- DSS begin
(
SELECT  
  WIPJOBNO,
  SONUMBER,
  STRUCTUREDATE
FROM
  COB_T_DAILY_SO_SCHEDULE
WHERE WIPJOBNO IN (@ListWorkOrderNo)
) DSS --ON DSS.WIPJOBNO = VBOM.WORKORDER
-- DSS end
ON DSS.SONUMBER = VBOM.SONUMBER
AND DSS.STRUCTUREDATE = VBOM.STRUCTUREDATE -- Added By Rahul Sapar 26 July - Made View Shop Order and Date specific rather than WO specific
)
--)
BOM
-- BOM end
-- LEFT OUTER JOIN -- change to full outer join, taoyun, 06 Oct 09
FULL OUTER JOIN
-- CTIS begin
(
SELECT
  WIPJOBNO AS WORKORDER,
  PARENTPRODUCTID,
  PARENTPRODUCTNO,
  PRODUCTID,
  QUANTITY AS QUANTITY -- Tripti 23-Apr-09 , Changed the sum
FROM   
(
SELECT   *
FROM   
  COB_V_DAILY_SCH_CTIS_28002
WHERE   WIPJOBNO IN (@ListWorkOrderNo)
AND ASSMPRODUCTIONLINENO IN (@ListProductionLineNo)
)
GROUP BY   
  WIPJOBNO,
  PARENTPRODUCTID,
  PARENTPRODUCTNO,
  PRODUCTID,
  QUANTITY -- Tripti 23-Apr-09
)
CTIS
-- CTIS end
ON CTIS.WORKORDER = BOM.WORKORDER
AND CTIS.PARENTPRODUCTID = BOM.PARENTPRODUCTID
AND CTIS.PARENTPRODUCTNO = BOM.PARENTPRODUCTNO
AND CTIS.PRODUCTID = BOM.PRODUCTID
)
WHERE (NVL(QUANTITY,0) - NVL(QUANTITY2,0) <> 0)
) BOMIAC
--) BOMIAC end

      

LEFT JOIN PRODUCT PARENTPART
ON PARENTPART.ID = BOMIAC.PARENTPRODUCTID
LEFT JOIN PRODUCT CHILDPART
ON CHILDPART.ID = BOMIAC.PRODUCTID
--)
--)
--WHERE   (NVL (BOM.QUANTITY, 0) - NVL (CTIS.QUANTITY, 0) <> 0) OR (BOM.PARENTPRODUCTID IS NULL))
GROUP BY   
  BOMIAC.WORKORDER,
  PARENTPART.PRODUCTNO,
  CHILDPART.PRODUCTNO,
  BOMIAC.quantity

) X
-- X end                                

--FULL OUTER JOIN
LEFT OUTER JOIN
-- Y begin
(  

SELECT   NVL (LISTSUBASSEMBLY, '') LISTSUBASSEMBLY, WIPJOBNO
               FROM                                            -- Add NVL here
                    (SELECT 

         'SUBASSMFAIL' AS LISTSUBASSEMBLY,DSS.WIPJOBNO as WIPJOBNO
    FROM 
    cob_t_daily_so_schedule dss 
    INNER JOIN product p ON P.PRODUCTNO = DSS.SONUMBER
         INNER JOIN cob_t_shop_order_detail sod ON p.productno = sod.productno
         INNER JOIN product_component pc ON pc.productid = p.id
         INNER JOIN component c
         ON (    c.ID = pc.componentid
             AND c.effectivedate <= TO_DATE (DSS.STRUCTUREDATE , 'YYMMDD')
             AND (   c.discontinuedate > TO_DATE (DSS.STRUCTUREDATE, 'YYMMDD')
                  OR c.discontinuedate IS NULL
                 )
            )            
         INNER JOIN product p1 ON p1.ID = c.productid
         INNER JOIN product_component pc2 ON pc2.productid = p1.ID
         INNER JOIN component c2
         ON (    c2.ID = pc2.componentid
             AND c2.effectivedate <= TO_DATE (DSS.STRUCTUREDATE, 'YYMMDD')
             AND (   c2.discontinuedate > TO_DATE (DSS.STRUCTUREDATE, 'YYMMDD')
                  OR c2.discontinuedate IS NULL
                 )
            )
         INNER JOIN product p2
         ON p2.ID = c2.productid AND p2.productinventorytype = 102
         left outer  JOIN cob_t_engine_build_var ebv
         ON ((    
         (ebv.level1option = p1.productno)              AND 
              (ebv.customer = sod.customer OR ebv.customer = 'ALL')
              AND (   ebv.enginefamily = sod.enginefamily
                   OR ebv.enginefamily = 'ALL'
                  )
              AND (ebv.enginetype = sod.enginetype OR ebv.enginetype = 'ALL'
                  )
              AND (   ebv.configuration = sod.configuration
                   OR ebv.configuration = 'ALL'
                  )
              AND (ebv.application = sod.application
                   OR ebv.application = 'ALL'
                  )
              AND (ebv.active = 1)
             )
            )
         INNER JOIN cob_t_item_assembly ctis
         ON (    ctis.parentproductid = p1.ID
         and CTIS.PRODUCTID = p2.id
             AND ctis.variationcode = NVL (ebv.variationcode, 0)
             AND ctis.effectivedate <= TO_DATE (DSS.STRUCTUREDATE, 'YYMMDD')
             AND (   ctis.discontinuedate >=
                                          TO_DATE (DSS.STRUCTUREDATE, 'YYMMDD')
                  OR ctis.discontinuedate IS NULL
                 )
             AND ctis.active = 1
             AND (   ctis.routingnumber IS NULL
                  OR ctis.routingnumber = 0
                  OR ctis.routingnumber = 1
                 )
             AND (ctis.deviatedpart = 0)      --Compare non deviated part only
             AND (ctis.assmworkstation IS NOT NULL)
             AND ctis.assmproductionlineno = DSS.PRODUCTIONLINENO
            )
   WHERE DSS.WIPJOBNO IN (@ListWorkOrderNo)
GROUP BY DSS.WIPJOBNO, ctis.assmworkstation,p2.PRODUCTNO,p2.productinventorytype
HAVING sum (c2.quantity) > 1
)
--)
) Y
-- Y end
                        ON X.WORKORDER = Y.WIPJOBNO
                        
                  
                        ) A
-- A end
--GROUP BY WORKORDER, P1, P2, ND                        
)
 
) A2 
-- A2 end
GROUP BY WORKORDER,listsubassembly
) A3
-- A3 end     
--)            
                 

)
           ON WORKORDER = DSSG.WIPJOBNO
ORDER BY   DSSG.WIPJOBNO

  

2010年4月14日

简单介绍一下GOOGLE的一些产品



google.com,没有关键字过滤的搜索引擎。

gmail,HTTPS加密的邮箱。

voice,通过美国VPN申请后,可以在全球免费发英文短信。

talk,实时通讯工具,英文版采用HTTPS进行加密传输。

profile,个人资料页。

igoogle,支持很多小工具的个人首页。

google reader,订阅新闻和博客的RSS后,GOOGLE服务器会做备份,不怕事后删除。

blogger,全球最大的免费blog托管平台,可通过google docs和gmail发表博客。

google wave,在线协作工具。

google docs,在线免费文档、表格、演示文稿编辑工具,最新版本已集成wave部分功能,可实现多达20人的实时编辑协作。

google calendar,在线日历管理,可将提醒免费转发到手机上。

picase,照片管理客户端,picasaweb在线相册在中国被封,设置IE代理后才能访问。

youtube,被封的全球最大视频网站。

google desktop,桌面搜索工具,企业版集成了OUTLOOK/NOTES的邮件检索,迅速搜索个人电脑上的文档、邮件、网页访问记录。

chrome,google的浏览器,很快,独立进程,支持书签同步和插件支持。

maps,地图,可添加自己的地图并分享。

earth,三维地球,有很多有趣的图层,如WIKI、国家地理图片、全景照片。


gmail中可以集成的服务:

-buzz: 微博,自动将google reader中的like和评论导入BUZZ,也支持blogger和其它定义在google profile中的站点。

-contact,通讯录,同时也集成在google voice和android操作系统中。

-talk,支持语音、视频聊天。

-网页搜索,由于采用HTTPS加密,不会被重置。

-calendar

-docs


手机版支持的服务:

-搜索

-gmail

-voice(智能手机)

-talk(智能手机)

-igoogle

-reader

-docs

-calendar

-picasaweb

-maps

-buzz(智能手机)



拔火罐记


一个月前,我得了一次感冒,周五下了班就上床睡觉了,一直睡到第二天中午,醒来后就觉得手和肩膀酸得厉害,说不出的难受。
到医院做了抽血检查,只是简单的感冒,医生也无法解释我的奇怪症状,拍了X光一切正常。
后来想起来附近有一家足疗店,提供火罐刮痧等服务,我已是难受异常,于是决定一试。
到了足疗店,说了我的情况,服务员建议我拔火罐。
火罐其实就是一个小瓶子,酒精药棉点上火后将热空气注入,然后火罐就吸在身体上了。
我的背上和肩膀上大约放了20来个火罐,场面应该是很壮观的。
过了十多分钟,服务员除下火罐,拍下照片给我看,说我拔火罐的地方都变黑了,她说我应该是受了风寒了。
而我酸的感觉已减轻许多,至少睡得着觉了,功效确实很神奇。


2010年4月12日

房市随笔(八)

此为补遗之二。
决定房市走向的关键因素:财政政策。
从长期来看,只有将土地出让金改为物业税,并且将大部分收益给地方政府,才能抽离地方政府的托市冲动,事实上地方政府是房市火爆的第一受益人,既提升了财政收入,又提升了GDP增长。
在目前的格局下,由于房市抑制了居民消费,政府只能通过投资来刺激经济。我国的税收政策是为了统筹,但实际的结果是越是富裕的地区,从中央得到的投资越多,所以资源进一步向少数的地区、少数的大城市集中,因此房价的格局畸形。
此外,政府应该放松对金融的管制,让民众的投资更加多元化,更有保障,这样投机资金就会从房市抽离。
不管是投机商还是普通购房者,如果买房不需要占用其大量资金,那么省出来的钱就会进入消费领域和其它投资领域,从而改变经济格局。
从短期来看,收紧财政政策(减少货币供应量的增速和贷款的难度),能够抑制民众对通胀的预期,从而淡化买房保值的心理因素。
此外,人民币升值的预期也会吸引外资进入中国,而目前房市仍是热钱关注的重点。
总结一下,土地出让金和物业税改革将影响房市的长期走向,货币投放和人民币升值将影响房市的短期走向。