<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8630237</id><updated>2012-01-30T05:43:45.193-04:00</updated><title type='text'>Living in the Material World</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>57</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8630237.post-5655020293352339679</id><published>2007-10-22T14:09:00.000-04:00</published><updated>2007-10-22T14:26:04.513-04:00</updated><title type='text'>understanding ADAM</title><content type='html'>Here's a very &lt;a href="http://www.microsoft.com/technet/technetmag/issues/2006/07/CustomDir/"&gt;pedagogic article  &lt;/a&gt;about ADAM (ok, AD LDS) by Brian Redmond.&lt;br /&gt;Interesting stuff, specially the scenarios, I think they are described in a very simple and understandable way.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;White pages directory:&lt;/span&gt; use syncro tools to pull data from AD, SQL, etc to ADAM. Then the App talks only to ADAM.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Application-specific:&lt;/span&gt; the app needs attributes that are not in the AD schema. Authentication is done against AD but for additional info LDAP queries are made against ADAM&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Extranet Authentication: &lt;/span&gt;provides web SSO&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Legacy LDAP &amp;amp; Bind redirection:&lt;/span&gt; for apps that connected to LDAP directories. We replace them with ADAM (after migrationg data form old LDAP to ADAM). In case of Bind redirection, we create in ADAM a userProxy that represents an AD account.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-5655020293352339679?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/5655020293352339679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=5655020293352339679&amp;isPopup=true' title='36 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/5655020293352339679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/5655020293352339679'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/10/understanding-adam.html' title='understanding ADAM'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>36</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-4583593758151965219</id><published>2007-10-22T12:24:00.000-04:00</published><updated>2007-10-22T12:31:27.537-04:00</updated><title type='text'>ADAM with SSL</title><content type='html'>Ok, it may take some time to make it work. Luckily there's quite a lot of info posted by others who spent days trying to do it properly.&lt;br /&gt;&lt;br /&gt;Here's erlend's post with &lt;a href="http://erlend.oftedal.no/blog/?blogid=7"&gt;detailed instructions&lt;/a&gt;.&lt;br /&gt;Includes all the Certificate Authority stuff that is required.&lt;br /&gt;&lt;br /&gt;And here's tom's post with &lt;a href="http://www.ultravoid.com/wordpress/?p=16"&gt;some tips &lt;/a&gt;if you have the classical “8009030d The credentials supplied to the package were not recognized” error.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-4583593758151965219?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/4583593758151965219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=4583593758151965219&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/4583593758151965219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/4583593758151965219'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/10/adam-with-ssl.html' title='ADAM with SSL'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-837005889931808980</id><published>2007-10-20T10:43:00.000-04:00</published><updated>2007-10-20T10:49:07.854-04:00</updated><title type='text'>Identity in .net</title><content type='html'>Ok, security is one of your main concerns if you work in something more than just atoy application. This &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480245.aspx"&gt;article by Keith Brown&lt;/a&gt; covers Authentication, Single-Sign-On, Authorization, Azman stuff, federated identities, principals, ADFS, and security in WCF. Too much you might say, but after reading this i think you get the hole picture of security in the .net framework. What you can do and what you can't (o, everything is possible....)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-837005889931808980?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/837005889931808980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=837005889931808980&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/837005889931808980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/837005889931808980'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/10/identity-in-net.html' title='Identity in .net'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-5608456689410907134</id><published>2007-10-07T06:11:00.000-04:00</published><updated>2007-10-07T06:19:48.132-04:00</updated><title type='text'>What's on SQL Server's data buffer?</title><content type='html'>SQL Server stores data on 8K pages. These pages can be data pages, index pages and others (&lt;a href="http://www.sql-server-performance.com/tips/sql_server_performance_monitor_coutners_p1.aspx"&gt;here&lt;/a&gt; you'll find the complete list). These pages (well, some of them at a given time) can be stored on the data buffer of SQL Server. Obviously this is because it is faster to retrieve pages from the buffer (RAM) than from disk (physical access).&lt;br /&gt;&lt;br /&gt;But sometimes one asks what's being stored right now in the buffer? We should trust SQL Server's Buffer management policies, but it's better to know exactly what's going on inside. &lt;a href="http://www.sqlteam.com/article/what-data-is-in-sql-server-memory"&gt;This article&lt;/a&gt; by Bill Graziano can be very useful if you need to know....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-5608456689410907134?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/5608456689410907134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=5608456689410907134&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/5608456689410907134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/5608456689410907134'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/10/whats-on-sql-servers-data-buffer.html' title='What&apos;s on SQL Server&apos;s data buffer?'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-1394703185110325780</id><published>2007-10-07T04:40:00.000-04:00</published><updated>2007-10-07T04:48:38.014-04:00</updated><title type='text'>SQL Server Performance counters</title><content type='html'>As usual, the guys from SQL Performance have good tips. this time it's about performance counters. They are very useful if you want to monitor some specific event on your db server, examples:&lt;br /&gt;&lt;br /&gt;SQL Server Access Methods object: &lt;span style="font-weight: bold;"&gt;Page Splits/sec:&lt;/span&gt;&lt;br /&gt;&lt;strong style="font-weight: normal;"&gt;SQL Server Buffer Manager Object: &lt;span style="font-weight: bold;"&gt;Cache Size&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;SQL Server Buffer Manager Object: &lt;strong&gt;Buffer Cache Hit Ratio&lt;/strong&gt;.&lt;br /&gt;&lt;strong style="font-weight: normal;"&gt;SQLServer: SQL Statistics: &lt;span style="font-weight: bold;"&gt;Batch Requests/Sec&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong style="font-weight: normal;"&gt;SQLServer: SQL Statistics: &lt;span style="font-weight: bold;"&gt;SQL Compilations/Sec counter&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-weight: bold;"&gt;.&lt;br /&gt;&lt;/span&gt;SQL Server General Statistics Object: &lt;strong&gt;User Connections&lt;br /&gt;&lt;/strong&gt;SQL Server Locks Object: &lt;strong&gt;Number of Deadlocks/sec&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;More info &lt;a href="http://www.sql-server-performance.com/tips/sql_server_performance_monitor_coutners_p1.aspx"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-1394703185110325780?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/1394703185110325780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=1394703185110325780&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/1394703185110325780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/1394703185110325780'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/10/sql-server-performance-counters.html' title='SQL Server Performance counters'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-2726077297311269182</id><published>2007-09-26T17:14:00.000-04:00</published><updated>2007-09-27T05:36:18.428-04:00</updated><title type='text'>deadlocks in SQL Server</title><content type='html'>In some nasty occasions, we find this kind of exceptions after a batch of transactions has been executed in sql server:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:7;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;Transaction (Process ID 78) was deadlocked on lock resources with another&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;process and has been chosen as the deadlock victim. Rerun the transaction.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Description: An unhandled exception occurred during the execution of the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;current web request. Please review the stack trace for more information&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;about the error and where it originated in the code.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Exception Details: System.Data.SqlClient.SqlExcept&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;ion: Transaction (Process&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ID 78) was deadlocked on lock resources with another process and has been&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;chosen as the deadlock victim. Rerun the transaction.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;There is a quite&lt;a href="http://code-magazine.com/article.aspx?quickid=0309101&amp;amp;page=1"&gt; complete article&lt;/a&gt; on the subject by Ron Talmage. I just cite some important statements:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Verdana,Arial,Helvetica,sans-serif;font-size:100%;"  &gt;&lt;span id="article_content"&gt;&lt;blockquote&gt;"Lock-based deadlocks involve two or more threads, at least one transaction, and one or more resources. &lt;span id="article_content"&gt;It's useful to view deadlocks as occurring in two stages. The first is a grant stage, where each thread is granted a lock on its resource.[...]&lt;/span&gt;&lt;span id="article_content"&gt;The second stage is a blocked request where each thread requests an incompatible lock on the other thread's resource. Each thread waits on the other to release its locks before it can complete."&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;When SQL Server finds deadlocks, it proceeds to choose one of the threads as the "victim" and kills it (well, rols back its transaction).&lt;br /&gt;&lt;br /&gt;The article explains 4 main ways to solve deadlocks:&lt;br /&gt;&lt;span style=";font-family:Verdana,Arial,Helvetica,sans-serif;font-size:85%;"  &gt;&lt;span id="article_content"&gt;&lt;ul&gt;&lt;li  style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Remove incompatible lock requests&lt;/span&gt;&lt;/li&gt;&lt;li  style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Change the timing of transactions&lt;/span&gt;&lt;/li&gt;&lt;li  style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Change the order of resource requests&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:Verdana,Arial,Helvetica,sans-serif;font-size:85%;"  &gt;&lt;span style="font-family:arial;"&gt;Change the isolation leve&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The last one, changing the isolation level, seems to be the only way in some cases. For example, if we allow queries to read uncommitted data, we can set the level as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Verdana,Arial,Helvetica,sans-serif;font-size:85%;"  &gt;&lt;span id="article_content"&gt;&lt;span style="color: rgb(102, 0, 0);font-family:Courier New;font-size:85%;"  &gt;SET ISOLATION LEVEL READ UNCOMMITTED&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;So next time you have one of those, &lt;a href="http://code-magazine.com/article.aspx?quickid=0309101&amp;amp;page=4"&gt;this article&lt;/a&gt; might help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-2726077297311269182?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/2726077297311269182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=2726077297311269182&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/2726077297311269182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/2726077297311269182'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/09/deadlocks-in-sql-server.html' title='deadlocks in SQL Server'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-373836535781623511</id><published>2007-09-25T16:19:00.000-04:00</published><updated>2007-09-25T17:00:10.564-04:00</updated><title type='text'>SQL Server hierarchyid</title><content type='html'>Sometimes we're in the need of representing hierarchical data in a database. Take the example of a Military structure:&lt;br /&gt;&lt;br /&gt;General Mihajlovic&lt;br /&gt;   |- Colonel Stojakovic&lt;br /&gt;         |- Lieutenant Mijatovic&lt;br /&gt;                |- Sgt Milinkovic&lt;br /&gt;   |- Colonel Dragutinovic&lt;br /&gt;         |- Lieutenant Djokovic&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One way to store this in tables would be to create a table 'Military Person' with a 'parent' id, where every tuple references its 'father' in the hierarchy.&lt;br /&gt;&lt;br /&gt;In Sql Server 2008 there is a new datatype called hierarchyid, that might help in this case. The hierarchyid stores the hierarchical information of a tuple. It is in fact a CLR User-defined type (UDT) but is included in the set of base types of sql server.&lt;br /&gt;&lt;br /&gt;The string representation of a hierarchyid field looks something like: '/1/2/'&lt;br /&gt;The slashes '/' represent levels in the hierarchy and the numbers, e.g. '1' denotes the position of the child. So the root of the hierarchy is represented by the slash alone: '/'&lt;br /&gt;&lt;br /&gt;For instance the military structure described above could be codified as:&lt;br /&gt;&lt;br /&gt;/General Mihajlovic&lt;br /&gt;   /1/  Colonel Stojakovic&lt;br /&gt;         /1/1/ Lieutenant Mijatovic&lt;br /&gt;               /1/1/1/ Sgt Milinkovic&lt;br /&gt;   /2/ Colonel Dragutinovic&lt;br /&gt;         /2/1/ Lieutenant Djokovic&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The hierarchyid type exposes several useful method such as GetLevel(), GetAncestor(), GetDescendant(), GetRoot(), Parse(), etc.&lt;br /&gt;&lt;br /&gt;So take a look at&lt;a href="http://blogs.msdn.com/manisblog/archive/2007/08/17/sql-server-2008-hierarchyid.aspx"&gt; this link,&lt;/a&gt; there are some examples,&lt;br /&gt;and maybe&lt;a href="http://mmcrblog.wordpress.com/2007/08/18/sql-server-2008-hierarchyid-data-type/"&gt; this one &lt;/a&gt;as well,&lt;br /&gt;and you can replay the recording of the &lt;a href="https://connect.microsoft.com/SQLServer/content/content.aspx?ContentID=6082"&gt;LiveMeeting&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-373836535781623511?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/373836535781623511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=373836535781623511&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/373836535781623511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/373836535781623511'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/09/sql-server-hierarchyid.html' title='SQL Server hierarchyid'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-2719106438483040147</id><published>2007-09-18T04:22:00.000-04:00</published><updated>2007-09-18T04:31:02.279-04:00</updated><title type='text'>Schemas in SQL Server 2005</title><content type='html'>Although this is not really new (2 years on), it's good to know. Schemas in SQL Server are some kind of "containers of objects" (tables views, etc.)&lt;br /&gt;In this way we are able to specify namespaces for our objects for better organization, and, most imimportant, better security management.&lt;br /&gt;&lt;br /&gt;In previous versions of SQL Server, an object name was something like:&lt;br /&gt;DBServer.DBName.Owner.Object, but now it is DBServer.DBName.DBSchema.Object&lt;br /&gt;&lt;br /&gt;So now the objects are not bound to a particular DB Owner. In consequence if we want to drop some owner, we don't need to drop all the objects defined under its name.&lt;br /&gt;&lt;br /&gt;Official info right &lt;a href="http://msdn2.microsoft.com/en-us/library/ms190387.aspx"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More useful stuff over &lt;a href="http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1184503,00.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-2719106438483040147?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/2719106438483040147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=2719106438483040147&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/2719106438483040147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/2719106438483040147'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/09/schemas-in-sql-server-2005.html' title='Schemas in SQL Server 2005'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-3574094090608454713</id><published>2007-09-04T04:49:00.000-04:00</published><updated>2007-09-04T04:57:16.461-04:00</updated><title type='text'>HL7 v3 Datatypes release 2</title><content type='html'>The HL7 v3 Comitee ha published the first draft of Release 2 for HL7 datatypes. It is still a draft but there are a number of interesting changes.&lt;br /&gt;&lt;br /&gt;One of them concerns translation of concept labels and names.&lt;br /&gt;&lt;br /&gt;The ED and its specialization ST (string) have now a SET of ED/ST called "translation".&lt;br /&gt;This means that any attribute of type ST may have a set of other STs, each one representing a translation in a different language. (the ST type already had a language field if I remember well)&lt;br /&gt;&lt;br /&gt;more details at the ballot page: &lt;a href="http://www.hl7.org/v3ballot/html/infrastructure/datatypes_r2/datatypes_r2.htm"&gt;Ballot September 2007&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and some comments at the wiki:&lt;a href="http://informatics.mayo.edu/wiki/index.php/Data_Types_R2_issues"&gt; HL7 wiki&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now we have to see what the comitee decides about these datatype issues...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-3574094090608454713?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/3574094090608454713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=3574094090608454713&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/3574094090608454713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/3574094090608454713'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/09/hl7-v3-datatypes-release-2.html' title='HL7 v3 Datatypes release 2'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-5252376837586069619</id><published>2007-05-02T00:37:00.000-04:00</published><updated>2007-05-02T00:51:05.517-04:00</updated><title type='text'>Zürich: Tech Days 2007</title><content type='html'>Microsoft organizes TechDays sessions every year in different countries. this time it was Zürich. It is a good opportunity to share knowledge about the "new" .NET technologies: WF, WPF, WCF, etc and of course to make some advertising for Windows Vista, Exchange and Office.&lt;br /&gt;&lt;br /&gt;Many of the guests are NOT working for Microsoft so it's good to know third party's point of view. some of these guys are really experts in the field of 'buying their ideas' so it was nice.&lt;br /&gt;&lt;br /&gt;so &lt;a href="http://www.microsoft.com/switzerland/techdays/de/agenda.mspx"&gt;here&lt;/a&gt;'s the link, to download all presentations and demos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-5252376837586069619?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/5252376837586069619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=5252376837586069619&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/5252376837586069619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/5252376837586069619'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/05/zrich-tech-days-2007.html' title='Zürich: Tech Days 2007'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-8249459630659801619</id><published>2007-03-18T23:54:00.000-04:00</published><updated>2007-03-19T00:30:46.352-04:00</updated><title type='text'>on description logics</title><content type='html'>One of the goals of computer madness (or science) has been that of representing knowledge in such way that a system is able to reason over it and deduce implicit consequences.&lt;br /&gt;&lt;br /&gt;In description logics the basic terminology of the 'world' is represented through &lt;span style="font-style: italic;"&gt;Concepts. &lt;/span&gt;Using simple primitive concepts we can build coplex ones. for instance if we have defined the concepts &lt;span style="font-family: courier new;"&gt;Vehicle &lt;/span&gt;and &lt;span style="font-family: courier new;"&gt;FlyingThing &lt;/span&gt;, we can define &lt;span style="font-family: courier new;"&gt;Airplane &lt;/span&gt;as&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Vehicle &lt;span style="font-weight: bold;"&gt;and &lt;/span&gt;FlyingThing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Very simple. We can use other logical operators as well. But one of the main features of DL is the ability to link Concepts through &lt;span style="font-style: italic;"&gt;Roles&lt;/span&gt;. For instance we may establish a Role called &lt;span style="font-family: courier new;"&gt;hasPilot&lt;/span&gt;. We can describe all individuals having women as pilots with this expression:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="font-weight: bold;"&gt;for all&lt;/span&gt; hasPilot.Woman&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a concept expression, notice that only one of the concepts of the relationship is specified (the filler, e.g. &lt;span style="font-family: courier new;"&gt;Woman&lt;/span&gt;). In the following example the instance &lt;span style="font-family: courier new;"&gt;MILLENIUMFALCON &lt;/span&gt;satisfies the previous expression:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Vehicle(MILLENIUMFALCON)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Woman(LEIA)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;hasPilot(MILLENIUMFALCON,LEIA)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One more thing, in DL a key concept is &lt;span style="font-style: italic;"&gt;Subsumption&lt;/span&gt;. If we say that&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;C subsumes D&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;it means that C is a more general concept than D. (a kind of IS_A link). With these basic constructs it is possible to construct knowledge representation systems with reasoning capabilities. Obviusly the expressiveness of the representation language makes it computationally harder to reason over concepts and roles. In fact it has been demonstrated that some 'complex' dialects lead to undecidability, unrealistic satisfiability times, etc.&lt;br /&gt;&lt;br /&gt;Anyway knowledge representation based in DL seems to be promising for some applications, and important initiatives such as OWL (DL for the semantic web)  are hot topics in these days.&lt;br /&gt;&lt;br /&gt;see &lt;a href="http://www.w3.org/TR/owl-features/"&gt;owl&lt;/a&gt;!&lt;br /&gt;edit owl files with &lt;a href="http://protege.stanford.edu/"&gt;protégé&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-8249459630659801619?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/8249459630659801619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=8249459630659801619&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/8249459630659801619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/8249459630659801619'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/03/on-description-logics.html' title='on description logics'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-6145284511139681530</id><published>2007-01-22T14:16:00.000-04:00</published><updated>2007-01-22T14:20:02.023-04:00</updated><title type='text'>Interoperability blog</title><content type='html'>as in any blog sometimes you find pure crap and sometimes you discover the light that has lighted the world.&lt;br /&gt;&lt;br /&gt;this serverside .com &amp;amp; .net blog might be of some interest to those working on WS.&lt;br /&gt;&lt;br /&gt;maybe i'll stay tuned to &lt;a href="http://tssblog.techtarget.com/"&gt;this blog&lt;/a&gt; for some time...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-6145284511139681530?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/6145284511139681530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=6145284511139681530&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/6145284511139681530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/6145284511139681530'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/01/interoperability-blog.html' title='Interoperability blog'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-3770669429151459853</id><published>2007-01-09T10:44:00.000-04:00</published><updated>2007-01-09T10:56:29.136-04:00</updated><title type='text'>Spatial databases</title><content type='html'>A frequent requirement in information systems is support for spatial data management. Geographical information is an example. Say you want to store information about rivers, mountains, forest areas, etc.&lt;br /&gt;Typically you are forced to model all those things in your DB. You create new attribute where you store points and somehow you manage to know that those points have some spatial semantics.&lt;br /&gt;&lt;br /&gt;However the DBMS industry has some alternatives. Since this spatial problem is a recurring one, they have developed some solutions, for better or worse.&lt;br /&gt;&lt;br /&gt;Oracle is just one example.  They have defined a special data type called 'SDO_GEOMETRY', where you can put everything form points to circles and polygons (and combinations of these). Although this solution is not really clean and makes heavy use of arbitrary codes to define the semantics of the geometry, it is quite interesting.&lt;br /&gt;&lt;br /&gt;Give it a try, &lt;a href="http://www.oreillynet.com/pub/a/network/2003/11/10/oracle_spatial.html?page=1"&gt;here &lt;/a&gt;are some examples.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-3770669429151459853?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/3770669429151459853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=3770669429151459853&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/3770669429151459853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/3770669429151459853'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2007/01/spatial-databases.html' title='Spatial databases'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-6982651139175763073</id><published>2006-12-16T21:02:00.000-04:00</published><updated>2006-12-16T21:10:13.273-04:00</updated><title type='text'>JSF</title><content type='html'>Coming back to the Java world it's good to see that things have changed. Everything's moving, especially if we talk about web development.&lt;br /&gt;&lt;br /&gt;some years ago some frameworks like Struts introduced interesting separation models for webapps. The MVC driven applications were a fine improvement but it was evident that there was a lack of a consistent and complete Web UI framework.&lt;br /&gt;&lt;br /&gt;With Java ServerFaces everything is becoming clearer and clearer.:&lt;br /&gt;&lt;br /&gt;- API's for UI components&lt;br /&gt;- tag libraries&lt;br /&gt;- event modeling&lt;br /&gt;- state management&lt;br /&gt;- managed beans&lt;br /&gt;- navigation model&lt;br /&gt;- etc etc.&lt;br /&gt;&lt;br /&gt;What a pity I had &lt;a href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSFDevelop7.html"&gt;not seen this &lt;/a&gt;before....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-6982651139175763073?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/6982651139175763073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=6982651139175763073&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/6982651139175763073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/6982651139175763073'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/12/jsf.html' title='JSF'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-2330354373791939403</id><published>2006-11-26T16:58:00.000-04:00</published><updated>2006-11-26T17:11:36.829-04:00</updated><title type='text'>OO + RDB in oracle</title><content type='html'>Object oriented solutions for DBMS are still a novelty, most people tend to rely on the good old relational stuff.&lt;br /&gt;&lt;br /&gt;But major DB vendors realized that OO support may become profitable. One good example is Oracle.  If you don't have an Oracle server right beside you, try to &lt;a href="http://www.oracle.com/technology/products/database/xe/index.html"&gt;download the XE edition &lt;/a&gt;and take a look at some of the OO features (download it for free).&lt;br /&gt;&lt;br /&gt;You can declare object types (just like &lt;span style="font-weight: bold;"&gt;classes&lt;/span&gt;) in which you specify &lt;span style="font-weight: bold;"&gt;attributes &lt;/span&gt;and member &lt;span style="font-weight: bold;"&gt;functions &lt;/span&gt;(i.e. methods):&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;span style="font-family: courier new;"&gt;CREATE OR REPLACE TYPE  "SEGMENTTYPE" as object(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;name varchar2(20),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;avgDescentTime decimal(6,2),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;member function difficulty return char);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The implementation of the methods can be written using the &lt;span style="font-weight: bold;"&gt;BODY &lt;/span&gt;keyword:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;create type body segmenttype as&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;member function difficulty return char is&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;return 'X';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And of course you can inherit from a super-type using the &lt;span style="font-weight: bold;"&gt;UNDER &lt;/span&gt;keyword:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);font-size:85%;" &gt;&lt;span style="font-family: courier new;"&gt;CREATE OR REPLACE TYPE  "CROSSINGPOINTTYPE" under referencepointtype(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;attractions attractionlist,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;skilifts skiliftlist);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But this is only a definition of types. In order to have populated data, you create tables with rows of the previous defined types:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new; color: rgb(102, 102, 204);"&gt;create table attraction of attractiontype;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;It is indeed an interesting approach, take a look at this &lt;a href="http://infolab.stanford.edu/%7Eullman/fcdb/oracle/or-objects.html"&gt;basic tutorial &lt;/a&gt;for more info.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-2330354373791939403?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/2330354373791939403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=2330354373791939403&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/2330354373791939403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/2330354373791939403'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/11/oo-rdb-in-oracle.html' title='OO + RDB in oracle'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-4466192818603955532</id><published>2006-11-10T19:15:00.000-04:00</published><updated>2006-11-10T19:48:24.235-04:00</updated><title type='text'>Dynamic Parallel Schedules</title><content type='html'>The old idea of using several processors in order to achieve higher performance still bothers us. Some low level specifications and implementations like MPI have been available for years, but we always have news prom people devoting their lives to develop new  prototypes and frameworks.&lt;br /&gt;&lt;br /&gt;Dynamic Parallel Schedules or DPS is an interesting effort in this field. The idea is to provide a not-so-low-level implementation of parallel schedules that obey a non-cyclic graph which describes the parallel application.&lt;br /&gt;&lt;br /&gt;The model is applicable to  distributed-memory clusters. The graph is a high level abstraction of the application. It simply specifies the split and merge operations that may occur during execution. A split is simply an operation that "cuts" data, so that each resulting piece can later be processed by a different thread (eventually in a different node). A merge operation does the opposite job.&lt;br /&gt;&lt;br /&gt;Written in C++, it seems quite easy to use this library. All the constructs (Splits, Merge and Others) are classes that can be inherited by application-specific sub-classes.&lt;br /&gt;&lt;br /&gt;More info and the downloadable pack (GPL) can be found &lt;a href="http://dps.epfl.ch/"&gt;here&lt;/a&gt;. Examples are available, so if you have some minutes, you may experience some of its features...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-4466192818603955532?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/4466192818603955532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=4466192818603955532&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/4466192818603955532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/4466192818603955532'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/11/dynamic-parallel-schedules.html' title='Dynamic Parallel Schedules'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-8682629453893598778</id><published>2006-10-27T17:24:00.000-04:00</published><updated>2006-10-27T17:43:38.855-04:00</updated><title type='text'>Heisenbug</title><content type='html'>Suele suceder que la solución de ciertos bugs se esconde en las esquinas más obscuras. Y lo peor es que por más que se trate de aislar el problema, el bug se burla de nosotros y su causa se rehusa a salir a la luz.&lt;br /&gt;&lt;br /&gt;Heisenberg y la física cuántica tal vez tienen algo que ver. Los bugs siguen el comportamiento de una partícula según el principio de indeterminación de Heisenberg. Por lo menos si lo vemos del lado cómico.&lt;br /&gt;&lt;br /&gt;De ahí el nombre Heisenbug y su antónimo el Bohrbug.&lt;br /&gt;&lt;br /&gt;Quién tuvo la idea de hacer esa clasificación (hay más!)  debió haber llorado sangre al resolver uno de esos heisenbugs.&lt;br /&gt;&lt;br /&gt;Sobre el nombre mismo "&lt;a href="http://fr.wikipedia.org/wiki/Bogue_%28informatique%29"&gt;Bug&lt;/a&gt;" hay toda una historia, solo para ociosos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-8682629453893598778?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/8682629453893598778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=8682629453893598778&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/8682629453893598778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/8682629453893598778'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/10/heisenbug.html' title='Heisenbug'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-963191698815667971</id><published>2006-09-19T11:38:00.000-04:00</published><updated>2006-09-19T11:45:26.063-04:00</updated><title type='text'>Biztalk: DTA purge</title><content type='html'>After having your Biztalk application running for some weeks, you may notice that the MessageBox and Tracking database are growing insanely. Just before you commit suicide, take a look at the SQL Server jobs available:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/4061/1053/1600/btsjobs.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger2/4061/1053/320/btsjobs.jpg" alt="" border="0" /&gt;&lt;/a&gt;It might be particularly interesting to regularly clean the Tracking Database, so you may use the DTA purge and Archive Job. Other useful jobs are available, up to you to give them a try or read the documentation.&lt;br /&gt;&lt;br /&gt;Scheduling these jobs seems to be quite easy, so do it before your SQL Server file become untreatable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-963191698815667971?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/963191698815667971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=963191698815667971&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/963191698815667971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/963191698815667971'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/09/biztalk-dta-purge.html' title='Biztalk: DTA purge'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-5845620946980181538</id><published>2006-09-14T20:19:00.000-04:00</published><updated>2006-09-14T20:26:30.771-04:00</updated><title type='text'>.NET Web Services: OneWay property</title><content type='html'>I've spent half an hour trying  to figure out why on earth certain Web Service's exceptions were not being caught by the client. I was sure the Web Service was being called, sure the exceptions were being produced, but the exceptions never arrived to the client.&lt;br /&gt;&lt;br /&gt;I was beggining to think someone was joking me till I decided to take a look at the [SoapDocumentMethodAttribute] attribute. And I saw this "OneWay=true" property.&lt;br /&gt;It was there, don't know how or why. But that property set to true means that the client is not going to wait for the service's answer. So be sure not to set that property if you actually expect some answer from the server.&lt;br /&gt;&lt;br /&gt;More accurate information might be found &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.services.protocols.soapdocumentmethodattribute.oneway.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-5845620946980181538?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/5845620946980181538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=5845620946980181538&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/5845620946980181538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/5845620946980181538'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/09/net-web-services-oneway-property.html' title='.NET Web Services: OneWay property'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-6243565163850021373</id><published>2006-09-08T10:13:00.000-04:00</published><updated>2006-09-08T10:41:57.402-04:00</updated><title type='text'>strong names in .NET</title><content type='html'>When you build an assembly (DLL, for instance) you provide a name, version number, culture and stuff like that. (Ok sometimes people forget about deployment details like these, but whatever)&lt;br /&gt;Then you install your assembly in some server (say &lt;span style="font-weight: bold;"&gt;Biztalk&lt;/span&gt;) and it works nicely. So far so good.&lt;br /&gt;&lt;br /&gt;However imagine that some malicious entity writes another library and compiles his assembly using the same name. He would be able to replace your assembly with his and execute whatever execrable code he wants. Same thing with the version number, someone can claim to have an upgraded version of the assembly, install it and kaboom. Or in an even more bizarre situation you could have someone modifying your assembly in some way and you would have a compromised server.&lt;br /&gt;&lt;br /&gt;So, to overcome these issues, we have &lt;span style="font-weight: bold;"&gt;Strong Names&lt;/span&gt;. Using a &lt;span style="font-style: italic;"&gt;Private Key&lt;/span&gt;, you create a “Strong Name File” for your assembly. In this way, since no-one else knows your private key, no-one else that you is able to generate the same assembly name. Same thing applies for the version number. And additionally, an integrity check is made in order to prevent modifications of the assembly “in-the-middle”.&lt;br /&gt;&lt;br /&gt;How to create a strong name? Quite simple:&lt;br /&gt;&lt;br /&gt;Get a VS2005 console and type: &lt;span style="font-weight: bold;"&gt;sn –k mylittleprettystrongnamefile.snk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Et voilà  le strong-name.&lt;br /&gt;&lt;br /&gt;To associate the strong name file to your assembly, you go to &lt;span style="font-style: italic;"&gt;Project Properties-&gt;Signing&lt;/span&gt;. Check “Sign the assembly” and choose the strong name key file.&lt;br /&gt;&lt;br /&gt;If it is a Biztalk Project, go to &lt;span style="font-style: italic;"&gt;ProjectProperties-&gt;Common Properties-&gt;Assembly-&gt;Strong Name: Assembly Key File&lt;/span&gt;. Choose the file and that’s it.&lt;br /&gt;&lt;br /&gt;If you work with &lt;span style="font-weight: bold;"&gt;Biztalk &lt;/span&gt;this is one of the first things you do, since Biztalk requires Strong-named Assemblies.&lt;br /&gt;&lt;br /&gt;Be sure to read the&lt;a href="http://msdn2.microsoft.com/en-us/library/wd40t7ad.aspx"&gt; “official info”&lt;/a&gt; about strong names.&lt;br /&gt;And of course take a look at the &lt;a href="http://msdn2.microsoft.com/en-us/library/k5b5tt23.aspx"&gt;syntax &lt;/a&gt;of the sk.exe utility.&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-6243565163850021373?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/6243565163850021373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=6243565163850021373&amp;isPopup=true' title='137 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/6243565163850021373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/6243565163850021373'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/09/strong-names-in-net.html' title='strong names in .NET'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>137</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-8045625911970351557</id><published>2006-08-25T20:51:00.000-04:00</published><updated>2006-08-25T21:12:27.312-04:00</updated><title type='text'>Biztalk Server2006 and XPath</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/4061/1053/1600/bts.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger2/4061/1053/320/bts.jpg" alt="" border="0" /&gt;&lt;/a&gt;Fancy stuff in Biztalk Server 2006. Play with Ports, Messages, XPath, Schemas, Flat Files and Web Services. Any resources you have available, you can put them together and build crazy integrated applications.&lt;br /&gt;&lt;br /&gt;Well, after the excitment of my first experience with BTS i came to face the usual problems of almighty tools. It consumes all the memory you may have available. I'll stop testing all this stuff only on my laptop;Running BTS, SQLServer and several instances of VS2005 on the same machine is a plain bad idea.&lt;br /&gt;&lt;br /&gt;And now some XPath stuff. The "Expression" Shape in BTS Orchestration is fantastic. I still have thousands of things to learn, I believe, but I found some useful things that are good to know:&lt;br /&gt;&lt;br /&gt;- you can construct messages with a simple expression shape, by using the "&lt;span style="font-family: courier new;"&gt;construct&lt;/span&gt;" keyword:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;construct Message_1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Message_1.caseAct = MedISCaseMessage.caseAct;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Messages ARE IMMUTABLE. So once you construct a message, it is absolutely impossible to modify it. (I'm a strange kind of mule, so I insisted on trying to do so, and failed miserably)&lt;br /&gt;&lt;br /&gt;- Whenever you want  to modify messages, you are forced to create a new one (you can easily assign a message to another in order to pre-fill it) . You can also define Variables of type XmlDocument and do whatever manipulation you want, and then assign them to Message Instances.&lt;br /&gt;&lt;br /&gt;- you can set Message element values with xpath expressions in a straight forward way:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;xpath(MyMessage,"//MyElement")= myVariableValue;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- however you must be aware that the nodes you make reference to, should actually exist, otherwise you'll have very pretty error messages on the EventViewer.&lt;br /&gt;&lt;br /&gt;- You should also be careful when using namespaces. You won't find your nodes if you don't use a "correct" xpath syntax:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/*[local-name()='Myelement' and namespace-uri()='http://myNamespace.ch/BeautifulNamespace/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- You can easily store string values with xpath, BUT don't forget to use the string()  xpath function!:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;var = xpath(MyMessage,"string(//myBeautifulXPathString)");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sayonara&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-8045625911970351557?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/8045625911970351557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=8045625911970351557&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/8045625911970351557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/8045625911970351557'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/08/biztalk-server2006-and-xpath.html' title='Biztalk Server2006 and XPath'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-115513759946184678</id><published>2006-08-09T11:24:00.000-04:00</published><updated>2006-08-09T11:33:19.506-04:00</updated><title type='text'>ISAPI filter: SF_NOTIFY_AUTH_COMPLETE</title><content type='html'>This notification comes to the rescue if you have troubles to determine the identity of the client while processing a request.&lt;br /&gt;&lt;br /&gt;The PreProcHeaders notification is triggered before authentication son there's no chance of getting AUTH_USER or REMOTE_USER.&lt;br /&gt;However it is important to notice that AuthComplete is not launched for all requests involving authentication. For example if the authentication method is NTLM, the response sequence is 401, 401, 200. Only the request corresponding to the last message is considered by AuthComplete.&lt;br /&gt;&lt;br /&gt;For the rest, the same possibilities as for PreProcHeaders are available. Changing headers, changing the URL, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-115513759946184678?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/115513759946184678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=115513759946184678&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/115513759946184678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/115513759946184678'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/08/isapi-filter-sfnotifyauthcomplete.html' title='ISAPI filter: SF_NOTIFY_AUTH_COMPLETE'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-115403540537668424</id><published>2006-07-27T17:11:00.000-04:00</published><updated>2006-07-27T17:23:25.430-04:00</updated><title type='text'>ADO Stored Procedures in C++</title><content type='html'>Ok, Why bother to do db access in c++, having fancy .NET available? More often than you can imagine you find yourself doing some "back to basics" stuff, C++ included.&lt;br /&gt;&lt;br /&gt;Luckily, for those like me who are considerably lazy, we have nice resources on the net, so that we can do some nice and dirty copy-paste and get things to work.&lt;br /&gt;&lt;br /&gt;CoderSource.NET has ready-to-use examples, and this particular &lt;a href="http://www.codersource.net/c++_ado_stored_procedure.html"&gt;Stored Procedures example&lt;/a&gt; saved me a lot of work. Used it for SQL Server and Oracle and everything went fine.&lt;br /&gt;&lt;br /&gt;By the way, make sure not to use Unicode configuration in your Visual Studio project or you'll get some nasty compilation errors with the strings.&lt;br /&gt;&lt;br /&gt;I'm posting some connection strings, just in case:&lt;br /&gt;&lt;br /&gt;SQL Server,Oracle, Oracle ODBC:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;"Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=UserTest;Data Source=jpc;Integrated Security=SSPI;"&lt;br /&gt;&lt;br /&gt;"Provider=OraOLEDB.Oracle;User ID=system;Password=tiger;Data Source=XE"&lt;br /&gt;&lt;br /&gt;"Driver={Microsoft ODBC pour Oracle};Server=jpc;pwd=tiger;"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-115403540537668424?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/115403540537668424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=115403540537668424&amp;isPopup=true' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/115403540537668424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/115403540537668424'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/07/ado-stored-procedures-in-c.html' title='ADO Stored Procedures in C++'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-115248947123456399</id><published>2006-07-09T18:44:00.000-04:00</published><updated>2006-07-09T19:57:51.283-04:00</updated><title type='text'>ITALIA CAMPIONE</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/520/595/1600/285909725.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/520/595/320/285909725.jpg" alt="" border="0" /&gt;&lt;/a&gt;Las noches de Lausanne -y particualrmente las de domingo- traen a la mente escenas de pueblos fantasma. Cada paso produce más ruido del que debería, y cualquier sombra que se aproxima tiene un aire sospechoso. Pero ésta noche es algo distinta. Caravanas hacen su entrada en el centro de la villa, todas debidamente embanderadas y provistas de ruidosos claxons. Quienes están a bordo de los vehículos portan orgullosos los uniformes y escudos de la facción a la que representan. Poco a poco aparecen más y más de esas carrocerías, a las que se añaden peatones, que como infantería, avanzan con la consigna de tomar el corazón de Lausanne.&lt;br /&gt;&lt;br /&gt;Es una invasión. Miles y miles de italianos quiebran la monotonía dominical y corean el nombre de su patria al ritmo de bombos, tambores y cacerolas que de todos modos hacen ruido. Y siguen llegando. Son demasiados y han bloqueado todo el sector de St. François, Bel Air y la Rue du Grand Chêne. La masa humana prohíbe el paso de naíves conductores que creen que aún tienen algún privilegio sobre éstas calles. Pues no, las calles pertenecen a las celebraciones.&lt;br /&gt;&lt;br /&gt;Pero entre el mar de uniformes azules, en los que se distinguen con frecuencia los nombres "totti" "del piero" o "cannavaro", se pueden percibir individuos cubiertos de resignación y desconsuelo. Sus camisetas son similares pero su escudo destaca un gallo en el medio. Franceses que no pueden disimular la pena.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/520/595/1600/860045410.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 147px; height: 202px;" src="http://photos1.blogger.com/blogger/520/595/320/860045410.jpg" alt="" border="0" /&gt;&lt;/a&gt;A qué se debe tanto alboroto? L'Italia e' campione del Mondo. Así de sencillo. Cuando se habla de la copa del mundo (que por cierto ni siquiera es copa) no es necesario precisar que se trata de fútbol, porque las connotaciones son mayores. Y cuánto para Italia, que ve coronarse por cuarta vez, habiendo llegado a Alemania en medio de dudas.&lt;br /&gt;&lt;br /&gt;Sobre el partido, creo que hay gente que dedica su vida a analizar el fútbol y seguramente ya habrán disectado éste partido. Me limito a poner en relieve que en ambos casos se trataba de equipos que buscaban resultados antes que magia, y el partido reflejó un poco de eso. También fue una oportunidad para mostrar que incluso un maestro que es capaz de transformar un burdo penal  en perla; bajo una provocación adecuada puede convertirse en el bribón más ingénuo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/520/595/1600/4145672797.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 148px; height: 219px;" src="http://photos1.blogger.com/blogger/520/595/320/4145672797.jpg" alt="" border="0" /&gt;&lt;/a&gt;Por su parte Italia mostró que puede mandar al traste el embrujo histórico de los penales, y mostrar que el trabajo sacrificado tiene sus frutos. Y ese sacrificio se ve reflejado en Cannavaro, Gattuso, Materazzi, el mismísimo Pirlo y el resto de la banda. Por lo menos esa es la impresión que queda, un equipo compuesto por puro peones, cada uno de los cuales puede aparecer en el momento preciso. Buffon en las tapadas, Materazzi bajando contrincantes, Zambrotta conteniendo y golpeando cuando se require, Cannavaro anulando el ataque contrario, Perotta haciendo el aguante, Grosso apareciendo en los momento claves, Totti haciendo dar respiros, Toni buscando espacios, Iaquinta y Gilardino lo propio cuando tenían la oportunidad, Camoranesi tratando de ser explosivo, Del Piero aportando clase y serenidad, Pirlo tomando el timón y Gattuso funcionando a todo vapor, omnipresente y fundamental. Cuál es el protagonista? Parece un elenco formado de actores de reparto.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/520/595/1600/49257954.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/520/595/320/49257954.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En fin, tutta Italia si tigne d'azzurro, moi aussi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-115248947123456399?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/115248947123456399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=115248947123456399&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/115248947123456399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/115248947123456399'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/07/italia-campione.html' title='ITALIA CAMPIONE'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-115042093164372792</id><published>2006-06-15T21:18:00.000-04:00</published><updated>2006-06-15T21:22:11.650-04:00</updated><title type='text'>Virtual Node Algorithm</title><content type='html'>Now it's all about graphics!&lt;br /&gt;&lt;br /&gt;Ever wondered how to simulate fractures and spliting meshes?&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://graphics.stanford.edu/%7Efedkiw/papers/stanford2004-01.pdf"&gt;nice paper&lt;/a&gt;  talks  about a specific interesting algorithm but  also  mentions some of the problems you have  when you try to do this  kind of  computation (fractures, collision handling, dynamics, etc.)&lt;br /&gt;&lt;br /&gt;Maybe I could further talk about the miracles of computer graphics sometime later eh?...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-115042093164372792?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/115042093164372792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=115042093164372792&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/115042093164372792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/115042093164372792'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/06/virtual-node-algorithm.html' title='Virtual Node Algorithm'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-114842727019927973</id><published>2006-05-23T19:22:00.000-04:00</published><updated>2006-05-23T19:34:30.250-04:00</updated><title type='text'>let's kill some DTO's</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-GB"&gt;Dealing with persisted objects can be a pain in the neck if managed inappropriately. This is specially the case if your objects need to be transferred in a distributed environment. We have learned from Fowler about the controversial DTOs. In theory we should use this kind of “stupid” objects whenever we need to transfer data to a “foreign” entity. However the introduction of such objects includes adding some mapping code. Tiresome code with the only purpose of copying data. This can be bearable at some extent but the big problem arises when DTOs are overused. Even within the boundaries of a WebApplication, sometimes we see hundreds of DTOs circulating, adding tons of uninteresting and useless code and complexity to the application. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-GB"&gt;More thoughts on this old &lt;a href="http://blogs.codehaus.org/people/tirsen/archives/000859_data_transfer_objects_makes_me_sick.html"&gt;post&lt;/a&gt; by Jon Tirsen.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-114842727019927973?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/114842727019927973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=114842727019927973&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114842727019927973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114842727019927973'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/05/lets-kill-some-dtos.html' title='let&apos;s kill some DTO&apos;s'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-114734654651253187</id><published>2006-05-11T06:48:00.000-04:00</published><updated>2006-05-11T07:22:26.613-04:00</updated><title type='text'>Native and enabled</title><content type='html'>Sometimes xml and relational databases don't seem to be able to live together in harmony.&lt;br /&gt;The problem is the completely different approach of each of the two technologies. However, when looking at the easy to grasp examples of xml schemas and relational schemas, mappings may seem to be possible. This easyness has led some people to mix up things and think xml and relational schemas are fully compatible. Practice says it is not so simple.&lt;br /&gt;&lt;br /&gt;Some people even get to the point of writing database schemas, based blindly on xml schemas. This kind of ideas lead to poor realtional designs. Xml is about documents. Relational models are about data. That's all the idea. Documents follow a certain tree-like structure, an specific order and other precise constraints. All this characteristics cannot be found or are expensive to implement under a relational model. Only the order of document elements is already a big issue. In tables, order is irrelevant, only taken into account when explicitly requested on a query. Parent-child relationships might be extremely complex in a document, contrary to tables, where relationships are "limited enough" in order to avoid join explosion. Documents follow a more flexible structure., changes on the xml schema are far more common that changes on the relational model.&lt;br /&gt;&lt;br /&gt;These are only a some examples of problems of "compatibility" betwen the two technologies. For most applications filesystem storage is not an option. Blobs are sometimes an even worse solutin. Since industry does not wish to throw away decades of rdb experience, hybrids came to rescue some years ago. Most "serious" rdbms are "&lt;a href="http://xml.sys-con.com/read/104980.htm"&gt;xml-enabled&lt;/a&gt;", so that they have special features in order to support "kind-of" xml native support. This normally involves some mapping algorithms and other tricks. Being quite new, these technologies may not be fully trusted by the industry, but they are gaining terrain.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xml.com/pub/a/2005/03/30/native.html"&gt;Xml-native technologies&lt;/a&gt; have an even less trusted status (&lt;a href="http://exist.sourceforge.net/"&gt;exist&lt;/a&gt; , &lt;a href="http://www.softwareag.com/corporate/products/tamino/default.asp"&gt;tamino&lt;/a&gt;) . Without the legacy of rdbms behind them, xml-native db vendors may have quite a hard time trying to make the industry understand the "document-centered" concepts and the advantages of their "pure" approach.&lt;br /&gt;&lt;br /&gt;Unfortunately magic formulas do not exist in order to decide which technology to choose and which tool to buy. The best way might be to learn by mistake and share your depressive xml experiences with the community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-114734654651253187?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/114734654651253187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=114734654651253187&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114734654651253187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114734654651253187'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/05/native-and-enabled.html' title='Native and enabled'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-114494816873201560</id><published>2006-04-13T12:51:00.000-04:00</published><updated>2006-04-13T13:09:28.940-04:00</updated><title type='text'>to schema or not to schema</title><content type='html'>After so many years of having XML technologies available, this should not be a tough question. It is quite amazing that some professional developers still rely on well-formed documents only. The result is obviously chaotic. Well-formed documents grow quickly and inconsistently. What was here an element is an attribute over there, similar structures are found repeated everywhere, the document becomes not-at-all understandable and messy. And all this beacause time can't be "wasted" on creating a simple and easy schema.&lt;br /&gt;&lt;br /&gt;And I have not yet talked about the obvious advantage of checking validity of instace documents, which is another good reason for writing schemas. some people tend to say that doing this kind of tasks breaks the geeky code of a good programmer. But for my money it simply puts thing in order and makes your life easier IF you consider yourself professional and not some kind of sleepwalker programmer.&lt;br /&gt;&lt;br /&gt;This kind of schema issues become even more important in the case of Web Services. The key word in WS is interoperability. So the main idea is to have a well designed document model (analogous to data model) on which the involved parties have previously agreeed. This concept of document agreement and interoperability might also be crucial even out of the scope of WS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-114494816873201560?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/114494816873201560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=114494816873201560&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114494816873201560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114494816873201560'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/04/to-schema-or-not-to-schema.html' title='to schema or not to schema'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-114379904859236254</id><published>2006-03-31T05:53:00.000-04:00</published><updated>2006-03-31T05:57:28.603-04:00</updated><title type='text'>Tabs and Poor UI Design</title><content type='html'>Tabbed Interfaces, used everywhere, and now massively on the net.&lt;br /&gt;However it is interesting to see how a nice idea can turn into something evil...&lt;br /&gt;&lt;br /&gt;A fairly complete article &lt;a href="http://homepage.mac.com/bradster/iarchitect/tabs.htm"&gt;about&lt;/a&gt; tabs at the Interface Hall Of Shame, good stuff if you are involved on design decisions and UI development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-114379904859236254?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/114379904859236254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=114379904859236254&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114379904859236254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114379904859236254'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/03/tabs-and-poor-ui-design.html' title='Tabs and Poor UI Design'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-114296125669330226</id><published>2006-03-21T13:08:00.000-04:00</published><updated>2006-03-21T16:57:53.710-04:00</updated><title type='text'>Quorums</title><content type='html'>When the members of the congress (legislative power) want to take decisions, they verify the "quorum". This means they check if the number of representatives is large enough to make the votation valid. If the number of congressmen is too low, any votation would not be legitimate.&lt;br /&gt;&lt;br /&gt;Coming back to geek world, quorums are useful in the context of fault tolerance. In a quorum system, we group the servers in such a way that an intersection between any two groups is never empty.&lt;br /&gt;&lt;br /&gt;For example, if we consider three servers s1,s2 and s3, this could be a quorum system:&lt;br /&gt;&lt;br /&gt;{ {s1,s2},{s2,s3},{s1,s3} }&lt;br /&gt;&lt;br /&gt;Each of the groups is called a quorum. For instance, {s1,s2} is a quorum.&lt;br /&gt;&lt;br /&gt;In this way, whenever a client requests a service, it works with one of the quorums. The intersection property of the quorum system gurantees that the state is always kept consistently (if correct algorithms are used of course).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-114296125669330226?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/114296125669330226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=114296125669330226&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114296125669330226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114296125669330226'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/03/quorums.html' title='Quorums'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-114289353476904484</id><published>2006-03-20T17:46:00.000-04:00</published><updated>2006-03-20T18:25:34.813-04:00</updated><title type='text'>Distributed Decisions</title><content type='html'>Sometimes the execution of a task can be simplified to the basic concept of making a decision. For example if is a database transaction, the decision could be to commit or abort the transaction.&lt;br /&gt;&lt;br /&gt;In the case of a single  processing unit this  is quite straightforward, but it happens that some systems may not rely on only one processing unit. It's clear that if the single unit crashes, the service is no longer available.&lt;br /&gt;&lt;br /&gt;The rule of "throwing hardware" to the problem could seem suitable in order to solve thi issue. By adding several processing units or service providers, if one crashes, there would be another available for subsequent requests. Fine.&lt;br /&gt;&lt;br /&gt;But then arrives the nice problem of consistency. Let's assume a minimalist example: clients write and read values of a register replicated in several servers.&lt;br /&gt;Client c1 happily writes "v1" in server s1. The state of the other servers must be updated with the value "v1". Otherwise the state of the system is obviously inconsistent, since different values can be read in a sequential execution.&lt;br /&gt;&lt;br /&gt;Maintaining the consistency of the system is not a trivial task, if we consider that machines can crash during the process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-114289353476904484?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/114289353476904484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=114289353476904484&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114289353476904484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/114289353476904484'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/03/distributed-decisions.html' title='Distributed Decisions'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-113995156843726869</id><published>2006-02-14T16:46:00.000-04:00</published><updated>2006-02-14T17:12:48.483-04:00</updated><title type='text'>Programming Tips?</title><content type='html'>Kristian Dupont, in chrylers.com, published a list of Top Ten NOTS of programming, available &lt;a href="http://www.chrylers.com/weblog/topten.php"&gt;here&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;Some may appear even controversial (keep in mind this is a list of tips you&lt;span style="font-style: italic; font-weight: bold;"&gt; should NOT &lt;/span&gt;follow):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Don't use exceptions:&lt;/span&gt; By double negation, DO use exceptions. I agree on this one at least at some extent. Dirty "error codes" and stuff like that are likely to bring unexpected behaviour and some work for bug trackers.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Use unsigned integers for positive values:&lt;/span&gt; I've never really cared much about signed or unsigned variables. If it's a sin or not, je m'en fou.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Design classes parallel to their physical counterparts:&lt;/span&gt; I must say I believe some level of parallelism is indeed needed. However strict parallelism may lead to nonsense.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Make sure your team shares a common coding standard:&lt;/span&gt; Here the author complains about indenting and spacing and that kind of stuff. I once tried to standardize even that, but it was mostly a waste of time. However some other coding standards ARE important.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Write lots of comments:&lt;/span&gt; I believe in self-describing code, so I must say tons of comments only turn code dirtier.  &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Use accessors rather than public fields:&lt;/span&gt; This sentence appears to be weird, but I think the author discusses the fact of mis-using accessors.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Use the singleton pattern for variables that you know you should have only one instance:&lt;/span&gt; Bof&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Be tolerant with intput and strict with output:&lt;/span&gt; I agree on validation problems because of this. I've experienced undeterminism and It's a pain in the neck.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Code all corner cases or you'll never fix things:&lt;/span&gt; I'm lazy so I like this one.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Design first, then code:&lt;/span&gt; This is particulary controversial. And I think it deserves more analysis and further reading. Coding right from start usually leads to nightmares, but I think no design can cover all corners "in-extense".  So I think I'll be thinking about this for a while.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-113995156843726869?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/113995156843726869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=113995156843726869&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113995156843726869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113995156843726869'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/02/programming-tips.html' title='Programming Tips?'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-113916938620204297</id><published>2006-02-05T15:36:00.000-04:00</published><updated>2006-02-05T15:56:28.276-04:00</updated><title type='text'>JaWE still rocks</title><content type='html'>It's been a while since my workflow days. In fact more than a year and a half  since I finished my last workflow-realted project.&lt;br /&gt;&lt;br /&gt;In those days I used to heavily use a nice Workflow XML Editor known as &lt;a href="http://www.enhydra.org/workflow/jawe/index.html"&gt;JaWE &lt;/a&gt;(Java Workflow Editor), developed by Together Serbia (as far as I know). The cool thing about JaWE was that it tried to follow as strictly as possible the WFMC (Workflow Management Coalition) standards, and that was the same model I was using.&lt;br /&gt;&lt;br /&gt;Recently I saw they released JaWE 2.0. And I decided to take a brief look. At first glance I could see they have really improved the user interface and added a good bunch of functionalities. I think I will take a deeper look at it and to the "&lt;a href="http://www.enhydra.org/workflow/shark/index.html"&gt;Shark&lt;/a&gt;" Workflow Engine they have also developed. Even Microsoft is working on workflow-related stuff, so it's my turn, I guess.&lt;br /&gt;&lt;br /&gt;I think people overlook Workflow-based systems and the advantages they provide. However I will not claim anything else without diving deeper into the subject.&lt;br /&gt;&lt;br /&gt;Anyway it's nice to see JaWE is still alive and kicking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-113916938620204297?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/113916938620204297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=113916938620204297&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113916938620204297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113916938620204297'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2006/02/jawe-still-rocks.html' title='JaWE still rocks'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-113475204518005264</id><published>2005-12-16T12:19:00.000-04:00</published><updated>2005-12-16T12:54:05.223-04:00</updated><title type='text'>Software Architect</title><content type='html'>&lt;p class="MsoNormal" style="margin-bottom: 12pt;"&gt;&lt;span style="" lang="EN-GB"&gt;Even the term is discussed. Some say such a job does not exist. But I will assume it does. Some people have tried to identify the tasks of a SoftArch, although no final statement can be made yet.&lt;br /&gt;&lt;br /&gt;For instance, Rob van Ommering tells us his experience &lt;/span&gt;&lt;a href="http://www.sei.cmu.edu/architecture/ThingsToDoInDenver.htm"&gt;&lt;span style="" lang="EN-GB"&gt;here.&lt;/span&gt;&lt;/a&gt;&lt;span style="" lang="EN-GB"&gt; More literature is available &lt;a href="http://www.sei.cmu.edu/architecture/essays.html#soviet"&gt;here&lt;/a&gt;. The Soviet Style is a nice comparison, I think.&lt;br /&gt;&lt;br /&gt;While working with small teams I have faced similar problems as Rob's, so I dare to cite some of the things he did, and seemed to work (and I also think they should work):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Define concepts&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Communicate the concepts&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Select technology&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Define top-level architecture&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Communicate top-level architecture:      explain it to everyone else!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Maintain a build environment&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Define Documentation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Set up a distributed repository&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Organize team meetings&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Keep in contact with requirements/product      manager&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Tutoring&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-GB"&gt;Selecting People&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-GB"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-113475204518005264?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/113475204518005264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=113475204518005264&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113475204518005264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113475204518005264'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/12/software-architect.html' title='Software Architect'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-113310922914135164</id><published>2005-11-27T12:31:00.000-04:00</published><updated>2005-11-27T12:33:49.150-04:00</updated><title type='text'>Semantic Web</title><content type='html'>RDF: &lt;a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/"&gt;this&lt;/a&gt; is what you should know!&lt;br /&gt;&lt;br /&gt;w3c's documentation about rdf. there's also a parser and triple/graph online generator&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-113310922914135164?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/113310922914135164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=113310922914135164&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113310922914135164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113310922914135164'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/11/semantic-web.html' title='Semantic Web'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-113075206793938960</id><published>2005-10-31T05:46:00.000-04:00</published><updated>2005-10-31T05:47:47.950-04:00</updated><title type='text'>Dijkstra on COBOL: classical quote</title><content type='html'>"The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence." (&lt;span style="text-decoration: underline;"&gt;1968&lt;/span&gt;) &lt;ul&gt; &lt;li&gt;Source: Used in &lt;i&gt;&lt;a href="http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD498.html" class="external text" title="http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD498.html" rel="nofollow"&gt;How do we tell truths that might hurt?&lt;/a&gt;&lt;/i&gt; in &lt;i&gt;Selected Writings on Computing:A Personal Perspective&lt;/i&gt;.&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-113075206793938960?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/113075206793938960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=113075206793938960&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113075206793938960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113075206793938960'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/10/dijkstra-on-cobol-classical-quote.html' title='Dijkstra on COBOL: classical quote'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-113030942347631415</id><published>2005-10-26T02:47:00.000-04:00</published><updated>2005-10-26T02:50:23.480-04:00</updated><title type='text'>async pages in .net 2.0</title><content type='html'>About &lt;a href="http://msdn.microsoft.com/msdnmag/issues/05/10/WickedCode/default.aspx"&gt;async pages&lt;/a&gt;. some thoughts on scalability. try it. Seems to be very useful in case of I/O operations on page loading (such as db-querying and that stuff).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-113030942347631415?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/113030942347631415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=113030942347631415&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113030942347631415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/113030942347631415'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/10/async-pages-in-net-20.html' title='async pages in .net 2.0'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-112879859162945722</id><published>2005-10-08T15:06:00.000-04:00</published><updated>2005-10-08T15:09:51.630-04:00</updated><title type='text'>Microsoft on WF</title><content type='html'>Microsoft is seriously working on workflow solutions. Or at least they're trying. Anyway it seems to be interesting.&lt;br /&gt;&lt;br /&gt;Some &lt;a href="http://msdn.microsoft.com/windowsvista/building/workflow/"&gt;general concepts&lt;/a&gt; &amp;amp; the &lt;a href="http://msdn.microsoft.com/windowsvista/building/workflow/default.aspx?pull=/library/en-us/dnlong/html/WWFGetStart.asp"&gt;walkthrough&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Got to try it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-112879859162945722?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/112879859162945722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=112879859162945722&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112879859162945722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112879859162945722'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/10/microsoft-on-wf.html' title='Microsoft on WF'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-112879816844164790</id><published>2005-10-08T14:59:00.000-04:00</published><updated>2005-10-08T15:02:48.446-04:00</updated><title type='text'>Avalon Guided Tour</title><content type='html'>The Windows Presentation Foundation (aka Avalon) is nicely described &lt;a href="http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/wpf101.asp"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For those who haven't played with it yet, download the PDC and try it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-112879816844164790?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/112879816844164790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=112879816844164790&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112879816844164790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112879816844164790'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/10/avalon-guided-tour.html' title='Avalon Guided Tour'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-112851549771206874</id><published>2005-10-05T08:24:00.000-04:00</published><updated>2005-10-05T08:31:37.716-04:00</updated><title type='text'>Smash the giant</title><content type='html'>Ok, the new giant is slowly trying to take the master's place.&lt;a href="http://publications.mediapost.com/index.cfm?fuseaction=Articles.showArticleHomePage&amp;amp;art_aid=34843"&gt; See &lt;/a&gt;him and his new ally!&lt;br /&gt;&lt;br /&gt;Well well well, will the open source approach finally take the lead? Still have to wait, but the menace is surely frightening the Gate's guys&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-112851549771206874?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/112851549771206874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=112851549771206874&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112851549771206874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112851549771206874'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/10/smash-giant.html' title='Smash the giant'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-112793299657151486</id><published>2005-09-28T14:33:00.000-04:00</published><updated>2005-09-28T14:43:16.613-04:00</updated><title type='text'>JBoss &amp; Microsoft: sleeping with the enemy</title><content type='html'>If you can't beat him, join him. It is not exactly what's happening between the JBoss and the Gate's guys but anyway it seems they realized they can profit of an &lt;a href="http://www.silicon.com/research/specialreports/opensource/0,3800004943,39152786,00.htm"&gt;alliance.&lt;/a&gt; Ifyou don't believe it, take a look at the article.&lt;br /&gt;&lt;br /&gt;Is Microsoft shooting itself on the foot? Maybe they want to keep on learning from the Java Community and the Open Source community (ok, "free software" for someones). However, it seems that Jboss will take the big part of the cake this time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-112793299657151486?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/112793299657151486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=112793299657151486&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112793299657151486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112793299657151486'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/09/jboss-microsoft-sleeping-with-enemy.html' title='JBoss &amp; Microsoft: sleeping with the enemy'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-112723278434647027</id><published>2005-09-20T12:09:00.000-04:00</published><updated>2005-09-20T12:13:04.350-04:00</updated><title type='text'>More on unsafe code</title><content type='html'>Look at &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/Csharp10182001.asp"&gt;this&lt;/a&gt;, MSDN's official words&lt;br /&gt;&lt;br /&gt;and &lt;a href="http://www.c-sharpcorner.com/Code/2004/Oct/WritingUnsafeCode.asp"&gt;c# corner's &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;even the &lt;a href="http://www.codersource.net/csharp_unsafe_code.html"&gt;codersourcer's&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-112723278434647027?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/112723278434647027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=112723278434647027&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112723278434647027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112723278434647027'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/09/more-on-unsafe-code.html' title='More on unsafe code'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-112723062861643463</id><published>2005-09-20T11:36:00.000-04:00</published><updated>2005-09-20T11:37:08.623-04:00</updated><title type='text'>Authorization Management 2</title><content type='html'>Security is driving me crazy. Now it is authorization management.&lt;br /&gt;&lt;br /&gt;Do we have to rely on role-based authorization management? Is it true that we can really handle comlex system's permissions through roles?&lt;br /&gt;&lt;br /&gt;I start to doubt it. Now, with AzMan we have a more detailed auth framework, but I'm afraid it still doesn't fit well enough with .NET and ASP.NET. All the ASP.NET nice features including the RoleProvider for AzMan are still Role-oriented and do not provide real support for operatins and/or tasks.&lt;br /&gt;&lt;br /&gt;Je m'excuse, but the AzMan API is still too rough for me. I'm forced to use it but I think I'll have to wait for a patch solving this issue.&lt;br /&gt;&lt;br /&gt;By the way:&lt;br /&gt;&lt;br /&gt;MSDN on AzMan(basics) &lt;a href="http://msdn.microsoft.com/msdnmag/issues/03/11/AuthorizationManager/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/paght000019.asp"&gt;Azman &amp;amp; ASP.NET&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-112723062861643463?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/112723062861643463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=112723062861643463&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112723062861643463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/112723062861643463'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/09/authorization-management-2.html' title='Authorization Management 2'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-111468567226323419</id><published>2005-04-28T06:52:00.000-04:00</published><updated>2005-04-28T06:54:32.263-04:00</updated><title type='text'>ASP.NET syntax basics</title><content type='html'>This may clear some doubts about server side scripts in ASP.NET, data binding an stuff.&lt;br /&gt;For those who start with ASP.NET or those who are still guessing!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://beta.asp.net/QUICKSTART/aspnet/doc/pages/syntax.aspx"&gt;http://beta.asp.net/QUICKSTART/aspnet/doc/pages/syntax.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-111468567226323419?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/111468567226323419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=111468567226323419&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/111468567226323419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/111468567226323419'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/04/aspnet-syntax-basics.html' title='ASP.NET syntax basics'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-110812359093534220</id><published>2005-02-11T08:04:00.000-04:00</published><updated>2005-02-11T08:15:42.850-04:00</updated><title type='text'>Accessing existing COM+ Components with C#</title><content type='html'>The Code Project's got &lt;a href="http://www.codeproject.com/csharp/usecomappincs.asp"&gt;something &lt;/a&gt;about it, altought i haven't proved myself.&lt;br /&gt;If you're using VS.NET some steps may be avoidable...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-110812359093534220?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/110812359093534220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=110812359093534220&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110812359093534220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110812359093534220'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/02/accessing-existing-com-components-with.html' title='Accessing existing COM+ Components with C#'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-110716890313409028</id><published>2005-01-31T06:52:00.000-04:00</published><updated>2005-01-31T06:55:03.136-04:00</updated><title type='text'>Quoting Indigo's product manager</title><content type='html'>&lt;div align="justify"&gt;Quoting Ari Bixhorn, lead product manager of Web Services Strategy in the Developer and Platform Division at Microsoft, in an interview with Patrick Meader.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Indigo?&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Indigo provides a unified programming model that enables developers to build service-oriented applications explicitly—loosely coupled, autonomous services that provide end-to-end security and reliable messaging assurances.&lt;br /&gt;Today, there are a variety of programming models for building distributed apps—ASMX, Web Services Enhancements (WSE), .NET Enterprise Services, and so on.&lt;br /&gt;Our desire is to simplify this process with a unified programming model that enables developers to build connected systems in a productive manner. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Unified Programming Model&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;We take the functionalities that are provided in our existing distributed application programming models, and we expose them to the developer through a single namespace within the .NET Framework. Whereas today, developers have to use separate programming models provided by WSE, ASMX, System.Messaging, System.EnterpriseServices, and .NET Remoting, Indigo will bring the best aspects of these together. If you're a VB.NET or C# programmer, you simply reference the System.ServiceModel assembly, then import that into your code. This gives you access to all the functionality that exists in today's disparate technologies and more through a consistent, productive programming model.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Indigo reduces the complexity of creating these (distributed) apps. People are already providing these kinds of solutions, but they take a lot of work; Microsoft is providing a tool that will help them do this faster, more easily, and with greater productivity. Indigo reduces the amount of code developers have to write and the number of programming models that have to know to implement the functionality they need.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Single technology space&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;If you look across the technology stack for building distributed applications with Microsoft tools today, each technology provides a powerful way of building a distinct type of application. For example, WSE provides you with support for the WS-* protocols for interoperability. .NET Remoting has a great extensibility model, provides location transparency, and so on. But what many developers want is a way to have access to these different elements together within a single application or technology space. They want to combine the interoperability you get with ASMX or WSE with the transaction support you get with Enterprise Services. Today, there is an impedance mismatch across all these existing stacks that makes it difficult to combine all this functionality.&lt;br /&gt;Our early adopters tell us one of Indigo's biggest benefits is the unified model to combine that functionality within a single application. You get all the benefits of interoperability, you get end-to-end Web services-based security, and you can still do things like reliable messaging.&lt;br /&gt;Indigo will provide additional class libraries for VS 2005 developers to incorporate into their applications. In that sense, it is an extension to the .NET Framework 2.0. In terms of operating system support, Indigo will ship as a core subsystem of Windows code-name Longhorn and will also run on Windows XP and Windows Server 2003.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Security&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;Indigo provides support for security, reliable messaging, and transactions through support of the WS-* specifications. We're not only providing end-to-end security for messages sent from one service to another, but we're doing so in a way that is interoperable. Security in Indigo relies on a token-based model. When an Indigo message comes into a service, it has a token attached to it, and that token asserts various things about the message. For example, in a simple authentication scenario, a token might help you determine the identity of a message—in other words, where it came from. The Indigo authentication system will look at that message and go, "You claim you were sent by Ari Bixhorn. How can I verify that?"&lt;br /&gt;In a simple scenario, you might have two Indigo services running on a Windows domain. The domain controller would be the trusted authority for those two services. So, my Indigo service would check with the domain controller to verify the authenticity of that message. We also have an extensive authorization model—the same authorization model that is used for ASP.NET—so it supports integration with the Windows Authorization Manager, as well as a config-based authorization model, where you can have a config file that specifies your access control list.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Compact Framework&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;We're not planning on providing Indigo support for the Compact Framework for version 1, but we've heard from quite a few customers who would like such support, so we're looking at that carefully for future versions of the technology.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Backward Compatibility&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;Microsoft will continue to support today's technologies for building distributed applications after Indigo launches. It is also doing work with Indigo to ensure that Indigo services can communicate with apps built using these technologies. That said, developers can take a number of steps to ready themselves for programming with Indigo, and we'll be posting several white papers on MSDN that will detail some of the strategies developers can take in the near future.&lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-110716890313409028?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/110716890313409028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=110716890313409028&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110716890313409028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110716890313409028'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/01/quoting-indigos-product-manager.html' title='Quoting Indigo&apos;s product manager'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-110623920313430064</id><published>2005-01-20T13:38:00.000-04:00</published><updated>2005-02-11T08:26:06.790-04:00</updated><title type='text'>Regexp quicklist</title><content type='html'>&lt;strong&gt;Here it goes:&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;\ :&lt;/strong&gt; the escape character - used to find an instance of a metacharacter like a period, brackets, etc. &lt;/li&gt;&lt;li&gt;. (period) match any character except newline &lt;/li&gt;&lt;li&gt;x match any instance of x &lt;/li&gt;&lt;li&gt;^x match any character except x &lt;/li&gt;&lt;li&gt;[x] match any instance of x in the bracketed range - [abxyz] will match any instance of a, b, x, y, or z&lt;/li&gt;&lt;li&gt;(pipe) an OR operator - [xy] will match an instance of x or y &lt;/li&gt;&lt;li&gt;() used to group sequences of characters or matches &lt;/li&gt;&lt;li&gt;{} used to define numeric quantifiers &lt;/li&gt;&lt;li&gt;{x} match must occur exactly x times &lt;/li&gt;&lt;li&gt;{x,} match must occur at least x times &lt;/li&gt;&lt;li&gt;{x,y} match must occur at least x times, but no more than y times &lt;/li&gt;&lt;li&gt;? preceding match is optional or one only, same as {0,1} &lt;/li&gt;&lt;li&gt;* find 0 or more of preceding match, same as {0,} &lt;/li&gt;&lt;li&gt;+ find 1 or more of preceding match, same as {1,} &lt;/li&gt;&lt;li&gt;^ match the beginning of the line &lt;/li&gt;&lt;li&gt;$ match the end of a line&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-110623920313430064?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/110623920313430064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=110623920313430064&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110623920313430064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110623920313430064'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/01/regexp-quicklist.html' title='Regexp quicklist'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-110607078313832186</id><published>2005-01-18T13:45:00.000-04:00</published><updated>2005-01-18T13:53:03.136-04:00</updated><title type='text'>Win XP SP2 conflict with MSDTC!</title><content type='html'>Here you may find how to solve it:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nimbus.co.nz/Manuals/NimbusManual/Public/WinXPSP2.htm"&gt;http://www.nimbus.co.nz/Manuals/NimbusManual/Public/WinXPSP2.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you're working with COM+ or Transactions in MSSQL Server, you should check this out&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-110607078313832186?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/110607078313832186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=110607078313832186&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110607078313832186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110607078313832186'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/01/win-xp-sp2-conflict-with-msdtc.html' title='Win XP SP2 conflict with MSDTC!'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-110572126281395984</id><published>2005-01-14T13:45:00.000-04:00</published><updated>2005-01-14T12:47:42.813-04:00</updated><title type='text'>C#: if you want to be unsafe...</title><content type='html'>The Dot Net Spider's got an article if you want to deal with pointers, dragons and devils&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dotnetspider.com/Technology/KBPages/331.aspx"&gt;http://www.dotnetspider.com/Technology/KBPages/331.aspx&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-110572126281395984?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/110572126281395984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=110572126281395984&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110572126281395984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110572126281395984'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2005/01/c-if-you-want-to-be-unsafe.html' title='C#: if you want to be unsafe...'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-110191701499202725</id><published>2004-12-01T11:59:00.000-04:00</published><updated>2004-12-01T12:03:34.993-04:00</updated><title type='text'>log4net: look out!</title><content type='html'>A nice article about log4net in the Code Project. A nice way to start logging.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/csharp/log4net_intro.asp"&gt;http://www.codeproject.com/csharp/log4net_intro.asp&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-110191701499202725?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/110191701499202725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=110191701499202725&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110191701499202725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110191701499202725'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2004/12/log4net-look-out.html' title='log4net: look out!'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-110124993640510632</id><published>2004-11-23T18:44:00.000-04:00</published><updated>2004-11-23T18:45:36.406-04:00</updated><title type='text'>Workflow Management Systems</title><content type='html'>&lt;div align="justify"&gt;Currently a vast number of software enterprise solutions exist in every domain, such as manufacturing, procurement, educational, clinical, etc. However these systems usually need to be adapted to some company-specific requirements. It is impossible to think about two companies having exactly the same functional organization. Each one of these enterprises has its own set of peculiar activities and procedures – which we will call &lt;em&gt;business processes&lt;/em&gt; – and therefore their systems, require a way of automating their business processes based on a set of defined rules.&lt;br /&gt;&lt;br /&gt;Thus the necessity of supplying a business process automation system based on previous formal definitions and models. Such a system is known as a &lt;em&gt;Workflow Management System&lt;/em&gt;. Using a workflow system, existing information systems can interoperate with it in order to let it handle the business processes.&lt;br /&gt;&lt;br /&gt;Not only does this technology allow automating any business processes, but also brings flexibility and ease on maintaining systems, because all business processes are not embedded in the source code. So, if a company decides to change the way it works, it only needs to modify the process definition, without necessarily changing the application code.&lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-110124993640510632?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/110124993640510632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=110124993640510632&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110124993640510632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110124993640510632'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2004/11/workflow-management-systems.html' title='Workflow Management Systems'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-110053061997306680</id><published>2004-11-15T10:54:00.000-04:00</published><updated>2004-11-15T10:56:59.973-04:00</updated><title type='text'>C#: Reference and Value Types</title><content type='html'>For those confused about reference and value types, and passing parameters, this should be helpful:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.yoda.arachsys.com/csharp/parameters.html"&gt;http://www.yoda.arachsys.com/csharp/parameters.html&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-110053061997306680?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/110053061997306680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=110053061997306680&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110053061997306680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110053061997306680'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2004/11/c-reference-and-value-types.html' title='C#: Reference and Value Types'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-110020937252399430</id><published>2004-11-11T17:41:00.000-04:00</published><updated>2004-11-11T17:42:52.523-04:00</updated><title type='text'>An old article about EAI</title><content type='html'>An Old Article about Enterprise Application Integration, take a brief look:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webservicesarchitect.com/content/articles/samtani01print.asp"&gt;http://www.webservicesarchitect.com/content/articles/samtani01print.asp&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-110020937252399430?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/110020937252399430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=110020937252399430&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110020937252399430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110020937252399430'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2004/11/old-article-about-eai.html' title='An old article about EAI'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-110018659474806996</id><published>2004-11-11T11:20:00.000-04:00</published><updated>2004-11-11T11:23:14.746-04:00</updated><title type='text'>Data Transfer Objects once again</title><content type='html'>&lt;div align="justify"&gt;Remote methods often carry the following problem:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;“To satisfy a single client request, you find yourself making multiple calls to a remote interface, which increases the response time beyond acceptable levels”.&lt;/em&gt; Well, I’m quoting Microsoft’s Solution Patterns if you don’t mind.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;But why do we have response-time problems when invoking remote services? Let’s quote MSDN again: &lt;em&gt;“Remote calls (those that have to cross the network) are slow. Although many remote invocation frameworks can hide the complexities of making a remote call, they cannot eliminate the steps that are required for the communication to take place. For example, the remote object location has to be looked up, and a connection to the remote computer has to be made before the data can be serialized into a byte stream, possibly encrypted, and then transmitted to the remote computer.”&lt;/em&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;So what can we do? The pattern is simple. Create a simple object that holds all data that is required for the call. Thus the remote method should accept the DTO as input or output parameter. Using this pattern avoids declaring multiple parameter methods, which are harder to maintain.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Normally a DTO may look like a Domain Object but we must keep them separated. A DTO can hold data from multiple Domain Objects and even expose additional fields (e.g. calculated values). Additionally, it is also important to remark that DTO’s don’t ever have business logic. Their purpose is only to hold information; it would be a sin to handle DB connections in a DTO for example.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;You may immediately think that it would be usually unreasonable to create different DTOs for each method. It is a good practice to reuse the DTOs among several different methods. That’s why sometimes DTOs are someway related to Domain Objects. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Drawbacks? Sure. Think of additional programming you need for building DTO’s. Nevertheless I think the trade is favorable.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-110018659474806996?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/110018659474806996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=110018659474806996&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110018659474806996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/110018659474806996'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2004/11/data-transfer-objects-once-again.html' title='Data Transfer Objects once again'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-109995622257495203</id><published>2004-11-08T19:12:00.000-04:00</published><updated>2004-11-08T19:25:41.863-04:00</updated><title type='text'>Façade Pattern</title><content type='html'>&lt;div align="justify"&gt;After having the Domain Model built, the Domain Logic is supposed to be completely modeled (If your systems look like mines this isn’t really true, for me the DM is never &lt;em&gt;really&lt;/em&gt; finished). But then you need to accomplish your functional requirements. These are usually modeled through use cases, and of course each use case may involve interactions between several Business Objects. So it seems there’s something missing, there is an additional step to be taken.&lt;br /&gt;&lt;br /&gt;This step is to model the &lt;em&gt;Application Logic&lt;/em&gt;. Domain Logic only cares about interactions between Domain Objects; there are no application requirements at this scope. And a good way of designing Application Logic is by using the Façade Pattern.&lt;br /&gt;&lt;br /&gt;Let’s quote Tingz Abraham: “It provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use”.&lt;br /&gt;So we can put the Façade in front of the Business Domain Logic and expose a simpler interface. Although there’s usually a tight relationship between use cases and façades, grouping criteria is “&lt;em&gt;up to the architect and designer&lt;/em&gt;”.&lt;br /&gt;&lt;br /&gt;Let’s see the pros:&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Simpler interface: The client doesn’t need to know about complexities of the Domain Model. A simple interface exposes just what the client needs.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Improved performance: A single call to the façade is needed instead of calling multiple domain objects’ methods.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Weak coupling between the Business Rules Tier and the Presentation tier. &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Clearer separation of scope.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Possibility of building different façades with different behavior and different purposes, but the same DM.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;If you’re building a distributed system, you should take a look at this pattern and consider applying it. It was after Distributed System that this pattern actually appeared.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-109995622257495203?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/109995622257495203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=109995622257495203&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/109995622257495203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/109995622257495203'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2004/11/faade-pattern.html' title='Façade Pattern'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-109992187900539600</id><published>2004-11-08T09:51:00.000-04:00</published><updated>2004-11-08T19:26:34.680-04:00</updated><title type='text'>Domain Model: any ideas?</title><content type='html'>&lt;div align="justify"&gt;Software terms are often victims of multiple and diverse interpretations. One of the most controversial is indeed the “Domain Model”. As usual, I’ll try to steal some thoughts from different sources, so you may pick the one(s) you like the most. Eventually, I might throw some personal thoughts, so don’t be surprised to find odd comments.&lt;br /&gt;&lt;br /&gt;A Domain Model is an object model of a problem domain. Elements of a domain model are Domain Object classes, and the relationships between them.&lt;br /&gt;&lt;br /&gt;So what does it mean? As always, it depends. We’re always looking through a Glass Onion, aren’t we? Well, you usually develop software in order to solve a concrete problem. This problem is enclosed in a particular domain (field, area). And if our brains keep on abstracting this domain, we finally discover the domain entities of the problem. These “entities” (this term is banned in many OO circles, beware of darkness!) are the base of what the Domain Objects will be, and thus what the Domain Model will be.&lt;br /&gt;&lt;br /&gt;If you want to find examples of this Domain Objects, think of the classic “customer”, “product”, or “purchase order”. Those abstractions of reality are the Domain Objects, and that’s all.&lt;br /&gt;&lt;br /&gt;But why would we want a domain model? Oops, everyone thinks different. You may think of the Domain Model as the pure Object Oriented abstraction of your problem domain. As the DM represents all the interactions between the Domain Objects, it is easy to use them for application purposes. Different Applications would use the same Domain Model, but everyone for its own purposes. Whenever we talk about applications, think of them as systems, modules, or simply components of a complex system. So that’s it, Domain Model reusability through an OO approach; pas mal.&lt;br /&gt;&lt;br /&gt;But now there’s a detail missing. We’re talking ‘bout Persistence. Why is it always related to the Domain Model? Although it is not a rule, normally you may want to persist certain Domain Objects, say a customer, a product or any other Domain Object. When talking about persistence, you may immediately think about Relational Databases. Be aware, it is not necessary the case. You may choose another media such as XML, binary files, etc. No matter the persistence media, persistence-specific features must be kept away from the Domain Model. It must be as pure as possible.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-109992187900539600?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/109992187900539600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=109992187900539600&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/109992187900539600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/109992187900539600'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2004/11/domain-model-any-ideas.html' title='Domain Model: any ideas?'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8630237.post-109718868919423009</id><published>2004-10-07T18:34:00.000-04:00</published><updated>2004-10-07T18:38:09.193-04:00</updated><title type='text'>VSTS: Waiting for a BETA?</title><content type='html'>Visual Studio Team System is a Community Tech Preview. It seems Microsoft really means it, it's really far from a decent version. So I think we'll have  to keep on waiting.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8630237-109718868919423009?l=jpcik.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jpcik.blogspot.com/feeds/109718868919423009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8630237&amp;postID=109718868919423009&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/109718868919423009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8630237/posts/default/109718868919423009'/><link rel='alternate' type='text/html' href='http://jpcik.blogspot.com/2004/10/vsts-waiting-for-beta.html' title='VSTS: Waiting for a BETA?'/><author><name>jpcik!</name><uri>http://www.blogger.com/profile/04500443076075984123</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://img377.imageshack.us/img377/7610/jpc60lc.jpg'/></author><thr:total>0</thr:total></entry></feed>
