Automatisch herstarten windows bij update uitschakelen

Afgelopen week had dhr. Microsoft me weer voor de zoveelste keer tuk. Je kent het wel, je start een prachtig proces wat de computer de komende uren mag zoet houden. Om de pc zo min mogelijk hierbij te storen start je dit proces voor het weekend of vroeg in een avond op en laat je hem met rust. Dan kom je de volgende (werk)dag bij de pc en klaar is hij. Een win-win situatie. Behalve als windows tussentijds een geweldige update heeft gevonden die zo belangrijk is dat de pc per direct moet worden herstart. Nou ja, je krijgt nog een optie om het uit te stellen maar aangezien je er niet bent beslist Microsoft voor je en dus “reboot”. Omdat ze zich toch een beetje schuldig voelen herstarten ze wel de pc voor je maar geloof me, het zien van het inlogscherm komt niet in de buurt van het zien van een succesvol afgerond proces.

Deze keer was mijn verdriet zo groot dat ik besloot dat ik de oplossing moest gaan zoeken en die was er. Frost heeft dit uitgezocht en in zijn blog gezet. Voor u hier de kortste versie die ik ervan kan maken:

  1. Druk op start
  2. Typ gpedit.msc in het zoekveld
  3. Open “administrative templates”
  4. Open “windows components”
  5. Open “windows update”
  6. Klik met rechtermuisknop op “no auto-restart with logged on users for scheduled automatic updates installation”
  7. Kies “edit”
  8. Zet hem op “enabled”

Als het meezit ben je nu in staat ingewikkelde processen te starten (zoals in mijn geval een database conversie) zonder onderbroken te worden door een superbelangrijke update.

PHP memory limit stress test

In het vervolg op mijn eerdere bericht over een CPU stress test met PHP werd ook de vraag neergelegd om iets te maken wat de max uit het geheugen zou halen met PHP. Wederom volgde een korte brainstorm. Ik wilde voorkomen dat mijn memory test afhankelijk was van externe partijen (bijv. inlezen enorme datareeks of iets) en minimaal de processor zou belasten (om te voorkomen dat hij al tegen een CPU usage limiet aan zou lopen voor hij echt het geheugen vol kon stoppen). Het moest dus iets zijn wat iets simpels deed maar wel een monster ervan maakte voor het geheugen. Mijn oplossing is een scriptje wat éénmalig een string van 26 tekens maakt en die dan 5000 keer 5 keer achter elkaar plakt.

Even voor de lol de stringlengtes die PHP dus in het geheugen probeert te bewaren per for-loop (waarvan er 5000 zijn):
1x = 130 tekens
2x = 650 tekens
5x = 81250 tekens
10x = 253906250 tekens
15x = 793457031250 tekens

Etc. etc. Nog voor je bij een paarhonderd loops bent aangekomen vindt excel al dat de uitkomt “#GETAL!” is.

function generateData($loops)
{
	$chars = "ABCDEFGHJKLMNPQRSTUVWXYZ123456789";
	$i = 0;
	$string = null;
	
	while ($i <= 25) {
		$num = rand() % 33;
		$tmp = substr($chars, $num, 1);
		$string = $string . $tmp;
		$i++;
	}
	
	for ($i = 1; $i <= $loops; $i++) {
		$string = $string.$string.$string.$string.$string;
	}

	return $string;
}

$value = generateData(5000);
die('Wow, your memory is endless!');

Of download hem hier als kant-en-klaar PHP scriptje (tar file)

PHP CPU stress test

Recent vroeg iemand mij of ik even een scriptje in elkaar kon zetten wat een CPU tot de max kon drijven via PHP. Natuurlijk wil ik dat. Heel even voelt het dan net of je iets mag slopen. Na een korte brainstorm realiseerde ik me dat het helemaal niet zo’n ingewikkelde uitdaging ging worden als ik had gehoopt. Ik moest een proces hebben wat veel rekenkracht vroeg en ik moest het gewoon zo vaak mogelijk los laten op de processor als mogelijk in een zo kort mogelijk tijd. Het eerst wat in me opkwam was een loop met daarin een PI calculatie. Beetje zoeken op internet gaf me een nette PI calculatie code, daar nog wat omheen bakken en dan heb je iets als:

function bcpi($precision){
	bcscale($precision+6);
	$a = bcsqrt(2);
	$b = 0;
	$p = bcadd(2, $a);
	$i = 0;
	$count = ceil(log($precision+6)/log(2))-1;
	while($i < $count){
		$sqrt_a = bcsqrt($a);
		$a1 = $a;
		$a = bcdiv(bcadd($sqrt_a,bcdiv(1,$sqrt_a)),2);
		$b_up = bcmul($sqrt_a,bcadd(1,$b));
		$b_down = bcadd($a1,$b);
		$b = bcdiv($b_up, $b_down);
		$p_up = bcmul(bcmul($p,$b),bcadd(1,$a));
		$p_down = bcadd(1, $b);
		$p = bcdiv($p_up, $p_down);
		++$i;
	}
 
return bcadd($p,0,$precision);
}

for ($i = 1; $i <= 100; $i++) {
	bcpi(10000+$i);
}
die('Unbelievable, your CPU is a monster!');

Of download hem hier als kant-en-klaar PHP bestandje (rar file)

Statcounter global stats

Om de zoveel tijd wil je als webdeveloper weten hoeveel procent van de mensen nog steeds zo vervelend is om bijv. IE6 te gebruiken of wil je weten hoeveel mensen in België IE8 gebruiken.*

Als het gaat om een reeds draaiende site is er niets zo’n goede basis als de actuele cijfers omdat de stats per bezoekersgroep flink kunnen verschillen. Ter illustratie, bij een recente site voor consumenten was het percentage IE > 72% terwijl op een volledige b2b website het percentage IE net geen 35% is. Heb dus echter geen statistieken omdat het een nieuwe site is of omdat de vorige webbeheerder ontevreden was en de stats heeft “meegenomen” dan moet je het doen met generale statistieken.

Statcounter heeft een nette site waarop je de diverse browserstatistieken van continenten, landen etc kunt opvragen per datum-range en zelfs kunt exporteren als .csv. Aardige data die ik vaker raadpleeg maar nooit bewust waardeer op zijn waarde.

Hier een screencapture hoe het eruit ziet als ik bijv. wil weten hoe het met de browserversies loopt in Nederland vanaf het 3e kwartaal 2008 tot nu.
Ps. kijk naar de prachtige wisseling van de wacht bij IE7 en IE8 rond het 3e kwartaal 2009.

> Ga naar gs.statcounter.com

* Grappig, viel me op dat ik twee keer Internet Explorer gebruik als voorbeeld. Op zich ook wel weer logisch, van alle tijd die ik bezig ben met CSS tweaks om het in browsers overal even functioneel te krijgen weet Internet Explorer op magische wijze 98% van mijn tijd te claimen.

 

Browser ondersteuning css3 & html4

Als webdeveloper ben je constant bezig met de vraag “zou het werken in IE7 of niet” als het gaat om de leuke nieuwe technieken die CSS3 en HTML5 ons bieden/gaan bieden. Er zijn superveel sites die hierover stukjes informatie bevatten. Kwam pas echter op http://caniuse.com en moet zeggen dat ik hem wel prettig genoeg vindt qua gebruik om hem te delen.

O ja, wel een “let op, lelijke site alert!” maar functioneel zit het aardig in elkaar. Hieronder een screenshot hoe bijv. het zoeken naar border-radius eruit ziet: