L'acció d'aquest llibre succeïx paral·lelament a l'anterior (Deadhouse Gates), uns quatre mesos més tard del final del primer (Gardens of the Moon).
En aquest reprèn el fil conductor del 2º Exercit comandat per Dujek OneArm que renega de l'imperi malazà i s'alia amb els seus antics enemics, l'Anomander Rake i el Caladan Brood. Aquesta aliança es fa per lluitar contra el caníbals comandats pel Jaghut Pannion Seer. La primera batalla és a Capustan on els mercenaris Grey Swords defensen la ciutat contra els Pannions. El Grey Sword Shield Anvil Itkovian rep sobre les seves espatlles el sufriment de milers de morts ja que les portes de la mort no estan obertes.
Finalment aconsegueixen vèncer als Pannions encara que estaven patrocinats pel Crippled God a la ciutat de Coral, que esdevé la seu dels TisteAndii ja que l'Anomander sacrifica la seva fortalesa voladora Moon Spawn en la batalla.
En el llibre hi ha moltes altres línies argumentals i és algo complicat de seguir a vegades, sobretot per que salta molt de grups de personatges, però això és una constant en la sèrie. A mi m'ha agradat força.
Per mi que les portades són un enigma. No se que tenen a veure amb l'argument.
Aquest passat cap de setmana hem visitat el parc del Laberint d'Horta. Està força bé i encara que hi havia una gentada es podia caminar sense problemes. El laberint pròpiament dit està força bé, ni massa senzill ni massa complicat. Tenia alguns arbres arrancats però amb una mica d'imaginació es fa veure que estan. La resta de parc també dóna per una passejada molt agradable, sobre tot el pavelló que hi ha dalt de tot (també hi ha uns lavabos).
Les obres van començar a l'any 1791 quan Joan Antoni Desvalls i d'Ardena, marquès de Llupià, quart del Poal i marquès consort d'Alfarràs, propietari del terreny, va crear el disseny d'un jardí neoclàssic en col·laboració amb l'arquitecte italià Domenico Bagutti. L'execució es va fer a càrrec dels mestres d'obres Jaume i Andreu Valls i del jardiner francès Joseph Delvalet i s'acabà el 1802.
A mitjans del segle XIX els descendents del marquès van ampliar el parc sota la direcció de l'arquitecte Elies Rogent pel costat del torrent d'en Pallós amb un jardí romàntic amb parterres, placetes, grans arbres i una cascada. A més van afegir al jardí neoclàssic un canal d'aigua entre la terrassa superior i la terrassa intermèdia.
El 1880 es va crear un jardí domèstic al costat del palau Desvalls.
A finals del segle XIX la finca Desvalls esdevé l'escenari de vetllades socials i culturals amb representacions de teatre a l'aire lliure.
L'any 1967 la família Desvalls cedeix el parc a l'ajuntament de Barcelona que el va obrir al públic al 1971. Amb diners de la Unió Europea es va sotmetre a una àmplia restauració l'any 1994.
Avui el parc és un jardí-museu amb un nombre de visitants limitat a un màxim de 750 persones al mateix temps per preservar l'àmbit natural i les estructures de l'àrea. L'antic palau Desvalls acull des de l'any 1993 el Centre de Formació del Laberint (un institut municipal per a la formació en jardineria que depèn de Parcs i Jardins de Barcelona) a més d'una biblioteca especialitzada.
Foto del laberint, el Palau Desvalls està deteriorat i no val la pena.
Quan faig un SSIS (Sql Server Integration Service) per mi, vull que quan acabi m'envii un mail amb el resultat de l'execució, tan si ha anat bé com si ha anat malament.
El primer pas és configurar un mail de BBDD.Crear un perfil nou.S'han de posar les dades típiques, usuari, pwd, servidor de correu.Cal fer-lo públic i determinat.Cal afegir un operador.És important que coincideixi el mail amb el que s'ha creat previament.Al pla de manteniment cal afegir una tasca d'avisar operador i ajuntar amb el resultat OK de la última...I també de totes les altres tasques si van malament que envii un correu (una altra tasca d'aviso operador amb un assumpte KO).
#16/03/2014 00:26 Programació SQLServer Autor: Alex Canalda
Fa temps que vaig donant-li voltes al tema de la transferència de fitxers per Internet. Recentment el meu proveïdor d'Internet ha tingut a bé augmentar-me la velocitat, passant a 1Gigabit de baixada i 200Megabit de pujada i clar transferir fitxers grossos ja és possible.
A casa tinc un router GPON (Gigabit Passive Optical Network) però és força limitat a nivell de gestió de ports i protocols. Aleshores un protocol com el FTP queda descartat per que al ser multiport sempre em dóna problemes (el 21 és pel canal de control però després cal establir el canal de dades (amb un mètode passiu o actiu) i aquí és on es donen els errors ja que cal obrir un rang de ports i el GPON això no ho fa). A més és un protocol antic i no he trobat una implementació gratuïta segura (el Filezilla server no hem dóna prou seguretat).
Així que m'he posat a investigar i he trobat eines privades que cobren per transferències mensuals (fins a 2GB gratis), he trobat el FTPS (que és el FTP però sobre SSL i amb TLS). El FTPS també queda descartat per que, encara que és més segur, té el mateix problema que el FTP, és multicanal.
Llavors he trobat el SFTP, o SSH File Transfer Protocol. I aquest està securitzat, tot viatja encriptat. És monoport, fa servir el port 22, així que gestionant aquest port en tots els tallafocs hi ha prou (tallafocs de Windows i en el GPON). El protocol és relativament nou, la última versió és de l'any 2006.
Per fer la transferència es necessita un programa client i un servidor.
Com programa servidor he fet servir el de Bitvise que per us personal i no comercial és gratuït. El servidor dóna suport a tot el protocol SSH, però és fàcil quan s'instal·la limitar-ho a la transferència de fitxers (ho pregunta). Un cop instal·lat cal crear un/varis usuari virtual. Pot vincular-se a usuaris normals de Windows, però he preferit no fer-ho. Si es fa servir un usuari virtual s'ha d'especificar a quines carpetes té accés. I donar permisos NTFS al grup BvSsh_VirtualUsers sobre la carpeta en qüestió.
Interface del servidor SSH de Bitvise
Com a part client BitVise també té un programa, que no està gens malament, però he fet servir el WinSCP. És de programari lliure i té una versió "portable" que no s'ha ni d'instal·lar, cosa que en certs llocs va molt bé. El cert és que ha estat descarregar, posar usuari/contrasenya i començar a transferir.
Aquest llibre pertany a la sèrie de "The Lost Fleet" (la flota perdida). La "Flota perdida" està composta de 5 llibres (de fet es podrien ajuntar en un sol però l'autor els va traient per anar cobrant).
Aquest llibre comença tot just on acaba el cinquè de la sèrie anterior. En els 5 llibres anteriors es tracta de la lluita de la flota de la "Aliança" con els "Mons Sindicats", durant aquesta lluita es descobreix la presència d'una estranya raça alienígena que vol exterminar la humanitat fent que s'enfrontin dues faccions, fomentant la guerra. Aquest fil argumental no acaba al 5 llibre, es per això que hi ha la sèrie "Beyond Frontier" (més enllà de la frontera). En aquesta sèrie s'envia la flota més enllà de l'espai ocupat per la humanitat per investigar els aliens. En el primer llibre tot just s'aconsegueix preparar la flota i començar la missió. I acaba abruptament, típic en aquest autor. Suposo que va escrivint i quan porta 500 pàgines, klak! Talla i següent llibre. El cert és que m'agraden les "space opera" i aquesta, encara que no és molt original, es deixa llegir força bé.
Les portades no tenen a veure amb l'argument, ja que va de naus i no de soldats.
Per implementar la cache en la clsDades calen diferents parts: la taula, les stored procedures (SP) i el codi per consultar i invalidar parts de la cache.
En el primer post ja he parlat de la taula, les SP són les normals per qualsevol taula (GET, INS, DEL, UPD), excepte que com no hi ha camps del grid no es genera la SP QUERY per la taula CACHE.
Cal centrar-se doncs en la consulta a la cache i com s'invalida un conjunt de registres de la cache quan hi ha una operació de modificació de dades (UPD, DEL, INS). La consulta de la cache consisteix en modificar la funció que genera els grids en la clsHelper. Aquesta consisteix en el següent codi:
if (TA.TeCache)
{
URL.AppendFormat("{0}{1}", Ordenacio.ToString(), SentitOrdre.ToString());
URL.AppendFormat("{0}{1}", Req["rows"], Req["page"]);
ParamsCache.Add("Taula", TA.NomTaula);
ParamsCache.Add("URL", URL.ToString());
ParamsCache.Add("GridID", GridID);
TBL = Cache.GET(ParamsCache);
if (TBL.Rows.Count != 0)
{
//Cache hit
Result = TBL.Rows[0]["JSON"].ToString();
return Result;
}
}
Si es dóna un cache miss (no es troben les dades a la cache) es fa un processat normal, però al final de tot es grava el resultat a la cache.
//Es un MISS cal fer un insert a la cacheif (TA.TeCache)
{
Params.Clear();
Params.Add("Taula", TA.NomTaula);
Params.Add("URL", URL.ToString());
Params.Add("GridID", GridID);
Params.Add("JSON", Result);
Cache.INS(Params);
}
return Result;
Fins aqui és el que tracta l'obtenció de dades de la cache, ara toca la invalidació de la cache. Això es fa dins de la clsDades. Es pot configurar per que la clsDades per cada INS/UPD/DEL automàticament buidi la cache cada cop o cridar al mètode de neteja de cache explícitament des de la capa superior. A les funcions INS/UPD/DEL es posa el següent tros de codi:
if (TeCache && AutoNetejaCache)
{
ClearCache();
}
La clsDades té la funció ClearCache per tal que es pugui netejar explícitament la cache.
Dins del desenvolupament web hi ha un punt que a vegades no es té en compte quan es desenvolupa: la quantitat de dades a tractar en una taula. Quan aplicació entra en manteniment és habitual rebre peticions de que en algun punt l'aplicació va lenta, per que quan es va desenvolupar no es va valorar correctament l'estructura d'aquell punt i ara es pateixen les conseqüències.
Igualment quan hi ha un munt de dades el rendiment tard o d'hora es resenteix, és pot posar un hardware més potent, línies amb més capacitat però el pressupost marca el límit. És aleshores quan s'han de buscar alternatives. En el cas de la clsDades consisteix en activar la caché per una taula en concret. Normalment quan s'executa una stored procedure QUERY contra una taula amb milions de registres aquesta triga el seu temps, per molt que estiguin ben posats els indexos, total per extreure 20-50 registres d'entre milions. Aquests registres després s'empaqueten en JSON i s'envien al navegador de l'usuari. La caché es dedica a guardar els JSONs més usats, de tal manera que
Per aconseguir això calen varies coses:
Una taula on guardar el JSON, la taula que es diu CACHE.
Stored procedures per accedir a aquesta taula.
Interceptar en el codi les peticions dels grids per tal de veure si cal consultar la cache.
Interceptar en el codi els INS/UPD/DEL que invaliden la cache.
Començaré per taula cache que té la següent estructura:
Taula: camp que guarda quina taula estem cachejant.
Pantalla: pantalla on està el grid que estem cachejant.
Grid: ID del grid que estem cachejant.
Pag: pàgina del grid.
NumRegs: número de registres de la pàgina.
SortOrder: ordre del grid.
Filtre: filtre aplicat per obtenir aquests registres. Normalment el trec de la URL i el poso aqui tal com raja.
El codi de creació de la taula:
CREATETABLE [dbo].[CACHE](
[Taula] [nvarchar](20) NOT NULL,
[Pantalla] [nvarchar](20) NOT NULL,
[Grid] [nvarchar](20) NOT NULL,
[Pag] [int] NOT NULL,
[NumRegs] [int] NOT NULL,
[SortOrder] [nvarchar](30) NOT NULL,
[Filtre] [nvarchar](200) NOT NULL,
[Resultat] [nvarchar](max) NOT NULL,
CONSTRAINT [PK_DI_EXP_CACHE] PRIMARY KEY CLUSTERED
(
[Taula] ASC,
[Pantalla] ASC,
[Grid] ASC,
[Pag] ASC,
[NumRegs] ASC,
[SortOrder] ASC,
[Filtre] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
La resta de temes els tractaré en el següent post.
#13/03/2014 16:48 Programació C# SQLServer Autor: Alex Canalda
Intel està desenvolupant cables de fibra òptica per connectar servidors dins d'un datacenter. Fan servir la seva tecnologia (de Intel) Silicon Photonics que permet enviar 25Gbps per cada fibra, però ara han desenvolupat un cable i un connector (que anomenen MXC) que té 64 fibres dins. Es poden configurar 32 fibres per enviar i 32 per rebre fent un cable de 800Gbps full-duplex o configurar les 64 per enviar arribant a la monstruosa xifra de 1,6Tbps. Les dades arriben bé fins a una distància de 300 metres.
Aquests cables han estat desenvolupats juntament amb Corning (els mateixos que fan el Gorilla Glass dels mòbils) i una altra empresa anomenada USConec. Estaran disponibles comercialment al Q3 de 2014, en versions de 8, 16, 32 i 64 fibres (i diferents preus).
Els primers a instal·lar aquests cables són Microsoft, Facebook i algun centre de supercomputació. Però els fabricants estan pendents de com aprofitar aquests amples de banda tan exagerats per dissenyar servidors on els processadors estiguin a una banda, la RAM en una altra, els discs en una tercera etc...
No crec que veiem en un entorn domèstic aquests cables en uns anys, però tot el que comença al món dels servidors acaba arribant.
Aquest llibre ha estat escrit per Neal Stephenson i està ambientat en una societat humana ciberpunk. En el futur la nanotecnologia està a l'ordre del dia, i totes les coses surten del "compiladors de matèria", que es dedica a enganxar àtoms seguint un model (com una impressora 3D). Els àtoms li arriben d'una cosa que diu "Toma" (com un endoll). Les tomas les controla una tribu neo-victoriana.
La societat està divida en tribus, ja no en països ja que es pot fer "crèixer" terra allà on convingui. Les principals són la "Nueva Atlantis" (els neo-victorians, on s'aglutinen les cultures europees) que són bastant steampunk, els Nipon (japonesos) i els Han (xinesos). Pel mig estan la resta de minories, i algunes tribus "sintètiques".
Aquí és on es situa l'acció, quan un aristòcrata victorià encarrega a un enginyer la creació d'un manual que eduqui correctament a la seva neta. L'enginyer, anomenat Hackworth també té una filla petita i vol crear una còpia del manual, per fer-ho i que no quedi registrat fa servir un hacker anomenat DoctorX. El DoctorX també vol una còpia del manual per educar milers de nenes xineses orfes.
Quan en Hackworth va a entregar el manual a la seva filla li roben i cau en mans d'una nena petita d'una família conflictiva, la Nell que serà la protagonista del llibre.
En aquest moment hi ha una rebel·lió dels Han que volen liquidar totes les Tomes i la nanotecnologia. El llibre acaba de forma molt brusca quan la Nell es retroba amb la Miranda (que era una actriu que a través del llibre li fa de mare), però no explica gaire sobre el per que de la rebel·lió, ni si guanyen o no, ni que passa amb el DoctorX ni el Hackworth.