Drama legal basat en fets reals. Tracta de la vida de dos germans, noi-noia, que viuen (o mal viuen) en una família desestructurada (la seva mare té 9 fills de 7 pares diferents, mmmmm). Quan són grans al noi l'acusen d'un assassinat que no ha comés i el condemnen a perpetua sense condicional. Spoilers: ella llavors mou cel i terra per treure'l de la presó. Per fer-ho estudia dret i es fa advocada. Ha de lluitar contra el sistema judicial, contra el seu propi germà que es vol suïcidar, contra el marit que la deixa, contra els falsos testimonis, ... Al final guanya, al final el treu de la presó 18 anys més tard. I 8 més tard rep una indemnització de 3.4 milions de USD. L'assassí original no el troben.
Una bona peli, i a sobre el tema dels fets reals...
Ja que vam veure la primera, per que no veure la segona, potser empitjora... I sí, la segona és pitjor. Els "bons" actors de la primera ja han dit que no, així que... Aquest cop s'ha format un bàndol de fills bastards de deus (semi-deus) que volen ressuscitar a Kronos amb el "bellocino de oro" per destruir l'Olimp. A més a més el Percy també ha de trobar el bellocino per curar a una protectora del campament boyscout on viu que els dolents han enverinat. Com sempre peli dolenta, efectes especials bons.
Aquesta funció pertany a la clsDades i funciona igual que la GET però limita el nombre de files retornades a les que se li passen per paràmetre.
Perque és necessària? Suposem que tenim un procés que ha de processar (valgui la redundància) 50.000 registres, això ho retorna el GET sense problemes. Però quan porta 10.000 processats en una aplicació web dóna un timeout. Llavors és necessari processar de 5.000 en 5.000 registres. Durant el procés el registres poden canviar d'estat (per exemple) i així evitar tornar a ser seleccionats a la següent crida del GETTOP. Cada cop que es processa un conjunt de registres es pot enviar a la UI un missatge indicant que encara queden per processar, la UI pot actualitzar alguna barra de progrés o similar i llestos (haurà fet un COUNT per saber el total).
La funció té els mateixos paràmetres que el GET amb un afegit que és el número de registres a retornar.
Vam trobar pel HDD aquesta pel·lícula pendent de veure. Els actors són bons, Pierce Brosnan, Uma Thurman, Sean Bean... Tracta dels deus de l'Olimp que existeixen de debó amb alguns éssers camuflats entre les persones normals. El Percy Jackson és fill de Poseidó, deu del mar, i s'entera d'això quan és adolescent. Té que recuperar el llamp de Zeus (que li han robat, que ja té gràcia que a un deu li robin...) ja que si no es declararà la guerra entre els deus i el món s'acabarà.
És una peli orientada a un públic adolescent, amb forats tamany XXL en el guió, però amb bons efectes especials.
Aprofitant uns dels dies de vacances de Nadal hem anat a visitar la mina de Sal de Cardona.
Està força bé veure i entendre el procés de formació de tota la muntanya de Sal, de com s'explotava a cel obert en l'antiguitat per obtenir sal de taula. De com a partir de principis del S. XX es va explotar la sal potàssica per fer-ne explosius. Degut a la configuració geològica es va haver d'arribar a grans profunditats per fer-ne l'extracció, i quan més fons més calor. Va arribar un punt que el cost de refrigeració era massa alt front el benefici de la sal i es van tancar les mines. Es van extreure en 60 i pocs anys de funcionament 37.800.000 tones de sal, arribant fins als 1.308m de fondària. És una llàstima que dels kilòmetres i kilòmetres de galeries que hi ha, només es visiten unes molt petites, horitzontals, a profunditat 0, durant uns 500m.
El castell no el vam poder visitar per temes d'horari, el deixem per una futura excursió.
Aquest cap de setmana passat hem anat a Sevilla. Hem agafat l'avió de Vueling de les 7 del matí i a les 8:30 ja estava a Sevilla. Vam deixar el cotxe al parking de l'aeroport (37,5EUR costa deixar-lo tot el fi de setmana). Per tornar també en Vueling, el vol de les 18:30 i a les 20h del diumenge ja estàvem a Barcelona altra cop. L'hotel Palacio Alcazar ha estat força bé i molt cèntric. Per menjar tampoc he trobat res espectacular, i els restaurants estaven plens a bessar (crizi? quien dijo crizi?).
Sevilla és una ciutat espectacular pel patrimoni acumulat que té. Són segles i segles de ser port, primer musulmans, després els reis cristians. Impressionant catedral, la Giralda i els Reales Alcazares. Gran part del tràfic amb les "Amèriques" passava per aquí. Han tingut exposicions universals que els han deixat zones molt maques, el parc de MariaLuisa i la Expo92. El casc antic és força maco i molt gran, la juderia (barri de Santa Cruz) té carrerons molt agradables i apareixen placetes a cada cantonada.
La Sevilla Card crec que no val la pena, per que val 33EUR 24h i tens 2 monuments i un passeig en vaixell pel riu, si no passeges pel riu... Hem agafat el bus turístic que està força bé, pots anar pujant i baixant del bus al teu ritme i incorpora passejades guiades en certes zones, podria ser més barat, però bueno, 17EUR per persona. En aquestes passejades hem anat al parc de MariaLuisa i a Triana. També hem entrat a los Reales Alcazares, hi ha uns guies turístics a l'entrada que són un timo, són 8,75 l'entrada i 5EUR el guia (per persona). Ens vam cansar d'esperar al guia a que fes el grup prou gran i vam agafar una audioguia (2,5EUR per persona). A dins si es vol visitar un altra tros cal pagar 2,5EUR més. Trobo força empipador que et vagin cobrant per trossets, ja podrien cobrar-ho tot i deixar de molestar. Són espectaculars els Alcazares. A la tarda vam pujar a la Giralda, que no té escales només rampes, 35 rampes al 17% de desnivell.
Igual que Barcelona, Sevilla és bona si la bossa sona, un ciutat molt maca i visitable.
Un hombre está volando en un globo aerostático y se da cuenta de que se encuentra perdido. Mientras hace algunas maniobras ve a un tipo caminando por el campo.
El hombre hace descender el globo algunos metros y grita:
- Perdone, ¿me puede decir donde estoy?
A lo que el hombre que está debajo le responde:
- Usted está en un globo aerostático, suspendido a unos 10 metros del suelo.
- Usted es informático ¿verdad? - dice el del globo.
- Así es - dice el de abajo - ¿Cómo se ha dado cuenta?
- Bueno, -dice el del globo - Todo lo que usted me ha dicho es técnicamente correcto, pero no resulta de utilidad para nadie.
Y el de abajo responde:
- Y usted debe ser un usuario.
- Exacto, - responde el del globo - ¿Cómo lo ha sabido?
- Sencillo. Usted no sabe donde se encuentra, ni hacia donde va, pero espera que yo le pueda ayudar. Usted está en la misma situación que antes de que nos encontráramos, pero ahora cree que la culpa la tengo yo.
Aquesta funció de la clsDades s'encarrega de transformar els paràmetres informats a paràmetres SqlServer i invocar a la stored procedure GET, obtenint els resultats en un taula (objecte DataTable). Per fer-ho fa servir la funció de creació de paràmetres amb la informació de la variable ParamsGET que és tipus clsCamp (es pot veure un exemple aquí.).
Si no està informat l'objecte connexió a BBDD en crea una nova fent servir l'string CadConn, i la tanca posteriorment (es a dir, per un accés puntual es pot fer servir directament). Si, al contrari, ja hi ha un objecte connexió creat el fa servir sense modificar-ne l'estat. Això és important ja que si es fan servir múltiples objectes de la clsDades i es vol que tots facin servir la mateixa connexió, sense anar obrint i tancant, caldrà informar-los la connexió (i de forma anàloga la transacció) abans de fer servir l'objecte. Com sempre poso el codi per veure que fa.
publicDataTable GET(Dictionary<string, string> Params)
{
SqlDataReader Reader = null;
DataTable Result = newDataTable();
bool LocalConn;
SqlConnection Conn = null;
//SQLConn és una variable SqlConnection de la clase, si no està instanciada cal crear-laif (SQLConn == null)
{
LocalConn = true;
Conn = newSqlConnection(CadConnBBDD);
Conn.Open();
}
else
{
LocalConn = false;
Conn = SQLConn;
}
SqlCommand SqlComm = newSqlCommand();
SqlParameter SqlParam;
SqlComm.Connection = Conn;
if (SQLTrans != null) SqlComm.Transaction = SQLTrans;
SqlComm.CommandType = CommandType.StoredProcedure;
SqlComm.CommandText = spGET;
//Es creen tots els paràmetres i informant els valors dels que existeixenforeach (clsCamp Camp in ParamsGET)
{
SqlParam = CreaParametre(Camp, false);
if (Params.Keys.Contains<string>(Camp.NomCamp))
{
if (string.IsNullOrEmpty(Params[Camp.NomCamp])) SqlParam.Value = DBNull.Value;
else SqlParam.Value = Params[Camp.NomCamp];
}
else SqlParam.Value = DBNull.Value;
SqlComm.Parameters.Add(SqlParam);
}
Reader = SqlComm.ExecuteReader();
Result.Load(Reader);
Reader.Close();
if (LocalConn)
{
Conn.Close();
Conn.Dispose();
Conn = null;
}
return Result;
}
#17/12/2013 16:42 Programació C# Autor: Alex Canalda
Dins de la clsDades hi ha aquesta és una petita funció que s'encarrega de crear un paràmetre de SQLServer a partir de la informació guardada en un objecte clsCamp. L'única variació que té és en el INSERT, que quan es tracta d'una identitat cal recuperar el valor que es genera. Per això en aquest cas es posa el paràmetre de sortida (output). Aquesta funció es fa servir en la resta de funcions que veurem, les que invoquen a les seves corresponents stored procedures. Poso el codi a continuació, es pot seguir fàcilment.
privateSqlParameter CreaParametre(clsCamp Camp, bool INSERT)
{
SqlParameter SqlParam;
SqlParam = newSqlParameter();
//Si és un insert interessa recuperar el valor de la identitat, el paràmetre ha de ser output.if (INSERT)
{
if ((TeIdentitat) && (Camp.NomCamp == Identitat)) SqlParam.Direction = ParameterDirection.Output;
else SqlParam.Direction = ParameterDirection.Input;
} //Tots els altres sempre input.else SqlParam.Direction = ParameterDirection.Input;
SqlParam.ParameterName = Prefix + Camp.NomCamp;
switch (Camp.Tipus)
{
caseTipus.bit:
SqlParam.SqlDbType = SqlDbType.Bit;
break;
caseTipus.tint:
SqlParam.SqlDbType = SqlDbType.Int;
break;
caseTipus.bigint:
SqlParam.SqlDbType = SqlDbType.BigInt;
break;
caseTipus.nvarchar:
SqlParam.SqlDbType = SqlDbType.NVarChar;
SqlParam.Size = Camp.Longitud;
break;
caseTipus.date:
SqlParam.SqlDbType = SqlDbType.Date;
break;
caseTipus.time:
SqlParam.SqlDbType = SqlDbType.Time;
break;
caseTipus.datetime:
SqlParam.SqlDbType = SqlDbType.DateTime;
break;
caseTipus.nchar:
SqlParam.SqlDbType = SqlDbType.NChar;
SqlParam.Size = Camp.Longitud;
break;
caseTipus.dec:
SqlParam.SqlDbType = SqlDbType.Decimal;
SqlParam.Precision = Camp.Precisio;
SqlParam.Scale = Camp.Escala;
break;
caseTipus.chr:
SqlParam.SqlDbType = SqlDbType.Char;
SqlParam.Size = Camp.Longitud;
break;
caseTipus.varchar:
SqlParam.SqlDbType = SqlDbType.VarChar;
SqlParam.Size = Camp.Longitud;
break;
}
return SqlParam;
}
#17/12/2013 16:07 Programació C# Autor: Alex Canalda
Seguim la línia dels "reis maleïts", és el quart llibre. La història aquí segueix on acaba l'anterior llibre. El Felipe, conde de Poitiers segueix sent el "bo" i els d'Artois els dolents. Just ha mort el rei enverinat i la reina embarassada encara no ha donat a llum.
[Spoilers warning!] Fa gràcia el procés d'elecció del nou papa, tanquen a tots els cardenals junts i no els deixen sortir fins que l'hagin escollit, molt astut el Felipe. Durant el llibre es regent, però la Mahamut, condessa malvada on les hagi, després d'haver liquidat a un rei ara li mata el fill (un bebe) enverinant-lo amb un mocador fent veure que li seca les babetes. Llavors el Felipe fa servir la llei que impedeix regnar a les dones i es fa coronar rei. Molt astut. Per sort el Bouville, cuidador de la reina Clemencia ha canviat el bebe-rei per un altra (el que mor) i l'amaga. Però el bebe que ha mort és el del Guccio i la Maria de Cressay que tenen que renunciar al seu amor...
El llibre es llegeix molt bé, i m'ha agradat molt. A pel següent!