<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_joe-yang</title><subtitle type="text">Great works are performed, not by strength, but by perseverance.</subtitle><id>http://feed.cnblogs.com/blog/u/29878/rss</id><updated>2012-05-15T14:06:35Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/29878/rss"/><entry><id>http://www.cnblogs.com/joe-yang/archive/2012/05/15/2502310.html</id><title type="text">12 Effective Ways To Improve Your Programming</title><summary type="text">1. Never Stop Learning and ReadingReadbooks, not just websites.Readfor self-improvement, not just for the latest project.Readabout improving your trade, not just about the latest technology.Some of the books listed here would be a good start:The most influential programming books of all time2. Work </summary><published>2012-05-15T14:01:00Z</published><updated>2012-05-15T14:01:00Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/joe-yang/archive/2012/05/15/2502310.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/archive/2012/05/15/2502310.html"/><content type="html">&lt;p&gt;&lt;strong&gt;1. Never Stop Learning and Reading&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Read&lt;/strong&gt;&lt;span&gt;&amp;nbsp;books, not just websites.&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Read&amp;nbsp;&lt;/strong&gt;&lt;span&gt;for self-improvement, not just for the latest project.&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Read&amp;nbsp;&lt;/strong&gt;&lt;span&gt;about improving your trade, not just about the latest technology.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Some of the books listed here would be a good start:&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.internetsecuritydb.com/2011/09/top-ten-most-influential-programming.html"&gt;The most influential programming books of all time&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Work With People Smarter Than Yourself&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;Working with smarter and/or more experienced developers will teach you a great deal.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Become a Polymath (or 'Jack-of-all-Trades')&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;Decide to be a 'Jack-of-all-Trades', allowing you to avoid becoming 'pigeon-holed' into one specialty, which can stagnate your programming skills, as well as hurt your future employment prospects.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Read and Document Other People's Code&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;Writing code is significantly easier than reading someone else's code and figuring out what it does.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. Get Programming Experience on a Real Project&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;There is nothing like getting in and coding, especially under pressure - work on a real project, with real fickle customers, with real, ever-changing requirements and with real engineering problems.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. Teach Others About Programming&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;This will force you to understand something at a completely different level, since you have to explain it to someone else.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7. Learn One New Programming Language Every Year&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;One year gives you enough time to get past the basics - it pushes you towards understanding what's beneficial in that language, and to be able to program in a style native to that language.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8. Complete One New Pet Project Every Year&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;Start a "pet" project and follow it to completion and delivery; a good pet project will push your boundaries and keep you interested.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9. Learn Assembly Language&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;Learning a low level language like assembly gives you insight into the way computers 'think' without any high-level abstractions; the elegance at this level is surprising.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10. See Your Application From the End User's Perspective&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;Interact with the end-user to see, through their eyes, how they use the software; end users are typically not technical, and they often see software as a magical piece of work, while you see software as a logical set of steps.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;11. Start a Physical Exercise Program&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;You work a whole lot better when you're in good physical shape - problems become easier and less overwhelming, wasting time is much less of a temptation, you can think clearer, and working through things step by step doesn't seem an arduous task.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12. Learn Touch Typing&lt;/strong&gt;&lt;br /&gt;&lt;span&gt;Learning to touch type is a quick and effective way to give your productivity a boost as a programmer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Cross posted from:&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.dodgycoder.net/2011/10/how-to-become-better-programmer.html"&gt;Dodgy Coder - How To Become a Better Programmer&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/joe-yang/aggbug/2502310.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/joe-yang/archive/2012/05/15/2502310.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/joe-yang/archive/2012/05/13/2498461.html</id><title type="text">connection pools</title><summary type="text">Each connection pool is associated with a distinct connection string. When a new connection is opened, if the connection string is not an exact match to an existing pool, a new pool is created. Conn...</summary><published>2012-05-13T12:34:00Z</published><updated>2012-05-13T12:34:00Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/joe-yang/archive/2012/05/13/2498461.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/archive/2012/05/13/2498461.html"/><content type="html">&lt;p&gt;Each connection pool is associated with a distinct connection string. When a new connection is opened, if the connection string is   &lt;br /&gt;not an exact match to an existing pool, a new pool is created. Connections are pooled per process, per application domain, per    &lt;br /&gt;connection string, and, when using integrated security, per Windows identity. In this case, the connections are configured to use    &lt;br /&gt;integrated security. Each user has a discrete Windows identity resulting in the creation of a connection that is pooled separately.    &lt;br /&gt;There is one connection per connection pool.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/joe-yang/aggbug/2498461.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/joe-yang/archive/2012/05/13/2498461.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/joe-yang/archive/2012/05/12/2497003.html</id><title type="text">Creating a Shared Repository; Users Sharing The Repository</title><summary type="text">from:http://www.gitguys.com/topics/creating-a-shared-repository-users-sharing-the-repository/</summary><published>2012-05-12T01:40:00Z</published><updated>2012-05-12T01:40:00Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/joe-yang/archive/2012/05/12/2497003.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/archive/2012/05/12/2497003.html"/><content type="html">&lt;p&gt;&amp;#160;&lt;/p&gt; &lt;a href="http://images.cnblogs.com/cnblogs_com/joe-yang/201205/201205120941032781.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/joe-yang/201205/201205120941052583.png" width="796" height="524" /&gt;&lt;/a&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;from:&lt;a href="http://www.gitguys.com/topics/creating-a-shared-repository-users-sharing-the-repository/"&gt;http://www.gitguys.com/topics/creating-a-shared-repository-users-sharing-the-repository/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/joe-yang/aggbug/2497003.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/joe-yang/archive/2012/05/12/2497003.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/joe-yang/archive/2012/05/08/2490037.html</id><title type="text">Entity Framework Cascading Deletes</title><summary type="text">It’s important to note that a cascading delete in the Entity Framework works only if the de-pendent entity objects are loaded. This can be accomplished using the Include or Load meth-ods.</summary><published>2012-05-08T06:22:00Z</published><updated>2012-05-08T06:22:00Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/joe-yang/archive/2012/05/08/2490037.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/archive/2012/05/08/2490037.html"/><content type="html">&lt;p&gt;It&amp;rsquo;s important to note that a cascading delete in the Entity Framework works only if the de-&lt;br /&gt;pendent entity objects are loaded. This can be accomplished using the Include or Load meth-&lt;br /&gt;ods.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/joe-yang/aggbug/2490037.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/joe-yang/archive/2012/05/08/2490037.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/joe-yang/archive/2012/05/07/2487279.html</id><title type="text">XmlReader</title><summary type="text">EXAM TIPFor the exam, understand that the XmlReader provides the fastest means to access XML data and is read-only, forward-only.</summary><published>2012-05-07T05:46:00Z</published><updated>2012-05-07T05:46:00Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/joe-yang/archive/2012/05/07/2487279.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/archive/2012/05/07/2487279.html"/><content type="html">&lt;p&gt;EXAM TIP&lt;br /&gt;For the exam, understand that the XmlReader provides the fastest means to access XML &lt;br /&gt;data and is read-only, forward-only.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/joe-yang/aggbug/2487279.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/joe-yang/archive/2012/05/07/2487279.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/joe-yang/archive/2012/05/07/2487098.html</id><title type="text">Using DataContext to Track Changes and Cache Objects</title><summary type="text">The DataContext object manages object identity for you so that rows retrieved from the database table are automatically logged in the DataContext object’s internal identity table by the row’s primary key when the object is created. If the same row is retrieved again by this DataContext object, the o</summary><published>2012-05-07T03:15:00Z</published><updated>2012-05-07T03:15:00Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/joe-yang/archive/2012/05/07/2487098.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/archive/2012/05/07/2487098.html"/><content type="html">&lt;p&gt;The DataContext object manages object identity for you so that rows retrieved from the &lt;br /&gt;database table are automatically logged in the DataContext object&amp;rsquo;s internal identity table &lt;br /&gt;by the row&amp;rsquo;s primary key when the object is created.&lt;strong&gt; If the same row is retrieved again by this &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;DataContext object, the original instance is handed back to you.&lt;/strong&gt; Y&lt;strong&gt;our application sees only &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;the state of the row that was first retrieved.&lt;/strong&gt; &lt;strong&gt;If, for example, you retrieve a row in your applica-&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;tion and the row is modified in the database table by a different application, you won&amp;rsquo;t get &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;the updated data if you query for this row again because the row is delivered to you from the &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;DataContext object&amp;rsquo;s cache.&lt;/strong&gt;&lt;br /&gt;It might seem rather weird that querying for the same row returned the original state of &lt;br /&gt;the row, even though the row had been changed by another application. In essence, the new &lt;br /&gt;data was thrown away. The reason for this behavior is that LINQ to SQL needs this behavior to &lt;br /&gt;support optimistic concurrency. DataContext contains a method called SubmitChanges, which &lt;br /&gt;sends all your changes back to the database table. This is explained in more detail later in this &lt;br /&gt;lesson. &lt;/p&gt;&lt;img src="http://www.cnblogs.com/joe-yang/aggbug/2487098.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/joe-yang/archive/2012/05/07/2487098.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/joe-yang/archive/2012/05/05/2484519.html</id><title type="text">What Is a Transaction?</title><summary type="text">Transactions have four essential attributes: atomicity, consistency, isolation, and durability (known as the ACID attributes). ■ Atomicity The work cannot be broken into smaller parts. Although...</summary><published>2012-05-05T01:47:00Z</published><updated>2012-05-05T01:47:00Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/joe-yang/archive/2012/05/05/2484519.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/archive/2012/05/05/2484519.html"/><content type="html">&lt;p&gt;Transactions have four essential attributes:    &lt;br /&gt;atomicity, consistency, isolation, and durability (known as the ACID attributes).&lt;/p&gt;  &lt;p&gt;■&amp;#160;&amp;#160; Atomicity&amp;#160; The work cannot be broken into smaller parts. Although a transaction    &lt;br /&gt;might contain many SQL statements, they must be run as an all-or-nothing proposi-    &lt;br /&gt;tion, which means that if a transaction is half complete when an error occurs, the work     &lt;br /&gt;reverts to its state prior to the start of the transaction.     &lt;br /&gt;■&amp;#160;&amp;#160; Consistency&amp;#160; A transaction must operate on a consistent view of the data and must     &lt;br /&gt;leave the data in a consistent state. Any work in progress must not be visible to other     &lt;br /&gt;transactions until the transaction has been committed.    &lt;br /&gt;■&amp;#160;&amp;#160; Isolation&amp;#160; A transaction should appear to be running by itself; the effects of other on-    &lt;br /&gt;going transactions must be invisible to this transaction, and the effects of this transac-    &lt;br /&gt;tion must be invisible to other ongoing transactions.    &lt;br /&gt;■&amp;#160;&amp;#160; Durability&amp;#160; When a transaction is committed, it must be persisted so it will not be lost     &lt;br /&gt;in the event of a power failure or other system failure. Only committed transactions are     &lt;br /&gt;recovered during power-up and crash recovery; uncommitted work is rolled back.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/joe-yang/aggbug/2484519.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/joe-yang/archive/2012/05/05/2484519.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/joe-yang/archive/2012/05/04/2483414.html</id><title type="text">DbDataAdapter</title><summary type="text">When DbDataAdapter is used to retrieve or update data, it examines the status of the con- nection. If the connection is open, the DbDataAdapter uses the open connection and leaves the connection...</summary><published>2012-05-04T13:28:00Z</published><updated>2012-05-04T13:28:00Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/joe-yang/archive/2012/05/04/2483414.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/archive/2012/05/04/2483414.html"/><content type="html">&lt;p&gt;When DbDataAdapter is used to retrieve or update data, it examines the status of the con-   &lt;br /&gt;nection. If the connection is open, the DbDataAdapter uses the open connection and leaves     &lt;br /&gt;the connection open. If the connection is closed, DbDataAdapter opens the connection, uses     &lt;br /&gt;it, and then closes it automatically. If you never open the connection, you don’t have to close     &lt;br /&gt;the connection. However, if you have many data adapters that will be used in one operation,     &lt;br /&gt;you can get better performance by manually opening the connection before you call all the     &lt;br /&gt;data adapters; just be sure to close the connection when you’re done.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/joe-yang/aggbug/2483414.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/joe-yang/archive/2012/05/04/2483414.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/joe-yang/archive/2012/05/04/2483384.html</id><title type="text">DbDataReader Object</title><summary type="text">A DbDataReader object provides a high-performance method of retrieving data from the data store. It delivers a forward-only, read-only, server-side cursor. This makes the DbDataReader object a...</summary><published>2012-05-04T13:04:00Z</published><updated>2012-05-04T13:04:00Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/joe-yang/archive/2012/05/04/2483384.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/archive/2012/05/04/2483384.html"/><content type="html">&lt;p&gt;A DbDataReader object provides a high-performance method of retrieving data from    &lt;br /&gt;the data store. It delivers a forward-only, read-only, server-side cursor. This makes the     &lt;br /&gt; DbDataReader object an ideal choice for populating ListBox objects and DropDownList ob-    &lt;br /&gt;jects. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The DbDataReader object contains a Read method that retrieves data into its buffer. Only    &lt;br /&gt;one row of data is ever available at a time, which means that all the data from the database     &lt;br /&gt;does not need to be completely read into the application before it is processed.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/joe-yang/aggbug/2483384.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/joe-yang/archive/2012/05/04/2483384.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/joe-yang/archive/2012/05/04/2482942.html</id><title type="text">Storing Encrypted Connection Strings in Web Applications</title><summary type="text">It’s common practice to store connection strings in the Web.config file. This makes it easy to change the connection string without requiring a recompile of the application. However, connec-tion strings can contain logon information such as user names and passwords. You certainly don’t want this inf</summary><published>2012-05-04T08:33:00Z</published><updated>2012-05-04T08:33:00Z</updated><author><name>.net's</name><uri>http://www.cnblogs.com/joe-yang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/joe-yang/archive/2012/05/04/2482942.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/joe-yang/archive/2012/05/04/2482942.html"/><content type="html">&lt;p&gt;It&amp;rsquo;s common &lt;br /&gt;practice to store connection strings in the Web.config file. This makes it easy to change &lt;br /&gt;the connection string without requiring a recompile of the application. However, connec-&lt;br /&gt;tion strings can contain logon information such as user names and passwords. You certainly &lt;br /&gt;don&amp;rsquo;t want this information to be easily readable by anyone. The solution is to encrypt the &lt;br /&gt;connection strings. You can do this by using the aspnet_regiis.exe utility to encrypt the &lt;br /&gt;&amp;nbsp;connectionStrings&amp;nbsp;section. You can use the /? option to get help on the utility.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;You encrypt and decrypt the contents of a Web.config file by using&amp;nbsp; System.Configuration&lt;br /&gt;.DPAPIProtectedConfigurationProvider, which uses the Windows Data Protection API (DPAPI) &lt;br /&gt;to encrypt and decrypt data, or System.Configuration.RSAProtectedConfigurationProvider , &lt;br /&gt;which uses the RSA encryption algorithm to encrypt and decrypt data.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/joe-yang/aggbug/2482942.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/joe-yang/archive/2012/05/04/2482942.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
