<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/feedsky7.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.charliezhu.com" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/charliezhu" type="application/rss+xml"></fs:self_link><lastBuildDate>Mon, 29 Sep 2008 02:29:11 GMT</lastBuildDate><title>Charlie's path to dEAth</title><description>Engineer's log</description><link>http://blog.charliezhu.com</link><language>en</language><pubDate>Mon, 29 Sep 2008 02:29:11 GMT</pubDate><item><title>广受好评的鸟巢照</title><link>http://item.feedsky.com/~feedsky/charliezhu/~1221675/119953312/1223385/1/item.html</link><content:encoded>&lt;table style=&quot;width:auto;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://picasaweb.google.com/lh/photo/A6MKg5_SzN6oiEIzClNTOQ?authkey=9yIzszsW8GE&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://lh4.ggpht.com/zh.charlie/SNEEl_7THGI/AAAAAAAABmM/HUG-CRvotpg/s400/DSC02140.JPG&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;font-family:arial,sans-serif; font-size:11px; text-align:right&quot;&gt;From &lt;a href=&quot;http://picasaweb.google.com/zh.charlie/080917?authkey=9yIzszsW8GE&quot;&gt;080917&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content:encoded><wfw:commentRss>http://blog.charliezhu.com/2008/09/29/%e5%b9%bf%e5%8f%97%e5%a5%bd%e8%af%84%e7%9a%84%e9%b8%9f%e5%b7%a2%e7%85%a7/feed/</wfw:commentRss><description>From 080917</description><category>son</category><pubDate>Mon, 29 Sep 2008 10:29:11 +0800</pubDate><author>charlie</author><comments>http://blog.charliezhu.com/2008/09/29/%e5%b9%bf%e5%8f%97%e5%a5%bd%e8%af%84%e7%9a%84%e9%b8%9f%e5%b7%a2%e7%85%a7/#comments</comments><guid isPermaLink="false">http://blog.charliezhu.com/?p=274</guid><dc:creator>charlie</dc:creator><fs:srclink>http://blog.charliezhu.com/2008/09/29/%e5%b9%bf%e5%8f%97%e5%a5%bd%e8%af%84%e7%9a%84%e9%b8%9f%e5%b7%a2%e7%85%a7/</fs:srclink><fs:srcfeed>http://blog.charliezhu.com/feed</fs:srcfeed><fs:itemid>feedsky/charliezhu/~1221675/119953312/1223385</fs:itemid></item><item><title>漫画转载：网络吉祥物</title><link>http://item.feedsky.com/~feedsky/charliezhu/~1221675/118552609/1223385/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp;from&amp;nbsp;&lt;a href=&quot;http://blogtd.org/2008/09/24/network-mascot/&quot;&gt;http://blogtd.org/2008/09/24/network-mascot/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;因为我跟你们一样，虽然上了网，但还是摆脱不了墙&amp;#8230;&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blogtd.org/&quot;&gt;blog图党&lt;/a&gt; 是个很不错的漫画博客。&lt;/p&gt;
&lt;input type=&quot;image&quot; src=&quot;http://farm4.static.flickr.com/3106/2884439952_ee05c3854b_b.jpg&quot; /&gt;</content:encoded><wfw:commentRss>http://blog.charliezhu.com/2008/09/25/%e6%bc%ab%e7%94%bb%e8%bd%ac%e8%bd%bd%ef%bc%9a%e7%bd%91%e7%bb%9c%e5%90%89%e7%a5%a5%e7%89%a9/feed/</wfw:commentRss><description>&amp;#160;from&amp;#160;http://blogtd.org/2008/09/24/network-mascot/
&amp;#8220;因为我跟你们一样，虽然上了网，但还是摆脱不了墙&amp;#8230;&amp;#34;
blog图党 是个很不错的漫画博客。</description><category>Life</category><pubDate>Thu, 25 Sep 2008 09:34:44 +0800</pubDate><author>charlie</author><comments>http://blog.charliezhu.com/2008/09/25/%e6%bc%ab%e7%94%bb%e8%bd%ac%e8%bd%bd%ef%bc%9a%e7%bd%91%e7%bb%9c%e5%90%89%e7%a5%a5%e7%89%a9/#comments</comments><guid isPermaLink="false">http://blog.charliezhu.com/?p=272</guid><dc:creator>charlie</dc:creator><fs:srclink>http://blog.charliezhu.com/2008/09/25/%e6%bc%ab%e7%94%bb%e8%bd%ac%e8%bd%bd%ef%bc%9a%e7%bd%91%e7%bb%9c%e5%90%89%e7%a5%a5%e7%89%a9/</fs:srclink><fs:srcfeed>http://blog.charliezhu.com/feed</fs:srcfeed><fs:itemid>feedsky/charliezhu/~1221675/118552609/1223385</fs:itemid></item><item><title>Mind Map of ITIL v3</title><link>http://item.feedsky.com/~feedsky/charliezhu/~1221675/118552610/1223385/1/item.html</link><content:encoded>&lt;p&gt;The original content is created by the blog&amp;nbsp;&lt;a href=&quot;http://itservicemngmt.blogspot.com/&quot;&gt;ITIL SERVICE MANAGEMENT&lt;/a&gt;&amp;nbsp;on the post&amp;nbsp;&lt;a href=&quot;http://itservicemngmt.blogspot.com/2007/10/itil-v3-mind-map-download.html&quot;&gt;ITIL V3 Mind Map Download&lt;/a&gt;&amp;nbsp;OCT 7, 2007. The author has moved the MindManager file to google pages and is downloadable following the post&amp;#8217;s comments.&lt;/p&gt;
&lt;p&gt;This MindManger has a filename extension of mmap. I imported it to the free mind map software FreeMind ( there&amp;#8217;s a portable version at&amp;nbsp;&lt;a href=&quot;http://portableapps.com/node/6903&quot;&gt;http://portableapps.com/node/6903&lt;/a&gt;) and FreeMind is so powerful to export the mindmap into a feature rich flash format. You can find it on my site, follow the link and enjoy.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://charliezhu.com/itil/ITILV3.mmap48083.html&quot;&gt;http://charliezhu.com/itil/ITILV3.mmap48083.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://charliezhu.com/itil/ITILV3.mmap48083.html&quot;&gt;&lt;img width=&quot;640&quot; height=&quot;540&quot; border=&quot;2&quot; longdesc=&quot;undefined&quot; alt=&quot;&quot; src=&quot;http://blog.charliezhu.com/wp-content/uploads/itil_demo.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.charliezhu.com/2008/09/22/mind-map-of-itil-v3/feed/</wfw:commentRss><description>The original content is created by the blog&amp;#160;ITIL SERVICE MANAGEMENT&amp;#160;on the post&amp;#160;ITIL V3 Mind Map Download&amp;#160;OCT 7, 2007. The author has moved the MindManager file to google pages and is downloadable following the post&amp;#8217;s comments.
This MindManger has a filename extension of mmap. I imported it to the free mind map software FreeMind ( there&amp;#8217;s a [...]</description><category>Engineer</category><pubDate>Mon, 22 Sep 2008 10:32:39 +0800</pubDate><author>charlie</author><comments>http://blog.charliezhu.com/2008/09/22/mind-map-of-itil-v3/#comments</comments><guid isPermaLink="false">http://blog.charliezhu.com/?p=267</guid><dc:creator>charlie</dc:creator><fs:srclink>http://blog.charliezhu.com/2008/09/22/mind-map-of-itil-v3/</fs:srclink><fs:srcfeed>http://blog.charliezhu.com/feed</fs:srcfeed><fs:itemid>feedsky/charliezhu/~1221675/118552610/1223385</fs:itemid></item><item><title>化学信息软件开发工具时间线</title><link>http://item.feedsky.com/~feedsky/charliezhu/~1221675/118552611/1223385/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.dalkescientific.com/writings/diary/archive/2008/09/20/euroqsar.html&quot;&gt;http://www.dalkescientific.com/writings/diary/archive/2008/09/20/euroqsar.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia; font-size: 16px; &quot;&gt;&lt;a href=&quot;http://dalkescientific.com/writings/toolkit-timeline.png&quot;&gt;&lt;img width=&quot;600&quot; height=&quot;343&quot; alt=&quot;&quot; src=&quot;http://dalkescientific.com/writings/toolkit-timeline.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.charliezhu.com/2008/09/20/%e5%8c%96%e5%ad%a6%e4%bf%a1%e6%81%af%e8%bd%af%e4%bb%b6%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7%e6%97%b6%e9%97%b4%e7%ba%bf/feed/</wfw:commentRss><description>http://www.dalkescientific.com/writings/diary/archive/2008/09/20/euroqsar.html&amp;#160;</description><category>chemoinformatics</category><category>Coding</category><pubDate>Sat, 20 Sep 2008 16:20:36 +0800</pubDate><author>charlie</author><comments>http://blog.charliezhu.com/2008/09/20/%e5%8c%96%e5%ad%a6%e4%bf%a1%e6%81%af%e8%bd%af%e4%bb%b6%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7%e6%97%b6%e9%97%b4%e7%ba%bf/#comments</comments><guid isPermaLink="false">http://blog.charliezhu.com/?p=263</guid><dc:creator>charlie</dc:creator><fs:srclink>http://blog.charliezhu.com/2008/09/20/%e5%8c%96%e5%ad%a6%e4%bf%a1%e6%81%af%e8%bd%af%e4%bb%b6%e5%bc%80%e5%8f%91%e5%b7%a5%e5%85%b7%e6%97%b6%e9%97%b4%e7%ba%bf/</fs:srclink><fs:srcfeed>http://blog.charliezhu.com/feed</fs:srcfeed><fs:itemid>feedsky/charliezhu/~1221675/118552611/1223385</fs:itemid></item><item><title>Cross tabulation, Pivot table and OLAP Cube summarized by tools</title><link>http://item.feedsky.com/~feedsky/charliezhu/~1221675/118552612/1223385/1/item.html</link><content:encoded>&lt;h3 id=&quot;o9e3&quot;&gt;Cross tab&lt;/h3&gt;
&lt;p id=&quot;ux7s&quot; class=&quot;firstHeading&quot;&gt;&lt;a id=&quot;yl6a&quot; title=&quot;Cross tabulation&quot; href=&quot;http://en.wikipedia.org/wiki/Cross_tab&quot;&gt;Cross tabulation&lt;/a&gt; , is defined on WikiPedia as &lt;em&gt;A cross tabulation (often abbreviated as cross tab) displays the joint distribution of two or more variables&lt;/em&gt;.&lt;/p&gt;
&lt;p id=&quot;vlsf&quot; class=&quot;firstHeading&quot;&gt;As below figures, the column values of the first table is transformed to column names in the second one, so the production of&lt;/p&gt;
&lt;div id=&quot;b69q3&quot;&gt;
&lt;p id=&quot;qm7j&quot;&gt;&lt;img id=&quot;xaix&quot; style=&quot;width: 271px; height: 204px;&quot; src=&quot;http://docs.google.com/File?id=ah2dqnkjbwxt_885c5pdqffj_b&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p id=&quot;d_2o&quot;&gt; &lt;/p&gt;
&lt;p id=&quot;zjvp1&quot;&gt; &lt;/p&gt;
&lt;div id=&quot;bw31&quot; style=&quot;text-align: left; padding-top: 1em; padding-bottom: 1em; padding-right: 0px; padding-left: 0px&quot;&gt;&lt;img id=&quot;rhcl&quot; style=&quot;width: 234px; height: 101px;&quot; src=&quot;http://docs.google.com/File?id=ah2dqnkjbwxt_884xhvkpshg_b&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;div id=&quot;jrw9&quot; style=&quot;text-align: left; padding-top: 1em; padding-bottom: 1em; padding-right: 0px; padding-left: 0px&quot;&gt;
&lt;p id=&quot;jrw91&quot; style=&quot;margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em&quot;&gt;&lt;strong&gt;Cross tabs are frequently used because:&lt;/strong&gt;&lt;/p&gt;
&lt;ol id=&quot;jrw93&quot; style=&quot;line-height: 1.5em; margin-top: 0.3em; margin-right: 0px; margin-bottom: 0px; margin-left: 3.2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px&quot;&gt;
&lt;li id=&quot;jrw94&quot; style=&quot;margin-bottom: 0.1em&quot;&gt;They are easy to understand. They appeal to people who do not want to use more sophisticated measures.&lt;/li&gt;
&lt;li id=&quot;jrw95&quot; style=&quot;margin-bottom: 0.1em&quot;&gt;They can be used with any level of data: nominal, ordinal, interval, or ratio - cross tabs treat all data as if it is nominal.&lt;/li&gt;
&lt;li id=&quot;jrw96&quot; style=&quot;margin-bottom: 0.1em&quot;&gt;A table can provide greater insight than single statistics.&lt;/li&gt;
&lt;li id=&quot;jrw97&quot; style=&quot;margin-bottom: 0.1em&quot;&gt;It solves the problem of empty or sparse cells.&lt;/li&gt;
&lt;li id=&quot;jrw98&quot; style=&quot;margin-bottom: 0.1em&quot;&gt;They are simple to conduct.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p id=&quot;d_2o0&quot;&gt; &lt;/p&gt;
&lt;p id=&quot;am3p0&quot;&gt;I think the cross-tab is really what the Relational Database means. That&amp;#8217;s a meaningful &amp;#8220;Relationships&amp;#8221; between entities but not entity and it&amp;#8217;s attributes.&lt;/p&gt;
&lt;h3 id=&quot;qvrr0&quot;&gt;Solution by SQL Server 2005&lt;/h3&gt;
&lt;p&gt;Code:&lt;br id=&quot;dnsq&quot; /&gt;&lt;/p&gt;
&lt;pre id=&quot;e6oi&quot;&gt;SELECT
    SalesPerson,
    [Oranges] AS Oranges,
    [Pickles] AS Pickles
FROM
    ( SELECT SalesPerson, Product, SalesAmount FROM tblSales ) ps
PIVOT
    (
      SUM (SalesAmount)
      FOR Product IN ( [Oranges], [Pickles])
    ) AS pvt&lt;/pre&gt;
&lt;p id=&quot;e6oi0&quot; style=&quot;margin-top: 4px; margin-right: 4px; margin-bottom: 4px; margin-left: 4px&quot;&gt; &lt;/p&gt;
&lt;p id=&quot;eani48&quot; style=&quot;margin-top: 4px; margin-right: 4px; margin-bottom: 4px; margin-left: 4px&quot;&gt;This most weak part of feature is that you must list all pivot column name manually. It&amp;#8217;s pain.&lt;/p&gt;
&lt;p id=&quot;ykcy&quot; style=&quot;margin-top: 4px; margin-right: 4px; margin-bottom: 4px; margin-left: 4px&quot;&gt;&lt;br id=&quot;ykcy0&quot; /&gt;&lt;/p&gt;
&lt;p id=&quot;qvrr1&quot;&gt;&lt;a id=&quot;x5cu&quot; title=&quot;BOL: Using PIVOT and UNPIVOT&quot; href=&quot;http://msdn.microsoft.com/en-us/library/ms177410.aspx&quot;&gt;BOL: Using PIVOT and UNPIVOT&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;SELECT &amp;lt; non-pivoted column&amp;gt;,
    [first pivoted column] AS ,
    [second pivoted column] AS ,
    ...
    [last pivoted column] AS
FROM
    (&amp;lt; SELECT query that produces the data&amp;gt;)
    AS
PIVOT
(
    &amp;lt; aggregation function&amp;gt;()
FOR
[&amp;lt; column that contains the values that will become column headers&amp;gt;]
    IN ( [first pivoted column], [second pivoted column],
    ... [last pivoted column])
) AS
&amp;lt; optional ORDER BY clause&amp;gt;;&lt;/pre&gt;
&lt;h3 id=&quot;wkcg0&quot;&gt;Solution by MS Access&lt;/h3&gt;
&lt;p&gt;Microsoft Access provides a very nice cross table design wizard.&lt;/p&gt;
&lt;div id=&quot;jdns&quot; style=&quot;text-align: left; padding-top: 1em; padding-bottom: 1em; padding-right: 0px; padding-left: 0px; &quot;&gt;&lt;img id=&quot;au5h&quot; style=&quot;width: 534px; height: 401px;&quot; src=&quot;http://docs.google.com/File?id=ah2dqnkjbwxt_889fdmng9c4_b&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p id=&quot;ftz2&quot;&gt;With the wizard, we get the cross-tab script based on JET-SQL.&lt;/p&gt;
&lt;pre id=&quot;n5z00&quot;&gt;TRANSFORM Sum(tblSales.SalesAmount) AS [Sum of SalesAmount]
SELECT tblSales.SalesPerson, Sum(tblSales.SalesAmount) AS [Total SalesAmount]
FROM tblSales
GROUP BY tblSales.SalesPerson
PIVOT tblSales.Product;&lt;/pre&gt;
&lt;p id=&quot;ftz20&quot;&gt; &lt;/p&gt;
&lt;div id=&quot;peyl&quot; style=&quot;text-align: left; padding-top: 1em; padding-bottom: 1em; padding-right: 0px; padding-left: 0px; &quot;&gt;&lt;img id=&quot;gazy&quot; style=&quot;width: 387px; height: 100px;&quot; src=&quot;http://docs.google.com/File?id=ah2dqnkjbwxt_887cmx3nkfq_b&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&lt;p id=&quot;adf6&quot;&gt; &lt;/p&gt;
&lt;p id=&quot;gazy0&quot;&gt;Pivot columns is automaticly generated and the aggregation over all pivot column can be produced. The JET-SQL is so smart and smoothly for small applications those don&amp;#8217;t have to be scaled. You can &lt;a id=&quot;b9vk&quot; title=&quot;use almost all VBA programming utilities in it&quot; href=&quot;http://blog.charliezhu.com/2007/02/03/access-jet-sql%e4%b8%ad%e7%9a%84function/&quot;&gt;use almost all VBA programming utilities in it&lt;/a&gt;. The TRANSFORM/PIVOT feature is powerful and more then 5 years before the SQL Server&amp;#8217;s implementation.&lt;/p&gt;
&lt;p id=&quot;gq.j&quot;&gt;It is based on JET-SQL, so not availible in an ADP project.&lt;/p&gt;
&lt;h3&gt;Solution by SQL Server 2000, CASE and GROUP&lt;/h3&gt;
&lt;p id=&quot;t.b:&quot;&gt;The classic solution of cross-tab in SQL Server 2000 or before is produced by CASE and GROUP.&lt;/p&gt;
&lt;pre id=&quot;adf60&quot;&gt;select
    SalesPerson,
    SUM(CASE Product WHEN 'Pickles' THEN SalesAmount ELSE 0 END ) as [Pickles],
    SUM(CASE Product WHEN 'Oranges' THEN SalesAmount ELSE 0 END ) as [Oranges],
    SUM(SalesAmount)    as [Total Sales]
from
    tblSales
group by
    SalesPerson&lt;/pre&gt;
&lt;p id=&quot;ry0b&quot;&gt;We can find it&amp;#8217;s footprint clearly in the SQL Server 2005&amp;#8217;s pivot feature. And this is a base for other ideas.&lt;/p&gt;
&lt;h3&gt;Solution by SQL Server 2000, Dynamic SQL&lt;/h3&gt;
&lt;p&gt;&lt;a id=&quot;qnsp&quot; title=&quot;Dynamic Cross-Tabs/Pivot Tables By Rob Volk&quot; href=&quot;http://www.sqlteam.com/article/dynamic-cross-tabs-pivot-tables&quot;&gt;Dynamic Cross-Tabs/Pivot Tables By Rob Volk&lt;/a&gt;&lt;/p&gt;
&lt;div id=&quot;ym0e&quot;&gt;
&lt;p id=&quot;ym0e0&quot;&gt;The basic idea is to generate dynamic CASE-and-GROUP based SQL statement and execute.&lt;/p&gt;
&lt;p id=&quot;b83e&quot;&gt;The following comments providing many improvement on this solution. i.e.&lt;/p&gt;
&lt;ul id=&quot;yutg0&quot;&gt;
&lt;li id=&quot;yutg1&quot;&gt;Introduce an WHERE statement as parameter for the @PivotColTable.&lt;/li&gt;
&lt;li id=&quot;nd6y&quot;&gt;Using string to generate pivot columns but global temp table for better supporting of concurency calling.&lt;/li&gt;
&lt;li id=&quot;zu6d&quot;&gt;Using user defined table with an user session column instead of global temp table.&lt;/li&gt;
&lt;li id=&quot;u-va&quot;&gt;To summarize multiple values.&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;d_2o1&quot;&gt;There is also an similar solution I have not dived in, &lt;a id=&quot;mcls&quot; style=&quot;color: #551a8b; &quot; title=&quot;Dynamic Crosstab Queries, by  Itzik Ben-Gan&quot; href=&quot;http://www.sqlmag.com/Articles/Index.cfm?ArticleID=15608&quot;&gt;Dynamic Crosstab Queries, by Itzik Ben-Gan&lt;/a&gt; .&lt;/p&gt;
&lt;/div&gt;
&lt;h3&gt;Solution by Excel&lt;/h3&gt;
&lt;p id=&quot;txu0&quot;&gt;But the most easy and rich tool I have used is MS Excel&amp;#8217;s pivot table.&lt;/p&gt;
&lt;p&gt;&lt;img id=&quot;rko80&quot; style=&quot;width: 647px; height: 154px;&quot; src=&quot;http://docs.google.com/File?id=ah2dqnkjbwxt_888f56cjcc3_b&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;zx98&quot;&gt;Pivot table and OLAP Cube&lt;/h3&gt;
&lt;p&gt;The basic idea of OLAP Cube is a multi-dimession pivot table. The common visualization tool for OLAP is also a pivot table or pivot chart viewer. &lt;/p&gt;
&lt;p&gt;So, draw a figure to show basic concepts in OLAP by example metioned above as the END.&lt;/p&gt;
&lt;p&gt;&lt;img id=&quot;hd2s&quot; style=&quot;width: 660px; height: 276px;&quot; src=&quot;http://docs.google.com/File?id=ah2dqnkjbwxt_890ft3399dj_b&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.charliezhu.com/2008/09/05/cross-tabulation-pivot-table-and-olap-cube-summarized-by-tools/feed/</wfw:commentRss><description>Cross tab
Cross tabulation , is defined on WikiPedia as A cross tabulation (often abbreviated as cross tab) displays the joint distribution of two or more variables.
As below figures, the column values of the first table is transformed to column names in the second one, so the production of


 
 


Cross tabs are frequently used because:

They are easy [...]</description><category>datamining</category><category>MS_ACCESS</category><category>BI</category><category>DBA</category><pubDate>Fri, 05 Sep 2008 22:15:28 +0800</pubDate><author>charlie</author><comments>http://blog.charliezhu.com/2008/09/05/cross-tabulation-pivot-table-and-olap-cube-summarized-by-tools/#comments</comments><guid isPermaLink="false">http://blog.charliezhu.com/2008/09/05/241/</guid><dc:creator>charlie</dc:creator><fs:srclink>http://blog.charliezhu.com/2008/09/05/cross-tabulation-pivot-table-and-olap-cube-summarized-by-tools/</fs:srclink><fs:srcfeed>http://blog.charliezhu.com/feed</fs:srcfeed><fs:itemid>feedsky/charliezhu/~1221675/118552612/1223385</fs:itemid></item><item><title>Implementing Slope-One in T-SQL</title><link>http://item.feedsky.com/~feedsky/charliezhu/~1221675/118552613/1223385/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Slope_One&quot;&gt;Slope-One&lt;/a&gt;, the simplest form of non-trivial item-based collaborative filtering based on ratings. (&lt;a href=&quot;http://www.daniel-lemire.com/fr/abstracts/SDM2005.html&quot;&gt;Original Paper&lt;/a&gt;)&lt;br /&gt;
Referencing to &lt;a href=&quot;http://www.serpentine.com/blog/2006/12/12/collaborative-filtering-made-easy/&quot;&gt;Bryan O&amp;#8217;Sullivan&amp;#8217;s tutorial of implementing Slope One in Python&lt;/a&gt;, I write a the implementation in T-SQL. Believe it useful to many people and projects.&lt;/p&gt;
&lt;h3&gt;Brief process summary&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Define the fact table as user data.&lt;/li&gt;
&lt;li&gt;Calculating intermediate matrix(FreqDiff). The information about users is eliminated and frequency/ score differences data between items is produced.&lt;/li&gt;
&lt;li&gt;Predicting from user input score with the intermediate data.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Data schema&lt;/h3&gt;
&lt;p&gt;The UserData is fact table of business transactions. I use an view to wrap it for switching between testing data and working data.&lt;br /&gt;
The Freq&amp;#038;Diff matrix is square and sparse. Only non-zero values is meaningful and stored. And a half-matrix triangle holds full information about the matrix.&lt;br /&gt;
There created two indices to avoid heavily bookmark-lookup.&lt;/p&gt;
&lt;pre&gt;
create table UserData (                  -- fact table
    userid   varchar(50) not null,
    itemid   varchar(50) not null,
    rating   float not null default 0,
    updtime  datetime default getdate(),
    primary key (userid, itemid)
)
GO

create table FreqDiff (                  -- Freqs and Diffs
    itemid1  varchar(50),
    itemid2  varchar(50),
    freq     float not null default 0,
    diff     float not null default 0,
    updtime  datetime default getdate(),
    primary key (itemid1, itemid2)
)
GO
create index idx_freqdiff_itemid1 on FreqDiff(itemid1, freq, diff, itemid2)
create index idx_freqdiff_itemid2 on FreqDiff(itemid2, freq, diff, itemid1)

/*
 * The matrix FreqDiff is *almost* symmetric,
 * so only half of the data need to be stored.
 * There would be huge of space (50%) saved for large dataset.
 */
alter view vw_freqdiff as
select itemid1 as itemid1, itemid2 as itemid2, freq,     diff from FreqDiff fd
union all
select itemid2 as itemid1, itemid1 as itemid2, freq, -1* diff from FreqDiff fd
GO

/*
 * Wrap for userdata,
 * switch from one model to another easily.
 */
alter view vw_userdata as
select * from userdata
GO
&lt;/pre&gt;
&lt;h3&gt;Testing data&lt;/h3&gt;
&lt;p&gt;Same as Bryan&amp;#8217;s but names changed for easily debugging print.&lt;/p&gt;
&lt;pre&gt;
-- init userdata, Bryan O'Sullivan's sample data is used
insert into UserData values ( 'u1', 'i1',  1, getdate() )
insert into UserData values ( 'u1', 'i2', .5, getdate() )
insert into UserData values ( 'u1', 'i3', .2, getdate() )
insert into UserData values ( 'u2', 'i1',  1, getdate() )
insert into UserData values ( 'u2', 'i3', .5, getdate() )
insert into UserData values ( 'u2', 'i4', .2, getdate() )
insert into UserData values ( 'u3', 'i1', .2, getdate() )
insert into UserData values ( 'u3', 'i2', .4, getdate() )
insert into UserData values ( 'u3', 'i3',  1, getdate() )
insert into UserData values ( 'u3', 'i4', .4, getdate() )
insert into UserData values ( 'u4', 'i2', .9, getdate() )
insert into UserData values ( 'u4', 'i3', .4, getdate() )
insert into UserData values ( 'u4', 'i4', .5, getdate() )
GO
&lt;/pre&gt;
&lt;h3&gt;Processing the intermediate table&lt;/h3&gt;
&lt;pre&gt;
-- update process
delete FreqDiff
insert into FreqDiff
select
    ud1.itemid, ud2.itemid, count(*), (sum(ud1.rating - ud2.rating))/count(*), getdate()
from
    vw_userdata ud1
    join vw_userdata ud2 on
            ud1.userid = ud2.userid
        and ud1.itemid &gt; ud2.itemid
group by ud1.itemid, ud2.itemid
&lt;/pre&gt;
&lt;h3&gt;Predicting&lt;/h3&gt;
&lt;pre&gt;
-- predict process
declare @pref table(itemid varchar(50), rating float)
insert into @pref values('i1', 0.4)

select -- distinct top 10
    itemid1,
    sum(freq)                               as freq,
    sum(freq*(diff + rating))            as pref,
    sum(freq*(diff + rating)) /sum(freq) as rating
from
    vw_freqdiff fd
    join @pref p on fd.itemid2 = p.itemid
where itemid1 not in( select itemid from @pref )
group by itemid1
&lt;/pre&gt;
&lt;p&gt;Further works as intermediate data updating seems easy.&lt;br /&gt;
So, writing here, listening for suggestions.&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.charliezhu.com/2008/07/21/implementing-slope-one-in-t-sql/feed/</wfw:commentRss><description>Slope-One, the simplest form of non-trivial item-based collaborative filtering based on ratings. (Original Paper)
Referencing to Bryan O&amp;#8217;Sullivan&amp;#8217;s tutorial of implementing Slope One in Python, I write a the implementation in T-SQL. Believe it useful to many people and projects.
Brief process summary

Define the fact table as user data.
Calculating intermediate matrix(FreqDiff). The information about users is eliminated [...]</description><category>datamining</category><category>BI</category><pubDate>Mon, 21 Jul 2008 05:35:44 +0800</pubDate><author>charlie</author><comments>http://blog.charliezhu.com/2008/07/21/implementing-slope-one-in-t-sql/#comments</comments><guid isPermaLink="false">http://blog.charliezhu.com/?p=223</guid><dc:creator>charlie</dc:creator><fs:srclink>http://blog.charliezhu.com/2008/07/21/implementing-slope-one-in-t-sql/</fs:srclink><fs:srcfeed>http://blog.charliezhu.com/feed</fs:srcfeed><fs:itemid>feedsky/charliezhu/~1221675/118552613/1223385</fs:itemid></item><item><title>“逆转瓮安”，很有创意，值得一看</title><link>http://item.feedsky.com/~feedsky/charliezhu/~1221675/118552614/1223385/1/item.html</link><content:encoded>&lt;p&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/eWDqhS6k91c&amp;#038;hl=en&amp;#038;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/eWDqhS6k91c&amp;#038;hl=en&amp;#038;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.charliezhu.com/2008/07/16/%e2%80%9c%e9%80%86%e8%bd%ac%e7%93%ae%e5%ae%89%e2%80%9d%ef%bc%8c%e5%be%88%e6%9c%89%e5%88%9b%e6%84%8f%ef%bc%8c%e5%80%bc%e5%be%97%e4%b8%80%e7%9c%8b/feed/</wfw:commentRss><category>Life</category><pubDate>Wed, 16 Jul 2008 17:00:14 +0800</pubDate><author>charlie</author><comments>http://blog.charliezhu.com/2008/07/16/%e2%80%9c%e9%80%86%e8%bd%ac%e7%93%ae%e5%ae%89%e2%80%9d%ef%bc%8c%e5%be%88%e6%9c%89%e5%88%9b%e6%84%8f%ef%bc%8c%e5%80%bc%e5%be%97%e4%b8%80%e7%9c%8b/#comments</comments><guid isPermaLink="false">http://blog.charliezhu.com/?p=225</guid><dc:creator>charlie</dc:creator><fs:srclink>http://blog.charliezhu.com/2008/07/16/%e2%80%9c%e9%80%86%e8%bd%ac%e7%93%ae%e5%ae%89%e2%80%9d%ef%bc%8c%e5%be%88%e6%9c%89%e5%88%9b%e6%84%8f%ef%bc%8c%e5%80%bc%e5%be%97%e4%b8%80%e7%9c%8b/</fs:srclink><fs:srcfeed>http://blog.charliezhu.com/feed</fs:srcfeed><fs:itemid>feedsky/charliezhu/~1221675/118552614/1223385</fs:itemid></item><item><title>Gridview排序和分页的基本机制</title><link>http://item.feedsky.com/~feedsky/charliezhu/~1221675/118552615/1223385/1/item.html</link><content:encoded>&lt;p&gt;排序&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;客户端PostBack。&lt;/li&gt;
&lt;li&gt;在Sorting事件中，取得排序的列及排序方向。&lt;/li&gt;
&lt;li&gt;调用DataSource的排序方法。&lt;/li&gt;
&lt;li&gt;重新DataBind&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;分页&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gridview读取全部的数据源数据。&lt;/li&gt;
&lt;li&gt;在PageIndexChanging事件中，取得要前往的页编号(e.NewPageIndex)&lt;/li&gt;
&lt;li&gt;数据绑定前，设置PageIndex属性，实现分页。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，分页完全是在ASP.NET中进行的，对于大量数据集就会有性能问题。&lt;br /&gt;
解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/tx1c9c2f(VS.71).aspx&quot;&gt;Paging Through a Query Result&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=2880854&amp;#038;SiteID=14&quot;&gt;回覆：GridView分頁/排序 重取資料 怎樣才有效率? &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://blog.csdn.net/lihonggen0/archive/2004/09/14/103511.aspx&quot;&gt;SQL Server 存储过程的分页方案比拼&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.charliezhu.com/2008/07/09/gridview%e6%8e%92%e5%ba%8f%e5%92%8c%e5%88%86%e9%a1%b5%e7%9a%84%e5%9f%ba%e6%9c%ac%e6%9c%ba%e5%88%b6/feed/</wfw:commentRss><description>排序

客户端PostBack。
在Sorting事件中，取得排序的列及排序方向。
调用DataSource的排序方法。
重新DataBind

分页

Gridview读取全部的数据源数据。
在PageIndexChanging事件中，取得要前往的页编号(e.NewPageIndex)
数据绑定前，设置PageIndex属性，实现分页。

也就是说，分页完全是在ASP.NET中进行的，对于大量数据集就会有性能问题。
解：


Paging Through a Query Result

回覆：GridView分頁/排序 重取資料 怎樣才有效率? 

SQL Server 存储过程的分页方案比拼</description><category>Coding</category><pubDate>Wed, 09 Jul 2008 12:08:53 +0800</pubDate><author>charlie</author><comments>http://blog.charliezhu.com/2008/07/09/gridview%e6%8e%92%e5%ba%8f%e5%92%8c%e5%88%86%e9%a1%b5%e7%9a%84%e5%9f%ba%e6%9c%ac%e6%9c%ba%e5%88%b6/#comments</comments><guid isPermaLink="false">http://blog.charliezhu.com/?p=222</guid><dc:creator>charlie</dc:creator><fs:srclink>http://blog.charliezhu.com/2008/07/09/gridview%e6%8e%92%e5%ba%8f%e5%92%8c%e5%88%86%e9%a1%b5%e7%9a%84%e5%9f%ba%e6%9c%ac%e6%9c%ba%e5%88%b6/</fs:srclink><fs:srcfeed>http://blog.charliezhu.com/feed</fs:srcfeed><fs:itemid>feedsky/charliezhu/~1221675/118552615/1223385</fs:itemid></item><item><title>Config VirtualBox with Host Interface Networking (HIF)</title><link>http://item.feedsky.com/~feedsky/charliezhu/~1221675/118552616/1223385/1/item.html</link><content:encoded>&lt;p&gt;Diagram as the note.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://blog.charliezhu.com/wp-content/uploads/2008/07/virtual-box.png'&gt;&lt;img src=&quot;http://blog.charliezhu.com/wp-content/uploads/2008/07/virtual-box.png&quot; alt=&quot;Config VirtualBox with Host Interface Networking (HIF) &quot; title=&quot;virtual-box&quot; width=&quot;500&quot; height=&quot;209&quot; class=&quot;alignnone size-full wp-image-220&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.charliezhu.com/2008/07/05/config-virtualbox-with-host-interface-networking-hif/feed/</wfw:commentRss><description>Diagram as the note.</description><category>Engineer</category><category>Network</category><pubDate>Sat, 05 Jul 2008 20:05:22 +0800</pubDate><author>charlie</author><comments>http://blog.charliezhu.com/2008/07/05/config-virtualbox-with-host-interface-networking-hif/#comments</comments><guid isPermaLink="false">http://blog.charliezhu.com/?p=219</guid><dc:creator>charlie</dc:creator><fs:srclink>http://blog.charliezhu.com/2008/07/05/config-virtualbox-with-host-interface-networking-hif/</fs:srclink><fs:srcfeed>http://blog.charliezhu.com/feed</fs:srcfeed><fs:itemid>feedsky/charliezhu/~1221675/118552616/1223385</fs:itemid></item><item><title>党委、政府PK不过黑恶社会？（转载自人民网）</title><link>http://item.feedsky.com/~feedsky/charliezhu/~1221675/118552617/1223385/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://politics.people.com.cn/GB/8198/125402/index.html&quot;&gt;人民网是老胡最爱上的网&lt;/a&gt;，能登这种文章不容易。早晚要删，留个底子。&lt;br /&gt;
http://leaders.people.com.cn/GB/7468985.html&lt;br /&gt;
党委、政府PK不过黑恶社会？&lt;/p&gt;
&lt;p&gt;2008年07月04日09:28  来源：人民网&lt;br /&gt;
 【字号 大 中 小】 	打印 	留言 	论坛 	网摘 	手机点评 	纠错&lt;br /&gt;
	E-mail推荐:  &lt;/p&gt;
&lt;p&gt;　　6月28日下午，贵州省瓮安县城发生一起严重的围攻政府部门和打砸烧突发事件。一些人因对瓮安县公安局对该县一名女学生死因鉴定结果不满，聚集到县政府和县公安局，并点火焚烧多间办公室和一些车辆。贵州省委书记、省人大常委会主任石宗源给“6.28”事件定性为“是黑恶势力人员直接插手参与的，公然向我党委、政府挑衅的群体性事件。”但他也说“6.28”事件何以由一起单纯的民事案件酿成一起严重的打、砸、抢、烧群体性事件，也是由于诸如当地一些社会矛盾长期积累，而没有得到及时有效的解决而造成的。他也列举了这些深层次的矛盾。&lt;/p&gt;
&lt;p&gt;　　由“6.28”事件我们可以这样的看：每次发生大规模的群体事件，不管是什么原因引起，官方的结论都是千篇一律——都不是政府的错！就石宗源给“6.28”事件下的定性结论来看也是逻辑混乱：黑恶社会凭什么挑衅政府、挑衅党委？老百姓凭什么或为什么跟着黑恶社会走而不跟着政府走？什么是黑恶社会？和党委政府作对的那是什么样的黑恶社会？有直接与政府作对的黑恶社会吗？哪一个黑恶社会不是积极主动的与政府官员勾结，拉政府官员做靠山、做保护伞而能黑、能恶的？！难道堂堂伟光大的执政党的半个多世纪的国民教化，还抵不住区区几个黑恶社会的混混的煽动有力度？唯一可解释的就是那瓮安县党委、政府黑了、恶了！否则的话就是瓮安县的老百姓黑白不分。&lt;/p&gt;
&lt;p&gt;　　当然，黑恶社会组织的本质一定是反党、反政府、反法律的。然而，政府和党委也是由官员的个体组成的，在某种意上说与党委或和政府的一把手勾结起来和与党委、政府勾结起来的区别不是很本质。有地方党委、政府其实就是党委和政府的化身。有了党委和政府的一把手做保护伞，其实与有党委、政府撑腰而护黑、护恶没什么区别。有的时候一个地方的党政一把手黑了恶了与那里的政府黑了、恶了也没什么大区别。&lt;/p&gt;
&lt;p&gt;　　就“6.28”的性质来讲，我不怎么同意石宗源的说法。与其说这个说法有假借黑恶社会公然挑衅政府的大帽子而为政府党委执政的无能遮羞之嫌，还不如说就是老百姓不信任政府的心态已经发展到了很严重的程度了更贴切。话又说回来，难道党委、政府不容挑衅吗？挑衅党委又犯了那条国法？黑恶社会也好，老百姓也罢，这些人又不是中共党员，挑衅党委又何罪之有？难道西方国家的反对党都是黑恶社会不成？&lt;/p&gt;
&lt;p&gt;　　政府或执政者在面对针对政府的大规模群体事件时，不能总是说与政府作对就怎么样的恶劣或十恶不赦。中国由于封建文化的作祟，在执政者的心目中凡是反对官府的或反对政府的都是刁民。&lt;/p&gt;
&lt;p&gt;　　现在——为什么一些黑恶社会分子就能煽动或挑动上万群众包围县政府？过去——老百姓为什么拼死也要保护中共的干部？这——才是值得执政者深思的。&lt;/p&gt;
&lt;p&gt;　　如果执政者只是一味的要严打那些打砸烧的人，或以严厉的打击这些打砸烧的行为而吓唬或恫吓、镇压民众而达到使得民众对政府或官员敬畏有加的目的，也就是采用杀鸡吓猴的惯用做法，我想只能是越来越不灵光。反右、文革、天安门事件以及最近的周老虎这些群体事件又哪一件不是政府对不住老百姓的？哪一个不是时隔很长时间执政者才期期艾艾的认错？社会或老百姓付出的代价又是何等的大？可以说在中国社会古往今来没有哪次群体事件是错在老百姓的。屈死不告官的老话就是真实的写照。&lt;/p&gt;
&lt;p&gt;　　不要动不动就拿与政府作对说事。与政府作对在某种意义上说也是公民社会的正当权利的一种表现形式。处处迎合政府那不是公民社会，那是封建专制社会才会有的顺民规范。当然以打砸烧的方式与政府作对那是任何社会都不允许的违法犯罪行为。但是，官员们的胡作非为，也是老百姓们冲动或不理智的根源。官员平日里又是怎样粗暴的不理性的对待老百姓的？这才是值得执政者在群体事件发生时发生后要深思不已的。否则的话，不论执政者怎样的以手中的话语权或法律来镇压群体事件，只能是扬汤止沸或抱薪救火。&lt;/p&gt;
&lt;p&gt;　　当公民与政府发生矛盾冲突时，首先是要政府深刻反思自己的执政行为，而不是抓住群体事件中的某些违法的东东抹黑整个群体事件与老百姓的正当诉求，为自己的错误开拓，甚至倒打一耙。就像美国炸了中国驻前南大使馆后，学生们围住美国驻中国使领馆，这样的游行又何尝事先报公安机关批准过？公安机关又何尝镇压过？&lt;/p&gt;
&lt;p&gt;　　法律不能搞机会主义、实用主义。政府不能看见与自己一致的群体事件就以胡萝卜相待，看见与自己不一致的群体事件就大棒子伺候。法律不是捏糖人儿。&lt;/p&gt;
&lt;p&gt;　　在中国每一个群体事件的发生都不是容易的事情。中国人对待政府有天生的惧怕心理。如果不到万不得已，不到死活一个价的时候，断不会揭竿而起。正所谓官逼民反、逼上梁山。&lt;/p&gt;
&lt;p&gt;　　至于“6.28”事件是不是逼上梁山，是不是真的逼上梁山，还是伪的逼上梁山，不管是真的、还是伪的逼上梁山，群体老百姓只要采取了或有了上梁山的做法或心态，都是执政者的失败！（东北大虫）&lt;/p&gt;
&lt;p&gt;　　本文仅代表作者个人意见，不代表人民网观点。如需转载，请与作者本人联系。&lt;/p&gt;</content:encoded><wfw:commentRss>http://blog.charliezhu.com/2008/07/05/%e5%85%9a%e5%a7%94%e3%80%81%e6%94%bf%e5%ba%9cpk%e4%b8%8d%e8%bf%87%e9%bb%91%e6%81%b6%e7%a4%be%e4%bc%9a%ef%bc%9f%ef%bc%88%e8%bd%ac%e8%bd%bd%e8%87%aa%e4%ba%ba%e6%b0%91%e7%bd%91%ef%bc%89/feed/</wfw:commentRss><description>人民网是老胡最爱上的网，能登这种文章不容易。早晚要删，留个底子。
http://leaders.people.com.cn/GB/7468985.html
党委、政府PK不过黑恶社会？
2008年07月04日09:28  来源：人民网
 【字号 大 中 小】 	打印 	留言 	论坛 	网摘 	手机点评 	纠错
	E-mail推荐:  
　　6月28日下午，贵州省瓮安县城发生一起严重的围攻政府部门和打砸烧突发事件。一些人因对瓮安县公安局对该县一名女学生死因鉴定结果不满，聚集到县政府和县公安局，并点火焚烧多间办公室和一些车辆。贵州省委书记、省人大常委会主任石宗源给“6.28”事件定性为“是黑恶势力人员直接插手参与的，公然向我党委、政府挑衅的群体性事件。”但他也说“6.28”事件何以由一起单纯的民事案件酿成一起严重的打、砸、抢、烧群体性事件，也是由于诸如当地一些社会矛盾长期积累，而没有得到及时有效的解决而造成的。他也列举了这些深层次的矛盾。
　　由“6.28”事件我们可以这样的看：每次发生大规模的群体事件，不管是什么原因引起，官方的结论都是千篇一律——都不是政府的错！就石宗源给“6.28”事件下的定性结论来看也是逻辑混乱：黑恶社会凭什么挑衅政府、挑衅党委？老百姓凭什么或为什么跟着黑恶社会走而不跟着政府走？什么是黑恶社会？和党委政府作对的那是什么样的黑恶社会？有直接与政府作对的黑恶社会吗？哪一个黑恶社会不是积极主动的与政府官员勾结，拉政府官员做靠山、做保护伞而能黑、能恶的？！难道堂堂伟光大的执政党的半个多世纪的国民教化，还抵不住区区几个黑恶社会的混混的煽动有力度？唯一可解释的就是那瓮安县党委、政府黑了、恶了！否则的话就是瓮安县的老百姓黑白不分。
　　当然，黑恶社会组织的本质一定是反党、反政府、反法律的。然而，政府和党委也是由官员的个体组成的，在某种意上说与党委或和政府的一把手勾结起来和与党委、政府勾结起来的区别不是很本质。有地方党委、政府其实就是党委和政府的化身。有了党委和政府的一把手做保护伞，其实与有党委、政府撑腰而护黑、护恶没什么区别。有的时候一个地方的党政一把手黑了恶了与那里的政府黑了、恶了也没什么大区别。
　　就“6.28”的性质来讲，我不怎么同意石宗源的说法。与其说这个说法有假借黑恶社会公然挑衅政府的大帽子而为政府党委执政的无能遮羞之嫌，还不如说就是老百姓不信任政府的心态已经发展到了很严重的程度了更贴切。话又说回来，难道党委、政府不容挑衅吗？挑衅党委又犯了那条国法？黑恶社会也好，老百姓也罢，这些人又不是中共党员，挑衅党委又何罪之有？难道西方国家的反对党都是黑恶社会不成？
　　政府或执政者在面对针对政府的大规模群体事件时，不能总是说与政府作对就怎么样的恶劣或十恶不赦。中国由于封建文化的作祟，在执政者的心目中凡是反对官府的或反对政府的都是刁民。
　　现在——为什么一些黑恶社会分子就能煽动或挑动上万群众包围县政府？过去——老百姓为什么拼死也要保护中共的干部？这——才是值得执政者深思的。
　　如果执政者只是一味的要严打那些打砸烧的人，或以严厉的打击这些打砸烧的行为而吓唬或恫吓、镇压民众而达到使得民众对政府或官员敬畏有加的目的，也就是采用杀鸡吓猴的惯用做法，我想只能是越来越不灵光。反右、文革、天安门事件以及最近的周老虎这些群体事件又哪一件不是政府对不住老百姓的？哪一个不是时隔很长时间执政者才期期艾艾的认错？社会或老百姓付出的代价又是何等的大？可以说在中国社会古往今来没有哪次群体事件是错在老百姓的。屈死不告官的老话就是真实的写照。
　　不要动不动就拿与政府作对说事。与政府作对在某种意义上说也是公民社会的正当权利的一种表现形式。处处迎合政府那不是公民社会，那是封建专制社会才会有的顺民规范。当然以打砸烧的方式与政府作对那是任何社会都不允许的违法犯罪行为。但是，官员们的胡作非为，也是老百姓们冲动或不理智的根源。官员平日里又是怎样粗暴的不理性的对待老百姓的？这才是值得执政者在群体事件发生时发生后要深思不已的。否则的话，不论执政者怎样的以手中的话语权或法律来镇压群体事件，只能是扬汤止沸或抱薪救火。
　　当公民与政府发生矛盾冲突时，首先是要政府深刻反思自己的执政行为，而不是抓住群体事件中的某些违法的东东抹黑整个群体事件与老百姓的正当诉求，为自己的错误开拓，甚至倒打一耙。就像美国炸了中国驻前南大使馆后，学生们围住美国驻中国使领馆，这样的游行又何尝事先报公安机关批准过？公安机关又何尝镇压过？
　　法律不能搞机会主义、实用主义。政府不能看见与自己一致的群体事件就以胡萝卜相待，看见与自己不一致的群体事件就大棒子伺候。法律不是捏糖人儿。
　　在中国每一个群体事件的发生都不是容易的事情。中国人对待政府有天生的惧怕心理。如果不到万不得已，不到死活一个价的时候，断不会揭竿而起。正所谓官逼民反、逼上梁山。
　　至于“6.28”事件是不是逼上梁山，是不是真的逼上梁山，还是伪的逼上梁山，不管是真的、还是伪的逼上梁山，群体老百姓只要采取了或有了上梁山的做法或心态，都是执政者的失败！（东北大虫）
　　本文仅代表作者个人意见，不代表人民网观点。如需转载，请与作者本人联系。</description><category>Life</category><pubDate>Sat, 05 Jul 2008 09:28:01 +0800</pubDate><author>charlie</author><comments>http://blog.charliezhu.com/2008/07/05/%e5%85%9a%e5%a7%94%e3%80%81%e6%94%bf%e5%ba%9cpk%e4%b8%8d%e8%bf%87%e9%bb%91%e6%81%b6%e7%a4%be%e4%bc%9a%ef%bc%9f%ef%bc%88%e8%bd%ac%e8%bd%bd%e8%87%aa%e4%ba%ba%e6%b0%91%e7%bd%91%ef%bc%89/#comments</comments><guid isPermaLink="false">http://blog.charliezhu.com/?p=218</guid><dc:creator>charlie</dc:creator><fs:srclink>http://blog.charliezhu.com/2008/07/05/%e5%85%9a%e5%a7%94%e3%80%81%e6%94%bf%e5%ba%9cpk%e4%b8%8d%e8%bf%87%e9%bb%91%e6%81%b6%e7%a4%be%e4%bc%9a%ef%bc%9f%ef%bc%88%e8%bd%ac%e8%bd%bd%e8%87%aa%e4%ba%ba%e6%b0%91%e7%bd%91%ef%bc%89/</fs:srclink><fs:srcfeed>http://blog.charliezhu.com/feed</fs:srcfeed><fs:itemid>feedsky/charliezhu/~1221675/118552617/1223385</fs:itemid></item></channel></rss>