L'última tecnologia que ha revolucionat els PCs no han estat nous processadors, ni noves targetes gràfiques. Aquests components van augmentant de rendiment però a un ritme pausat, 4%, 6% i així anar fent i anar venent. Aleshores cada 3 o 4 anys et pots comprar un PC nou pel mateix preu que l'antic però un 33% més ràpid o que gasti un 33% menys de llum per fer el mateix... Sempre ritmes pausats. Però els SSDs van muntar una veritable revolució. Van fer que l'usuari notes una acceleració B.R.U.T.A.L respecte el que tenia, temps d'arranc més ràpid, aplicacions que trigaven a obrir-se ara són instantànies... I els SSDs han estat sempre vivint amb els disc durs, fent servir el seu bus. Al principi SATA 3Gbit, després SATA 6Gbits, ara SATA Express però el problema és que els SATA evolucionen massa a poc a poc, quan tenen al costat un PCI Express 16x a 128Gbit.
Disposant d'un bus ja fet, implantat i potent... no cal tornar a inventar la roda. Però sí cal optimitzar el disseny, sobretot desfer-se del AHCI que és un protocol dissenyat per dispositius amb latència (com un disc) mentre que els SSD no tenen. Apart d'això cal desfer-se també de solucions PCI Express no natives, la típica controladora RAID, amb 4 controladores SSD darrera i algun pont PCI Express. Per això ha sortit el NVMe (Non-Volatile Memory Express també conegut com NVM Host Controller Interface Specification - NVMHCI). Es un estàndard que té força fabricants al darrera, Intel entre ells. Permet reduir els cicles de CPU necessaris per obtenir una dada, per exemple fent servir AHCI es fan servir 27.000 cicles mentre que amb NVMe pel mateix es fan servir 10.000. Això permet que el nombre de IOPs augmenti molt.
La diferència en cicles
Intel ha desenvolupat SSDs natius NVMe, dels que es pot arrancar el sistema sense problema, amb interface PCI Express 4x. Els preus són força cars encara però ja baixaran.
Els nous SSDs Intel NVMe
Ara cal esperar a veure quina tecnologia s'acaba imposant, SATA Express o NVMe.
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