Vector logo of the PHP programming language wi...

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

Növeli Zemanta

Az alábbi cikk lehet tetején ostobaság, hanem mindig azt mondom, hogy jobb vagyok, mint jeladó admin. Tegnap, amíg én semmiből AJAX script és el kellett küldeni kevesebb adatot annak igazolása, hogy használatuk hash mert a script nem osztja a $ _SESSION tömb és a dolgok enyhén bizonytalan. Tehát nem a következő hellhole minden pameri amelyeket be POST vagy GET tenni számukra az egyik md5 hash konkateriranite paramétereket, majd hasonlítom. Összességében nem rossz rendszer I. Darabolási algoritmus erre a célra golyó MD5 , SHA, DESC és egyéb. Mindeddig dolog világos mondani, amely MD5 hash értékének paraméterek (és ennek során deytvitelnost). van 3 paraméter, amely táplálja a GET i = 1 n = 2, m = 3, és azt mondják a húr heshriane van 123 tesz minket a következő MD5 hash 202cb962ac59075b964b07152d234b70. Eddig nem sok érdekes. Ez hash fog esni egy pár másodpercig minden támadást. Itt jön a sót és a borsot az én egyszerű ötlet. Tegyük fel, hogy tegye meg az első és utolsó karaktere a húr, és cseréje helyüket így kap 002cb962ac59075b964b07152d234b72 hash már ha valaki, ha nem olvassa el a kódot az idiotizmus az, ami a dolgok rosszra fordulnak, amikor megpróbálják hacker. Valódi hash egy másik, és még el is izsnifen teljesen haszontalan. De miért ne itt oszthatjuk hash néhány háztömbnyire, abban az esetben, MD5 hossz 32 Ha a szimbólum van osztva 4 blokkban 8 karakterek és a műszak a helyeken még inkább kényelmetlen helyzetbe. Далеч най приятния ефект е, че визуално си е стандартен 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

Ahhoz, hogy egy projekt, amely aktívan nélkül programozni verzió ellenőrzés napjainkban teljes őrület. Általában számos lehetőség bazár , fürge , csoportos it , svn . Tehát itt, ha azt várod, hogy elmagyarázza, mi verziókezelő jó és miért nem lesz. Az általunk használt csoportos it. sok oka – könnyen beállítható, nagyon rugalmas, írta Linus Torvalds, hogy szolgálja a Linux Kernel verzió, ez utóbbiak legalábbis 2 ok 😉 . Ma volt egy új tároló, Úgy indult, egy új projekt. Igazából létre egy kis adattárak ez régen, amikor volt, és elfelejtettem a kis pillanatok,. Készítsen adattár ütközött több fájl első áruház minden rendben zajlott. A nagyon beállítása a tároló volt szabvány:

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

Alapvetően minden, ami nem baj. Aztán úgy döntött, hogy teszteljék a távoli gép megőrzése tartalom és próbál tenni egy push-me becsapódott a csúnya üzenetet:

Pushing a git://gitHost / projekt
távoli: hiba: hajlandó frissíteni kivett ág: refs / fő / mester
távoli: hiba: Alapértelmezés szerint, frissítése az ágon egy nem csupasz adattár
távoli: hiba: megtagadva, mert ez teszi az index és a munka fa következetlen
távoli: hiba: azzal, amit tolt, és igényel "git visszaállítás –kemény’ illeszkedik
távoli: hiba: A munka fa a HEAD.
távoli: hiba:
távoli: hiba: Beállítható "receive.denyCurrentBranch’ konfigurációs változót
távoli: hiba: 'figyelmen kívül hagyni’ vagy "figyelmeztetnek’ A távoli repository, hogy nyomja be
távoli: hiba: jelenlegi ág; azonban, ez nem ajánlott, kivéve, ha
távoli: hiba: elrendezve, hogy aktualizálja a munka fa egyezik meg tolt néhány
távoli: hiba: másik út.
távoli: hiba:
távoli: hiba: Leverni ezt az üzenetet, és még mindig tartja az alapértelmezett viselkedés, készlet
távoli: hiba: "receive.denyCurrentBranch’ konfigurációs változót "megtagadja".
a git://gitHost / projekt
! [távoli elutasították] mester -> fő- (ág jelenleg kivett)
hiba: nem nyomja valami, bíró, hogy "git://gitHost / projekt’

Tehát látszólag próbál lázadó a fő fa a projekt és a szoftver udvariasan megvágott. Összességében már nem áll szándékában, hogy nem extra Branch, mert az emberek részt vesznek a projekt egyértelmű és egyéb okok miatt. Тука идва момента да отбележа че съм дефинирал много некадърно заглавието но това е друг момент. Като цяло решението на проблема е тривиално в .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 (–telepítése):
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 права.

Növeli Zemanta