Archive for febrero 2011
Como ganar siempre al jugar piedra,papel y tijeras
1) Rock it – Muchos tienen la tendencia de hacer “Piedra” en su primera lanzada. Si están jugando contra una de estas personas, lancen papel.
2) Tijeras revertidas – Jugadores experimentados tirarán papel (basándose en la primera regla). Tenemos que contrarrestarlos con Tijeras.
3) Copycat – Jugadores con poca experiencia (o cansados) van a tirar subconscientemente la forma contra la que perdieron en la última ronda. Contrarrestar con su opuesto
4) Dobles Rocas – Cuando vean a alguien lanzar dos rocas, sepan que el próximo lanzamiento será Tijeras o Papel. Las personas detestan ser predecibles y una firme indicación de ello es lanzar lo mismo tres veces. Contrarrestar con Piedra.
5) Descubrimientos en los dedos – Cuando el oponente se prepara a lanzar, fijarse en los dedos cuidadosamente. Los dedos se tensarán o moverán de acuerdo a la forma del lanzamiento. Para Piedra, los dedos estarán tensos. Para papel, estarán sueltos y para Tijeras, sólo los dedos utilizados para la forma estarán sueltos.
6) Papel por favor – El Papel es el menos usado en un match. Utilízenlo como una opción inesperada. El papel es sólo tirado el 29.6% del tiempo, mientras que la roca tiene un 35.4% y las tijeras, 35%.
7) Preparación previa – Ver al oponente jugar contra otros. Tienen una forma favorita, o mantienen una plantilla a la hora de lanzar
8 ) Spock & Roll – Cuando todo parezca perdido, vayan por el Spock. Es inesperado y altamente ilegal, pero también imposible de contrarrestar.
Amistad
Es lindo cuando un extraño se convierte en tu amigo, pero es triste cuando un amigo se convierte en un extraño... Yo NUNCA quiero perderte como amigo... Te conocí como un extraño, ahora te tengo como un amigo, espero encontrarte... en nuestro próximo camino donde la amistad jamas termina... Puede que no sea la persona mas importante en tu vida... Yo solo espero que cuando escuches mi nombre sonrías y digas: Ese es mi amigo!!!
Extender un IList para devolver un Datatable
- /// <summary>
- /// Exiende un metodo sobre una Lista para devolver un Dataset
- /// con las columnas del objeto de la lista
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="pList"></param>
- /// <returns></returns>
- public static DataTable ConvertTo<T>( this IList<T> pList )
- {
- DataTable table = CreateTable<T>();
- Type entityType = typeof( T );
- PropertyDescriptorCollection properties = TypeDescriptor.GetProperties( entityType );
- foreach ( T item in pList )
- {
- DataRow row = table.NewRow();
- foreach ( PropertyDescriptor prop in properties )
- row[prop.Name] = prop.GetValue( item );
- table.Rows.Add( row );
- }
- return table;
- }
- /// <summary>
- /// Devuelve un item de tipo T
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="pRow">The p row.</param>
- /// <returns></returns>
- private static T CreateItem<T>( DataRow pRow )
- {
- T obj = default( T );
- if ( pRow == null )
- return obj;
- obj = Activator.CreateInstance<T>();
- foreach ( DataColumn column in pRow.Table.Columns )
- {
- PropertyInfo prop = obj.GetType().GetProperty( column.ColumnName );
- object value = pRow[column.ColumnName];
- prop.SetValue( obj, value, null );
- }
- return obj;
- }
- /// <summary>
- /// Crea un DataTable con columnas del tipo T
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <returns></returns>
- private static DataTable CreateTable<T>()
- {
- Type entityType = typeof( T );
- DataTable table = new DataTable( entityType.Name );
- PropertyDescriptorCollection properties = TypeDescriptor.GetProperties( entityType );
- foreach ( PropertyDescriptor prop in properties )
- table.Columns.Add( prop.Name, prop.PropertyType );
- return table;
- }
Extender un Datatable para devolver un IList
Necesito pasar el contenido de un Datatable a un IList de tipo T, aprovechando la facilidad de extender clases, quedo así:
- /// <summary>
- /// Extiende un metodo sobre el objeto Datatable para devolver un IList
- /// </summary>
- public static IList<T> ConvertTo<T>(this DataTable pDataTable) where T : new()
- {
- PropertyInfo[] entityImportProperties = typeof(T).GetProperties();
- IList<T> colEntityImportList = new List<T>();
- if (pDataTable == null)
- return null;
- if (pDataTable.Rows.Count == 0)
- return colEntityImportList;
- foreach (DataRow actualRow in pDataTable.Rows)
- {
- T objNewImportEntity = new T();
- foreach (PropertyInfo propertyEntityImport in entityImportProperties)
- if (propertyEntityImport.CanRead)
- for (int i = 0; i <= pDataTable.Columns.Count - 1; i++)
- if (pDataTable.Columns[i].ColumnName == propertyEntityImport.Name)
- if (actualRow[propertyEntityImport.Name] == null)
- {
- if (actualRow[propertyEntityImport.Name] == DBNull.Value)
- propertyEntityImport.SetValue(objNewImportEntity, null, null);
- else
- propertyEntityImport.SetValue(objNewImportEntity, actualRow[propertyEntityImport.Name], null);
- break;
- }
- colEntityImportList.Add(objNewImportEntity);
- }
- return colEntityImportList;
- DataTable vSystemModulesTable = SystemManager.GetDataTable();
- IList<SystemModule> vColSystem = vSystemModulesTable.ConvertTo<SystemModule>();
- }
Y se usa, de esta manera:
- DataTable vSystemModulesTable = SystemManager.GetDataTable();
- IList<SystemModule> vColSystem = vSystemModulesTable.ConvertTo<SystemModule>();