<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>家有小虎</title>
	<atom:link href="http://jiahu.net/feed" rel="self" type="application/rss+xml" />
	<link>http://jiahu.net</link>
	<description>我在路上, 你不在身旁. 想你的时候, 温暖依然.</description>
	<lastBuildDate>Sun, 15 Jan 2012 03:12:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Hidden features of Python</title>
		<link>http://jiahu.net/hidden-features-of-python.htm</link>
		<comments>http://jiahu.net/hidden-features-of-python.htm#comments</comments>
		<pubDate>Sun, 15 Jan 2012 02:25:32 +0000</pubDate>
		<dc:creator>@ouc</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[资源]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://jiahu.net/?p=1720</guid>
		<description><![CDATA[What are the lesser-known but useful features of the Python programming language? Quick links to answers: Argument Unpacking Braces Chaining Comparison Operators Decorators Default Argument Gotchas / Dangers of Mutable Default arguments Descriptors Dictionary default .get value Docstring Tests Ellipsis Slicing Syntax &#8230; <a href="http://jiahu.net/hidden-features-of-python.htm">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>What are the lesser-known but useful features of the Python programming language?</p>
<h2>Quick links to answers:</h2>
<ul>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#111176">Argument Unpacking</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#112303">Braces</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#101945">Chaining Comparison Operators</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#101447">Decorators</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#113198">Default Argument Gotchas / Dangers of Mutable Default arguments</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#102062">Descriptors</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#111970">Dictionary default .get value</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#102065">Docstring Tests</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python/112316#112316">Ellipsis Slicing Syntax</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#117116">Enumeration</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#114420">For/else</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#102202">Function as iter() argument</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#101310">Generator expressions</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#101276">import this</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#102037">In Place Value Swapping</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#101840">List stepping</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#112286">__missing__ items</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#101537">Multi-line Regex</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#113164">Named string formatting</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#101549">Nested list/generator comprehensions</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#108297">New types at runtime</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#113833">.pth files</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#1024693">ROT13 Encoding</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#143636">Regex Debugging</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#101739">Sending to Generators</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#168270">Tab Completion in Interactive Interpreter</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#116480">Ternary Expression</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#114157">try/except/else</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#3267903">Unpacking+print() function</a></li>
<li><a href="http://stackoverflow.com/questions/101268/hidden-features-of-python#109182">with statement</a></li>
</ul>
<p>Source: <a href="http://stackoverflow.com/questions/101268/hidden-features-of-python" target="_blank">http://stackoverflow.com/questions/101268/hidden-features-of-python</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jiahu.net/hidden-features-of-python.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A summary of Filip Ekberg&#8217;s blog in 2011</title>
		<link>http://jiahu.net/a-summary-of-filip-ekbergs-blog-in-2011.htm</link>
		<comments>http://jiahu.net/a-summary-of-filip-ekbergs-blog-in-2011.htm#comments</comments>
		<pubDate>Sun, 15 Jan 2012 01:59:24 +0000</pubDate>
		<dc:creator>@ouc</dc:creator>
				<category><![CDATA[工作]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[书摘]]></category>

		<guid isPermaLink="false">http://jiahu.net/?p=1717</guid>
		<description><![CDATA[Let’s get to it, here’s a link summary to all Filip Ekbery&#8216;s posts in 2011 Dynamic programming Adding properties and methods to an ExpandoObject, dynamically! Extend your objects with DynamicObject to get a dynamic experience Invoke a dynamic object as &#8230; <a href="http://jiahu.net/a-summary-of-filip-ekbergs-blog-in-2011.htm">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Let’s get to it, here’s a link summary to all <a href="http://blog.csharptutor.com/2012/01/05/a-summary-of-2011-and-a-look-at-what-is-about-to-come/" target="_blank">Filip Ekbery</a>&#8216;s posts in 2011</p>
<p><strong>Dynamic programming</strong></p>
<ul>
<li><a title="Adding properties and methods to an ExpandoObject, dynamically! " href="http://blog.filipekberg.se/2011/10/02/adding-properties-and-methods-to-an-expandoobject-dynamicly/" target="_blank">Adding properties and methods to an ExpandoObject, dynamically!</a></li>
<li><a title="Extend your objects with DynamicObject to get a dynamic experience" href="http://blog.filipekberg.se/2011/10/02/extend-your-objects-with-dynamicobject-to-get-a-dynamic-experience/" target="_blank">Extend your objects with DynamicObject to get a dynamic experience</a></li>
<li><a title="Invoke a dynamic object as if it were a method" href="http://blog.filipekberg.se/2011/10/03/invoke-a-dynamic-object-as-if-it-where-a-method/" target="_blank">Invoke a dynamic object as if it were a method</a></li>
<li><a title="Using dynamic in the real world with IronPython" href="http://blog.filipekberg.se/2011/10/04/using-dynamic-in-the-real-world-with-ironpython/" target="_blank">Using dynamic in the real world with IronPython</a></li>
<li><a title="Playing with anonymous types in C#" href="http://blog.filipekberg.se/2011/10/06/playing-with-anonymous-types-in-c/" target="_blank">Playing with anonymous types in C#</a></li>
<li><a title="Exploring reflection – Finding a value in any of the objects properties" href="http://blog.filipekberg.se/2011/10/08/exploring-reflection-finding-a-value-in-any-of-the-objects-properties/" target="_blank">Exploring reflection – Finding a value in any of the objects properties</a></li>
<li><a title="What is reflection and why is it useful?" href="http://blog.filipekberg.se/2011/10/09/what-is-reflection-and-why-is-it-useful/" target="_blank">What is reflection and why is it useful?</a></li>
<li><a title="Using reflection to get information about attributes on your class and properties" href="http://blog.filipekberg.se/2011/10/09/using-reflection-to-get-information-about-attributes-on-your-class-and-properties/" target="_blank">Using reflection to get information about attributes on your class and properties</a></li>
<li><a title="Setting values by using reflection" href="http://blog.filipekberg.se/2011/10/10/setting-values-by-using-reflection/" target="_blank">Setting values by using reflection</a></li>
<li><a title="Creating static methods at runtime" href="http://blog.filipekberg.se/2011/10/11/creating-static-methods-at-runtime/" target="_blank">Creating static methods at runtime</a></li>
<li><a title="Getting information about a method and its local variables" href="http://blog.filipekberg.se/2011/10/12/getting-information-about-a-method-and-its-local-variables/" target="_blank">Getting information about a method and its local variables</a></li>
<li><a title="How Dynamic Methods affect resources like memory and disk space" href="http://blog.filipekberg.se/2011/10/13/how-dynamic-methods-affect-resources-like-memory-and-disk-space/" target="_blank">How Dynamic Methods affect resources like memory and disk space&gt;</a></li>
<li><a title="Calling a non-dynamic method with parameters from a dynamic method" href="http://blog.filipekberg.se/2011/10/14/calling-a-non-dynamic-method-with-parameters-from-a-dynamic-method/" target="_blank">Calling a non-dynamic method with parameters from a dynamic method</a></li>
<li><a title="Exploring OpCodes with DynamicMethod and looking at the evaluation stack" href="http://blog.filipekberg.se/2011/10/16/exploring-opcodes-with-dynamicmethod-and-looking-at-the-evaluation-stack/" target="_blank">Exploring OpCodes with DynamicMethod and looking at the evaluation stack</a></li>
<li><a title="Calling a dynamic method from a dynamic method" href="http://blog.filipekberg.se/2011/10/16/calling-a-dynamic-method-from-a-dynamic-method/" target="_blank">Calling a dynamic method from a dynamic method</a></li>
<li><a title="Creating a recursive dynamic method that calculates factorial" href="http://blog.filipekberg.se/2011/10/17/creating-a-recursive-dynamic-method-that-calculates-factorial/" target="_blank">Creating a recursive dynamic method that calculates factorial</a></li>
<li><a title="Creating a Dynamic Method that uses a Switch" href="http://blog.filipekberg.se/2011/10/18/creating-a-dynamic-method-that-uses-a-switch/" target="_blank">Creating a Dynamic Method that uses a Switch</a></li>
</ul>
<p><strong>Software Architecture</strong></p>
<ul>
<li><a title="Over-engineering trivial tasks can be challenging and educating" href="http://blog.filipekberg.se/2011/06/01/over-engineering-trivial-tasks-can-be-challanging-and-educating/" target="_blank">Over-engineering trivial tasks can be challenging and educating</a></li>
<li><a title="Making code more readable with anonymous functions" href="http://blog.filipekberg.se/2011/10/05/making-code-more-readable-with-anonymous-functions/" target="_blank">Making code more readable with anonymous functions</a></li>
<li><a title="Adapting to Inversion of Control and Dependency Injection" href="http://blog.filipekberg.se/2011/12/20/adapting-to-inversion-of-control-and-dependency-injection/" target="_blank">Adapting to Inversion of Control and Dependency Injection</a></li>
</ul>
<p><strong>Compiler as a Service</strong></p>
<ul>
<li><a title="Using Roslyn to parse C# code files" href="http://blog.filipekberg.se/2011/10/20/using-roslyn-to-parse-c-code-files/" target="_blank">Using Roslyn to parse C# code files</a></li>
<li><a title="Getting all methods from a code file with Roslyn" href="http://blog.filipekberg.se/2011/10/21/getting-all-methods-from-a-code-file-with-roslyn/" target="_blank">Getting all methods from a code file with Roslyn</a></li>
<li><a title="Creating a basic code analysis with Roslyn" href="http://blog.filipekberg.se/2011/10/23/creating-a-basic-code-analysis-with-roslyn/" target="_blank">Creating a basic code analysis with Roslyn</a></li>
<li><a title="Exploring how to write a code analyzer with Roslyn" href="http://blog.filipekberg.se/2011/10/23/exploring-how-to-write-a-code-analyzer-with-roslyn/" target="_blank">Exploring how to write a code analyzer with Roslyn</a></li>
<li><a title="Using the C# Interactive Window that comes with Roslyn" href="http://blog.filipekberg.se/2011/11/14/using-the-c-interactive-window-that-comes-with-roslyn/" target="_blank">Using the C# Interactive Window that comes with Roslyn</a></li>
<li><a title="Using the C# Interactive Window that comes with Roslyn – Part 2" href="http://blog.filipekberg.se/2011/11/25/using-the-c-interactive-window-that-comes-with-roslyn-part-2/" target="_blank">Using the C# Interactive Window that comes with Roslyn – Part 2</a></li>
<li><a title="Hosted Execution of smaller code snippets with Roslyn" href="http://blog.filipekberg.se/2011/12/08/hosted-execution-of-smaller-code-snippets-with-roslyn/" target="_blank">Hosted Execution of smaller code snippets with Roslyn</a></li>
</ul>
<p><strong>Screencasts</strong></p>
<ul>
<li><a title="C# 5 Async CTP – Async in Action – Video screencast" href="http://blog.filipekberg.se/2011/06/11/c-5-async-ctp-async-in-action-video-screencast/" target="_blank">C# 5 Async CTP – Async in Action – Video screencast</a></li>
<li><a title="C# 5 Async CTP – Old VS New – Video screencast" href="http://blog.filipekberg.se/2011/06/20/c-5-async-ctp-%E2%80%93-old-vs-new-%E2%80%93-video-screencast/" target="_blank">C# 5 Async CTP – Old VS New – Video screencast</a></li>
<li><a title="C# 4.0 Using the Dynamic Keyword" href="http://blog.filipekberg.se/2011/07/21/c-4-0-using-the-dynamic-keyword/" target="_blank">C# 4.0 Using the Dynamic Keyword</a></li>
<li><a title="Generic Programming in C#" href="http://blog.filipekberg.se/2011/07/25/generic-programming-in-c/" target="_blank">Generic Programming in C#</a></li>
</ul>
<p><strong>Other</strong></p>
<ul>
<li><a title="WPF vs WinForms – Which is easier to learn?" href="http://blog.filipekberg.se/2011/07/10/wpf-vs-winforms-which-is-easier-to-learn/" target="_blank">WPF vs WinForms – Which is easier to learn?</a></li>
<li><a title="Visual Studio 11 and Visual Studio 2010 Side by Side" href="http://blog.filipekberg.se/2011/09/19/visual-studio-11-and-visual-studio-2010-side-by-side/" target="_blank">Visual Studio 11 and Visual Studio 2010 Side by Side</a></li>
<li><a title="When can knowing about IL and the internals be useful?" href="http://blog.filipekberg.se/2011/10/19/when-can-knowing-about-il-and-the-internals-be-useful/" target="_blank">When can knowing about IL and the internals be useful?</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jiahu.net/a-summary-of-filip-ekbergs-blog-in-2011.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>国际民航组织（ICAO）使用的“标准解释法”</title>
		<link>http://jiahu.net/%e5%9b%bd%e9%99%85%e6%b0%91%e8%88%aa%e7%bb%84%e7%bb%87icao%e4%bd%bf%e7%94%a8%e7%9a%84%e6%a0%87%e5%87%86%e8%a7%a3%e9%87%8a%e6%b3%95.htm</link>
		<comments>http://jiahu.net/%e5%9b%bd%e9%99%85%e6%b0%91%e8%88%aa%e7%bb%84%e7%bb%87icao%e4%bd%bf%e7%94%a8%e7%9a%84%e6%a0%87%e5%87%86%e8%a7%a3%e9%87%8a%e6%b3%95.htm#comments</comments>
		<pubDate>Mon, 02 Jan 2012 07:54:00 +0000</pubDate>
		<dc:creator>@ouc</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[资源]]></category>
		<category><![CDATA[标准]]></category>

		<guid isPermaLink="false">http://jiahu.net/?p=1714</guid>
		<description><![CDATA[字母&#09;&#09;标准解释法&#09;&#09;其他解释法 A&#09;&#09;ALFA&#09;&#09;AMERICA B&#09;&#09;BRAVO&#09;&#09;BOSTON C&#09;&#09;CHARLIE&#09;&#09;CANADA D&#09;&#09;DELTA&#09;&#09;DENMARK E&#09;&#09;ECHO&#09;&#09;ENGLAND F&#09;&#09;FOXTROT&#09;&#09;FLORIDA G&#09;&#09;GOLF&#09;&#09;GERMANY H&#09;&#09;HOTEL&#09;&#09;TONOLULU I&#09;&#09;INDIA&#09;&#09;ITALY J&#09;&#09;JULIET&#09;&#09;JAPAN K&#09;&#09;KILO&#09;&#09;KILOWATT L&#09;&#09;LIMA&#09;&#09;LONDON M&#09;&#09;MIKE&#09;&#09;MEXICO N&#09;&#09;NOVEMBER&#09;&#09;NORWAY O&#09;&#09;OSCAR&#09;&#09;ONTARIO P&#09;&#09;PAPA&#09;&#09;PETER Q&#09;&#09;QUEEC&#09;&#09;QUEEN R&#09;&#09;ROMEO&#09;&#09;RADIO S&#09;&#09;SIERRA&#09;&#09;SUGAR T&#09;&#09;TANGO&#09;&#09;TOKYO U&#09;&#09;UNIFORM&#09;&#09;UNITED V&#09;&#09;VICTOR&#09;&#09;VIRGINIA W&#09;&#09;WHISKEY&#09;&#09;WASHINGTON X&#09;&#09;X-RAY&#09;&#09;- Y&#09;&#09;YANKEE&#09;&#09;YOKOHAMA Z&#09;&#09;ZULO&#09;&#09;ZANZIBAR]]></description>
			<content:encoded><![CDATA[<p>字母&#09;&#09;标准解释法&#09;&#09;其他解释法<br />
A&#09;&#09;ALFA&#09;&#09;AMERICA<br />
B&#09;&#09;BRAVO&#09;&#09;BOSTON<br />
C&#09;&#09;CHARLIE&#09;&#09;CANADA<br />
D&#09;&#09;DELTA&#09;&#09;DENMARK<br />
E&#09;&#09;ECHO&#09;&#09;ENGLAND<br />
F&#09;&#09;FOXTROT&#09;&#09;FLORIDA<br />
G&#09;&#09;GOLF&#09;&#09;GERMANY<br />
H&#09;&#09;HOTEL&#09;&#09;TONOLULU<br />
I&#09;&#09;INDIA&#09;&#09;ITALY<br />
J&#09;&#09;JULIET&#09;&#09;JAPAN<br />
K&#09;&#09;KILO&#09;&#09;KILOWATT<br />
L&#09;&#09;LIMA&#09;&#09;LONDON<br />
M&#09;&#09;MIKE&#09;&#09;MEXICO<br />
N&#09;&#09;NOVEMBER&#09;&#09;NORWAY<br />
O&#09;&#09;OSCAR&#09;&#09;ONTARIO<br />
P&#09;&#09;PAPA&#09;&#09;PETER<br />
Q&#09;&#09;QUEEC&#09;&#09;QUEEN<br />
R&#09;&#09;ROMEO&#09;&#09;RADIO<br />
S&#09;&#09;SIERRA&#09;&#09;SUGAR<br />
T&#09;&#09;TANGO&#09;&#09;TOKYO<br />
U&#09;&#09;UNIFORM&#09;&#09;UNITED<br />
V&#09;&#09;VICTOR&#09;&#09;VIRGINIA<br />
W&#09;&#09;WHISKEY&#09;&#09;WASHINGTON<br />
X&#09;&#09;X-RAY&#09;&#09;-<br />
Y&#09;&#09;YANKEE&#09;&#09;YOKOHAMA<br />
Z&#09;&#09;ZULO&#09;&#09;ZANZIBAR</p>
]]></content:encoded>
			<wfw:commentRss>http://jiahu.net/%e5%9b%bd%e9%99%85%e6%b0%91%e8%88%aa%e7%bb%84%e7%bb%87icao%e4%bd%bf%e7%94%a8%e7%9a%84%e6%a0%87%e5%87%86%e8%a7%a3%e9%87%8a%e6%b3%95.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Useful DQL Queries</title>
		<link>http://jiahu.net/useful-dql-queries.htm</link>
		<comments>http://jiahu.net/useful-dql-queries.htm#comments</comments>
		<pubDate>Fri, 16 Dec 2011 10:02:11 +0000</pubDate>
		<dc:creator>@ouc</dc:creator>
				<category><![CDATA[工作]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[DQL]]></category>

		<guid isPermaLink="false">http://jiahu.net/?p=1711</guid>
		<description><![CDATA[1. DQL to create user create “dm_user” object set client_capability=2, set default_folder=’’, set home_docbase=’’, set mailto:user_address=’a@abc.com’, set user_os_domain=’’, set user_name=’’, set user_os_name=’’, set user_privileges=0; 2. DQL to execute stored procedure (works for all supported DBMSes) execute exec_sql with query=’execute my_sp_test &#8230; <a href="http://jiahu.net/useful-dql-queries.htm">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>1. DQL to create user<br />
create “dm_user” object<br />
set client_capability=2,<br />
set default_folder=’’,<br />
set home_docbase=’’,<br />
set mailto:user_address=’a@abc.com’,<br />
set user_os_domain=’’,<br />
set user_name=’’,<br />
set user_os_name=’’,<br />
set user_privileges=0;<br />
2. DQL to execute stored procedure (works for all supported DBMSes)<br />
execute exec_sql with query=’execute my_sp_test ”123”,”prasad” ‘;<br />
3. Running DQL in batch mode<br />
a. Create a dql file<br />
b. Run the following from command prompt<br />
$idql docbasename -Uusername -Ppassword -Rtest.dql<br />
Example command<br />
C:\Documentum\product\5.3\bin>idql32 docbasename-Uusername -Ppassword -RC:<br />
\test.dql<br />
test.dql would contain something like this<br />
go<br />
go<br />
4. DQL to Get all Files under a Particular Cabinet<br />
select r_object_id, object_name from dm_document(all) where folder(’/Cabinet name’, descend);<br />
The above DQL gives all versions. To get only current versions<br />
select * from dm_document where folder (’/Cabinet name’, descend)<br />
5. DQL to get total number of documents and folders under a cabinet<br />
SELECT count(*) as cnt, ‘Docs’ as category FROM dm_document(all)<br />
WHERE FOLDER (’/Cabinet Name’,DESCEND)<br />
UNION<br />
SELECT count(*) as cnt, ‘Folders’ as category FROM dm_folder<br />
WHERE FOLDER (’/Cabinet Name’,DESCEND)<br />
6. DQL to find whether a document is a part of virtual document<br />
SELECT object_name,r_object_id FROM dm_sysobject<br />
WHERE r_object_id IN<br />
(SELECT parent_id FROM dmr_containment<br />
WHERE component_id = (SELECT i_chronicle_id FROM dm_sysobject WHERE r_object_id = ‘’))<br />
7. Repeating attributes<br />
Repeated attribute queries are always a fun. I am going to present here more repeated attribute queries. But for starters, recognize the importance of ANY keyword<br />
select r_folder_path from dm_folder where object_name<br />
=’myFolder’ and any r_folder_path =’/Cabinet Name/test’;<br />
8. DQL to find object type of a document<br />
select r_object_type from dm_document where object_name=’ObjectName’;<br />
9. DQL for index<br />
Following query creates index<br />
EXECUTE make_index WITH type_name=’dmi_workitem’,attribute=’r_workflow_id’<br />
Using the query below, one can find out whether index has been succesfully created or alternatively whether the index exists or not<br />
Select r_object_id,index_type,attribute,attr_count,data_space from dmi_index where index_type in (select r_object_id from dm_type where name=’dmi_workitem’);<br />
10. DQL to see sessions<br />
execute show_sessions<br />
11. Enable FTDQL<br />
SELECT<br />
r_object_id,<br />
score,<br />
text,<br />
object_name,<br />
r_object_type,<br />
r_lock_owner,<br />
owner_name,<br />
r_link_cnt,<br />
r_is_virtual_doc,<br />
r_content_size,<br />
a_content_type,<br />
i_is_reference,<br />
r_assembled_from_id,<br />
r_has_frzn_assembly,<br />
a_compound_architecture,<br />
i_is_replica,<br />
r_policy_id,acl_name,<br />
r_creation_date,<br />
r_modify_date,<br />
subject<br />
FROM<br />
custom_document<br />
WHERE<br />
(custom_attr1 = ’search1′ AND<br />
(custom_attr2 = ’search2′ AND<br />
)) AND<br />
(a_is_hidden = FALSE)<br />
ENABLE<br />
(FTDQL)<br />
12. DQL to get current date, time<br />
select DATE(now) as systime from dm_server_config;<br />
13. DQL to list all available templates in Webpublisher<br />
select * from my_document where folder(’/WebPublisher Configuration/Content Templates/myTemplates’,descend) and any r_version_label =’Approved’;<br />
14. DQL to list objects having duplicate names<br />
SELECT object_name, count(*) FROM dm_document<br />
GROUP BY object_name<br />
HAVING count(*) > 1<br />
ORDER BY object_name<br />
15. Clear INBOX<br />
delete dmi_queue_item objects where delete_flag=0<br />
16. DQL to retrieve all required attributes of a particular type<br />
SELECT attr_name FROM dmi_dd_attr_info WHERE type_name=’dm_document’ AND is_required 0<br />
17. DQL to list workflow attachments<br />
select r_component_id, r_component_name from dmi_wf_attachment where r_workflow_id = ‘’<br />
18. If your statistics are not up to date, database may choose a very inefficient execution plan. Be sure toupdate statistics often. It is recommended that you use the dm_UpdateStatistics job as it will calculateextended statistics on particular tables and columns which provide additional performance benefits. If the DBA uses their own scripts to calculate the statistics, then these enhancements will not be available.<br />
19.Use the script “dctm_indexes_by_table.sql” to generate a list of all indexes on Documentum tables, ordered by table name. (Available from http://developer.documentum.com.)<br />
Use the script “dctm_indexes_by_index.sql” to generate a list of all indexes on Documentum tables,<br />
ordered by index name. (Available from http://developer.documentum.com.)<br />
20.It is strongly recommended that all indexes on Documentum base tables be created from within Documentum and not at the database level.<br />
There are two reasons for this:<br />
The internal conversion process from DQL to SQL will check for the presence of a dmi_index object for repeating valued attributes and will generate different SQL according to what it finds.<br />
If indexes are created directly through SQL*Plus, then Documentum will not know anything about them and will assume it is unindexed. This may result in a less efficient SQL query.<br />
Secondly, if the indexes are created from within Documentum, and they are inadvertently dropped, the dm_DBWarning job will automatically recreate them at next execution.<br />
The syntax for creating new indexes is as follows:<br />
In DQL:<br />
EXECUTE make_index WITH type_name=object_type,<br />
attribute=attribute_name{,attribute=attribute_name,…)<br />
or<br />
Using APIs:<br />
dmAPIGet(”apply,session,NULL,MAKE_INDEX,TYPE_NAME,S,object_type,ATTRIBUTE,S<br />
,attribute_name(,ATTRIBUTE,S,attribute_name,…}<br />
These indexes will be created in the tablespace identified by the index_store server.ini parameter.<br />
Be sure to create the index on the appropriate type table.<br />
For example, although ‘keywords’ is an attribute of the dm_document type, it is actually inherited from ‘keywords’ from the dm_sysobject type.<br />
Drop the Index if Necessary<br />
If there is no performance improvement, OR the optimizer is not using the new index, drop it using:<br />
EXECUTE drop_index [[FOR] dmi_index_id] [WITH name = index_name]<br />
or<br />
dmAPIGet(”apply,session,dmi_index_id,DROP_INDEX [,NAME,S,index_name]“)<br />
21. Using the iapi utility and the trace API you can generate log information that contains the SQL resulting from a DQL query.<br />
This is useful when it is a DQL query that is performing poorly and you wish to test using a nonsuperuser account. Non-query type APIs are not traced.<br />
Here is an example of tracing a simple DQL query.<br />
trace,c,10,,DM_QUERY.<br />
More on TKPROF here</p>
<p>http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96533/sqltrace.htm</p>
<p>22. DQL Hints<br />
SELECT object_name FROM dm_document ENABLE (RETURN_TOP 10)<br />
For DB2, performance can be improved using<br />
SELECT object_name FROM dm_document ENABLE (RETURN_TOP 10, OPTIMIZE_TOP 10)<br />
The FETCH_ALL_RESULTS N hint fetches all the results from the database<br />
immediately and closes the cursor. The hint does not affect the execution plan,<br />
but may free up database resources more quickly.<br />
To fetch all the results, set N to 0.<br />
On SQL Server, it is recommended that you use SQL_DEF_RESULT_SETS<br />
instead of the FETCH_ALL_RESULTS hint. SQL_DEF_RESULTS_SETS<br />
provides the same benefits and is the recommended way to access SQL Server<br />
databases.<br />
Passthrough hints are hints that are passed to the RDBMS server. They are not<br />
handled by Content Server.<br />
To include a passthrough hint, you must identify the database for which the<br />
hint is valid. To identify the target database, keywords precede the hints. The<br />
valid keywords are: ORACLE, SQL_SERVER, SYBASE, and DB2. For<br />
example, the following statement includes passthrough hints for SQL Server:<br />
SELECT “r_object_id” FROM “dm_document”<br />
WHERE “object_name” =’test’<br />
ENABLE SQL_SERVER(’ROBUST PLAN’,’FAST 4’,’ROBUST PLAN’)<br />
For portability, you can include passthrough hints for multiple databases in<br />
one statement. The entire list of hints must be enclosed in parentheses. The<br />
syntax is:<br />
(database_hint_list {,database_hint_list})<br />
where database_hint_list is:<br />
db_keyword(’hint’{,’hint})<br />
db_keyword is one of the valid keywords identifying a database. hint is any hint<br />
valid on the specified database.<br />
For example:<br />
SELECT object_name FROM dm_document doc dm_user u<br />
WHERE doc.r_creator_name = u.user_name ENABLE<br />
(ORACLE(’RULE’,’PARALLEL’), SYBASE(’AT ISOLATION READ<br />
UNCOMMITTED’),SQL_SERVER(’LOOP JOIN’,’FAST 1’)<br />
Use FETCH_ALL_RESULTS if you want to reduce the resources used by the<br />
database server by quickly closing cursors. On SQL Server, try<br />
FETCH_ALL_RESULTS if using SQL_DEF_RESULT_SETS did not improve<br />
query performance.<br />
23. If the table is registered, check with the owner of the registered table, or a Documentum superuser, about giving you access to the table.<br />
You will need at least a BROWSE permit on the registered table object in order to access it. If the table has not yet been registered, check with the table’s owner about registering it. Note that you must have READ access to the dm_registered object for this table in order to access it in any way (SELECT, INSERT, UPDATE, DELETE).<br />
Note that if you specified the special dm_dbo document base owner, the first parameter will hold the actual name of the document base owner.<br />
24. DQL to list docbrokers<br />
execute list_targets<br />
25. DQL to list worrkflow information<br />
select task_name, task_state, actual_start_date, dequeued_date from dmi_queue_item where router_id = ‘workflowId’<br />
26. Query to find active workflows, supervisors of the workflows<br />
select r_object_id, object_name, title, owner_name,r_object_type, r_creation_date, r_modify_date, a_content_type from dm_document where r_object_id in(select r_component_id from dmi_package where r_workflow_id in (select r_object_id from dm_workflow where r_runtime_state = 1))<br />
27. Though this is not DQL, I thought of mentioning here as it most widely used DFC operation<br />
sysObject.queue (”dm_autorender_win31?, _<br />
“rendition”, _<br />
0, _<br />
False, _<br />
dueDate, _<br />
“rendition_req_ps_pdf”)<br />
28. To find ACLs related to dm_sysobject:<br />
select r_object_id as obj_id, object_name from<br />
dm_sysobject (all)<br />
where acl_name =” and<br />
acl_domain = ”<br />
To find ACLs as the default ACL of a user:<br />
select user_name from dm_user where acl_name=”<br />
To find ACLs associated with a type:<br />
select r_object_id, r_type_name from dmi_type_info where acl_domain=” and acl_name=”<br />
When these queries do not return any related objects and you still cannot delete the ACL, use tracing:<br />
In the Message Tester or IAPI, execute the command: apply,c,NULL,SQL_TRACE,LEVEL,I,1<br />
Then, try to delete the ACL that is causing problem.<br />
Turn off tracing by executing:<br />
apply,c,NULL,SQL_TRACE,LEVEL,I,0<br />
Examine the session log for the trace output, located in $DOCUMENTUM/dba/log//<br />
Excerpt of the session log:<br />
[DM_ACL_E_DESTROY_IN_USE]error: “Failed to destroy the ACL ‘Documentum Users’ in domain ‘dbabep’ because it is in use.”<br />
[DM_SESSION_I_SESSION_QUIT]info: “Session 01000dcb80010ccf quit.”<br />
Run the following query from Oracle SQL:<br />
select r_object_id from dm_sysobject_s where acl_domain =’dbabep’ and acl_name =’Documentum Users’ union select r_object_id from dm_user_s where acl_domain = ‘dbabep’ and acl_name =’Documentum Users’ union select r_object_id from dmi_type_info_s where acl_domain =’dbabep’ and acl_name =’Documentum Users’<br />
It will return the r_object_id value = 09000dcb800362c4.<br />
Run the following query from IDQL:<br />
select object_name<br />
from dm_sysobject<br />
where r_object_id=’09000dcb800362c4′<br />
If the above query returned nothing, then this object cannot be accessed by any Documentum WorkSpace method, only via SQL in the underlying Oracle database. The following entries must be deleted at the RDBMS level: dm_sysobject_s and dm_sysobject_r tables; there are no entries in the dmi_object table<br />
29. List of object types and corresponding identifiers. Helpful when reading the code.<br />
00 dmi_audittrail_attrs<br />
03 dm_type<br />
05 dmr_containment<br />
06 dmr_content<br />
08 dm_application<br />
08 dm_job<br />
08 dm_procedure<br />
08 dm_query<br />
08 dm_script<br />
08 dm_smart_list<br />
09 dm_document<br />
0b dm_folder<br />
0c dm_cabinet<br />
0d dm_assembly<br />
10 dm_method<br />
11 dm_user<br />
12 dm_group<br />
19 dm_registered<br />
1f dmi_index<br />
26 dmi_registry<br />
27 dm_format<br />
28 dm_filestore<br />
28 dm_store<br />
2c dm_distributedstore<br />
2e dmi_type_info<br />
2f dm_dump_record<br />
30 dmi_dump_object_record<br />
31 dm_load_record<br />
32 dmi_load_object_record<br />
37 dm_relation<br />
3a dm_location<br />
3b dm_fulltext_index<br />
3c dm_docbase_config<br />
3d dm_server_config<br />
40 dm_blobstore<br />
41 dm_note<br />
45 dm_acl<br />
46 dm_policy<br />
49 dmi_package<br />
4a dmi_workitem<br />
4c dm_activity<br />
4d dm_workflow<br />
53 dm_literal_expr<br />
5e dm_federation<br />
5f dm_audittrail_acl<br />
5f dm_audittrail_group<br />
5f dm_audittrail<br />
66 dm_alias_set<br />
6a dmi_dd_attr_info<br />
0b dm_taxonomy<br />
0b dm_xml_application<br />
6b dm_display_config<br />
20 dmi_sequence<br />
30. Job scheduler Query<br />
SELECT ALL r_object_id, a_next_invocation<br />
FROM dm_job<br />
WHERE (<br />
(run_now = 1)<br />
OR ( (is_inactive = 0)<br />
AND ( ( a_next_invocation < = DATE(’now’)<br />
AND a_next_invocation IS NOT NULLDATE )<br />
OR ( a_next_continuation DATE(’now’))<br />
OR (expiration_date IS NULLDATE))<br />
AND ( (max_iterations = 0)<br />
OR (a_iterations Template Properties<br />
3) Under Template Audit Trail Setting, select option ‘Always On’ – Audit trail data for each instance will be available and saved at workflow completions.<br />
31. In a workflow, a performer can enter comments while he/she is performing the task. And those comments are carried to the next performer in this workflow. When using WebPublisher workflow report to review the workflow instances, and in workflow history, you are only able to get the truncated comments back from WP’s interface. Especially for those already aborted workflow instances, there is no way that you can get the complete comments back from WP’s GUI. In some cases, those comments are very important to our customers and they need to find a way to get those comments back.<br />
Here is the steps to get those comments back:<br />
==<br />
1) Identify the workflow from the dm_workflow table, get the r_object_id of the workflow:<br />
select r_object_id, object_name from dm_workflow where object_name = ‘your work flow name’<br />
2) Identify the notes that are carried by this workflow:<br />
select r_note_id from dmi_package where r_workflow_id = ‘ the object id of the workflow’<br />
3) Get the content id of each of those note ids returned:<br />
select r_object_id from dmr_content where any parent_id = ‘the note id’<br />
4) Go to DA, Administration->Job Management->Administration, use the “GET_PATH” method to find out the path of the files which stores the comments.<br />
32. Query to get all documents expired in previous 1 month<br />
SELECT s.r_object_id, s.object_name, DATETOSTRING(”r.a_expiration_date”,’mm/dd/yyyy’) as creation_date<br />
FROM dm_sysobject_s s, dm_sysobject_r r<br />
WHERE s.r_object_id = r.r_object_id<br />
AND s.r_object_type = ‘dm_document’<br />
AND DATEDIFF(month,”r.a_expiration_date”,DATE(NOW)) >= 0<br />
AND DATEDIFF(month,”r.a_expiration_date”,DATE(NOW)) < = 1<br />
AND r.r_version_label = ‘Expired’<br />
ORDER BY 3<br />
33. DQL to find all the folders in a Cabinet, where the folders are contentless<br />
SELECT f1.object_name, f1.r_object_id, f1.r_folder_path<br />
FROM dm_folder f1<br />
WHERE FOLDER(’/Cabinetname’,descend)<br />
AND NOT EXISTS (SELECT f2.object_name FROM dm_sysobject f2 WHERE ANY f2.i_folder_id = f1.r_object_id)<br />
ORDER BY object_name<br />
34. Find Super Groups and sub groups<br />
select distinct r_object_id, group_name as super_groups<br />
from dm_group_sp where group_name not in (select gs.group_name<br />
from dm_group_r gr, dm_group_s gs<br />
where gr.r_object_id = gs.r_object_id<br />
group by gs.group_name<br />
having count(gr.i_supergroups_names) > 1)<br />
union<br />
select distinct r_object_id, group_name as sub_groups<br />
from dm_group_sp where group_name in (select gs.group_name<br />
from dm_group_r gr, dm_group_s gs<br />
where gr.r_object_id = gs.r_object_id<br />
group by gs.group_name<br />
having count(gr.i_supergroups_names) > 1) ;<br />
35. DQL for finding all checked out documents in a docbase<br />
select * from dm_document where (r_lock_owner is not nullstring or r_lock_owner ” or r_lock_owner ‘ ‘)<br />
36.DQL to list the users who has access to particular folder path<br />
SELECT i_all_users_names FROM dm_group<br />
WHERE group_name IN (SELECT r_accessor_name FROM dm_acl<br />
WHERE object_name IN (SELECT acl_name FROM dm_folder<br />
WHERE ANY r_folder_path = ‘/folderpath’))<br />
ORDER BY i_all_users_names<br />
37. Query to find out what user signed off on what document<br />
SELECT “audited_obj_id” FROM “dm_audittrail” WHERE<br />
“event_name” = ‘dm_signoff’ AND<br />
“user_name” = ‘tom’ AND<br />
substr (”audited_obj_id”, 1, 2) = ‘09′AND<br />
“time_stamp” >= DATE(’01/01/1998′, ‘dd/mm/yy’) AND<br />
“time_stamp” SELECT object_name, r_version_label FROM dm_sysobject where any r_version_label in (’WIP’) and r_object_id not in (select r_object_id from dm_sysobject where any r_version_label in (’Staging’, ‘Approved’, ‘Expired’) )<br />
39. Query to get all expired documents in previous month<br />
SELECT s.r_object_id, s.object_name, DATETOSTRING(”r.a_expiration_date”,’mm/dd/yyyy’) as creation_date<br />
FROM dm_sysobject_s s, dm_sysobject_r r<br />
WHERE s.r_object_id = r.r_object_id<br />
AND s.r_object_type = ‘dm_document’<br />
AND DATEDIFF(month,”r.a_expiration_date”,DATE(NOW)) >= 0<br />
AND DATEDIFF(month,”r.a_expiration_date”,DATE(NOW)) < = 1<br />
AND r.r_version_label = ‘Expired’<br />
ORDER BY 3<br />
0. Query to find the file system path location of a document<br />
select doc.r_object_id, doc.object_name, MFILE_URL(”,-1,”) as mypath,doc.i_folder_id from dm_document doc<br />
where<br />
——————————————————————<br />
Thursday, March 22, 2007<br />
DQL Tips<br />
————————————————————————————-<br />
*** get CURRENT TIME on server ***<br />
select DATE(NOW) as systime from dm_server_config<br />
————————————————————————————-<br />
*** get the implicit version label ***<br />
select s.r_object_id,s.object_name,r.r_version_label from dm_sysobject s, dm_sysobject_r r where r.r_object_id = s.r_object_id and<br />
r.i_position = -1<br />
————————————————————————————-<br />
*** include r_object_id to remove blank rows<br />
select object_name, r_object_id, a_expiration_date from dfas_common where folder(‘/Raj Srinivasan’) and any a_expiration_date is not nulldate<br />
————————————————————————————-<br />
*** select documents with pdf renditions (optimized for performance) ***<br />
select * from dm_document where exists(select * from dmr_content where any parent_id=dm_document.r_object_id and full_format=’pdf’)<br />
————————————————————————————-<br />
*** select all documents that have nulldate in repeating attribute<br />
select object_name from dfas_common where folder(‘/Raj Srinivasan) and r_object_id NOT IN (select r_object_id from dfas_common where folder(‘/Raj Srinivasan’) and any a_expiration_date is not nulldate)<br />
————————————————————————————-<br />
*** select all documents that have nulldate in repeating attribute or a_expiration_date has past<br />
select count(*) from dfas_common where folder(‘/content/Corporate Resources/Human Resources’,descend) and (any a_expiration_date <<br />
date(today) or (r_object_id NOT IN (select r_object_id from dfas_common where folder('/content/Corporate Resources/Human Resources',descend)<br />
and any a_expiration_date is not nulldate)))<br />
————————————————————————————-<br />
*** select folderpath with filename<br />
select distinct s.object_name, fr.r_folder_path from dm_sysobject (all)<br />
s,dm_sysobject_r sr,dm_folder_r fr where sr.i_position = -1 and<br />
sr.r_object_id = s.r_object_id and fr.r_object_id = sr.i_folder_id and<br />
fr.i_position = -1 and fr.r_folder_path like '/ChemNet/%'<br />
order by fr.r_folder_path,s.object_name<br />
————————————————————————————-<br />
*** empty folders ***<br />
SELECT r_object_id,r_folder_path FROM dm_folder f WHERE r_object_id NOT IN<br />
(SELECT distinct i_folder_id FROM dm_sysobject WHERE any i_folder_id = f.r_object_id and folder('/content',descend)) and folder('/content',descend)<br />
————————————————————————————-<br />
*** NULL a_effective_date ***<br />
select object_name from dfas_common where folder('/images', descend) and r_object_id NOT IN (select r_object_id from dfas_common where folder('/images', descend) and any a_effective_date is not nulldate)<br />
————————————————————————————-<br />
*** select component from workitem ***<br />
select<br />
r_component_id<br />
from<br />
dmi_package p<br />
where<br />
exists (select r_object_id<br />
from dmi_workitem w<br />
where<br />
w.r_object_id = and<br />
w.r_workflow_id = p.r_workflow_id and<br />
w.r_act_seq_no = p.r_act_seq_no)<br />
————————————————————————————-<br />
*** select renditions ***<br />
SELECT s.object_name, f.dos_extension<br />
FROM dm_dbo.dm_sysobject_s s, dm_dbo.dmr_content_r c, dm_dbo.dm_format_s f<br />
WHERE (c.parent_id = s.r_object_id)<br />
and (c.i_format = f.r_object_id)<br />
AND c.page=0 AND f.dos_extension ‘xml’<br />
AND folder(‘/whatever’)<br />
————————————————————————————-<br />
*** find workflow given document ***<br />
select * from dm_workflow where r_object_id in (select r_workflow_id from dmi_package where any r_component_id in (select r_object_id from<br />
dm_sysobject (all) where i_chronicle_id in (select i_chronicle_id from dm_sysobject where r_object_id=”))) and r_runtime_state=’1′<br />
————————————————————————————-<br />
*** return only inherited attributes ***<br />
SELECT attr_name FROM dmi_dd_attr_info WHERE type_name = ‘my_custom_type’ AND attr_name NOT IN<br />
(SELECT attr_name FROM dmi_dd_attr_info WHERE type_name = ‘dm_document’)<br />
————————————————————————————-<br />
Documents that are uploaded in to docbase b/w Aug 2004 and Oct 2004<br />
select a.r_object_id,a.r_creation_date,a.r_modify_date,b.user_group_name<br />
from dm_document a, dm_user b<br />
where (a.r_creation_date >= Date(’08/01/2004′,’mm/dd/yyyy’) and a.r_creation_date 0<br />
————————————————————————————-<br />
Subject: Why do we create four views for each subtype?<br />
Note: For example the type dm_document has four views:<br />
dm_document_sp<br />
dm_document_sv<br />
dm_document_rp<br />
dm_document_rv<br />
The two _sp and _rp views are used by DQL and the two<br />
_sv and _rv views are used by the Object Manager.<br />
Also, the _sp and _sv views are for single (non-repeating) attributes, while the _rv and _rp views are for repeating attibutes.<br />
————————————————————————————-<br />
Label Text of the either Sytem Type or Custom Type<br />
select label_text from dm_nls_dd_info where parent_id in<br />
(select r_object_id from dm_aggr_domain where type_name = ‘field_type’)<br />
Results:<br />
Content Location<br />
Keywords Category<br />
Business Unit Owner<br />
————————————————————————————-<br />
DQL to list all documents attributes and their associated folder path<br />
select s.object_name, fr.r_folder_path<br />
from dm_document s, dm_sysobject_r sr,<br />
dm_folder_r fr<br />
where s.i_is_deleted = 0<br />
and sr.i_position = -1<br />
and sr.r_object_id = s.r_object_id<br />
and fr.r_object_id = sr.i_folder_id<br />
and FOLDER(‘/ChemNet’, descend)<br />
and fr.r_folder_path like ‘/ChemNet/%’<br />
order by fr.r_folder_path,s.object_name<br />
————————————————————————————-<br />
*** Web cabinet of a content ***<br />
SELECT object_name FROM dm_cabinet<br />
WHERE r_object_id IN (SELECT i_cabinet_id FROM dm_folder<br />
WHERE r_object_id IN (SELECT i_folder_id FROM dm_document (ALL)<br />
WHERE object_name like ‘test%’)) AND r_object_type=’wcm_channel’<br />
OR<br />
select r_object_id, object_name from wcm_channel where r_object_id in<br />
(select i_ancestor_id from dm_folder where r_object_id in<br />
(select i_folder_id from dm_sysobject where object_name = ‘test’))<br />
————————————————————————————-<br />
*** To get the first level folders from the cabinets ***<br />
select object_name from dm_folder where any i_folder_id in (select r_object_id from dm_cabinet where object_name=’Cabinets’)<br />
————————————————————————————-<br />
*** To show the previous Active content ***<br />
select r_object_id,i_chronicle_id,DATETOSTRING(DATE(TODAY),’ddmmyyyy’) as sysdate from dm_document (ALL) where object_name like ‘test%’ and<br />
FOLDER(‘/ChemNet/ChemonicsProcess/Bidding’) and<br />
any r_version_label = ‘Active’<br />
————————————————————————————-<br />
To find the folders for particular group for specified permission<br />
select for write object_name from dm_folder where acl_name IN (select object_name from dm_acl where any r_accessor_name = ‘dm_world’) and folder(‘/ChemNet’,descend)<br />
or<br />
select object_name from dm_folder where acl_name IN (select object_name from dm_acl where any r_accessor_name = ‘dm_world’ and any r_accessor_permit = ’7′) and folder(‘/ChemNet’,descend)<br />
1 – NONE<br />
2 – BROWSE<br />
3 – READ<br />
4 – RELATE<br />
5 – VERSION<br />
6 – WRITE<br />
7 – DELTE<br />
————————————————————————————-<br />
DFC to insert rows into registered table<br />
public static IDfCollection execQuery(String queryString, IDfSession session)<br />
throws DfException{<br />
IDfCollection col = null; //Collection for the result<br />
IDfClientX clientx = new DfClientX();<br />
IDfQuery q = clientx.getQuery(); //Create query object<br />
q.setDQL(queryString); //Give it the query<br />
// example queryString: “insert into dm_dbo.your_registered_table<br />
(field1, [field]) values(,[<br />
col = q.execute(session, IDfQuery.DF_EXEC_QUERY);<br />
System.out.println(“Query executed.”);<br />
return col;<br />
}<br />
————————————————————————————-<br />
How to avoid redundancy for this simple query?<br />
select distinct d.object_name,sys.authors from dm_document d, dm_sysobject_r sys<br />
where folder (‘/xyz/xyz_first’) and<br />
d.r_object_id = sys.r_object_id and<br />
(sys.i_position=-1 or (sys.i_position< =-2 and sys.authors is not null))</p>
<p>Link: <a href="http://dionrobin.wordpress.com/2010/02/08/useful-dql-queries/" title="Useful DQL Queries" target="_blank">http://dionrobin.wordpress.com/2010/02/08/useful-dql-queries/</p>
]]></content:encoded>
			<wfw:commentRss>http://jiahu.net/useful-dql-queries.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用户体验设计</title>
		<link>http://jiahu.net/%e7%94%a8%e6%88%b7%e4%bd%93%e9%aa%8c%e8%ae%be%e8%ae%a1.htm</link>
		<comments>http://jiahu.net/%e7%94%a8%e6%88%b7%e4%bd%93%e9%aa%8c%e8%ae%be%e8%ae%a1.htm#comments</comments>
		<pubDate>Thu, 08 Dec 2011 03:55:11 +0000</pubDate>
		<dc:creator>@ouc</dc:creator>
				<category><![CDATA[读书]]></category>
		<category><![CDATA[资源]]></category>
		<category><![CDATA[视频]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://jiahu.net/?p=1708</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><embed src="http://player.youku.com/player.php/sid/XMzI5NDkwMzY4/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="sameDomain" allowFullscreen="true" type="application/x-shockwave-flash"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://jiahu.net/%e7%94%a8%e6%88%b7%e4%bd%93%e9%aa%8c%e8%ae%be%e8%ae%a1.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>看看人家是怎么读书的</title>
		<link>http://jiahu.net/%e7%9c%8b%e7%9c%8b%e4%ba%ba%e5%ae%b6%e6%98%af%e6%80%8e%e4%b9%88%e8%af%bb%e4%b9%a6%e7%9a%84.htm</link>
		<comments>http://jiahu.net/%e7%9c%8b%e7%9c%8b%e4%ba%ba%e5%ae%b6%e6%98%af%e6%80%8e%e4%b9%88%e8%af%bb%e4%b9%a6%e7%9a%84.htm#comments</comments>
		<pubDate>Wed, 09 Nov 2011 04:29:29 +0000</pubDate>
		<dc:creator>@ouc</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[读书]]></category>
		<category><![CDATA[资源]]></category>
		<category><![CDATA[学习]]></category>

		<guid isPermaLink="false">http://jiahu.net/?p=1705</guid>
		<description><![CDATA[读完这段讨论文章，深有感触，惟恐日后不得见，故全文转载如下 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 此贴常看常新，获益良多。故稍作编辑，转载之。 chaque按： 1） 乔纳森此文原载于南方都市报读书版。 2）作者乔纳森（不少朋友知道他的真名，此不赘），在文前谦称“三无人员”，其实早在十几年前就是水木清华论坛上有名的学士、思考者和文体家了。其后在网易论坛、往复论坛、天涯论坛等地也经常发文（计有乔纳森、水木乔纳森、Johnathan等ID），所作多为名帖。 3）根据文中所述内容统计，乔纳森先生为理解《叶隐》究竟是怎么回事，在5个月内的时间中，穷尽式地阅读了中日英文总共16种相关著作。虽然作者自己调侃说这个写作计划最终“完败”，但我们反倒可以从中看出这一代作者在研究投入上的热情忘我、在资料掌握上的扎实严谨、在文献解读上的娴熟细致。在我看来，这些是此前很多著书立说的研究者远远不及的。比如我最近看到若干作者，只找到了几部英文的拉康著作，就以为“在资料上达到了国内的最高水准“，甚至写下了大部头的论拉康专著。比诸乔纳森先生的善藏拙，这些率尔操觚的“学者”实在应该好好反省一下了。 4）此前似乎有本坛网友以为我这个ID是乔纳森先生的马甲，这在满足了我的虚荣心之余，却肯定会让大家严重低估乔纳森先生的写作。就借此转载声明一下，希望能够彻底打消残余在各位乃至我本人身上的错觉。 读的葛藤，写的完败 乔纳森 2008-01-21 08:59:44 来源:南方都市报 （乔纳森，无头衔，无著作，无影响，属“三无人员”。自2004年起，为《南方都市报·阅读周刊》撰稿。专栏系列包括“西书识小”、“映画书志学”等。） “葛藤”是禅宗语录里常见的词，后来我们不用了，日语里还有，意思相当于现在说的“纠结”，但更形象些。至于“完败”，也许不用多解释了，常看体育报道的人都晓得，就是“大败”的意思，但它似乎比“大败”还“大”一点：是完全的、彻底的失败。 2007年，就我的阅读和写作生活而言，是葛藤的一年，是完败的一年。 这一年，旋风似的读书，一路风行草偃，然而大风过后，草木齐齐直起腰身——读是读了，可读的都是书皮儿，内容盘踞书中，不曾挪动。写作计划一个接一个破产，其实早在制定计划的当口，已然没了完成的决心。如果说多少还写下了什么的话，也不过如草蛇灰线，曲里拐弯地证实自己如何避难就易、如何见异思迁。 在所有破产的计划当中，牵扯最多、延宕最久的要算关于《叶隐》的那个。2007年5月，李冬君先生翻译的《叶隐闻书》(广西师范大学出版社，2007年第一版)出版，外间的评说毫无批判性地一边倒，读着未免气闷，遂暗下决心，打算好好将《叶隐》的系谱清理一遍。 读《叶隐》，当然不能只读译本，于是找来了“日本思想大系”里相良亨的校注本(《三河物语·叶隐》，岩波书店，1974年第一版)——译者也正是以此为底本的。参照校注本，可对翻译上的细节有更准确的认识。读完了本文，当然还要参考近人的解读，于是找来了三岛由纪夫的《叶隐入门》(光文社，1967年第一版)，一读之下，发现三岛君的解读竟是对原著的剪裁、芟夷、拼贴，美化效果之显著，殊不逊于电视上整容广告的宣传口径。将山本常朝的原著与三岛由纪夫的导读两相对照，从前者的肆言无忌与后者的片面呈现的对比出发，剖视武士道逻辑的颠倒淆乱，不是能写一篇漂亮的文章出来吗？就这样想着，浩繁的准备工程启动了。 三岛由纪夫其他的作品不能不参考，比如中译本“三岛由纪夫作品集”《残酷之美》(中国文联出版社，2000年第一版)一卷，在《日本的古典与我》一文里，就有“我把《叶隐》作为我人生的老师，它对我来说是一部十分重要的书”这样的话。紧接着，又找来了三岛的《行动学入门》(文春文库，1992年版)，这是他发挥自己的“《叶隐》哲学”的著作。顺便，把John Nathan写的英文版《三岛由纪夫传》(Tuttle，1975年第一版)读了——关于《叶隐》的内容，在第223至224页。又顺便把宫崎正弘的《三岛由纪夫“以后”》(并木书房，1999年第一版)翻了翻，对三岛倡言“《叶隐》哲学”时期的日本知识界氛围有了更深的认识。 既然要谈武士道哲学，对武士道本身，当然要了解充分。新渡户稻造的《武士道》(商务印书馆，1993年第一版)早就看过，为了更好地重温，就把志村史夫写的《新渡户稻造〈武士道〉导读(三笠书房，2003年第一版)翻了翻。尽管帮助不大，但我还是将武士生活研究会编的《近世武士生活史入门事典》(柏书房，1991年第一版)和北山茂夫写的《中世的武家与农民》(筑摩书房， 1982年第一版)也浏览了一下。简单明快的叙述出现在森川哲郎的《日本武士道史》(日本文艺社，1976年第一版)中，第三章《武士道哲学的确立期》讲的就是《叶隐》。 《叶隐》的核心内容是对死亡的看法，尤其是对以切腹为代表的自杀方式的看法。因此，我又参考了法国学者 Maurice Penguet写的《自死的日本史》(筑摩书房，1992年第一版)和苏格兰学者Stuart D.B.Picken写的《日本人的自杀》(Simul出版会，1979年版)两种日文译本。《自死的日本史》第九章《残酷剧》有对《叶隐》相当深入的探讨，这个法国人真了不起。 至于边缘的文献，如《留给日本的遗言：福田恒存语录》(文春文库，1998年第一版)中一段谈《叶隐》的文字，就很可以作为右翼知识人见解的代表。源了圆的《义理与人情》(南开大学出版社，1996年第一版)里讲赤穗四十七浪士的一节，也对我观念的形成有不小的启发。此外，片言只语提及《叶隐》的，多的是，也不必再开列了。 等我的终于在去年10月底接近尾声，媒体对《叶隐》的兴趣似乎也降至冰点，自个儿是千言万语奔到嘴边，一时间又不知从何说起。罢罢罢，不写也罢，了不起在一长串破产的写作计划后再添上一笔。葛藤是完败的根，完败是葛藤的果。道理不是不明白，但那个能出手划断葛藤的人究竟在哪儿呢？ chaque评： （1） 哲人王兄、醉兄的读法是博雅的精细阅读，Johnathan先生在本文中展示的是专题的调研阅读，这两种模态、样式，当然不能放在一条跑道上比赛。 我感到遗憾的是，目前国内很多专题研究者的成果，既欠齐备、也不专深，只相当于把国外该领域入门资料读完了的水平，而且还都能由商务印书馆之类的名牌出版商印行。如果所有文科博士论文都由乔纳森先生行使一票否决权，那么我们的书店里应该能够清净整饬不少了。 赞叹归赞叹，我觉得咱们还是应该争取从Johnathan先生的这篇文章中学到东西。否则就只相当于看了看满汉全席的照片，自己可没沾着丁点儿好处。 总结Johnathan先生的大作，我以为可以看出他的读书方法有这么几个特点： 1）为写而读。读的目的和归宿是写出东西；对于他这次“叶隐计划”，大概就是为了写一个新出版译著的书评。 2）成计划地读。按照“写作计划”安排每年的阅读。就好比把每年要看的书组成了若干个纵队，具体的阅读中这些“纵队”肯定又可分可合——读书法如行军法，运用之妙自然是存乎一心的。 3）合理规划专题书目。对于每个“计划”，要规划出专题书目。这就要求所谓“计划”不能涉及太广，比如您今年的计划要是“世界文学”，那么八成还没到“葛藤”就已经“完败”了；也不能范围太小，因为毕竟不是研究所里的课题研究，如果您定下了“三岛由纪夫剖腹刀法研究”这么个题目，那么倒是切实可行了，但可参照的书太少，恐怕三两下子就看完了，打穿了，不能满足持续阅读的兴趣。在一组专题书目里，当然应有主有次，有泛读有精读，有原始文献，有研究者的介绍导读。这相当于打向计划目标的组合拳。 4）建立图书获取渠道。虽然规划出了书目，如果找不到书，那也是白搭和完败。所以要有固定、成熟的图书获取渠道。比如拥有说好的大学图书馆、地方图书馆，比方说经常能旅行，或者托朋友在目标国购书，比方说您自己就开一家外文书店，再比方说跟各地书商、网上书店都保持良好的购销关系。据我所知，Johnathan先生不看电子书，谈到的书基本上都是自己购置。做到这一点，恐怕对不少朋友来说有点儿困难了。所以说到阅读的水准，决心和投入也是关键。 &#8230; <a href="http://jiahu.net/%e7%9c%8b%e7%9c%8b%e4%ba%ba%e5%ae%b6%e6%98%af%e6%80%8e%e4%b9%88%e8%af%bb%e4%b9%a6%e7%9a%84.htm">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>读完这段讨论文章，深有感触，惟恐日后不得见，故全文转载如下<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p><a href="http://www.readfree.net/bbs/read.php?tid=4569430" target="_blank">此贴</a>常看常新，获益良多。故稍作编辑，转载之。</p>
<p>chaque按：</p>
<p>1） 乔纳森此文原载于南方都市报读书版。</p>
<p>2）作者乔纳森（不少朋友知道他的真名，此不赘），在文前谦称“三无人员”，其实早在十几年前就是水木清华论坛上有名的学士、思考者和文体家了。其后在网易论坛、往复论坛、天涯论坛等地也经常发文（计有乔纳森、水木乔纳森、Johnathan等ID），所作多为名帖。</p>
<p>3）根据文中所述内容统计，乔纳森先生为理解《叶隐》究竟是怎么回事，在5个月内的时间中，穷尽式地阅读了中日英文总共16种相关著作。虽然作者自己调侃说这个写作计划最终“完败”，但我们反倒可以从中看出这一代作者在研究投入上的热情忘我、在资料掌握上的扎实严谨、在文献解读上的娴熟细致。在我看来，这些是此前很多著书立说的研究者远远不及的。比如我最近看到若干作者，只找到了几部英文的拉康著作，就以为“在资料上达到了国内的最高水准“，甚至写下了大部头的论拉康专著。比诸乔纳森先生的善藏拙，这些率尔操觚的“学者”实在应该好好反省一下了。</p>
<p>4）此前似乎有本坛网友以为我这个ID是乔纳森先生的马甲，这在满足了我的虚荣心之余，却肯定会让大家严重低估乔纳森先生的写作。就借此转载声明一下，希望能够彻底打消残余在各位乃至我本人身上的错觉。</p>
<p>读的葛藤，写的完败<br />
乔纳森 2008-01-21 08:59:44  来源:南方都市报  </p>
<p>（乔纳森，无头衔，无著作，无影响，属“三无人员”。自2004年起，为《南方都市报·阅读周刊》撰稿。专栏系列包括“西书识小”、“映画书志学”等。）</p>
<p>“葛藤”是禅宗语录里常见的词，后来我们不用了，日语里还有，意思相当于现在说的“纠结”，但更形象些。至于“完败”，也许不用多解释了，常看体育报道的人都晓得，就是“大败”的意思，但它似乎比“大败”还“大”一点：是完全的、彻底的失败。</p>
<p>2007年，就我的阅读和写作生活而言，是葛藤的一年，是完败的一年。</p>
<p>这一年，旋风似的读书，一路风行草偃，然而大风过后，草木齐齐直起腰身——读是读了，可读的都是书皮儿，内容盘踞书中，不曾挪动。写作计划一个接一个破产，其实早在制定计划的当口，已然没了完成的决心。如果说多少还写下了什么的话，也不过如草蛇灰线，曲里拐弯地证实自己如何避难就易、如何见异思迁。</p>
<p>在所有破产的计划当中，牵扯最多、延宕最久的要算关于《叶隐》的那个。2007年5月，李冬君先生翻译的《叶隐闻书》(广西师范大学出版社，2007年第一版)出版，外间的评说毫无批判性地一边倒，读着未免气闷，遂暗下决心，打算好好将《叶隐》的系谱清理一遍。</p>
<p>读《叶隐》，当然不能只读译本，于是找来了“日本思想大系”里相良亨的校注本(《三河物语·叶隐》，岩波书店，1974年第一版)——译者也正是以此为底本的。参照校注本，可对翻译上的细节有更准确的认识。读完了本文，当然还要参考近人的解读，于是找来了三岛由纪夫的《叶隐入门》(光文社，1967年第一版)，一读之下，发现三岛君的解读竟是对原著的剪裁、芟夷、拼贴，美化效果之显著，殊不逊于电视上整容广告的宣传口径。将山本常朝的原著与三岛由纪夫的导读两相对照，从前者的肆言无忌与后者的片面呈现的对比出发，剖视武士道逻辑的颠倒淆乱，不是能写一篇漂亮的文章出来吗？就这样想着，浩繁的准备工程启动了。</p>
<p>三岛由纪夫其他的作品不能不参考，比如中译本“三岛由纪夫作品集”《残酷之美》(中国文联出版社，2000年第一版)一卷，在《日本的古典与我》一文里，就有“我把《叶隐》作为我人生的老师，它对我来说是一部十分重要的书”这样的话。紧接着，又找来了三岛的《行动学入门》(文春文库，1992年版)，这是他发挥自己的“《叶隐》哲学”的著作。顺便，把John Nathan写的英文版《三岛由纪夫传》(Tuttle，1975年第一版)读了——关于《叶隐》的内容，在第223至224页。又顺便把宫崎正弘的《三岛由纪夫“以后”》(并木书房，1999年第一版)翻了翻，对三岛倡言“《叶隐》哲学”时期的日本知识界氛围有了更深的认识。</p>
<p>既然要谈武士道哲学，对武士道本身，当然要了解充分。新渡户稻造的《武士道》(商务印书馆，1993年第一版)早就看过，为了更好地重温，就把志村史夫写的《新渡户稻造〈武士道〉导读(三笠书房，2003年第一版)翻了翻。尽管帮助不大，但我还是将武士生活研究会编的《近世武士生活史入门事典》(柏书房，1991年第一版)和北山茂夫写的《中世的武家与农民》(筑摩书房， 1982年第一版)也浏览了一下。简单明快的叙述出现在森川哲郎的《日本武士道史》(日本文艺社，1976年第一版)中，第三章《武士道哲学的确立期》讲的就是《叶隐》。</p>
<p>《叶隐》的核心内容是对死亡的看法，尤其是对以切腹为代表的自杀方式的看法。因此，我又参考了法国学者 Maurice Penguet写的《自死的日本史》(筑摩书房，1992年第一版)和苏格兰学者Stuart D.B.Picken写的《日本人的自杀》(Simul出版会，1979年版)两种日文译本。《自死的日本史》第九章《残酷剧》有对《叶隐》相当深入的探讨，这个法国人真了不起。</p>
<p>至于边缘的文献，如《留给日本的遗言：福田恒存语录》(文春文库，1998年第一版)中一段谈《叶隐》的文字，就很可以作为右翼知识人见解的代表。源了圆的《义理与人情》(南开大学出版社，1996年第一版)里讲赤穗四十七浪士的一节，也对我观念的形成有不小的启发。此外，片言只语提及《叶隐》的，多的是，也不必再开列了。</p>
<p>等我的终于在去年10月底接近尾声，媒体对《叶隐》的兴趣似乎也降至冰点，自个儿是千言万语奔到嘴边，一时间又不知从何说起。罢罢罢，不写也罢，了不起在一长串破产的写作计划后再添上一笔。葛藤是完败的根，完败是葛藤的果。道理不是不明白，但那个能出手划断葛藤的人究竟在哪儿呢？</p>
<p>chaque评：</p>
<p>（1）</p>
<p>哲人王兄、醉兄的读法是博雅的精细阅读，Johnathan先生在本文中展示的是专题的调研阅读，这两种模态、样式，当然不能放在一条跑道上比赛。</p>
<p>我感到遗憾的是，目前国内很多专题研究者的成果，既欠齐备、也不专深，只相当于把国外该领域入门资料读完了的水平，而且还都能由商务印书馆之类的名牌出版商印行。如果所有文科博士论文都由乔纳森先生行使一票否决权，那么我们的书店里应该能够清净整饬不少了。</p>
<p>赞叹归赞叹，我觉得咱们还是应该争取从Johnathan先生的这篇文章中学到东西。否则就只相当于看了看满汉全席的照片，自己可没沾着丁点儿好处。</p>
<p>总结Johnathan先生的大作，我以为可以看出他的读书方法有这么几个特点：</p>
<p>1）为写而读。读的目的和归宿是写出东西；对于他这次“叶隐计划”，大概就是为了写一个新出版译著的书评。</p>
<p>2）成计划地读。按照“写作计划”安排每年的阅读。就好比把每年要看的书组成了若干个纵队，具体的阅读中这些“纵队”肯定又可分可合——读书法如行军法，运用之妙自然是存乎一心的。</p>
<p>3）合理规划专题书目。对于每个“计划”，要规划出专题书目。这就要求所谓“计划”不能涉及太广，比如您今年的计划要是“世界文学”，那么八成还没到“葛藤”就已经“完败”了；也不能范围太小，因为毕竟不是研究所里的课题研究，如果您定下了“三岛由纪夫剖腹刀法研究”这么个题目，那么倒是切实可行了，但可参照的书太少，恐怕三两下子就看完了，打穿了，不能满足持续阅读的兴趣。在一组专题书目里，当然应有主有次，有泛读有精读，有原始文献，有研究者的介绍导读。这相当于打向计划目标的组合拳。</p>
<p>4）建立图书获取渠道。虽然规划出了书目，如果找不到书，那也是白搭和完败。所以要有固定、成熟的图书获取渠道。比如拥有说好的大学图书馆、地方图书馆，比方说经常能旅行，或者托朋友在目标国购书，比方说您自己就开一家外文书店，再比方说跟各地书商、网上书店都保持良好的购销关系。据我所知，Johnathan先生不看电子书，谈到的书基本上都是自己购置。做到这一点，恐怕对不少朋友来说有点儿困难了。所以说到阅读的水准，决心和投入也是关键。</p>
<p>5）不畏烦难，直面原文。前面说了这么多，可还都处于配菜阶段，虽然也算是挺麻烦的了，但更要紧的还是最后下锅翻炒的功夫。宋公明和戴宗、李逵在酒楼上吃醉了要喝鱼汤醒酒，店家端上汤来，宋头领一尝就知道是隔夜剩下的鱼，腌过后做的。那些只读二手资料或者蹩脚译文而讨论原书的人，写出的文章就像这隔夜的鱼汤，输入既然不好，产出就没法不露马脚。我们佩服的陆兴华先生也写过“阅读的政治经济学”之类的文章，强调原文阅读看似费时费力，在实际效果上可是划算得太多。据我不完备的统计，Johnathan先生至少研读过英、法、意、拉丁、日、德等语言的原文文献，他的写作成绩这么好，与阅读时培养的语言敏感性和解读能力肯定是分不开的。</p>
<p>6）最后，还有善于藏拙。Johnathan先生虽然读得多、想得深、写得精，但至今也没出过一本专著。他在历年的“写作计划”投入的功夫是不是就白费了呢？我看肯定不会的。就以这个《叶隐计划》为例，哪怕是最后一个字书评都没写出来，也给我们留下了这篇宝贵的《年度读书小结》，供大家揣摩取法。单是这个成绩，让我说的话，就远抵得上国内拉康研究的全部几千几万页废纸了。</p>
<p>（2）</p>
<p>这次结合Johnathan兄的“读书小结”重读大作，我又有两个新的感想，还是趁吃晚饭前写下来，跟大家探讨吧：</p>
<p>1） “读多少种书才算合适，才算把书读完”的问题，是一个有缺陷的问题。缺的是两个字：”目的“，为了不同的目的，对这个问题有不同的回答。出版社的校对、印刷厂的质检员、新闻出版管理部门的审查官，每年读书的数目恐怕是我们没法梦到的——但我们不羡慕他的多，没别的原因，目的不同而已。</p>
<p>明乎此，咱们就得在“该读多少书“之前，加上“为某某目的”这个限定；如果根本没目的，只是为了阅读之乐而读呢？那当然也用不着计数儿，跟质检员相同，总之越多越好呗。</p>
<p>所以在”为读而读”之外，出于不同的目的，需要读书的数量是不一样的。哪怕同样是出于研究的目的，针对不同的学科，需要的阅读量也不一样。</p>
<p>如果有人问，做个“万事通”要读多少书才成？那我只好说，万事通的必需读书量还是跟质检员一样，是没限定的。所谓“一事不知，儒者之耻”，万事通这个标准的本意是“掌握了一切学科的一切知识”，当然对任何东西，都该不加歧视、泥沙俱下地读一遭儿。</p>
<p>在知识爆炸的年代，万事通这个岗位压力太大了，即使缩小点儿范围，做个“文史哲万事通”也很困难。硬是立志做“万事通”的人，往往就要花两个代价：第一个是肤浅，第二个是势利。”肤浅”很好理解，求广就很难求深。所谓“势利”，就是说现在的万事通，大多要大刀阔斧，芟夷掉很多自己能力之外的领域和方向；为了给自己的辣手删砍找个理由（justification），就不得不像暴发户对待穷亲戚一样，看人下菜碟儿，我看不懂的东西，就说它没有用、水平差、档次低好了。所以当今万事通的读书法，往往是皮鲁士式的胜利（a Pyrrhic victory）。</p>
<p>万事通对知识，本该有天下最积极、最热忱的态度，尤其新知识应该是来者不拒的。但是实际上我们遇到的这类人，却常常是读书人里最保守的一类，崇尚知识的几个基本源头，对全新的东西反而不屑一顾。原因无他——新东西会在刚刚平定下来的版图中引发叛乱，好不容易整理出来的“下菜碟”价目表，因为新知识的加入又得重新调整了。</p>
<p>2）在很多专门领域的阅读，难度首先来自书目规划。这是个著名的诠释学循环：为了入门，先要规划阅读的书目；但若是你能选对书目，其实你就已经入门了。</p>
<p>听老人讲，从前柬共打江山的时候，抛头露面都是乔森潘，外界都以为他就是一把手了，等政权坐稳，大家才发现真正掌舵的是波尔布特。外行给自己开列书目的情形大体也是这样，抓住的大多是学科中的“乔森潘”，遗漏了、忽视了角落中的波尔布特。表面上这些都是小人物，是除不尽的小数点儿，其实呢——我们了解过任何学科实情的人都知道——很多表面不起眼的著作是绕不过去的，势利的万事通读法，恰恰是因为怠慢了这些显赫的穷亲戚，所以不得不付出肤浅皮相的代价。</p>
<p>所以规划书目最好的途径，大概不是借助读秀网站或者任何“名家推荐”，而是走到像样的图书馆或大书店里，实际闻闻书味、摸摸书皮、掂掂分量、翻翻页码（而不仅仅是目录），无论重要的不重要的著作都拿在手上摆弄一阵子。换言之，一本书的神秘核心是它的物质性因素，缺乏这种跟书本的最直接亲近，你就和相关的书本家族永远也混不熟，永远处在把二线傀儡当成波尔布特的窘境之中。</p>
<p>书目规划的诠释学特征还在于，你不可能一劳永逸地决定，哪些书该读，哪些书是不该读的。“从一开始就做好规划”尤其是个天真的想法。随着阅读进程得到更新的，是先前的个别判断，是整体的估价视野，甚至是阅读的目标本身。所谓“矛伤尚待矛来医”，只有通过读，才能知道读什么、怎样读。把先期的书目规划视为一个脱离其后实际阅读过程的超验原点，就肯定会错失了读书这件事的部分、乃至全部真理。</p>
<p>Johnathan先生的这次读书小结中，就体现出了他在这两个方向上的强调：第一，“写作计划”事实上是阅读计划，是“带着明确的目的和问题读书”。第二，通过大量接触相关图书，他自然地、迂回渐进地达到了跟主题的“亲熟”。他大作中的每个自然段，也就标明了航程的每个新阶段，那真是“每下愈况”，最终洞悉了对《叶隐》的”相当深入的探讨”。他的这次阅读规划、阅读进程，洋溢着对意想不到的新事物的热爱，以及对从异域中寻回自身的自信。</p>
<p>罗嗦了这一大篇，大都是人所共知的道理。好在晚饭又要开始了，废话再多也只能如此收场啦。</p>
<p>（3）</p>
<p>吃饭回来重读帖子，感到哲人王兄的“核心著作”一说确实是不刊之论。目前由于国内学科建制的不成熟，很多研究者只读了某领域最时新的几种作品，就敢于著书立说，作出推倒一世豪杰的宏论来。这是相当可悲的。因为这样的研究者，往往忽略了他见到的那些作品与本学科传统著作之间动态的对话关系，在最教条、最抽象的意义（无论是肯定的，还是否定的）上理解传统。因此他的著作，大体恰恰是陈词滥调的借尸还魂，不仅未见新意，而且与他最想回避的旧学中的糟粕部分不幸地重合了。</p>
<p>另一方面，我以为“读核心著作”大概只能算是了解一个学科的必要而非充分条件。读过这些基本著作，好像是对敌方的火力部署侦查得差不多了；但是要说战而胜之，那可还差得远。这时就认为自己已收全功，可以鸣金收兵了，相当于说“侦察连就是整支部队”、“望远镜是终极武器”。因为正如刚才所说，很多学科的一个主要任务，就是跟本学科传统进行持续有效、不断更新着的对话，通过新视野来激活旧传统，又通过对传统的再阐释来重新理解当下的处境；换言之，在学科演进之中，“核心著作”本身就是在不断被重估、被赋值着的。只有加入到这个对话中的人，才能充分体认“核心著作”的意义。这就好比谢逊让张无忌从小就熟背了七伤拳谱，但是只有到张自己临阵演练，才能明白某招某式原来是这么用的。相信“核心著作”有着一劳永逸的现成价值，无异于指望拳谱背诵家成为武林盟主。而由核心著作衍生出来的很多研究专著，在这个意义上就特别可贵：通过它们，我们就更容易进入到在传统与当下之间富有成果的对话之中。</p>
<p>往往情况是这样的：比如说有按照年代先后排列的A、B、C&#8230;等著作，比如我们也计划依次读下来，但读过了C，我们才发现它赋予了A、B全新的理解语境，也就是说，后来的C反而成了A、B的理解前提。这就像马克思常说的“人体解剖是猴体解剖的入门钥匙“一样——A、B和C之间有了互为前提的关系，在不读A、B就读不懂C的同时，不读C也读不懂A或B。换句话说，无论我们先读了其中的哪一种，在读了另外一种之后，我们还要重新评估原先的读，甚至在A< ->C这个回路中无止境地反复运行下去。一部作品越是”核心著作”，以下命题就越是成立：对它来说，不存在读，而只存在重读。</p>
<p>“核心著作”之所以能推动学科的发展，一个重要原因就在于它质疑、瓦解了人们既有的视野和评价体系，为本学科的学术版图重新绘制了一遍等高线。但这些著作也很容易被教条化，被后来的、后世的研究者出于教学传授目的，浓缩成干巴巴的两三下子，狠呆呆的几条公式。这就把原先动态、激进、鲜活的内容给圈养了、驯服了、试题化或教义问答化了。很多人看学科名著，哪怕是第一手地，直面原文地读，也脱不开这个套路。这大概是因为他们早就受到了各种入门导读、门徒手册的影响，因此不能见证原作者带来的破晓，只看到了介绍者从前让他看过的东西。这就像对读惯了旅游指南的游客来说，到指南上有照片的那几个地方拍照就是旅行的全部意义。所以我常觉得，学科名著至少要读两次，而如果非要读“名著导读”一类的书的话，时间最好就安排在这两次阅读之间。记得Johnathan先生曾说，有些介绍性著作其实是“印证书”，能够让读者确认自己的阅读是否到位，就好像我们在陌生的城市中游逛的时候查看地图。我以为这个道理，正如我从Johnathan先生那儿学到的大部分东西一样，是平实而深刻的。</p>
<p>（4）</p>
<p>哲人王兄所言不错，读书当然不是非要什么目的不可，您提到的几位更是我一直仰慕的对象。我在前面的论点只是：“无目的读书，就不用考虑数量。”因为没有需要达成的目标，伯恩施坦所谓“运动就是一切”，当然更不必计量考察了:-)</p>
<p>非常佩服哲人王兄这个阅读的境界。福柯在晚年（《性史》、《主体诠释学》中）曾说过，古代人和东方人，跟真理之间有一种特别的、不常见于西方近代的关系。近代人求知，通常是把自己视为外在于真理的认知主体，知识的增进并不意味着主体的提升；而古代/东方人的求知，则把获取真理的过程看作是一种内在于、同步于主体自身的精神的修炼、自我的技术(spiritual exercises, culture of the self)。这个技术当然不仅仅作用于头脑，更要紧的就是要对身体的关注跟训练，甚至把人的整体生命当成一个艺术品来塑造。哲人王兄上面的帖子，就让我感受到了这种不让古人的气度——相比之下，我这样的闲读就像是逛大街之于练气功，冰激淋之于人参汤，只能算是人类精神实践中一个严重退化的品种了。</p>
<p>我突然想到了一个阅读的倒金字塔：求道>求学>求术>求生>求趣。</p>
<p>像哲人王兄的读书，庶几可谓”求道”了！除我之外的所有学士，当然至少都达到了“求学”的标准！凡是能够学以致用、读书发财的各位，大概都当得起”求术”这两个字！海德格尔说，理解首先是生存论的筹划，所以基本上所有本真的读(不管是否发财与否)首先及通常都是一种“求生”！——而对于我这样非本真的读者来说，最合适的名目恐怕就只有”求趣”了，而且正如winwun兄评定的，基本上还都是”记丑而博”的恶趣！</p>
<p>（5）</p>
<p>哲人王兄这几个比喻生动极了！可惜时间不巧，您筹划的那么多题目都只成了存目，给我们这些饿汉看见了菜谱就收了席！</p>
<p>哲人王兄说到“隐微的目的”，让我也很有感慨。我们工科人员善于做的就是解题，所以通常是先明确目的，再确定方法，然后规划进度，最后解决问题即可。哪里知道，这个思维模式只在“求术”、“求生”乃至“求趣”这几个水平的阅读中才管用，对于“求道”跟“求学”根本就不是那么回事呢！</p>
<p>apollon兄总结得好，我是“求趣”之人，前面忝颜强说“求术”乃至“求学”，而哲人王兄呢，本来是最精于”求道”的，居然在这里迁就我很久，早该让我愧生颜变、“汗不敢出”才是。</p>
<p>前面的”阅读的目的理论”，从这个视角的观照下我觉得应该这么修正：</p>
<p>求趣者，随处即是阅读目的；求生者，自然以有益于生存为阅读目的；求术者，以完善专攻之术为阅读目的；求学者，以学问有所成为阅读目的；求道者呢，还如哲人王兄所说的，以养气、练气为阅读目的！唯气之为物也，至大无边，玄妙无常，所以作为阅读的目的，表面上简直也是个“无目的”，更不足为外人轻道了。</p>
<p>apollon兄既然敏感地察觉了这几种阅读在“层次”上的差别，居然还强令我们“统一思路”，这不啻于让航母跟皮筏协同作战、把废柴和赤金融于一炉，几乎是出现吉尔伯特赖尔所谓“范畴错误”了。您提到的英法德三国比较，让我想到Deleuze跟Guattari在《什么是哲学》中对尼采的“地缘哲学”一说的发挥。他们想到的正好是英法德这三国，考察了各国的哲学跟“土地”之间的关系。其意略云，法国人爱当地主，对土地就是丈量、利用、收租子；德国人呢，则不爱守成，他们最喜欢做的是重新征服土地，给土地“奠基”；英国人在这些作者眼里则是惯习和居住的民族（惯习和居住在欧洲语言里有同样的词根，比如拉丁文habitus），他们最容易和土地融为一体，达到自然无碍的态度。apollon兄说到三国在“核心书目”上面的区别，我觉得正可以拉这一段“地缘论“做援军。书从广义上说，也是从土里来的，所以各族对书目的态度，大概也就来自他们跟土地的关系吧。</p>
<p>哲人王（vivo）补充：</p>
<p>按照V的说法，文学的感受、读解方式和其他人文社科不同，文学是尽量繁复的发散性书写，而其他基本是力求简省的收敛性书写，它们只有有限的一些基本类型，于是，只要把里面具有代表性的一些典范作品掌握，就可以得其精髓，依然举政治学的例证，首先要明白《理想国》、《政治学》、《君主论》、《利维坦》、《论法的精神》、《政府论》、《社会契约论》、《正义论》、《无政府、国家与乌托邦》、《认真对待权利》等都是所有政治著述无法回避的“大品”，它们是政治话语的起点、是典范类型的代表，一个人切实理解了这些著作，再读其他依附性的稗贩式著作，自然会高屋建瓴、势如破竹，极端一些甚至可以不读二手著述，因为它们都推演可知。</p>
<p>历史有点奇怪，它也是细节式的趣味，但作为中国人，基本的阅读著作就是尚书、左传、国语、战国策、资治通鉴、二十四史等，如果不按照册数而按照品种论，也没有超过50种。</p>
<p>而文学不一样，不同作品之间没有强烈的替代性，不能说读过李白杜甫白居易就不用读曼殊大师和郁达夫的诗，读过《水浒传》《基督山伯爵》就不用读金庸古龙，它的流衍扩张有足够复杂的可能性，每一种都会给人截然不同的感性、景观和视野。然而，文学的流变也不是说有无限的类型，依照结构主义的说法，在它的底层，也隐隐可见一些原型（archetype）。在生命时间有限的硬约束下，阅读800-1000本文学书绰绰有余，当然，这里说的也是比较硬的核心著作。</p>
<p>Apollon所言甚是，《共和国》、《上帝之城》、《论君主政治》都是比较有典范性的核心著作，V的设想里，西方政治学的硬核大约有50部作品，还有潘恩、柏克、托克维尔、亨廷顿、哈耶克等等，上面为了叙述简洁，就用“等”代替之。</p>
<p>不独政治学、历史、文学，哲学、宗教、法律、经济学也都有自己的大品谱系，名单很容易找到，问题就在于我们有没有兴趣、心力去阅读。</p>
<p>chaque兄每有言说，皆云蒸霞蔚、胜义纷披，令人受用无穷。不过呢，智者千虑，必有一失，V仔细想一下，也不是没有驳难的余地，尝试在此申辨一二：</p>
<p>A、读书不一定要有明确的目的，比如Johnathan一样写作决定了的阅读，比如为了在课堂上给学生教授而决定了的阅读。我们恐怕幼时读闲书最起劲、最酣畅淋漓、最有生命的乐趣，但其时并没有什么显而易见的目的、计划，但这些阅读，却在一定程度决定了我们此生的情感感受方式、思维运作方式，他们是身体式的阅读，囫囵吞咽到胃里，消化后就长在我们肉里。慢慢一个人成熟，读书时考虑的外在因素强化，就可能会把把下咽的精神食品变成在喉咙间吞吐的香烟，嘴里吸进来一团雾鼻子里喷出去一团烟，只有极少数沾润到肺。Johnathan是在自谦，说“旋风似的读书，一路风行草偃，然而大风过后，草木齐齐直起腰身”，但对海量功利性比较强的阅读者，像毕业论文写作者、急于评职称者、焦虑于在媒体成名者，他们的情形据V观察就是如此，浮光掠影、蜻蜓点水，只求快速在书本找到对自己写作有价值的东西，而不能做一个安静的耐心的聆听者，充分汲取作者言说里的每一滴智慧。他们和文本的亲近是水油关系，而不是水盐关系。因此，我们在阅读的时候有时恰好要取消而不是强化目的性，以追求无目的的合目的性，和kant老人家说的审美一样，让读书成为自由的游戏。V的一个朋友“维舟试望故国”，博学好思，影响广泛，想必chaque兄也知道，有一次大家在一起聊天，有人就问他为何读书，他的回答很干脆，没有什么目的，不过是喜欢，而写作呢，也仅仅只是自己的娱乐，所以会很学术地写金庸武侠历史学研究这样反讽的游戏文章。他的阅读目的并不如Johnathan明确，但却也在写作上取得了类似的成就。</p>
<p>B、再详细阐释下前面所说的身体性阅读的概念。V有时貌似喜新厌旧、时尚、八卦，譬如喜欢的杂志是《ELLE》和《外滩画报》而不是《读书》和《万象》，譬如最爱的地方是迪厅酒吧而不是书店茶馆，譬如常常不厌其烦地把Acrobat、ABBYY FineReader、ACDSee升级到最新版，但有时观念又会非常正统，比如认为读书的主要目的不是写出什么鸿篇巨制，而应该是养气蓄志，基本也类似于陈老所言：“士之读书治学，盖将以脱心志于俗谛之桎梏。”所以，阅读的过程希望是让词语、段落震荡心灵，心灵生产温暖的血液，同时把血液运送到四肢百骸的过程，它给人气度、血性、涵养，成为行为的维生素，可以让自己待人接物温和宽容明敏坚强，附带能在言说书写上给予什么识见、学问、逻辑、情感、文采，都不是那么重要。简洁一点说，读书主要是给日常行动的肉体充电，而不是给言谈书写雪中送炭、锦上添花。坦率地讲，V自小有点是问题儿童，戾气重，我行我素，放诞乖谬，因此成长过程中一直在寻找自我疗救的方法，有时是彻底心灰意懒，有时又想稍微飞扬振作，当V再次返回校园的时候，导师问来读书的目的是什么，V说的是“养气”。此情此景在有的人看来会觉得可笑荒诞，却是V当年发生的事实。</p>
<p>C、身体性阅读还有一层意思，要把由阅读得到滋养的气和生命本身的气、生活经验带来的气合并在一起，来共同形成个人的能量场，如果一个人还去写作的话，用整个肉体和精神熔炼在一起的能储去书写，而不是去轻巧地摆弄把玩暂时过耳过目的词汇、风景、事物。鲁迅的《野草》，气魄之澎湃、意志之决绝、情感之激烈、色彩之秾艳，远远为周作人、张爱玲之流莫及，V相信这是因为鲁迅是在用听起来有些神秘的肉体精神综合气场在书写，而不是其他人相对单纯的知识式生活经验式写作。鲁迅的阅读具有身体性，所以他的写作也具有身体性，呈现着赤身肉搏的激烈、残酷、高昂，惊魂动魄。</p>
<p>D、某一具体文章上目的的残缺，或者在整体言说中目的的残缺不等于内在目的的残缺，即使有所说明，名义上的目的也不等同于实质上目的、隐含着的目的。出于一种策略上的考量，我们有时的确需要施特劳斯魔眼所发现的“隐微写作”，掩藏主要意图。比之于行军打仗，你不能在百万雄师横渡长江成功之前就把渡江的时间、地点播报全国，而是要完胜之后再发新闻稿。也可以举恐怖主义袭击的例证，他们素来神出鬼没，总是在把人炸得血肉模糊之后才通过某些渠道宣称由某某组织负责。记得有一个年轻学子几年前就宣称要在三年内成为学界领袖，结果，比三年还长的时光已经消逝，他有没有成为学界领袖呢？目的、目标的首先宣称就会把自己置于受限制的被动地位，或者非常危险，或者日后会成为被他人讥讽的把柄、笑话。说和做有如下几种关系：不说不做、既说又做、说了不做、做了不说；先说后做、边说边做、先做再说。V觉得比较优化的组合应该是既说又做但要先做后说。做是可以直接看见的行动，说却要通过语言、文字迂回到达他者的思维。维特根斯坦在《哲学研究》里说：不要去想，而是要去看！想总纠葛着思维、文字，而被意识过滤过的文字除了可以表露、彰显、澄清、限定事实外，它同时具有扭曲、粉饰、遮掩、颠倒事实的功效。于是，我们常常需要搁置且跨越语言、文字的迷雾，直击事实，面向实事本身(zu den Sachen selbst！）通过隐微曲折的行动线索去追踪、还原可能的主要目的，怎么做总比怎么说泄露更多的内在秘密。</p>
<p>针对chaque兄的指教，V筹划的回复还包括：1）如何重新定义万事通，2）阅读的势利，3）新知识，4）破解诠释学循环，5）书目规划怎样可能，6）要不要和书本亲熟。没想到只答复“阅读目的”一个话题，就已经写下大量滔滔不绝的废话。自思无甚高明之见，当前又近年关，冗务猬集，只能做出决断，把自己的筹划取消，说这么点供诸贤一哂即可。</p>
<p>“求道、求学、求术、求生、求趣”的阅读类型学研究实属高论，基本把读书者常见的心态包罗殆尽，但是在高下层次的划分上，V稍微有点不同意见。最强烈的主张是“求道、求学、求术、求生、求趣”全在一个层次上，没有高下之分。既然全都是“求”（同时求不得），当然是贪嗔痴三毒之列，就不复有层级的区别；如果实在要分出个高低，V觉得它们的次序大概是：求生>求趣>求术>求学>求道。越往前越切近于生活、生命的真实，越靠后则越凌虚蹈空，远离此在的本真。</p>
]]></content:encoded>
			<wfw:commentRss>http://jiahu.net/%e7%9c%8b%e7%9c%8b%e4%ba%ba%e5%ae%b6%e6%98%af%e6%80%8e%e4%b9%88%e8%af%bb%e4%b9%a6%e7%9a%84.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>各种体</title>
		<link>http://jiahu.net/%e5%90%84%e7%a7%8d%e4%bd%93.htm</link>
		<comments>http://jiahu.net/%e5%90%84%e7%a7%8d%e4%bd%93.htm#comments</comments>
		<pubDate>Sat, 08 Oct 2011 10:28:23 +0000</pubDate>
		<dc:creator>@ouc</dc:creator>
				<category><![CDATA[八卦]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://jiahu.net/?p=1698</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><embed src="http://www.tudou.com/v/6V9hC4mk35k/v.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="480" height="400"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://jiahu.net/%e5%90%84%e7%a7%8d%e4%bd%93.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何看病</title>
		<link>http://jiahu.net/%e5%a6%82%e4%bd%95%e7%9c%8b%e7%97%85.htm</link>
		<comments>http://jiahu.net/%e5%a6%82%e4%bd%95%e7%9c%8b%e7%97%85.htm#comments</comments>
		<pubDate>Sun, 25 Sep 2011 13:26:40 +0000</pubDate>
		<dc:creator>@ouc</dc:creator>
				<category><![CDATA[生活]]></category>
		<category><![CDATA[常识]]></category>
		<category><![CDATA[资料]]></category>

		<guid isPermaLink="false">http://jiahu.net/?p=1693</guid>
		<description><![CDATA[如何看病（－）：该看不该看 1. 我不想讨论医疗制度如何如何，只是在现有的条件下，尽可能帮助需要医疗救助的人，使人们看病的效率更高。 2. 请质疑任何从网络上获取的医学知识，包括本blog 3. 欢迎传播 问题1: 该看不该看 人的身体是有自我修复能力的。而且这种能力很强，显然比电脑和汽车厉害。有些疾病并不需要治疗，有些疾病是有“自限性”的——也就是时间到了自己就好了。 不过，能够发生在人身上的疾病，也是伴随人类进化了同样长的时间，也不是等闲之辈。 如果自己身体不适，是扛着，还是去医院就诊。这是个问题。 1. 如果器官的功能受损，需要立即就诊： 眼睛的功能是用来看东西的，突然看不见了，应该马上看医生。同理，突然听不见了，四肢运动突然出现障碍。。。值得注意的是，人类有许多器官是双份的，比如眼睛、耳朵。。有些人一只眼睛的视力突然下降，另一只却完好，有可能忽略了坏眼的问题。 2. 不能忍受的疼痛。 疼痛是身体发出的火警，不要去挑战疼痛。如果遇到不能忍受的疼痛，应该尽快就诊。比如腹痛、胸痛、眼痛。需要提示的是，即使你到了医院，通常医生也不会立即给你止痛。疼痛是火警，是了解身体状况的重要信号，没有人会在消灭火灾之前，先把附近的电话线都砍了。 3. 反复发作的不适 老毛病了，忍忍就过去了——大部分的癌症就是这样度过了无人骚扰的童年期。对于反复出现的不适，应该认真注意诱发的原因、缓解的方式。 对了，最重要的是——自己的年龄，&#62;50岁的，最好去看看，免除后患。 4. 已经处于某个疾病进程中，但是感觉突然发生了变化。 大夫可能已经告诉你这个病没什么，过几天自己就能好，开始的时候，感觉也是一天比一天好，可是今天突然恶化了，那么最好再去复查一下。 5. 别人看出来的疾病 通常不用着急，人类的身体有发达的自我检测系统，如果自己没有什么不舒服的感觉，多半没有太大的问题。（注意：医生经过身体检查发现的除外，比如身体上的包块之类的） 典型的是结膜下出血。一般是“白眼珠”上有鲜红的血迹，自己毫无感觉，不疼不痒视力不降，通常是照镜子或者是被其他人发现，这种不是“眼底出血”，这种是“白眼珠”上的细小血管破了，跟磕青了没什么区别。咳嗽、便秘、揉眼睛。。。都可能引起。 ＝＝＝ 定期体检是必要的。 自己的身体只有自己保护，兄弟靠不住、组织靠不住。 如何看病（二）：急诊还是门诊？ 一般医院都有急诊和门诊。 急诊是给紧急需要救治的病人准备的。 门诊则是给不那么紧急的病人准备的。 慢性病去看急诊是不道德的， 慢性病去看急诊是邪恶的， 慢性病去看急诊是不道德而且邪恶的。 急诊的设置是为了使病人在短时间内脱离危险，因此配备的药品都是应急的、速效的，配备的检查手段也是基本的，能够快速做出判断的。 &#8230; <a href="http://jiahu.net/%e5%a6%82%e4%bd%95%e7%9c%8b%e7%97%85.htm">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>如何看病（－）：该看不该看<br />
1. 我不想讨论医疗制度如何如何，只是在现有的条件下，尽可能帮助需要医疗救助的人，使人们看病的效率更高。<br />
2. 请质疑任何从网络上获取的医学知识，包括本blog<br />
3. 欢迎传播<br />
问题1: 该看不该看<br />
人的身体是有自我修复能力的。而且这种能力很强，显然比电脑和汽车厉害。有些疾病并不需要治疗，有些疾病是有“自限性”的——也就是时间到了自己就好了。<br />
不过，能够发生在人身上的疾病，也是伴随人类进化了同样长的时间，也不是等闲之辈。<br />
如果自己身体不适，是扛着，还是去医院就诊。这是个问题。<br />
1. 如果器官的功能受损，需要立即就诊：<br />
眼睛的功能是用来看东西的，突然看不见了，应该马上看医生。同理，突然听不见了，四肢运动突然出现障碍。。。值得注意的是，人类有许多器官是双份的，比如眼睛、耳朵。。有些人一只眼睛的视力突然下降，另一只却完好，有可能忽略了坏眼的问题。<br />
2. 不能忍受的疼痛。<br />
疼痛是身体发出的火警，不要去挑战疼痛。如果遇到不能忍受的疼痛，应该尽快就诊。比如腹痛、胸痛、眼痛。需要提示的是，即使你到了医院，通常医生也不会立即给你止痛。疼痛是火警，是了解身体状况的重要信号，没有人会在消灭火灾之前，先把附近的电话线都砍了。<br />
3. 反复发作的不适<br />
老毛病了，忍忍就过去了——大部分的癌症就是这样度过了无人骚扰的童年期。对于反复出现的不适，应该认真注意诱发的原因、缓解的方式。<br />
对了，最重要的是——自己的年龄，&gt;50岁的，最好去看看，免除后患。<br />
4. 已经处于某个疾病进程中，但是感觉突然发生了变化。<br />
大夫可能已经告诉你这个病没什么，过几天自己就能好，开始的时候，感觉也是一天比一天好，可是今天突然恶化了，那么最好再去复查一下。<br />
5. 别人看出来的疾病<br />
通常不用着急，人类的身体有发达的自我检测系统，如果自己没有什么不舒服的感觉，多半没有太大的问题。（注意：医生经过身体检查发现的除外，比如身体上的包块之类的）<br />
典型的是结膜下出血。一般是“白眼珠”上有鲜红的血迹，自己毫无感觉，不疼不痒视力不降，通常是照镜子或者是被其他人发现，这种不是“眼底出血”，这种是“白眼珠”上的细小血管破了，跟磕青了没什么区别。咳嗽、便秘、揉眼睛。。。都可能引起。<br />
＝＝＝<br />
定期体检是必要的。<br />
自己的身体只有自己保护，兄弟靠不住、组织靠不住。<br />
如何看病（二）：急诊还是门诊？<br />
一般医院都有急诊和门诊。<br />
急诊是给紧急需要救治的病人准备的。<br />
门诊则是给不那么紧急的病人准备的。<br />
慢性病去看急诊是不道德的，<br />
慢性病去看急诊是邪恶的，<br />
慢性病去看急诊是不道德而且邪恶的。<br />
急诊的设置是为了使病人在短时间内脱离危险，因此配备的药品都是应急的、速效的，配备的检查手段也是基本的，能够快速做出判断的。<br />
所以，其实在急诊，你并不能找到疗效好副作用小的药品，化验检查并不是很全，辅助检查的设备也不是都能做的。<br />
看急诊是非常累的，尤其是夜班。急诊夜班需要充沛的体力，所以，活跃在急诊第一线的一定是年轻大夫，不论在中国还是美国，我有95%的把握说，你在急诊碰到的医生是工作5年以内的，有70%的把握说，是在3年以内。<br />
不要仅仅因为白天上班，不好请假，而在晚上去看急诊。你得不到最好的药物，无法接受最好的医生的帮助，不能完成最好的检查和辅助检查。在这种情况下，你为了节省一天的工资而侵占了分配给急症患者的医疗资源，是邪恶的。<br />
需要去急诊看的病：<br />
1. 刚刚发生的疾病。<br />
一个病已经得了三天了，还跑到急诊去看，我会态度很好的在心里痛骂。<br />
2. 这个疾病可能在8小时内使器官的功能造成不可逆的损害。<br />
严格一点，需要急诊处理的眼病只有：视网膜中央动脉阻塞（需要在10分钟内救治），眼球破裂伤，急性闭角型青光眼急性发作。（补充下，还有化学伤、烧伤等等）<br />
突然发作的腹痛、胸痛、眼痛，还是应该到急诊看看先。<br />
如何看病（三）：看门诊的时间<br />
我国是地大物博人口众多，很小的可能性，乘以13亿，都是无比巨大的数字。<br />
任何你觉得合适的时间，一定是门诊人多的时间。<br />
1. 一定要避开三个的时间：<br />
星期一上午，星期一上午，星期一上午<br />
只能用人海茫茫来形容。<br />
为了您和家人的健康，请不要在星期一上午看病<br />
请转告您周围的人，“为了您和家人的健康，请不要在星期一上午看病”，并请他们也转告周围的人。<br />
2. 通常来说上午看病的人多，下午少，周一多，周五少。到了周五的下午，基本看病的人就很少了。看来辛勤的工作有益于身体健康。<br />
3. 季节性<br />
放假了去配个眼镜吧——老老实实排队吧<br />
等天凉快了再做这个手术吧——老老实实排队吧<br />
等放假休息有时间了再去看这个病吧——老老实实排队吧<br />
4. 恶劣的天气<br />
刮风下雨是看病的最佳时机，雨越大，人越少。其实，天气对许多人的出行，并没有太大影响，如果工作很忙，需要在短时间内看个病，然后赶紧回去上班，最好是在下雨的天气去看病。<br />
如何看病（四）：看病前的准备<br />
相信您已经选择好了看病的日期，下面介绍一下看病前的准备。<br />
1. 回顾历史：<br />
* 请在看病之前，回顾一下您的病史，从什么时候开始发病？发病的时候自己有什么感觉？如果有时间，请用本子和笔写下来。<br />
* 回想一下是否对药物过敏。药物过敏史对于医生非常重要。如果您在以前用某种药物出现过严重的不良反应，请记录下来，在看病的时候向您的医生咨询是否属于药物过敏，如果是的，请医生在您最常用的病历封面上写下过敏的药物名称。<br />
* 回忆一下曾经接受过的治疗，以及正在使用的药物，和它们的商品名称。如果您还能找到药物的说明书或者空的药瓶或者剩余的药物，请带上它们。<br />
* 带齐以前的病历记录，曾经做过的检查结果。每次看过病后，也请收好所有的检查结果和病历，有些检查结果是由热敏打印，时间久了容易褪色，请复印一份保存。<br />
2. 准备行政用品：<br />
* 带上信用卡和足够的现金，有些医院不支持刷卡，而取款机前面排队的人可能很多。注意看管好自己的随身财物。如果您是小偷，盗亦有道，请勿在医院行窃。<br />
* 带好身份证、社保卡、医疗蓝本、退休证、离休证、医院的就诊卡等等一切跟医保可能有关系的东西。平时除了身份证，这些东西最好专门使用一个透明塑料文件袋放在一起。<br />
3. 安排好病假当天的事务：<br />
* 请好病假，安排好当日的工作。工作是国家的或者资本家的，身体是自己的，只要不给同事添麻烦，离开工作岗位是没有问题的。<br />
* 如果是去看急诊或者自觉比较严重的器官功能问题，比如严重的心前区疼痛、视力突然丧失等，带上手机和充电器，您有可能会需要住院或者留院观察。<br />
* 最好能够找个比您更健康的伙伴陪同您去看病。<br />
* 预计前往的时间，不要在上午11点以后，或者下午4点以后才去医院挂号。因为，恐怕没有号了，或者虽然看了医生，但是到需要做检查的时候，已经过了下班时间，其他的科室已经没人了。<br />
* 估计一下交通情况，选择合适的交通工具。最好不要自己开车或者骑车，请打车前往医院。一是医院附近很难停车，停车费高昂，二是您接受的某些治疗可能再不适合开车或者骑车。<br />
* 查询一下当日的天气。天气越恶劣，看病的人越少。<br />
4. 选择合适的医院：<br />
* 如果您已经具有相当的医学知识，您可以根据自己的病情来选择医院。<br />
* 一般社区医院和二级医院都非常的清净，去看病取药会很舒适。建议您首先去社区医院或者临近的二级医院就诊，至少可以获得相应的医学建议和转诊建议。如果您对这些医院的医疗质量不放心，也可以事先咨询一下有医学背景的朋友，去哪里看比较好。<br />
* 当您选择了三级甲等医院看病，也就意味着选择挂号难、看病难。<br />
5. 挂号<br />
* 没什么好说的，太难了，甚至对于医生自己看病也很困难。如果是外地病人到另一个城市看病，而且要看某个特定的专家，试试提前在网上预约之类的方法，免得到了以后挂不上号，要等几天甚至一周，在北京最低的生活费也是100元/天，一旦等起来消费惊人。<br />
6. 调整心情<br />
* 得病不是一件愉快的事情。但是人总是会生病的，迟早也是要病死的。所以疾病降临到自己身上，也没什么好抱怨的。<br />
* 去医院看病，并不能一定能够治好。实际上，给您看病的医生，最后一定看不好他自己的病，100%是病死的。<br />
* 与您的医生合作，共同对抗您的疾病。<br />
* 《史记・扁鹊仓公列传》“故病有六不治：骄恣不论于理，一不治也；轻身重财，二不治也；衣食不能适，三不治也；阴阳并，脏气不定，四不治也；形赢不能服药，五不治也；信巫不信医，六不治也。”一是狂妄、骄横、不讲道理的人；二是只重视钱财而不重视养生的人；三是对服饰、饮食、药物等过于挑剔、不能适应的人；四是体内气血错乱、脏腑功能严重衰竭的人；五是身体极度赢弱、不能服药或不能承受药力的人；六是只相信鬼神、不信任医学的人。所以如果您不幸属于上述六种情况之一，您的病不论中医还是西医都很难治好。<br />
7. 穿着打扮<br />
* 不要化妆。也许您会有面色苍白、黑眼圈。这些都没关系，这些恰恰是医生需要看到的。即便是去看那个很帅或者很漂亮的医生。<br />
* 尽量穿容易穿脱的衣物，比如上衣建议是开襟的衣服，而不是套头的衣服。<br />
* 袖子要比较容易的挽起来或者脱下。比如冬天，最好穿厚实的大衣，而里面穿相对薄一些的衣服。<br />
* 口罩。如果有的话戴上，医院是疾病最集中的地方。本来您就处于比较虚弱的疾病状态，不要再感染了其他的疾病。口罩从医院回来以后要清洗，手也要好好洗。<br />
8. 检查确认上面的各种准备事项，带齐所有的东西，出发。如果能战胜疾病，就借助医生的力量一起战胜它，如果不能战胜疾病，那么从医生那里学会如何与自己的疾病共存。<br />
如何看病（五） 怎样与医生交流<br />
您与门诊医生接触的时间<br />
&#8212;<br />
如前所述，当您选择了就诊于三级甲等医院的时候，您也就选择了挂号难和看病难。同时也意味着其他的病人也同样面临挂号难和看病难的问题。为了尽可能的缓解这些问题，一位医生会在出诊时间内看尽可能多的病人，特别是专家，有可能今天额定的挂号量是看20位病人，但是通常会因为外地病人、可怜的病人、重症的病人、有权有势惹不起的病人而加号到30甚至40个。如果上午的门诊是30人，从早上8点看到12点，共4小时，中间没有喝水上厕所的时间，那么平均接待每位病人的时间是4*60/30=8分钟。不错，这就是您凌晨爬起来，裹着军大衣在医院挂号室门外在寒风中等了三个小时以后挂上号，又从上班起等了3小时以后换来的就诊时间，8分钟，平均值。<br />
还不够准确，这8分钟并不是您坐在诊室内和医生交流的时间，在形成初步诊断以后，医生会给您安排一些检查，大多数是当天就能够完成的，所以您拿着化验单检查单做完检查以后回到医生那里，还要再给他看结果。想必您已经注意到了，在您等候过程中，总有些人没拿着挂号条就冲进了医生的诊室，其实那些很可能是做完检查给医生看结果的病人。<br />
也许您会非常好心的帮助医生维持就诊的秩序，坚决制止那些加塞儿的人。我建议尽可能在诊室外进行，也许您一把拽出来的是那个刚刚跑了几层楼憋了半天尿才做完B超想拿给医生看结果的病人，他也只有平均8分钟的时间与医生交流。<br />
与医生说话<br />
&#8211;－<br />
不论您是看中医还是看西医，中医讲究望闻问切，西医讲究问病史和查体。医生都需要和您交谈才能够知道您的疾病是怎样的。我们的身体里布满了各种自检的信号线，它们会将身体的损伤通过它们自己的语言向您的大脑做汇报，比如疼痛、酸胀、无力、烧灼感、异物感。请向医生报告这些感觉，他才能帮助您。<br />
中医不是仅仅切脉就可以摸出您是什么病，西医也不是仅仅靠CT、B超、化验单就可以知道您是什么病。诊断疾病就像是CSI做调查，全面的证据才能指认真凶。<br />
虽然很少，但是确实有一些病人到医生面前一句话不说，手一伸或者脸一挺，医生要先猜出它的主要症状和不舒服，说对了以后，它才继续看病。从前我出门诊，在相对闲适心情也不错的时候会陪着它们玩一会，答对的话它们会很心服口服的。不过通常情况下，我还是希望由红太狼帮我看这些病人。<br />
另一种人很多，他们会不断的陈述。比如，”我从20年前就开始胸闷了，那正是小平同志南巡的那一年啊，改革开放以来……”，有时候这种倾诉是不自觉的，尤其是老年人。老年人必须依靠事件来回忆时间顺序，所以我在《看病前的准备》里写需要事先回忆一下病史，并且记录下来。当倾诉与疾病无关的时候，医生会打断您，或者是您的长辈，这不是不尊重或者态度不好，而是您只有8分钟。<br />
区分事实和判断<br />
&#8212;<br />
请尽可能学会区分陈述事实和判断，区分这两点是需要极高的知识和智力的，而且稍微不小心即使具有极高知识和智力的人也可能混淆。<br />
如下是事实陈述：“我眼睛红”，“我发烧最高到39度”，“我嗓子疼”<br />
如下是判断陈述：“我眼睛发炎了”，“我发烧很高”，“我上火了”<br />
除非是在精神科或者心理门诊，否则请您尽可能陈述事实。<br />
对于您的感受，请按照不舒服发生的感觉或者表现，以及它们发生的时间来描述，比如“尿尿尿不出来3天”是非常好的描述，而“尿不出来很久了”则仍然没有给医生提供足够的信息。我的建议是<br />
* 慢性病请精确到年或者月，比如“运动后胸闷5年”，<br />
* 近1-2年发病的，请精确到月，比如“双眼视力下降6个月”<br />
* 近1个月内发病的，请精确到日，比如““尿尿尿不出来3天”<br />
* 急性病请精确到小时，比如“左眼前发黑看不见东西1小时”。<br />
如果您有数字能够描述您的病情，请尽可能告诉医生数字。比如，“这个星期我的血糖最高到过13”，但如果您仅仅说“这个星期我的血糖很高”，那得看您跟谁比了。对于医生的提问，特别是有“多少”这样的关键词的提问，请尽量以数字回答。不过很遗憾，通常当我问起“您得高血压多少年了？” 80%以上的回答是“很久了”。<br />
疼痛与痛苦<br />
&#8212;<br />
看病，哪怕是急诊，医生不会马上给您解除痛苦。<br />
疼痛，是大自然赐给人类的礼物，虽然那是无人想要的礼物。疼痛是身体发出的火警，是诊断疾病和判断疾病进展的重要信号，是您生病的身体部分直接向医生的报告。在没有明确诊断之前，医生是不能够帮病人止痛的，就好像没有查明报告火警的位置，我们不可能把火警的电话轻易挂掉。也许您或者您的家人在检查床上疼得死去活来，医生还是会冷漠的用手摸这摸那，甚至使劲压一下问您是否更疼，此时也请告诉医生您的感受。<br />
另外，值得说明的一点，也需要向低年医生强调的一点是，那种显示出痛苦，大声叫嚷的病人，另一方面也说明他们有强大的生命力，而另一类苍白的悄无声息的病人，却更有可能有生命危险。所以当您在急诊看到医生不顾您大声叫嚷的同伴，而去看另一个悄无声息的病人时，不要去阻挡医生。<br />
态度<br />
&#8212;<br />
如果您收入不高，生活不充裕，请直接跟医生说，相信很多医生会和我一样给您选择相对便宜的药品和治疗。不过同时相对便宜的药物也意味着疗效，特别是副作用的不同。<br />
如果您在路上堵车，找不到停车位，在挂号室门前受冻，坐在门诊等候一上午无所事事，请尽量不要将怨气宣泄在那个为您看病的医生身上，他在上班路上一样堵车，一样找不到停车位，您在挂号室门前受冻的时候，他在病房检查住院的病人，您在门诊等候的时候，他在诊室里奋力看病。<br />
很多时候医生的态度是由科室决定的，越是紧急和危急生命的科室，医生的态度越冷漠甚至恶劣，在急诊室不可能有医生和颜悦色的跟家属说话，有且只有厉声命令家属去做什么。医生不会也不应该把病人当作自己的亲人来对待，事实上很多医生不敢给自己的亲人做手术，因为感情因素可能会影响判断。<br />
希望您能明白，医生的态度与医学水平没有直接的关系。<br />
期望<br />
&#8212;<br />
相当多的疾病是不能够消除病因的，比如常见的高血压、糖尿病、青光眼、类风湿……，现在的医学也无法解决这些问题，医生能够提供的是尽可能控制疾病进展的方法，使疾病无害化，血压降低到正常值，意味着您几十年以后死于脑出血的可能性要减小，眼压降低到目标眼压，意味着您丢失视野的速度能够减慢，甚至停止。您能够在医生这里找到的不一定是战胜疾病的方法，而往往是学会如何与疾病共存，共同生活。<br />
新闻或者报纸上出现的某个疾病的治疗“希望”，并不等于真正在医院就可以给您用上。医学是非常保守的学科，一种治疗方法要经过几年、十几年甚至几十年的研究才能确定下来，一种新药上市至少要经过十年的实验和审批才能够进入医院的药房。<br />
即使是经过那么多年的研究确定下来的治疗方案，仍然不可能100%的保证治好您的疾病，绝对不可能。治病和修车不一样，不是您交了钱，就一定可以拿到一辆修好的车。<br />
请您一定记住：花了钱，绝对不可能得到保证治愈，绝对不可能保证没有风险。<br />
万一你得到了医生这样的保证，说明：<br />
a)医生在安慰你，并且确认你在有生之年不会回来找麻烦，通常来说时间不长了；<br />
b)你接受的治疗是安慰剂或者是对照组；<br />
c)跟你说话的压根就不是个医生。<br />
知情同意<br />
&#8212;<br />
如前所述，您绝对不可能得到保证治愈，绝对不可能保证没有风险。在侵入性的操作治疗或者手术之前，医生会给您看一个知情同意书。这个知情同意书就像是您在购买股票、基金时听到的“入市有风险，投资需谨慎”一样，是要告诉您可能发生的危险的。<br />
1. 知情同意书上写的每一种风险，都是真实发生过的，至少有一个真实的病人，真真切切的经受过这样的痛苦。<br />
2. 知情同意书上写的出现的风险，一旦发生，医生也会继续全力的帮助您。<br />
不证自明的公理<br />
&#8212;<br />
1. 人都是要生病的。<br />
2. 人都是要病死的。<br />
也许从某种程度上来说，正常人和病人，甚至癌症病人之间的区别，只是5年生存率有所不同而已，而且都小于100%</p>
<p>来源: <a href="http://goldengrape.posterous.com/72094659" target="_blank">http://goldengrape.posterous.com/72094659</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jiahu.net/%e5%a6%82%e4%bd%95%e7%9c%8b%e7%97%85.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>程序猿装B指南</title>
		<link>http://jiahu.net/%e7%a8%8b%e5%ba%8f%e7%8c%bf%e8%a3%85b%e6%8c%87%e5%8d%97.htm</link>
		<comments>http://jiahu.net/%e7%a8%8b%e5%ba%8f%e7%8c%bf%e8%a3%85b%e6%8c%87%e5%8d%97.htm#comments</comments>
		<pubDate>Fri, 02 Sep 2011 18:41:40 +0000</pubDate>
		<dc:creator>@ouc</dc:creator>
				<category><![CDATA[八卦]]></category>
		<category><![CDATA[程序员]]></category>

		<guid isPermaLink="false">http://jiahu.net/?p=1689</guid>
		<description><![CDATA[一.准备工作 “工欲善其事必先利其器。” 1.电脑不一定要配置高，但是双屏是必须的，越大越好，能一个横屏一个竖屏更好。一个用来查资料，一个用来写代码。总之要显得信息量很大，效率很高。 2.椅子不一定要舒服，但是一定要可以半躺着。 3.大量的便签，各种的颜色的，用来记录每天要完成的事务，多多益善。沿着电脑屏幕的边框，尽量贴满，显出有很多事情的样子。 4.工具书，orelly的，机械工业，电子工业什么的都可以，能英文就英文，不行影印版的也可以，反正越厚越好，而且千万不要放在书架上，一定要堆在桌上，半打开状。 二.从进门开始 0..绝对不10点以前出现在公司. 1.着装！着装！不管你是去实验室，或者去公司的大楼，在或者是小公司的民宅，或是自己创业的黑作坊；无论是春夏秋冬白天晚上刮风下雨电闪雷鸣台风龙卷风，一个装b的程序员都要十分在意自己着装！这里只提出参考建议。初级装：衬衣+牛仔裤+休闲鞋。中级装：T恤+宽松短裤+拖鞋。高级装：背心+宽松大花裤衩+人字拖。 2.得体的举止。在走廊以及任何形式的过道里，一定要双手插兜，走得像个痞子，至少要看起来有点反社会，如若不行，可走文弱天才型geek路线。。 3.如果有女性在你背后指指点点，小声嘀咕说这一定是一个技术男的时候，应该先低头，然后保持低头状态，缓缓回头，坏坏地蔑笑但是不要出声，然后快步前行。 4.进门后，一定不要跟任何人打招呼，笔直走向自己的位置，最多路过打一杯咖啡，千万不要有多余的动作，显示出自己的专注与心无旁骛。 三.坐下就不要再动了 1.坐下以后，姿势需要略微后仰，能翘着二郎腿最好了，然后在后仰的情况下低着头，以便看到屏幕，然后千万就不要再动了。 2.粗暴地把电脑前的大堆书推开一个口，然后摘下电脑上的一个便签，看一眼，不过3秒，可以开始coding了。 3.能不用IDE就不要用，实在装不了，无论IDE是什么，一定要调成DOS那种黑色背景的。 4.如果写前台界面，就不停地调试后台代码；如果写java，就在里面混编C；如果写C，就在里面混编汇编。不光要coding，还要时不时的翻出一本什么英文的书翻一翻，看不懂就看看插图，然后扔到面前假装懂了继续coding。 5.什么看起来高端就用什么，不要管实用不实用。例如对C++：switch统统重构成多态；如果有指针，统统改成智能的；C++一定要自己写template；数字是全部要替换成宏的名字能起多长就起多长；struct就不要出现了，如果出现，也一定要用__attribute__修饰一下；运算都是位操作的；操作符都是重载的；网络都是并发缓冲线程池的；int只用int32_t声明的;继承不用普通的，什么多继承虚继承啊；helloworld也要写捕获异常的；后人一看代码，中间一堆关键字extern,asm,auto,XXXXX_cast,volatile,explicit,register,template，让一般总在敲int,if,else,for的小程序员顿时心生崇拜。 6.注释？算了吧。只有两个路线可以选：一，变量名起得巨长无比，看代码就和读英文文章一样顺畅，根本不需要加注释。 二，代码无比晦涩，加不加注释根本无影响。 7.千万不要用IM工具交流，千万不要问同事问题，显得自己没有水平，都是自己上网或者查书。 8.无论是同事间开玩笑或者发生任何群体性事件，不要抬头，更不要东张西望，即使地震火灾，也一定要先提交代码再行离开。 四.潇洒地离开 1.人走，主机是千万千万不能关的，至少要跑个daily build，实在不行正在svn提交也勉强算过关。 2.书应该已经又堆到屏幕前了，千万不要整理，明天再来推开。 3.不强求最后一个走，但一定要所有的非程序员，什么市场啊前台啊pm啊都走光了，才可以走。 4.走得时候一定要率性，千万不要收拾任何东西，站起来，出门，好的，就这样。 5.如果今天一定要说句话的话，找到那个最苦逼的程序员，跟他说，你进度太慢了啊，不要老让我等你。 作者：程序猿 来源：http://sighlife.com]]></description>
			<content:encoded><![CDATA[<p><img src="http://jiahu.net/wp-content/uploads/2011/09/程序猿.jpg" alt="" title="程序猿" width="402" height="220" class="alignnone size-full wp-image-1690" /><br />
一.准备工作<br />
“工欲善其事必先利其器。”<br />
1.电脑不一定要配置高，但是双屏是必须的，越大越好，能一个横屏一个竖屏更好。一个用来查资料，一个用来写代码。总之要显得信息量很大，效率很高。<br />
2.椅子不一定要舒服，但是一定要可以半躺着。<br />
3.大量的便签，各种的颜色的，用来记录每天要完成的事务，多多益善。沿着电脑屏幕的边框，尽量贴满，显出有很多事情的样子。<br />
4.工具书，orelly的，机械工业，电子工业什么的都可以，能英文就英文，不行影印版的也可以，反正越厚越好，而且千万不要放在书架上，一定要堆在桌上，半打开状。</p>
<p>二.从进门开始<br />
0..绝对不10点以前出现在公司.<br />
1.着装！着装！不管你是去实验室，或者去公司的大楼，在或者是小公司的民宅，或是自己创业的黑作坊；无论是春夏秋冬白天晚上刮风下雨电闪雷鸣台风龙卷风，一个装b的程序员都要十分在意自己着装！这里只提出参考建议。初级装：衬衣+牛仔裤+休闲鞋。中级装：T恤+宽松短裤+拖鞋。高级装：背心+宽松大花裤衩+人字拖。<br />
2.得体的举止。在走廊以及任何形式的过道里，一定要双手插兜，走得像个痞子，至少要看起来有点反社会，如若不行，可走文弱天才型geek路线。。<br />
3.如果有女性在你背后指指点点，小声嘀咕说这一定是一个技术男的时候，应该先低头，然后保持低头状态，缓缓回头，坏坏地蔑笑但是不要出声，然后快步前行。<br />
4.进门后，一定不要跟任何人打招呼，笔直走向自己的位置，最多路过打一杯咖啡，千万不要有多余的动作，显示出自己的专注与心无旁骛。<br />
三.坐下就不要再动了<br />
1.坐下以后，姿势需要略微后仰，能翘着二郎腿最好了，然后在后仰的情况下低着头，以便看到屏幕，然后千万就不要再动了。<br />
2.粗暴地把电脑前的大堆书推开一个口，然后摘下电脑上的一个便签，看一眼，不过3秒，可以开始coding了。<br />
3.能不用IDE就不要用，实在装不了，无论IDE是什么，一定要调成DOS那种黑色背景的。<br />
4.如果写前台界面，就不停地调试后台代码；如果写java，就在里面混编C；如果写C，就在里面混编汇编。不光要coding，还要时不时的翻出一本什么英文的书翻一翻，看不懂就看看插图，然后扔到面前假装懂了继续coding。<br />
5.什么看起来高端就用什么，不要管实用不实用。例如对C++：switch统统重构成多态；如果有指针，统统改成智能的；C++一定要自己写template；数字是全部要替换成宏的名字能起多长就起多长；struct就不要出现了，如果出现，也一定要用__attribute__修饰一下；运算都是位操作的；操作符都是重载的；网络都是并发缓冲线程池的；int只用int32_t声明的;继承不用普通的，什么多继承虚继承啊；helloworld也要写捕获异常的；后人一看代码，中间一堆关键字extern,asm,auto,XXXXX_cast,volatile,explicit,register,template，让一般总在敲int,if,else,for的小程序员顿时心生崇拜。<br />
6.注释？算了吧。只有两个路线可以选：一，变量名起得巨长无比，看代码就和读英文文章一样顺畅，根本不需要加注释。 二，代码无比晦涩，加不加注释根本无影响。<br />
7.千万不要用IM工具交流，千万不要问同事问题，显得自己没有水平，都是自己上网或者查书。<br />
8.无论是同事间开玩笑或者发生任何群体性事件，不要抬头，更不要东张西望，即使地震火灾，也一定要先提交代码再行离开。<br />
四.潇洒地离开<br />
1.人走，主机是千万千万不能关的，至少要跑个daily build，实在不行正在svn提交也勉强算过关。<br />
2.书应该已经又堆到屏幕前了，千万不要整理，明天再来推开。<br />
3.不强求最后一个走，但一定要所有的非程序员，什么市场啊前台啊pm啊都走光了，才可以走。<br />
4.走得时候一定要率性，千万不要收拾任何东西，站起来，出门，好的，就这样。<br />
5.如果今天一定要说句话的话，找到那个最苦逼的程序员，跟他说，你进度太慢了啊，不要老让我等你。</p>
<p>作者：程序猿<br />
来源：<a href="http://sighlife.com/75.html" target="_blank">http://sighlife.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jiahu.net/%e7%a8%8b%e5%ba%8f%e7%8c%bf%e8%a3%85b%e6%8c%87%e5%8d%97.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ORA-24761 Unable to get error message (6107)</title>
		<link>http://jiahu.net/ora-24761-unable-to-get-error-message-6107.htm</link>
		<comments>http://jiahu.net/ora-24761-unable-to-get-error-message-6107.htm#comments</comments>
		<pubDate>Mon, 11 Jul 2011 14:37:45 +0000</pubDate>
		<dc:creator>@ouc</dc:creator>
				<category><![CDATA[工作]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://jiahu.net/?p=1682</guid>
		<description><![CDATA[Error: 10 minute limit on distributed transactions Running a distributed transaction on Windows XP SP2 that exceeds 10 minutes will cause the transaction to rollback with an ORA-24761 error. The error message is: Unable to get error message (6107) (0) &#8230; <a href="http://jiahu.net/ora-24761-unable-to-get-error-message-6107.htm">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Error</strong>:</p>
<blockquote><p><strong>10 minute limit on distributed transactions</strong></p></blockquote>
<p>Running a distributed transaction on Windows XP SP2 that exceeds 10 minutes will cause the transaction to rollback with an ORA-24761 error. The error message is:</p>
<blockquote><p><strong>Unable to get error message (6107) (0)</strong></p></blockquote>
<p>The time out defined for the component in Component Services does not matter.</p>
<p><strong>Solution</strong>:</p>
<p>If no timeout is specified in the TransactionScope constructor, a transaction has 1 min timeout by default.</p>
<p>This timeout can be overridden in the app.config (or web.config ) by adding following lines.</p>
<p style="padding-left: 30px;">&lt;system.transactions&gt;<br />
&lt;defaultSettings timeout=”00:30:00&#8243; /&gt;<br />
&lt;/system.transactions&gt;</p>
<p>Anyway, to prevent too long transactions, a maximum timeout can be specified at machine.config level by setting</p>
<p style="padding-left: 30px;">&lt;system.transactions&gt;<br />
&lt;machineSettings maxTimeout=”00:30:00&#8243; /&gt;<br />
&lt;/system.transactions&gt;</p>
<p>If this is not specified explicitely, the maxTimeout has a default value of 10 minutes.</p>
<p>So at the end my code looks like:</p>
<p style="padding-left: 30px;">
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">try<br />
{<br />
// set no timeout in the constructor<br />
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))<br />
{<br />
}<br />
}<br />
catch<br />
{}</div></td></tr></tbody></table></div></p>
]]></content:encoded>
			<wfw:commentRss>http://jiahu.net/ora-24761-unable-to-get-error-message-6107.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

