tag:blogger.com,1999:blog-56556212024-03-07T09:47:06.531+01:00Roni SchuetzRoni Schuetz, a Swiss and Israeli national, is an IT project manager, enterprise architect and software engineer. He works as software engineer with over 18 years of professional experience with scripting and object-oriented languages on multiple platforms. Currently he is mainly focusing on RESTful (ROA) and Service (SOA) Oriented Architectures, Enterprise Software / Architecture and RESTful Web Services in the transportation industry.Unknownnoreply@blogger.comBlogger409125tag:blogger.com,1999:blog-5655621.post-20832075623842824272012-04-15T17:27:00.001+02:002012-04-15T17:27:35.627+02:00Financial Terms - Always good to know1. NAV<br /> a. Net Asset Value<br /> b. The value of the mutual –fund calculated daily (sometime more)<br /> c. Total value of fund-dividend \ num of shares issued<br /><br />2.OCIC<br /> a. Open End Investment Company<br /> b. A type of a mutual fund<br /><br />3.SEC<br /> a. Securities and Exchange Commission<br /><br />4.IRA<br /> a. Individual retirement Account<br /> b. Allow to set 2K $ per year in MF without tax<br /><br />5.ICI<br /> a. Investment Company Institute<br /> b. National association of Investment companies<br /> <br />6. Sector-Funds<br /> a. A type of industry to invest in<br /> b. Technology, biomedical, etc…<br /> <br />7. POP<br /> a. Public Offering Price<br /> b. When selling a MF <br /> c. NAV + sales charge<br /><br />8. Turnover<br /> a. When a MF invests in securities, it sells and buys <br /> these securities if a capital gain was achieved the <br /> share holders of the MF will be taxed and will also <br /> pay for the buying \ selling fees<br /> b. Tot buy + sell \ 2 * fund total holdings<br /><br />9. MF – FEES<br /> a. Management fees <br /> actual fees on managing the fund + administration<br /> b. Non management fees<br /> fees for other non managing parties like custodial, <br /> accountant, board of directors, SEC registration <br /> fee etc…<br /> c. 12b-1 + non 12b-1 fees<br /> 12b1 – Marketing expenses of the fund according to the SEC rules<br /> non 12b1 – other marketing not under SEC rules<br /> d. Fees by the investor based on arrangements with the investor's broker<br /><br />10. CDSL<br /> a. Contingent Deferred Sales Load<br /><br />11. TER<br /> a. funds Total Expense Ratio<div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-5655621.post-17432216157641933082011-12-12T13:07:00.004+01:002011-12-12T13:22:08.155+01:00Tel Aviv a bustling 24-hour metropolis<p>Tel Aviv is very different from the rest of Israel. Dubbed the 'bubble' because of its individuality, it is famed for its cosmopolitan attitudes and dubious living. Tel Aviv is both European and Asian. It is one of the few cities where west meets east. The best way to see Tel Aviv is to walk<br />on its many shaded streets and boulevards. A few years ago they completed the "Tayelet", or promenade from Yarkon park along the Yarkon River, to the beaches.<br />Tel Aviv offers a contrast between 4000 years of history and a bustling 24-hour metropolis. Starting a journey from the top, at the Azrieli Observatory in the middle of Tel Aviv, offers an opportunity to explorer Tel Aviv from the highest possible perspective. You get an incredible overview from the 49th floor. The Azrieli Observatory offers a 3D movie and an audio guide about Tel Aviv and the restaurant offers candlelight dinners. The Museum of Art in Tel Aviv is one of the biggest Museums. It holds a big amount of works and offers a representative and interesting view of Israeli art and its culture. The Museum was opened in the early 1932, before the state of Israel was founded.</p><p><br /><strong>Touring through Yaffo</strong><br />offers many interesting experiences. Old Yaffo, with the Old Port, the markets, the restaurants and the unique atmosphere, is a real delight. Some claim that Yaffo needs an overall renovation but the charm of Yaffo is unbeatable. Don’t miss the flea market! Work your way down to the Old Port, where you can walk around on of the most ancient, yet still active, ports in the world.<br />Florentine neighborhood is yet another southern neighborhood which, in resemblance to<br />Yaffo, is charming but unable to overcome financial and social difficulties. Many cafes, bars and food joints have been opened. Visit the elaborately decorated house of Israel's most highly acclaimed poet, Haim Nachman Bialik, which is appropriately situated on Bialik Street.<br />Known as "the city that never stops", Tel Aviv is a late-night metropolis, which wakes<br />up at midnight and runs wild all night long. Roads jammed with heavy traffic and people waiting in line for a table at a bar, or admission to a night club, are common sights at the city's nightlife areas - even as late as 4am! Tel Aviv's nightlife focuses mostly on pubs, cafes and nightclubs, whose music is in one level with that on most European cities' clubs. The city gets amazingly<br />active every night of the week, but on weekends it's even more crowded. Major centers where<br />locals and visitors love to play all night are Allenby St and its surroundings. Doors to the clubs usually open at 23:00 (often cheaper before 24:00) but the parties really hit off at between 1 to 2 AM. Big parties often have reduced price tickets on sale beforehand (Shenkin St is the place to look). Dance bars start going at 23:00 and go till the last person stops dancing. Weapons of any<br />kind or anything that could be used as a weapon are not tolerated in clubs and security checks are mandatory, so think about what to leave at the hotel.</p><p><br />The best day for going out is usually Thursday, with younger crowds and longer queues. Saturdays usually host ‘after parties’ and even ‘after-after parties’. On a good weekend you can keep dancing from Thursday evening to Saturday afternoon, if you’re up to it! Tel Aviv is very much the polar opposite of Jerusalem. It is a secular, hedonistic city, more liberal in its politics than Jerusalem and a city which lives on the cutting edge of the here and now.<br /></p><p><strong>Jerusalem Old City Tour</strong><br />The Old City of Jerusalem is a real must-see, being home to sites of key religious significance, including the Temple Mount, the Western (Wailing) Wall, the Church of the Holy Sepulchre, the Dome of the Rock and al-Aqsa Mosque. You can easily spend a full day here: place a prayer between the cracks of the huge stones that make up the Western Wall, browse the stalls in the narrow streets of the Old City bazaar, and visit the site of Jesus’ crucifixion. This will probably be your main tourist sightseeing day on your visit to Israel.<br /></p><p><strong>Dead Sea Tour</strong><br />The Lowest Point on Earth is one special place to visit. If you need to chill out, and especially<br />if you’re feeling rundown, the Dead Sea is the ideal place in Israel to visit. Bring your newspaper along for that picture opportunity, smother some of that mineral rich Dead Sea mud on and then float on your back in the warm, salty sea. Just avoid diving in!</p><p><br /><strong>Diving in Eilat</strong><br />A lot of divers don't notice the most special and beautiful spots when they lay underneath their<br />noses. So here are 2 diving spots:<br />- <strong>Dolphin Reef:</strong> It’s an ecological site unique in Israel and<br />throughout the world where visitors can enjoy a natural atmosphere, magical<br />views, together with the unusual opportunity of meeting and observing dolphins<br />in their natural habitat.<br />- <strong>The University:</strong> This site name has been given due to its location<br />along the beach of the interuniversity institute in Eilat. The underwater view<br />in this spot is one of the beautiful, which includes corals inhabitants that<br />worth seeing.<br /><br /> <strong>Tel Aviv Some useful information</strong><br /> <br /> Weekends: Thursdays, Fridays and Saturdays<br /> <br /><strong>Food and Drink</strong><br />Looking for restaurants in Tel Aviv, you should know that eating must not necessarily be expensive, and cheap food must not be fast food. As in many Middle East cities street food is very popular and should not be mixed up with fast food. It may not sound the most civilized way to eat but it’s a very common one. The most popular street food is falafel which is served within a pita.<br /></p><p><strong>things you should do:</strong></p><ul><li><strong>Azrieli Observatory </strong>- Overview from the 49th floor</li><li><strong>The Beaches </strong>– White sand, blue sea and plenty of sun</li><li><strong>Old Yaffo </strong>– A unique city with 4000 years history</li><li><strong>Nightlife</strong> – Endless spots for all tastes</li><li><strong>Neve Tzedek</strong> – Museums, shop, restaurants</li><li><strong>Tel Aviv Museum of Art</strong> – Israeli Art</li><li><strong>Ha-Carmel Market</strong> – hustle bustle market of Tel Aviv’s most vibrant market.</li><li><strong>Bauhaus Architecture</strong> – Stroll through the streets and see Bauhaus architecture.</li><li><strong>Park Ha-Yarkon</strong> – outdoor activities and greenery</li><li><strong>Suzanne Dellal Centre </strong>– Israeli and International artists </li></ul><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-53526205142001719892011-07-04T01:37:00.004+02:002011-07-04T01:41:13.039+02:00HTTP HEAD and OPTIONSThere are 2 other HTTP methods which are a part of a URI:<br /><br /> - HEAD: Retrieve a metadata-only representation<br /> - OPTIONS: Check which HTTP methods a particular resource supports<br /><br />HEAD: <br />- making a call to a resource to fetch metadata without downloading an entire collection<br />- a client can use HEAD to check if a resource exists, to find out other information about the resource without fetching it's entire representation. So we have the same functionality like a HTTP GET but now the call does not fetch data. <br /><br />OPTIONS: <br />- The OPTIONS method lets the client to discover what it's allowed to do to a resource. The response to an OPTIONS request contains the HTTP Allow header, which lays out the subset of the uniform interface this resource supports.<br /><br />E.g. : Allow: GET, HEAD <br /><br />That means that the client can send a GET and HEAD request to this resource but the resource does not support any other methods - effectively, this resource is read-only.<br /><br />Normal RESOURCE:<br /><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6w0yqCF-ZrRXif5UN-P9hJk1xP5R7rh6mx77K_K4-VLfRjwuo6lqY1K5_OqG-CF5tfz-R4ABAB0At4zdEaXGi81yitQ-m3ukE6wndw7vdvzOB-TqhcgkA1CXOBM6vfKMwT99_vA/s400/Resource.png" /><br /><br />Advanced RESOURCE:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuO2x2TRsT9uIl3N6EwtLpvbPZC8kNZfwss5LTKLv2Edo8TMjMT_mM5S8hz3gGaQ0ue8u-D2e-OZw_ilFgpoqMmPUpsjKFKXU7aKTy5zXLZ6HxPKQKXMUil_2WlrfquIqKup32gg/s1600/Resource1.png"><img style="cursor:pointer; cursor:hand;width: 277px; height: 227px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuO2x2TRsT9uIl3N6EwtLpvbPZC8kNZfwss5LTKLv2Edo8TMjMT_mM5S8hz3gGaQ0ue8u-D2e-OZw_ilFgpoqMmPUpsjKFKXU7aKTy5zXLZ6HxPKQKXMUil_2WlrfquIqKup32gg/s400/Resource1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5625274793362476690" /></a><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-25360673657736779202011-07-04T01:35:00.000+02:002011-07-04T01:36:47.693+02:00PUT vs. POST Creation ParadigmTo create a new “thing” shall I use PUT or POST? <br /><br />There is a clear answer for this question: <br /><br />- If the client is responsible for creating the ID of the “thing” use a PUT <br /> E.g: “./users/roni” <- roni is unique and given by the client -this is a new URI!<br /><br />- If the server is responsible for creating the ID of the “thing” use a POST<br /> E.g. “./users/” and as a post key/value the client transfers username=roni and prob. to id would be an auto generated number. <br /><br /><br /><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6w0yqCF-ZrRXif5UN-P9hJk1xP5R7rh6mx77K_K4-VLfRjwuo6lqY1K5_OqG-CF5tfz-R4ABAB0At4zdEaXGi81yitQ-m3ukE6wndw7vdvzOB-TqhcgkA1CXOBM6vfKMwT99_vA/s400/Resource.png" /><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-91314733585424250752011-07-04T01:30:00.003+02:002011-07-04T01:34:59.455+02:00The “thing” retrieval patternuse GET and not POST<br /><br />Why not POST?<br /> –Overloaded POST: the not-so-RESTful pattern<br /><br /> –It’s overloaded because a single HTTP method is being used to signify any number of non-HTTP methods.<br /><br /> –By using POST it will happen very easy that we implement an RPC service. In a RPC service we are using post and the Action is one of it’s parameters: ”/orders?action=delete&id=13” That’s not REST!<br /><br />it's as easy as that<br /><br /><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6w0yqCF-ZrRXif5UN-P9hJk1xP5R7rh6mx77K_K4-VLfRjwuo6lqY1K5_OqG-CF5tfz-R4ABAB0At4zdEaXGi81yitQ-m3ukE6wndw7vdvzOB-TqhcgkA1CXOBM6vfKMwT99_vA/s400/Resource.png" /><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-56810045223107895922011-07-04T01:28:00.006+02:002011-07-04T01:34:50.521+02:00GET vs. POST Retrieving ParadigmTo retrieve a “thing” from a Resource we have 2 options:<br /><br />–The HTTP GET options:<br /> •GET ./order/221<br /> •GET ./order?id=221<br /><br />–The HTTP POST option:<br /> •POST /order<br /> –id = 221 [key value] … add as much as you need!<br /><br /><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6w0yqCF-ZrRXif5UN-P9hJk1xP5R7rh6mx77K_K4-VLfRjwuo6lqY1K5_OqG-CF5tfz-R4ABAB0At4zdEaXGi81yitQ-m3ukE6wndw7vdvzOB-TqhcgkA1CXOBM6vfKMwT99_vA/s400/Resource.png" /><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-24477742113359525622011-07-04T01:12:00.007+02:002011-07-04T01:25:21.615+02:00RESTful from a conceptional view - Part 1<p>REST (Representational State Transfer) for 1 slide:</p><ul><li>Web Services expose their data and functionality through resources identified by a unique URI</li><li>Uniform Interface Principle: Clients interact with resources through a fix set of verbs<br />Example:<br />- GET – read<br />- PUT – update<br />- DELETE – remove<br />- POST – create</li><li>Multiple representations for the same resource</li><li>Hyperlinks model resource relationships and valid transfer state transitions for dynamic protocol description and discovery</li></ul><p> </p><br /><p><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6w0yqCF-ZrRXif5UN-P9hJk1xP5R7rh6mx77K_K4-VLfRjwuo6lqY1K5_OqG-CF5tfz-R4ABAB0At4zdEaXGi81yitQ-m3ukE6wndw7vdvzOB-TqhcgkA1CXOBM6vfKMwT99_vA/s1600/Resource.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="cursor:pointer; cursor:hand;width: 226px; height: 243px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6w0yqCF-ZrRXif5UN-P9hJk1xP5R7rh6mx77K_K4-VLfRjwuo6lqY1K5_OqG-CF5tfz-R4ABAB0At4zdEaXGi81yitQ-m3ukE6wndw7vdvzOB-TqhcgkA1CXOBM6vfKMwT99_vA/s400/Resource.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5625270830265547042" /></a><br /><br /></p><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-18910542091346651702011-03-02T09:19:00.000+01:002011-03-02T09:20:17.098+01:00a custom serialization testworks pretty fast <br /><br /><pre style="BORDER-BOTTOM: #999999 1px dashed; BORDER-LEFT: #999999 1px dashed; PADDING-BOTTOM: 5px; LINE-HEIGHT: 14px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; WIDTH: 100%; PADDING-RIGHT: 5px; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #999999 1px dashed; BORDER-RIGHT: #999999 1px dashed; PADDING-TOP: 5px"><code>using System;<br />using System.IO;<br />using System.IO.Compression;<br />using System.Runtime.Serialization.Formatters.Binary;<br />using System.Text;<br /><br />namespace serializationtest<br />{<br /> internal enum SerializedType : ushort<br /> {<br /> ByteArray = 0,<br /> Object = 1,<br /> String = 2,<br /> Datetime = 3,<br /> Bool = 4,<br /> //SByte = 5, //Makes no sense.<br /> Byte = 6,<br /> Short = 7,<br /> UShort = 8,<br /> Int = 9,<br /> UInt = 10,<br /> Long = 11,<br /> ULong = 12,<br /> Float = 13,<br /> Double = 14,<br /><br /> CompressedByteArray = 255,<br /> CompressedObject = 256,<br /> CompressedString = 257,<br /> }<br /><br /> internal class Serializer<br /> {<br /> public static byte[] Serialize(object value, out SerializedType type, uint compressionThreshold)<br /> {<br /> byte[] bytes;<br /> if (value is byte[])<br /> {<br /> bytes = (byte[])value;<br /> type = SerializedType.ByteArray;<br /> if (bytes.Length > compressionThreshold)<br /> {<br /> bytes = compress(bytes);<br /> type = SerializedType.CompressedByteArray;<br /> }<br /> }<br /> else if (value is string)<br /> {<br /> bytes = Encoding.UTF8.GetBytes((string)value);<br /> type = SerializedType.String;<br /> if (bytes.Length > compressionThreshold)<br /> {<br /> bytes = compress(bytes);<br /> type = SerializedType.CompressedString;<br /> }<br /> }<br /> else if (value is DateTime)<br /> {<br /> bytes = BitConverter.GetBytes(((DateTime)value).Ticks);<br /> type = SerializedType.Datetime;<br /> }<br /> else if (value is bool)<br /> {<br /> bytes = new byte[] { (byte)((bool)value ? 1 : 0) };<br /> type = SerializedType.Bool;<br /> }<br /> else if (value is byte)<br /> {<br /> bytes = new byte[] { (byte)value };<br /> type = SerializedType.Byte;<br /> }<br /> else if (value is short)<br /> {<br /> bytes = BitConverter.GetBytes((short)value);<br /> type = SerializedType.Short;<br /> }<br /> else if (value is ushort)<br /> {<br /> bytes = BitConverter.GetBytes((ushort)value);<br /> type = SerializedType.UShort;<br /> }<br /> else if (value is int)<br /> {<br /> bytes = BitConverter.GetBytes((int)value);<br /> type = SerializedType.Int;<br /> }<br /> else if (value is uint)<br /> {<br /> bytes = BitConverter.GetBytes((uint)value);<br /> type = SerializedType.UInt;<br /> }<br /> else if (value is long)<br /> {<br /> bytes = BitConverter.GetBytes((long)value);<br /> type = SerializedType.Long;<br /> }<br /> else if (value is ulong)<br /> {<br /> bytes = BitConverter.GetBytes((ulong)value);<br /> type = SerializedType.ULong;<br /> }<br /> else if (value is float)<br /> {<br /> bytes = BitConverter.GetBytes((float)value);<br /> type = SerializedType.Float;<br /> }<br /> else if (value is double)<br /> {<br /> bytes = BitConverter.GetBytes((double)value);<br /> type = SerializedType.Double;<br /> }<br /> else<br /> {<br /> //Object<br /> using (MemoryStream ms = new MemoryStream())<br /> {<br /> new BinaryFormatter().Serialize(ms, value);<br /> bytes = ms.ToArray();<br /> type = SerializedType.Object;<br /> if (bytes.Length > compressionThreshold)<br /> {<br /> bytes = compress(bytes);<br /> type = SerializedType.CompressedObject;<br /> }<br /> }<br /> }<br /> return bytes;<br /> }<br /><br /> private static byte[] compress(byte[] bytes)<br /> {<br /> using (MemoryStream ms = new MemoryStream())<br /> {<br /> using (DeflateStream gzs = new DeflateStream(ms, CompressionMode.Compress, false))<br /> {<br /> gzs.Write(bytes, 0, bytes.Length);<br /> }<br /> ms.Close();<br /> return ms.ToArray();<br /> }<br /> }<br /><br /> private static byte[] decompress(byte[] bytes)<br /> {<br /> using (MemoryStream ms = new MemoryStream(bytes, false))<br /> {<br /> using (DeflateStream gzs = new DeflateStream(ms, CompressionMode.Decompress, false))<br /> {<br /> using (MemoryStream dest = new MemoryStream())<br /> {<br /> byte[] tmp = new byte[bytes.Length];<br /> int read;<br /> while ((read = gzs.Read(tmp, 0, tmp.Length)) != 0)<br /> {<br /> dest.Write(tmp, 0, read);<br /> }<br /> dest.Close();<br /> return dest.ToArray();<br /> }<br /> }<br /> }<br /> }<br /><br /> public static object DeSerialize(byte[] bytes, SerializedType type)<br /> {<br /> switch (type)<br /> {<br /> case SerializedType.String:<br /> return Encoding.UTF8.GetString(bytes);<br /> case SerializedType.Datetime:<br /> return new DateTime(BitConverter.ToInt64(bytes, 0));<br /> case SerializedType.Bool:<br /> return bytes[0] == 1;<br /> case SerializedType.Byte:<br /> return bytes[0];<br /> case SerializedType.Short:<br /> return BitConverter.ToInt16(bytes, 0);<br /> case SerializedType.UShort:<br /> return BitConverter.ToUInt16(bytes, 0);<br /> case SerializedType.Int:<br /> return BitConverter.ToInt32(bytes, 0);<br /> case SerializedType.UInt:<br /> return BitConverter.ToUInt32(bytes, 0);<br /> case SerializedType.Long:<br /> return BitConverter.ToInt64(bytes, 0);<br /> case SerializedType.ULong:<br /> return BitConverter.ToUInt64(bytes, 0);<br /> case SerializedType.Float:<br /> return BitConverter.ToSingle(bytes, 0);<br /> case SerializedType.Double:<br /> return BitConverter.ToDouble(bytes, 0);<br /> case SerializedType.Object:<br /> using (MemoryStream ms = new MemoryStream(bytes))<br /> {<br /> return new BinaryFormatter().Deserialize(ms);<br /> }<br /> case SerializedType.CompressedByteArray:<br /> return DeSerialize(decompress(bytes), SerializedType.ByteArray);<br /> case SerializedType.CompressedString:<br /> return DeSerialize(decompress(bytes), SerializedType.String);<br /> case SerializedType.CompressedObject:<br /> return DeSerialize(decompress(bytes), SerializedType.Object);<br /> case SerializedType.ByteArray:<br /> default:<br /> return bytes;<br /> }<br /> }<br /> }<br />}<br /><br /></code></pre><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-58794502228276458232010-12-31T16:16:00.002+01:002010-12-31T16:18:09.333+01:00DB Design consideration Is easily to update – either in real time, or in monthly batches. <br /> Permits ad hoc drill down queries and reports<br /> Allows you to store an unlimited amount of data about any object<br /> Permits you to add fields without redoing the whole database.<br /> Makes it easy to modify the data and to retrieve information<br /> Makes it easy to develop and carry out personalized communications.<br /> Permits the inclusion of business rules in the database design.<br /><br /><a href="http://www.crm2day.com/editorial/EpVkEkkylZNkorRHLx.php">http://www.crm2day.com/editorial/EpVkEkkylZNkorRHLx.php</a><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-23765272946348676022010-12-23T15:07:00.002+01:002010-12-23T15:09:45.704+01:00How To: Sending email over Power Shell$EmailFrom = "your@email.com" <br />$EmailTo = "destination@email.com" <br />$Subject = "Your subject goes here" <br />$Body = "the body info which usually will a parameter with gathered info." <br />$SMTPServer = "smtp.email.com" <br />$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) <br />$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("user", "pwd"); <br />$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)<div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-33737781194560192552010-12-23T12:27:00.002+01:002012-04-16T02:46:47.807+02:00links for virtualization architecturesA great overview of tools and links for virtualization architectures<br />
<br />
<br />
<a href="http://www.chriswolf.com/?page_id=93">http://www.chriswolf.com/?page_id=93</a><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0Albisrieden Albisrieden47.370961 8.485957tag:blogger.com,1999:blog-5655621.post-92104519153927142912010-12-22T14:20:00.002+01:002010-12-22T14:22:49.879+01:00How To: Add Context Menu RegistryI found to today a small utility to scan and visualize my harddisc (http://www.steffengerlach.de/freeware/). in the installation folder i found the following code to add a program to the registry: <br /><br />save the content in a *.reg file to execute it: <br /><br />ADD: <br /><br />Windows Registry Editor Version 5.00<br /><br />[HKEY_CLASSES_ROOT\Directory\shell\Scan_Content]<br />@="Scan Content"<br /><br />[HKEY_CLASSES_ROOT\Directory\shell\Scan_Content\command]<br />@="C:\\Program Files\\Scanner\\Scanner.exe \"%1\""<br /><br />[HKEY_CLASSES_ROOT\Drive\shell\Scan_Content]<br />@="Scan Content"<br /><br />[HKEY_CLASSES_ROOT\Drive\shell\Scan_Content\command]<br />@="C:\\Program Files\\Scanner\\Scanner.exe \"%1\""<br /><br /><br />REMOVE: <br /><br />Windows Registry Editor Version 5.00<br /><br />[-HKEY_CLASSES_ROOT\Directory\shell\Scan_Content]<br /><br />[-HKEY_CLASSES_ROOT\Directory\shell\Scan_Content\command]<br /><br /><br />[-HKEY_CLASSES_ROOT\Drive\shell\Scan_Content]<br /><br />[-HKEY_CLASSES_ROOT\Drive\shell\Scan_Content\command]<div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-68143510698109717302010-12-19T16:33:00.001+01:002010-12-19T16:33:56.468+01:00How To: Versioning Builds With TFS 2010<a href="http://www.richard-banks.org/2010/07/how-to-versioning-builds-with-tfs-2010.html">http://www.richard-banks.org/2010/07/how-to-versioning-builds-with-tfs-2010.html</a><br /><br />by Richard Banks<div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-58413347290789370122010-12-19T11:53:00.001+01:002010-12-19T11:59:16.640+01:00how to Office Developers is called No-PIAThis sample shows how to use the C# 4.0 features called COM Interop, omitting ref, indexed properties and Named and Optional Parameters to create a C# application that communicates with Microsoft Office. C# developers have traditionally had to write relatively verbose code in order to access Microsoft Office applications such as Word or Excel. New C# 4.0 features make it much simpler to call Office APIs.<br /><br />Consider this declaration for a Microsoft Office method used in this sample:<br /><br />void PasteSpecial(ref object IconIndex = null, ref object Link = null, <br /> ref object Placement = null, ref object DisplayAsIcon = null, <br /> ref object DataType = null, ref object IconFileName = null, <br /> ref object IconLabel = null);<br /><br />As you can see, this method takes a fairly large number of parameters. In C#, developers have traditionally had to fill out each parameter, even though the developers of this call had intended to simplify its use by supporting optional parameters. In C# 4.0, the new support for named and optional parameters allows the developer to specify only the parameters of interest, and to take default values for the other parameters:<br /><br />word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);<br /><br />In the call to the PasteSpecial method the Link and DisplayAsIcon parameters are explicitly named, and set to the value true. All the other parameters default to values specified internally by the developers of the Office API, as shown in the above signature.<br /><br />You can create your own calls that support named and optional paramters. Consider this example:<br /><br />public void M(int x, int y = 5, int z = 7) { }<br /><br />In this method, the parameters y and z are assigned default values. Calls to this method might look like this:<br /><br />M(1, 2, 3); // ordinary call of M<br />M(1, 2); // omitting z – equivalent to M(1, 2, 7)<br />M(1); // omitting both y and z – equivalent to M(1, 5, 7)<br />M(1, z: 3); // passing z by name<br />M(x: 1, z: 3); // passing both x and z by name<br />M(z: 3, x: 1); // reversing the order of arguments<br /><br />A new dynamic feature in C# 4.0 makes Office much easier for C# developers to use. Types used in Office are now presented to C# developers as if they were declared with the type dynamic. Here is the traditionally way to set a Cell property:<br /><br />((Excel.Range)excel.Cells[1, 1]).Value2 = "ID";<br /><br />In C# 4.0 developers can now write code that looks like this:<br /><br />X1.Cells[1, 1].Value = "ID";<br /><br />A feature called Index Properties allows us to simplify the call further, so that it looks like this:<br /><br />xl.Cells[1, 1] = "ID";<br /><br />A final feature of interest to Office Developers is called No-PIA. Primary Interop Assemblies are generated from COM interfaces and provide helpful type support at design time. At runtime, however, they increase the size of your program, and can cause versioning issues. The No-PIA feature allows you to continue to use PIAs at design but omit them at runtime. The C# compiler will bake the small part of the PIA that a program actually uses directly into its assembly. You will no longer need to include PIA's in the distribution of your programs.<br /><br /><br /><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>// Copyright © Microsoft Corporation. All Rights Reserved.<br />// This code released under the terms of the <br />// Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)<br />//<br /><br />using System;<br />using System.Collections.Generic;<br /><br />using Excel = Microsoft.Office.Interop.Excel;<br />using Word = Microsoft.Office.Interop.Word;<br /><br />public class Account<br />{<br /> public int ID { get; set; }<br /> public double Balance { get; set; }<br />}<br /><br />public class Program<br />{<br /> static void Main(string[] args)<br /> {<br /> var checkAccounts = new List<Account> {<br /> new Account {<br /> ID = 345,<br /> Balance = 541.27<br /> },<br /> new Account {<br /> ID = 123,<br /> Balance = -127.44<br /> }<br /> };<br /><br /> DisplayInExcel(checkAccounts, (account, cell) =><br /> {<br /> // This multiline lambda will set<br /> // custom processing rules.<br /> cell.Value = account.ID;<br /> cell.Offset[0, 1].Value = account.Balance;<br /><br /> if (account.Balance < 0)<br /> {<br /> cell.Interior.Color = 255;<br /> cell.Offset[0, 1].Interior.Color = 255;<br /> }<br /> });<br /><br /> var word = new Word.Application();<br /> word.Visible = true;<br /> word.Documents.Add();<br /> word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);<br /> }<br /><br /> public static void DisplayInExcel(IEnumerable<Account> accounts,<br /> Action<Account, Excel.Range> DisplayFunc)<br /> {<br /> var xl = new Excel.Application();<br /><br /> xl.Workbooks.Add();<br /> xl.Visible = true;<br /> xl.Cells[1, 1] = "ID";<br /> xl.Cells[1, 2] = " Balance";<br /> xl.Cells[2, 1].Select();<br /> foreach (var ac in accounts)<br /> {<br /> DisplayFunc(ac, xl.ActiveCell);<br /> xl.ActiveCell.Offset[1, 0].Select();<br /> }<br /><br /> xl.Range["A1:B3"].Copy();<br /> //xl.get_Range("A1:B3").Copy();<br /><br /> xl.Columns[1].AutoFit();<br /> xl.Columns[2].AutoFit();<br /> }<br />}<br /></code></pre><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-33075294368441586512010-12-16T16:14:00.000+01:002010-12-16T16:15:36.900+01:00ThreadSafeCache class in C#<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code><br /><br />using System;<br />using System.Collections.Generic;<br />using System.Text;<br />using System.Threading;<br />using System.Collections.ObjectModel;<br /><br />namespace Caching<br />{<br /> public class ThreadSafeCache<T1, T2><br /> {<br /> static ReaderWriterLockSlim rwlock = new ReaderWriterLockSlim();<br /> private const int DoNotTimeOut = 0;<br /> private Dictionary<T1, T2> mCache = new Dictionary<T1, T2>();<br /><br /> public bool ContainsKey(T1 key)<br /> {<br /> bool result = false;<br /> rwlock.EnterReadLock();<br /> try<br /> {<br /> result = mCache.ContainsKey(key);<br /> }<br /> finally<br /> {<br /> rwlock.ExitReadLock();<br /> }<br /> return result;<br /> }<br /><br /> public T2 this[T1 index]<br /> {<br /> get<br /> {<br /> T2 result;<br /> rwlock.EnterReadLock();<br /> try<br /> {<br /> result = mCache[index];<br /> }<br /> finally<br /> {<br /> rwlock.ExitReadLock();<br /> }<br /> return result;<br /> }<br /> set<br /> {<br /> rwlock.EnterWriteLock();<br /> try<br /> {<br /> mCache[index] = value;<br /> }<br /> finally<br /> {<br /> rwlock.ExitWriteLock();<br /> }<br /> }<br /> }<br /><br /> public void Add(T1 key, T2 value)<br /> {<br /> rwlock.EnterWriteLock();<br /> try<br /> {<br /> mCache.Add(key, value);<br /> }<br /> finally<br /> {<br /> rwlock.ExitWriteLock();<br /> }<br /> }<br /> public void AddOrIgnore(T1 key, T2 value)<br /> {<br /> rwlock.EnterWriteLock();<br /> try<br /> {<br /> if (!mCache.ContainsKey(key))<br /> mCache.Add(key, value);<br /> }<br /> finally<br /> {<br /> rwlock.ExitWriteLock();<br /> }<br /> }<br /> public void AddOrReplace(T1 key, T2 value)<br /> {<br /> rwlock.EnterWriteLock();<br /> try<br /> {<br /> if (!mCache.ContainsKey(key))<br /> mCache.Add(key, value);<br /> else<br /> mCache[key] = value;<br /> }<br /> finally<br /> {<br /> rwlock.ExitWriteLock();<br /> }<br /> }<br /> public bool Remove(T1 key)<br /> {<br /> bool result = false;<br /> rwlock.EnterWriteLock();<br /> try<br /> {<br /> result = mCache.Remove(key);<br /> }<br /> finally<br /> {<br /> rwlock.ExitWriteLock();<br /> }<br /> return result;<br /> }<br /><br /> public void Clear()<br /> {<br /> rwlock.EnterWriteLock();<br /> try<br /> {<br /> mCache.Clear();<br /> }<br /> finally<br /> {<br /> rwlock.ExitWriteLock();<br /> }<br /> }<br /><br /> public ReadOnlyCollection<T1> Keys<br /> {<br /> get<br /> {<br /> ReadOnlyCollection<T1> result;<br /> rwlock.EnterReadLock();<br /> try<br /> {<br /> result = new ReadOnlyCollection<T1>(new List<T1>(mCache.Keys));<br /> }<br /> finally<br /> {<br /> rwlock.ExitReadLock();<br /> }<br /> return result;<br /> }<br /> }<br /> }<br />}<br /><br /></code></pre><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-74125243088630413752010-12-13T15:33:00.004+01:002010-12-13T15:44:47.980+01:00High AvailabilityAvailability is traditionally measured according the percentage of time that the system is available to its end users.<br /><br />Therefore, 100 percent availability means that the system is available all of the time and there is no downtime. However, achieving 100 percent availability is virtually impossible. Too many technical and human factors are involved for that to be a realistic possibility. Even so, by utilizing technology and creating a suitable operating environment, very high levels of availability are achievable. The highest practical measure of availability is typically expressed as “five nines” or 99.999 percent. The percentage of availability can be calculated using the following formula:<br /><br />Percentage of availability = ((total elapsed time – sum of downtime)/total elapsed time)<br /><br />The percentage of system availability equals the total elapsed time minus the sum of the system downtime. This result is then divided by the total elapsed time.<br /><br />Let’s take a little deeper look at what this means in a practical sense. A year has a total of 8,760 hours (24 hours per day × 365 days per year = 8,760 hours). Therefore, an availability of 8,760 hours over a year would be 100 percent uptime as you can see in the following equation:<br /><br />100 = ((8,760 – 0)/8,760) × 100<br /><br />A much more common scenario is for a system to have a regular period of downtime every month. For many organizations this might be as little as eight hours of downtime in every month, or essentially two hours per week. This downtime might be the result of planned system maintenance such as system backup procedures. Two hours of downtime per week or eight hours per month results in 98.9 percent availability, as the following formula illustrates:<br /><br />98.9 = ((8,760 – (8 × 12)/8,760)) × 100<br /><br />Many organizations don’t achieve that level of availability. However, when expressed as a measure of nine, 98.9 percent isn’t even two nines, as the base level of availability is lower than 99 percent. While one nine may not seem like a high level of availability, for many organizations one day of downtime per month would be perfectly adequate.<br /><br />However, many businesses are running critical lines of business and e-commerce applications where one nine of availability is not enough. These organizations require three nines or even five nines of availability. So how much actual downtime is associated with these levels of availability? Table 1-1 gives you an idea of the amount of downtime that is permitted with each increasing level of “nines.”<br />Number of Nines and Downtime<br /><table><br /><tbody><tr><br /><td>Number of Nines</td><br /><td>Percentage Availability</td><br /><td>Downtime per Year</td><br /><td>Downtime per Month</td><br /><td>Downtime per Week</td><br /></tr><br /><tr><br /><td>Two nines</td><br /><td>99.0%</td><br /><td>3.65 days</td><br /><td>7.30 hrs</td><br /><td>1.68 hrs</td><br /></tr><br /><tr><br /><td>Three nines</td><br /><td>99.9%</td><br /><td>8.76 hrs</td><br /><td>43.8 mins</td><br /><td>10.1 mins</td><br /></tr><br /><tr><br /><td>Four nines</td><br /><td>99.99%</td><br /><td>52.6 mins</td><br /><td>4.38 mins</td><br /><td>1.01 mins</td><br /></tr><br /><tr><br /><td>Five nines</td><br /><td>99.999%</td><br /><td>5.26 mins</td><br /><td>26.28 secs</td><br /><td>6.06 secs</td><br /></tr><br /></tbody></table><br /><br />The above table shows how each increasing nine level of availability requires significant decreases in downtime. While reaching two nines of availability can be accomplished with a total of 1.68 hours per week of downtime, five nines of availability is only slightly more than five minutes of downtime per year.<br /><br />Five minutes of downtime per year is an impressive and difficult number to achieve. Another important factor to remember is that the costs and operational disciplines increase substantially with each successive level of availability. Achieving these higher levels of availability cannot be accomplished using technology only. Creating a highly available environment requires a combination of several factors.<div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-31488059478176026512010-11-26T17:14:00.004+01:002010-11-26T17:22:15.418+01:00All-In-One Overviewon codeplex: <a href="http://1code.codeplex.com/">http://1code.codeplex.com/</a><br /><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/26/all-in-one-windows-forms-code-samples.aspx">All-In-One Windows Forms Code Samples</a><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/26/all-in-one-wpf-code-samples.aspx">All-In-One WPF Code Samples</a><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/26/all-in-one-windows-azure-code-samples.aspx">All-In-One Windows Azure Code Samples</a><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/26/all-in-one-silverlight-code-samples.aspx">All-In-One Silverlight Code Samples</a><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/26/all-in-one-asp-net-code-samples.aspx">All-In-One ASP.NET Code Samples</a><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/25/all-in-one-com-code-samples.aspx">All-In-One COM Code Samples</a><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/26/all-in-one-data-platform-code-samples.aspx">All-In-One Data Platform Code Samples</a><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/26/all-in-one-office-development-code-samples.aspx">All-In-One Office Development Code Samples</a><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/26/all-in-one-interop-and-fusion-code-samples.aspx">All-In-One Interop and Fusion Code Samples</a><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/26/all-in-one-windows-ui-code-samples.aspx">All-In-One Windows UI Code Samples</a><br /><br /><a href="http://blogs.msdn.com/b/codefx/archive/2010/11/26/all-in-one-visual-studio-extensibility-code-samples.aspx">All-In-One Visual Studio Extensibility Code Samples</a><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-63570683586734551452010-11-23T12:57:00.002+01:002010-11-23T13:25:10.420+01:00Developer Tools & Platforms Performance [from support.microsoft.com]<a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;974348">http://support.microsoft.com/default.aspx?scid=kb;EN-US;974348</a> - great stuff ms.<br /><br />Note: This article discusses a scenario that may be addressed by Microsoft Advisory Services.<br /><br />Microsoft Advisory Services is an hourly fee-based, consultative support option that provides proactive support beyond your break-fix product maintenance needs. This is a remote, phone-based support option that includes working with the same technician for assistance with issues like product migration, code review, or new program development. This service is typically used for shorter engagements, and is designed for developers and IT professionals who do not require the traditional onsite consulting or sustained account management services that are available from other Microsoft support options. This article also provides some self-help resources for this scenario.<br /><br />For additional information on Microsoft Advisory Services, including on how to engage, refer to this Microsoft web page:<br /><a href="http://support.microsoft.com/default.aspx?pr=AdvisoryService">http://support.microsoft.com/default.aspx?pr=AdvisoryService</a><br /><br /><br />Microsoft can provide Performance Tuning services for your software solutions, Microsoft development technologies and platforms such as Common Language Runtime (CLR) framework, Internet Information Server (IIS), developer tools like Visual Studio.NET, and other Microsoft Software Development related tools and solutions. Example includes:<br />IIS/ASP performance diagnostics and tuning, such as CPU spikes and slow user experience.<br />CLR performance debugging, profiling, detailed analysis, and architectural best practices.<br />Team Foundation Server performance issues, such as Work Item Tracking, Source Control, Reporting, and Server Responsiveness.<br /><br /><br />Below is a list of self-help resources for this scenario. These resources may also be used by Microsoft Support Engineers during an Advisory Services engagement.<br /><br /><strong>IIS 6 Performance Forum<br /></strong><br />A forum aimed at sharing ideas, techniques for optimizing IIS performance.<br />http://forums.iis.net/1037.aspx (<a href="http://forums.iis.net/1037.aspx">http://forums.iis.net/1037.aspx</a>)<br /><br /><strong>IIS 7 Performance Forum<br /></strong><br />Discussion on how to effectively tweak IIS 7 to resolve issues related to performance.<br />http://forums.iis.net/1050.aspx (<a href="http://forums.iis.net/1050.aspx">http://forums.iis.net/1050.aspx</a>)<br /><br /><strong>PAG Performance Testing Guide<br /></strong><br />This guide shows you an end-to-end approach for implementing performance testing. Whether you are new to performance testing, or looking for ways to improve your current performance testing approach, you will find insights that you can tailor for your specific scenarios.<br /><a href="http://msdn.microsoft.com/en-us/library/bb924375.aspx">http://msdn.microsoft.com/en-us/library/bb924375.aspx</a><br /><br /><strong>PAG Improving .NET Application Performance and Scalability </strong><br /><br />This guide provides end-to-end guidance for managing performance and scalability throughout your application life cycle to reduce risk and lower total cost of ownership. It provides a framework that organizes performance into a handful of prioritized categories where your choices heavily impact performance and scalability success.<br /><a href="http://msdn.microsoft.com/en-us/library/ms998530.aspx">http://msdn.microsoft.com/en-us/library/ms998530.aspx</a> <br /><br /><strong>Optimizing Performance of Database Access in IIS </strong><br /><br />This document provides some "best practices" for optimizing database access.<br /><a href="http://msdn.microsoft.com/en-us/library/ms525484.aspx">http://msdn.microsoft.com/en-us/library/ms525484.aspx</a><br /><br /><strong>ASP.NET Performance Monitoring and When to Alert Administrators </strong><br /><br />Discusses which performance counters are most helpful in diagnosing stress and performance issues in Microsoft ASP.NET applications, what thresholds should be set in order to alert administrators to problems, and other resources that can be used to monitor the health of an ASP.NET application.<br /><a href="http://msdn.microsoft.com/en-us/library/ms972959.aspx">http://msdn.microsoft.com/en-us/library/ms972959.aspx</a><br /><br /><strong>Designing Scalable IIS Applications </strong><br /><br />This guide provides design considerations for performance and scalability.<br /><a href="http://msdn.microsoft.com/en-us/library/ms525522.aspx">http://msdn.microsoft.com/en-us/library/ms525522.aspx</a><br /><br /><br /><strong>Scaling Strategies for ASP.NET Applications </strong><br /><br />This MSDN article discusses scaling requirements for ASP.NET applications.<br /><a href="http://msdn.microsoft.com/en-us/magazine/cc500561.aspx?pr=blog">http://msdn.microsoft.com/en-us/magazine/cc500561.aspx?pr=blog</a><br /><br /><strong>Tools for Optimizing Performance </strong><br /><br />This document lists brief descriptions of performance-optimizing tools and how to access them.<br /><a href="http://msdn.microsoft.com/en-us/library/dd328379.aspx">http://msdn.microsoft.com/en-us/library/dd328379.aspx</a> <br /><br /><strong>Design and Configuration for Performance (ASP.NET) </strong><br /><br />This topic discusses design, configuration, compilation, and memory options available to improve the performance of a Web application.<br /><a href="http://msdn.microsoft.com/en-us/library/ms227998.aspx">http://msdn.microsoft.com/en-us/library/ms227998.aspx</a><br /><br /><br /><strong>ASP.NET Performance Articles </strong><br /><br />This document provides a listing of articles that can be used to improve and montior the performance of your applications.<br /><a href="http://msdn.microsoft.com/en-us/library/44e5wy6k(VS.85).aspx">http://msdn.microsoft.com/en-us/library/44e5wy6k(VS.85).aspx</a><br /><br /><strong>Troubleshooting a Performance Issue with Failed Request Tracing and appcmd in IIS 7 </strong><br /><br />This blog post discusses how to troubleshoot a performance issue in IIS 7.<br /><a href="http://blogs.msdn.com/tess/archive/2008/08/19/troubleshooting-a-performance-issue-with-failed-request-tracing-and-appcmd-in-iis7.aspx">http://blogs.msdn.com/tess/archive/2008/08/19/troubleshooting-a-performance-issue-with-failed-request-tracing-and-appcmd-in-iis7.aspx</a><br /><br /><strong>BTess's "Performance Issues and Hangs" </strong><br /><br />List of blog postings regarding performance issues.<br /><a href="http://blogs.msdn.com/tess/archive/tags/Performance+issues+and+hangs/default.aspx">http://blogs.msdn.com/tess/archive/tags/Performance+issues+and+hangs/default.aspx</a><br /><br /><strong>How to View What ASP.NET Requests Are Doing at Runtime </strong><br /><br />This blog post discusses a tool with a User Interface that allows you to choose a process and thread and see the managed call stack at that point in time that can be run on IIS 6.0.<br /><a href="http://blogs.msdn.com/webtopics/archive/2009/05/05/how-to-view-what-asp-net-requests-are-doing-at-runtime-on-iis-6-0.aspx">http://blogs.msdn.com/webtopics/archive/2009/05/05/how-to-view-what-asp-net-requests-are-doing-at-runtime-on-iis-6-0.aspx</a><br /><br /><br /><strong>Troubleshooting System.OutOfMemoryExceptions in ASP.NET </strong><br /><br />This blog post discusses how to troubleshoot OutOfMemoryExceptions in ASP.NET.<br /><a href="http://blogs.msdn.com/webtopics/archive/2009/05/22/Troubleshooting-System.OutOfMemoryExceptions-in-ASP.NET.aspx">http://blogs.msdn.com/webtopics/archive/2009/05/22/Troubleshooting-System.OutOfMemoryExceptions-in-ASP.NET.aspx</a><br /><br /><br /><strong>Javascript Resources<br /></strong>Profiling Script with the Developer Tools<br /><br />This page provides an introduction to script profiling, which can be used to identify and resolve performance-related issues.<br /><a href="http://msdn.microsoft.com/en-us/library/dd565629(VS.85).aspx">http://msdn.microsoft.com/en-us/library/dd565629(VS.85).aspx</a><br /><br /><strong>JScript Debugger in Internet Explorer 8<br /></strong><br />This blog post provides information on how to use the JScript debugger<br /><br /><a href="http://blogs.msdn.com/jscript/archive/2008/03/13/jscript-debugger-in-internet-explorer-8.aspx">http://blogs.msdn.com/jscript/archive/2008/03/13/jscript-debugger-in-internet-explorer-8.aspx</a><br /><br />Improved Productivity Through Internet Explorer 8 Developer Tools<br /><br />This blog post focuses on the developer tools available for Internet Explorer 8.<br /><a href="http://blogs.msdn.com/ie/archive/2008/03/07/improved-productivity-through-internet-explorer-8-developer-tools.aspx">http://blogs.msdn.com/ie/archive/2008/03/07/improved-productivity-through-internet-explorer-8-developer-tools.aspx</a><br /><br /><strong>IE + JavaScript Performance Recommendations - Part 1 </strong><br /><br />This blog post discusses ways to improvie performance of JavaScript.<br /><a href="http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx">http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx</a><br /><br /><br /><strong>IE + JavaScript Performance Recommendations - Part 2: JavaScript Code Inefficiencies </strong><br /><br />This blog post discusses how to avoid JavaScript code inefficiencies.<br /><a href="http://blogs.msdn.com/ie/archive/2006/11/16/ie-javascript-performance-recommendations-part-2-javascript-code-inefficiencies.aspx">http://blogs.msdn.com/ie/archive/2006/11/16/ie-javascript-performance-recommendations-part-2-javascript-code-inefficiencies.aspx</a><br /><br /><strong>IE + JavaScript Performance Recommendations - Part 3: JavaScript Code Inefficiencies</strong><br /><br />This blog post focuses on specific inefficiencies related to closures and object-oriented programming.<br /><a href="http://blogs.msdn.com/ie/archive/2007/01/04/ie-jscript-performance-recommendations-part-3-javascript-code-inefficiencies.aspx">http://blogs.msdn.com/ie/archive/2007/01/04/ie-jscript-performance-recommendations-part-3-javascript-code-inefficiencies.aspx</a><br /><br /><strong>Performance Optimization of Arrays - Part 1<br /></strong><br />This blog post discusses how to improve performance of Array operations<br /><a href="http://blogs.msdn.com/jscript/archive/2008/03/25/performance-optimization-of-arrays-part-i.aspx">http://blogs.msdn.com/jscript/archive/2008/03/25/performance-optimization-of-arrays-part-i.aspx</a><br /><br /><strong>Performance Optimization of Arrays - Part II </strong><br /><br />This blog post continues the discussion on how to improve performance of Array operations.<br /><a href="http://blogs.msdn.com/jscript/archive/2008/04/08/performance-optimization-of-arrays-part-ii.aspx">http://blogs.msdn.com/jscript/archive/2008/04/08/performance-optimization-of-arrays-part-ii.aspx</a><br /><br /><strong>Performance issues with "String Concatenation" in JScript </strong><br /><br />This blog post focuses on how to improve the performance of string concatenations in JScript.<br /><a href="http://blogs.msdn.com/jscript/archive/2007/10/17/performance-issues-with-string-concatenation-in-jscript.aspx">http://blogs.msdn.com/jscript/archive/2007/10/17/performance-issues-with-string-concatenation-in-jscript.aspx</a> <br /><br /><strong>Eval is Evil - Part 1 </strong><br /><br />This blog post provides alternative solutions to the use of the Eval method.<br />http://blogs.msdn.com/ericlippert/archive/2003/11/01/53329.aspx (http://blogs.msdn.com/ericlippert/archive/2003/11/01/53329.aspx)<br /><br /><strong>Eval is Evil - Part two</strong><br /><br />This blog post continues the discussion of alternate solutions to the Eval method.<br />http://blogs.msdn.com/ericlippert/archive/2003/11/04/53335.aspx (http://blogs.msdn.com/ericlippert/archive/2003/11/04/53335.aspx)<br /><br /><br /><strong>Networking Resources<br />How to capture network traffic with Network Monitor<br /></strong><br />The purpose of this article is to provide you with the information needed to capture network traffic from a local area network using Microsoft's Network Monitor.<br /><a href="http://support.microsoft.com/kb/148942">http://support.microsoft.com/kb/148942</a><br /><br /><strong>Fiddler PowerToy - Part 1: HTTP Debugging<br /></strong><br />Learn how to use the Microsoft Fiddler HTTP debugger when developing and testing Web applications and clients.<br /><a href="http://msdn.microsoft.com/en-us/library/bb250446(VS.85).aspx">http://msdn.microsoft.com/en-us/library/bb250446(VS.85).aspx</a><br /><br /><strong>Fiddler PowerToy - Part 2: HTTP Performance </strong><br /><br />Learn how to build a faster Web site using the Microsoft Fiddler HTTP Debugger.<br />http://msdn.microsoft.com/en-us/library/bb250442(VS.85).aspx (http://msdn.microsoft.com/en-us/library/bb250442(VS.85).aspx)<br /><br /><strong>Part 2: TCP Performance Expert and General Trouble Shooting<br /></strong><br />This blog discusses TCP Performance Expert and General Troubleshooting skills.<br />http://blogs.technet.com/netmon/archive/2007/01/26/part-2-tcp-performance-expert-and-general-trouble-shooting.aspx (http://blogs.technet.com/netmon/archive/2007/01/26/part-2-tcp-performance-expert-and-general-trouble-shooting.aspx)<br /><br /><strong>TCP Analyzer Expert: Make Your Network Run Faster<br /></strong><br />This blog post focuses on how to use the TCP Analyzer Expert.<br />http://blogs.technet.com/netmon/archive/2009/06/30/tcp-analyzer-expert-make-your-network-run-faster.aspx (http://blogs.technet.com/netmon/archive/2009/06/30/tcp-analyzer-expert-make-your-network-run-faster.aspx)<br /><br /><br /><strong>Tools Resources<br />Fiddler Web Debugging Proxy<br /></strong><br />Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. This document discusses use of the tool.<br /><a href="http://www.fiddlertool.com/fiddler/">http://www.fiddlertool.com/fiddler/</a><br /><br /><strong>AjaxScope<br /><br /></strong>Ajax View enables developer to see and control the behaviors of their web applications on user's desktops. This page discucess how tu use this tool.<br /><br /><a href="http://research.microsoft.com/en-us/projects/ajaxview/">http://research.microsoft.com/en-us/projects/ajaxview/</a><br /><br /><strong>Microsoft Network Monitor </strong><br /><br />Tool to allow capturing and protocol analysis of network traffic.<br />http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=983b941d-06cb-4658-b7f6-3088333d062f (http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=983b941d-06cb-4658-b7f6-3088333d062f)<br /><br /><strong>Debugging tools for Windows<br /></strong><br />You can use Debugging Tools for Windows to debug drivers, applications, and services on systems that are running Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, or Windows Server 2008.<br />http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)<br /><br /><strong>DebugDiag<br /></strong><br />The Debug Diagnostic Tool (DebugDiag) is designed to assist in troubleshooting issues such as hangs, slow performance, memory leaks or fragmentation, and crashes in any Win32 user-mode process.<br />http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en (http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en)<br /><br /><strong>neXpert Performance Tool<br /></strong><br />Discussion On Using Fiddler and neXpert To Identify and Fix Web Performance Issues.<br />http://blogs.msdn.com/nexpert/ (http://blogs.msdn.com/nexpert/)<br /><br />Strace<br />STRACE is a socket/SSL tracer designed to generate LOG for Internet Explorer.<br /><br />http://www.microsoft.com/downloads/details.aspx?familyid=F5EC767F-27F2-4FB3-90A5-4BF0D5F4810A&displaylang=en (http://www.microsoft.com/downloads/details.aspx?familyid=F5EC767F-27F2-4FB3-90A5-4BF0D5F4810A&displaylang=en)<br /><br /><strong>HTTPReplay</strong><br />HTTPREPLAY is a SOCKTRC plugin allowing to analyze and replay HTTP traffic.<br /><br /><a href="http://www.microsoft.com/downloads/details.aspx?familyid=d25ba362-c17b-4d80-a677-1faff862e629&displaylang=en&tm">http://www.microsoft.com/downloads/details.aspx?familyid=d25ba362-c17b-4d80-a677-1faff862e629&displaylang=en&tm</a><br /><br /><strong>Design Resources<br />Designing for Add-on Performance<br /></strong><br />Blog post describing how to improve add-on performance with Internet Explorer.<br /><a href="http://blogs.msdn.com/ie/archive/2008/04/04/designing-for-add-on-performance.aspx">http://blogs.msdn.com/ie/archive/2008/04/04/designing-for-add-on-performance.aspx</a><br /><br /><strong>Performance Considerations in Internet Explorer </strong><br /><br />This page provides links and tips for getting extra performance from DHTML, Script, Web Servers, ActiveX Controls, Java Applets, and Plugins.<br /><a href="http://msdn.microsoft.com/en-us/library/ms533021(VS.85).aspx">http://msdn.microsoft.com/en-us/library/ms533021(VS.85).aspx</a><br /><br /><strong>Faster DHTML in 12 Steps </strong><br /><br />This article describes how using some DHTML features can affect performance more than others, and it presents tips that will help your pages perform faster.<br />http://msdn.microsoft.com/en-us/library/ms533019(VS.85).aspx (http://msdn.microsoft.com/en-us/library/ms533019(VS.85).aspx)<br /><br /><strong>Building High Performance HTML Pages<br /></strong><br />This article presents some tips on how you can get the most performance out of your pages.<br /><a href="http://msdn.microsoft.com/en-us/library/ms533020(VS.85).aspx">http://msdn.microsoft.com/en-us/library/ms533020(VS.85).aspx</a><br /><br /><strong>Frequent Flyers: Boosting Performance on DHTML Pages </strong><br /><br />This blog post discusses how to get better performance from your Dynamic HTML pages.<br /><a href="http://msdn.microsoft.com/en-us/library/bb264005(VS.85).aspx">http://msdn.microsoft.com/en-us/library/bb264005(VS.85).aspx</a><br /><br /><strong>Asynchrony: Loved Your Performance </strong><br /><br />This article discusses how to improve performance with asynchrony.<br /><a href="http://msdn.microsoft.com/en-us/library/bb263994(VS.85).aspx">http://msdn.microsoft.com/en-us/library/bb263994(VS.85).aspx</a><br /><br /><strong>Building ActiveX Controls for Internet Explorer </strong><br /><br />This article covers features of Windows Internet Explorer that a developer writing Microsoft ActiveX Controls should take into account when targeting Internet Explorer as a container.<br /><a href="http://msdn.microsoft.com/en-us/library/aa751970(VS.85).aspx">http://msdn.microsoft.com/en-us/library/aa751970(VS.85).aspx</a><br /><br /><br /><strong>Memory Leak Resources<br />Understanding and Solving Internet Explorer Leak Patterns </strong><br /><br />This article discusses how to troubleshoot and resolve memory leaks.<br /><a href="http://msdn.microsoft.com/en-us/library/bb250448(VS.85).aspx">http://msdn.microsoft.com/en-us/library/bb250448(VS.85).aspx</a><br /><br /><br /><strong>General Resources<br />Learn Internet Explorer<br /></strong><br />A series of topics designed to teach Internet Explorer programming.<br /><a href="http://msdn.microsoft.com/en-us/ie/aa740473.aspx">http://msdn.microsoft.com/en-us/ie/aa740473.aspx</a><br /><br />Measuring Browser Performance: Understanding issues in benchmarking and performance analysis<br /><br />This document explains the various browser and network components and how each piece can impact performance when benchmarking<br /><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=cd8932f3-b4be-4e0e-a73b-4a373d85146d">http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=cd8932f3-b4be-4e0e-a73b-4a373d85146d</a><br /><br /><br /><strong>IE8 Performance<br /><br /></strong>Blog post discussing the performance changes in Internet Explorer 8.<br /><a href="http://blogs.msdn.com/ie/archive/2008/08/26/ie8-performance.aspx">http://blogs.msdn.com/ie/archive/2008/08/26/ie8-performance.aspx</a><br /><br /><strong>Common Issues in Assessing Browser Performance </strong><br /><br />This blog post focuses on performance with a discussion around some of the issues impacting browser performance testing and the techniques that you can use to effectively measure browser performance.<br /><a href="http://blogs.msdn.com/ie/archive/2009/01/23/common-issues-in-assessing-browser-performance.aspx">http://blogs.msdn.com/ie/archive/2009/01/23/common-issues-in-assessing-browser-performance.aspx</a><br /><br /><br />How to improve browsing performance in Internet Explorer<br /><br />This article describes how to improve browsing performance in Internet Explorer.<br /><a href="http://support.microsoft.com/kb/153790">http://support.microsoft.com/kb/153790</a> <br /><br /><strong>How to optimize Internet Explorer </strong><br /><br />This article describes how to reset or optimize Internet Explorer 7.<br /><a href="http://support.microsoft.com/kb/936213">http://support.microsoft.com/kb/936213</a> <br /><br /><strong>How to troubleshoot Internet Explorer issues in Windows Vista and in Windows XP </strong><br /><br />This article discusses how to troubleshoot possible issues that you may experience when you use Windows Internet Explorer 7 or Windows Internet Explorer 8 on a computer that is running Windows Vista.<br /><a href="http://support.microsoft.com/kb/936215">http://support.microsoft.com/kb/936215</a><br /><br />Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use (<a href="http://go.microsoft.com/fwlink/?LinkId=151500">http://go.microsoft.com/fwlink/?LinkId=151500</a>) for other considerations.<div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-57831162500291146332010-11-16T00:14:00.000+01:002010-11-16T00:15:21.198+01:00nServiceBus Licensesreally cool projects<br /><br />******************************<br /><br />NHibernate is licensed under the LGPL v2.1 license as described here:<br /><br />http://www.hibernate.org/license.html<br /><br />NHibernate binaries are merged into NServiceBus allowed under the LGPL license terms found here:<br /><br />http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt<br /><br />******************************<br /><br /><br />LinFu is licensed under the LGPL v3 license as described here:<br /><br />http://code.google.com/p/linfu/<br /><br />LinFu binaries are merged into NServiceBus allowed under the LGPL license terms found here:<br /><br />http://www.gnu.org/licenses/lgpl-3.0.txt<br /><br />******************************<br /><br /><br />Iesi.Collections binaries are merged into NServiceBus allowed under the license terms found here:<br /><br />Copyright © 2002-2004 by Aidant Systems, Inc., and by Jason Smith.<br /><br />Copied from http://www.codeproject.com/csharp/sets.asp#xx703510xx that was posted by JasonSmith 12:13 2 Jan '04<br /><br />Feel free to use this code any way you want to. As a favor to me, you can leave the copyright in there. You never know when someone might recognize your name! <br /><br />If you do use the code in a commercial product, I would appreciate hearing about it. This message serves as legal notice that I won't be suing you for royalties! The code is in the public domain.<br /><br />On the other hand, I don't provide support. The code is actually simple enough that it shouldn't need it. <br /><br />******************************<br /><br /><br />Fluent NHibernate is licensed under the BSD license as described here:<br /><br />http://github.com/jagregory/fluent-nhibernate/raw/master/LICENSE.txt<br /><br />Fluent NHibernate binaries are merged into NServiceBus allowed under the terms of the license.<br /><br />******************************<br /><br /><br />Autofac is licensed under the MIT license as described here:<br /><br />http://code.google.com/p/autofac/<br /><br />Autofac binaries are linked into the NServiceBus distribution allowed under the license terms found here:<br /><br />http://www.opensource.org/licenses/mit-license.php<br /><br />******************************<br /><br />Spring.NET is licensed under the Apache license version 2.0 as described here:<br /><br />http://www.springframework.net/license.html<br /><br />Spring.NET binaries are merged into NServiceBus allowed under the license terms found here:<br /><br />http://www.apache.org/licenses/LICENSE-2.0.txt<br /><br />******************************<br /><br /><br />Antlr is licensed under the BSD license as described here:<br /><br />http://antlr.org/license.html<br /><br />Antlr binaries are merged into NServiceBus allowed under the license terms described above.<br /><br />******************************<br /><br /><br />Common.Logging is licensed under the Apache License, Version 2.0 as described here:<br /><br />http://netcommon.sourceforge.net/license.html<br /><br />Common.Logging binaries are merged into NServiceBus allowed under the LGPL license terms found here:<br /><br />http://www.apache.org/licenses/LICENSE-2.0.txt<br /><br />******************************<br /><br /><br />StructureMap is licensed under the Apache License, Version 2.0 as described here:<br /><br />http://structuremap.github.com/structuremap/index.html<br /><br />StructureMap baries are linked into the NServiceBus distribution allowed under the license terms found here:<br /><br />http://www.apache.org/licenses/LICENSE-2.0.txt<br /><br />******************************<br /><br /><br />Castle is licensed under the Apache License, Version 2.0 as described here:<br /><br />http://www.castleproject.org/<br /><br />Castle binaries are linked into the NServiceBus distribution allowed under the license terms found here:<br /><br />http://www.apache.org/licenses/LICENSE-2.0.txt<br /><br />******************************<br /><br /><br />Unity is licensed under the MSPL license as described here:<br /><br />http://unity.codeplex.com/license<br /><br />Unity binaries are linked into the NServiceBus distribution allowed under the license terms described above.<br /><br />******************************<br /><br /><br />Log4Net is licensed under the Apache License, Version 2.0 as described here:<br /><br />http://logging.apache.org/log4net/license.html<br /><br />Log4Net binaries are linked into the NServiceBus distribution allowed under the license terms described above.<br /><br />******************************<br /><br /><br />TopShelf is licensed under the Apache License, Version 2.0 as described here:<br /><br />http://code.google.com/p/topshelf/<br /><br />TopShelf binaries are merged into NServiceBus as allowed under the license terms described here:<br /><br />http://www.apache.org/licenses/LICENSE-2.0.txt<br /><br />******************************<br /><br /><br />SQLite is in the public domain as described here:<br /><br />http://www.sqlite.org/copyright.html<br /><br />SQLite binaries are linked into the NServiceBus distribution allowed under the license terms described above.<br /><br />******************************<br /><br /><br />Rhino Mocks is licensed under the BSD License as described here:<br /><br />http://www.ayende.com/projects/rhino-mocks.aspx<br /><br />Rhino Mocks binaries are merged into NServiceBus allowed under the license terms described here:<br /><br />http://www.opensource.org/licenses/bsd-license.php<div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-61840230763863384132010-11-08T08:26:00.003+01:002010-11-08T08:29:23.566+01:00writing windows shell extensionPart 1: <a href="http://blogs.msdn.com/b/codefx/archive/2010/09/14/writing-windows-shell-extension-with-net-framework-4-c-vb-net-part-1.aspx">http://blogs.msdn.com/b/codefx/archive/2010/09/14/writing-windows-shell-extension-with-net-framework-4-c-vb-net-part-1.aspx</a><br /><br />Part 2: <a href="http://blogs.msdn.com/b/codefx/archive/2010/10/10/writing-windows-shell-extension-with-net-framework-4-c-vb-net-part-2.aspx?wa=wsignin1.0">http://blogs.msdn.com/b/codefx/archive/2010/10/10/writing-windows-shell-extension-with-net-framework-4-c-vb-net-part-2.aspx?wa=wsignin1.0</a><br /><br />Part 3: <a href="http://blogs.msdn.com/b/codefx/archive/2010/11/07/writing-windows-shell-extension-with-net-framework-4-c-vb-net-part-3-thumbnail-handler.aspx">http://blogs.msdn.com/b/codefx/archive/2010/11/07/writing-windows-shell-extension-with-net-framework-4-c-vb-net-part-3-thumbnail-handler.aspx</a><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-7002204386240691042010-09-30T18:24:00.001+02:002010-09-30T18:24:56.233+02:00LINQ Evaluation From Basics to ImplementationMany of us are aware of LINQ today. LINQ is an amazing programming language feature. During my discussions I find a lot of myths around understanding. Here I have tried to demonstrate from some basics of C# 3.0 language enhancements to delegate, anonymous type, lambda expression and finally LINQ. How it has evolved<br /><br /><a href="http://channel9.msdn.com/posts/LINQ-Evaluation-From-Basics-to-Implementation">http://channel9.msdn.com/posts/LINQ-Evaluation-From-Basics-to-Implementation</a><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-10941256418116113572010-09-19T22:41:00.000+02:002010-09-19T22:42:24.178+02:00VSTO: Display WPF User Control in Custom Task Pane<a href="http://stevepietrek.com/2009/03/24/vsto-display-wpf-user-control-in-custom-task-pane/">http://stevepietrek.com/2009/03/24/vsto-display-wpf-user-control-in-custom-task-pane/</a><br /><br /><br /><br /><br /><a href="http://www.codeproject.com/KB/WPF/UserControl.aspx?display=Print">How to : Creating a WPF User Control & using it in a WPF application ( C# )</a><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-4111722772171402812010-07-19T12:16:00.003+02:002010-07-19T12:18:08.479+02:00Strong name validation failed. (Exception from HRESULT: 0x8013141A)System.Security.SecurityException: Strong name validation failed. (Exception from HRESULT: 0x8013141A) The Zone of the assembly that failed was "My Computer"<br /><br /><strong>step 1)</strong> takeover the following code: <a href="http://www.mikevdm.com/BlogEntry/Key/Simple-Gacutil-Replacement" target="_blank">http://www.mikevdm.com/BlogEntry/Key/Simple-Gacutil-Replacement</a><br /><strong>step 2)</strong> add a post build event: <br /> - $(SolutionDir)Tools\Gacutil.exe remove $(TargetPath)<br /> - $(SolutionDir)Tools\Gacutil.exe add $(TargetPath)<br /><strong>step 3)</strong> run from the console: D:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\x64>sn.exe -Vr *,[public key token]<br /><br />estimated time solver: 30 - 60 minutes<div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-10167916933654259712010-07-19T08:36:00.007+02:002010-07-19T09:02:32.311+02:00assign TFS Workitems to different usersThe following code display how it's possible to set the assign-to field from one user to another user. I had to write this code because in my instance the console command did not work: <br /><a href="http://msdn.microsoft.com/en-us/library/ms253054.aspx" target="_blank">TFSConfig Identities /change /fromdomain:Contoso1 /todomain:ContosoPrime /account:Contoso1\hholt /toaccount:ContosoPrime\jpeoples</a><br /> <br />Since the created-by field is a read only field this code will not change the value but if your really need to handle this then I think it should be possible to manipulate the XML of your Workitems and then handle it. Sounds to me like a lot of work.<br /><br />Add the following using's to your classes:<br /><br /><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code><br /><br />using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />using System.Net;<br />using Microsoft.TeamFoundation.Client;<br />using Microsoft.TeamFoundation;<br />using Microsoft.TeamFoundation.Server;<br />using Microsoft.TeamFoundation.Framework.Client;<br />using System.Collections.ObjectModel;<br />using Microsoft.TeamFoundation.Framework.Common;<br />using Microsoft.TeamFoundation.WorkItemTracking.Client;<br />using Microsoft.TeamFoundation.VersionControl.Client;<br /><br /></code></pre><br /><br />Helper methods:<br /><br /><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code><br /> public static string url = @"https://tfs.yourdomain.com/tfs";<br /> <br /> [System.Diagnostics.DebuggerStepThrough]<br /> public static TfsConfigurationServer GetTfsConfigurationServer()<br /> {<br /> return new TfsConfigurationServer(new Uri(url), GetCredentials(), new UICredentialsProvider());<br /> }<br /><br /> [System.Diagnostics.DebuggerStepThrough]<br /> private static ICredentials GetCredentials()<br /> {<br /> return new NetworkCredential("user", "password", "domain");<br /> }<br /> <br /> [System.Diagnostics.DebuggerStepThrough]<br /> public static bool EnsureAuthentication(TfsConfigurationServer srv)<br /> {<br /> bool result = true;<br /><br /> try<br /> {<br /> srv.EnsureAuthenticated();<br /> srv.Authenticate();<br /> result = srv.HasAuthenticated;<br /> }<br /> catch (Exception)<br /> {<br /> result = false;<br /> }<br /><br /> return result;<br /> }<br /></code></pre><br /><br />The main code to re-assign your workitem assign-to field over all TFS collections:<br /><br />this code is stright forward without any add ons or so... enjoy<br /><br /><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code><br /><br /> static void Main(string[] args)<br /> {<br /><br /> List<Identity> tfsIdentities = Helper.GetAllTfsUsers();<br /><br /> Console.WriteLine("Connecting to Server: " + Helper.url);<br /> TfsConfigurationServer srv = Helper.GetTfsConfigurationServer();<br /><br /> Console.WriteLine("Ensure Authenticated: " + Helper.url);<br /> srv.EnsureAuthenticated();<br /><br /> srv.Authenticate();<br /> int counter = 0;<br /><br /> if (srv.HasAuthenticated)<br /> {<br /> CatalogNode configurationServerNode = srv.CatalogNode;<br /><br /> // Query the children of the configuration server node for all of the team project collection nodes<br /> ReadOnlyCollection<CatalogNode> tpcNodes = configurationServerNode.QueryChildren(<br /> new Guid[] { CatalogResourceTypes.ProjectCollection },<br /> false,<br /> CatalogQueryOptions.None);<br /><br /> foreach (CatalogNode tpcNode in tpcNodes)<br /> {<br /> Guid tpcId = new Guid(tpcNode.Resource.Properties["InstanceId"]);<br /> TfsTeamProjectCollection tpc = srv.GetTeamProjectCollection(tpcId);<br /><br /><br /> // Do your tpc work here.<br /> Console.WriteLine("{0}", tpc.Name);<br /><br /><br /><br /> // get a reference to the work item tracking service<br /> var workItemStore = tpc.GetService<WorkItemStore>();<br /><br /> if (workItemStore.Projects.Count <= 0)<br /> {<br /> // go over the next project<br /> continue;<br /> }<br /><br /> // iterate over the projects<br /> foreach (Project project in workItemStore.Projects)<br /> {<br /> Console.WriteLine("\tProject: {0}", project.Name);<br /><br /> VersionControlServer versionControl = (VersionControlServer)tpc.GetService(typeof(VersionControlServer));<br /> TeamProject teamProject = versionControl.GetTeamProject(project.Name);<br /> IGroupSecurityService gss = (IGroupSecurityService)tpc.GetService<IGroupSecurityService>();<br /> Identity[] appGroups = gss.ListApplicationGroups(teamProject.ArtifactUri.AbsoluteUri);<br /><br /> foreach (Identity group in appGroups)<br /> {<br /> Identity[] groupMembers = gss.ReadIdentities(SearchFactor.Sid, new string[] { group.Sid }, QueryMembership.Expanded);<br /> foreach (Identity member in groupMembers)<br /> {<br /> if (member.Members != null)<br /> {<br /> foreach (string memberSid in member.Members)<br /> {<br /> Identity memberInfo = gss.ReadIdentity(SearchFactor.Sid, memberSid, QueryMembership.None);<br /><br /> if (memberInfo.Type == IdentityType.WindowsUser)<br /> {<br /> // Console.WriteLine("\t" + memberInfo.AccountName + " - " + memberInfo.DisplayName + " - " + memberInfo.Domain);<br /> if (!tfsIdentities.Contains(memberInfo))<br /> tfsIdentities.Add(memberInfo);<br /> }<br /> }<br /> }<br /> }<br /> }<br /><br /> WorkItemCollection workItemCollection = workItemStore.Query(<br /> " SELECT [System.Id], [System.WorkItemType]," +<br /> " [System.State], [System.AssignedTo], [System.Title] " +<br /> " FROM WorkItems " +<br /> " WHERE [System.TeamProject] = '" + project.Name +<br /> "' ORDER BY [System.WorkItemType], [System.Id]");<br /><br /> foreach (WorkItem item in workItemCollection)<br /> {<br /> counter++;<br /><br /> bool containsOldDomain = item[CoreField.AssignedTo].ToString().Contains(@"OldValidUser");<br /><br /> if (containsOldDomain)<br /> {<br /> WorkItem item1 = workItemStore.GetWorkItem(item.Id);<br /> item1.Fields[CoreField.AssignedTo].Value = "NewValidUser";<br /><br /> try<br /> {<br /> bool a = (item1.Validate().Count == 0);<br /><br /> if (a)<br /> {<br /> Console.WriteLine("\t\tValid: " + item.Id + item.Title);<br /> item1.Save();<br /> }<br /> else<br /> {<br /> Console.WriteLine("\t\tNot Valid: " + item.Id + item.Title);<br /> }<br /> }<br /> catch (Exception ex)<br /> {<br /> Console.WriteLine(item.Id + ": " + ex.Message);<br /> }<br /> }<br /> }<br /> // clear users<br /> tfsIdentities.Clear();<br /><br /> }<br /> }<br /> }<br /><br /> Console.WriteLine("Workitem count {0}", counter);<br /> Console.WriteLine("Press enter to exit");<br /> Console.ReadLine();<br /> }<br /></code></pre><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5655621.post-43987006259470809872010-07-19T08:29:00.004+02:002010-07-19T08:35:03.572+02:00Retrieve a list with all your TFS UsersThe following code demonstrates how to read all users from different TFS collections.<br /><br /><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>namespace Migrator<br />{<br /><br /> using System;<br /> using System.Linq;<br /> using System.Reflection;<br /> using Microsoft.TeamFoundation.Client;<br /> using System.Net;<br /> using Microsoft.TeamFoundation.Server;<br /> using System.Collections.Generic;<br /> using Microsoft.TeamFoundation.Framework.Client;<br /> using System.Collections.ObjectModel;<br /> using Microsoft.TeamFoundation.Framework.Common;<br /> using Microsoft.TeamFoundation.WorkItemTracking.Client;<br /> using Microsoft.TeamFoundation.VersionControl.Client;<br /><br /><br /> public static class Helper<br /> {<br /> // without collection name<br /> public static string url = @"http://tfs.yoururl.com/tfs";<br /> <br /> [System.Diagnostics.DebuggerStepThrough]<br /> public static TfsConfigurationServer GetTfsConfigurationServer()<br /> {<br /> return new TfsConfigurationServer(new Uri(url), GetCredentials(), new UICredentialsProvider());<br /> }<br /><br /> [System.Diagnostics.DebuggerStepThrough]<br /> private static ICredentials GetCredentials()<br /> {<br /> return new NetworkCredential("adminuser", "password", "YourDomain");<br /> }<br /> <br /> [System.Diagnostics.DebuggerStepThrough]<br /> public static bool EnsureAuthentication(TfsConfigurationServer srv)<br /> {<br /> bool result = true;<br /><br /> try<br /> {<br /> srv.EnsureAuthenticated();<br /> srv.Authenticate();<br /> result = srv.HasAuthenticated;<br /> }<br /> catch (Exception)<br /> {<br /> result = false;<br /> }<br /><br /> return result;<br /> }<br /><br /> public static List<Identity> GetAllTfsUsers()<br /> {<br /> List<Identity> result = new List<Identity>();<br /> TfsConfigurationServer srv = Helper.GetTfsConfigurationServer();<br /><br /> if (EnsureAuthentication(srv))<br /> {<br /> CatalogNode configurationServerNode = srv.CatalogNode;<br /> <br /> // Query the children of the configuration server node for all of the team project collection nodes<br /> ReadOnlyCollection<CatalogNode> tpcNodes = configurationServerNode.QueryChildren(<br /> new Guid[] { CatalogResourceTypes.ProjectCollection },<br /> false,<br /> CatalogQueryOptions.None<br /> );<br /><br /> foreach (CatalogNode tpcNode in tpcNodes)<br /> {<br /> Guid tpcId = new Guid(tpcNode.Resource.Properties["InstanceId"]);<br /> TfsTeamProjectCollection tpc = srv.GetTeamProjectCollection(tpcId);<br /><br /> Console.WriteLine("{0}", tpc.Name);<br /><br /> // get a reference to the work item tracking service<br /> var workItemStore = tpc.GetService<WorkItemStore>();<br /><br /> // go over the next node if no projects available<br /> if (workItemStore.Projects.Count <= 0)<br /> {<br /> continue;<br /> }<br /><br /> // iterate over the projects<br /> foreach (Project project in workItemStore.Projects)<br /> {<br /> Console.WriteLine("\tProject: {0}", project.Name);<br /> try<br /> {<br /> VersionControlServer versionControl = (VersionControlServer)tpc.GetService(typeof(VersionControlServer));<br /> TeamProject teamProject = versionControl.GetTeamProject(project.Name);<br /> IGroupSecurityService gss = (IGroupSecurityService)tpc.GetService<IGroupSecurityService>();<br /> Identity[] appGroups = gss.ListApplicationGroups(teamProject.ArtifactUri.AbsoluteUri);<br /><br /> foreach (Identity group in appGroups)<br /> {<br /> Identity[] groupMembers = gss.ReadIdentities(SearchFactor.Sid, new string[] { group.Sid }, QueryMembership.Expanded);<br /> foreach (Identity member in groupMembers)<br /> {<br /> if (member.Members != null)<br /> {<br /> foreach (string memberSid in member.Members)<br /> {<br /> Identity memberInfo = gss.ReadIdentity(SearchFactor.Sid, memberSid, QueryMembership.None);<br /> if (memberInfo.Type == IdentityType.WindowsUser)<br /> {<br /> if (!result.Contains(memberInfo))<br /> {<br /> result.Add(memberInfo);<br /> Console.WriteLine("\t\t" + memberInfo.AccountName + " - " + memberInfo.DisplayName + " - " + memberInfo.Domain);<br /> }<br /> else<br /> {<br /> Console.WriteLine("\t\tUser already available " + memberInfo.AccountName);<br /> }<br /><br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> catch (Exception ex)<br /> {<br /> Console.WriteLine("\tThe Project: '{0}' throws an exception: {1} and will be ignored.", project.Name, ex.Message);<br /> }<br /> } // foreach (Project project in workItemStore.Projects)<br /> } // foreach (CatalogNode tpcNode in tpcNodes)<br /><br /> }<br /> else<br /> {<br /> Console.WriteLine("Authentication problem!");<br /> }<br /><br /> return result;<br /> }<br /> <br /> <br /><br /> }<br />}<br /></code></pre><div class="blogger-post-footer"><script type="text/javascript"><!--
google_ad_client = "pub-0425856736066977";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>Unknownnoreply@blogger.com0