Vector logo of the PHP programming language wi...

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

Mejorado por Zemanta

El siguiente artículo puede ser la cúspide de la estupidez, pero como siempre digo que soy un mejor administrador que el codificador. Ayer, mientras draŝeh el AJAX script y tenía que enviar algunos datos que uso para su validación hash porque el script no comparte el arreglo de discos de sesión $ _ y las cosas se vuelven un poco inciertas. Es por qué el siguiente lío todos pameri enviado por POST o hacerlos obtener un hash md5 de konkateriranite parámetros y luego compararlo. No un esquema malo creo que en general. Algoritmos de Heširaŝi para este propósito, el tazón de fuente MD5 , SHA, DESC y así sucesivamente. Aquí las cosas son claras al decir, Utilice los parámetros de hash MD5 (como hacer hecho). Tenemos 3 el parámetro que se envía en el GET i = 1 n = 2 m = 3 y cadena de hešriane es 123 Lo que nos hace la siguiente MD5 hash 202cb962ac59075b964b07152d234b70. Nada que sabes qué interesante. Este hash caerá durante unos pocos segundos en cualquier ataque. Aquí es simple sal y pimienta mi idea. Digamos que tome el primer y último carácter de la cadena y el intercambio de sus lugares de esta manera produce un hash de 002cb962ac59075b964b07152d234b72 si alguien ya si no había leído el código nos qué idiotez hace hacking mal trate de. Hash real es otro y aún ser izsnifen es absolutamente inútil. Pero por qué detenerse aquí, podemos dividir el hash de varios bloques, en este caso, es el MD5 32 Si el símbolo se divide en 4 bloques de 8 personajes y sus lugares de paso se vuelve aún más incómoda posición. Далеч най приятния ефект е, че визуално си е стандартен 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

Para mover un proyecto en el cual al programa activo sin control sobre las versiones hoy en día es una locura. Generalmente hay Bazar de opciones múltiples , Mercurial , Git , sVN . Aquí si va a explicar qué control de versión es mejor y por qué no será. En los Estados Unidos se utiliza Git. Causar mucho – fácil de configurar, Es muy versátil, Fue escrito por Linus Torvalds para la versión del Kernel de Linux para servir, estos últimos son menos 2 razones 😉 . Hoy he tenido que crear un nuevo repositorio, Comencé un nuevo proyecto. Realmente he creado algunos repositorios y lo hace cuando lo necesitamos y olvidé el fino en este Momento mucho tiempo. Crear múltiples almacén de archivo de la primera tienda de golpe que todo fue exactamente. El ajuste sí mismo era estándar:

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

Básicamente, nada está mal. Entonces decidí probar desde un equipo remoto para preservar el contenido y tratando de empujarlo-con mi feo mensaje aparece:

Empujando a git://proyecto gitHost
remoto: error: negarse a actualizar extraído de rama: Ref/cabezas/master
remoto: error: De forma predeterminada, actualización de la rama actual en un repositorio no desnudo
remoto: error: se niega, porque hará que el árbol de índice y trabajo incompatible
remoto: error: con lo que impulsó, y requerirá que ‘ git reset –duro’ para que coincida con
remoto: error: el árbol de trabajo a la cabeza.
remoto: error:
remoto: error: Se puede establecer ‘ receive.denyCurrentBranch’ variable de configuración para
remoto: error: ‘ ignorar’ o ‘ advertir’ en el repositorio remoto para empujarlo en
remoto: error: su rama actual; sin embargo, no es recomendable a menos que usted
remoto: error: arregló actualizar su árbol de trabajo para que coincida con lo que impulsó en algunas
remoto: error: otra forma de.
remoto: error:
remoto: error: Este mensaje de la contestación aplastante y todavía guardar el comportamiento por defecto, conjunto
remoto: error: ‘ receive.denyCurrentBranch’ variable de configuración para ‘ negar ’.
A git://proyecto gitHost
! [control remoto rechazado] Maestro-> Master (rama está desprotegido)
error: no se pudo hacer algunas referencias a ‘ git://proyecto gitHost’

Obviamente intento komitvam en el árbol principal del proyecto y el software cortésmente me corte. En general, tengo ninguna intención de hacer rama adicional porque las personas involucradas en los proyectos son claras y un número de otras razones. Aquí llega el momento de decir que he definido un título muy incompetentes, pero eso es otro punto. En general, la solución es trivial en el proyecto .git / config es necesario añadir la siguiente directiva:

[receive]
denyCurrentBranch = false

Entonces todo cae en su lugar.

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

Packet Tracer

Image via Wikipedia

Hoy tuve que demostrar una simulación Packet Tracer de Cisco a través de una máquina en la que no se instaló. En General, es maloumŝinata, que es el simulador de Cisco para x86 máquinas y para mi fue la máquina x64. Cuando intenta instalar muere con el mensaje feo

Intentar instalar el paquete ahora
dpkg: Error al procesar PacketTracer-5.3_3.i386.deb (–instalar):
arquitectura del paquete (i386) no coincide con el sistema (AMD64)
Se encontraron errores al procesar:
PacketTracer-5.3_3.i386.deb

Casi todo es obviamente Debian apli paquete quiere instalar porque es para una arquitectura diferente. De aquí en fuera es un claro problema dpkg + forsirano instalar el error que podemos bypass para una plataforma diferente. Bin-pean instalador archivo tiene razarhiviraŝ es el archivo descomprime en/tmp/selfextract. Carpeta donde XXXXX XXXXX es cualquier cadena de caracteres. En este directorio se encuentran. archivo deb Packet Tracer-a. La instalación se realiza con el comando

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

Naturalmente con derechos de root.

Mejorado por Zemanta