Vector logo of the PHP programming language wi...

Днес ще драсна едно леко четиво за php cache den 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 това си е ваше решение. Накрая изчистваме и прекратяваме кеширането. Съвсем тривиална операция ако да речем геенрирането на кеша минава през огромни блокове от код така можем да спестим доста процесорно време като кешираме за известно време или за една сесия. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Förstärkt av Zemanta

Följande artikel kan vara höjdpunkten av dumhet men som jag alltid säger att jag är en bättre Admin än coder. Igår, medan draŝeh AJAX skript och var tvungen att skicka några data som jag använder för sina hash giltighet eftersom skriptet delar inte arrayen $ _ SESSION och saker blivit något osäker. Det är varför följande röra alla pameri som skickas per POST eller göra dem få en md5-hash av konkateriranite parametrar och sedan jämföra den. Övergripande inte ett dåligt system tror jag. Heširaŝi algoritmer för detta ändamål skål MD5 , SHA, DESC och så vidare. Här är saker tydliga att säga, Det kommer att använda MD5 hash-parametrarna (som gör faktiska). Vi har 3 parametern som lämnats i få jag = 1 n = 2 m = 3 och säger hešriane strängen är 123 Vad gör oss till den följande MD5 hash-202cb962ac59075b964b07152d234b70. Ingenting här som vet vad intressant. Denna hash kommer att falla för några sekunder i någon attack. Här är enkelt salt och peppar min idé. Låt oss säga att jag tar första och sista tecknet av strängen och swap sina platser på detta sätt ger en 002cb962ac59075b964b07152d234b72 hash om någon redan om jag inte hade läst koden oss vilken idioti gör dåliga hacking försök. Riktiga hash är en annan och även att vara izsnifen är helt värdelös. Men varför sluta här, vi kan dela upp hashen av flera block, i det här fallet är MD5 32 Om symbolen är indelat i 4 block 8 karaktärer och deras flytta platser blir ännu mer obekväm position. Далеч най приятния ефект е, че визуално си е стандартен 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 du vill flytta ett projekt där programmet aktiv utan kontroll över versioner nuförtiden är galen. Generellt finns det flera alternativ bazaar , mercurial , git , SVN . Så här om du räknar med att förklara vilka versionskontrollen är bättre och varför kommer inte det att. I USA använder vi git. Orsaka en hel del – lätt att ställa in, Det är mycket mångsidig, Den var skriven av Linus Torvalds Linux Kernel version för att tjäna, de senare är minst 2 skäl 😉 . Idag hade jag att skapa en ny databas, Jag startade ett nytt projekt. Faktiskt skapade jag vissa databaser och det för länge sedan när vi behövde det och jag glömde den tunna på denna Momento. Skapa flera filarkivet för första träffen store allt gick exakt. Inställningen själv var standard:

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

I grund och botten är ingenting fel. Då bestämde jag mig att testa från en avlägsen maskin att bevara innehåll och försöker driva det-med min fula meddelande dyker:

Skjuta till git://gitHost/projekt
fjärrkontroll: fel: vägrar att uppdatera utcheckad gren: ReFS/huvuden/master
fjärrkontroll: fel: Som standard, uppdatera den aktuella grenen i ett icke-bare repository
fjärrkontroll: fel: nekas, eftersom det gör trädet index och arbete inkonsekvent
fjärrkontroll: fel: med vad du pressat, och kommer att kräva ‘ git återställa –hård’ att matcha
fjärrkontroll: fel: arbete trädet till huvud.
fjärrkontroll: fel:
fjärrkontroll: fel: Du kan ställa in ‘ receive.denyCurrentBranch’ Konfigurationsvariabeln till
fjärrkontroll: fel: ‘ ignorera’ eller ‘ varna’ i fjärrdatabasen att trycka in
fjärrkontroll: fel: dess nuvarande gren; emellertid, Detta rekommenderas inte om du
fjärrkontroll: fel: ordnade till uppdatera dess arbete träd för att matcha vad du skjuts till vissa
fjärrkontroll: fel: annat sätt.
fjärrkontroll: fel:
fjärrkontroll: fel: Att krossa detta meddelande och fortfarande hålla försummelsen beteende, ställa in
fjärrkontroll: fel: ‘ receive.denyCurrentBranch’ Konfigurationsvariabeln till ‘ vägra ’.
Till git://gitHost/projekt
! [fjärrkontroll Förkastat] Master-> Master (gren är utcheckat)
fel: misslyckades att driva vissa refs till ‘ git://gitHost/projekt’

Så uppenbarligen försöker jag komitvam i den nationella trädet i projektet och programvaran skära artigt mig. Sammantaget har jag ingen avsikt att göra ytterligare gren eftersom personer som deltar i projekten är tydliga och ett antal andra skäl. Тука идва момента да отбележа че съм дефинирал много некадърно заглавието но това е друг момент. Като цяло решението на проблема е тривиално в .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 (–installera):
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 права.

Förstärkt av Zemanta