Estava meditant sobre els operadors de les expressions regulars i hi ha un modificador que no acabava d'entendre. És l'operador "?", que especifica que funciona en mode mandrós enlloc de golut. I això del golut i del mandrós (o "greedy" i "lazy" en guiri) que és?
Suposem que volem construir una expressió regular que encaixi en un tag HTML. Seria algo així:
<.+>
Es a dir: "<" per l'inici de tag, "." per qualsevol caràcter, "+" per dir repetició i ">" pel fi del tag. D'aquesta manera l'expressió encaixaria amb "<em>" o amb "<body>" o amb "<table>" o amb... Però aleshores aquesta expressió regular també es menjaria això, que seria incorrecte:
<em>Hello World</em>
Es a dir, funciona en mode golut i el ".+" vol encaixar el màxim nombre de caràcters i aleshores retorna tot el text sencer (el que hi ha entre els caràcters en vermell, encaixa el primer "<", després qualsevol caràcter (inclòs el segon ">") i tanca amb l'últim ">"). Si es vol que només agafi el primer tag caldria posar l'expressió regular en mode mandrós, així:
<.+?>
Observar que s'ha afegit el "?" per indicar que el ".+" funciona en mode mandrós. Aleshores obtindria el següent:
<em>Hello World</em>
Es a dir s'atura en el següent ">" que troba i no segueix encaixant caràcters.
Le preguntaron a Buddha qué es lo que más le sorprendía de la humanidad, respondió:
"Los hombres, que pierden la salud para juntar dinero, y luego pierden el dinero para recuperar la salud y por pensar ansiosamente en el futuro, olvidan el presente de tal forma, que acaban por no vivir ni el presente ni el futuro, viven como si nunca fuesen a morir y mueren como si nunca hubiesen vivido"
En una aplicació a vegades cal un petit fitxer de configuració, actualitzable etc... llavors amb la clsConfig hi ha prou. A vegades cal guardar més dades, més estructurades, aleshores és quan es fan servir BBDD, ja que un fitxer XML té un mal rendiment guardant dades (s'ha de llegir sencer per modificar-lo). Però tampoc cal un SQL Server si no es vol més que guardar unes quantes dades, ni pagar llicències ni instal·lar res.
Per això he estat buscant un BBDD local que es pugui enganxar a un programet, i he trobat que el SQLServerCE (made by Microsoft) s'ajusta força a aquestes necessitats. L'únic problema que té és que Microsoft sembla que no el vol mantenir més ja que suposo que estaria menjant-se vendes de petits SQLServers. També he llegit que és possible que el torni a posar al VisualStudio (encara que això ja és més un rumor). El cas és que la última versió del SQLServer CE és força recent i s'integra perfectament amb el VisualStudio 2013 si es sap com.
El primer que cal fer és instal·lar les eines del SQLServer CE (el "ToolBox"), amb això al menú "TOOLS" ens apareix una nova opció que ens permet crear BBDD de SQLServerCE, veure els camps, executar scripts, ...
SQL Server CE Toolbox
Un cop les eines estan instal·lades cal poder accedir des de programa a la BBDD. Aquí és on m'ha costat més per que no està del tot clar. El que cal fer és copiar la DLL del SQLServer CE a la carpeta del projecte que estem desenvolupant. Normalment aquesta carpeta està a: "C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Private" (s'ha de copiar sencera, amb subcarpetes). Un cop copiada la carpeta, cal posar a l'arrel del projecte les carpetes "amd64" i "x86" (aquestes dues carpetes són subcarpetes de la "Private"). Totes les DLLs han d'estar marcades com "Copiar si es modifiquen" en l'acció "Copiar al directori de sortida" (es fa fent "Propiedades" sobre la DLL). Un cop fet això es posa la "Referència" a la DLL "System.Data.SqlServerCe.dll". Queda així:
Resultat
A partir d'aquest moment ja es pot fer servir el SQLServer CE en VisualStudio 2013.
#31/05/2014 16:08 Programació C# SQLServer Autor: Alex Canalda
Barnacles - mol·lusc que s'enganxa a les roques, típic de les costes. També s'enganxa als cascs dels vaixells fent que corrin menys.
Steerage - és la part del vaixell que està gairebé abaix de tot, es diu així per que per allí passen les cordes de control del timó (steering). És on acostumaven a viatjar els passatgers més pobres, on no hi havia privacitat, un menjar pèssim i un us limitat dels lavabos.
Hefted - és un terme que s'aplica a les ovelles a que tendeixen a estar juntes. En el cas dels combois de vaixells es refereix a que els vaixells estiguin junts.
Pickled - es la forma de preservar aliments en vinagre, "pickled [nom_de_menjar]", vol dir que el menjar està en un pot conservat amb vinagre.
Aquesta peli al principi no enganxa gaire, fins que recordes que està basada en fets reals. Es una barreja d'acció, thriller i comèdia. Explica com un grup de culturistes descerebrats ideen un pla per fer-se rics. El que fan és segrestar a un dels clients del gimnàs on fan peses per treure-li tots els diners. Després de fallar tres cops en el segrest finalment ho aconsegueixen i li treuen tot, l'intenten matar però sobreviu. Encara que la policia no creu al client segrestat ja que la seva història és una mica rocambolesca. Quan es tornen a quedar sense diners decideixen repetir el pla, però amb la mala sort que enlloc de segrestar a la seva víctima se la carreguen. Finalment la policia entra en acció i els deté.
El cert és que la peli no és molt bona, però després et planteges que està basada en fets reals... i tot canvia. L'espècie humana és sorprenent lo tonta que arriba a ser, i si és per delinquir aquests tenen un rècord dificil de batre. Recomanable!
El Médico és una peli basada en el llibre del mateix títol del Noah Gordon. Explica les aventures d'un noi (que es diu Robert Cole) que vol ser metge en la Anglaterra del 1096.
Aleshores no hi havia metges, si no barbers que feien el que podien. Quan el seu mestre barber queda ceg un jueu l'opera de cataractes amb èxit, i ell meravellat decideix que vol aprendre més. Per això es disfressa de jueu i marxa cap a Ispahán, per estudiar amb Ibn Sina. Allí passa moltes aventures, aprèn medecina, coneix a la noia i finalment torna a Anglaterra.
La peli està força bé, molt ben feta, l'únic "pero" que li posaria és que ha de resumir un llibre força llarg i a vegades condensa massa la història, però no passa res. Molt recomanable!
I once had a good idea on how we could mightily improve the prosperity of Britain, Sharpe. My notion was that every man of property could kill one lawyer a year without fear of penalty. Parliament wasn't interested, but then, Parliament is full of blood-suckers.
Segueixo amb els llibres d'en Sharpe i els seus fusells. Aquest cop ha tocat el tercer, "Sharpe y la fortaleza india". Es com llegir novel·les d'Emilio Salgari (Sandokan) però amb una ambientació històrica més fidel.
Corre l'any 1803 i l'exercit de Sir Arthur Wellesley segueix perseguint a l'exercit dels Mahrattas mentre es retira cap l'oest de l'India. Entre l'exèrcit britànic està en Sharpe, que ara és oficial. Encara que és un oficial incomprès per que els soldats no el volen ni els oficials tampoc. Per això l'envien al destacament encarregat de la intendència. Allí troba corrupció a mans del seu antic enemic el sergent Hakeswill, que es queda subministres i els ven a mercaders indis.
Els Mahrattas es refugien a Gawilghur, que és una fortalesa molt gran dalt d'un altiplà. Allí també espera un renegat anglès, William Dodd (que en l'anterior llibre també apareix). En Sharpe, durant la batalla i després de conquistar el primer fort, troba una escletxa en la muralla impenetrable de la segona fortalessa i això permet atacar des de la reraguarda la porta i obrir-la. De pas liquida als seus enemics, encara que el fereixen.
El llibre es llegeix molt bé, ben ambientat i a mi no se m'ha fet avorrit, m'agraden les aventures! Recomanat!
Amb HTML5 es pot carregar un fitxer de l'ordinador local on està el navegador directament a una pàgina web, sense passar pel servidor web. Antigament per fer això calia pujar el XML al servidor, aquest processar-lo i enviar-te el HTML amb els controls degudament informats. Això s'ha acabat, al menys en Firefox. Cal fer un HTML com el següent:
Un cop fet això cal fer el següent script (té el document.ready del jQuery, així que s'ha de posar el jQuery també):
<script>
var reader = new FileReader();
reader.onload = function (e) {
var text = reader.result;
if (window.DOMParser) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(text, "text/xml");
$("#test").val(xmlDoc.getElementsByTagName("SOAPAction")[0].childNodes[0].nodeValue);
}
else {
alert("No hi ha parser!");
}
}
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object// files is a FileList of File objects. List some properties.var output = [];
for (var i = 0, f; f = files[i]; i++) {
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
'</li>');
reader.readAsText(f);
}
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}
$(document).ready(function () {
// Check for the various File API support.if (window.File && window.FileReader && window.FileList && window.Blob) {
document.getElementById('files').addEventListener('change', handleFileSelect, false);
} else {
alert('The File APIs are not fully supported in this browser.');
}
});
</script>
Com es pot veure a l'exemple, el XML ha de tenir el tag "SOAPAction" i el seu valor es posa al control "test", i llestos!
#26/05/2014 16:06 Programació Javascript HTML/CSS Autor: Alex Canalda
Aquest és el segon llibre de les aventures del fuseller Sharpe que estic llegint. Són aventures fàcils de llegir, amb fidelitat històrica dels fets que descriu. El que li trobo a faltar és una mica de sociopolítica, es a dir que expliqui per que lluita cada bàndol. El que tinc clar és els anglesos arrasaven i els hindús rebien. Que les castanyes vinguin dels anglesos o del maharahà de torn suposo que al poble ras no li importa gaire, però apart de descriure les heroïcitats es nota a faltar una mica més transfons.
[Spoilers] En aquest llibre s'explica com en Sharpe i el coronel McCandless persegueixen a un oficial desertor, en William Dodd. Es veu que era força estrany que un oficial desertés i per això el persegueixen, no fos cas que donés idees a altres. A més a més aquest oficial fa una massacre de la que només el Sharpe sobreviu i aquest el busca per venjar-se. De mentres en Hasekill, un sergent enemic d'en Sharpe inventa un fals càrrec i va a detenir-lo. Però el Sharpe està a primera línia buscant al Dodd. Primer participa en el setge a Ahmednuggur (on coneix a la protagonista femenina del llibre, una francesa Simone Joubert) però el Dodd s'escapa. Després va a la batalla de Assaye (que guanyen els anglesos, contra una força numèricament superior comandada per Pohlmann en nom de Scindia), durant aquesta batalla el general Arthur Wellesley queda aïllat i la cavalleria enemiga el té acorralt, llavors en Sharpe manté a ratlla als enemics salvant la vida del general. Per això el fan oficial. Mentres tant el McCandless descobreix la falsa acusació del Hasekill, però aquest el mata per que no el denuncii. En Sharpe troba al Hasekill i com no vol reconèixer que és un oficial, el Sharpe fa que un elefant l'ataqui (sense saber el resultat). En Sharpe marxa convençut que en Dodd (que ha aconseguit escapar) és qui ha matat al seu amic McCandless.
El llibre es llegeix ràpid, les descripcions de les batalles són molt acurades, a vegades donada la gran quantitat de dades que dóna no saps ben bé que està passant. I si be les batalles estan descrites en molt detall la geopolitica brilla per la seva absència. Recomanable!