Vector logo of the PHP programming language wi...

Днес ще драсна едно леко четиво за php cache van html. Тука говорим за кеширане на изхода от кода ни а не както съм писал да кешираме скритповете до opcode ниво с eAccelerator. Така за какво иде речнека да си припомним на бързо работата на php-то. Подаваме заявка на web server-a ни той приема параметрите който подаваме след това той ги подава на php скрипта той се компилира и плюе резултат в html вариант. Това е в доста общи линии. Каква ще е идеята ни тука да прескачаме заявки, да прескачаме големи блокове или не чак толкова големи блокове като директно изрисуваме вече веднъж компилирания изход. Преимуществата са очевиднинамаляна на времето за изпълнение, по малко натоварване и потребление на ресурси. Като цяло не е откриване на топлата вода нито е нещо кой знае колко сложно. Има множество класове за тая цел като PHP Pear Cache_Lite който разполага с прекрасна функционалност но аз мисля в бъдеще да си напиша мой с доста по облекчена структура и мой си изисквания към кеширането. Сега ще разгледаме най аборигенския вариант с Output Control Functions. Така нека да кешираме нещо

//start cache all output after that will be saved

ob_start();

//generate output

echo 'Some dynamic output';

echo 'Some other dynamic output ...';

//assign output into variable

$var=ob_get_contents();

//close cache output

ob_end_flush();

Горния код е тривиален но нека да обясним какво стана. Първо декларираме от коя част в кода започва кеширането. След това си генерираме по стандартен начин изхода от кода. След това генерирания изход се присъединява към променлива която ще е достъпна по късно дали през файл някакво или през sessions това си е ваше решение. Накрая изчистваме и прекратяваме кеширането. Съвсем тривиална операция ако да речем геенрирането на кеша минава през огромни блокове от код така можем да спестим доста процесорно време като кешираме за известно време или за една сесия. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Versterkt door Zemanta

Het volgende artikel kan de top van dwaasheid zijn, maar zoals ik altijd zeg dat ik ben beter dan encoder admin. Gisteren terwijl ik krabben wat AJAX script en moest minder gegevens validatie te sturen dat het gebruik hash, omdat het script de $ _SESSION reeks niet deelt en dingen worden enigszins onzeker. Dus doe je het volgende hellhole alle pameri die POST worden ingediend of GET om ze te doen een van de MD5 hash konkateriranite parameters en vergelijk ik het. Over het algemeen geen slechte regeling I. Hashing algoritmen voor dit doel bal MD5 , SHA, DESC en andere. Tot nu toe dingen zijn duidelijk te zeggen, dat zal MD5 hash parameters (en daarbij deytvitelnost). we 3 parameter die wordt gevoed door middel van GET i = 1 n = 2 m = 3 en zeggen dat de reeks van heshriane is 123 maakt ons de volgende MD5 hash 202cb962ac59075b964b07152d234b70. Tot zover niets veel interessanter. Deze hash zal vallen gedurende enkele seconden op willekeurige. Hier komt het zout en peper op mijn eenvoudige idee. Laten we zeggen dat ik de eerste en laatste teken van de string, en het uitwisselen van hun plaats krijgt dus 002cb962ac59075b964b07152d234b72 hash al als iemand als je niet lees onze code idiotie is wat maakt dingen ruw wanneer het proberen te hacken. Real hash is een ander en zelfs izsnifen is volkomen nutteloos. Maar waarom stoppen hier kunnen we hash paar blokken verdelen, in het geval van MD5 lengte 32 Als het symbool is verdeeld in 4 bij blok 8 personages en hun shift als plaatsen worden nog oncomfortabele positie. Далеч най приятния ефект е, че визуално си е стандартен md5 хеш и злия хахор може да си чупи докато има желание. Не съм добър по криптиране и не мога да пледирам за нещо кой знае колко фундаментално и прочие но ми допада колко е семпло като идея и реализация и съвременно надеждността е критично висока не като на нормалния MD5 които с една по грамотна видео карта се чупи за норматив.

Ето и примерен код за първата идея с размяната на първия и последния символ елементарен код от 3 реда 🙂

<?php

$hash = '202cb962ac59075b964b07152d234b70';

$first = substr($hash,0,1);
$last = substr($hash,-1);
$rest = substr($hash,1,30);
$hash = $last.$rest.$first;
echo "The real hash is : $str <br> inverted hash is : $hash";

?>

http://www.YouTube.com/watch?v=Fvje9dzBHPM

Om een ​​project dat actief tegenwoordig zonder versiebeheer geprogrammeerd verplaatsen is voltooid waanzin. Over het algemeen zijn er tal van mogelijkheden bazaar , kwikmiddel , git , svn . Dus hier als je verwacht om uit te leggen welke versie controle goed is en waarom het niet zal zijn. Wij gebruiken git. vele redenen – eenvoudig aan te passen, zeer flexibel, geschreven door Linus Torvalds is om de Linux Kernel versies dienen, deze laatste minstens 2 reden 😉 . Vandaag moest ik een nieuwe repository, Het begon een nieuw project. Ik eigenlijk gemaakt een beetje repositories het een lange tijd geleden, toen we gehad en ik heb de kleine momenten vergeten dat. Maak repository botste meerdere bestanden eerste winkel ging alles recht. De instelling van de repository was standaard:

git init
echo "Short project's description" > .git/description
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git commit -a
touch .git/git-daemon-export-ok

In principe alles wat niet in orde. Toen besloot ik om een ​​andere machine om inhoud te behouden testen en proberen om een ​​te doen push-me dichtgeslagen met de lelijke bericht:

Duwen naar git://gitHost / project
afgelegen: fout: weigeren om te werken uitgecheckt tak: refs / heads / master
afgelegen: fout: Standaard, bijwerken van de huidige vestiging in een niet-bare repository
afgelegen: fout: geweigerd, omdat het de boom index en werken inconsistent zal maken
afgelegen: fout: met wat je geduwd, en zal 'git reset nodig –hard’ bijpassende
afgelegen: fout: het werk boom aan het hoofd.
afgelegen: fout:
afgelegen: fout: U kunt 'receive.denyCurrentBranch’ configuratievariabele naar
afgelegen: fout: 'negeren’ of 'warn’ in de remote repository te laten duwen in
afgelegen: fout: het huidige filiaal; echter, dit is niet aan te raden, tenzij u
afgelegen: fout: ingericht om haar werkzaamheden boom aan te passen wat u in sommige geduwd actualiseren
afgelegen: fout: andere manier.
afgelegen: fout:
afgelegen: fout: Om deze boodschap te onderdrukken en nog steeds de standaard gedrag, reeks
afgelegen: fout: 'receive.denyCurrentBranch’ configuratievariabele op 'weigeren'.
om git://gitHost / project
! [remote afgewezen] meester -> meester (tak is momenteel uitgecheckt)
fout: niet aan sommige refs duwen om 'git://gitHost / project’

Dus blijkbaar proberen te rebelleren in de grote boom van het project en software me beleefd snijden. Over het algemeen Ik ben niet van plan om extra Branch te doen, omdat de mensen die betrokken zijn bij de projecten hebben duidelijke en andere redenen. Тука идва момента да отбележа че съм дефинирал много некадърно заглавието но това е друг момент. Като цяло решението на проблема е тривиално в .git/config на проекта ви трябва да добавите следната директива:

[receive]
denyCurrentBranch = false

След това всичко си идва на мястото.

http://www.YouTube.com/watch?v=16bRiH5zfOY

Packet Tracer

Image via Wikipedia

Днес ми се наложи да демонстрирам една симулация през Cisco Packet Tracer на машина на която не беше инсталиран. В общи линии малоумщината е, че стимулатора на Cisco е за x86 машини а при мен машината беше x64. При опит за инсталация умира с грозното съобщение

Attempting to install package now
dpkg: error processing PacketTracer-5.3_3.i386.deb (–installeren):
package architecture (i386) does not match system (amd64)
Errors were encountered while processing:
PacketTracer-5.3_3.i386.deb

Общо взето всичко е очевидно Debian-ския пакет не иска да се инсталира защото е за друга архитектура. От тук нататък проблема е ясен dpkg + форсирано инсталиране за да байпаснем грешката за различна платформа. Bin-ския файл на инсталатора реално е само разархивиращ се архив който се разархивира в /tmp/selfextract.XXXXX папка където XXXXX е произволен низ. В тази директория се намира .deb файлът на Packet Tracer-a. Инсталацията се извършва с командата

dpkg -i --force-all /tmp/selfextract.XXXXX/PacketTracer-5.3_3.i386.deb

Естествено с root права.

Versterkt door Zemanta